<?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>106815</bug_id>
          
          <creation_ts>2013-01-14 12:18:45 -0800</creation_ts>
          <short_desc>[Chromium] Tests and fixes for spell checker behavior</short_desc>
          <delta_ts>2013-02-11 12:46:20 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>108405</dependson>
    
    <dependson>108498</dependson>
    
    <dependson>108509</dependson>
    
    <dependson>108510</dependson>
    
    <dependson>108511</dependson>
    
    <dependson>108513</dependson>
          <blocked>74479</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Rouslan Solomakhin">rouslan+webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>groby</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>hbono</cc>
    
    <cc>jochen</cc>
    
    <cc>morrita</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>rouslan+webkit</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>806513</commentid>
    <comment_count>0</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-14 12:18:45 -0800</bug_when>
    <thetext>Need to add test to for how spell checker behaves with various selections:
 - No selection
 - Sub-word selection
 - Selection with underscore
 - Selection with punctuation
 - Selection with trailing whitespace
 - Selection with multiple words</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814475</commentid>
    <comment_count>1</comment_count>
      <attachid>184278</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-23 12:12:13 -0800</bug_when>
    <thetext>Created attachment 184278
Proposed patch

Please review the attached patch. Here is the behavior for Chromium that this patch sets:

- Chrome selects the misspelled word on context click. 
- Spelling should work when the user selects the misspelled word exactly. 
- If the word is not misspelled, there should be no spelling options in the context menu. 
- Chrome should select multi-word misspellings on context click. 
- Spelling should work when the user selects a multi-word misspelling exactly. 
- Spelling should work for double-clicked misspellings. 
- Spelling should ignore whitespace. 
- Underscores should be treated as whitespace: spelling should ignore them. 
- Punctuation marks should be treated as whitespace: spelling should ignore them. 
- Spelling should be disabled when user selects a part of misspelling. 
- Spelling should be disabled when user selects multiple words that are not a single misspelling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814482</commentid>
    <comment_count>2</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-23 12:15:48 -0800</bug_when>
    <thetext>Hi Anders,

I see that you have reviewed changes to Source/WebKit/chromium/src/ContextMenuClientImpl.cpp before. Are you the right person to ask for a review on the attached patch? Thank you.

Cheers,
Rouslan</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815848</commentid>
    <comment_count>3</comment_count>
      <attachid>184581</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-24 14:45:11 -0800</bug_when>
    <thetext>Created attachment 184581
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815850</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 14:47:46 -0800</bug_when>
    <thetext>Attachment 184581 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-double-clicked-word-expected.txt&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-double-clicked-word-with-underscores-expected.txt&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-double-clicked-word-with-underscores.html&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-double-clicked-word.html&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-exactly-selected-multiple-words-expected.txt&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-exactly-selected-multiple-words.html&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-exactly-selected-word-expected.txt&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-exactly-selected-word.html&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-multiword-selection-expected.txt&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-multiword-selection.html&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-should-select-multiple-words-expected.txt&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-should-select-multiple-words.html&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-should-select-single-word-expected.txt&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-should-select-single-word.html&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-subword-selection-expected.txt&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-subword-selection.html&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-with-punctuation-selection-expected.txt&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-with-punctuation-selection.html&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-with-underscore-selection-expected.txt&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-with-underscore-selection.html&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-with-whitespace-selection-expected.txt&apos;, u&apos;LayoutTests/platform/chromium/editing/spelling/spelling-with-whitespace-selection.html&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/testing/Internals.idl&apos;, u&apos;Source/WebKit/chromium/src/ContextMenuClientImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/WebFrameImpl.cpp&apos;]&quot; exit_code: 1
Source/WebKit/chromium/src/ContextMenuClientImpl.cpp:81:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815867</commentid>
    <comment_count>5</comment_count>
      <attachid>184588</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-24 14:56:21 -0800</bug_when>
    <thetext>Created attachment 184588
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816066</commentid>
    <comment_count>6</comment_count>
      <attachid>184588</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-24 18:23:47 -0800</bug_when>
    <thetext>Comment on attachment 184588
Proposed patch

Attachment 184588 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16097512</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816081</commentid>
    <comment_count>7</comment_count>
      <attachid>184588</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-24 18:54:23 -0800</bug_when>
    <thetext>Comment on attachment 184588
Proposed patch

Attachment 184588 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16123006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816101</commentid>
    <comment_count>8</comment_count>
      <attachid>184588</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 19:24:48 -0800</bug_when>
    <thetext>Comment on attachment 184588
Proposed patch

Attachment 184588 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16122016

New failing tests:
platform/chromium/editing/spelling/spelling-should-select-single-word.html
platform/chromium/editing/spelling/spelling-double-clicked-word.html
platform/chromium/editing/spelling/spelling-double-clicked-word-with-underscores.html
platform/chromium/editing/spelling/spelling-should-select-multiple-words.html
platform/chromium/editing/spelling/spelling-exactly-selected-word.html
platform/chromium/editing/spelling/spelling-with-punctuation-selection.html
platform/chromium/editing/spelling/spelling-with-underscore-selection.html
platform/chromium/editing/spelling/spelling-with-whitespace-selection.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816301</commentid>
    <comment_count>9</comment_count>
      <attachid>184588</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-24 23:29:25 -0800</bug_when>
    <thetext>Comment on attachment 184588
Proposed patch

Attachment 184588 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16114215</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816708</commentid>
    <comment_count>10</comment_count>
      <attachid>184588</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-25 10:10:12 -0800</bug_when>
    <thetext>Comment on attachment 184588
Proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=184588&amp;action=review

You need a ChangeLog.  If you use &quot;webkit-patch upload&quot; it should create one for you and open it in a text editor for you.  Otherwise, you can use prepare-ChangeLog.

Why are these tests only run on Chromium?  Shouldn&apos;t the result be the same on all WebKit ports?  Does this depend on features that are Chromium specific?  If so, you could put them in a subdirectory (e.g., editing/spelling/unified-text-checker) and skip that subdir on other platforms since they may enable it in the future.

&gt; LayoutTests/platform/chromium/editing/spelling/spelling-double-clicked-word-with-underscores.html:16
&gt; +    internals.settings.setUnifiedTextCheckerEnabled(false);

This shouldn&apos;t be necessary. The test harness (DRT) should automatically undo any settings you set. If you see a different behavior, please file a bug about it and cc me.

&gt; LayoutTests/platform/chromium/editing/spelling/spelling-double-clicked-word-with-underscores.html:76
&gt; +description(&quot;Spelling should work for double-clicked misspelled words with underscores.&quot;);
&gt; +if (window.internals)
&gt; +    test();

It would be nice if there was some text describing how to run the test manually.  You could write this in the else branch of &quot;if (window.internals)&quot; or just put it in the description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816710</commentid>
    <comment_count>11</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-25 10:12:22 -0800</bug_when>
    <thetext>I think Morrita knows this code and can review it.

The tests probably fail depend on what platform you run it on.  You might have to setSelectTrailingWhitespaceEnabled and setSmartInsertDeleteEnabled in each test to get consistent results on each platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816735</commentid>
    <comment_count>12</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-25 10:42:42 -0800</bug_when>
    <thetext>Hironori is also a good person to do an informal review of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816901</commentid>
    <comment_count>13</comment_count>
      <attachid>184808</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-25 14:00:24 -0800</bug_when>
    <thetext>Created attachment 184808
Proposed patch

Added Changelog.
Added description of how to test manually.
Added setSelectTrailingWhitespaceEnabled and setSmartInsertDeleteEnabled in all tests.
Removed unnecessary test cleanup calls.

Tony: Thank you for the review. I&apos;ve placed the tests in platform/chromium/editing/spelling because I am testing and fixing the behavior of Source/WebKit/chromium/src/ContextMenuClientImpl.cpp specifically. Chromium spell check behaves differently from other WebKit ports. For example, Chromium selects the misspelled word on context click, but Safari does not.

Calls to setSelectTrailingWhitespaceEnabled should be necessary only when double-clicks are involved, but I&apos;ve put it in all the tests for good measure.

Calls to setSmartInsertDeleteEnabled should be necessary only when we test replacing the misspelling with a suggestion. These tests do not exercise that functionality, but I&apos;ve put it in all the tests for good measure, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816906</commentid>
    <comment_count>14</comment_count>
      <attachid>184808</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-25 14:07:20 -0800</bug_when>
    <thetext>Comment on attachment 184808
Proposed patch

Attachment 184808 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16097943</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816911</commentid>
    <comment_count>15</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-25 14:16:08 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Why are these tests only run on Chromium?  Shouldn&apos;t the result be the same on all WebKit ports?  Does this depend on features that are Chromium specific?  If so, you could put them in a subdirectory (e.g., editing/spelling/unified-text-checker) and skip that subdir on other platforms since they may enable it in the future.

If we decide to put the tests in a subdirectory of editing/spelling, then we probably should have three subdirectories for the three different features that Chromium implements:

1) editing/spelling/select-on-context-click/ - Select misspelled word on context-click.

2) editing/spelling/selection/ - Spell check selected word.

3) editing/spelling/ignore-whitespace/ - Ignore selected whitespace in spell check.

4) editing/spelling/ignore-punctuation/ - Ignore selected punctuation in spell check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816912</commentid>
    <comment_count>16</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-25 14:16:51 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; three subdirectories
four, that is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816913</commentid>
    <comment_count>17</comment_count>
      <attachid>184808</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-01-25 14:19:06 -0800</bug_when>
    <thetext>Comment on attachment 184808
Proposed patch

Attachment 184808 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/16123486</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816930</commentid>
    <comment_count>18</comment_count>
      <attachid>184808</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-25 14:48:45 -0800</bug_when>
    <thetext>Comment on attachment 184808
Proposed patch

Attachment 184808 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16120473

New failing tests:
platform/chromium/editing/spelling/spelling-should-select-single-word.html
platform/chromium/editing/spelling/spelling-double-clicked-word.html
platform/chromium/editing/spelling/spelling-double-clicked-word-with-underscores.html
platform/chromium/editing/spelling/spelling-should-select-multiple-words.html
platform/chromium/editing/spelling/spelling-exactly-selected-word.html
platform/chromium/editing/spelling/spelling-with-punctuation-selection.html
platform/chromium/editing/spelling/spelling-with-underscore-selection.html
platform/chromium/editing/spelling/spelling-with-whitespace-selection.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816934</commentid>
    <comment_count>19</comment_count>
      <attachid>184808</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-25 14:51:51 -0800</bug_when>
    <thetext>Comment on attachment 184808
Proposed patch

Attachment 184808 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16113612</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816939</commentid>
    <comment_count>20</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-25 15:01:01 -0800</bug_when>
    <thetext>I think you need to update the symbol exports for the platforms that are failing:
http://trac.webkit.org/wiki/ExportingSymbols

The tests are still failing on the cr-linux box.  What platform are you running the tests on?

There&apos;s a lot of common boilerplate in the tests.  You might want to factor that into a shared .js file that the tests all include.  You would put the shared .js file in a resources subdirectory.

I thought Safari (and OS X in general) always selected the word under the cursor when you right click?

We normally only put tests in a platform specific subdirectory when we&apos;re testing platform specific behavior (e.g., there are some Apple Script tests in platform/mac).  None of these behaviors seem platform specific to me, although there might be slightly different results on different platforms, in which case, we can check in multiple results files or disable the failing tests on the platforms they fail on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816979</commentid>
    <comment_count>21</comment_count>
      <attachid>184825</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-25 15:49:27 -0800</bug_when>
    <thetext>Created attachment 184825
Proposed patch

Added symbol exports. Want to see if this fixes any of the build bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816991</commentid>
    <comment_count>22</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-25 15:55:09 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; I think you need to update the symbol exports for the platforms that are failing:
&gt; http://trac.webkit.org/wiki/ExportingSymbols

Thank you for pointing that out. I am testing the patch with exported symbols now.

&gt; The tests are still failing on the cr-linux box.  What platform are you running the tests on?

I have been running the following command in Chromium.

$ ~/src/webkit/tools/layout_tests/run_webkit_tests.sh --no-pixel-tests platform/chromium/editing/spelling

Although this is a Chromium tool, my WebKit in src/third_party/WebKit is checked out directly from git://git.webkit.org/WebKit.git.

&gt; There&apos;s a lot of common boilerplate in the tests.  You might want to factor that into a shared .js file that the tests all include.  You would put the shared .js file in a resources subdirectory.

Will do.

&gt; I thought Safari (and OS X in general) always selected the word under the cursor when you right click?

I double-checked and you are correct. Chrome matches Safari in that misspelled words are selected when you right click. Safari also selects correctly spelled words when you right click. Chrome does not, however.

&gt; We normally only put tests in a platform specific subdirectory when we&apos;re testing platform specific behavior (e.g., there are some Apple Script tests in platform/mac).  None of these behaviors seem platform specific to me, although there might be slightly different results on different platforms, in which case, we can check in multiple results files or disable the failing tests on the platforms they fail on.

Sounds good. I am working on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817030</commentid>
    <comment_count>23</comment_count>
      <attachid>184825</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-25 16:33:03 -0800</bug_when>
    <thetext>Comment on attachment 184825
Proposed patch

Attachment 184825 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16112684

New failing tests:
platform/chromium/editing/spelling/spelling-should-select-single-word.html
platform/chromium/editing/spelling/spelling-double-clicked-word.html
platform/chromium/editing/spelling/spelling-double-clicked-word-with-underscores.html
platform/chromium/editing/spelling/spelling-should-select-multiple-words.html
platform/chromium/editing/spelling/spelling-exactly-selected-word.html
platform/chromium/editing/spelling/spelling-with-punctuation-selection.html
platform/chromium/editing/spelling/spelling-with-underscore-selection.html
platform/chromium/editing/spelling/spelling-with-whitespace-selection.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817110</commentid>
    <comment_count>24</comment_count>
      <attachid>184825</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-25 19:29:07 -0800</bug_when>
    <thetext>Comment on attachment 184825
Proposed patch

Attachment 184825 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16111885</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817429</commentid>
    <comment_count>25</comment_count>
      <attachid>184825</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-27 16:25:36 -0800</bug_when>
    <thetext>Comment on attachment 184825
Proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=184825&amp;action=review

I&apos;m wondering whether we can get rid of addSpellingMarker().
In general, Internals object is for inspecting hidden state from JS and
issuing a action with side effect through the Internals object isn&apos;t a good idea.
It can be a signal of testing something that never happens in real Web.

One possible workaround is to tell MockSpellChecker a multi-word misspelling candidate.
http://trac.webkit.org/browser/trunk/Tools/DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp
So that it marks the text as mis-spelled. This approach is more like end-to-end than unit testing, which WebKit traditionally prefers.

&gt; Source/WebKit/chromium/src/ContextMenuClientImpl.cpp:289
&gt; +                RefPtr&lt;Range&gt; markerRange = selectionRange-&gt;cloneRange(exceptionCode);

Nit: Can this fail?  If not, we can use ASSERT_NO_EXCEPTION macro to clarify that fact.
https://lists.webkit.org/pipermail/webkit-dev/2011-December/018908.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818220</commentid>
    <comment_count>26</comment_count>
      <attachid>185091</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-28 16:02:08 -0800</bug_when>
    <thetext>Created attachment 185091
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818226</commentid>
    <comment_count>27</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-28 16:03:54 -0800</bug_when>
    <thetext>Trying out a patch without addSpellingMarker and with ASSERT_NO_EXCEPTION.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818251</commentid>
    <comment_count>28</comment_count>
      <attachid>185091</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-28 16:33:46 -0800</bug_when>
    <thetext>Comment on attachment 185091
Proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=185091&amp;action=review

As Tony pointed, The large part of the test code is a boilerplate. Can we get rid of it?

&gt; LayoutTests/editing/spelling/spelling-double-clicked-word-with-underscores.html:16
&gt; +        finishJSTest();

It looks we have no &quot;FAIL&quot; output when the test is timed out.
Let&apos;s explicitly fail here. Same for other tests.

&gt; Source/WebKit/chromium/src/ContextMenuClientImpl.cpp:300
&gt; +                        selectionRange.clear();

Nit: It looks we don&apos;t need this clear() call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818328</commentid>
    <comment_count>29</comment_count>
      <attachid>185121</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-28 18:00:55 -0800</bug_when>
    <thetext>Created attachment 185121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818329</commentid>
    <comment_count>30</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-28 18:01:54 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 185091 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185091&amp;action=review
&gt; 
&gt; As Tony pointed, The large part of the test code is a boilerplate. Can we get rid of it?

Moved boilerplate into LayoutTests/editing/spelling/resources/util.js

&gt; 
&gt; &gt; LayoutTests/editing/spelling/spelling-double-clicked-word-with-underscores.html:16
&gt; &gt; +        finishJSTest();
&gt; 
&gt; It looks we have no &quot;FAIL&quot; output when the test is timed out.
&gt; Let&apos;s explicitly fail here. Same for other tests.
&gt; 
&gt; &gt; Source/WebKit/chromium/src/ContextMenuClientImpl.cpp:300
&gt; &gt; +                        selectionRange.clear();
&gt; 
&gt; Nit: It looks we don&apos;t need this clear() call.

Removed the clear() call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818331</commentid>
    <comment_count>31</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-28 18:03:03 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; It looks we have no &quot;FAIL&quot; output when the test is timed out.
&gt; Let&apos;s explicitly fail here. Same for other tests.

Added log(&quot;FAIL: spell check timed outed&quot;) in LayoutTests/editing/spelling/resources/util.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818350</commentid>
    <comment_count>32</comment_count>
      <attachid>185121</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-28 18:20:46 -0800</bug_when>
    <thetext>Comment on attachment 185121
Patch

Looks good to me. Do you want me to land this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818357</commentid>
    <comment_count>33</comment_count>
      <attachid>185121</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-28 18:25:18 -0800</bug_when>
    <thetext>Comment on attachment 185121
Patch

Requesting to use the commit-queue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818738</commentid>
    <comment_count>34</comment_count>
      <attachid>185121</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-29 02:06:35 -0800</bug_when>
    <thetext>Comment on attachment 185121
Patch

Attachment 185121 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16200066

New failing tests:
editing/spelling/spelling-exactly-selected-multiple-words.html
editing/spelling/spelling-should-select-multiple-words.html
editing/spelling/spelling-with-punctuation-selection.html
editing/spelling/spelling-double-clicked-word.html
editing/spelling/spelling-should-select-single-word.html
editing/spelling/spelling-exactly-selected-word.html
editing/spelling/spelling-double-clicked-word-with-underscores.html
editing/spelling/spelling-with-whitespace-selection.html
editing/spelling/spelling-with-underscore-selection.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818761</commentid>
    <comment_count>35</comment_count>
      <attachid>185121</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-29 02:50:52 -0800</bug_when>
    <thetext>Comment on attachment 185121
Patch

Attachment 185121 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16201085

New failing tests:
editing/spelling/spelling-exactly-selected-multiple-words.html
editing/spelling/spelling-should-select-multiple-words.html
editing/spelling/spelling-with-punctuation-selection.html
editing/spelling/spelling-double-clicked-word.html
editing/spelling/spelling-should-select-single-word.html
editing/spelling/spelling-exactly-selected-word.html
editing/spelling/spelling-double-clicked-word-with-underscores.html
editing/spelling/spelling-with-whitespace-selection.html
editing/spelling/spelling-with-underscore-selection.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819046</commentid>
    <comment_count>36</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-29 10:04:42 -0800</bug_when>
    <thetext>My suggestion for the Mac failures is to add the tests to platform/mac/TestExpectations marked as [ Failure ].  Then when you commit, the tests will run and you can grab the results from the bots and try to figure out why they failed.

The other option is to build the Apple Mac port locally and run the tests (which you may need to do anyway to figure out why these tests are failing).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819054</commentid>
    <comment_count>37</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-29 10:09:37 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; My suggestion for the Mac failures is to add the tests to platform/mac/TestExpectations marked as [ Failure ].  Then when you commit, the tests will run and you can grab the results from the bots and try to figure out why they failed.
&gt; 
&gt; The other option is to build the Apple Mac port locally and run the tests (which you may need to do anyway to figure out why these tests are failing).

I am building the Apple Mac port locally on my Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819309</commentid>
    <comment_count>38</comment_count>
      <attachid>185303</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-29 14:02:35 -0800</bug_when>
    <thetext>Created attachment 185303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819310</commentid>
    <comment_count>39</comment_count>
      <attachid>185303</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-29 14:03:57 -0800</bug_when>
    <thetext>Comment on attachment 185303
Patch

The fix for layout tests on Mac is to set &quot;win&quot; editing behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819409</commentid>
    <comment_count>40</comment_count>
      <attachid>185303</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-29 15:40:29 -0800</bug_when>
    <thetext>Comment on attachment 185303
Patch

Attachment 185303 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16196318

New failing tests:
editing/spelling/spelling-exactly-selected-multiple-words.html
editing/spelling/spelling-should-select-multiple-words.html
editing/spelling/spelling-with-punctuation-selection.html
editing/spelling/spelling-double-clicked-word.html
editing/spelling/spelling-should-select-single-word.html
editing/spelling/spelling-multiword-selection.html
editing/spelling/spelling-exactly-selected-word.html
editing/spelling/spelling-double-clicked-word-with-underscores.html
editing/spelling/spelling-with-whitespace-selection.html
editing/spelling/spelling-with-underscore-selection.html
editing/spelling/spelling-subword-selection.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819431</commentid>
    <comment_count>41</comment_count>
      <attachid>185303</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-29 16:03:02 -0800</bug_when>
    <thetext>Comment on attachment 185303
Patch

Attachment 185303 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16195339

New failing tests:
editing/spelling/spelling-exactly-selected-multiple-words.html
editing/spelling/spelling-should-select-multiple-words.html
editing/spelling/spelling-with-punctuation-selection.html
editing/spelling/spelling-double-clicked-word.html
editing/spelling/spelling-should-select-single-word.html
editing/spelling/spelling-exactly-selected-word.html
editing/spelling/spelling-double-clicked-word-with-underscores.html
editing/spelling/spelling-with-whitespace-selection.html
editing/spelling/spelling-with-underscore-selection.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819514</commentid>
    <comment_count>42</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-29 16:59:04 -0800</bug_when>
    <thetext>The failures on Mac are due to differences in misspelling marker placement. In the word &quot;wellcome_&quot;, for example,  the Mac port marks the text &quot;wellcome_&quot; as misspelled, including the underline. Other ports, however, only mark the text &quot;wellcome&quot;, without the underline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819534</commentid>
    <comment_count>43</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-29 17:08:35 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; The failures on Mac are due to differences in misspelling marker placement. In the word &quot;wellcome_&quot;, for example,  the Mac port marks the text &quot;wellcome_&quot; as misspelled, including the underline. Other ports, however, only mark the text &quot;wellcome&quot;, without the underline.

What happens in TextEdit on a Mac?  Safari tries to mimic the behavior of TextEdit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819551</commentid>
    <comment_count>44</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-29 17:19:20 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; (In reply to comment #42)
&gt; &gt; The failures on Mac are due to differences in misspelling marker placement. In the word &quot;wellcome_&quot;, for example,  the Mac port marks the text &quot;wellcome_&quot; as misspelled, including the underline. Other ports, however, only mark the text &quot;wellcome&quot;, without the underline.
&gt; 
&gt; What happens in TextEdit on a Mac?  Safari tries to mimic the behavior of TextEdit.

TextEdit also marks the text &quot;wellcome_&quot; as misspelled, including the underline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819555</commentid>
    <comment_count>45</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-29 17:20:23 -0800</bug_when>
    <thetext>(In reply to comment #44)
&gt; (In reply to comment #43)
&gt; &gt; (In reply to comment #42)
&gt; &gt; &gt; The failures on Mac are due to differences in misspelling marker placement. In the word &quot;wellcome_&quot;, for example,  the Mac port marks the text &quot;wellcome_&quot; as misspelled, including the underline. Other ports, however, only mark the text &quot;wellcome&quot;, without the underline.
&gt; &gt; 
&gt; &gt; What happens in TextEdit on a Mac?  Safari tries to mimic the behavior of TextEdit.
&gt; 
&gt; TextEdit also marks the text &quot;wellcome_&quot; as misspelled, including the underline.

Is there a setting like editing behavior that I can flip in layout tests to alter this behavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820290</commentid>
    <comment_count>46</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-30 10:07:33 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; (In reply to comment #44)
&gt; &gt; (In reply to comment #43)
&gt; &gt; &gt; (In reply to comment #42)
&gt; &gt; &gt; &gt; The failures on Mac are due to differences in misspelling marker placement. In the word &quot;wellcome_&quot;, for example,  the Mac port marks the text &quot;wellcome_&quot; as misspelled, including the underline. Other ports, however, only mark the text &quot;wellcome&quot;, without the underline.
&gt; &gt; &gt; 
&gt; &gt; &gt; What happens in TextEdit on a Mac?  Safari tries to mimic the behavior of TextEdit.
&gt; &gt; 
&gt; &gt; TextEdit also marks the text &quot;wellcome_&quot; as misspelled, including the underline.
&gt; 
&gt; Is there a setting like editing behavior that I can flip in layout tests to alter this behavior?

Not that I know of.  It seems OK to me to check in a separate expected file for platform/mac and file a bug for the differing behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820295</commentid>
    <comment_count>47</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-30 10:15:56 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; It seems OK to me to check in a separate expected file for platform/mac and file a bug for the differing behavior.

Sounds good. Would the new bug ask for the same behavior on all platforms or for new tests on the mac platform?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820341</commentid>
    <comment_count>48</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-30 11:18:52 -0800</bug_when>
    <thetext>(In reply to comment #47)
&gt; (In reply to comment #46)
&gt; &gt; It seems OK to me to check in a separate expected file for platform/mac and file a bug for the differing behavior.
&gt; 
&gt; Sounds good. Would the new bug ask for the same behavior on all platforms or for new tests on the mac platform?

I&apos;m not sure since I&apos;m not sure if the behavior in Safari/TextEdit is intentional or not.  Maybe Ryosuke can find out?  For now, I would just file a bug saying what the different behaviors are.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820403</commentid>
    <comment_count>49</comment_count>
      <attachid>185537</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-30 12:21:53 -0800</bug_when>
    <thetext>Created attachment 185537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820406</commentid>
    <comment_count>50</comment_count>
      <attachid>185537</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-30 12:22:55 -0800</bug_when>
    <thetext>Comment on attachment 185537
Patch

Added platform-specific expected test outputs for mac and mac-wk2 platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820416</commentid>
    <comment_count>51</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-30 12:33:41 -0800</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=108370 - &quot;Different spellcheck behavior among platforms&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820423</commentid>
    <comment_count>52</comment_count>
      <attachid>185537</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-30 12:46:03 -0800</bug_when>
    <thetext>Comment on attachment 185537
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=185537&amp;action=review

It would be helpful if on bug 108370 you listed what the differences are for each test.

&gt; LayoutTests/platform/mac-wk2/editing/spelling/spelling-double-clicked-word-expected.txt:7
&gt; +FAIL Incomplete test environment
&gt; +PASS successfullyParsed is true

I see, we should skip these tests in platform/mac-wk2/TestExpectations since it doesn&apos;t implement setAsynchronousSpellCheckingEnabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820466</commentid>
    <comment_count>53</comment_count>
      <attachid>185547</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-30 13:18:58 -0800</bug_when>
    <thetext>Created attachment 185547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820470</commentid>
    <comment_count>54</comment_count>
      <attachid>185547</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-30 13:21:23 -0800</bug_when>
    <thetext>Comment on attachment 185547
Patch

Skipping the new spell checker tests on Mac WK2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820496</commentid>
    <comment_count>55</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-30 13:39:14 -0800</bug_when>
    <thetext>Specified the mac platform differences in bug 108370.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820626</commentid>
    <comment_count>56</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-30 14:51:22 -0800</bug_when>
    <thetext>All tests passed. Can someone with correct permissions please flip the review and commit-queue flags to &quot;+&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820627</commentid>
    <comment_count>57</comment_count>
      <attachid>185547</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-30 14:52:49 -0800</bug_when>
    <thetext>Comment on attachment 185547
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=185547&amp;action=review

Some minor style nits, but this looks OK overall.  Note that the Qt, Gtk and Efl bots don&apos;t run tests, so these tests may fail on those ports too.  You can either suppress the errors in TestExpectations or land them and watch the bots on build.webkit.org.

&gt; Source/WebKit/chromium/src/ContextMenuClientImpl.cpp:296
&gt; +                    // If there is no selection, then select the misspelling.

WebKit style is to avoid comments that only describe the code.  Most comments are for answering &apos;why&apos; the code is there. I would remove this comment.

&gt; Tools/DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:76
&gt; +        int maxWordLength = stringText.length() - wordOffset;
&gt; +        int wordLength;

Don&apos;t you need to static_cast length() to an int?  I think some compilers will complain about this signed/unsigned conversion.  Should maxWordLength and wordLength be unsigned?

&gt; Tools/DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:77
&gt; +        WTF::String word;

Nit: No WTF:: needed.

&gt; Tools/DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:85
&gt; +            wordLength = m_misspelledWords.at(i).length() &gt; maxWordLength ? maxWordLength : m_misspelledWords.at(i).length();

I&apos;m surprised this doesn&apos;t complain about signed/unsigned either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820674</commentid>
    <comment_count>58</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-30 15:22:17 -0800</bug_when>
    <thetext>(In reply to comment #57)
&gt; Note that the Qt, Gtk and Efl bots don&apos;t run tests, so these tests may fail on those ports too.  You can either suppress the errors in TestExpectations or land them and watch the bots on build.webkit.org.

Is there a way to make these bots run the tests?

I am hopeful that the tests will pass on those platforms. If not, we should add TestExpecations after the build bots fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820677</commentid>
    <comment_count>59</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-30 15:23:48 -0800</bug_when>
    <thetext>(In reply to comment #58)
&gt; (In reply to comment #57)
&gt; &gt; Note that the Qt, Gtk and Efl bots don&apos;t run tests, so these tests may fail on those ports too.  You can either suppress the errors in TestExpectations or land them and watch the bots on build.webkit.org.
&gt; 
&gt; Is there a way to make these bots run the tests?

Nope.

&gt; I am hopeful that the tests will pass on those platforms. If not, we should add TestExpecations after the build bots fail.

That&apos;s fine as well.  Just make sure you&apos;re around when the patch lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820683</commentid>
    <comment_count>60</comment_count>
      <attachid>185594</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-30 15:27:23 -0800</bug_when>
    <thetext>Created attachment 185594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820694</commentid>
    <comment_count>61</comment_count>
      <attachid>185594</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-30 15:31:31 -0800</bug_when>
    <thetext>Comment on attachment 185594
Patch

- Removed the unnecessary comment in ContextMenuClentImpl.cpp
- Casting length() to int in MockSpellCheck.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820703</commentid>
    <comment_count>62</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-30 15:33:53 -0800</bug_when>
    <thetext>Posted this on #webkit IRC channel:

&quot;This is a heads up: I plan to land http://webkit.org/b/106815, which might break layout test on qt, gtk, and efl. In case of breakage, I will land the appropriate changes to TestExpectations.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820704</commentid>
    <comment_count>63</comment_count>
      <attachid>185594</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-30 15:34:22 -0800</bug_when>
    <thetext>Comment on attachment 185594
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=185594&amp;action=review

&gt; Source/WebKit/chromium/ChangeLog:19
&gt; +        Fix spellcheck to behave as follows:
&gt; +        - Spellcheck selects the misspelled word on context click. 
&gt; +        - Spelling should work when the user selects the misspelled word exactly. 
&gt; +        - If the word is not misspelled, there should be no spelling options in the context menu. 
&gt; +        - Spellcheck should select multi-word misspellings on context click. 
&gt; +        - Spelling should work when the user selects a multi-word misspelling exactly. 
&gt; +        - Spelling should work for double-clicked misspellings. 
&gt; +        - Spelling should ignore whitespace. 
&gt; +        - Underscores should be treated as whitespace: spelling should ignore them. 
&gt; +        - Punctuation marks should be treated as whitespace: spelling should ignore them. 
&gt; +        - Spelling should be disabled when user selects a part of misspelling. 
&gt; +        - Spelling should be disabled when user selects multiple words that are not a single misspelling. 

That&apos;s a lot of bug fixes in one patch! Can we somehow break this up into smaller pieces?
In WebKit, we try to break up patches into small pieces as much as possible.

&gt; LayoutTests/ChangeLog:19
&gt; +        - Spellcheck selects the misspelled word on context click. 
&gt; +        - Spelling should work when the user selects the misspelled word exactly. 
&gt; +        - If the word is not misspelled, there should be no spelling options in the context menu. 
&gt; +        - Spellcheck should select multi-word misspellings on context click. 
&gt; +        - Spelling should work when the user selects a multi-word misspelling exactly. 
&gt; +        - Spelling should work for double-clicked misspellings. 
&gt; +        - Spelling should ignore whitespace. 
&gt; +        - Underscores should be treated as whitespace: spelling should ignore them. 
&gt; +        - Punctuation marks should be treated as whitespace: spelling should ignore them. 
&gt; +        - Spelling should be disabled when user selects a part of misspelling. 
&gt; +        - Spelling should be disabled when user selects multiple words that are not a single misspelling. 

Please add these comments after &quot;Added.&quot; below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820824</commentid>
    <comment_count>64</comment_count>
      <attachid>185625</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-30 16:58:26 -0800</bug_when>
    <thetext>Created attachment 185625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820827</commentid>
    <comment_count>65</comment_count>
      <attachid>185625</attachid>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-30 16:59:09 -0800</bug_when>
    <thetext>Comment on attachment 185625
Patch

Trying to attach this patch to https://bugs.webkit.org/show_bug.cgi?id=108405...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820837</commentid>
    <comment_count>66</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-30 17:06:50 -0800</bug_when>
    <thetext>(In reply to comment #63)
&gt; That&apos;s a lot of bug fixes in one patch! Can we somehow break this up into smaller pieces?

Filed https://webkit.org/b/108405 and attached LayoutTests there. The tests are marked as [Skip] in TestExpectations for all platforms for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821715</commentid>
    <comment_count>67</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-31 11:10:05 -0800</bug_when>
    <thetext>(In reply to comment #66)
&gt; (In reply to comment #63)
&gt; &gt; That&apos;s a lot of bug fixes in one patch! Can we somehow break this up into smaller pieces?
&gt; 
&gt; Filed https://webkit.org/b/108405 and attached LayoutTests there. The tests are marked as [Skip] in TestExpectations for all platforms for now.

Filed https://webkit.org/b/108498 (Add two-word misspelling to mock spellchecker) and attached the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821949</commentid>
    <comment_count>68</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-01-31 14:19:55 -0800</bug_when>
    <thetext>Filed https://webkit.org/b/108509 (Select two-word misspelling on context-click) and attached the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829999</commentid>
    <comment_count>69</comment_count>
    <who name="Rouslan Solomakhin">rouslan+webkit</who>
    <bug_when>2013-02-11 12:46:20 -0800</bug_when>
    <thetext>Thank you for all your help!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184278</attachid>
            <date>2013-01-23 12:12:13 -0800</date>
            <delta_ts>2013-01-24 14:45:11 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>chromium-spelling.patch</filename>
            <type>text/plain</type>
            <size>59434</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">CjwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwNjUpaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9y
Zy9kb3dubG9hZC9pc3N1ZTExOTc2MDAzXzIwMDI1LmRpZmYgLS0+CjxodG1sPjxoZWFkPjxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVU
Ri04Ij48L2hlYWQ+PGJvZHk+PHByZSBzdHlsZT0id29yZC13cmFwOiBicmVhay13b3JkOyB3aGl0
ZS1zcGFjZTogcHJlLXdyYXA7Ij5JbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNs
aWNrZWQtd29yZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2UwMWVkZjBhNWVjNzdlYmJkNjU2
ZjE0ZDc3Y2E1MGVmYmI5OTRmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29y
ZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9y
IGRvdWJsZS1jbGlja2VkIG1pc3NwZWxsaW5ncy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIK
K1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyBzcGVsbGluZ01h
cmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNb
Y29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWUgaG9tZS4KSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4dApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU2MzRlOGE5NWNkZThjNzZlNGVlOGY5Mzg3NTBlODY5NDcxNTcyNjYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNSBAQAorU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlj
a2VkIG1pc3NwZWxsZWQgd29yZHMgd2l0aCB1bmRlcnNjb3Jlcy4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3
ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BB
U1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lXyIKK1BBU1Mg
c3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lXyIKK1BBU1MgY29udGV4dE1l
bnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29t
ZV8gaG9tZS4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLmh0bWwgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRv
dWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiOTVm
OWQ4MWU3Mjc5YmFkZTNhOTY2YTJiM2MyYmRjMWNlNWUyM2EKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRv
dWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5odG1sCkBAIC0wLDAgKzEsODEgQEAK
KyZsdDshRE9DVFlQRSBodG1sJmd0OworJmx0O2h0bWwmZ3Q7CismbHQ7aGVhZCZndDsKKyZsdDtz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyIm
Z3Q7Jmx0Oy9zY3JpcHQmZ3Q7CismbHQ7L2hlYWQmZ3Q7CismbHQ7Ym9keSZndDsKKyZsdDtkaXYg
aWQ9ImNvbnRhaW5lciImZ3Q7CisgICZsdDtkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRp
dGFibGUmZ3Q7Jmx0Oy9kaXYmZ3Q7CismbHQ7L2RpdiZndDsKKworJmx0O3NjcmlwdCZndDsKKwor
ZnVuY3Rpb24gZG9uZSgpCit7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRU
ZXh0Q2hlY2tlckVuYWJsZWQoZmFsc2UpOworICAgIGZpbmlzaEpTVGVzdCgpCit9CisKK2Z1bmN0
aW9uIHZlcmlmeShucmV0cnkpCit7CisgICAgaWYgKCFucmV0cnkpIHsKKyAgICAgICAgZG9uZSgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFpbnRlcm5hbHMubWFya2VyQ291
bnRGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIpKSB7CisgICAg
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkobnJldHJ5IC0gMSk7IH0s
IDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9
IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwg
InNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtl
clJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gRG91
YmxlLWNsaWNrIHRoZSBtaXNzcGVsbGVkIHdvcmQuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAg
ICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlv
bi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lXyIpOworCisgICAgLy8g
Q29udGV4dCBjbGljayBvbiAid2VsbGNvbWUiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAg
ICB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5v
ZmZzZXRMZWZ0ICsgNDA7CisgICAgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRU
b3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAy
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxl
bWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhp
ZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9t
Q2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50
ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3Bl
bGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFu
Z2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWVfIik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVu
dHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworICAgIAorICAgIGRvbmUoKTsKK30KKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1
bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICB2YXIg
ZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzdGluYXRpb24iKTsKKyAg
ICBkZXN0aW5hdGlvbi5mb2N1cygpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRU
ZXh0IiwgZmFsc2UsICJ3ZWxsY29tZV8gaG9tZS4iKTsKKyAgICB3aW5kb3cuc2V0VGltZW91dChm
dW5jdGlvbigpIHsgdmVyaWZ5KDEwKTsgfSwgMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGlu
ZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxlZCB3b3JkcyB3aXRoIHVu
ZGVyc2NvcmVzLiIpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgdGVzdCgpOworCismbHQ7
L3NjcmlwdCZndDsKKyZsdDtzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiJmd0OyZsdDsvc2NyaXB0Jmd0OworJmx0Oy9ib2R5Jmd0OworJmx0
Oy9odG1sJmd0OwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91
YmxlLWNsaWNrZWQtd29yZC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzNlNWE4MWNkYzk1Nzc4MDM2MjdmMmI4MmVhZjFkYTNkMjE1MDY2OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC5odG1sCkBAIC0wLDAgKzEsODEgQEAKKyZsdDshRE9D
VFlQRSBodG1sJmd0OworJmx0O2h0bWwmZ3Q7CismbHQ7aGVhZCZndDsKKyZsdDtzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyImZ3Q7Jmx0Oy9z
Y3JpcHQmZ3Q7CismbHQ7L2hlYWQmZ3Q7CismbHQ7Ym9keSZndDsKKyZsdDtkaXYgaWQ9ImNvbnRh
aW5lciImZ3Q7CisgICZsdDtkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGUmZ3Q7
Jmx0Oy9kaXYmZ3Q7CismbHQ7L2RpdiZndDsKKworJmx0O3NjcmlwdCZndDsKKworZnVuY3Rpb24g
ZG9uZSgpCit7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZChmYWxzZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tl
ckVuYWJsZWQoZmFsc2UpOworICAgIGZpbmlzaEpTVGVzdCgpCit9CisKK2Z1bmN0aW9uIHZlcmlm
eShucmV0cnkpCit7CisgICAgaWYgKCFucmV0cnkpIHsKKyAgICAgICAgZG9uZSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFpbnRlcm5hbHMubWFya2VyQ291bnRGb3JOb2Rl
KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIpKSB7CisgICAgICAgIHdpbmRv
dy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkobnJldHJ5IC0gMSk7IH0sIDApOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFs
cy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5n
IiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRv
U3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gRG91YmxlLWNsaWNr
IHRoZSBtaXNzcGVsbGVkIHdvcmQuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9
IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRU
b3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisKKyAgICAvLyBDb250ZXh0IGNs
aWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHggPSBkZXN0
aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQg
KyA0MDsKKyAgICB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3Rp
bmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2
ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29u
dGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgw
eDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFy
a2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDAp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmlu
ZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAt
IDFdIiwgIndlbGNvbWUiKTsKKyAgICAKKyAgICBkb25lKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGludGVybmFscy5zZXR0aW5ncy5z
ZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0QXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgdmFyIGRlc3RpbmF0aW9u
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRp
b24uZm9jdXMoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNl
LCAid2VsbGNvbWUgaG9tZS4iKTsKKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsg
dmVyaWZ5KDEwKTsgfSwgMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgd29y
ayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxpbmdzLiIpOworaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgdGVzdCgpOworCismbHQ7L3NjcmlwdCZndDsKKyZsdDtzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiJmd0OyZsdDsvc2NyaXB0
Jmd0OworJmx0Oy9ib2R5Jmd0OworJmx0Oy9odG1sJmd0OwpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVk
LW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVk
LW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13
b3Jkcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc1MTJkZGM3M2IwMzgxOTg0MTQ1YzllNzlk
NGZmZGFhYWNjYmY2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBs
ZS13b3Jkcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorU3BlbGxpbmcgc2hvdWxkIHdv
cmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbXVsdGktd29yZCBtaXNzcGVsbGluZyBleGFjdGx5
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJh
bmdlLnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IGlzICJ1cHBlciBjYXNlIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMg
InVwcGVyIGNhc2UiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ1
cHBlciBjYXNlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCitJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0
aXBsZS13b3Jkcy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29y
ZHMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjlmMzU3MWMyYzc5ZTgzMjY2YzVlYTBlYzgyYWY4NjNkYWU3ODA5NTcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMuaHRtbApAQCAtMCwwICsxLDY1IEBA
CismbHQ7IURPQ1RZUEUgaHRtbCZndDsKKyZsdDtodG1sJmd0OworJmx0O2hlYWQmZ3Q7CismbHQ7
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Jmd0OyZsdDsvc2NyaXB0Jmd0OworJmx0Oy9oZWFkJmd0OworJmx0O2JvZHkmZ3Q7CismbHQ7ZGl2
IGlkPSJjb250YWluZXIiJmd0OworICAmbHQ7ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVk
aXRhYmxlJmd0OyZsdDsvZGl2Jmd0OworJmx0Oy9kaXYmZ3Q7CismbHQ7c2NyaXB0Jmd0OworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0
UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworCisgICAg
dmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uIik7
CisgICAgZGVzdGluYXRpb24uZm9jdXMoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5z
ZXJ0VGV4dCIsIGZhbHNlLCAiSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuIik7CisKKyAgICAvLyBJ
bmplY3QgYSBtdWx0aS13b3JkIG1pc3NwZWxsaW5nLgorICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQoZGVzdGluYXRpb24uY2hpbGROb2Rl
c1swXSwgMTMpOworICAgIHJhbmdlLnNldEVuZChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAy
Myk7CisgICAgd2luZG93LmludGVybmFscy5hZGRTcGVsbGluZ01hcmtlcihyYW5nZSk7CisKKyAg
ICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0
aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSIsICIiKTsKKyAgICAKKyAgICAvLyBTZWxlY3QgdGhlIG11bHRpLXdvcmQgbWlzc3BlbGxp
bmcgd2l0aG91dCBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlIG9yIHB1bmN0dWF0aW9uLgorICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB2YXIgd29yZFJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICB3b3JkUmFuZ2Uuc2V0U3RhcnQoZGVzdGlu
YXRpb24uY2hpbGROb2Rlc1swXSwgMTMpOworICAgIHdvcmRSYW5nZS5zZXRFbmQoZGVzdGluYXRp
b24uY2hpbGROb2Rlc1swXSwgMjMpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZSh3b3JkUmFuZ2UpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7CisKKyAgICAvLyBDb250ZXh0IGNs
aWNrIG9uICJ1cHBlciBjYXNlIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHgg
PSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNl
dExlZnQgKyAxMDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8g
MjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVs
ZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBo
aWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJv
bUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGlu
dGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNw
ZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJh
bmdlLnRvU3RyaW5nKCkiLCAidXBwZXIgY2FzZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAidXBwZXIgY2FzZSIpOworCisg
ICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7
CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoZmFs
c2UpOworICAgIGZpbmlzaEpTVGVzdCgpCit9CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91
bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBtdWx0aS13b3JkIG1pc3NwZWxsaW5nIGV4
YWN0bHkuIik7CitpZiAod2luZG93LmludGVybmFscykKKyAgICB0ZXN0KCk7CisKKyZsdDsvc2Ny
aXB0Jmd0OworJmx0O3NjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyImZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CismbHQ7L2JvZHkmZ3Q7CismbHQ7L2h0
bWwmZ3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50eHQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctZXhhY3RseS1zZWxlY3RlZC13b3JkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13
b3JkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjY1YmI0YTRiNWQ1ZDAzNGM1YjZkZjFkMTdm
MDA3N2I0YTUzMzRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1NwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhl
IHVzZXIgc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIGV4YWN0bHkuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBp
cyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3
ZWxsY29tZSIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29t
ZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgor
UEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0g
aXMgIndlbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJo
b21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiaG9tZSIKK1BB
U1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlz
ICImbHQ7c2VwYXJhdG9yJmd0OyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQord2VsbGNvbWUgaG9tZS4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3Jk
Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWwgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2Vs
ZWN0ZWQtd29yZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhZTQ4MTQ3MDE3MDgxY2NiYjBkOWY4YWE2Zjc2
NWY4ODNlNWFiNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC5odG1s
CkBAIC0wLDAgKzEsOTQgQEAKKyZsdDshRE9DVFlQRSBodG1sJmd0OworJmx0O2h0bWwmZ3Q7Cism
bHQ7aGVhZCZndDsKKyZsdDtzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyImZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CismbHQ7L2hlYWQmZ3Q7CismbHQ7
Ym9keSZndDsKKyZsdDtkaXYgaWQ9ImNvbnRhaW5lciImZ3Q7CisgICZsdDtkaXYgaWQ9ImRlc3Rp
bmF0aW9uIiBjb250ZW50RWRpdGFibGUmZ3Q7Jmx0Oy9kaXYmZ3Q7CismbHQ7L2RpdiZndDsKKwor
Jmx0O3NjcmlwdCZndDsKKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgdGVzdFJ1bm5lci5zZXRB
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoZmFsc2UpOworICAgIGZpbmlzaEpT
VGVzdCgpCit9CisKK2Z1bmN0aW9uIHZlcmlmeShucmV0cnkpCit7CisgICAgaWYgKCFucmV0cnkp
IHsKKyAgICAgICAgZG9uZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFp
bnRlcm5hbHMubWFya2VyQ291bnRGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJz
cGVsbGluZyIpKSB7CisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJp
ZnkobnJldHJ5IC0gMSk7IH0sIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
U2VsZWN0IHRoZSBtaXNzcGVsbGVkIHdvcmQgd2l0aG91dCBzdXJyb3VuZGluZyB3aGl0ZXNwYWNl
IG9yIHB1bmN0dWF0aW9uLgorICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5n
ZXMoKTsKKyAgICB2YXIgd29yZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICB3
b3JkUmFuZ2Uuc2V0U3RhcnQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMCk7CisgICAgd29y
ZFJhbmdlLnNldEVuZChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCA4KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uod29yZFJhbmdlKTsKKworICAgIHNwZWxsaW5nTWFya2Vy
UmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9k
ZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxp
bmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIp
OworCisgICAgLy8gQ29udGV4dCBjbGljayBvbiAid2VsbGNvbWUiIHRvIHNob3cgdGhlIGNvbnRl
eHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24u
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0
aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7
CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOwor
ICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVy
LmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxs
aW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9u
LmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3
ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50
c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKKyAgICAKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd29yZFJhbmdl
LnNldFN0YXJ0KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDkpOworICAgIHdvcmRSYW5nZS5z
ZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMTMpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZSh3b3JkUmFuZ2UpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiaG9tZSIpOworCisgICAgLy8gQ29u
dGV4dCBjbGljayBvbiAiaG9tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4
ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZz
ZXRMZWZ0ICsgODA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8g
MjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVs
ZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBo
aWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJv
bUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJob21lIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVu
Z3RoIC0gMV0iLCAiJmx0O3NlcGFyYXRvciZndDsiKTsKKworICAgIGRvbmUoKTsKK30KKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1
bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICB2YXIg
ZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzdGluYXRpb24iKTsKKyAg
ICBkZXN0aW5hdGlvbi5mb2N1cygpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRU
ZXh0IiwgZmFsc2UsICJ3ZWxsY29tZSBob21lLiIpOworICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyB2ZXJpZnkoMTApOyB9LCAwKTsKK30KKworZGVzY3JpcHRpb24oIlNwZWxsaW5n
IHNob3VsZCB3b3JrIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIGV4
YWN0bHkuIik7CitpZiAod2luZG93LmludGVybmFscykKKyAgICB0ZXN0KCk7CisKKyZsdDsvc2Ny
aXB0Jmd0OworJmx0O3NjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyImZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CismbHQ7L2JvZHkmZ3Q7CismbHQ7L2h0
bWwmZ3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLW11bHRpd29yZC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LW11bHRpd29yZC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjVhZWM3MzE3YTY3NTIyYWEyNDRjYzdjYzM5MDc5ODY3
MGJiZmUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE1IEBACitTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2Vy
IHNlbGVjdHMgbXVsdGlwbGUgd29yZHMgdGhhdCBhcmUgbm90IGEgc2luZ2xlIG1pc3NwZWxsaW5n
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJh
bmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBp
cyAid2VsbGNvbWUgaG9tZSIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlz
ICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndl
bGxjb21lIGhvbWUiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50
cy5sZW5ndGggLSAxXSBpcyAiJmx0O3NlcGFyYXRvciZndDsiCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lIGhvbWUuCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW11bHRp
d29yZC1zZWxlY3Rpb24uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LW11bHRpd29yZC1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTRiYzBjZGM5NmQyOGM2ODAx
YmRhNzYxNDQzOTM1MGFjYTNmZDllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0
aW9uLmh0bWwKQEAgLTAsMCArMSw3OCBAQAorJmx0OyFET0NUWVBFIGh0bWwmZ3Q7CismbHQ7aHRt
bCZndDsKKyZsdDtoZWFkJmd0OworJmx0O3NjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIiZndDsmbHQ7L3NjcmlwdCZndDsKKyZsdDsvaGVhZCZn
dDsKKyZsdDtib2R5Jmd0OworJmx0O2RpdiBpZD0iY29udGFpbmVyIiZndDsKKyAgJmx0O2RpdiBp
ZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZSZndDsmbHQ7L2RpdiZndDsKKyZsdDsvZGl2
Jmd0OworCismbHQ7c2NyaXB0Jmd0OworCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICB0ZXN0UnVu
bmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmYWxzZSk7CisgICAg
ZmluaXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gdmVyaWZ5KG5yZXRyeSkKK3sKKyAgICBpZiAo
IW5yZXRyeSkgeworICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rl
c1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShk
ZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkiLCAiIik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2Vz
KCk7CisgICAgdmFyIG11bHRpV29yZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICBtdWx0aVdvcmRSYW5nZS5zZXRTdGFydChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAwKTsK
KyAgICBtdWx0aVdvcmRSYW5nZS5zZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMTMp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShtdWx0aVdvcmRSYW5nZSk7CisK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgIndlbGxjb21lIGhvbWUiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgdG8gc2hvdyB0
aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9m
ZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0
aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsg
ZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENs
aWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZl
bnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisg
ICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVz
dGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgIndlbGxjb21lIGhvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRl
eHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICImbHQ7c2Vw
YXJhdG9yJmd0OyIpOworCisgICAgZG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmll
ZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3Vz
KCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIndlbGxj
b21lIGhvbWUuIik7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgx
MCk7IH0sIDApOworfQorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVk
IHdoZW4gdXNlciBzZWxlY3RzIG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmdsZSBt
aXNzcGVsbGluZy4iKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHRlc3QoKTsKKworJmx0
Oy9zY3JpcHQmZ3Q7CismbHQ7c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIiZndDsmbHQ7L3NjcmlwdCZndDsKKyZsdDsvYm9keSZndDsKKyZs
dDsvaHRtbCZndDsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50
eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3
Nzk4ZWZiOGRkNTJlM2I5ZGFlODVmZmVhNDNjOGRlM2ExYzMwOGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMg
QEAKK0Nocm9tZSBzaG91bGQgc2VsZWN0IG11bHRpLXdvcmQgbWlzc3BlbGxpbmdzIG9uIGNvbnRl
eHQgY2xpY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5n
TWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgd2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0
cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxl
Y3QtbXVsdGlwbGUtd29yZHMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxl
LXdvcmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iMDA3NmY5MDAwOWY1ZWM2ODlmMmNlMDQ0MTQ5ZDdkNmViOGE2ZDVhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLmh0bWwKQEAgLTAsMCArMSw1NiBAQAor
Jmx0OyFET0NUWVBFIGh0bWwmZ3Q7CismbHQ7aHRtbCZndDsKKyZsdDtoZWFkJmd0OworJmx0O3Nj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIiZn
dDsmbHQ7L3NjcmlwdCZndDsKKyZsdDsvaGVhZCZndDsKKyZsdDtib2R5Jmd0OworJmx0O2RpdiBp
ZD0iY29udGFpbmVyIiZndDsKKyAgJmx0O2RpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0
YWJsZSZndDsmbHQ7L2RpdiZndDsKKyZsdDsvZGl2Jmd0OworJmx0O3NjcmlwdCZndDsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1
bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKworICAgIHZh
ciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOwor
ICAgIGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2Vy
dFRleHQiLCBmYWxzZSwgIkl0IHNob3VsZCBiZSB1cHBlciBjYXNlLiIpOworCisgICAgLy8gSW5q
ZWN0IGEgbXVsdGktd29yZCBtaXNzcGVsbGluZy4KKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNb
MF0sIDEzKTsKKyAgICByYW5nZS5zZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMjMp
OworICAgIHdpbmRvdy5pbnRlcm5hbHMuYWRkU3BlbGxpbmdNYXJrZXIocmFuZ2UpOworCisgICAg
c3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGlu
YXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAidXBwZXIgY2FzZSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAiIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ1cHBlciBjYXNlIiB0byBzaG93
IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyAxMDA7CisgICAgdmFyIHkgPSBk
ZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9w
ICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4
dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAg
ZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOwor
CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUo
ZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAidXBwZXIgY2Fz
ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkiLCAidXBwZXIgY2FzZSIpOworCisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoZmFsc2UpOworICAgIGZpbmlzaEpTVGVzdCgpCit9
CisKK2Rlc2NyaXB0aW9uKCJDaHJvbWUgc2hvdWxkIHNlbGVjdCBtdWx0aS13b3JkIG1pc3NwZWxs
aW5ncyBvbiBjb250ZXh0IGNsaWNrLiIpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgdGVz
dCgpOworCismbHQ7L3NjcmlwdCZndDsKKyZsdDtzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiJmd0OyZsdDsvc2NyaXB0Jmd0OworJmx0Oy9i
b2R5Jmd0OworJmx0Oy9odG1sJmd0OwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLWV4
cGVjdGVkLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTEyYjQxZDFhNDZiMDBjZGU2ZjhlYjcwMmFlOTJmMGRiNzY0MmU2NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBA
QAorQ2hyb21lIHNlbGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAiIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndl
bGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNv
bWUiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGgg
LSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkg
aXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mg
Y29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICIm
bHQ7c2VwYXJhdG9yJmd0OyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQord2VsbGNvbWUgaG9tZS4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29y
ZC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQuaHRtbCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxk
LXNlbGVjdC1zaW5nbGUtd29yZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2YjY3ODExYzkxYWI0ZGQ0MTY4
NDk0N2MyMzIxZGE5MzllNTFkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2lu
Z2xlLXdvcmQuaHRtbApAQCAtMCwwICsxLDg0IEBACismbHQ7IURPQ1RZUEUgaHRtbCZndDsKKyZs
dDtodG1sJmd0OworJmx0O2hlYWQmZ3Q7CismbHQ7c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiJmd0OyZsdDsvc2NyaXB0Jmd0OworJmx0Oy9o
ZWFkJmd0OworJmx0O2JvZHkmZ3Q7CismbHQ7ZGl2IGlkPSJjb250YWluZXIiJmd0OworICAmbHQ7
ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlJmd0OyZsdDsvZGl2Jmd0OworJmx0
Oy9kaXYmZ3Q7CisKKyZsdDtzY3JpcHQmZ3Q7CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIHRl
c3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOworICAg
IGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKGZhbHNlKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQoreworICAg
IGlmICghbnJldHJ5KSB7CisgICAgICAgIGRvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghaW50ZXJuYWxzLm1hcmtlckNvdW50Rm9yTm9kZShkZXN0aW5hdGlvbi5jaGls
ZE5vZGVzWzBdLCAic3BlbGxpbmciKSkgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5j
dGlvbigpIHsgdmVyaWZ5KG5yZXRyeSAtIDEpOyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JO
b2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxj
b21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gIndlbGxjb21lIiB0
byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIg
eSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZz
ZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5j
b250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4K
KyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVs
bCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9y
Tm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxs
Y29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNv
bnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxj
b21lIik7CisgICAgCisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkiLCAiIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJob21lIiB0byBzaG93IHRo
ZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA4MDsKKyAgICB2YXIgeSA9IGRlc3Rp
bmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xp
Y2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVu
dFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IiwgIiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tj
b250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIiZsdDtzZXBhcmF0b3ImZ3Q7Iik7CisK
KyAgICBkb25lKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGpzVGVzdElzQXN5bmMg
PSB0cnVlOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFi
bGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQodHJ1ZSk7CisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9jdXMoKTsKKyAgICBkb2N1bWVu
dC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAid2VsbGNvbWUgaG9tZS4iKTsKKyAg
ICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5KDEwKTsgfSwgMCk7Cit9CisK
K2Rlc2NyaXB0aW9uKCJDaHJvbWUgc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIG9uIGNvbnRl
eHQgY2xpY2suIik7CitpZiAod2luZG93LmludGVybmFscykKKyAgICB0ZXN0KCk7CisKKyZsdDsv
c2NyaXB0Jmd0OworJmx0O3NjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyImZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CismbHQ7L2JvZHkmZ3Q7CismbHQ7
L2h0bWwmZ3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1zdWJ3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xOTdmYzFmMWFjOTQ2NDI3NzM0M2Q1YmQ0MzcwMWJlYmI4MGFm
YTc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNSBAQAorU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxl
Y3RzIGEgcGFydCBvZiBtaXNzcGVsbGluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BB
U1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImxsY28iCitQQVNTIHNwZWxsaW5nTWFya2VyUmFu
Z2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIGlzICJsbGNvIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51
RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIiZsdDtzZXBhcmF0b3ImZ3Q7IgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21lLgpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1zdWJ3b3JkLXNlbGVjdGlvbi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU3MWE4ZDQyN2UxZDY2MzEz
ZGRmMDcyMWZiMTg0YTY5NjJhNTVlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rp
b24uaHRtbApAQCAtMCwwICsxLDc3IEBACismbHQ7IURPQ1RZUEUgaHRtbCZndDsKKyZsdDtodG1s
Jmd0OworJmx0O2hlYWQmZ3Q7CismbHQ7c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiJmd0OyZsdDsvc2NyaXB0Jmd0OworJmx0Oy9oZWFkJmd0
OworJmx0O2JvZHkmZ3Q7CismbHQ7ZGl2IGlkPSJjb250YWluZXIiJmd0OworICAmbHQ7ZGl2IGlk
PSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlJmd0OyZsdDsvZGl2Jmd0OworJmx0Oy9kaXYm
Z3Q7CisKKyZsdDtzY3JpcHQmZ3Q7CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIHRlc3RSdW5u
ZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOworICAgIGludGVy
bmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKGZhbHNlKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQoreworICAgIGlmICgh
bnJldHJ5KSB7CisgICAgICAgIGRvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmICghaW50ZXJuYWxzLm1hcmtlckNvdW50Rm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVz
WzBdLCAic3BlbGxpbmciKSkgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigp
IHsgdmVyaWZ5KG5yZXRyeSAtIDEpOyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRl
c3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSIsICIiKTsKKworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMo
KTsKKyAgICB2YXIgc3ViV29yZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBz
dWJXb3JkUmFuZ2Uuc2V0U3RhcnQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMik7CisgICAg
c3ViV29yZFJhbmdlLnNldEVuZChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCA2KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uoc3ViV29yZFJhbmdlKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgImxsY28i
KTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAg
IHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlv
bi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVp
Z2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0
TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtl
eSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJp
bmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5n
ZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1sw
XSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01h
cmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgImxsY28iKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVt
ZW50cy5sZW5ndGggLSAxXSIsICImbHQ7c2VwYXJhdG9yJmd0OyIpOworCisgICAgZG9uZSgpOwor
fQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBp
bnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAg
ICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOwor
ICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlv
biIpOworICAgIGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
Ikluc2VydFRleHQiLCBmYWxzZSwgIndlbGxjb21lIGhvbWUuIik7CisgICAgd2luZG93LnNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOworfQorCitkZXNjcmlwdGlvbigi
U3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIGEgcGFydCBvZiBt
aXNzcGVsbGluZy4iKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHRlc3QoKTsKKworJmx0
Oy9zY3JpcHQmZ3Q7CismbHQ7c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIiZndDsmbHQ7L3NjcmlwdCZndDsKKyZsdDsvYm9keSZndDsKKyZs
dDsvaHRtbCZndDsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0
aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2OTg5MDJl
ZjU5ZTNiNjhjNGFiODhhMDZlMTgxOGU1NzNmMTBiOWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgt
cHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitQdW5j
dHVhdGlvbiBtYXJrcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBz
aG91bGQgaWdub3JlIHRoZW0uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSEiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2Uu
dG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIGlzICJ3ZWxsY29tZSEiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1l
bnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWUhCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1
YXRpb24tc2VsZWN0aW9uLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rp
b24uaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDBh
YTQ2MDVmYjIxNjBiYmVjOTRjMzVjNjRmYjEyMjBjYTBhMjg4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13
aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKyZsdDshRE9D
VFlQRSBodG1sJmd0OworJmx0O2h0bWwmZ3Q7CismbHQ7aGVhZCZndDsKKyZsdDtzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyImZ3Q7Jmx0Oy9z
Y3JpcHQmZ3Q7CismbHQ7L2hlYWQmZ3Q7CismbHQ7Ym9keSZndDsKKyZsdDtkaXYgaWQ9ImNvbnRh
aW5lciImZ3Q7CisgICZsdDtkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGUmZ3Q7
Jmx0Oy9kaXYmZ3Q7CismbHQ7L2RpdiZndDsKKworJmx0O3NjcmlwdCZndDsKKworZnVuY3Rpb24g
ZG9uZSgpCit7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZChmYWxzZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tl
ckVuYWJsZWQoZmFsc2UpOworICAgIGZpbmlzaEpTVGVzdCgpCit9CisKK2Z1bmN0aW9uIHZlcmlm
eShucmV0cnkpCit7CisgICAgaWYgKCFucmV0cnkpIHsKKyAgICAgICAgZG9uZSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFpbnRlcm5hbHMubWFya2VyQ291bnRGb3JOb2Rl
KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIpKSB7CisgICAgICAgIHdpbmRv
dy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkobnJldHJ5IC0gMSk7IH0sIDApOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFs
cy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5n
IiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRv
U3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydChkZXN0aW5hdGlvbi5jaGls
ZE5vZGVzWzBdLCAwKTsKKyAgICByYW5nZS5zZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1sw
XSwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwg
IndlbGxjb21lISIpOworCisgICAgLy8gQ29udGV4dCBjbGljayB0byBzaG93IHRoZSBjb250ZXh0
IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCAr
IGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9m
ZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlv
bi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOwor
ICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAg
ICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5r
ZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGlu
Z01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5j
aGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2Vs
bGNvbWUhIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRz
W2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworCisgICAgZG9u
ZSgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVl
KTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRy
dWUpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0
aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIndlbGxjb21lISIpOworICAgIHdpbmRvdy5zZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkoMTApOyB9LCAwKTsKK30KKworZGVzY3JpcHRpb24o
IlB1bmN0dWF0aW9uIG1hcmtzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxs
aW5nIHNob3VsZCBpZ25vcmUgdGhlbS4iKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHRl
c3QoKTsKKworJmx0Oy9zY3JpcHQmZ3Q7CismbHQ7c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIiZndDsmbHQ7L3NjcmlwdCZndDsKKyZsdDsv
Ym9keSZndDsKKyZsdDsvaHRtbCZndDsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi1l
eHBlY3RlZC50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNjZTlhMzUzNTIwNzMyOGE4YmQ4NjRkNzYwYmU5NWQ0YTc2M2RmMDkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUg
QEAKK1VuZGVyc2NvcmVzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5n
IHNob3VsZCBpZ25vcmUgdGhlbS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkgaXMgIl93ZWxsY29tZV8iCitQQVNTIHNwZWxsaW5nTWFya2VyUmFu
Z2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIGlzICJfd2VsbGNvbWVfIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRl
eHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0hpLCBfd2VsbGNvbWVfIGhvbWUuCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVy
c2NvcmUtc2VsZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZmE3ZDI3OTkxZThkMmJkOWI1MGRmYzNiYmRjZjVlN2EzM2Y0YjQ0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3OCBA
QAorJmx0OyFET0NUWVBFIGh0bWwmZ3Q7CismbHQ7aHRtbCZndDsKKyZsdDtoZWFkJmd0OworJmx0
O3NjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
IiZndDsmbHQ7L3NjcmlwdCZndDsKKyZsdDsvaGVhZCZndDsKKyZsdDtib2R5Jmd0OworJmx0O2Rp
diBpZD0iY29udGFpbmVyIiZndDsKKyAgJmx0O2RpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRF
ZGl0YWJsZSZndDsmbHQ7L2RpdiZndDsKKyZsdDsvZGl2Jmd0OworCismbHQ7c2NyaXB0Jmd0Owor
CitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmll
ZFRleHRDaGVja2VyRW5hYmxlZChmYWxzZSk7CisgICAgZmluaXNoSlNUZXN0KCkKK30KKworZnVu
Y3Rpb24gdmVyaWZ5KG5yZXRyeSkKK3sKKyAgICBpZiAoIW5yZXRyeSkgeworICAgICAgICBkb25l
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJD
b3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAg
ICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsg
fSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdl
ID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBd
LCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFy
a2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBT
ZWxlY3QgdGhlIHRleHQgIl93ZWxsY29tZV8iLgorICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5y
ZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB2YXIgcmFuZ2VXaXRoVW5kZXJzY29yZXMgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlV2l0aFVuZGVyc2NvcmVzLnNldFN0YXJ0KGRlc3Rp
bmF0aW9uLmNoaWxkTm9kZXNbMF0sIDQpOworICAgIHJhbmdlV2l0aFVuZGVyc2NvcmVzLnNldEVu
ZChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAxNCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlV2l0aFVuZGVyc2NvcmVzKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIl93ZWxsY29tZV8iKTsK
KworICAgIC8vIENvbnRleHQgY2xpY2sgb24gIl93ZWxsY29tZV8iIHRvIHNob3cgdGhlIGNvbnRl
eHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDgwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24u
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0
aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7
CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOwor
ICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVy
LmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxs
aW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9u
LmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJf
d2VsbGNvbWVfIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1l
bnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworCisgICAg
ZG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0
cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KHRydWUpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJk
ZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIkhpLCBfd2VsbGNvbWVfIGhvbWUuIik7Cisg
ICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOworfQor
CitkZXNjcmlwdGlvbigiVW5kZXJzY29yZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFj
ZTogc3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB0aGVtLiIpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgdGVzdCgpOworCismbHQ7L3NjcmlwdCZndDsKKyZsdDtzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiJmd0OyZsdDsvc2NyaXB0Jmd0
OworJmx0Oy9ib2R5Jmd0OworJmx0Oy9odG1sJmd0OwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2Vs
ZWN0aW9uLWV4cGVjdGVkLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDQzODE5MDFlOWRjOGJkYjgwZTkwOWZiY2ZmMjllMjNhMzI3Nzg1YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNCBAQAorU3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB3aGl0ZXNwYWNlLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5n
KCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBp
cyAiIHdlbGxjb21lICIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3
ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiB3ZWxs
Y29tZSAiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5n
dGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQoraGVsbG8sIHdlbGxjb21lIGhvbWUuCkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFj
ZS1zZWxlY3Rpb24uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NmY1YmQ0OWEy
ODdiODc1NGQ1YTUyYjMyODM5NzI5MzU0NWM2YWUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdo
aXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3NSBAQAorJmx0OyFET0NUWVBFIGh0
bWwmZ3Q7CismbHQ7aHRtbCZndDsKKyZsdDtoZWFkJmd0OworJmx0O3NjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIiZndDsmbHQ7L3NjcmlwdCZn
dDsKKyZsdDsvaGVhZCZndDsKKyZsdDtib2R5Jmd0OworJmx0O2RpdiBpZD0iY29udGFpbmVyIiZn
dDsKKyAgJmx0O2RpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZSZndDsmbHQ7L2Rp
diZndDsKKyZsdDsvZGl2Jmd0OworCismbHQ7c2NyaXB0Jmd0OworCitmdW5jdGlvbiBkb25lKCkK
K3sKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZh
bHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxl
ZChmYWxzZSk7CisgICAgZmluaXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gdmVyaWZ5KG5yZXRy
eSkKK3sKKyAgICBpZiAoIW5yZXRyeSkgeworICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGlu
YXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtl
clJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmco
KSIsICJ3ZWxsY29tZSIpOworCisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJh
bmdlcygpOworICAgIHZhciByYW5nZVdpdGhXaGl0ZXNwYWNlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICByYW5nZVdpdGhXaGl0ZXNwYWNlLnNldFN0YXJ0KGRlc3RpbmF0aW9uLmNoaWxk
Tm9kZXNbMF0sIDYpOworICAgIHJhbmdlV2l0aFdoaXRlc3BhY2Uuc2V0RW5kKGRlc3RpbmF0aW9u
LmNoaWxkTm9kZXNbMF0sIDE2KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2VXaXRoV2hpdGVzcGFjZSk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIgd2VsbGNvbWUgIik7CisKKyAgICB2YXIgeCA9
IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0
TGVmdCArIDgwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7
CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVt
ZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIGVzYyBrZXkgdG8ga2ls
bCB0aGUgY29udGV4dCBtZW51CisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNo
YXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVy
bmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxs
aW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiB3ZWxsY29tZSAiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50
cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisKKyAgICBkb25lKCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGludGVybmFscy5zZXR0
aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIu
c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgdmFyIGRlc3Rp
bmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVz
dGluYXRpb24uZm9jdXMoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIs
IGZhbHNlLCAiaGVsbG8sIHdlbGxjb21lIGhvbWUuIik7CisgICAgd2luZG93LnNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOworfQorCitkZXNjcmlwdGlvbigiU3BlbGxp
bmcgc2hvdWxkIGlnbm9yZSB3aGl0ZXNwYWNlLiIpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgdGVzdCgpOworCismbHQ7L3NjcmlwdCZndDsKKyZsdDtzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiJmd0OyZsdDsvc2NyaXB0Jmd0Owor
Jmx0Oy9ib2R5Jmd0OworJmx0Oy9odG1sJmd0OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYmVl
ODIwNDNhYTgwNjYzMzYwMTlmZGE0Yjk0ZGVjZmQzNGRhNGIxZi4uMDAyZmUyZDQzYjA3ZTdkMTAy
NWNjMmY1Njg1ZTA2MjVkZWJmNDM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cApAQCAtODk4LDYgKzg5OCwxMSBAQCB2b2lkIEludGVybmFsczo6YWRkVGV4dE1hdGNoTWFya2Vy
KGNvbnN0IFJhbmdlKiByYW5nZSwgYm9vbCBpc0FjdGl2ZSkKICAgICByYW5nZS0mZ3Q7b3duZXJE
b2N1bWVudCgpLSZndDttYXJrZXJzKCktJmd0O2FkZFRleHRNYXRjaE1hcmtlcihyYW5nZSwgaXNB
Y3RpdmUpOwogfQogCit2b2lkIEludGVybmFsczo6YWRkU3BlbGxpbmdNYXJrZXIoUmFuZ2UqIHJh
bmdlKQoreworICAgIHJhbmdlLSZndDtvd25lckRvY3VtZW50KCktJmd0O21hcmtlcnMoKS0mZ3Q7
YWRkTWFya2VyKHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOworfQorCiB2b2lkIElu
dGVybmFsczo6c2V0U2Nyb2xsVmlld1Bvc2l0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgbG9uZyB4
LCBsb25nIHksIEV4Y2VwdGlvbkNvZGUmYW1wOyBlYykKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8
ICFkb2N1bWVudC0mZ3Q7dmlldygpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA0ZmZkNzA2YzBiZTMw
NGY3YTFiNjI4NDMwNGI1NzExMzllMzFmODdkLi41ZGMwZmY4ZGNhYzAzY2QxNzBjY2NkM2JiNDQ5
ZjVlZTM5ZTNhZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTEzOSw2ICsx
MzksNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0ciZsdDtSYW5nZSZndDsgbWFya2VyUmFuZ2VG
b3JOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmYW1wOyBtYXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRl
eCwgRXhjZXB0aW9uQ29kZSZhbXA7KTsKICAgICBTdHJpbmcgbWFya2VyRGVzY3JpcHRpb25Gb3JO
b2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmYW1wOyBtYXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRleCwg
RXhjZXB0aW9uQ29kZSZhbXA7KTsKICAgICB2b2lkIGFkZFRleHRNYXRjaE1hcmtlcihjb25zdCBS
YW5nZSosIGJvb2wgaXNBY3RpdmUpOworICAgIHZvaWQgYWRkU3BlbGxpbmdNYXJrZXIoUmFuZ2Uq
KTsKIAogICAgIHZvaWQgc2V0U2Nyb2xsVmlld1Bvc2l0aW9uKERvY3VtZW50KiwgbG9uZyB4LCBs
b25nIHksIEV4Y2VwdGlvbkNvZGUmYW1wOyk7CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJmFtcDsgbW9kZSwgaW50IGdhcCwgRXhjZXB0aW9u
Q29kZSZhbXA7IGVjKSB7IHNldFBhZ2luYXRpb24oZG9jdW1lbnQsIG1vZGUsIGdhcCwgMCwgZWMp
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBkYTFlNDAzZDk4N2Q5MmE1MjFhMzI2ZWE0MTE5
YzIzMDBiYTg2ZmY5Li5jZDU5ZjA5YmNmNjZjZjBjNjNmNWEzOTIzZTAxMDEyMTk3YzYzYWUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC05OSw2ICs5OSw3IEBACiAgICAg
UmFuZ2UgbWFya2VyUmFuZ2VGb3JOb2RlKGluIE5vZGUgbm9kZSwgaW4gRE9NU3RyaW5nIG1hcmtl
clR5cGUsIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAg
IERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBET01T
dHJpbmcgbWFya2VyVHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAgICAgdm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoaW4gUmFuZ2UgcmFuZ2UsIGluIGJv
b2xlYW4gaXNBY3RpdmUpOworICAgIHZvaWQgYWRkU3BlbGxpbmdNYXJrZXIoaW4gUmFuZ2UgcmFu
Z2UpOwogCiAgICAgdm9pZCBzZXRTY3JvbGxWaWV3UG9zaXRpb24oaW4gRG9jdW1lbnQgZG9jdW1l
bnQsIGluIGxvbmcgeCwgaW4gbG9uZyB5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIApJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5j
cHAKaW5kZXggMzM5NTZiY2E3ODRlMDE5NDU5YjJmOTNkNGI0NjAxYzU2ZWY1MDMyNy4uZDIxMGYz
YTY0NGYzMDEwN2FkMDBhM2NhNDFkOWNkZTNlMDU3ZDA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCkBAIC03OCw2ICs3
OCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
K3N0YXRpYyBib29sIElzV2hpdGVTcGFjZU9yUHVuY3R1YXRpb24oVUNoYXIgYykgeworICAgIHJl
dHVybiBXVEY6OlVuaWNvZGU6OmlzU2VwYXJhdG9yU3BhY2UoYykgfHwgV1RGOjpVbmljb2RlOjpp
c1B1bmN0KGMpOworfQorCiAvLyBGaWd1cmUgb3V0IHRoZSBVUkwgb2YgYSBwYWdlIG9yIHN1YmZy
YW1lLiBSZXR1cm5zIHxwYWdlX3R5cGV8IGFzIHRoZSB0eXBlLAogLy8gd2hpY2ggaW5kaWNhdGVz
IHBhZ2Ugb3Igc3ViZnJhbWUsIG9yIENvbnRleHROb2RlVHlwZTo6Tk9ORSBpZiB0aGUgVVJMIGNv
dWxkIG5vdAogLy8gYmUgZGV0ZXJtaW5lZCBmb3Igc29tZSByZWFzb24uCkBAIC0xMDIsOCArMTA2
LDggQEAgc3RhdGljIGJvb2wgaXNBU2luZ2xlV29yZChjb25zdCBTdHJpbmcmYW1wOyB0ZXh0KQog
fQogCiAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IG1pc3NwZWxsZWQgd29yZCBvbiB3aGljaCBj
b250ZXh0IG1lbnUKLS8vIGlzIHRvIGJlIGV2b2xrZWQuIFRoaXMgZnVuY3Rpb24gYWxzbyBzZXRz
IHRoZSB3b3JkIG9uIHdoaWNoIGNvbnRleHQgbWVudQotLy8gaGFzIGJlZW4gZXZva2VkIHRvIGJl
IHRoZSBzZWxlY3RlZCB3b3JkLCBhcyByZXF1aXJlZC4gVGhpcyBmdW5jdGlvbiBjaGFuZ2VzCisv
LyBpcyB0byBiZSBpbnZva2VkLiBUaGlzIGZ1bmN0aW9uIGFsc28gc2V0cyB0aGUgd29yZCBvbiB3
aGljaCBjb250ZXh0IG1lbnUKKy8vIGhhcyBiZWVuIGludm9rZWQgdG8gYmUgdGhlIHNlbGVjdGVk
IHdvcmQsIGFzIHJlcXVpcmVkLiBUaGlzIGZ1bmN0aW9uIGNoYW5nZXMKIC8vIHRoZSBzZWxlY3Rp
b24gb25seSB3aGVuIHRoZXJlIHdlcmUgbm8gc2VsZWN0ZWQgY2hhcmFjdGVycyBvbiBPUyBYLgog
c3RhdGljIFN0cmluZyBzZWxlY3RNaXNzcGVsbGVkV29yZChjb25zdCBDb250ZXh0TWVudSogZGVm
YXVsdE1lbnUsIEZyYW1lKiBzZWxlY3RlZEZyYW1lKQogewpAQCAtMjc0LDM2ICsyNzgsMzUgQEAg
UGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21N
ZW51RnJvbURlZmF1bHRJdGVtcygKICNlbmRpZgogICAgICAgICAvLyBXaGVuIENocm9tZSBlbmFi
bGVzIGFzeW5jaHJvbm91cyBzcGVsbGNoZWNraW5nLCBpdHMgc3BlbGxjaGVja2VyIGFkZHMgc3Bl
bGxpbmcgbWFya2VycyB0byBtaXNzcGVsbGVkCiAgICAgICAgIC8vIHdvcmRzIGFuZCBhdHRhY2hl
cyBzdWdnZXN0aW9ucyB0byB0aGVzZSBtYXJrZXJzIGluIHRoZSBiYWNrZ3JvdW5kLiBUaGVyZWZv
cmUsIHdoZW4gYSB1c2VyIHJpZ2h0LWNsaWNrcwotICAgICAgICAvLyBhIG1vdXNlIG9uIGEgd29y
ZCwgQ2hyb21lIGp1c3QgbmVlZHMgdG8gZmluZCBhIHNwZWxsaW5nIG1hcmtlciBvbiB0aGUgd29y
ZCBpbnN0cmVhZCBvZiBzcGVsbGNoZWNraW5nIGl0LgorICAgICAgICAvLyBhIG1vdXNlIG9uIGEg
d29yZCwgQ2hyb21lIGp1c3QgbmVlZHMgdG8gZmluZCBhIHNwZWxsaW5nIG1hcmtlciBvbiB0aGUg
d29yZCBpbnN0ZWFkIG9mIHNwZWxsY2hlY2tpbmcgaXQuCiAgICAgICAgIGlmIChzZWxlY3RlZEZy
YW1lLSZndDtzZXR0aW5ncygpICZhbXA7JmFtcDsgc2VsZWN0ZWRGcmFtZS0mZ3Q7c2V0dGluZ3Mo
KS0mZ3Q7YXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkgewogICAgICAgICAgICAg
VmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBzZWxlY3RlZEZyYW1lLSZndDtzZWxlY3Rpb24o
KS0mZ3Q7c2VsZWN0aW9uKCk7Ci0gICAgICAgICAgICBib29sIHNob3VsZFVwZGF0ZVNlbGVjdGlv
biA9IGZhbHNlOwogICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0T3JSYW5nZSgpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgc2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFyaXR5
KTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkVXBkYXRlU2VsZWN0aW9uID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUmVmUHRyJmx0O1JhbmdlJmd0OyByYW5n
ZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAgICAgICAgICAgICAgIFZlY3Rv
ciZsdDtEb2N1bWVudE1hcmtlciomZ3Q7IG1hcmtlcnMgPSBzZWxlY3RlZEZyYW1lLSZndDtkb2N1
bWVudCgpLSZndDttYXJrZXJzKCktJmd0O21hcmtlcnNJblJhbmdlKHJhbmdlLmdldCgpLCBEb2N1
bWVudE1hcmtlcjo6U3BlbGxpbmcgfCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcik7Ci0gICAgICAg
ICAgICAgICAgaWYgKG1hcmtlcnMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKG1hcmtlcnNbMF0tJmd0O3N0YXJ0T2Zmc2V0KCkgIT0gc3RhdGljX2Nhc3QmbHQ7dW5zaWdu
ZWQmZ3Q7KHJhbmdlLSZndDtzdGFydE9mZnNldCgpKSB8fCBtYXJrZXJzWzBdLSZndDtlbmRPZmZz
ZXQoKSAhPSBzdGF0aWNfY2FzdCZsdDt1bnNpZ25lZCZndDsocmFuZ2UtJmd0O2VuZE9mZnNldCgp
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnMuY2xlYXIoKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG1hcmtlcnMuc2l6ZSgpID09IDEpIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmFuZ2UtJmd0O3NldFN0YXJ0KHJhbmdlLSZndDtzdGFydENvbnRhaW5l
cigpLCBtYXJrZXJzWzBdLSZndDtzdGFydE9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICAgICAg
cmFuZ2UtJmd0O3NldEVuZChyYW5nZS0mZ3Q7ZW5kQ29udGFpbmVyKCksIG1hcmtlcnNbMF0tJmd0
O2VuZE9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgZGF0YS5taXNzcGVsbGVkV29yZCA9
IHJhbmdlLSZndDt0ZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtYXJrZXJzWzBdLSZn
dDtkZXNjcmlwdGlvbigpLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWZWN0
b3ImbHQ7U3RyaW5nJmd0OyBzdWdnZXN0aW9uczsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1h
cmtlcnNbMF0tJmd0O2Rlc2NyaXB0aW9uKCkuc3BsaXQoJ1xuJywgc3VnZ2VzdGlvbnMpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YS5kaWN0aW9uYXJ5U3VnZ2VzdGlvbnMgPSBzdWdnZXN0
aW9uczsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3dlYlZpZXctJmd0O3NwZWxs
Q2hlY2tDbGllbnQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pc3NwZWxsZWRP
ZmZzZXQsIG1pc3NwZWxsZWRMZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3dlYlZp
ZXctJmd0O3NwZWxsQ2hlY2tDbGllbnQoKS0mZ3Q7c3BlbGxDaGVjayhkYXRhLm1pc3NwZWxsZWRX
b3JkLCBtaXNzcGVsbGVkT2Zmc2V0LCBtaXNzcGVsbGVkTGVuZ3RoLCAmYW1wO2RhdGEuZGljdGlv
bmFyeVN1Z2dlc3Rpb25zKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBzZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHNob3VsZFVwZGF0ZVNlbGVjdGlvbiAmYW1wOyZhbXA7IHNlbGVjdGVk
RnJhbWUtJmd0O3NlbGVjdGlvbigpLSZndDtzaG91bGRDaGFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9u
KSkKKyAgICAgICAgICAgICAgICBSZWZQdHImbHQ7UmFuZ2UmZ3Q7IHNlbGVjdGlvblJhbmdlID0g
c2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgICAgICAgICAgICAgRXhjZXB0aW9u
Q29kZSBleGNlcHRpb25Db2RlOworICAgICAgICAgICAgICAgIFJlZlB0ciZsdDtSYW5nZSZndDsg
bWFya2VyUmFuZ2UgPSBzZWxlY3Rpb25SYW5nZS0mZ3Q7Y2xvbmVSYW5nZShleGNlcHRpb25Db2Rl
KTsKKyAgICAgICAgICAgICAgICBWZWN0b3ImbHQ7RG9jdW1lbnRNYXJrZXIqJmd0OyBtYXJrZXJz
ID0gc2VsZWN0ZWRGcmFtZS0mZ3Q7ZG9jdW1lbnQoKS0mZ3Q7bWFya2VycygpLSZndDttYXJrZXJz
SW5SYW5nZShzZWxlY3Rpb25SYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwg
RG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIpOworICAgICAgICAgICAgICAgIGlmICghZXhjZXB0aW9u
Q29kZSAmYW1wOyZhbXA7IG1hcmtlcnMuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbWFya2VyUmFuZ2UtJmd0O3NldFN0YXJ0KG1hcmtlclJhbmdlLSZndDtzdGFydENvbnRhaW5l
cigpLCBtYXJrZXJzWzBdLSZndDtzdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
bWFya2VyUmFuZ2UtJmd0O3NldEVuZChtYXJrZXJSYW5nZS0mZ3Q7ZW5kQ29udGFpbmVyKCksIG1h
cmtlcnNbMF0tJmd0O2VuZE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhl
cmUgaXMgbm8gc2VsZWN0aW9uLCB0aGVuIHNlbGVjdCB0aGUgbWlzc3BlbGxpbmcuCisgICAgICAg
ICAgICAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKG1hcmtlclJhbmdlLmdldCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRnJhbWUtJmd0O3NlbGVjdGlvbigpLSZn
dDtzZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZWN0aW9uUmFuZ2UuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblJhbmdl
LSZndDt0ZXh0KCkuc3RyaXBXaGl0ZVNwYWNlKCZhbXA7SXNXaGl0ZVNwYWNlT3JQdW5jdHVhdGlv
bikgPT0gbWFya2VyUmFuZ2UtJmd0O3RleHQoKS5zdHJpcFdoaXRlU3BhY2UoJmFtcDtJc1doaXRl
U3BhY2VPclB1bmN0dWF0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5taXNz
cGVsbGVkV29yZCA9IG1hcmtlclJhbmdlLSZndDt0ZXh0KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobWFya2Vyc1swXS0mZ3Q7ZGVzY3JpcHRpb24oKS5sZW5ndGgoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZlY3RvciZsdDtTdHJpbmcmZ3Q7IHN1Z2dlc3Rpb25zOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnNbMF0tJmd0O2Rlc2NyaXB0aW9uKCku
c3BsaXQoJ1xuJywgc3VnZ2VzdGlvbnMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGEuZGljdGlvbmFyeVN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnM7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKG1fd2ViVmlldy0mZ3Q7c3BlbGxDaGVja0NsaWVudCgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pc3NwZWxsZWRPZmZzZXQsIG1pc3NwZWxs
ZWRMZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93ZWJWaWV3LSZndDtzcGVs
bENoZWNrQ2xpZW50KCktJmd0O3NwZWxsQ2hlY2soZGF0YS5taXNzcGVsbGVkV29yZCwgbWlzc3Bl
bGxlZE9mZnNldCwgbWlzc3BlbGxlZExlbmd0aCwgJmFtcDtkYXRhLmRpY3Rpb25hcnlTdWdnZXN0
aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCAzNDdmYTIwMzg4ZDczYTNh
MGFiMDkzYmI3OTlhOGU2NDFhYmU1ODVjLi43M2IzZTIyYTlkOGY1Mzk0Y2YwMzM0Y2I1ZTVlMDJk
OGUzYzUyNmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5j
cHAKQEAgLTEyOTksMTEgKzEyOTksMTYgQEAgdm9pZCBXZWJGcmFtZUltcGw6OnJlcGxhY2VNaXNz
cGVsbGVkUmFuZ2UoY29uc3QgV2ViU3RyaW5nJmFtcDsgdGV4dCkKICAgICBWZWN0b3ImbHQ7RG9j
dW1lbnRNYXJrZXIqJmd0OyBtYXJrZXJzID0gZnJhbWUoKS0mZ3Q7ZG9jdW1lbnQoKS0mZ3Q7bWFy
a2VycygpLSZndDttYXJrZXJzSW5SYW5nZShjYXJldFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtl
cjo6U3BlbGxpbmcgfCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CiAgICAgaWYgKG1hcmtlcnMu
c2l6ZSgpICZsdDsgMSB8fCBtYXJrZXJzWzBdLSZndDtzdGFydE9mZnNldCgpICZndDs9IG1hcmtl
cnNbMF0tJmd0O2VuZE9mZnNldCgpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyJmx0O1Jh
bmdlJmd0OyBtYXJrZXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoZnJhbWUoKS0mZ3Q7c2VsZWN0aW9uKCktJmd0O3Jvb3RFZGl0YWJsZUVsZW1lbnRPckRv
Y3VtZW50RWxlbWVudCgpLCBtYXJrZXJzWzBdLSZndDtzdGFydE9mZnNldCgpLCBtYXJrZXJzWzBd
LSZndDtlbmRPZmZzZXQoKSAtIG1hcmtlcnNbMF0tJmd0O3N0YXJ0T2Zmc2V0KCkpOwotICAgIGlm
ICghbWFya2VyUmFuZ2UuZ2V0KCkgfHwgIWZyYW1lKCktJmd0O3NlbGVjdGlvbigpLSZndDtzaG91
bGRDaGFuZ2VTZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCkpKQorICAgIEV4Y2VwdGlvbkNvZGUg
ZXhjZXB0aW9uQ29kZTsKKyAgICBSZWZQdHImbHQ7UmFuZ2UmZ3Q7IG1hcmtlclJhbmdlID0gY2Fy
ZXRSYW5nZS0mZ3Q7Y2xvbmVSYW5nZShleGNlcHRpb25Db2RlKTsKKyAgICBpZiAoIWV4Y2VwdGlv
bkNvZGUpCisgICAgICAgIHJldHVybjsKKyAgICBtYXJrZXJSYW5nZS0mZ3Q7c2V0U3RhcnQobWFy
a2VyUmFuZ2UtJmd0O3N0YXJ0Q29udGFpbmVyKCksIG1hcmtlcnNbMF0tJmd0O3N0YXJ0T2Zmc2V0
KCkpOworICAgIG1hcmtlclJhbmdlLSZndDtzZXRFbmQobWFya2VyUmFuZ2UtJmd0O2VuZENvbnRh
aW5lcigpLCBtYXJrZXJzWzBdLSZndDtlbmRPZmZzZXQoKSk7CisgICAgaWYgKCFmcmFtZSgpLSZn
dDtzZWxlY3Rpb24oKS0mZ3Q7c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG1hcmtlclJhbmdlLmdldCgp
KSkKICAgICAgICAgcmV0dXJuOwogICAgIGZyYW1lKCktJmd0O3NlbGVjdGlvbigpLSZndDtzZXRT
ZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCksIENoYXJhY3RlckdyYW51bGFyaXR5KTsKLSAgICBm
cmFtZSgpLSZndDtlZGl0b3IoKS0mZ3Q7cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRleHQsIGZh
bHNlLCB0cnVlKTsKKyAgICBmcmFtZSgpLSZndDtlZGl0b3IoKS0mZ3Q7cmVwbGFjZVNlbGVjdGlv
bldpdGhUZXh0KHRleHQsIGZhbHNlLCBmYWxzZSk7CiB9CiAKIGJvb2wgV2ViRnJhbWVJbXBsOjpo
YXNTZWxlY3Rpb24oKSBjb25zdAo8L3ByZT48L2JvZHk+PC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184581</attachid>
            <date>2013-01-24 14:45:11 -0800</date>
            <delta_ts>2013-01-24 14:56:21 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>webkit-spell.patch</filename>
            <type>text/plain</type>
            <size>53401</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlj
a2VkLXdvcmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjNlMDFlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTUgQEAKK1NwZWxsaW5nIHNob3VsZCB3b3JrIGZvciBkb3VibGUtY2xp
Y2tlZCBtaXNzcGVsbGluZ3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50
b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51
RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lIGhvbWUuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRv
dWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1j
bGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZTYzNGU4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNs
aWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBA
CitTcGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxlZCB3b3Jk
cyB3aXRoIHVuZGVyc2NvcmVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWVfIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAid2VsbGNvbWVfIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRN
ZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lXyBob21lLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNr
ZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNmJkNDM3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13
aXRoLXVuZGVyc2NvcmVzLmh0bWwKQEAgLTAsMCArMSw4MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29u
dGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4K
KzwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICB0ZXN0UnVubmVy
LnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmYWxzZSk7CisgICAgZmlu
aXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gdmVyaWZ5KG5yZXRyeSkKK3sKKyAgICBpZiAoIW5y
ZXRyeSkgeworICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1sw
XSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0
aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAiIik7CisKKyAgICAvLyBEb3VibGUtY2xpY2sgdGhlIG1pc3NwZWxsZWQgd29yZC4KKyAg
ICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRp
b24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhl
aWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAi
d2VsbGNvbWVfIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hv
dyB0aGUgY29udGV4dCBtZW51LgorICAgIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB5ID0gZGVzdGluYXRp
b24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3Rp
bmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwg
eSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygp
OworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNw
ZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0
aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIs
ICJ3ZWxsY29tZV8iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxl
bWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisKKyAg
ICBkb25lKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGpzVGVzdElzQXN5bmMgPSB0
cnVlOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVk
KHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQodHJ1ZSk7CisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9jdXMoKTsKKyAgICBkb2N1bWVudC5l
eGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAid2VsbGNvbWVfIGhvbWUuIik7CisgICAg
d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOworfQorCitk
ZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2VkIG1pc3Nw
ZWxsZWQgd29yZHMgd2l0aCB1bmRlcnNjb3Jlcy4iKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgIHRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3Jk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMxZmU0YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50
RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZnVuY3Rpb24gZG9uZSgpCit7
CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxz
ZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQo
ZmFsc2UpOworICAgIGZpbmlzaEpTVGVzdCgpCit9CisKK2Z1bmN0aW9uIHZlcmlmeShucmV0cnkp
Cit7CisgICAgaWYgKCFucmV0cnkpIHsKKyAgICAgICAgZG9uZSgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKCFpbnRlcm5hbHMubWFya2VyQ291bnRGb3JOb2RlKGRlc3RpbmF0
aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIpKSB7CisgICAgICAgIHdpbmRvdy5zZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkobnJldHJ5IC0gMSk7IH0sIDApOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJS
YW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCki
LCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gRG91YmxlLWNsaWNrIHRoZSBtaXNz
cGVsbGVkIHdvcmQuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0
aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0
aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgs
IHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
VXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3
ZWxsY29tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHggPSBkZXN0aW5hdGlvbi5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAg
ICB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9m
ZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVy
LmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51
LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBu
dWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VG
b3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndl
bGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
Y29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndl
bGNvbWUiKTsKKworICAgIGRvbmUoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAganNU
ZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0
Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICB2YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZGVzdGluYXRpb24iKTsKKyAgICBkZXN0aW5hdGlvbi5mb2N1cygpOwor
ICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ3ZWxsY29tZSBo
b21lLiIpOworICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkoMTApOyB9
LCAwKTsKK30KKworZGVzY3JpcHRpb24oIlNwZWxsaW5nIHNob3VsZCB3b3JrIGZvciBkb3VibGUt
Y2xpY2tlZCBtaXNzcGVsbGluZ3MuIik7CitpZiAod2luZG93LmludGVybmFscykKKyAgICB0ZXN0
KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5
LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5hNzUxMmRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVj
dGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitTcGVsbGlu
ZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBtdWx0aS13b3JkIG1pc3NwZWxs
aW5nIGV4YWN0bHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxs
aW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKK0l0IHNob3VsZCBiZSB1cHBlciBjYXNlLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFj
dGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlw
bGUtd29yZHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWUyYzlk
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5odG1s
CkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9
ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGludGVy
bmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRydWUpOworICAgIHRl
c3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisKKyAg
ICB2YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzdGluYXRpb24i
KTsKKyAgICBkZXN0aW5hdGlvbi5mb2N1cygpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJ
bnNlcnRUZXh0IiwgZmFsc2UsICJJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4iKTsKKworICAgIC8v
IEluamVjdCBhIG11bHRpLXdvcmQgbWlzc3BlbGxpbmcuCisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydChkZXN0aW5hdGlvbi5jaGlsZE5v
ZGVzWzBdLCAxMyk7CisgICAgcmFuZ2Uuc2V0RW5kKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0s
IDIzKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLmFkZFNwZWxsaW5nTWFya2VyKHJhbmdlKTsKKwor
ICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRl
c3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgInVwcGVyIGNhc2Ui
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIiwgIiIpOworCisgICAgLy8gU2VsZWN0IHRoZSBtdWx0aS13b3JkIG1pc3NwZWxsaW5n
IHdpdGhvdXQgc3Vycm91bmRpbmcgd2hpdGVzcGFjZSBvciBwdW5jdHVhdGlvbi4KKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgdmFyIHdvcmRSYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgd29yZFJhbmdlLnNldFN0YXJ0KGRlc3RpbmF0
aW9uLmNoaWxkTm9kZXNbMF0sIDEzKTsKKyAgICB3b3JkUmFuZ2Uuc2V0RW5kKGRlc3RpbmF0aW9u
LmNoaWxkTm9kZXNbMF0sIDIzKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
d29yZFJhbmdlKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkiLCAidXBwZXIgY2FzZSIpOworCisgICAgLy8gQ29udGV4dCBjbGlj
ayBvbiAidXBwZXIgY2FzZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0g
ZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRM
ZWZ0ICsgMTAwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7
CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVt
ZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlk
ZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21D
aGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRl
cm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVs
bGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5n
ZS50b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
IndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKKworICAg
IHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOwor
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKGZhbHNl
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKQorfQorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxk
IHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbXVsdGktd29yZCBtaXNzcGVsbGluZyBleGFj
dGx5LiIpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgdGVzdCgpOworCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVj
dGVkLXdvcmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNjViYjQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBA
QAorU3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIHRoZSBtaXNzcGVs
bGVkIHdvcmQgZXhhY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
c3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyBzcGVsbGluZ01h
cmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNb
Y29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgd2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImhvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIGlzICJob21lIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2Nv
bnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+IgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21lLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13
b3JkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNiNjE1NAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWwKQEAgLTAsMCArMSw5NCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNv
bnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBkb25l
KCkKK3sKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KGZhbHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5h
YmxlZChmYWxzZSk7CisgICAgZmluaXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gdmVyaWZ5KG5y
ZXRyeSkKK3sKKyAgICBpZiAoIW5yZXRyeSkgeworICAgICAgICBkb25lKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVz
dGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyBTZWxlY3QgdGhlIG1pc3NwZWxsZWQgd29yZCB3aXRo
b3V0IHN1cnJvdW5kaW5nIHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRpb24uCisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHZhciB3b3JkUmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHdvcmRSYW5nZS5zZXRTdGFydChkZXN0aW5hdGlvbi5j
aGlsZE5vZGVzWzBdLCAwKTsKKyAgICB3b3JkUmFuZ2Uuc2V0RW5kKGRlc3RpbmF0aW9uLmNoaWxk
Tm9kZXNbMF0sIDgpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZSh3b3JkUmFu
Z2UpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZv
ck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2Vs
bGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3
ZWxsY29tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRp
b24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7
CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGlu
YXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZl
bnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250
ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4
MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJr
ZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5n
KCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0g
MV0iLCAid2VsY29tZSIpOworCisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJh
bmdlcygpOworICAgIHdvcmRSYW5nZS5zZXRTdGFydChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBd
LCA5KTsKKyAgICB3b3JkUmFuZ2Uuc2V0RW5kKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDEz
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uod29yZFJhbmdlKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwg
ImhvbWUiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gImhvbWUiIHRvIHNob3cgdGhlIGNv
bnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDgwOworICAgIHZhciB5ID0gZGVzdGluYXRp
b24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3Rp
bmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwg
eSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygp
OworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAi
aG9tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tj
b250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIjxzZXBhcmF0b3I+Iik7CisKKyAgICBk
b25lKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRy
dWUpOworICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
dHJ1ZSk7CisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRl
c3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9jdXMoKTsKKyAgICBkb2N1bWVudC5leGVj
Q29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAid2VsbGNvbWUgaG9tZS4iKTsKKyAgICB3aW5k
b3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5KDEwKTsgfSwgMCk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgdGhlIG1p
c3NwZWxsZWQgd29yZCBleGFjdGx5LiIpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgdGVz
dCgpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlv
bi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI1YWVj
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNSBAQAorU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxl
Y3RzIG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmdsZSBtaXNzcGVsbGluZy4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50
b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndl
bGxjb21lIGhvbWUiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2Vs
bGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29t
ZSBob21lIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVu
Z3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQt
c2VsZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLW11bHRpd29yZC1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi43MTRiYzBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQt
c2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVy
Ij4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2
PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICB0ZXN0UnVubmVyLnNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0
dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmYWxzZSk7CisgICAgZmluaXNoSlNU
ZXN0KCkKK30KKworZnVuY3Rpb24gdmVyaWZ5KG5yZXRyeSkKK3sKKyAgICBpZiAoIW5yZXRyeSkg
eworICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWlu
dGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNw
ZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlm
eShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzcGVs
bGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlv
bi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAi
Iik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAg
dmFyIG11bHRpV29yZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBtdWx0aVdv
cmRSYW5nZS5zZXRTdGFydChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAwKTsKKyAgICBtdWx0
aVdvcmRSYW5nZS5zZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMTMpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShtdWx0aVdvcmRSYW5nZSk7CisKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndl
bGxjb21lIGhvbWUiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgdG8gc2hvdyB0aGUgY29udGV4
dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQg
KyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRp
b24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsK
KyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7Cisg
ICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIu
a2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxp
bmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24u
Y2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndl
bGxjb21lIGhvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxl
bWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICI8c2VwYXJhdG9yPiIpOwor
CisgICAgZG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5h
YmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKHRydWUpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJkZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1l
bnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIndlbGxjb21lIGhvbWUuIik7Cisg
ICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOworfQor
CitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxl
Y3RzIG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmdsZSBtaXNzcGVsbGluZy4iKTsK
K2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBs
ZS13b3Jkcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3Nzk4ZWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTMgQEAKK0Nocm9tZSBzaG91bGQgc2VsZWN0IG11bHRpLXdvcmQgbWlzc3BlbGxp
bmdzIG9uIGNvbnRleHQgY2xpY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mg
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgc3BlbGxpbmdNYXJr
ZXJSYW5nZS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRtbCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1t
dWx0aXBsZS13b3Jkcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIw
MDc2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRt
bApAQCAtMCwwICsxLDU2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlk
PSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0Pgor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0
ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworCisg
ICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9u
Iik7CisgICAgZGVzdGluYXRpb24uZm9jdXMoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgi
SW5zZXJ0VGV4dCIsIGZhbHNlLCAiSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuIik7CisKKyAgICAv
LyBJbmplY3QgYSBtdWx0aS13b3JkIG1pc3NwZWxsaW5nLgorICAgIHZhciByYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQoZGVzdGluYXRpb24uY2hpbGRO
b2Rlc1swXSwgMTMpOworICAgIHJhbmdlLnNldEVuZChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBd
LCAyMyk7CisgICAgd2luZG93LmludGVybmFscy5hZGRTcGVsbGluZ01hcmtlcihyYW5nZSk7CisK
KyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShk
ZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNl
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSIsICIiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gInVwcGVyIGNhc2UiIHRv
IHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDEwMDsKKyAgICB2YXIg
eSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZz
ZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5j
b250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4K
KyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVs
bCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9y
Tm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ1cHBl
ciBjYXNlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7CisKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmYWxzZSk7CisgICAgZmluaXNoSlNUZXN0
KCkKK30KKworZGVzY3JpcHRpb24oIkNocm9tZSBzaG91bGQgc2VsZWN0IG11bHRpLXdvcmQgbWlz
c3BlbGxpbmdzIG9uIGNvbnRleHQgY2xpY2suIik7CitpZiAod2luZG93LmludGVybmFscykKKyAg
ICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQt
c2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5hMTJiNDFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmds
ZS13b3JkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitDaHJvbWUgc2VsZWN0cyB0aGUg
bWlzc3BlbGxlZCB3b3JkIG9uIGNvbnRleHQgY2xpY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNv
bWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHNw
ZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1MgY29udGV4dE1lbnVF
bGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFT
UyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2Nv
bnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+IgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21lLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0bWwgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qt
c2luZ2xlLXdvcmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTAz
MTk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0bWwKQEAg
LTAsMCArMSw4NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVz
dGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitm
dW5jdGlvbiBkb25lKCkKK3sKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRl
eHRDaGVja2VyRW5hYmxlZChmYWxzZSk7CisgICAgZmluaXNoSlNUZXN0KCkKK30KKworZnVuY3Rp
b24gdmVyaWZ5KG5yZXRyeSkKK3sKKyAgICBpZiAoIW5yZXRyeSkgeworICAgICAgICBkb25lKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3Vu
dEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAg
ICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwg
MCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0g
aW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAi
c3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2Vy
UmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBDb250
ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZh
ciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5v
ZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0
IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVu
dUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0
byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcu
ZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9
IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwg
InNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtl
clJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxl
bWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworCisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNr
IG9uICJob21lIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5h
dGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA4
MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0
aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBl
dmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNv
bnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUo
MHgwMDFCKSwgbnVsbCk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
Y29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIjxz
ZXBhcmF0b3I+Iik7CisKKyAgICBkb25lKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVk
VGV4dENoZWNrZXJFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9jdXMo
KTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAid2VsbGNv
bWUgaG9tZS4iKTsKKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5KDEw
KTsgfSwgMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJDaHJvbWUgc2VsZWN0cyB0aGUgbWlzc3BlbGxl
ZCB3b3JkIG9uIGNvbnRleHQgY2xpY2suIik7CitpZiAod2luZG93LmludGVybmFscykKKyAgICB0
ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5N2ZjMWYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE1IEBACitTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVjdHMg
YSBwYXJ0IG9mIG1pc3NwZWxsaW5nLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAibGxjbyIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50
b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgImxsY28iCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVt
ZW50cy5sZW5ndGggLSAxXSBpcyAiPHNlcGFyYXRvcj4iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lIGhvbWUuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1
YndvcmQtc2VsZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU3MWE4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29y
ZC1zZWxlY3Rpb24uaHRtbApAQCAtMCwwICsxLDc3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWlu
ZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9k
aXY+CisKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIHRlc3RSdW5uZXIuc2V0
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOworICAgIGludGVybmFscy5z
ZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKGZhbHNlKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKQorfQorCitmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQoreworICAgIGlmICghbnJldHJ5
KSB7CisgICAgICAgIGRvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgh
aW50ZXJuYWxzLm1hcmtlckNvdW50Rm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAi
c3BlbGxpbmciKSkgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVy
aWZ5KG5yZXRyeSAtIDEpOyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNw
ZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0
aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIs
ICIiKTsKKworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAg
ICB2YXIgc3ViV29yZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBzdWJXb3Jk
UmFuZ2Uuc2V0U3RhcnQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMik7CisgICAgc3ViV29y
ZFJhbmdlLnNldEVuZChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCA2KTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uoc3ViV29yZFJhbmdlKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgImxsY28iKTsKKwor
ICAgIC8vIENvbnRleHQgY2xpY2sgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4
ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZz
ZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8g
MjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVs
ZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBo
aWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJv
bUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGlu
dGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNw
ZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJh
bmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
IndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgImxsY28iKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5s
ZW5ndGggLSAxXSIsICI8c2VwYXJhdG9yPiIpOworCisgICAgZG9uZSgpOworfQorCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0
dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVy
LnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHZhciBkZXN0
aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAgIGRl
c3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQi
LCBmYWxzZSwgIndlbGxjb21lIGhvbWUuIik7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOworfQorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hv
dWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIGEgcGFydCBvZiBtaXNzcGVsbGluZy4i
KTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1z
ZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY5ODkwMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTUgQEAKK1B1bmN0dWF0aW9uIG1hcmtzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRl
c3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxs
Y29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mg
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lISIKK1BBU1Mgc3Bl
bGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lISIKK1BBU1MgY29udGV4dE1lbnVF
bGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSEK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVh
dGlvbi1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
ZDBhYTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1s
CkBAIC0wLDAgKzEsNzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9
ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4K
KworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZp
ZWRUZXh0Q2hlY2tlckVuYWJsZWQoZmFsc2UpOworICAgIGZpbmlzaEpTVGVzdCgpCit9CisKK2Z1
bmN0aW9uIHZlcmlmeShucmV0cnkpCit7CisgICAgaWYgKCFucmV0cnkpIHsKKyAgICAgICAgZG9u
ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFpbnRlcm5hbHMubWFya2Vy
Q291bnRGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIpKSB7Cisg
ICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkobnJldHJ5IC0gMSk7
IH0sIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3BlbGxpbmdNYXJrZXJSYW5n
ZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1sw
XSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01h
cmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydChkZXN0
aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAwKTsKKyAgICByYW5nZS5zZXRFbmQoZGVzdGluYXRpb24u
Y2hpbGROb2Rlc1swXSwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIiwgIndlbGxjb21lISIpOworCisgICAgLy8gQ29udGV4dCBjbGljayB0byBzaG93
IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRl
c3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3Ag
KyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0
Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBl
dmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisK
KyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShk
ZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkiLCAid2VsbGNvbWUhIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0
TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIp
OworCisgICAgZG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2Vy
RW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKHRydWUpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9j
dW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIndlbGxjb21lISIpOworICAg
IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkoMTApOyB9LCAwKTsKK30KKwor
ZGVzY3JpcHRpb24oIlB1bmN0dWF0aW9uIG1hcmtzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRl
c3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4iKTsKK2lmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgIHRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjNjZTlhMzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJz
Y29yZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1VuZGVyc2NvcmVz
IHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUg
dGhlbS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJr
ZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkgaXMgIl93ZWxsY29tZV8iCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBp
cyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJf
d2VsbGNvbWVfIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMu
bGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKK0hpLCBfd2VsbGNvbWVfIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgt
dW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYTdkMjc5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3OCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRl
bnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBkb25lKCkK
K3sKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZh
bHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxl
ZChmYWxzZSk7CisgICAgZmluaXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gdmVyaWZ5KG5yZXRy
eSkKK3sKKyAgICBpZiAoIW5yZXRyeSkgeworICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGlu
YXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtl
clJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmco
KSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBTZWxlY3QgdGhlIHRleHQgIl93
ZWxsY29tZV8iLgorICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsK
KyAgICB2YXIgcmFuZ2VXaXRoVW5kZXJzY29yZXMgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlV2l0aFVuZGVyc2NvcmVzLnNldFN0YXJ0KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNb
MF0sIDQpOworICAgIHJhbmdlV2l0aFVuZGVyc2NvcmVzLnNldEVuZChkZXN0aW5hdGlvbi5jaGls
ZE5vZGVzWzBdLCAxNCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
V2l0aFVuZGVyc2NvcmVzKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIl93ZWxsY29tZV8iKTsKKworICAgIC8vIENvbnRleHQg
Y2xpY2sgb24gIl93ZWxsY29tZV8iIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIg
eCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zm
c2V0TGVmdCArIDgwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNl
dFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAv
IDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVF
bGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8g
aGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZy
b21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBp
bnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJz
cGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJfd2VsbGNvbWVfIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxl
bWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworCisgICAgZG9uZSgpOworfQorCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVu
bmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHZhciBk
ZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAg
IGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRl
eHQiLCBmYWxzZSwgIkhpLCBfd2VsbGNvbWVfIGhvbWUuIik7CisgICAgd2luZG93LnNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOworfQorCitkZXNjcmlwdGlvbigiVW5k
ZXJzY29yZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hvdWxk
IGlnbm9yZSB0aGVtLiIpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgdGVzdCgpOworCis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRo
LXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVj
dGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQz
ODE5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorU3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB3aGl0ZXNwYWNl
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJh
bmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSBpcyAiIHdlbGxjb21lICIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0
cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkgaXMgIiB3ZWxsY29tZSAiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVF
bGVtZW50cy5sZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQoraGVsbG8sIHdlbGxjb21lIGhvbWUuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVj
dGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZjViZDQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24uaHRtbApAQCAtMCwwICsx
LDc1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlv
biIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Z1bmN0aW9u
IGRvbmUoKQoreworICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoZmFsc2UpOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNr
ZXJFbmFibGVkKGZhbHNlKTsKKyAgICBmaW5pc2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiB2ZXJp
ZnkobnJldHJ5KQoreworICAgIGlmICghbnJldHJ5KSB7CisgICAgICAgIGRvbmUoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaW50ZXJuYWxzLm1hcmtlckNvdW50Rm9yTm9k
ZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciKSkgeworICAgICAgICB3aW5k
b3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5KG5yZXRyeSAtIDEpOyB9LCAwKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5h
bHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGlu
ZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50
b1N0cmluZygpIiwgIndlbGxjb21lIik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVt
b3ZlQWxsUmFuZ2VzKCk7CisgICAgdmFyIHJhbmdlV2l0aFdoaXRlc3BhY2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlV2l0aFdoaXRlc3BhY2Uuc2V0U3RhcnQoZGVzdGluYXRp
b24uY2hpbGROb2Rlc1swXSwgNik7CisgICAgcmFuZ2VXaXRoV2hpdGVzcGFjZS5zZXRFbmQoZGVz
dGluYXRpb24uY2hpbGROb2Rlc1swXSwgMTYpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZVdpdGhXaGl0ZXNwYWNlKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
IndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiB3ZWxsY29tZSAiKTsKKworICAg
IHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlv
bi5vZmZzZXRMZWZ0ICsgODA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVp
Z2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0
TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gZXNjIGtl
eSB0byBraWxsIHRoZSBjb250ZXh0IG1lbnUKKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmlu
Zy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdl
ID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBd
LCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFy
a2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIHdlbGxjb21lICIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVu
dUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKKworICAgIGRvbmUoKTsKK30KKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJu
YWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgdGVz
dFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICB2
YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzdGluYXRpb24iKTsK
KyAgICBkZXN0aW5hdGlvbi5mb2N1cygpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNl
cnRUZXh0IiwgZmFsc2UsICJoZWxsbywgd2VsbGNvbWUgaG9tZS4iKTsKKyAgICB3aW5kb3cuc2V0
VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5KDEwKTsgfSwgMCk7Cit9CisKK2Rlc2NyaXB0aW9u
KCJTcGVsbGluZyBzaG91bGQgaWdub3JlIHdoaXRlc3BhY2UuIik7CitpZiAod2luZG93LmludGVy
bmFscykKKyAgICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYmVlODIwNC4uMDAy
ZmUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtODk4LDYgKzg5OCwx
MSBAQCB2b2lkIEludGVybmFsczo6YWRkVGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdlKiByYW5n
ZSwgYm9vbCBpc0FjdGl2ZSkKICAgICByYW5nZS0+b3duZXJEb2N1bWVudCgpLT5tYXJrZXJzKCkt
PmFkZFRleHRNYXRjaE1hcmtlcihyYW5nZSwgaXNBY3RpdmUpOwogfQogCit2b2lkIEludGVybmFs
czo6YWRkU3BlbGxpbmdNYXJrZXIoUmFuZ2UqIHJhbmdlKQoreworICAgIHJhbmdlLT5vd25lckRv
Y3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6U3Bl
bGxpbmcpOworfQorCiB2b2lkIEludGVybmFsczo6c2V0U2Nyb2xsVmlld1Bvc2l0aW9uKERvY3Vt
ZW50KiBkb2N1bWVudCwgbG9uZyB4LCBsb25nIHksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCmluZGV4IDRmZmQ3MDYuLjVkYzBmZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaApAQCAtMTM5LDYgKzEzOSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFJhbmdl
PiBtYXJrZXJSYW5nZUZvck5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgdW5z
aWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTdHJpbmcgbWFya2VyRGVzY3JpcHRp
b25Gb3JOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoY29uc3QgUmFu
Z2UqLCBib29sIGlzQWN0aXZlKTsKKyAgICB2b2lkIGFkZFNwZWxsaW5nTWFya2VyKFJhbmdlKik7
CiAKICAgICB2b2lkIHNldFNjcm9sbFZpZXdQb3NpdGlvbihEb2N1bWVudCosIGxvbmcgeCwgbG9u
ZyB5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiBtb2RlLCBpbnQgZ2FwLCBFeGNlcHRpb25Db2RlJiBlYykg
eyBzZXRQYWdpbmF0aW9uKGRvY3VtZW50LCBtb2RlLCBnYXAsIDAsIGVjKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGRhMWU0MDMuLmNkNTlmMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTk5LDYgKzk5LDcgQEAKICAgICBSYW5nZSBtYXJr
ZXJSYW5nZUZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBET01TdHJpbmcgbWFya2VyVHlwZSwgaW4g
dW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgRE9NU3RyaW5n
IG1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShpbiBOb2RlIG5vZGUsIGluIERPTVN0cmluZyBtYXJr
ZXJUeXBlLCBpbiB1bnNpZ25lZCBsb25nIGluZGV4KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAg
ICB2b2lkIGFkZFRleHRNYXRjaE1hcmtlcihpbiBSYW5nZSByYW5nZSwgaW4gYm9vbGVhbiBpc0Fj
dGl2ZSk7CisgICAgdm9pZCBhZGRTcGVsbGluZ01hcmtlcihpbiBSYW5nZSByYW5nZSk7CiAKICAg
ICB2b2lkIHNldFNjcm9sbFZpZXdQb3NpdGlvbihpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9u
ZyB4LCBpbiBsb25nIHkpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAppbmRleCAzMzk1
NmJjLi5kMjEwZjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250
ZXh0TWVudUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nv
bnRleHRNZW51Q2xpZW50SW1wbC5jcHAKQEAgLTc4LDYgKzc4LDEwIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIGJvb2wgSXNXaGl0ZVNw
YWNlT3JQdW5jdHVhdGlvbihVQ2hhciBjKSB7CisgICAgcmV0dXJuIFdURjo6VW5pY29kZTo6aXNT
ZXBhcmF0b3JTcGFjZShjKSB8fCBXVEY6OlVuaWNvZGU6OmlzUHVuY3QoYyk7Cit9CisKIC8vIEZp
Z3VyZSBvdXQgdGhlIFVSTCBvZiBhIHBhZ2Ugb3Igc3ViZnJhbWUuIFJldHVybnMgfHBhZ2VfdHlw
ZXwgYXMgdGhlIHR5cGUsCiAvLyB3aGljaCBpbmRpY2F0ZXMgcGFnZSBvciBzdWJmcmFtZSwgb3Ig
Q29udGV4dE5vZGVUeXBlOjpOT05FIGlmIHRoZSBVUkwgY291bGQgbm90CiAvLyBiZSBkZXRlcm1p
bmVkIGZvciBzb21lIHJlYXNvbi4KQEAgLTEwMiw4ICsxMDYsOCBAQCBzdGF0aWMgYm9vbCBpc0FT
aW5nbGVXb3JkKGNvbnN0IFN0cmluZyYgdGV4dCkKIH0KIAogLy8gSGVscGVyIGZ1bmN0aW9uIHRv
IGdldCBtaXNzcGVsbGVkIHdvcmQgb24gd2hpY2ggY29udGV4dCBtZW51Ci0vLyBpcyB0byBiZSBl
dm9sa2VkLiBUaGlzIGZ1bmN0aW9uIGFsc28gc2V0cyB0aGUgd29yZCBvbiB3aGljaCBjb250ZXh0
IG1lbnUKLS8vIGhhcyBiZWVuIGV2b2tlZCB0byBiZSB0aGUgc2VsZWN0ZWQgd29yZCwgYXMgcmVx
dWlyZWQuIFRoaXMgZnVuY3Rpb24gY2hhbmdlcworLy8gaXMgdG8gYmUgaW52b2tlZC4gVGhpcyBm
dW5jdGlvbiBhbHNvIHNldHMgdGhlIHdvcmQgb24gd2hpY2ggY29udGV4dCBtZW51CisvLyBoYXMg
YmVlbiBpbnZva2VkIHRvIGJlIHRoZSBzZWxlY3RlZCB3b3JkLCBhcyByZXF1aXJlZC4gVGhpcyBm
dW5jdGlvbiBjaGFuZ2VzCiAvLyB0aGUgc2VsZWN0aW9uIG9ubHkgd2hlbiB0aGVyZSB3ZXJlIG5v
IHNlbGVjdGVkIGNoYXJhY3RlcnMgb24gT1MgWC4KIHN0YXRpYyBTdHJpbmcgc2VsZWN0TWlzc3Bl
bGxlZFdvcmQoY29uc3QgQ29udGV4dE1lbnUqIGRlZmF1bHRNZW51LCBGcmFtZSogc2VsZWN0ZWRG
cmFtZSkKIHsKQEAgLTI3NCwzNiArMjc4LDM1IEBAIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENv
bnRleHRNZW51Q2xpZW50SW1wbDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoCiAjZW5k
aWYKICAgICAgICAgLy8gV2hlbiBDaHJvbWUgZW5hYmxlcyBhc3luY2hyb25vdXMgc3BlbGxjaGVj
a2luZywgaXRzIHNwZWxsY2hlY2tlciBhZGRzIHNwZWxsaW5nIG1hcmtlcnMgdG8gbWlzc3BlbGxl
ZAogICAgICAgICAvLyB3b3JkcyBhbmQgYXR0YWNoZXMgc3VnZ2VzdGlvbnMgdG8gdGhlc2UgbWFy
a2VycyBpbiB0aGUgYmFja2dyb3VuZC4gVGhlcmVmb3JlLCB3aGVuIGEgdXNlciByaWdodC1jbGlj
a3MKLSAgICAgICAgLy8gYSBtb3VzZSBvbiBhIHdvcmQsIENocm9tZSBqdXN0IG5lZWRzIHRvIGZp
bmQgYSBzcGVsbGluZyBtYXJrZXIgb24gdGhlIHdvcmQgaW5zdHJlYWQgb2Ygc3BlbGxjaGVja2lu
ZyBpdC4KKyAgICAgICAgLy8gYSBtb3VzZSBvbiBhIHdvcmQsIENocm9tZSBqdXN0IG5lZWRzIHRv
IGZpbmQgYSBzcGVsbGluZyBtYXJrZXIgb24gdGhlIHdvcmQgaW5zdGVhZCBvZiBzcGVsbGNoZWNr
aW5nIGl0LgogICAgICAgICBpZiAoc2VsZWN0ZWRGcmFtZS0+c2V0dGluZ3MoKSAmJiBzZWxlY3Rl
ZEZyYW1lLT5zZXR0aW5ncygpLT5hc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKSB7
CiAgICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IHNlbGVjdGVkRnJhbWUt
PnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKTsKLSAgICAgICAgICAgIGJvb2wgc2hvdWxkVXBkYXRl
U2VsZWN0aW9uID0gZmFsc2U7CiAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ2FyZXRPclJh
bmdlKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSkgewotICAg
ICAgICAgICAgICAgICAgICBzZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3Jh
bnVsYXJpdHkpOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRVcGRhdGVTZWxlY3Rpb24gPSB0
cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgICAgICAgICAgICAgVmVj
dG9yPERvY3VtZW50TWFya2VyKj4gbWFya2VycyA9IHNlbGVjdGVkRnJhbWUtPmRvY3VtZW50KCkt
Pm1hcmtlcnMoKS0+bWFya2Vyc0luUmFuZ2UocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpT
cGVsbGluZyB8IERvY3VtZW50TWFya2VyOjpHcmFtbWFyKTsKLSAgICAgICAgICAgICAgICBpZiAo
bWFya2Vycy5zaXplKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICBpZiAobWFya2Vyc1sw
XS0+c3RhcnRPZmZzZXQoKSAhPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UtPnN0YXJ0T2Zm
c2V0KCkpIHx8IG1hcmtlcnNbMF0tPmVuZE9mZnNldCgpICE9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihyYW5nZS0+ZW5kT2Zmc2V0KCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vycy5j
bGVhcigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAobWFya2Vycy5z
aXplKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0U3RhcnQocmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCksIG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAg
ICAgICAgICAgICByYW5nZS0+c2V0RW5kKHJhbmdlLT5lbmRDb250YWluZXIoKSwgbWFya2Vyc1sw
XS0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1pc3NwZWxsZWRXb3Jk
ID0gcmFuZ2UtPnRleHQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1hcmtlcnNbMF0tPmRl
c2NyaXB0aW9uKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxT
dHJpbmc+IHN1Z2dlc3Rpb25zOwotICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vyc1swXS0+
ZGVzY3JpcHRpb24oKS5zcGxpdCgnXG4nLCBzdWdnZXN0aW9ucyk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhLmRpY3Rpb25hcnlTdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zOwotICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fd2ViVmlldy0+c3BlbGxDaGVja0NsaWVudCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWlzc3BlbGxlZE9mZnNldCwgbWlzc3BlbGxl
ZExlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fd2ViVmlldy0+c3BlbGxDaGVja0Ns
aWVudCgpLT5zcGVsbENoZWNrKGRhdGEubWlzc3BlbGxlZFdvcmQsIG1pc3NwZWxsZWRPZmZzZXQs
IG1pc3NwZWxsZWRMZW5ndGgsICZkYXRhLmRpY3Rpb25hcnlTdWdnZXN0aW9ucyk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uID0gVmlzaWJsZVNl
bGVjdGlvbihyYW5nZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRVcGRh
dGVTZWxlY3Rpb24gJiYgc2VsZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCktPnNob3VsZENoYW5nZVNl
bGVjdGlvbihzZWxlY3Rpb24pKQorICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0
aW9uUmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICAgICAgICAgICAg
ICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGU7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJh
bmdlPiBtYXJrZXJSYW5nZSA9IHNlbGVjdGlvblJhbmdlLT5jbG9uZVJhbmdlKGV4Y2VwdGlvbkNv
ZGUpOworICAgICAgICAgICAgICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IG1hcmtlcnMgPSBz
ZWxlY3RlZEZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPm1hcmtlcnNJblJhbmdlKHNlbGVj
dGlvblJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcgfCBEb2N1bWVudE1hcmtl
cjo6R3JhbW1hcik7CisgICAgICAgICAgICAgICAgaWYgKCFleGNlcHRpb25Db2RlICYmIG1hcmtl
cnMuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgbWFya2VyUmFuZ2UtPnNldFN0
YXJ0KG1hcmtlclJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBtYXJrZXJzWzBdLT5zdGFydE9mZnNl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbWFya2VyUmFuZ2UtPnNldEVuZChtYXJrZXJSYW5n
ZS0+ZW5kQ29udGFpbmVyKCksIG1hcmtlcnNbMF0tPmVuZE9mZnNldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gc2VsZWN0aW9uLCB0aGVuIHNlbGVjdCB0aGUgbWlz
c3BlbGxpbmcuCisgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldCgpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKG1h
cmtlclJhbmdlLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRnJhbWUt
PnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBXb3JkR3JhbnVsYXJpdHkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmFuZ2UuY2xlYXIoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJh
bmdlKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNl
bGVjdGlvblJhbmdlLT50ZXh0KCkuc3RyaXBXaGl0ZVNwYWNlKCZJc1doaXRlU3BhY2VPclB1bmN0
dWF0aW9uKSA9PSBtYXJrZXJSYW5nZS0+dGV4dCgpLnN0cmlwV2hpdGVTcGFjZSgmSXNXaGl0ZVNw
YWNlT3JQdW5jdHVhdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEubWlzc3Bl
bGxlZFdvcmQgPSBtYXJrZXJSYW5nZS0+dGV4dCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG1hcmtlcnNbMF0tPmRlc2NyaXB0aW9uKCkubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uczsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXJrZXJzWzBdLT5kZXNjcmlwdGlvbigpLnNwbGl0KCdcbicsIHN1Z2dl
c3Rpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmRpY3Rpb25hcnlTdWdn
ZXN0aW9ucyA9IHN1Z2dlc3Rpb25zOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChtX3dlYlZpZXctPnNwZWxsQ2hlY2tDbGllbnQoKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBtaXNzcGVsbGVkT2Zmc2V0LCBtaXNzcGVsbGVkTGVuZ3RoOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fd2ViVmlldy0+c3BlbGxDaGVja0NsaWVudCgpLT5zcGVsbENo
ZWNrKGRhdGEubWlzc3BlbGxlZFdvcmQsIG1pc3NwZWxsZWRPZmZzZXQsIG1pc3NwZWxsZWRMZW5n
dGgsICZkYXRhLmRpY3Rpb25hcnlTdWdnZXN0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJh
bWVJbXBsLmNwcAppbmRleCA4OGVkM2I2Li5lOGE2MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTEyOTksMTEgKzEyOTksMTYgQEAgdm9pZCBX
ZWJGcmFtZUltcGw6OnJlcGxhY2VNaXNzcGVsbGVkUmFuZ2UoY29uc3QgV2ViU3RyaW5nJiB0ZXh0
KQogICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IG1hcmtlcnMgPSBmcmFtZSgpLT5kb2N1bWVu
dCgpLT5tYXJrZXJzKCktPm1hcmtlcnNJblJhbmdlKGNhcmV0UmFuZ2UuZ2V0KCksIERvY3VtZW50
TWFya2VyOjpTcGVsbGluZyB8IERvY3VtZW50TWFya2VyOjpHcmFtbWFyKTsKICAgICBpZiAobWFy
a2Vycy5zaXplKCkgPCAxIHx8IG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkgPj0gbWFya2Vyc1sw
XS0+ZW5kT2Zmc2V0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8UmFuZ2U+IG1hcmtl
clJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZSgp
LT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIG1h
cmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCksIG1hcmtlcnNbMF0tPmVuZE9mZnNldCgpIC0gbWFya2Vy
c1swXS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgaWYgKCFtYXJrZXJSYW5nZS5nZXQoKSB8fCAhZnJh
bWUoKS0+c2VsZWN0aW9uKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihtYXJrZXJSYW5nZS5nZXQo
KSkpCisgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlOworICAgIFJlZlB0cjxSYW5nZT4g
bWFya2VyUmFuZ2UgPSBjYXJldFJhbmdlLT5jbG9uZVJhbmdlKGV4Y2VwdGlvbkNvZGUpOworICAg
IGlmICghZXhjZXB0aW9uQ29kZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1hcmtlclJhbmdlLT5z
ZXRTdGFydChtYXJrZXJSYW5nZS0+c3RhcnRDb250YWluZXIoKSwgbWFya2Vyc1swXS0+c3RhcnRP
ZmZzZXQoKSk7CisgICAgbWFya2VyUmFuZ2UtPnNldEVuZChtYXJrZXJSYW5nZS0+ZW5kQ29udGFp
bmVyKCksIG1hcmtlcnNbMF0tPmVuZE9mZnNldCgpKTsKKyAgICBpZiAoIWZyYW1lKCktPnNlbGVj
dGlvbigpLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCkpKQogICAgICAg
ICByZXR1cm47CiAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihtYXJrZXJS
YW5nZS5nZXQoKSwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwotICAgIGZyYW1lKCktPmVkaXRvcigp
LT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgZmFsc2UsIHRydWUpOworICAgIGZyYW1l
KCktPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgZmFsc2UsIGZhbHNl
KTsKIH0KIAogYm9vbCBXZWJGcmFtZUltcGw6Omhhc1NlbGVjdGlvbigpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184588</attachid>
            <date>2013-01-24 14:56:21 -0800</date>
            <delta_ts>2013-01-25 14:00:24 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>webkit-spell-master.patch</filename>
            <type>text/plain</type>
            <size>53530</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlj
a2VkLXdvcmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjNlMDFlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTUgQEAKK1NwZWxsaW5nIHNob3VsZCB3b3JrIGZvciBkb3VibGUtY2xp
Y2tlZCBtaXNzcGVsbGluZ3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50
b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51
RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lIGhvbWUuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRv
dWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1j
bGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZTYzNGU4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNs
aWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBA
CitTcGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxlZCB3b3Jk
cyB3aXRoIHVuZGVyc2NvcmVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWVfIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAid2VsbGNvbWVfIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRN
ZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lXyBob21lLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNr
ZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uY2I5NWY5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13
aXRoLXVuZGVyc2NvcmVzLmh0bWwKQEAgLTAsMCArMSw4MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29u
dGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4K
KzwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICB0ZXN0UnVubmVy
LnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmYWxzZSk7CisgICAgZmlu
aXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gdmVyaWZ5KG5yZXRyeSkKK3sKKyAgICBpZiAoIW5y
ZXRyeSkgeworICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1sw
XSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0
aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAiIik7CisKKyAgICAvLyBEb3VibGUtY2xpY2sgdGhlIG1pc3NwZWxsZWQgd29yZC4KKyAg
ICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRp
b24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhl
aWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAi
d2VsbGNvbWVfIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hv
dyB0aGUgY29udGV4dCBtZW51LgorICAgIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB5ID0gZGVzdGluYXRp
b24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3Rp
bmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwg
eSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygp
OworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNw
ZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0
aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIs
ICJ3ZWxsY29tZV8iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxl
bWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisgICAg
CisgICAgZG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5h
YmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKHRydWUpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJkZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1l
bnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIndlbGxjb21lXyBob21lLiIpOwor
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkoMTApOyB9LCAwKTsKK30K
KworZGVzY3JpcHRpb24oIlNwZWxsaW5nIHNob3VsZCB3b3JrIGZvciBkb3VibGUtY2xpY2tlZCBt
aXNzcGVsbGVkIHdvcmRzIHdpdGggdW5kZXJzY29yZXMuIik7CitpZiAod2luZG93LmludGVybmFs
cykKKyAgICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQt
d29yZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzZTVhODEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbApAQCAtMCwwICsxLDgxIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29u
dGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGRvbmUo
KQoreworICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
ZmFsc2UpOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFi
bGVkKGZhbHNlKTsKKyAgICBmaW5pc2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiB2ZXJpZnkobnJl
dHJ5KQoreworICAgIGlmICghbnJldHJ5KSB7CisgICAgICAgIGRvbmUoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICghaW50ZXJuYWxzLm1hcmtlckNvdW50Rm9yTm9kZShkZXN0
aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciKSkgeworICAgICAgICB3aW5kb3cuc2V0
VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5KG5yZXRyeSAtIDEpOyB9LCAwKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFy
a2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDAp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmlu
ZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIERvdWJsZS1jbGljayB0aGUg
bWlzc3BlbGxlZCB3b3JkLgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9m
ZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0
aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsg
ZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBv
biAid2VsbGNvbWUiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB4ID0gZGVzdGluYXRp
b24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7
CisgICAgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlv
bi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNl
bmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQg
bWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFC
KSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJh
bmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIs
ICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIs
ICJ3ZWxjb21lIik7CisgICAgCisgICAgZG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5p
ZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZv
Y3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIndl
bGxjb21lIGhvbWUuIik7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlm
eSgxMCk7IH0sIDApOworfQorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9y
IGRvdWJsZS1jbGlja2VkIG1pc3NwZWxsaW5ncy4iKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgIHRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3NTEyZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0
bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAK
K1NwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIG11bHRpLXdvcmQg
bWlzc3BlbGxpbmcgZXhhY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMuaHRtbCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3Rl
ZC1tdWx0aXBsZS13b3Jkcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjlmMzU3MWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29y
ZHMuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8
ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+Cis8c2Ny
aXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsK
KyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUp
OworCisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3Rp
bmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9jdXMoKTsKKyAgICBkb2N1bWVudC5leGVjQ29t
bWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuIik7CisK
KyAgICAvLyBJbmplY3QgYSBtdWx0aS13b3JkIG1pc3NwZWxsaW5nLgorICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQoZGVzdGluYXRpb24u
Y2hpbGROb2Rlc1swXSwgMTMpOworICAgIHJhbmdlLnNldEVuZChkZXN0aW5hdGlvbi5jaGlsZE5v
ZGVzWzBdLCAyMyk7CisgICAgd2luZG93LmludGVybmFscy5hZGRTcGVsbGluZ01hcmtlcihyYW5n
ZSk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9y
Tm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ1cHBl
ciBjYXNlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSIsICIiKTsKKyAgICAKKyAgICAvLyBTZWxlY3QgdGhlIG11bHRpLXdvcmQg
bWlzc3BlbGxpbmcgd2l0aG91dCBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlIG9yIHB1bmN0dWF0aW9u
LgorICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB2YXIg
d29yZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICB3b3JkUmFuZ2Uuc2V0U3Rh
cnQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMTMpOworICAgIHdvcmRSYW5nZS5zZXRFbmQo
ZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMjMpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZSh3b3JkUmFuZ2UpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7CisKKyAgICAvLyBD
b250ZXh0IGNsaWNrIG9uICJ1cHBlciBjYXNlIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisg
ICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0
aW9uLm9mZnNldExlZnQgKyAxMDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0
SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250
ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNj
IGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJS
YW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rl
c1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGlu
Z01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAidXBwZXIgY2FzZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAidXBwZXIgY2Fz
ZSIpOworCisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZChmYWxzZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVu
YWJsZWQoZmFsc2UpOworICAgIGZpbmlzaEpTVGVzdCgpCit9CisKK2Rlc2NyaXB0aW9uKCJTcGVs
bGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBtdWx0aS13b3JkIG1pc3Nw
ZWxsaW5nIGV4YWN0bHkuIik7CitpZiAod2luZG93LmludGVybmFscykKKyAgICB0ZXN0KCk7CisK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4
YWN0bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI2NWJiNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE3IEBACitTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMg
dGhlIG1pc3NwZWxsZWQgd29yZCBleGFjdGx5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgor
UEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNT
IHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1MgY29udGV4dE1l
bnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgor
UEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiaG9tZSIKK1BBU1Mgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImhvbWUiCitQQVNTIGNvbnRleHRNZW51
RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAiPHNlcGFyYXRvcj4i
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxj
b21lIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC5odG1sIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5
LXNlbGVjdGVkLXdvcmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42
YWU0ODE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQuaHRtbApAQCAt
MCwwICsxLDk0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0
aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Z1
bmN0aW9uIGRvbmUoKQoreworICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoZmFsc2UpOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4
dENoZWNrZXJFbmFibGVkKGZhbHNlKTsKKyAgICBmaW5pc2hKU1Rlc3QoKQorfQorCitmdW5jdGlv
biB2ZXJpZnkobnJldHJ5KQoreworICAgIGlmICghbnJldHJ5KSB7CisgICAgICAgIGRvbmUoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaW50ZXJuYWxzLm1hcmtlckNvdW50
Rm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciKSkgeworICAgICAg
ICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5KG5yZXRyeSAtIDEpOyB9LCAw
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFNlbGVjdCB0aGUgbWlzc3BlbGxl
ZCB3b3JkIHdpdGhvdXQgc3Vycm91bmRpbmcgd2hpdGVzcGFjZSBvciBwdW5jdHVhdGlvbi4KKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgdmFyIHdvcmRS
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgd29yZFJhbmdlLnNldFN0YXJ0KGRl
c3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDApOworICAgIHdvcmRSYW5nZS5zZXRFbmQoZGVzdGlu
YXRpb24uY2hpbGROb2Rlc1swXSwgOCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHdvcmRSYW5nZSk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1h
cmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAw
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJp
bmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKworICAgIC8vIENvbnRleHQg
Y2xpY2sgb24gIndlbGxjb21lIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHgg
PSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNl
dExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRU
b3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAy
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxl
bWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhp
ZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9t
Q2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50
ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3Bl
bGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFu
Z2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50
cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisgICAgCisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdvcmRSYW5nZS5zZXRTdGFydChkZXN0aW5hdGlv
bi5jaGlsZE5vZGVzWzBdLCA5KTsKKyAgICB3b3JkUmFuZ2Uuc2V0RW5kKGRlc3RpbmF0aW9uLmNo
aWxkTm9kZXNbMF0sIDEzKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uod29y
ZFJhbmdlKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIiwgImhvbWUiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gImhvbWUi
IHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDgwOworICAgIHZh
ciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9m
ZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVy
LmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51
LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBu
dWxsKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkiLCAiaG9tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4
dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIjxzZXBhcmF0
b3I+Iik7CisKKyAgICBkb25lKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGpzVGVz
dElzQXN5bmMgPSB0cnVlOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENo
ZWNrZXJFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9jdXMoKTsKKyAg
ICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAid2VsbGNvbWUgaG9t
ZS4iKTsKKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5KDEwKTsgfSwg
MCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2Vy
IHNlbGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBleGFjdGx5LiIpOworaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgdGVzdCgpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVs
dGl3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMWI1YWVjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVk
IHdoZW4gdXNlciBzZWxlY3RzIG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmdsZSBt
aXNzcGVsbGluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxp
bmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkgaXMgIndlbGxjb21lIGhvbWUiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIGlzICJ3ZWxsY29tZSBob21lIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRN
ZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+IgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21lLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW11bHRpd29yZC1zZWxlY3Rpb24uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTRiYzBjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3OCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJs
ZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICB0
ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmYWxzZSk7
CisgICAgZmluaXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gdmVyaWZ5KG5yZXRyeSkKK3sKKyAg
ICBpZiAoIW5yZXRyeSkgeworICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hp
bGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9y
Tm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxs
Y29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxs
UmFuZ2VzKCk7CisgICAgdmFyIG11bHRpV29yZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICBtdWx0aVdvcmRSYW5nZS5zZXRTdGFydChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBd
LCAwKTsKKyAgICBtdWx0aVdvcmRSYW5nZS5zZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1sw
XSwgMTMpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShtdWx0aVdvcmRSYW5n
ZSk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIiwgIndlbGxjb21lIGhvbWUiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgdG8g
c2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkg
PSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0
VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29u
dGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisg
ICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwp
OworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5v
ZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNv
bWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIiwgIndlbGxjb21lIGhvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICI8
c2VwYXJhdG9yPiIpOworCisgICAgZG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmll
ZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3Vz
KCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIndlbGxj
b21lIGhvbWUuIik7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgx
MCk7IH0sIDApOworfQorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVk
IHdoZW4gdXNlciBzZWxlY3RzIG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmdsZSBt
aXNzcGVsbGluZy4iKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHRlc3QoKTsKKworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxk
LXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlw
bGUtd29yZHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjE3Nzk4ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK0Nocm9tZSBzaG91bGQgc2VsZWN0IG11bHRp
LXdvcmQgbWlzc3BlbGxpbmdzIG9uIGNvbnRleHQgY2xpY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAidXBw
ZXIgY2FzZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BB
U1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSXQgc2hvdWxkIGJlIHVw
cGVyIGNhc2UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRtbCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
c2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmIwMDc2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVs
dGlwbGUtd29yZHMuaHRtbApAQCAtMCwwICsxLDU2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWlu
ZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9k
aXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxl
ZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKHRydWUpOworCisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9jdXMoKTsKKyAgICBkb2N1bWVu
dC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiSXQgc2hvdWxkIGJlIHVwcGVyIGNh
c2UuIik7CisKKyAgICAvLyBJbmplY3QgYSBtdWx0aS13b3JkIG1pc3NwZWxsaW5nLgorICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQoZGVz
dGluYXRpb24uY2hpbGROb2Rlc1swXSwgMTMpOworICAgIHJhbmdlLnNldEVuZChkZXN0aW5hdGlv
bi5jaGlsZE5vZGVzWzBdLCAyMyk7CisgICAgd2luZG93LmludGVybmFscy5hZGRTcGVsbGluZ01h
cmtlcihyYW5nZSk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtl
clJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmco
KSIsICJ1cHBlciBjYXNlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24g
InVwcGVyIGNhc2UiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3Rp
bmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCAr
IDEwMDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMg
PSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhl
IGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNv
ZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxz
Lm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmci
LCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSIsICJ1cHBlciBjYXNlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7CisKKyAgICB0ZXN0
UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBp
bnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmYWxzZSk7Cisg
ICAgZmluaXNoSlNUZXN0KCkKK30KKworZGVzY3JpcHRpb24oIkNocm9tZSBzaG91bGQgc2VsZWN0
IG11bHRpLXdvcmQgbWlzc3BlbGxpbmdzIG9uIGNvbnRleHQgY2xpY2suIik7CitpZiAod2luZG93
LmludGVybmFscykKKyAgICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTJiNDFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91
bGQtc2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitDaHJv
bWUgc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIG9uIGNvbnRleHQgY2xpY2suCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJp
bmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IGlzICIiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUi
CitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BB
U1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlz
ICJ3ZWxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgor
UEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyBjb250ZXh0
TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBhcmF0
b3I+IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3
ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5mNmI2NzgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmds
ZS13b3JkLmh0bWwKQEAgLTAsMCArMSw4NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4K
KyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2Pgor
Cis8c2NyaXB0PgorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmYWxzZSk7CisgICAgZmluaXNoSlNUZXN0
KCkKK30KKworZnVuY3Rpb24gdmVyaWZ5KG5yZXRyeSkKK3sKKyAgICBpZiAoIW5yZXRyeSkgewor
ICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWludGVy
bmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxs
aW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeShu
cmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzcGVsbGlu
Z01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5j
aGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7
CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hvdyB0aGUgY29udGV4
dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQg
KyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRp
b24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsK
KyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7Cisg
ICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIu
a2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxp
bmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24u
Y2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndl
bGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRz
W2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworICAgIAorICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisg
ICAgLy8gQ29udGV4dCBjbGljayBvbiAiaG9tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51Lgor
ICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5h
dGlvbi5vZmZzZXRMZWZ0ICsgODA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0
SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250
ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNj
IGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50
cy5sZW5ndGggLSAxXSIsICI8c2VwYXJhdG9yPiIpOworCisgICAgZG9uZSgpOworfQorCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVu
bmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHZhciBk
ZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAg
IGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRl
eHQiLCBmYWxzZSwgIndlbGxjb21lIGhvbWUuIik7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOworfQorCitkZXNjcmlwdGlvbigiQ2hyb21lIHNl
bGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLiIpOworaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgdGVzdCgpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXN1YndvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4xOTdmYzFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVk
IHdoZW4gdXNlciBzZWxlY3RzIGEgcGFydCBvZiBtaXNzcGVsbGluZy4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlz
ICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIK
K1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImxsY28iCitQQVNTIHNw
ZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJsbGNvIgorUEFTUyBjb250ZXh0TWVudUVsZW1l
bnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+IgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBo
b21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlv
bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NzFhOGQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRF
ZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBkb25lKCkKK3sK
KyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNl
KTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChm
YWxzZSk7CisgICAgZmluaXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gdmVyaWZ5KG5yZXRyeSkK
K3sKKyAgICBpZiAoIW5yZXRyeSkgeworICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRp
b24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJh
bmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIs
ICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVt
b3ZlQWxsUmFuZ2VzKCk7CisgICAgdmFyIHN1YldvcmRSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgc3ViV29yZFJhbmdlLnNldFN0YXJ0KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNb
MF0sIDIpOworICAgIHN1YldvcmRSYW5nZS5zZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1sw
XSwgNik7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHN1YldvcmRSYW5nZSk7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSIsICJsbGNvIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIHRvIHNob3cgdGhlIGNvbnRl
eHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24u
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0
aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7
CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOwor
ICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVy
LmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxs
aW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9u
LmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJs
bGNvIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2Nv
bnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAiPHNlcGFyYXRvcj4iKTsKKworICAgIGRv
bmUoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7
CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1
ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0
cnVlKTsKKyAgICB2YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVz
dGluYXRpb24iKTsKKyAgICBkZXN0aW5hdGlvbi5mb2N1cygpOworICAgIGRvY3VtZW50LmV4ZWND
b21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ3ZWxsY29tZSBob21lLiIpOworICAgIHdpbmRv
dy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkoMTApOyB9LCAwKTsKK30KKworZGVzY3Jp
cHRpb24oIlNwZWxsaW5nIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHVzZXIgc2VsZWN0cyBhIHBh
cnQgb2YgbWlzc3BlbGxpbmcuIik7CitpZiAod2luZG93LmludGVybmFscykKKyAgICB0ZXN0KCk7
CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlv
bi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjM2OTg5MDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9u
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitQdW5jdHVhdGlvbiBtYXJrcyBzaG91bGQg
YmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2Uu
dG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3
ZWxsY29tZSEiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNv
bWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSEi
CitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAx
XSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQord2VsbGNvbWUhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZmQwYWE0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVh
dGlvbi1zZWxlY3Rpb24uaHRtbApAQCAtMCwwICsxLDc2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250
YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2Pgor
PC9kaXY+CisKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIHRlc3RSdW5uZXIu
c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOworICAgIGludGVybmFs
cy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKGZhbHNlKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQoreworICAgIGlmICghbnJl
dHJ5KSB7CisgICAgICAgIGRvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghaW50ZXJuYWxzLm1hcmtlckNvdW50Rm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBd
LCAic3BlbGxpbmciKSkgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsg
dmVyaWZ5KG5yZXRyeSAtIDEpOyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3Rp
bmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmco
KSIsICIiKTsKKworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMCk7CisgICAgcmFuZ2Uu
c2V0RW5kKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDkpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSEiKTsKKworICAgIC8vIENv
bnRleHQgY2xpY2sgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGlu
YXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsg
NDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVz
dGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0g
ZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBj
b250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2Rl
KDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5t
YXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwg
MCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3Ry
aW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lISIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0
aCAtIDFdIiwgIndlbGNvbWUiKTsKKworICAgIGRvbmUoKTsKK30KKworZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICB2YXIgZGVzdGluYXRpb24g
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzdGluYXRpb24iKTsKKyAgICBkZXN0aW5hdGlv
bi5mb2N1cygpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2Us
ICJ3ZWxsY29tZSEiKTsKKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5
KDEwKTsgfSwgMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJQdW5jdHVhdGlvbiBtYXJrcyBzaG91bGQg
YmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uIik7
CitpZiAod2luZG93LmludGVybmFscykKKyAgICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxl
Y3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2U5YTM1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE1IEBACitVbmRlcnNjb3JlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVs
bGluZyBzaG91bGQgaWdub3JlIHRoZW0uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNT
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJfd2VsbGNvbWVfIgorUEFTUyBzcGVsbGluZ01hcmtl
clJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSBpcyAiX3dlbGxjb21lXyIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tj
b250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitIaSwgX3dlbGxjb21lXyBob21l
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJz
Y29yZS1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40
ZmE3ZDI3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi5odG1s
CkBAIC0wLDAgKzEsNzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9
ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4K
KworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZp
ZWRUZXh0Q2hlY2tlckVuYWJsZWQoZmFsc2UpOworICAgIGZpbmlzaEpTVGVzdCgpCit9CisKK2Z1
bmN0aW9uIHZlcmlmeShucmV0cnkpCit7CisgICAgaWYgKCFucmV0cnkpIHsKKyAgICAgICAgZG9u
ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFpbnRlcm5hbHMubWFya2Vy
Q291bnRGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIpKSB7Cisg
ICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkobnJldHJ5IC0gMSk7
IH0sIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3BlbGxpbmdNYXJrZXJSYW5n
ZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1sw
XSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01h
cmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8g
U2VsZWN0IHRoZSB0ZXh0ICJfd2VsbGNvbWVfIi4KKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
cmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgdmFyIHJhbmdlV2l0aFVuZGVyc2NvcmVzID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZVdpdGhVbmRlcnNjb3Jlcy5zZXRTdGFydChkZXN0
aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCA0KTsKKyAgICByYW5nZVdpdGhVbmRlcnNjb3Jlcy5zZXRF
bmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMTQpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5hZGRSYW5nZShyYW5nZVdpdGhVbmRlcnNjb3Jlcyk7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJfd2VsbGNvbWVfIik7
CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJfd2VsbGNvbWVfIiB0byBzaG93IHRoZSBjb250
ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA4MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9u
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5h
dGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkp
OworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsK
KyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRl
ci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVs
bGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlv
bi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAi
X3dlbGxjb21lXyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVt
ZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKKworICAg
IGRvbmUoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAganNUZXN0SXNBc3luYyA9IHRy
dWU7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQo
dHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCh0cnVlKTsKKyAgICB2YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
ZGVzdGluYXRpb24iKTsKKyAgICBkZXN0aW5hdGlvbi5mb2N1cygpOworICAgIGRvY3VtZW50LmV4
ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJIaSwgX3dlbGxjb21lXyBob21lLiIpOwor
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkoMTApOyB9LCAwKTsKK30K
KworZGVzY3JpcHRpb24oIlVuZGVyc2NvcmVzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3Bh
Y2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4iKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgIHRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdp
dGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjQ0MzgxOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFj
ZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1NwZWxsaW5nIHNob3Vs
ZCBpZ25vcmUgd2hpdGVzcGFjZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiB3ZWxsY29tZSAiCitQQVNTIHNwZWxs
aW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIgd2VsbGNvbWUgIgorUEFTUyBjb250ZXh0TWVudUVs
ZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK2hlbGxvLCB3ZWxs
Y29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdp
dGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42NmY1YmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0
aW9uLmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAg
PGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8
c2NyaXB0PgorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmYWxzZSk7CisgICAgZmluaXNoSlNUZXN0KCkK
K30KKworZnVuY3Rpb24gdmVyaWZ5KG5yZXRyeSkKK3sKKyAgICBpZiAoIW5yZXRyeSkgeworICAg
ICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWludGVybmFs
cy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5n
IikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeShucmV0
cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzcGVsbGluZ01h
cmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGls
ZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNw
ZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworCisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHZhciByYW5nZVdpdGhXaGl0
ZXNwYWNlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZVdpdGhXaGl0ZXNwYWNl
LnNldFN0YXJ0KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDYpOworICAgIHJhbmdlV2l0aFdo
aXRlc3BhY2Uuc2V0RW5kKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDE2KTsKKyAgICB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2VXaXRoV2hpdGVzcGFjZSk7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIg
d2VsbGNvbWUgIik7CisKKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDgwOworICAgIHZhciB5ID0gZGVzdGlu
YXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRl
c3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
eCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGlj
aygpOworICAgIC8vIGVzYyBrZXkgdG8ga2lsbCB0aGUgY29udGV4dCBtZW51CisgICAgZXZlbnRT
ZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAg
c3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGlu
YXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IiwgIiB3ZWxsY29tZSAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51
RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisK
KyAgICBkb25lKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGpzVGVzdElzQXN5bmMg
PSB0cnVlOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFi
bGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQodHJ1ZSk7CisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9jdXMoKTsKKyAgICBkb2N1bWVu
dC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiaGVsbG8sIHdlbGxjb21lIGhvbWUu
Iik7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgxMCk7IH0sIDAp
OworfQorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB3aGl0ZXNwYWNlLiIp
OworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgdGVzdCgpOworCis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IGNjZjE0MDYuLjYyNjA4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTg5OCw2ICs4OTgsMTEgQEAgdm9pZCBJbnRlcm5hbHM6OmFkZFRleHRNYXRjaE1hcmtl
cihjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgaXNBY3RpdmUpCiAgICAgcmFuZ2UtPm93bmVyRG9j
dW1lbnQoKS0+bWFya2VycygpLT5hZGRUZXh0TWF0Y2hNYXJrZXIocmFuZ2UsIGlzQWN0aXZlKTsK
IH0KIAordm9pZCBJbnRlcm5hbHM6OmFkZFNwZWxsaW5nTWFya2VyKFJhbmdlKiByYW5nZSkKK3sK
KyAgICByYW5nZS0+b3duZXJEb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihyYW5nZSwg
RG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNldFNjcm9s
bFZpZXdQb3NpdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA2MTcxOGMwLi4yMTFjZDA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTEzOSw2ICsxMzksNyBAQCBwdWJsaWM6CiAg
ICAgUGFzc1JlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2VGb3JOb2RlKE5vZGUqLCBjb25zdCBTdHJp
bmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAgICAgU3Ry
aW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBtYXJrZXJU
eXBlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgYWRkVGV4dE1h
dGNoTWFya2VyKGNvbnN0IFJhbmdlKiwgYm9vbCBpc0FjdGl2ZSk7CisgICAgdm9pZCBhZGRTcGVs
bGluZ01hcmtlcihSYW5nZSopOwogCiAgICAgdm9pZCBzZXRTY3JvbGxWaWV3UG9zaXRpb24oRG9j
dW1lbnQqLCBsb25nIHgsIGxvbmcgeSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0UGFn
aW5hdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbW9kZSwgaW50IGdhcCwg
RXhjZXB0aW9uQ29kZSYgZWMpIHsgc2V0UGFnaW5hdGlvbihkb2N1bWVudCwgbW9kZSwgZ2FwLCAw
LCBlYyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAxMzMwMzJhLi4y
NjVlMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC05OSw2ICs5OSw3
IEBACiAgICAgUmFuZ2UgbWFya2VyUmFuZ2VGb3JOb2RlKGluIE5vZGUgbm9kZSwgaW4gRE9NU3Ry
aW5nIG1hcmtlclR5cGUsIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpIHJhaXNlcyhET01FeGNlcHRp
b24pOwogICAgIERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoaW4gTm9kZSBub2Rl
LCBpbiBET01TdHJpbmcgbWFya2VyVHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAgICAgdm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoaW4gUmFuZ2UgcmFu
Z2UsIGluIGJvb2xlYW4gaXNBY3RpdmUpOworICAgIHZvaWQgYWRkU3BlbGxpbmdNYXJrZXIoaW4g
UmFuZ2UgcmFuZ2UpOwogCiAgICAgdm9pZCBzZXRTY3JvbGxWaWV3UG9zaXRpb24oaW4gRG9jdW1l
bnQgZG9jdW1lbnQsIGluIGxvbmcgeCwgaW4gbG9uZyB5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGll
bnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50
SW1wbC5jcHAKaW5kZXggMzM5NTZiYy4uMjNjYjhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCkBAIC03OCw2ICs3OCwx
MiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKy8v
IFJldHVybnMgdHJ1ZSBmb3Igd2hpdGVzcGFjZSBhbmQgcHVuY3R1YXRpb24gY2hhcmFjdGVycy4g
UmV0dXJucyBmYWxzZSBmb3IgZXZlcnkgb3RoZXIgdHlwZSBvZiBjaGFyYWN0ZXIuCitzdGF0aWMg
Ym9vbCBJc1doaXRlU3BhY2VPclB1bmN0dWF0aW9uKFVDaGFyIGMpCit7CisgICAgcmV0dXJuIFdU
Rjo6VW5pY29kZTo6aXNTZXBhcmF0b3JTcGFjZShjKSB8fCBXVEY6OlVuaWNvZGU6OmlzUHVuY3Qo
Yyk7Cit9CisKIC8vIEZpZ3VyZSBvdXQgdGhlIFVSTCBvZiBhIHBhZ2Ugb3Igc3ViZnJhbWUuIFJl
dHVybnMgfHBhZ2VfdHlwZXwgYXMgdGhlIHR5cGUsCiAvLyB3aGljaCBpbmRpY2F0ZXMgcGFnZSBv
ciBzdWJmcmFtZSwgb3IgQ29udGV4dE5vZGVUeXBlOjpOT05FIGlmIHRoZSBVUkwgY291bGQgbm90
CiAvLyBiZSBkZXRlcm1pbmVkIGZvciBzb21lIHJlYXNvbi4KQEAgLTEwMiw4ICsxMDgsOCBAQCBz
dGF0aWMgYm9vbCBpc0FTaW5nbGVXb3JkKGNvbnN0IFN0cmluZyYgdGV4dCkKIH0KIAogLy8gSGVs
cGVyIGZ1bmN0aW9uIHRvIGdldCBtaXNzcGVsbGVkIHdvcmQgb24gd2hpY2ggY29udGV4dCBtZW51
Ci0vLyBpcyB0byBiZSBldm9sa2VkLiBUaGlzIGZ1bmN0aW9uIGFsc28gc2V0cyB0aGUgd29yZCBv
biB3aGljaCBjb250ZXh0IG1lbnUKLS8vIGhhcyBiZWVuIGV2b2tlZCB0byBiZSB0aGUgc2VsZWN0
ZWQgd29yZCwgYXMgcmVxdWlyZWQuIFRoaXMgZnVuY3Rpb24gY2hhbmdlcworLy8gaXMgdG8gYmUg
aW52b2tlZC4gVGhpcyBmdW5jdGlvbiBhbHNvIHNldHMgdGhlIHdvcmQgb24gd2hpY2ggY29udGV4
dCBtZW51CisvLyBoYXMgYmVlbiBpbnZva2VkIHRvIGJlIHRoZSBzZWxlY3RlZCB3b3JkLCBhcyBy
ZXF1aXJlZC4gVGhpcyBmdW5jdGlvbiBjaGFuZ2VzCiAvLyB0aGUgc2VsZWN0aW9uIG9ubHkgd2hl
biB0aGVyZSB3ZXJlIG5vIHNlbGVjdGVkIGNoYXJhY3RlcnMgb24gT1MgWC4KIHN0YXRpYyBTdHJp
bmcgc2VsZWN0TWlzc3BlbGxlZFdvcmQoY29uc3QgQ29udGV4dE1lbnUqIGRlZmF1bHRNZW51LCBG
cmFtZSogc2VsZWN0ZWRGcmFtZSkKIHsKQEAgLTI3NCwzNiArMjgwLDM1IEBAIFBsYXRmb3JtTWVu
dURlc2NyaXB0aW9uIENvbnRleHRNZW51Q2xpZW50SW1wbDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZh
dWx0SXRlbXMoCiAjZW5kaWYKICAgICAgICAgLy8gV2hlbiBDaHJvbWUgZW5hYmxlcyBhc3luY2hy
b25vdXMgc3BlbGxjaGVja2luZywgaXRzIHNwZWxsY2hlY2tlciBhZGRzIHNwZWxsaW5nIG1hcmtl
cnMgdG8gbWlzc3BlbGxlZAogICAgICAgICAvLyB3b3JkcyBhbmQgYXR0YWNoZXMgc3VnZ2VzdGlv
bnMgdG8gdGhlc2UgbWFya2VycyBpbiB0aGUgYmFja2dyb3VuZC4gVGhlcmVmb3JlLCB3aGVuIGEg
dXNlciByaWdodC1jbGlja3MKLSAgICAgICAgLy8gYSBtb3VzZSBvbiBhIHdvcmQsIENocm9tZSBq
dXN0IG5lZWRzIHRvIGZpbmQgYSBzcGVsbGluZyBtYXJrZXIgb24gdGhlIHdvcmQgaW5zdHJlYWQg
b2Ygc3BlbGxjaGVja2luZyBpdC4KKyAgICAgICAgLy8gYSBtb3VzZSBvbiBhIHdvcmQsIENocm9t
ZSBqdXN0IG5lZWRzIHRvIGZpbmQgYSBzcGVsbGluZyBtYXJrZXIgb24gdGhlIHdvcmQgaW5zdGVh
ZCBvZiBzcGVsbGNoZWNraW5nIGl0LgogICAgICAgICBpZiAoc2VsZWN0ZWRGcmFtZS0+c2V0dGlu
Z3MoKSAmJiBzZWxlY3RlZEZyYW1lLT5zZXR0aW5ncygpLT5hc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9
IHNlbGVjdGVkRnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKTsKLSAgICAgICAgICAgIGJv
b2wgc2hvdWxkVXBkYXRlU2VsZWN0aW9uID0gZmFsc2U7CiAgICAgICAgICAgICBpZiAoc2VsZWN0
aW9uLmlzQ2FyZXRPclJhbmdlKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uLmlz
Q2FyZXQoKSkgewotICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFu
dWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRVcGRh
dGVTZWxlY3Rpb24gPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAg
ICAgICAgICAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyKj4gbWFya2VycyA9IHNlbGVjdGVkRnJh
bWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2Vyc0luUmFuZ2UocmFuZ2UuZ2V0KCksIERv
Y3VtZW50TWFya2VyOjpTcGVsbGluZyB8IERvY3VtZW50TWFya2VyOjpHcmFtbWFyKTsKLSAgICAg
ICAgICAgICAgICBpZiAobWFya2Vycy5zaXplKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAobWFya2Vyc1swXS0+c3RhcnRPZmZzZXQoKSAhPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpIHx8IG1hcmtlcnNbMF0tPmVuZE9mZnNldCgpICE9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihyYW5nZS0+ZW5kT2Zmc2V0KCkpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgbWFya2Vycy5jbGVhcigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBpZiAobWFya2Vycy5zaXplKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICByYW5nZS0+
c2V0U3RhcnQocmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0
KCkpOwotICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0RW5kKHJhbmdlLT5lbmRDb250YWlu
ZXIoKSwgbWFya2Vyc1swXS0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBkYXRh
Lm1pc3NwZWxsZWRXb3JkID0gcmFuZ2UtPnRleHQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KG1hcmtlcnNbMF0tPmRlc2NyaXB0aW9uKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25zOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbWFya2Vyc1swXS0+ZGVzY3JpcHRpb24oKS5zcGxpdCgnXG4nLCBzdWdnZXN0aW9ucyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmRpY3Rpb25hcnlTdWdnZXN0aW9ucyA9IHN1Z2dl
c3Rpb25zOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fd2ViVmlldy0+c3BlbGxD
aGVja0NsaWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWlzc3BlbGxlZE9m
ZnNldCwgbWlzc3BlbGxlZExlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fd2ViVmll
dy0+c3BlbGxDaGVja0NsaWVudCgpLT5zcGVsbENoZWNrKGRhdGEubWlzc3BlbGxlZFdvcmQsIG1p
c3NwZWxsZWRPZmZzZXQsIG1pc3NwZWxsZWRMZW5ndGgsICZkYXRhLmRpY3Rpb25hcnlTdWdnZXN0
aW9ucyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0
aW9uID0gVmlzaWJsZVNlbGVjdGlvbihyYW5nZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChzaG91bGRVcGRhdGVTZWxlY3Rpb24gJiYgc2VsZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCkt
PnNob3VsZENoYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pKQorICAgICAgICAgICAgICAgIFJlZlB0
cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsK
KyAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGU7CisgICAgICAgICAg
ICAgICAgUmVmUHRyPFJhbmdlPiBtYXJrZXJSYW5nZSA9IHNlbGVjdGlvblJhbmdlLT5jbG9uZVJh
bmdlKGV4Y2VwdGlvbkNvZGUpOworICAgICAgICAgICAgICAgIFZlY3RvcjxEb2N1bWVudE1hcmtl
cio+IG1hcmtlcnMgPSBzZWxlY3RlZEZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPm1hcmtl
cnNJblJhbmdlKHNlbGVjdGlvblJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcg
fCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CisgICAgICAgICAgICAgICAgaWYgKCFleGNlcHRp
b25Db2RlICYmIG1hcmtlcnMuc2l6ZSgpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgbWFy
a2VyUmFuZ2UtPnNldFN0YXJ0KG1hcmtlclJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBtYXJrZXJz
WzBdLT5zdGFydE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbWFya2VyUmFuZ2UtPnNl
dEVuZChtYXJrZXJSYW5nZS0+ZW5kQ29udGFpbmVyKCksIG1hcmtlcnNbMF0tPmVuZE9mZnNldCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gc2VsZWN0aW9uLCB0aGVu
IHNlbGVjdCB0aGUgbWlzc3BlbGxpbmcuCisgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rp
b24uaXNDYXJldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24gPSBWaXNp
YmxlU2VsZWN0aW9uKG1hcmtlclJhbmdlLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGVjdGVkRnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBXb3Jk
R3JhbnVsYXJpdHkpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmFuZ2UuY2xl
YXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9u
LnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHNlbGVjdGlvblJhbmdlLT50ZXh0KCkuc3RyaXBXaGl0ZVNwYWNlKCZJc1do
aXRlU3BhY2VPclB1bmN0dWF0aW9uKSA9PSBtYXJrZXJSYW5nZS0+dGV4dCgpLnN0cmlwV2hpdGVT
cGFjZSgmSXNXaGl0ZVNwYWNlT3JQdW5jdHVhdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGEubWlzc3BlbGxlZFdvcmQgPSBtYXJrZXJSYW5nZS0+dGV4dCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1hcmtlcnNbMF0tPmRlc2NyaXB0aW9uKCkubGVuZ3RoKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uczsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzWzBdLT5kZXNjcmlwdGlvbigpLnNw
bGl0KCdcbicsIHN1Z2dlc3Rpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
LmRpY3Rpb25hcnlTdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zOworICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChtX3dlYlZpZXctPnNwZWxsQ2hlY2tDbGllbnQoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBtaXNzcGVsbGVkT2Zmc2V0LCBtaXNzcGVsbGVkTGVu
Z3RoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fd2ViVmlldy0+c3BlbGxDaGVja0Ns
aWVudCgpLT5zcGVsbENoZWNrKGRhdGEubWlzc3BlbGxlZFdvcmQsIG1pc3NwZWxsZWRPZmZzZXQs
IG1pc3NwZWxsZWRMZW5ndGgsICZkYXRhLmRpY3Rpb25hcnlTdWdnZXN0aW9ucyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCA2MGMyZTBmLi41NmY3NzRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTEyOTksMTEgKzEy
OTksMTYgQEAgdm9pZCBXZWJGcmFtZUltcGw6OnJlcGxhY2VNaXNzcGVsbGVkUmFuZ2UoY29uc3Qg
V2ViU3RyaW5nJiB0ZXh0KQogICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IG1hcmtlcnMgPSBm
cmFtZSgpLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPm1hcmtlcnNJblJhbmdlKGNhcmV0UmFuZ2Uu
Z2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyB8IERvY3VtZW50TWFya2VyOjpHcmFtbWFy
KTsKICAgICBpZiAobWFya2Vycy5zaXplKCkgPCAxIHx8IG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0
KCkgPj0gbWFya2Vyc1swXS0+ZW5kT2Zmc2V0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQ
dHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aChmcmFtZSgpLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1l
bnRFbGVtZW50KCksIG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCksIG1hcmtlcnNbMF0tPmVuZE9m
ZnNldCgpIC0gbWFya2Vyc1swXS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgaWYgKCFtYXJrZXJSYW5n
ZS5nZXQoKSB8fCAhZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbiht
YXJrZXJSYW5nZS5nZXQoKSkpCisgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlOworICAg
IFJlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2UgPSBjYXJldFJhbmdlLT5jbG9uZVJhbmdlKGV4Y2Vw
dGlvbkNvZGUpOworICAgIGlmICghZXhjZXB0aW9uQ29kZSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1hcmtlclJhbmdlLT5zZXRTdGFydChtYXJrZXJSYW5nZS0+c3RhcnRDb250YWluZXIoKSwgbWFy
a2Vyc1swXS0+c3RhcnRPZmZzZXQoKSk7CisgICAgbWFya2VyUmFuZ2UtPnNldEVuZChtYXJrZXJS
YW5nZS0+ZW5kQ29udGFpbmVyKCksIG1hcmtlcnNbMF0tPmVuZE9mZnNldCgpKTsKKyAgICBpZiAo
IWZyYW1lKCktPnNlbGVjdGlvbigpLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obWFya2VyUmFuZ2Uu
Z2V0KCkpKQogICAgICAgICByZXR1cm47CiAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldFNl
bGVjdGlvbihtYXJrZXJSYW5nZS5nZXQoKSwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwotICAgIGZy
YW1lKCktPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgZmFsc2UsIHRy
dWUpOworICAgIGZyYW1lKCktPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4
dCwgZmFsc2UsIGZhbHNlKTsKIH0KIAogYm9vbCBXZWJGcmFtZUltcGw6Omhhc1NlbGVjdGlvbigp
IGNvbnN0Cg==
</data>
<flag name="review"
          id="203361"
          type_id="1"
          status="-"
          setter="tony"
    />
    <flag name="commit-queue"
          id="203362"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184808</attachid>
            <date>2013-01-25 14:00:24 -0800</date>
            <delta_ts>2013-01-25 15:49:27 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>webkit-spell.patch</filename>
            <type>text/plain</type>
            <size>68652</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNmQwNjc4Li4wZjg3N2IzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTMtMDEt
MjUgIFJvdXNsYW4gU29sb21ha2hpbiAgPHJvdXNsYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFRlc3RzIGZvciBDaHJvbWl1bSBzcGVsbCBjaGVja2VyIGJlaGF2aW9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4MTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyB0byBlbnN1cmUgdGhhdCBD
aHJvbWl1bSBzcGVsbCBjaGVjayBiZWhhdmVzIGFzIGZvbGxvd3M6CisgICAgICAgIC0gQ2hyb21p
dW0gc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIG9uIGNvbnRleHQgY2xpY2suCisgICAgICAg
IC0gU3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIHRoZSBtaXNzcGVs
bGVkIHdvcmQgZXhhY3RseS4KKyAgICAgICAgLSBJZiB0aGUgd29yZCBpcyBub3QgbWlzc3BlbGxl
ZCwgdGhlcmUgc2hvdWxkIGJlIG5vIHNwZWxsaW5nIG9wdGlvbnMgaW4gdGhlIGNvbnRleHQgbWVu
dS4KKyAgICAgICAgLSBDaHJvbWUgc2hvdWxkIHNlbGVjdCBtdWx0aS13b3JkIG1pc3NwZWxsaW5n
cyBvbiBjb250ZXh0IGNsaWNrLgorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4g
dGhlIHVzZXIgc2VsZWN0cyBhIG11bHRpLXdvcmQgbWlzc3BlbGxpbmcgZXhhY3RseS4KKyAgICAg
ICAgLSBTcGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxpbmdz
LgorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCBpZ25vcmUgd2hpdGVzcGFjZS4KKyAgICAgICAg
LSBVbmRlcnNjb3JlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBz
aG91bGQgaWdub3JlIHRoZW0uCisgICAgICAgIC0gUHVuY3R1YXRpb24gbWFya3Mgc2hvdWxkIGJl
IHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB0aGVtLgorICAg
ICAgICAtIFNwZWxsaW5nIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHVzZXIgc2VsZWN0cyBhIHBh
cnQgb2YgbWlzc3BlbGxpbmcuCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVk
IHdoZW4gdXNlciBzZWxlY3RzIG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmdsZSBt
aXNzcGVsbGluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91Ymxl
LWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUt
Y2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13
b3JkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0
bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3Jk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3
b3JkLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRtbDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1z
aG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0
LXNpbmdsZS13b3JkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rp
b24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRl
cnNjb3JlLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisK
IDIwMTMtMDEtMjUgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkaW5nIGEgdGV4dCB0cmFjayBzaG91bGQgbm90IG1ha2UgY29udHJvbHMgdmlzaWJs
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNs
aWNrZWQtd29yZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZmY1NGNkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwyMCBAQAorU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1j
bGlja2VkIG1pc3NwZWxsaW5ncy4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9t
ZS4nLCBkb3VibGUtY2xpY2sgb24gJ3dlbGxjb21lJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhl
IHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dz
IHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFT
UyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHNwZWxsaW5nTWFya2Vy
UmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250
ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSBpcyAid2VsbGNvbWUgIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3Ry
aW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmco
KSBpcyAid2VsbGNvbWUgIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxl
bWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJs
ZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlj
a2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNGU1YjU2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNr
ZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACitT
cGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxlZCB3b3JkcyB3
aXRoIHVuZGVyc2NvcmVzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZV8gaG9tZS4n
LCBkb3VibGUtY2xpY2sgb24gJ3dlbGxjb21lXycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBz
ZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93cyBz
cGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mg
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lXyIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkgaXMgIndlbGxjb21lXyIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250
ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSBpcyAid2VsbGNvbWVfICIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0
cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkgaXMgIndlbGxjb21lXyAiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVF
bGVtZW50cy5sZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWVfIGhvbWUuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRv
dWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5odG1sIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13
b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi45MjMwNjMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgt
dW5kZXJzY29yZXMuaHRtbApAQCAtMCwwICsxLDEwOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFp
bmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwv
ZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQoreworICAgIGlmICgh
bnJldHJ5KSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCFpbnRlcm5hbHMubWFya2VyQ291bnRGb3JOb2RlKGRlc3RpbmF0aW9uLmNo
aWxkTm9kZXNbMF0sICJzcGVsbGluZyIpKSB7CisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyB2ZXJpZnkobnJldHJ5IC0gMSk7IH0sIDApOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZv
ck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2Vs
bGNvbWUiKTsKKworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgIiIpOworCisgICAgLy8gRG91YmxlLWNsaWNrIHRoZSBtaXNzcGVsbGVkIHdvcmQgd2l0
aG91dCB0aGUgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpOworICAgIHZhciB4ID0gZGVzdGluYXRpb24u
b2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7Cisg
ICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRp
b24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZV8iKTsKKworICAgIC8v
IENvbnRleHQgY2xpY2sgb24gIndlbGxjb21lXyIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51Lgor
ICAgIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9u
Lm9mZnNldExlZnQgKyA0MDsKKyAgICB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNl
dFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAv
IDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVF
bGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8g
aGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZy
b21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBp
bnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJz
cGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZV8iKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVt
ZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIERvdWJsZS1jbGljayB0
aGUgbWlzc3BlbGxlZCB3b3JkIHdpdGggdGhlIHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgdGVz
dFJ1bm5lci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKHRydWUpOworICAgIHZh
ciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5v
ZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0
IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworCisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxs
Y29tZV8gIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZV8gIiB0byBzaG93
IHRoZSBjb250ZXh0IG1lbnUuCisgICAgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHkgPSBkZXN0aW5hdGlv
bi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGlu
YXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5
KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7
CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5k
ZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3Bl
bGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRp
b24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwg
IndlbGxjb21lXyAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxl
bWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisgICAg
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGpzVGVz
dElzQXN5bmMgPSB0cnVlOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENo
ZWNrZXJFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQodHJ1ZSk7CisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9jdXMoKTsKKyAgICBkb2N1
bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAid2VsbGNvbWVfIGhvbWUuIik7
CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOwor
fQorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2Vk
IG1pc3NwZWxsZWQgd29yZHMgd2l0aCB1bmRlcnNjb3Jlcy4gIiArCisgICAgICAgICAgICAiVG8g
dGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWVfIGhvbWUuJywgZG91YmxlLWNsaWNrIG9uICd3
ZWxsY29tZV8nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAg
ICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3Bl
bGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CitpZiAod2luZG93LmludGVybmFscykKKyAgICB0ZXN0
KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViZjZlOTUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbApAQCAtMCwwICsxLDEwNiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJs
ZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQor
eworICAgIGlmICghbnJldHJ5KSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpCisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVz
dGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1h
cmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAw
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJp
bmcoKSIsICJ3ZWxsY29tZSIpOworCisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFs
bFJhbmdlcygpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBEb3VibGUtY2xpY2sgdGhlIG1pc3NwZWxs
ZWQgd29yZCB3aXRob3V0IHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgdGVzdFJ1bm5lci5zZXRT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGZhbHNlKTsKKyAgICB2YXIgeCA9IGRlc3Rp
bmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCAr
IDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRl
c3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisKKyAg
ICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51
LgorICAgIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0
aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdo
dCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1l
bnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkg
dG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5n
LmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2Ug
PSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0s
ICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJr
ZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVs
ZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKKworICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gRG91YmxlLWNsaWNr
IHRoZSBtaXNzcGVsbGVkIHdvcmQgd2l0aCB0cmFpbGluZyB3aGl0ZXNwYWNlLgorICAgIHRlc3RS
dW5uZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCh0cnVlKTsKKyAgICB2YXIg
eCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zm
c2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNl
dFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAv
IDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21l
ICIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBvbiAid2VsbGNvbWUgIiB0byBzaG93IHRoZSBj
b250ZXh0IG1lbnUuCisgICAgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHkgPSBkZXN0aW5hdGlvbi5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24u
b2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAg
ICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAg
Ly8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5
RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdN
YXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hp
bGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJz
cGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxj
b21lICIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tj
b250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKKyAgICAKKyAgICBm
aW5pc2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5h
YmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVk
KHRydWUpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJk
ZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIndlbGxjb21lIGhvbWUuIik7CisgICAgd2lu
ZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOworfQorCitkZXNj
cmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2VkIG1pc3NwZWxs
aW5ncy4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUg
aG9tZS4nLCBkb3VibGUtY2xpY2sgb24gJ3dlbGxjb21lJywgYW5kIGNvbnRleHQtY2xpY2sgb24g
dGhlIHNlbGVjdGlvbi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0
aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLiIpOworaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgdGVzdCgpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdv
cmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhiOTJmOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorU3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxl
Y3RzIGEgbXVsdGktd29yZCBtaXNzcGVsbGluZyBleGFjdGx5LiBUbyB0ZXN0IG1hbnVhbGx5LCBl
bmFibGUgJ0FzayBHb29nbGUgZm9yIFN1Z2dlc3Rpb25zJywgdHlwZSAnSXQgc2hvdWxkIGJlIHVw
cGVyIGNhc2UnLCBzZWxlY3QgJ3VwcGVyIGNhc2UnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUg
c2VsZWN0aW9uLlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93cyBz
cGVsbGluZyBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMuaHRtbCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3Rl
ZC1tdWx0aXBsZS13b3Jkcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjdmYWFiNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29y
ZHMuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8
ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+Cis8c2Ny
aXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsK
KyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUp
OworICAgIHRlc3RSdW5uZXIuc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKHRydWUpOworICAg
IHRlc3RSdW5uZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisK
KyAgICB2YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzdGluYXRp
b24iKTsKKyAgICBkZXN0aW5hdGlvbi5mb2N1cygpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5k
KCJJbnNlcnRUZXh0IiwgZmFsc2UsICJJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4iKTsKKworICAg
IC8vIEluamVjdCBhIG11bHRpLXdvcmQgbWlzc3BlbGxpbmcuCisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydChkZXN0aW5hdGlvbi5jaGls
ZE5vZGVzWzBdLCAxMyk7CisgICAgcmFuZ2Uuc2V0RW5kKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNb
MF0sIDIzKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLmFkZFNwZWxsaW5nTWFya2VyKHJhbmdlKTsK
KworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2Rl
KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgInVwcGVyIGNh
c2UiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIiwgIiIpOworICAgIAorICAgIC8vIFNlbGVjdCB0aGUgbXVsdGktd29yZCBtaXNz
cGVsbGluZyB3aXRob3V0IHN1cnJvdW5kaW5nIHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRpb24uCisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHZhciB3b3Jk
UmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHdvcmRSYW5nZS5zZXRTdGFydChk
ZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAxMyk7CisgICAgd29yZFJhbmdlLnNldEVuZChkZXN0
aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAyMyk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHdvcmRSYW5nZSk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKKworICAgIC8vIENvbnRl
eHQgY2xpY2sgb24gInVwcGVyIGNhc2UiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2
YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24u
b2Zmc2V0TGVmdCArIDEwMDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5v
ZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWln
aHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRN
ZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5
IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmlu
Zy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdl
ID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBd
LCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFy
a2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7
CisKKyAgICBmaW5pc2hKU1Rlc3QoKQorfQorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxk
IHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbXVsdGktd29yZCBtaXNzcGVsbGluZyBleGFj
dGx5LiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCBlbmFibGUgJ0FzayBHb29n
bGUgZm9yIFN1Z2dlc3Rpb25zJywgdHlwZSAnSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UnLCBzZWxl
Y3QgJ3VwcGVyIGNhc2UnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiIgKwor
ICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93
cyBzcGVsbGluZyBzdWdnZXN0aW9ucy4iKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHRl
c3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3Rl
ZC13b3JkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h
NTg5OGM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTcgQEAKK1NwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhlIHVzZXIg
c2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIGV4YWN0bHkuIFRvIHRlc3QgbWFudWFsbHksIHR5
cGUgJ3dlbGxjb21lIGhvbWUuJywgc2VsZWN0aW9uICd3ZWxsY29tZScsIGFuZCBjb250ZXh0LWNs
aWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQg
bWVudSBzaG93cyBzcGVsbGluZyBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29t
ZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgor
UEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIGNvbnRl
eHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAid2VsY29t
ZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImhvbWUiCitQQVNT
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJob21lIgorUEFTUyBjb250ZXh0
TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBhcmF0
b3I+IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3
ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQuaHRtbCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhh
Y3RseS1zZWxlY3RlZC13b3JkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMzc2ZjBjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWwK
QEAgLTAsMCArMSw5MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0i
ZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0Pgor
CitmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQoreworICAgIGlmICghbnJldHJ5KSB7CisgICAgICAg
IGZpbmlzaEpTVGVzdCgpCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWludGVy
bmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxs
aW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeShu
cmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBTZWxl
Y3QgdGhlIG1pc3NwZWxsZWQgd29yZCB3aXRob3V0IHN1cnJvdW5kaW5nIHdoaXRlc3BhY2Ugb3Ig
cHVuY3R1YXRpb24uCisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygp
OworICAgIHZhciB3b3JkUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHdvcmRS
YW5nZS5zZXRTdGFydChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAwKTsKKyAgICB3b3JkUmFu
Z2Uuc2V0RW5kKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDgpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZSh3b3JkUmFuZ2UpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5n
ZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1sw
XSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01h
cmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisK
KyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBt
ZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24u
b2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAg
ICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAg
Ly8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5
RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdN
YXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hp
bGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJz
cGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxj
b21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2Nv
bnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworICAgIAorICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB3b3JkUmFuZ2Uuc2V0
U3RhcnQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgOSk7CisgICAgd29yZFJhbmdlLnNldEVu
ZChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAxMyk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHdvcmRSYW5nZSk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJob21lIik7CisKKyAgICAvLyBDb250ZXh0
IGNsaWNrIG9uICJob21lIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHggPSBk
ZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExl
ZnQgKyA4MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3Ag
KyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVu
dHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUg
dGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hh
ckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgImhvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGgg
LSAxXSIsICI8c2VwYXJhdG9yPiIpOworCisgICAgZmluaXNoSlNUZXN0KCkKK30KKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5l
ci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVu
bmVyLnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNl
dFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpOworICAgIHZhciBkZXN0aW5h
dGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAgIGRlc3Rp
bmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBm
YWxzZSwgIndlbGxjb21lIGhvbWUuIik7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHZlcmlmeSgxMCk7IH0sIDApOworfQorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxk
IHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIHRoZSBtaXNzcGVsbGVkIHdvcmQgZXhhY3RseS4g
IiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4n
LCBzZWxlY3Rpb24gJ3dlbGxjb21lJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlv
bi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBt
ZW51IHNob3dzIHNwZWxsaW5nIHN1Z2dlc3Rpb25zLiIpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgdGVzdCgpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3Jk
LXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOWYwZGQyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNSBAQAorU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4g
dXNlciBzZWxlY3RzIG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmdsZSBtaXNzcGVs
bGluZy4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nLCBzZWxlY3QgJ3dl
bGxjb21lIGhvbWUnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVz
dCBzdWNlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgbm8gc3BlbGwgY2hlY2sgc3VnZ2Vz
dGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFy
a2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIGlzICJ3ZWxsY29tZSBob21lIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5n
KCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBp
cyAid2VsbGNvbWUgaG9tZSIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVs
ZW1lbnRzLmxlbmd0aCAtIDFdIGlzICI8c2VwYXJhdG9yPiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
bXVsdGl3b3JkLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU2Y2FjNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
bXVsdGl3b3JkLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNzUgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9k
aXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZnVuY3Rpb24gdmVyaWZ5KG5yZXRyeSkKK3sKKyAg
ICBpZiAoIW5yZXRyeSkgeworICAgICAgICBmaW5pc2hKU1Rlc3QoKQorICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKCFpbnRlcm5hbHMubWFya2VyQ291bnRGb3JOb2RlKGRlc3RpbmF0
aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIpKSB7CisgICAgICAgIHdpbmRvdy5zZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkobnJldHJ5IC0gMSk7IH0sIDApOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJS
YW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCki
LCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJl
bW92ZUFsbFJhbmdlcygpOworICAgIHZhciBtdWx0aVdvcmRSYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgbXVsdGlXb3JkUmFuZ2Uuc2V0U3RhcnQoZGVzdGluYXRpb24uY2hpbGRO
b2Rlc1swXSwgMCk7CisgICAgbXVsdGlXb3JkUmFuZ2Uuc2V0RW5kKGRlc3RpbmF0aW9uLmNoaWxk
Tm9kZXNbMF0sIDEzKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UobXVsdGlX
b3JkUmFuZ2UpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSBob21lIik7CisKKyAgICAvLyBDb250ZXh0IGNs
aWNrIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9m
ZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAg
IHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9u
Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2Vu
ZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBt
ZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIp
LCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFu
Z2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwg
IndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSBob21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0g
MV0iLCAiPHNlcGFyYXRvcj4iKTsKKworICAgIGZpbmlzaEpTVGVzdCgpCit9CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGludGVybmFscy5zZXR0
aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIu
c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5l
ci5zZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGZhbHNlKTsKKyAgICB2YXIgZGVzdGluYXRp
b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzdGluYXRpb24iKTsKKyAgICBkZXN0aW5h
dGlvbi5mb2N1cygpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFs
c2UsICJ3ZWxsY29tZSBob21lLiIpOworICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyB2ZXJpZnkoMTApOyB9LCAwKTsKK30KKworZGVzY3JpcHRpb24oIlNwZWxsaW5nIHNob3VsZCBi
ZSBkaXNhYmxlZCB3aGVuIHVzZXIgc2VsZWN0cyBtdWx0aXBsZSB3b3JkcyB0aGF0IGFyZSBub3Qg
YSBzaW5nbGUgbWlzc3BlbGxpbmcuICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHks
IHR5cGUgJ3dlbGxjb21lIGhvbWUuJywgc2VsZWN0ICd3ZWxsY29tZSBob21lJywgYW5kIGNvbnRl
eHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3Vj
ZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIG5vIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25z
LiIpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgdGVzdCgpOworCis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11
bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIxNDc2ZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMyBAQAorQ2hyb21lIHNob3VsZCBzZWxlY3QgbXVsdGktd29yZCBtaXNz
cGVsbGluZ3Mgb24gY29udGV4dCBjbGljay4gVG8gdGVzdCBtYW51YWxseSwgZW5hYmxlICdBc2sg
R29vZ2xlIGZvciBzdWdnZXN0aW9ucycsIHR5cGUgJ0l0IHNob3VsZCBiZSB1cHBlciBjYXNlLics
IGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSB3b3JkICd1cHBlcicuIFRoZSB0ZXN0IHN1Y2NlZWRz
IHdoZW4gJ3VwcGVyIGNhc2UnIHdhcyBzZWxlY3RlZCBhZnRlciBjb250ZXh0IGNsaWNrLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRv
U3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIGlzICIiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAidXBw
ZXIgY2FzZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgInVwcGVy
IGNhc2UiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
K0l0IHNob3VsZCBiZSB1cHBlciBjYXNlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRp
cGxlLXdvcmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjUyMjRjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1z
aG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0
YWJsZT48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
anNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRU
ZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNT
cGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQoZmFsc2UpOworCisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9jdXMoKTsK
KyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiSXQgc2hvdWxk
IGJlIHVwcGVyIGNhc2UuIik7CisKKyAgICAvLyBJbmplY3QgYSBtdWx0aS13b3JkIG1pc3NwZWxs
aW5nLgorICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uu
c2V0U3RhcnQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMTMpOworICAgIHJhbmdlLnNldEVu
ZChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAyMyk7CisgICAgd2luZG93LmludGVybmFscy5h
ZGRTcGVsbGluZ01hcmtlcihyYW5nZSk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50
ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3Bl
bGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFu
Z2UudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIENvbnRl
eHQgY2xpY2sgb24gInVwcGVyIGNhc2UiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2
YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24u
b2Zmc2V0TGVmdCArIDEwMDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5v
ZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWln
aHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRN
ZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5
IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmlu
Zy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdl
ID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBd
LCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFy
a2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7
CisKKyAgICBmaW5pc2hKU1Rlc3QoKQorfQorCitkZXNjcmlwdGlvbigiQ2hyb21lIHNob3VsZCBz
ZWxlY3QgbXVsdGktd29yZCBtaXNzcGVsbGluZ3Mgb24gY29udGV4dCBjbGljay4gIisKKyAgICAg
ICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCBlbmFibGUgJ0FzayBHb29nbGUgZm9yIHN1Z2dlc3Rp
b25zJywgdHlwZSAnSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuJywgYW5kIGNvbnRleHQtY2xpY2sg
b24gdGhlIHdvcmQgJ3VwcGVyJy4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMg
d2hlbiAndXBwZXIgY2FzZScgd2FzIHNlbGVjdGVkIGFmdGVyIGNvbnRleHQgY2xpY2suIik7Citp
ZiAod2luZG93LmludGVybmFscykKKyAgICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdv
cmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yjg3MGY3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3
IEBACitDaHJvbWUgc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIG9uIGNvbnRleHQgY2xpY2su
IFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIGhvbWUuJyBhbmQgY29udGV4dC1jbGlj
ayBvbiAnd2VsbGNvbWUnLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuICd3ZWxsY29tZScgaXMgc2Vs
ZWN0ZWQgYWZ0ZXIgdGhlIGNvbnRleHQgY2xpY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUi
CitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHNwZWxs
aW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1MgY29udGV4dE1lbnVFbGVt
ZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRl
eHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+IgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21lLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2lu
Z2xlLXdvcmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDE5MWYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0bWwKQEAgLTAs
MCArMSw4MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGlu
YXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitmdW5j
dGlvbiB2ZXJpZnkobnJldHJ5KQoreworICAgIGlmICghbnJldHJ5KSB7CisgICAgICAgIGZpbmlz
aEpTVGVzdCgpCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWludGVybmFscy5t
YXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIikp
IHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeShucmV0cnkg
LSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzcGVsbGluZ01hcmtl
clJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5v
ZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxs
aW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAg
ICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51
LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0
aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQ
YXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zm
c2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBj
b250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8g
RXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93
bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJr
ZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGRO
b2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVs
bGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21l
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRl
eHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworICAgIAorICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8g
Q29udGV4dCBjbGljayBvbiAiaG9tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZh
ciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5v
ZmZzZXRMZWZ0ICsgODA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0
IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVu
dUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0
byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcu
ZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5n
dGggLSAxXSIsICI8c2VwYXJhdG9yPiIpOworCisgICAgZmluaXNoSlNUZXN0KCkKK30KKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1
bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0
UnVubmVyLnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVy
LnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpOworICAgIHZhciBkZXN0
aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAgIGRl
c3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQi
LCBmYWxzZSwgIndlbGxjb21lIGhvbWUuIik7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOworfQorCitkZXNjcmlwdGlvbigiQ2hyb21lIHNlbGVj
dHMgdGhlIG1pc3NwZWxsZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLiAiICsKKyAgICAgICAgICAg
ICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicgYW5kIGNvbnRleHQtY2xp
Y2sgb24gJ3dlbGxjb21lJy4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hl
biAnd2VsbGNvbWUnIGlzIHNlbGVjdGVkIGFmdGVyIHRoZSBjb250ZXh0IGNsaWNrLiIpOworaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgdGVzdCgpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wOTdlZTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVj
dGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorU3BlbGxpbmcgc2hvdWxkIGJlIGRp
c2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIGEgcGFydCBvZiBtaXNzcGVsbGluZy4gVG8gdGVzdCBt
YW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nIHNlbGVjdCAnbGxjbycsIGFuZCBjb250ZXh0
LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2VlZHMgd2hlbiB0aGUgY29udGV4
dCBtZW51IGhhcyBubyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3
ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BB
U1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImxsY28iCitQQVNTIHNwZWxs
aW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJsbGNvIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRz
W2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+IgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21l
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0YjBiNWEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0
YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiB2ZXJpZnkobnJldHJ5
KQoreworICAgIGlmICghbnJldHJ5KSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpCisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUo
ZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93
LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxz
Lm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmci
LCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgdmFyIHN1YldvcmRSYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgc3ViV29yZFJhbmdlLnNldFN0YXJ0KGRlc3RpbmF0aW9uLmNo
aWxkTm9kZXNbMF0sIDIpOworICAgIHN1YldvcmRSYW5nZS5zZXRFbmQoZGVzdGluYXRpb24uY2hp
bGROb2Rlc1swXSwgNik7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHN1Yldv
cmRSYW5nZSk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSIsICJsbGNvIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIHRvIHNob3cg
dGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVz
dGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCAr
IGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRD
bGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2
ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKwor
ICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRl
c3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSIsICJsbGNvIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVs
ZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAiPHNlcGFyYXRvcj4iKTsK
KworICAgIGZpbmlzaEpTVGVzdCgpCit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGpzVGVz
dElzQXN5bmMgPSB0cnVlOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENo
ZWNrZXJFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3Bh
Y2VFbmFibGVkKGZhbHNlKTsKKyAgICB2YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZGVzdGluYXRpb24iKTsKKyAgICBkZXN0aW5hdGlvbi5mb2N1cygpOworICAgIGRv
Y3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ3ZWxsY29tZSBob21lLiIp
OworICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkoMTApOyB9LCAwKTsK
K30KKworZGVzY3JpcHRpb24oIlNwZWxsaW5nIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHVzZXIg
c2VsZWN0cyBhIHBhcnQgb2YgbWlzc3BlbGxpbmcuICIgKworICAgICAgICAgICAgIlRvIHRlc3Qg
bWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIGhvbWUuJyBzZWxlY3QgJ2xsY28nLCBhbmQgY29udGV4
dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNl
ZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgbm8gc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMu
Iik7CitpZiAod2luZG93LmludGVybmFscykKKyAgICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24t
c2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMjE4MGQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE1IEBACitQdW5jdHVhdGlvbiBtYXJrcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0
ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uIFRvIHRlc3QgbWFudWFsbHksIHR5
cGUgJ3dlbGxjb21lIScsIHNlbGVjdCAnd2VsbGNvbWUhJywgYW5kIGNvbnRleHQtY2xpY2sgb24g
dGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhh
cyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BB
U1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lISIKK1BBU1Mgc3BlbGxpbmdNYXJr
ZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lISIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tj
b250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSEKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxl
Y3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTUzZTNmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAg
KzEsNzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0
aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZnVuY3Rp
b24gdmVyaWZ5KG5yZXRyeSkKK3sKKyAgICBpZiAoIW5yZXRyeSkgeworICAgICAgICBmaW5pc2hK
U1Rlc3QoKQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFpbnRlcm5hbHMubWFy
a2VyQ291bnRGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIpKSB7
CisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkobnJldHJ5IC0g
MSk7IH0sIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3BlbGxpbmdNYXJrZXJS
YW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rl
c1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGlu
Z01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydChk
ZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAwKTsKKyAgICByYW5nZS5zZXRFbmQoZGVzdGluYXRp
b24uY2hpbGROb2Rlc1swXSwgOSk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIiwgIndlbGxjb21lISIpOworCisgICAgLy8gQ29udGV4dCBjbGljayB0byBz
aG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9
IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRU
b3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250
ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAg
ICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7
CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9k
ZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29t
ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkiLCAid2VsbGNvbWUhIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250
ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29t
ZSIpOworCisgICAgZmluaXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
anNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRU
ZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNT
cGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQoZmFsc2UpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3VzKCk7Cisg
ICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIndlbGxjb21lISIp
OworICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkoMTApOyB9LCAwKTsK
K30KKworZGVzY3JpcHRpb24oIlB1bmN0dWF0aW9uIG1hcmtzIHNob3VsZCBiZSB0cmVhdGVkIGFz
IHdoaXRlc3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4gIiArCisgICAgICAgICAg
ICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUhJywgc2VsZWN0ICd3ZWxsY29tZSEn
LCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJU
aGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIHNwZWxsIGNoZWNrIHN1
Z2dlc3Rpb25zLiIpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgdGVzdCgpOworCis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVu
ZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlv
bi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UxNDQ2
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNSBAQAorVW5kZXJzY29yZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hp
dGVzcGFjZTogc3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB0aGVtLiBUbyB0ZXN0IG1hbnVhbGx5LCB0
eXBlICdIaSwgX3dlbGxjb21lXyBob21lLicsIHNlbGVjdCAnX3dlbGxjb21lXycsIGFuZCBjb250
ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNv
bnRleHQgbWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAi
d2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJfd2VsbGNvbWVfIgorUEFT
UyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiX3dlbGxjb21lXyIKK1BBU1MgY29udGV4
dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21l
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitIaSwg
X3dlbGxjb21lXyBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi45NTUyMjZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUt
c2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVy
Ij4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2
PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQoreworICAgIGlmICghbnJl
dHJ5KSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpCisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGRO
b2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9k
ZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29t
ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBTZWxlY3QgdGhlIHRleHQgIl93ZWxsY29tZV8iLgor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB2YXIgcmFu
Z2VXaXRoVW5kZXJzY29yZXMgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlV2l0
aFVuZGVyc2NvcmVzLnNldFN0YXJ0KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDQpOworICAg
IHJhbmdlV2l0aFVuZGVyc2NvcmVzLnNldEVuZChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAx
NCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlV2l0aFVuZGVyc2Nv
cmVzKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIiwgIl93ZWxsY29tZV8iKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gIl93
ZWxsY29tZV8iIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0
aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDgw
OworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3Rp
bmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2
ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29u
dGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgw
eDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFy
a2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDAp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmlu
ZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJfd2VsbGNvbWVfIik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3Ro
IC0gMV0iLCAid2VsY29tZSIpOworCisgICAgZmluaXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJuYWxzLnNldHRp
bmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5z
ZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVy
LnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpOworICAgIHZhciBkZXN0aW5hdGlv
biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0
aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxz
ZSwgIkhpLCBfd2VsbGNvbWVfIGhvbWUuIik7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOworfQorCitkZXNjcmlwdGlvbigiVW5kZXJzY29yZXMg
c2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB0
aGVtLiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICdIaSwgX3dlbGxj
b21lXyBob21lLicsIHNlbGVjdCAnX3dlbGxjb21lXycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRo
ZSBzZWxlY3Rpb24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhl
IGNvbnRleHQgbWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CitpZiAod2luZG93
LmludGVybmFscykKKyAgICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDM1NTE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRo
LXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitTcGVs
bGluZyBzaG91bGQgaWdub3JlIHdoaXRlc3BhY2UuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ2hl
bGxvLCB3ZWxsY29tZSBob21lLicsIHNlbGVjdCAnIHdlbGxjb21lICcsIGFuZCBjb250ZXh0LWNs
aWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQg
bWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNv
bWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIgd2VsbGNvbWUg
IgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFT
UyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIHdlbGxjb21lICIKK1BBU1Mg
Y29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3
ZWxjb21lIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CitoZWxsbywgd2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVj
dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uODk3NTc1NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0
ZXNwYWNlLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNzIgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNv
bnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+
Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZnVuY3Rpb24gdmVyaWZ5KG5yZXRyeSkKK3sKKyAgICBp
ZiAoIW5yZXRyeSkgeworICAgICAgICBmaW5pc2hKU1Rlc3QoKQorICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKCFpbnRlcm5hbHMubWFya2VyQ291bnRGb3JOb2RlKGRlc3RpbmF0aW9u
LmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIpKSB7CisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyB2ZXJpZnkobnJldHJ5IC0gMSk7IH0sIDApOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5n
ZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAi
d2VsbGNvbWUiKTsKKworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMo
KTsKKyAgICB2YXIgcmFuZ2VXaXRoV2hpdGVzcGFjZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2VXaXRoV2hpdGVzcGFjZS5zZXRTdGFydChkZXN0aW5hdGlvbi5jaGlsZE5vZGVz
WzBdLCA2KTsKKyAgICByYW5nZVdpdGhXaGl0ZXNwYWNlLnNldEVuZChkZXN0aW5hdGlvbi5jaGls
ZE5vZGVzWzBdLCAxNik7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdl
V2l0aFdoaXRlc3BhY2UpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIHdlbGxjb21lICIpOworCisgICAgdmFyIHggPSBkZXN0
aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQg
KyA4MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMg
PSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBlc2Mga2V5IHRvIGtpbGwgdGhl
IGNvbnRleHQgbWVudQorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29k
ZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMu
bWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIs
IDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0
cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIgd2VsbGNvbWUgIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVu
Z3RoIC0gMV0iLCAid2VsY29tZSIpOworCisgICAgZmluaXNoSlNUZXN0KCkKK30KKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5l
ci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVu
bmVyLnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNl
dFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpOworICAgIHZhciBkZXN0aW5h
dGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAgIGRlc3Rp
bmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBm
YWxzZSwgImhlbGxvLCB3ZWxsY29tZSBob21lLiIpOworICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyB2ZXJpZnkoMTApOyB9LCAwKTsKK30KKworZGVzY3JpcHRpb24oIlNwZWxsaW5n
IHNob3VsZCBpZ25vcmUgd2hpdGVzcGFjZS4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51
YWxseSwgdHlwZSAnaGVsbG8sIHdlbGxjb21lIGhvbWUuJywgc2VsZWN0ICcgd2VsbGNvbWUgJywg
YW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gIiArCisgICAgICAgICAgICAiVGhl
IHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBzcGVsbCBjaGVjayBzdWdn
ZXN0aW9ucy4iKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHRlc3QoKTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YWI0ZmY3
Li40MTlkMmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTMtMDEtMjUgIFJvdXNs
YW4gU29sb21ha2hpbiAgPHJvdXNsYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE5ldyBtZXRo
b2QgZm9yIG1hbnVhbGx5IGFkZGluZyBzcGVsbCBjaGVjayBtYXJrZXJzIGZvciB0ZXN0aW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4MTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaHJvbWl1bSBz
cGVsbCBjaGVjayBjYW4gZGV0ZWN0IG11bHRpLXdvcmQgbWlzc3BlbGxpbmdzLCBidXQgY2Fubm90
IGNvcnJlY3QgdGhlbS4gVGhpcyBuZXcgbWV0aG9kCisgICAgICAgIGlzIHVzZWQgYnkgdGVzdHMg
dG8gYWRkIG11bHRpLXdvcmQgbWlzc3BlbGxpbmcgbWFya2Vycy4KKworICAgICAgICBUZXN0czog
cGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2Vs
ZWN0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5odG1sCisKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OmFkZFNwZWxsaW5nTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmlkbDoKKwogMjAxMy0wMS0yNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRpbmcgYSB0ZXh0IHRyYWNrIHNob3VsZCBub3QgbWFr
ZSBjb250cm9scyB2aXNpYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
Y2NmMTQwNi4uNjI2MDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAt
ODk4LDYgKzg5OCwxMSBAQCB2b2lkIEludGVybmFsczo6YWRkVGV4dE1hdGNoTWFya2VyKGNvbnN0
IFJhbmdlKiByYW5nZSwgYm9vbCBpc0FjdGl2ZSkKICAgICByYW5nZS0+b3duZXJEb2N1bWVudCgp
LT5tYXJrZXJzKCktPmFkZFRleHRNYXRjaE1hcmtlcihyYW5nZSwgaXNBY3RpdmUpOwogfQogCit2
b2lkIEludGVybmFsczo6YWRkU3BlbGxpbmdNYXJrZXIoUmFuZ2UqIHJhbmdlKQoreworICAgIHJh
bmdlLT5vd25lckRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJhbmdlLCBEb2N1bWVu
dE1hcmtlcjo6U3BlbGxpbmcpOworfQorCiB2b2lkIEludGVybmFsczo6c2V0U2Nyb2xsVmlld1Bv
c2l0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgbG9uZyB4LCBsb25nIHksIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDYxNzE4YzAuLjIxMWNkMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTM5LDYgKzEzOSw3IEBAIHB1YmxpYzoKICAgICBQYXNz
UmVmUHRyPFJhbmdlPiBtYXJrZXJSYW5nZUZvck5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgbWFy
a2VyVHlwZSwgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTdHJpbmcgbWFy
a2VyRGVzY3JpcHRpb25Gb3JOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIHVu
c2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBhZGRUZXh0TWF0Y2hNYXJr
ZXIoY29uc3QgUmFuZ2UqLCBib29sIGlzQWN0aXZlKTsKKyAgICB2b2lkIGFkZFNwZWxsaW5nTWFy
a2VyKFJhbmdlKik7CiAKICAgICB2b2lkIHNldFNjcm9sbFZpZXdQb3NpdGlvbihEb2N1bWVudCos
IGxvbmcgeCwgbG9uZyB5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9u
KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtb2RlLCBpbnQgZ2FwLCBFeGNlcHRp
b25Db2RlJiBlYykgeyBzZXRQYWdpbmF0aW9uKGRvY3VtZW50LCBtb2RlLCBnYXAsIDAsIGVjKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDEzMzAzMmEuLjI2NWUyNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTk5LDYgKzk5LDcgQEAKICAg
ICBSYW5nZSBtYXJrZXJSYW5nZUZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBET01TdHJpbmcgbWFy
a2VyVHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAg
ICAgRE9NU3RyaW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShpbiBOb2RlIG5vZGUsIGluIERP
TVN0cmluZyBtYXJrZXJUeXBlLCBpbiB1bnNpZ25lZCBsb25nIGluZGV4KSByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKICAgICB2b2lkIGFkZFRleHRNYXRjaE1hcmtlcihpbiBSYW5nZSByYW5nZSwgaW4g
Ym9vbGVhbiBpc0FjdGl2ZSk7CisgICAgdm9pZCBhZGRTcGVsbGluZ01hcmtlcihpbiBSYW5nZSBy
YW5nZSk7CiAKICAgICB2b2lkIHNldFNjcm9sbFZpZXdQb3NpdGlvbihpbiBEb2N1bWVudCBkb2N1
bWVudCwgaW4gbG9uZyB4LCBpbiBsb25nIHkpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQ5MGUxMGQuLmQ1YWJmODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTMtMDEtMjUgIFJvdXNsYW4gU29sb21h
a2hpbiAgPHJvdXNsYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIENocm9taXVtIHNwZWxsIGNo
ZWNrIHNob3VsZCB3b3JrIHdpdGggd2hpdGVzcGFjZSwgcHVuY3R1YXRpb24sIGFuZCBtdWx0aS13
b3JkIG1pc3NwZWxsaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA2ODE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRml4IENocm9taXVtIHNwZWxsIGNoZWNrZXIgdG8gYmVoYXZlIGFzIGZvbGxvd3M6
CisgICAgICAgIC0gQ2hyb21pdW0gc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIG9uIGNvbnRl
eHQgY2xpY2suCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBz
ZWxlY3RzIHRoZSBtaXNzcGVsbGVkIHdvcmQgZXhhY3RseS4KKyAgICAgICAgLSBJZiB0aGUgd29y
ZCBpcyBub3QgbWlzc3BlbGxlZCwgdGhlcmUgc2hvdWxkIGJlIG5vIHNwZWxsaW5nIG9wdGlvbnMg
aW4gdGhlIGNvbnRleHQgbWVudS4KKyAgICAgICAgLSBDaHJvbWUgc2hvdWxkIHNlbGVjdCBtdWx0
aS13b3JkIG1pc3NwZWxsaW5ncyBvbiBjb250ZXh0IGNsaWNrLgorICAgICAgICAtIFNwZWxsaW5n
IHNob3VsZCB3b3JrIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIG11bHRpLXdvcmQgbWlzc3BlbGxp
bmcgZXhhY3RseS4KKyAgICAgICAgLSBTcGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNs
aWNrZWQgbWlzc3BlbGxpbmdzLgorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCBpZ25vcmUgd2hp
dGVzcGFjZS4KKyAgICAgICAgLSBVbmRlcnNjb3JlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0
ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uCisgICAgICAgIC0gUHVuY3R1YXRp
b24gbWFya3Mgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hvdWxk
IGlnbm9yZSB0aGVtLgorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVu
IHVzZXIgc2VsZWN0cyBhIHBhcnQgb2YgbWlzc3BlbGxpbmcuCisgICAgICAgIC0gU3BlbGxpbmcg
c2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIG11bHRpcGxlIHdvcmRzIHRoYXQg
YXJlIG5vdCBhIHNpbmdsZSBtaXNzcGVsbGluZy4KKworICAgICAgICBUZXN0czogcGxhdGZvcm0v
Y2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdp
dGgtdW5kZXJzY29yZXMuaHRtbAorICAgICAgICAgICAgICAgcGxhdGZvcm0vY2hyb21pdW0vZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLmh0bWwKKyAgICAgICAg
ICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3Rs
eS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9j
aHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC5o
dG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLW11bHRpd29yZC1zZWxlY3Rpb24uaHRtbAorICAgICAgICAgICAgICAgcGxhdGZvcm0v
Y2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxl
LXdvcmRzLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC5odG1sCisgICAgICAgICAg
ICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQt
c2VsZWN0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbAorICAgICAg
ICAgICAgICAgcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRo
LXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9t
aXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5o
dG1sCisKKyAgICAgICAgKiBzcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OklzV2hpdGVTcGFjZU9yUHVuY3R1YXRpb24pOiBO
ZXcgdXRpbGl0eSBmdW5jdGlvbiBmb3IgZGV0ZWN0aW5nIHdoaXRlc3BhY2UgYW5kIHB1bmN0dWF0
aW9uIGluIHNlbGVjdGVkIHRleHQuCisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50
SW1wbDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMpOiBNb2RpZmllZCB0byB3b3JrIHdp
dGggd2hpdGVzcGFjZSwgcHVuY3R1YXRpb24sIGFuZCBtdWx0aS13b3JkIG1pc3NwZWxsaW5ncy4K
KyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVJbXBsOjpyZXBsYWNlTWlzc3BlbGxlZFJhbmdlKTogRml4ZWQgaW5jb3JyZWN0IHJhbmdlIHJl
cGxhY2VtZW50LiBDaHJvbWl1bSB3aWxsIHVzZSB0aGlzIG1ldGhvZCBpbnN0ZWFkIG9mIHJlcGxh
Y2VSYW5nZS4KKwogMjAxMy0wMS0yNSAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBNb3ZlIFRhc2tUeXBlIGVudW0gdG8gSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAppbmRleCAzMzk1NmJjLi4yM2NiOGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5j
cHAKQEAgLTc4LDYgKzc4LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorLy8gUmV0dXJucyB0cnVlIGZvciB3aGl0ZXNwYWNlIGFuZCBwdW5jdHVh
dGlvbiBjaGFyYWN0ZXJzLiBSZXR1cm5zIGZhbHNlIGZvciBldmVyeSBvdGhlciB0eXBlIG9mIGNo
YXJhY3Rlci4KK3N0YXRpYyBib29sIElzV2hpdGVTcGFjZU9yUHVuY3R1YXRpb24oVUNoYXIgYykK
K3sKKyAgICByZXR1cm4gV1RGOjpVbmljb2RlOjppc1NlcGFyYXRvclNwYWNlKGMpIHx8IFdURjo6
VW5pY29kZTo6aXNQdW5jdChjKTsKK30KKwogLy8gRmlndXJlIG91dCB0aGUgVVJMIG9mIGEgcGFn
ZSBvciBzdWJmcmFtZS4gUmV0dXJucyB8cGFnZV90eXBlfCBhcyB0aGUgdHlwZSwKIC8vIHdoaWNo
IGluZGljYXRlcyBwYWdlIG9yIHN1YmZyYW1lLCBvciBDb250ZXh0Tm9kZVR5cGU6Ok5PTkUgaWYg
dGhlIFVSTCBjb3VsZCBub3QKIC8vIGJlIGRldGVybWluZWQgZm9yIHNvbWUgcmVhc29uLgpAQCAt
MTAyLDggKzEwOCw4IEBAIHN0YXRpYyBib29sIGlzQVNpbmdsZVdvcmQoY29uc3QgU3RyaW5nJiB0
ZXh0KQogfQogCiAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IG1pc3NwZWxsZWQgd29yZCBvbiB3
aGljaCBjb250ZXh0IG1lbnUKLS8vIGlzIHRvIGJlIGV2b2xrZWQuIFRoaXMgZnVuY3Rpb24gYWxz
byBzZXRzIHRoZSB3b3JkIG9uIHdoaWNoIGNvbnRleHQgbWVudQotLy8gaGFzIGJlZW4gZXZva2Vk
IHRvIGJlIHRoZSBzZWxlY3RlZCB3b3JkLCBhcyByZXF1aXJlZC4gVGhpcyBmdW5jdGlvbiBjaGFu
Z2VzCisvLyBpcyB0byBiZSBpbnZva2VkLiBUaGlzIGZ1bmN0aW9uIGFsc28gc2V0cyB0aGUgd29y
ZCBvbiB3aGljaCBjb250ZXh0IG1lbnUKKy8vIGhhcyBiZWVuIGludm9rZWQgdG8gYmUgdGhlIHNl
bGVjdGVkIHdvcmQsIGFzIHJlcXVpcmVkLiBUaGlzIGZ1bmN0aW9uIGNoYW5nZXMKIC8vIHRoZSBz
ZWxlY3Rpb24gb25seSB3aGVuIHRoZXJlIHdlcmUgbm8gc2VsZWN0ZWQgY2hhcmFjdGVycyBvbiBP
UyBYLgogc3RhdGljIFN0cmluZyBzZWxlY3RNaXNzcGVsbGVkV29yZChjb25zdCBDb250ZXh0TWVu
dSogZGVmYXVsdE1lbnUsIEZyYW1lKiBzZWxlY3RlZEZyYW1lKQogewpAQCAtMjc0LDM2ICsyODAs
MzUgQEAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRD
dXN0b21NZW51RnJvbURlZmF1bHRJdGVtcygKICNlbmRpZgogICAgICAgICAvLyBXaGVuIENocm9t
ZSBlbmFibGVzIGFzeW5jaHJvbm91cyBzcGVsbGNoZWNraW5nLCBpdHMgc3BlbGxjaGVja2VyIGFk
ZHMgc3BlbGxpbmcgbWFya2VycyB0byBtaXNzcGVsbGVkCiAgICAgICAgIC8vIHdvcmRzIGFuZCBh
dHRhY2hlcyBzdWdnZXN0aW9ucyB0byB0aGVzZSBtYXJrZXJzIGluIHRoZSBiYWNrZ3JvdW5kLiBU
aGVyZWZvcmUsIHdoZW4gYSB1c2VyIHJpZ2h0LWNsaWNrcwotICAgICAgICAvLyBhIG1vdXNlIG9u
IGEgd29yZCwgQ2hyb21lIGp1c3QgbmVlZHMgdG8gZmluZCBhIHNwZWxsaW5nIG1hcmtlciBvbiB0
aGUgd29yZCBpbnN0cmVhZCBvZiBzcGVsbGNoZWNraW5nIGl0LgorICAgICAgICAvLyBhIG1vdXNl
IG9uIGEgd29yZCwgQ2hyb21lIGp1c3QgbmVlZHMgdG8gZmluZCBhIHNwZWxsaW5nIG1hcmtlciBv
biB0aGUgd29yZCBpbnN0ZWFkIG9mIHNwZWxsY2hlY2tpbmcgaXQuCiAgICAgICAgIGlmIChzZWxl
Y3RlZEZyYW1lLT5zZXR0aW5ncygpICYmIHNlbGVjdGVkRnJhbWUtPnNldHRpbmdzKCktPmFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpIHsKICAgICAgICAgICAgIFZpc2libGVTZWxl
Y3Rpb24gc2VsZWN0aW9uID0gc2VsZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigp
OwotICAgICAgICAgICAgYm9vbCBzaG91bGRVcGRhdGVTZWxlY3Rpb24gPSBmYWxzZTsKICAgICAg
ICAgICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldE9yUmFuZ2UoKSkgewotICAgICAgICAgICAgICAg
IGlmIChzZWxlY3Rpb24uaXNDYXJldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlv
bi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHNob3VsZFVwZGF0ZVNlbGVjdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxp
emVkUmFuZ2UoKTsKLSAgICAgICAgICAgICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJr
ZXJzID0gc2VsZWN0ZWRGcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJzSW5SYW5n
ZShyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwgRG9jdW1lbnRNYXJrZXI6
OkdyYW1tYXIpOwotICAgICAgICAgICAgICAgIGlmIChtYXJrZXJzLnNpemUoKSA9PSAxKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChtYXJrZXJzWzBdLT5zdGFydE9mZnNldCgpICE9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihyYW5nZS0+c3RhcnRPZmZzZXQoKSkgfHwgbWFya2Vyc1swXS0+ZW5k
T2Zmc2V0KCkgIT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmdlLT5lbmRPZmZzZXQoKSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGlmIChtYXJrZXJzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJhbmdlLT5zZXRTdGFydChyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgbWFya2Vy
c1swXS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJhbmdlLT5zZXRFbmQo
cmFuZ2UtPmVuZENvbnRhaW5lcigpLCBtYXJrZXJzWzBdLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGRhdGEubWlzc3BlbGxlZFdvcmQgPSByYW5nZS0+dGV4dCgpOwotICAgICAg
ICAgICAgICAgICAgICBpZiAobWFya2Vyc1swXS0+ZGVzY3JpcHRpb24oKS5sZW5ndGgoKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvbnM7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtYXJrZXJzWzBdLT5kZXNjcmlwdGlvbigpLnNwbGl0KCdcbics
IHN1Z2dlc3Rpb25zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZGljdGlvbmFyeVN1
Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnM7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
bV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xpZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGludCBtaXNzcGVsbGVkT2Zmc2V0LCBtaXNzcGVsbGVkTGVuZ3RoOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xpZW50KCktPnNwZWxsQ2hlY2soZGF0YS5t
aXNzcGVsbGVkV29yZCwgbWlzc3BlbGxlZE9mZnNldCwgbWlzc3BlbGxlZExlbmd0aCwgJmRhdGEu
ZGljdGlvbmFyeVN1Z2dlc3Rpb25zKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICBzZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFVwZGF0ZVNlbGVjdGlvbiAmJiBzZWxlY3RlZEZy
YW1lLT5zZWxlY3Rpb24oKS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbikpCisgICAg
ICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi50b05v
cm1hbGl6ZWRSYW5nZSgpOworICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9u
Q29kZTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gc2VsZWN0
aW9uUmFuZ2UtPmNsb25lUmFuZ2UoZXhjZXB0aW9uQ29kZSk7CisgICAgICAgICAgICAgICAgVmVj
dG9yPERvY3VtZW50TWFya2VyKj4gbWFya2VycyA9IHNlbGVjdGVkRnJhbWUtPmRvY3VtZW50KCkt
Pm1hcmtlcnMoKS0+bWFya2Vyc0luUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCksIERvY3VtZW50
TWFya2VyOjpTcGVsbGluZyB8IERvY3VtZW50TWFya2VyOjpHcmFtbWFyKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWV4Y2VwdGlvbkNvZGUgJiYgbWFya2Vycy5zaXplKCkgPT0gMSkgeworICAgICAg
ICAgICAgICAgICAgICBtYXJrZXJSYW5nZS0+c2V0U3RhcnQobWFya2VyUmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCksIG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAg
ICBtYXJrZXJSYW5nZS0+c2V0RW5kKG1hcmtlclJhbmdlLT5lbmRDb250YWluZXIoKSwgbWFya2Vy
c1swXS0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBu
byBzZWxlY3Rpb24sIHRoZW4gc2VsZWN0IHRoZSBtaXNzcGVsbGluZy4KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlv
bihzZWxlY3Rpb24sIFdvcmRHcmFudWxhcml0eSk7CisgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxlY3Rpb25SYW5nZS5jbGVhcigpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9u
UmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uUmFuZ2UtPnRleHQoKS5zdHJp
cFdoaXRlU3BhY2UoJklzV2hpdGVTcGFjZU9yUHVuY3R1YXRpb24pID09IG1hcmtlclJhbmdlLT50
ZXh0KCkuc3RyaXBXaGl0ZVNwYWNlKCZJc1doaXRlU3BhY2VPclB1bmN0dWF0aW9uKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YS5taXNzcGVsbGVkV29yZCA9IG1hcmtlclJhbmdlLT50
ZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFya2Vyc1swXS0+ZGVzY3JpcHRp
b24oKS5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJp
bmc+IHN1Z2dlc3Rpb25zOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnNbMF0t
PmRlc2NyaXB0aW9uKCkuc3BsaXQoJ1xuJywgc3VnZ2VzdGlvbnMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGEuZGljdGlvbmFyeVN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnM7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fd2ViVmlldy0+c3BlbGxDaGVja0Ns
aWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pc3NwZWxsZWRPZmZz
ZXQsIG1pc3NwZWxsZWRMZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93ZWJW
aWV3LT5zcGVsbENoZWNrQ2xpZW50KCktPnNwZWxsQ2hlY2soZGF0YS5taXNzcGVsbGVkV29yZCwg
bWlzc3BlbGxlZE9mZnNldCwgbWlzc3BlbGxlZExlbmd0aCwgJmRhdGEuZGljdGlvbmFyeVN1Z2dl
c3Rpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDYwYzJlMGYu
LjU2Zjc3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cApAQCAtMTI5OSwxMSArMTI5OSwxNiBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6cmVwbGFjZU1pc3Nw
ZWxsZWRSYW5nZShjb25zdCBXZWJTdHJpbmcmIHRleHQpCiAgICAgVmVjdG9yPERvY3VtZW50TWFy
a2VyKj4gbWFya2VycyA9IGZyYW1lKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2Vyc0lu
UmFuZ2UoY2FyZXRSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwgRG9jdW1l
bnRNYXJrZXI6OkdyYW1tYXIpOwogICAgIGlmIChtYXJrZXJzLnNpemUoKSA8IDEgfHwgbWFya2Vy
c1swXS0+c3RhcnRPZmZzZXQoKSA+PSBtYXJrZXJzWzBdLT5lbmRPZmZzZXQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIFJlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lKCktPnNlbGVjdGlvbigpLT5yb290RWRpdGFi
bGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgbWFya2Vyc1swXS0+c3RhcnRPZmZzZXQoKSwg
bWFya2Vyc1swXS0+ZW5kT2Zmc2V0KCkgLSBtYXJrZXJzWzBdLT5zdGFydE9mZnNldCgpKTsKLSAg
ICBpZiAoIW1hcmtlclJhbmdlLmdldCgpIHx8ICFmcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2hvdWxk
Q2hhbmdlU2VsZWN0aW9uKG1hcmtlclJhbmdlLmdldCgpKSkKKyAgICBFeGNlcHRpb25Db2RlIGV4
Y2VwdGlvbkNvZGU7CisgICAgUmVmUHRyPFJhbmdlPiBtYXJrZXJSYW5nZSA9IGNhcmV0UmFuZ2Ut
PmNsb25lUmFuZ2UoZXhjZXB0aW9uQ29kZSk7CisgICAgaWYgKCFleGNlcHRpb25Db2RlKQorICAg
ICAgICByZXR1cm47CisgICAgbWFya2VyUmFuZ2UtPnNldFN0YXJ0KG1hcmtlclJhbmdlLT5zdGFy
dENvbnRhaW5lcigpLCBtYXJrZXJzWzBdLT5zdGFydE9mZnNldCgpKTsKKyAgICBtYXJrZXJSYW5n
ZS0+c2V0RW5kKG1hcmtlclJhbmdlLT5lbmRDb250YWluZXIoKSwgbWFya2Vyc1swXS0+ZW5kT2Zm
c2V0KCkpOworICAgIGlmICghZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNob3VsZENoYW5nZVNlbGVj
dGlvbihtYXJrZXJSYW5nZS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBmcmFtZSgpLT5z
ZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG1hcmtlclJhbmdlLmdldCgpLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSk7Ci0gICAgZnJhbWUoKS0+ZWRpdG9yKCktPnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4
dCh0ZXh0LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUoKS0+ZWRpdG9yKCktPnJlcGxhY2VTZWxl
Y3Rpb25XaXRoVGV4dCh0ZXh0LCBmYWxzZSwgZmFsc2UpOwogfQogCiBib29sIFdlYkZyYW1lSW1w
bDo6aGFzU2VsZWN0aW9uKCkgY29uc3QK
</data>
<flag name="commit-queue"
          id="203666"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184825</attachid>
            <date>2013-01-25 15:49:27 -0800</date>
            <delta_ts>2013-01-28 16:03:00 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>webkit-spell.patch</filename>
            <type>text/plain</type>
            <size>70943</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5M2ZhNzZmLi4yN2ZlZWIz
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTMtMDEtMjUgIFJvdXNsYW4gU29sb21ha2hpbiAgPHJvdXNsYW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEV4cG9ydCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlciBmb3Ig
dXNlIGJ5IEludGVybmFsczo6YWRkU3BlbGxpbmdNYXJrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjgxNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlcjogRXhwb3J0IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyLgorCiAyMDEz
LTAxLTI1ICBKdXNzaSBLdWtrb25lbiAgPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIAogICAg
ICAgICBbQ01ha2VdW0VGTF0gQnVpbGQgVGhpcmRQYXJ0eS9sZXZlbGRiIHdoZW4gSW5kZXhlZERC
IGlzIGVuYWJsZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA1MzczMWY1Li42NjUxYmRhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYg
QEAKKzIwMTMtMDEtMjUgIFJvdXNsYW4gU29sb21ha2hpbiAgPHJvdXNsYW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFRlc3RzIGZvciBDaHJvbWl1bSBzcGVsbCBjaGVja2VyIGJlaGF2aW9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4MTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyB0byBl
bnN1cmUgdGhhdCBDaHJvbWl1bSBzcGVsbCBjaGVjayBiZWhhdmVzIGFzIGZvbGxvd3M6CisgICAg
ICAgIC0gQ2hyb21pdW0gc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIG9uIGNvbnRleHQgY2xp
Y2suCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3Rz
IHRoZSBtaXNzcGVsbGVkIHdvcmQgZXhhY3RseS4KKyAgICAgICAgLSBJZiB0aGUgd29yZCBpcyBu
b3QgbWlzc3BlbGxlZCwgdGhlcmUgc2hvdWxkIGJlIG5vIHNwZWxsaW5nIG9wdGlvbnMgaW4gdGhl
IGNvbnRleHQgbWVudS4KKyAgICAgICAgLSBDaHJvbWUgc2hvdWxkIHNlbGVjdCBtdWx0aS13b3Jk
IG1pc3NwZWxsaW5ncyBvbiBjb250ZXh0IGNsaWNrLgorICAgICAgICAtIFNwZWxsaW5nIHNob3Vs
ZCB3b3JrIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIG11bHRpLXdvcmQgbWlzc3BlbGxpbmcgZXhh
Y3RseS4KKyAgICAgICAgLSBTcGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQg
bWlzc3BlbGxpbmdzLgorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCBpZ25vcmUgd2hpdGVzcGFj
ZS4KKyAgICAgICAgLSBVbmRlcnNjb3JlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNl
OiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uCisgICAgICAgIC0gUHVuY3R1YXRpb24gbWFy
a3Mgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hvdWxkIGlnbm9y
ZSB0aGVtLgorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHVzZXIg
c2VsZWN0cyBhIHBhcnQgb2YgbWlzc3BlbGxpbmcuCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxk
IGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5v
dCBhIHNpbmdsZSBtaXNzcGVsbGluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3Vi
bGUtY2xpY2tlZC13b3JkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jk
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1z
ZWxlY3RlZC13b3JkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlw
bGUtd29yZHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1z
aG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVh
dGlvbi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0
aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1z
ZWxlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24uaHRt
bDogQWRkZWQuCisKIDIwMTMtMDEtMjUgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgY2hyb21pdW0gc3ZnIHJlYmFzZWxpbmUuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3Jk
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjU0Y2Q5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDIwIEBACitTcGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQgbWlz
c3BlbGxpbmdzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIGRvdWJs
ZS1jbGljayBvbiAnd2VsbGNvbWUnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9u
LiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGwgY2hl
Y2sgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNw
ZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0
cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkgaXMgIndlbGxjb21lIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxl
bWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IGlzICJ3ZWxsY29tZSAiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAi
d2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxs
Y29tZSAiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5n
dGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQt
d29yZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13
aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40ZTViNTZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdp
dGgtdW5kZXJzY29yZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1NwZWxsaW5nIHNo
b3VsZCB3b3JrIGZvciBkb3VibGUtY2xpY2tlZCBtaXNzcGVsbGVkIHdvcmRzIHdpdGggdW5kZXJz
Y29yZXMuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lXyBob21lLicsIGRvdWJsZS1j
bGljayBvbiAnd2VsbGNvbWVfJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4g
VGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsIGNoZWNr
IHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVs
bGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSBpcyAid2VsbGNvbWVfIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3Ry
aW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmco
KSBpcyAid2VsbGNvbWVfIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxl
bWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IGlzICJ3ZWxsY29tZV8gIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMg
IndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2Vs
bGNvbWVfICIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxl
bmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCit3ZWxsY29tZV8gaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNr
ZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11
bmRlcnNjb3Jlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyMzA2
MzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jl
cy5odG1sCkBAIC0wLDAgKzEsMTA4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8
ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxz
Y3JpcHQ+CisKK2Z1bmN0aW9uIHZlcmlmeShucmV0cnkpCit7CisgICAgaWYgKCFucmV0cnkpIHsK
KyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1sw
XSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0
aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOwor
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7
CisKKyAgICAvLyBEb3VibGUtY2xpY2sgdGhlIG1pc3NwZWxsZWQgd29yZCB3aXRob3V0IHRoZSB0
cmFpbGluZyB3aGl0ZXNwYWNlLgorICAgIHRlc3RSdW5uZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0
ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9
IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRU
b3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lXyIpOworCisgICAgLy8gQ29udGV4dCBj
bGljayBvbiAid2VsbGNvbWVfIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgeCA9IGRl
c3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVm
dCArIDQwOworICAgIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVz
dGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0g
ZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBj
b250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2Rl
KDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5t
YXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwg
MCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3Ry
aW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lXyIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0
aCAtIDFdIiwgIndlbGNvbWUiKTsKKworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVB
bGxSYW5nZXMoKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gRG91YmxlLWNsaWNrIHRoZSBtaXNzcGVs
bGVkIHdvcmQgd2l0aCB0aGUgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKyAgICB0ZXN0UnVubmVyLnNl
dFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQodHJ1ZSk7CisgICAgdmFyIHggPSBkZXN0
aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQg
KyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURv
d24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lXyAiKTsK
KworICAgIC8vIENvbnRleHQgY2xpY2sgb24gIndlbGxjb21lXyAiIHRvIHNob3cgdGhlIGNvbnRl
eHQgbWVudS4KKyAgICB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBh
cmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZz
ZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNv
bnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBF
c2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3du
KFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtl
clJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5v
ZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxs
aW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWVf
ICIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250
ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKKyAgICAKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAganNUZXN0SXNBc3luYyA9
IHRydWU7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJs
ZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCh0
cnVlKTsKKyAgICB2YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVz
dGluYXRpb24iKTsKKyAgICBkZXN0aW5hdGlvbi5mb2N1cygpOworICAgIGRvY3VtZW50LmV4ZWND
b21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ3ZWxsY29tZV8gaG9tZS4iKTsKKyAgICB3aW5k
b3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5KDEwKTsgfSwgMCk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJTcGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxl
ZCB3b3JkcyB3aXRoIHVuZGVyc2NvcmVzLiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVh
bGx5LCB0eXBlICd3ZWxsY29tZV8gaG9tZS4nLCBkb3VibGUtY2xpY2sgb24gJ3dlbGxjb21lXycs
IGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uICIgKworICAgICAgICAgICAgIlRo
ZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93cyBzcGVsbCBjaGVjayBz
dWdnZXN0aW9ucy4iKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHRlc3QoKTsKKworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91Ymxl
LWNsaWNrZWQtd29yZC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJmNmU5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91Ymxl
LWNsaWNrZWQtd29yZC5odG1sCkBAIC0wLDAgKzEsMTA2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250
YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2Pgor
PC9kaXY+CisKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHZlcmlmeShucmV0cnkpCit7CisgICAgaWYg
KCFucmV0cnkpIHsKKyAgICAgICAgZmluaXNoSlNUZXN0KCkKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmICghaW50ZXJuYWxzLm1hcmtlckNvdW50Rm9yTm9kZShkZXN0aW5hdGlvbi5j
aGlsZE5vZGVzWzBdLCAic3BlbGxpbmciKSkgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91dChm
dW5jdGlvbigpIHsgdmVyaWZ5KG5yZXRyeSAtIDEpOyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VG
b3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndl
bGxjb21lIik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSIsICIiKTsKKworICAgIC8vIERvdWJsZS1jbGljayB0aGUgbWlzc3BlbGxlZCB3b3JkIHdp
dGhvdXQgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpOworICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAg
dmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24u
b2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKworICAgIC8vIENvbnRl
eHQgY2xpY2sgb24gIndlbGxjb21lIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgeCA9
IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0
TGVmdCArIDQwOworICAgIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsg
ZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRz
ID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRo
ZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJD
b2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFs
cy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5n
IiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRv
U3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVu
Z3RoIC0gMV0iLCAid2VsY29tZSIpOworCisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92
ZUFsbFJhbmdlcygpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBEb3VibGUtY2xpY2sgdGhlIG1pc3Nw
ZWxsZWQgd29yZCB3aXRoIHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgdGVzdFJ1bm5lci5zZXRT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKHRydWUpOworICAgIHZhciB4ID0gZGVzdGlu
YXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsg
NDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVz
dGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUgIik7CisKKyAg
ICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSAiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVu
dS4KKyAgICB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5h
dGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5v
ZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWln
aHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRN
ZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5
IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmlu
Zy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdl
ID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBd
LCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFy
a2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUgIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51
RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworICAgIAorICAgIGZpbmlzaEpTVGVz
dCgpCit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwor
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRydWUp
OworICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1
ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQodHJ1ZSk7Cisg
ICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9u
Iik7CisgICAgZGVzdGluYXRpb24uZm9jdXMoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgi
SW5zZXJ0VGV4dCIsIGZhbHNlLCAid2VsbGNvbWUgaG9tZS4iKTsKKyAgICB3aW5kb3cuc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5KDEwKTsgfSwgMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJT
cGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxpbmdzLiAiICsK
KyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIGRv
dWJsZS1jbGljayBvbiAnd2VsbGNvbWUnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0
aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0
IG1lbnUgc2hvd3Mgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CitpZiAod2luZG93LmludGVy
bmFscykKKyAgICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGI5MmY4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBtdWx0
aS13b3JkIG1pc3NwZWxsaW5nIGV4YWN0bHkuIFRvIHRlc3QgbWFudWFsbHksIGVuYWJsZSAnQXNr
IEdvb2dsZSBmb3IgU3VnZ2VzdGlvbnMnLCB0eXBlICdJdCBzaG91bGQgYmUgdXBwZXIgY2FzZScs
IHNlbGVjdCAndXBwZXIgY2FzZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24u
VGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsaW5nIHN1
Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGlu
Z01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3Ry
aW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCitJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3Rs
eS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxl
LXdvcmRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZhYWI2OQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5odG1sCkBA
IC0wLDAgKzEsNjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRl
c3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGludGVybmFs
cy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRydWUpOworICAgIHRlc3RS
dW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgdGVz
dFJ1bm5lci5zZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5l
ci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGZhbHNlKTsKKworICAgIHZhciBk
ZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAg
IGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRl
eHQiLCBmYWxzZSwgIkl0IHNob3VsZCBiZSB1cHBlciBjYXNlLiIpOworCisgICAgLy8gSW5qZWN0
IGEgbXVsdGktd29yZCBtaXNzcGVsbGluZy4KKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0s
IDEzKTsKKyAgICByYW5nZS5zZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMjMpOwor
ICAgIHdpbmRvdy5pbnRlcm5hbHMuYWRkU3BlbGxpbmdNYXJrZXIocmFuZ2UpOworCisgICAgc3Bl
bGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRp
b24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAidXBwZXIgY2FzZSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCki
LCAiIik7CisgICAgCisgICAgLy8gU2VsZWN0IHRoZSBtdWx0aS13b3JkIG1pc3NwZWxsaW5nIHdp
dGhvdXQgc3Vycm91bmRpbmcgd2hpdGVzcGFjZSBvciBwdW5jdHVhdGlvbi4KKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgdmFyIHdvcmRSYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgd29yZFJhbmdlLnNldFN0YXJ0KGRlc3RpbmF0aW9u
LmNoaWxkTm9kZXNbMF0sIDEzKTsKKyAgICB3b3JkUmFuZ2Uuc2V0RW5kKGRlc3RpbmF0aW9uLmNo
aWxkTm9kZXNbMF0sIDIzKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uod29y
ZFJhbmdlKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkiLCAidXBwZXIgY2FzZSIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBv
biAidXBwZXIgY2FzZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVz
dGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0
ICsgMTAwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCAr
IGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50
cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0
aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFy
Q29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5h
bHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGlu
ZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50
b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKKworICAgIGZp
bmlzaEpTVGVzdCgpCit9CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgd29yayB3aGVu
IHRoZSB1c2VyIHNlbGVjdHMgYSBtdWx0aS13b3JkIG1pc3NwZWxsaW5nIGV4YWN0bHkuICIgKwor
ICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIGVuYWJsZSAnQXNrIEdvb2dsZSBmb3IgU3Vn
Z2VzdGlvbnMnLCB0eXBlICdJdCBzaG91bGQgYmUgdXBwZXIgY2FzZScsIHNlbGVjdCAndXBwZXIg
Y2FzZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIiArCisgICAgICAgICAg
ICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsaW5n
IHN1Z2dlc3Rpb25zLiIpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgdGVzdCgpOworCis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFj
dGx5LXNlbGVjdGVkLXdvcmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1ODk4YzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNyBAQAorU3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIHRo
ZSBtaXNzcGVsbGVkIHdvcmQgZXhhY3RseS4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNv
bWUgaG9tZS4nLCBzZWxlY3Rpb24gJ3dlbGxjb21lJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhl
IHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dz
IHNwZWxsaW5nIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHNwZWxs
aW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1MgY29udGV4dE1lbnVFbGVt
ZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiaG9tZSIKK1BBU1Mgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImhvbWUiCitQQVNTIGNvbnRleHRNZW51RWxlbWVu
dHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAiPHNlcGFyYXRvcj4iCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lIGhv
bWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC5odG1sIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVj
dGVkLXdvcmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzZmMGNl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQuaHRtbApAQCAtMCwwICsx
LDkxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlv
biIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Z1bmN0aW9u
IHZlcmlmeShucmV0cnkpCit7CisgICAgaWYgKCFucmV0cnkpIHsKKyAgICAgICAgZmluaXNoSlNU
ZXN0KCkKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaW50ZXJuYWxzLm1hcmtl
ckNvdW50Rm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciKSkgewor
ICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5KG5yZXRyeSAtIDEp
OyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFNlbGVjdCB0aGUgbWlz
c3BlbGxlZCB3b3JkIHdpdGhvdXQgc3Vycm91bmRpbmcgd2hpdGVzcGFjZSBvciBwdW5jdHVhdGlv
bi4KKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgdmFy
IHdvcmRSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgd29yZFJhbmdlLnNldFN0
YXJ0KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDApOworICAgIHdvcmRSYW5nZS5zZXRFbmQo
ZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgOCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHdvcmRSYW5nZSk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJu
YWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxp
bmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2Uu
dG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKworICAgIC8vIENv
bnRleHQgY2xpY2sgb24gIndlbGxjb21lIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAg
dmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9u
Lm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5v
ZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWln
aHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRN
ZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5
IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmlu
Zy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdl
ID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBd
LCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFy
a2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVF
bGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisgICAgCisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdvcmRSYW5nZS5zZXRTdGFydChkZXN0
aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCA5KTsKKyAgICB3b3JkUmFuZ2Uuc2V0RW5kKGRlc3RpbmF0
aW9uLmNoaWxkTm9kZXNbMF0sIDEzKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFu
Z2Uod29yZFJhbmdlKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIiwgImhvbWUiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24g
ImhvbWUiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9u
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDgwOwor
ICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0
aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50
U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4
dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAw
MUIpLCBudWxsKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkiLCAiaG9tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
Y29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIjxz
ZXBhcmF0b3I+Iik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U21h
cnRJbnNlcnREZWxldGVFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U2VsZWN0VHJh
aWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9j
dXMoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAid2Vs
bGNvbWUgaG9tZS4iKTsKKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5
KDEwKTsgfSwgMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgd29yayB3aGVu
IHRoZSB1c2VyIHNlbGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBleGFjdGx5LiAiICsKKyAgICAg
ICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIHNlbGVjdGlv
biAnd2VsbGNvbWUnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiAiICsKKyAg
ICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mg
c3BlbGxpbmcgc3VnZ2VzdGlvbnMuIik7CitpZiAod2luZG93LmludGVybmFscykKKyAgICB0ZXN0
KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLW11bHRpd29yZC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9u
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjBkZDJi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE1IEBACitTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVj
dHMgbXVsdGlwbGUgd29yZHMgdGhhdCBhcmUgbm90IGEgc2luZ2xlIG1pc3NwZWxsaW5nLiBUbyB0
ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIHNlbGVjdCAnd2VsbGNvbWUgaG9t
ZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2VlZHMg
d2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBubyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50
b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndl
bGxjb21lIGhvbWUiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2Vs
bGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29t
ZSBob21lIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVu
Z3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQt
c2VsZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLW11bHRpd29yZC1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45ZTZjYWM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQt
c2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVy
Ij4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2
PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQoreworICAgIGlmICghbnJl
dHJ5KSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpCisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGRO
b2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9k
ZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29t
ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkiLCAiIik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFu
Z2VzKCk7CisgICAgdmFyIG11bHRpV29yZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
KyAgICBtdWx0aVdvcmRSYW5nZS5zZXRTdGFydChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAw
KTsKKyAgICBtdWx0aVdvcmRSYW5nZS5zZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwg
MTMpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShtdWx0aVdvcmRSYW5nZSk7
CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIiwgIndlbGxjb21lIGhvbWUiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgdG8gc2hv
dyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBk
ZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9w
ICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4
dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAg
ZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOwor
CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUo
ZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUi
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIiwgIndlbGxjb21lIGhvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNv
bnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICI8c2Vw
YXJhdG9yPiIpOworCisgICAgZmluaXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gdGVzdCgpCit7
CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVu
aWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNtYXJ0
SW5zZXJ0RGVsZXRlRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3Vz
KCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIndlbGxj
b21lIGhvbWUuIik7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgx
MCk7IH0sIDApOworfQorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVk
IHdoZW4gdXNlciBzZWxlY3RzIG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmdsZSBt
aXNzcGVsbGluZy4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2Vs
bGNvbWUgaG9tZS4nLCBzZWxlY3QgJ3dlbGxjb21lIGhvbWUnLCBhbmQgY29udGV4dC1jbGljayBv
biB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNlZWRzIHdoZW4g
dGhlIGNvbnRleHQgbWVudSBoYXMgbm8gc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CitpZiAo
d2luZG93LmludGVybmFscykKKyAgICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29y
ZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjE0NzZlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEzIEBACitDaHJvbWUgc2hvdWxkIHNlbGVjdCBtdWx0aS13b3JkIG1pc3NwZWxsaW5ncyBv
biBjb250ZXh0IGNsaWNrLiBUbyB0ZXN0IG1hbnVhbGx5LCBlbmFibGUgJ0FzayBHb29nbGUgZm9y
IHN1Z2dlc3Rpb25zJywgdHlwZSAnSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuJywgYW5kIGNvbnRl
eHQtY2xpY2sgb24gdGhlIHdvcmQgJ3VwcGVyJy4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiAndXBw
ZXIgY2FzZScgd2FzIHNlbGVjdGVkIGFmdGVyIGNvbnRleHQgY2xpY2suCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBp
cyAidXBwZXIgY2FzZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMg
IiIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgor
UEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSXQgc2hvdWxk
IGJlIHVwcGVyIGNhc2UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMu
aHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjU2NTIyNGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxl
Y3QtbXVsdGlwbGUtd29yZHMuaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJj
b250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2
PgorPC9kaXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2Vy
RW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZChmYWxzZSk7CisKKyAgICB2YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZGVzdGluYXRpb24iKTsKKyAgICBkZXN0aW5hdGlvbi5mb2N1cygpOworICAgIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJJdCBzaG91bGQgYmUgdXBwZXIg
Y2FzZS4iKTsKKworICAgIC8vIEluamVjdCBhIG11bHRpLXdvcmQgbWlzc3BlbGxpbmcuCisgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydChk
ZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAxMyk7CisgICAgcmFuZ2Uuc2V0RW5kKGRlc3RpbmF0
aW9uLmNoaWxkTm9kZXNbMF0sIDIzKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLmFkZFNwZWxsaW5n
TWFya2VyKHJhbmdlKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFy
a2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDAp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmlu
ZygpIiwgInVwcGVyIGNhc2UiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBv
biAidXBwZXIgY2FzZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVz
dGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0
ICsgMTAwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCAr
IGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50
cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0
aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFy
Q29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5h
bHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGlu
ZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50
b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKKworICAgIGZp
bmlzaEpTVGVzdCgpCit9CisKK2Rlc2NyaXB0aW9uKCJDaHJvbWUgc2hvdWxkIHNlbGVjdCBtdWx0
aS13b3JkIG1pc3NwZWxsaW5ncyBvbiBjb250ZXh0IGNsaWNrLiAiKworICAgICAgICAgICAgIlRv
IHRlc3QgbWFudWFsbHksIGVuYWJsZSAnQXNrIEdvb2dsZSBmb3Igc3VnZ2VzdGlvbnMnLCB0eXBl
ICdJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgd29y
ZCAndXBwZXInLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVuICd1cHBl
ciBjYXNlJyB3YXMgc2VsZWN0ZWQgYWZ0ZXIgY29udGV4dCBjbGljay4iKTsKK2lmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgIHRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiODcwZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3Vs
ZC1zZWxlY3Qtc2luZ2xlLXdvcmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK0Nocm9t
ZSBzZWxlY3RzIHRoZSBtaXNzcGVsbGVkIHdvcmQgb24gY29udGV4dCBjbGljay4gVG8gdGVzdCBt
YW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nIGFuZCBjb250ZXh0LWNsaWNrIG9uICd3ZWxs
Y29tZScuIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gJ3dlbGxjb21lJyBpcyBzZWxlY3RlZCBhZnRl
ciB0aGUgY29udGV4dCBjbGljay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRl
eHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIGlzICIiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVt
ZW50cy5sZW5ndGggLSAxXSBpcyAiPHNlcGFyYXRvcj4iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lIGhvbWUuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNo
b3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MTkxZjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQuaHRtbApAQCAtMCwwICsxLDgxIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29u
dGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHZlcmlm
eShucmV0cnkpCit7CisgICAgaWYgKCFucmV0cnkpIHsKKyAgICAgICAgZmluaXNoSlNUZXN0KCkK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaW50ZXJuYWxzLm1hcmtlckNvdW50
Rm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciKSkgeworICAgICAg
ICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5KG5yZXRyeSAtIDEpOyB9LCAw
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBp
bnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJz
cGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIENvbnRl
eHQgY2xpY2sgb24gIndlbGxjb21lIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFy
IHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9m
ZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZz
ZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQg
LyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51
RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRv
IGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5m
cm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0g
aW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAi
c3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2Vy
UmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVt
ZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisgICAgCisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBDb250ZXh0IGNs
aWNrIG9uICJob21lIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0
aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQg
KyA4MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMg
PSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhl
IGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNv
ZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwg
IjxzZXBhcmF0b3I+Iik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0
U21hcnRJbnNlcnREZWxldGVFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgdmFyIGRlc3RpbmF0aW9uID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24u
Zm9jdXMoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAi
d2VsbGNvbWUgaG9tZS4iKTsKKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVy
aWZ5KDEwKTsgfSwgMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJDaHJvbWUgc2VsZWN0cyB0aGUgbWlz
c3BlbGxlZCB3b3JkIG9uIGNvbnRleHQgY2xpY2suICIgKworICAgICAgICAgICAgIlRvIHRlc3Qg
bWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIGhvbWUuJyBhbmQgY29udGV4dC1jbGljayBvbiAnd2Vs
bGNvbWUnLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVuICd3ZWxsY29t
ZScgaXMgc2VsZWN0ZWQgYWZ0ZXIgdGhlIGNvbnRleHQgY2xpY2suIik7CitpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vi
d29yZC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjA5N2VlNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hl
biB1c2VyIHNlbGVjdHMgYSBwYXJ0IG9mIG1pc3NwZWxsaW5nLiBUbyB0ZXN0IG1hbnVhbGx5LCB0
eXBlICd3ZWxsY29tZSBob21lLicgc2VsZWN0ICdsbGNvJywgYW5kIGNvbnRleHQtY2xpY2sgb24g
dGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFz
IG5vIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgor
UEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAibGxjbyIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkgaXMgImxsY28iCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1l
bnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAiPHNlcGFyYXRvcj4iCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lIGhvbWUuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRiMGI1YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
c3Vid29yZC1zZWxlY3Rpb24uaHRtbApAQCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJj
b250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2
PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHZlcmlmeShucmV0cnkpCit7CisgICAg
aWYgKCFucmV0cnkpIHsKKyAgICAgICAgZmluaXNoSlNUZXN0KCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmICghaW50ZXJuYWxzLm1hcmtlckNvdW50Rm9yTm9kZShkZXN0aW5hdGlv
bi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciKSkgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91
dChmdW5jdGlvbigpIHsgdmVyaWZ5KG5yZXRyeSAtIDEpOyB9LCAwKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFu
Z2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwg
IndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1v
dmVBbGxSYW5nZXMoKTsKKyAgICB2YXIgc3ViV29yZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICBzdWJXb3JkUmFuZ2Uuc2V0U3RhcnQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1sw
XSwgMik7CisgICAgc3ViV29yZFJhbmdlLnNldEVuZChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBd
LCA2KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uoc3ViV29yZFJhbmdlKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgImxsY28iKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgdG8gc2hvdyB0aGUgY29udGV4
dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQg
KyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRp
b24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsK
KyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7Cisg
ICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIu
a2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxp
bmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24u
Y2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgImxs
Y28iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29u
dGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICI8c2VwYXJhdG9yPiIpOworCisgICAgZmlu
aXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAganNUZXN0SXNBc3luYyA9
IHRydWU7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJs
ZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCh0
cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQo
ZmFsc2UpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJk
ZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIndlbGxjb21lIGhvbWUuIik7CisgICAgd2lu
ZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOworfQorCitkZXNj
cmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIGEg
cGFydCBvZiBtaXNzcGVsbGluZy4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwg
dHlwZSAnd2VsbGNvbWUgaG9tZS4nIHNlbGVjdCAnbGxjbycsIGFuZCBjb250ZXh0LWNsaWNrIG9u
IHRoZSBzZWxlY3Rpb24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2VlZHMgd2hlbiB0
aGUgY29udGV4dCBtZW51IGhhcyBubyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKK2lmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgIHRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIyMTgwZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUg
QEAKK1B1bmN0dWF0aW9uIG1hcmtzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNw
ZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNv
bWUhJywgc2VsZWN0ICd3ZWxsY29tZSEnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0
aW9uLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIHNwZWxsIGNo
ZWNrIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBz
cGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUhIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRv
U3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAid2VsbGNvbWUhIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51
RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lIQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1
bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhNTNlM2YKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRl
bnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiB2ZXJpZnko
bnJldHJ5KQoreworICAgIGlmICghbnJldHJ5KSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZv
ck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAg
d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50
ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3Bl
bGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFu
Z2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICB2YXIgcmFuZ2Ug
PSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KGRlc3RpbmF0aW9u
LmNoaWxkTm9kZXNbMF0sIDApOworICAgIHJhbmdlLnNldEVuZChkZXN0aW5hdGlvbi5jaGlsZE5v
ZGVzWzBdLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAid2VsbGNvbWUhIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIHRvIHNob3cgdGhlIGNv
bnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRp
b24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3Rp
bmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwg
eSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygp
OworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNw
ZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0
aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIs
ICJ3ZWxsY29tZSEiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxl
bWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisKKyAg
ICBmaW5pc2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2Vy
RW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZChmYWxzZSk7CisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9jdXMoKTsKKyAgICBkb2N1bWVu
dC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAid2VsbGNvbWUhIik7CisgICAgd2lu
ZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOworfQorCitkZXNj
cmlwdGlvbigiUHVuY3R1YXRpb24gbWFya3Mgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFj
ZTogc3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB0aGVtLiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0
IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSEnLCBzZWxlY3QgJ3dlbGxjb21lIScsIGFuZCBjb250
ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1
Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMu
Iik7CitpZiAod2luZG93LmludGVybmFscykKKyAgICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1z
ZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTE0NDYxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE1IEBACitVbmRlcnNjb3JlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBz
cGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ0hpLCBf
d2VsbGNvbWVfIGhvbWUuJywgc2VsZWN0ICdfd2VsbGNvbWVfJywgYW5kIGNvbnRleHQtY2xpY2sg
b24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51
IGhhcyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIK
K1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIl93ZWxsY29tZV8iCitQQVNTIHNwZWxsaW5n
TWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIGlzICJfd2VsbGNvbWVfIgorUEFTUyBjb250ZXh0TWVudUVsZW1l
bnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0hpLCBfd2VsbGNvbWVf
IGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11
bmRlcnNjb3JlLXNlbGVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjk1NTIyNmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24u
aHRtbApAQCAtMCwwICsxLDc1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2
IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3Jp
cHQ+CisKK2Z1bmN0aW9uIHZlcmlmeShucmV0cnkpCit7CisgICAgaWYgKCFucmV0cnkpIHsKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCkKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgh
aW50ZXJuYWxzLm1hcmtlckNvdW50Rm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAi
c3BlbGxpbmciKSkgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVy
aWZ5KG5yZXRyeSAtIDEpOyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNw
ZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0
aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIs
ICIiKTsKKworICAgIC8vIFNlbGVjdCB0aGUgdGV4dCAiX3dlbGxjb21lXyIuCisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHZhciByYW5nZVdpdGhVbmRl
cnNjb3JlcyA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2VXaXRoVW5kZXJzY29y
ZXMuc2V0U3RhcnQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgNCk7CisgICAgcmFuZ2VXaXRo
VW5kZXJzY29yZXMuc2V0RW5kKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDE0KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2VXaXRoVW5kZXJzY29yZXMpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCki
LCAiX3dlbGxjb21lXyIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBvbiAiX3dlbGxjb21lXyIg
dG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgODA7CisgICAgdmFy
IHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zm
c2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIu
Y29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUu
CisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51
bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZv
ck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2Vs
bGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIiwgIl93ZWxsY29tZV8iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3
ZWxjb21lIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5p
ZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U2VsZWN0VHJhaWxp
bmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9jdXMo
KTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiSGksIF93
ZWxsY29tZV8gaG9tZS4iKTsKKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVy
aWZ5KDEwKTsgfSwgMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJVbmRlcnNjb3JlcyBzaG91bGQgYmUg
dHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uICIgKwor
ICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ0hpLCBfd2VsbGNvbWVfIGhvbWUu
Jywgc2VsZWN0ICdfd2VsbGNvbWVfJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlv
bi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBt
ZW51IGhhcyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgIHRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdp
dGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjg0MzU1MTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFj
ZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1NwZWxsaW5nIHNob3Vs
ZCBpZ25vcmUgd2hpdGVzcGFjZS4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnaGVsbG8sIHdlbGxj
b21lIGhvbWUuJywgc2VsZWN0ICcgd2VsbGNvbWUgJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhl
IHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBz
cGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mg
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiB3ZWxsY29tZSAiCitQQVNTIHNw
ZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIgd2VsbGNvbWUgIgorUEFTUyBjb250ZXh0TWVu
dUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK2hlbGxvLCB3
ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44OTc1NzU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2Vs
ZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4K
KyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2Pgor
Cis8c2NyaXB0PgorCitmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQoreworICAgIGlmICghbnJldHJ5
KSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rl
c1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShk
ZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIp
OworCisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHZh
ciByYW5nZVdpdGhXaGl0ZXNwYWNlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZVdpdGhXaGl0ZXNwYWNlLnNldFN0YXJ0KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDYpOwor
ICAgIHJhbmdlV2l0aFdoaXRlc3BhY2Uuc2V0RW5kKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0s
IDE2KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2VXaXRoV2hpdGVz
cGFjZSk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSIsICIgd2VsbGNvbWUgIik7CisKKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9m
ZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDgwOworICAg
IHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9u
Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2Vu
ZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIGVzYyBrZXkgdG8ga2lsbCB0aGUgY29udGV4dCBt
ZW51CisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiks
IG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5n
ZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAi
d2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIiwgIiB3ZWxsY29tZSAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIs
ICJ3ZWxjb21lIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U21h
cnRJbnNlcnREZWxldGVFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U2VsZWN0VHJh
aWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9j
dXMoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiaGVs
bG8sIHdlbGxjb21lIGhvbWUuIik7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHZlcmlmeSgxMCk7IH0sIDApOworfQorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIGln
bm9yZSB3aGl0ZXNwYWNlLiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBl
ICdoZWxsbywgd2VsbGNvbWUgaG9tZS4nLCBzZWxlY3QgJyB3ZWxsY29tZSAnLCBhbmQgY29udGV4
dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNj
ZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLiIp
OworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgdGVzdCgpOworCis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlhNDY1YmQuLmI4NGYwOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMy0wMS0yNSAgUm91c2xhbiBTb2xvbWFr
aGluICA8cm91c2xhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTmV3IG1ldGhvZCBmb3IgbWFu
dWFsbHkgYWRkaW5nIHNwZWxsIGNoZWNrIG1hcmtlcnMgZm9yIHRlc3RpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjgxNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9taXVtIHNwZWxsIGNoZWNr
IGNhbiBkZXRlY3QgbXVsdGktd29yZCBtaXNzcGVsbGluZ3MsIGJ1dCBjYW5ub3QgY29ycmVjdCB0
aGVtLiBUaGUgbmV3IG1ldGhvZAorICAgICAgICBpcyB1c2VkIGJ5IHRlc3RzIHRvIGFkZCBtdWx0
aS13b3JkIG1pc3NwZWxsaW5nIG1hcmtlcnMuCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL2No
cm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5odG1s
CisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRtbAorCisgICAgICAgICogV2ViQ29y
ZS5leHAuaW46CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjphZGRTcGVsbGluZ01hcmtlcik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFs
cyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEzLTAxLTI1ICBUb255
IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IGFuIEFTU0VS
VCBpbiBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6YXBwZW5kUGFydGlhbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgppbmRleCA4NGNiNGY5Li5jYjQ5MzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNjY2LDYg
KzY2Niw3IEBAIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyMTBtYXJrZXJz
Rm9yRVBOU180Tm9kZUVOU18xNERvY3VtZW50TWFya2VyCiBfX1pON1dlYkNvcmUyNERvY3VtZW50
TWFya2VyQ29udHJvbGxlcjEzcmVtb3ZlTWFya2Vyc0VOU18xNERvY3VtZW50TWFya2VyMTFNYXJr
ZXJUeXBlc0UKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyMThhZGRUZXh0
TWF0Y2hNYXJrZXJFUEtOU181UmFuZ2VFYgogX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIyM3JlbmRlcmVkUmVjdHNGb3JNYXJrZXJzRU5TXzE0RG9jdW1lbnRNYXJrZXIxME1h
cmtlclR5cGVFCitfX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjlhZGRNYXJr
ZXJFUE5TXzVSYW5nZUVOU18xNERvY3VtZW50TWFya2VyMTBNYXJrZXJUeXBlRQogX19aTjdXZWJD
b3JlMjRGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIxMm9ic2VydmVGcmFtZUVQTlNfNUZyYW1lRQog
X19aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIxNGZyYW1lRGVzdHJveWVkRXYK
IF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyMTR3aWxsRGV0YWNoUGFnZUV2
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggY2NmMTQwNi4uNjI2MDgyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtODk4LDYgKzg5OCwxMSBAQCB2
b2lkIEludGVybmFsczo6YWRkVGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdlKiByYW5nZSwgYm9v
bCBpc0FjdGl2ZSkKICAgICByYW5nZS0+b3duZXJEb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZFRl
eHRNYXRjaE1hcmtlcihyYW5nZSwgaXNBY3RpdmUpOwogfQogCit2b2lkIEludGVybmFsczo6YWRk
U3BlbGxpbmdNYXJrZXIoUmFuZ2UqIHJhbmdlKQoreworICAgIHJhbmdlLT5vd25lckRvY3VtZW50
KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJhbmdlLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcp
OworfQorCiB2b2lkIEludGVybmFsczo6c2V0U2Nyb2xsVmlld1Bvc2l0aW9uKERvY3VtZW50KiBk
b2N1bWVudCwgbG9uZyB4LCBsb25nIHksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICgh
ZG9jdW1lbnQgfHwgIWRvY3VtZW50LT52aWV3KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCmluZGV4IDYxNzE4YzAuLjIxMWNkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aApAQCAtMTM5LDYgKzEzOSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFJhbmdlPiBtYXJr
ZXJSYW5nZUZvck5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgdW5zaWduZWQg
aW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTdHJpbmcgbWFya2VyRGVzY3JpcHRpb25Gb3JO
b2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoY29uc3QgUmFuZ2UqLCBi
b29sIGlzQWN0aXZlKTsKKyAgICB2b2lkIGFkZFNwZWxsaW5nTWFya2VyKFJhbmdlKik7CiAKICAg
ICB2b2lkIHNldFNjcm9sbFZpZXdQb3NpdGlvbihEb2N1bWVudCosIGxvbmcgeCwgbG9uZyB5LCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBtb2RlLCBpbnQgZ2FwLCBFeGNlcHRpb25Db2RlJiBlYykgeyBzZXRQ
YWdpbmF0aW9uKGRvY3VtZW50LCBtb2RlLCBnYXAsIDAsIGVjKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCmluZGV4IDEzMzAzMmEuLjI2NWUyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKQEAgLTk5LDYgKzk5LDcgQEAKICAgICBSYW5nZSBtYXJrZXJSYW5n
ZUZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBET01TdHJpbmcgbWFya2VyVHlwZSwgaW4gdW5zaWdu
ZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgRE9NU3RyaW5nIG1hcmtl
ckRlc2NyaXB0aW9uRm9yTm9kZShpbiBOb2RlIG5vZGUsIGluIERPTVN0cmluZyBtYXJrZXJUeXBl
LCBpbiB1bnNpZ25lZCBsb25nIGluZGV4KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lk
IGFkZFRleHRNYXRjaE1hcmtlcihpbiBSYW5nZSByYW5nZSwgaW4gYm9vbGVhbiBpc0FjdGl2ZSk7
CisgICAgdm9pZCBhZGRTcGVsbGluZ01hcmtlcihpbiBSYW5nZSByYW5nZSk7CiAKICAgICB2b2lk
IHNldFNjcm9sbFZpZXdQb3NpdGlvbihpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyB4LCBp
biBsb25nIHkpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IGQ5MGUxMGQuLmQ1YWJmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDIgQEAKKzIwMTMtMDEtMjUgIFJvdXNsYW4gU29sb21ha2hpbiAgPHJvdXNsYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIENocm9taXVtIHNwZWxsIGNoZWNrIHNob3VsZCB3b3JrIHdp
dGggd2hpdGVzcGFjZSwgcHVuY3R1YXRpb24sIGFuZCBtdWx0aS13b3JkIG1pc3NwZWxsaW5ncwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2ODE1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IENocm9t
aXVtIHNwZWxsIGNoZWNrZXIgdG8gYmVoYXZlIGFzIGZvbGxvd3M6CisgICAgICAgIC0gQ2hyb21p
dW0gc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIG9uIGNvbnRleHQgY2xpY2suCisgICAgICAg
IC0gU3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIHRoZSBtaXNzcGVs
bGVkIHdvcmQgZXhhY3RseS4KKyAgICAgICAgLSBJZiB0aGUgd29yZCBpcyBub3QgbWlzc3BlbGxl
ZCwgdGhlcmUgc2hvdWxkIGJlIG5vIHNwZWxsaW5nIG9wdGlvbnMgaW4gdGhlIGNvbnRleHQgbWVu
dS4KKyAgICAgICAgLSBDaHJvbWUgc2hvdWxkIHNlbGVjdCBtdWx0aS13b3JkIG1pc3NwZWxsaW5n
cyBvbiBjb250ZXh0IGNsaWNrLgorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4g
dGhlIHVzZXIgc2VsZWN0cyBhIG11bHRpLXdvcmQgbWlzc3BlbGxpbmcgZXhhY3RseS4KKyAgICAg
ICAgLSBTcGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxpbmdz
LgorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCBpZ25vcmUgd2hpdGVzcGFjZS4KKyAgICAgICAg
LSBVbmRlcnNjb3JlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBz
aG91bGQgaWdub3JlIHRoZW0uCisgICAgICAgIC0gUHVuY3R1YXRpb24gbWFya3Mgc2hvdWxkIGJl
IHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB0aGVtLgorICAg
ICAgICAtIFNwZWxsaW5nIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHVzZXIgc2VsZWN0cyBhIHBh
cnQgb2YgbWlzc3BlbGxpbmcuCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVk
IHdoZW4gdXNlciBzZWxlY3RzIG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmdsZSBt
aXNzcGVsbGluZy4KKworICAgICAgICBUZXN0czogcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRt
bAorICAgICAgICAgICAgICAgcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1kb3VibGUtY2xpY2tlZC13b3JkLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2No
cm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBs
ZS13b3Jkcy5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC5odG1sCisgICAgICAgICAgICAg
ICBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW11bHRpd29yZC1z
ZWxlY3Rpb24uaHRtbAorICAgICAgICAgICAgICAgcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLmh0bWwKKyAgICAg
ICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hv
dWxkLXNlbGVjdC1zaW5nbGUtd29yZC5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJv
bWl1bS9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwKKyAg
ICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
d2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbAorICAgICAgICAgICAgICAgcGxhdGZvcm0v
Y2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0
aW9uLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1sCisKKyAgICAgICAgKiBz
cmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OklzV2hpdGVTcGFjZU9yUHVuY3R1YXRpb24pOiBOZXcgdXRpbGl0eSBmdW5jdGlv
biBmb3IgZGV0ZWN0aW5nIHdoaXRlc3BhY2UgYW5kIHB1bmN0dWF0aW9uIGluIHNlbGVjdGVkIHRl
eHQuCisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50SW1wbDo6Z2V0Q3VzdG9tTWVu
dUZyb21EZWZhdWx0SXRlbXMpOiBNb2RpZmllZCB0byB3b3JrIHdpdGggd2hpdGVzcGFjZSwgcHVu
Y3R1YXRpb24sIGFuZCBtdWx0aS13b3JkIG1pc3NwZWxsaW5ncy4KKyAgICAgICAgKiBzcmMvV2Vi
RnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpyZXBsYWNlTWlz
c3BlbGxlZFJhbmdlKTogRml4ZWQgaW5jb3JyZWN0IHJhbmdlIHJlcGxhY2VtZW50LiBDaHJvbWl1
bSB3aWxsIHVzZSB0aGlzIG1ldGhvZCBpbnN0ZWFkIG9mIHJlcGxhY2VSYW5nZS4KKwogMjAxMy0w
MS0yNSAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5k
ZXhlZERCOiBNb3ZlIFRhc2tUeXBlIGVudW0gdG8gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVu
dEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJ
bXBsLmNwcAppbmRleCAzMzk1NmJjLi4yM2NiOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKQEAgLTc4LDYgKzc4LDEy
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorLy8g
UmV0dXJucyB0cnVlIGZvciB3aGl0ZXNwYWNlIGFuZCBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLiBS
ZXR1cm5zIGZhbHNlIGZvciBldmVyeSBvdGhlciB0eXBlIG9mIGNoYXJhY3Rlci4KK3N0YXRpYyBi
b29sIElzV2hpdGVTcGFjZU9yUHVuY3R1YXRpb24oVUNoYXIgYykKK3sKKyAgICByZXR1cm4gV1RG
OjpVbmljb2RlOjppc1NlcGFyYXRvclNwYWNlKGMpIHx8IFdURjo6VW5pY29kZTo6aXNQdW5jdChj
KTsKK30KKwogLy8gRmlndXJlIG91dCB0aGUgVVJMIG9mIGEgcGFnZSBvciBzdWJmcmFtZS4gUmV0
dXJucyB8cGFnZV90eXBlfCBhcyB0aGUgdHlwZSwKIC8vIHdoaWNoIGluZGljYXRlcyBwYWdlIG9y
IHN1YmZyYW1lLCBvciBDb250ZXh0Tm9kZVR5cGU6Ok5PTkUgaWYgdGhlIFVSTCBjb3VsZCBub3QK
IC8vIGJlIGRldGVybWluZWQgZm9yIHNvbWUgcmVhc29uLgpAQCAtMTAyLDggKzEwOCw4IEBAIHN0
YXRpYyBib29sIGlzQVNpbmdsZVdvcmQoY29uc3QgU3RyaW5nJiB0ZXh0KQogfQogCiAvLyBIZWxw
ZXIgZnVuY3Rpb24gdG8gZ2V0IG1pc3NwZWxsZWQgd29yZCBvbiB3aGljaCBjb250ZXh0IG1lbnUK
LS8vIGlzIHRvIGJlIGV2b2xrZWQuIFRoaXMgZnVuY3Rpb24gYWxzbyBzZXRzIHRoZSB3b3JkIG9u
IHdoaWNoIGNvbnRleHQgbWVudQotLy8gaGFzIGJlZW4gZXZva2VkIHRvIGJlIHRoZSBzZWxlY3Rl
ZCB3b3JkLCBhcyByZXF1aXJlZC4gVGhpcyBmdW5jdGlvbiBjaGFuZ2VzCisvLyBpcyB0byBiZSBp
bnZva2VkLiBUaGlzIGZ1bmN0aW9uIGFsc28gc2V0cyB0aGUgd29yZCBvbiB3aGljaCBjb250ZXh0
IG1lbnUKKy8vIGhhcyBiZWVuIGludm9rZWQgdG8gYmUgdGhlIHNlbGVjdGVkIHdvcmQsIGFzIHJl
cXVpcmVkLiBUaGlzIGZ1bmN0aW9uIGNoYW5nZXMKIC8vIHRoZSBzZWxlY3Rpb24gb25seSB3aGVu
IHRoZXJlIHdlcmUgbm8gc2VsZWN0ZWQgY2hhcmFjdGVycyBvbiBPUyBYLgogc3RhdGljIFN0cmlu
ZyBzZWxlY3RNaXNzcGVsbGVkV29yZChjb25zdCBDb250ZXh0TWVudSogZGVmYXVsdE1lbnUsIEZy
YW1lKiBzZWxlY3RlZEZyYW1lKQogewpAQCAtMjc0LDM2ICsyODAsMzUgQEAgUGxhdGZvcm1NZW51
RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1
bHRJdGVtcygKICNlbmRpZgogICAgICAgICAvLyBXaGVuIENocm9tZSBlbmFibGVzIGFzeW5jaHJv
bm91cyBzcGVsbGNoZWNraW5nLCBpdHMgc3BlbGxjaGVja2VyIGFkZHMgc3BlbGxpbmcgbWFya2Vy
cyB0byBtaXNzcGVsbGVkCiAgICAgICAgIC8vIHdvcmRzIGFuZCBhdHRhY2hlcyBzdWdnZXN0aW9u
cyB0byB0aGVzZSBtYXJrZXJzIGluIHRoZSBiYWNrZ3JvdW5kLiBUaGVyZWZvcmUsIHdoZW4gYSB1
c2VyIHJpZ2h0LWNsaWNrcwotICAgICAgICAvLyBhIG1vdXNlIG9uIGEgd29yZCwgQ2hyb21lIGp1
c3QgbmVlZHMgdG8gZmluZCBhIHNwZWxsaW5nIG1hcmtlciBvbiB0aGUgd29yZCBpbnN0cmVhZCBv
ZiBzcGVsbGNoZWNraW5nIGl0LgorICAgICAgICAvLyBhIG1vdXNlIG9uIGEgd29yZCwgQ2hyb21l
IGp1c3QgbmVlZHMgdG8gZmluZCBhIHNwZWxsaW5nIG1hcmtlciBvbiB0aGUgd29yZCBpbnN0ZWFk
IG9mIHNwZWxsY2hlY2tpbmcgaXQuCiAgICAgICAgIGlmIChzZWxlY3RlZEZyYW1lLT5zZXR0aW5n
cygpICYmIHNlbGVjdGVkRnJhbWUtPnNldHRpbmdzKCktPmFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKCkpIHsKICAgICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0g
c2VsZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpOwotICAgICAgICAgICAgYm9v
bCBzaG91bGRVcGRhdGVTZWxlY3Rpb24gPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChzZWxlY3Rp
b24uaXNDYXJldE9yUmFuZ2UoKSkgewotICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb24uaXND
YXJldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51
bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZFVwZGF0
ZVNlbGVjdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKLSAgICAg
ICAgICAgICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gc2VsZWN0ZWRGcmFt
ZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJzSW5SYW5nZShyYW5nZS5nZXQoKSwgRG9j
dW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIpOwotICAgICAg
ICAgICAgICAgIGlmIChtYXJrZXJzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChtYXJrZXJzWzBdLT5zdGFydE9mZnNldCgpICE9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihy
YW5nZS0+c3RhcnRPZmZzZXQoKSkgfHwgbWFya2Vyc1swXS0+ZW5kT2Zmc2V0KCkgIT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHJhbmdlLT5lbmRPZmZzZXQoKSkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBtYXJrZXJzLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGlmIChtYXJrZXJzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJhbmdlLT5z
ZXRTdGFydChyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgbWFya2Vyc1swXS0+c3RhcnRPZmZzZXQo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIHJhbmdlLT5zZXRFbmQocmFuZ2UtPmVuZENvbnRhaW5l
cigpLCBtYXJrZXJzWzBdLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEu
bWlzc3BlbGxlZFdvcmQgPSByYW5nZS0+dGV4dCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
bWFya2Vyc1swXS0+ZGVzY3JpcHRpb24oKS5sZW5ndGgoKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvbnM7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtYXJrZXJzWzBdLT5kZXNjcmlwdGlvbigpLnNwbGl0KCdcbicsIHN1Z2dlc3Rpb25zKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZGljdGlvbmFyeVN1Z2dlc3Rpb25zID0gc3VnZ2Vz
dGlvbnM7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV93ZWJWaWV3LT5zcGVsbENo
ZWNrQ2xpZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaXNzcGVsbGVkT2Zm
c2V0LCBtaXNzcGVsbGVkTGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICAgICAgbV93ZWJWaWV3
LT5zcGVsbENoZWNrQ2xpZW50KCktPnNwZWxsQ2hlY2soZGF0YS5taXNzcGVsbGVkV29yZCwgbWlz
c3BlbGxlZE9mZnNldCwgbWlzc3BlbGxlZExlbmd0aCwgJmRhdGEuZGljdGlvbmFyeVN1Z2dlc3Rp
b25zKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBzZWxlY3Rp
b24gPSBWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHNob3VsZFVwZGF0ZVNlbGVjdGlvbiAmJiBzZWxlY3RlZEZyYW1lLT5zZWxlY3Rpb24oKS0+
c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbikpCisgICAgICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwor
ICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsKKyAgICAgICAgICAg
ICAgICBSZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gc2VsZWN0aW9uUmFuZ2UtPmNsb25lUmFu
Z2UoZXhjZXB0aW9uQ29kZSk7CisgICAgICAgICAgICAgICAgVmVjdG9yPERvY3VtZW50TWFya2Vy
Kj4gbWFya2VycyA9IHNlbGVjdGVkRnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2Vy
c0luUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyB8
IERvY3VtZW50TWFya2VyOjpHcmFtbWFyKTsKKyAgICAgICAgICAgICAgICBpZiAoIWV4Y2VwdGlv
bkNvZGUgJiYgbWFya2Vycy5zaXplKCkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBtYXJr
ZXJSYW5nZS0+c2V0U3RhcnQobWFya2VyUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIG1hcmtlcnNb
MF0tPnN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICBtYXJrZXJSYW5nZS0+c2V0
RW5kKG1hcmtlclJhbmdlLT5lbmRDb250YWluZXIoKSwgbWFya2Vyc1swXS0+ZW5kT2Zmc2V0KCkp
OworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBzZWxlY3Rpb24sIHRoZW4g
c2VsZWN0IHRoZSBtaXNzcGVsbGluZy4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlv
bi5pc0NhcmV0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbiA9IFZpc2li
bGVTZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihzZWxlY3Rpb24sIFdvcmRH
cmFudWxhcml0eSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SYW5nZS5jbGVh
cigpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmFuZ2UgPSBzZWxlY3Rpb24u
dG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBpZiAoc2VsZWN0aW9uUmFuZ2UtPnRleHQoKS5zdHJpcFdoaXRlU3BhY2UoJklzV2hp
dGVTcGFjZU9yUHVuY3R1YXRpb24pID09IG1hcmtlclJhbmdlLT50ZXh0KCkuc3RyaXBXaGl0ZVNw
YWNlKCZJc1doaXRlU3BhY2VPclB1bmN0dWF0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YS5taXNzcGVsbGVkV29yZCA9IG1hcmtlclJhbmdlLT50ZXh0KCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobWFya2Vyc1swXS0+ZGVzY3JpcHRpb24oKS5sZW5ndGgoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25zOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcnNbMF0tPmRlc2NyaXB0aW9uKCkuc3Bs
aXQoJ1xuJywgc3VnZ2VzdGlvbnMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEu
ZGljdGlvbmFyeVN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnM7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKG1fd2ViVmlldy0+c3BlbGxDaGVja0NsaWVudCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IG1pc3NwZWxsZWRPZmZzZXQsIG1pc3NwZWxsZWRMZW5n
dGg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xp
ZW50KCktPnNwZWxsQ2hlY2soZGF0YS5taXNzcGVsbGVkV29yZCwgbWlzc3BlbGxlZE9mZnNldCwg
bWlzc3BlbGxlZExlbmd0aCwgJmRhdGEuZGljdGlvbmFyeVN1Z2dlc3Rpb25zKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDYwYzJlMGYuLjU2Zjc3NGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMTI5OSwxMSArMTI5
OSwxNiBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6cmVwbGFjZU1pc3NwZWxsZWRSYW5nZShjb25zdCBX
ZWJTdHJpbmcmIHRleHQpCiAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyKj4gbWFya2VycyA9IGZy
YW1lKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2Vyc0luUmFuZ2UoY2FyZXRSYW5nZS5n
ZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIp
OwogICAgIGlmIChtYXJrZXJzLnNpemUoKSA8IDEgfHwgbWFya2Vyc1swXS0+c3RhcnRPZmZzZXQo
KSA+PSBtYXJrZXJzWzBdLT5lbmRPZmZzZXQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFJlZlB0
cjxSYW5nZT4gbWFya2VyUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKGZyYW1lKCktPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVu
dEVsZW1lbnQoKSwgbWFya2Vyc1swXS0+c3RhcnRPZmZzZXQoKSwgbWFya2Vyc1swXS0+ZW5kT2Zm
c2V0KCkgLSBtYXJrZXJzWzBdLT5zdGFydE9mZnNldCgpKTsKLSAgICBpZiAoIW1hcmtlclJhbmdl
LmdldCgpIHx8ICFmcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG1h
cmtlclJhbmdlLmdldCgpKSkKKyAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbkNvZGU7CisgICAg
UmVmUHRyPFJhbmdlPiBtYXJrZXJSYW5nZSA9IGNhcmV0UmFuZ2UtPmNsb25lUmFuZ2UoZXhjZXB0
aW9uQ29kZSk7CisgICAgaWYgKCFleGNlcHRpb25Db2RlKQorICAgICAgICByZXR1cm47CisgICAg
bWFya2VyUmFuZ2UtPnNldFN0YXJ0KG1hcmtlclJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBtYXJr
ZXJzWzBdLT5zdGFydE9mZnNldCgpKTsKKyAgICBtYXJrZXJSYW5nZS0+c2V0RW5kKG1hcmtlclJh
bmdlLT5lbmRDb250YWluZXIoKSwgbWFya2Vyc1swXS0+ZW5kT2Zmc2V0KCkpOworICAgIGlmICgh
ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihtYXJrZXJSYW5nZS5n
ZXQoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0U2Vs
ZWN0aW9uKG1hcmtlclJhbmdlLmdldCgpLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7Ci0gICAgZnJh
bWUoKS0+ZWRpdG9yKCktPnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCh0ZXh0LCBmYWxzZSwgdHJ1
ZSk7CisgICAgZnJhbWUoKS0+ZWRpdG9yKCktPnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCh0ZXh0
LCBmYWxzZSwgZmFsc2UpOwogfQogCiBib29sIFdlYkZyYW1lSW1wbDo6aGFzU2VsZWN0aW9uKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDViOGM0ZTUuLmQ0MmM1MGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtOTgsNiArOTgsNyBAQCBfWk43V2ViQ29yZTI0Q29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOHByZXZpb3VzRXY7CiBfWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyOWxhc3RDaGlsZEV2OwogX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjEwbWFya2Vyc0ZvckVQTlNfNE5vZGVFTlNfMTREb2N1bWVudE1hcmtlcjExTWFya2Vy
VHlwZXNFOwogX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjE4YWRkVGV4dE1h
dGNoTWFya2VyRVBLTlNfNVJhbmdlRWI7CitfWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOWFkZE1hcmtlckVQTlNfNVJhbmdlRU5TXzE0RG9jdW1lbnRNYXJrZXIxME1hcmtlclR5
cGVFOwogX1pON1dlYkNvcmUyNWNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXNFTlNfMTdWaWV3cG9y
dEFyZ3VtZW50c0VpaWlmTlNfN0ludFNpemVFOwogX1pON1dlYkNvcmUyNWpzU3RyaW5nV2l0aENh
Y2hlU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY3SGFzaE1hcElQTlMzXzEwU3RyaW5n
SW1wbEVOUzBfNFdlYWtJTlMwXzhKU1N0cmluZ0VFRU5TM183UHRySGFzaElTNl9FRU5TM18xMEhh
c2hUcmFpdHNJUzZfRUVOU0NfSVM5X0VFRUVTNl87CiBfWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbDEybW92ZVdpbmRvd0J5RWZmOwo=
</data>
<flag name="commit-queue"
          id="203688"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185091</attachid>
            <date>2013-01-28 16:02:08 -0800</date>
            <delta_ts>2013-01-28 18:00:49 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>webkit-spell.patch</filename>
            <type>text/plain</type>
            <size>68424</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNTlkMWZmLi5mYTI4NWEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTMtMDEt
MjggIFJvdXNsYW4gU29sb21ha2hpbiAgPHJvdXNsYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFRlc3RzIGZvciBzcGVsbCBjaGVja2VyIGJlaGF2aW9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4MTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIGZvbGxvd2luZyBzcGVsbCBj
aGVjayBiZWhhdmlvcjoKKyAgICAgICAgLSBTcGVsbGNoZWNrIHNlbGVjdHMgdGhlIG1pc3NwZWxs
ZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLgorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCB3b3Jr
IHdoZW4gdGhlIHVzZXIgc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIGV4YWN0bHkuCisgICAg
ICAgIC0gSWYgdGhlIHdvcmQgaXMgbm90IG1pc3NwZWxsZWQsIHRoZXJlIHNob3VsZCBiZSBubyBz
cGVsbGluZyBvcHRpb25zIGluIHRoZSBjb250ZXh0IG1lbnUuCisgICAgICAgIC0gU3BlbGxjaGVj
ayBzaG91bGQgc2VsZWN0IG11bHRpLXdvcmQgbWlzc3BlbGxpbmdzIG9uIGNvbnRleHQgY2xpY2su
CisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEg
bXVsdGktd29yZCBtaXNzcGVsbGluZyBleGFjdGx5LgorICAgICAgICAtIFNwZWxsaW5nIHNob3Vs
ZCB3b3JrIGZvciBkb3VibGUtY2xpY2tlZCBtaXNzcGVsbGluZ3MuCisgICAgICAgIC0gU3BlbGxp
bmcgc2hvdWxkIGlnbm9yZSB3aGl0ZXNwYWNlLgorICAgICAgICAtIFVuZGVyc2NvcmVzIHNob3Vs
ZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4K
KyAgICAgICAgLSBQdW5jdHVhdGlvbiBtYXJrcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNw
YWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uCisgICAgICAgIC0gU3BlbGxpbmcgc2hv
dWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIGEgcGFydCBvZiBtaXNzcGVsbGluZy4K
KyAgICAgICAgLSBTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVjdHMg
bXVsdGlwbGUgd29yZHMgdGhhdCBhcmUgbm90IGEgc2luZ2xlIG1pc3NwZWxsaW5nLgorCisgICAg
ICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3Vi
bGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0
aC11bmRlcnNjb3Jlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFj
dGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVj
dGVkLXdvcmQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBs
ZS13b3Jkcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24u
aHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1
bmN0dWF0aW9uLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbDogQWRk
ZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUt
c2VsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
d2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMy0wMS0yOCAgWm9s
dGFuIEFydmFpICA8emFydmFpQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIFVucmV2
aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY1NGNkOQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNs
aWNrZWQtd29yZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorU3BlbGxpbmcgc2hvdWxk
IHdvcmsgZm9yIGRvdWJsZS1jbGlja2VkIG1pc3NwZWxsaW5ncy4gVG8gdGVzdCBtYW51YWxseSwg
dHlwZSAnd2VsbGNvbWUgaG9tZS4nLCBkb3VibGUtY2xpY2sgb24gJ3dlbGxjb21lJywgYW5kIGNv
bnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUg
Y29udGV4dCBtZW51IHNob3dzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkg
aXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAi
IgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQ
QVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1MgY29udGV4
dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21l
IgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUgIgorUEFTUyBzcGVsbGlu
Z01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUgIgorUEFTUyBjb250ZXh0TWVudUVsZW1l
bnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lIGhvbWUu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJs
ZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRl
cnNjb3Jlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NGU1YjU2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDIwIEBACitTcGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNr
ZWQgbWlzc3BlbGxlZCB3b3JkcyB3aXRoIHVuZGVyc2NvcmVzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0
eXBlICd3ZWxsY29tZV8gaG9tZS4nLCBkb3VibGUtY2xpY2sgb24gJ3dlbGxjb21lXycsIGFuZCBj
b250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhl
IGNvbnRleHQgbWVudSBzaG93cyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygp
IGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMg
IiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lXyIK
K1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mg
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lXyIKK1BBU1MgY29u
dGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxj
b21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWVfICIKK1BBU1Mgc3Bl
bGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lXyAiCitQQVNTIGNvbnRleHRNZW51
RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWVf
IGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJz
Y29yZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTVkODYxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1k
b3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbApAQCAtMCwwICsxLDEwOCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRF
ZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiB2ZXJpZnkobnJl
dHJ5KQoreworICAgIGlmICghbnJldHJ5KSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFpbnRlcm5hbHMubWFya2VyQ291bnRGb3JO
b2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIpKSB7CisgICAgICAgIHdp
bmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkobnJldHJ5IC0gMSk7IH0sIDApOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVy
bmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxs
aW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5y
ZW1vdmVBbGxSYW5nZXMoKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gRG91YmxlLWNsaWNrIHRoZSBt
aXNzcGVsbGVkIHdvcmQgd2l0aG91dCB0aGUgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKyAgICB0ZXN0
UnVubmVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpOworICAgIHZh
ciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5v
ZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0
IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworCisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxs
Y29tZV8iKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gIndlbGxjb21lXyIgdG8gc2hvdyB0
aGUgY29udGV4dCBtZW51LgorICAgIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB5ID0gZGVzdGluYXRpb24u
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0
aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7
CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOwor
ICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVy
LmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxs
aW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9u
LmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3
ZWxsY29tZV8iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVu
dHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAg
IC8vIERvdWJsZS1jbGljayB0aGUgbWlzc3BlbGxlZCB3b3JkIHdpdGggdGhlIHRyYWlsaW5nIHdo
aXRlc3BhY2UuCisgICAgdGVzdFJ1bm5lci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkKHRydWUpOworICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlv
bi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGlu
YXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VV
cCgpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSIsICJ3ZWxsY29tZV8gIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3
ZWxsY29tZV8gIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgeCA9IGRlc3RpbmF0aW9u
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOwor
ICAgIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24u
b2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5k
ZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1l
bnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiks
IG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5n
ZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAi
d2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIiwgIndlbGxjb21lXyAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIs
ICJ3ZWxjb21lIik7CisgICAgCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5z
ZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQodHJ1ZSk7CisgICAgdmFyIGRlc3RpbmF0aW9uID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24u
Zm9jdXMoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAi
d2VsbGNvbWVfIGhvbWUuIik7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZl
cmlmeSgxMCk7IH0sIDApOworfQorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIHdvcmsg
Zm9yIGRvdWJsZS1jbGlja2VkIG1pc3NwZWxsZWQgd29yZHMgd2l0aCB1bmRlcnNjb3Jlcy4gIiAr
CisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWVfIGhvbWUuJywg
ZG91YmxlLWNsaWNrIG9uICd3ZWxsY29tZV8nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2Vs
ZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250
ZXh0IG1lbnUgc2hvd3Mgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CitpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRv
dWJsZS1jbGlja2VkLXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmIzZDU1YjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbApAQCAtMCwwICsxLDEw
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRl
bnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiB2ZXJpZnko
bnJldHJ5KQoreworICAgIGlmICghbnJldHJ5KSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZv
ck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAg
d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50
ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3Bl
bGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFu
Z2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworCisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LnJlbW92ZUFsbFJhbmdlcygpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBEb3VibGUtY2xpY2sgdGhl
IG1pc3NwZWxsZWQgd29yZCB3aXRob3V0IHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgdGVzdFJ1
bm5lci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGZhbHNlKTsKKyAgICB2YXIg
eCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zm
c2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNl
dFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAv
IDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21l
Iik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hvdyB0aGUgY29u
dGV4dCBtZW51LgorICAgIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCAr
IGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB5ID0gZGVzdGluYXRpb24ub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9m
ZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAg
Y29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8v
IEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURv
d24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFy
a2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxk
Tm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3Bl
bGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29t
ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250
ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKKworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gRG91
YmxlLWNsaWNrIHRoZSBtaXNzcGVsbGVkIHdvcmQgd2l0aCB0cmFpbGluZyB3aGl0ZXNwYWNlLgor
ICAgIHRlc3RSdW5uZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCh0cnVlKTsK
KyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGlu
YXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFy
ZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNl
dEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwg
IndlbGxjb21lICIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBvbiAid2VsbGNvbWUgIiB0byBz
aG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHkgPSBkZXN0aW5h
dGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVz
dGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4
LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNr
KCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRT
ZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAg
c3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGlu
YXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IiwgIndlbGxjb21lICIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVF
bGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKKyAg
ICAKKyAgICBmaW5pc2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRD
aGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKHRydWUpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9j
dW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIndlbGxjb21lIGhvbWUuIik7
CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOwor
fQorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2Vk
IG1pc3NwZWxsaW5ncy4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAn
d2VsbGNvbWUgaG9tZS4nLCBkb3VibGUtY2xpY2sgb24gJ3dlbGxjb21lJywgYW5kIGNvbnRleHQt
Y2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2Vl
ZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLiIp
OworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgdGVzdCgpOworCis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3Rl
ZC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNDRhNzk0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorU3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNl
ciBzZWxlY3RzIGEgbXVsdGktd29yZCBtaXNzcGVsbGluZyBleGFjdGx5LiBUbyB0ZXN0IG1hbnVh
bGx5LCBlbmFibGUgJ0FzayBHb29nbGUgZm9yIFN1Z2dlc3Rpb25zJyBpbiBDaHJvbWUsIHR5cGUg
J0l0IHNob3VsZCBiZSB1cHBlciBjYXNlLicsIHNlbGVjdCAndXBwZXIgY2FzZScsIGFuZCBjb250
ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29u
dGV4dCBtZW51IHNob3dzIHNwZWxsaW5nIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgInVw
cGVyIGNhc2UiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFT
UyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitJdCBzaG91bGQgYmUgdXBw
ZXIgY2FzZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5odG1sIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY1OTM2OAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1z
ZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5odG1sCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNv
bnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+
Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHZlcmlmeShucmV0cnkpCit7CisgICAgaWYg
KCFucmV0cnkpIHsKKyAgICAgICAgZmluaXNoSlNUZXN0KCkKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmICghaW50ZXJuYWxzLm1hcmtlckNvdW50Rm9yTm9kZShkZXN0aW5hdGlvbi5j
aGlsZE5vZGVzWzBdLCAic3BlbGxpbmciKSkgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91dChm
dW5jdGlvbigpIHsgdmVyaWZ5KG5yZXRyeSAtIDEpOyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VG
b3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgInVw
cGVyIGNhc2UiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIiwgIiIpOworICAgIAorICAgIC8vIFNlbGVjdCB0aGUgbXVsdGktd29y
ZCBtaXNzcGVsbGluZyB3aXRob3V0IHN1cnJvdW5kaW5nIHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRp
b24uCisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHZh
ciB3b3JkUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHdvcmRSYW5nZS5zZXRT
dGFydChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAxMyk7CisgICAgd29yZFJhbmdlLnNldEVu
ZChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAyMyk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHdvcmRSYW5nZSk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKKworICAgIC8v
IENvbnRleHQgY2xpY2sgb24gInVwcGVyIGNhc2UiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4K
KyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGlu
YXRpb24ub2Zmc2V0TGVmdCArIDEwMDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBh
cmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZz
ZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNv
bnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBF
c2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3du
KFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtl
clJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5v
ZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxs
aW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ1cHBlciBj
YXNlIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmll
ZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U21hcnRJbnNl
cnREZWxldGVFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9jdXMoKTsK
KyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiSXQgc2hvdWxk
IGJlIHVwcGVyIGNhc2UuIik7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZl
cmlmeSgxMCk7IH0sIDApOworfQorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIHdvcmsg
d2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbXVsdGktd29yZCBtaXNzcGVsbGluZyBleGFjdGx5LiAi
ICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCBlbmFibGUgJ0FzayBHb29nbGUgZm9y
IFN1Z2dlc3Rpb25zJyBpbiBDaHJvbWUsIHR5cGUgJ0l0IHNob3VsZCBiZSB1cHBlciBjYXNlLics
IHNlbGVjdCAndXBwZXIgY2FzZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24u
IiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51
IHNob3dzIHNwZWxsaW5nIHN1Z2dlc3Rpb25zLiIpOworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgdGVzdCgpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVj
dGVkLXdvcmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjhjZjUyNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNyBAQAorU3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNl
ciBzZWxlY3RzIHRoZSBtaXNzcGVsbGVkIHdvcmQgZXhhY3RseS4gVG8gdGVzdCBtYW51YWxseSwg
dHlwZSAnd2VsbGNvbWUgaG9tZS4nLCBzZWxlY3QgJ3dlbGxjb21lJywgYW5kIGNvbnRleHQtY2xp
Y2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBt
ZW51IHNob3dzIHNwZWxsaW5nIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21l
IgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQ
QVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1MgY29udGV4
dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21l
IgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiaG9tZSIKK1BBU1Mg
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImhvbWUiCitQQVNTIGNvbnRleHRN
ZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAiPHNlcGFyYXRv
cj4iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dl
bGxjb21lIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGMyMGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQuaHRt
bApAQCAtMCwwICsxLDkxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0
aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Z1
bmN0aW9uIHZlcmlmeShucmV0cnkpCit7CisgICAgaWYgKCFucmV0cnkpIHsKKyAgICAgICAgZmlu
aXNoSlNUZXN0KCkKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaW50ZXJuYWxz
Lm1hcmtlckNvdW50Rm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmci
KSkgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5KG5yZXRy
eSAtIDEpOyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFNlbGVjdCB0
aGUgbWlzc3BlbGxlZCB3b3JkIHdpdGhvdXQgc3Vycm91bmRpbmcgd2hpdGVzcGFjZSBvciBwdW5j
dHVhdGlvbi4KKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7Cisg
ICAgdmFyIHdvcmRSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgd29yZFJhbmdl
LnNldFN0YXJ0KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDApOworICAgIHdvcmRSYW5nZS5z
ZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgOCk7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLmFkZFJhbmdlKHdvcmRSYW5nZSk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0g
aW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAi
c3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2Vy
UmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKworICAg
IC8vIENvbnRleHQgY2xpY2sgb24gIndlbGxjb21lIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUu
CisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3Rp
bmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBh
cmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZz
ZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNv
bnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBF
c2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3du
KFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtl
clJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5v
ZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxs
aW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUi
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4
dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisgICAgCisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdvcmRSYW5nZS5zZXRTdGFy
dChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCA5KTsKKyAgICB3b3JkUmFuZ2Uuc2V0RW5kKGRl
c3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDEzKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YWRkUmFuZ2Uod29yZFJhbmdlKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgImhvbWUiKTsKKworICAgIC8vIENvbnRleHQgY2xp
Y2sgb24gImhvbWUiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3Rp
bmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCAr
IDgwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRl
c3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9
IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUg
Y29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29k
ZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiaG9tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFd
IiwgIjxzZXBhcmF0b3I+Iik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIu
c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgdmFyIGRlc3RpbmF0aW9u
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRp
b24uZm9jdXMoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNl
LCAid2VsbGNvbWUgaG9tZS4iKTsKKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsg
dmVyaWZ5KDEwKTsgfSwgMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgd29y
ayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBleGFjdGx5LiAiICsK
KyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIHNl
bGVjdCAnd2VsbGNvbWUnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiAiICsK
KyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hv
d3Mgc3BlbGxpbmcgc3VnZ2VzdGlvbnMuIik7CitpZiAod2luZG93LmludGVybmFscykKKyAgICB0
ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW11bHRpd29yZC1zZWxlY3Rp
b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1t
dWx0aXdvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45ZjBkZDJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE1IEBACitTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVj
dHMgbXVsdGlwbGUgd29yZHMgdGhhdCBhcmUgbm90IGEgc2luZ2xlIG1pc3NwZWxsaW5nLiBUbyB0
ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIHNlbGVjdCAnd2VsbGNvbWUgaG9t
ZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2VlZHMg
d2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBubyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50
b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndl
bGxjb21lIGhvbWUiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2Vs
bGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29t
ZSBob21lIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVu
Z3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW11bHRpd29yZC1zZWxlY3Rpb24u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTk0NjRiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdv
cmQtc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4K
KyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2Pgor
Cis8c2NyaXB0PgorCitmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQoreworICAgIGlmICghbnJldHJ5
KSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rl
c1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShk
ZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkiLCAiIik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2Vz
KCk7CisgICAgdmFyIG11bHRpV29yZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAg
ICBtdWx0aVdvcmRSYW5nZS5zZXRTdGFydChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAwKTsK
KyAgICBtdWx0aVdvcmRSYW5nZS5zZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMTMp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShtdWx0aVdvcmRSYW5nZSk7CisK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgIndlbGxjb21lIGhvbWUiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgdG8gc2hvdyB0
aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9m
ZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0
aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsg
ZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENs
aWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZl
bnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisg
ICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVz
dGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgIndlbGxjb21lIGhvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRl
eHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICI8c2VwYXJh
dG9yPiIpOworCisgICAgZmluaXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZp
ZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3VzKCk7
CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIndlbGxjb21l
IGhvbWUuIik7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgxMCk7
IH0sIDApOworfQorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdo
ZW4gdXNlciBzZWxlY3RzIG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmdsZSBtaXNz
cGVsbGluZy4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNv
bWUgaG9tZS4nLCBzZWxlY3QgJ3dlbGxjb21lIGhvbWUnLCBhbmQgY29udGV4dC1jbGljayBvbiB0
aGUgc2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNlZWRzIHdoZW4gdGhl
IGNvbnRleHQgbWVudSBoYXMgbm8gc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CitpZiAod2lu
ZG93LmludGVybmFscykKKyAgICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmE0NTQx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEz
IEBACitTcGVsbCBjaGVjayBzaG91bGQgc2VsZWN0IG11bHRpLXdvcmQgbWlzc3BlbGxpbmdzIG9u
IGNvbnRleHQgY2xpY2suIFRvIHRlc3QgbWFudWFsbHksIGVuYWJsZSAnQXNrIEdvb2dsZSBmb3Ig
U3VnZ2VzdGlvbnMnIGluIENocm9tZSwgdHlwZSAnSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuJywg
YW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHdvcmQgJ3VwcGVyJy4gVGhlIHRlc3Qgc3VjY2VlZHMg
d2hlbiAndXBwZXIgY2FzZScgd2FzIHNlbGVjdGVkIGFmdGVyIGNvbnRleHQgY2xpY2suCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIiIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ1cHBl
ciBjYXNlIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAidXBwZXIg
Y2FzZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
SXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBs
ZS13b3Jkcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2N2I3NWMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxl
PjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQorewor
ICAgIGlmICghbnJldHJ5KSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpCisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGlu
YXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtl
clJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmco
KSIsICJ1cHBlciBjYXNlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24g
InVwcGVyIGNhc2UiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3Rp
bmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCAr
IDEwMDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMg
PSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhl
IGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNv
ZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxz
Lm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmci
LCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSIsICJ1cHBlciBjYXNlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7CisKKyAgICBmaW5p
c2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxl
ZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKHRy
dWUpOworICAgIHRlc3RSdW5uZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChm
YWxzZSk7CisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRl
c3RpbmF0aW9uIik7CisgICAgZGVzdGluYXRpb24uZm9jdXMoKTsKKyAgICBkb2N1bWVudC5leGVj
Q29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuIik7
CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOwor
fQorCitkZXNjcmlwdGlvbigiU3BlbGwgY2hlY2sgc2hvdWxkIHNlbGVjdCBtdWx0aS13b3JkIG1p
c3NwZWxsaW5ncyBvbiBjb250ZXh0IGNsaWNrLiAiKworICAgICAgICAgICAgIlRvIHRlc3QgbWFu
dWFsbHksIGVuYWJsZSAnQXNrIEdvb2dsZSBmb3IgU3VnZ2VzdGlvbnMnIGluIENocm9tZSwgdHlw
ZSAnSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHdv
cmQgJ3VwcGVyJy4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiAndXBw
ZXIgY2FzZScgd2FzIHNlbGVjdGVkIGFmdGVyIGNvbnRleHQgY2xpY2suIik7CitpZiAod2luZG93
LmludGVybmFscykKKyAgICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YThkMDg2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQt
c2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitTcGVsbCBj
aGVjayBzZWxlY3RzIHRoZSBtaXNzcGVsbGVkIHdvcmQgb24gY29udGV4dCBjbGljay4gVG8gdGVz
dCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nIGFuZCBjb250ZXh0LWNsaWNrIG9uICd3
ZWxsY29tZScuIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gJ3dlbGxjb21lJyBpcyBzZWxlY3RlZCBh
ZnRlciB0aGUgY29udGV4dCBjbGljay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mg
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgc3BlbGxpbmdNYXJr
ZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2Nv
bnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIGlzICIiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVF
bGVtZW50cy5sZW5ndGggLSAxXSBpcyAiPHNlcGFyYXRvcj4iCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lIGhvbWUuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2lu
Z2xlLXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hv
dWxkLXNlbGVjdC1zaW5nbGUtd29yZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmViZWRlMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQuaHRtbApAQCAtMCwwICsx
LDgxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29u
dGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHZlcmlm
eShucmV0cnkpCit7CisgICAgaWYgKCFucmV0cnkpIHsKKyAgICAgICAgZmluaXNoSlNUZXN0KCkK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaW50ZXJuYWxzLm1hcmtlckNvdW50
Rm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciKSkgeworICAgICAg
ICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5KG5yZXRyeSAtIDEpOyB9LCAw
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBp
bnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJz
cGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIENvbnRl
eHQgY2xpY2sgb24gIndlbGxjb21lIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFy
IHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9m
ZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZz
ZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQg
LyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51
RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRv
IGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5m
cm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0g
aW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAi
c3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2Vy
UmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVt
ZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sg
b24gImhvbWUiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0
aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDgw
OworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3Rp
bmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2
ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29u
dGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgw
eDAwMUIpLCBudWxsKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJj
b250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAiPHNl
cGFyYXRvcj4iKTsKKworICAgIGZpbmlzaEpTVGVzdCgpCit9CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRV
bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNo
cm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRTZWxlY3RUcmFp
bGluZ1doaXRlc3BhY2VFbmFibGVkKGZhbHNlKTsKKyAgICB2YXIgZGVzdGluYXRpb24gPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzdGluYXRpb24iKTsKKyAgICBkZXN0aW5hdGlvbi5mb2N1
cygpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ3ZWxs
Y29tZSBob21lLiIpOworICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnko
MTApOyB9LCAwKTsKK30KKworZGVzY3JpcHRpb24oIlNwZWxsIGNoZWNrIHNlbGVjdHMgdGhlIG1p
c3NwZWxsZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0
IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicgYW5kIGNvbnRleHQtY2xpY2sgb24gJ3dl
bGxjb21lJy4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiAnd2VsbGNv
bWUnIGlzIHNlbGVjdGVkIGFmdGVyIHRoZSBjb250ZXh0IGNsaWNrLiIpOworaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgdGVzdCgpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1z
dWJ3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTdlZTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNSBAQAorU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4g
dXNlciBzZWxlY3RzIGEgcGFydCBvZiBtaXNzcGVsbGluZy4gVG8gdGVzdCBtYW51YWxseSwgdHlw
ZSAnd2VsbGNvbWUgaG9tZS4nIHNlbGVjdCAnbGxjbycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRo
ZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBu
byBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BB
U1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImxsY28iCitQQVNTIHNwZWxsaW5nTWFya2VyUmFu
Z2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIGlzICJsbGNvIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51
RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+IgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNl
bGVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NmQzYjQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXN1YndvcmQtc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFp
bmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwv
ZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiB2ZXJpZnkobnJldHJ5KQoreworICAgIGlmICgh
bnJldHJ5KSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpCisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hp
bGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9y
Tm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxs
Y29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxs
UmFuZ2VzKCk7CisgICAgdmFyIHN1YldvcmRSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgc3ViV29yZFJhbmdlLnNldFN0YXJ0KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDIp
OworICAgIHN1YldvcmRSYW5nZS5zZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgNik7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHN1YldvcmRSYW5nZSk7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIs
ICJsbGNvIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIHRvIHNob3cgdGhlIGNvbnRleHQgbWVu
dS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVz
dGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9m
ZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAg
Y29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8v
IEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURv
d24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFy
a2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxk
Tm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3Bl
bGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJsbGNvIik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRN
ZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAiPHNlcGFyYXRvcj4iKTsKKworICAgIGZpbmlzaEpT
VGVzdCgpCit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRy
dWUpOworICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
dHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQodHJ1ZSk7
CisgICAgdGVzdFJ1bm5lci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGZhbHNl
KTsKKyAgICB2YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzdGlu
YXRpb24iKTsKKyAgICBkZXN0aW5hdGlvbi5mb2N1cygpOworICAgIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ3ZWxsY29tZSBob21lLiIpOworICAgIHdpbmRvdy5z
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkoMTApOyB9LCAwKTsKK30KKworZGVzY3JpcHRp
b24oIlNwZWxsaW5nIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHVzZXIgc2VsZWN0cyBhIHBhcnQg
b2YgbWlzc3BlbGxpbmcuICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIHR5cGUg
J3dlbGxjb21lIGhvbWUuJyBzZWxlY3QgJ2xsY28nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUg
c2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNlZWRzIHdoZW4gdGhlIGNv
bnRleHQgbWVudSBoYXMgbm8gc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CitpZiAod2luZG93
LmludGVybmFscykKKyAgICB0ZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMjE4MGQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgt
cHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitQdW5j
dHVhdGlvbiBtYXJrcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBz
aG91bGQgaWdub3JlIHRoZW0uIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIScsIHNl
bGVjdCAnd2VsbGNvbWUhJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhl
IHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBzcGVsbCBjaGVjayBzdWdn
ZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdN
YXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIndlbGxjb21lISIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygp
IGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMg
IndlbGxjb21lISIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRz
Lmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1z
ZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjJlNjA5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNzMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+
PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZnVuY3Rpb24gdmVyaWZ5KG5yZXRyeSkKK3sK
KyAgICBpZiAoIW5yZXRyeSkgeworICAgICAgICBmaW5pc2hKU1Rlc3QoKQorICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKCFpbnRlcm5hbHMubWFya2VyQ291bnRGb3JOb2RlKGRlc3Rp
bmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIpKSB7CisgICAgICAgIHdpbmRvdy5zZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkobnJldHJ5IC0gMSk7IH0sIDApOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJr
ZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5n
KCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydChkZXN0aW5hdGlvbi5jaGlsZE5vZGVz
WzBdLCAwKTsKKyAgICByYW5nZS5zZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgOSk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxj
b21lISIpOworCisgICAgLy8gQ29udGV4dCBjbGljayB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUu
CisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3Rp
bmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBh
cmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZz
ZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNv
bnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBF
c2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3du
KFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtl
clJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5v
ZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxs
aW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUh
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRl
eHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworCisgICAgZmluaXNoSlNU
ZXN0KCkKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7
CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1
ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0
cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCh0cnVlKTsK
KyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2Up
OworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXN0aW5h
dGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1h
bmQoIkluc2VydFRleHQiLCBmYWxzZSwgIndlbGxjb21lISIpOworICAgIHdpbmRvdy5zZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkoMTApOyB9LCAwKTsKK30KKworZGVzY3JpcHRpb24oIlB1
bmN0dWF0aW9uIG1hcmtzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5n
IHNob3VsZCBpZ25vcmUgdGhlbS4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwg
dHlwZSAnd2VsbGNvbWUhJywgc2VsZWN0ICd3ZWxsY29tZSEnLCBhbmQgY29udGV4dC1jbGljayBv
biB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVu
IHRoZSBjb250ZXh0IG1lbnUgaGFzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLiIpOworaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgdGVzdCgpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UxNDQ2MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0
aC11bmRlcnNjb3JlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVW5k
ZXJzY29yZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hvdWxk
IGlnbm9yZSB0aGVtLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICdIaSwgX3dlbGxjb21lXyBob21l
LicsIHNlbGVjdCAnX3dlbGxjb21lXycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rp
b24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgc3BlbGwgY2hl
Y2sgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNw
ZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIGlzICJfd2VsbGNvbWVfIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRv
U3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAiX3dlbGxjb21lXyIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVu
dUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitIaSwgX3dlbGxjb21lXyBob21lLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2Nv
cmUtc2VsZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yMmNmNjU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWwKQEAgLTAs
MCArMSw3NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24i
IGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiB2
ZXJpZnkobnJldHJ5KQoreworICAgIGlmICghbnJldHJ5KSB7CisgICAgICAgIGZpbmlzaEpTVGVz
dCgpCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJD
b3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAg
ICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeShucmV0cnkgLSAxKTsg
fSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdl
ID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBd
LCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFy
a2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBT
ZWxlY3QgdGhlIHRleHQgIl93ZWxsY29tZV8iLgorICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5y
ZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB2YXIgcmFuZ2VXaXRoVW5kZXJzY29yZXMgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlV2l0aFVuZGVyc2NvcmVzLnNldFN0YXJ0KGRlc3Rp
bmF0aW9uLmNoaWxkTm9kZXNbMF0sIDQpOworICAgIHJhbmdlV2l0aFVuZGVyc2NvcmVzLnNldEVu
ZChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAxNCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLmFkZFJhbmdlKHJhbmdlV2l0aFVuZGVyc2NvcmVzKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIl93ZWxsY29tZV8iKTsK
KworICAgIC8vIENvbnRleHQgY2xpY2sgb24gIl93ZWxsY29tZV8iIHRvIHNob3cgdGhlIGNvbnRl
eHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDgwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24u
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0
aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7
CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOwor
ICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVy
LmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxs
aW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9u
LmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJf
d2VsbGNvbWVfIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1l
bnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworCisgICAg
ZmluaXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAganNUZXN0SXNBc3lu
YyA9IHRydWU7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVu
YWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5n
RW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxl
ZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWQoZmFsc2UpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJkZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIkhpLCBfd2VsbGNvbWVfIGhvbWUuIik7
CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeSgxMCk7IH0sIDApOwor
fQorCitkZXNjcmlwdGlvbigiVW5kZXJzY29yZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVz
cGFjZTogc3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB0aGVtLiAiICsKKyAgICAgICAgICAgICJUbyB0
ZXN0IG1hbnVhbGx5LCB0eXBlICdIaSwgX3dlbGxjb21lXyBob21lLicsIHNlbGVjdCAnX3dlbGxj
b21lXycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uICIgKworICAgICAgICAg
ICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgc3BlbGwgY2hl
Y2sgc3VnZ2VzdGlvbnMuIik7CitpZiAod2luZG93LmludGVybmFscykKKyAgICB0ZXN0KCk7CisK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRo
LXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi44NDM1NTE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE0IEBACitTcGVsbGluZyBzaG91bGQgaWdub3JlIHdoaXRlc3BhY2Uu
IFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ2hlbGxvLCB3ZWxsY29tZSBob21lLicsIHNlbGVjdCAn
IHdlbGxjb21lICcsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0
IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlv
bnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2Vy
UmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIGlzICIgd2VsbGNvbWUgIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRv
U3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAiIHdlbGxjb21lICIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVu
dUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitoZWxsbywgd2VsbGNvbWUgaG9tZS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNw
YWNlLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNDg2YjZmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1sCkBAIC0w
LDAgKzEsNzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9u
IiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZnVuY3Rpb24g
dmVyaWZ5KG5yZXRyeSkKK3sKKyAgICBpZiAoIW5yZXRyeSkgeworICAgICAgICBmaW5pc2hKU1Rl
c3QoKQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFpbnRlcm5hbHMubWFya2Vy
Q291bnRGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIpKSB7Cisg
ICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkobnJldHJ5IC0gMSk7
IH0sIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3BlbGxpbmdNYXJrZXJSYW5n
ZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1sw
XSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01h
cmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB2YXIgcmFuZ2VXaXRoV2hpdGVzcGFjZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2VXaXRoV2hpdGVzcGFjZS5zZXRTdGFy
dChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCA2KTsKKyAgICByYW5nZVdpdGhXaGl0ZXNwYWNl
LnNldEVuZChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAxNik7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlV2l0aFdoaXRlc3BhY2UpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIHdlbGxjb21l
ICIpOworCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCAr
IGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA4MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9m
ZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlv
bi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOwor
ICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAg
ICAvLyBlc2Mga2V5IHRvIGtpbGwgdGhlIGNvbnRleHQgbWVudQorICAgIGV2ZW50U2VuZGVyLmtl
eURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5n
TWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNo
aWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
c3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIgd2Vs
bGNvbWUgIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRz
W2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworCisgICAgZmlu
aXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAganNUZXN0SXNBc3luYyA9
IHRydWU7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJs
ZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCh0
cnVlKTsKKyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQo
ZmFsc2UpOworICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJk
ZXN0aW5hdGlvbiIpOworICAgIGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgImhlbGxvLCB3ZWxsY29tZSBob21lLiIpOwor
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB2ZXJpZnkoMTApOyB9LCAwKTsKK30K
KworZGVzY3JpcHRpb24oIlNwZWxsaW5nIHNob3VsZCBpZ25vcmUgd2hpdGVzcGFjZS4gIiArCisg
ICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnaGVsbG8sIHdlbGxjb21lIGhvbWUu
Jywgc2VsZWN0ICcgd2VsbGNvbWUgJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlv
bi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBt
ZW51IGhhcyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKK2lmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgIHRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMGNlYmFmNi4uZjQ5ODgwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMy0wMS0yOCAgUm91c2xhbiBTb2xv
bWFraGluICA8cm91c2xhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hyb21pdW0gc3BlbGwg
Y2hlY2sgc2hvdWxkIHdvcmsgd2l0aCB3aGl0ZXNwYWNlLCBwdW5jdHVhdGlvbiwgYW5kIG11bHRp
LXdvcmQgbWlzc3BlbGxpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDY4MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBGaXggQ2hyb21pdW0gc3BlbGwgY2hlY2tlciB0byBiZWhhdmUgYXMgZm9sbG93
czoKKyAgICAgICAgLSBDaHJvbWl1bSBzZWxlY3RzIHRoZSBtaXNzcGVsbGVkIHdvcmQgb24gY29u
dGV4dCBjbGljay4KKyAgICAgICAgLSBTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2Vy
IHNlbGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBleGFjdGx5LgorICAgICAgICAtIElmIHRoZSB3
b3JkIGlzIG5vdCBtaXNzcGVsbGVkLCB0aGVyZSBzaG91bGQgYmUgbm8gc3BlbGxpbmcgb3B0aW9u
cyBpbiB0aGUgY29udGV4dCBtZW51LgorICAgICAgICAtIENocm9tZSBzaG91bGQgc2VsZWN0IG11
bHRpLXdvcmQgbWlzc3BlbGxpbmdzIG9uIGNvbnRleHQgY2xpY2suCisgICAgICAgIC0gU3BlbGxp
bmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbXVsdGktd29yZCBtaXNzcGVs
bGluZyBleGFjdGx5LgorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCB3b3JrIGZvciBkb3VibGUt
Y2xpY2tlZCBtaXNzcGVsbGluZ3MuCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB3
aGl0ZXNwYWNlLgorICAgICAgICAtIFVuZGVyc2NvcmVzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdo
aXRlc3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4KKyAgICAgICAgLSBQdW5jdHVh
dGlvbiBtYXJrcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91
bGQgaWdub3JlIHRoZW0uCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdo
ZW4gdXNlciBzZWxlY3RzIGEgcGFydCBvZiBtaXNzcGVsbGluZy4KKyAgICAgICAgLSBTcGVsbGlu
ZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVjdHMgbXVsdGlwbGUgd29yZHMgdGhh
dCBhcmUgbm90IGEgc2luZ2xlIG1pc3NwZWxsaW5nLgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5o
dG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlj
a2VkLXdvcmQuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1l
eGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWwKKyAgICAgICAg
ICAgICAgIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5odG1s
CisgICAgICAgICAgICAgICBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qt
bXVsdGlwbGUtd29yZHMuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24uaHRtbAorICAgICAgICAgICAg
ICAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi5o
dG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJz
Y29yZS1zZWxlY3Rpb24uaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwKKworICAgICAgICAqIHNyYy9Db250
ZXh0TWVudUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6SXNXaGl0ZVNwYWNlT3JQdW5jdHVhdGlvbik6IE5ldyB1dGlsaXR5IGZ1bmN0aW9uIGZvciBk
ZXRlY3Rpbmcgd2hpdGVzcGFjZSBhbmQgcHVuY3R1YXRpb24gaW4gc2VsZWN0ZWQgdGV4dC4KKyAg
ICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURl
ZmF1bHRJdGVtcyk6IE1vZGlmaWVkIHRvIHdvcmsgd2l0aCB3aGl0ZXNwYWNlLCBwdW5jdHVhdGlv
biwgYW5kIG11bHRpLXdvcmQgbWlzc3BlbGxpbmdzLgorICAgICAgICAqIHNyYy9XZWJGcmFtZUlt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OnJlcGxhY2VNaXNzcGVsbGVk
UmFuZ2UpOiBGaXhlZCBpbmNvcnJlY3QgcmFuZ2UgcmVwbGFjZW1lbnQuIENocm9taXVtIHdpbGwg
dXNlIHRoaXMgbWV0aG9kIGluc3RlYWQgb2YgcmVwbGFjZVJhbmdlLgorCiAyMDEzLTAxLTI4ICBK
YW1lcyBDcmFpZyAgPGphbWVzQGNvb2tpZWNyb29rLmNvbT4KIAogICAgICAgICBIVE1MNSBwcm9t
b3RlcyBETCBmcm9tIHNwZWNpZmljICdkZWZpbml0aW9uIGxpc3QnIHRvIHN1cGVyc2V0ICdkZXNj
cmlwdGlvbiBsaXN0JzsgYWNjZXNzaWJpbGl0eSBzdHJpbmdzIGFuZCBhY2Nlc3NvcnMgc2hvdWxk
IGJlIHVwZGF0ZWQgdG8gbWF0Y2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAppbmRleCAzMzk1NmJjLi4yYzk3OGYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1w
bC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
ci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5o
IgpAQCAtNzgsNiArNzksMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCisvLyBSZXR1cm5zIHRydWUgZm9yIHdoaXRlc3BhY2UgYW5kIHB1bmN0dWF0
aW9uIGNoYXJhY3RlcnMuIFJldHVybnMgZmFsc2UgZm9yIGV2ZXJ5IG90aGVyIHR5cGUgb2YgY2hh
cmFjdGVyLgorc3RhdGljIGJvb2wgSXNXaGl0ZVNwYWNlT3JQdW5jdHVhdGlvbihVQ2hhciBjKQor
eworICAgIHJldHVybiBXVEY6OlVuaWNvZGU6OmlzU2VwYXJhdG9yU3BhY2UoYykgfHwgV1RGOjpV
bmljb2RlOjppc1B1bmN0KGMpOworfQorCiAvLyBGaWd1cmUgb3V0IHRoZSBVUkwgb2YgYSBwYWdl
IG9yIHN1YmZyYW1lLiBSZXR1cm5zIHxwYWdlX3R5cGV8IGFzIHRoZSB0eXBlLAogLy8gd2hpY2gg
aW5kaWNhdGVzIHBhZ2Ugb3Igc3ViZnJhbWUsIG9yIENvbnRleHROb2RlVHlwZTo6Tk9ORSBpZiB0
aGUgVVJMIGNvdWxkIG5vdAogLy8gYmUgZGV0ZXJtaW5lZCBmb3Igc29tZSByZWFzb24uCkBAIC0x
MDIsOCArMTA5LDggQEAgc3RhdGljIGJvb2wgaXNBU2luZ2xlV29yZChjb25zdCBTdHJpbmcmIHRl
eHQpCiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgbWlzc3BlbGxlZCB3b3JkIG9uIHdo
aWNoIGNvbnRleHQgbWVudQotLy8gaXMgdG8gYmUgZXZvbGtlZC4gVGhpcyBmdW5jdGlvbiBhbHNv
IHNldHMgdGhlIHdvcmQgb24gd2hpY2ggY29udGV4dCBtZW51Ci0vLyBoYXMgYmVlbiBldm9rZWQg
dG8gYmUgdGhlIHNlbGVjdGVkIHdvcmQsIGFzIHJlcXVpcmVkLiBUaGlzIGZ1bmN0aW9uIGNoYW5n
ZXMKKy8vIGlzIHRvIGJlIGludm9rZWQuIFRoaXMgZnVuY3Rpb24gYWxzbyBzZXRzIHRoZSB3b3Jk
IG9uIHdoaWNoIGNvbnRleHQgbWVudQorLy8gaGFzIGJlZW4gaW52b2tlZCB0byBiZSB0aGUgc2Vs
ZWN0ZWQgd29yZCwgYXMgcmVxdWlyZWQuIFRoaXMgZnVuY3Rpb24gY2hhbmdlcwogLy8gdGhlIHNl
bGVjdGlvbiBvbmx5IHdoZW4gdGhlcmUgd2VyZSBubyBzZWxlY3RlZCBjaGFyYWN0ZXJzIG9uIE9T
IFguCiBzdGF0aWMgU3RyaW5nIHNlbGVjdE1pc3NwZWxsZWRXb3JkKGNvbnN0IENvbnRleHRNZW51
KiBkZWZhdWx0TWVudSwgRnJhbWUqIHNlbGVjdGVkRnJhbWUpCiB7CkBAIC0yNzQsMzYgKzI4MSwz
NiBAQCBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudUNsaWVudEltcGw6OmdldEN1
c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKAogI2VuZGlmCiAgICAgICAgIC8vIFdoZW4gQ2hyb21l
IGVuYWJsZXMgYXN5bmNocm9ub3VzIHNwZWxsY2hlY2tpbmcsIGl0cyBzcGVsbGNoZWNrZXIgYWRk
cyBzcGVsbGluZyBtYXJrZXJzIHRvIG1pc3NwZWxsZWQKICAgICAgICAgLy8gd29yZHMgYW5kIGF0
dGFjaGVzIHN1Z2dlc3Rpb25zIHRvIHRoZXNlIG1hcmtlcnMgaW4gdGhlIGJhY2tncm91bmQuIFRo
ZXJlZm9yZSwgd2hlbiBhIHVzZXIgcmlnaHQtY2xpY2tzCi0gICAgICAgIC8vIGEgbW91c2Ugb24g
YSB3b3JkLCBDaHJvbWUganVzdCBuZWVkcyB0byBmaW5kIGEgc3BlbGxpbmcgbWFya2VyIG9uIHRo
ZSB3b3JkIGluc3RyZWFkIG9mIHNwZWxsY2hlY2tpbmcgaXQuCisgICAgICAgIC8vIGEgbW91c2Ug
b24gYSB3b3JkLCBDaHJvbWUganVzdCBuZWVkcyB0byBmaW5kIGEgc3BlbGxpbmcgbWFya2VyIG9u
IHRoZSB3b3JkIGluc3RlYWQgb2Ygc3BlbGxjaGVja2luZyBpdC4KICAgICAgICAgaWYgKHNlbGVj
dGVkRnJhbWUtPnNldHRpbmdzKCkgJiYgc2VsZWN0ZWRGcmFtZS0+c2V0dGluZ3MoKS0+YXN5bmNo
cm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkgewogICAgICAgICAgICAgVmlzaWJsZVNlbGVj
dGlvbiBzZWxlY3Rpb24gPSBzZWxlY3RlZEZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCk7
Ci0gICAgICAgICAgICBib29sIHNob3VsZFVwZGF0ZVNlbGVjdGlvbiA9IGZhbHNlOwogICAgICAg
ICAgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0T3JSYW5nZSgpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9u
LmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFyaXR5KTsKLSAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkVXBkYXRlU2VsZWN0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6
ZWRSYW5nZSgpOwotICAgICAgICAgICAgICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IG1hcmtl
cnMgPSBzZWxlY3RlZEZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPm1hcmtlcnNJblJhbmdl
KHJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcgfCBEb2N1bWVudE1hcmtlcjo6
R3JhbW1hcik7CisgICAgICAgICAgICAgICAgLy8gQ2FyZXQgYW5kIHJhbmdlIHNlbGVjdGlvbnMg
YWx3YXlzIHJldHVybiB2YWxpZCBub3JtYWxpemVkIHJhbmdlcy4KKyAgICAgICAgICAgICAgICBS
ZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdl
KCk7CisgICAgICAgICAgICAgICAgLy8gQ2xvbmluZyBhIHJhbmdlIGZhaWxzIG9ubHkgZm9yIGlu
dmFsaWQgcmFuZ2VzLgorICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2Ug
PSBzZWxlY3Rpb25SYW5nZS0+Y2xvbmVSYW5nZShBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAg
ICAgICAgICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gc2VsZWN0ZWRGcmFt
ZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJzSW5SYW5nZShzZWxlY3Rpb25SYW5nZS5n
ZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIp
OwogICAgICAgICAgICAgICAgIGlmIChtYXJrZXJzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChtYXJrZXJzWzBdLT5zdGFydE9mZnNldCgpICE9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihyYW5nZS0+c3RhcnRPZmZzZXQoKSkgfHwgbWFya2Vyc1swXS0+ZW5kT2Zmc2V0KCkg
IT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmdlLT5lbmRPZmZzZXQoKSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBtYXJrZXJzLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGlmIChtYXJrZXJzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJhbmdlLT5zZXRTdGFydChyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgbWFya2Vyc1swXS0+c3Rh
cnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJhbmdlLT5zZXRFbmQocmFuZ2UtPmVu
ZENvbnRhaW5lcigpLCBtYXJrZXJzWzBdLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGRhdGEubWlzc3BlbGxlZFdvcmQgPSByYW5nZS0+dGV4dCgpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAobWFya2Vyc1swXS0+ZGVzY3JpcHRpb24oKS5sZW5ndGgoKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvbnM7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtYXJrZXJzWzBdLT5kZXNjcmlwdGlvbigpLnNwbGl0KCdcbicsIHN1Z2dlc3Rp
b25zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZGljdGlvbmFyeVN1Z2dlc3Rpb25z
ID0gc3VnZ2VzdGlvbnM7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV93ZWJWaWV3
LT5zcGVsbENoZWNrQ2xpZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaXNz
cGVsbGVkT2Zmc2V0LCBtaXNzcGVsbGVkTGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICAgICAg
bV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xpZW50KCktPnNwZWxsQ2hlY2soZGF0YS5taXNzcGVsbGVk
V29yZCwgbWlzc3BlbGxlZE9mZnNldCwgbWlzc3BlbGxlZExlbmd0aCwgJmRhdGEuZGljdGlvbmFy
eVN1Z2dlc3Rpb25zKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICBzZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHNob3VsZFVwZGF0ZVNlbGVjdGlvbiAmJiBzZWxlY3RlZEZyYW1lLT5zZWxl
Y3Rpb24oKS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbikpCisgICAgICAgICAgICAg
ICAgICAgIG1hcmtlclJhbmdlLT5zZXRTdGFydChtYXJrZXJSYW5nZS0+c3RhcnRDb250YWluZXIo
KSwgbWFya2Vyc1swXS0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIG1hcmtl
clJhbmdlLT5zZXRFbmQobWFya2VyUmFuZ2UtPmVuZENvbnRhaW5lcigpLCBtYXJrZXJzWzBdLT5l
bmRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHNlbGVj
dGlvbiwgdGhlbiBzZWxlY3QgdGhlIG1pc3NwZWxsaW5nLgorICAgICAgICAgICAgICAgICAgICBp
ZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0
aW9uID0gVmlzaWJsZVNlbGVjdGlvbihtYXJrZXJSYW5nZS5nZXQoKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxlY3RlZEZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKHNlbGVj
dGlvbiwgV29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlv
blJhbmdlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SYW5nZSA9
IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25SYW5nZS0+dGV4dCgpLnN0cmlwV2hpdGVT
cGFjZSgmSXNXaGl0ZVNwYWNlT3JQdW5jdHVhdGlvbikgPT0gbWFya2VyUmFuZ2UtPnRleHQoKS5z
dHJpcFdoaXRlU3BhY2UoJklzV2hpdGVTcGFjZU9yUHVuY3R1YXRpb24pKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhLm1pc3NwZWxsZWRXb3JkID0gbWFya2VyUmFuZ2UtPnRleHQoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXJrZXJzWzBdLT5kZXNjcmlwdGlvbigpLmxl
bmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gc3Vn
Z2VzdGlvbnM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vyc1swXS0+ZGVzY3Jp
cHRpb24oKS5zcGxpdCgnXG4nLCBzdWdnZXN0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YS5kaWN0aW9uYXJ5U3VnZ2VzdGlvbnMgPSBzdWdnZXN0aW9uczsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xpZW50KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWlzc3BlbGxlZE9mZnNldCwgbWlz
c3BlbGxlZExlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3dlYlZpZXctPnNw
ZWxsQ2hlY2tDbGllbnQoKS0+c3BlbGxDaGVjayhkYXRhLm1pc3NwZWxsZWRXb3JkLCBtaXNzcGVs
bGVkT2Zmc2V0LCBtaXNzcGVsbGVkTGVuZ3RoLCAmZGF0YS5kaWN0aW9uYXJ5U3VnZ2VzdGlvbnMp
OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggNjBjMmUwZi4uNTZmNzc0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0x
Mjk5LDExICsxMjk5LDE2IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpyZXBsYWNlTWlzc3BlbGxlZFJh
bmdlKGNvbnN0IFdlYlN0cmluZyYgdGV4dCkKICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBt
YXJrZXJzID0gZnJhbWUoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJzSW5SYW5nZShj
YXJldFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcgfCBEb2N1bWVudE1hcmtl
cjo6R3JhbW1hcik7CiAgICAgaWYgKG1hcmtlcnMuc2l6ZSgpIDwgMSB8fCBtYXJrZXJzWzBdLT5z
dGFydE9mZnNldCgpID49IG1hcmtlcnNbMF0tPmVuZE9mZnNldCgpKQogICAgICAgICByZXR1cm47
Ci0gICAgUmVmUHRyPFJhbmdlPiBtYXJrZXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9t
TG9jYXRpb25BbmRMZW5ndGgoZnJhbWUoKS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1l
bnRPckRvY3VtZW50RWxlbWVudCgpLCBtYXJrZXJzWzBdLT5zdGFydE9mZnNldCgpLCBtYXJrZXJz
WzBdLT5lbmRPZmZzZXQoKSAtIG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkpOwotICAgIGlmICgh
bWFya2VyUmFuZ2UuZ2V0KCkgfHwgIWZyYW1lKCktPnNlbGVjdGlvbigpLT5zaG91bGRDaGFuZ2VT
ZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCkpKQorICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9u
Q29kZTsKKyAgICBSZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gY2FyZXRSYW5nZS0+Y2xvbmVS
YW5nZShleGNlcHRpb25Db2RlKTsKKyAgICBpZiAoIWV4Y2VwdGlvbkNvZGUpCisgICAgICAgIHJl
dHVybjsKKyAgICBtYXJrZXJSYW5nZS0+c2V0U3RhcnQobWFya2VyUmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCksIG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkpOworICAgIG1hcmtlclJhbmdlLT5zZXRF
bmQobWFya2VyUmFuZ2UtPmVuZENvbnRhaW5lcigpLCBtYXJrZXJzWzBdLT5lbmRPZmZzZXQoKSk7
CisgICAgaWYgKCFmcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG1h
cmtlclJhbmdlLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGZyYW1lKCktPnNlbGVjdGlv
bigpLT5zZXRTZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCksIENoYXJhY3RlckdyYW51bGFyaXR5
KTsKLSAgICBmcmFtZSgpLT5lZGl0b3IoKS0+cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRleHQs
IGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZSgpLT5lZGl0b3IoKS0+cmVwbGFjZVNlbGVjdGlvbldp
dGhUZXh0KHRleHQsIGZhbHNlLCBmYWxzZSk7CiB9CiAKIGJvb2wgV2ViRnJhbWVJbXBsOjpoYXNT
ZWxlY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suY3BwCmluZGV4IDc1OTNj
NzEuLjQ0ODA2YmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5jcHAKQEAgLTY5LDI3ICs2
OSwzNCBAQCBib29sIE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZChjb25zdCBXZWJTdHJp
bmcmIHRleHQsIGludCogbWlzc3BlbGxlZE9mZnNldAogICAgICAgICAvLyAoVGhpcyBpcyBhIHNp
bXBsZSB2ZXJzaW9uIG9mIG91ciBTcGVsbENoZWNrV29yZEl0ZXJhdG9yIGNsYXNzLikKICAgICAg
ICAgLy8gSWYgdGhlIGdpdmVuIHN0cmluZyBkb2Vzbid0IGluY2x1ZGUgYW55IEFTQ0lJIGNoYXJh
Y3RlcnMsIHdlIGNhbiB0cmVhdCB0aGUKICAgICAgICAgLy8gc3RyaW5nIGFzIHZhbGlkIG9uZS4K
LSAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgVGhpcyBpbXBsZW1lbnRhdGlvbiBzcGxpdHMgYSBj
b250cmFjdGlvbiwgaS5lLiAiaXNuJ3QiIGlzCi0gICAgICAgIC8vIHNwbGl0IGludG8gdHdvIHBp
ZWNlcyAiaXNuIiBhbmQgInQiLiBUaGlzIGlzIE9LIGJlY2F1c2Ugd2Via2l0IHRlc3RzCi0gICAg
ICAgIC8vIGRvbid0IGhhdmUgbWlzc3BlbGxlZCBjb250cmFjdGlvbnMuCiAgICAgICAgIGludCB3
b3JkT2Zmc2V0ID0gc3RyaW5nVGV4dC5maW5kKGlzQVNDSUlBbHBoYSk7CiAgICAgICAgIGlmICh3
b3JkT2Zmc2V0ID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGludCB3
b3JkRW5kID0gc3RyaW5nVGV4dC5maW5kKGlzTm90QVNDSUlBbHBoYSwgd29yZE9mZnNldCk7Ci0g
ICAgICAgIGludCB3b3JkTGVuZ3RoID0gd29yZEVuZCA9PSAtMSA/IHN0YXRpY19jYXN0PGludD4o
c3RyaW5nVGV4dC5sZW5ndGgoKSkgLSB3b3JkT2Zmc2V0IDogd29yZEVuZCAtIHdvcmRPZmZzZXQ7
CisgICAgICAgIGludCBtYXhXb3JkTGVuZ3RoID0gc3RyaW5nVGV4dC5sZW5ndGgoKSAtIHdvcmRP
ZmZzZXQ7CisgICAgICAgIGludCB3b3JkTGVuZ3RoOworICAgICAgICBXVEY6OlN0cmluZyB3b3Jk
OwogCiAgICAgICAgIC8vIExvb2sgdXAgb3VyIG1pc3NwZWxsZWQtd29yZCB0YWJsZSB0byBjaGVj
ayBpZiB0aGUgZXh0cmFjdGVkIHdvcmQgaXMgYQogICAgICAgICAvLyBrbm93biBtaXNzcGVsbGVk
IHdvcmQsIGFuZCByZXR1cm4gdGhlIG9mZnNldCBhbmQgdGhlIGxlbmd0aCBvZiB0aGUKICAgICAg
ICAgLy8gZXh0cmFjdGVkIHdvcmQgaWYgdGhpcyB3b3JkIGlzIGEga25vd24gbWlzc3BlbGxlZCB3
b3JkLgogICAgICAgICAvLyAoU2VlIHRoZSBjb21tZW50IGluIE1vY2tTcGVsbENoZWNrOjppbml0
aWFsaXplSWZOZWVkZWQoKSB3aHkgd2UgdXNlIGEKICAgICAgICAgLy8gbWlzc3BlbGxlZC13b3Jk
IHRhYmxlLikKLSAgICAgICAgV1RGOjpTdHJpbmcgd29yZCA9IHN0cmluZ1RleHQuc3Vic3RyaW5n
KHdvcmRPZmZzZXQsIHdvcmRMZW5ndGgpOwotICAgICAgICBpZiAobV9taXNzcGVsbGVkV29yZHMu
Y29udGFpbnMod29yZCkpIHsKLSAgICAgICAgICAgICptaXNzcGVsbGVkT2Zmc2V0ID0gd29yZE9m
ZnNldCArIHNraXBwZWRMZW5ndGg7Ci0gICAgICAgICAgICAqbWlzc3BlbGxlZExlbmd0aCA9IHdv
cmRMZW5ndGg7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBtX21pc3NwZWxsZWRXb3Jkcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgd29yZExlbmd0
aCA9IG1fbWlzc3BlbGxlZFdvcmRzLmF0KGkpLmxlbmd0aCgpID4gbWF4V29yZExlbmd0aCA/IG1h
eFdvcmRMZW5ndGggOiBtX21pc3NwZWxsZWRXb3Jkcy5hdChpKS5sZW5ndGgoKTsKKyAgICAgICAg
ICAgIHdvcmQgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyh3b3JkT2Zmc2V0LCB3b3JkTGVuZ3RoKTsK
KyAgICAgICAgICAgIGlmICh3b3JkID09IG1fbWlzc3BlbGxlZFdvcmRzLmF0KGkpICYmIChzdHJp
bmdUZXh0Lmxlbmd0aCgpID09IHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoIHx8IGlzTm90QVNDSUlB
bHBoYShzdHJpbmdUZXh0W3dvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoXSkpKSB7CisgICAgICAgICAg
ICAgICAgKm1pc3NwZWxsZWRPZmZzZXQgPSB3b3JkT2Zmc2V0ICsgc2tpcHBlZExlbmd0aDsKKyAg
ICAgICAgICAgICAgICAqbWlzc3BlbGxlZExlbmd0aCA9IHdvcmRMZW5ndGg7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoKm1p
c3NwZWxsZWRMZW5ndGggPiAwKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaW50IHdv
cmRFbmQgPSBzdHJpbmdUZXh0LmZpbmQoaXNOb3RBU0NJSUFscGhhLCB3b3JkT2Zmc2V0KTsKKyAg
ICAgICAgd29yZExlbmd0aCA9IHdvcmRFbmQgPT0gLTEgPyBzdGF0aWNfY2FzdDxpbnQ+KHN0cmlu
Z1RleHQubGVuZ3RoKCkpIC0gd29yZE9mZnNldCA6IHdvcmRFbmQgLSB3b3JkT2Zmc2V0OworCiAg
ICAgICAgIEFTU0VSVCgwIDwgd29yZE9mZnNldCArIHdvcmRMZW5ndGgpOwogICAgICAgICBzdHJp
bmdUZXh0ID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcod29yZE9mZnNldCArIHdvcmRMZW5ndGgpOwog
ICAgICAgICBza2lwcGVkTGVuZ3RoICs9IHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoOwpAQCAtMTUx
LDEyICsxNTgsMTMgQEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKCkK
ICAgICAgICAgImlmbW1wIiwKICAgICAgICAgInF3ZXJ0eXVpb3Bhc2QiLAogICAgICAgICAicXdl
cnR5dWlvcGFzZGYiLAorICAgICAgICAidXBwZXIgY2FzZSIsCiAgICAgICAgICJ3ZWxsY29tZSIK
ICAgICB9OwogCiAgICAgbV9taXNzcGVsbGVkV29yZHMuY2xlYXIoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGFycmF5c2l6ZShtaXNzcGVsbGVkV29yZHMpOyArK2kpCi0gICAgICAgIG1f
bWlzc3BlbGxlZFdvcmRzLmFkZChXVEY6OlN0cmluZzo6ZnJvbVVURjgobWlzc3BlbGxlZFdvcmRz
W2ldKSwgZmFsc2UpOworICAgICAgICBtX21pc3NwZWxsZWRXb3Jkcy5hcHBlbmQoV1RGOjpTdHJp
bmc6OmZyb21VVEY4KG1pc3NwZWxsZWRXb3Jkc1tpXSkpOwogCiAgICAgLy8gTWFyayBhcyBpbml0
aWFsaXplZCB0byBwcmV2ZW50IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcgaW5pdGlhbGl6ZWQgdHdp
Y2UKICAgICAvLyBvciBtb3JlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmgKaW5kZXggOGE5OGQ3
MC4uYmZhMTg4YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5oCkBAIC0zMyw4ICszMyw3IEBA
CiAKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3RyaW5nLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZlY3Rvci5oIgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogLy8gQSBt
b2NrIGltcGxlbWVudGF0aW9uIG9mIGEgc3BlbGwtY2hlY2tlciB1c2VkIGZvciBXZWJLaXQgdGVz
dHMuCkBAIC03MSw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbml0aWFsaXplSWZOZWVk
ZWQoKTsKIAogICAgIC8vIEEgdGFibGUgdGhhdCBjb25zaXN0cyBvZiBtaXNzcGVsbGVkIHdvcmRz
LgotICAgIEhhc2hNYXA8V1RGOjpTdHJpbmcsIGJvb2w+IG1fbWlzc3BlbGxlZFdvcmRzOworICAg
IFZlY3RvcjxXVEY6OlN0cmluZz4gbV9taXNzcGVsbGVkV29yZHM7CiAKICAgICAvLyBBIGZsYWcg
cmVwcmVzZW50aW5nIHdoZXRoZXIgb3Igbm90IHRoaXMgb2JqZWN0IGlzIGluaXRpYWxpemVkLgog
ICAgIGJvb2wgbV9pbml0aWFsaXplZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185121</attachid>
            <date>2013-01-28 18:00:55 -0800</date>
            <delta_ts>2013-01-29 14:02:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106815-20130128175742.patch</filename>
            <type>text/plain</type>
            <size>66557</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGY4ODBkNzE3ZjQ2YWNhNGIyZjIzOGNmNjFkYzUyYzFhYzdlNTkyMGMuLmZhMmJhZWEzYjk1Mzkz
N2YwMzNmNDhiODU0YmY5YzRlOWVmMDhjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTMtMDEtMjggIFJvdXNsYW4gU29sb21ha2hpbiAgPHJvdXNsYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEZpeGVzIGZvciBzcGVsbCBjaGVja2VyIGJlaGF2aW9y
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4MTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggQ2hy
b21pdW0gc3BlbGwgY2hlY2tlciB0byBiZWhhdmUgYXMgZm9sbG93czoKKyAgICAgICAgLSBDaHJv
bWl1bSBzZWxlY3RzIHRoZSBtaXNzcGVsbGVkIHdvcmQgb24gY29udGV4dCBjbGljay4KKyAgICAg
ICAgLSBTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgdGhlIG1pc3Nw
ZWxsZWQgd29yZCBleGFjdGx5LgorICAgICAgICAtIElmIHRoZSB3b3JkIGlzIG5vdCBtaXNzcGVs
bGVkLCB0aGVyZSBzaG91bGQgYmUgbm8gc3BlbGxpbmcgb3B0aW9ucyBpbiB0aGUgY29udGV4dCBt
ZW51LgorICAgICAgICAtIENocm9tZSBzaG91bGQgc2VsZWN0IG11bHRpLXdvcmQgbWlzc3BlbGxp
bmdzIG9uIGNvbnRleHQgY2xpY2suCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hl
biB0aGUgdXNlciBzZWxlY3RzIGEgbXVsdGktd29yZCBtaXNzcGVsbGluZyBleGFjdGx5LgorICAg
ICAgICAtIFNwZWxsaW5nIHNob3VsZCB3b3JrIGZvciBkb3VibGUtY2xpY2tlZCBtaXNzcGVsbGlu
Z3MuCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB3aGl0ZXNwYWNlLgorICAgICAg
ICAtIFVuZGVyc2NvcmVzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5n
IHNob3VsZCBpZ25vcmUgdGhlbS4KKyAgICAgICAgLSBQdW5jdHVhdGlvbiBtYXJrcyBzaG91bGQg
YmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uCisg
ICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIGEg
cGFydCBvZiBtaXNzcGVsbGluZy4KKyAgICAgICAgLSBTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJs
ZWQgd2hlbiB1c2VyIHNlbGVjdHMgbXVsdGlwbGUgd29yZHMgdGhhdCBhcmUgbm90IGEgc2luZ2xl
IG1pc3NwZWxsaW5nLgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5odG1sCisgICAgICAgICAgICAg
ICBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbAorICAg
ICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11
bHRpcGxlLXdvcmRzLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5odG1sCisgICAgICAgICAgICAgICBl
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRt
bAorICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0
LXNpbmdsZS13b3JkLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctc3Vid29yZC1zZWxlY3Rpb24uaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1sCisgICAgICAgICAgICAg
ICBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24uaHRt
bAorICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3Bh
Y2Utc2VsZWN0aW9uLmh0bWwKKworICAgICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SXNXaGl0ZVNwYWNlT3JQ
dW5jdHVhdGlvbik6IE5ldyB1dGlsaXR5IGZ1bmN0aW9uIGZvciBkZXRlY3Rpbmcgd2hpdGVzcGFj
ZSBhbmQgcHVuY3R1YXRpb24gaW4gc2VsZWN0ZWQgdGV4dC4KKyAgICAgICAgKFdlYktpdDo6Q29u
dGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6IE1vZGlm
aWVkIHRvIHdvcmsgd2l0aCB3aGl0ZXNwYWNlLCBwdW5jdHVhdGlvbiwgYW5kIG11bHRpLXdvcmQg
bWlzc3BlbGxpbmdzLgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUltcGw6OnJlcGxhY2VNaXNzcGVsbGVkUmFuZ2UpOiBGaXhlZCBpbmNv
cnJlY3QgcmFuZ2UgcmVwbGFjZW1lbnQuIENocm9taXVtIHdpbGwgdXNlIHRoaXMgbWV0aG9kIGlu
c3RlYWQgb2YgcmVwbGFjZVJhbmdlLgorCiAyMDEzLTAxLTI4ICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTQxMDA2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4
dE1lbnVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRN
ZW51Q2xpZW50SW1wbC5jcHAKaW5kZXggMzM5NTZiY2E3ODRlMDE5NDU5YjJmOTNkNGI0NjAxYzU2
ZWY1MDMyNy4uMmQ1Y2Y0NDBkZjVhYjUyYzM5OTYyNWE2ZGVlMzY1YTkwNjM3MTc1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwu
Y3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIK
QEAgLTc4LDYgKzc5LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAorLy8gUmV0dXJucyB0cnVlIGZvciB3aGl0ZXNwYWNlIGFuZCBwdW5jdHVhdGlv
biBjaGFyYWN0ZXJzLiBSZXR1cm5zIGZhbHNlIGZvciBldmVyeSBvdGhlciB0eXBlIG9mIGNoYXJh
Y3Rlci4KK3N0YXRpYyBib29sIElzV2hpdGVTcGFjZU9yUHVuY3R1YXRpb24oVUNoYXIgYykKK3sK
KyAgICByZXR1cm4gV1RGOjpVbmljb2RlOjppc1NlcGFyYXRvclNwYWNlKGMpIHx8IFdURjo6VW5p
Y29kZTo6aXNQdW5jdChjKTsKK30KKwogLy8gRmlndXJlIG91dCB0aGUgVVJMIG9mIGEgcGFnZSBv
ciBzdWJmcmFtZS4gUmV0dXJucyB8cGFnZV90eXBlfCBhcyB0aGUgdHlwZSwKIC8vIHdoaWNoIGlu
ZGljYXRlcyBwYWdlIG9yIHN1YmZyYW1lLCBvciBDb250ZXh0Tm9kZVR5cGU6Ok5PTkUgaWYgdGhl
IFVSTCBjb3VsZCBub3QKIC8vIGJlIGRldGVybWluZWQgZm9yIHNvbWUgcmVhc29uLgpAQCAtMTAy
LDggKzEwOSw4IEBAIHN0YXRpYyBib29sIGlzQVNpbmdsZVdvcmQoY29uc3QgU3RyaW5nJiB0ZXh0
KQogfQogCiAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IG1pc3NwZWxsZWQgd29yZCBvbiB3aGlj
aCBjb250ZXh0IG1lbnUKLS8vIGlzIHRvIGJlIGV2b2xrZWQuIFRoaXMgZnVuY3Rpb24gYWxzbyBz
ZXRzIHRoZSB3b3JkIG9uIHdoaWNoIGNvbnRleHQgbWVudQotLy8gaGFzIGJlZW4gZXZva2VkIHRv
IGJlIHRoZSBzZWxlY3RlZCB3b3JkLCBhcyByZXF1aXJlZC4gVGhpcyBmdW5jdGlvbiBjaGFuZ2Vz
CisvLyBpcyB0byBiZSBpbnZva2VkLiBUaGlzIGZ1bmN0aW9uIGFsc28gc2V0cyB0aGUgd29yZCBv
biB3aGljaCBjb250ZXh0IG1lbnUKKy8vIGhhcyBiZWVuIGludm9rZWQgdG8gYmUgdGhlIHNlbGVj
dGVkIHdvcmQsIGFzIHJlcXVpcmVkLiBUaGlzIGZ1bmN0aW9uIGNoYW5nZXMKIC8vIHRoZSBzZWxl
Y3Rpb24gb25seSB3aGVuIHRoZXJlIHdlcmUgbm8gc2VsZWN0ZWQgY2hhcmFjdGVycyBvbiBPUyBY
Lgogc3RhdGljIFN0cmluZyBzZWxlY3RNaXNzcGVsbGVkV29yZChjb25zdCBDb250ZXh0TWVudSog
ZGVmYXVsdE1lbnUsIEZyYW1lKiBzZWxlY3RlZEZyYW1lKQogewpAQCAtMjc0LDM2ICsyODEsMzUg
QEAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0
b21NZW51RnJvbURlZmF1bHRJdGVtcygKICNlbmRpZgogICAgICAgICAvLyBXaGVuIENocm9tZSBl
bmFibGVzIGFzeW5jaHJvbm91cyBzcGVsbGNoZWNraW5nLCBpdHMgc3BlbGxjaGVja2VyIGFkZHMg
c3BlbGxpbmcgbWFya2VycyB0byBtaXNzcGVsbGVkCiAgICAgICAgIC8vIHdvcmRzIGFuZCBhdHRh
Y2hlcyBzdWdnZXN0aW9ucyB0byB0aGVzZSBtYXJrZXJzIGluIHRoZSBiYWNrZ3JvdW5kLiBUaGVy
ZWZvcmUsIHdoZW4gYSB1c2VyIHJpZ2h0LWNsaWNrcwotICAgICAgICAvLyBhIG1vdXNlIG9uIGEg
d29yZCwgQ2hyb21lIGp1c3QgbmVlZHMgdG8gZmluZCBhIHNwZWxsaW5nIG1hcmtlciBvbiB0aGUg
d29yZCBpbnN0cmVhZCBvZiBzcGVsbGNoZWNraW5nIGl0LgorICAgICAgICAvLyBhIG1vdXNlIG9u
IGEgd29yZCwgQ2hyb21lIGp1c3QgbmVlZHMgdG8gZmluZCBhIHNwZWxsaW5nIG1hcmtlciBvbiB0
aGUgd29yZCBpbnN0ZWFkIG9mIHNwZWxsY2hlY2tpbmcgaXQuCiAgICAgICAgIGlmIChzZWxlY3Rl
ZEZyYW1lLT5zZXR0aW5ncygpICYmIHNlbGVjdGVkRnJhbWUtPnNldHRpbmdzKCktPmFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpIHsKICAgICAgICAgICAgIFZpc2libGVTZWxlY3Rp
b24gc2VsZWN0aW9uID0gc2VsZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpOwot
ICAgICAgICAgICAgYm9vbCBzaG91bGRVcGRhdGVTZWxlY3Rpb24gPSBmYWxzZTsKICAgICAgICAg
ICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldE9yUmFuZ2UoKSkgewotICAgICAgICAgICAgICAgIGlm
IChzZWxlY3Rpb24uaXNDYXJldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5l
eHBhbmRVc2luZ0dyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHNob3VsZFVwZGF0ZVNlbGVjdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVk
UmFuZ2UoKTsKLSAgICAgICAgICAgICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJz
ID0gc2VsZWN0ZWRGcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJzSW5SYW5nZShy
YW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwgRG9jdW1lbnRNYXJrZXI6Okdy
YW1tYXIpOworICAgICAgICAgICAgICAgIC8vIENhcmV0IGFuZCByYW5nZSBzZWxlY3Rpb25zIGFs
d2F5cyByZXR1cm4gdmFsaWQgbm9ybWFsaXplZCByYW5nZXMuCisgICAgICAgICAgICAgICAgUmVm
UHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgp
OworICAgICAgICAgICAgICAgIC8vIENsb25pbmcgYSByYW5nZSBmYWlscyBvbmx5IGZvciBpbnZh
bGlkIHJhbmdlcy4KKyAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0g
c2VsZWN0aW9uUmFuZ2UtPmNsb25lUmFuZ2UoQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAg
ICAgICAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyKj4gbWFya2VycyA9IHNlbGVjdGVkRnJhbWUt
PmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2Vyc0luUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0
KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyB8IERvY3VtZW50TWFya2VyOjpHcmFtbWFyKTsK
ICAgICAgICAgICAgICAgICBpZiAobWFya2Vycy5zaXplKCkgPT0gMSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAobWFya2Vyc1swXS0+c3RhcnRPZmZzZXQoKSAhPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpIHx8IG1hcmtlcnNbMF0tPmVuZE9mZnNldCgpICE9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS0+ZW5kT2Zmc2V0KCkpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbWFya2Vycy5jbGVhcigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpZiAobWFya2Vycy5zaXplKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICBy
YW5nZS0+c2V0U3RhcnQocmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIG1hcmtlcnNbMF0tPnN0YXJ0
T2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0RW5kKHJhbmdlLT5lbmRD
b250YWluZXIoKSwgbWFya2Vyc1swXS0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAg
ICBkYXRhLm1pc3NwZWxsZWRXb3JkID0gcmFuZ2UtPnRleHQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKG1hcmtlcnNbMF0tPmRlc2NyaXB0aW9uKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25zOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbWFya2Vyc1swXS0+ZGVzY3JpcHRpb24oKS5zcGxpdCgnXG4nLCBzdWdnZXN0aW9u
cyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmRpY3Rpb25hcnlTdWdnZXN0aW9ucyA9
IHN1Z2dlc3Rpb25zOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fd2ViVmlldy0+
c3BlbGxDaGVja0NsaWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWlzc3Bl
bGxlZE9mZnNldCwgbWlzc3BlbGxlZExlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
d2ViVmlldy0+c3BlbGxDaGVja0NsaWVudCgpLT5zcGVsbENoZWNrKGRhdGEubWlzc3BlbGxlZFdv
cmQsIG1pc3NwZWxsZWRPZmZzZXQsIG1pc3NwZWxsZWRMZW5ndGgsICZkYXRhLmRpY3Rpb25hcnlT
dWdnZXN0aW9ucyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
c2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihyYW5nZS5nZXQoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChzaG91bGRVcGRhdGVTZWxlY3Rpb24gJiYgc2VsZWN0ZWRGcmFtZS0+c2VsZWN0
aW9uKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pKQorICAgICAgICAgICAgICAg
ICAgICBtYXJrZXJSYW5nZS0+c2V0U3RhcnQobWFya2VyUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCks
IG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICBtYXJrZXJS
YW5nZS0+c2V0RW5kKG1hcmtlclJhbmdlLT5lbmRDb250YWluZXIoKSwgbWFya2Vyc1swXS0+ZW5k
T2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBzZWxlY3Rp
b24sIHRoZW4gc2VsZWN0IHRoZSBtaXNzcGVsbGluZy4KKyAgICAgICAgICAgICAgICAgICAgaWYg
KHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlv
biA9IFZpc2libGVTZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihzZWxlY3Rp
b24sIFdvcmRHcmFudWxhcml0eSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25S
YW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25SYW5nZS0+dGV4dCgpLnN0cmlw
V2hpdGVTcGFjZSgmSXNXaGl0ZVNwYWNlT3JQdW5jdHVhdGlvbikgPT0gbWFya2VyUmFuZ2UtPnRl
eHQoKS5zdHJpcFdoaXRlU3BhY2UoJklzV2hpdGVTcGFjZU9yUHVuY3R1YXRpb24pKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhLm1pc3NwZWxsZWRXb3JkID0gbWFya2VyUmFuZ2UtPnRl
eHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXJrZXJzWzBdLT5kZXNjcmlwdGlv
bigpLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmlu
Zz4gc3VnZ2VzdGlvbnM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vyc1swXS0+
ZGVzY3JpcHRpb24oKS5zcGxpdCgnXG4nLCBzdWdnZXN0aW9ucyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YS5kaWN0aW9uYXJ5U3VnZ2VzdGlvbnMgPSBzdWdnZXN0aW9uczsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xp
ZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWlzc3BlbGxlZE9mZnNl
dCwgbWlzc3BlbGxlZExlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3dlYlZp
ZXctPnNwZWxsQ2hlY2tDbGllbnQoKS0+c3BlbGxDaGVjayhkYXRhLm1pc3NwZWxsZWRXb3JkLCBt
aXNzcGVsbGVkT2Zmc2V0LCBtaXNzcGVsbGVkTGVuZ3RoLCAmZGF0YS5kaWN0aW9uYXJ5U3VnZ2Vz
dGlvbnMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggNjBjMmUwZjQ2
Mjc4MjdiYzE4ZDllNjZlOGZhYzRlYzE3OGQ0ZDM3ZS4uNTZmNzc0YjhlOGE0MjE0YjBjYjRhNWNj
OWZiYzUyNjI4MzA5MmJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCkBAIC0xMjk5LDExICsxMjk5LDE2IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpyZXBs
YWNlTWlzc3BlbGxlZFJhbmdlKGNvbnN0IFdlYlN0cmluZyYgdGV4dCkKICAgICBWZWN0b3I8RG9j
dW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gZnJhbWUoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5t
YXJrZXJzSW5SYW5nZShjYXJldFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcg
fCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CiAgICAgaWYgKG1hcmtlcnMuc2l6ZSgpIDwgMSB8
fCBtYXJrZXJzWzBdLT5zdGFydE9mZnNldCgpID49IG1hcmtlcnNbMF0tPmVuZE9mZnNldCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPFJhbmdlPiBtYXJrZXJSYW5nZSA9IFRleHRJdGVy
YXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUoKS0+c2VsZWN0aW9uKCktPnJv
b3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBtYXJrZXJzWzBdLT5zdGFydE9m
ZnNldCgpLCBtYXJrZXJzWzBdLT5lbmRPZmZzZXQoKSAtIG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0
KCkpOwotICAgIGlmICghbWFya2VyUmFuZ2UuZ2V0KCkgfHwgIWZyYW1lKCktPnNlbGVjdGlvbigp
LT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCkpKQorICAgIEV4Y2VwdGlv
bkNvZGUgZXhjZXB0aW9uQ29kZTsKKyAgICBSZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gY2Fy
ZXRSYW5nZS0+Y2xvbmVSYW5nZShleGNlcHRpb25Db2RlKTsKKyAgICBpZiAoIWV4Y2VwdGlvbkNv
ZGUpCisgICAgICAgIHJldHVybjsKKyAgICBtYXJrZXJSYW5nZS0+c2V0U3RhcnQobWFya2VyUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCksIG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkpOworICAgIG1h
cmtlclJhbmdlLT5zZXRFbmQobWFya2VyUmFuZ2UtPmVuZENvbnRhaW5lcigpLCBtYXJrZXJzWzBd
LT5lbmRPZmZzZXQoKSk7CisgICAgaWYgKCFmcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2hvdWxkQ2hh
bmdlU2VsZWN0aW9uKG1hcmtlclJhbmdlLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGZy
YW1lKCktPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCksIENoYXJh
Y3RlckdyYW51bGFyaXR5KTsKLSAgICBmcmFtZSgpLT5lZGl0b3IoKS0+cmVwbGFjZVNlbGVjdGlv
bldpdGhUZXh0KHRleHQsIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZSgpLT5lZGl0b3IoKS0+cmVw
bGFjZVNlbGVjdGlvbldpdGhUZXh0KHRleHQsIGZhbHNlLCBmYWxzZSk7CiB9CiAKIGJvb2wgV2Vi
RnJhbWVJbXBsOjpoYXNTZWxlY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI2ZDRjMDYzMzY1NDMyYzc3NWMzZDQzNmM5YmNm
MTk1N2U2NDhhNDEuLjU0MzE3ZjBlZDg3ODhkZWE2OGExOWZhZGZjYWM4YzNmOWY4OTRkMGYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMy0wMS0yOCAgUm91c2xhbiBTb2xvbWFraGluICA8cm91c2xhbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkICd1cHBlciBjYXNlJyBhcyBhIG1pc3NwZWxsaW5nIGluIHRo
ZSBtb2NrIHNwZWxsIGNoZWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNjgxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9j
a1NwZWxsQ2hlY2suY3BwOgorICAgICAgICAoTW9ja1NwZWxsQ2hlY2s6OnNwZWxsQ2hlY2tXb3Jk
KTogTW9kaWZpZWQgdG8gaGFuZGxlIHNwYWNlcyBpbiBtaXNzcGVsbGluZ3MuCisgICAgICAgIChN
b2NrU3BlbGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKTogTW9kaWZpZWQgdG8gdXNlIGEgdmVj
dG9yIGluc3RlYWQgb2YgYSBoYXNoIHRhYmxlLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmg6CisgICAgICAgIChNb2NrU3Bl
bGxDaGVjayk6IENoYW5nZWQgbWlzc3BlbGxpbmdzIGNvbnRhaW5lciBmcm9tIGhhc2ggdGFibGUg
dG8gdmVjdG9yLgorCiAyMDEzLTAxLTI4ICBUaW1vdGh5IExvaCAgPHRpbWxvaEBjaHJvbWl1bS5j
b20+CiAKICAgICAgICAgUmVmYWN0b3IgQ2hhbmdlTG9nIGFuZCBQcmVwYXJlQ2hhbmdlTG9nIHRv
IHVzZSBGaWxlU3lzdGVtIG9iamVjdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcAppbmRl
eCA3NTkzYzcxOTA0MjM1MGQyYzIxZWFhMTlkYWI5ZjVhOTk5OTBhODgxLi40NDgwNmJiYzVkODFj
NWE0NDA5MGQzN2ZiODc1NjRjMTNjZmVhY2M1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2su
Y3BwCkBAIC02OSwyNyArNjksMzQgQEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dv
cmQoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBpbnQqIG1pc3NwZWxsZWRPZmZzZXQKICAgICAgICAg
Ly8gKFRoaXMgaXMgYSBzaW1wbGUgdmVyc2lvbiBvZiBvdXIgU3BlbGxDaGVja1dvcmRJdGVyYXRv
ciBjbGFzcy4pCiAgICAgICAgIC8vIElmIHRoZSBnaXZlbiBzdHJpbmcgZG9lc24ndCBpbmNsdWRl
IGFueSBBU0NJSSBjaGFyYWN0ZXJzLCB3ZSBjYW4gdHJlYXQgdGhlCiAgICAgICAgIC8vIHN0cmlu
ZyBhcyB2YWxpZCBvbmUuCi0gICAgICAgIC8vIFVuZm9ydHVuYXRlbHksIFRoaXMgaW1wbGVtZW50
YXRpb24gc3BsaXRzIGEgY29udHJhY3Rpb24sIGkuZS4gImlzbid0IiBpcwotICAgICAgICAvLyBz
cGxpdCBpbnRvIHR3byBwaWVjZXMgImlzbiIgYW5kICJ0Ii4gVGhpcyBpcyBPSyBiZWNhdXNlIHdl
YmtpdCB0ZXN0cwotICAgICAgICAvLyBkb24ndCBoYXZlIG1pc3NwZWxsZWQgY29udHJhY3Rpb25z
LgogICAgICAgICBpbnQgd29yZE9mZnNldCA9IHN0cmluZ1RleHQuZmluZChpc0FTQ0lJQWxwaGEp
OwogICAgICAgICBpZiAod29yZE9mZnNldCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICBpbnQgd29yZEVuZCA9IHN0cmluZ1RleHQuZmluZChpc05vdEFTQ0lJQWxwaGEs
IHdvcmRPZmZzZXQpOwotICAgICAgICBpbnQgd29yZExlbmd0aCA9IHdvcmRFbmQgPT0gLTEgPyBz
dGF0aWNfY2FzdDxpbnQ+KHN0cmluZ1RleHQubGVuZ3RoKCkpIC0gd29yZE9mZnNldCA6IHdvcmRF
bmQgLSB3b3JkT2Zmc2V0OworICAgICAgICBpbnQgbWF4V29yZExlbmd0aCA9IHN0cmluZ1RleHQu
bGVuZ3RoKCkgLSB3b3JkT2Zmc2V0OworICAgICAgICBpbnQgd29yZExlbmd0aDsKKyAgICAgICAg
V1RGOjpTdHJpbmcgd29yZDsKIAogICAgICAgICAvLyBMb29rIHVwIG91ciBtaXNzcGVsbGVkLXdv
cmQgdGFibGUgdG8gY2hlY2sgaWYgdGhlIGV4dHJhY3RlZCB3b3JkIGlzIGEKICAgICAgICAgLy8g
a25vd24gbWlzc3BlbGxlZCB3b3JkLCBhbmQgcmV0dXJuIHRoZSBvZmZzZXQgYW5kIHRoZSBsZW5n
dGggb2YgdGhlCiAgICAgICAgIC8vIGV4dHJhY3RlZCB3b3JkIGlmIHRoaXMgd29yZCBpcyBhIGtu
b3duIG1pc3NwZWxsZWQgd29yZC4KICAgICAgICAgLy8gKFNlZSB0aGUgY29tbWVudCBpbiBNb2Nr
U3BlbGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKCkgd2h5IHdlIHVzZSBhCiAgICAgICAgIC8v
IG1pc3NwZWxsZWQtd29yZCB0YWJsZS4pCi0gICAgICAgIFdURjo6U3RyaW5nIHdvcmQgPSBzdHJp
bmdUZXh0LnN1YnN0cmluZyh3b3JkT2Zmc2V0LCB3b3JkTGVuZ3RoKTsKLSAgICAgICAgaWYgKG1f
bWlzc3BlbGxlZFdvcmRzLmNvbnRhaW5zKHdvcmQpKSB7Ci0gICAgICAgICAgICAqbWlzc3BlbGxl
ZE9mZnNldCA9IHdvcmRPZmZzZXQgKyBza2lwcGVkTGVuZ3RoOwotICAgICAgICAgICAgKm1pc3Nw
ZWxsZWRMZW5ndGggPSB3b3JkTGVuZ3RoOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbV9taXNzcGVsbGVkV29yZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgIHdvcmRMZW5ndGggPSBtX21pc3NwZWxsZWRXb3Jkcy5hdChpKS5sZW5ndGgoKSA+IG1h
eFdvcmRMZW5ndGggPyBtYXhXb3JkTGVuZ3RoIDogbV9taXNzcGVsbGVkV29yZHMuYXQoaSkubGVu
Z3RoKCk7CisgICAgICAgICAgICB3b3JkID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcod29yZE9mZnNl
dCwgd29yZExlbmd0aCk7CisgICAgICAgICAgICBpZiAod29yZCA9PSBtX21pc3NwZWxsZWRXb3Jk
cy5hdChpKSAmJiAoc3RyaW5nVGV4dC5sZW5ndGgoKSA9PSB3b3JkT2Zmc2V0ICsgd29yZExlbmd0
aCB8fCBpc05vdEFTQ0lJQWxwaGEoc3RyaW5nVGV4dFt3b3JkT2Zmc2V0ICsgd29yZExlbmd0aF0p
KSkgeworICAgICAgICAgICAgICAgICptaXNzcGVsbGVkT2Zmc2V0ID0gd29yZE9mZnNldCArIHNr
aXBwZWRMZW5ndGg7CisgICAgICAgICAgICAgICAgKm1pc3NwZWxsZWRMZW5ndGggPSB3b3JkTGVu
Z3RoOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9CiAK
KyAgICAgICAgaWYgKCptaXNzcGVsbGVkTGVuZ3RoID4gMCkKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGludCB3b3JkRW5kID0gc3RyaW5nVGV4dC5maW5kKGlzTm90QVNDSUlBbHBoYSwg
d29yZE9mZnNldCk7CisgICAgICAgIHdvcmRMZW5ndGggPSB3b3JkRW5kID09IC0xID8gc3RhdGlj
X2Nhc3Q8aW50PihzdHJpbmdUZXh0Lmxlbmd0aCgpKSAtIHdvcmRPZmZzZXQgOiB3b3JkRW5kIC0g
d29yZE9mZnNldDsKKwogICAgICAgICBBU1NFUlQoMCA8IHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3Ro
KTsKICAgICAgICAgc3RyaW5nVGV4dCA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKHdvcmRPZmZzZXQg
KyB3b3JkTGVuZ3RoKTsKICAgICAgICAgc2tpcHBlZExlbmd0aCArPSB3b3JkT2Zmc2V0ICsgd29y
ZExlbmd0aDsKQEAgLTE1MSwxMiArMTU4LDEzIEBAIGJvb2wgTW9ja1NwZWxsQ2hlY2s6OmluaXRp
YWxpemVJZk5lZWRlZCgpCiAgICAgICAgICJpZm1tcCIsCiAgICAgICAgICJxd2VydHl1aW9wYXNk
IiwKICAgICAgICAgInF3ZXJ0eXVpb3Bhc2RmIiwKKyAgICAgICAgInVwcGVyIGNhc2UiLAogICAg
ICAgICAid2VsbGNvbWUiCiAgICAgfTsKIAogICAgIG1fbWlzc3BlbGxlZFdvcmRzLmNsZWFyKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUobWlzc3BlbGxlZFdvcmRzKTsg
KytpKQotICAgICAgICBtX21pc3NwZWxsZWRXb3Jkcy5hZGQoV1RGOjpTdHJpbmc6OmZyb21VVEY4
KG1pc3NwZWxsZWRXb3Jkc1tpXSksIGZhbHNlKTsKKyAgICAgICAgbV9taXNzcGVsbGVkV29yZHMu
YXBwZW5kKFdURjo6U3RyaW5nOjpmcm9tVVRGOChtaXNzcGVsbGVkV29yZHNbaV0pKTsKIAogICAg
IC8vIE1hcmsgYXMgaW5pdGlhbGl6ZWQgdG8gcHJldmVudCB0aGlzIG9iamVjdCBmcm9tIGJlaW5n
IGluaXRpYWxpemVkIHR3aWNlCiAgICAgLy8gb3IgbW9yZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVj
ay5oCmluZGV4IDhhOThkNzA3YzA0YjFiYzg1ZTI4ZjU3MTA0ZGJjMDMxNjQxNDZiNWQuLmJmYTE4
OGIyNzA1ZTJlZjhlYWI3YTYwMjg0NGY2MzM2YTI4NDg5NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmgKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxs
Q2hlY2suaApAQCAtMzMsOCArMzMsNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJWZWN0b3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIC8vIEEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBhIHNwZWxsLWNo
ZWNrZXIgdXNlZCBmb3IgV2ViS2l0IHRlc3RzLgpAQCAtNzEsNyArNzAsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaW5pdGlhbGl6ZUlmTmVlZGVkKCk7CiAKICAgICAvLyBBIHRhYmxlIHRoYXQgY29u
c2lzdHMgb2YgbWlzc3BlbGxlZCB3b3Jkcy4KLSAgICBIYXNoTWFwPFdURjo6U3RyaW5nLCBib29s
PiBtX21pc3NwZWxsZWRXb3JkczsKKyAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fbWlzc3BlbGxl
ZFdvcmRzOwogCiAgICAgLy8gQSBmbGFnIHJlcHJlc2VudGluZyB3aGV0aGVyIG9yIG5vdCB0aGlz
IG9iamVjdCBpcyBpbml0aWFsaXplZC4KICAgICBib29sIG1faW5pdGlhbGl6ZWQ7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MDc3ZGY4ODE3OWRjMmFlYWMwNGFmOWEyNjZkMzI0ZWMzZjZkMzdmOC4uZGJiOGE0YjA0MDQ1MjBk
ZTg4MjEyY2IxMzgyOTg0YTZmNmMxMGMyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEzLTAx
LTI4ICBSb3VzbGFuIFNvbG9tYWtoaW4gIDxyb3VzbGFuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBUZXN0cyBmb3Igc3BlbGwgY2hlY2tlciBiZWhhdmlvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2ODE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgZm9yIHRoZSBmb2xsb3dpbmcgc3BlbGwg
Y2hlY2sgYmVoYXZpb3I6CisgICAgICAgIC0gU3BlbGxjaGVjayBzZWxlY3RzIHRoZSBtaXNzcGVs
bGVkIHdvcmQgb24gY29udGV4dCBjbGljay4KKyAgICAgICAgLSBTcGVsbGluZyBzaG91bGQgd29y
ayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBleGFjdGx5LgorICAg
ICAgICAtIElmIHRoZSB3b3JkIGlzIG5vdCBtaXNzcGVsbGVkLCB0aGVyZSBzaG91bGQgYmUgbm8g
c3BlbGxpbmcgb3B0aW9ucyBpbiB0aGUgY29udGV4dCBtZW51LgorICAgICAgICAtIFNwZWxsY2hl
Y2sgc2hvdWxkIHNlbGVjdCBtdWx0aS13b3JkIG1pc3NwZWxsaW5ncyBvbiBjb250ZXh0IGNsaWNr
LgorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBh
IG11bHRpLXdvcmQgbWlzc3BlbGxpbmcgZXhhY3RseS4KKyAgICAgICAgLSBTcGVsbGluZyBzaG91
bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxpbmdzLgorICAgICAgICAtIFNwZWxs
aW5nIHNob3VsZCBpZ25vcmUgd2hpdGVzcGFjZS4KKyAgICAgICAgLSBVbmRlcnNjb3JlcyBzaG91
bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0u
CisgICAgICAgIC0gUHVuY3R1YXRpb24gbWFya3Mgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVz
cGFjZTogc3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB0aGVtLgorICAgICAgICAtIFNwZWxsaW5nIHNo
b3VsZCBiZSBkaXNhYmxlZCB3aGVuIHVzZXIgc2VsZWN0cyBhIHBhcnQgb2YgbWlzc3BlbGxpbmcu
CisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3Rz
IG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmdsZSBtaXNzcGVsbGluZy4KKworICAg
ICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91
YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdp
dGgtdW5kZXJzY29yZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhh
Y3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxl
Y3RlZC13b3JkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctbXVsdGl3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlw
bGUtd29yZHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3Jk
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9u
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1w
dW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3Jl
LXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisKKyAgICAgICAgKiBlZGl0
aW5nL3NwZWxsaW5nL3Jlc291cmNlcy91dGlsLmpzOiBBZGRlZC4KKyAgICAgICAgKGluaXRTcGVs
bFRlc3QpOgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNr
ZWQtd29yZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xp
Y2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBs
ZS13b3Jkcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
ZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1z
ZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRtbDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0
LXNpbmdsZS13b3JkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1Yndv
cmQtc2VsZWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0
aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0
aC11bmRlcnNjb3JlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFj
ZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisKIDIw
MTMtMDEtMjggIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAg
TWFrZSBpbnRlZ2VyLW1vZHVsby5qcyBhIHRyeSBKUy1SZWdyZXNzIHRlc3QKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvcmVzb3VyY2VzL3V0aWwuanMgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Jlc291cmNlcy91dGlsLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1NmY3
Y2RmODUzNGFhZDBjNmI4ZDY5OTcwYWQ2MWU0ODFkMDcyMjUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Jlc291cmNlcy91dGlsLmpzCkBAIC0wLDAgKzEs
MzAgQEAKK2Z1bmN0aW9uIHZlcmlmeVNwZWxsVGVzdChucmV0cnkpCit7CisgICAgaWYgKCFucmV0
cnkpIHsKKyAgICAgICAgbG9nKCJGQUlMOiBzcGVsbGNoZWNrIHRpbWVkIG91dCIpOworICAgICAg
ICBmaW5pc2hKU1Rlc3QoKQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghaW50ZXJu
YWxzLm1hcmtlckNvdW50Rm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxp
bmciKSkgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5U3Bl
bGxUZXN0KG5yZXRyeSAtIDEpOyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0
ZXN0RnVuY3Rpb25DYWxsYmFjaygpOworICAgIGZpbmlzaEpTVGVzdCgpCit9CisKK2Z1bmN0aW9u
IGluaXRTcGVsbFRlc3QodGVzdFRleHQsIHRlc3RGdW5jdGlvbikKK3sKKyAgICBpZiAoIXdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgIHJldHVybjsKKyAgICB0ZXN0RnVuY3Rpb25DYWxsYmFjayA9
IHRlc3RGdW5jdGlvbjsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVu
bmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHRlc3RS
dW5uZXIuc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIu
c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgdmFyIGRlc3Rp
bmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uIik7CisgICAgZGVz
dGluYXRpb24uZm9jdXMoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIs
IGZhbHNlLCB0ZXN0VGV4dCk7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZl
cmlmeVNwZWxsVGVzdCgxMCk7IH0sIDApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29y
ZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmY1NGNkOTJjMzEyNjkzMDFlOWExM2Q0MmExZjk5
MWJlMDk1OGVmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwy
MCBAQAorU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2VkIG1pc3NwZWxsaW5n
cy4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nLCBkb3VibGUtY2xpY2sg
b24gJ3dlbGxjb21lJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRl
c3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsIGNoZWNrIHN1Z2dl
c3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01h
cmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBp
cyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3
ZWxsY29tZSIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxl
bmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2Vs
bGNvbWUgIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21l
IgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUgIgor
UEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0g
aXMgIndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKK3dlbGxjb21lIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1j
bGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGU1
YjU2ZjMzOGMxMWM0MjRjY2Y2NDdkMGRjNzRmYjBkNjQ4ZGM2OAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29y
ZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACitTcGVsbGlu
ZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxlZCB3b3JkcyB3aXRoIHVu
ZGVyc2NvcmVzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZV8gaG9tZS4nLCBkb3Vi
bGUtY2xpY2sgb24gJ3dlbGxjb21lXycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rp
b24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93cyBzcGVsbCBj
aGVjayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
c3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lXyIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50
b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIndlbGxjb21lXyIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVu
dUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAid2VsbGNvbWVfICIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygp
IGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMg
IndlbGxjb21lXyAiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50
cy5sZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWVfIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11
bmRlcnNjb3Jlcy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1k
b3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzg0
M2Q5ZmZhN2Q4MjZhNjk3MWY3YTcwZWU5OTAwOTA1ZWYyYTE4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3Jk
LXdpdGgtdW5kZXJzY29yZXMuaHRtbApAQCAtMCwwICsxLDgwIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBp
ZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0
PgorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2Vk
IG1pc3NwZWxsZWQgd29yZHMgd2l0aCB1bmRlcnNjb3Jlcy4gIiArCisgICAgICAgICAgICAiVG8g
dGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWVfIGhvbWUuJywgZG91YmxlLWNsaWNrIG9uICd3
ZWxsY29tZV8nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAg
ICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3Bl
bGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CisKK2luaXRTcGVsbFRlc3QoIndlbGxjb21lXyBob21l
LiIsICBmdW5jdGlvbigpIHsKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1h
cmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAw
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJp
bmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBEb3VibGUtY2xpY2sgdGhl
IG1pc3NwZWxsZWQgd29yZCB3aXRob3V0IHRoZSB0cmFpbGluZyB3aGl0ZXNwYWNlLgorICAgIHRl
c3RSdW5uZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAg
dmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9u
Lm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5v
ZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWln
aHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndl
bGxjb21lXyIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBvbiAid2VsbGNvbWVfIiB0byBzaG93
IHRoZSBjb250ZXh0IG1lbnUuCisgICAgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHkgPSBkZXN0aW5hdGlv
bi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGlu
YXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5
KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7
CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5k
ZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3Bl
bGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRp
b24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwg
IndlbGxjb21lXyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVt
ZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKKworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisg
ICAgLy8gRG91YmxlLWNsaWNrIHRoZSBtaXNzcGVsbGVkIHdvcmQgd2l0aCB0aGUgdHJhaWxpbmcg
d2hpdGVzcGFjZS4KKyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVu
YWJsZWQodHJ1ZSk7CisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0
aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0
aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgs
IHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
VXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIiwgIndlbGxjb21lXyAiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24g
IndlbGxjb21lXyAiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB4ID0gZGVzdGluYXRp
b24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7
CisgICAgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlv
bi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNl
bmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQg
bWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFC
KSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJh
bmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIs
ICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWVfICIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFd
IiwgIndlbGNvbWUiKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3Vi
bGUtY2xpY2tlZC13b3JkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZWJlYTQ2MWVmZTVmZGNl
Zjk0ZDFjNmFkZGQ1MjZmZjNkZjJiMGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLmh0bWwKQEAgLTAs
MCArMSw3OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFi
bGU+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlNwZWxsaW5nIHNo
b3VsZCB3b3JrIGZvciBkb3VibGUtY2xpY2tlZCBtaXNzcGVsbGluZ3MuICIgKworICAgICAgICAg
ICAgIlRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIGhvbWUuJywgZG91YmxlLWNsaWNr
IG9uICd3ZWxsY29tZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uICIgKwor
ICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93
cyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKKworaW5pdFNwZWxsVGVzdCgid2VsbGNvbWUg
aG9tZS4iLCBmdW5jdGlvbigpIHsKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxz
Lm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmci
LCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBEb3VibGUtY2xpY2sg
dGhlIG1pc3NwZWxsZWQgd29yZCB3aXRob3V0IHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgdGVz
dFJ1bm5lci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGZhbHNlKTsKKyAgICB2
YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24u
b2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdo
dCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2Vs
bGNvbWUiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gIndlbGxjb21lIiB0byBzaG93IHRo
ZSBjb250ZXh0IG1lbnUuCisgICAgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHkgPSBkZXN0aW5hdGlvbi5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRp
b24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsK
KyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7Cisg
ICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIu
a2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxp
bmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRpb24u
Y2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndl
bGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRz
W2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworCisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAv
LyBEb3VibGUtY2xpY2sgdGhlIG1pc3NwZWxsZWQgd29yZCB3aXRoIHRyYWlsaW5nIHdoaXRlc3Bh
Y2UuCisgICAgdGVzdFJ1bm5lci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKHRy
dWUpOworICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24u
b2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAid2VsbGNvbWUgIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSAi
IHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgeSA9IGRl
c3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3Ag
KyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0
Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBl
dmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisK
KyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShk
ZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkiLCAid2VsbGNvbWUgIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0
TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIp
OworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQt
bXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40NGE3OTQ3NWU1NzZmYmI4Nzk4MWI2MmU2N2I1MWE0ODI3Y2NmNjJkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFj
dGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBtdWx0aS13b3Jk
IG1pc3NwZWxsaW5nIGV4YWN0bHkuIFRvIHRlc3QgbWFudWFsbHksIGVuYWJsZSAnQXNrIEdvb2ds
ZSBmb3IgU3VnZ2VzdGlvbnMnIGluIENocm9tZSwgdHlwZSAnSXQgc2hvdWxkIGJlIHVwcGVyIGNh
c2UuJywgc2VsZWN0ICd1cHBlciBjYXNlJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVj
dGlvbi5UaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGxp
bmcgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNw
ZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgd2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2Uu
dG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKK0l0IHNob3VsZCBiZSB1cHBlciBjYXNlLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11
bHRpcGxlLXdvcmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjQ1MTgy
MmEwM2IxZjM0YmQ0YWU5NWYxNDU1MzE3ZDBlZjQxZGY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRp
cGxlLXdvcmRzLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3Rp
bmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2Ny
aXB0aW9uKCJTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBtdWx0
aS13b3JkIG1pc3NwZWxsaW5nIGV4YWN0bHkuICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFu
dWFsbHksIGVuYWJsZSAnQXNrIEdvb2dsZSBmb3IgU3VnZ2VzdGlvbnMnIGluIENocm9tZSwgdHlw
ZSAnSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuJywgc2VsZWN0ICd1cHBlciBjYXNlJywgYW5kIGNv
bnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4iICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBz
dWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGxpbmcgc3VnZ2VzdGlvbnMu
Iik7CisKK2luaXRTcGVsbFRlc3QoIkl0IHNob3VsZCBiZSB1cHBlciBjYXNlLiIsIGZ1bmN0aW9u
KCkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JO
b2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgInVwcGVy
IGNhc2UiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIiwgIiIpOworICAgIAorICAgIC8vIFNlbGVjdCB0aGUgbXVsdGktd29yZCBt
aXNzcGVsbGluZyB3aXRob3V0IHN1cnJvdW5kaW5nIHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRpb24u
CisgICAgdmFyIHdvcmRSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgd29yZFJh
bmdlLnNldFN0YXJ0KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDEzKTsKKyAgICB3b3JkUmFu
Z2Uuc2V0RW5kKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDIzKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHdvcmRSYW5nZSk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKKworICAgIC8vIENv
bnRleHQgY2xpY2sgb24gInVwcGVyIGNhc2UiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAg
ICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRp
b24ub2Zmc2V0TGVmdCArIDEwMDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVu
dC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRI
ZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRl
eHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mg
a2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0
cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJh
bmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVz
WzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5n
TWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNl
Iik7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3Rl
ZC13b3JkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctZXhhY3RseS1zZWxlY3RlZC13b3JkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGUzNmNm
MDQzOTEwNDk5NmYwY2FmMTU2YjNlOTkzMWExODhlMzgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1NwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4g
dGhlIHVzZXIgc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIGV4YWN0bHkuIFRvIHRlc3QgbWFu
dWFsbHksIHR5cGUgJ3dlbGxjb21lIGhvbWUuJywgc2VsZWN0ICd3ZWxsY29tZScsIGFuZCBjb250
ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNv
bnRleHQgbWVudSBzaG93cyBzcGVsbGluZyBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3
ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BB
U1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyBz
cGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIGNvbnRleHRNZW51
RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BB
U1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImhvbWUiCitQQVNTIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJob21lIgorUEFTUyBjb250ZXh0TWVudUVs
ZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+Igor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29t
ZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1leGFjdGx5LXNlbGVjdGVkLXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY0MGU1
M2FiMjVhMzYyN2Y5M2EwMGRhYjI5MzQ3ZjI5ZTNkZTJjNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3Jk
Lmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBj
b250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24o
IlNwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyB0aGUgbWlzc3BlbGxl
ZCB3b3JkIGV4YWN0bHkuICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIHR5cGUg
J3dlbGxjb21lIGhvbWUuJywgc2VsZWN0ICd3ZWxsY29tZScsIGFuZCBjb250ZXh0LWNsaWNrIG9u
IHRoZSBzZWxlY3Rpb24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4g
dGhlIGNvbnRleHQgbWVudSBzaG93cyBzcGVsbGluZyBzdWdnZXN0aW9ucy4iKTsKKworaW5pdFNw
ZWxsVGVzdCgid2VsbGNvbWUgaG9tZS4iLCBmdW5jdGlvbigpIHsKKyAgICBzcGVsbGluZ01hcmtl
clJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5v
ZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxs
aW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAg
ICAvLyBTZWxlY3QgdGhlIG1pc3NwZWxsZWQgd29yZCB3aXRob3V0IHN1cnJvdW5kaW5nIHdoaXRl
c3BhY2Ugb3IgcHVuY3R1YXRpb24uCisgICAgdmFyIHdvcmRSYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgd29yZFJhbmdlLnNldFN0YXJ0KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNb
MF0sIDApOworICAgIHdvcmRSYW5nZS5zZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwg
OCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZSh3b3JkUmFuZ2UpOworCisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29t
ZSIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBvbiAid2VsbGNvbWUiIHRvIHNob3cgdGhlIGNv
bnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRp
b24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3Rp
bmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwg
eSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygp
OworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNw
ZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0
aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIs
ICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVt
ZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKKyAgICAK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd29yZFJh
bmdlLnNldFN0YXJ0KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sIDkpOworICAgIHdvcmRSYW5n
ZS5zZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMTMpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZSh3b3JkUmFuZ2UpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiaG9tZSIpOworCisgICAgLy8g
Q29udGV4dCBjbGljayBvbiAiaG9tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZh
ciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5v
ZmZzZXRMZWZ0ICsgODA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0
IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVu
dUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0
byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcu
ZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJob21lIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMu
bGVuZ3RoIC0gMV0iLCAiPHNlcGFyYXRvcj4iKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWYwZGQyYmUwOWY4ZmVhZWM2MzAzNjc3NTI3MjAzMWU4NjQxMDFlZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
bXVsdGl3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorU3BlbGxp
bmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIG11bHRpcGxlIHdvcmRzIHRo
YXQgYXJlIG5vdCBhIHNpbmdsZSBtaXNzcGVsbGluZy4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAn
d2VsbGNvbWUgaG9tZS4nLCBzZWxlY3QgJ3dlbGxjb21lIGhvbWUnLCBhbmQgY29udGV4dC1jbGlj
ayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVu
dSBoYXMgbm8gc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNv
bWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSBob21lIgorUEFTUyBz
cGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUgaG9tZSIKK1BBU1MgY29udGV4
dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICI8c2VwYXJh
dG9yPiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
d2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk0
Y2RlODdjZTU2OTEzZDM1NmY0NGVmMjI3M2NlZGJkZjVhOTNkOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlv
bi5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIg
Y29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9u
KCJTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVjdHMgbXVsdGlwbGUg
d29yZHMgdGhhdCBhcmUgbm90IGEgc2luZ2xlIG1pc3NwZWxsaW5nLiAiICsKKyAgICAgICAgICAg
ICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIHNlbGVjdCAnd2VsbGNv
bWUgaG9tZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uICIgKworICAgICAg
ICAgICAgIlRoZSB0ZXN0IHN1Y2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBubyBzcGVs
bCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKKworaW5pdFNwZWxsVGVzdCgid2VsbGNvbWUgaG9tZS4i
LCBmdW5jdGlvbigpIHsKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtl
clJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmco
KSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBTZWxlY3QgdGhlIHRleHQgIndl
bGxjb21lIGhvbWUiLgorICAgIHZhciBtdWx0aVdvcmRSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgbXVsdGlXb3JkUmFuZ2Uuc2V0U3RhcnQoZGVzdGluYXRpb24uY2hpbGROb2Rl
c1swXSwgMCk7CisgICAgbXVsdGlXb3JkUmFuZ2Uuc2V0RW5kKGRlc3RpbmF0aW9uLmNoaWxkTm9k
ZXNbMF0sIDEzKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKG11bHRpV29yZFJhbmdlKTsKKwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAid2VsbGNvbWUgaG9tZSIpOworCisgICAgLy8gQ29udGV4dCBjbGljayB0byBzaG93IHRo
ZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3Rp
bmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xp
Y2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVu
dFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAg
ICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0
aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAid2VsbGNvbWUgaG9tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4
dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIjxzZXBhcmF0
b3I+Iik7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVj
dC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI2YTQ1NDE2OGFkYzk3ZDFjN2Q2ZGU0MGEzZmU3YTdhZDBiMjk0Y2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3Vs
ZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1Nw
ZWxsIGNoZWNrIHNob3VsZCBzZWxlY3QgbXVsdGktd29yZCBtaXNzcGVsbGluZ3Mgb24gY29udGV4
dCBjbGljay4gVG8gdGVzdCBtYW51YWxseSwgZW5hYmxlICdBc2sgR29vZ2xlIGZvciBTdWdnZXN0
aW9ucycgaW4gQ2hyb21lLCB0eXBlICdJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4nLCBhbmQgY29u
dGV4dC1jbGljayBvbiB0aGUgd29yZCAndXBwZXInLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuICd1
cHBlciBjYXNlJyB3YXMgc2VsZWN0ZWQgYWZ0ZXIgY29udGV4dCBjbGljay4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygp
IGlzICJ1cHBlciBjYXNlIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBp
cyAiIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2Ui
CitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitJdCBzaG91
bGQgYmUgdXBwZXIgY2FzZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWQwMzM0ZjEwMzZkYmVmMDIyNzkwZGUzOTkzYWE2NzJiNzU1NGMw
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWlu
ZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9k
aXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiU3BlbGwgY2hlY2sgc2hvdWxkIHNlbGVjdCBt
dWx0aS13b3JkIG1pc3NwZWxsaW5ncyBvbiBjb250ZXh0IGNsaWNrLiAiKworICAgICAgICAgICAg
IlRvIHRlc3QgbWFudWFsbHksIGVuYWJsZSAnQXNrIEdvb2dsZSBmb3IgU3VnZ2VzdGlvbnMnIGlu
IENocm9tZSwgdHlwZSAnSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuJywgYW5kIGNvbnRleHQtY2xp
Y2sgb24gdGhlIHdvcmQgJ3VwcGVyJy4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2Vl
ZHMgd2hlbiAndXBwZXIgY2FzZScgd2FzIHNlbGVjdGVkIGFmdGVyIGNvbnRleHQgY2xpY2suIik7
CisKK2luaXRTcGVsbFRlc3QoIkl0IHNob3VsZCBiZSB1cHBlciBjYXNlLiIsIGZ1bmN0aW9uKCkg
eworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2Rl
KGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgInVwcGVyIGNh
c2UiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBvbiAidXBwZXIgY2FzZSIg
dG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgMTAwOworICAgIHZh
ciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9m
ZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVy
LmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51
LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBu
dWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VG
b3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIsIDApOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgInVw
cGVyIGNhc2UiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUt
d29yZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE4ZDA4NjZhMzM3ODgwZDE5ZGVhNGIyY2Ex
Yzg4M2ZjYmVjMjEyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNyBAQAorU3BlbGwgY2hlY2sgc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIG9u
IGNvbnRleHQgY2xpY2suIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIGhvbWUuJyBh
bmQgY29udGV4dC1jbGljayBvbiAnd2VsbGNvbWUnLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuICd3
ZWxsY29tZScgaXMgc2VsZWN0ZWQgYWZ0ZXIgdGhlIGNvbnRleHQgY2xpY2suCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmco
KSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlz
ICIiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mg
Y29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3
ZWxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFT
UyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyBjb250ZXh0TWVu
dUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxs
Y29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41NmY2YmJhYzY0NzRhYzdkOGZhOWVmMDY1MDNlMmNmYWY1ODk2MTNhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2Vs
ZWN0LXNpbmdsZS13b3JkLmh0bWwKQEAgLTAsMCArMSw1NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9
ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4K
KworZGVzY3JpcHRpb24oIlNwZWxsIGNoZWNrIHNlbGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBv
biBjb250ZXh0IGNsaWNrLiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBl
ICd3ZWxsY29tZSBob21lLicgYW5kIGNvbnRleHQtY2xpY2sgb24gJ3dlbGxjb21lJy4gIiArCisg
ICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiAnd2VsbGNvbWUnIGlzIHNlbGVjdGVk
IGFmdGVyIHRoZSBjb250ZXh0IGNsaWNrLiIpOworCitpbml0U3BlbGxUZXN0KCJ3ZWxsY29tZSBo
b21lLiIsIGZ1bmN0aW9uKCkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMu
bWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIs
IDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0
cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sg
b24gIndlbGxjb21lIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0
aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQg
KyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMg
PSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhl
IGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNv
ZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxz
Lm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmci
LCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5n
dGggLSAxXSIsICJ3ZWxjb21lIik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3Zl
QWxsUmFuZ2VzKCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gImhvbWUi
IHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDgwOworICAgIHZh
ciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9m
ZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVy
LmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51
LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBu
dWxsKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkiLCAiIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVu
dUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAiPHNlcGFyYXRvcj4i
KTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1
YndvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTdlZTc2ZWExNGE1MDVm
ZDk0ZmY4Njg4NDBiOWY3MzJkNWE1YjA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNSBAQAorU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBz
ZWxlY3RzIGEgcGFydCBvZiBtaXNzcGVsbGluZy4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2Vs
bGNvbWUgaG9tZS4nIHNlbGVjdCAnbGxjbycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxl
Y3Rpb24uIFRoZSB0ZXN0IHN1Y2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBubyBzcGVs
bCBjaGVjayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkgaXMgImxsY28iCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIGlzICJsbGNvIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVu
dHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi5odG1s
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlv
bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjViZTY3MDFhMWIzZjkzNDM2NmEzMDZiZGIzMjNkZWJlNWY5OWVm
OTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxk
aXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKworPHNj
cmlwdD4KKworZGVzY3JpcHRpb24oIlNwZWxsaW5nIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHVz
ZXIgc2VsZWN0cyBhIHBhcnQgb2YgbWlzc3BlbGxpbmcuICIgKworICAgICAgICAgICAgIlRvIHRl
c3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIGhvbWUuJyBzZWxlY3QgJ2xsY28nLCBhbmQgY29u
dGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBz
dWNlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgbm8gc3BlbGwgY2hlY2sgc3VnZ2VzdGlv
bnMuIik7CisKK2luaXRTcGVsbFRlc3QoIndlbGxjb21lIGhvbWUuIiwgZnVuY3Rpb24oKSB7Cisg
ICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVz
dGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgIiIpOworCisgICAgLy8gU2VsZWN0IHRoZSB0ZXh0ICJsbGNvIi4KKyAgICB2YXIgc3Vi
V29yZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBzdWJXb3JkUmFuZ2Uuc2V0
U3RhcnQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMik7CisgICAgc3ViV29yZFJhbmdlLnNl
dEVuZChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCA2KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHN1YldvcmRSYW5nZSk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgImxsY28iKTsKKworICAgIC8vIENvbnRleHQgY2xp
Y2sgb24gJ2xsY28nIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3Rp
bmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCAr
IDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRl
c3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9
IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUg
Y29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29k
ZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMu
bWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJzcGVsbGluZyIs
IDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0
cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJsbGNvIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0g
MV0iLCAiPHNlcGFyYXRvcj4iKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44MjIxODBkMGZiMDFmZDUxMmYzOWQyOTU5MTkxNzIzOWY2ZDNm
OGRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NSBAQAorUHVuY3R1YXRpb24gbWFya3Mgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTog
c3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB0aGVtLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxs
Y29tZSEnLCBzZWxlY3QgJ3dlbGxjb21lIScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxl
Y3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgc3BlbGwg
Y2hlY2sgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSEiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2Uu
dG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIGlzICJ3ZWxsY29tZSEiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1l
bnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWUhCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVu
Y3R1YXRpb24tc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk5Y2UxM2Q2NjQzMmVkYjVlYmIx
ZmQ0NzEwNjhhNmQyYzY3Y2NiNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbApAQCAt
MCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0
YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiUHVuY3R1YXRp
b24gbWFya3Mgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hvdWxk
IGlnbm9yZSB0aGVtLiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3
ZWxsY29tZSEnLCBzZWxlY3QgJ3dlbGxjb21lIScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBz
ZWxlY3Rpb24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNv
bnRleHQgbWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CisKK2luaXRTcGVsbFRl
c3QoIndlbGxjb21lISIsIGZ1bmN0aW9uKCkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBp
bnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0sICJz
cGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIFNlbGVj
dCB0aGUgdGV4dCAid2VsbGNvbWUhIiB3aXRoIHRoZSBleGNsYW1hdGlvbiBtYXJrLgorICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQoZGVz
dGluYXRpb24uY2hpbGROb2Rlc1swXSwgMCk7CisgICAgcmFuZ2Uuc2V0RW5kKGRlc3RpbmF0aW9u
LmNoaWxkTm9kZXNbMF0sIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxS
YW5nZXMoKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworCisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmco
KSIsICJ3ZWxsY29tZSEiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgdG8gc2hvdyB0aGUgY29u
dGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlv
bi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGlu
YXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5
KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7
CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5k
ZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3Bl
bGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZGVzdGluYXRp
b24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwg
IndlbGxjb21lISIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVt
ZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKK30pOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0
aC11bmRlcnNjb3JlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2UxNDQ2MWVm
MWI0YWFjYWQxNTkzM2E2YjdlMjc4YTVkZmVmM2FmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVW5kZXJzY29yZXMgc2hvdWxkIGJlIHRy
ZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB0aGVtLiBUbyB0ZXN0
IG1hbnVhbGx5LCB0eXBlICdIaSwgX3dlbGxjb21lXyBob21lLicsIHNlbGVjdCAnX3dlbGxjb21l
XycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRz
IHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJfd2Vs
bGNvbWVfIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21l
IgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiX3dlbGxjb21lXyIK
K1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFd
IGlzICJ3ZWxjb21lIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCitIaSwgX3dlbGxjb21lXyBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxl
Y3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmIzY2VhNjhmOWFjNGM1NTUyN2IyOTgzYjllMjJjYTQ2
NjhmZTA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw0OSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRh
aW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8
L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlVuZGVyc2NvcmVzIHNob3VsZCBiZSB0
cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4gIiArCisg
ICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnSGksIF93ZWxsY29tZV8gaG9tZS4n
LCBzZWxlY3QgJ193ZWxsY29tZV8nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9u
LiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1l
bnUgaGFzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLiIpOworCitpbml0U3BlbGxUZXN0KCJIaSwg
X3dlbGxjb21lXyBob21lLiIsIGZ1bmN0aW9uKCkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2Ug
PSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGRlc3RpbmF0aW9uLmNoaWxkTm9kZXNbMF0s
ICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJr
ZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIFNl
bGVjdCB0aGUgdGV4dCAiX3dlbGxjb21lXyIuCisgICAgdmFyIHJhbmdlV2l0aFVuZGVyc2NvcmVz
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZVdpdGhVbmRlcnNjb3Jlcy5zZXRT
dGFydChkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCA0KTsKKyAgICByYW5nZVdpdGhVbmRlcnNj
b3Jlcy5zZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMTQpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2VXaXRoVW5kZXJzY29yZXMpOworCisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJfd2VsbGNvbWVfIik7
CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJfd2VsbGNvbWVfIiB0byBzaG93IHRoZSBjb250
ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA4MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9u
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5h
dGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkp
OworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsK
KyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRl
ci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVs
bGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlv
bi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAi
X3dlbGxjb21lXyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVt
ZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKK30pOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0
aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQzNTUxNzNh
NzM4NzlmZTQ1YjQ5YTI5OGEzY2YwYzVjZjRkNTY3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorU3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB3
aGl0ZXNwYWNlLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICdoZWxsbywgd2VsbGNvbWUgaG9tZS4n
LCBzZWxlY3QgJyB3ZWxsY29tZSAnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9u
LiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIHNwZWxsIGNoZWNr
IHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVs
bGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIHdlbGxjb21lICIKK1BBU1Mgc3BlbGxpbmdNYXJr
ZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkgaXMgIiB3ZWxsY29tZSAiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNb
Y29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQoraGVsbG8sIHdlbGxjb21lIGhv
bWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdp
dGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1
NTlhOWVhMzZmZTViMjcyOTAyNGRiMjUxM2QwYWY0YWEwY2FkMmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1z
ZWxlY3Rpb24uaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGlu
YXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitkZXNj
cmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB3aGl0ZXNwYWNlLiAiICsKKyAgICAgICAg
ICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICdoZWxsbywgd2VsbGNvbWUgaG9tZS4nLCBzZWxl
Y3QgJyB3ZWxsY29tZSAnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiAiICsK
KyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFz
IHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLiIpOworCitpbml0U3BlbGxUZXN0KCJoZWxsbywgd2Vs
bGNvbWUgaG9tZS4iLCBmdW5jdGlvbigpIHsKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50
ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBdLCAic3Bl
bGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFu
Z2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworCisgICAgLy8gU2VsZWN0IHRoZSB0ZXh0ICIg
d2VsbGNvbWUgIiB3aXRoIHN1cnJvdW5kaW5nIHdoaXRlc3BhY2UuCisgICAgdmFyIHJhbmdlV2l0
aFdoaXRlc3BhY2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlV2l0aFdoaXRl
c3BhY2Uuc2V0U3RhcnQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgNik7CisgICAgcmFuZ2VX
aXRoV2hpdGVzcGFjZS5zZXRFbmQoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgMTYpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2VXaXRoV2hpdGVzcGFjZSk7CisKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiB3ZWxs
Y29tZSAiKTsKKworICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgODA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlv
bi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGlu
YXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5
KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7
CisgICAgLy8gZXNjIGtleSB0byBraWxsIHRoZSBjb250ZXh0IG1lbnUKKyAgICBldmVudFNlbmRl
ci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVs
bGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZShkZXN0aW5hdGlv
bi5jaGlsZE5vZGVzWzBdLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAi
IHdlbGxjb21lICIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVt
ZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKK30pOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185303</attachid>
            <date>2013-01-29 14:02:35 -0800</date>
            <delta_ts>2013-01-30 12:21:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106815-20130129135921.patch</filename>
            <type>text/plain</type>
            <size>66656</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDNjNDllOTE0NTU0ZDA3NWZhOTNkYmY5NTRlOGM0ODA3ZTdhYThjYzMuLjA0YzQzODJjMDYyZGY0
NTQxMzVjMDNkYzEyMDgxZWQxOGVkODJkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTMtMDEtMjkgIFJvdXNsYW4gU29sb21ha2hpbiAgPHJvdXNsYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEZpeGVzIGZvciBzcGVsbCBjaGVja2VyIGJlaGF2aW9y
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4MTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggc3Bl
bGwgY2hlY2tlciB0byBiZWhhdmUgYXMgZm9sbG93czoKKyAgICAgICAgLSBTcGVsbGNoZWNrIHNl
bGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLgorICAgICAgICAtIFNw
ZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3
b3JkIGV4YWN0bHkuCisgICAgICAgIC0gSWYgdGhlIHdvcmQgaXMgbm90IG1pc3NwZWxsZWQsIHRo
ZXJlIHNob3VsZCBiZSBubyBzcGVsbGluZyBvcHRpb25zIGluIHRoZSBjb250ZXh0IG1lbnUuCisg
ICAgICAgIC0gU3BlbGxjaGVjayBzaG91bGQgc2VsZWN0IG11bHRpLXdvcmQgbWlzc3BlbGxpbmdz
IG9uIGNvbnRleHQgY2xpY2suCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0
aGUgdXNlciBzZWxlY3RzIGEgbXVsdGktd29yZCBtaXNzcGVsbGluZyBleGFjdGx5LgorICAgICAg
ICAtIFNwZWxsaW5nIHNob3VsZCB3b3JrIGZvciBkb3VibGUtY2xpY2tlZCBtaXNzcGVsbGluZ3Mu
CisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB3aGl0ZXNwYWNlLgorICAgICAgICAt
IFVuZGVyc2NvcmVzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5nIHNo
b3VsZCBpZ25vcmUgdGhlbS4KKyAgICAgICAgLSBQdW5jdHVhdGlvbiBtYXJrcyBzaG91bGQgYmUg
dHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uCisgICAg
ICAgIC0gU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIGEgcGFy
dCBvZiBtaXNzcGVsbGluZy4KKyAgICAgICAgLSBTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQg
d2hlbiB1c2VyIHNlbGVjdHMgbXVsdGlwbGUgd29yZHMgdGhhdCBhcmUgbm90IGEgc2luZ2xlIG1p
c3NwZWxsaW5nLgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRv
dWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5odG1sCisgICAgICAgICAgICAgICBl
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbAorICAgICAg
ICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRp
cGxlLXdvcmRzLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
ZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5odG1sCisgICAgICAgICAgICAgICBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRtbAor
ICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNp
bmdsZS13b3JkLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
c3Vid29yZC1zZWxlY3Rpb24uaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1sCisgICAgICAgICAgICAgICBl
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbAor
ICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Ut
c2VsZWN0aW9uLmh0bWwKKworICAgICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SXNXaGl0ZVNwYWNlT3JQdW5j
dHVhdGlvbik6IE5ldyB1dGlsaXR5IGZ1bmN0aW9uIGZvciBkZXRlY3Rpbmcgd2hpdGVzcGFjZSBh
bmQgcHVuY3R1YXRpb24gaW4gc2VsZWN0ZWQgdGV4dC4KKyAgICAgICAgKFdlYktpdDo6Q29udGV4
dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6IE1vZGlmaWVk
IHRvIHdvcmsgd2l0aCB3aGl0ZXNwYWNlLCBwdW5jdHVhdGlvbiwgYW5kIG11bHRpLXdvcmQgbWlz
c3BlbGxpbmdzLgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUltcGw6OnJlcGxhY2VNaXNzcGVsbGVkUmFuZ2UpOiBGaXhlZCBpbmNvcnJl
Y3QgcmFuZ2UgcmVwbGFjZW1lbnQuIENocm9taXVtIHdpbGwgdXNlIHRoaXMgbWV0aG9kIGluc3Rl
YWQgb2YgcmVwbGFjZVJhbmdlLgorCiAyMDEzLTAxLTI5ICBYaWFuemh1IFdhbmcgIDx3YW5neGlh
bnpodUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBDb3JyZWN0IHpvb20gZm9y
IGZvY3VzZWQgbm9kZSB3aGVuIHVzaW5nIGNvbXBvc2l0b3Igc2NhbGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKaW5kZXgg
MzM5NTZiY2E3ODRlMDE5NDU5YjJmOTNkNGI0NjAxYzU2ZWY1MDMyNy4uMmQ1Y2Y0NDBkZjVhYjUy
YzM5OTYyNWE2ZGVlMzY1YTkwNjM3MTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAj
aW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgi
CiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNl
aG9sZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKQEAgLTc4LDYgKzc5LDEyIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorLy8gUmV0dXJucyB0
cnVlIGZvciB3aGl0ZXNwYWNlIGFuZCBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLiBSZXR1cm5zIGZh
bHNlIGZvciBldmVyeSBvdGhlciB0eXBlIG9mIGNoYXJhY3Rlci4KK3N0YXRpYyBib29sIElzV2hp
dGVTcGFjZU9yUHVuY3R1YXRpb24oVUNoYXIgYykKK3sKKyAgICByZXR1cm4gV1RGOjpVbmljb2Rl
Ojppc1NlcGFyYXRvclNwYWNlKGMpIHx8IFdURjo6VW5pY29kZTo6aXNQdW5jdChjKTsKK30KKwog
Ly8gRmlndXJlIG91dCB0aGUgVVJMIG9mIGEgcGFnZSBvciBzdWJmcmFtZS4gUmV0dXJucyB8cGFn
ZV90eXBlfCBhcyB0aGUgdHlwZSwKIC8vIHdoaWNoIGluZGljYXRlcyBwYWdlIG9yIHN1YmZyYW1l
LCBvciBDb250ZXh0Tm9kZVR5cGU6Ok5PTkUgaWYgdGhlIFVSTCBjb3VsZCBub3QKIC8vIGJlIGRl
dGVybWluZWQgZm9yIHNvbWUgcmVhc29uLgpAQCAtMTAyLDggKzEwOSw4IEBAIHN0YXRpYyBib29s
IGlzQVNpbmdsZVdvcmQoY29uc3QgU3RyaW5nJiB0ZXh0KQogfQogCiAvLyBIZWxwZXIgZnVuY3Rp
b24gdG8gZ2V0IG1pc3NwZWxsZWQgd29yZCBvbiB3aGljaCBjb250ZXh0IG1lbnUKLS8vIGlzIHRv
IGJlIGV2b2xrZWQuIFRoaXMgZnVuY3Rpb24gYWxzbyBzZXRzIHRoZSB3b3JkIG9uIHdoaWNoIGNv
bnRleHQgbWVudQotLy8gaGFzIGJlZW4gZXZva2VkIHRvIGJlIHRoZSBzZWxlY3RlZCB3b3JkLCBh
cyByZXF1aXJlZC4gVGhpcyBmdW5jdGlvbiBjaGFuZ2VzCisvLyBpcyB0byBiZSBpbnZva2VkLiBU
aGlzIGZ1bmN0aW9uIGFsc28gc2V0cyB0aGUgd29yZCBvbiB3aGljaCBjb250ZXh0IG1lbnUKKy8v
IGhhcyBiZWVuIGludm9rZWQgdG8gYmUgdGhlIHNlbGVjdGVkIHdvcmQsIGFzIHJlcXVpcmVkLiBU
aGlzIGZ1bmN0aW9uIGNoYW5nZXMKIC8vIHRoZSBzZWxlY3Rpb24gb25seSB3aGVuIHRoZXJlIHdl
cmUgbm8gc2VsZWN0ZWQgY2hhcmFjdGVycyBvbiBPUyBYLgogc3RhdGljIFN0cmluZyBzZWxlY3RN
aXNzcGVsbGVkV29yZChjb25zdCBDb250ZXh0TWVudSogZGVmYXVsdE1lbnUsIEZyYW1lKiBzZWxl
Y3RlZEZyYW1lKQogewpAQCAtMjc0LDM2ICsyODEsMzUgQEAgUGxhdGZvcm1NZW51RGVzY3JpcHRp
b24gQ29udGV4dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcygK
ICNlbmRpZgogICAgICAgICAvLyBXaGVuIENocm9tZSBlbmFibGVzIGFzeW5jaHJvbm91cyBzcGVs
bGNoZWNraW5nLCBpdHMgc3BlbGxjaGVja2VyIGFkZHMgc3BlbGxpbmcgbWFya2VycyB0byBtaXNz
cGVsbGVkCiAgICAgICAgIC8vIHdvcmRzIGFuZCBhdHRhY2hlcyBzdWdnZXN0aW9ucyB0byB0aGVz
ZSBtYXJrZXJzIGluIHRoZSBiYWNrZ3JvdW5kLiBUaGVyZWZvcmUsIHdoZW4gYSB1c2VyIHJpZ2h0
LWNsaWNrcwotICAgICAgICAvLyBhIG1vdXNlIG9uIGEgd29yZCwgQ2hyb21lIGp1c3QgbmVlZHMg
dG8gZmluZCBhIHNwZWxsaW5nIG1hcmtlciBvbiB0aGUgd29yZCBpbnN0cmVhZCBvZiBzcGVsbGNo
ZWNraW5nIGl0LgorICAgICAgICAvLyBhIG1vdXNlIG9uIGEgd29yZCwgQ2hyb21lIGp1c3QgbmVl
ZHMgdG8gZmluZCBhIHNwZWxsaW5nIG1hcmtlciBvbiB0aGUgd29yZCBpbnN0ZWFkIG9mIHNwZWxs
Y2hlY2tpbmcgaXQuCiAgICAgICAgIGlmIChzZWxlY3RlZEZyYW1lLT5zZXR0aW5ncygpICYmIHNl
bGVjdGVkRnJhbWUtPnNldHRpbmdzKCktPmFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KCkpIHsKICAgICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gc2VsZWN0ZWRG
cmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpOwotICAgICAgICAgICAgYm9vbCBzaG91bGRV
cGRhdGVTZWxlY3Rpb24gPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDYXJl
dE9yUmFuZ2UoKSkgewotICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFdv
cmRHcmFudWxhcml0eSk7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZFVwZGF0ZVNlbGVjdGlv
biA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKLSAgICAgICAgICAgICAg
ICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gc2VsZWN0ZWRGcmFtZS0+ZG9jdW1l
bnQoKS0+bWFya2VycygpLT5tYXJrZXJzSW5SYW5nZShyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJr
ZXI6OlNwZWxsaW5nIHwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIpOworICAgICAgICAgICAgICAg
IC8vIENhcmV0IGFuZCByYW5nZSBzZWxlY3Rpb25zIGFsd2F5cyByZXR1cm4gdmFsaWQgbm9ybWFs
aXplZCByYW5nZXMuCisgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5n
ZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICAgICAgICAgIC8vIENs
b25pbmcgYSByYW5nZSBmYWlscyBvbmx5IGZvciBpbnZhbGlkIHJhbmdlcy4KKyAgICAgICAgICAg
ICAgICBSZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gc2VsZWN0aW9uUmFuZ2UtPmNsb25lUmFu
Z2UoQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICAgICAgVmVjdG9yPERvY3VtZW50
TWFya2VyKj4gbWFya2VycyA9IHNlbGVjdGVkRnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+
bWFya2Vyc0luUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVs
bGluZyB8IERvY3VtZW50TWFya2VyOjpHcmFtbWFyKTsKICAgICAgICAgICAgICAgICBpZiAobWFy
a2Vycy5zaXplKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICBpZiAobWFya2Vyc1swXS0+
c3RhcnRPZmZzZXQoKSAhPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UtPnN0YXJ0T2Zmc2V0
KCkpIHx8IG1hcmtlcnNbMF0tPmVuZE9mZnNldCgpICE9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihy
YW5nZS0+ZW5kT2Zmc2V0KCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vycy5jbGVh
cigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAobWFya2Vycy5zaXpl
KCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0U3RhcnQocmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCksIG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAg
ICAgICAgICByYW5nZS0+c2V0RW5kKHJhbmdlLT5lbmRDb250YWluZXIoKSwgbWFya2Vyc1swXS0+
ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1pc3NwZWxsZWRXb3JkID0g
cmFuZ2UtPnRleHQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1hcmtlcnNbMF0tPmRlc2Ny
aXB0aW9uKCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJp
bmc+IHN1Z2dlc3Rpb25zOwotICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vyc1swXS0+ZGVz
Y3JpcHRpb24oKS5zcGxpdCgnXG4nLCBzdWdnZXN0aW9ucyk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhLmRpY3Rpb25hcnlTdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zOwotICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKG1fd2ViVmlldy0+c3BlbGxDaGVja0NsaWVudCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWlzc3BlbGxlZE9mZnNldCwgbWlzc3BlbGxlZExl
bmd0aDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fd2ViVmlldy0+c3BlbGxDaGVja0NsaWVu
dCgpLT5zcGVsbENoZWNrKGRhdGEubWlzc3BlbGxlZFdvcmQsIG1pc3NwZWxsZWRPZmZzZXQsIG1p
c3NwZWxsZWRMZW5ndGgsICZkYXRhLmRpY3Rpb25hcnlTdWdnZXN0aW9ucyk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uID0gVmlzaWJsZVNlbGVj
dGlvbihyYW5nZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRVcGRhdGVT
ZWxlY3Rpb24gJiYgc2VsZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCktPnNob3VsZENoYW5nZVNlbGVj
dGlvbihzZWxlY3Rpb24pKQorICAgICAgICAgICAgICAgICAgICBtYXJrZXJSYW5nZS0+c2V0U3Rh
cnQobWFya2VyUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0
KCkpOworICAgICAgICAgICAgICAgICAgICBtYXJrZXJSYW5nZS0+c2V0RW5kKG1hcmtlclJhbmdl
LT5lbmRDb250YWluZXIoKSwgbWFya2Vyc1swXS0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAg
ICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBzZWxlY3Rpb24sIHRoZW4gc2VsZWN0IHRoZSBtaXNz
cGVsbGluZy4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24obWFy
a2VyUmFuZ2UuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRGcmFtZS0+
c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihzZWxlY3Rpb24sIFdvcmRHcmFudWxhcml0eSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi50b05vcm1h
bGl6ZWRSYW5nZSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGlmIChzZWxlY3Rpb25SYW5nZS0+dGV4dCgpLnN0cmlwV2hpdGVTcGFjZSgmSXNXaGl0ZVNwYWNl
T3JQdW5jdHVhdGlvbikgPT0gbWFya2VyUmFuZ2UtPnRleHQoKS5zdHJpcFdoaXRlU3BhY2UoJklz
V2hpdGVTcGFjZU9yUHVuY3R1YXRpb24pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
Lm1pc3NwZWxsZWRXb3JkID0gbWFya2VyUmFuZ2UtPnRleHQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChtYXJrZXJzWzBdLT5kZXNjcmlwdGlvbigpLmxlbmd0aCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvbnM7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWFya2Vyc1swXS0+ZGVzY3JpcHRpb24oKS5zcGxpdCgnXG4n
LCBzdWdnZXN0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5kaWN0aW9u
YXJ5U3VnZ2VzdGlvbnMgPSBzdWdnZXN0aW9uczsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xpZW50KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbWlzc3BlbGxlZE9mZnNldCwgbWlzc3BlbGxlZExlbmd0aDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX3dlYlZpZXctPnNwZWxsQ2hlY2tDbGllbnQoKS0+
c3BlbGxDaGVjayhkYXRhLm1pc3NwZWxsZWRXb3JkLCBtaXNzcGVsbGVkT2Zmc2V0LCBtaXNzcGVs
bGVkTGVuZ3RoLCAmZGF0YS5kaWN0aW9uYXJ5U3VnZ2VzdGlvbnMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggNjBjMmUwZjQ2Mjc4MjdiYzE4ZDllNjZlOGZhYzRlYzE3
OGQ0ZDM3ZS4uNTZmNzc0YjhlOGE0MjE0YjBjYjRhNWNjOWZiYzUyNjI4MzA5MmJjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0xMjk5LDExICsx
Mjk5LDE2IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpyZXBsYWNlTWlzc3BlbGxlZFJhbmdlKGNvbnN0
IFdlYlN0cmluZyYgdGV4dCkKICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJzID0g
ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJzSW5SYW5nZShjYXJldFJhbmdl
LmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcgfCBEb2N1bWVudE1hcmtlcjo6R3JhbW1h
cik7CiAgICAgaWYgKG1hcmtlcnMuc2l6ZSgpIDwgMSB8fCBtYXJrZXJzWzBdLT5zdGFydE9mZnNl
dCgpID49IG1hcmtlcnNbMF0tPmVuZE9mZnNldCgpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVm
UHRyPFJhbmdlPiBtYXJrZXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoZnJhbWUoKS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3Vt
ZW50RWxlbWVudCgpLCBtYXJrZXJzWzBdLT5zdGFydE9mZnNldCgpLCBtYXJrZXJzWzBdLT5lbmRP
ZmZzZXQoKSAtIG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkpOwotICAgIGlmICghbWFya2VyUmFu
Z2UuZ2V0KCkgfHwgIWZyYW1lKCktPnNlbGVjdGlvbigpLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24o
bWFya2VyUmFuZ2UuZ2V0KCkpKQorICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsKKyAg
ICBSZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gY2FyZXRSYW5nZS0+Y2xvbmVSYW5nZShleGNl
cHRpb25Db2RlKTsKKyAgICBpZiAoIWV4Y2VwdGlvbkNvZGUpCisgICAgICAgIHJldHVybjsKKyAg
ICBtYXJrZXJSYW5nZS0+c2V0U3RhcnQobWFya2VyUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIG1h
cmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkpOworICAgIG1hcmtlclJhbmdlLT5zZXRFbmQobWFya2Vy
UmFuZ2UtPmVuZENvbnRhaW5lcigpLCBtYXJrZXJzWzBdLT5lbmRPZmZzZXQoKSk7CisgICAgaWYg
KCFmcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG1hcmtlclJhbmdl
LmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5zZXRT
ZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCksIENoYXJhY3RlckdyYW51bGFyaXR5KTsKLSAgICBm
cmFtZSgpLT5lZGl0b3IoKS0+cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRleHQsIGZhbHNlLCB0
cnVlKTsKKyAgICBmcmFtZSgpLT5lZGl0b3IoKS0+cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRl
eHQsIGZhbHNlLCBmYWxzZSk7CiB9CiAKIGJvb2wgV2ViRnJhbWVJbXBsOjpoYXNTZWxlY3Rpb24o
KSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGFlMDAxNjU0NTZjODNlM2RiMDZhMWQ4MTQwYTM3MmY5NWUwNzI2ODkuLmVlN2I1MjAzYTdk
OTYyNDZmNWQzYjQyZjVjYThlM2Y4NGI0ZDk4OTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wMS0yOSAgUm91
c2xhbiBTb2xvbWFraGluICA8cm91c2xhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkICd1
cHBlciBjYXNlJyBhcyBhIHR3by13b3JkIG1pc3NwZWxsaW5nIHRvIG1vY2sgc3BlbGwgY2hlY2tl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2ODE1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5jcHA6Cisg
ICAgICAgIChNb2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dvcmQpOiBNb2RpZmllZCB0byBoYW5k
bGUgc3BhY2VzIGluIG1pc3NwZWxsaW5ncy4KKyAgICAgICAgKE1vY2tTcGVsbENoZWNrOjppbml0
aWFsaXplSWZOZWVkZWQpOiBNb2RpZmllZCB0byB1c2UgYSB2ZWN0b3IgaW5zdGVhZCBvZiBhIGhh
c2ggdGFibGUuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvTW9ja1NwZWxsQ2hlY2suaDoKKyAgICAgICAgKE1vY2tTcGVsbENoZWNrKTogQ2hhbmdlZCBt
aXNzcGVsbGluZ3MgY29udGFpbmVyIGZyb20gaGFzaCB0YWJsZSB0byB2ZWN0b3IuCisKIDIwMTMt
MDEtMjkgIEJydW5vIGRlIE9saXZlaXJhIEFiaW5hZGVyICA8YnJ1bm8uYWJpbmFkZXJAYmFzeXNr
b20uY29tPgogCiAgICAgICAgIFtFRkxdIEFkZCBUb2dnbGUgZnVsbHNjcmVlbiAoRjExKSB0byBN
aW5pQnJvd3NlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suY3BwCmluZGV4IDc1OTNjNzE5MDQy
MzUwZDJjMjFlYWExOWRhYjlmNWE5OTk5MGE4ODEuLjQ0ODA2YmJjNWQ4MWM1YTQ0MDkwZDM3ZmI4
NzU2NGMxM2NmZWFjYzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5jcHAKQEAgLTY5LDI3
ICs2OSwzNCBAQCBib29sIE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZChjb25zdCBXZWJT
dHJpbmcmIHRleHQsIGludCogbWlzc3BlbGxlZE9mZnNldAogICAgICAgICAvLyAoVGhpcyBpcyBh
IHNpbXBsZSB2ZXJzaW9uIG9mIG91ciBTcGVsbENoZWNrV29yZEl0ZXJhdG9yIGNsYXNzLikKICAg
ICAgICAgLy8gSWYgdGhlIGdpdmVuIHN0cmluZyBkb2Vzbid0IGluY2x1ZGUgYW55IEFTQ0lJIGNo
YXJhY3RlcnMsIHdlIGNhbiB0cmVhdCB0aGUKICAgICAgICAgLy8gc3RyaW5nIGFzIHZhbGlkIG9u
ZS4KLSAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgVGhpcyBpbXBsZW1lbnRhdGlvbiBzcGxpdHMg
YSBjb250cmFjdGlvbiwgaS5lLiAiaXNuJ3QiIGlzCi0gICAgICAgIC8vIHNwbGl0IGludG8gdHdv
IHBpZWNlcyAiaXNuIiBhbmQgInQiLiBUaGlzIGlzIE9LIGJlY2F1c2Ugd2Via2l0IHRlc3RzCi0g
ICAgICAgIC8vIGRvbid0IGhhdmUgbWlzc3BlbGxlZCBjb250cmFjdGlvbnMuCiAgICAgICAgIGlu
dCB3b3JkT2Zmc2V0ID0gc3RyaW5nVGV4dC5maW5kKGlzQVNDSUlBbHBoYSk7CiAgICAgICAgIGlm
ICh3b3JkT2Zmc2V0ID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlu
dCB3b3JkRW5kID0gc3RyaW5nVGV4dC5maW5kKGlzTm90QVNDSUlBbHBoYSwgd29yZE9mZnNldCk7
Ci0gICAgICAgIGludCB3b3JkTGVuZ3RoID0gd29yZEVuZCA9PSAtMSA/IHN0YXRpY19jYXN0PGlu
dD4oc3RyaW5nVGV4dC5sZW5ndGgoKSkgLSB3b3JkT2Zmc2V0IDogd29yZEVuZCAtIHdvcmRPZmZz
ZXQ7CisgICAgICAgIGludCBtYXhXb3JkTGVuZ3RoID0gc3RyaW5nVGV4dC5sZW5ndGgoKSAtIHdv
cmRPZmZzZXQ7CisgICAgICAgIGludCB3b3JkTGVuZ3RoOworICAgICAgICBXVEY6OlN0cmluZyB3
b3JkOwogCiAgICAgICAgIC8vIExvb2sgdXAgb3VyIG1pc3NwZWxsZWQtd29yZCB0YWJsZSB0byBj
aGVjayBpZiB0aGUgZXh0cmFjdGVkIHdvcmQgaXMgYQogICAgICAgICAvLyBrbm93biBtaXNzcGVs
bGVkIHdvcmQsIGFuZCByZXR1cm4gdGhlIG9mZnNldCBhbmQgdGhlIGxlbmd0aCBvZiB0aGUKICAg
ICAgICAgLy8gZXh0cmFjdGVkIHdvcmQgaWYgdGhpcyB3b3JkIGlzIGEga25vd24gbWlzc3BlbGxl
ZCB3b3JkLgogICAgICAgICAvLyAoU2VlIHRoZSBjb21tZW50IGluIE1vY2tTcGVsbENoZWNrOjpp
bml0aWFsaXplSWZOZWVkZWQoKSB3aHkgd2UgdXNlIGEKICAgICAgICAgLy8gbWlzc3BlbGxlZC13
b3JkIHRhYmxlLikKLSAgICAgICAgV1RGOjpTdHJpbmcgd29yZCA9IHN0cmluZ1RleHQuc3Vic3Ry
aW5nKHdvcmRPZmZzZXQsIHdvcmRMZW5ndGgpOwotICAgICAgICBpZiAobV9taXNzcGVsbGVkV29y
ZHMuY29udGFpbnMod29yZCkpIHsKLSAgICAgICAgICAgICptaXNzcGVsbGVkT2Zmc2V0ID0gd29y
ZE9mZnNldCArIHNraXBwZWRMZW5ndGg7Ci0gICAgICAgICAgICAqbWlzc3BlbGxlZExlbmd0aCA9
IHdvcmRMZW5ndGg7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBtX21pc3NwZWxsZWRXb3Jkcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgd29yZExl
bmd0aCA9IG1fbWlzc3BlbGxlZFdvcmRzLmF0KGkpLmxlbmd0aCgpID4gbWF4V29yZExlbmd0aCA/
IG1heFdvcmRMZW5ndGggOiBtX21pc3NwZWxsZWRXb3Jkcy5hdChpKS5sZW5ndGgoKTsKKyAgICAg
ICAgICAgIHdvcmQgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyh3b3JkT2Zmc2V0LCB3b3JkTGVuZ3Ro
KTsKKyAgICAgICAgICAgIGlmICh3b3JkID09IG1fbWlzc3BlbGxlZFdvcmRzLmF0KGkpICYmIChz
dHJpbmdUZXh0Lmxlbmd0aCgpID09IHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoIHx8IGlzTm90QVND
SUlBbHBoYShzdHJpbmdUZXh0W3dvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoXSkpKSB7CisgICAgICAg
ICAgICAgICAgKm1pc3NwZWxsZWRPZmZzZXQgPSB3b3JkT2Zmc2V0ICsgc2tpcHBlZExlbmd0aDsK
KyAgICAgICAgICAgICAgICAqbWlzc3BlbGxlZExlbmd0aCA9IHdvcmRMZW5ndGg7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICBpZiAo
Km1pc3NwZWxsZWRMZW5ndGggPiAwKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaW50
IHdvcmRFbmQgPSBzdHJpbmdUZXh0LmZpbmQoaXNOb3RBU0NJSUFscGhhLCB3b3JkT2Zmc2V0KTsK
KyAgICAgICAgd29yZExlbmd0aCA9IHdvcmRFbmQgPT0gLTEgPyBzdGF0aWNfY2FzdDxpbnQ+KHN0
cmluZ1RleHQubGVuZ3RoKCkpIC0gd29yZE9mZnNldCA6IHdvcmRFbmQgLSB3b3JkT2Zmc2V0Owor
CiAgICAgICAgIEFTU0VSVCgwIDwgd29yZE9mZnNldCArIHdvcmRMZW5ndGgpOwogICAgICAgICBz
dHJpbmdUZXh0ID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcod29yZE9mZnNldCArIHdvcmRMZW5ndGgp
OwogICAgICAgICBza2lwcGVkTGVuZ3RoICs9IHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoOwpAQCAt
MTUxLDEyICsxNTgsMTMgQEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVk
KCkKICAgICAgICAgImlmbW1wIiwKICAgICAgICAgInF3ZXJ0eXVpb3Bhc2QiLAogICAgICAgICAi
cXdlcnR5dWlvcGFzZGYiLAorICAgICAgICAidXBwZXIgY2FzZSIsCiAgICAgICAgICJ3ZWxsY29t
ZSIKICAgICB9OwogCiAgICAgbV9taXNzcGVsbGVkV29yZHMuY2xlYXIoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFycmF5c2l6ZShtaXNzcGVsbGVkV29yZHMpOyArK2kpCi0gICAgICAg
IG1fbWlzc3BlbGxlZFdvcmRzLmFkZChXVEY6OlN0cmluZzo6ZnJvbVVURjgobWlzc3BlbGxlZFdv
cmRzW2ldKSwgZmFsc2UpOworICAgICAgICBtX21pc3NwZWxsZWRXb3Jkcy5hcHBlbmQoV1RGOjpT
dHJpbmc6OmZyb21VVEY4KG1pc3NwZWxsZWRXb3Jkc1tpXSkpOwogCiAgICAgLy8gTWFyayBhcyBp
bml0aWFsaXplZCB0byBwcmV2ZW50IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcgaW5pdGlhbGl6ZWQg
dHdpY2UKICAgICAvLyBvciBtb3JlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmgKaW5kZXggOGE5
OGQ3MDdjMDRiMWJjODVlMjhmNTcxMDRkYmMwMzE2NDE0NmI1ZC4uYmZhMTg4YjI3MDVlMmVmOGVh
YjdhNjAyODQ0ZjYzMzZhMjg0ODk0YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5oCkBAIC0z
Myw4ICszMyw3IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZlY3Rvci5oIgot
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogLy8gQSBtb2NrIGltcGxlbWVudGF0aW9uIG9mIGEgc3BlbGwtY2hlY2tlciB1c2VkIGZv
ciBXZWJLaXQgdGVzdHMuCkBAIC03MSw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbml0
aWFsaXplSWZOZWVkZWQoKTsKIAogICAgIC8vIEEgdGFibGUgdGhhdCBjb25zaXN0cyBvZiBtaXNz
cGVsbGVkIHdvcmRzLgotICAgIEhhc2hNYXA8V1RGOjpTdHJpbmcsIGJvb2w+IG1fbWlzc3BlbGxl
ZFdvcmRzOworICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9taXNzcGVsbGVkV29yZHM7CiAKICAg
ICAvLyBBIGZsYWcgcmVwcmVzZW50aW5nIHdoZXRoZXIgb3Igbm90IHRoaXMgb2JqZWN0IGlzIGlu
aXRpYWxpemVkLgogICAgIGJvb2wgbV9pbml0aWFsaXplZDsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NzA3Y2UxOGE4YmYw
NjZkYzUxZjAxMDAwM2E0ZmFiYmM2MWMwMjNiLi45NzQ1MzFjYzEzMDY1MmE3ZTk4NWVhY2I0YTQw
MzBlNDhiNmU3NTViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTMtMDEtMjkgIFJvdXNsYW4g
U29sb21ha2hpbiAgPHJvdXNsYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFRlc3RzIGZvciBz
cGVsbCBjaGVja2VyIGJlaGF2aW9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDY4MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0cyBmb3IgdGhlIGZvbGxvd2luZyBzcGVsbCBjaGVjayBiZWhhdmlv
cjoKKyAgICAgICAgLSBTcGVsbGNoZWNrIHNlbGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBvbiBj
b250ZXh0IGNsaWNrLgorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhlIHVz
ZXIgc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIGV4YWN0bHkuCisgICAgICAgIC0gSWYgdGhl
IHdvcmQgaXMgbm90IG1pc3NwZWxsZWQsIHRoZXJlIHNob3VsZCBiZSBubyBzcGVsbGluZyBvcHRp
b25zIGluIHRoZSBjb250ZXh0IG1lbnUuCisgICAgICAgIC0gU3BlbGxjaGVjayBzaG91bGQgc2Vs
ZWN0IG11bHRpLXdvcmQgbWlzc3BlbGxpbmdzIG9uIGNvbnRleHQgY2xpY2suCisgICAgICAgIC0g
U3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbXVsdGktd29yZCBt
aXNzcGVsbGluZyBleGFjdGx5LgorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCB3b3JrIGZvciBk
b3VibGUtY2xpY2tlZCBtaXNzcGVsbGluZ3MuCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGln
bm9yZSB3aGl0ZXNwYWNlLgorICAgICAgICAtIFVuZGVyc2NvcmVzIHNob3VsZCBiZSB0cmVhdGVk
IGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4KKyAgICAgICAgLSBQ
dW5jdHVhdGlvbiBtYXJrcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGlu
ZyBzaG91bGQgaWdub3JlIHRoZW0uCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2Fi
bGVkIHdoZW4gdXNlciBzZWxlY3RzIGEgcGFydCBvZiBtaXNzcGVsbGluZy4KKyAgICAgICAgLSBT
cGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVjdHMgbXVsdGlwbGUgd29y
ZHMgdGhhdCBhcmUgbm90IGEgc2luZ2xlIG1pc3NwZWxsaW5nLgorCisgICAgICAgICogZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13
b3JkLXdpdGgtdW5kZXJzY29yZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jl
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJs
ZS1jbGlja2VkLXdvcmQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVk
LW11bHRpcGxlLXdvcmRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQt
c2VsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hv
dWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxl
Y3Qtc2luZ2xlLXdvcmQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24uaHRtbDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1bmN0dWF0aW9uLXNl
bGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13
aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNw
YWNlLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKworICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcv
cmVzb3VyY2VzL3V0aWwuanM6IEFkZGVkLgorICAgICAgICAoaW5pdFNwZWxsVGVzdCk6IEFkZGVk
IHV0aWxpdHkgZnVuY3Rpb24gb2YgY29tbW9uIGJvaWxlcnBsYXRlIGZvciB0aGUgc3BlbGxpbmcg
dGVzdHMuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tl
ZC13b3JkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlj
a2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxl
LXdvcmRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1l
eGFjdGx5LXNlbGVjdGVkLXdvcmQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNl
bGVjdC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qt
c2luZ2xlLXdvcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29y
ZC1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rp
b24uaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRo
LXVuZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNl
LXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKwogMjAx
My0wMS0yOSAgUHJhdmluIEQgIDxwcmF2aW5kLjJrNEBnbWFpbC5jb20+CiAKICAgICAgICAgQ3Vy
cmVudCBlcnJvciByZXBvcnRpbmcgbWV0aG9kIHVzZWQgYnkgY2hlY2stbGF5b3V0LmpzIHNob3Vs
ZCBub3QgYWZmZWN0IHN1YnNlcXVlbnQgc3ViLXRlc3RzIHVzaW5nIGNoZWNraW5nIGRhdGEtb2Zm
c2V0LXkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Jlc291cmNl
cy91dGlsLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9yZXNvdXJjZXMvdXRpbC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hMjM5YzIwNzdjYmIwMjZlODlkNjliMTgyZDU3YzRkMDExMzRmMWYxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9yZXNvdXJjZXMv
dXRpbC5qcwpAQCAtMCwwICsxLDMxIEBACitmdW5jdGlvbiB2ZXJpZnlTcGVsbFRlc3QobnJldHJ5
KQoreworICAgIGlmICghbnJldHJ5KSB7CisgICAgICAgIGxvZygiRkFJTDogc3BlbGxjaGVjayB0
aW1lZCBvdXQiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCkKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hp
bGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHZlcmlmeVNwZWxsVGVzdChucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgdGVzdEZ1bmN0aW9uQ2FsbGJhY2soZGVzdGluYXRpb24uY2hpbGRO
b2Rlc1swXSk7CisgICAgZmluaXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gaW5pdFNwZWxsVGVz
dCh0ZXN0RWxlbWVudElkLCB0ZXN0VGV4dCwgdGVzdEZ1bmN0aW9uKQoreworICAgIGlmICghd2lu
ZG93LmludGVybmFscykKKyAgICAgICAgcmV0dXJuOworICAgIHRlc3RGdW5jdGlvbkNhbGxiYWNr
ID0gdGVzdEZ1bmN0aW9uOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIHRlc3RSdW5u
ZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1
bm5lci5zZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5z
ZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0cnVlKTsKKyAgICBpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0RWRpdGluZ0JlaGF2aW9yKCJ3aW4iKTsKKyAgICB2YXIgZGVzdGluYXRp
b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0RWxlbWVudElkKTsKKyAgICBkZXN0aW5h
dGlvbi5mb2N1cygpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFs
c2UsIHRlc3RUZXh0KTsKKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsgdmVyaWZ5
U3BlbGxUZXN0KDEwKTsgfSwgMCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjU0Y2Q5MmMzMTI2OTMwMWU5YTEzZDQyYTFmOTkxYmUw
OTU4ZWYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBA
CitTcGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxpbmdzLiBU
byB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIGRvdWJsZS1jbGljayBvbiAn
d2VsbGNvbWUnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBz
dWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGwgY2hlY2sgc3VnZ2VzdGlv
bnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2Vy
UmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IGlzICJ3ZWxsY29tZSIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3
ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxj
b21lIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3Ro
IC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29t
ZSAiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSAiCitQQVNT
IGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAi
d2VsY29tZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNr
ZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTViNTZm
MzM4YzExYzQyNGNjZjY0N2QwZGM3NGZiMGQ2NDhkYzY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdp
dGgtdW5kZXJzY29yZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1NwZWxsaW5nIHNo
b3VsZCB3b3JrIGZvciBkb3VibGUtY2xpY2tlZCBtaXNzcGVsbGVkIHdvcmRzIHdpdGggdW5kZXJz
Y29yZXMuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lXyBob21lLicsIGRvdWJsZS1j
bGljayBvbiAnd2VsbGNvbWVfJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4g
VGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsIGNoZWNr
IHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVs
bGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSBpcyAid2VsbGNvbWVfIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3Ry
aW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmco
KSBpcyAid2VsbGNvbWVfIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxl
bWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IGlzICJ3ZWxsY29tZV8gIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMg
IndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2Vs
bGNvbWVfICIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxl
bmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCit3ZWxsY29tZV8gaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVy
c2NvcmVzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJs
ZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNTkzNWZl
MDAwNWE1YTA2MTM1MmNmOWEyM2VmNjMxMjNiMTZhMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0
aC11bmRlcnNjb3Jlcy5odG1sCkBAIC0wLDAgKzEsODAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJk
ZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisK
K2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQgbWlz
c3BlbGxlZCB3b3JkcyB3aXRoIHVuZGVyc2NvcmVzLiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0
IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZV8gaG9tZS4nLCBkb3VibGUtY2xpY2sgb24gJ3dlbGxj
b21lXycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uICIgKworICAgICAgICAg
ICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93cyBzcGVsbCBj
aGVjayBzdWdnZXN0aW9ucy4iKTsKKworaW5pdFNwZWxsVGVzdCgiZGVzdGluYXRpb24iLCAid2Vs
bGNvbWVfIGhvbWUuIiwgIGZ1bmN0aW9uKHRleHROb2RlKSB7CisgICAgc3BlbGxpbmdNYXJrZXJS
YW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIs
IDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0
cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIERvdWJsZS1jbGljayB0
aGUgbWlzc3BlbGxlZCB3b3JkIHdpdGhvdXQgdGhlIHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAg
dGVzdFJ1bm5lci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGZhbHNlKTsKKyAg
ICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRp
b24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhl
aWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAi
d2VsbGNvbWVfIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZV8iIHRvIHNo
b3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9m
ZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgeSA9IGRlc3RpbmF0
aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0
aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgs
IHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2so
KTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNl
bmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBz
cGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9k
ZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01h
cmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lXyIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVu
dUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKKworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gRG91YmxlLWNs
aWNrIHRoZSBtaXNzcGVsbGVkIHdvcmQgd2l0aCB0aGUgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKyAg
ICB0ZXN0UnVubmVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQodHJ1ZSk7Cisg
ICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0
aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVu
dC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRI
ZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwg
IndlbGxjb21lXyAiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gIndlbGxjb21lXyAiIHRv
IHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgeSA9IGRlc3Rp
bmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xp
Y2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVu
dFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAg
ICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0
Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGlu
Z01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lXyAi
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4
dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7Cit9KTsKKworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjQ5MjczZDJlMGFiYWI5ZDliY2VjOTI3YTA5YzNmYzQ2Y2UwMjdjZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91Ymxl
LWNsaWNrZWQtd29yZC5odG1sCkBAIC0wLDAgKzEsNzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJk
ZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisK
K2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQgbWlz
c3BlbGxpbmdzLiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxs
Y29tZSBob21lLicsIGRvdWJsZS1jbGljayBvbiAnd2VsbGNvbWUnLCBhbmQgY29udGV4dC1jbGlj
ayBvbiB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3
aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CisK
K2luaXRTcGVsbFRlc3QoImRlc3RpbmF0aW9uIiwgIndlbGxjb21lIGhvbWUuIiwgZnVuY3Rpb24o
dGV4dE5vZGUpIHsKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJh
bmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IiwgIiIpOworCisgICAgLy8gRG91YmxlLWNsaWNrIHRoZSBtaXNzcGVsbGVkIHdvcmQgd2l0aG91
dCB0cmFpbGluZyB3aGl0ZXNwYWNlLgorICAgIHRlc3RSdW5uZXIuc2V0U2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIg
eSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZz
ZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisKKyAgICAvLyBDb250ZXh0
IGNsaWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHggPSBk
ZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExl
ZnQgKyA0MDsKKyAgICB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRl
c3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9
IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUg
Y29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29k
ZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMu
bWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29t
ZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRl
eHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21l
Iik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIs
ICIiKTsKKworICAgIC8vIERvdWJsZS1jbGljayB0aGUgbWlzc3BlbGxlZCB3b3JkIHdpdGggdHJh
aWxpbmcgd2hpdGVzcGFjZS4KKyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQodHJ1ZSk7CisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRl
c3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3Ag
KyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVVwKCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSAiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sg
b24gIndlbGxjb21lICIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHggPSBkZXN0aW5h
dGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0
MDsKKyAgICB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0
aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50
U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4
dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAw
MUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2Vy
UmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAid2VsbGNvbWUgIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVu
dUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOwor
fSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVs
dGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40NGE3OTQ3NWU1NzZmYmI4Nzk4MWI2MmU2N2I1MWE0ODI3Y2NmNjJkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5
LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitT
cGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBtdWx0aS13b3JkIG1p
c3NwZWxsaW5nIGV4YWN0bHkuIFRvIHRlc3QgbWFudWFsbHksIGVuYWJsZSAnQXNrIEdvb2dsZSBm
b3IgU3VnZ2VzdGlvbnMnIGluIENocm9tZSwgdHlwZSAnSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2Uu
Jywgc2VsZWN0ICd1cHBlciBjYXNlJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlv
bi5UaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGxpbmcg
c3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxs
aW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKK0l0IHNob3VsZCBiZSB1cHBlciBjYXNlLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRp
cGxlLXdvcmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4
YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDMyNTRmYjQ2
OGI4NzQ3MjNlZTVjNmE0YzhjMTk0YmY2MGE5MjkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxl
LXdvcmRzLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0
aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0
aW9uKCJTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBtdWx0aS13
b3JkIG1pc3NwZWxsaW5nIGV4YWN0bHkuICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFs
bHksIGVuYWJsZSAnQXNrIEdvb2dsZSBmb3IgU3VnZ2VzdGlvbnMnIGluIENocm9tZSwgdHlwZSAn
SXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuJywgc2VsZWN0ICd1cHBlciBjYXNlJywgYW5kIGNvbnRl
eHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4iICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNj
ZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGxpbmcgc3VnZ2VzdGlvbnMuIik7
CisKK2luaXRTcGVsbFRlc3QoImRlc3RpbmF0aW9uIiwgIkl0IHNob3VsZCBiZSB1cHBlciBjYXNl
LiIsIGZ1bmN0aW9uKHRleHROb2RlKSB7CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVy
bmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgInVw
cGVyIGNhc2UiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIiwgIiIpOworICAgIAorICAgIC8vIFNlbGVjdCB0aGUgbXVsdGktd29y
ZCBtaXNzcGVsbGluZyB3aXRob3V0IHN1cnJvdW5kaW5nIHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRp
b24uCisgICAgdmFyIHdvcmRSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgd29y
ZFJhbmdlLnNldFN0YXJ0KHRleHROb2RlLCAxMyk7CisgICAgd29yZFJhbmdlLnNldEVuZCh0ZXh0
Tm9kZSwgMjMpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uod29yZFJhbmdlKTsKKworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAi
dXBwZXIgY2FzZSIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBvbiAidXBwZXIgY2FzZSIgdG8g
c2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgMTAwOworICAgIHZhciB5
ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNl
dFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNv
bnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51Lgor
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxs
KTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JO
b2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ1
cHBlciBjYXNlIik7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3Rs
eS1zZWxlY3RlZC13b3JkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNGUzNmNmMDQzOTEwNDk5NmYwY2FmMTU2YjNlOTkzMWExODhlMzgzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVj
dGVkLXdvcmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1NwZWxsaW5nIHNob3VsZCB3
b3JrIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIGV4YWN0bHkuIFRv
IHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIGhvbWUuJywgc2VsZWN0ICd3ZWxsY29tZScs
IGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdo
ZW4gdGhlIGNvbnRleHQgbWVudSBzaG93cyBzcGVsbGluZyBzdWdnZXN0aW9ucy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmlu
ZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkg
aXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21l
IgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFT
UyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIGNv
bnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAid2Vs
Y29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImhvbWUiCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJob21lIgorUEFTUyBjb250
ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBh
cmF0b3I+IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
Cit3ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjIxZDk2ZDg3YzA0ZDk3MzFhYmNiMGZhMzU3Y2IyNzU3OGVkODZjYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxl
Y3RlZC13b3JkLmh0bWwKQEAgLTAsMCArMSw2NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3Rp
bmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZGVz
Y3JpcHRpb24oIlNwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyB0aGUg
bWlzc3BlbGxlZCB3b3JkIGV4YWN0bHkuICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFs
bHksIHR5cGUgJ3dlbGxjb21lIGhvbWUuJywgc2VsZWN0ICd3ZWxsY29tZScsIGFuZCBjb250ZXh0
LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2Nl
ZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93cyBzcGVsbGluZyBzdWdnZXN0aW9ucy4iKTsK
KworaW5pdFNwZWxsVGVzdCgiZGVzdGluYXRpb24iLCAid2VsbGNvbWUgaG9tZS4iLCBmdW5jdGlv
bih0ZXh0Tm9kZSkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2Vy
UmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAiIik7CisKKyAgICAvLyBTZWxlY3QgdGhlIG1pc3NwZWxsZWQgd29yZCB3aXRob3V0IHN1
cnJvdW5kaW5nIHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRpb24uCisgICAgdmFyIHdvcmRSYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgd29yZFJhbmdlLnNldFN0YXJ0KHRleHROb2Rl
LCAwKTsKKyAgICB3b3JkUmFuZ2Uuc2V0RW5kKHRleHROb2RlLCA4KTsKKyAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHdvcmRSYW5nZSk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisKKyAgICAvLyBDb250
ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZh
ciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5v
ZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0
IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVu
dUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0
byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcu
ZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9
IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygp
IiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFd
IiwgIndlbGNvbWUiKTsKKyAgICAKKyAgICAvLyBTZWxlY3QgYSBjb3JyZWN0bHkgc3BlbGxlZCB3
b3JkIHdpdGhvdXQgc3Vycm91bmRpbmcgd2hpdGVzcGFjZSBvciBwdW5jdHVhdGlvbi4KKyAgICB3
b3JkUmFuZ2Uuc2V0U3RhcnQodGV4dE5vZGUsIDkpOworICAgIHdvcmRSYW5nZS5zZXRFbmQodGV4
dE5vZGUsIDEzKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHdvcmRSYW5nZSk7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJo
b21lIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJob21lIiB0byBzaG93IHRoZSBjb250
ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA4MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9u
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5h
dGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkp
OworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsK
KyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRl
ci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgImhv
bWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29u
dGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICI8c2VwYXJhdG9yPiIpOworfSk7CisKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW11bHRpd29yZC1zZWxlY3Rpb24tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2Vs
ZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjBkZDJiZTA5ZjhmZWFlYzYzMDM2Nzc1
MjcyMDMxZTg2NDEwMWVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE1IEBACitTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVjdHMg
bXVsdGlwbGUgd29yZHMgdGhhdCBhcmUgbm90IGEgc2luZ2xlIG1pc3NwZWxsaW5nLiBUbyB0ZXN0
IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIHNlbGVjdCAnd2VsbGNvbWUgaG9tZScs
IGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2VlZHMgd2hl
biB0aGUgY29udGV4dCBtZW51IGhhcyBubyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0
cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxj
b21lIGhvbWUiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNv
bWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSBo
b21lIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3Ro
IC0gMV0gaXMgIjxzZXBhcmF0b3I+IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW11bHRpd29yZC1zZWxlY3Rpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lMDI3Yjk3YmM3MTRjMWQ4ZDBjNjBlMDcyODkyODA0MzQxNjQ2YmU5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1t
dWx0aXdvcmQtc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYg
aWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlw
dD4KKworZGVzY3JpcHRpb24oIlNwZWxsaW5nIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHVzZXIg
c2VsZWN0cyBtdWx0aXBsZSB3b3JkcyB0aGF0IGFyZSBub3QgYSBzaW5nbGUgbWlzc3BlbGxpbmcu
ICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIGhvbWUu
Jywgc2VsZWN0ICd3ZWxsY29tZSBob21lJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVj
dGlvbi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjZWVkcyB3aGVuIHRoZSBjb250ZXh0
IG1lbnUgaGFzIG5vIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLiIpOworCitpbml0U3BlbGxUZXN0
KCJkZXN0aW5hdGlvbiIsICJ3ZWxsY29tZSBob21lLiIsIGZ1bmN0aW9uKHRleHROb2RlKSB7Cisg
ICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4
dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxp
bmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAg
IC8vIFNlbGVjdCB0aGUgdGV4dCAid2VsbGNvbWUgaG9tZSIuCisgICAgdmFyIG11bHRpV29yZFJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBtdWx0aVdvcmRSYW5nZS5zZXRTdGFy
dCh0ZXh0Tm9kZSwgMCk7CisgICAgbXVsdGlXb3JkUmFuZ2Uuc2V0RW5kKHRleHROb2RlLCAxMyk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShtdWx0aVdvcmRSYW5nZSk7CisKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxj
b21lIGhvbWUiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgdG8gc2hvdyB0aGUgY29udGV4dCBt
ZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24u
b2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAg
ICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAg
Ly8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5
RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdN
YXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVs
bGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5n
ZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSBob21lIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxl
bWVudHMubGVuZ3RoIC0gMV0iLCAiPHNlcGFyYXRvcj4iKTsKK30pOworCis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1t
dWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZhNDU0MTY4YWRjOTdkMWM3
ZDZkZTQwYTNmZTdhN2FkMGIyOTRjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorU3BlbGwgY2hlY2sgc2hvdWxkIHNlbGVjdCBtdWx0
aS13b3JkIG1pc3NwZWxsaW5ncyBvbiBjb250ZXh0IGNsaWNrLiBUbyB0ZXN0IG1hbnVhbGx5LCBl
bmFibGUgJ0FzayBHb29nbGUgZm9yIFN1Z2dlc3Rpb25zJyBpbiBDaHJvbWUsIHR5cGUgJ0l0IHNo
b3VsZCBiZSB1cHBlciBjYXNlLicsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSB3b3JkICd1cHBl
cicuIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gJ3VwcGVyIGNhc2UnIHdhcyBzZWxlY3RlZCBhZnRl
ciBjb250ZXh0IGNsaWNrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBz
cGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFu
Z2UudG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKK0l0IHNob3VsZCBiZSB1cHBlciBjYXNlLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11
bHRpcGxlLXdvcmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGYwNDI4Mzdi
MTQ1NjMwNDA5YzgwOGY1Zjg0NDUyMzU1Njc5NDM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdv
cmRzLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9u
IiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9u
KCJTcGVsbCBjaGVjayBzaG91bGQgc2VsZWN0IG11bHRpLXdvcmQgbWlzc3BlbGxpbmdzIG9uIGNv
bnRleHQgY2xpY2suICIrCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgZW5hYmxlICdB
c2sgR29vZ2xlIGZvciBTdWdnZXN0aW9ucycgaW4gQ2hyb21lLCB0eXBlICdJdCBzaG91bGQgYmUg
dXBwZXIgY2FzZS4nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgd29yZCAndXBwZXInLiAiICsK
KyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVuICd1cHBlciBjYXNlJyB3YXMgc2Vs
ZWN0ZWQgYWZ0ZXIgY29udGV4dCBjbGljay4iKTsKKworaW5pdFNwZWxsVGVzdCgiZGVzdGluYXRp
b24iLCAiSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuIiwgZnVuY3Rpb24odGV4dE5vZGUpIHsKKyAg
ICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0
Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGlu
Z01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAidXBwZXIgY2FzZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAg
ICAvLyBDb250ZXh0IGNsaWNrIG9uICJ1cHBlciBjYXNlIiB0byBzaG93IHRoZSBjb250ZXh0IG1l
bnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRl
c3RpbmF0aW9uLm9mZnNldExlZnQgKyAxMDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24u
b2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAg
ICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAg
Ly8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5
RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdN
YXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVs
bGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5n
ZS50b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
IndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKK30pOwor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3Jk
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hv
dWxkLXNlbGVjdC1zaW5nbGUtd29yZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE4ZDA4NjZh
MzM3ODgwZDE5ZGVhNGIyY2ExYzg4M2ZjYmVjMjEyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29y
ZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorU3BlbGwgY2hlY2sgc2VsZWN0cyB0aGUg
bWlzc3BlbGxlZCB3b3JkIG9uIGNvbnRleHQgY2xpY2suIFRvIHRlc3QgbWFudWFsbHksIHR5cGUg
J3dlbGxjb21lIGhvbWUuJyBhbmQgY29udGV4dC1jbGljayBvbiAnd2VsbGNvbWUnLiBUaGUgdGVz
dCBzdWNjZWVkcyB3aGVuICd3ZWxsY29tZScgaXMgc2VsZWN0ZWQgYWZ0ZXIgdGhlIGNvbnRleHQg
Y2xpY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFy
a2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmco
KSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlz
ICJ3ZWxsY29tZSIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRz
Lmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAi
IgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0g
MV0gaXMgIjxzZXBhcmF0b3I+IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0bWwgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xl
LXdvcmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjgyODRhOTQ5ZWEwZTkwY2IwMTRhZjAyNjdmNzU3NGM0
ODY0NGU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0bWwKQEAgLTAsMCArMSw1NSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRh
aW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8
L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlNwZWxsIGNoZWNrIHNlbGVjdHMgdGhl
IG1pc3NwZWxsZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLiAiICsKKyAgICAgICAgICAgICJUbyB0
ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicgYW5kIGNvbnRleHQtY2xpY2sgb24g
J3dlbGxjb21lJy4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiAnd2Vs
bGNvbWUnIGlzIHNlbGVjdGVkIGFmdGVyIHRoZSBjb250ZXh0IGNsaWNrLiIpOworCitpbml0U3Bl
bGxUZXN0KCJkZXN0aW5hdGlvbiIsICJ3ZWxsY29tZSBob21lLiIsIGZ1bmN0aW9uKHRleHROb2Rl
KSB7CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5v
ZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
c3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsK
KworICAgIC8vIENvbnRleHQgY2xpY2sgb24gIndlbGxjb21lIiB0byBzaG93IHRoZSBjb250ZXh0
IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCAr
IGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9m
ZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlv
bi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOwor
ICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAg
ICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5r
ZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGlu
Z01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNw
ZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJh
bmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
IndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVu
dHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworCisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LnJlbW92ZUFsbFJhbmdlcygpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9u
ICJob21lIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlv
bi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA4MDsK
KyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5h
dGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVu
dFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRl
eHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgw
MDFCKSwgbnVsbCk7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIHNob3VsZCBub3Qgc2VsZWN0IGNv
cnJlY3RseSBzcGVsbGVkIHdvcmRzIHdpdGggIndpbiIgZWRpdGluZyBiZWhhdmlvci4KKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwg
IiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250
ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIjxzZXBhcmF0b3I+Iik7Cit9KTsKKworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlv
bi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk3ZWU3NmVhMTRhNTA1ZmQ5NGZmODY4ODQwYjlm
NzMyZDVhNWIwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUg
QEAKK1NwZWxsaW5nIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHVzZXIgc2VsZWN0cyBhIHBhcnQg
b2YgbWlzc3BlbGxpbmcuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIGhvbWUuJyBz
ZWxlY3QgJ2xsY28nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVz
dCBzdWNlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgbm8gc3BlbGwgY2hlY2sgc3VnZ2Vz
dGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFy
a2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIGlzICJsbGNvIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndl
bGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAibGxjbyIK
K1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFd
IGlzICI8c2VwYXJhdG9yPiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24uaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mOWJjODVkYWMyYTk4MzBhM2YxNjRlNzRkN2IxNTNmMDYwMThlZGYzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNl
bGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5h
dGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2Ny
aXB0aW9uKCJTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVjdHMgYSBw
YXJ0IG9mIG1pc3NwZWxsaW5nLiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0
eXBlICd3ZWxsY29tZSBob21lLicgc2VsZWN0ICdsbGNvJywgYW5kIGNvbnRleHQtY2xpY2sgb24g
dGhlIHNlbGVjdGlvbi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjZWVkcyB3aGVuIHRo
ZSBjb250ZXh0IG1lbnUgaGFzIG5vIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLiIpOworCitpbml0
U3BlbGxUZXN0KCJkZXN0aW5hdGlvbiIsICJ3ZWxsY29tZSBob21lLiIsIGZ1bmN0aW9uKHRleHRO
b2RlKSB7CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZv
ck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIi
KTsKKworICAgIC8vIFNlbGVjdCB0aGUgdGV4dCAibGxjbyIuCisgICAgdmFyIHN1YldvcmRSYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgc3ViV29yZFJhbmdlLnNldFN0YXJ0KHRl
eHROb2RlLCAyKTsKKyAgICBzdWJXb3JkUmFuZ2Uuc2V0RW5kKHRleHROb2RlLCA2KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLmFkZFJhbmdlKHN1YldvcmRSYW5nZSk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgImxsY28iKTsKKworICAg
IC8vIENvbnRleHQgY2xpY2sgb24gJ2xsY28nIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAg
ICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRp
b24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhl
aWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4
dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBr
ZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3Ry
aW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFu
Z2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAw
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJp
bmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAibGxjbyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFd
IiwgIjxzZXBhcmF0b3I+Iik7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
d2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODIyMTgwZDBmYjAxZmQ1MTJmMzlkMjk1OTE5MTcyMzlmNmQzZjhk
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUg
QEAKK1B1bmN0dWF0aW9uIG1hcmtzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNw
ZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNv
bWUhJywgc2VsZWN0ICd3ZWxsY29tZSEnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0
aW9uLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIHNwZWxsIGNo
ZWNrIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBz
cGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUhIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRv
U3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAid2VsbGNvbWUhIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51
RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lIQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1bmN0
dWF0aW9uLXNlbGVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNTY1YjcwZmFlMWI2NDNiZTE4YmRj
ZDg4NmU4ZTQzODExMmY5N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLmh0bWwKQEAgLTAs
MCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFi
bGU+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlB1bmN0dWF0aW9u
IG1hcmtzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5nIHNob3VsZCBp
Z25vcmUgdGhlbS4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2Vs
bGNvbWUhJywgc2VsZWN0ICd3ZWxsY29tZSEnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2Vs
ZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250
ZXh0IG1lbnUgaGFzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLiIpOworCitpbml0U3BlbGxUZXN0
KCJkZXN0aW5hdGlvbiIsICJ3ZWxsY29tZSEiLCBmdW5jdGlvbih0ZXh0Tm9kZSkgeworICAgIHNw
ZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2Rl
LCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFy
a2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBT
ZWxlY3QgdGhlIHRleHQgIndlbGxjb21lISIgd2l0aCB0aGUgZXhjbGFtYXRpb24gbWFyay4KKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0
KHRleHROb2RlLCAwKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dE5vZGUsIDkpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSEiKTsKKworICAgIC8vIENv
bnRleHQgY2xpY2sgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGlu
YXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsg
NDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVz
dGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0g
ZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBj
b250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2Rl
KDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5t
YXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21l
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSIsICJ3ZWxsY29tZSEiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRl
eHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21l
Iik7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3Jl
LXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNlMTQ0NjFlZjFiNGFhY2FkMTU5MzNhNmI3ZTI3OGE1ZGZlZjNhZmIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29y
ZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1VuZGVyc2NvcmVzIHNo
b3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhl
bS4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnSGksIF93ZWxsY29tZV8gaG9tZS4nLCBzZWxlY3Qg
J193ZWxsY29tZV8nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVz
dCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rp
b25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtl
clJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmco
KSBpcyAiX3dlbGxjb21lXyIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlz
ICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIl93
ZWxsY29tZV8iCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5s
ZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorSGksIF93ZWxsY29tZV8gaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVy
c2NvcmUtc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWIwMzZiYjgyYjlhZjMzNDJjYzZjZjU1
NjE5OWIzMmQ3MDQ4ZGNmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAg
KzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxl
PjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJVbmRlcnNjb3JlcyBz
aG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRo
ZW0uICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ0hpLCBfd2VsbGNv
bWVfIGhvbWUuJywgc2VsZWN0ICdfd2VsbGNvbWVfJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhl
IHNlbGVjdGlvbi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUg
Y29udGV4dCBtZW51IGhhcyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKKworaW5pdFNwZWxs
VGVzdCgiZGVzdGluYXRpb24iLCAiSGksIF93ZWxsY29tZV8gaG9tZS4iLCBmdW5jdGlvbih0ZXh0
Tm9kZSkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VG
b3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAi
Iik7CisKKyAgICAvLyBTZWxlY3QgdGhlIHRleHQgIl93ZWxsY29tZV8iLgorICAgIHZhciByYW5n
ZVdpdGhVbmRlcnNjb3JlcyA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2VXaXRo
VW5kZXJzY29yZXMuc2V0U3RhcnQodGV4dE5vZGUsIDQpOworICAgIHJhbmdlV2l0aFVuZGVyc2Nv
cmVzLnNldEVuZCh0ZXh0Tm9kZSwgMTQpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1v
dmVBbGxSYW5nZXMoKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2VX
aXRoVW5kZXJzY29yZXMpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJfd2VsbGNvbWVfIik7CisKKyAgICAvLyBDb250ZXh0
IGNsaWNrIG9uICJfd2VsbGNvbWVfIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFy
IHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9m
ZnNldExlZnQgKyA4MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZz
ZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQg
LyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51
RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRv
IGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5m
cm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0g
aW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCki
LCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIiwgIl93ZWxsY29tZV8iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAx
XSIsICJ3ZWxjb21lIik7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0
aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg0MzU1MTczYTczODc5ZmU0NWI0OWEyOThhM2NmMGM1Y2Y0ZDU2NzIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdp
dGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Nw
ZWxsaW5nIHNob3VsZCBpZ25vcmUgd2hpdGVzcGFjZS4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAn
aGVsbG8sIHdlbGxjb21lIGhvbWUuJywgc2VsZWN0ICcgd2VsbGNvbWUgJywgYW5kIGNvbnRleHQt
Y2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4
dCBtZW51IGhhcyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxs
Y29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiB3ZWxsY29t
ZSAiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIgd2VsbGNvbWUgIgorUEFT
UyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMg
IndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKK2hlbGxvLCB3ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rp
b24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hZTkxMTkwYjc5ZTlmNDA4OTM1ZWU0YWM3YTFmZjNhNzIyYWZm
ODBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5l
ciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rp
dj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlNwZWxsaW5nIHNob3VsZCBpZ25vcmUgd2hp
dGVzcGFjZS4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnaGVsbG8s
IHdlbGxjb21lIGhvbWUuJywgc2VsZWN0ICcgd2VsbGNvbWUgJywgYW5kIGNvbnRleHQtY2xpY2sg
b24gdGhlIHNlbGVjdGlvbi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hl
biB0aGUgY29udGV4dCBtZW51IGhhcyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKKworaW5p
dFNwZWxsVGVzdCgiZGVzdGluYXRpb24iLCAiaGVsbG8sIHdlbGxjb21lIGhvbWUuIiwgZnVuY3Rp
b24odGV4dE5vZGUpIHsKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtl
clJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsK
KworICAgIC8vIFNlbGVjdCB0aGUgdGV4dCAiIHdlbGxjb21lICIgd2l0aCBzdXJyb3VuZGluZyB3
aGl0ZXNwYWNlLgorICAgIHZhciByYW5nZVdpdGhXaGl0ZXNwYWNlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZVdpdGhXaGl0ZXNwYWNlLnNldFN0YXJ0KHRleHROb2RlLCA2KTsK
KyAgICByYW5nZVdpdGhXaGl0ZXNwYWNlLnNldEVuZCh0ZXh0Tm9kZSwgMTYpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuYWRkUmFuZ2UocmFuZ2VXaXRoV2hpdGVzcGFjZSk7CisKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiB3ZWxsY29tZSAi
KTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gIiB3ZWxsY29tZSAiIHRvIHNob3cgdGhlIGNv
bnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDgwOworICAgIHZhciB5ID0gZGVzdGluYXRp
b24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3Rp
bmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwg
eSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygp
OworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNw
ZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2Rl
LCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFy
a2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIHdlbGxjb21lICIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVu
dUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKK30pOworCis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185537</attachid>
            <date>2013-01-30 12:21:53 -0800</date>
            <delta_ts>2013-01-30 13:18:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106815-20130130121838.patch</filename>
            <type>text/plain</type>
            <size>87966</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGQyNmE2MzcyMjVhZDc2YmMxODFlNTVmZmZlZDNhYzRjY2JiMWI0ODMuLmMxZmExMDNhMjJjNGI3
OTkwMGU1N2Q0NDQ0OWMzOGE1Mzg3YTkxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTMtMDEtMzAgIFJvdXNsYW4gU29sb21ha2hpbiAgPHJvdXNsYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEZpeGVzIGZvciBzcGVsbGNoZWNrIGJlaGF2aW9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4MTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggc3BlbGxj
aGVjayB0byBiZWhhdmUgYXMgZm9sbG93czoKKyAgICAgICAgLSBTcGVsbGNoZWNrIHNlbGVjdHMg
dGhlIG1pc3NwZWxsZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLiAKKyAgICAgICAgLSBTcGVsbGlu
ZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBl
eGFjdGx5LiAKKyAgICAgICAgLSBJZiB0aGUgd29yZCBpcyBub3QgbWlzc3BlbGxlZCwgdGhlcmUg
c2hvdWxkIGJlIG5vIHNwZWxsaW5nIG9wdGlvbnMgaW4gdGhlIGNvbnRleHQgbWVudS4gCisgICAg
ICAgIC0gU3BlbGxjaGVjayBzaG91bGQgc2VsZWN0IG11bHRpLXdvcmQgbWlzc3BlbGxpbmdzIG9u
IGNvbnRleHQgY2xpY2suIAorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhl
IHVzZXIgc2VsZWN0cyBhIG11bHRpLXdvcmQgbWlzc3BlbGxpbmcgZXhhY3RseS4gCisgICAgICAg
IC0gU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2VkIG1pc3NwZWxsaW5ncy4g
CisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB3aGl0ZXNwYWNlLiAKKyAgICAgICAg
LSBVbmRlcnNjb3JlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBz
aG91bGQgaWdub3JlIHRoZW0uIAorICAgICAgICAtIFB1bmN0dWF0aW9uIG1hcmtzIHNob3VsZCBi
ZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4gCisg
ICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIGEg
cGFydCBvZiBtaXNzcGVsbGluZy4gCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2Fi
bGVkIHdoZW4gdXNlciBzZWxlY3RzIG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmds
ZSBtaXNzcGVsbGluZy4gCisKKyAgICAgICAgICBUZXN0czogZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbAorICAgICAgICAg
ICAgICAgICBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRt
bAorICAgICAgICAgICAgICAgICBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2Vs
ZWN0ZWQtbXVsdGlwbGUtd29yZHMuaHRtbAorICAgICAgICAgICAgICAgICBlZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC5odG1sCisgICAgICAgICAgICAgICAg
IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5odG1sCisgICAg
ICAgICAgICAgICAgIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0
aXBsZS13b3Jkcy5odG1sCisgICAgICAgICAgICAgICAgIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC5odG1sCisgICAgICAgICAgICAgICAgIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24uaHRtbAorICAgICAgICAgICAg
ICAgICBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9u
Lmh0bWwKKyAgICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVu
ZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWwKKyAgICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwKKworICAgICAgICAqIHNy
Yy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6SXNXaGl0ZVNwYWNlT3JQdW5jdHVhdGlvbik6IEFkZGVkIHV0aWxpdHkgZnVuY3Rp
b24gdG8gZGV0ZWN0IHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRpb24uCisgICAgICAgIChXZWJLaXQ6
OkNvbnRleHRNZW51Q2xpZW50SW1wbDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMpOiBN
b2RpZmllZCB0byBmaXggc3BlbGxjaGVjayBiZWhhdmlvci4KKyAgICAgICAgKiBzcmMvV2ViRnJh
bWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpyZXBsYWNlTWlzc3Bl
bGxlZFJhbmdlKTogRml4ZWQgdG8gcmVwbGFjZSB0aGUgY29ycmVjdCByYW5nZS4gQ2hyb21pdW0g
d2lsbCB1c2UgdGhpcyBtZXRob2QgaW5zdGVhZCBvZiByZXBsYWNlUmFuZ2Ugd2hlbiBjb3JyZWN0
aW5nIG1pc3NwZWxsaW5ncy4KKwogMjAxMy0wMS0zMCAgSm9obiBLbm90dGVuYmVsdCAgPGprbm90
dGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEZpeCBmaW5kIGluIHBhZ2Ug
cmVjdHMgZm9yIG92ZXJmbG93aW5nIGNvbnRlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAppbmRleCAzMzk1NmJjYTc4NGUw
MTk0NTliMmY5M2Q0YjQ2MDFjNTZlZjUwMzI3Li4yZDVjZjQ0MGRmNWFiNTJjMzk5NjI1YTZkZWUz
NjVhOTA2MzcxNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250
ZXh0TWVudUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nv
bnRleHRNZW51Q2xpZW50SW1wbC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJF
dmVudEhhbmRsZXIuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUg
IkhUTUxGb3JtRWxlbWVudC5oIgpAQCAtNzgsNiArNzksMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisvLyBSZXR1cm5zIHRydWUgZm9yIHdoaXRl
c3BhY2UgYW5kIHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMuIFJldHVybnMgZmFsc2UgZm9yIGV2ZXJ5
IG90aGVyIHR5cGUgb2YgY2hhcmFjdGVyLgorc3RhdGljIGJvb2wgSXNXaGl0ZVNwYWNlT3JQdW5j
dHVhdGlvbihVQ2hhciBjKQoreworICAgIHJldHVybiBXVEY6OlVuaWNvZGU6OmlzU2VwYXJhdG9y
U3BhY2UoYykgfHwgV1RGOjpVbmljb2RlOjppc1B1bmN0KGMpOworfQorCiAvLyBGaWd1cmUgb3V0
IHRoZSBVUkwgb2YgYSBwYWdlIG9yIHN1YmZyYW1lLiBSZXR1cm5zIHxwYWdlX3R5cGV8IGFzIHRo
ZSB0eXBlLAogLy8gd2hpY2ggaW5kaWNhdGVzIHBhZ2Ugb3Igc3ViZnJhbWUsIG9yIENvbnRleHRO
b2RlVHlwZTo6Tk9ORSBpZiB0aGUgVVJMIGNvdWxkIG5vdAogLy8gYmUgZGV0ZXJtaW5lZCBmb3Ig
c29tZSByZWFzb24uCkBAIC0xMDIsOCArMTA5LDggQEAgc3RhdGljIGJvb2wgaXNBU2luZ2xlV29y
ZChjb25zdCBTdHJpbmcmIHRleHQpCiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgbWlz
c3BlbGxlZCB3b3JkIG9uIHdoaWNoIGNvbnRleHQgbWVudQotLy8gaXMgdG8gYmUgZXZvbGtlZC4g
VGhpcyBmdW5jdGlvbiBhbHNvIHNldHMgdGhlIHdvcmQgb24gd2hpY2ggY29udGV4dCBtZW51Ci0v
LyBoYXMgYmVlbiBldm9rZWQgdG8gYmUgdGhlIHNlbGVjdGVkIHdvcmQsIGFzIHJlcXVpcmVkLiBU
aGlzIGZ1bmN0aW9uIGNoYW5nZXMKKy8vIGlzIHRvIGJlIGludm9rZWQuIFRoaXMgZnVuY3Rpb24g
YWxzbyBzZXRzIHRoZSB3b3JkIG9uIHdoaWNoIGNvbnRleHQgbWVudQorLy8gaGFzIGJlZW4gaW52
b2tlZCB0byBiZSB0aGUgc2VsZWN0ZWQgd29yZCwgYXMgcmVxdWlyZWQuIFRoaXMgZnVuY3Rpb24g
Y2hhbmdlcwogLy8gdGhlIHNlbGVjdGlvbiBvbmx5IHdoZW4gdGhlcmUgd2VyZSBubyBzZWxlY3Rl
ZCBjaGFyYWN0ZXJzIG9uIE9TIFguCiBzdGF0aWMgU3RyaW5nIHNlbGVjdE1pc3NwZWxsZWRXb3Jk
KGNvbnN0IENvbnRleHRNZW51KiBkZWZhdWx0TWVudSwgRnJhbWUqIHNlbGVjdGVkRnJhbWUpCiB7
CkBAIC0yNzQsMzYgKzI4MSwzNSBAQCBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVu
dUNsaWVudEltcGw6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKAogI2VuZGlmCiAgICAg
ICAgIC8vIFdoZW4gQ2hyb21lIGVuYWJsZXMgYXN5bmNocm9ub3VzIHNwZWxsY2hlY2tpbmcsIGl0
cyBzcGVsbGNoZWNrZXIgYWRkcyBzcGVsbGluZyBtYXJrZXJzIHRvIG1pc3NwZWxsZWQKICAgICAg
ICAgLy8gd29yZHMgYW5kIGF0dGFjaGVzIHN1Z2dlc3Rpb25zIHRvIHRoZXNlIG1hcmtlcnMgaW4g
dGhlIGJhY2tncm91bmQuIFRoZXJlZm9yZSwgd2hlbiBhIHVzZXIgcmlnaHQtY2xpY2tzCi0gICAg
ICAgIC8vIGEgbW91c2Ugb24gYSB3b3JkLCBDaHJvbWUganVzdCBuZWVkcyB0byBmaW5kIGEgc3Bl
bGxpbmcgbWFya2VyIG9uIHRoZSB3b3JkIGluc3RyZWFkIG9mIHNwZWxsY2hlY2tpbmcgaXQuCisg
ICAgICAgIC8vIGEgbW91c2Ugb24gYSB3b3JkLCBDaHJvbWUganVzdCBuZWVkcyB0byBmaW5kIGEg
c3BlbGxpbmcgbWFya2VyIG9uIHRoZSB3b3JkIGluc3RlYWQgb2Ygc3BlbGxjaGVja2luZyBpdC4K
ICAgICAgICAgaWYgKHNlbGVjdGVkRnJhbWUtPnNldHRpbmdzKCkgJiYgc2VsZWN0ZWRGcmFtZS0+
c2V0dGluZ3MoKS0+YXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkgewogICAgICAg
ICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBzZWxlY3RlZEZyYW1lLT5zZWxlY3Rp
b24oKS0+c2VsZWN0aW9uKCk7Ci0gICAgICAgICAgICBib29sIHNob3VsZFVwZGF0ZVNlbGVjdGlv
biA9IGZhbHNlOwogICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0T3JSYW5nZSgpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgc2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFyaXR5
KTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkVXBkYXRlU2VsZWN0aW9uID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNl
bGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAgICAgICAgICAgICAgIFZlY3RvcjxEb2N1
bWVudE1hcmtlcio+IG1hcmtlcnMgPSBzZWxlY3RlZEZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJz
KCktPm1hcmtlcnNJblJhbmdlKHJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcg
fCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CisgICAgICAgICAgICAgICAgLy8gQ2FyZXQgYW5k
IHJhbmdlIHNlbGVjdGlvbnMgYWx3YXlzIHJldHVybiB2YWxpZCBub3JtYWxpemVkIHJhbmdlcy4K
KyAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9u
LnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgICAgICAgICAgICAgLy8gQ2xvbmluZyBhIHJhbmdl
IGZhaWxzIG9ubHkgZm9yIGludmFsaWQgcmFuZ2VzLgorICAgICAgICAgICAgICAgIFJlZlB0cjxS
YW5nZT4gbWFya2VyUmFuZ2UgPSBzZWxlY3Rpb25SYW5nZS0+Y2xvbmVSYW5nZShBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJr
ZXJzID0gc2VsZWN0ZWRGcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJzSW5SYW5n
ZShzZWxlY3Rpb25SYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwgRG9jdW1l
bnRNYXJrZXI6OkdyYW1tYXIpOwogICAgICAgICAgICAgICAgIGlmIChtYXJrZXJzLnNpemUoKSA9
PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtYXJrZXJzWzBdLT5zdGFydE9mZnNldCgp
ICE9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS0+c3RhcnRPZmZzZXQoKSkgfHwgbWFya2Vy
c1swXS0+ZW5kT2Zmc2V0KCkgIT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmdlLT5lbmRPZmZz
ZXQoKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzLmNsZWFyKCk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChtYXJrZXJzLnNpemUoKSA9PSAxKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJhbmdlLT5zZXRTdGFydChyYW5nZS0+c3RhcnRDb250YWluZXIo
KSwgbWFya2Vyc1swXS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJhbmdl
LT5zZXRFbmQocmFuZ2UtPmVuZENvbnRhaW5lcigpLCBtYXJrZXJzWzBdLT5lbmRPZmZzZXQoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEubWlzc3BlbGxlZFdvcmQgPSByYW5nZS0+dGV4dCgp
OwotICAgICAgICAgICAgICAgICAgICBpZiAobWFya2Vyc1swXS0+ZGVzY3JpcHRpb24oKS5sZW5n
dGgoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlv
bnM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzWzBdLT5kZXNjcmlwdGlvbigpLnNw
bGl0KCdcbicsIHN1Z2dlc3Rpb25zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZGlj
dGlvbmFyeVN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnM7Ci0gICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xpZW50KCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBtaXNzcGVsbGVkT2Zmc2V0LCBtaXNzcGVsbGVkTGVuZ3RoOwotICAgICAg
ICAgICAgICAgICAgICAgICAgbV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xpZW50KCktPnNwZWxsQ2hl
Y2soZGF0YS5taXNzcGVsbGVkV29yZCwgbWlzc3BlbGxlZE9mZnNldCwgbWlzc3BlbGxlZExlbmd0
aCwgJmRhdGEuZGljdGlvbmFyeVN1Z2dlc3Rpb25zKTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdl
dCgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFVwZGF0ZVNlbGVjdGlvbiAmJiBz
ZWxlY3RlZEZyYW1lLT5zZWxlY3Rpb24oKS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKHNlbGVjdGlv
bikpCisgICAgICAgICAgICAgICAgICAgIG1hcmtlclJhbmdlLT5zZXRTdGFydChtYXJrZXJSYW5n
ZS0+c3RhcnRDb250YWluZXIoKSwgbWFya2Vyc1swXS0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIG1hcmtlclJhbmdlLT5zZXRFbmQobWFya2VyUmFuZ2UtPmVuZENvbnRhaW5l
cigpLCBtYXJrZXJzWzBdLT5lbmRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIC8vIElm
IHRoZXJlIGlzIG5vIHNlbGVjdGlvbiwgdGhlbiBzZWxlY3QgdGhlIG1pc3NwZWxsaW5nLgorICAg
ICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihtYXJrZXJSYW5nZS5nZXQo
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEZyYW1lLT5zZWxlY3Rpb24oKS0+
c2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgV29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlv
blJhbmdlLT50ZXh0KCkuc3RyaXBXaGl0ZVNwYWNlKCZJc1doaXRlU3BhY2VPclB1bmN0dWF0aW9u
KSA9PSBtYXJrZXJSYW5nZS0+dGV4dCgpLnN0cmlwV2hpdGVTcGFjZSgmSXNXaGl0ZVNwYWNlT3JQ
dW5jdHVhdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEubWlzc3BlbGxlZFdv
cmQgPSBtYXJrZXJSYW5nZS0+dGV4dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1h
cmtlcnNbMF0tPmRlc2NyaXB0aW9uKCkubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uczsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXJrZXJzWzBdLT5kZXNjcmlwdGlvbigpLnNwbGl0KCdcbicsIHN1Z2dlc3Rpb25z
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmRpY3Rpb25hcnlTdWdnZXN0aW9u
cyA9IHN1Z2dlc3Rpb25zOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3dl
YlZpZXctPnNwZWxsQ2hlY2tDbGllbnQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBtaXNzcGVsbGVkT2Zmc2V0LCBtaXNzcGVsbGVkTGVuZ3RoOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fd2ViVmlldy0+c3BlbGxDaGVja0NsaWVudCgpLT5zcGVsbENoZWNrKGRh
dGEubWlzc3BlbGxlZFdvcmQsIG1pc3NwZWxsZWRPZmZzZXQsIG1pc3NwZWxsZWRMZW5ndGgsICZk
YXRhLmRpY3Rpb25hcnlTdWdnZXN0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcAppbmRleCA1YmFmMDhlYzI3N2RmZjFkZGJkMGY1ZWEyZTE0ZWRiYmI3NjdlNjRjLi5mOWI1
YTRjOTU1NzcwNWE3ZGUyNDA2M2MwY2Y1NDgyYmM2ZjJhODlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTEzMDIsMTEgKzEzMDIsMTYgQEAgdm9p
ZCBXZWJGcmFtZUltcGw6OnJlcGxhY2VNaXNzcGVsbGVkUmFuZ2UoY29uc3QgV2ViU3RyaW5nJiB0
ZXh0KQogICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+IG1hcmtlcnMgPSBmcmFtZSgpLT5kb2N1
bWVudCgpLT5tYXJrZXJzKCktPm1hcmtlcnNJblJhbmdlKGNhcmV0UmFuZ2UuZ2V0KCksIERvY3Vt
ZW50TWFya2VyOjpTcGVsbGluZyB8IERvY3VtZW50TWFya2VyOjpHcmFtbWFyKTsKICAgICBpZiAo
bWFya2Vycy5zaXplKCkgPCAxIHx8IG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkgPj0gbWFya2Vy
c1swXS0+ZW5kT2Zmc2V0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8UmFuZ2U+IG1h
cmtlclJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFt
ZSgpLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCks
IG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCksIG1hcmtlcnNbMF0tPmVuZE9mZnNldCgpIC0gbWFy
a2Vyc1swXS0+c3RhcnRPZmZzZXQoKSk7Ci0gICAgaWYgKCFtYXJrZXJSYW5nZS5nZXQoKSB8fCAh
ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihtYXJrZXJSYW5nZS5n
ZXQoKSkpCisgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlOworICAgIFJlZlB0cjxSYW5n
ZT4gbWFya2VyUmFuZ2UgPSBjYXJldFJhbmdlLT5jbG9uZVJhbmdlKGV4Y2VwdGlvbkNvZGUpOwor
ICAgIGlmICghZXhjZXB0aW9uQ29kZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1hcmtlclJhbmdl
LT5zZXRTdGFydChtYXJrZXJSYW5nZS0+c3RhcnRDb250YWluZXIoKSwgbWFya2Vyc1swXS0+c3Rh
cnRPZmZzZXQoKSk7CisgICAgbWFya2VyUmFuZ2UtPnNldEVuZChtYXJrZXJSYW5nZS0+ZW5kQ29u
dGFpbmVyKCksIG1hcmtlcnNbMF0tPmVuZE9mZnNldCgpKTsKKyAgICBpZiAoIWZyYW1lKCktPnNl
bGVjdGlvbigpLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCkpKQogICAg
ICAgICByZXR1cm47CiAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihtYXJr
ZXJSYW5nZS5nZXQoKSwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwotICAgIGZyYW1lKCktPmVkaXRv
cigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgZmFsc2UsIHRydWUpOworICAgIGZy
YW1lKCktPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgZmFsc2UsIGZh
bHNlKTsKIH0KIAogYm9vbCBXZWJGcmFtZUltcGw6Omhhc1NlbGVjdGlvbigpIGNvbnN0CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGM3ZTRmOTNh
YzViODE0MzU4NDFjMmU1YTcwNjQ3ZGQwNzUwYmMxYS4uOGE5MjQ2ZDMzMWRlNDJjNmVhNGJjOWRi
NWNjNDI3ZWY5OWI5NDBjYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTAxLTMwICBSb3VzbGFuIFNvbG9tYWto
aW4gIDxyb3VzbGFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgJ3VwcGVyIGNhc2UnIGFz
IGEgdHdvLXdvcmQgbWlzc3BlbGxpbmcgdG8gbW9jayBzcGVsbGNoZWNrZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjgxNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUgbGF5b3V0IHRlc3RzIHZl
cmlmeSBzcGVsbGNoZWNrIGJlaGF2aW9yIHdoZW4gbXVsdGlwbGUgd29yZHMgYXJlCisgICAgICAg
IG1hcmtlZCBhcyBhIHNpbmdsZSBtaXNzcGVsbGluZy4gVGhpcyBjaGFuZ2UgYWRkcyBhIHR3by13
b3JkIG1pc3NwZWxsaW5nCisgICAgICAgICd1cHBlciBjYXNlJyB0byB0aGUgbW9jayBzcGVsbGNo
ZWNrZXIgdXNlZCBieSBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5odG1sCisgICAg
ICAgICAgICAgICBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlw
bGUtd29yZHMuaHRtbAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suY3BwOgorICAgICAgICAoTW9ja1NwZWxsQ2hlY2s6OnNw
ZWxsQ2hlY2tXb3JkKTogTW9kaWZpZWQgdG8gaGFuZGxlIHNwYWNlcyBpbiBtaXNzcGVsbGluZ3Mu
CisgICAgICAgIChNb2NrU3BlbGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKTogTW9kaWZpZWQg
dG8gdXNlIGEgdmVjdG9yIGluc3RlYWQgb2YgYSBoYXNoIHRhYmxlLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmg6CisgICAg
ICAgIChNb2NrU3BlbGxDaGVjayk6IENoYW5nZWQgbWlzc3BlbGxpbmdzIGNvbnRhaW5lciBmcm9t
IGhhc2ggdGFibGUgdG8gdmVjdG9yLgorCiAyMDEzLTAxLTMwICBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF1bV0sxXSBTdXBwb3J0
IGJldHRlciB0ZXN0aW5nIG9mIFdlYiBOb3RpZmljYXRpb25zCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxD
aGVjay5jcHAKaW5kZXggNzU5M2M3MTkwNDIzNTBkMmMyMWVhYTE5ZGFiOWY1YTk5OTkwYTg4MS4u
NDQ4MDZiYmM1ZDgxYzVhNDQwOTBkMzdmYjg3NTY0YzEzY2ZlYWNjNSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2su
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01v
Y2tTcGVsbENoZWNrLmNwcApAQCAtNjksMjcgKzY5LDM0IEBAIGJvb2wgTW9ja1NwZWxsQ2hlY2s6
OnNwZWxsQ2hlY2tXb3JkKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50KiBtaXNzcGVsbGVkT2Zm
c2V0CiAgICAgICAgIC8vIChUaGlzIGlzIGEgc2ltcGxlIHZlcnNpb24gb2Ygb3VyIFNwZWxsQ2hl
Y2tXb3JkSXRlcmF0b3IgY2xhc3MuKQogICAgICAgICAvLyBJZiB0aGUgZ2l2ZW4gc3RyaW5nIGRv
ZXNuJ3QgaW5jbHVkZSBhbnkgQVNDSUkgY2hhcmFjdGVycywgd2UgY2FuIHRyZWF0IHRoZQogICAg
ICAgICAvLyBzdHJpbmcgYXMgdmFsaWQgb25lLgotICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5LCBU
aGlzIGltcGxlbWVudGF0aW9uIHNwbGl0cyBhIGNvbnRyYWN0aW9uLCBpLmUuICJpc24ndCIgaXMK
LSAgICAgICAgLy8gc3BsaXQgaW50byB0d28gcGllY2VzICJpc24iIGFuZCAidCIuIFRoaXMgaXMg
T0sgYmVjYXVzZSB3ZWJraXQgdGVzdHMKLSAgICAgICAgLy8gZG9uJ3QgaGF2ZSBtaXNzcGVsbGVk
IGNvbnRyYWN0aW9ucy4KICAgICAgICAgaW50IHdvcmRPZmZzZXQgPSBzdHJpbmdUZXh0LmZpbmQo
aXNBU0NJSUFscGhhKTsKICAgICAgICAgaWYgKHdvcmRPZmZzZXQgPT0gLTEpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaW50IHdvcmRFbmQgPSBzdHJpbmdUZXh0LmZpbmQoaXNO
b3RBU0NJSUFscGhhLCB3b3JkT2Zmc2V0KTsKLSAgICAgICAgaW50IHdvcmRMZW5ndGggPSB3b3Jk
RW5kID09IC0xID8gc3RhdGljX2Nhc3Q8aW50PihzdHJpbmdUZXh0Lmxlbmd0aCgpKSAtIHdvcmRP
ZmZzZXQgOiB3b3JkRW5kIC0gd29yZE9mZnNldDsKKyAgICAgICAgaW50IG1heFdvcmRMZW5ndGgg
PSBzdHJpbmdUZXh0Lmxlbmd0aCgpIC0gd29yZE9mZnNldDsKKyAgICAgICAgaW50IHdvcmRMZW5n
dGg7CisgICAgICAgIFdURjo6U3RyaW5nIHdvcmQ7CiAKICAgICAgICAgLy8gTG9vayB1cCBvdXIg
bWlzc3BlbGxlZC13b3JkIHRhYmxlIHRvIGNoZWNrIGlmIHRoZSBleHRyYWN0ZWQgd29yZCBpcyBh
CiAgICAgICAgIC8vIGtub3duIG1pc3NwZWxsZWQgd29yZCwgYW5kIHJldHVybiB0aGUgb2Zmc2V0
IGFuZCB0aGUgbGVuZ3RoIG9mIHRoZQogICAgICAgICAvLyBleHRyYWN0ZWQgd29yZCBpZiB0aGlz
IHdvcmQgaXMgYSBrbm93biBtaXNzcGVsbGVkIHdvcmQuCiAgICAgICAgIC8vIChTZWUgdGhlIGNv
bW1lbnQgaW4gTW9ja1NwZWxsQ2hlY2s6OmluaXRpYWxpemVJZk5lZWRlZCgpIHdoeSB3ZSB1c2Ug
YQogICAgICAgICAvLyBtaXNzcGVsbGVkLXdvcmQgdGFibGUuKQotICAgICAgICBXVEY6OlN0cmlu
ZyB3b3JkID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcod29yZE9mZnNldCwgd29yZExlbmd0aCk7Ci0g
ICAgICAgIGlmIChtX21pc3NwZWxsZWRXb3Jkcy5jb250YWlucyh3b3JkKSkgewotICAgICAgICAg
ICAgKm1pc3NwZWxsZWRPZmZzZXQgPSB3b3JkT2Zmc2V0ICsgc2tpcHBlZExlbmd0aDsKLSAgICAg
ICAgICAgICptaXNzcGVsbGVkTGVuZ3RoID0gd29yZExlbmd0aDsKLSAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbWlzc3BlbGxlZFdvcmRzLnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICB3b3JkTGVuZ3RoID0gbV9taXNzcGVsbGVkV29yZHMuYXQoaSku
bGVuZ3RoKCkgPiBtYXhXb3JkTGVuZ3RoID8gbWF4V29yZExlbmd0aCA6IG1fbWlzc3BlbGxlZFdv
cmRzLmF0KGkpLmxlbmd0aCgpOworICAgICAgICAgICAgd29yZCA9IHN0cmluZ1RleHQuc3Vic3Ry
aW5nKHdvcmRPZmZzZXQsIHdvcmRMZW5ndGgpOworICAgICAgICAgICAgaWYgKHdvcmQgPT0gbV9t
aXNzcGVsbGVkV29yZHMuYXQoaSkgJiYgKHN0cmluZ1RleHQubGVuZ3RoKCkgPT0gd29yZE9mZnNl
dCArIHdvcmRMZW5ndGggfHwgaXNOb3RBU0NJSUFscGhhKHN0cmluZ1RleHRbd29yZE9mZnNldCAr
IHdvcmRMZW5ndGhdKSkpIHsKKyAgICAgICAgICAgICAgICAqbWlzc3BlbGxlZE9mZnNldCA9IHdv
cmRPZmZzZXQgKyBza2lwcGVkTGVuZ3RoOworICAgICAgICAgICAgICAgICptaXNzcGVsbGVkTGVu
Z3RoID0gd29yZExlbmd0aDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCisgICAgICAgIGlmICgqbWlzc3BlbGxlZExlbmd0aCA+IDApCisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBpbnQgd29yZEVuZCA9IHN0cmluZ1RleHQuZmluZChpc05v
dEFTQ0lJQWxwaGEsIHdvcmRPZmZzZXQpOworICAgICAgICB3b3JkTGVuZ3RoID0gd29yZEVuZCA9
PSAtMSA/IHN0YXRpY19jYXN0PGludD4oc3RyaW5nVGV4dC5sZW5ndGgoKSkgLSB3b3JkT2Zmc2V0
IDogd29yZEVuZCAtIHdvcmRPZmZzZXQ7CisKICAgICAgICAgQVNTRVJUKDAgPCB3b3JkT2Zmc2V0
ICsgd29yZExlbmd0aCk7CiAgICAgICAgIHN0cmluZ1RleHQgPSBzdHJpbmdUZXh0LnN1YnN0cmlu
Zyh3b3JkT2Zmc2V0ICsgd29yZExlbmd0aCk7CiAgICAgICAgIHNraXBwZWRMZW5ndGggKz0gd29y
ZE9mZnNldCArIHdvcmRMZW5ndGg7CkBAIC0xNTEsMTIgKzE1OCwxMyBAQCBib29sIE1vY2tTcGVs
bENoZWNrOjppbml0aWFsaXplSWZOZWVkZWQoKQogICAgICAgICAiaWZtbXAiLAogICAgICAgICAi
cXdlcnR5dWlvcGFzZCIsCiAgICAgICAgICJxd2VydHl1aW9wYXNkZiIsCisgICAgICAgICJ1cHBl
ciBjYXNlIiwKICAgICAgICAgIndlbGxjb21lIgogICAgIH07CiAKICAgICBtX21pc3NwZWxsZWRX
b3Jkcy5jbGVhcigpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKG1pc3Nw
ZWxsZWRXb3Jkcyk7ICsraSkKLSAgICAgICAgbV9taXNzcGVsbGVkV29yZHMuYWRkKFdURjo6U3Ry
aW5nOjpmcm9tVVRGOChtaXNzcGVsbGVkV29yZHNbaV0pLCBmYWxzZSk7CisgICAgICAgIG1fbWlz
c3BlbGxlZFdvcmRzLmFwcGVuZChXVEY6OlN0cmluZzo6ZnJvbVVURjgobWlzc3BlbGxlZFdvcmRz
W2ldKSk7CiAKICAgICAvLyBNYXJrIGFzIGluaXRpYWxpemVkIHRvIHByZXZlbnQgdGhpcyBvYmpl
Y3QgZnJvbSBiZWluZyBpbml0aWFsaXplZCB0d2ljZQogICAgIC8vIG9yIG1vcmUuCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3Bl
bGxDaGVjay5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
TW9ja1NwZWxsQ2hlY2suaAppbmRleCA4YTk4ZDcwN2MwNGIxYmM4NWUyOGY1NzEwNGRiYzAzMTY0
MTQ2YjVkLi5iZmExODhiMjcwNWUyZWY4ZWFiN2E2MDI4NDRmNjMzNmEyODQ4OTRjIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3Bl
bGxDaGVjay5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL01vY2tTcGVsbENoZWNrLmgKQEAgLTMzLDggKzMzLDcgQEAKIAogI2luY2x1ZGUgIlBsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViVmVjdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAvLyBBIG1vY2sgaW1wbGVtZW50YXRpb24g
b2YgYSBzcGVsbC1jaGVja2VyIHVzZWQgZm9yIFdlYktpdCB0ZXN0cy4KQEAgLTcxLDcgKzcwLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGluaXRpYWxpemVJZk5lZWRlZCgpOwogCiAgICAgLy8gQSB0
YWJsZSB0aGF0IGNvbnNpc3RzIG9mIG1pc3NwZWxsZWQgd29yZHMuCi0gICAgSGFzaE1hcDxXVEY6
OlN0cmluZywgYm9vbD4gbV9taXNzcGVsbGVkV29yZHM7CisgICAgVmVjdG9yPFdURjo6U3RyaW5n
PiBtX21pc3NwZWxsZWRXb3JkczsKIAogICAgIC8vIEEgZmxhZyByZXByZXNlbnRpbmcgd2hldGhl
ciBvciBub3QgdGhpcyBvYmplY3QgaXMgaW5pdGlhbGl6ZWQuCiAgICAgYm9vbCBtX2luaXRpYWxp
emVkOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDI5ZWVjYTM3YjQ5ZTEzZGQ1OWQ1OTYyNWRhNzE4NWY5MTJkNjg0NDQuLjRk
OWMyMzk4YTdhZTc3ZGZjYjA3ODQ2NWM5ZDdhYzNiMjE1ZjU1NTEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
OCBAQAorMjAxMy0wMS0zMCAgUm91c2xhbiBTb2xvbWFraGluICA8cm91c2xhbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgVGVzdHMgZm9yIHNwZWxsY2hlY2sgYmVoYXZpb3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjgxNQorCisgICAgICAgIEFk
ZCB0ZXN0cyBmb3IgdGhlIGZvbGxvd2luZyBzcGVsbGNoZWNrIGJlaGF2aW9yOgorICAgICAgICAt
IFNwZWxsY2hlY2sgc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIG9uIGNvbnRleHQgY2xpY2su
IAorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyB0
aGUgbWlzc3BlbGxlZCB3b3JkIGV4YWN0bHkuIAorICAgICAgICAtIElmIHRoZSB3b3JkIGlzIG5v
dCBtaXNzcGVsbGVkLCB0aGVyZSBzaG91bGQgYmUgbm8gc3BlbGxpbmcgb3B0aW9ucyBpbiB0aGUg
Y29udGV4dCBtZW51LiAKKyAgICAgICAgLSBTcGVsbGNoZWNrIHNob3VsZCBzZWxlY3QgbXVsdGkt
d29yZCBtaXNzcGVsbGluZ3Mgb24gY29udGV4dCBjbGljay4gCisgICAgICAgIC0gU3BlbGxpbmcg
c2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbXVsdGktd29yZCBtaXNzcGVsbGlu
ZyBleGFjdGx5LiAKKyAgICAgICAgLSBTcGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNs
aWNrZWQgbWlzc3BlbGxpbmdzLiAKKyAgICAgICAgLSBTcGVsbGluZyBzaG91bGQgaWdub3JlIHdo
aXRlc3BhY2UuIAorICAgICAgICAtIFVuZGVyc2NvcmVzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdo
aXRlc3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4gCisgICAgICAgIC0gUHVuY3R1
YXRpb24gbWFya3Mgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hv
dWxkIGlnbm9yZSB0aGVtLiAKKyAgICAgICAgLSBTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQg
d2hlbiB1c2VyIHNlbGVjdHMgYSBwYXJ0IG9mIG1pc3NwZWxsaW5nLiAKKyAgICAgICAgLSBTcGVs
bGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVjdHMgbXVsdGlwbGUgd29yZHMg
dGhhdCBhcmUgbm90IGEgc2luZ2xlIG1pc3NwZWxsaW5nLiAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvcmVzb3VyY2Vz
L3V0aWwuanM6IEFkZGVkLgorICAgICAgICAoaW5pdFNwZWxsVGVzdCk6IEFkZGVkIGZ1bmN0aW9u
IGZvciBjb21tb24gYm9pbGVycGxhdGUgaW4gc3BlbGwgY2hlY2sgdGVzdHMuCisgICAgICAgICog
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xp
Y2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRl
cnNjb3Jlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNl
bGVjdGVkLW11bHRpcGxlLXdvcmRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdv
cmQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0
aXdvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jk
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3Vs
ZC1zZWxlY3Qtc2luZ2xlLXdvcmQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24uaHRtbDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1bmN0dWF0
aW9uLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0
aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13
aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMt
d2syL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1leGFjdGx5LXNlbGVjdGVkLXdvcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMtd2syL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVj
dGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
c3Vid29yZC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMtd2syL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxl
Y3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91Ymxl
LWNsaWNrZWQtd29yZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRl
cnNjb3Jlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2Vs
ZWN0LW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29y
ZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
d2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1z
ZWxlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMy0wMS0zMCAgVG9ueSBDaGFuZyAg
PHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjEzNjMyNCk6IEZsZXhi
b3ggc2hvdWxkIHJlbGF5b3V0IGZsZXggY2hpbGRyZW4gd2hlbiB3aWR0aCBjaGFuZ2VzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Jlc291cmNlcy91dGlsLmpzIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9yZXNvdXJjZXMvdXRpbC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZjgwMzM0MTg4NDNjZjIwYzY2NzFlN2M4NDkwN2I3MDcyZDQ5NTIwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9yZXNvdXJjZXMvdXRpbC5qcwpAQCAt
MCwwICsxLDM4IEBACitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9IChtc2cgKyAiXG4iKTsKK30KKworZnVuY3Rp
b24gdmVyaWZ5U3BlbGxUZXN0KG5yZXRyeSkKK3sKKyAgICBpZiAoIW5yZXRyeSkgeworICAgICAg
ICBsb2coIkZBSUwgU3BlbGxjaGVjayB0aW1lZCBvdXQiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0
KCkKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3Vu
dEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAg
ICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeVNwZWxsVGVzdChucmV0cnkg
LSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGVzdEZ1bmN0aW9uQ2Fs
bGJhY2soZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSk7CisgICAgZmluaXNoSlNUZXN0KCkKK30K
KworZnVuY3Rpb24gaW5pdFNwZWxsVGVzdCh0ZXN0RWxlbWVudElkLCB0ZXN0VGV4dCwgdGVzdEZ1
bmN0aW9uKQoreworICAgIGlmICghd2luZG93LmludGVybmFscyB8fCAhd2luZG93LnRlc3RSdW5u
ZXIgfHwgIXdpbmRvdy50ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKSB7CisgICAgICAgIGxvZygiRkFJTCBJbmNvbXBsZXRlIHRlc3QgZW52aXJvbm1lbnQiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0RnVuY3Rpb25DYWxsYmFjayA9IHRlc3RG
dW5jdGlvbjsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICB0ZXN0UnVubmVyLnNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0
U21hcnRJbnNlcnREZWxldGVFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdz
LnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgaW50ZXJuYWxzLnNldHRp
bmdzLnNldEVkaXRpbmdCZWhhdmlvcigid2luIik7CisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdEVsZW1lbnRJZCk7CisgICAgZGVzdGluYXRpb24uZm9j
dXMoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCB0ZXN0
VGV4dCk7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeVNwZWxsVGVz
dCgxMCk7IH0sIDApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmY1NGNkOTJjMzEyNjkzMDFlOWExM2Q0MmExZjk5MWJlMDk1OGVmMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
ZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorU3BlbGxp
bmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2VkIG1pc3NwZWxsaW5ncy4gVG8gdGVzdCBt
YW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nLCBkb3VibGUtY2xpY2sgb24gJ3dlbGxjb21l
JywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMg
d2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRv
U3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2Vs
bGNvbWUiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUi
CitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BB
U1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlz
ICJ3ZWxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgor
UEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUgIgorUEFT
UyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUgIgorUEFTUyBjb250ZXh0
TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUi
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxj
b21lIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQt
d2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGU1YjU2ZjMzOGMxMWM0
MjRjY2Y2NDdkMGRjNzRmYjBkNjQ4ZGM2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVy
c2NvcmVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACitTcGVsbGluZyBzaG91bGQgd29y
ayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxlZCB3b3JkcyB3aXRoIHVuZGVyc2NvcmVzLiBU
byB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZV8gaG9tZS4nLCBkb3VibGUtY2xpY2sgb24g
J3dlbGxjb21lXycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0
IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93cyBzcGVsbCBjaGVjayBzdWdnZXN0
aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJr
ZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkgaXMgIndlbGxjb21lXyIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlz
ICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndl
bGxjb21lXyIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxl
bmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2Vs
bGNvbWVfICIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29t
ZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lXyAi
CitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAx
XSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQord2VsbGNvbWVfIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tl
ZC13b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTU5MzVmZTAwMDVhNWEw
NjEzNTJjZjlhMjNlZjYzMTIzYjE2YTM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJz
Y29yZXMuaHRtbApAQCAtMCwwICsxLDgwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRp
b24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitkZXNjcmlw
dGlvbigiU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2VkIG1pc3NwZWxsZWQg
d29yZHMgd2l0aCB1bmRlcnNjb3Jlcy4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxs
eSwgdHlwZSAnd2VsbGNvbWVfIGhvbWUuJywgZG91YmxlLWNsaWNrIG9uICd3ZWxsY29tZV8nLCBh
bmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUg
dGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGwgY2hlY2sgc3Vn
Z2VzdGlvbnMuIik7CisKK2luaXRTcGVsbFRlc3QoImRlc3RpbmF0aW9uIiwgIndlbGxjb21lXyBo
b21lLiIsICBmdW5jdGlvbih0ZXh0Tm9kZSkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBp
bnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIs
ICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBEb3VibGUtY2xpY2sgdGhlIG1pc3Nw
ZWxsZWQgd29yZCB3aXRob3V0IHRoZSB0cmFpbGluZyB3aGl0ZXNwYWNlLgorICAgIHRlc3RSdW5u
ZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgdmFyIHgg
PSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNl
dExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRU
b3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAy
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21l
XyIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBvbiAid2VsbGNvbWVfIiB0byBzaG93IHRoZSBj
b250ZXh0IG1lbnUuCisgICAgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHkgPSBkZXN0aW5hdGlvbi5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24u
b2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAg
ICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAg
Ly8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5
RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdN
YXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVs
bGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5n
ZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZV8iKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50
cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
cmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIERvdWJsZS1jbGljayB0aGUg
bWlzc3BlbGxlZCB3b3JkIHdpdGggdGhlIHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgdGVzdFJ1
bm5lci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKHRydWUpOworICAgIHZhciB4
ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZz
ZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8g
MjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5t
b3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworCisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29t
ZV8gIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZV8gIiB0byBzaG93IHRo
ZSBjb250ZXh0IG1lbnUuCisgICAgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHkgPSBkZXN0aW5hdGlvbi5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRp
b24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsK
KyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7Cisg
ICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIu
a2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxp
bmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJz
cGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZV8gIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxl
bWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI0OTI3M2QyZTBhYmFiOWQ5YmNlYzkyN2EwOWMzZmM0NmNlMDI3Y2YKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2Vk
LXdvcmQuaHRtbApAQCAtMCwwICsxLDc5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRp
b24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitkZXNjcmlw
dGlvbigiU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2VkIG1pc3NwZWxsaW5n
cy4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9t
ZS4nLCBkb3VibGUtY2xpY2sgb24gJ3dlbGxjb21lJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhl
IHNlbGVjdGlvbi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUg
Y29udGV4dCBtZW51IHNob3dzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLiIpOworCitpbml0U3Bl
bGxUZXN0KCJkZXN0aW5hdGlvbiIsICJ3ZWxsY29tZSBob21lLiIsIGZ1bmN0aW9uKHRleHROb2Rl
KSB7CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5v
ZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
c3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsK
KworICAgIC8vIERvdWJsZS1jbGljayB0aGUgbWlzc3BlbGxlZCB3b3JkIHdpdGhvdXQgdHJhaWxp
bmcgd2hpdGVzcGFjZS4KKyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFj
ZUVuYWJsZWQoZmFsc2UpOworICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9m
ZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0
aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsg
ZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBv
biAid2VsbGNvbWUiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB4ID0gZGVzdGluYXRp
b24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7
CisgICAgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlv
bi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNl
bmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQg
bWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFC
KSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJh
bmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVs
ZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworCisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisK
KyAgICAvLyBEb3VibGUtY2xpY2sgdGhlIG1pc3NwZWxsZWQgd29yZCB3aXRoIHRyYWlsaW5nIHdo
aXRlc3BhY2UuCisgICAgdGVzdFJ1bm5lci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkKHRydWUpOworICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlv
bi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGlu
YXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VV
cCgpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkiLCAid2VsbGNvbWUgIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxs
Y29tZSAiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB4ID0gZGVzdGluYXRpb24ub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAg
eSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZz
ZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5j
b250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4K
KyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVs
bCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9y
Tm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndl
bGxjb21lICIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50
c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKK30pOworCis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdv
cmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
ZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDRhNzk0NzVlNTc2ZmJiODc5ODFiNjJlNjdiNTFhNDgyN2NjZjYyZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3Rl
ZC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorU3BlbGxpbmcg
c2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbXVsdGktd29yZCBtaXNzcGVsbGlu
ZyBleGFjdGx5LiBUbyB0ZXN0IG1hbnVhbGx5LCBlbmFibGUgJ0FzayBHb29nbGUgZm9yIFN1Z2dl
c3Rpb25zJyBpbiBDaHJvbWUsIHR5cGUgJ0l0IHNob3VsZCBiZSB1cHBlciBjYXNlLicsIHNlbGVj
dCAndXBwZXIgY2FzZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uVGhlIHRl
c3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsaW5nIHN1Z2dlc3Rp
b25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtl
clJhbmdlLnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkg
aXMgInVwcGVyIGNhc2UiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlz
ICJ1cHBlciBjYXNlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCitJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jk
cy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNl
bGVjdGVkLW11bHRpcGxlLXdvcmRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2QzMjU0ZmI0NjhiODc0NzIz
ZWU1YzZhNGM4YzE5NGJmNjBhOTI5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5o
dG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29u
dGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiU3Bl
bGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbXVsdGktd29yZCBtaXNz
cGVsbGluZyBleGFjdGx5LiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCBlbmFi
bGUgJ0FzayBHb29nbGUgZm9yIFN1Z2dlc3Rpb25zJyBpbiBDaHJvbWUsIHR5cGUgJ0l0IHNob3Vs
ZCBiZSB1cHBlciBjYXNlLicsIHNlbGVjdCAndXBwZXIgY2FzZScsIGFuZCBjb250ZXh0LWNsaWNr
IG9uIHRoZSBzZWxlY3Rpb24uIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hl
biB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsaW5nIHN1Z2dlc3Rpb25zLiIpOworCitpbml0
U3BlbGxUZXN0KCJkZXN0aW5hdGlvbiIsICJJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4iLCBmdW5j
dGlvbih0ZXh0Tm9kZSkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFy
a2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNl
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSIsICIiKTsKKyAgICAKKyAgICAvLyBTZWxlY3QgdGhlIG11bHRpLXdvcmQgbWlzc3Bl
bGxpbmcgd2l0aG91dCBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlIG9yIHB1bmN0dWF0aW9uLgorICAg
IHZhciB3b3JkUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHdvcmRSYW5nZS5z
ZXRTdGFydCh0ZXh0Tm9kZSwgMTMpOworICAgIHdvcmRSYW5nZS5zZXRFbmQodGV4dE5vZGUsIDIz
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHdvcmRSYW5nZSk7CisKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgInVwcGVyIGNh
c2UiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gInVwcGVyIGNhc2UiIHRvIHNob3cgdGhl
IGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDEwMDsKKyAgICB2YXIgeSA9IGRlc3Rp
bmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xp
Y2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVu
dFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAg
ICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0
Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGlu
Z01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAidXBwZXIgY2FzZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAidXBwZXIgY2Fz
ZSIpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0
ZWQtd29yZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRlMzZj
ZjA0MzkxMDQ5OTZmMGNhZjE1NmIzZTk5MzFhMTg4ZTM4MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3Jk
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitTcGVsbGluZyBzaG91bGQgd29yayB3aGVu
IHRoZSB1c2VyIHNlbGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBleGFjdGx5LiBUbyB0ZXN0IG1h
bnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIHNlbGVjdCAnd2VsbGNvbWUnLCBhbmQgY29u
dGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBj
b250ZXh0IG1lbnUgc2hvd3Mgc3BlbGxpbmcgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAi
d2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mg
c3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyBjb250ZXh0TWVu
dUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJob21lIgorUEFTUyB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiaG9tZSIKK1BBU1MgY29udGV4dE1lbnVF
bGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICI8c2VwYXJhdG9yPiIK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNv
bWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyMWQ5
NmQ4N2MwNGQ5NzMxYWJjYjBmYTM1N2NiMjc1NzhlZDg2Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29y
ZC5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIg
Y29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9u
KCJTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgdGhlIG1pc3NwZWxs
ZWQgd29yZCBleGFjdGx5LiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBl
ICd3ZWxsY29tZSBob21lLicsIHNlbGVjdCAnd2VsbGNvbWUnLCBhbmQgY29udGV4dC1jbGljayBv
biB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVu
IHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGxpbmcgc3VnZ2VzdGlvbnMuIik7CisKK2luaXRT
cGVsbFRlc3QoImRlc3RpbmF0aW9uIiwgIndlbGxjb21lIGhvbWUuIiwgZnVuY3Rpb24odGV4dE5v
ZGUpIHsKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9y
Tm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIp
OworCisgICAgLy8gU2VsZWN0IHRoZSBtaXNzcGVsbGVkIHdvcmQgd2l0aG91dCBzdXJyb3VuZGlu
ZyB3aGl0ZXNwYWNlIG9yIHB1bmN0dWF0aW9uLgorICAgIHZhciB3b3JkUmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHdvcmRSYW5nZS5zZXRTdGFydCh0ZXh0Tm9kZSwgMCk7Cisg
ICAgd29yZFJhbmdlLnNldEVuZCh0ZXh0Tm9kZSwgOCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZSh3b3JkUmFuZ2UpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworCisgICAgLy8gQ29udGV4dCBjbGlj
ayBvbiAid2VsbGNvbWUiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRl
c3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVm
dCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCAr
IGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50
cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0
aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFy
Q29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5h
bHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxs
Y29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNv
bnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxj
b21lIik7CisgICAgCisgICAgLy8gU2VsZWN0IGEgY29ycmVjdGx5IHNwZWxsZWQgd29yZCB3aXRo
b3V0IHN1cnJvdW5kaW5nIHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRpb24uCisgICAgd29yZFJhbmdl
LnNldFN0YXJ0KHRleHROb2RlLCA5KTsKKyAgICB3b3JkUmFuZ2Uuc2V0RW5kKHRleHROb2RlLCAx
Myk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZSh3b3JkUmFuZ2UpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiaG9tZSIpOwor
CisgICAgLy8gQ29udGV4dCBjbGljayBvbiAiaG9tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51
LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0
aW5hdGlvbi5vZmZzZXRMZWZ0ICsgODA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQ
YXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zm
c2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBj
b250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8g
RXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93
bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJob21lIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51
RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAiPHNlcGFyYXRvcj4iKTsKK30pOworCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYwZGQyYmUwOWY4ZmVhZWM2MzAzNjc3NTI3MjAzMWU4
NjQxMDFlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBA
QAorU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIG11bHRpcGxl
IHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmdsZSBtaXNzcGVsbGluZy4gVG8gdGVzdCBtYW51YWxs
eSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nLCBzZWxlY3QgJ3dlbGxjb21lIGhvbWUnLCBhbmQgY29u
dGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNlZWRzIHdoZW4gdGhlIGNv
bnRleHQgbWVudSBoYXMgbm8gc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBp
cyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIi
CitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSBob21l
IgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFT
UyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUgaG9tZSIKK1BB
U1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlz
ICI8c2VwYXJhdG9yPiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTAyN2I5N2JjNzE0YzFkOGQwYzYwZTA3Mjg5MjgwNDM0MTY0NmJlOQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3Jk
LXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0
aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rl
c2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVjdHMg
bXVsdGlwbGUgd29yZHMgdGhhdCBhcmUgbm90IGEgc2luZ2xlIG1pc3NwZWxsaW5nLiAiICsKKyAg
ICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIHNlbGVj
dCAnd2VsbGNvbWUgaG9tZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uICIg
KworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhh
cyBubyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKKworaW5pdFNwZWxsVGVzdCgiZGVzdGlu
YXRpb24iLCAid2VsbGNvbWUgaG9tZS4iLCBmdW5jdGlvbih0ZXh0Tm9kZSkgeworICAgIHNwZWxs
aW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAi
c3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2Vy
UmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBTZWxl
Y3QgdGhlIHRleHQgIndlbGxjb21lIGhvbWUiLgorICAgIHZhciBtdWx0aVdvcmRSYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgbXVsdGlXb3JkUmFuZ2Uuc2V0U3RhcnQodGV4dE5v
ZGUsIDApOworICAgIG11bHRpV29yZFJhbmdlLnNldEVuZCh0ZXh0Tm9kZSwgMTMpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UobXVsdGlXb3JkUmFuZ2UpOworCisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSBob21l
Iik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAg
ICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRp
b24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhl
aWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4
dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBr
ZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3Ry
aW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFu
Z2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAw
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJp
bmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUgaG9tZSIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxl
bmd0aCAtIDFdIiwgIjxzZXBhcmF0b3I+Iik7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUt
d29yZHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2YTQ1NDE2OGFkYzk3ZDFjN2Q2ZGU0MGEz
ZmU3YTdhZDBiMjk0Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTMgQEAKK1NwZWxsIGNoZWNrIHNob3VsZCBzZWxlY3QgbXVsdGktd29yZCBt
aXNzcGVsbGluZ3Mgb24gY29udGV4dCBjbGljay4gVG8gdGVzdCBtYW51YWxseSwgZW5hYmxlICdB
c2sgR29vZ2xlIGZvciBTdWdnZXN0aW9ucycgaW4gQ2hyb21lLCB0eXBlICdJdCBzaG91bGQgYmUg
dXBwZXIgY2FzZS4nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgd29yZCAndXBwZXInLiBUaGUg
dGVzdCBzdWNjZWVkcyB3aGVuICd1cHBlciBjYXNlJyB3YXMgc2VsZWN0ZWQgYWZ0ZXIgY29udGV4
dCBjbGljay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdN
YXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3Ry
aW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCitJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13
b3Jkcy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQt
c2VsZWN0LW11bHRpcGxlLXdvcmRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RmMDQyODM3YjE0NTYzMDQw
OWM4MDhmNWY4NDQ1MjM1NTY3OTQzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5odG1s
CkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVu
dEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiU3BlbGwg
Y2hlY2sgc2hvdWxkIHNlbGVjdCBtdWx0aS13b3JkIG1pc3NwZWxsaW5ncyBvbiBjb250ZXh0IGNs
aWNrLiAiKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIGVuYWJsZSAnQXNrIEdvb2ds
ZSBmb3IgU3VnZ2VzdGlvbnMnIGluIENocm9tZSwgdHlwZSAnSXQgc2hvdWxkIGJlIHVwcGVyIGNh
c2UuJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHdvcmQgJ3VwcGVyJy4gIiArCisgICAgICAg
ICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiAndXBwZXIgY2FzZScgd2FzIHNlbGVjdGVkIGFm
dGVyIGNvbnRleHQgY2xpY2suIik7CisKK2luaXRTcGVsbFRlc3QoImRlc3RpbmF0aW9uIiwgIkl0
IHNob3VsZCBiZSB1cHBlciBjYXNlLiIsIGZ1bmN0aW9uKHRleHROb2RlKSB7CisgICAgc3BlbGxp
bmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJz
cGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gQ29u
dGV4dCBjbGljayBvbiAidXBwZXIgY2FzZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAg
IHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlv
bi5vZmZzZXRMZWZ0ICsgMTAwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhl
aWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4
dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBr
ZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3Ry
aW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFu
Z2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAw
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJp
bmcoKSIsICJ1cHBlciBjYXNlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7Cit9KTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxl
Y3Qtc2luZ2xlLXdvcmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhOGQwODY2YTMzNzg4MGQx
OWRlYTRiMmNhMWM4ODNmY2JlYzIxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1NwZWxsIGNoZWNrIHNlbGVjdHMgdGhlIG1pc3NwZWxs
ZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29t
ZSBob21lLicgYW5kIGNvbnRleHQtY2xpY2sgb24gJ3dlbGxjb21lJy4gVGhlIHRlc3Qgc3VjY2Vl
ZHMgd2hlbiAnd2VsbGNvbWUnIGlzIHNlbGVjdGVkIGFmdGVyIHRoZSBjb250ZXh0IGNsaWNrLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAiIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndl
bGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNv
bWUiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGgg
LSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkg
aXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mg
Y29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICI8
c2VwYXJhdG9yPiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGI4Mjg0YTk0OWVhMGU5MGNiMDE0YWYwMjY3Zjc1NzRjNDg2NDRlOAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
c2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0
aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgor
ICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisK
KzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJTcGVsbCBjaGVjayBzZWxlY3RzIHRoZSBtaXNzcGVs
bGVkIHdvcmQgb24gY29udGV4dCBjbGljay4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51
YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nIGFuZCBjb250ZXh0LWNsaWNrIG9uICd3ZWxsY29t
ZScuICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gJ3dlbGxjb21lJyBp
cyBzZWxlY3RlZCBhZnRlciB0aGUgY29udGV4dCBjbGljay4iKTsKKworaW5pdFNwZWxsVGVzdCgi
ZGVzdGluYXRpb24iLCAid2VsbGNvbWUgaG9tZS4iLCBmdW5jdGlvbih0ZXh0Tm9kZSkgeworICAg
IHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHRO
b2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5n
TWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAv
LyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51Lgor
ICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5h
dGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0
SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250
ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNj
IGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJS
YW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIs
IDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0
cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0
aCAtIDFdIiwgIndlbGNvbWUiKTsKKworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVB
bGxSYW5nZXMoKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBvbiAiaG9tZSIg
dG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgODA7CisgICAgdmFy
IHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zm
c2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIu
Y29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUu
CisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51
bGwpOworCisgICAgLy8gQ29udGV4dCBjbGljayBzaG91bGQgbm90IHNlbGVjdCBjb3JyZWN0bHkg
c3BlbGxlZCB3b3JkcyB3aXRoICJ3aW4iIGVkaXRpbmcgYmVoYXZpb3IuCisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVF
bGVtZW50cy5sZW5ndGggLSAxXSIsICI8c2VwYXJhdG9yPiIpOworfSk7CisKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA5N2VlNzZlYTE0YTUwNWZkOTRmZjg2ODg0MGI5ZjczMmQ1YTVi
MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXN1YndvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitTcGVs
bGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVjdHMgYSBwYXJ0IG9mIG1pc3Nw
ZWxsaW5nLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicgc2VsZWN0ICds
bGNvJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjZWVk
cyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIG5vIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAi
bGxjbyIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIK
K1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImxsY28iCitQQVNTIGNv
bnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAiPHNl
cGFyYXRvcj4iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKK3dlbGxjb21lIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjli
Yzg1ZGFjMmE5ODMwYTNmMTY0ZTc0ZDdiMTUzZjA2MDE4ZWRmMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24u
aHRtbApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNv
bnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigi
U3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIGEgcGFydCBvZiBt
aXNzcGVsbGluZy4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2Vs
bGNvbWUgaG9tZS4nIHNlbGVjdCAnbGxjbycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxl
Y3Rpb24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2VlZHMgd2hlbiB0aGUgY29udGV4
dCBtZW51IGhhcyBubyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKKworaW5pdFNwZWxsVGVz
dCgiZGVzdGluYXRpb24iLCAid2VsbGNvbWUgaG9tZS4iLCBmdW5jdGlvbih0ZXh0Tm9kZSkgewor
ICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRl
eHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxs
aW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAg
ICAvLyBTZWxlY3QgdGhlIHRleHQgImxsY28iLgorICAgIHZhciBzdWJXb3JkUmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHN1YldvcmRSYW5nZS5zZXRTdGFydCh0ZXh0Tm9kZSwg
Mik7CisgICAgc3ViV29yZFJhbmdlLnNldEVuZCh0ZXh0Tm9kZSwgNik7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShzdWJXb3JkUmFuZ2UpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJsbGNvIik7CisKKyAgICAvLyBDb250
ZXh0IGNsaWNrIG9uICdsbGNvJyB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHgg
PSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNl
dExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRU
b3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAy
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxl
bWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhp
ZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9t
Q2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50
ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAi
d2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIiwgImxsY28iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNv
bnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICI8c2Vw
YXJhdG9yPiIpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVu
Y3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgyMjE4MGQwZmIwMWZkNTEyZjM5ZDI5NTkxOTE3MjM5ZjZkM2Y4ZGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgt
cHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitQdW5j
dHVhdGlvbiBtYXJrcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBz
aG91bGQgaWdub3JlIHRoZW0uIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIScsIHNl
bGVjdCAnd2VsbGNvbWUhJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhl
IHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBzcGVsbCBjaGVjayBzdWdn
ZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdN
YXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIndlbGxjb21lISIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygp
IGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMg
IndlbGxjb21lISIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRz
Lmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1z
ZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjU2NWI3MGZhZTFiNjQzYmUxOGJkY2Q4ODZlOGU0
MzgxMTJmOTdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNDkg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJj
b250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2
PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJQdW5jdHVhdGlvbiBtYXJrcyBz
aG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRo
ZW0uICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIScs
IHNlbGVjdCAnd2VsbGNvbWUhJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4g
IiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51
IGhhcyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKKworaW5pdFNwZWxsVGVzdCgiZGVzdGlu
YXRpb24iLCAid2VsbGNvbWUhIiwgZnVuY3Rpb24odGV4dE5vZGUpIHsKKyAgICBzcGVsbGluZ01h
cmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxs
aW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gU2VsZWN0IHRo
ZSB0ZXh0ICJ3ZWxsY29tZSEiIHdpdGggdGhlIGV4Y2xhbWF0aW9uIG1hcmsuCisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0Tm9k
ZSwgMCk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHROb2RlLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUhIik7CisKKyAgICAvLyBDb250ZXh0IGNs
aWNrIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9m
ZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAg
IHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9u
Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2Vu
ZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBt
ZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIp
LCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFu
Z2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCki
LCAid2VsbGNvbWUhIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVs
ZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworfSk7
CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rp
b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13
aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTE0NDYx
ZWYxYjRhYWNhZDE1OTMzYTZiN2UyNzhhNWRmZWYzYWZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0
aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitVbmRlcnNjb3JlcyBzaG91bGQgYmUg
dHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uIFRvIHRl
c3QgbWFudWFsbHksIHR5cGUgJ0hpLCBfd2VsbGNvbWVfIGhvbWUuJywgc2VsZWN0ICdfd2VsbGNv
bWVfJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2Vl
ZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50
b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIl93
ZWxsY29tZV8iCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNv
bWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJfd2VsbGNvbWVf
IgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0g
MV0gaXMgIndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKK0hpLCBfd2VsbGNvbWVfIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNl
bGVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMDM2YmI4MmI5YWYzMzQyY2M2Y2Y1NTYxOTliMzJk
NzA0OGRjZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbApAQCAtMCwwICsxLDQ5IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29u
dGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4K
KzwvZGl2PgorCis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVW5kZXJzY29yZXMgc2hvdWxkIGJl
IHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB0aGVtLiAiICsK
KyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICdIaSwgX3dlbGxjb21lXyBob21l
LicsIHNlbGVjdCAnX3dlbGxjb21lXycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rp
b24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQg
bWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CisKK2luaXRTcGVsbFRlc3QoImRl
c3RpbmF0aW9uIiwgIkhpLCBfd2VsbGNvbWVfIGhvbWUuIiwgZnVuY3Rpb24odGV4dE5vZGUpIHsK
KyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0
ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVs
bGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisg
ICAgLy8gU2VsZWN0IHRoZSB0ZXh0ICJfd2VsbGNvbWVfIi4KKyAgICB2YXIgcmFuZ2VXaXRoVW5k
ZXJzY29yZXMgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlV2l0aFVuZGVyc2Nv
cmVzLnNldFN0YXJ0KHRleHROb2RlLCA0KTsKKyAgICByYW5nZVdpdGhVbmRlcnNjb3Jlcy5zZXRF
bmQodGV4dE5vZGUsIDE0KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFu
Z2VzKCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlV2l0aFVuZGVy
c2NvcmVzKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkiLCAiX3dlbGxjb21lXyIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBv
biAiX3dlbGxjb21lXyIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVz
dGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0
ICsgODA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsg
ZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRz
ID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRo
ZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJD
b2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFs
cy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxj
b21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSIsICJfd2VsbGNvbWVfIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJj
b250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2Vs
Y29tZSIpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVz
cGFjZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NDM1NTE3M2E3Mzg3OWZlNDViNDlhMjk4YTNjZjBjNWNmNGQ1NjcyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRl
c3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitTcGVsbGluZyBz
aG91bGQgaWdub3JlIHdoaXRlc3BhY2UuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ2hlbGxvLCB3
ZWxsY29tZSBob21lLicsIHNlbGVjdCAnIHdlbGxjb21lICcsIGFuZCBjb250ZXh0LWNsaWNrIG9u
IHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBo
YXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIgd2VsbGNvbWUgIgorUEFT
UyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIHdlbGxjb21lICIKK1BBU1MgY29udGV4
dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21l
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitoZWxs
bywgd2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWU5MTE5MGI3OWU5ZjQwODkzNWVlNGFjN2ExZmYzYTcyMmFmZjgwZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0
aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8
ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxz
Y3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgaWdub3JlIHdoaXRlc3BhY2Uu
ICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ2hlbGxvLCB3ZWxsY29t
ZSBob21lLicsIHNlbGVjdCAnIHdlbGxjb21lICcsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBz
ZWxlY3Rpb24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNv
bnRleHQgbWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CisKK2luaXRTcGVsbFRl
c3QoImRlc3RpbmF0aW9uIiwgImhlbGxvLCB3ZWxsY29tZSBob21lLiIsIGZ1bmN0aW9uKHRleHRO
b2RlKSB7CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZv
ck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisKKyAgICAv
LyBTZWxlY3QgdGhlIHRleHQgIiB3ZWxsY29tZSAiIHdpdGggc3Vycm91bmRpbmcgd2hpdGVzcGFj
ZS4KKyAgICB2YXIgcmFuZ2VXaXRoV2hpdGVzcGFjZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2VXaXRoV2hpdGVzcGFjZS5zZXRTdGFydCh0ZXh0Tm9kZSwgNik7CisgICAgcmFu
Z2VXaXRoV2hpdGVzcGFjZS5zZXRFbmQodGV4dE5vZGUsIDE2KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlV2l0aFdoaXRlc3BhY2UpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIgd2VsbGNvbWUgIik7CisKKyAg
ICAvLyBDb250ZXh0IGNsaWNrIG9uICIgd2VsbGNvbWUgIiB0byBzaG93IHRoZSBjb250ZXh0IG1l
bnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRl
c3RpbmF0aW9uLm9mZnNldExlZnQgKyA4MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNl
dFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5v
ZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAg
IGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAv
LyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlE
b3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01h
cmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxs
aW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiB3ZWxsY29tZSAiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50
cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGM1MTRlMzBj
MTNkNTU5NWU0ZWNjYWEwZmJhMjEyZWRiNjY3M2I1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1j
bGlja2VkLXdvcmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1NwZWxsaW5nIHNob3Vs
ZCB3b3JrIGZvciBkb3VibGUtY2xpY2tlZCBtaXNzcGVsbGluZ3MuIFRvIHRlc3QgbWFudWFsbHks
IHR5cGUgJ3dlbGxjb21lIGhvbWUuJywgZG91YmxlLWNsaWNrIG9uICd3ZWxsY29tZScsIGFuZCBj
b250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhl
IGNvbnRleHQgbWVudSBzaG93cyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK0ZBSUwgSW5jb21wbGV0ZSB0ZXN0IGVudmlyb25tZW50CitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91
YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNWE0ZGNjMDJhODc2ZGVkZWM5NjVmYzE0N2ViMjNkZDNmMTdmNTBhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2VkIG1p
c3NwZWxsZWQgd29yZHMgd2l0aCB1bmRlcnNjb3Jlcy4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAn
d2VsbGNvbWVfIGhvbWUuJywgZG91YmxlLWNsaWNrIG9uICd3ZWxsY29tZV8nLCBhbmQgY29udGV4
dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250
ZXh0IG1lbnUgc2hvd3Mgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitGQUlMIEluY29tcGxldGUgdGVzdCBlbnZpcm9ubWVudAorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1l
eGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVj
dGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NGE2MzZiNjRjZGZj
ZDkzMDVkMWUwYjRiMzU5Y2YxZTkxODhlYzU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2Vs
ZWN0ZWQtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1NwZWxs
aW5nIHNob3VsZCB3b3JrIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIG11bHRpLXdvcmQgbWlzc3Bl
bGxpbmcgZXhhY3RseS4gVG8gdGVzdCBtYW51YWxseSwgZW5hYmxlICdBc2sgR29vZ2xlIGZvciBT
dWdnZXN0aW9ucycgaW4gQ2hyb21lLCB0eXBlICdJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4nLCBz
ZWxlY3QgJ3VwcGVyIGNhc2UnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLlRo
ZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93cyBzcGVsbGluZyBzdWdn
ZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0ZBSUwgSW5jb21wbGV0
ZSB0ZXN0IGVudmlyb25tZW50CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctZXhhY3RseS1zZWxlY3RlZC13b3JkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDE4MzQy
Mzg4Y2U1MWEwOTNhM2U3ZjBlNWIxY2YwYTJjNzg0NzA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0
bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorU3BlbGxpbmcg
c2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIHRoZSBtaXNzcGVsbGVkIHdvcmQgZXhh
Y3RseS4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nLCBzZWxlY3QgJ3dl
bGxjb21lJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3Vj
Y2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsaW5nIHN1Z2dlc3Rpb25zLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworRkFJTCBJbmNvbXBsZXRlIHRlc3QgZW52
aXJvbm1lbnQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3Jk
LXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzZkZmM0MzAyYWQ0NzVmN2NhMjQ4
MjQzMjc0ZjFiM2Y2ZWY4YTNjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9u
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJs
ZWQgd2hlbiB1c2VyIHNlbGVjdHMgbXVsdGlwbGUgd29yZHMgdGhhdCBhcmUgbm90IGEgc2luZ2xl
IG1pc3NwZWxsaW5nLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIHNl
bGVjdCAnd2VsbGNvbWUgaG9tZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24u
IFRoZSB0ZXN0IHN1Y2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBubyBzcGVsbCBjaGVj
ayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0ZBSUwgSW5j
b21wbGV0ZSB0ZXN0IGVudmlyb25tZW50CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29y
ZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI3NzA1ODFlNjljYzAyMWE2NWEyYTgzMGI1NzA0YjY0YzFjZmRiZWUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorU3BlbGwgY2hlY2sgc2hvdWxkIHNlbGVjdCBtdWx0aS13b3JkIG1p
c3NwZWxsaW5ncyBvbiBjb250ZXh0IGNsaWNrLiBUbyB0ZXN0IG1hbnVhbGx5LCBlbmFibGUgJ0Fz
ayBHb29nbGUgZm9yIFN1Z2dlc3Rpb25zJyBpbiBDaHJvbWUsIHR5cGUgJ0l0IHNob3VsZCBiZSB1
cHBlciBjYXNlLicsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSB3b3JkICd1cHBlcicuIFRoZSB0
ZXN0IHN1Y2NlZWRzIHdoZW4gJ3VwcGVyIGNhc2UnIHdhcyBzZWxlY3RlZCBhZnRlciBjb250ZXh0
IGNsaWNrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworRkFJTCBJbmNvbXBsZXRl
IHRlc3QgZW52aXJvbm1lbnQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODk4ZjY0YTU4YjcyN2EzZTRhODU4MWI1ZmRkZTBhZjRlZmJlNzY5OQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBA
CitTcGVsbCBjaGVjayBzZWxlY3RzIHRoZSBtaXNzcGVsbGVkIHdvcmQgb24gY29udGV4dCBjbGlj
ay4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nIGFuZCBjb250ZXh0LWNs
aWNrIG9uICd3ZWxsY29tZScuIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gJ3dlbGxjb21lJyBpcyBz
ZWxlY3RlZCBhZnRlciB0aGUgY29udGV4dCBjbGljay4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK0ZBSUwgSW5jb21wbGV0ZSB0ZXN0IGVudmlyb25tZW50CitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQt
c2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzZlMDFlYzIyMTY4YjY2YjkwY2JiYTRjZmJkMDk2YmU3ODhiYzNmMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBA
QAorU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIGEgcGFydCBv
ZiBtaXNzcGVsbGluZy4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nIHNl
bGVjdCAnbGxjbycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0
IHN1Y2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBubyBzcGVsbCBjaGVjayBzdWdnZXN0
aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0ZBSUwgSW5jb21wbGV0ZSB0
ZXN0IGVudmlyb25tZW50CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjgxMmU0OTBjZTNjMTZhMjY5Y2JmY2Y1OTMxNDMyYjA2Mzg4ZTczMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBA
QAorUHVuY3R1YXRpb24gbWFya3Mgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3Bl
bGxpbmcgc2hvdWxkIGlnbm9yZSB0aGVtLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29t
ZSEnLCBzZWxlY3QgJ3dlbGxjb21lIScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rp
b24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgc3BlbGwgY2hl
Y2sgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitGQUlMIElu
Y29tcGxldGUgdGVzdCBlbnZpcm9ubWVudAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iYzU1YmUzOTMxY2YxNDVjMzlhMGIzYzY4NDFmYjk1M2QwYmNlM2IzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTAgQEAKK1VuZGVyc2NvcmVzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNw
ZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnSGksIF93
ZWxsY29tZV8gaG9tZS4nLCBzZWxlY3QgJ193ZWxsY29tZV8nLCBhbmQgY29udGV4dC1jbGljayBv
biB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUg
aGFzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworRkFJTCBJbmNvbXBsZXRlIHRlc3QgZW52aXJvbm1lbnQKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNw
YWNlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODI1ZGU1Mjc4NDhjMTYwZDBlMDg5MTZkYzUzYzE3ZWIyZDE5
OWQyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEwIEBACitTcGVsbGluZyBzaG91bGQgaWdub3JlIHdoaXRlc3BhY2Uu
IFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ2hlbGxvLCB3ZWxsY29tZSBob21lLicsIHNlbGVjdCAn
IHdlbGxjb21lICcsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0
IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlv
bnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitGQUlMIEluY29tcGxldGUgdGVz
dCBlbnZpcm9ubWVudAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNr
ZWQtd29yZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY5YWU5MDI4ZjVkOTkzYTcwNmQwN2Yw
N2U2YTExNTE4ODliZDYyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1NwZWxsaW5nIHNob3VsZCB3b3JrIGZvciBkb3VibGUt
Y2xpY2tlZCBtaXNzcGVsbGluZ3MuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIGhv
bWUuJywgZG91YmxlLWNsaWNrIG9uICd3ZWxsY29tZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRo
ZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93
cyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BB
U1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyBzcGVsbGluZ01hcmtl
clJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitGQUlMIGNvbnRleHRNZW51RWxlbWVudHNbY29u
dGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBzaG91bGQgYmUgd2VsY29tZS4gV2FzIDxzZXBh
cmF0b3I+LgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFT
UyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUgIgorUEFTUyBz
cGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUgIgorRkFJTCBjb250ZXh0TWVu
dUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gc2hvdWxkIGJlIHdlbGNv
bWUuIFdhcyA8c2VwYXJhdG9yPi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQt
d2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJz
Y29yZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiMzY5MWViYzlhZDE0Zjc0MzNlNDdhMDll
YTg2MWNmNjZmNDAwYzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5k
ZXJzY29yZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1NwZWxsaW5nIHNob3VsZCB3
b3JrIGZvciBkb3VibGUtY2xpY2tlZCBtaXNzcGVsbGVkIHdvcmRzIHdpdGggdW5kZXJzY29yZXMu
IFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lXyBob21lLicsIGRvdWJsZS1jbGljayBv
biAnd2VsbGNvbWVfJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRl
c3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsIGNoZWNrIHN1Z2dl
c3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworRkFJTCBzcGVsbGluZ01h
cmtlclJhbmdlLnRvU3RyaW5nKCkgc2hvdWxkIGJlIHdlbGxjb21lLiBXYXMgd2VsbGNvbWVfLgor
UEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWVfIgorRkFJTCBzcGVsbGluZ01h
cmtlclJhbmdlLnRvU3RyaW5nKCkgc2hvdWxkIGJlIHdlbGxjb21lLiBXYXMgd2VsbGNvbWVfLgor
UEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWVfIgorRkFJ
TCBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gc2hv
dWxkIGJlIHdlbGNvbWUuIFdhcyA8c2VwYXJhdG9yPi4KK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkgaXMgIndlbGxjb21lXyAiCitGQUlMIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBz
aG91bGQgYmUgd2VsbGNvbWUuIFdhcyB3ZWxsY29tZV8uCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZV8gIgorRkFJTCBjb250ZXh0TWVudUVsZW1lbnRz
W2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gc2hvdWxkIGJlIHdlbGNvbWUuIFdhcyA8
c2VwYXJhdG9yPi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQord2VsbGNvbWVfIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdv
cmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI3OWFhY2Y3MmU2MmJiZjNmMWI3NmYwM2VjM2Y1MGY4ZGI5YmZiMmMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEwIEBACitTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVj
dHMgYSBtdWx0aS13b3JkIG1pc3NwZWxsaW5nIGV4YWN0bHkuIFRvIHRlc3QgbWFudWFsbHksIGVu
YWJsZSAnQXNrIEdvb2dsZSBmb3IgU3VnZ2VzdGlvbnMnIGluIENocm9tZSwgdHlwZSAnSXQgc2hv
dWxkIGJlIHVwcGVyIGNhc2UuJywgc2VsZWN0ICd1cHBlciBjYXNlJywgYW5kIGNvbnRleHQtY2xp
Y2sgb24gdGhlIHNlbGVjdGlvbi5UaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1l
bnUgc2hvd3Mgc3BlbGxpbmcgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitGQUlMIFNwZWxsY2hlY2sgdGltZWQgb3V0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0l0IHNob3VsZCBiZSB1cHBlciBjYXNlLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctZXhhY3RseS1zZWxlY3RlZC13b3JkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGVkYjQ2ZjVjYzZiZDg5YzAyYWY1MGMwMjhiNjQwYzdl
ZjlkYjIwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxOCBAQAorU3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxl
Y3RzIHRoZSBtaXNzcGVsbGVkIHdvcmQgZXhhY3RseS4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAn
d2VsbGNvbWUgaG9tZS4nLCBzZWxlY3QgJ3dlbGxjb21lJywgYW5kIGNvbnRleHQtY2xpY2sgb24g
dGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNo
b3dzIHNwZWxsaW5nIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFT
UyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHNwZWxsaW5nTWFya2Vy
UmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK0ZBSUwgY29udGV4dE1lbnVFbGVtZW50c1tjb250
ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIHNob3VsZCBiZSB3ZWxjb21lLiBXYXMgPHNlcGFy
YXRvcj4uCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJob21lIgor
UEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiaG9tZSIKK1BBU1MgY29u
dGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICI8c2Vw
YXJhdG9yPiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjZjY2IzZjYwOWU4MmMyMTMyNDIxMDlhZjE0MzAzZjMzNjU5MzI0ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAg
QEAKK1NwZWxsIGNoZWNrIHNob3VsZCBzZWxlY3QgbXVsdGktd29yZCBtaXNzcGVsbGluZ3Mgb24g
Y29udGV4dCBjbGljay4gVG8gdGVzdCBtYW51YWxseSwgZW5hYmxlICdBc2sgR29vZ2xlIGZvciBT
dWdnZXN0aW9ucycgaW4gQ2hyb21lLCB0eXBlICdJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4nLCBh
bmQgY29udGV4dC1jbGljayBvbiB0aGUgd29yZCAndXBwZXInLiBUaGUgdGVzdCBzdWNjZWVkcyB3
aGVuICd1cHBlciBjYXNlJyB3YXMgc2VsZWN0ZWQgYWZ0ZXIgY29udGV4dCBjbGljay4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0ZBSUwgU3BlbGxjaGVjayB0aW1lZCBvdXQKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSXQgc2hvdWxk
IGJlIHVwcGVyIGNhc2UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyZmUz
NmUxYTBjN2NiMTQ3ZmQwOWM0MzNiMmVmNzM0NGJjNjk0MGMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQt
c2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitTcGVsbCBj
aGVjayBzZWxlY3RzIHRoZSBtaXNzcGVsbGVkIHdvcmQgb24gY29udGV4dCBjbGljay4gVG8gdGVz
dCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nIGFuZCBjb250ZXh0LWNsaWNrIG9uICd3
ZWxsY29tZScuIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gJ3dlbGxjb21lJyBpcyBzZWxlY3RlZCBh
ZnRlciB0aGUgY29udGV4dCBjbGljay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mg
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgc3BlbGxpbmdNYXJr
ZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK0ZBSUwgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkgc2hvdWxkIGJlIHdlbGxjb21lLiBXYXMgLgorRkFJTCBjb250ZXh0TWVu
dUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gc2hvdWxkIGJlIHdlbGNv
bWUuIFdhcyA8c2VwYXJhdG9yPi4KK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BB
U1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlz
ICI8c2VwYXJhdG9yPiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMjQwNDIwNDA2M2JjYWU0ZTFjMzBmNmMyNzJjOTFmYmRlNDlmOWNmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUg
QEAKK1B1bmN0dWF0aW9uIG1hcmtzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNw
ZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNv
bWUhJywgc2VsZWN0ICd3ZWxsY29tZSEnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0
aW9uLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIHNwZWxsIGNo
ZWNrIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBz
cGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUhIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRv
U3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAid2VsbGNvbWUhIgorRkFJTCBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51
RWxlbWVudHMubGVuZ3RoIC0gMV0gc2hvdWxkIGJlIHdlbGNvbWUuIFdhcyA8c2VwYXJhdG9yPi4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNv
bWUhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJz
Y29yZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwZjhkZGVjZGY1YzE0YTQw
ZDM4ZTUzN2U1MmY1NTE5YzA3NjZjNTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2Vs
ZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitVbmRlcnNjb3JlcyBzaG91bGQg
YmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uIFRv
IHRlc3QgbWFudWFsbHksIHR5cGUgJ0hpLCBfd2VsbGNvbWVfIGhvbWUuJywgc2VsZWN0ICdfd2Vs
bGNvbWVfJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3Vj
Y2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0ZBSUwgc3BlbGxpbmdNYXJrZXJSYW5n
ZS50b1N0cmluZygpIHNob3VsZCBiZSB3ZWxsY29tZS4gV2FzIF93ZWxsY29tZV8uCitQQVNTIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIGlzICJfd2VsbGNvbWVfIgorRkFJTCBzcGVsbGluZ01hcmtlclJh
bmdlLnRvU3RyaW5nKCkgc2hvdWxkIGJlIHdlbGxjb21lLiBXYXMgX3dlbGxjb21lXy4KK1BBU1Mg
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIl93ZWxsY29tZV8iCitGQUlMIGNv
bnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBzaG91bGQg
YmUgd2VsY29tZS4gV2FzIDxzZXBhcmF0b3I+LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCitIaSwgX3dlbGxjb21lXyBob21lLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13
aGl0ZXNwYWNlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzE0ZmIxN2JhZTU2ODFiZTk5MjAxYzY1MTAyMjllMzM4
ZGIzZTIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorU3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB3aGl0ZXNwYWNlLiBU
byB0ZXN0IG1hbnVhbGx5LCB0eXBlICdoZWxsbywgd2VsbGNvbWUgaG9tZS4nLCBzZWxlY3QgJyB3
ZWxsY29tZSAnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBz
dWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25z
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJh
bmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSBpcyAiIHdlbGxjb21lICIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0
cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkgaXMgIiB3ZWxsY29tZSAiCitGQUlMIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVF
bGVtZW50cy5sZW5ndGggLSAxXSBzaG91bGQgYmUgd2VsY29tZS4gV2FzIDxzZXBhcmF0b3I+Lgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitoZWxsbywg
d2VsbGNvbWUgaG9tZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185547</attachid>
            <date>2013-01-30 13:18:58 -0800</date>
            <delta_ts>2013-01-30 15:27:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106815-20130130131543.patch</filename>
            <type>text/plain</type>
            <size>79124</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDkzNTAyYWNjOGNlMzNmZGZlMWYwNjk2OTNmZmVlMmMwMjIyYzkzMWQuLmIxOTYwNDJiMjM4ZDJk
Zjk0YjdiOWIwM2M0MDdiMDM0OWUwZTZkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTMtMDEtMzAgIFJvdXNsYW4gU29sb21ha2hpbiAgPHJvdXNsYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEZpeGVzIGZvciBzcGVsbGNoZWNrIGJlaGF2aW9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4MTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggc3BlbGxj
aGVjayB0byBiZWhhdmUgYXMgZm9sbG93czoKKyAgICAgICAgLSBTcGVsbGNoZWNrIHNlbGVjdHMg
dGhlIG1pc3NwZWxsZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLiAKKyAgICAgICAgLSBTcGVsbGlu
ZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBl
eGFjdGx5LiAKKyAgICAgICAgLSBJZiB0aGUgd29yZCBpcyBub3QgbWlzc3BlbGxlZCwgdGhlcmUg
c2hvdWxkIGJlIG5vIHNwZWxsaW5nIG9wdGlvbnMgaW4gdGhlIGNvbnRleHQgbWVudS4gCisgICAg
ICAgIC0gU3BlbGxjaGVjayBzaG91bGQgc2VsZWN0IG11bHRpLXdvcmQgbWlzc3BlbGxpbmdzIG9u
IGNvbnRleHQgY2xpY2suIAorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhl
IHVzZXIgc2VsZWN0cyBhIG11bHRpLXdvcmQgbWlzc3BlbGxpbmcgZXhhY3RseS4gCisgICAgICAg
IC0gU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2VkIG1pc3NwZWxsaW5ncy4g
CisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB3aGl0ZXNwYWNlLiAKKyAgICAgICAg
LSBVbmRlcnNjb3JlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBz
aG91bGQgaWdub3JlIHRoZW0uIAorICAgICAgICAtIFB1bmN0dWF0aW9uIG1hcmtzIHNob3VsZCBi
ZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4gCisg
ICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIGEg
cGFydCBvZiBtaXNzcGVsbGluZy4gCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2Fi
bGVkIHdoZW4gdXNlciBzZWxlY3RzIG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmds
ZSBtaXNzcGVsbGluZy4gCisKKyAgICAgICAgICBUZXN0czogZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbAorICAgICAgICAg
ICAgICAgICBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRt
bAorICAgICAgICAgICAgICAgICBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2Vs
ZWN0ZWQtbXVsdGlwbGUtd29yZHMuaHRtbAorICAgICAgICAgICAgICAgICBlZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC5odG1sCisgICAgICAgICAgICAgICAg
IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5odG1sCisgICAg
ICAgICAgICAgICAgIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0
aXBsZS13b3Jkcy5odG1sCisgICAgICAgICAgICAgICAgIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC5odG1sCisgICAgICAgICAgICAgICAgIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24uaHRtbAorICAgICAgICAgICAg
ICAgICBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9u
Lmh0bWwKKyAgICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVu
ZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWwKKyAgICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwKKworICAgICAgICAqIHNy
Yy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6SXNXaGl0ZVNwYWNlT3JQdW5jdHVhdGlvbik6IEFkZGVkIHV0aWxpdHkgZnVuY3Rp
b24gdG8gZGV0ZWN0IHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRpb24uCisgICAgICAgIChXZWJLaXQ6
OkNvbnRleHRNZW51Q2xpZW50SW1wbDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMpOiBN
b2RpZmllZCB0byBmaXggc3BlbGxjaGVjayBiZWhhdmlvci4KKyAgICAgICAgKiBzcmMvV2ViRnJh
bWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpyZXBsYWNlTWlzc3Bl
bGxlZFJhbmdlKTogRml4ZWQgdG8gcmVwbGFjZSB0aGUgY29ycmVjdCByYW5nZS4gQ2hyb21pdW0g
d2lsbCB1c2UgdGhpcyBtZXRob2QgaW5zdGVhZCBvZiByZXBsYWNlUmFuZ2Ugd2hlbiBjb3JyZWN0
aW5nIG1pc3NwZWxsaW5ncy4KKwogMjAxMy0wMS0zMCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCByZWNvcmRSZW5kZXJpbmdTdGF0
cyB0byBXZWJTZXR0aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q29udGV4dE1lbnVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nv
bnRleHRNZW51Q2xpZW50SW1wbC5jcHAKaW5kZXggMzM5NTZiY2E3ODRlMDE5NDU5YjJmOTNkNGI0
NjAxYzU2ZWY1MDMyNy4uMmQ1Y2Y0NDBkZjVhYjUyYzM5OTYyNWE2ZGVlMzY1YTkwNjM3MTc1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVu
dEltcGwuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgi
CisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1l
bnQuaCIKQEAgLTc4LDYgKzc5LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorLy8gUmV0dXJucyB0cnVlIGZvciB3aGl0ZXNwYWNlIGFuZCBwdW5j
dHVhdGlvbiBjaGFyYWN0ZXJzLiBSZXR1cm5zIGZhbHNlIGZvciBldmVyeSBvdGhlciB0eXBlIG9m
IGNoYXJhY3Rlci4KK3N0YXRpYyBib29sIElzV2hpdGVTcGFjZU9yUHVuY3R1YXRpb24oVUNoYXIg
YykKK3sKKyAgICByZXR1cm4gV1RGOjpVbmljb2RlOjppc1NlcGFyYXRvclNwYWNlKGMpIHx8IFdU
Rjo6VW5pY29kZTo6aXNQdW5jdChjKTsKK30KKwogLy8gRmlndXJlIG91dCB0aGUgVVJMIG9mIGEg
cGFnZSBvciBzdWJmcmFtZS4gUmV0dXJucyB8cGFnZV90eXBlfCBhcyB0aGUgdHlwZSwKIC8vIHdo
aWNoIGluZGljYXRlcyBwYWdlIG9yIHN1YmZyYW1lLCBvciBDb250ZXh0Tm9kZVR5cGU6Ok5PTkUg
aWYgdGhlIFVSTCBjb3VsZCBub3QKIC8vIGJlIGRldGVybWluZWQgZm9yIHNvbWUgcmVhc29uLgpA
QCAtMTAyLDggKzEwOSw4IEBAIHN0YXRpYyBib29sIGlzQVNpbmdsZVdvcmQoY29uc3QgU3RyaW5n
JiB0ZXh0KQogfQogCiAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IG1pc3NwZWxsZWQgd29yZCBv
biB3aGljaCBjb250ZXh0IG1lbnUKLS8vIGlzIHRvIGJlIGV2b2xrZWQuIFRoaXMgZnVuY3Rpb24g
YWxzbyBzZXRzIHRoZSB3b3JkIG9uIHdoaWNoIGNvbnRleHQgbWVudQotLy8gaGFzIGJlZW4gZXZv
a2VkIHRvIGJlIHRoZSBzZWxlY3RlZCB3b3JkLCBhcyByZXF1aXJlZC4gVGhpcyBmdW5jdGlvbiBj
aGFuZ2VzCisvLyBpcyB0byBiZSBpbnZva2VkLiBUaGlzIGZ1bmN0aW9uIGFsc28gc2V0cyB0aGUg
d29yZCBvbiB3aGljaCBjb250ZXh0IG1lbnUKKy8vIGhhcyBiZWVuIGludm9rZWQgdG8gYmUgdGhl
IHNlbGVjdGVkIHdvcmQsIGFzIHJlcXVpcmVkLiBUaGlzIGZ1bmN0aW9uIGNoYW5nZXMKIC8vIHRo
ZSBzZWxlY3Rpb24gb25seSB3aGVuIHRoZXJlIHdlcmUgbm8gc2VsZWN0ZWQgY2hhcmFjdGVycyBv
biBPUyBYLgogc3RhdGljIFN0cmluZyBzZWxlY3RNaXNzcGVsbGVkV29yZChjb25zdCBDb250ZXh0
TWVudSogZGVmYXVsdE1lbnUsIEZyYW1lKiBzZWxlY3RlZEZyYW1lKQogewpAQCAtMjc0LDM2ICsy
ODEsMzUgQEAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbnRJbXBsOjpn
ZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcygKICNlbmRpZgogICAgICAgICAvLyBXaGVuIENo
cm9tZSBlbmFibGVzIGFzeW5jaHJvbm91cyBzcGVsbGNoZWNraW5nLCBpdHMgc3BlbGxjaGVja2Vy
IGFkZHMgc3BlbGxpbmcgbWFya2VycyB0byBtaXNzcGVsbGVkCiAgICAgICAgIC8vIHdvcmRzIGFu
ZCBhdHRhY2hlcyBzdWdnZXN0aW9ucyB0byB0aGVzZSBtYXJrZXJzIGluIHRoZSBiYWNrZ3JvdW5k
LiBUaGVyZWZvcmUsIHdoZW4gYSB1c2VyIHJpZ2h0LWNsaWNrcwotICAgICAgICAvLyBhIG1vdXNl
IG9uIGEgd29yZCwgQ2hyb21lIGp1c3QgbmVlZHMgdG8gZmluZCBhIHNwZWxsaW5nIG1hcmtlciBv
biB0aGUgd29yZCBpbnN0cmVhZCBvZiBzcGVsbGNoZWNraW5nIGl0LgorICAgICAgICAvLyBhIG1v
dXNlIG9uIGEgd29yZCwgQ2hyb21lIGp1c3QgbmVlZHMgdG8gZmluZCBhIHNwZWxsaW5nIG1hcmtl
ciBvbiB0aGUgd29yZCBpbnN0ZWFkIG9mIHNwZWxsY2hlY2tpbmcgaXQuCiAgICAgICAgIGlmIChz
ZWxlY3RlZEZyYW1lLT5zZXR0aW5ncygpICYmIHNlbGVjdGVkRnJhbWUtPnNldHRpbmdzKCktPmFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpIHsKICAgICAgICAgICAgIFZpc2libGVT
ZWxlY3Rpb24gc2VsZWN0aW9uID0gc2VsZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlv
bigpOwotICAgICAgICAgICAgYm9vbCBzaG91bGRVcGRhdGVTZWxlY3Rpb24gPSBmYWxzZTsKICAg
ICAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldE9yUmFuZ2UoKSkgewotICAgICAgICAgICAg
ICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVj
dGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHNob3VsZFVwZGF0ZVNlbGVjdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3Jt
YWxpemVkUmFuZ2UoKTsKLSAgICAgICAgICAgICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBt
YXJrZXJzID0gc2VsZWN0ZWRGcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJzSW5S
YW5nZShyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwgRG9jdW1lbnRNYXJr
ZXI6OkdyYW1tYXIpOworICAgICAgICAgICAgICAgIC8vIENhcmV0IGFuZCByYW5nZSBzZWxlY3Rp
b25zIGFsd2F5cyByZXR1cm4gdmFsaWQgbm9ybWFsaXplZCByYW5nZXMuCisgICAgICAgICAgICAg
ICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRS
YW5nZSgpOworICAgICAgICAgICAgICAgIC8vIENsb25pbmcgYSByYW5nZSBmYWlscyBvbmx5IGZv
ciBpbnZhbGlkIHJhbmdlcy4KKyAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IG1hcmtlclJh
bmdlID0gc2VsZWN0aW9uUmFuZ2UtPmNsb25lUmFuZ2UoQVNTRVJUX05PX0VYQ0VQVElPTik7Cisg
ICAgICAgICAgICAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyKj4gbWFya2VycyA9IHNlbGVjdGVk
RnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2Vyc0luUmFuZ2Uoc2VsZWN0aW9uUmFu
Z2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyB8IERvY3VtZW50TWFya2VyOjpHcmFt
bWFyKTsKICAgICAgICAgICAgICAgICBpZiAobWFya2Vycy5zaXplKCkgPT0gMSkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAobWFya2Vyc1swXS0+c3RhcnRPZmZzZXQoKSAhPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpIHx8IG1hcmtlcnNbMF0tPmVuZE9mZnNl
dCgpICE9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS0+ZW5kT2Zmc2V0KCkpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgbWFya2Vycy5jbGVhcigpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBpZiAobWFya2Vycy5zaXplKCkgPT0gMSkgewotICAgICAgICAgICAgICAg
ICAgICByYW5nZS0+c2V0U3RhcnQocmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIG1hcmtlcnNbMF0t
PnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0RW5kKHJhbmdl
LT5lbmRDb250YWluZXIoKSwgbWFya2Vyc1swXS0+ZW5kT2Zmc2V0KCkpOwotICAgICAgICAgICAg
ICAgICAgICBkYXRhLm1pc3NwZWxsZWRXb3JkID0gcmFuZ2UtPnRleHQoKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKG1hcmtlcnNbMF0tPmRlc2NyaXB0aW9uKCkubGVuZ3RoKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25zOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbWFya2Vyc1swXS0+ZGVzY3JpcHRpb24oKS5zcGxpdCgnXG4nLCBzdWdn
ZXN0aW9ucyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmRpY3Rpb25hcnlTdWdnZXN0
aW9ucyA9IHN1Z2dlc3Rpb25zOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1fd2Vi
Vmlldy0+c3BlbGxDaGVja0NsaWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bWlzc3BlbGxlZE9mZnNldCwgbWlzc3BlbGxlZExlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fd2ViVmlldy0+c3BlbGxDaGVja0NsaWVudCgpLT5zcGVsbENoZWNrKGRhdGEubWlzc3Bl
bGxlZFdvcmQsIG1pc3NwZWxsZWRPZmZzZXQsIG1pc3NwZWxsZWRMZW5ndGgsICZkYXRhLmRpY3Rp
b25hcnlTdWdnZXN0aW9ucyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgc2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihyYW5nZS5nZXQoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChzaG91bGRVcGRhdGVTZWxlY3Rpb24gJiYgc2VsZWN0ZWRGcmFtZS0+
c2VsZWN0aW9uKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pKQorICAgICAgICAg
ICAgICAgICAgICBtYXJrZXJSYW5nZS0+c2V0U3RhcnQobWFya2VyUmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCksIG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICBt
YXJrZXJSYW5nZS0+c2V0RW5kKG1hcmtlclJhbmdlLT5lbmRDb250YWluZXIoKSwgbWFya2Vyc1sw
XS0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBz
ZWxlY3Rpb24sIHRoZW4gc2VsZWN0IHRoZSBtaXNzcGVsbGluZy4KKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihz
ZWxlY3Rpb24sIFdvcmRHcmFudWxhcml0eSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxl
Y3Rpb25SYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25SYW5nZS0+dGV4dCgp
LnN0cmlwV2hpdGVTcGFjZSgmSXNXaGl0ZVNwYWNlT3JQdW5jdHVhdGlvbikgPT0gbWFya2VyUmFu
Z2UtPnRleHQoKS5zdHJpcFdoaXRlU3BhY2UoJklzV2hpdGVTcGFjZU9yUHVuY3R1YXRpb24pKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLm1pc3NwZWxsZWRXb3JkID0gbWFya2VyUmFu
Z2UtPnRleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXJrZXJzWzBdLT5kZXNj
cmlwdGlvbigpLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9y
PFN0cmluZz4gc3VnZ2VzdGlvbnM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vy
c1swXS0+ZGVzY3JpcHRpb24oKS5zcGxpdCgnXG4nLCBzdWdnZXN0aW9ucyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YS5kaWN0aW9uYXJ5U3VnZ2VzdGlvbnMgPSBzdWdnZXN0aW9u
czsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobV93ZWJWaWV3LT5zcGVsbENo
ZWNrQ2xpZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWlzc3BlbGxl
ZE9mZnNldCwgbWlzc3BlbGxlZExlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3dlYlZpZXctPnNwZWxsQ2hlY2tDbGllbnQoKS0+c3BlbGxDaGVjayhkYXRhLm1pc3NwZWxsZWRX
b3JkLCBtaXNzcGVsbGVkT2Zmc2V0LCBtaXNzcGVsbGVkTGVuZ3RoLCAmZGF0YS5kaWN0aW9uYXJ5
U3VnZ2VzdGlvbnMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggNWJh
ZjA4ZWMyNzdkZmYxZGRiZDBmNWVhMmUxNGVkYmJiNzY3ZTY0Yy4uZjliNWE0Yzk1NTc3MDVhN2Rl
MjQwNjNjMGNmNTQ4MmJjNmYyYTg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuY3BwCkBAIC0xMzAyLDExICsxMzAyLDE2IEBAIHZvaWQgV2ViRnJhbWVJbXBs
OjpyZXBsYWNlTWlzc3BlbGxlZFJhbmdlKGNvbnN0IFdlYlN0cmluZyYgdGV4dCkKICAgICBWZWN0
b3I8RG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gZnJhbWUoKS0+ZG9jdW1lbnQoKS0+bWFya2Vy
cygpLT5tYXJrZXJzSW5SYW5nZShjYXJldFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3Bl
bGxpbmcgfCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CiAgICAgaWYgKG1hcmtlcnMuc2l6ZSgp
IDwgMSB8fCBtYXJrZXJzWzBdLT5zdGFydE9mZnNldCgpID49IG1hcmtlcnNbMF0tPmVuZE9mZnNl
dCgpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPFJhbmdlPiBtYXJrZXJSYW5nZSA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUoKS0+c2VsZWN0aW9u
KCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCBtYXJrZXJzWzBdLT5z
dGFydE9mZnNldCgpLCBtYXJrZXJzWzBdLT5lbmRPZmZzZXQoKSAtIG1hcmtlcnNbMF0tPnN0YXJ0
T2Zmc2V0KCkpOwotICAgIGlmICghbWFya2VyUmFuZ2UuZ2V0KCkgfHwgIWZyYW1lKCktPnNlbGVj
dGlvbigpLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCkpKQorICAgIEV4
Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZTsKKyAgICBSZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdl
ID0gY2FyZXRSYW5nZS0+Y2xvbmVSYW5nZShleGNlcHRpb25Db2RlKTsKKyAgICBpZiAoIWV4Y2Vw
dGlvbkNvZGUpCisgICAgICAgIHJldHVybjsKKyAgICBtYXJrZXJSYW5nZS0+c2V0U3RhcnQobWFy
a2VyUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkpOwor
ICAgIG1hcmtlclJhbmdlLT5zZXRFbmQobWFya2VyUmFuZ2UtPmVuZENvbnRhaW5lcigpLCBtYXJr
ZXJzWzBdLT5lbmRPZmZzZXQoKSk7CisgICAgaWYgKCFmcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2hv
dWxkQ2hhbmdlU2VsZWN0aW9uKG1hcmtlclJhbmdlLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCks
IENoYXJhY3RlckdyYW51bGFyaXR5KTsKLSAgICBmcmFtZSgpLT5lZGl0b3IoKS0+cmVwbGFjZVNl
bGVjdGlvbldpdGhUZXh0KHRleHQsIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZSgpLT5lZGl0b3Io
KS0+cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRleHQsIGZhbHNlLCBmYWxzZSk7CiB9CiAKIGJv
b2wgV2ViRnJhbWVJbXBsOjpoYXNTZWxlY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYyMWZmYjBhOWE2YjQwYWJjOGRjMmU2
NWQ1MThhNjk2YTEzMjAxNjIuLjJkZGJjMTJkYzkwNGIzZjEyZjMzZGNiMTE4MDlhZjI0M2ZlNjVi
MDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMyBAQAorMjAxMy0wMS0zMCAgUm91c2xhbiBTb2xvbWFraGluICA8cm91c2xhbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkICd1cHBlciBjYXNlJyBhcyBhIHR3by13b3JkIG1p
c3NwZWxsaW5nIHRvIG1vY2sgc3BlbGxjaGVja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTb21lIGxheW91dCB0ZXN0cyB2ZXJpZnkgc3BlbGxjaGVj
ayBiZWhhdmlvciB3aGVuIG11bHRpcGxlIHdvcmRzIGFyZQorICAgICAgICBtYXJrZWQgYXMgYSBz
aW5nbGUgbWlzc3BlbGxpbmcuIFRoaXMgY2hhbmdlIGFkZHMgYSB0d28td29yZCBtaXNzcGVsbGlu
ZworICAgICAgICAndXBwZXIgY2FzZScgdG8gdGhlIG1vY2sgc3BlbGxjaGVja2VyIHVzZWQgYnkg
bGF5b3V0IHRlc3RzLgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMuaHRtbAorICAgICAgICAgICAgICAgZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLmh0bWwK
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tT
cGVsbENoZWNrLmNwcDoKKyAgICAgICAgKE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZCk6
IE1vZGlmaWVkIHRvIGhhbmRsZSBzcGFjZXMgaW4gbWlzc3BlbGxpbmdzLgorICAgICAgICAoTW9j
a1NwZWxsQ2hlY2s6OmluaXRpYWxpemVJZk5lZWRlZCk6IE1vZGlmaWVkIHRvIHVzZSBhIHZlY3Rv
ciBpbnN0ZWFkIG9mIGEgaGFzaCB0YWJsZS4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5oOgorICAgICAgICAoTW9ja1NwZWxs
Q2hlY2spOiBDaGFuZ2VkIG1pc3NwZWxsaW5ncyBjb250YWluZXIgZnJvbSBoYXNoIHRhYmxlIHRv
IHZlY3Rvci4KKwogMjAxMy0wMS0zMCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIG1vdmUgY3VzdG9tIHBvbGljeSBkZWxlZ2F0ZSB0
byBUZXN0UnVubmVyIGxpYnJhcnkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcAppbmRleCA3
NTkzYzcxOTA0MjM1MGQyYzIxZWFhMTlkYWI5ZjVhOTk5OTBhODgxLi40NDgwNmJiYzVkODFjNWE0
NDA5MGQzN2ZiODc1NjRjMTNjZmVhY2M1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suY3Bw
CkBAIC02OSwyNyArNjksMzQgQEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dvcmQo
Y29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBpbnQqIG1pc3NwZWxsZWRPZmZzZXQKICAgICAgICAgLy8g
KFRoaXMgaXMgYSBzaW1wbGUgdmVyc2lvbiBvZiBvdXIgU3BlbGxDaGVja1dvcmRJdGVyYXRvciBj
bGFzcy4pCiAgICAgICAgIC8vIElmIHRoZSBnaXZlbiBzdHJpbmcgZG9lc24ndCBpbmNsdWRlIGFu
eSBBU0NJSSBjaGFyYWN0ZXJzLCB3ZSBjYW4gdHJlYXQgdGhlCiAgICAgICAgIC8vIHN0cmluZyBh
cyB2YWxpZCBvbmUuCi0gICAgICAgIC8vIFVuZm9ydHVuYXRlbHksIFRoaXMgaW1wbGVtZW50YXRp
b24gc3BsaXRzIGEgY29udHJhY3Rpb24sIGkuZS4gImlzbid0IiBpcwotICAgICAgICAvLyBzcGxp
dCBpbnRvIHR3byBwaWVjZXMgImlzbiIgYW5kICJ0Ii4gVGhpcyBpcyBPSyBiZWNhdXNlIHdlYmtp
dCB0ZXN0cwotICAgICAgICAvLyBkb24ndCBoYXZlIG1pc3NwZWxsZWQgY29udHJhY3Rpb25zLgog
ICAgICAgICBpbnQgd29yZE9mZnNldCA9IHN0cmluZ1RleHQuZmluZChpc0FTQ0lJQWxwaGEpOwog
ICAgICAgICBpZiAod29yZE9mZnNldCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICBpbnQgd29yZEVuZCA9IHN0cmluZ1RleHQuZmluZChpc05vdEFTQ0lJQWxwaGEsIHdv
cmRPZmZzZXQpOwotICAgICAgICBpbnQgd29yZExlbmd0aCA9IHdvcmRFbmQgPT0gLTEgPyBzdGF0
aWNfY2FzdDxpbnQ+KHN0cmluZ1RleHQubGVuZ3RoKCkpIC0gd29yZE9mZnNldCA6IHdvcmRFbmQg
LSB3b3JkT2Zmc2V0OworICAgICAgICBpbnQgbWF4V29yZExlbmd0aCA9IHN0cmluZ1RleHQubGVu
Z3RoKCkgLSB3b3JkT2Zmc2V0OworICAgICAgICBpbnQgd29yZExlbmd0aDsKKyAgICAgICAgV1RG
OjpTdHJpbmcgd29yZDsKIAogICAgICAgICAvLyBMb29rIHVwIG91ciBtaXNzcGVsbGVkLXdvcmQg
dGFibGUgdG8gY2hlY2sgaWYgdGhlIGV4dHJhY3RlZCB3b3JkIGlzIGEKICAgICAgICAgLy8ga25v
d24gbWlzc3BlbGxlZCB3b3JkLCBhbmQgcmV0dXJuIHRoZSBvZmZzZXQgYW5kIHRoZSBsZW5ndGgg
b2YgdGhlCiAgICAgICAgIC8vIGV4dHJhY3RlZCB3b3JkIGlmIHRoaXMgd29yZCBpcyBhIGtub3du
IG1pc3NwZWxsZWQgd29yZC4KICAgICAgICAgLy8gKFNlZSB0aGUgY29tbWVudCBpbiBNb2NrU3Bl
bGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKCkgd2h5IHdlIHVzZSBhCiAgICAgICAgIC8vIG1p
c3NwZWxsZWQtd29yZCB0YWJsZS4pCi0gICAgICAgIFdURjo6U3RyaW5nIHdvcmQgPSBzdHJpbmdU
ZXh0LnN1YnN0cmluZyh3b3JkT2Zmc2V0LCB3b3JkTGVuZ3RoKTsKLSAgICAgICAgaWYgKG1fbWlz
c3BlbGxlZFdvcmRzLmNvbnRhaW5zKHdvcmQpKSB7Ci0gICAgICAgICAgICAqbWlzc3BlbGxlZE9m
ZnNldCA9IHdvcmRPZmZzZXQgKyBza2lwcGVkTGVuZ3RoOwotICAgICAgICAgICAgKm1pc3NwZWxs
ZWRMZW5ndGggPSB3b3JkTGVuZ3RoOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbV9taXNzcGVsbGVkV29yZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
ICAgIHdvcmRMZW5ndGggPSBtX21pc3NwZWxsZWRXb3Jkcy5hdChpKS5sZW5ndGgoKSA+IG1heFdv
cmRMZW5ndGggPyBtYXhXb3JkTGVuZ3RoIDogbV9taXNzcGVsbGVkV29yZHMuYXQoaSkubGVuZ3Ro
KCk7CisgICAgICAgICAgICB3b3JkID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcod29yZE9mZnNldCwg
d29yZExlbmd0aCk7CisgICAgICAgICAgICBpZiAod29yZCA9PSBtX21pc3NwZWxsZWRXb3Jkcy5h
dChpKSAmJiAoc3RyaW5nVGV4dC5sZW5ndGgoKSA9PSB3b3JkT2Zmc2V0ICsgd29yZExlbmd0aCB8
fCBpc05vdEFTQ0lJQWxwaGEoc3RyaW5nVGV4dFt3b3JkT2Zmc2V0ICsgd29yZExlbmd0aF0pKSkg
eworICAgICAgICAgICAgICAgICptaXNzcGVsbGVkT2Zmc2V0ID0gd29yZE9mZnNldCArIHNraXBw
ZWRMZW5ndGg7CisgICAgICAgICAgICAgICAgKm1pc3NwZWxsZWRMZW5ndGggPSB3b3JkTGVuZ3Ro
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAg
ICAgICAgaWYgKCptaXNzcGVsbGVkTGVuZ3RoID4gMCkKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGludCB3b3JkRW5kID0gc3RyaW5nVGV4dC5maW5kKGlzTm90QVNDSUlBbHBoYSwgd29y
ZE9mZnNldCk7CisgICAgICAgIHdvcmRMZW5ndGggPSB3b3JkRW5kID09IC0xID8gc3RhdGljX2Nh
c3Q8aW50PihzdHJpbmdUZXh0Lmxlbmd0aCgpKSAtIHdvcmRPZmZzZXQgOiB3b3JkRW5kIC0gd29y
ZE9mZnNldDsKKwogICAgICAgICBBU1NFUlQoMCA8IHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoKTsK
ICAgICAgICAgc3RyaW5nVGV4dCA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKHdvcmRPZmZzZXQgKyB3
b3JkTGVuZ3RoKTsKICAgICAgICAgc2tpcHBlZExlbmd0aCArPSB3b3JkT2Zmc2V0ICsgd29yZExl
bmd0aDsKQEAgLTE1MSwxMiArMTU4LDEzIEBAIGJvb2wgTW9ja1NwZWxsQ2hlY2s6OmluaXRpYWxp
emVJZk5lZWRlZCgpCiAgICAgICAgICJpZm1tcCIsCiAgICAgICAgICJxd2VydHl1aW9wYXNkIiwK
ICAgICAgICAgInF3ZXJ0eXVpb3Bhc2RmIiwKKyAgICAgICAgInVwcGVyIGNhc2UiLAogICAgICAg
ICAid2VsbGNvbWUiCiAgICAgfTsKIAogICAgIG1fbWlzc3BlbGxlZFdvcmRzLmNsZWFyKCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUobWlzc3BlbGxlZFdvcmRzKTsgKytp
KQotICAgICAgICBtX21pc3NwZWxsZWRXb3Jkcy5hZGQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KG1p
c3NwZWxsZWRXb3Jkc1tpXSksIGZhbHNlKTsKKyAgICAgICAgbV9taXNzcGVsbGVkV29yZHMuYXBw
ZW5kKFdURjo6U3RyaW5nOjpmcm9tVVRGOChtaXNzcGVsbGVkV29yZHNbaV0pKTsKIAogICAgIC8v
IE1hcmsgYXMgaW5pdGlhbGl6ZWQgdG8gcHJldmVudCB0aGlzIG9iamVjdCBmcm9tIGJlaW5nIGlu
aXRpYWxpemVkIHR3aWNlCiAgICAgLy8gb3IgbW9yZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5o
CmluZGV4IDhhOThkNzA3YzA0YjFiYzg1ZTI4ZjU3MTA0ZGJjMDMxNjQxNDZiNWQuLmJmYTE4OGIy
NzA1ZTJlZjhlYWI3YTYwMjg0NGY2MzM2YTI4NDg5NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmgKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hl
Y2suaApAQCAtMzMsOCArMzMsNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJW
ZWN0b3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIC8vIEEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBhIHNwZWxsLWNoZWNr
ZXIgdXNlZCBmb3IgV2ViS2l0IHRlc3RzLgpAQCAtNzEsNyArNzAsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaW5pdGlhbGl6ZUlmTmVlZGVkKCk7CiAKICAgICAvLyBBIHRhYmxlIHRoYXQgY29uc2lz
dHMgb2YgbWlzc3BlbGxlZCB3b3Jkcy4KLSAgICBIYXNoTWFwPFdURjo6U3RyaW5nLCBib29sPiBt
X21pc3NwZWxsZWRXb3JkczsKKyAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fbWlzc3BlbGxlZFdv
cmRzOwogCiAgICAgLy8gQSBmbGFnIHJlcHJlc2VudGluZyB3aGV0aGVyIG9yIG5vdCB0aGlzIG9i
amVjdCBpcyBpbml0aWFsaXplZC4KICAgICBib29sIG1faW5pdGlhbGl6ZWQ7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGU3
NGU3YjBlNTgxMDM2YTg3YzA5ZWFjM2JhM2VlOWU1MTkwYmQwZi4uZmE1ZTM5NmE1ZTFjNjlhMjY0
YTA3Y2RlMTAwZjFjNWNiNWZkNDgwZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEzLTAxLTMw
ICBSb3VzbGFuIFNvbG9tYWtoaW4gIDxyb3VzbGFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBU
ZXN0cyBmb3Igc3BlbGxjaGVjayBiZWhhdmlvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2ODE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciB0aGUgZm9sbG93aW5nIHNwZWxsY2hl
Y2sgYmVoYXZpb3I6CisgICAgICAgIC0gU3BlbGxjaGVjayBzZWxlY3RzIHRoZSBtaXNzcGVsbGVk
IHdvcmQgb24gY29udGV4dCBjbGljay4gCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIHdvcmsg
d2hlbiB0aGUgdXNlciBzZWxlY3RzIHRoZSBtaXNzcGVsbGVkIHdvcmQgZXhhY3RseS4gCisgICAg
ICAgIC0gSWYgdGhlIHdvcmQgaXMgbm90IG1pc3NwZWxsZWQsIHRoZXJlIHNob3VsZCBiZSBubyBz
cGVsbGluZyBvcHRpb25zIGluIHRoZSBjb250ZXh0IG1lbnUuIAorICAgICAgICAtIFNwZWxsY2hl
Y2sgc2hvdWxkIHNlbGVjdCBtdWx0aS13b3JkIG1pc3NwZWxsaW5ncyBvbiBjb250ZXh0IGNsaWNr
LiAKKyAgICAgICAgLSBTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMg
YSBtdWx0aS13b3JkIG1pc3NwZWxsaW5nIGV4YWN0bHkuIAorICAgICAgICAtIFNwZWxsaW5nIHNo
b3VsZCB3b3JrIGZvciBkb3VibGUtY2xpY2tlZCBtaXNzcGVsbGluZ3MuIAorICAgICAgICAtIFNw
ZWxsaW5nIHNob3VsZCBpZ25vcmUgd2hpdGVzcGFjZS4gCisgICAgICAgIC0gVW5kZXJzY29yZXMg
c2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB0
aGVtLiAKKyAgICAgICAgLSBQdW5jdHVhdGlvbiBtYXJrcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3
aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uIAorICAgICAgICAtIFNwZWxs
aW5nIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHVzZXIgc2VsZWN0cyBhIHBhcnQgb2YgbWlzc3Bl
bGxpbmcuIAorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHVzZXIg
c2VsZWN0cyBtdWx0aXBsZSB3b3JkcyB0aGF0IGFyZSBub3QgYSBzaW5nbGUgbWlzc3BlbGxpbmcu
IAorCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9yZXNvdXJjZXMvdXRpbC5qczogQWRkZWQu
CisgICAgICAgIChpbml0U3BlbGxUZXN0KTogQWRkZWQgZnVuY3Rpb24gZm9yIGNvbW1vbiBib2ls
ZXJwbGF0ZSBpbiBzcGVsbCBjaGVjayB0ZXN0cy4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11
bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQt
d29yZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4
YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUt
d29yZHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1l
eGFjdGx5LXNlbGVjdGVkLXdvcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW11bHRpd29yZC1zZWxlY3Rpb24t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LW11bHRpd29yZC1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0
LW11bHRpcGxlLXdvcmRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUt
d29yZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1
YndvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13
aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJz
Y29yZS1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0
aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0
aW9uczogU2tpcHBpbmcgdGhlIG5ldyBzcGVsbGNoZWNrIHRlc3RzIGJlY2F1c2UgTWFjIFdLMiBk
b2VzIG5vdCBpbXBsZW1lbnQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNs
aWNrZWQtd29yZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNj
b3Jlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0
LW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0
aC11bmRlcnNjb3JlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxl
Y3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMy0wMS0zMCAgWmFuIERvYmVyc2VrICA8
emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gaHR0cC90ZXN0cy93M2Mvd2Vi
cGVyZi9zdWJtaXNzaW9uL0ludGVsL3VzZXItdGltaW5nL3Rlc3RfdXNlcl90aW1pbmdfZW50cnlf
dHlwZS5odG1sIGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvcmVzb3VyY2VzL3V0aWwuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Jl
c291cmNlcy91dGlsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmODAzMzQxODg0M2NmMjBjNjY3MWU3Yzg0OTA3
YjcwNzJkNDk1MjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3Jlc291cmNlcy91dGlsLmpzCkBAIC0wLDAgKzEsMzggQEAKK2Z1bmN0aW9uIGxvZyhtc2cp
Cit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0g
KG1zZyArICJcbiIpOworfQorCitmdW5jdGlvbiB2ZXJpZnlTcGVsbFRlc3QobnJldHJ5KQorewor
ICAgIGlmICghbnJldHJ5KSB7CisgICAgICAgIGxvZygiRkFJTCBTcGVsbGNoZWNrIHRpbWVkIG91
dCIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKQorICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmICghaW50ZXJuYWxzLm1hcmtlckNvdW50Rm9yTm9kZShkZXN0aW5hdGlvbi5jaGlsZE5vZGVz
WzBdLCAic3BlbGxpbmciKSkgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigp
IHsgdmVyaWZ5U3BlbGxUZXN0KG5yZXRyeSAtIDEpOyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICB0ZXN0RnVuY3Rpb25DYWxsYmFjayhkZXN0aW5hdGlvbi5jaGlsZE5vZGVzWzBd
KTsKKyAgICBmaW5pc2hKU1Rlc3QoKQorfQorCitmdW5jdGlvbiBpbml0U3BlbGxUZXN0KHRlc3RF
bGVtZW50SWQsIHRlc3RUZXh0LCB0ZXN0RnVuY3Rpb24pCit7CisgICAgaWYgKCF3aW5kb3cuaW50
ZXJuYWxzIHx8ICF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93LnRlc3RSdW5uZXIuc2V0QXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpIHsKKyAgICAgICAgbG9nKCJGQUlMIEluY29t
cGxldGUgdGVzdCBlbnZpcm9ubWVudCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRl
c3RGdW5jdGlvbkNhbGxiYWNrID0gdGVzdEZ1bmN0aW9uOworICAgIGpzVGVzdElzQXN5bmMgPSB0
cnVlOworICAgIHRlc3RSdW5uZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
dHJ1ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQodHJ1ZSk7
CisgICAgdGVzdFJ1bm5lci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGZhbHNl
KTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCh0
cnVlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RWRpdGluZ0JlaGF2aW9yKCJ3aW4iKTsK
KyAgICB2YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0RWxlbWVu
dElkKTsKKyAgICBkZXN0aW5hdGlvbi5mb2N1cygpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5k
KCJJbnNlcnRUZXh0IiwgZmFsc2UsIHRlc3RUZXh0KTsKKyAgICB3aW5kb3cuc2V0VGltZW91dChm
dW5jdGlvbigpIHsgdmVyaWZ5U3BlbGxUZXN0KDEwKTsgfSwgMCk7Cit9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3Vi
bGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjU0Y2Q5MmMzMTI2OTMw
MWU5YTEzZDQyYTFmOTkxYmUwOTU4ZWYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDIwIEBACitTcGVsbGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNr
ZWQgbWlzc3BlbGxpbmdzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLics
IGRvdWJsZS1jbGljayBvbiAnd2VsbGNvbWUnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2Vs
ZWN0aW9uLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3Bl
bGwgY2hlY2sgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5n
ZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRN
ZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIGlzICJ3ZWxsY29tZSAiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmco
KSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlz
ICJ3ZWxsY29tZSAiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50
cy5sZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVu
ZGVyc2NvcmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ZTViNTZmMzM4YzExYzQyNGNjZjY0N2QwZGM3NGZiMGQ2NDhkYzY4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3Vi
bGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjAgQEAKK1NwZWxsaW5nIHNob3VsZCB3b3JrIGZvciBkb3VibGUtY2xpY2tlZCBtaXNzcGVsbGVk
IHdvcmRzIHdpdGggdW5kZXJzY29yZXMuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21l
XyBob21lLicsIGRvdWJsZS1jbGljayBvbiAnd2VsbGNvbWVfJywgYW5kIGNvbnRleHQtY2xpY2sg
b24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51
IHNob3dzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21l
IgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWVfIgorUEFTUyBzcGVsbGlu
Z01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWVfIgorUEFTUyBjb250ZXh0TWVudUVsZW1l
bnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZV8gIgorUEFTUyBzcGVsbGluZ01hcmtlclJh
bmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSBpcyAid2VsbGNvbWVfICIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250
ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZV8gaG9tZS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNr
ZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNhNTkzNWZlMDAwNWE1YTA2MTM1MmNmOWEyM2VmNjMxMjNiMTZhMzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJs
ZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5odG1sCkBAIC0wLDAgKzEsODAgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWlu
ZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9k
aXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgd29yayBmb3Ig
ZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxlZCB3b3JkcyB3aXRoIHVuZGVyc2NvcmVzLiAiICsKKyAg
ICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZV8gaG9tZS4nLCBkb3Vi
bGUtY2xpY2sgb24gJ3dlbGxjb21lXycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rp
b24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQg
bWVudSBzaG93cyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKKworaW5pdFNwZWxsVGVzdCgi
ZGVzdGluYXRpb24iLCAid2VsbGNvbWVfIGhvbWUuIiwgIGZ1bmN0aW9uKHRleHROb2RlKSB7Cisg
ICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4
dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxp
bmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAg
IC8vIERvdWJsZS1jbGljayB0aGUgbWlzc3BlbGxlZCB3b3JkIHdpdGhvdXQgdGhlIHRyYWlsaW5n
IHdoaXRlc3BhY2UuCisgICAgdGVzdFJ1bm5lci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VF
bmFibGVkKGZhbHNlKTsKKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGlu
YXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRl
c3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
eCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWVfIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9u
ICJ3ZWxsY29tZV8iIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB4ID0gZGVzdGluYXRp
b24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7
CisgICAgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlv
bi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNl
bmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQg
bWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFC
KSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJh
bmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IiwgIndlbGxjb21lXyIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVF
bGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKKwor
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOwor
CisgICAgLy8gRG91YmxlLWNsaWNrIHRoZSBtaXNzcGVsbGVkIHdvcmQgd2l0aCB0aGUgdHJhaWxp
bmcgd2hpdGVzcGFjZS4KKyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFj
ZUVuYWJsZWQodHJ1ZSk7CisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3Rp
bmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIiwgIndlbGxjb21lXyAiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sg
b24gIndlbGxjb21lXyAiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB4ID0gZGVzdGlu
YXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsg
NDA7CisgICAgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5h
dGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVu
dFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRl
eHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgw
MDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtl
clJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgIndlbGxjb21lXyAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRN
ZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7
Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29y
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xp
Y2tlZC13b3JkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ5MjczZDJlMGFiYWI5ZDliY2VjOTI3YTA5YzNm
YzQ2Y2UwMjdjZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC5odG1sCkBAIC0wLDAgKzEsNzkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWlu
ZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9k
aXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgd29yayBmb3Ig
ZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxpbmdzLiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1h
bnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIGRvdWJsZS1jbGljayBvbiAnd2VsbGNvbWUn
LCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJU
aGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGwgY2hlY2sg
c3VnZ2VzdGlvbnMuIik7CisKK2luaXRTcGVsbFRlc3QoImRlc3RpbmF0aW9uIiwgIndlbGxjb21l
IGhvbWUuIiwgZnVuY3Rpb24odGV4dE5vZGUpIHsKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0g
aW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCki
LCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gRG91YmxlLWNsaWNrIHRoZSBtaXNz
cGVsbGVkIHdvcmQgd2l0aG91dCB0cmFpbGluZyB3aGl0ZXNwYWNlLgorICAgIHRlc3RSdW5uZXIu
c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgdmFyIHggPSBk
ZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExl
ZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3Ag
KyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
RG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21lIik7
CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hvdyB0aGUgY29udGV4
dCBtZW51LgorICAgIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRl
c3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFy
ZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNl
dEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29u
dGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVz
YyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24o
U3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2Vy
UmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmci
LCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5n
dGggLSAxXSIsICJ3ZWxjb21lIik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3Zl
QWxsUmFuZ2VzKCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIERvdWJsZS1jbGljayB0aGUgbWlzc3Bl
bGxlZCB3b3JkIHdpdGggdHJhaWxpbmcgd2hpdGVzcGFjZS4KKyAgICB0ZXN0UnVubmVyLnNldFNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQodHJ1ZSk7CisgICAgdmFyIHggPSBkZXN0aW5h
dGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0
MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0
aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSAiKTsKKworICAg
IC8vIENvbnRleHQgY2xpY2sgb24gIndlbGxjb21lICIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51
LgorICAgIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0
aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdo
dCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1l
bnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkg
dG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5n
LmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2Ug
PSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmco
KSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUgIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0g
MV0iLCAid2VsY29tZSIpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4
YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGE3OTQ3NWU1NzZmYmI4Nzk4MWI2MmU2N2I1MWE0
ODI3Y2NmNjJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVj
dHMgYSBtdWx0aS13b3JkIG1pc3NwZWxsaW5nIGV4YWN0bHkuIFRvIHRlc3QgbWFudWFsbHksIGVu
YWJsZSAnQXNrIEdvb2dsZSBmb3IgU3VnZ2VzdGlvbnMnIGluIENocm9tZSwgdHlwZSAnSXQgc2hv
dWxkIGJlIHVwcGVyIGNhc2UuJywgc2VsZWN0ICd1cHBlciBjYXNlJywgYW5kIGNvbnRleHQtY2xp
Y2sgb24gdGhlIHNlbGVjdGlvbi5UaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1l
bnUgc2hvd3Mgc3BlbGxpbmcgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAidXBwZXIgY2Fz
ZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHNwZWxs
aW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0l0IHNob3VsZCBiZSB1cHBlciBjYXNl
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFj
dGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zZDMyNTRmYjQ2OGI4NzQ3MjNlZTVjNmE0YzhjMTk0YmY2MGE5MjkzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5
LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRp
bC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+Cisg
IDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxz
Y3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2Vy
IHNlbGVjdHMgYSBtdWx0aS13b3JkIG1pc3NwZWxsaW5nIGV4YWN0bHkuICIgKworICAgICAgICAg
ICAgIlRvIHRlc3QgbWFudWFsbHksIGVuYWJsZSAnQXNrIEdvb2dsZSBmb3IgU3VnZ2VzdGlvbnMn
IGluIENocm9tZSwgdHlwZSAnSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuJywgc2VsZWN0ICd1cHBl
ciBjYXNlJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4iICsKKyAgICAgICAg
ICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGxp
bmcgc3VnZ2VzdGlvbnMuIik7CisKK2luaXRTcGVsbFRlc3QoImRlc3RpbmF0aW9uIiwgIkl0IHNo
b3VsZCBiZSB1cHBlciBjYXNlLiIsIGZ1bmN0aW9uKHRleHROb2RlKSB7CisgICAgc3BlbGxpbmdN
YXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVs
bGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5n
ZS50b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
IndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworICAgIAorICAgIC8vIFNl
bGVjdCB0aGUgbXVsdGktd29yZCBtaXNzcGVsbGluZyB3aXRob3V0IHN1cnJvdW5kaW5nIHdoaXRl
c3BhY2Ugb3IgcHVuY3R1YXRpb24uCisgICAgdmFyIHdvcmRSYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CisgICAgd29yZFJhbmdlLnNldFN0YXJ0KHRleHROb2RlLCAxMyk7CisgICAgd29y
ZFJhbmdlLnNldEVuZCh0ZXh0Tm9kZSwgMjMpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5y
ZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uod29y
ZFJhbmdlKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkiLCAidXBwZXIgY2FzZSIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBv
biAidXBwZXIgY2FzZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVz
dGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0
ICsgMTAwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCAr
IGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50
cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0
aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFy
Q29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5h
bHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ1cHBl
ciBjYXNlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zNGUzNmNmMDQzOTEwNDk5NmYwY2FmMTU2YjNlOTkzMWExODhl
MzgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAK
K1NwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyB0aGUgbWlzc3BlbGxl
ZCB3b3JkIGV4YWN0bHkuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIGhvbWUuJywg
c2VsZWN0ICd3ZWxsY29tZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRo
ZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93cyBzcGVsbGluZyBzdWdn
ZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdN
YXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkg
aXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAi
d2VsbGNvbWUiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5s
ZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgImhvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlz
ICJob21lIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVu
Z3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQuaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13
b3JkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjIxZDk2ZDg3YzA0ZDk3MzFhYmNiMGZhMzU3Y2IyNzU3OGVk
ODZjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWwKQEAgLTAsMCArMSw2NyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
dXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+
CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4K
KworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlNwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhl
IHVzZXIgc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIGV4YWN0bHkuICIgKworICAgICAgICAg
ICAgIlRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIGhvbWUuJywgc2VsZWN0ICd3ZWxs
Y29tZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uICIgKworICAgICAgICAg
ICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93cyBzcGVsbGlu
ZyBzdWdnZXN0aW9ucy4iKTsKKworaW5pdFNwZWxsVGVzdCgiZGVzdGluYXRpb24iLCAid2VsbGNv
bWUgaG9tZS4iLCBmdW5jdGlvbih0ZXh0Tm9kZSkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2Ug
PSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmco
KSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBTZWxlY3QgdGhlIG1pc3NwZWxs
ZWQgd29yZCB3aXRob3V0IHN1cnJvdW5kaW5nIHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRpb24uCisg
ICAgdmFyIHdvcmRSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgd29yZFJhbmdl
LnNldFN0YXJ0KHRleHROb2RlLCAwKTsKKyAgICB3b3JkUmFuZ2Uuc2V0RW5kKHRleHROb2RlLCA4
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHdvcmRSYW5nZSk7CisKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21l
Iik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hvdyB0aGUgY29u
dGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlv
bi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGlu
YXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5
KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7
CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5k
ZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3Bl
bGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUs
ICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJr
ZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVs
ZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKKyAgICAKKyAgICAvLyBTZWxlY3QgYSBj
b3JyZWN0bHkgc3BlbGxlZCB3b3JkIHdpdGhvdXQgc3Vycm91bmRpbmcgd2hpdGVzcGFjZSBvciBw
dW5jdHVhdGlvbi4KKyAgICB3b3JkUmFuZ2Uuc2V0U3RhcnQodGV4dE5vZGUsIDkpOworICAgIHdv
cmRSYW5nZS5zZXRFbmQodGV4dE5vZGUsIDEzKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
cmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHdv
cmRSYW5nZSk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSIsICJob21lIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJob21l
IiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA4MDsKKyAgICB2
YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5v
ZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRl
ci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVu
dS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwg
bnVsbCk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIiwgImhvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRl
eHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICI8c2VwYXJh
dG9yPiIpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW11bHRpd29yZC1z
ZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjBkZDJi
ZTA5ZjhmZWFlYzYzMDM2Nzc1MjcyMDMxZTg2NDEwMWVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQg
d2hlbiB1c2VyIHNlbGVjdHMgbXVsdGlwbGUgd29yZHMgdGhhdCBhcmUgbm90IGEgc2luZ2xlIG1p
c3NwZWxsaW5nLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIHNlbGVj
dCAnd2VsbGNvbWUgaG9tZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRo
ZSB0ZXN0IHN1Y2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBubyBzcGVsbCBjaGVjayBz
dWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxp
bmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkgaXMgIndlbGxjb21lIGhvbWUiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIGlzICJ3ZWxsY29tZSBob21lIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRN
ZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+IgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21lLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2Vs
ZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW11bHRp
d29yZC1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDI3Yjk3YmM3MTRjMWQ4ZDBjNjBlMDcy
ODkyODA0MzQxNjQ2YmU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw0OSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNv
bnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+
Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlNwZWxsaW5nIHNob3VsZCBiZSBk
aXNhYmxlZCB3aGVuIHVzZXIgc2VsZWN0cyBtdWx0aXBsZSB3b3JkcyB0aGF0IGFyZSBub3QgYSBz
aW5nbGUgbWlzc3BlbGxpbmcuICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIHR5
cGUgJ3dlbGxjb21lIGhvbWUuJywgc2VsZWN0ICd3ZWxsY29tZSBob21lJywgYW5kIGNvbnRleHQt
Y2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjZWVk
cyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIG5vIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLiIp
OworCitpbml0U3BlbGxUZXN0KCJkZXN0aW5hdGlvbiIsICJ3ZWxsY29tZSBob21lLiIsIGZ1bmN0
aW9uKHRleHROb2RlKSB7CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJr
ZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSIsICIiKTsKKworICAgIC8vIFNlbGVjdCB0aGUgdGV4dCAid2VsbGNvbWUgaG9tZSIuCisg
ICAgdmFyIG11bHRpV29yZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBtdWx0
aVdvcmRSYW5nZS5zZXRTdGFydCh0ZXh0Tm9kZSwgMCk7CisgICAgbXVsdGlXb3JkUmFuZ2Uuc2V0
RW5kKHRleHROb2RlLCAxMyk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJh
bmdlcygpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShtdWx0aVdvcmRSYW5n
ZSk7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIiwgIndlbGxjb21lIGhvbWUiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgdG8g
c2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkg
PSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0
VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29u
dGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisg
ICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwp
OworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5v
ZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
c3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxs
Y29tZSBob21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1l
bnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAiPHNlcGFyYXRvcj4iKTsKK30p
OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxl
LXdvcmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjZhNDU0MTY4YWRjOTdkMWM3ZDZkZTQwYTNmZTdhN2FkMGIyOTRjYQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1t
dWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorU3BlbGwgY2hlY2sg
c2hvdWxkIHNlbGVjdCBtdWx0aS13b3JkIG1pc3NwZWxsaW5ncyBvbiBjb250ZXh0IGNsaWNrLiBU
byB0ZXN0IG1hbnVhbGx5LCBlbmFibGUgJ0FzayBHb29nbGUgZm9yIFN1Z2dlc3Rpb25zJyBpbiBD
aHJvbWUsIHR5cGUgJ0l0IHNob3VsZCBiZSB1cHBlciBjYXNlLicsIGFuZCBjb250ZXh0LWNsaWNr
IG9uIHRoZSB3b3JkICd1cHBlcicuIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gJ3VwcGVyIGNhc2Un
IHdhcyBzZWxlY3RlZCBhZnRlciBjb250ZXh0IGNsaWNrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgInVwcGVy
IGNhc2UiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNT
IHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAidXBwZXIgY2FzZSIKK1BBU1Mgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0l0IHNob3VsZCBiZSB1cHBl
ciBjYXNlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jZGYwNDI4MzdiMTQ1NjMwNDA5YzgwOGY1Zjg0NDUyMzU1Njc5NDM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQt
c2VsZWN0LW11bHRpcGxlLXdvcmRzLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxk
aXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxzY3Jp
cHQ+CisKK2Rlc2NyaXB0aW9uKCJTcGVsbCBjaGVjayBzaG91bGQgc2VsZWN0IG11bHRpLXdvcmQg
bWlzc3BlbGxpbmdzIG9uIGNvbnRleHQgY2xpY2suICIrCisgICAgICAgICAgICAiVG8gdGVzdCBt
YW51YWxseSwgZW5hYmxlICdBc2sgR29vZ2xlIGZvciBTdWdnZXN0aW9ucycgaW4gQ2hyb21lLCB0
eXBlICdJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUg
d29yZCAndXBwZXInLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVuICd1
cHBlciBjYXNlJyB3YXMgc2VsZWN0ZWQgYWZ0ZXIgY29udGV4dCBjbGljay4iKTsKKworaW5pdFNw
ZWxsVGVzdCgiZGVzdGluYXRpb24iLCAiSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuIiwgZnVuY3Rp
b24odGV4dE5vZGUpIHsKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtl
clJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAidXBwZXIgY2FzZSIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkiLCAiIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ1cHBlciBjYXNlIiB0byBz
aG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyAxMDA7CisgICAgdmFyIHkg
PSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0
VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29u
dGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisg
ICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwp
OworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5v
ZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
c3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgInVw
cGVyIGNhc2UiKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQt
c2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmE4ZDA4NjZhMzM3ODgwZDE5ZGVhNGIyY2ExYzg4M2ZjYmVjMjEyYgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxk
LXNlbGVjdC1zaW5nbGUtd29yZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorU3BlbGwg
Y2hlY2sgc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIG9uIGNvbnRleHQgY2xpY2suIFRvIHRl
c3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIGhvbWUuJyBhbmQgY29udGV4dC1jbGljayBvbiAn
d2VsbGNvbWUnLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuICd3ZWxsY29tZScgaXMgc2VsZWN0ZWQg
YWZ0ZXIgdGhlIGNvbnRleHQgY2xpY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNT
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHNwZWxsaW5nTWFy
a2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tj
b250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51
RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+IgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNp
bmdsZS13b3JkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNo
b3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjgyODRhOTQ5ZWEwZTkw
Y2IwMTRhZjAyNjdmNzU3NGM0ODY0NGU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0bWwK
QEAgLTAsMCArMSw1NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50
RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlNwZWxs
IGNoZWNrIHNlbGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLiAiICsK
KyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicgYW5k
IGNvbnRleHQtY2xpY2sgb24gJ3dlbGxjb21lJy4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qg
c3VjY2VlZHMgd2hlbiAnd2VsbGNvbWUnIGlzIHNlbGVjdGVkIGFmdGVyIHRoZSBjb250ZXh0IGNs
aWNrLiIpOworCitpbml0U3BlbGxUZXN0KCJkZXN0aW5hdGlvbiIsICJ3ZWxsY29tZSBob21lLiIs
IGZ1bmN0aW9uKHRleHROb2RlKSB7CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFs
cy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxj
b21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gIndlbGxjb21lIiB0
byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIg
eSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZz
ZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5j
b250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4K
KyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVs
bCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9y
Tm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndl
bGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRz
W2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworCisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAv
LyBDb250ZXh0IGNsaWNrIG9uICJob21lIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAg
dmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9u
Lm9mZnNldExlZnQgKyA4MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5v
ZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWln
aHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRN
ZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5
IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmlu
Zy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIHNo
b3VsZCBub3Qgc2VsZWN0IGNvcnJlY3RseSBzcGVsbGVkIHdvcmRzIHdpdGggIndpbiIgZWRpdGlu
ZyBiZWhhdmlvci4KKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIiwgIiIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4
dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIjxzZXBhcmF0
b3I+Iik7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxl
Y3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1zdWJ3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk3ZWU3NmVhMTRh
NTA1ZmQ5NGZmODY4ODQwYjlmNzMyZDVhNWIwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTUgQEAKK1NwZWxsaW5nIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHVz
ZXIgc2VsZWN0cyBhIHBhcnQgb2YgbWlzc3BlbGxpbmcuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUg
J3dlbGxjb21lIGhvbWUuJyBzZWxlY3QgJ2xsY28nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUg
c2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgbm8g
c3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNT
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJsbGNvIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAibGxjbyIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVs
ZW1lbnRzLmxlbmd0aCAtIDFdIGlzICI8c2VwYXJhdG9yPiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24u
aHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxl
Y3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOWJjODVkYWMyYTk4MzBhM2YxNjRlNzRkN2IxNTNmMDYw
MThlZGYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0
aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgor
ICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisK
KzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hl
biB1c2VyIHNlbGVjdHMgYSBwYXJ0IG9mIG1pc3NwZWxsaW5nLiAiICsKKyAgICAgICAgICAgICJU
byB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicgc2VsZWN0ICdsbGNvJywgYW5k
IGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gIiArCisgICAgICAgICAgICAiVGhlIHRl
c3Qgc3VjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIG5vIHNwZWxsIGNoZWNrIHN1Z2dl
c3Rpb25zLiIpOworCitpbml0U3BlbGxUZXN0KCJkZXN0aW5hdGlvbiIsICJ3ZWxsY29tZSBob21l
LiIsIGZ1bmN0aW9uKHRleHROb2RlKSB7CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVy
bmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndl
bGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIFNlbGVjdCB0aGUgdGV4dCAibGxjbyIuCisg
ICAgdmFyIHN1YldvcmRSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgc3ViV29y
ZFJhbmdlLnNldFN0YXJ0KHRleHROb2RlLCAyKTsKKyAgICBzdWJXb3JkUmFuZ2Uuc2V0RW5kKHRl
eHROb2RlLCA2KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHN1YldvcmRSYW5nZSk7CisKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IiwgImxsY28iKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gJ2xsY28nIHRvIHNob3cgdGhl
IGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGlu
YXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRl
c3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
eCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGlj
aygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50
U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAg
IHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHRO
b2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5n
TWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAibGxjbyIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVs
ZW1lbnRzLmxlbmd0aCAtIDFdIiwgIjxzZXBhcmF0b3I+Iik7Cit9KTsKKworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1bmN0dWF0aW9u
LXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODIyMTgwZDBmYjAxZmQ1MTJmMzlk
Mjk1OTE5MTcyMzlmNmQzZjhkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTUgQEAKK1B1bmN0dWF0aW9uIG1hcmtzIHNob3VsZCBiZSB0cmVhdGVk
IGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4gVG8gdGVzdCBtYW51
YWxseSwgdHlwZSAnd2VsbGNvbWUhJywgc2VsZWN0ICd3ZWxsY29tZSEnLCBhbmQgY29udGV4dC1j
bGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0
IG1lbnUgaGFzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxj
b21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUhIgorUEFTUyBzcGVs
bGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUhIgorUEFTUyBjb250ZXh0TWVudUVs
ZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lIQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1
bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNTY1
YjcwZmFlMWI2NDNiZTE4YmRjZDg4NmU4ZTQzODExMmY5N2MKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2Vs
ZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0
aW9uIiBjb250ZW50RWRpdGFibGU+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3Jp
cHRpb24oIlB1bmN0dWF0aW9uIG1hcmtzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6
IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBt
YW51YWxseSwgdHlwZSAnd2VsbGNvbWUhJywgc2VsZWN0ICd3ZWxsY29tZSEnLCBhbmQgY29udGV4
dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNj
ZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLiIp
OworCitpbml0U3BlbGxUZXN0KCJkZXN0aW5hdGlvbiIsICJ3ZWxsY29tZSEiLCBmdW5jdGlvbih0
ZXh0Tm9kZSkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFu
Z2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCki
LCAiIik7CisKKyAgICAvLyBTZWxlY3QgdGhlIHRleHQgIndlbGxjb21lISIgd2l0aCB0aGUgZXhj
bGFtYXRpb24gbWFyay4KKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KHRleHROb2RlLCAwKTsKKyAgICByYW5nZS5zZXRFbmQodGV4dE5v
ZGUsIDkpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworCisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29t
ZSEiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51Lgor
ICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5h
dGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0
SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250
ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNj
IGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJS
YW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIs
IDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0
cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSEiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5n
dGggLSAxXSIsICJ3ZWxjb21lIik7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNlMTQ0NjFlZjFiNGFhY2FkMTU5MzNhNmI3ZTI3OGE1ZGZlZjNh
ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUg
QEAKK1VuZGVyc2NvcmVzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5n
IHNob3VsZCBpZ25vcmUgdGhlbS4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnSGksIF93ZWxsY29t
ZV8gaG9tZS4nLCBzZWxlY3QgJ193ZWxsY29tZV8nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUg
c2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIHNw
ZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiX3dlbGxjb21lXyIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkgaXMgIl93ZWxsY29tZV8iCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29u
dGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSGksIF93ZWxsY29tZV8gaG9tZS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11
bmRlcnNjb3JlLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWIwMzZi
YjgyYjlhZjMzNDJjYzZjZjU1NjE5OWIzMmQ3MDQ4ZGNmNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVj
dGlvbi5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlv
biIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0
aW9uKCJVbmRlcnNjb3JlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGlu
ZyBzaG91bGQgaWdub3JlIHRoZW0uICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHks
IHR5cGUgJ0hpLCBfd2VsbGNvbWVfIGhvbWUuJywgc2VsZWN0ICdfd2VsbGNvbWVfJywgYW5kIGNv
bnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qg
c3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBzcGVsbCBjaGVjayBzdWdnZXN0aW9u
cy4iKTsKKworaW5pdFNwZWxsVGVzdCgiZGVzdGluYXRpb24iLCAiSGksIF93ZWxsY29tZV8gaG9t
ZS4iLCBmdW5jdGlvbih0ZXh0Tm9kZSkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRl
cm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3
ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBTZWxlY3QgdGhlIHRleHQgIl93ZWxsY29t
ZV8iLgorICAgIHZhciByYW5nZVdpdGhVbmRlcnNjb3JlcyA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2VXaXRoVW5kZXJzY29yZXMuc2V0U3RhcnQodGV4dE5vZGUsIDQpOworICAg
IHJhbmdlV2l0aFVuZGVyc2NvcmVzLnNldEVuZCh0ZXh0Tm9kZSwgMTQpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuYWRkUmFuZ2UocmFuZ2VXaXRoVW5kZXJzY29yZXMpOworCisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJfd2VsbGNvbWVfIik7
CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJfd2VsbGNvbWVfIiB0byBzaG93IHRoZSBjb250
ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA4MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9u
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5h
dGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkp
OworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsK
KyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRl
ci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVs
bGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwg
InNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtl
clJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIl93ZWxsY29tZV8iKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVF
bGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxl
Y3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MzU1MTczYTczODc5ZmU0NWI0OWEyOThh
M2NmMGM1Y2Y0ZDU2NzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1NwZWxsaW5nIHNob3VsZCBpZ25vcmUgd2hpdGVzcGFjZS4gVG8gdGVz
dCBtYW51YWxseSwgdHlwZSAnaGVsbG8sIHdlbGxjb21lIGhvbWUuJywgc2VsZWN0ICcgd2VsbGNv
bWUgJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2Vl
ZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50
b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIiB3ZWxsY29tZSAiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmco
KSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlz
ICIgd2VsbGNvbWUgIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVu
dHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKK2hlbGxvLCB3ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2Vs
ZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgt
d2hpdGVzcGFjZS1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTkxMTkwYjc5ZTlmNDA4OTM1
ZWU0YWM3YTFmZjNhNzIyYWZmODBkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwKQEAg
LTAsMCArMSw0OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgIDxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50RWRp
dGFibGU+PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlNwZWxsaW5n
IHNob3VsZCBpZ25vcmUgd2hpdGVzcGFjZS4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51
YWxseSwgdHlwZSAnaGVsbG8sIHdlbGxjb21lIGhvbWUuJywgc2VsZWN0ICcgd2VsbGNvbWUgJywg
YW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gIiArCisgICAgICAgICAgICAiVGhl
IHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBzcGVsbCBjaGVjayBzdWdn
ZXN0aW9ucy4iKTsKKworaW5pdFNwZWxsVGVzdCgiZGVzdGluYXRpb24iLCAiaGVsbG8sIHdlbGxj
b21lIGhvbWUuIiwgZnVuY3Rpb24odGV4dE5vZGUpIHsKKyAgICBzcGVsbGluZ01hcmtlclJhbmdl
ID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5n
KCkiLCAid2VsbGNvbWUiKTsKKworICAgIC8vIFNlbGVjdCB0aGUgdGV4dCAiIHdlbGxjb21lICIg
d2l0aCBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlLgorICAgIHZhciByYW5nZVdpdGhXaGl0ZXNwYWNl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZVdpdGhXaGl0ZXNwYWNlLnNldFN0
YXJ0KHRleHROb2RlLCA2KTsKKyAgICByYW5nZVdpdGhXaGl0ZXNwYWNlLnNldEVuZCh0ZXh0Tm9k
ZSwgMTYpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2VXaXRoV2hpdGVzcGFjZSk7CisK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgIiB3ZWxsY29tZSAiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gIiB3ZWxsY29t
ZSAiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9m
ZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDgwOworICAg
IHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9u
Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2Vu
ZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBt
ZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIp
LCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFu
Z2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCki
LCAiIHdlbGxjb21lICIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVF
bGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKK30p
OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDlkZjYxZmQ1N2YyZmVlZjhh
YzM0MGIxYjc5MmNmZTEyZjIzNTE5MDMuLjgzNmZmOGIyNzFlNDFiNTU4ZWE5YWIyNTI1ZDY5NDIx
MDVmY2RiM2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTMxNiw2ICszMTYsMTkgQEAgd2Via2l0Lm9yZy9iLzEwNjQwNSBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3JlbWVtYmVyLWJhZC1wYXNzd29yZC5odG1sIFsgRmFpbHUKIAogd2Vi
a2l0Lm9yZy9iLzEwNzM1NiBmYXN0L2Nzcy9zdGlja3kvc3RpY2t5LXRvcC16b29tZWQuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogCisjIE1hYyBXSzIgZG9lcyBub3QgaW1wbGVtZW50IHNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkLgord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbCBbIFNraXAgXQor
d2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlj
a2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4
MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13
b3Jkcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcv
Yi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0
bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcv
Yi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13
b3JkLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4
MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24u
aHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9i
LzEwODM3MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rp
b24uaHRtbCBbIFNraXAgXQorCiAjIyMgRU5EIE9GICgxKSBDbGFzc2lmaWVkIGZhaWx1cmVzIHdp
dGggYnVnIHJlcG9ydHMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3Jk
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjlhZTkwMjhmNWQ5OTNhNzA2ZDA3ZjA3ZTZhMTE1
MTg4OWJkNjI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyMCBAQAorU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2Vk
IG1pc3NwZWxsaW5ncy4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nLCBk
b3VibGUtY2xpY2sgb24gJ3dlbGxjb21lJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVj
dGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxs
IGNoZWNrIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2Uu
dG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIGlzICJ3ZWxsY29tZSIKK0ZBSUwgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVu
dUVsZW1lbnRzLmxlbmd0aCAtIDFdIHNob3VsZCBiZSB3ZWxjb21lLiBXYXMgPHNlcGFyYXRvcj4u
CitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSAiCitQQVNTIHNwZWxsaW5n
TWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSAiCitGQUlMIGNvbnRleHRNZW51RWxlbWVu
dHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBzaG91bGQgYmUgd2VsY29tZS4gV2Fz
IDxzZXBhcmF0b3I+LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCit3ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVu
ZGVyc2NvcmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGIzNjkxZWJjOWFkMTRmNzQzM2U0N2EwOWVhODYxY2Y2
NmY0MDBjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jl
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9y
IGRvdWJsZS1jbGlja2VkIG1pc3NwZWxsZWQgd29yZHMgd2l0aCB1bmRlcnNjb3Jlcy4gVG8gdGVz
dCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWVfIGhvbWUuJywgZG91YmxlLWNsaWNrIG9uICd3ZWxs
Y29tZV8nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNj
ZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitGQUlMIHNwZWxsaW5nTWFya2VyUmFu
Z2UudG9TdHJpbmcoKSBzaG91bGQgYmUgd2VsbGNvbWUuIFdhcyB3ZWxsY29tZV8uCitQQVNTIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZV8iCitGQUlMIHNwZWxsaW5nTWFya2VyUmFu
Z2UudG9TdHJpbmcoKSBzaG91bGQgYmUgd2VsbGNvbWUuIFdhcyB3ZWxsY29tZV8uCitQQVNTIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZV8iCitGQUlMIGNvbnRl
eHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBzaG91bGQgYmUg
d2VsY29tZS4gV2FzIDxzZXBhcmF0b3I+LgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAi
d2VsbGNvbWVfICIKK0ZBSUwgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIHNob3VsZCBi
ZSB3ZWxsY29tZS4gV2FzIHdlbGxjb21lXy4KK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkgaXMgIndlbGxjb21lXyAiCitGQUlMIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4
dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBzaG91bGQgYmUgd2VsY29tZS4gV2FzIDxzZXBhcmF0
b3I+LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3
ZWxsY29tZV8gaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjc5YWFjZjcyZTYyYmJmM2YxYjc2ZjAzZWMzZjUwZjhkYjliZmIyYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTAgQEAKK1NwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIG11
bHRpLXdvcmQgbWlzc3BlbGxpbmcgZXhhY3RseS4gVG8gdGVzdCBtYW51YWxseSwgZW5hYmxlICdB
c2sgR29vZ2xlIGZvciBTdWdnZXN0aW9ucycgaW4gQ2hyb21lLCB0eXBlICdJdCBzaG91bGQgYmUg
dXBwZXIgY2FzZS4nLCBzZWxlY3QgJ3VwcGVyIGNhc2UnLCBhbmQgY29udGV4dC1jbGljayBvbiB0
aGUgc2VsZWN0aW9uLlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93
cyBzcGVsbGluZyBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K0ZBSUwgU3BlbGxjaGVjayB0aW1lZCBvdXQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFj
dGx5LXNlbGVjdGVkLXdvcmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZWRiNDZmNWNjNmJkODljMDJhZjUwYzAyOGI2NDBjN2VmOWRiMjBm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE4IEBACitTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgdGhl
IG1pc3NwZWxsZWQgd29yZCBleGFjdGx5LiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29t
ZSBob21lLicsIHNlbGVjdCAnd2VsbGNvbWUnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2Vs
ZWN0aW9uLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3Bl
bGxpbmcgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50
b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIndlbGxjb21lIgorRkFJTCBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51
RWxlbWVudHMubGVuZ3RoIC0gMV0gc2hvdWxkIGJlIHdlbGNvbWUuIFdhcyA8c2VwYXJhdG9yPi4K
K1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImhvbWUiCitQQVNTIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJob21lIgorUEFTUyBjb250ZXh0TWVu
dUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBhcmF0b3I+
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxs
Y29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1z
aG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmNj
YjNmNjA5ZTgyYzIxMzI0MjEwOWFmMTQzMDNmMzM2NTkzMjRkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxk
LXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorU3Bl
bGwgY2hlY2sgc2hvdWxkIHNlbGVjdCBtdWx0aS13b3JkIG1pc3NwZWxsaW5ncyBvbiBjb250ZXh0
IGNsaWNrLiBUbyB0ZXN0IG1hbnVhbGx5LCBlbmFibGUgJ0FzayBHb29nbGUgZm9yIFN1Z2dlc3Rp
b25zJyBpbiBDaHJvbWUsIHR5cGUgJ0l0IHNob3VsZCBiZSB1cHBlciBjYXNlLicsIGFuZCBjb250
ZXh0LWNsaWNrIG9uIHRoZSB3b3JkICd1cHBlcicuIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gJ3Vw
cGVyIGNhc2UnIHdhcyBzZWxlY3RlZCBhZnRlciBjb250ZXh0IGNsaWNrLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworRkFJTCBTcGVsbGNoZWNrIHRpbWVkIG91dAorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitJdCBzaG91bGQgYmUgdXBw
ZXIgY2FzZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxk
LXNlbGVjdC1zaW5nbGUtd29yZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJmZTM2ZTFhMGM3
Y2IxNDdmZDA5YzQzM2IyZWY3MzQ0YmM2OTQwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qt
c2luZ2xlLXdvcmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1NwZWxsIGNoZWNrIHNl
bGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLiBUbyB0ZXN0IG1hbnVh
bGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicgYW5kIGNvbnRleHQtY2xpY2sgb24gJ3dlbGxjb21l
Jy4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiAnd2VsbGNvbWUnIGlzIHNlbGVjdGVkIGFmdGVyIHRo
ZSBjb250ZXh0IGNsaWNrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBz
cGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorRkFJTCB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBzaG91bGQgYmUgd2VsbGNvbWUuIFdhcyAuCitGQUlMIGNvbnRleHRNZW51RWxlbWVu
dHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBzaG91bGQgYmUgd2VsY29tZS4gV2Fz
IDxzZXBhcmF0b3I+LgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAi
IgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyBjb250
ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIjxzZXBh
cmF0b3I+IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
Cit3ZWxsY29tZSBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYy
NDA0MjA0MDYzYmNhZTRlMWMzMGY2YzI3MmM5MWZiZGU0OWY5Y2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRo
LXB1bmN0dWF0aW9uLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorUHVu
Y3R1YXRpb24gbWFya3Mgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcg
c2hvdWxkIGlnbm9yZSB0aGVtLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSEnLCBz
ZWxlY3QgJ3dlbGxjb21lIScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRo
ZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgc3BlbGwgY2hlY2sgc3Vn
Z2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5n
TWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIGlzICJ3ZWxsY29tZSEiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmco
KSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlz
ICJ3ZWxsY29tZSEiCitGQUlMIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50
cy5sZW5ndGggLSAxXSBzaG91bGQgYmUgd2VsY29tZS4gV2FzIDxzZXBhcmF0b3I+LgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSEKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNl
bGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODBmOGRkZWNkZjVjMTRhNDBkMzhlNTM3
ZTUyZjU1MTljMDc2NmM1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24t
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1VuZGVyc2NvcmVzIHNob3VsZCBiZSB0cmVh
dGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4gVG8gdGVzdCBt
YW51YWxseSwgdHlwZSAnSGksIF93ZWxsY29tZV8gaG9tZS4nLCBzZWxlY3QgJ193ZWxsY29tZV8n
LCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNjZWVkcyB3
aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworRkFJTCBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3Ry
aW5nKCkgc2hvdWxkIGJlIHdlbGxjb21lLiBXYXMgX3dlbGxjb21lXy4KK1BBU1Mgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkgaXMgIl93ZWxsY29tZV8iCitGQUlMIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSBzaG91bGQgYmUgd2VsbGNvbWUuIFdhcyBfd2VsbGNvbWVfLgorUEFTUyB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiX3dlbGxjb21lXyIKK0ZBSUwgY29udGV4dE1l
bnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIHNob3VsZCBiZSB3ZWxj
b21lLiBXYXMgPHNlcGFyYXRvcj4uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKK0hpLCBfd2VsbGNvbWVfIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3Bh
Y2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24tZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIzMTRmYjE3YmFlNTY4MWJlOTkyMDFjNjUxMDIyOWUzMzhkYjNlMjIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE0IEBACitTcGVsbGluZyBzaG91bGQgaWdub3JlIHdoaXRlc3BhY2UuIFRvIHRlc3Qg
bWFudWFsbHksIHR5cGUgJ2hlbGxvLCB3ZWxsY29tZSBob21lLicsIHNlbGVjdCAnIHdlbGxjb21l
ICcsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRz
IHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIGlzICIgd2VsbGNvbWUgIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkg
aXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAi
IHdlbGxjb21lICIKK0ZBSUwgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRz
Lmxlbmd0aCAtIDFdIHNob3VsZCBiZSB3ZWxjb21lLiBXYXMgPHNlcGFyYXRvcj4uCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK2hlbGxvLCB3ZWxsY29t
ZSBob21lLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185594</attachid>
            <date>2013-01-30 15:27:23 -0800</date>
            <delta_ts>2013-01-30 16:58:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106815-20130130152407.patch</filename>
            <type>text/plain</type>
            <size>79056</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDFmZjUzYWJhODc3MzYwOGFlZmY5ZGFiYjkwMzc4ZjFjNTk5OTk5MmIuLmQzZTliN2FiNjUzZWVk
NGU5MGQ3YjYzNjcxYWE0NWJkZTVmYjA0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTMtMDEtMzAgIFJvdXNsYW4gU29sb21ha2hpbiAgPHJvdXNsYW5A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEZpeGVzIGZvciBzcGVsbGNoZWNrIGJlaGF2aW9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4MTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggc3BlbGxj
aGVjayB0byBiZWhhdmUgYXMgZm9sbG93czoKKyAgICAgICAgLSBTcGVsbGNoZWNrIHNlbGVjdHMg
dGhlIG1pc3NwZWxsZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLiAKKyAgICAgICAgLSBTcGVsbGlu
ZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBl
eGFjdGx5LiAKKyAgICAgICAgLSBJZiB0aGUgd29yZCBpcyBub3QgbWlzc3BlbGxlZCwgdGhlcmUg
c2hvdWxkIGJlIG5vIHNwZWxsaW5nIG9wdGlvbnMgaW4gdGhlIGNvbnRleHQgbWVudS4gCisgICAg
ICAgIC0gU3BlbGxjaGVjayBzaG91bGQgc2VsZWN0IG11bHRpLXdvcmQgbWlzc3BlbGxpbmdzIG9u
IGNvbnRleHQgY2xpY2suIAorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhl
IHVzZXIgc2VsZWN0cyBhIG11bHRpLXdvcmQgbWlzc3BlbGxpbmcgZXhhY3RseS4gCisgICAgICAg
IC0gU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2VkIG1pc3NwZWxsaW5ncy4g
CisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB3aGl0ZXNwYWNlLiAKKyAgICAgICAg
LSBVbmRlcnNjb3JlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBz
aG91bGQgaWdub3JlIHRoZW0uIAorICAgICAgICAtIFB1bmN0dWF0aW9uIG1hcmtzIHNob3VsZCBi
ZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25vcmUgdGhlbS4gCisg
ICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIGEg
cGFydCBvZiBtaXNzcGVsbGluZy4gCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2Fi
bGVkIHdoZW4gdXNlciBzZWxlY3RzIG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmds
ZSBtaXNzcGVsbGluZy4gCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLmh0bWwKKyAgICAgICAgICAg
ICAgIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC5odG1sCisg
ICAgICAgICAgICAgICBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQt
bXVsdGlwbGUtd29yZHMuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWwKKyAgICAgICAgICAgICAg
IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5o
dG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxl
Y3Qtc2luZ2xlLXdvcmQuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1zdWJ3b3JkLXNlbGVjdGlvbi5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLmh0bWwKKyAgICAgICAgICAg
ICAgIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi5o
dG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVz
cGFjZS1zZWxlY3Rpb24uaHRtbAorCisgICAgICAgICogc3JjL0NvbnRleHRNZW51Q2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpJc1doaXRlU3BhY2VP
clB1bmN0dWF0aW9uKTogQWRkZWQgdXRpbGl0eSBmdW5jdGlvbiB0byBkZXRlY3Qgd2hpdGVzcGFj
ZSBvciBwdW5jdHVhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnRJbXBs
OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6IE1vZGlmaWVkIHRvIGZpeCBzcGVsbGNo
ZWNrIGJlaGF2aW9yLgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUltcGw6OnJlcGxhY2VNaXNzcGVsbGVkUmFuZ2UpOiBGaXhlZCB0byBy
ZXBsYWNlIHRoZSBjb3JyZWN0IHJhbmdlLiBDaHJvbWl1bSB3aWxsIHVzZSB0aGlzIG1ldGhvZCBp
bnN0ZWFkIG9mIHJlcGxhY2VSYW5nZSB3aGVuIGNvcnJlY3RpbmcgbWlzc3BlbGxpbmdzLgorCiAy
MDEzLTAxLTMwICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBJbXBsZW1lbnQgV2hlZWxFdmVudCBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKaW5kZXggMzM5NTZiY2E3
ODRlMDE5NDU5YjJmOTNkNGI0NjAxYzU2ZWY1MDMyNy4uN2EzZjA1Mjc0NWM3ZDUzYWIxY2ZkNDU1
MDdhMGNiZGQ3YTEzYWE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAi
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVk
ZSAiRXZlbnRIYW5kbGVyLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNs
dWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKQEAgLTc4LDYgKzc5LDEyIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorLy8gUmV0dXJucyB0cnVlIGZvciB3
aGl0ZXNwYWNlIGFuZCBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLiBSZXR1cm5zIGZhbHNlIGZvciBl
dmVyeSBvdGhlciB0eXBlIG9mIGNoYXJhY3Rlci4KK3N0YXRpYyBib29sIElzV2hpdGVTcGFjZU9y
UHVuY3R1YXRpb24oVUNoYXIgYykKK3sKKyAgICByZXR1cm4gV1RGOjpVbmljb2RlOjppc1NlcGFy
YXRvclNwYWNlKGMpIHx8IFdURjo6VW5pY29kZTo6aXNQdW5jdChjKTsKK30KKwogLy8gRmlndXJl
IG91dCB0aGUgVVJMIG9mIGEgcGFnZSBvciBzdWJmcmFtZS4gUmV0dXJucyB8cGFnZV90eXBlfCBh
cyB0aGUgdHlwZSwKIC8vIHdoaWNoIGluZGljYXRlcyBwYWdlIG9yIHN1YmZyYW1lLCBvciBDb250
ZXh0Tm9kZVR5cGU6Ok5PTkUgaWYgdGhlIFVSTCBjb3VsZCBub3QKIC8vIGJlIGRldGVybWluZWQg
Zm9yIHNvbWUgcmVhc29uLgpAQCAtMTAyLDggKzEwOSw4IEBAIHN0YXRpYyBib29sIGlzQVNpbmds
ZVdvcmQoY29uc3QgU3RyaW5nJiB0ZXh0KQogfQogCiAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0
IG1pc3NwZWxsZWQgd29yZCBvbiB3aGljaCBjb250ZXh0IG1lbnUKLS8vIGlzIHRvIGJlIGV2b2xr
ZWQuIFRoaXMgZnVuY3Rpb24gYWxzbyBzZXRzIHRoZSB3b3JkIG9uIHdoaWNoIGNvbnRleHQgbWVu
dQotLy8gaGFzIGJlZW4gZXZva2VkIHRvIGJlIHRoZSBzZWxlY3RlZCB3b3JkLCBhcyByZXF1aXJl
ZC4gVGhpcyBmdW5jdGlvbiBjaGFuZ2VzCisvLyBpcyB0byBiZSBpbnZva2VkLiBUaGlzIGZ1bmN0
aW9uIGFsc28gc2V0cyB0aGUgd29yZCBvbiB3aGljaCBjb250ZXh0IG1lbnUKKy8vIGhhcyBiZWVu
IGludm9rZWQgdG8gYmUgdGhlIHNlbGVjdGVkIHdvcmQsIGFzIHJlcXVpcmVkLiBUaGlzIGZ1bmN0
aW9uIGNoYW5nZXMKIC8vIHRoZSBzZWxlY3Rpb24gb25seSB3aGVuIHRoZXJlIHdlcmUgbm8gc2Vs
ZWN0ZWQgY2hhcmFjdGVycyBvbiBPUyBYLgogc3RhdGljIFN0cmluZyBzZWxlY3RNaXNzcGVsbGVk
V29yZChjb25zdCBDb250ZXh0TWVudSogZGVmYXVsdE1lbnUsIEZyYW1lKiBzZWxlY3RlZEZyYW1l
KQogewpAQCAtMjc0LDM2ICsyODEsMzQgQEAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4
dE1lbnVDbGllbnRJbXBsOjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcygKICNlbmRpZgog
ICAgICAgICAvLyBXaGVuIENocm9tZSBlbmFibGVzIGFzeW5jaHJvbm91cyBzcGVsbGNoZWNraW5n
LCBpdHMgc3BlbGxjaGVja2VyIGFkZHMgc3BlbGxpbmcgbWFya2VycyB0byBtaXNzcGVsbGVkCiAg
ICAgICAgIC8vIHdvcmRzIGFuZCBhdHRhY2hlcyBzdWdnZXN0aW9ucyB0byB0aGVzZSBtYXJrZXJz
IGluIHRoZSBiYWNrZ3JvdW5kLiBUaGVyZWZvcmUsIHdoZW4gYSB1c2VyIHJpZ2h0LWNsaWNrcwot
ICAgICAgICAvLyBhIG1vdXNlIG9uIGEgd29yZCwgQ2hyb21lIGp1c3QgbmVlZHMgdG8gZmluZCBh
IHNwZWxsaW5nIG1hcmtlciBvbiB0aGUgd29yZCBpbnN0cmVhZCBvZiBzcGVsbGNoZWNraW5nIGl0
LgorICAgICAgICAvLyBhIG1vdXNlIG9uIGEgd29yZCwgQ2hyb21lIGp1c3QgbmVlZHMgdG8gZmlu
ZCBhIHNwZWxsaW5nIG1hcmtlciBvbiB0aGUgd29yZCBpbnN0ZWFkIG9mIHNwZWxsY2hlY2tpbmcg
aXQuCiAgICAgICAgIGlmIChzZWxlY3RlZEZyYW1lLT5zZXR0aW5ncygpICYmIHNlbGVjdGVkRnJh
bWUtPnNldHRpbmdzKCktPmFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpIHsKICAg
ICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gc2VsZWN0ZWRGcmFtZS0+c2Vs
ZWN0aW9uKCktPnNlbGVjdGlvbigpOwotICAgICAgICAgICAgYm9vbCBzaG91bGRVcGRhdGVTZWxl
Y3Rpb24gPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldE9yUmFuZ2Uo
KSkgewotICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHNlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFdvcmRHcmFudWxh
cml0eSk7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZFVwZGF0ZVNlbGVjdGlvbiA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2Ug
PSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKLSAgICAgICAgICAgICAgICBWZWN0b3I8
RG9jdW1lbnRNYXJrZXIqPiBtYXJrZXJzID0gc2VsZWN0ZWRGcmFtZS0+ZG9jdW1lbnQoKS0+bWFy
a2VycygpLT5tYXJrZXJzSW5SYW5nZShyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxs
aW5nIHwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIpOworICAgICAgICAgICAgICAgIC8vIENhcmV0
IGFuZCByYW5nZSBzZWxlY3Rpb25zIGFsd2F5cyByZXR1cm4gdmFsaWQgbm9ybWFsaXplZCByYW5n
ZXMuCisgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNlbGVj
dGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICAgICAgICAgIC8vIENsb25pbmcgYSBy
YW5nZSBmYWlscyBvbmx5IGZvciBpbnZhbGlkIHJhbmdlcy4KKyAgICAgICAgICAgICAgICBSZWZQ
dHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gc2VsZWN0aW9uUmFuZ2UtPmNsb25lUmFuZ2UoQVNTRVJU
X05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyKj4g
bWFya2VycyA9IHNlbGVjdGVkRnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2Vyc0lu
UmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyB8IERv
Y3VtZW50TWFya2VyOjpHcmFtbWFyKTsKICAgICAgICAgICAgICAgICBpZiAobWFya2Vycy5zaXpl
KCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICBpZiAobWFya2Vyc1swXS0+c3RhcnRPZmZz
ZXQoKSAhPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpIHx8IG1h
cmtlcnNbMF0tPmVuZE9mZnNldCgpICE9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS0+ZW5k
T2Zmc2V0KCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vycy5jbGVhcigpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAobWFya2Vycy5zaXplKCkgPT0gMSkg
ewotICAgICAgICAgICAgICAgICAgICByYW5nZS0+c2V0U3RhcnQocmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCksIG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBy
YW5nZS0+c2V0RW5kKHJhbmdlLT5lbmRDb250YWluZXIoKSwgbWFya2Vyc1swXS0+ZW5kT2Zmc2V0
KCkpOwotICAgICAgICAgICAgICAgICAgICBkYXRhLm1pc3NwZWxsZWRXb3JkID0gcmFuZ2UtPnRl
eHQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1hcmtlcnNbMF0tPmRlc2NyaXB0aW9uKCku
bGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dl
c3Rpb25zOwotICAgICAgICAgICAgICAgICAgICAgICAgbWFya2Vyc1swXS0+ZGVzY3JpcHRpb24o
KS5zcGxpdCgnXG4nLCBzdWdnZXN0aW9ucyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRh
LmRpY3Rpb25hcnlTdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zOwotICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKG1fd2ViVmlldy0+c3BlbGxDaGVja0NsaWVudCgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbWlzc3BlbGxlZE9mZnNldCwgbWlzc3BlbGxlZExlbmd0aDsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fd2ViVmlldy0+c3BlbGxDaGVja0NsaWVudCgpLT5zcGVs
bENoZWNrKGRhdGEubWlzc3BlbGxlZFdvcmQsIG1pc3NwZWxsZWRPZmZzZXQsIG1pc3NwZWxsZWRM
ZW5ndGgsICZkYXRhLmRpY3Rpb25hcnlTdWdnZXN0aW9ucyk7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihyYW5n
ZS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRVcGRhdGVTZWxlY3Rpb24g
JiYgc2VsZWN0ZWRGcmFtZS0+c2VsZWN0aW9uKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihzZWxl
Y3Rpb24pKQorICAgICAgICAgICAgICAgICAgICBtYXJrZXJSYW5nZS0+c2V0U3RhcnQobWFya2Vy
UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkpOworICAg
ICAgICAgICAgICAgICAgICBtYXJrZXJSYW5nZS0+c2V0RW5kKG1hcmtlclJhbmdlLT5lbmRDb250
YWluZXIoKSwgbWFya2Vyc1swXS0+ZW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0
aW9uID0gVmlzaWJsZVNlbGVjdGlvbihtYXJrZXJSYW5nZS5nZXQoKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxlY3RlZEZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKHNlbGVj
dGlvbiwgV29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlv
blJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblJhbmdlLT50ZXh0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCZJc1doaXRlU3BhY2VPclB1bmN0dWF0aW9uKSA9PSBtYXJrZXJSYW5nZS0+
dGV4dCgpLnN0cmlwV2hpdGVTcGFjZSgmSXNXaGl0ZVNwYWNlT3JQdW5jdHVhdGlvbikpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGEubWlzc3BlbGxlZFdvcmQgPSBtYXJrZXJSYW5nZS0+
dGV4dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcmtlcnNbMF0tPmRlc2NyaXB0
aW9uKCkubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBzdWdnZXN0aW9uczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJzWzBd
LT5kZXNjcmlwdGlvbigpLnNwbGl0KCdcbicsIHN1Z2dlc3Rpb25zKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhLmRpY3Rpb25hcnlTdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtX3dlYlZpZXctPnNwZWxsQ2hlY2tD
bGllbnQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaXNzcGVsbGVkT2Zm
c2V0LCBtaXNzcGVsbGVkTGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fd2Vi
Vmlldy0+c3BlbGxDaGVja0NsaWVudCgpLT5zcGVsbENoZWNrKGRhdGEubWlzc3BlbGxlZFdvcmQs
IG1pc3NwZWxsZWRPZmZzZXQsIG1pc3NwZWxsZWRMZW5ndGgsICZkYXRhLmRpY3Rpb25hcnlTdWdn
ZXN0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCA1YmFmMDhl
YzI3N2RmZjFkZGJkMGY1ZWEyZTE0ZWRiYmI3NjdlNjRjLi5mOWI1YTRjOTU1NzcwNWE3ZGUyNDA2
M2MwY2Y1NDgyYmM2ZjJhODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5jcHAKQEAgLTEzMDIsMTEgKzEzMDIsMTYgQEAgdm9pZCBXZWJGcmFtZUltcGw6OnJl
cGxhY2VNaXNzcGVsbGVkUmFuZ2UoY29uc3QgV2ViU3RyaW5nJiB0ZXh0KQogICAgIFZlY3RvcjxE
b2N1bWVudE1hcmtlcio+IG1hcmtlcnMgPSBmcmFtZSgpLT5kb2N1bWVudCgpLT5tYXJrZXJzKCkt
Pm1hcmtlcnNJblJhbmdlKGNhcmV0UmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGlu
ZyB8IERvY3VtZW50TWFya2VyOjpHcmFtbWFyKTsKICAgICBpZiAobWFya2Vycy5zaXplKCkgPCAx
IHx8IG1hcmtlcnNbMF0tPnN0YXJ0T2Zmc2V0KCkgPj0gbWFya2Vyc1swXS0+ZW5kT2Zmc2V0KCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZSgpLT5zZWxlY3Rpb24oKS0+
cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIG1hcmtlcnNbMF0tPnN0YXJ0
T2Zmc2V0KCksIG1hcmtlcnNbMF0tPmVuZE9mZnNldCgpIC0gbWFya2Vyc1swXS0+c3RhcnRPZmZz
ZXQoKSk7Ci0gICAgaWYgKCFtYXJrZXJSYW5nZS5nZXQoKSB8fCAhZnJhbWUoKS0+c2VsZWN0aW9u
KCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihtYXJrZXJSYW5nZS5nZXQoKSkpCisgICAgRXhjZXB0
aW9uQ29kZSBleGNlcHRpb25Db2RlOworICAgIFJlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2UgPSBj
YXJldFJhbmdlLT5jbG9uZVJhbmdlKGV4Y2VwdGlvbkNvZGUpOworICAgIGlmICghZXhjZXB0aW9u
Q29kZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1hcmtlclJhbmdlLT5zZXRTdGFydChtYXJrZXJS
YW5nZS0+c3RhcnRDb250YWluZXIoKSwgbWFya2Vyc1swXS0+c3RhcnRPZmZzZXQoKSk7CisgICAg
bWFya2VyUmFuZ2UtPnNldEVuZChtYXJrZXJSYW5nZS0+ZW5kQ29udGFpbmVyKCksIG1hcmtlcnNb
MF0tPmVuZE9mZnNldCgpKTsKKyAgICBpZiAoIWZyYW1lKCktPnNlbGVjdGlvbigpLT5zaG91bGRD
aGFuZ2VTZWxlY3Rpb24obWFya2VyUmFuZ2UuZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAgICAg
ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihtYXJrZXJSYW5nZS5nZXQoKSwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHkpOwotICAgIGZyYW1lKCktPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0
aW9uV2l0aFRleHQodGV4dCwgZmFsc2UsIHRydWUpOworICAgIGZyYW1lKCktPmVkaXRvcigpLT5y
ZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgZmFsc2UsIGZhbHNlKTsKIH0KIAogYm9vbCBX
ZWJGcmFtZUltcGw6Omhhc1NlbGVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjIxZmZiMGE5YTZiNDBhYmM4ZGMyZTY1ZDUx
OGE2OTZhMTMyMDE2Mi4uNmViMzJlZDQzODg2NmE1MzYzMGFkMTAzMGY5N2M0ZjM5ZDk5MWVkNSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIzIEBACisyMDEzLTAxLTMwICBSb3VzbGFuIFNvbG9tYWtoaW4gIDxyb3VzbGFuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBBZGQgdHdvLXdvcmQgbWlzc3BlbGxpbmcgJ3VwcGVyIGNhc2Un
IHRvIG1vY2sgc3BlbGxjaGVja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDY4MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTb21lIGxheW91dCB0ZXN0cyB2ZXJpZnkgc3BlbGxjaGVjayBiZWhhdmlv
ciB3aGVuIG11bHRpcGxlIHdvcmRzIGFyZQorICAgICAgICBtYXJrZWQgYXMgYSBzaW5nbGUgbWlz
c3BlbGxpbmcuIFRoaXMgY2hhbmdlIGFkZHMgYSB0d28td29yZCBtaXNzcGVsbGluZworICAgICAg
ICAndXBwZXIgY2FzZScgdG8gdGhlIG1vY2sgc3BlbGxjaGVja2VyIHVzZWQgYnkgbGF5b3V0IHRl
c3RzLgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHkt
c2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLmh0bWwKKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNr
LmNwcDoKKyAgICAgICAgKE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZCk6IE1vZGlmaWVk
IHRvIGhhbmRsZSBzcGFjZXMgaW4gbWlzc3BlbGxpbmdzLgorICAgICAgICAoTW9ja1NwZWxsQ2hl
Y2s6OmluaXRpYWxpemVJZk5lZWRlZCk6IE1vZGlmaWVkIHRvIHVzZSBhIHZlY3RvciBpbnN0ZWFk
IG9mIGEgaGFzaCB0YWJsZS4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5oOgorICAgICAgICAoTW9ja1NwZWxsQ2hlY2spOiBD
aGFuZ2VkIG1pc3NwZWxsaW5ncyBjb250YWluZXIgZnJvbSBoYXNoIHRhYmxlIHRvIHZlY3Rvci4K
KwogMjAxMy0wMS0zMCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIG1vdmUgY3VzdG9tIHBvbGljeSBkZWxlZ2F0ZSB0byBUZXN0UnVu
bmVyIGxpYnJhcnkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcAppbmRleCA3NTkzYzcxOTA0
MjM1MGQyYzIxZWFhMTlkYWI5ZjVhOTk5OTBhODgxLi5lN2VmZWVlZGE0MzQ5ODBjNDFiODIyYjdh
MDZiYmNkYTc5YTkxYjdjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suY3BwCkBAIC02OSwy
NyArNjksMzQgQEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dvcmQoY29uc3QgV2Vi
U3RyaW5nJiB0ZXh0LCBpbnQqIG1pc3NwZWxsZWRPZmZzZXQKICAgICAgICAgLy8gKFRoaXMgaXMg
YSBzaW1wbGUgdmVyc2lvbiBvZiBvdXIgU3BlbGxDaGVja1dvcmRJdGVyYXRvciBjbGFzcy4pCiAg
ICAgICAgIC8vIElmIHRoZSBnaXZlbiBzdHJpbmcgZG9lc24ndCBpbmNsdWRlIGFueSBBU0NJSSBj
aGFyYWN0ZXJzLCB3ZSBjYW4gdHJlYXQgdGhlCiAgICAgICAgIC8vIHN0cmluZyBhcyB2YWxpZCBv
bmUuCi0gICAgICAgIC8vIFVuZm9ydHVuYXRlbHksIFRoaXMgaW1wbGVtZW50YXRpb24gc3BsaXRz
IGEgY29udHJhY3Rpb24sIGkuZS4gImlzbid0IiBpcwotICAgICAgICAvLyBzcGxpdCBpbnRvIHR3
byBwaWVjZXMgImlzbiIgYW5kICJ0Ii4gVGhpcyBpcyBPSyBiZWNhdXNlIHdlYmtpdCB0ZXN0cwot
ICAgICAgICAvLyBkb24ndCBoYXZlIG1pc3NwZWxsZWQgY29udHJhY3Rpb25zLgogICAgICAgICBp
bnQgd29yZE9mZnNldCA9IHN0cmluZ1RleHQuZmluZChpc0FTQ0lJQWxwaGEpOwogICAgICAgICBp
ZiAod29yZE9mZnNldCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBp
bnQgd29yZEVuZCA9IHN0cmluZ1RleHQuZmluZChpc05vdEFTQ0lJQWxwaGEsIHdvcmRPZmZzZXQp
OwotICAgICAgICBpbnQgd29yZExlbmd0aCA9IHdvcmRFbmQgPT0gLTEgPyBzdGF0aWNfY2FzdDxp
bnQ+KHN0cmluZ1RleHQubGVuZ3RoKCkpIC0gd29yZE9mZnNldCA6IHdvcmRFbmQgLSB3b3JkT2Zm
c2V0OworICAgICAgICBpbnQgbWF4V29yZExlbmd0aCA9IHN0YXRpY19jYXN0PGludD4oc3RyaW5n
VGV4dC5sZW5ndGgoKSkgLSB3b3JkT2Zmc2V0OworICAgICAgICBpbnQgd29yZExlbmd0aDsKKyAg
ICAgICAgV1RGOjpTdHJpbmcgd29yZDsKIAogICAgICAgICAvLyBMb29rIHVwIG91ciBtaXNzcGVs
bGVkLXdvcmQgdGFibGUgdG8gY2hlY2sgaWYgdGhlIGV4dHJhY3RlZCB3b3JkIGlzIGEKICAgICAg
ICAgLy8ga25vd24gbWlzc3BlbGxlZCB3b3JkLCBhbmQgcmV0dXJuIHRoZSBvZmZzZXQgYW5kIHRo
ZSBsZW5ndGggb2YgdGhlCiAgICAgICAgIC8vIGV4dHJhY3RlZCB3b3JkIGlmIHRoaXMgd29yZCBp
cyBhIGtub3duIG1pc3NwZWxsZWQgd29yZC4KICAgICAgICAgLy8gKFNlZSB0aGUgY29tbWVudCBp
biBNb2NrU3BlbGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKCkgd2h5IHdlIHVzZSBhCiAgICAg
ICAgIC8vIG1pc3NwZWxsZWQtd29yZCB0YWJsZS4pCi0gICAgICAgIFdURjo6U3RyaW5nIHdvcmQg
PSBzdHJpbmdUZXh0LnN1YnN0cmluZyh3b3JkT2Zmc2V0LCB3b3JkTGVuZ3RoKTsKLSAgICAgICAg
aWYgKG1fbWlzc3BlbGxlZFdvcmRzLmNvbnRhaW5zKHdvcmQpKSB7Ci0gICAgICAgICAgICAqbWlz
c3BlbGxlZE9mZnNldCA9IHdvcmRPZmZzZXQgKyBza2lwcGVkTGVuZ3RoOwotICAgICAgICAgICAg
Km1pc3NwZWxsZWRMZW5ndGggPSB3b3JkTGVuZ3RoOwotICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9taXNzcGVsbGVkV29yZHMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgIHdvcmRMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KG1fbWlzc3BlbGxlZFdv
cmRzLmF0KGkpLmxlbmd0aCgpKSA+IG1heFdvcmRMZW5ndGggPyBtYXhXb3JkTGVuZ3RoIDogc3Rh
dGljX2Nhc3Q8aW50PihtX21pc3NwZWxsZWRXb3Jkcy5hdChpKS5sZW5ndGgoKSk7CisgICAgICAg
ICAgICB3b3JkID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcod29yZE9mZnNldCwgd29yZExlbmd0aCk7
CisgICAgICAgICAgICBpZiAod29yZCA9PSBtX21pc3NwZWxsZWRXb3Jkcy5hdChpKSAmJiAoc3Rh
dGljX2Nhc3Q8aW50PihzdHJpbmdUZXh0Lmxlbmd0aCgpKSA9PSB3b3JkT2Zmc2V0ICsgd29yZExl
bmd0aCB8fCBpc05vdEFTQ0lJQWxwaGEoc3RyaW5nVGV4dFt3b3JkT2Zmc2V0ICsgd29yZExlbmd0
aF0pKSkgeworICAgICAgICAgICAgICAgICptaXNzcGVsbGVkT2Zmc2V0ID0gd29yZE9mZnNldCAr
IHNraXBwZWRMZW5ndGg7CisgICAgICAgICAgICAgICAgKm1pc3NwZWxsZWRMZW5ndGggPSB3b3Jk
TGVuZ3RoOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAKKyAgICAgICAgaWYgKCptaXNzcGVsbGVkTGVuZ3RoID4gMCkKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGludCB3b3JkRW5kID0gc3RyaW5nVGV4dC5maW5kKGlzTm90QVNDSUlBbHBo
YSwgd29yZE9mZnNldCk7CisgICAgICAgIHdvcmRMZW5ndGggPSB3b3JkRW5kID09IC0xID8gc3Rh
dGljX2Nhc3Q8aW50PihzdHJpbmdUZXh0Lmxlbmd0aCgpKSAtIHdvcmRPZmZzZXQgOiB3b3JkRW5k
IC0gd29yZE9mZnNldDsKKwogICAgICAgICBBU1NFUlQoMCA8IHdvcmRPZmZzZXQgKyB3b3JkTGVu
Z3RoKTsKICAgICAgICAgc3RyaW5nVGV4dCA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKHdvcmRPZmZz
ZXQgKyB3b3JkTGVuZ3RoKTsKICAgICAgICAgc2tpcHBlZExlbmd0aCArPSB3b3JkT2Zmc2V0ICsg
d29yZExlbmd0aDsKQEAgLTE1MSwxMiArMTU4LDEzIEBAIGJvb2wgTW9ja1NwZWxsQ2hlY2s6Omlu
aXRpYWxpemVJZk5lZWRlZCgpCiAgICAgICAgICJpZm1tcCIsCiAgICAgICAgICJxd2VydHl1aW9w
YXNkIiwKICAgICAgICAgInF3ZXJ0eXVpb3Bhc2RmIiwKKyAgICAgICAgInVwcGVyIGNhc2UiLAog
ICAgICAgICAid2VsbGNvbWUiCiAgICAgfTsKIAogICAgIG1fbWlzc3BlbGxlZFdvcmRzLmNsZWFy
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUobWlzc3BlbGxlZFdvcmRz
KTsgKytpKQotICAgICAgICBtX21pc3NwZWxsZWRXb3Jkcy5hZGQoV1RGOjpTdHJpbmc6OmZyb21V
VEY4KG1pc3NwZWxsZWRXb3Jkc1tpXSksIGZhbHNlKTsKKyAgICAgICAgbV9taXNzcGVsbGVkV29y
ZHMuYXBwZW5kKFdURjo6U3RyaW5nOjpmcm9tVVRGOChtaXNzcGVsbGVkV29yZHNbaV0pKTsKIAog
ICAgIC8vIE1hcmsgYXMgaW5pdGlhbGl6ZWQgdG8gcHJldmVudCB0aGlzIG9iamVjdCBmcm9tIGJl
aW5nIGluaXRpYWxpemVkIHR3aWNlCiAgICAgLy8gb3IgbW9yZS4KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxD
aGVjay5oCmluZGV4IDhhOThkNzA3YzA0YjFiYzg1ZTI4ZjU3MTA0ZGJjMDMxNjQxNDZiNWQuLmJm
YTE4OGIyNzA1ZTJlZjhlYWI3YTYwMjg0NGY2MzM2YTI4NDg5NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1Nw
ZWxsQ2hlY2suaApAQCAtMzMsOCArMzMsNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJWZWN0b3IuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIC8vIEEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBhIHNwZWxs
LWNoZWNrZXIgdXNlZCBmb3IgV2ViS2l0IHRlc3RzLgpAQCAtNzEsNyArNzAsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaW5pdGlhbGl6ZUlmTmVlZGVkKCk7CiAKICAgICAvLyBBIHRhYmxlIHRoYXQg
Y29uc2lzdHMgb2YgbWlzc3BlbGxlZCB3b3Jkcy4KLSAgICBIYXNoTWFwPFdURjo6U3RyaW5nLCBi
b29sPiBtX21pc3NwZWxsZWRXb3JkczsKKyAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fbWlzc3Bl
bGxlZFdvcmRzOwogCiAgICAgLy8gQSBmbGFnIHJlcHJlc2VudGluZyB3aGV0aGVyIG9yIG5vdCB0
aGlzIG9iamVjdCBpcyBpbml0aWFsaXplZC4KICAgICBib29sIG1faW5pdGlhbGl6ZWQ7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggYTA3OTIzMmQ2MjJhNjYyNWVmZjFjNjBkMzhmZDA1OTU4NzI1ZTU0OC4uMjczZjg0NWFmZmMx
Mjk2YWEwYTRjYTI2MzQzYmJlZTdmYTk0Nzg5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEz
LTAxLTMwICBSb3VzbGFuIFNvbG9tYWtoaW4gIDxyb3VzbGFuQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBUZXN0cyBmb3Igc3BlbGxjaGVjayBiZWhhdmlvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2ODE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciB0aGUgZm9sbG93aW5nIHNw
ZWxsY2hlY2sgYmVoYXZpb3I6CisgICAgICAgIC0gU3BlbGxjaGVjayBzZWxlY3RzIHRoZSBtaXNz
cGVsbGVkIHdvcmQgb24gY29udGV4dCBjbGljay4gCisgICAgICAgIC0gU3BlbGxpbmcgc2hvdWxk
IHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIHRoZSBtaXNzcGVsbGVkIHdvcmQgZXhhY3RseS4g
CisgICAgICAgIC0gSWYgdGhlIHdvcmQgaXMgbm90IG1pc3NwZWxsZWQsIHRoZXJlIHNob3VsZCBi
ZSBubyBzcGVsbGluZyBvcHRpb25zIGluIHRoZSBjb250ZXh0IG1lbnUuIAorICAgICAgICAtIFNw
ZWxsY2hlY2sgc2hvdWxkIHNlbGVjdCBtdWx0aS13b3JkIG1pc3NwZWxsaW5ncyBvbiBjb250ZXh0
IGNsaWNrLiAKKyAgICAgICAgLSBTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNl
bGVjdHMgYSBtdWx0aS13b3JkIG1pc3NwZWxsaW5nIGV4YWN0bHkuIAorICAgICAgICAtIFNwZWxs
aW5nIHNob3VsZCB3b3JrIGZvciBkb3VibGUtY2xpY2tlZCBtaXNzcGVsbGluZ3MuIAorICAgICAg
ICAtIFNwZWxsaW5nIHNob3VsZCBpZ25vcmUgd2hpdGVzcGFjZS4gCisgICAgICAgIC0gVW5kZXJz
Y29yZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hvdWxkIGln
bm9yZSB0aGVtLiAKKyAgICAgICAgLSBQdW5jdHVhdGlvbiBtYXJrcyBzaG91bGQgYmUgdHJlYXRl
ZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uIAorICAgICAgICAt
IFNwZWxsaW5nIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHVzZXIgc2VsZWN0cyBhIHBhcnQgb2Yg
bWlzc3BlbGxpbmcuIAorICAgICAgICAtIFNwZWxsaW5nIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVu
IHVzZXIgc2VsZWN0cyBtdWx0aXBsZSB3b3JkcyB0aGF0IGFyZSBub3QgYSBzaW5nbGUgbWlzc3Bl
bGxpbmcuIAorCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9yZXNvdXJjZXMvdXRpbC5qczog
QWRkZWQuCisgICAgICAgIChpbml0U3BlbGxUZXN0KTogQWRkZWQgZnVuY3Rpb24gZm9yIGNvbW1v
biBib2lsZXJwbGF0ZSBpbiBzcGVsbCBjaGVjayB0ZXN0cy4KKyAgICAgICAgKiBlZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQt
d2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNs
aWNrZWQtd29yZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVs
dGlwbGUtd29yZHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW11bHRpd29yZC1zZWxl
Y3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLW11bHRpd29yZC1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQt
c2VsZWN0LW11bHRpcGxlLXdvcmRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1z
aW5nbGUtd29yZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXN1YndvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0
aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgt
dW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Ut
c2VsZWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9uczogU2tpcHBpbmcgdGhlIG5ldyBzcGVsbGNoZWNrIHRlc3RzIGJlY2F1c2UgTWFj
IFdLMiBkb2VzIG5vdCBpbXBsZW1lbnQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91
YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11
bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQt
c2VsZWN0LW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUt
d29yZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFj
ZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMy0wMS0zMCAgSmVzc2llIEJl
cmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCByMTM4OTEyLCB0aGUg
cmlnaHQgZml4IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2
MTg3IGlzIGluCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Jlc291
cmNlcy91dGlsLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9yZXNvdXJjZXMvdXRp
bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jZjgwMzM0MTg4NDNjZjIwYzY2NzFlN2M4NDkwN2I3MDcyZDQ5NTIw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9yZXNvdXJj
ZXMvdXRpbC5qcwpAQCAtMCwwICsxLDM4IEBACitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9IChtc2cgKyAiXG4i
KTsKK30KKworZnVuY3Rpb24gdmVyaWZ5U3BlbGxUZXN0KG5yZXRyeSkKK3sKKyAgICBpZiAoIW5y
ZXRyeSkgeworICAgICAgICBsb2coIkZBSUwgU3BlbGxjaGVjayB0aW1lZCBvdXQiKTsKKyAgICAg
ICAgZmluaXNoSlNUZXN0KCkKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWludGVy
bmFscy5tYXJrZXJDb3VudEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxs
aW5nIikpIHsKKyAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeVNw
ZWxsVGVzdChucmV0cnkgLSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
dGVzdEZ1bmN0aW9uQ2FsbGJhY2soZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSk7CisgICAgZmlu
aXNoSlNUZXN0KCkKK30KKworZnVuY3Rpb24gaW5pdFNwZWxsVGVzdCh0ZXN0RWxlbWVudElkLCB0
ZXN0VGV4dCwgdGVzdEZ1bmN0aW9uKQoreworICAgIGlmICghd2luZG93LmludGVybmFscyB8fCAh
d2luZG93LnRlc3RSdW5uZXIgfHwgIXdpbmRvdy50ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKSB7CisgICAgICAgIGxvZygiRkFJTCBJbmNvbXBsZXRlIHRlc3Qg
ZW52aXJvbm1lbnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0RnVuY3Rpb25D
YWxsYmFjayA9IHRlc3RGdW5jdGlvbjsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICB0
ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAg
IHRlc3RSdW5uZXIuc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKHRydWUpOworICAgIHRlc3RS
dW5uZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgaW50
ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldEVkaXRpbmdCZWhhdmlvcigid2luIik7CisgICAgdmFyIGRl
c3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdEVsZW1lbnRJZCk7CisgICAg
ZGVzdGluYXRpb24uZm9jdXMoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4
dCIsIGZhbHNlLCB0ZXN0VGV4dCk7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHZlcmlmeVNwZWxsVGVzdCgxMCk7IH0sIDApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQt
d29yZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmY1NGNkOTJjMzEyNjkzMDFlOWExM2Q0MmEx
Zjk5MWJlMDk1OGVmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyMCBAQAorU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2VkIG1pc3NwZWxs
aW5ncy4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nLCBkb3VibGUtY2xp
Y2sgb24gJ3dlbGxjb21lJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhl
IHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsIGNoZWNrIHN1
Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGlu
Z01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmco
KSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlz
ICJ3ZWxsY29tZSIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRz
Lmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAi
d2VsbGNvbWUgIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxj
b21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUg
IgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0g
MV0gaXMgIndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKK3dlbGxjb21lIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJs
ZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGU1YjU2ZjMzOGMxMWM0MjRjY2Y2NDdkMGRjNzRmYjBkNjQ4ZGM2OAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQt
d29yZC13aXRoLXVuZGVyc2NvcmVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACitTcGVs
bGluZyBzaG91bGQgd29yayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxlZCB3b3JkcyB3aXRo
IHVuZGVyc2NvcmVzLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZV8gaG9tZS4nLCBk
b3VibGUtY2xpY2sgb24gJ3dlbGxjb21lXycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxl
Y3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93cyBzcGVs
bCBjaGVjayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lXyIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5n
ZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkgaXMgIndlbGxjb21lXyIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0
TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAid2VsbGNvbWVfICIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmlu
ZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkg
aXMgIndlbGxjb21lXyAiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVt
ZW50cy5sZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWVfIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0
aC11bmRlcnNjb3Jlcy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
YTU5MzVmZTAwMDVhNWEwNjEzNTJjZjlhMjNlZjYzMTIzYjE2YTM2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13
b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbApAQCAtMCwwICsxLDgwIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRp
diBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2Ny
aXB0PgorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlj
a2VkIG1pc3NwZWxsZWQgd29yZHMgd2l0aCB1bmRlcnNjb3Jlcy4gIiArCisgICAgICAgICAgICAi
VG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWVfIGhvbWUuJywgZG91YmxlLWNsaWNrIG9u
ICd3ZWxsY29tZV8nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiAiICsKKyAg
ICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mg
c3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CisKK2luaXRTcGVsbFRlc3QoImRlc3RpbmF0aW9u
IiwgIndlbGxjb21lXyBob21lLiIsICBmdW5jdGlvbih0ZXh0Tm9kZSkgeworICAgIHNwZWxsaW5n
TWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3Bl
bGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFu
Z2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBEb3VibGUt
Y2xpY2sgdGhlIG1pc3NwZWxsZWQgd29yZCB3aXRob3V0IHRoZSB0cmFpbGluZyB3aGl0ZXNwYWNl
LgorICAgIHRlc3RSdW5uZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxz
ZSk7CisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRl
c3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNl
dFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5v
ZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgIndlbGxjb21lXyIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBvbiAid2VsbGNvbWVf
IiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHkgPSBk
ZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9w
ICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4
dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAg
ZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOwor
CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUo
dGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3Bl
bGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29t
ZV8iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29u
dGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIERv
dWJsZS1jbGljayB0aGUgbWlzc3BlbGxlZCB3b3JkIHdpdGggdGhlIHRyYWlsaW5nIHdoaXRlc3Bh
Y2UuCisgICAgdGVzdFJ1bm5lci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKHRy
dWUpOworICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24u
b2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwor
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSIsICJ3ZWxsY29tZV8gIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29t
ZV8gIiB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgeCA9IGRlc3RpbmF0aW9uLm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHkg
PSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0
VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29u
dGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisg
ICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwp
OworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5v
ZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
c3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxs
Y29tZV8gIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRz
W2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworfSk7CisKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI0OTI3M2QyZTBhYmFiOWQ5YmNlYzkyN2EwOWMzZmM0NmNlMDI3Y2YK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbApAQCAtMCwwICsxLDc5IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRp
diBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2Ny
aXB0PgorCitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlj
a2VkIG1pc3NwZWxsaW5ncy4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgdHlw
ZSAnd2VsbGNvbWUgaG9tZS4nLCBkb3VibGUtY2xpY2sgb24gJ3dlbGxjb21lJywgYW5kIGNvbnRl
eHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3Vj
Y2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25z
LiIpOworCitpbml0U3BlbGxUZXN0KCJkZXN0aW5hdGlvbiIsICJ3ZWxsY29tZSBob21lLiIsIGZ1
bmN0aW9uKHRleHROb2RlKSB7CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5t
YXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21l
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSIsICIiKTsKKworICAgIC8vIERvdWJsZS1jbGljayB0aGUgbWlzc3BlbGxlZCB3b3Jk
IHdpdGhvdXQgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoZmFsc2UpOworICAgIHZhciB4ID0gZGVzdGluYXRpb24u
b2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7Cisg
ICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRp
b24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworCisgICAgLy8g
Q29udGV4dCBjbGljayBvbiAid2VsbGNvbWUiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAg
ICB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5v
ZmZzZXRMZWZ0ICsgNDA7CisgICAgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRU
b3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAy
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxl
bWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhp
ZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9t
Q2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50
ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAi
d2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAi
d2VsY29tZSIpOworCisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkiLCAiIik7CisKKyAgICAvLyBEb3VibGUtY2xpY2sgdGhlIG1pc3NwZWxsZWQgd29yZCB3
aXRoIHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgdGVzdFJ1bm5lci5zZXRTZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkKHRydWUpOworICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFy
IHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zm
c2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VVcCgpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUgIik7CisKKyAgICAvLyBDb250ZXh0
IGNsaWNrIG9uICJ3ZWxsY29tZSAiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB4ID0g
ZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRM
ZWZ0ICsgNDA7CisgICAgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMg
PSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhl
IGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNv
ZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxz
Lm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNv
bWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIiwgIndlbGxjb21lICIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29u
dGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNv
bWUiKTsKK30pOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVj
dGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDRhNzk0NzVlNTc2ZmJiODc5ODFiNjJlNjdiNTFhNDgyN2NjZjYyZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
ZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorU3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbXVsdGkt
d29yZCBtaXNzcGVsbGluZyBleGFjdGx5LiBUbyB0ZXN0IG1hbnVhbGx5LCBlbmFibGUgJ0FzayBH
b29nbGUgZm9yIFN1Z2dlc3Rpb25zJyBpbiBDaHJvbWUsIHR5cGUgJ0l0IHNob3VsZCBiZSB1cHBl
ciBjYXNlLicsIHNlbGVjdCAndXBwZXIgY2FzZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBz
ZWxlY3Rpb24uVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNw
ZWxsaW5nIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyBzcGVsbGluZ01hcmtlclJh
bmdlLnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCitJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3Rl
ZC1tdWx0aXBsZS13b3Jkcy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Qz
MjU0ZmI0NjhiODc0NzIzZWU1YzZhNGM4YzE5NGJmNjBhOTI5MwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1t
dWx0aXBsZS13b3Jkcy5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJk
ZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorCitk
ZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEg
bXVsdGktd29yZCBtaXNzcGVsbGluZyBleGFjdGx5LiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0
IG1hbnVhbGx5LCBlbmFibGUgJ0FzayBHb29nbGUgZm9yIFN1Z2dlc3Rpb25zJyBpbiBDaHJvbWUs
IHR5cGUgJ0l0IHNob3VsZCBiZSB1cHBlciBjYXNlLicsIHNlbGVjdCAndXBwZXIgY2FzZScsIGFu
ZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIiArCisgICAgICAgICAgICAiVGhlIHRl
c3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsaW5nIHN1Z2dlc3Rp
b25zLiIpOworCitpbml0U3BlbGxUZXN0KCJkZXN0aW5hdGlvbiIsICJJdCBzaG91bGQgYmUgdXBw
ZXIgY2FzZS4iLCBmdW5jdGlvbih0ZXh0Tm9kZSkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2Ug
PSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmco
KSIsICJ1cHBlciBjYXNlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKyAgICAKKyAgICAvLyBTZWxlY3QgdGhlIG11
bHRpLXdvcmQgbWlzc3BlbGxpbmcgd2l0aG91dCBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlIG9yIHB1
bmN0dWF0aW9uLgorICAgIHZhciB3b3JkUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHdvcmRSYW5nZS5zZXRTdGFydCh0ZXh0Tm9kZSwgMTMpOworICAgIHdvcmRSYW5nZS5zZXRF
bmQodGV4dE5vZGUsIDIzKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFu
Z2VzKCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHdvcmRSYW5nZSk7CisK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgInVwcGVyIGNhc2UiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gInVwcGVyIGNh
c2UiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9m
ZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDEwMDsKKyAg
ICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlv
bi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNl
bmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQg
bWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFC
KSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJh
bmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAidXBwZXIgY2FzZSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAidXBwZXIgY2FzZSIpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5n
LWV4YWN0bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzRlMzZjZjA0MzkxMDQ5OTZmMGNhZjE1NmIzZTk5MzFhMTg4ZTM4MwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3Rs
eS1zZWxlY3RlZC13b3JkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitTcGVsbGluZyBz
aG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBleGFj
dGx5LiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIHNlbGVjdCAnd2Vs
bGNvbWUnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNj
ZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGxpbmcgc3VnZ2VzdGlvbnMuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2Uu
dG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3
ZWxsY29tZSIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29t
ZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgor
UEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0g
aXMgIndlbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJo
b21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiaG9tZSIKK1BB
U1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlz
ICI8c2VwYXJhdG9yPiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWwgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIyMWQ5NmQ4N2MwNGQ5NzMxYWJjYjBmYTM1N2NiMjc1NzhlZDg2Y2IKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0
bHktc2VsZWN0ZWQtd29yZC5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlk
PSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+
CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVj
dHMgdGhlIG1pc3NwZWxsZWQgd29yZCBleGFjdGx5LiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0
IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIHNlbGVjdCAnd2VsbGNvbWUnLCBhbmQg
Y29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVz
dCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGxpbmcgc3VnZ2VzdGlv
bnMuIik7CisKK2luaXRTcGVsbFRlc3QoImRlc3RpbmF0aW9uIiwgIndlbGxjb21lIGhvbWUuIiwg
ZnVuY3Rpb24odGV4dE5vZGUpIHsKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxz
Lm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNv
bWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gU2VsZWN0IHRoZSBtaXNzcGVsbGVkIHdvcmQgd2l0
aG91dCBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlIG9yIHB1bmN0dWF0aW9uLgorICAgIHZhciB3b3Jk
UmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHdvcmRSYW5nZS5zZXRTdGFydCh0
ZXh0Tm9kZSwgMCk7CisgICAgd29yZFJhbmdlLnNldEVuZCh0ZXh0Tm9kZSwgOCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZSh3b3JkUmFuZ2UpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworCisgICAg
Ly8gQ29udGV4dCBjbGljayBvbiAid2VsbGNvbWUiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4K
KyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGlu
YXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFy
ZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNl
dEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29u
dGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVz
YyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24o
U3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2Vy
UmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmci
LCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9T
dHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5n
dGggLSAxXSIsICJ3ZWxjb21lIik7CisgICAgCisgICAgLy8gU2VsZWN0IGEgY29ycmVjdGx5IHNw
ZWxsZWQgd29yZCB3aXRob3V0IHN1cnJvdW5kaW5nIHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRpb24u
CisgICAgd29yZFJhbmdlLnNldFN0YXJ0KHRleHROb2RlLCA5KTsKKyAgICB3b3JkUmFuZ2Uuc2V0
RW5kKHRleHROb2RlLCAxMyk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJh
bmdlcygpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZSh3b3JkUmFuZ2UpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAiaG9tZSIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBvbiAiaG9tZSIgdG8gc2hvdyB0
aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9m
ZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgODA7CisgICAgdmFyIHkgPSBkZXN0
aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsg
ZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENs
aWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZl
bnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmco
KSIsICJob21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1l
bnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAiPHNlcGFyYXRvcj4iKTsKK30p
OworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3
b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYwZGQyYmUwOWY4ZmVhZWM2
MzAzNjc3NTI3MjAzMWU4NjQxMDFlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNSBAQAorU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBz
ZWxlY3RzIG11bHRpcGxlIHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmdsZSBtaXNzcGVsbGluZy4g
VG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nLCBzZWxlY3QgJ3dlbGxjb21l
IGhvbWUnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNl
ZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgbm8gc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFu
Z2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlz
ICJ3ZWxsY29tZSBob21lIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMg
IndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2Vs
bGNvbWUgaG9tZSIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRz
Lmxlbmd0aCAtIDFdIGlzICI8c2VwYXJhdG9yPiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5odG1s
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTAyN2I5N2JjNzE0YzFkOGQwYzYwZTA3Mjg5MjgwNDM0MTY0
NmJlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0
aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgor
ICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisK
KzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hl
biB1c2VyIHNlbGVjdHMgbXVsdGlwbGUgd29yZHMgdGhhdCBhcmUgbm90IGEgc2luZ2xlIG1pc3Nw
ZWxsaW5nLiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29t
ZSBob21lLicsIHNlbGVjdCAnd2VsbGNvbWUgaG9tZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRo
ZSBzZWxlY3Rpb24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2VlZHMgd2hlbiB0aGUg
Y29udGV4dCBtZW51IGhhcyBubyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKKworaW5pdFNw
ZWxsVGVzdCgiZGVzdGluYXRpb24iLCAid2VsbGNvbWUgaG9tZS4iLCBmdW5jdGlvbih0ZXh0Tm9k
ZSkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JO
b2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7
CisKKyAgICAvLyBTZWxlY3QgdGhlIHRleHQgIndlbGxjb21lIGhvbWUiLgorICAgIHZhciBtdWx0
aVdvcmRSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgbXVsdGlXb3JkUmFuZ2Uu
c2V0U3RhcnQodGV4dE5vZGUsIDApOworICAgIG11bHRpV29yZFJhbmdlLnNldEVuZCh0ZXh0Tm9k
ZSwgMTMpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UobXVsdGlXb3JkUmFuZ2UpOworCisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIs
ICJ3ZWxsY29tZSBob21lIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIHRvIHNob3cgdGhlIGNv
bnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRp
b24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3Rp
bmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwg
eSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygp
OworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNw
ZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2Rl
LCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFy
a2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUgaG9tZSIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0
TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIjxzZXBhcmF0b3I+Iik7Cit9KTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1z
ZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2YTQ1NDE2OGFk
Yzk3ZDFjN2Q2ZGU0MGEzZmU3YTdhZDBiMjk0Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29y
ZHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1NwZWxsIGNoZWNrIHNob3VsZCBzZWxl
Y3QgbXVsdGktd29yZCBtaXNzcGVsbGluZ3Mgb24gY29udGV4dCBjbGljay4gVG8gdGVzdCBtYW51
YWxseSwgZW5hYmxlICdBc2sgR29vZ2xlIGZvciBTdWdnZXN0aW9ucycgaW4gQ2hyb21lLCB0eXBl
ICdJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgd29y
ZCAndXBwZXInLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuICd1cHBlciBjYXNlJyB3YXMgc2VsZWN0
ZWQgYWZ0ZXIgY29udGV4dCBjbGljay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFT
UyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyBzcGVsbGluZ01h
cmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNl
bGVjdC1tdWx0aXBsZS13b3Jkcy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Rm
MDQyODM3YjE0NTYzMDQwOWM4MDhmNWY4NDQ1MjM1NTY3OTQzNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0
aXBsZS13b3Jkcy5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0
aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorCitkZXNj
cmlwdGlvbigiU3BlbGwgY2hlY2sgc2hvdWxkIHNlbGVjdCBtdWx0aS13b3JkIG1pc3NwZWxsaW5n
cyBvbiBjb250ZXh0IGNsaWNrLiAiKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIGVu
YWJsZSAnQXNrIEdvb2dsZSBmb3IgU3VnZ2VzdGlvbnMnIGluIENocm9tZSwgdHlwZSAnSXQgc2hv
dWxkIGJlIHVwcGVyIGNhc2UuJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHdvcmQgJ3VwcGVy
Jy4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiAndXBwZXIgY2FzZScg
d2FzIHNlbGVjdGVkIGFmdGVyIGNvbnRleHQgY2xpY2suIik7CisKK2luaXRTcGVsbFRlc3QoImRl
c3RpbmF0aW9uIiwgIkl0IHNob3VsZCBiZSB1cHBlciBjYXNlLiIsIGZ1bmN0aW9uKHRleHROb2Rl
KSB7CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5v
ZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
c3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIp
OworCisgICAgLy8gQ29udGV4dCBjbGljayBvbiAidXBwZXIgY2FzZSIgdG8gc2hvdyB0aGUgY29u
dGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgMTAwOworICAgIHZhciB5ID0gZGVzdGluYXRp
b24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3Rp
bmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwg
eSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygp
OworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNw
ZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2Rl
LCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFy
a2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7
Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5n
bGUtd29yZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZh
OGQwODY2YTMzNzg4MGQxOWRlYTRiMmNhMWM4ODNmY2JlYzIxMmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2lu
Z2xlLXdvcmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1NwZWxsIGNoZWNrIHNlbGVj
dHMgdGhlIG1pc3NwZWxsZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLiBUbyB0ZXN0IG1hbnVhbGx5
LCB0eXBlICd3ZWxsY29tZSBob21lLicgYW5kIGNvbnRleHQtY2xpY2sgb24gJ3dlbGxjb21lJy4g
VGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiAnd2VsbGNvbWUnIGlzIHNlbGVjdGVkIGFmdGVyIHRoZSBj
b250ZXh0IGNsaWNrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVs
bGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRv
U3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVF
bGVtZW50cy5sZW5ndGggLSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkgaXMgIiIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxl
bmd0aCAtIDFdIGlzICI8c2VwYXJhdG9yPiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0
LXNpbmdsZS13b3JkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI4Mjg0YTk0OWVhMGU5MGNiMDE0YWYwMjY3
Zjc1NzRjNDg2NDRlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC5odG1sCkBAIC0wLDAgKzEs
NTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwv
ZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJTcGVsbCBjaGVjayBzZWxl
Y3RzIHRoZSBtaXNzcGVsbGVkIHdvcmQgb24gY29udGV4dCBjbGljay4gIiArCisgICAgICAgICAg
ICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nIGFuZCBjb250ZXh0LWNs
aWNrIG9uICd3ZWxsY29tZScuICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdo
ZW4gJ3dlbGxjb21lJyBpcyBzZWxlY3RlZCBhZnRlciB0aGUgY29udGV4dCBjbGljay4iKTsKKwor
aW5pdFNwZWxsVGVzdCgiZGVzdGluYXRpb24iLCAid2VsbGNvbWUgaG9tZS4iLCBmdW5jdGlvbih0
ZXh0Tm9kZSkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFu
Z2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCki
LCAiIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hvdyB0aGUg
Y29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5h
dGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVz
dGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4
LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNr
KCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRT
ZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAg
c3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5v
ZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdN
YXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVu
dUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKKworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gQ29udGV4dCBj
bGljayBvbiAiaG9tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVz
dGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0
ICsgODA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsg
ZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRz
ID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRo
ZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJD
b2RlKDB4MDAxQiksIG51bGwpOworCisgICAgLy8gQ29udGV4dCBjbGljayBzaG91bGQgbm90IHNl
bGVjdCBjb3JyZWN0bHkgc3BlbGxlZCB3b3JkcyB3aXRoICJ3aW4iIGVkaXRpbmcgYmVoYXZpb3Iu
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSIsICIiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVu
dHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICI8c2VwYXJhdG9yPiIpOworfSk7
CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1z
ZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5N2VlNzZlYTE0YTUwNWZkOTRmZjg2
ODg0MGI5ZjczMmQ1YTViMDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE1IEBACitTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVjdHMg
YSBwYXJ0IG9mIG1pc3NwZWxsaW5nLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBo
b21lLicgc2VsZWN0ICdsbGNvJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4g
VGhlIHRlc3Qgc3VjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIG5vIHNwZWxsIGNoZWNr
IHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVs
bGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSBpcyAibGxjbyIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygp
IGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMg
ImxsY28iCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5n
dGggLSAxXSBpcyAiPHNlcGFyYXRvcj4iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKK3dlbGxjb21lIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjliYzg1ZGFjMmE5ODMwYTNmMTY0ZTc0ZDdiMTUzZjA2MDE4ZWRmMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vi
d29yZC1zZWxlY3Rpb24uaHRtbApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0i
ZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0Pgor
CitkZXNjcmlwdGlvbigiU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxl
Y3RzIGEgcGFydCBvZiBtaXNzcGVsbGluZy4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51
YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nIHNlbGVjdCAnbGxjbycsIGFuZCBjb250ZXh0LWNs
aWNrIG9uIHRoZSBzZWxlY3Rpb24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2VlZHMg
d2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBubyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsK
KworaW5pdFNwZWxsVGVzdCgiZGVzdGluYXRpb24iLCAid2VsbGNvbWUgaG9tZS4iLCBmdW5jdGlv
bih0ZXh0Tm9kZSkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2Vy
UmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAiIik7CisKKyAgICAvLyBTZWxlY3QgdGhlIHRleHQgImxsY28iLgorICAgIHZhciBzdWJX
b3JkUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHN1YldvcmRSYW5nZS5zZXRT
dGFydCh0ZXh0Tm9kZSwgMik7CisgICAgc3ViV29yZFJhbmdlLnNldEVuZCh0ZXh0Tm9kZSwgNik7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShzdWJXb3JkUmFuZ2UpOworCisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJsbGNvIik7
CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICdsbGNvJyB0byBzaG93IHRoZSBjb250ZXh0IG1l
bnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRl
c3RpbmF0aW9uLm9mZnNldExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNl
dFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5v
ZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAg
IGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAv
LyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlE
b3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01h
cmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxs
aW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgImxsY28iKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5n
dGggLSAxXSIsICI8c2VwYXJhdG9yPiIpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyMjE4MGQwZmIwMWZkNTEyZjM5ZDI5NTkxOTE3MjM5
ZjZkM2Y4ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE1IEBACitQdW5jdHVhdGlvbiBtYXJrcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNw
YWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uIFRvIHRlc3QgbWFudWFsbHksIHR5cGUg
J3dlbGxjb21lIScsIHNlbGVjdCAnd2VsbGNvbWUhJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhl
IHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBz
cGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mg
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lISIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkgaXMgIndlbGxjb21lISIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250
ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1z
ZWxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0
aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjU2NWI3MGZhZTFiNjQz
YmUxOGJkY2Q4ODZlOGU0MzgxMTJmOTdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1s
CkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVu
dEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJQdW5j
dHVhdGlvbiBtYXJrcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBz
aG91bGQgaWdub3JlIHRoZW0uICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIHR5
cGUgJ3dlbGxjb21lIScsIHNlbGVjdCAnd2VsbGNvbWUhJywgYW5kIGNvbnRleHQtY2xpY2sgb24g
dGhlIHNlbGVjdGlvbi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0
aGUgY29udGV4dCBtZW51IGhhcyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKKworaW5pdFNw
ZWxsVGVzdCgiZGVzdGluYXRpb24iLCAid2VsbGNvbWUhIiwgZnVuY3Rpb24odGV4dE5vZGUpIHsK
KyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0
ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVs
bGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisg
ICAgLy8gU2VsZWN0IHRoZSB0ZXh0ICJ3ZWxsY29tZSEiIHdpdGggdGhlIGV4Y2xhbWF0aW9uIG1h
cmsuCisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZXRTdGFydCh0ZXh0Tm9kZSwgMCk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHROb2RlLCA5KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUhIik7CisKKyAg
ICAvLyBDb250ZXh0IGNsaWNrIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9
IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0
TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7
CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVt
ZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlk
ZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21D
aGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRl
cm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3
ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUhIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAi
d2VsY29tZSIpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5k
ZXJzY29yZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zZTE0NDYxZWYxYjRhYWNhZDE1OTMzYTZiN2UyNzhhNWRmZWYzYWZiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVu
ZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitVbmRlcnNj
b3JlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdu
b3JlIHRoZW0uIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ0hpLCBfd2VsbGNvbWVfIGhvbWUuJywg
c2VsZWN0ICdfd2VsbGNvbWVfJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4g
VGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBzcGVsbCBjaGVjayBz
dWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxp
bmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkgaXMgIl93ZWxsY29tZV8iCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJp
bmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IGlzICJfd2VsbGNvbWVfIgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxl
bWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0hpLCBfd2VsbGNvbWVfIGhvbWUuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1z
ZWxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0
aC11bmRlcnNjb3JlLXNlbGVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMDM2YmI4MmI5YWYzMzQy
Y2M2Y2Y1NTYxOTliMzJkNzA0OGRjZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbApA
QCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRF
ZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVW5kZXJz
Y29yZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hvdWxkIGln
bm9yZSB0aGVtLiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICdIaSwg
X3dlbGxjb21lXyBob21lLicsIHNlbGVjdCAnX3dlbGxjb21lXycsIGFuZCBjb250ZXh0LWNsaWNr
IG9uIHRoZSBzZWxlY3Rpb24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdo
ZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CisKK2lu
aXRTcGVsbFRlc3QoImRlc3RpbmF0aW9uIiwgIkhpLCBfd2VsbGNvbWVfIGhvbWUuIiwgZnVuY3Rp
b24odGV4dE5vZGUpIHsKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtl
clJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIiwgIiIpOworCisgICAgLy8gU2VsZWN0IHRoZSB0ZXh0ICJfd2VsbGNvbWVfIi4KKyAgICB2
YXIgcmFuZ2VXaXRoVW5kZXJzY29yZXMgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJh
bmdlV2l0aFVuZGVyc2NvcmVzLnNldFN0YXJ0KHRleHROb2RlLCA0KTsKKyAgICByYW5nZVdpdGhV
bmRlcnNjb3Jlcy5zZXRFbmQodGV4dE5vZGUsIDE0KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdl
KHJhbmdlV2l0aFVuZGVyc2NvcmVzKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiX3dlbGxjb21lXyIpOworCisgICAgLy8g
Q29udGV4dCBjbGljayBvbiAiX3dlbGxjb21lXyIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51Lgor
ICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5h
dGlvbi5vZmZzZXRMZWZ0ICsgODA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0
SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250
ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNj
IGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJS
YW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIs
IDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0
cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJfd2VsbGNvbWVfIik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVu
Z3RoIC0gMV0iLCAid2VsY29tZSIpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NDM1NTE3M2E3Mzg3OWZlNDViNDlhMjk4YTNjZjBjNWNmNGQ1
NjcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0
IEBACitTcGVsbGluZyBzaG91bGQgaWdub3JlIHdoaXRlc3BhY2UuIFRvIHRlc3QgbWFudWFsbHks
IHR5cGUgJ2hlbGxvLCB3ZWxsY29tZSBob21lLicsIHNlbGVjdCAnIHdlbGxjb21lICcsIGFuZCBj
b250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhl
IGNvbnRleHQgbWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBp
cyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIg
d2VsbGNvbWUgIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxj
b21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIHdlbGxjb21l
ICIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAt
IDFdIGlzICJ3ZWxjb21lIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCitoZWxsbywgd2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1s
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Ut
c2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWU5MTE5MGI3OWU5ZjQwODkzNWVlNGFjN2ExZmYz
YTcyMmFmZjgwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNDgg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJj
b250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2
PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgaWdu
b3JlIHdoaXRlc3BhY2UuICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIHR5cGUg
J2hlbGxvLCB3ZWxsY29tZSBob21lLicsIHNlbGVjdCAnIHdlbGxjb21lICcsIGFuZCBjb250ZXh0
LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2Nl
ZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7
CisKK2luaXRTcGVsbFRlc3QoImRlc3RpbmF0aW9uIiwgImhlbGxvLCB3ZWxsY29tZSBob21lLiIs
IGZ1bmN0aW9uKHRleHROb2RlKSB7CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFs
cy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxj
b21lIik7CisKKyAgICAvLyBTZWxlY3QgdGhlIHRleHQgIiB3ZWxsY29tZSAiIHdpdGggc3Vycm91
bmRpbmcgd2hpdGVzcGFjZS4KKyAgICB2YXIgcmFuZ2VXaXRoV2hpdGVzcGFjZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2VXaXRoV2hpdGVzcGFjZS5zZXRTdGFydCh0ZXh0Tm9k
ZSwgNik7CisgICAgcmFuZ2VXaXRoV2hpdGVzcGFjZS5zZXRFbmQodGV4dE5vZGUsIDE2KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlV2l0aFdoaXRlc3BhY2UpOworCisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIgd2Vs
bGNvbWUgIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICIgd2VsbGNvbWUgIiB0byBzaG93
IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNldExlZnQgKyA4MDsKKyAgICB2YXIgeSA9IGRl
c3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3Ag
KyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0
Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBl
dmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisK
KyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0
ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVs
bGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiB3ZWxsY29t
ZSAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29u
dGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7Cit9KTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAwZGI4MDc4ZDVmZmZiOGZkN2RmMTc0ZTM4YmQx
NTBmYWMwZWY0YjNiLi5jN2QzY2IwY2RhZTBlNWI4ODYxOTUxNTdkY2IxZjkzY2NlNzVhM2FlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0z
MTAsNiArMzEwLDE5IEBAIHdlYmtpdC5vcmcvYi8xMDY0MDUgaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9yZW1lbWJlci1iYWQtcGFzc3dvcmQuaHRtbCBbIEZhaWx1CiAKIHdlYmtpdC5vcmcvYi8x
MDczNTYgZmFzdC9jc3Mvc3RpY2t5L3N0aWNreS10b3Atem9vbWVkLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIAorIyBNYWMgV0syIGRvZXMgbm90IGltcGxlbWVudCBzZXRBc3luY2hyb25vdXNT
cGVsbENoZWNraW5nRW5hYmxlZC4KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcv
Yi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdp
dGgtdW5kZXJzY29yZXMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMuaHRtbCBb
IFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4
YWN0bHktc2VsZWN0ZWQtd29yZC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5odG1sIFsgU2tpcCBd
Cit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNl
bGVjdC1tdWx0aXBsZS13b3Jkcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC5odG1sIFsg
U2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vi
d29yZC1zZWxlY3Rpb24uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLmh0bWwgWyBTa2lw
IF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVu
ZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwgWyBT
a2lwIF0KKwogIyMjIEVORCBPRiAoMSkgQ2xhc3NpZmllZCBmYWlsdXJlcyB3aXRoIGJ1ZyByZXBv
cnRzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRv
dWJsZS1jbGlja2VkLXdvcmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWY5YWU5MDI4ZjVkOTkzYTcwNmQwN2YwN2U2YTExNTE4ODliZDYyNAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjAgQEAKK1NwZWxsaW5nIHNob3VsZCB3b3JrIGZvciBkb3VibGUtY2xpY2tlZCBtaXNzcGVsbGlu
Z3MuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIGhvbWUuJywgZG91YmxlLWNsaWNr
IG9uICd3ZWxsY29tZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0
ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93cyBzcGVsbCBjaGVjayBzdWdn
ZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdN
YXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkg
aXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAi
d2VsbGNvbWUiCitGQUlMIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5s
ZW5ndGggLSAxXSBzaG91bGQgYmUgd2VsY29tZS4gV2FzIDxzZXBhcmF0b3I+LgorUEFTUyB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUgIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAid2VsbGNvbWUgIgorRkFJTCBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRN
ZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gc2hvdWxkIGJlIHdlbGNvbWUuIFdhcyA8c2VwYXJhdG9y
Pi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQord2Vs
bGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBiMzY5MWViYzlhZDE0Zjc0MzNlNDdhMDllYTg2MWNmNjZmNDAwYzcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjAgQEAKK1NwZWxsaW5nIHNob3VsZCB3b3JrIGZvciBkb3VibGUtY2xp
Y2tlZCBtaXNzcGVsbGVkIHdvcmRzIHdpdGggdW5kZXJzY29yZXMuIFRvIHRlc3QgbWFudWFsbHks
IHR5cGUgJ3dlbGxjb21lXyBob21lLicsIGRvdWJsZS1jbGljayBvbiAnd2VsbGNvbWVfJywgYW5k
IGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0
aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworRkFJTCBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5n
KCkgc2hvdWxkIGJlIHdlbGxjb21lLiBXYXMgd2VsbGNvbWVfLgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAid2VsbGNvbWVfIgorRkFJTCBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5n
KCkgc2hvdWxkIGJlIHdlbGxjb21lLiBXYXMgd2VsbGNvbWVfLgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWVfIgorRkFJTCBjb250ZXh0TWVudUVsZW1l
bnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gc2hvdWxkIGJlIHdlbGNvbWUuIFdh
cyA8c2VwYXJhdG9yPi4KK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMg
IiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lXyAi
CitGQUlMIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBzaG91bGQgYmUgd2VsbGNvbWUu
IFdhcyB3ZWxsY29tZV8uCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlz
ICJ3ZWxsY29tZV8gIgorRkFJTCBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVu
dHMubGVuZ3RoIC0gMV0gc2hvdWxkIGJlIHdlbGNvbWUuIFdhcyA8c2VwYXJhdG9yPi4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWVfIGhv
bWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0
bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3OWFh
Y2Y3MmU2MmJiZjNmMWI3NmYwM2VjM2Y1MGY4ZGI5YmZiMmMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5
LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitT
cGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBtdWx0aS13b3JkIG1p
c3NwZWxsaW5nIGV4YWN0bHkuIFRvIHRlc3QgbWFudWFsbHksIGVuYWJsZSAnQXNrIEdvb2dsZSBm
b3IgU3VnZ2VzdGlvbnMnIGluIENocm9tZSwgdHlwZSAnSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2Uu
Jywgc2VsZWN0ICd1cHBlciBjYXNlJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlv
bi5UaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGxpbmcg
c3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitGQUlMIFNwZWxs
Y2hlY2sgdGltZWQgb3V0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKK0l0IHNob3VsZCBiZSB1cHBlciBjYXNlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3Rl
ZC13b3JkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGVkYjQ2ZjVjYzZiZDg5YzAyYWY1MGMwMjhiNjQwYzdlZjlkYjIwZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAor
U3BlbGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIHRoZSBtaXNzcGVsbGVk
IHdvcmQgZXhhY3RseS4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nLCBz
ZWxlY3QgJ3dlbGxjb21lJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhl
IHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsaW5nIHN1Z2dl
c3Rpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01h
cmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAid2VsbGNvbWUiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBp
cyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3
ZWxsY29tZSIKK0ZBSUwgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxl
bmd0aCAtIDFdIHNob3VsZCBiZSB3ZWxjb21lLiBXYXMgPHNlcGFyYXRvcj4uCitQQVNTIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJob21lIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiaG9tZSIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tj
b250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICI8c2VwYXJhdG9yPiIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWUgaG9tZS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVj
dC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjZjY2IzZjYwOWU4MmMy
MTMyNDIxMDlhZjE0MzAzZjMzNjU5MzI0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVs
dGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1NwZWxsIGNoZWNrIHNo
b3VsZCBzZWxlY3QgbXVsdGktd29yZCBtaXNzcGVsbGluZ3Mgb24gY29udGV4dCBjbGljay4gVG8g
dGVzdCBtYW51YWxseSwgZW5hYmxlICdBc2sgR29vZ2xlIGZvciBTdWdnZXN0aW9ucycgaW4gQ2hy
b21lLCB0eXBlICdJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4nLCBhbmQgY29udGV4dC1jbGljayBv
biB0aGUgd29yZCAndXBwZXInLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuICd1cHBlciBjYXNlJyB3
YXMgc2VsZWN0ZWQgYWZ0ZXIgY29udGV4dCBjbGljay4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK0ZBSUwgU3BlbGxjaGVjayB0aW1lZCBvdXQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSXQgc2hvdWxkIGJlIHVwcGVyIGNhc2UuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2lu
Z2xlLXdvcmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyZmUzNmUxYTBjN2NiMTQ3ZmQwOWM0
MzNiMmVmNzM0NGJjNjk0MGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3Jk
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitTcGVsbCBjaGVjayBzZWxlY3RzIHRoZSBt
aXNzcGVsbGVkIHdvcmQgb24gY29udGV4dCBjbGljay4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAn
d2VsbGNvbWUgaG9tZS4nIGFuZCBjb250ZXh0LWNsaWNrIG9uICd3ZWxsY29tZScuIFRoZSB0ZXN0
IHN1Y2NlZWRzIHdoZW4gJ3dlbGxjb21lJyBpcyBzZWxlY3RlZCBhZnRlciB0aGUgY29udGV4dCBj
bGljay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJr
ZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygp
IGlzICJ3ZWxsY29tZSIKK0ZBSUwgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgc2hv
dWxkIGJlIHdlbGxjb21lLiBXYXMgLgorRkFJTCBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRN
ZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gc2hvdWxkIGJlIHdlbGNvbWUuIFdhcyA8c2VwYXJhdG9y
Pi4KK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1MgY29udGV4dE1lbnVFbGVt
ZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICI8c2VwYXJhdG9yPiIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWUg
aG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVu
Y3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjQwNDIwNDA2M2Jj
YWU0ZTFjMzBmNmMyNzJjOTFmYmRlNDlmOWNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlv
bi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1B1bmN0dWF0aW9uIG1h
cmtzIHNob3VsZCBiZSB0cmVhdGVkIGFzIHdoaXRlc3BhY2U6IHNwZWxsaW5nIHNob3VsZCBpZ25v
cmUgdGhlbS4gVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUhJywgc2VsZWN0ICd3ZWxs
Y29tZSEnLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNj
ZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAi
d2VsbGNvbWUhIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxj
b21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUh
IgorRkFJTCBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0g
MV0gc2hvdWxkIGJlIHdlbGNvbWUuIFdhcyA8c2VwYXJhdG9yPi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNvbWUhCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVu
ZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwZjhkZGVjZGY1YzE0YTQwZDM4ZTUzN2U1MmY1NTE5YzA3
NjZjNTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE1IEBACitVbmRlcnNjb3JlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0
ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uIFRvIHRlc3QgbWFudWFsbHksIHR5
cGUgJ0hpLCBfd2VsbGNvbWVfIGhvbWUuJywgc2VsZWN0ICdfd2VsbGNvbWVfJywgYW5kIGNvbnRl
eHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29u
dGV4dCBtZW51IGhhcyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK0ZBSUwgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIHNob3Vs
ZCBiZSB3ZWxsY29tZS4gV2FzIF93ZWxsY29tZV8uCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IGlzICJfd2VsbGNvbWVfIgorRkFJTCBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgc2hv
dWxkIGJlIHdlbGxjb21lLiBXYXMgX3dlbGxjb21lXy4KK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkgaXMgIl93ZWxsY29tZV8iCitGQUlMIGNvbnRleHRNZW51RWxlbWVudHNb
Y29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBzaG91bGQgYmUgd2VsY29tZS4gV2FzIDxz
ZXBhcmF0b3I+LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCitIaSwgX3dlbGxjb21lXyBob21lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMzE0ZmIxN2JhZTU2ODFiZTk5MjAxYzY1MTAyMjllMzM4ZGIzZTIyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBA
QAorU3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB3aGl0ZXNwYWNlLiBUbyB0ZXN0IG1hbnVhbGx5LCB0
eXBlICdoZWxsbywgd2VsbGNvbWUgaG9tZS4nLCBzZWxlY3QgJyB3ZWxsY29tZSAnLCBhbmQgY29u
dGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBj
b250ZXh0IG1lbnUgaGFzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMg
IndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIHdl
bGxjb21lICIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29t
ZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiB3ZWxsY29tZSAi
CitGQUlMIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAx
XSBzaG91bGQgYmUgd2VsY29tZS4gV2FzIDxzZXBhcmF0b3I+LgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitoZWxsbywgd2VsbGNvbWUgaG9tZS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185625</attachid>
            <date>2013-01-30 16:58:26 -0800</date>
            <delta_ts>2013-01-30 16:59:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106815-20130130165510.patch</filename>
            <type>text/plain</type>
            <size>61988</size>
            <attacher name="Rouslan Solomakhin">rouslan+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMzQwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWRiOTdiY2RjN2RhZTk5MGI0NWZj
NzNmMmQ1ODU1YmNhYzQ0MTQ2Yy4uZThhYWE3ZDgyMmY3YjBkMDMxNjBhMjE0NTkxYTdkOTAzMjZj
NTU3NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTAxLTMwICBSb3VzbGFuIFNvbG9tYWto
aW4gIDxyb3VzbGFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXN0cyBmb3Igc3BlbGxjaGVj
ayBiZWhhdmlvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA4NDA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBlZGl0aW5nL3NwZWxsaW5nL3Jlc291cmNlcy91dGlsLmpzOiBBZGRlZC4gQm9pbGVycGxh
dGUgZm9yIHNwZWxsY2hlY2sgdGVzdHMuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1kb3VibGUtY2xpY2tlZC13b3JkLmh0bWw6IEFkZGVkLiBTcGVsbGluZyBzaG91bGQgd29y
ayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxpbmdzLgorICAgICAgICAqIGVkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLmh0bWw6
IEFkZGVkLiBVbmRlcnNjb3JlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVs
bGluZyBzaG91bGQgaWdub3JlIHRoZW0uCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVs
bGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLmh0bWw6IEFkZGVkLiBTcGVsbGlu
ZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBtdWx0aS13b3JkIG1pc3NwZWxs
aW5nIGV4YWN0bHkuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5
LXNlbGVjdGVkLXdvcmQuaHRtbDogQWRkZWQuIFNwZWxsaW5nIHNob3VsZCB3b3JrIHdoZW4gdGhl
IHVzZXIgc2VsZWN0cyB0aGUgbWlzc3BlbGxlZCB3b3JkIGV4YWN0bHkuCisgICAgICAgICogZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWw6IEFkZGVkLiBT
cGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVjdHMgbXVsdGlwbGUgd29y
ZHMgdGhhdCBhcmUgbm90IGEgc2luZ2xlIG1pc3NwZWxsaW5nLgorICAgICAgICAqIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5odG1sOiBBZGRl
ZC4gU3BlbGxjaGVjayBzaG91bGQgc2VsZWN0IG11bHRpLXdvcmQgbWlzc3BlbGxpbmdzIG9uIGNv
bnRleHQgY2xpY2suCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQt
c2VsZWN0LXNpbmdsZS13b3JkLmh0bWw6IEFkZGVkLiBTcGVsbGNoZWNrIHNob3VsZCBzZWxlY3Qg
dGhlIG1pc3NwZWxsZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLgorICAgICAgICAqIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24uaHRtbDogQWRkZWQuIFNwZWxsaW5n
IHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHVzZXIgc2VsZWN0cyBhIHBhcnQgb2YgbWlzc3BlbGxp
bmcuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1bmN0dWF0aW9u
LXNlbGVjdGlvbi5odG1sOiBBZGRlZC4gUHVuY3R1YXRpb24gbWFya3Mgc2hvdWxkIGJlIHRyZWF0
ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB0aGVtLgorICAgICAgICAq
IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi5odG1s
OiBBZGRlZC4gVW5kZXJzY29yZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3Bl
bGxpbmcgc2hvdWxkIGlnbm9yZSB0aGVtLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1sOiBBZGRlZC4gU3BlbGxpbmcgc2hv
dWxkIGlnbm9yZSB3aGl0ZXNwYWNlLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50eHQ6IEFkZGVkLiAKKyAgICAgICAgKiBl
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNj
b3Jlcy1leHBlY3RlZC50eHQ6IEFkZGVkLiAKKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQt
d29yZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
c2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1
YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3Bh
Y2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vVGVzdEV4cGVjdGF0aW9uczogU2tpcCB0aGUgdGVzdHMgdW50aWwgdGhlIHBsYXRmb3Jt
IGltcGxlbWVudHMgdGhlIGJlaGF2aW9yLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9UZXN0RXhw
ZWN0YXRpb25zOiBTa2lwIHRoZSB0ZXN0cyB1bnRpbCB0aGUgcGxhdGZvcm0gaW1wbGVtZW50cyB0
aGUgYmVoYXZpb3IuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6IFNr
aXAgdGhlIHRlc3RzIHVudGlsIHRoZSBwbGF0Zm9ybSBpbXBsZW1lbnRzIHRoZSBiZWhhdmlvci4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9uczogU2tpcCB0aGUgdGVzdHMg
dW50aWwgdGhlIHBsYXRmb3JtIGltcGxlbWVudHMgdGhlIGJlaGF2aW9yLgorICAgICAgICAqIHBs
YXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnM6IFNraXAgdGhlIHRlc3RzIHVudGlsIHRoZSBwbGF0
Zm9ybSBpbXBsZW1lbnRzIHRoZSBiZWhhdmlvci4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jYWly
by9UZXN0RXhwZWN0YXRpb25zOiBTa2lwIHRoZSB0ZXN0cyB1bnRpbCB0aGUgcGxhdGZvcm0gaW1w
bGVtZW50cyB0aGUgYmVoYXZpb3IuCisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3Rh
dGlvbnM6IFNraXAgdGhlIHRlc3RzIHVudGlsIHRoZSBwbGF0Zm9ybSBpbXBsZW1lbnRzIHRoZSBi
ZWhhdmlvci4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9uczogU2tpcCB0
aGUgdGVzdHMgdW50aWwgdGhlIHBsYXRmb3JtIGltcGxlbWVudHMgdGhlIGJlaGF2aW9yLgorCiAy
MDEzLTAxLTMwICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBVbnJldmlld2VkLCB1cGRhdGUgZXhwZWN0YXRpb25zIGZvciBXaW4vTWFjCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3Jlc291cmNlcy91dGlsLmpzIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9yZXNvdXJjZXMvdXRpbC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZjgwMzM0MTg4NDNjZjIwYzY2NzFlN2M4NDkwN2I3MDcyZDQ5NTIwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9yZXNvdXJjZXMvdXRpbC5qcwpAQCAt
MCwwICsxLDM4IEBACitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9IChtc2cgKyAiXG4iKTsKK30KKworZnVuY3Rp
b24gdmVyaWZ5U3BlbGxUZXN0KG5yZXRyeSkKK3sKKyAgICBpZiAoIW5yZXRyeSkgeworICAgICAg
ICBsb2coIkZBSUwgU3BlbGxjaGVjayB0aW1lZCBvdXQiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0
KCkKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWludGVybmFscy5tYXJrZXJDb3Vu
dEZvck5vZGUoZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSwgInNwZWxsaW5nIikpIHsKKyAgICAg
ICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeVNwZWxsVGVzdChucmV0cnkg
LSAxKTsgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdGVzdEZ1bmN0aW9uQ2Fs
bGJhY2soZGVzdGluYXRpb24uY2hpbGROb2Rlc1swXSk7CisgICAgZmluaXNoSlNUZXN0KCkKK30K
KworZnVuY3Rpb24gaW5pdFNwZWxsVGVzdCh0ZXN0RWxlbWVudElkLCB0ZXN0VGV4dCwgdGVzdEZ1
bmN0aW9uKQoreworICAgIGlmICghd2luZG93LmludGVybmFscyB8fCAhd2luZG93LnRlc3RSdW5u
ZXIgfHwgIXdpbmRvdy50ZXN0UnVubmVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKSB7CisgICAgICAgIGxvZygiRkFJTCBJbmNvbXBsZXRlIHRlc3QgZW52aXJvbm1lbnQiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0ZXN0RnVuY3Rpb25DYWxsYmFjayA9IHRlc3RG
dW5jdGlvbjsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICB0ZXN0UnVubmVyLnNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0
U21hcnRJbnNlcnREZWxldGVFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIuc2V0U2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdz
LnNldFVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSk7CisgICAgaW50ZXJuYWxzLnNldHRp
bmdzLnNldEVkaXRpbmdCZWhhdmlvcigid2luIik7CisgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdEVsZW1lbnRJZCk7CisgICAgZGVzdGluYXRpb24uZm9j
dXMoKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCB0ZXN0
VGV4dCk7CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHZlcmlmeVNwZWxsVGVz
dCgxMCk7IH0sIDApOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmY1NGNkOTJjMzEyNjkzMDFlOWExM2Q0MmExZjk5MWJlMDk1OGVmMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
ZG91YmxlLWNsaWNrZWQtd29yZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorU3BlbGxp
bmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2VkIG1pc3NwZWxsaW5ncy4gVG8gdGVzdCBt
YW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nLCBkb3VibGUtY2xpY2sgb24gJ3dlbGxjb21l
JywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2VlZHMg
d2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRv
U3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2Vs
bGNvbWUiCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUi
CitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BB
U1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlz
ICJ3ZWxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgor
UEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUgIgorUEFT
UyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUgIgorUEFTUyBjb250ZXh0
TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUi
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3dlbGxj
b21lIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQt
d2l0aC11bmRlcnNjb3Jlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGU1YjU2ZjMzOGMxMWM0
MjRjY2Y2NDdkMGRjNzRmYjBkNjQ4ZGM2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVy
c2NvcmVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBACitTcGVsbGluZyBzaG91bGQgd29y
ayBmb3IgZG91YmxlLWNsaWNrZWQgbWlzc3BlbGxlZCB3b3JkcyB3aXRoIHVuZGVyc2NvcmVzLiBU
byB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZV8gaG9tZS4nLCBkb3VibGUtY2xpY2sgb24g
J3dlbGxjb21lXycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0
IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBzaG93cyBzcGVsbCBjaGVjayBzdWdnZXN0
aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJr
ZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkgaXMgIndlbGxjb21lXyIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlz
ICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndl
bGxjb21lXyIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxl
bmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2Vs
bGNvbWVfICIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29t
ZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lXyAi
CitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAx
XSBpcyAid2VsY29tZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQord2VsbGNvbWVfIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tl
ZC13b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTU5MzVmZTAwMDVhNWEw
NjEzNTJjZjlhMjNlZjYzMTIzYjE2YTM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJz
Y29yZXMuaHRtbApAQCAtMCwwICsxLDgwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRp
b24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitkZXNjcmlw
dGlvbigiU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2VkIG1pc3NwZWxsZWQg
d29yZHMgd2l0aCB1bmRlcnNjb3Jlcy4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxs
eSwgdHlwZSAnd2VsbGNvbWVfIGhvbWUuJywgZG91YmxlLWNsaWNrIG9uICd3ZWxsY29tZV8nLCBh
bmQgY29udGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUg
dGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGwgY2hlY2sgc3Vn
Z2VzdGlvbnMuIik7CisKK2luaXRTcGVsbFRlc3QoImRlc3RpbmF0aW9uIiwgIndlbGxjb21lXyBo
b21lLiIsICBmdW5jdGlvbih0ZXh0Tm9kZSkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBp
bnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIs
ICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBEb3VibGUtY2xpY2sgdGhlIG1pc3Nw
ZWxsZWQgd29yZCB3aXRob3V0IHRoZSB0cmFpbGluZyB3aGl0ZXNwYWNlLgorICAgIHRlc3RSdW5u
ZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChmYWxzZSk7CisgICAgdmFyIHgg
PSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNl
dExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRU
b3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAy
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndlbGxjb21l
XyIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBvbiAid2VsbGNvbWVfIiB0byBzaG93IHRoZSBj
b250ZXh0IG1lbnUuCisgICAgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHkgPSBkZXN0aW5hdGlvbi5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24u
b2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAg
ICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAg
Ly8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5
RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdN
YXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVs
bGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5n
ZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZV8iKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50
cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7CisKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
cmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKworICAgIC8vIERvdWJsZS1jbGljayB0aGUg
bWlzc3BlbGxlZCB3b3JkIHdpdGggdGhlIHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgdGVzdFJ1
bm5lci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKHRydWUpOworICAgIHZhciB4
ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZz
ZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8g
MjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5t
b3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworCisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29t
ZV8gIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZV8gIiB0byBzaG93IHRo
ZSBjb250ZXh0IG1lbnUuCisgICAgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAgIHkgPSBkZXN0aW5hdGlvbi5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRp
b24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsK
KyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7Cisg
ICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIu
a2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxp
bmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJz
cGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZV8gIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxl
bWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI0OTI3M2QyZTBhYmFiOWQ5YmNlYzkyN2EwOWMzZmM0NmNlMDI3Y2YKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2Vk
LXdvcmQuaHRtbApAQCAtMCwwICsxLDc5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRp
b24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitkZXNjcmlw
dGlvbigiU3BlbGxpbmcgc2hvdWxkIHdvcmsgZm9yIGRvdWJsZS1jbGlja2VkIG1pc3NwZWxsaW5n
cy4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9t
ZS4nLCBkb3VibGUtY2xpY2sgb24gJ3dlbGxjb21lJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhl
IHNlbGVjdGlvbi4gIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUg
Y29udGV4dCBtZW51IHNob3dzIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLiIpOworCitpbml0U3Bl
bGxUZXN0KCJkZXN0aW5hdGlvbiIsICJ3ZWxsY29tZSBob21lLiIsIGZ1bmN0aW9uKHRleHROb2Rl
KSB7CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5v
ZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
c3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsK
KworICAgIC8vIERvdWJsZS1jbGljayB0aGUgbWlzc3BlbGxlZCB3b3JkIHdpdGhvdXQgdHJhaWxp
bmcgd2hpdGVzcGFjZS4KKyAgICB0ZXN0UnVubmVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFj
ZUVuYWJsZWQoZmFsc2UpOworICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9m
ZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0
aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsg
ZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBv
biAid2VsbGNvbWUiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB4ID0gZGVzdGluYXRp
b24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7
CisgICAgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlv
bi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNl
bmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQg
bWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFC
KSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJh
bmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVs
ZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworCisg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisK
KyAgICAvLyBEb3VibGUtY2xpY2sgdGhlIG1pc3NwZWxsZWQgd29yZCB3aXRoIHRyYWlsaW5nIHdo
aXRlc3BhY2UuCisgICAgdGVzdFJ1bm5lci5zZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkKHRydWUpOworICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlv
bi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGlu
YXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VV
cCgpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkiLCAid2VsbGNvbWUgIik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxs
Y29tZSAiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB4ID0gZGVzdGluYXRpb24ub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAg
eSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZz
ZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5j
b250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4K
KyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVs
bCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9y
Tm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIndl
bGxjb21lICIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50
c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIiwgIndlbGNvbWUiKTsKK30pOworCis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLW11bHRpcGxlLXdv
cmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
ZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDRhNzk0NzVlNTc2ZmJiODc5ODFiNjJlNjdiNTFhNDgyN2NjZjYyZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3Rl
ZC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorU3BlbGxpbmcg
c2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbXVsdGktd29yZCBtaXNzcGVsbGlu
ZyBleGFjdGx5LiBUbyB0ZXN0IG1hbnVhbGx5LCBlbmFibGUgJ0FzayBHb29nbGUgZm9yIFN1Z2dl
c3Rpb25zJyBpbiBDaHJvbWUsIHR5cGUgJ0l0IHNob3VsZCBiZSB1cHBlciBjYXNlLicsIHNlbGVj
dCAndXBwZXIgY2FzZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uVGhlIHRl
c3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsaW5nIHN1Z2dlc3Rp
b25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtl
clJhbmdlLnRvU3RyaW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIGlzICIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkg
aXMgInVwcGVyIGNhc2UiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlz
ICJ1cHBlciBjYXNlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCitJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jk
cy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNl
bGVjdGVkLW11bHRpcGxlLXdvcmRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2QzMjU0ZmI0NjhiODc0NzIz
ZWU1YzZhNGM4YzE5NGJmNjBhOTI5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5o
dG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29u
dGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiU3Bl
bGxpbmcgc2hvdWxkIHdvcmsgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgbXVsdGktd29yZCBtaXNz
cGVsbGluZyBleGFjdGx5LiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCBlbmFi
bGUgJ0FzayBHb29nbGUgZm9yIFN1Z2dlc3Rpb25zJyBpbiBDaHJvbWUsIHR5cGUgJ0l0IHNob3Vs
ZCBiZSB1cHBlciBjYXNlLicsIHNlbGVjdCAndXBwZXIgY2FzZScsIGFuZCBjb250ZXh0LWNsaWNr
IG9uIHRoZSBzZWxlY3Rpb24uIiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hl
biB0aGUgY29udGV4dCBtZW51IHNob3dzIHNwZWxsaW5nIHN1Z2dlc3Rpb25zLiIpOworCitpbml0
U3BlbGxUZXN0KCJkZXN0aW5hdGlvbiIsICJJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4iLCBmdW5j
dGlvbih0ZXh0Tm9kZSkgeworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFy
a2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNl
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSIsICIiKTsKKyAgICAKKyAgICAvLyBTZWxlY3QgdGhlIG11bHRpLXdvcmQgbWlzc3Bl
bGxpbmcgd2l0aG91dCBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlIG9yIHB1bmN0dWF0aW9uLgorICAg
IHZhciB3b3JkUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHdvcmRSYW5nZS5z
ZXRTdGFydCh0ZXh0Tm9kZSwgMTMpOworICAgIHdvcmRSYW5nZS5zZXRFbmQodGV4dE5vZGUsIDIz
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHdvcmRSYW5nZSk7CisKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgInVwcGVyIGNh
c2UiKTsKKworICAgIC8vIENvbnRleHQgY2xpY2sgb24gInVwcGVyIGNhc2UiIHRvIHNob3cgdGhl
IGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDEwMDsKKyAgICB2YXIgeSA9IGRlc3Rp
bmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBk
ZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHgsIHkpOworICAgIGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xp
Y2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVu
dFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAg
ICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0
Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGlu
Z01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAidXBwZXIgY2FzZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAidXBwZXIgY2Fz
ZSIpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0
ZWQtd29yZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRlMzZj
ZjA0MzkxMDQ5OTZmMGNhZjE1NmIzZTk5MzFhMTg4ZTM4MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3Jk
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitTcGVsbGluZyBzaG91bGQgd29yayB3aGVu
IHRoZSB1c2VyIHNlbGVjdHMgdGhlIG1pc3NwZWxsZWQgd29yZCBleGFjdGx5LiBUbyB0ZXN0IG1h
bnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIHNlbGVjdCAnd2VsbGNvbWUnLCBhbmQgY29u
dGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNjZWVkcyB3aGVuIHRoZSBj
b250ZXh0IG1lbnUgc2hvd3Mgc3BlbGxpbmcgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAi
d2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIiCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mg
c3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyBjb250ZXh0TWVu
dUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0gaXMgIndlbGNvbWUiCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJob21lIgorUEFTUyB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiaG9tZSIKK1BBU1MgY29udGV4dE1lbnVF
bGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICI8c2VwYXJhdG9yPiIK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQord2VsbGNv
bWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxp
bmctZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyMWQ5
NmQ4N2MwNGQ5NzMxYWJjYjBmYTM1N2NiMjc1NzhlZDg2Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29y
ZC5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIg
Y29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9u
KCJTcGVsbGluZyBzaG91bGQgd29yayB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgdGhlIG1pc3NwZWxs
ZWQgd29yZCBleGFjdGx5LiAiICsKKyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBl
ICd3ZWxsY29tZSBob21lLicsIHNlbGVjdCAnd2VsbGNvbWUnLCBhbmQgY29udGV4dC1jbGljayBv
biB0aGUgc2VsZWN0aW9uLiAiICsKKyAgICAgICAgICAgICJUaGUgdGVzdCBzdWNjZWVkcyB3aGVu
IHRoZSBjb250ZXh0IG1lbnUgc2hvd3Mgc3BlbGxpbmcgc3VnZ2VzdGlvbnMuIik7CisKK2luaXRT
cGVsbFRlc3QoImRlc3RpbmF0aW9uIiwgIndlbGxjb21lIGhvbWUuIiwgZnVuY3Rpb24odGV4dE5v
ZGUpIHsKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9y
Tm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIp
OworCisgICAgLy8gU2VsZWN0IHRoZSBtaXNzcGVsbGVkIHdvcmQgd2l0aG91dCBzdXJyb3VuZGlu
ZyB3aGl0ZXNwYWNlIG9yIHB1bmN0dWF0aW9uLgorICAgIHZhciB3b3JkUmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHdvcmRSYW5nZS5zZXRTdGFydCh0ZXh0Tm9kZSwgMCk7Cisg
ICAgd29yZFJhbmdlLnNldEVuZCh0ZXh0Tm9kZSwgOCk7CisgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5n
ZSh3b3JkUmFuZ2UpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworCisgICAgLy8gQ29udGV4dCBjbGlj
ayBvbiAid2VsbGNvbWUiIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRl
c3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVm
dCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCAr
IGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50
cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0
aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFy
Q29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5h
bHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxs
Y29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNv
bnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICJ3ZWxj
b21lIik7CisgICAgCisgICAgLy8gU2VsZWN0IGEgY29ycmVjdGx5IHNwZWxsZWQgd29yZCB3aXRo
b3V0IHN1cnJvdW5kaW5nIHdoaXRlc3BhY2Ugb3IgcHVuY3R1YXRpb24uCisgICAgd29yZFJhbmdl
LnNldFN0YXJ0KHRleHROb2RlLCA5KTsKKyAgICB3b3JkUmFuZ2Uuc2V0RW5kKHRleHROb2RlLCAx
Myk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZSh3b3JkUmFuZ2UpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiaG9tZSIpOwor
CisgICAgLy8gQ29udGV4dCBjbGljayBvbiAiaG9tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51
LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0
aW5hdGlvbi5vZmZzZXRMZWZ0ICsgODA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQ
YXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zm
c2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBj
b250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8g
RXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93
bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJob21lIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51
RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAiPHNlcGFyYXRvcj4iKTsKK30pOworCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYwZGQyYmUwOWY4ZmVhZWM2MzAzNjc3NTI3MjAzMWU4
NjQxMDFlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBA
QAorU3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIG11bHRpcGxl
IHdvcmRzIHRoYXQgYXJlIG5vdCBhIHNpbmdsZSBtaXNzcGVsbGluZy4gVG8gdGVzdCBtYW51YWxs
eSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nLCBzZWxlY3QgJ3dlbGxjb21lIGhvbWUnLCBhbmQgY29u
dGV4dC1jbGljayBvbiB0aGUgc2VsZWN0aW9uLiBUaGUgdGVzdCBzdWNlZWRzIHdoZW4gdGhlIGNv
bnRleHQgbWVudSBoYXMgbm8gc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBp
cyAid2VsbGNvbWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIi
CitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSBob21l
IgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFT
UyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUgaG9tZSIKK1BB
U1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlz
ICI8c2VwYXJhdG9yPiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTAyN2I5N2JjNzE0YzFkOGQwYzYwZTA3Mjg5MjgwNDM0MTY0NmJlOQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3Jk
LXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0
aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rl
c2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVjdHMg
bXVsdGlwbGUgd29yZHMgdGhhdCBhcmUgbm90IGEgc2luZ2xlIG1pc3NwZWxsaW5nLiAiICsKKyAg
ICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicsIHNlbGVj
dCAnd2VsbGNvbWUgaG9tZScsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rpb24uICIg
KworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhh
cyBubyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKKworaW5pdFNwZWxsVGVzdCgiZGVzdGlu
YXRpb24iLCAid2VsbGNvbWUgaG9tZS4iLCBmdW5jdGlvbih0ZXh0Tm9kZSkgeworICAgIHNwZWxs
aW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAi
c3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2Vy
UmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAvLyBTZWxl
Y3QgdGhlIHRleHQgIndlbGxjb21lIGhvbWUiLgorICAgIHZhciBtdWx0aVdvcmRSYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgbXVsdGlXb3JkUmFuZ2Uuc2V0U3RhcnQodGV4dE5v
ZGUsIDApOworICAgIG11bHRpV29yZFJhbmdlLnNldEVuZCh0ZXh0Tm9kZSwgMTMpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UobXVsdGlXb3JkUmFuZ2UpOworCisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSBob21l
Iik7CisKKyAgICAvLyBDb250ZXh0IGNsaWNrIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAg
ICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRp
b24ub2Zmc2V0TGVmdCArIDQwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhl
aWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4
dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBr
ZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3Ry
aW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFu
Z2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAw
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJp
bmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUgaG9tZSIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxl
bmd0aCAtIDFdIiwgIjxzZXBhcmF0b3I+Iik7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUt
d29yZHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2YTQ1NDE2OGFkYzk3ZDFjN2Q2ZGU0MGEz
ZmU3YTdhZDBiMjk0Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTMgQEAKK1NwZWxsIGNoZWNrIHNob3VsZCBzZWxlY3QgbXVsdGktd29yZCBt
aXNzcGVsbGluZ3Mgb24gY29udGV4dCBjbGljay4gVG8gdGVzdCBtYW51YWxseSwgZW5hYmxlICdB
c2sgR29vZ2xlIGZvciBTdWdnZXN0aW9ucycgaW4gQ2hyb21lLCB0eXBlICdJdCBzaG91bGQgYmUg
dXBwZXIgY2FzZS4nLCBhbmQgY29udGV4dC1jbGljayBvbiB0aGUgd29yZCAndXBwZXInLiBUaGUg
dGVzdCBzdWNjZWVkcyB3aGVuICd1cHBlciBjYXNlJyB3YXMgc2VsZWN0ZWQgYWZ0ZXIgY29udGV4
dCBjbGljay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdN
YXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3Ry
aW5nKCkgaXMgInVwcGVyIGNhc2UiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIGlzICJ1cHBlciBjYXNlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCitJdCBzaG91bGQgYmUgdXBwZXIgY2FzZS4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13
b3Jkcy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQt
c2VsZWN0LW11bHRpcGxlLXdvcmRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RmMDQyODM3YjE0NTYzMDQw
OWM4MDhmNWY4NDQ1MjM1NTY3OTQzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5odG1s
CkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVu
dEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiU3BlbGwg
Y2hlY2sgc2hvdWxkIHNlbGVjdCBtdWx0aS13b3JkIG1pc3NwZWxsaW5ncyBvbiBjb250ZXh0IGNs
aWNrLiAiKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIGVuYWJsZSAnQXNrIEdvb2ds
ZSBmb3IgU3VnZ2VzdGlvbnMnIGluIENocm9tZSwgdHlwZSAnSXQgc2hvdWxkIGJlIHVwcGVyIGNh
c2UuJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHdvcmQgJ3VwcGVyJy4gIiArCisgICAgICAg
ICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiAndXBwZXIgY2FzZScgd2FzIHNlbGVjdGVkIGFm
dGVyIGNvbnRleHQgY2xpY2suIik7CisKK2luaXRTcGVsbFRlc3QoImRlc3RpbmF0aW9uIiwgIkl0
IHNob3VsZCBiZSB1cHBlciBjYXNlLiIsIGZ1bmN0aW9uKHRleHROb2RlKSB7CisgICAgc3BlbGxp
bmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJz
cGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJS
YW5nZS50b1N0cmluZygpIiwgInVwcGVyIGNhc2UiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gQ29u
dGV4dCBjbGljayBvbiAidXBwZXIgY2FzZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAg
IHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlv
bi5vZmZzZXRMZWZ0ICsgMTAwOworICAgIHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhl
aWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4
dE1lbnVFbGVtZW50cyA9IGV2ZW50U2VuZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBr
ZXkgdG8gaGlkZSB0aGUgY29udGV4dCBtZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3Ry
aW5nLmZyb21DaGFyQ29kZSgweDAwMUIpLCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFu
Z2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAw
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJp
bmcoKSIsICJ1cHBlciBjYXNlIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ1cHBlciBjYXNlIik7Cit9KTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxl
Y3Qtc2luZ2xlLXdvcmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhOGQwODY2YTMzNzg4MGQx
OWRlYTRiMmNhMWM4ODNmY2JlYzIxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1NwZWxsIGNoZWNrIHNlbGVjdHMgdGhlIG1pc3NwZWxs
ZWQgd29yZCBvbiBjb250ZXh0IGNsaWNrLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29t
ZSBob21lLicgYW5kIGNvbnRleHQtY2xpY2sgb24gJ3dlbGxjb21lJy4gVGhlIHRlc3Qgc3VjY2Vl
ZHMgd2hlbiAnd2VsbGNvbWUnIGlzIHNlbGVjdGVkIGFmdGVyIHRoZSBjb250ZXh0IGNsaWNrLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAiIgorUEFTUyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndl
bGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAid2VsbGNv
bWUiCitQQVNTIGNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGgg
LSAxXSBpcyAid2VsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkg
aXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mg
Y29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICI8
c2VwYXJhdG9yPiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQord2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGI4Mjg0YTk0OWVhMGU5MGNiMDE0YWYwMjY3Zjc1NzRjNDg2NDRlOAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
c2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0
aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgor
ICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisK
KzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJTcGVsbCBjaGVjayBzZWxlY3RzIHRoZSBtaXNzcGVs
bGVkIHdvcmQgb24gY29udGV4dCBjbGljay4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51
YWxseSwgdHlwZSAnd2VsbGNvbWUgaG9tZS4nIGFuZCBjb250ZXh0LWNsaWNrIG9uICd3ZWxsY29t
ZScuICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gJ3dlbGxjb21lJyBp
cyBzZWxlY3RlZCBhZnRlciB0aGUgY29udGV4dCBjbGljay4iKTsKKworaW5pdFNwZWxsVGVzdCgi
ZGVzdGluYXRpb24iLCAid2VsbGNvbWUgaG9tZS4iLCBmdW5jdGlvbih0ZXh0Tm9kZSkgeworICAg
IHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRleHRO
b2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxsaW5n
TWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAgICAv
LyBDb250ZXh0IGNsaWNrIG9uICJ3ZWxsY29tZSIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51Lgor
ICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5h
dGlvbi5vZmZzZXRMZWZ0ICsgNDA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0
SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250
ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNj
IGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJS
YW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIs
IDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0
cmluZygpIiwgIndlbGxjb21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0
aCAtIDFdIiwgIndlbGNvbWUiKTsKKworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVB
bGxSYW5nZXMoKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBvbiAiaG9tZSIg
dG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVzdGluYXRpb24ub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0ICsgODA7CisgICAgdmFy
IHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zm
c2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRzID0gZXZlbnRTZW5kZXIu
Y29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRoZSBjb250ZXh0IG1lbnUu
CisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAxQiksIG51
bGwpOworCisgICAgLy8gQ29udGV4dCBjbGljayBzaG91bGQgbm90IHNlbGVjdCBjb3JyZWN0bHkg
c3BlbGxlZCB3b3JkcyB3aXRoICJ3aW4iIGVkaXRpbmcgYmVoYXZpb3IuCisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVF
bGVtZW50cy5sZW5ndGggLSAxXSIsICI8c2VwYXJhdG9yPiIpOworfSk7CisKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA5N2VlNzZlYTE0YTUwNWZkOTRmZjg2ODg0MGI5ZjczMmQ1YTVi
MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXN1YndvcmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitTcGVs
bGluZyBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB1c2VyIHNlbGVjdHMgYSBwYXJ0IG9mIG1pc3Nw
ZWxsaW5nLiBUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICd3ZWxsY29tZSBob21lLicgc2VsZWN0ICds
bGNvJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjZWVk
cyB3aGVuIHRoZSBjb250ZXh0IG1lbnUgaGFzIG5vIHNwZWxsIGNoZWNrIHN1Z2dlc3Rpb25zLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAiIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAi
bGxjbyIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIK
K1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgImxsY28iCitQQVNTIGNv
bnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSBpcyAiPHNl
cGFyYXRvcj4iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKK3dlbGxjb21lIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjli
Yzg1ZGFjMmE5ODMwYTNmMTY0ZTc0ZDdiMTUzZjA2MDE4ZWRmMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24u
aHRtbApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNv
bnRlbnRFZGl0YWJsZT48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigi
U3BlbGxpbmcgc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdXNlciBzZWxlY3RzIGEgcGFydCBvZiBt
aXNzcGVsbGluZy4gIiArCisgICAgICAgICAgICAiVG8gdGVzdCBtYW51YWxseSwgdHlwZSAnd2Vs
bGNvbWUgaG9tZS4nIHNlbGVjdCAnbGxjbycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxl
Y3Rpb24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2VlZHMgd2hlbiB0aGUgY29udGV4
dCBtZW51IGhhcyBubyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKKworaW5pdFNwZWxsVGVz
dCgiZGVzdGluYXRpb24iLCAid2VsbGNvbWUgaG9tZS4iLCBmdW5jdGlvbih0ZXh0Tm9kZSkgewor
ICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKHRl
eHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNwZWxs
aW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiIik7CisKKyAg
ICAvLyBTZWxlY3QgdGhlIHRleHQgImxsY28iLgorICAgIHZhciBzdWJXb3JkUmFuZ2UgPSBkb2N1
bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHN1YldvcmRSYW5nZS5zZXRTdGFydCh0ZXh0Tm9kZSwg
Mik7CisgICAgc3ViV29yZFJhbmdlLnNldEVuZCh0ZXh0Tm9kZSwgNik7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5hZGRSYW5nZShzdWJXb3JkUmFuZ2UpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJsbGNvIik7CisKKyAgICAvLyBDb250
ZXh0IGNsaWNrIG9uICdsbGNvJyB0byBzaG93IHRoZSBjb250ZXh0IG1lbnUuCisgICAgdmFyIHgg
PSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRlc3RpbmF0aW9uLm9mZnNl
dExlZnQgKyA0MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNldFBhcmVudC5vZmZzZXRU
b3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRIZWlnaHQgLyAy
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGNvbnRleHRNZW51RWxl
bWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAvLyBFc2Mga2V5IHRvIGhp
ZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlEb3duKFN0cmluZy5mcm9t
Q2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50
ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAi
d2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIiwgImxsY28iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNv
bnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50cy5sZW5ndGggLSAxXSIsICI8c2Vw
YXJhdG9yPiIpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVu
Y3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgyMjE4MGQwZmIwMWZkNTEyZjM5ZDI5NTkxOTE3MjM5ZjZkM2Y4ZGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgt
cHVuY3R1YXRpb24tc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitQdW5j
dHVhdGlvbiBtYXJrcyBzaG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBz
aG91bGQgaWdub3JlIHRoZW0uIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIScsIHNl
bGVjdCAnd2VsbGNvbWUhJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhl
IHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBzcGVsbCBjaGVjayBzdWdn
ZXN0aW9ucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdN
YXJrZXJSYW5nZS50b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIndlbGxjb21lISIKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygp
IGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMg
IndlbGxjb21lISIKK1BBU1MgY29udGV4dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRz
Lmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21lIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCit3ZWxsY29tZSEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1z
ZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjU2NWI3MGZhZTFiNjQzYmUxOGJkY2Q4ODZlOGU0
MzgxMTJmOTdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy13aXRoLXB1bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNDkg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJj
b250YWluZXIiPgorICA8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2
PgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJQdW5jdHVhdGlvbiBtYXJrcyBz
aG91bGQgYmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRo
ZW0uICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ3dlbGxjb21lIScs
IHNlbGVjdCAnd2VsbGNvbWUhJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4g
IiArCisgICAgICAgICAgICAiVGhlIHRlc3Qgc3VjY2VlZHMgd2hlbiB0aGUgY29udGV4dCBtZW51
IGhhcyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4iKTsKKworaW5pdFNwZWxsVGVzdCgiZGVzdGlu
YXRpb24iLCAid2VsbGNvbWUhIiwgZnVuY3Rpb24odGV4dE5vZGUpIHsKKyAgICBzcGVsbGluZ01h
cmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxs
aW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisgICAgLy8gU2VsZWN0IHRo
ZSB0ZXh0ICJ3ZWxsY29tZSEiIHdpdGggdGhlIGV4Y2xhbWF0aW9uIG1hcmsuCisgICAgdmFyIHJh
bmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0Tm9k
ZSwgMCk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHROb2RlLCA5KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUhIik7CisKKyAgICAvLyBDb250ZXh0IGNs
aWNrIHRvIHNob3cgdGhlIGNvbnRleHQgbWVudS4KKyAgICB2YXIgeCA9IGRlc3RpbmF0aW9uLm9m
ZnNldFBhcmVudC5vZmZzZXRMZWZ0ICsgZGVzdGluYXRpb24ub2Zmc2V0TGVmdCArIDQwOworICAg
IHZhciB5ID0gZGVzdGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9u
Lm9mZnNldFRvcCArIGRlc3RpbmF0aW9uLm9mZnNldEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgY29udGV4dE1lbnVFbGVtZW50cyA9IGV2ZW50U2Vu
ZGVyLmNvbnRleHRDbGljaygpOworICAgIC8vIEVzYyBrZXkgdG8gaGlkZSB0aGUgY29udGV4dCBt
ZW51LgorICAgIGV2ZW50U2VuZGVyLmtleURvd24oU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMUIp
LCBudWxsKTsKKworICAgIHNwZWxsaW5nTWFya2VyUmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFu
Z2VGb3JOb2RlKHRleHROb2RlLCAic3BlbGxpbmciLCAwKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoInNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSIsICJ3ZWxsY29tZSIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCki
LCAid2VsbGNvbWUhIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb250ZXh0TWVudUVs
ZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2VsY29tZSIpOworfSk7
CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rp
b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13
aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTE0NDYx
ZWYxYjRhYWNhZDE1OTMzYTZiN2UyNzhhNWRmZWYzYWZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0
aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitVbmRlcnNjb3JlcyBzaG91bGQgYmUg
dHJlYXRlZCBhcyB3aGl0ZXNwYWNlOiBzcGVsbGluZyBzaG91bGQgaWdub3JlIHRoZW0uIFRvIHRl
c3QgbWFudWFsbHksIHR5cGUgJ0hpLCBfd2VsbGNvbWVfIGhvbWUuJywgc2VsZWN0ICdfd2VsbGNv
bWVfJywgYW5kIGNvbnRleHQtY2xpY2sgb24gdGhlIHNlbGVjdGlvbi4gVGhlIHRlc3Qgc3VjY2Vl
ZHMgd2hlbiB0aGUgY29udGV4dCBtZW51IGhhcyBzcGVsbCBjaGVjayBzdWdnZXN0aW9ucy4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3BlbGxpbmdNYXJrZXJSYW5nZS50
b1N0cmluZygpIGlzICJ3ZWxsY29tZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3Ry
aW5nKCkgaXMgIiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIl93
ZWxsY29tZV8iCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNv
bWUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJfd2VsbGNvbWVf
IgorUEFTUyBjb250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0g
MV0gaXMgIndlbGNvbWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKK0hpLCBfd2VsbGNvbWVfIGhvbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNl
bGVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMDM2YmI4MmI5YWYzMzQyY2M2Y2Y1NTYxOTliMzJk
NzA0OGRjZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbApAQCAtMCwwICsxLDQ5IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29u
dGFpbmVyIj4KKyAgPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRFZGl0YWJsZT48L2Rpdj4K
KzwvZGl2PgorCis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVW5kZXJzY29yZXMgc2hvdWxkIGJl
IHRyZWF0ZWQgYXMgd2hpdGVzcGFjZTogc3BlbGxpbmcgc2hvdWxkIGlnbm9yZSB0aGVtLiAiICsK
KyAgICAgICAgICAgICJUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlICdIaSwgX3dlbGxjb21lXyBob21l
LicsIHNlbGVjdCAnX3dlbGxjb21lXycsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBzZWxlY3Rp
b24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQg
bWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CisKK2luaXRTcGVsbFRlc3QoImRl
c3RpbmF0aW9uIiwgIkhpLCBfd2VsbGNvbWVfIGhvbWUuIiwgZnVuY3Rpb24odGV4dE5vZGUpIHsK
KyAgICBzcGVsbGluZ01hcmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0
ZXh0Tm9kZSwgInNwZWxsaW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVs
bGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiIpOworCisg
ICAgLy8gU2VsZWN0IHRoZSB0ZXh0ICJfd2VsbGNvbWVfIi4KKyAgICB2YXIgcmFuZ2VXaXRoVW5k
ZXJzY29yZXMgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlV2l0aFVuZGVyc2Nv
cmVzLnNldFN0YXJ0KHRleHROb2RlLCA0KTsKKyAgICByYW5nZVdpdGhVbmRlcnNjb3Jlcy5zZXRF
bmQodGV4dE5vZGUsIDE0KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFu
Z2VzKCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlV2l0aFVuZGVy
c2NvcmVzKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkiLCAiX3dlbGxjb21lXyIpOworCisgICAgLy8gQ29udGV4dCBjbGljayBv
biAiX3dlbGxjb21lXyIgdG8gc2hvdyB0aGUgY29udGV4dCBtZW51LgorICAgIHZhciB4ID0gZGVz
dGluYXRpb24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBkZXN0aW5hdGlvbi5vZmZzZXRMZWZ0
ICsgODA7CisgICAgdmFyIHkgPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsg
ZGVzdGluYXRpb24ub2Zmc2V0VG9wICsgZGVzdGluYXRpb24ub2Zmc2V0SGVpZ2h0IC8gMjsKKyAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBjb250ZXh0TWVudUVsZW1lbnRz
ID0gZXZlbnRTZW5kZXIuY29udGV4dENsaWNrKCk7CisgICAgLy8gRXNjIGtleSB0byBoaWRlIHRo
ZSBjb250ZXh0IG1lbnUuCisgICAgZXZlbnRTZW5kZXIua2V5RG93bihTdHJpbmcuZnJvbUNoYXJD
b2RlKDB4MDAxQiksIG51bGwpOworCisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFs
cy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxj
b21lIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSIsICJfd2VsbGNvbWVfIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJj
b250ZXh0TWVudUVsZW1lbnRzW2NvbnRleHRNZW51RWxlbWVudHMubGVuZ3RoIC0gMV0iLCAid2Vs
Y29tZSIpOworfSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVz
cGFjZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NDM1NTE3M2E3Mzg3OWZlNDViNDlhMjk4YTNjZjBjNWNmNGQ1NjcyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRl
c3BhY2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitTcGVsbGluZyBz
aG91bGQgaWdub3JlIHdoaXRlc3BhY2UuIFRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ2hlbGxvLCB3
ZWxsY29tZSBob21lLicsIHNlbGVjdCAnIHdlbGxjb21lICcsIGFuZCBjb250ZXh0LWNsaWNrIG9u
IHRoZSBzZWxlY3Rpb24uIFRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNvbnRleHQgbWVudSBo
YXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIHNwZWxsaW5nTWFya2VyUmFuZ2UudG9TdHJpbmcoKSBpcyAid2VsbGNvbWUiCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIgd2VsbGNvbWUgIgorUEFT
UyBzcGVsbGluZ01hcmtlclJhbmdlLnRvU3RyaW5nKCkgaXMgIndlbGxjb21lIgorUEFTUyB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiIHdlbGxjb21lICIKK1BBU1MgY29udGV4
dE1lbnVFbGVtZW50c1tjb250ZXh0TWVudUVsZW1lbnRzLmxlbmd0aCAtIDFdIGlzICJ3ZWxjb21l
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitoZWxs
bywgd2VsbGNvbWUgaG9tZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWU5MTE5MGI3OWU5ZjQwODkzNWVlNGFjN2ExZmYzYTcyMmFmZjgwZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0
aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICA8
ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPC9kaXY+CisKKzxz
Y3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJTcGVsbGluZyBzaG91bGQgaWdub3JlIHdoaXRlc3BhY2Uu
ICIgKworICAgICAgICAgICAgIlRvIHRlc3QgbWFudWFsbHksIHR5cGUgJ2hlbGxvLCB3ZWxsY29t
ZSBob21lLicsIHNlbGVjdCAnIHdlbGxjb21lICcsIGFuZCBjb250ZXh0LWNsaWNrIG9uIHRoZSBz
ZWxlY3Rpb24uICIgKworICAgICAgICAgICAgIlRoZSB0ZXN0IHN1Y2NlZWRzIHdoZW4gdGhlIGNv
bnRleHQgbWVudSBoYXMgc3BlbGwgY2hlY2sgc3VnZ2VzdGlvbnMuIik7CisKK2luaXRTcGVsbFRl
c3QoImRlc3RpbmF0aW9uIiwgImhlbGxvLCB3ZWxsY29tZSBob21lLiIsIGZ1bmN0aW9uKHRleHRO
b2RlKSB7CisgICAgc3BlbGxpbmdNYXJrZXJSYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZv
ck5vZGUodGV4dE5vZGUsICJzcGVsbGluZyIsIDApOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygic3BlbGxpbmdNYXJrZXJSYW5nZS50b1N0cmluZygpIiwgIndlbGxjb21lIik7CisKKyAgICAv
LyBTZWxlY3QgdGhlIHRleHQgIiB3ZWxsY29tZSAiIHdpdGggc3Vycm91bmRpbmcgd2hpdGVzcGFj
ZS4KKyAgICB2YXIgcmFuZ2VXaXRoV2hpdGVzcGFjZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2VXaXRoV2hpdGVzcGFjZS5zZXRTdGFydCh0ZXh0Tm9kZSwgNik7CisgICAgcmFu
Z2VXaXRoV2hpdGVzcGFjZS5zZXRFbmQodGV4dE5vZGUsIDE2KTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlV2l0aFdoaXRlc3BhY2UpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICIgd2VsbGNvbWUgIik7CisKKyAg
ICAvLyBDb250ZXh0IGNsaWNrIG9uICIgd2VsbGNvbWUgIiB0byBzaG93IHRoZSBjb250ZXh0IG1l
bnUuCisgICAgdmFyIHggPSBkZXN0aW5hdGlvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGRl
c3RpbmF0aW9uLm9mZnNldExlZnQgKyA4MDsKKyAgICB2YXIgeSA9IGRlc3RpbmF0aW9uLm9mZnNl
dFBhcmVudC5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5vZmZzZXRUb3AgKyBkZXN0aW5hdGlvbi5v
ZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAg
IGNvbnRleHRNZW51RWxlbWVudHMgPSBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKKyAgICAv
LyBFc2Mga2V5IHRvIGhpZGUgdGhlIGNvbnRleHQgbWVudS4KKyAgICBldmVudFNlbmRlci5rZXlE
b3duKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDFCKSwgbnVsbCk7CisKKyAgICBzcGVsbGluZ01h
cmtlclJhbmdlID0gaW50ZXJuYWxzLm1hcmtlclJhbmdlRm9yTm9kZSh0ZXh0Tm9kZSwgInNwZWxs
aW5nIiwgMCk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzcGVsbGluZ01hcmtlclJhbmdl
LnRvU3RyaW5nKCkiLCAid2VsbGNvbWUiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIiB3ZWxsY29tZSAiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImNvbnRleHRNZW51RWxlbWVudHNbY29udGV4dE1lbnVFbGVtZW50
cy5sZW5ndGggLSAxXSIsICJ3ZWxjb21lIik7Cit9KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDFlZDZjZTk2Zjc3Y2VlY2FlMTI3YzMyMDc1NmI3ZWFjZTZlYzgxMzcu
LjA4MWQ4YmU1OGFlZjUxZDNjYWJjZjlkNjFhMDM3MTMyNTUwMmY2NGUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDQyMiwzICs0NDIy
LDE2IEBAIHdlYmtpdC5vcmcvYi8xMDgyODUgWyBEZWJ1ZyBdIGZhc3Qvd29ya2Vycy9zdG9yYWdl
L29wZW4tZGF0YWJhc2Utd2hpbGUtdHJhbnNhY3RpCiB3ZWJraXQub3JnL2IvMTA4Mjg1IFsgRGVi
dWcgXSBmYXN0L3dvcmtlcnMvc3RvcmFnZS9zcWwtZGF0YS10eXBlcy1zeW5jLmh0bWwgWyBDcmFz
aCBdCiB3ZWJraXQub3JnL2IvMTA4Mjg1IFsgRGVidWcgXSBmYXN0L3dvcmtlcnMvc3RvcmFnZS90
ZXN0LWF1dGhvcml6ZXItc3luYy5odG1sIFsgQ3Jhc2ggXQogd2Via2l0Lm9yZy9iLzEwODI4NSBb
IERlYnVnIF0gaHR0cC90ZXN0cy93b3JrZXJzL3Rlcm1pbmF0ZS1kdXJpbmctc3luYy1vcGVyYXRp
b24uaHRtbCBbIENyYXNoIF0KKworIyBTcGVsbGNoZWNrZXIgYmVoYXZpb3IgdGVzdHMuCit3ZWJr
aXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQt
d29yZC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC13aXRoLXVuZGVyc2NvcmVzLmh0bWwgWyBTa2lw
IF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5
LXNlbGVjdGVkLW11bHRpcGxlLXdvcmRzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDgz
NzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQuaHRtbCBb
IFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW11
bHRpd29yZC1zZWxlY3Rpb24uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3QtbXVsdGlwbGUtd29yZHMuaHRtbCBb
IFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXNo
b3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3
MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwgWyBTa2lw
IF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXB1
bmN0dWF0aW9uLXNlbGVjdGlvbi5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi5odG1sIFsg
U2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0
aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGRjNTc2NDNkMTc1YzBjZGEwMTYxYTI2MTg0NTky
ZDNiNTY1MTNjMWMuLjJmNzNlZjI0NzAwZTg4YjQzMDUyZWRkOWNhZjA5NDliYzhkNWVjZjggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODI1LDMgKzE4
MjUsMTYgQEAgd2Via2l0Lm9yZy9iLzEwODMxNSBmYXN0L3J1Ynkvc2VsZWN0LXJ1YnkuaHRtbCBb
IE1pc3NpbmcgXQogCiAjIGVtcHR5IHBvc2l0aW9uOmZpeGVkIGVsZW1lbnQgZ2V0cyBhIGxheWVy
LiBTaG91bGQgbm90IGhhcHBlbiBhZnRlciByMTQxMDM5CiB3ZWJraXQub3JnL2IvMTA4MzM5IGNv
bXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW5vLWNvbnRlbnQuaHRtbCBb
IEZhaWx1cmUgXQorCisjIFNwZWxsY2hlY2tlciBiZWhhdmlvciB0ZXN0cy4KK3dlYmtpdC5vcmcv
Yi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLmh0
bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbCBbIFNraXAgXQord2Vi
a2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0
ZWQtbXVsdGlwbGUtd29yZHMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC5odG1sIFsgU2tpcCBd
Cit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3Jk
LXNlbGVjdGlvbi5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5odG1sIFsgU2tpcCBd
Cit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNl
bGVjdC1zaW5nbGUtd29yZC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24uaHRtbCBbIFNraXAgXQord2Vi
a2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRp
b24tc2VsZWN0aW9uLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9z
cGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWwgWyBTa2lwIF0K
K3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRl
c3BhY2Utc2VsZWN0aW9uLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggNzRiY2Y1YTU5YjQyODE3NGE2YjUwZjQ5Mjk0NGNhYjFmN2Qw
MWNjYi4uZTYxZTU4NGY2NTY1YjAyYzRmNzEzNmE2MmQ0NDBkZmI3Mzg0YTY2NSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0MjAsNiArMTQyMCwxOSBA
QCB3ZWJraXQub3JnL2IvMTA4MTY5IGZhc3QvZG9tL3NoYWRvdy90b3VjaC1ldmVudC5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA4MzYzIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4taWZy
YW1lLWxlZ2FjeS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA4MzYzIGZ1bGxzY3Jl
ZW4vdmlkZW8tc3BlY2lmaWVkLXNpemUuaHRtbCBbIEZhaWx1cmUgXQogCisjIFNwZWxsY2hlY2tl
ciBiZWhhdmlvciB0ZXN0cy4KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8x
MDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLXdpdGgt
dW5kZXJzY29yZXMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMuaHRtbCBbIFNr
aXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0
bHktc2VsZWN0ZWQtd29yZC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlvbi5odG1sIFsgU2tpcCBdCit3
ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVj
dC1tdWx0aXBsZS13b3Jkcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC5odG1sIFsgU2tp
cCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc3Vid29y
ZC1zZWxlY3Rpb24uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLmh0bWwgWyBTa2lwIF0K
K3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVy
c2NvcmUtc2VsZWN0aW9uLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2VsZWN0aW9uLmh0bWwgWyBTa2lw
IF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIG9mIFRlc3RzIGZh
aWxpbmcKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDlkZDdmMGQ5NmI0MGIwM2RmNzYzZGQzNmM5
YzYzOTk3M2ZkOTQ0YjYuLmFjYTA2YWY5OGJlYWY1YTE5NDdhYjFlYWZkNDY1YmVhM2ZkMjBlOTIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMjk3LDMg
KzEyOTcsMTYgQEAgd2Via2l0Lm9yZy9iLzEwNjQxNSBmYXN0L3dvcmtlcnMvd29ya2VyLWRvY3Vt
ZW50LWxlYWsuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA2NDE1IGZhc3Qv
d29ya2Vycy93b3JrZXItbGlmZWN5Y2xlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQu
b3JnL2IvMTA4MjkxIFsgTGlvbiBdIGFjY2Vzc2liaWxpdHkvbGlzdHMuaHRtbCBbIEZhaWx1cmUg
XQorCisjIFNwZWxsY2hlY2tlciBiZWhhdmlvciB0ZXN0cy4KK3dlYmtpdC5vcmcvYi8xMDgzNzAg
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUtY2xpY2tlZC13b3JkLmh0bWwgWyBTa2lw
IF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1kb3VibGUt
Y2xpY2tlZC13b3JkLXdpdGgtdW5kZXJzY29yZXMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9i
LzEwODM3MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlw
bGUtd29yZHMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtd29yZC5odG1sIFsgU2tpcCBdCit3ZWJraXQu
b3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctbXVsdGl3b3JkLXNlbGVjdGlv
bi5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5odG1sIFsgU2tpcCBdCit3ZWJraXQu
b3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5n
bGUtd29yZC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxp
bmcvc3BlbGxpbmctc3Vid29yZC1zZWxlY3Rpb24uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9i
LzEwODM3MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0
aW9uLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5v
cmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXdoaXRlc3BhY2Utc2Vs
ZWN0aW9uLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDQyYWFkNzJiODRjMjJmYTU1OTk1NWI2ODJlMmRhNzkzMTU5N2RkYjMuLmExNGE0
NzczYjlhOWNmZDZmMTVhYTIzYzExNDdhM2Y0NWYzNDA1MTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODA5LDYgKzgwOSwyMCBAQCBlZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXVuaWZpZWQtZW11bGF0aW9uLmh0bWwKICMgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MTk5CiBlZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItZWRp
dC13b3JkLmh0bWwKIAorIyBTcGVsbGNoZWNrZXIgYmVoYXZpb3IgdGVzdHMuCisjIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgzNzAKK2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxpbmctZG91YmxlLWNsaWNrZWQtd29yZC5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5odG1sCitlZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHktc2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMuaHRtbAorZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1leGFjdGx5LXNlbGVjdGVkLXdvcmQuaHRtbAorZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWwKK2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1tdWx0aXBsZS13b3Jkcy5odG1sCitlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLXNob3VsZC1zZWxlY3Qtc2luZ2xlLXdvcmQuaHRtbAorZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi5odG1sCitlZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLXdpdGgtcHVuY3R1YXRpb24tc2VsZWN0aW9uLmh0bWwKK2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctd2l0aC11bmRlcnNjb3JlLXNlbGVjdGlvbi5odG1sCitlZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24uaHRtbAorCiAjID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PSAjCiAjICAgICAgIEZhaWxpbmcgcGx1Z2lucyB0ZXN0cy4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAjID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PSAjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDAx
ZmExNjA0MzUxMWQ1Mjg1ZTE2M2I5ZjllMDdhZDVlMzAxMDQ5MTguLjk0ZTA5ZTRmOTQzMzQ0ODNm
YjA5YmMyZWNkMmJiNGVhZTVjNGE5MTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0
RXhwZWN0YXRpb25zCkBAIC0yNTg4LDMgKzI1ODgsMTYgQEAgZmFzdC9qcy9yZWVudHJhbnQtY2Fj
aGluZy5odG1sCiBmYXN0L3JlcGFpbnQvY2FyZXQtd2l0aC10cmFuc2Zvcm1hdGlvbi5odG1sCiBo
dHRwL3Rlc3RzL2luY3JlbWVudGFsL3BhdXNlLWluLXNjcmlwdC1lbGVtZW50LnBsCiBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC9oYXJmYnV6ei1idWZmZXItb3ZlcnJ1bi5odG1sCisKKyMgU3BlbGxj
aGVja2VyIGJlaGF2aW9yIHRlc3RzLgord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3NwZWxs
aW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9y
Zy9iLzEwODM3MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQt
d2l0aC11bmRlcnNjb3Jlcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5odG1s
IFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
ZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAg
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1tdWx0aXdvcmQtc2VsZWN0aW9uLmh0bWwgWyBTa2lw
IF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQt
c2VsZWN0LW11bHRpcGxlLXdvcmRzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAg
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0bWwg
WyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1z
dWJ3b3JkLXNlbGVjdGlvbi5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbCBbIFNr
aXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgt
dW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBl
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24uaHRtbCBb
IFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggYTRjMGE5MDFlN2M5ZTY3NDRjZTRmMWJmMjhkMTVhNTZjYzEwMzMzYS4uZGRiNjE2
Zjg3OTgzODdiNjY2YWJhMTAzNGJkNzZiZjkwNjBjN2U5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCkBAIC0yOTc3LDMgKzI5NzcsMTYgQEAg
d2Via2l0Lm9yZy9iLzM5NzI1IGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtYXV0b3Njcm9sbC5o
dG1sIFsgU2tpcCBdCiBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtYWxpZ24tbGFzdC9nZXRDb21w
dXRlZFN0eWxlL2dldENvbXB1dGVkU3R5bGUtdGV4dC1hbGlnbi1sYXN0LWluaGVyaXRlZC5odG1s
CiBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtYWxpZ24tbGFzdC9nZXRDb21wdXRlZFN0eWxlL2dl
dENvbXB1dGVkU3R5bGUtdGV4dC1hbGlnbi1sYXN0Lmh0bWwKIGZhc3QvY3NzMy10ZXh0L2NzczMt
dGV4dC1kZWNvcmF0aW9uL2dldENvbXB1dGVkU3R5bGUvZ2V0Q29tcHV0ZWRTdHlsZS10ZXh0LWRl
Y29yYXRpb24tbGluZS5odG1sCisKKyMgU3BlbGxjaGVja2VyIGJlaGF2aW9yIHRlc3RzLgord2Vi
a2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2Vk
LXdvcmQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3NwZWxsaW5n
L3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQtd2l0aC11bmRlcnNjb3Jlcy5odG1sIFsgU2tp
cCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3Rs
eS1zZWxlY3RlZC1tdWx0aXBsZS13b3Jkcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTA4
MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZXhhY3RseS1zZWxlY3RlZC13b3JkLmh0bWwg
WyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1t
dWx0aXdvcmQtc2VsZWN0aW9uLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRp
dGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLmh0bWwg
WyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDgzNzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1z
aG91bGQtc2VsZWN0LXNpbmdsZS13b3JkLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xMDgz
NzAgZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zdWJ3b3JkLXNlbGVjdGlvbi5odG1sIFsgU2tp
cCBdCit3ZWJraXQub3JnL2IvMTA4MzcwIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1w
dW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBl
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdpdGgtdW5kZXJzY29yZS1zZWxlY3Rpb24uaHRtbCBb
IFNraXAgXQord2Via2l0Lm9yZy9iLzEwODM3MCBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXdp
dGgtd2hpdGVzcGFjZS1zZWxlY3Rpb24uaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1MTRmNGYxMWE1MDlmYzdjZGVmNWM4ZDA3MDgy
NDc3OTY4ZGUwMjZkLi5jMTgxYzUzYTE1ZDA2MWRjMjRjNjcxNWZhMjNhZjU5MzliYTY0NWMxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDExLDggKzQx
MSwxOSBAQCBlZGl0aW5nL3NwZWxsaW5nL2Rlc2lnbi1tb2RlLXNwZWxsY2hlY2stb2ZmLmh0bWwK
IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hdHRyaWJ1dGUuaHRtbAogZWRpdGluZy9zcGVs
bGluZy9zcGVsbGluZy1hdHRyaWJ1dGUtYXQtY2hpbGQuaHRtbAogZWRpdGluZy9zcGVsbGluZy9z
cGVsbGluZy1hdHRyaWJ1dGUtY2hhbmdlLmh0bWwKLWVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmct
bGluZWJyZWFrLmh0bWwKK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctZG91YmxlLWNsaWNrZWQt
d29yZC5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWRvdWJsZS1jbGlja2VkLXdvcmQt
d2l0aC11bmRlcnNjb3Jlcy5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWV4YWN0bHkt
c2VsZWN0ZWQtbXVsdGlwbGUtd29yZHMuaHRtbAorZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1l
eGFjdGx5LXNlbGVjdGVkLXdvcmQuaHRtbAogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1oYXNz
cGVsbGluZ21hcmtlci5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLWxpbmVicmVhay5o
dG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLW11bHRpd29yZC1zZWxlY3Rpb24uaHRtbAor
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy1zaG91bGQtc2VsZWN0LW11bHRpcGxlLXdvcmRzLmh0
bWwKK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctc2hvdWxkLXNlbGVjdC1zaW5nbGUtd29yZC5o
dG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXN1YndvcmQtc2VsZWN0aW9uLmh0bWwKK2Vk
aXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC1wdW5jdHVhdGlvbi1zZWxlY3Rpb24uaHRtbAor
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy13aXRoLXVuZGVyc2NvcmUtc2VsZWN0aW9uLmh0bWwK
K2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctd2l0aC13aGl0ZXNwYWNlLXNlbGVjdGlvbi5odG1s
CiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9kZWxldGUtaW50by1taXNzcGVsbGVkLXdv
cmQuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRpdGluZy1tdWx0aXBsZS13
b3Jkcy13aXRoLW1hcmtlcnMuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvZWRp
dGluZy13b3JkLXdpdGgtbWFya2VyLTEuaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>