<?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>78856</bug_id>
          
          <creation_ts>2012-02-16 16:29:22 -0800</creation_ts>
          <short_desc>visual word movement: Using ICU break iterator to simplify implementation</short_desc>
          <delta_ts>2012-03-16 01:27:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>25298</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Xiaomei Ji">xji</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>558656</commentid>
    <comment_count>0</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2012-02-16 16:29:22 -0800</bug_when>
    <thetext>Using ICU break iterator to simplify implementation of visual word movement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558736</commentid>
    <comment_count>1</comment_count>
      <attachid>127480</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2012-02-16 17:25:54 -0800</bug_when>
    <thetext>Created attachment 127480
patch w/ layout test

1st version brutal force computation. it reduces the complexity of old implementation in the cost of performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558743</commentid>
    <comment_count>2</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2012-02-16 17:30:26 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=127480) [details]
&gt; patch w/ layout test
&gt; 
&gt; 1st version brutal force computation. it reduces the complexity of old implementation in the cost of performance.

I need to check how to get a pretty diff. The old code are almost completely replaced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558961</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-16 23:44:20 -0800</bug_when>
    <thetext>&gt; it reduces the complexity of old implementation in the cost of performance.

This patch breaks regression tests. Is your plan to also make sure that nothing breaks, in addition to not regressing performance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558993</commentid>
    <comment_count>4</comment_count>
      <attachid>127480</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-17 00:22:07 -0800</bug_when>
    <thetext>Comment on attachment 127480
patch w/ layout test

Ugh... the diff in visible_units.cpp is hard to read. Could you insert the new code elsewhere in the file so that it won&apos;t get mangled with the deleted code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558994</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-17 00:23:26 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; This patch breaks regression tests. Is your plan to also make sure that nothing breaks, in addition to not regressing performance?

My expectation is that there will be no correctness regressions. I&apos;m not too concerned about the performance here as this code is only used for user-initiated visual word movement unlike startOfWord and endOfWord which are used in spell checking, etc...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561122</commentid>
    <comment_count>6</comment_count>
      <attachid>128018</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2012-02-21 12:14:07 -0800</bug_when>
    <thetext>Created attachment 128018
patch w/ layout test

Shuffled the code to the beginning of the file for readability only.

In reply to comment #3)
&gt; &gt; it reduces the complexity of old implementation in the cost of performance.
&gt; 
&gt; This patch breaks regression tests. Is your plan to also make sure that nothing breaks, in addition to not regressing performance?

You are talking about the regression in move-by-word-visually-single-space-inline-element.html, right?
There are 5 regressions and 5 progressions in this file.

There are 2 cases of the regression, both because I used logical word break to imply visual word break, which might not be correct. But except using space as word segmentor (which is totally wrong for languages do not use space as word segmentor, such as CJK languages), I could not think of any solution yet.

The first case is the regression of test 11, 13, and 17.
Using test 11 as an example, the logical text is: &lt;div dir=rtl&gt;ABC DEF &lt;span dir=ltr&gt;abc def&lt;/span&gt;OPQ RST&lt;/div&gt;.
Logically, position after &quot;def|&quot; is not a word breaker.
The text is visually displayed as &quot;TSR QPOabc def FED CBA&quot;. When cursor is at &quot;TSR QPOabc def| FED CBA&quot;, since we use logical word break position to imply visual word break position, that position is not considered as word breaker logically, so it wont be considered as word breaker visually.

The second case is the regression of test 14 and 18.
Using test 14 as an example, the logical text is &lt;div dir=ltr&gt;ABC DEF &lt;span&gt;abc def&lt;/span&gt;OPQ RST&lt;/div&gt;.
The text visually displayed as &quot;FED CBA abc defTSR QPO&quot;.
Position &quot;FED CBA abc def|TSR QPO&quot; is at (InlineBox: &quot;OPQ RST&quot;, offset:7). It is corresponding to logical end of the text, which is considered as a word break logically, so it is considered as a word break visually.

Except those 5 test cases, all other changes (either in the test file itself or in the expected result) are progression.

More cases (that I have not added yet) that the new code yield wrong result is when arrow-left-right yields wrong result.
For example, for case &quot;abc \u202bABC def\u202c xyz&quot;, ICU word break iterator treat &quot;def\u202c|&quot; as a word break position. But arrow key is not able to reach that position.
Another example, &lt;div contenteditable id=&quot;multiple_space_wrong_result&quot;&gt;abc ששש def &lt;span dir=rtl&gt;שנב  opq סטז&lt;/span&gt;  uvw ששש xyz&lt;/div&gt;, in which arrow-left falls in a dead-loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561260</commentid>
    <comment_count>7</comment_count>
      <attachid>128053</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2012-02-21 15:11:14 -0800</bug_when>
    <thetext>Created attachment 128053
WIP (fix compilation error)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563854</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2012-02-23 19:52:07 -0800</bug_when>
    <thetext>Attachment 128053 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/edit...&quot; exit_code: 1
Source/WebCore/editing/visible_units.cpp:306:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 13 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>564485</commentid>
    <comment_count>9</comment_count>
      <attachid>128769</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2012-02-24 11:09:57 -0800</bug_when>
    <thetext>Created attachment 128769
wip

fix style error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576815</commentid>
    <comment_count>10</comment_count>
      <attachid>131476</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2012-03-12 17:52:47 -0700</bug_when>
    <thetext>Created attachment 131476
WIP

Get rid of regression by using UPSTREAM in getInlineBoxAndOffset()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577790</commentid>
    <comment_count>11</comment_count>
      <attachid>131476</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-13 14:00:20 -0700</bug_when>
    <thetext>Comment on attachment 131476
WIP

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

&gt; Source/WebCore/editing/visible_units.cpp:166
&gt; +static void searchPreviousBoxInSameLine(const InlineTextBox* textBox, InlineTextBox*&amp; previousBox)

I think it&apos;s better for this function to just return the box.
Also we don&apos;t normally call these functions &quot;search&quot; blah. It&apos;s probably better to call it something along the like of logicallyPreviousBoxInSameLine.

&gt; Source/WebCore/editing/visible_units.cpp:173
&gt; +            break;

If you do that, you can just return 0.

&gt; Source/WebCore/editing/visible_units.cpp:175
&gt; +            previousBox = toInlineTextBox(leafBoxesInLogicalOrder[i]);

And will be returning toInlineTextBox(leafBoxesInLogicalOrder[i]) here.

&gt; Source/WebCore/editing/visible_units.cpp:192
&gt; +            while (j &lt; leafBoxesInLogicalOrder.size()) {
&gt; +                if (leafBoxesInLogicalOrder[j]-&gt;isInlineTextBox()) {
&gt; +                    nextBox = toInlineTextBox(leafBoxesInLogicalOrder[j]);
&gt; +                    break;
&gt; +                }
&gt; +            }

It seems like searchPreviousBoxInSameLine should also have this loop.
It&apos;ll be great if we could add a test case for searchPreviousBoxInSameLine.

&gt; Source/WebCore/editing/visible_units.cpp:200
&gt; +static void searchPreviousBoxInPreviousRootInlineBox(const VisiblePosition&amp; visiblePosition, const InlineTextBox* textBox,
&gt; +    InlineTextBox*&amp; previousBox, bool&amp; previousBoxInDifferentLine)
&gt; +{

It&apos;ll be great if you can combine this function with searchPreviousBoxInSameLine.

&gt; Source/WebCore/editing/visible_units.cpp:261
&gt; +    TextBreakIterator*&amp; iter, int&amp; previousBoxLen, bool&amp; previousBoxInDifferentLine)

Please spell out length in previousBoxLen. It&apos;s probably still better for this function to return TextBreakIterator*.

&gt; Source/WebCore/editing/visible_units.cpp:265
&gt; +    // TODO: how should we handle non-text box?

s/TODO/FIXME/. Again, it&apos;s probably better to say &quot;handle the case when we don&apos;t have an inline box&quot;.

&gt; Source/WebCore/editing/visible_units.cpp:311
&gt; +enum ECursorMovementDirection {

I think the new style is not to prefix enum types with E.

&gt; Source/WebCore/editing/visible_units.cpp:312
&gt; +    MOVE_LEFT, MOVE_RIGHT,

We should use MoveLeft and MoveRight for the consistency.

&gt; Source/WebCore/editing/visible_units.cpp:322
&gt; +    textBreakFollowing(iter, position);
&gt; +    return isWordTextBreak(iter);

Maybe we need a comment explaining that ICU&apos;s isWordTextBreak returns true after moving across a word and false after moving across a punctuation/whitespace.

&gt; Source/WebCore/editing/visible_units.cpp:331
&gt; +static VisiblePosition wordPosition(const VisiblePosition&amp; visiblePosition, ECursorMovementDirection direction)

We should probably call this function visualWordPosition.

&gt; Source/WebCore/editing/visible_units.cpp:342
&gt; +        VisiblePosition adjacentByCharacter = direction == MOVE_RIGHT ? current.right(true) : current.left(true); 

We should probably call this adjacentCharacter.

&gt; Source/WebCore/editing/visible_units.cpp:347
&gt; +        int offset;

Maybe we want to clarify that this offset is in box because there are two offsets here: one in box and one in iterator.

&gt; Source/WebCore/editing/visible_units.cpp:350
&gt; +        // TODO: how should we handle non text box?

We don&apos;t use TODO. Use FIXME instead. I think it&apos;s probably better to say &quot;Handle the case when we don&apos;t have an inline box&quot; instead of asking &quot;how&quot;.

&gt; Source/WebCore/editing/visible_units.cpp:355
&gt; +        int previousBoxLen = 0;

Please spell out length.

&gt; Source/WebCore/editing/visible_units.cpp:364
&gt; +            if (previouslyVisitedBox != box) {

Maybe you want to a define a boolean like movingIntoNewBox = previouslyVisitedBox != box to clarify the semantics.

&gt; Source/WebCore/editing/visible_units.cpp:368
&gt; +            previouslyVisitedBox = box;

This statement can be moved into the if statement so that you can just have one else if instead of nested else and if.

&gt; Source/WebCore/editing/visible_units.cpp:372
&gt; +            isStartOfWord(iter, offset - textBox-&gt;start() + previousBoxLen,

Please define descriptive local variables for offset - textBox-&gt;start() + previousBoxLen.

&gt; Source/WebCore/editing/visible_units.cpp:373
&gt; +                offset == (int)textBox-&gt;start() &amp;&amp; previousBoxInDifferentLine) :

Please use static_cast&lt;int&gt;(~).

&gt; Source/WebCore/editing/visible_units.cpp:392
&gt; +    // FIXME: How should we handle a non-editable position?
&gt; +    if (leftWordBreak.isNull() &amp;&amp; isEditablePosition(visiblePosition.deepEquivalent())) {
&gt; +        TextDirection blockDirection = directionOfEnclosingBlock(visiblePosition.deepEquivalent());
&gt; +        leftWordBreak = blockDirection == LTR ? startOfEditableContent(visiblePosition) : endOfEditableContent(visiblePosition);
&gt; +    }

I think it&apos;s okay to ignore editing boundaries in wordPosition function and then just call honorEditingBoundaryAtOrBefore here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577795</commentid>
    <comment_count>12</comment_count>
      <attachid>131476</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-13 14:07:32 -0700</bug_when>
    <thetext>Comment on attachment 131476
WIP

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

&gt; Source/WebCore/editing/visible_units.cpp:182
&gt; +    textBox-&gt;root()-&gt;collectLeafBoxesInLogicalOrder(leafBoxesInLogicalOrder);

I guess we can cache these vector for the current root inline box to avoid calling collectLeafBoxesInLogicalOrder on the same root inline box repeatedly when a single word is spread across multiple inline boxes but that can probably be done in a separate patch since these functions are only used when user presses ctrl+alt+left/right, and not used by any internal functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577806</commentid>
    <comment_count>13</comment_count>
      <attachid>131476</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-13 14:16:32 -0700</bug_when>
    <thetext>Comment on attachment 131476
WIP

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

&gt; LayoutTests/editing/selection/move-by-word-visually-inline-block-positioned-element-expected.txt:5
&gt; +&quot;begin start&quot;[0, 6], &quot;abc def&quot;[0, 4], &quot;end ing&quot;[0, 4], &quot;this is float&quot;[0, 5, 8], &quot;this is fixed&quot;[0, 5, 8], &quot;this is relative&quot;[0, 5, 8], &quot;this is absolute&quot;[0, 5, 8, 16]

It&apos;s great see a bug being fixed :D

&gt; LayoutTests/editing/selection/move-by-word-visually-inline-block-positioned-element.html:21
&gt; +title=&quot;[d_1, 0][d_1, 6][d_2, 0][d_2, 4][d_3, 0][d_3, 4][d_4, 0][d_4, 5][d_4, 8][d_5, 0][d_5, 5][d_5, 8][d_6, 0][d_6, 5][d_6, 8][d_7, 0][d_7, 5][d_7, 8][d_7, 16]|
&gt; +[d_7, 16][d_7, 8][d_7, 5][d_7, 0][d_6, 8][d_6, 5][d_6, 0][d_5, 8][d_5, 5][d_5, 0][d_4, 8][d_4, 5][d_4, 0][d_3, 4][d_3, 0][d_2, 4][d_2, 0][d_1, 6][d_1, 0]&quot; 

Maybe we want to change the format to make it more semantically clear. Of course, in a separate patch :)
It&apos;s really hard to understand what&apos;s going on here.

&gt; LayoutTests/editing/selection/move-by-word-visually-multi-line-expected.txt:40
&gt; +&quot;abc def ghi jkl mn &quot;[0, 3, 8, 11, 16], &quot;opq rst uvw xyz&quot;[0, 3, 8, 11, 15]

It&apos;s great to see this test case passing but can we print PASS in these passing cases? (in a separate patch, of course).

&gt; LayoutTests/editing/selection/move-by-word-visually-multi-line.html:57
&gt; +&lt;div contenteditable dir=rtl id=&quot;ml_8&quot; class=&quot;test_move_by_word fix_width&quot; title=&quot;[ml_8, 15, 5][ml_8, 11, 5][ml_8, 8, 5][ml_8, 3, 5][ml_8, 0, 5][ml_8, 16][ml_8, 11][ml_8, 8][ml_8, 3][ml_8, 0]|[ml_8, 0][ml_8, 3][ml_8, 8][ml_8, 11][ml_8, 16][ml_8, 0, 5][ml_8, 3, 5][ml_8, 8, 5][ml_8, 11, 5][ml_8, 15, 5]&quot;&gt;abc def ghi jkl mn &lt;div&gt;&lt;br/&gt;&lt;/div&gt;&lt;div&gt;&lt;br/&gt;&lt;/div&gt;&lt;div&gt;&lt;br/&gt;&lt;/div&gt;opq rst uvw xyz&lt;/div&gt;

Please explain the change in the change log as done in person :)
I understand that this is an improvement after talking with you, but it&apos;ll be nice to document it here so that other contributors like ap and mitz can understand it as well without having to talk with you in person.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578921</commentid>
    <comment_count>14</comment_count>
      <attachid>131476</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2012-03-14 16:37:55 -0700</bug_when>
    <thetext>Comment on attachment 131476
WIP

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

&gt;&gt; Source/WebCore/editing/visible_units.cpp:166
&gt;&gt; +static void searchPreviousBoxInSameLine(const InlineTextBox* textBox, InlineTextBox*&amp; previousBox)
&gt; 
&gt; I think it&apos;s better for this function to just return the box.
&gt; Also we don&apos;t normally call these functions &quot;search&quot; blah. It&apos;s probably better to call it something along the like of logicallyPreviousBoxInSameLine.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:173
&gt;&gt; +            break;
&gt; 
&gt; If you do that, you can just return 0.

it actually should return previousBox. But not applicable anymore since the function changed.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:175
&gt;&gt; +            previousBox = toInlineTextBox(leafBoxesInLogicalOrder[i]);
&gt; 
&gt; And will be returning toInlineTextBox(leafBoxesInLogicalOrder[i]) here.

it actually should not change. But not applicable anymore.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:182
&gt;&gt; +    textBox-&gt;root()-&gt;collectLeafBoxesInLogicalOrder(leafBoxesInLogicalOrder);
&gt; 
&gt; I guess we can cache these vector for the current root inline box to avoid calling collectLeafBoxesInLogicalOrder on the same root inline box repeatedly when a single word is spread across multiple inline boxes but that can probably be done in a separate patch since these functions are only used when user presses ctrl+alt+left/right, and not used by any internal functions.

will do in a separate patch.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:192
&gt;&gt; +            }
&gt; 
&gt; It seems like searchPreviousBoxInSameLine should also have this loop.
&gt; It&apos;ll be great if we could add a test case for searchPreviousBoxInSameLine.

the original logic in searchPreviousBoxInSameLine is correct since previousBox is updated on every iteration. So, the above loop is not needed.
But I&apos;ve changed these functions, and the new logic is always looking for current textbox first, then, iterate to find the previous or next Inline *text* box.

added test case to test non InlineTextBox.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:261
&gt;&gt; +    TextBreakIterator*&amp; iter, int&amp; previousBoxLen, bool&amp; previousBoxInDifferentLine)
&gt; 
&gt; Please spell out length in previousBoxLen. It&apos;s probably still better for this function to return TextBreakIterator*.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:265
&gt;&gt; +    // TODO: how should we handle non-text box?
&gt; 
&gt; s/TODO/FIXME/. Again, it&apos;s probably better to say &quot;handle the case when we don&apos;t have an inline box&quot;.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:311
&gt;&gt; +enum ECursorMovementDirection {
&gt; 
&gt; I think the new style is not to prefix enum types with E.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:312
&gt;&gt; +    MOVE_LEFT, MOVE_RIGHT,
&gt; 
&gt; We should use MoveLeft and MoveRight for the consistency.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:322
&gt;&gt; +    return isWordTextBreak(iter);
&gt; 
&gt; Maybe we need a comment explaining that ICU&apos;s isWordTextBreak returns true after moving across a word and false after moving across a punctuation/whitespace.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:331
&gt;&gt; +static VisiblePosition wordPosition(const VisiblePosition&amp; visiblePosition, ECursorMovementDirection direction)
&gt; 
&gt; We should probably call this function visualWordPosition.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:342
&gt;&gt; +        VisiblePosition adjacentByCharacter = direction == MOVE_RIGHT ? current.right(true) : current.left(true); 
&gt; 
&gt; We should probably call this adjacentCharacter.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:347
&gt;&gt; +        int offset;
&gt; 
&gt; Maybe we want to clarify that this offset is in box because there are two offsets here: one in box and one in iterator.

renamed to offsetInBox.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:350
&gt;&gt; +        // TODO: how should we handle non text box?
&gt; 
&gt; We don&apos;t use TODO. Use FIXME instead. I think it&apos;s probably better to say &quot;Handle the case when we don&apos;t have an inline box&quot; instead of asking &quot;how&quot;.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:355
&gt;&gt; +        int previousBoxLen = 0;
&gt; 
&gt; Please spell out length.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:364
&gt;&gt; +            if (previouslyVisitedBox != box) {
&gt; 
&gt; Maybe you want to a define a boolean like movingIntoNewBox = previouslyVisitedBox != box to clarify the semantics.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:368
&gt;&gt; +            previouslyVisitedBox = box;
&gt; 
&gt; This statement can be moved into the if statement so that you can just have one else if instead of nested else and if.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:372
&gt;&gt; +            isStartOfWord(iter, offset - textBox-&gt;start() + previousBoxLen,
&gt; 
&gt; Please define descriptive local variables for offset - textBox-&gt;start() + previousBoxLen.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:373
&gt;&gt; +                offset == (int)textBox-&gt;start() &amp;&amp; previousBoxInDifferentLine) :
&gt; 
&gt; Please use static_cast&lt;int&gt;(~).

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:392
&gt;&gt; +    }
&gt; 
&gt; I think it&apos;s okay to ignore editing boundaries in wordPosition function and then just call honorEditingBoundaryAtOrBefore here.

added honorEditingBoundaryAtOrBefore to reinforce.

&gt;&gt; LayoutTests/editing/selection/move-by-word-visually-inline-block-positioned-element.html:21
&gt;&gt; +[d_7, 16][d_7, 8][d_7, 5][d_7, 0][d_6, 8][d_6, 5][d_6, 0][d_5, 8][d_5, 5][d_5, 0][d_4, 8][d_4, 5][d_4, 0][d_3, 4][d_3, 0][d_2, 4][d_2, 0][d_1, 6][d_1, 0]&quot; 
&gt; 
&gt; Maybe we want to change the format to make it more semantically clear. Of course, in a separate patch :)
&gt; It&apos;s really hard to understand what&apos;s going on here.

I need to think a way to make the format more readable (although there is a comment about the format in each HTML file). I can prepend &quot;elment_id&quot;, &quot;position_offset&quot;, and &quot;child_node_index&quot; in each field, but that will make the long string even longer. Fortunately, the format in expected result is readable.

&gt;&gt; LayoutTests/editing/selection/move-by-word-visually-multi-line-expected.txt:40
&gt;&gt; +&quot;abc def ghi jkl mn &quot;[0, 3, 8, 11, 16], &quot;opq rst uvw xyz&quot;[0, 3, 8, 11, 15]
&gt; 
&gt; It&apos;s great to see this test case passing but can we print PASS in these passing cases? (in a separate patch, of course).

An alternative would be to print nothing for those PASS (And print a PASS at the end if all tests pass). Will do next.

&gt;&gt; LayoutTests/editing/selection/move-by-word-visually-multi-line.html:57
&gt;&gt; +&lt;div contenteditable dir=rtl id=&quot;ml_8&quot; class=&quot;test_move_by_word fix_width&quot; title=&quot;[ml_8, 15, 5][ml_8, 11, 5][ml_8, 8, 5][ml_8, 3, 5][ml_8, 0, 5][ml_8, 16][ml_8, 11][ml_8, 8][ml_8, 3][ml_8, 0]|[ml_8, 0][ml_8, 3][ml_8, 8][ml_8, 11][ml_8, 16][ml_8, 0, 5][ml_8, 3, 5][ml_8, 8, 5][ml_8, 11, 5][ml_8, 15, 5]&quot;&gt;abc def ghi jkl mn &lt;div&gt;&lt;br/&gt;&lt;/div&gt;&lt;div&gt;&lt;br/&gt;&lt;/div&gt;&lt;div&gt;&lt;br/&gt;&lt;/div&gt;opq rst uvw xyz&lt;/div&gt;
&gt; 
&gt; Please explain the change in the change log as done in person :)
&gt; I understand that this is an improvement after talking with you, but it&apos;ll be nice to document it here so that other contributors like ap and mitz can understand it as well without having to talk with you in person.

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578931</commentid>
    <comment_count>15</comment_count>
      <attachid>131956</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2012-03-14 16:43:27 -0700</bug_when>
    <thetext>Created attachment 131956
patch w/ layout test

I did not consolidate previousRootInlineBox with the functionality in previousLinePosition. There are a couple of differences there (for example, the RenderPosition and ShadowNode), and I am hesitate to change previousLinePosition() in this patch to make it more inline with previousRootInlineBox. And consolidate to a single function with parameters to control different requirement looks not nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579451</commentid>
    <comment_count>16</comment_count>
      <attachid>131956</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-15 09:48:16 -0700</bug_when>
    <thetext>Comment on attachment 131956
patch w/ layout test

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

r-. Let&apos;s do one more iteration.

&gt; Source/WebCore/editing/visible_units.cpp:52
&gt; +// The first leaf before node that has the same editability as node.

I think this comment is more confusing than useful.

&gt; Source/WebCore/editing/visible_units.cpp:56
&gt; +    Node* n = node-&gt;previousLeafNode();

Can&apos;t we just modify node here? We try not to introduce new one-letter variable in WebKit.

&gt; Source/WebCore/editing/visible_units.cpp:67
&gt; +    for (Node* p = n; p; p = p-&gt;parentNode()) {

Ditto about p &amp; n. Just rename n to node and re-use that.

&gt; Source/WebCore/editing/visible_units.cpp:79
&gt; +    Node* n = child ? child-&gt;nextLeafNode() : node-&gt;lastDescendant()-&gt;nextLeafNode();

Ditto about one-letter variable.

&gt; Source/WebCore/editing/visible_units.cpp:94
&gt; +    Node* n = node-&gt;nextLeafNode();

Same comment.

&gt; Source/WebCore/editing/visible_units.cpp:110
&gt; +    while (previousNode &amp;&amp; enclosingBlockNode == enclosingNodeWithNonInlineRenderer(previousNode))

Please put a blank line before while for the better readability.

&gt; Source/WebCore/editing/visible_units.cpp:160
&gt; +static const InlineTextBox* previousBoxInOneLine(const RootInlineBox* root, const InlineTextBox* box, Vector&lt;InlineBox*&gt;&amp; leafBoxesInLogicalOrder)

I think &quot;One&quot; is redundant here because we don&apos;t say &quot;lines&quot;.

&gt; Source/WebCore/editing/visible_units.cpp:166
&gt; +    leafBoxesInLogicalOrder.clear();
&gt; +    root-&gt;collectLeafBoxesInLogicalOrder(leafBoxesInLogicalOrder);

Wait... I don&apos;t think this is right. The only time we need to clear the cache is when we move onto a new root inline box.

&gt; Source/WebCore/editing/visible_units.cpp:169
&gt; +    // Otherwise, root is box&apos;s RootInlineBox, and previousBox is the previous logical box in the same line.

I think this second line is more confusing than helpful, and sort of repeats what the code says.

&gt; Source/WebCore/editing/visible_units.cpp:172
&gt; +        for (size_t i = 0; i &lt; leafBoxesInLogicalOrder.size(); ++i) {

Shouldn&apos;t we be decrementing i here?

&gt; Source/WebCore/editing/visible_units.cpp:180
&gt; +    for (int j = previousBoxIndex; j &gt;= 0; --j) {

We can use i here again.

&gt; Source/WebCore/editing/visible_units.cpp:320
&gt; +static bool logicallyStartOfWord(TextBreakIterator* iter, int position, bool hardLineBreak)

Nit: logicalStartOfWord.
By the way, I like isLogicalStartOfWord better.

&gt; Source/WebCore/editing/visible_units.cpp:331
&gt; +static bool logicallyEndOfWord(TextBreakIterator* iter, int position, bool hardLineBreak)

Ditto about the name.

&gt; Source/WebCore/editing/visible_units.cpp:339
&gt; +enum CursorMovementDirection {
&gt; +    MoveLeft, MoveRight,
&gt; +};

I think we normally put them in one line, or put each value in the enum in a separate line.
i.e.
enum A { V1, V2 };
or
enum A {
    V1,
    V2,
};

&gt; Source/WebCore/editing/visible_units.cpp:352
&gt; +        VisiblePosition adjacentCharacter = direction == MoveRight ? current.right(true) : current.left(true); 

Ugh... sorry, on my second thought, adjacentCharacter is confusing since it sounds as if it&apos;s a character.
Maybe adjacentCharacterPosition or adjacentPosition?

&gt; Source/WebCore/editing/visible_units.cpp:369
&gt; +        bool previousBoxInDifferentRenderer = false;

Maybe it&apos;s better to name this variable previousBoxIsInDifferentBlock or previousBoxIsInDifferentParagraph to clarify the semantics?

&gt; Source/WebCore/editing/visible_units.cpp:411
&gt; +    // FIXME: How should we handle a non-editable position?
&gt; +    if (leftWordBreak.isNull() &amp;&amp; isEditablePosition(visiblePosition.deepEquivalent())) {
&gt; +        TextDirection blockDirection = directionOfEnclosingBlock(visiblePosition.deepEquivalent());
&gt; +        leftWordBreak = blockDirection == LTR ? startOfEditableContent(visiblePosition) : endOfEditableContent(visiblePosition);
&gt; +    }

Why don&apos;t we just call honor* here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579630</commentid>
    <comment_count>17</comment_count>
      <attachid>131956</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2012-03-15 12:21:26 -0700</bug_when>
    <thetext>Comment on attachment 131956
patch w/ layout test

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

&gt;&gt; Source/WebCore/editing/visible_units.cpp:52
&gt;&gt; +// The first leaf before node that has the same editability as node.
&gt; 
&gt; I think this comment is more confusing than useful.

Ah,  the first 4 functions are moved over by me without any functionality change. I updated the styles accordingly.
Removed the comment.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:56
&gt;&gt; +    Node* n = node-&gt;previousLeafNode();
&gt; 
&gt; Can&apos;t we just modify node here? We try not to introduce new one-letter variable in WebKit.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:67
&gt;&gt; +    for (Node* p = n; p; p = p-&gt;parentNode()) {
&gt; 
&gt; Ditto about p &amp; n. Just rename n to node and re-use that.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:94
&gt;&gt; +    Node* n = node-&gt;nextLeafNode();
&gt; 
&gt; Same comment.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:110
&gt;&gt; +    while (previousNode &amp;&amp; enclosingBlockNode == enclosingNodeWithNonInlineRenderer(previousNode))
&gt; 
&gt; Please put a blank line before while for the better readability.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:160
&gt;&gt; +static const InlineTextBox* previousBoxInOneLine(const RootInlineBox* root, const InlineTextBox* box, Vector&lt;InlineBox*&gt;&amp; leafBoxesInLogicalOrder)
&gt; 
&gt; I think &quot;One&quot; is redundant here because we don&apos;t say &quot;lines&quot;.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:166
&gt;&gt; +    root-&gt;collectLeafBoxesInLogicalOrder(leafBoxesInLogicalOrder);
&gt; 
&gt; Wait... I don&apos;t think this is right. The only time we need to clear the cache is when we move onto a new root inline box.

the function only called when we move onto a  new root inline box. And it called continuously when moving to different root inline box so need to clear the vector.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:169
&gt;&gt; +    // Otherwise, root is box&apos;s RootInlineBox, and previousBox is the previous logical box in the same line.
&gt; 
&gt; I think this second line is more confusing than helpful, and sort of repeats what the code says.

removed.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:172
&gt;&gt; +        for (size_t i = 0; i &lt; leafBoxesInLogicalOrder.size(); ++i) {
&gt; 
&gt; Shouldn&apos;t we be decrementing i here?

This is for looking for the current box&apos;s index, and it is the logical index we are looking for, so, it does not matter whether it is start from and incrementing or start from size-1 and decrementing.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:180
&gt;&gt; +    for (int j = previousBoxIndex; j &gt;= 0; --j) {
&gt; 
&gt; We can use i here again.

this one can not. Since prevBoxIndex could be -1 and can not be assigned to size_t. Also because of the name scope.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:320
&gt;&gt; +static bool logicallyStartOfWord(TextBreakIterator* iter, int position, bool hardLineBreak)
&gt; 
&gt; Nit: logicalStartOfWord.
&gt; By the way, I like isLogicalStartOfWord better.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:331
&gt;&gt; +static bool logicallyEndOfWord(TextBreakIterator* iter, int position, bool hardLineBreak)
&gt; 
&gt; Ditto about the name.

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:339
&gt;&gt; +};
&gt; 
&gt; I think we normally put them in one line, or put each value in the enum in a separate line.
&gt; i.e.
&gt; enum A { V1, V2 };
&gt; or
&gt; enum A {
&gt;     V1,
&gt;     V2,
&gt; };

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:352
&gt;&gt; +        VisiblePosition adjacentCharacter = direction == MoveRight ? current.right(true) : current.left(true); 
&gt; 
&gt; Ugh... sorry, on my second thought, adjacentCharacter is confusing since it sounds as if it&apos;s a character.
&gt; Maybe adjacentCharacterPosition or adjacentPosition?

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:369
&gt;&gt; +        bool previousBoxInDifferentRenderer = false;
&gt; 
&gt; Maybe it&apos;s better to name this variable previousBoxIsInDifferentBlock or previousBoxIsInDifferentParagraph to clarify the semantics?

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:411
&gt;&gt; +    }
&gt; 
&gt; Why don&apos;t we just call honor* here?

honor* is called above which enforces the returned visible position is in the same editing boundary.
The &apos;if&apos; block is used to return the edge position of editable content.
For example, &quot;abc def&quot;, since the word position we are looking for is *start* of word, it covers &quot;|abc def&quot; and &quot;abc |def&quot;. But we also want to reach the edges of the text, the &apos;if&apos; here and in rightWordPosition covers the &quot;|abc def&quot; and &quot;abc def|&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579632</commentid>
    <comment_count>18</comment_count>
      <attachid>132101</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2012-03-15 12:22:57 -0700</bug_when>
    <thetext>Created attachment 132101
patch w/ layout test

I removed gtk/Skipped and qt/Skipped so that the patch can be successfully patched and go through EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579634</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-15 12:26:12 -0700</bug_when>
    <thetext>&gt; &gt;&gt; Source/WebCore/editing/visible_units.cpp:180
&gt; &gt;&gt; +    for (int j = previousBoxIndex; j &gt;= 0; --j) {
&gt; &gt; 
&gt; &gt; We can use i here again.
&gt; 
&gt; this one can not. Since prevBoxIndex could be -1 and can not be assigned to size_t. Also because of the name scope.

What I meant is that you can call it i instead of j. i.e.

for (int i = previousBoxIndex; i &gt;= 0; --i) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579649</commentid>
    <comment_count>20</comment_count>
      <attachid>132101</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-15 12:46:18 -0700</bug_when>
    <thetext>Comment on attachment 132101
patch w/ layout test

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

&gt; Source/WebCore/editing/visible_units.cpp:177
&gt; +    int previousBoxIndex = leafBoxesInLogicalOrder.size() - 1;
&gt; +    if (box) {
&gt; +        for (size_t i = 0; i &lt; leafBoxesInLogicalOrder.size(); ++i) {
&gt; +            if (box == leafBoxesInLogicalOrder[i]) {
&gt; +                previousBoxIndex = i - 1;
&gt; +                break;
&gt; +            }
&gt; +        }
&gt; +    }    

Maybe you can extract a function here (e.g. boxIndexInVector) and use it in nextBoxInLine as well? You can subtract/add 1 outside of the function, right?

&gt; Source/WebCore/editing/visible_units.cpp:214
&gt; +        if (leafBoxesInLogicalOrder.size())
&gt; +            startBox = leafBoxesInLogicalOrder[0];
&gt; +        else
&gt; +            break;

I think it&apos;s better to do:
if (!leafBoxesInLogicalOrder.size())
    break;
startBox = leafBoxesInLogicalOrder[0];

&gt; Source/WebCore/editing/visible_units.cpp:274
&gt; +        if (leafBoxesInLogicalOrder.size())
&gt; +            startBox = leafBoxesInLogicalOrder[0];
&gt; +        else
&gt; +            break;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579652</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-15 12:48:21 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 131956 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131956&amp;action=review
&gt; &gt;&gt; Source/WebCore/editing/visible_units.cpp:166
&gt; &gt;&gt; +    root-&gt;collectLeafBoxesInLogicalOrder(leafBoxesInLogicalOrder);
&gt; &gt; 
&gt; &gt; Wait... I don&apos;t think this is right. The only time we need to clear the cache is when we move onto a new root inline box.
&gt; 
&gt; the function only called when we move onto a  new root inline box. And it called continuously when moving to different root inline box so need to clear the vector.

But visualWordPosition moves one character at the time, right? So logicallyPreviousBox/logicallyNextBox can be called for the box in the same root inline box.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579653</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-15 12:50:37 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #17)
&gt; &gt; (From update of attachment 131956 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131956&amp;action=review
&gt; &gt; &gt;&gt; Source/WebCore/editing/visible_units.cpp:166
&gt; &gt; &gt;&gt; +    root-&gt;collectLeafBoxesInLogicalOrder(leafBoxesInLogicalOrder);
&gt; &gt; &gt; 
&gt; &gt; &gt; Wait... I don&apos;t think this is right. The only time we need to clear the cache is when we move onto a new root inline box.
&gt; &gt; 
&gt; &gt; the function only called when we move onto a  new root inline box. And it called continuously when moving to different root inline box so need to clear the vector.
&gt; 
&gt; But visualWordPosition moves one character at the time, right? So logicallyPreviousBox/logicallyNextBox can be called for the box in the same root inline box.

The easiest way to do this is to wrap the vector in some class, and then add collectLeafBoxesInLogicalOrder(RootInlneBox*) m_rootInlineBox as members. collectLeafBoxesInLogicalOrder would then check if the new root inline box is same as m_rootInlineBox or not, and if not, clears the vector and does root-&gt;collectLeafBoxesInLogicalOrder(this);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579720</commentid>
    <comment_count>23</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2012-03-15 14:07:47 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; (From update of attachment 131956 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131956&amp;action=review
&gt; &gt; &gt; &gt;&gt; Source/WebCore/editing/visible_units.cpp:166
&gt; &gt; &gt; &gt;&gt; +    root-&gt;collectLeafBoxesInLogicalOrder(leafBoxesInLogicalOrder);
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Wait... I don&apos;t think this is right. The only time we need to clear the cache is when we move onto a new root inline box.
&gt; &gt; &gt; 
&gt; &gt; &gt; the function only called when we move onto a  new root inline box. And it called continuously when moving to different root inline box so need to clear the vector.
&gt; &gt; 
&gt; &gt; But visualWordPosition moves one character at the time, right? So logicallyPreviousBox/logicallyNextBox can be called for the box in the same root inline box.
&gt; 
&gt; The easiest way to do this is to wrap the vector in some class, and then add collectLeafBoxesInLogicalOrder(RootInlneBox*) m_rootInlineBox as members. collectLeafBoxesInLogicalOrder would then check if the new root inline box is same as m_rootInlineBox or not, and if not, clears the vector and does root-&gt;collectLeafBoxesInLogicalOrder(this);

This function will only be called when position is at box boundary.
So, the cache is only useful when a word is across multiple inline boxes.
I thought we will do it in a separate patch (see your previous comment:
&quot;I guess we can cache these vector for the current root inline box to avoid calling collectLeafBoxesInLogicalOrder on the same root inline box repeatedly when a single word is spread across multiple inline boxes but that can probably be done in a separate patch since these functions are only used when user presses ctrl+alt+left/right, and not used by any internal functions.&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579725</commentid>
    <comment_count>24</comment_count>
      <attachid>132101</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2012-03-15 14:12:14 -0700</bug_when>
    <thetext>Comment on attachment 132101
patch w/ layout test

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

&gt;&gt; Source/WebCore/editing/visible_units.cpp:177
&gt;&gt; +    }    
&gt; 
&gt; Maybe you can extract a function here (e.g. boxIndexInVector) and use it in nextBoxInLine as well? You can subtract/add 1 outside of the function, right?

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:214
&gt;&gt; +            break;
&gt; 
&gt; I think it&apos;s better to do:
&gt; if (!leafBoxesInLogicalOrder.size())
&gt;     break;
&gt; startBox = leafBoxesInLogicalOrder[0];

done.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:274
&gt;&gt; +            break;
&gt; 
&gt; Ditto.

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579742</commentid>
    <comment_count>25</comment_count>
      <attachid>132121</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2012-03-15 14:27:57 -0700</bug_when>
    <thetext>Created attachment 132121
patch w/ layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579776</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-15 15:00:38 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; The easiest way to do this is to wrap the vector in some class, and then add collectLeafBoxesInLogicalOrder(RootInlneBox*) m_rootInlineBox as members. collectLeafBoxesInLogicalOrder would then check if the new root inline box is same as m_rootInlineBox or not, and if not, clears the vector and does root-&gt;collectLeafBoxesInLogicalOrder(this);
&gt; 
&gt; This function will only be called when position is at box boundary.
&gt; So, the cache is only useful when a word is across multiple inline boxes.
&gt; I thought we will do it in a separate patch (see your previous comment:
&gt; &quot;I guess we can cache these vector for the current root inline box to avoid calling collectLeafBoxesInLogicalOrder on the same root inline box repeatedly when a single word is spread across multiple inline boxes but that can probably be done in a separate patch since these functions are only used when user presses ctrl+alt+left/right, and not used by any internal functions.&quot;)

Okay, that&apos;s fine. I just thought you&apos;ve decidee to do it in this patch because you addee the vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579802</commentid>
    <comment_count>27</comment_count>
      <attachid>132121</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-15 15:15:59 -0700</bug_when>
    <thetext>Comment on attachment 132121
patch w/ layout test

I&apos;m very happy with this rewrite. The code is much easier to read and it&apos;s much more robust.
It even fixes bugs!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580276</commentid>
    <comment_count>28</comment_count>
      <attachid>132121</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 01:27:44 -0700</bug_when>
    <thetext>Comment on attachment 132121
patch w/ layout test

Clearing flags on attachment: 132121

Committed r110965: &lt;http://trac.webkit.org/changeset/110965&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580277</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 01:27:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127480</attachid>
            <date>2012-02-16 17:25:54 -0800</date>
            <delta_ts>2012-02-21 12:14:07 -0800</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>78856</filename>
            <type>text/plain</type>
            <size>67097</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODAwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTE2ICBYaWFvbWVp
IEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2luZyBJQ1UgYnJlYWsgaXRlcmF0
b3IgdG8gc2ltcGxpZnkgdmlzdWFsIHdvcmQgbW92ZW1lbnQgaW1wbGVtZW50YXRpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVs
aWVzIG9uIElDVSB3b3JkIGJyZWFrIGl0ZXJhdG9yIGFuZCBjdXJzb3IgdmlzdWFsIG1vdmVtZW50
IGJ5IGNoYXJhY3RlciB0byBnZXQgdGhlIHdvcmQgYnJlYWsKKyAgICAgICAgcG9zaXRpb24gaW4g
dmlzdWFsIG9yZGVyLiBJdCByZWR1Y2VzIHRoZSBjb21wbGV4aXR5IG9mIG9sZCBpbXBsZW1lbnRh
dGlvbi4KKworICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1N0YXJ0T2ZXb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRW5kT2ZXb3JkKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNSb290SW5saW5l
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRSb290SW5saW5lQm94KToKKyAgICAgICAgKFdl
YkNvcmU6OnNlYXJjaFByZXZpb3VzQm94SW5TYW1lTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZWFyY2hOZXh0Qm94SW5TYW1lTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hQcmV2aW91
c0JveEluUHJldmlvdXNSb290SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OnNlYXJjaE5l
eHRCb3hJbk5leHRSb290SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdvcmRC
cmVha0l0ZXJhdG9yRm9yTWluT2Zmc2V0Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlV29yZEJyZWFrSXRlcmF0b3JGb3JNYXhPZmZzZXRCb3VuZGFyeSk6CisgICAgICAgIChXZWJD
b3JlOjp3b3JkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6bGVmdFdvcmRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpyaWdodFdvcmRQb3NpdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppc1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNXb3JkVGV4dEJyZWFrKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC93aW5jZS9UZXh0QnJlYWtJdGVyYXRvcldpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlzV29yZFRleHRCcmVhayk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wMi0xNSAgU2hp
bnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGFuIGlu
dGVybmFsIGZsYWcgdG8gYWNjZXB0IG11bHRpcGxlIHNoYWRvdyByb290cyBmb3IgdGhlIHB1cnBv
c2Ugb2YgdGVzdHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5j
cHAJKHJldmlzaW9uIDEwNjUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91
bml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOTksMzI0ICsxMDk5LDM2IEBAIFZpc2libGVQ
b3NpdGlvbiByaWdodEJvdW5kYXJ5T2ZMaW5lKGNvbnMKICAgICByZXR1cm4gZGlyZWN0aW9uID09
IExUUiA/IGxvZ2ljYWxFbmRPZkxpbmUoYykgOiBsb2dpY2FsU3RhcnRPZkxpbmUoYyk7CiB9CiAK
LXN0YXRpYyBjb25zdCBpbnQgaW52YWxpZE9mZnNldCA9IC0xOwotc3RhdGljIGNvbnN0IGludCBv
ZmZzZXROb3RGb3VuZCA9IC0xOwotCi1zdGF0aWMgYm9vbCBwb3NpdGlvbklzSW5Cb3goY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiB3b3JkQnJlYWssIGNvbnN0IElubGluZUJveCogYm94LCBpbnQmIG9m
ZnNldE9mV29yZEJyZWFrKQorc3RhdGljIGJvb2wgaXNTdGFydE9mV29yZChUZXh0QnJlYWtJdGVy
YXRvciogaXRlciwgaW50IHBvc2l0aW9uLCBib29sIGhhcmRMaW5lQnJlYWspCiB7Ci0gICAgaWYg
KHdvcmRCcmVhay5pc051bGwoKSkKKyAgICBib29sIGJvdW5kYXJ5ID0gaGFyZExpbmVCcmVhayA/
IHRydWUgOiBpc1RleHRCcmVhayhpdGVyLCBwb3NpdGlvbik7CisgICAgaWYgKCFib3VuZGFyeSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSW5saW5lQm94KiBib3hPZldvcmRCcmVhazsK
LSAgICB3b3JkQnJlYWsuZ2V0SW5saW5lQm94QW5kT2Zmc2V0KGJveE9mV29yZEJyZWFrLCBvZmZz
ZXRPZldvcmRCcmVhayk7Ci0gICAgcmV0dXJuIGJveCA9PSBib3hPZldvcmRCcmVhazsKLX0KLQot
c3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRCcmVha0luQm94SW5zaWRlQmxvY2tX
aXRoU2FtZURpcmVjdGlvbmFsaXR5KGNvbnN0IElubGluZUJveCogYm94LCBjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHByZXZpb3VzV29yZEJyZWFrLCBpbnQmIG9mZnNldE9mV29yZEJyZWFrKQotewot
ICAgIC8vIEluIGEgTFRSIGJsb2NrLCB0aGUgd29yZCBicmVhayBzaG91bGQgYmUgb24gdGhlIGxl
ZnQgYm91bmRhcnkgb2YgYSB3b3JkLgotICAgIC8vIEluIGEgUlRMIGJsb2NrLCB0aGUgd29yZCBi
cmVhayBzaG91bGQgYmUgb24gdGhlIHJpZ2h0IGJvdW5kYXJ5IG9mIGEgd29yZC4KLSAgICAvLyBC
ZWNhdXNlIG5leHRXb3JkUG9zaXRpb24oKSByZXR1cm5zIHRoZSB3b3JkIGJyZWFrIG9uIHRoZSBy
aWdodCBib3VuZGFyeSBvZiB0aGUgd29yZCBmb3IgTFRSIHRleHQsCi0gICAgLy8gd2UgbmVlZCB0
byB1c2UgcHJldmlvdXNXb3JkUG9zaXRpb24oKSB0byB0cmF2ZXJzZSB3b3JkcyB3aXRoaW4gdGhl
IGlubGluZSBib3hlcyBmcm9tIHJpZ2h0IHRvIGxlZnQKLSAgICAvLyB0byBmaW5kIHRoZSBwcmV2
aW91cyB3b3JkIGJyZWFrIChpLmUuIHRoZSBmaXJzdCB3b3JkIGJyZWFrIG9uIHRoZSBsZWZ0KS4g
VGhlIHNhbWUgYXBwbGllcyB0byBSVEwgdGV4dC4KLSAgICAKLSAgICBib29sIGhhc1NlZW5Xb3Jk
QnJlYWtJblRoaXNCb3ggPSBwcmV2aW91c1dvcmRCcmVhay5pc05vdE51bGwoKTsKLQotICAgIFZp
c2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0KLSAgICBpZiAoaGFzU2VlbldvcmRCcmVha0luVGhp
c0JveCkKLSAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNXb3JkQnJlYWs7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIHdvcmRCcmVhayA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihib3gtPnJl
bmRlcmVyKCktPm5vZGUoKSwgYm94LT5jYXJldE1heE9mZnNldCgpKTsKLQotICAgICAgICAvLyBS
ZXR1cm4gdGhlIHJpZ2h0bW9zdCB3b3JkIGJvdW5kYXJ5IG9mIExUUiBib3ggb3IgbGVmdG1vc3Qg
d29yZCBib3VuZGFyeSBvZiBSVEwgYm94IGlmCi0gICAgICAgIC8vIGl0IGlzIG5vdCBpbiB0aGUg
cHJldmlvdXNseSB2aXNpdGVkIGJveGVzLiBGb3IgZXhhbXBsZSwgZ2l2ZW4gYSBsb2dpY2FsIHRl
eHQgCi0gICAgICAgIC8vICJhYmMgZGVmICAgICBoaWogb3BxIiwgdGhlcmUgYXJlIDIgYm94ZXM6
IHRoZSAiYWJjIGRlZiAiIChzdGFydHMgYXQgMCBhbmQgbGVuZ3RoIGlzIDgpIAotICAgICAgICAv
LyBhbmQgdGhlICJoaWogb3BxIiAoc3RhcnRzIGF0IDEyIGFuZCBsZW5ndGggaXMgNykuIFRoZSB3
b3JkIGJyZWFrcyBhcmUgCi0gICAgICAgIC8vICJhYmMgfGRlZiB8ICAgIGhpaiB8b3BxIi4gV2Ug
bm9ybWFsbHkgY2F0Y2ggdGhlIHdvcmQgYnJlYWsgYmV0d2VlbiAiZGVmIiBhbmQgImhpaiIgd2hl
bgotICAgICAgICAvLyB3ZSB2aXNpdCB0aGUgYm94IHRoYXQgY29udGFpbnMgImhpaiBvcHEiLCBi
dXQgdGhpcyB3b3JkIGJyZWFrIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIGJveAotICAgICAgICAvLyB0
aGF0IGNvbnRhaW5zICJoaWogb3BxIiB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBzcGFjZXMuIFNv
IHdlIGRldGVjdCBpdCB3aGVuIHdlJ3JlCi0gICAgICAgIC8vIHRyYXZlcnNpbmcgdGhlIGJveCB0
aGF0IGNvbnRhaW5zICJhYmMgZGVmICIgaW5zdGVhZC4KLQotICAgICAgICBpZiAoKGJveC0+aXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpICYmIGJveC0+bmV4dExlYWZDaGlsZCgpKQotICAgICAgICAg
ICAgfHwgKCFib3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBib3gtPnByZXZMZWFmQ2hp
bGQoKSkpIHsKLQotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uQWZ0ZXJXb3Jk
ID0gbmV4dEJvdW5kYXJ5KHdvcmRCcmVhaywgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5KTsKLSAg
ICAgICAgICAgIGlmIChwb3NpdGlvbkFmdGVyV29yZC5pc05vdE51bGwoKSkgewotICAgICAgICAg
ICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZVdvcmQgPSBwcmV2aW91c0JvdW5k
YXJ5KHBvc2l0aW9uQWZ0ZXJXb3JkLCBwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW5kYXJ5KTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbklzSW5Cb3gocG9zaXRpb25C
ZWZvcmVXb3JkLCBib3gsIG9mZnNldE9mV29yZEJyZWFrKSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uQmVmb3JlV29yZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLSAgCi0gICAgd29yZEJyZWFrID0gcHJldmlvdXNCb3VuZGFyeSh3b3JkQnJlYWssIHByZXZp
b3VzV29yZFBvc2l0aW9uQm91bmRhcnkpOwotICAgIGlmIChwcmV2aW91c1dvcmRCcmVhayA9PSB3
b3JkQnJlYWspCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLQotICAgIHJldHVy
biBwb3NpdGlvbklzSW5Cb3god29yZEJyZWFrLCBib3gsIG9mZnNldE9mV29yZEJyZWFrKSA/IHdv
cmRCcmVhayA6IFZpc2libGVQb3NpdGlvbigpOwotfQotCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9u
IGxlZnRtb3N0UG9zaXRpb25JblJUTEJveEluTFRSQmxvY2soY29uc3QgSW5saW5lQm94KiBib3gp
Ci17Ci0gICAgLy8gRklYTUU6IFByb2JhYmx5IG5lZWQgdG8gdGFrZSBjYXJlIG9mIGJpZGkgbGV2
ZWwgdG9vLgotICAgIE5vZGUqIG5vZGUgPSBib3gtPnJlbmRlcmVyKCktPm5vZGUoKTsKLSAgICBJ
bmxpbmVCb3gqIHByZXZpb3VzTGVhZiA9IGJveC0+cHJldkxlYWZDaGlsZCgpOwotICAgIElubGlu
ZUJveCogbmV4dExlYWYgPSBib3gtPm5leHRMZWFmQ2hpbGQoKTsgICAKLSAgICAKLSAgICBpZiAo
cHJldmlvdXNMZWFmICYmICFwcmV2aW91c0xlYWYtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBib3gtPmNh
cmV0TWF4T2Zmc2V0KCkpOwotCi0gICAgaWYgKG5leHRMZWFmICYmICFuZXh0TGVhZi0+aXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpKSB7Ci0gICAgICAgIGlmIChwcmV2aW91c0xlYWYpCi0gICAgICAg
ICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHByZXZpb3VzTGVhZi0+cmVu
ZGVyZXIoKS0+bm9kZSgpLCBwcmV2aW91c0xlYWYtPmNhcmV0TWF4T2Zmc2V0KCkpOwotCi0gICAg
ICAgIElubGluZUJveCogbGFzdFJUTExlYWY7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGxh
c3RSVExMZWFmID0gbmV4dExlYWY7Ci0gICAgICAgICAgICBuZXh0TGVhZiA9IG5leHRMZWFmLT5u
ZXh0TGVhZkNoaWxkKCk7Ci0gICAgICAgIH0gd2hpbGUgKG5leHRMZWFmICYmICFuZXh0TGVhZi0+
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihsYXN0UlRMTGVhZi0+cmVuZGVyZXIoKS0+bm9kZSgpLCBsYXN0UlRMTGVh
Zi0+Y2FyZXRNaW5PZmZzZXQoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihub2RlLCBib3gtPmNhcmV0TWluT2Zmc2V0KCkpOwotfQotCi1zdGF0aWMg
VmlzaWJsZVBvc2l0aW9uIHJpZ2h0bW9zdFBvc2l0aW9uSW5MVFJCb3hJblJUTEJsb2NrKGNvbnN0
IElubGluZUJveCogYm94KQotewotICAgIC8vIEZJWE1FOiBQcm9iYWJseSBuZWVkIHRvIHRha2Ug
Y2FyZSBvZiBiaWRpIGxldmVsIHRvby4KLSAgICBOb2RlKiBub2RlID0gYm94LT5yZW5kZXJlcigp
LT5ub2RlKCk7Ci0gICAgSW5saW5lQm94KiBwcmV2aW91c0xlYWYgPSBib3gtPnByZXZMZWFmQ2hp
bGQoKTsKLSAgICBJbmxpbmVCb3gqIG5leHRMZWFmID0gYm94LT5uZXh0TGVhZkNoaWxkKCk7ICAg
Ci0gICAgCi0gICAgaWYgKG5leHRMZWFmICYmIG5leHRMZWFmLT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkpICAgIAotICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5v
ZGUsIGJveC0+Y2FyZXRNYXhPZmZzZXQoKSk7Ci0KLSAgICBpZiAocHJldmlvdXNMZWFmICYmIHBy
ZXZpb3VzTGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7Ci0gICAgICAgIGlmIChuZXh0
TGVhZikKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obmV4
dExlYWYtPnJlbmRlcmVyKCktPm5vZGUoKSwgbmV4dExlYWYtPmNhcmV0TWF4T2Zmc2V0KCkpOwot
Ci0gICAgICAgIElubGluZUJveCogZmlyc3RMVFJMZWFmOwotICAgICAgICBkbyB7Ci0gICAgICAg
ICAgICBmaXJzdExUUkxlYWYgPSBwcmV2aW91c0xlYWY7Ci0gICAgICAgICAgICBwcmV2aW91c0xl
YWYgPSBwcmV2aW91c0xlYWYtPnByZXZMZWFmQ2hpbGQoKTsKLSAgICAgICAgfSB3aGlsZSAocHJl
dmlvdXNMZWFmICYmIHByZXZpb3VzTGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKTsKLSAg
ICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihmaXJzdExUUkxlYWYtPnJl
bmRlcmVyKCktPm5vZGUoKSwgZmlyc3RMVFJMZWFmLT5jYXJldE1pbk9mZnNldCgpKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIGJveC0+Y2Fy
ZXRNaW5PZmZzZXQoKSk7Ci19Ci0gICAgCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGxhc3RXb3Jk
QnJlYWtJbkJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50JiBvZmZzZXRPZldvcmRCcmVhaykK
LXsKLSAgICAvLyBBZGQgdGhlIGxlZnRtb3N0IHdvcmQgYnJlYWsgZm9yIFJUTCBib3ggb3Igcmln
aHRtb3N0IHdvcmQgYnJlYWsgZm9yIExUUiBib3guCi0gICAgSW5saW5lQm94KiBwcmV2aW91c0xl
YWYgPSBib3gtPnByZXZMZWFmQ2hpbGQoKTsKLSAgICBJbmxpbmVCb3gqIG5leHRMZWFmID0gYm94
LT5uZXh0TGVhZkNoaWxkKCk7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIGJvdW5kYXJ5UG9zaXRpb247
Ci0gICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gUlRMICYmICghcHJldmlvdXNMZWFmIHx8IHBy
ZXZpb3VzTGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSkKLSAgICAgICAgYm91bmRhcnlQ
b3NpdGlvbiA9IGxlZnRtb3N0UG9zaXRpb25JblJUTEJveEluTFRSQmxvY2soYm94KTsKLSAgICBl
bHNlIGlmIChib3gtPmRpcmVjdGlvbigpID09IExUUiAmJiAoIW5leHRMZWFmIHx8ICFuZXh0TGVh
Zi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSkKLSAgICAgICAgYm91bmRhcnlQb3NpdGlvbiA9
IHJpZ2h0bW9zdFBvc2l0aW9uSW5MVFJCb3hJblJUTEJsb2NrKGJveCk7Ci0KLSAgICBpZiAoYm91
bmRhcnlQb3NpdGlvbi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigp
OyAgICAgICAgICAgIAotCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhayA9IG5leHRCb3Vu
ZGFyeShib3VuZGFyeVBvc2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uQm91bmRhcnkpOwotICAgIGlm
ICh3b3JkQnJlYWsuaXNOdWxsKCkpCi0gICAgICAgIHdvcmRCcmVhayA9IGJvdW5kYXJ5UG9zaXRp
b247Ci0gICAgZWxzZSBpZiAod29yZEJyZWFrICE9IGJvdW5kYXJ5UG9zaXRpb24pCi0gICAgICAg
IHdvcmRCcmVhayA9IHByZXZpb3VzQm91bmRhcnkod29yZEJyZWFrLCBwcmV2aW91c1dvcmRQb3Np
dGlvbkJvdW5kYXJ5KTsKLQotICAgIHJldHVybiBwb3NpdGlvbklzSW5Cb3god29yZEJyZWFrLCBi
b3gsIG9mZnNldE9mV29yZEJyZWFrKSA/IHdvcmRCcmVhayA6IFZpc2libGVQb3NpdGlvbigpOyAg
ICAKLX0KLQotc3RhdGljIGJvb2wgcG9zaXRpb25Jc1Zpc3VhbGx5T3JkZXJlZEluQm94SW5CbG9j
a1dpdGhEaWZmZXJlbnREaXJlY3Rpb25hbGl0eShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHdvcmRC
cmVhaywgY29uc3QgSW5saW5lQm94KiBib3gsIGludCYgb2Zmc2V0T2ZXb3JkQnJlYWspCi17Ci0g
ICAgaW50IHByZXZpb3VzT2Zmc2V0ID0gb2Zmc2V0T2ZXb3JkQnJlYWs7Ci0gICAgcmV0dXJuIHBv
c2l0aW9uSXNJbkJveCh3b3JkQnJlYWssIGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspCi0gICAgICAg
ICYmIChwcmV2aW91c09mZnNldCA9PSBpbnZhbGlkT2Zmc2V0IHx8IHByZXZpb3VzT2Zmc2V0IDwg
b2Zmc2V0T2ZXb3JkQnJlYWspOwotfQotICAgIAotc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0
V29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25hbGl0eSgKLSAg
ICBjb25zdCBJbmxpbmVCb3gqIGJveCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwcmV2aW91c1dv
cmRCcmVhaywgaW50JiBvZmZzZXRPZldvcmRCcmVhaywgYm9vbCYgaXNMYXN0V29yZEJyZWFrSW5C
b3gpCi17Ci0gICAgLy8gRklYTUU6IFByb2JhYmx5IG5lZWQgdG8gdGFrZSBjYXJlIG9mIGJpZGkg
bGV2ZWwgdG9vLgotICAgIAotICAgIC8vIEluIGEgTFRSIGJsb2NrLCB0aGUgd29yZCBicmVhayBz
aG91bGQgYmUgb24gdGhlIGxlZnQgYm91bmRhcnkgb2YgYSB3b3JkLgotICAgIC8vIEluIGEgUlRM
IGJsb2NrLCB0aGUgd29yZCBicmVhayBzaG91bGQgYmUgb24gdGhlIHJpZ2h0IGJvdW5kYXJ5IG9m
IGEgd29yZC4KLSAgICAvLyBCZWNhdXNlIHByZXZpb3VzV29yZFBvc2l0aW9uKCkgcmV0dXJucyB0
aGUgd29yZCBicmVhayBvbiB0aGUgcmlnaHQgYm91bmRhcnkgb2YgdGhlIHdvcmQgZm9yIFJUTCB0
ZXh0LAotICAgIC8vIHdlIG5lZWQgdG8gdXNlIG5leHRXb3JkUG9zaXRpb24oKSB0byB0cmF2ZXJz
ZSB3b3JkcyB3aXRoaW4gdGhlIGlubGluZSBib3hlcyBmcm9tIHJpZ2h0IHRvIGxlZnQgdG8gZmlu
ZCB0aGUgbmV4dCB3b3JkIGJyZWFrLgotICAgIC8vIFRoZSBzYW1lIGFwcGxpZXMgdG8gTFRSIHRl
eHQsIGluIHdoaWNoIHdvcmRzIGFyZSB0cmF2ZXJzZWQgd2l0aGluIHRoZSBpbmxpbmUgYm94ZXMg
ZnJvbSBsZWZ0IHRvIHJpZ2h0LgotICAgIAotICAgIGJvb2wgaGFzU2VlbldvcmRCcmVha0luVGhp
c0JveCA9IHByZXZpb3VzV29yZEJyZWFrLmlzTm90TnVsbCgpOwotICAgIFZpc2libGVQb3NpdGlv
biB3b3JkQnJlYWsgPSBoYXNTZWVuV29yZEJyZWFrSW5UaGlzQm94ID8gcHJldmlvdXNXb3JkQnJl
YWsgOiAKLSAgICAgICAgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGJveC0+cmVuZGVyZXIo
KS0+bm9kZSgpLCBib3gtPmNhcmV0TWluT2Zmc2V0KCkpOwotCi0gICAgd29yZEJyZWFrID0gbmV4
dEJvdW5kYXJ5KHdvcmRCcmVhaywgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5KTsKLSAgCi0gICAg
Ly8gR2l2ZW4gUlRMIGJveCAiQUJDIERFRiIgZWl0aGVyIGZvbGxvd3MgYSBMVFIgYm94IG9yIGlz
IHRoZSBmaXJzdCB2aXN1YWwgYm94IGluIGFuIExUUiBibG9jayBhcyBhbiBleGFtcGxlLAotICAg
IC8vIHRoZSB2aXN1YWwgZGlzcGxheSBvZiB0aGUgUlRMIGJveCBpczogIigwKUooMTApSSg5KUgo
OCkgKDcpRig2KUUoNSlEKDQpICgzKUMoMilCKDEpQSgxMSkiLAotICAgIC8vIHdoZXJlIHRoZSBu
dW1iZXIgaW4gcGFyZW50aGVzaXMgcmVwcmVzZW50cyBvZmZzZXQgaW4gdmlzaWJsZVBvc2l0aW9u
LiAKLSAgICAvLyBTdGFydCBhdCBvZmZzZXQgMCwgdGhlIGZpcnN0IHdvcmQgYnJlYWsgaXMgYXQg
b2Zmc2V0IDMsIHRoZSAybmQgd29yZCBicmVhayBpcyBhdCBvZmZzZXQgNywgYW5kIHRoZSAzcmQg
d29yZCBicmVhayBzaG91bGQgYmUgYXQgb2Zmc2V0IDAuCi0gICAgLy8gQnV0IG5leHRXb3JkUG9z
aXRpb24oKSBvZiBvZmZzZXQgNyBpcyBvZmZzZXQgMTEsIHdoaWNoIHNob3VsZCBiZSBpZ25vcmVk
LCAKLSAgICAvLyBhbmQgdGhlIHBvc2l0aW9uIGF0IG9mZnNldCAwIHNob3VsZCBiZSBtYW51YWxs
eSBhZGRlZCBhcyB0aGUgbGFzdCB3b3JkIGJyZWFrIHdpdGhpbiB0aGUgYm94LgotICAgIGlmICh3
b3JkQnJlYWsgIT0gcHJldmlvdXNXb3JkQnJlYWsgJiYgcG9zaXRpb25Jc1Zpc3VhbGx5T3JkZXJl
ZEluQm94SW5CbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25hbGl0eSh3b3JkQnJlYWssIGJveCwg
b2Zmc2V0T2ZXb3JkQnJlYWspKSB7Ci0gICAgICAgIGlzTGFzdFdvcmRCcmVha0luQm94ID0gZmFs
c2U7Ci0gICAgICAgIHJldHVybiB3b3JkQnJlYWs7Ci0gICAgfQotICAgIAotICAgIGlzTGFzdFdv
cmRCcmVha0luQm94ID0gdHJ1ZTsKLSAgICByZXR1cm4gbGFzdFdvcmRCcmVha0luQm94KGJveCwg
b2Zmc2V0T2ZXb3JkQnJlYWspOwotfQotCi1zdHJ1Y3QgV29yZEJvdW5kYXJ5RW50cnkgewotICAg
IFdvcmRCb3VuZGFyeUVudHJ5KCkKLSAgICAgICAgOiBvZmZzZXRJbklubGluZUJveChpbnZhbGlk
T2Zmc2V0KSAKLSAgICB7IAotICAgIH0KLQotICAgIFdvcmRCb3VuZGFyeUVudHJ5KGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvZmZzZXQpCi0gICAgICAgIDogdmlzaWJsZVBv
c2l0aW9uKHBvc2l0aW9uKQotICAgICAgICAsIG9mZnNldEluSW5saW5lQm94KG9mZnNldCkgCi0g
ICAgeyAKLSAgICB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uOwotICAg
IGludCBvZmZzZXRJbklubGluZUJveDsKLX07Ci0gICAgCi10eXBlZGVmIFZlY3RvcjxXb3JkQm91
bmRhcnlFbnRyeSwgNTA+IFdvcmRCb3VuZGFyeVZlY3RvcjsKLSAgICAKLXN0YXRpYyB2b2lkIGNv
bGxlY3RXb3JkQnJlYWtzSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHkoY29u
c3QgSW5saW5lQm94KiBib3gsIFdvcmRCb3VuZGFyeVZlY3RvciYgb3JkZXJlZFdvcmRCb3VuZGFy
aWVzKQotewotICAgIG9yZGVyZWRXb3JkQm91bmRhcmllcy5jbGVhcigpOwotCi0gICAgVmlzaWJs
ZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBpbnQgb2Zmc2V0T2ZXb3JkQnJlYWsgPSBpbnZhbGlk
T2Zmc2V0OwotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzV29y
ZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHkoYm94LCB3b3JkQnJl
YWssIG9mZnNldE9mV29yZEJyZWFrKTsKLSAgICAgICAgaWYgKHdvcmRCcmVhay5pc051bGwoKSkK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBXb3JkQm91bmRhcnlFbnRyeSB3b3JkQm91bmRh
cnlFbnRyeSh3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrKTsKLSAgICAgICAgb3JkZXJlZFdv
cmRCb3VuZGFyaWVzLmFwcGVuZCh3b3JkQm91bmRhcnlFbnRyeSk7Ci0gICAgfQotfQotCi1zdGF0
aWMgdm9pZCBjb2xsZWN0V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tXaXRoRGlmZmVybnREaXJl
Y3Rpb25hbGl0eShjb25zdCBJbmxpbmVCb3gqIGJveCwgV29yZEJvdW5kYXJ5VmVjdG9yJiBvcmRl
cmVkV29yZEJvdW5kYXJpZXMpCi17Ci0gICAgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLmNsZWFyKCk7
Ci0gICAgCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBpbnQgb2Zmc2V0T2ZX
b3JkQnJlYWsgPSBpbnZhbGlkT2Zmc2V0OwotICAgIGJvb2wgaXNMYXN0V29yZEJyZWFrSW5Cb3gg
PSBmYWxzZTsKLSAgICB3aGlsZSAoMSkgewotICAgICAgICB3b3JkQnJlYWsgPSBuZXh0V29yZEJy
ZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25hbGl0eShib3gsIHdvcmRC
cmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWssIGlzTGFzdFdvcmRCcmVha0luQm94KTsKLSAgICAgICAg
aWYgKHdvcmRCcmVhay5pc05vdE51bGwoKSkgewotICAgICAgICAgICAgV29yZEJvdW5kYXJ5RW50
cnkgd29yZEJvdW5kYXJ5RW50cnkod29yZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhayk7Ci0gICAg
ICAgICAgICBvcmRlcmVkV29yZEJvdW5kYXJpZXMuYXBwZW5kKHdvcmRCb3VuZGFyeUVudHJ5KTsK
LSAgICAgICAgfQotICAgICAgICBpZiAoaXNMYXN0V29yZEJyZWFrSW5Cb3gpCi0gICAgICAgICAg
ICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3go
Y29uc3QgSW5saW5lQm94KiBib3gsIFdvcmRCb3VuZGFyeVZlY3RvciYgb3JkZXJlZFdvcmRCb3Vu
ZGFyaWVzLCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQotewotICAgIGlmIChib3gtPmRp
cmVjdGlvbigpID09IGJsb2NrRGlyZWN0aW9uKQotICAgICAgICBjb2xsZWN0V29yZEJyZWFrc0lu
Qm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGJveCwgb3JkZXJlZFdvcmRCb3Vu
ZGFyaWVzKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3hJbnNpZGVC
bG9ja1dpdGhEaWZmZXJudERpcmVjdGlvbmFsaXR5KGJveCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVz
KTsgICAgICAgIAotfQotICAgIAotc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRC
b3VuZGFyeUluQm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQgb2Zmc2V0KQotewotICAgIGlu
dCBvZmZzZXRPZldvcmRCcmVhayA9IDA7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsK
LSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c1dvcmRCcmVh
a0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGJveCwgd29yZEJyZWFrLCBv
ZmZzZXRPZldvcmRCcmVhayk7Ci0gICAgICAgIGlmICh3b3JkQnJlYWsuaXNOdWxsKCkpCi0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0IHx8IG9m
ZnNldE9mV29yZEJyZWFrICE9IG9mZnNldCkKLSAgICAgICAgICAgIHJldHVybiB3b3JkQnJlYWs7
Ci0gICAgfSAgICAgICAgCi0gICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotfQotCi1zdGF0
aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkQm91bmRhcnlJbkJveChjb25zdCBJbmxpbmVCb3gq
IGJveCwgaW50IG9mZnNldCkKLXsKLSAgICBpbnQgb2Zmc2V0T2ZXb3JkQnJlYWsgPSAwOwotICAg
IFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0gICAgYm9vbCBpc0xhc3RXb3JkQnJlYWtJbkJv
eCA9IGZhbHNlOwotICAgIGRvIHsKLSAgICAgICAgd29yZEJyZWFrID0gbmV4dFdvcmRCcmVha0lu
Qm94SW5zaWRlQmxvY2tXaXRoRGlmZmVyZW50RGlyZWN0aW9uYWxpdHkoYm94LCB3b3JkQnJlYWss
IG9mZnNldE9mV29yZEJyZWFrLCBpc0xhc3RXb3JkQnJlYWtJbkJveCk7Ci0gICAgICAgIGlmICh3
b3JkQnJlYWsuaXNOb3ROdWxsKCkgJiYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0IHx8IG9mZnNl
dE9mV29yZEJyZWFrICE9IG9mZnNldCkpCi0gICAgICAgICAgICByZXR1cm4gd29yZEJyZWFrOwot
ICAgIH0gd2hpbGUgKCFpc0xhc3RXb3JkQnJlYWtJbkJveCk7ICAgICAgIAotICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24oKTsKLX0KLSAgICAKLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gdmlzdWFs
bHlMYXN0V29yZEJvdW5kYXJ5SW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gsIGludCBvZmZzZXQs
IFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCi17Ci0gICAgV29yZEJvdW5kYXJ5VmVjdG9y
IG9yZGVyZWRXb3JkQm91bmRhcmllczsKLSAgICBjb2xsZWN0V29yZEJyZWFrc0luQm94KGJveCwg
b3JkZXJlZFdvcmRCb3VuZGFyaWVzLCBibG9ja0RpcmVjdGlvbik7Ci0gICAgaWYgKCFvcmRlcmVk
V29yZEJvdW5kYXJpZXMuc2l6ZSgpKSAKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigp
OwotICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCB8fCBvcmRlcmVkV29yZEJvdW5kYXJp
ZXNbb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDFdLm9mZnNldEluSW5saW5lQm94ICE9
IG9mZnNldCkKLSAgICAgICAgcmV0dXJuIG9yZGVyZWRXb3JkQm91bmRhcmllc1tvcmRlcmVkV29y
ZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMV0udmlzaWJsZVBvc2l0aW9uOwotICAgIGlmIChvcmRlcmVk
V29yZEJvdW5kYXJpZXMuc2l6ZSgpID4gMSkKLSAgICAgICAgcmV0dXJuIG9yZGVyZWRXb3JkQm91
bmRhcmllc1tvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMl0udmlzaWJsZVBvc2l0aW9u
OwotICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLX0KLSAgICAgICAgCi1zdGF0aWMgaW50
IGdyZWF0ZXN0T2Zmc2V0VW5kZXIoaW50IG9mZnNldCwgYm9vbCBib3hBbmRCbG9ja0FyZUluU2Ft
ZURpcmVjdGlvbiwgY29uc3QgV29yZEJvdW5kYXJ5VmVjdG9yJiBvcmRlcmVkV29yZEJvdW5kYXJp
ZXMpCi17Ci0gICAgaWYgKCFvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpKQotICAgICAgICBy
ZXR1cm4gb2Zmc2V0Tm90Rm91bmQ7Ci0gICAgLy8gRklYTUU6IGJpbmFyeSBzZWFyY2guCi0gICAg
aWYgKGJveEFuZEJsb2NrQXJlSW5TYW1lRGlyZWN0aW9uKSB7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgIGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXNbaV0ub2Zmc2V0SW5JbmxpbmVCb3ggPCBv
ZmZzZXQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIG9mZnNldE5vdEZvdW5kOwotICAgIH0KLSAgICBmb3IgKGludCBpID0gb3JkZXJlZFdvcmRC
b3VuZGFyaWVzLnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIGlmIChvcmRlcmVk
V29yZEJvdW5kYXJpZXNbaV0ub2Zmc2V0SW5JbmxpbmVCb3ggPCBvZmZzZXQpCi0gICAgICAgICAg
ICByZXR1cm4gaTsKLSAgICB9Ci0gICAgcmV0dXJuIG9mZnNldE5vdEZvdW5kOworICAgIHRleHRC
cmVha0ZvbGxvd2luZyhpdGVyLCBwb3NpdGlvbik7CisgICAgcmV0dXJuIGlzV29yZFRleHRCcmVh
ayhpdGVyKTsKIH0KIAotc3RhdGljIGludCBzbWFsbGVzdE9mZnNldEFib3ZlKGludCBvZmZzZXQs
IGJvb2wgYm94QW5kQmxvY2tBcmVJblNhbWVEaXJlY3Rpb24sIGNvbnN0IFdvcmRCb3VuZGFyeVZl
Y3RvciYgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKQorc3RhdGljIGJvb2wgaXNFbmRPZldvcmQoVGV4
dEJyZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQog
ewotICAgIGlmICghb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSkKLSAgICAgICAgcmV0dXJu
IG9mZnNldE5vdEZvdW5kOwotICAgIC8vIEZJWE1FOiBiaW5hcnkgc2VhcmNoLgotICAgIGlmIChi
b3hBbmRCbG9ja0FyZUluU2FtZURpcmVjdGlvbikgewotICAgICAgICBmb3IgKGludCBpID0gb3Jk
ZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgICAg
ICBpZiAob3JkZXJlZFdvcmRCb3VuZGFyaWVzW2ldLm9mZnNldEluSW5saW5lQm94ID4gb2Zmc2V0
KQotICAgICAgICAgICAgICAgIHJldHVybiBpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBv
ZmZzZXROb3RGb3VuZDsKLSAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9yZGVy
ZWRXb3JkQm91bmRhcmllcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAob3JkZXJlZFdvcmRC
b3VuZGFyaWVzW2ldLm9mZnNldEluSW5saW5lQm94ID4gb2Zmc2V0KQotICAgICAgICAgICAgcmV0
dXJuIGk7Ci0gICAgfQotICAgIHJldHVybiBvZmZzZXROb3RGb3VuZDsKKyAgICBib29sIGJvdW5k
YXJ5ID0gaXNUZXh0QnJlYWsoaXRlciwgcG9zaXRpb24pOworICAgIHJldHVybiAoaGFyZExpbmVC
cmVhayB8fCBib3VuZGFyeSkgJiYgaXNXb3JkVGV4dEJyZWFrKGl0ZXIpOwogfQogCi1zdGF0aWMg
Y29uc3QgUm9vdElubGluZUJveCogcHJldmlvdXNSb290SW5saW5lQm94KGNvbnN0IElubGluZUJv
eCogYm94KQorLy8gVE9ETzogY29uc29saWRhdGUgd2l0aCBwcmV2aW91c0xpbmVQb3NpdGlvbi4K
K3N0YXRpYyBjb25zdCBSb290SW5saW5lQm94KiBwcmV2aW91c1Jvb3RJbmxpbmVCb3goY29uc3Qg
SW5saW5lQm94KiBib3gsIGNvbnN0IE5vZGUqIGhpZ2hlc3RSb290KQogewogICAgIE5vZGUqIG5v
ZGUgPSBib3gtPnJlbmRlcmVyKCktPm5vZGUoKTsKICAgICBOb2RlKiBlbmNsb3NpbmdCbG9ja05v
ZGUgPSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKG5vZGUpOwotICAgIE5vZGUq
IHByZXZpb3VzTm9kZSA9IG5vZGUtPnByZXZpb3VzTGVhZk5vZGUoKTsKKyAgICBOb2RlKiBwcmV2
aW91c05vZGUgPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5vZGUsIENvbnRlbnRJ
c0VkaXRhYmxlKTsKICAgICB3aGlsZSAocHJldmlvdXNOb2RlICYmIGVuY2xvc2luZ0Jsb2NrTm9k
ZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKHByZXZpb3VzTm9kZSkpCi0g
ICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTm9kZS0+cHJldmlvdXNMZWFmTm9kZSgpOwor
ICAgICAgICBwcmV2aW91c05vZGUgPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KHBy
ZXZpb3VzTm9kZSwgQ29udGVudElzRWRpdGFibGUpOwogICAKICAgICB3aGlsZSAocHJldmlvdXNO
b2RlICYmICFwcmV2aW91c05vZGUtPmlzU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIFBvc2l0aW9u
IHBvcyA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihwcmV2aW91c05vZGUsIGNhcmV0TWF4
T2Zmc2V0KHByZXZpb3VzTm9kZSkpOworICAgICAgICBpZiAoaGlnaGVzdEVkaXRhYmxlUm9vdChm
aXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocHJldmlvdXNOb2RlKSwgQ29udGVudElzRWRpdGFi
bGUpICE9IGhpZ2hlc3RSb290KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgUG9zaXRp
b24gcG9zID0gcHJldmlvdXNOb2RlLT5oYXNUYWdOYW1lKGJyVGFnKSA/IHBvc2l0aW9uQmVmb3Jl
Tm9kZShwcmV2aW91c05vZGUpIDogY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHByZXZpb3Vz
Tm9kZSwgY2FyZXRNYXhPZmZzZXQocHJldmlvdXNOb2RlKSk7CiAgICAgICAgIAogICAgICAgICBp
ZiAocG9zLmlzQ2FuZGlkYXRlKCkpIHsKICAgICAgICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVu
ZGVyZWRQb3MocG9zLCBET1dOU1RSRUFNKTsKQEAgLTE0MjUsMjAgKzExMzcsMjMgQEAgc3RhdGlj
IGNvbnN0IFJvb3RJbmxpbmVCb3gqIHByZXZpb3VzUm9vdAogICAgICAgICAgICAgICAgIHJldHVy
biByb290OwogICAgICAgICB9CiAKLSAgICAgICAgcHJldmlvdXNOb2RlID0gcHJldmlvdXNOb2Rl
LT5wcmV2aW91c0xlYWZOb2RlKCk7CisgICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTGVh
ZldpdGhTYW1lRWRpdGFiaWxpdHkocHJldmlvdXNOb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CiAg
ICAgfQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgY29uc3QgUm9vdElubGluZUJveCogbmV4
dFJvb3RJbmxpbmVCb3goY29uc3QgSW5saW5lQm94KiBib3gpCitzdGF0aWMgY29uc3QgUm9vdElu
bGluZUJveCogbmV4dFJvb3RJbmxpbmVCb3goY29uc3QgSW5saW5lQm94KiBib3gsIGNvbnN0IE5v
ZGUqIGhpZ2hlc3RSb290KQogewogICAgIE5vZGUqIG5vZGUgPSBib3gtPnJlbmRlcmVyKCktPm5v
ZGUoKTsKICAgICBOb2RlKiBlbmNsb3NpbmdCbG9ja05vZGUgPSBlbmNsb3NpbmdOb2RlV2l0aE5v
bklubGluZVJlbmRlcmVyKG5vZGUpOwotICAgIE5vZGUqIG5leHROb2RlID0gbm9kZS0+bmV4dExl
YWZOb2RlKCk7CisgICAgTm9kZSogbmV4dE5vZGUgPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxp
dHkobm9kZSwgQ29udGVudElzRWRpdGFibGUpOwogICAgIHdoaWxlIChuZXh0Tm9kZSAmJiBlbmNs
b3NpbmdCbG9ja05vZGUgPT0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihuZXh0
Tm9kZSkpCi0gICAgICAgIG5leHROb2RlID0gbmV4dE5vZGUtPm5leHRMZWFmTm9kZSgpOworICAg
ICAgICBuZXh0Tm9kZSA9IG5leHRMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShuZXh0Tm9kZSwgQ29u
dGVudElzRWRpdGFibGUpOwogICAKICAgICB3aGlsZSAobmV4dE5vZGUgJiYgIW5leHROb2RlLT5p
c1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBpZiAoaGlnaGVzdEVkaXRhYmxlUm9vdChmaXJzdFBv
c2l0aW9uSW5PckJlZm9yZU5vZGUobmV4dE5vZGUpLCBDb250ZW50SXNFZGl0YWJsZSkgIT0gaGln
aGVzdFJvb3QpCisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBQb3NpdGlvbiBwb3M7CiAg
ICAgICAgIHBvcyA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihuZXh0Tm9kZSwgY2FyZXRN
aW5PZmZzZXQobmV4dE5vZGUpKTsKICAgICAgICAgCkBAIC0xNDQ5LDE3MCArMTE2NCwyMTcgQEAg
c3RhdGljIGNvbnN0IFJvb3RJbmxpbmVCb3gqIG5leHRSb290SW5saQogICAgICAgICAgICAgICAg
IHJldHVybiByb290OwogICAgICAgICB9CiAKLSAgICAgICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS0+
bmV4dExlYWZOb2RlKCk7CisgICAgICAgIG5leHROb2RlID0gbmV4dExlYWZXaXRoU2FtZUVkaXRh
YmlsaXR5KG5leHROb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CiAgICAgfQogICAgIHJldHVybiAw
OwogfQogCi1zdGF0aWMgY29uc3QgSW5saW5lQm94KiBsZWZ0SW5saW5lQm94KGNvbnN0IElubGlu
ZUJveCogYm94LCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQorc3RhdGljIHZvaWQgc2Vh
cmNoUHJldmlvdXNCb3hJblNhbWVMaW5lKGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gsIElu
bGluZVRleHRCb3gqJiBwcmV2aW91c0JveCkKIHsKLSAgICBpZiAoYm94LT5wcmV2TGVhZkNoaWxk
KCkpCi0gICAgICAgIHJldHVybiBib3gtPnByZXZMZWFmQ2hpbGQoKTsKLSAgICAKLSAgICBjb25z
dCBSb290SW5saW5lQm94KiByb290Qm94ID0gYm94LT5yb290KCk7Ci0gICAgY29uc3QgYm9vbCBp
c0Jsb2NrTFRSID0gYmxvY2tEaXJlY3Rpb24gPT0gTFRSOwotICAgIGNvbnN0IElubGluZUZsb3dC
b3gqIGxlZnRMaW5lQm94ID0gaXNCbG9ja0xUUiA/IHJvb3RCb3gtPnByZXZMaW5lQm94KCkgOiBy
b290Qm94LT5uZXh0TGluZUJveCgpOwotICAgIGlmIChsZWZ0TGluZUJveCkKLSAgICAgICAgcmV0
dXJuIGxlZnRMaW5lQm94LT5sYXN0TGVhZkNoaWxkKCk7CisgICAgVmVjdG9yPElubGluZUJveCo+
IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyOworICAgIHRleHRCb3gtPnJvb3QoKS0+Y29sbGVjdExl
YWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKIAotICAgIGNv
bnN0IFJvb3RJbmxpbmVCb3gqIGxlZnRSb290SW5saW5lQm94ID0gaXNCbG9ja0xUUiA/IHByZXZp
b3VzUm9vdElubGluZUJveChib3gpIDoKLSAgICAgICAgbmV4dFJvb3RJbmxpbmVCb3goYm94KTsg
Ci0gICAgcmV0dXJuIGxlZnRSb290SW5saW5lQm94ID8gbGVmdFJvb3RJbmxpbmVCb3gtPmxhc3RM
ZWFmQ2hpbGQoKSA6IDA7IAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVhZkJveGVzSW5M
b2dpY2FsT3JkZXIuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKHRleHRCb3ggPT0gbGVhZkJv
eGVzSW5Mb2dpY2FsT3JkZXJbaV0pCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGxl
YWZCb3hlc0luTG9naWNhbE9yZGVyW2ldLT5pc0lubGluZVRleHRCb3goKSkKKyAgICAgICAgICAg
IHByZXZpb3VzQm94ID0gdG9JbmxpbmVUZXh0Qm94KGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2ld
KTsKKyAgICB9CiB9CiAKLXN0YXRpYyBjb25zdCBJbmxpbmVCb3gqIHJpZ2h0SW5saW5lQm94KGNv
bnN0IElubGluZUJveCogYm94LCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQorc3RhdGlj
IHZvaWQgc2VhcmNoTmV4dEJveEluU2FtZUxpbmUoY29uc3QgSW5saW5lVGV4dEJveCogdGV4dEJv
eCwgSW5saW5lVGV4dEJveComIG5leHRCb3gpCiB7Ci0gICAgaWYgKGJveC0+bmV4dExlYWZDaGls
ZCgpKQotICAgICAgICByZXR1cm4gYm94LT5uZXh0TGVhZkNoaWxkKCk7Ci0gICAgCi0gICAgY29u
c3QgUm9vdElubGluZUJveCogcm9vdEJveCA9IGJveC0+cm9vdCgpOwotICAgIGNvbnN0IGJvb2wg
aXNCbG9ja0xUUiA9IGJsb2NrRGlyZWN0aW9uID09IExUUjsKLSAgICBjb25zdCBJbmxpbmVGbG93
Qm94KiByaWdodExpbmVCb3ggPSBpc0Jsb2NrTFRSID8gcm9vdEJveC0+bmV4dExpbmVCb3goKSA6
IHJvb3RCb3gtPnByZXZMaW5lQm94KCk7Ci0gICAgaWYgKHJpZ2h0TGluZUJveCkKLSAgICAgICAg
cmV0dXJuIHJpZ2h0TGluZUJveC0+Zmlyc3RMZWFmQ2hpbGQoKTsKLQotICAgIGNvbnN0IFJvb3RJ
bmxpbmVCb3gqIHJpZ2h0Um9vdElubGluZUJveCA9IGlzQmxvY2tMVFIgPyBuZXh0Um9vdElubGlu
ZUJveChib3gpIDoKLSAgICAgICAgcHJldmlvdXNSb290SW5saW5lQm94KGJveCk7IAotICAgIHJl
dHVybiByaWdodFJvb3RJbmxpbmVCb3ggPyByaWdodFJvb3RJbmxpbmVCb3gtPmZpcnN0TGVhZkNo
aWxkKCkgOiAwOyAKLX0KLQotc3RhdGljIFZpc2libGVQb3NpdGlvbiBsZWZ0V29yZEJvdW5kYXJ5
KGNvbnN0IElubGluZUJveCogYm94LCBpbnQgb2Zmc2V0LCBUZXh0RGlyZWN0aW9uIGJsb2NrRGly
ZWN0aW9uKQotewotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0gICAgZm9yICAoY29u
c3QgSW5saW5lQm94KiBhZGphY2VudEJveCA9IGJveDsgYWRqYWNlbnRCb3g7IGFkamFjZW50Qm94
ID0gbGVmdElubGluZUJveChhZGphY2VudEJveCwgYmxvY2tEaXJlY3Rpb24pKSB7Ci0gICAgICAg
IGlmIChibG9ja0RpcmVjdGlvbiA9PSBMVFIpIHsKLSAgICAgICAgICAgIGlmIChhZGphY2VudEJv
eC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSAKLSAgICAgICAgICAgICAgICB3b3JkQnJlYWsg
PSBwcmV2aW91c1dvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBi
b3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB3b3JkQnJlYWsgPSBuZXh0V29yZEJvdW5kYXJ5SW5Cb3goYWRqYWNlbnRCb3gsIGFk
amFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRPZmZzZXQpOwotICAgICAgICB9IGVs
c2UgCi0gICAgICAgICAgICB3b3JkQnJlYWsgPSB2aXN1YWxseUxhc3RXb3JkQm91bmRhcnlJbkJv
eChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8gb2Zmc2V0IDogaW52YWxpZE9mZnNl
dCwgYmxvY2tEaXJlY3Rpb24pOyAgICAgICAgICAgIAotICAgICAgICBpZiAod29yZEJyZWFrLmlz
Tm90TnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsKKyAgICBWZWN0b3I8SW5s
aW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7CisgICAgdGV4dEJveC0+cm9vdCgpLT5j
b2xsZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXpl
KCk7ICsraSkgeworICAgICAgICBpZiAodGV4dEJveCA9PSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRl
cltpXSkgeworICAgICAgICAgICAgc2l6ZV90IGogPSBpICsgMTsKKyAgICAgICAgICAgIHdoaWxl
IChqIDwgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAg
aWYgKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2pdLT5pc0lubGluZVRleHRCb3goKSkgeworICAg
ICAgICAgICAgICAgICAgICBuZXh0Qm94ID0gdG9JbmxpbmVUZXh0Qm94KGxlYWZCb3hlc0luTG9n
aWNhbE9yZGVyW2pdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9
Ci0gICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogfQotIAotc3RhdGljIFZpc2libGVQb3Np
dGlvbiByaWdodFdvcmRCb3VuZGFyeShjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50IG9mZnNldCwg
VGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbikKKworc3RhdGljIHZvaWQgc2VhcmNoUHJldmlv
dXNCb3hJblByZXZpb3VzUm9vdElubGluZUJveChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2li
bGVQb3NpdGlvbiwgY29uc3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwKKyAgICBJbmxpbmVUZXh0
Qm94KiYgcHJldmlvdXNCb3gsIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQogewot
ICAgIAotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0gICAgZm9yIChjb25zdCBJbmxp
bmVCb3gqIGFkamFjZW50Qm94ID0gYm94OyBhZGphY2VudEJveDsgYWRqYWNlbnRCb3ggPSByaWdo
dElubGluZUJveChhZGphY2VudEJveCwgYmxvY2tEaXJlY3Rpb24pKSB7Ci0gICAgICAgIGlmIChi
bG9ja0RpcmVjdGlvbiA9PSBSVEwpIHsKLSAgICAgICAgICAgIGlmIChhZGphY2VudEJveC0+aXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IG5leHRX
b3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8gb2Zmc2V0
IDogaW52YWxpZE9mZnNldCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgd29y
ZEJyZWFrID0gcHJldmlvdXNXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRC
b3ggPT0gYm94ID8gb2Zmc2V0IDogaW52YWxpZE9mZnNldCk7Ci0gICAgICAgIH0gZWxzZSAKLSAg
ICAgICAgICAgIHdvcmRCcmVhayA9IHZpc3VhbGx5TGFzdFdvcmRCb3VuZGFyeUluQm94KGFkamFj
ZW50Qm94LCBhZGphY2VudEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0LCBibG9j
a0RpcmVjdGlvbik7ICAgICAgICAgICAgCi0gICAgICAgIGlmICghd29yZEJyZWFrLmlzTnVsbCgp
KQotICAgICAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsKKyAgICBOb2RlKiBoaWdoZXN0Um9vdCA9
IGhpZ2hlc3RFZGl0YWJsZVJvb3QodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCksIENv
bnRlbnRJc0VkaXRhYmxlKTsKKyAgICBjb25zdCBJbmxpbmVCb3gqIHN0YXJ0Qm94ID0gdGV4dEJv
eDsKKyAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7CisKKyAg
ICB3aGlsZSAoMSkgeyAKKyAgICAgICAgY29uc3QgUm9vdElubGluZUJveCogcHJldmlvdXNSb290
ID0gcHJldmlvdXNSb290SW5saW5lQm94KHN0YXJ0Qm94LCBoaWdoZXN0Um9vdCk7CisgICAgICAg
IGlmICghcHJldmlvdXNSb290KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgbGVhZkJv
eGVzSW5Mb2dpY2FsT3JkZXIuY2xlYXIoKTsKKyAgICAgICAgcHJldmlvdXNSb290LT5jb2xsZWN0
TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworICAgICAg
ICBpbnQgaSA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLnNpemUoKSAtIDE7CisgICAgICAgIGZv
ciAoOyBpID49MDsgLS1pKSB7CisgICAgICAgICAgICBpZiAobGVhZkJveGVzSW5Mb2dpY2FsT3Jk
ZXJbaV0tPmlzSW5saW5lVGV4dEJveCgpKSB7CisgICAgICAgICAgICAgICAgcHJldmlvdXNCb3gg
PSB0b0lubGluZVRleHRCb3gobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbaV0pOworICAgICAgICAg
ICAgICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSAwKQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5z
aXplKCkpCisgICAgICAgICAgICBzdGFydEJveCA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyWzBd
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOwogfQotICAgIAotc3RhdGljIGJvb2wgcG9zaXRpb25Jc0luQm94QnV0
Tm90T25Cb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHdvcmRCcmVhaywgY29uc3QgSW5s
aW5lQm94KiBib3gpCisKK3N0YXRpYyB2b2lkIHNlYXJjaE5leHRCb3hJbk5leHRSb290SW5saW5l
Qm94KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBjb25zdCBJbmxpbmVU
ZXh0Qm94KiB0ZXh0Qm94LAorICAgIElubGluZVRleHRCb3gqJiBuZXh0Qm94LCBib29sJiBuZXh0
Qm94SW5EaWZmZXJlbnRMaW5lKQogewotICAgIGludCBvZmZzZXRPZldvcmRCcmVhazsKLSAgICBy
ZXR1cm4gcG9zaXRpb25Jc0luQm94KHdvcmRCcmVhaywgYm94LCBvZmZzZXRPZldvcmRCcmVhaykK
LSAgICAgICAgJiYgb2Zmc2V0T2ZXb3JkQnJlYWsgIT0gYm94LT5jYXJldE1heE9mZnNldCgpICYm
IG9mZnNldE9mV29yZEJyZWFrICE9IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKKyAgICBOb2RlKiBo
aWdoZXN0Um9vdCA9IGhpZ2hlc3RFZGl0YWJsZVJvb3QodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVp
dmFsZW50KCksIENvbnRlbnRJc0VkaXRhYmxlKTsKKyAgICBjb25zdCBJbmxpbmVCb3gqIHN0YXJ0
Qm94ID0gdGV4dEJveDsKKyAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2Fs
T3JkZXI7CisKKyAgICB3aGlsZSAoMSkgeyAKKyAgICAgICAgY29uc3QgUm9vdElubGluZUJveCog
bmV4dFJvb3QgPSBuZXh0Um9vdElubGluZUJveChzdGFydEJveCwgaGlnaGVzdFJvb3QpOworICAg
ICAgICBpZiAoIW5leHRSb290KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgbGVhZkJv
eGVzSW5Mb2dpY2FsT3JkZXIuY2xlYXIoKTsKKyAgICAgICAgbmV4dFJvb3QtPmNvbGxlY3RMZWFm
Qm94ZXNJbkxvZ2ljYWxPcmRlcihsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcik7CisgICAgICAgIHNp
emVfdCBpID0gMDsKKyAgICAgICAgZm9yICg7IGkgPCBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2ld
LT5pc0lubGluZVRleHRCb3goKSkgeworICAgICAgICAgICAgICAgIG5leHRCb3ggPSB0b0lubGlu
ZVRleHRCb3gobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbaV0pOworICAgICAgICAgICAgICAgIG5l
eHRCb3hJbkRpZmZlcmVudExpbmUgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChpIDwgbGVhZkJveGVzSW5Mb2dpY2Fs
T3JkZXIuc2l6ZSgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChsZWFmQm94ZXNJ
bkxvZ2ljYWxPcmRlci5zaXplKCkpCisgICAgICAgICAgICBzdGFydEJveCA9IGxlYWZCb3hlc0lu
TG9naWNhbE9yZGVyWzBdOworICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICB9
CiB9CiAKLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRQb3NpdGlvbklnbm9yaW5nRWRp
dGluZ0JvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQorc3Rh
dGljIHZvaWQgY3JlYXRlV29yZEJyZWFrSXRlcmF0b3JGb3JNaW5PZmZzZXRCb3VuZGFyeShjb25z
dCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29uc3QgSW5saW5lVGV4dEJveCog
dGV4dEJveCwKKyAgICBUZXh0QnJlYWtJdGVyYXRvciomIGl0ZXIsIGludCYgcHJldmlvdXNCb3hM
ZW4sIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQogewotICAgIElubGluZUJveCog
Ym94OwotICAgIGludCBvZmZzZXQ7Ci0gICAgdmlzaWJsZVBvc2l0aW9uLmdldElubGluZUJveEFu
ZE9mZnNldChib3gsIG9mZnNldCk7CisgICAgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUgPSBm
YWxzZTsKIAotICAgIGlmICghYm94KQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7
CisgICAgLy8gVE9ETzogaG93IHNob3VsZCB3ZSBoYW5kbGUgbm9uLXRleHQgYm94PworICAgIElu
bGluZVRleHRCb3gqIHByZXZpb3VzQm94ID0gMDsKKyAgICBzZWFyY2hQcmV2aW91c0JveEluU2Ft
ZUxpbmUodGV4dEJveCwgcHJldmlvdXNCb3gpOwogCi0gICAgVGV4dERpcmVjdGlvbiBibG9ja0Rp
cmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2sodmlzaWJsZVBvc2l0aW9uLmRlZXBF
cXVpdmFsZW50KCkpOworICAgIGlmICghcHJldmlvdXNCb3gpCisgICAgICAgIHNlYXJjaFByZXZp
b3VzQm94SW5QcmV2aW91c1Jvb3RJbmxpbmVCb3godmlzaWJsZVBvc2l0aW9uLCB0ZXh0Qm94LCBw
cmV2aW91c0JveCwgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUpOwogCi0gICAgLy8gRklYTUU6
IElmIHRoZSBib3gncyBkaXJlY3Rpb25hbGl0eSBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIHRoZSBl
bmNsb3NpbmcgYmxvY2ssIHdoZW4gdGhlIG9mZnNldCBpcyBhdCB0aGUgYm94IGJvdW5kYXJ5Ci0g
ICAgLy8gYW5kIHRoZSBkaXJlY3Rpb24gaXMgdG93YXJkcyBpbnNpZGUgdGhlIGJveCwgZG8gSSBz
dGlsbCBuZWVkIHRvIG1ha2UgaXQgYSBzcGVjaWFsIGNhc2U/IEZvciBleGFtcGxlLCBhIExUUiBi
b3ggaW5zaWRlIGEgTFRSIGJsb2NrLAotICAgIC8vIHdoZW4gb2Zmc2V0IGlzIGF0IGJveCdzIGNh
cmV0TWluT2Zmc2V0IGFuZCB0aGUgZGlyZWN0aW9uIGlzIERpcmVjdGlvblJpZ2h0LCBzaG91bGQg
aXQgYmUgdGFrZW4gY2FyZSBhcyBhIGdlbmVyYWwgY2FzZT8KLSAgICBpZiAob2Zmc2V0ID09IGJv
eC0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgpKQotICAgICAgICByZXR1cm4gbGVmdFdvcmRCb3VuZGFy
eShsZWZ0SW5saW5lQm94KGJveCwgYmxvY2tEaXJlY3Rpb24pLCBpbnZhbGlkT2Zmc2V0LCBibG9j
a0RpcmVjdGlvbik7Ci0gICAgaWYgKG9mZnNldCA9PSBib3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0
KCkpCi0gICAgICAgIHJldHVybiBsZWZ0V29yZEJvdW5kYXJ5KGJveCwgb2Zmc2V0LCBibG9ja0Rp
cmVjdGlvbik7Ci0gICAgCi0gICAgCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAg
ICBpZiAoYmxvY2tEaXJlY3Rpb24gPT0gTFRSKSB7Ci0gICAgICAgIGlmIChib3gtPmRpcmVjdGlv
bigpID09IGJsb2NrRGlyZWN0aW9uKQotICAgICAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNC
b3VuZGFyeSh2aXNpYmxlUG9zaXRpb24sIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnkpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB3b3JkQnJlYWsgPSBuZXh0Qm91bmRhcnkodmlzaWJs
ZVBvc2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uQm91bmRhcnkpOworICAgIGludCBsZW4gPSAwOwor
ICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOworICAgIGlmIChwcmV2aW91c0JveCkgewor
ICAgICAgICBwcmV2aW91c0JveExlbiA9IHByZXZpb3VzQm94LT5sZW4oKTsKKyAgICAgICAgc3Ry
aW5nLmFwcGVuZChwcmV2aW91c0JveC0+dGV4dFJlbmRlcmVyKCktPnRleHQoKS0+Y2hhcmFjdGVy
cygpICsgcHJldmlvdXNCb3gtPnN0YXJ0KCksIHByZXZpb3VzQm94TGVuKTsgCisgICAgICAgIGxl
biArPSBwcmV2aW91c0JveExlbjsKICAgICB9Ci0gICAgaWYgKHdvcmRCcmVhay5pc05vdE51bGwo
KSAmJiBwb3NpdGlvbklzSW5Cb3hCdXROb3RPbkJvdW5kYXJ5KHdvcmRCcmVhaywgYm94KSkKLSAg
ICAgICAgcmV0dXJuIHdvcmRCcmVhazsKLSAgICAKLSAgICBXb3JkQm91bmRhcnlWZWN0b3Igb3Jk
ZXJlZFdvcmRCb3VuZGFyaWVzOwotICAgIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3goYm94LCBvcmRl
cmVkV29yZEJvdW5kYXJpZXMsIGJsb2NrRGlyZWN0aW9uKTsKKyAgICBzdHJpbmcuYXBwZW5kKHRl
eHRCb3gtPnRleHRSZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIHRleHRCb3gtPnN0
YXJ0KCksIHRleHRCb3gtPmxlbigpKTsKKyAgICBsZW4gKz0gdGV4dEJveC0+bGVuKCk7CiAKLSAg
ICBpbnQgaW5kZXggPSBib3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGdyZWF0ZXN0T2Zm
c2V0VW5kZXIob2Zmc2V0LCBibG9ja0RpcmVjdGlvbiA9PSBMVFIsIG9yZGVyZWRXb3JkQm91bmRh
cmllcykKLSAgICAgICAgOiBzbWFsbGVzdE9mZnNldEFib3ZlKG9mZnNldCwgYmxvY2tEaXJlY3Rp
b24gPT0gUlRMLCBvcmRlcmVkV29yZEJvdW5kYXJpZXMpOwotICAgIGlmIChpbmRleCA+PSAwKQot
ICAgICAgICByZXR1cm4gb3JkZXJlZFdvcmRCb3VuZGFyaWVzW2luZGV4XS52aXNpYmxlUG9zaXRp
b247Ci0gICAgCi0gICAgcmV0dXJuIGxlZnRXb3JkQm91bmRhcnkobGVmdElubGluZUJveChib3gs
IGJsb2NrRGlyZWN0aW9uKSwgaW52YWxpZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOwotfQorICAg
IGl0ZXIgPSB3b3JkQnJlYWtJdGVyYXRvcihzdHJpbmcuZGF0YSgpLCBsZW4pOworICAgIHRleHRC
cmVha0ZpcnN0KGl0ZXIpOworfSAKIAotc3RhdGljIFZpc2libGVQb3NpdGlvbiByaWdodFdvcmRQ
b3NpdGlvbklnbm9yaW5nRWRpdGluZ0JvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlz
aWJsZVBvc2l0aW9uKQorc3RhdGljIHZvaWQgY3JlYXRlV29yZEJyZWFrSXRlcmF0b3JGb3JNYXhP
ZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29u
c3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwKKyAgICBUZXh0QnJlYWtJdGVyYXRvciomIGl0ZXIs
IGJvb2wmIG5leHRCb3hJbkRpZmZlcmVudExpbmUpCiB7Ci0gICAgSW5saW5lQm94KiBib3g7Ci0g
ICAgaW50IG9mZnNldDsKLSAgICB2aXNpYmxlUG9zaXRpb24uZ2V0SW5saW5lQm94QW5kT2Zmc2V0
KGJveCwgb2Zmc2V0KTsKKyAgICBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CisKKyAg
ICAvLyBUT0RPOiBob3cgc2hvdWxkIHdlIGhhbmRsZSBub24tdGV4dCBib3g/CisgICAgSW5saW5l
VGV4dEJveCogbmV4dEJveCA9IDA7CisgICAgc2VhcmNoTmV4dEJveEluU2FtZUxpbmUodGV4dEJv
eCwgbmV4dEJveCk7CisKKyAgICBpZiAoIW5leHRCb3gpCisgICAgICAgIHNlYXJjaE5leHRCb3hJ
bk5leHRSb290SW5saW5lQm94KHZpc2libGVQb3NpdGlvbiwgdGV4dEJveCwgbmV4dEJveCwgbmV4
dEJveEluRGlmZmVyZW50TGluZSk7CiAKLSAgICBpZiAoIWJveCkKKyAgICBpbnQgbGVuID0gMDsK
KyAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IHN0cmluZzsKKyAgICBzdHJpbmcuYXBwZW5kKHRleHRC
b3gtPnRleHRSZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIHRleHRCb3gtPnN0YXJ0
KCksIHRleHRCb3gtPmxlbigpKTsKKyAgICBsZW4gKz0gdGV4dEJveC0+bGVuKCk7CisgICAgaWYg
KG5leHRCb3gpIHsKKyAgICAgICAgc3RyaW5nLmFwcGVuZChuZXh0Qm94LT50ZXh0UmVuZGVyZXIo
KS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBuZXh0Qm94LT5zdGFydCgpLCBuZXh0Qm94LT5sZW4o
KSk7IAorICAgICAgICBsZW4gKz0gbmV4dEJveC0+bGVuKCk7CisgICAgfQorCisgICAgaXRlciA9
IHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5kYXRhKCksIGxlbik7CisgICAgdGV4dEJyZWFrRmly
c3QoaXRlcik7Cit9IAorCitlbnVtIEVDdXJzb3JNb3ZlbWVudERpcmVjdGlvbgoreworICAgIE1P
VkVfTEVGVCwgTU9WRV9SSUdIVCwKK307CisKK3N0YXRpYyBWaXNpYmxlUG9zaXRpb24gd29yZFBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBFQ3Vyc29yTW92
ZW1lbnREaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKIAogICAgIFRleHREaXJl
Y3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQ
b3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICBJbmxpbmVCb3gqIHByZXZpb3VzbHlWaXNp
dGVkQm94ID0gMDsKKyAgICBWaXNpYmxlUG9zaXRpb24gY3VycmVudCA9IHZpc2libGVQb3NpdGlv
bjsKKyAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcjsKKworICAgIHdoaWxlICgxKSB7CisgICAg
ICAgIFZpc2libGVQb3NpdGlvbiBhZGphY2VudEJ5Q2hhcmFjdGVyID0gZGlyZWN0aW9uID09IE1P
VkVfUklHSFQgPyBjdXJyZW50LnJpZ2h0KHRydWUpIDogY3VycmVudC5sZWZ0KHRydWUpOyAKKyAg
ICAgICAgaWYgKGFkamFjZW50QnlDaGFyYWN0ZXIgPT0gY3VycmVudCB8fCBhZGphY2VudEJ5Q2hh
cmFjdGVyLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwor
ICAgIAorICAgICAgICBJbmxpbmVCb3gqIGJveDsKKyAgICAgICAgaW50IG9mZnNldDsKKyAgICAg
ICAgYWRqYWNlbnRCeUNoYXJhY3Rlci5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoYm94LCBvZmZzZXQp
OworICAgIAorICAgICAgICAvLyBUT0RPOiBob3cgc2hvdWxkIHdlIGhhbmRsZSBub24gdGV4dCBi
b3g/CisgICAgICAgIGlmICghYm94IHx8ICFib3gtPmlzSW5saW5lVGV4dEJveCgpKQorICAgICAg
ICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOworCisgICAgICAgIElubGluZVRleHRCb3gq
IHRleHRCb3ggPSB0b0lubGluZVRleHRCb3goYm94KTsKKyAgICAgICAgaW50IHByZXZpb3VzQm94
TGVuID0gMDsKKyAgICAgICAgYm9vbCBwcmV2aW91c0JveEluRGlmZmVyZW50TGluZSA9IGZhbHNl
OworICAgICAgICBib29sIG5leHRCb3hJbkRpZmZlcmVudExpbmUgPSBmYWxzZTsKKworICAgICAg
ICBpZiAob2Zmc2V0ID09IGJveC0+Y2FyZXRNaW5PZmZzZXQoKSkKKyAgICAgICAgICAgIGNyZWF0
ZVdvcmRCcmVha0l0ZXJhdG9yRm9yTWluT2Zmc2V0Qm91bmRhcnkodmlzaWJsZVBvc2l0aW9uLCB0
ZXh0Qm94LCBpdGVyLCBwcmV2aW91c0JveExlbiwgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUp
OworICAgICAgICBlbHNlIGlmIChvZmZzZXQgPT0gYm94LT5jYXJldE1heE9mZnNldCgpKQorICAg
ICAgICAgICAgY3JlYXRlV29yZEJyZWFrSXRlcmF0b3JGb3JNYXhPZmZzZXRCb3VuZGFyeSh2aXNp
YmxlUG9zaXRpb24sIHRleHRCb3gsIGl0ZXIsIG5leHRCb3hJbkRpZmZlcmVudExpbmUpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChwcmV2aW91c2x5VmlzaXRlZEJveCAhPSBib3gp
IHsKKyAgICAgICAgICAgICAgICBpdGVyID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dEJveC0+dGV4
dFJlbmRlcmVyKCktPnRleHQoKS0+Y2hhcmFjdGVycygpICsgdGV4dEJveC0+c3RhcnQoKSwgdGV4
dEJveC0+bGVuKCkpOworICAgICAgICAgICAgICAgIHRleHRCcmVha0ZpcnN0KGl0ZXIpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcHJldmlvdXNseVZpc2l0ZWRCb3ggPSBib3g7CisgICAg
ICAgIH0KICAgICAKLSAgICBpZiAob2Zmc2V0ID09IGJveC0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgp
KQotICAgICAgICByZXR1cm4gcmlnaHRXb3JkQm91bmRhcnkoYm94LCBvZmZzZXQsIGJsb2NrRGly
ZWN0aW9uKTsKLSAgICBpZiAob2Zmc2V0ID09IGJveC0+Y2FyZXRSaWdodG1vc3RPZmZzZXQoKSkK
LSAgICAgICAgcmV0dXJuIHJpZ2h0V29yZEJvdW5kYXJ5KHJpZ2h0SW5saW5lQm94KGJveCwgYmxv
Y2tEaXJlY3Rpb24pLCBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7Ci0gCi0gICAgVmlz
aWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBpZiAoYmxvY2tEaXJlY3Rpb24gPT0gUlRMKSB7
Ci0gICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0aW9uKQotICAgICAg
ICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNCb3VuZGFyeSh2aXNpYmxlUG9zaXRpb24sIHByZXZp
b3VzV29yZFBvc2l0aW9uQm91bmRhcnkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3b3Jk
QnJlYWsgPSBuZXh0Qm91bmRhcnkodmlzaWJsZVBvc2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uQm91
bmRhcnkpOwotICAgIH0KLSAgICBpZiAod29yZEJyZWFrLmlzTm90TnVsbCgpICYmIHBvc2l0aW9u
SXNJbkJveEJ1dE5vdE9uQm91bmRhcnkod29yZEJyZWFrLCBib3gpKQotICAgICAgICByZXR1cm4g
d29yZEJyZWFrOwotICAgIAotICAgIFdvcmRCb3VuZGFyeVZlY3RvciBvcmRlcmVkV29yZEJvdW5k
YXJpZXM7Ci0gICAgY29sbGVjdFdvcmRCcmVha3NJbkJveChib3gsIG9yZGVyZWRXb3JkQm91bmRh
cmllcywgYmxvY2tEaXJlY3Rpb24pOwotICAgIAotICAgIGludCBpbmRleCA9IGJveC0+aXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpID8gc21hbGxlc3RPZmZzZXRBYm92ZShvZmZzZXQsIGJsb2NrRGly
ZWN0aW9uID09IExUUiwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKQotICAgICAgICA6IGdyZWF0ZXN0
T2Zmc2V0VW5kZXIob2Zmc2V0LCBibG9ja0RpcmVjdGlvbiA9PSBSVEwsIG9yZGVyZWRXb3JkQm91
bmRhcmllcyk7Ci0gICAgaWYgKGluZGV4ID49IDApCi0gICAgICAgIHJldHVybiBvcmRlcmVkV29y
ZEJvdW5kYXJpZXNbaW5kZXhdLnZpc2libGVQb3NpdGlvbjsKKyAgICAgICAgYm9vbCBpc1dvcmRC
cmVhayA9IChib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0aW9uKSA/CisgICAgICAgICAg
ICBpc1N0YXJ0T2ZXb3JkKGl0ZXIsIG9mZnNldCAtIHRleHRCb3gtPnN0YXJ0KCkgKyBwcmV2aW91
c0JveExlbiwKKyAgICAgICAgICAgICAgICBvZmZzZXQgPT0gKGludCl0ZXh0Qm94LT5zdGFydCgp
ICYmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKSA6CisgICAgICAgICAgICBpc0VuZE9mV29y
ZChpdGVyLCBvZmZzZXQgLSB0ZXh0Qm94LT5zdGFydCgpICsgcHJldmlvdXNCb3hMZW4sCisgICAg
ICAgICAgICAgICAgb2Zmc2V0ID09IChpbnQpKHRleHRCb3gtPnN0YXJ0KCkgKyB0ZXh0Qm94LT5s
ZW4oKSkgJiYgbmV4dEJveEluRGlmZmVyZW50TGluZSk7CisgICAgICAgIGlmIChpc1dvcmRCcmVh
aykKKyAgICAgICAgICAgIHJldHVybiBhZGphY2VudEJ5Q2hhcmFjdGVyOwogICAgIAotICAgIHJl
dHVybiByaWdodFdvcmRCb3VuZGFyeShyaWdodElubGluZUJveChib3gsIGJsb2NrRGlyZWN0aW9u
KSwgaW52YWxpZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOworICAgICAgICBjdXJyZW50ID0gYWRq
YWNlbnRCeUNoYXJhY3RlcjsKKyAgICB9CisgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwog
fQogCiBWaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHZpc2libGVQb3NpdGlvbikKIHsKLSAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgp
KQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0KLSAgICBWaXNpYmxlUG9zaXRp
b24gbGVmdFdvcmRCcmVhayA9IGxlZnRXb3JkUG9zaXRpb25JZ25vcmluZ0VkaXRpbmdCb3VuZGFy
eSh2aXNpYmxlUG9zaXRpb24pOwotICAgIGxlZnRXb3JkQnJlYWsgPSB2aXNpYmxlUG9zaXRpb24u
aG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQmVmb3JlKGxlZnRXb3JkQnJlYWspOworICAgIFZpc2li
bGVQb3NpdGlvbiBsZWZ0V29yZEJyZWFrID0gd29yZFBvc2l0aW9uKHZpc2libGVQb3NpdGlvbiwg
TU9WRV9MRUZUKTsKICAgICAKICAgICAvLyBGSVhNRTogSG93IHNob3VsZCB3ZSBoYW5kbGUgYSBu
b24tZWRpdGFibGUgcG9zaXRpb24/CiAgICAgaWYgKGxlZnRXb3JkQnJlYWsuaXNOdWxsKCkgJiYg
aXNFZGl0YWJsZVBvc2l0aW9uKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKSkgewpA
QCAtMTYyNCwxMSArMTM4Niw3IEBAIFZpc2libGVQb3NpdGlvbiBsZWZ0V29yZFBvc2l0aW9uKGNv
bnN0IFYKIAogVmlzaWJsZVBvc2l0aW9uIHJpZ2h0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQogewotICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLQotICAgIFZpc2libGVQ
b3NpdGlvbiByaWdodFdvcmRCcmVhayA9IHJpZ2h0V29yZFBvc2l0aW9uSWdub3JpbmdFZGl0aW5n
Qm91bmRhcnkodmlzaWJsZVBvc2l0aW9uKTsKLSAgICByaWdodFdvcmRCcmVhayA9IHZpc2libGVQ
b3NpdGlvbi5ob25vckVkaXRpbmdCb3VuZGFyeUF0T3JCZWZvcmUocmlnaHRXb3JkQnJlYWspOwor
ICAgIFZpc2libGVQb3NpdGlvbiByaWdodFdvcmRCcmVhayA9IHdvcmRQb3NpdGlvbih2aXNpYmxl
UG9zaXRpb24sIE1PVkVfUklHSFQpOwogCiAgICAgLy8gRklYTUU6IEhvdyBzaG91bGQgd2UgaGFu
ZGxlIGEgbm9uLWVkaXRhYmxlIHBvc2l0aW9uPwogICAgIGlmIChyaWdodFdvcmRCcmVhay5pc051
bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50
KCkpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJl
YWtJdGVyYXRvci5oCShyZXZpc2lvbiAxMDY1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGludCB0ZXh0QnJlYWtQcmVjZWRpbmcoVGV4dEJy
ZWFrSXRlcmF0b3IqLCBpbnQpOwogICAgIGludCB0ZXh0QnJlYWtGb2xsb3dpbmcoVGV4dEJyZWFr
SXRlcmF0b3IqLCBpbnQpOwogICAgIGJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3Iq
LCBpbnQpOworICAgIGJvb2wgaXNXb3JkVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKik7CiAK
ICAgICBjb25zdCBpbnQgVGV4dEJyZWFrRG9uZSA9IC0xOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcAkocmV2
aXNpb24gMTA2NTAzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJ
dGVyYXRvcklDVS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw2ICsxMzcsMTIgQEAgYm9vbCBp
c1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciogaXRlcgogICAgIHJldHVybiB1YnJrX2lzQm91
bmRhcnkocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9zaXRp
b24pOwogfQogCitib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0
b3IpCit7CisgICAgaW50IHJ1bGVTdGF0dXMgPSB1YnJrX2dldFJ1bGVTdGF0dXMocmVpbnRlcnBy
ZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7CisgICAgcmV0dXJuIHJ1bGVTdGF0
dXMgIT0gVUJSS19XT1JEX05PTkU7Cit9CisKIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0
VXBJdGVyYXRvcldpdGhSdWxlcyhib29sJiBjcmVhdGVkSXRlcmF0b3IsIFRleHRCcmVha0l0ZXJh
dG9yKiYgaXRlcmF0b3IsCiAgICAgY29uc3QgY2hhciogYnJlYWtSdWxlcywgY29uc3QgVUNoYXIq
IHN0cmluZywgaW50IGxlbmd0aCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9yR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckd0ay5jcHAJKHJldmlzaW9u
IDEwNjUwMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVha0l0
ZXJhdG9yR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg1LDQgKzM4NSw5IEBAIGJvb2wgaXNU
ZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIKICAgICByZXR1cm4gaXRlcmF0b3ItPm1f
Y2hhckl0ZXJhdG9yLmdldEluZGV4KCkgPT0gaW5kZXg7CiB9CiAKK2Jvb2wgaXNXb3JkVGV4dEJy
ZWFrKFRleHRCcmVha0l0ZXJhdG9yKikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3F0L1RleHRCcmVh
a0l0ZXJhdG9yUXQuY3BwCShyZXZpc2lvbiAxMDY1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L3F0L1RleHRCcmVha0l0ZXJhdG9yUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTAsNCArMTUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKKyAgICBib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciopCisg
ICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvd2luY2UvVGV4dEJyZWFrSXRlcmF0b3JXaW5DRS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW5jZS9UZXh0QnJlYWtJdGVy
YXRvcldpbkNFLmNwcAkocmV2aXNpb24gMTA2NTAzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC93aW5jZS9UZXh0QnJlYWtJdGVyYXRvcldpbkNFLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzE3LDYgKzMxNywxMSBAQCBib29sIGlzVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiwg
aW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgaXNXb3JkVGV4dEJyZWFrKFRleHRCcmVh
a0l0ZXJhdG9yKikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogVGV4dEJyZWFrSXRlcmF0b3Iq
IGN1cnNvck1vdmVtZW50SXRlcmF0b3IoY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkK
IHsKICAgICByZXR1cm4gY2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmcsIGxlbmd0aCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMDgwMDUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMi0xNiAgWGlhb21laSBKaSAgPHhqaUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNpbmcgSUNVIGJyZWFrIGl0ZXJhdG9yIHRvIHNpbXBs
aWZ5IHZpc3VhbCB3b3JkIG1vdmVtZW50IGltcGxlbWVudGF0aW9uLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg4NTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL21vdmUt
Ynktd29yZC12aXN1YWxseS1pbmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHkt
aW5saW5lLWJsb2NrLXBvc2l0aW9uZWQtZWxlbWVudC5odG1sOgorICAgICAgICAqIGVkaXRpbmcv
c2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1saW5lLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktbXVsdGkt
bGluZS5odG1sOgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1
YWxseS1zaW5nbGUtc3BhY2UtaW5saW5lLWVsZW1lbnQtZXhwZWN0ZWQudHh0OgorCiAyMDEyLTAy
LTE2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBVbnJldmlld2VkIGJhc2VsaW5lIHVwZGF0ZSBmb3IgY29tcG9zaXRpbmcvc2Nyb2xs
YmFyLXBhaW50aW5nLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21v
dmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3Zl
LWJ5LXdvcmQtdmlzdWFsbHktaW5saW5lLWJsb2NrLXBvc2l0aW9uZWQtZWxlbWVudC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDEwNjUwMykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L21vdmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwzNyArMiwzNyBAQAogPT09PT09PT0gTW92
ZSBCeSBXb3JkID09PT0KIFRlc3QgMSwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAotImJl
Z2luIHN0YXJ0IlswLCA2XSwgImFiYyBkZWYiWzAsIDRdLCAiZW5kIGluZyJbMCwgNF0sICJ0aGlz
IGlzIGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzUsIDhdLCAidGhpcyBpcyByZWxh
dGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KKyJiZWdpbiBz
dGFydCJbMCwgNl0sICJhYmMgZGVmIlswLCA0XSwgImVuZCBpbmciWzAsIDRdLCAidGhpcyBpcyBm
bG9hdCJbMCwgNSwgOF0sICJ0aGlzIGlzIGZpeGVkIlswLCA1LCA4XSwgInRoaXMgaXMgcmVsYXRp
dmUiWzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCiBNb3ZlIGxlZnQg
Ynkgb25lIHdvcmQKLSJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJl
bGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDVdLCAidGhpcyBpcyBmbG9hdCJb
OCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQi
WzYsIDBdCisidGhpcyBpcyBhYnNvbHV0ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2
ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4LCA1LCAwXSwgInRoaXMgaXMgZmxvYXQiWzgs
IDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2
LCAwXQogVGVzdCAyLCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiJbMCwg
NF0sICJlbmQgaW5nIlswLCA0XSwgInRoaXMgaXMgZmxvYXQiWzAsIDUsIDhdLCAidGhpcyBpcyBm
aXhlZCJbNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4XSwgInRoaXMgaXMgYWJzb2x1
dGUiWzAsIDUsIDgsIDE2XQorImFiYyBkZWYiWzAsIDRdLCAiZW5kIGluZyJbMCwgNF0sICJ0aGlz
IGlzIGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzAsIDUsIDhdLCAidGhpcyBpcyBy
ZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUg
bGVmdCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMg
aXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZs
b2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBz
dGFydCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJl
bGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9h
dCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3Rh
cnQiWzYsIDBdCiBUZXN0IDMsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJlbmQgaW5n
IlswLCA0XSwgInRoaXMgaXMgZmxvYXQiWzAsIDUsIDhdLCAidGhpcyBpcyBmaXhlZCJbNSwgOF0s
ICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4XSwgInRoaXMgaXMgYWJzb2x1dGUiWzAsIDUsIDgs
IDE2XQorImVuZCBpbmciWzAsIDRdLCAidGhpcyBpcyBmbG9hdCJbMCwgNSwgOF0sICJ0aGlzIGlz
IGZpeGVkIlswLCA1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUiWzAsIDUsIDhdLCAidGhpcyBpcyBh
YnNvbHV0ZSJbMCwgNSwgOCwgMTZdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJ0aGlzIGlzIGFi
c29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMg
aXMgZml4ZWQiWzgsIDVdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAw
XSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCisidGhpcyBpcyBhYnNvbHV0
ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZp
eGVkIls4LCA1LCAwXSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0s
ICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQogVGVzdCA0LCBMVFI6CiBNb3Zl
IHJpZ2h0IGJ5IG9uZSB3b3JkCi0idGhpcyBpcyBmbG9hdCJbMCwgNSwgOF0sICJ0aGlzIGlzIGZp
eGVkIls1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUiWzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0
ZSJbMCwgNSwgOCwgMTZdCisidGhpcyBpcyBmbG9hdCJbMCwgNSwgOF0sICJ0aGlzIGlzIGZpeGVk
IlswLCA1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUiWzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0
ZSJbMCwgNSwgOCwgMTZdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJ0aGlzIGlzIGFic29sdXRl
IlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4
ZWQiWzgsIDVdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFi
YyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCisidGhpcyBpcyBhYnNvbHV0ZSJbMTYs
IDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4
LCA1LCAwXSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMg
ZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQogVGVzdCA1LCBMVFI6CiBNb3ZlIHJpZ2h0
IGJ5IG9uZSB3b3JkCiAidGhpcyBpcyBmaXhlZCJbMCwgNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZl
IlswLCA1LCA4XSwgInRoaXMgaXMgYWJzb2x1dGUiWzAsIDUsIDgsIDE2XQogTW92ZSBsZWZ0IGJ5
IG9uZSB3b3JkCi0idGhpcyBpcyBhYnNvbHV0ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxh
dGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4LCA1XSwgInRoaXMgaXMgZmxvYXQiWzgs
IDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2
LCAwXQorInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUi
WzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNSwgMF0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1
LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwg
MF0KIFRlc3QgNiwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAogInRoaXMgaXMgcmVsYXRp
dmUiWzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCiBNb3ZlIGxlZnQg
Ynkgb25lIHdvcmQKLSJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJl
bGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDVdLCAidGhpcyBpcyBmbG9hdCJb
OCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQi
WzYsIDBdCisidGhpcyBpcyBhYnNvbHV0ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2
ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4LCA1LCAwXSwgInRoaXMgaXMgZmxvYXQiWzgs
IDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2
LCAwXQogVGVzdCA3LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCiAidGhpcyBpcyBhYnNv
bHV0ZSJbMCwgNSwgOCwgMTZdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJ0aGlzIGlzIGFic29s
dXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMg
Zml4ZWQiWzgsIDVdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwg
ImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCisidGhpcyBpcyBhYnNvbHV0ZSJb
MTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVk
Ils4LCA1LCAwXSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJh
YmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQogCkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktaW5saW5lLWJsb2NrLXBvc2l0
aW9uZWQtZWxlbWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVt
ZW50Lmh0bWwJKHJldmlzaW9uIDEwNjUwMykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE3LDM4ICsxNywzOCBAQCBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CiAKIDxkaXYgaWQ9InRlc3RNb3ZlQnlXb3JkIiBjb250ZW50ZWRp
dGFibGUgc3R5bGU9IndpZHRoOjIwMDBweDsgaGVpZ2h0OjIwMDBweCI+CiA8ZGl2IGlkPSJkXzEi
IGRpcj1sdHIgCi10aXRsZT0iW2RfMSwgMF1bZF8xLCA2XVtkXzIsIDBdW2RfMiwgNF1bZF8zLCAw
XVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2RfNSwgNV1bZF81LCA4XVtkXzYsIDBd
W2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywgNV1bZF83LCA4XVtkXzcsIDE2XXwKLVtkXzcs
IDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUs
IDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwg
NF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAordGl0bGU9IltkXzEsIDBdW2RfMSwgNl1bZF8y
LCAwXVtkXzIsIDRdW2RfMywgMF1bZF8zLCA0XVtkXzQsIDBdW2RfNCwgNV1bZF80LCA4XVtkXzUs
IDBdW2RfNSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywg
NV1bZF83LCA4XVtkXzcsIDE2XXwKK1tkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtk
XzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF81LCAwXVtkXzQsIDhdW2Rf
NCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1bZF8x
LCAwXSIgCiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiPmJlZ2luIHN0YXJ0PC9kaXY+CiAKIDxk
aXYgaWQ9ImRfMiIgZGlyPWx0ciAKLXRpdGxlPSJbZF8yLCAwXVtkXzIsIDRdW2RfMywgMF1bZF8z
LCA0XVtkXzQsIDBdW2RfNCwgNV1bZF80LCA4XVtkXzUsIDVdW2RfNSwgOF1bZF82LCAwXVtkXzYs
IDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAxNl18Ci1bZF83LCAxNl1b
ZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1bZF81LCA4XVtk
XzUsIDVdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2Rf
MiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKK3RpdGxlPSJbZF8yLCAwXVtkXzIsIDRdW2RfMywgMF1b
ZF8zLCA0XVtkXzQsIDBdW2RfNCwgNV1bZF80LCA4XVtkXzUsIDBdW2RfNSwgNV1bZF81LCA4XVtk
XzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywgNV1bZF83LCA4XVtkXzcsIDE2XXwK
K1tkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAw
XVtkXzUsIDhdW2RfNSwgNV1bZF81LCAwXVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRd
W2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9t
b3ZlX2J5X3dvcmQiIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jayI+YWJjIGRlZjwvZGl2Pgog
CiA8ZGl2IGlkPSJkXzMiIGRpcj1sdHIgCi10aXRsZT0iW2RfMywgMF1bZF8zLCA0XVtkXzQsIDBd
W2RfNCwgNV1bZF80LCA4XVtkXzUsIDVdW2RfNSwgOF1bZF82LCAwXVtkXzYsIDVdW2RfNiwgOF1b
ZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAxNl18Ci1bZF83LCAxNl1bZF83LCA4XVtkXzcs
IDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNCwg
OF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2
XVtkXzEsIDBdIiAKK3RpdGxlPSJbZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQs
IDhdW2RfNSwgMF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywg
MF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAorW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtk
XzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2Rf
NCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8x
LCA2XVtkXzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCI+ZW5kIGluZzwvZGl2Pgog
CiA8ZGl2IGlkPSJkXzQiIGRpcj1sdHIgCi10aXRsZT0iW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhd
W2RfNSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywgNV1b
ZF83LCA4XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYs
IDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2RfNCwg
MF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAordGl0
bGU9IltkXzQsIDBdW2RfNCwgNV1bZF80LCA4XVtkXzUsIDBdW2RfNSwgNV1bZF81LCA4XVtkXzYs
IDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywgNV1bZF83LCA4XVtkXzcsIDE2XXwKK1tk
XzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtk
XzUsIDhdW2RfNSwgNV1bZF81LCAwXVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2Rf
MywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9tb3Zl
X2J5X3dvcmQiIHN0eWxlPSJmbG9hdDpsZWZ0Ij50aGlzIGlzIGZsb2F0PC9kaXY+CiAKIDxkaXYg
aWQ9ImRfNSIgZGlyPWx0ciAKIHRpdGxlPSJbZF81LCAwXVtkXzUsIDVdW2RfNSwgOF1bZF82LCAw
XVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAxNl18Ci1bZF83
LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1bZF81
LCA4XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIs
IDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKK1tkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1b
ZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF81LCAwXVtk
XzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2Rf
MSwgNl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHN0eWxlPSJwb3NpdGlv
bjpmaXhlZDsgdG9wOjMwcHg7IHJpZ2h0OjVweCI+dGhpcyBpcyBmaXhlZDwvZGl2PgogCiA8ZGl2
IGlkPSJkXzYiIGRpcj1sdHIgCiB0aXRsZT0iW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywg
MF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAotW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtk
XzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzQsIDhdW2Rf
NCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1bZF8x
LCAwXSIgCitbZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVd
W2RfNiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNSwgMF1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1b
ZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAogY2xhc3M9
InRlc3RfbW92ZV9ieV93b3JkIiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6MjBweCI+
dGhpcyBpcyByZWxhdGl2ZTwvZGl2PgogCiA8ZGl2IGlkPSJkXzciIGRpcj1sdHIgCiB0aXRsZT0i
W2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAotW2RfNywgMTZdW2RfNywgOF1bZF83
LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzQs
IDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwg
Nl1bZF8xLCAwXSIgCitbZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtk
XzYsIDVdW2RfNiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNSwgMF1bZF80LCA4XVtkXzQsIDVdW2Rf
NCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAog
Y2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6
MTAwcHg7IHRvcDoxNTBweCI+dGhpcyBpcyBhYnNvbHV0ZTwvZGl2PgogCiA8L2Rpdj4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0
aS1saW5lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktbXVsdGktbGluZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDEwNjUwMykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnkt
d29yZC12aXN1YWxseS1tdWx0aS1saW5lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MzcsMTEgKzM3LDkgQEAgTW92ZSByaWdodCBieSBvbmUgd29yZAogIm9wcSByc3QgdXZ3IHh5eiJb
MTUsIDExLCA4LCAzLCAwXSwgImFiYyBkZWYgZ2hpIGprbCBtbiAiWzE2LCAxMSwgOCwgMywgMF0K
IFRlc3QgOCwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiBnaGkgamtsIG1u
ICJbMCwgMywgOCwgMTEsIDE2LCAxOF0sICJvcHEgcnN0IHV2dyB4eXoiWzAsIDMsIDgsIDExLCAx
NV0gICAgRkFJTCBleHBlY3RlZDogWyJhYmMgZGVmIGdoaSBqa2wgbW4gIlsgMCwgIDMsICA4LCAg
MTEsICAxNiwgXSJvcHEgcnN0IHV2dyB4eXoiWyAwLCAgMywgIDgsICAxMSwgIDE1XQotImFiYyBk
ZWYgZ2hpIGprbCBtbiAiWzE2LCAxOF0gICBGQUlMIGV4cGVjdGVkICJvcHEgcnN0IHV2dyB4eXoi
WyAwXQotImFiYyBkZWYgZ2hpIGprbCBtbiAiWzE3LCAxOF0gICBGQUlMIGV4cGVjdGVkICJvcHEg
cnN0IHV2dyB4eXoiWyAwXQorImFiYyBkZWYgZ2hpIGprbCBtbiAiWzAsIDMsIDgsIDExLCAxNl0s
ICJvcHEgcnN0IHV2dyB4eXoiWzAsIDMsIDgsIDExLCAxNV0KIE1vdmUgcmlnaHQgYnkgb25lIHdv
cmQKLSJvcHEgcnN0IHV2dyB4eXoiWzE1LCAxMSwgOCwgMywgMF0sICJhYmMgZGVmIGdoaSBqa2wg
bW4gIlsxOCwgMTYsIDExLCA4LCAzLCAwXQorIm9wcSByc3QgdXZ3IHh5eiJbMTUsIDExLCA4LCAz
LCAwXSwgImFiYyBkZWYgZ2hpIGprbCBtbiAiWzE2LCAxMSwgOCwgMywgMF0KIFRlc3QgOSwgUlRM
OgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCiAiQUFBIEFBQSBBQUEgQUFBICJbMCwgNCwgOCwgMTJd
LCAiQUFBIEFBQSBBQUEgQUFBIlswLCA0LCA4LCAxMiwgMTVdCkBAIC01OSwyMyArNTcsMzAgQEAg
TW92ZSByaWdodCBieSBvbmUgd29yZAogIkFBQSBraiBBQUEgbW4gb3BxIEFBQSBBQUEiWzI1LCAy
MiwgMTgsIDE0LCAxMSwgNywgNCwgMF0sICIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2
dyB4eXogIlszMywgMjksIDI1LCAyMSwgMTcsIDEzLCA5LCA0LCAxXQogVGVzdCAxMiwgUlRMOgog
TW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iIGFiYyBkZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncg
eHl6ICJbMSwgNCwgOSwgMTMsIDE3LCAyMSwgMjUsIDI5LCAzMywgMzZdLCAiQUFBIGtqIEFBQSBt
biBvcHEgQUFBIEFBQSJbMCwgNCwgNywgMTEsIDE0LCAxOCwgMjIsIDI1XSAgICBGQUlMIGV4cGVj
dGVkOiBbIiBhYmMgZGVmIEFBQSBBQUEgaGlqIEFBQSBBQUEgdXZ3IHh5eiAiWyAxLCAgNCwgIDks
ICAxMywgIDE3LCAgMjEsICAyNSwgIDI5LCAgMzMsIF0iQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFB
QSJbIDAsICA0LCAgNywgIDExLCAgMTQsICAxOCwgIDIyLCAgMjVdCi0iIGFiYyBkZWYgQUFBIEFB
QSBoaWogQUFBIEFBQSB1dncgeHl6ICJbMzMsIDM2XSAgIEZBSUwgZXhwZWN0ZWQgIkFBQSBraiBB
QUEgbW4gb3BxIEFBQSBBQUEiWyAwXQotIiBhYmMgZGVmIEFBQSBBQUEgaGlqIEFBQSBBQUEgdXZ3
IHh5eiAiWzM1LCAzNl0gICBGQUlMIGV4cGVjdGVkICJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFB
IlsgMF0KLSIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlszNCwgMzZdICAg
RkFJTCBleHBlY3RlZCAiQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFBQSJbIDBdCisiIGFiYyBkZWYg
QUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJbMSwgNCwgOSwgMTMsIDE3LCAyMSwgMjUsIDI5
LCAzM10sICJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlswLCA0LCA3LCAxMSwgMTQsIDE4LCAy
MiwgMjVdCiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFB
QSJbMjUsIDIyLCAxOCwgMTQsIDExLCA3LCA0LCAwXSwgIiBhYmMgZGVmIEFBQSBBQUEgaGlqIEFB
QSBBQUEgdXZ3IHh5eiAiWzM2LCAzMywgMjksIDI1LCAyMSwgMTcsIDEzLCA5LCA0LCAxXQorIkFB
QSBraiBBQUEgbW4gb3BxIEFBQSBBQUEiWzI1LCAyMiwgMTgsIDE0LCAxMSwgNywgNCwgMF0sICIg
YWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlszMywgMjksIDI1LCAyMSwgMTcs
IDEzLCA5LCA0LCAxXQogVGVzdCAxMywgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAotImFi
YyBkZWYgIlswLCA0XQorImFiYyBkZWYgZ2hpIGprbCBtbiAiWzAsIDQsIDgsIDEyLCAxNl0sICJv
cHEgcnN0IHV2dyB4eXoiWzAsIDQsIDgsIDEyLCAxNV0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAot
IiBoaWogb3BxIls4LCA1LCAxXQorIm9wcSByc3QgdXZ3IHh5eiJbMTUsIDEyLCA4LCA0LCAwXSwg
ImFiYyBkZWYgZ2hpIGprbCBtbiAiWzE2LCAxMiwgOCwgNCwgMF0KIFRlc3QgMTQsIExUUjoKIE1v
dmUgcmlnaHQgYnkgb25lIHdvcmQKKyJhYmMgZGVmIGdoaSBqa2wgbW4gIlswLCA0LCA4LCAxMiwg
MTYsIDE4XQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBnaGkgamtsIG1uICJbMTgs
IDE2LCAxMiwgOCwgNCwgMF0KK1Rlc3QgMTUsIExUUjoKK01vdmUgcmlnaHQgYnkgb25lIHdvcmQK
KyJhYmMgZGVmICJbMCwgNCwgOF0KK01vdmUgbGVmdCBieSBvbmUgd29yZAorIiBoaWogb3BxIls4
LCA1LCAxXQorVGVzdCAxNiwgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAogPERJVj5bMF0K
IE1vdmUgbGVmdCBieSBvbmUgd29yZAogPERJVj5bMF0KLVRlc3QgMTUsIExUUjoKK1Rlc3QgMTcs
IExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKICJcbjAwIlszXQogTW92ZSBsZWZ0IGJ5IG9u
ZSB3b3JkCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQt
dmlzdWFsbHktbXVsdGktbGluZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1saW5lLmh0bWwJKHJldmlz
aW9uIDEwNjUwMykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29y
ZC12aXN1YWxseS1tdWx0aS1saW5lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcg
QEAgd2hlcmUgY2hpbGRfbm9kZV9pbmRleCBpcyBvcHRpb25hbCwgZGVmYQogCiA8ZGl2IGNvbnRl
bnRlZGl0YWJsZSBkaXI9cnRsIGlkPSJtbF83IiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQgZml4
X3dpZHRoIiB0aXRsZT0iW21sXzcsIDE1LCA1XVttbF83LCAxMSwgNV1bbWxfNywgOCwgNV1bbWxf
NywgMywgNV1bbWxfNywgMCwgNV1bbWxfNywgMTZdW21sXzcsIDExXVttbF83LCA4XVttbF83LCAz
XVttbF83LCAwXXxbbWxfNywgMF1bbWxfNywgM11bbWxfNywgOF1bbWxfNywgMTFdW21sXzcsIDE2
XVttbF83LCAwLCA1XVttbF83LCAzLCA1XVttbF83LCA4LCA1XVttbF83LCAxMSwgNV1bbWxfNywg
MTUsIDVdIj5hYmMgZGVmIGdoaSBqa2wgbW4gPGJyLz48YnIvPjxici8+b3BxIHJzdCB1dncgeHl6
PC9kaXY+CiAKLTxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1ydGwgaWQ9Im1sXzgiIGNsYXNzPSJ0
ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSJbbWxfOCwgMTUsIDVdW21sXzgsIDEx
LCA1XVttbF84LCA4LCA1XVttbF84LCAzLCA1XVttbF84LCAwLCA1XVttbF84LCAxOF1bbWxfOCwg
MTZdW21sXzgsIDExXVttbF84LCA4XVttbF84LCAzXVttbF84LCAwXXxbbWxfOCwgMF1bbWxfOCwg
M11bbWxfOCwgOF1bbWxfOCwgMTFdW21sXzgsIDE2XVttbF84LCAwLCA1XVttbF84LCAzLCA1XVtt
bF84LCA4LCA1XVttbF84LCAxMSwgNV1bbWxfOCwgMTUsIDVdIj5hYmMgZGVmIGdoaSBqa2wgbW4g
PGRpdj48YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rpdj48ZGl2Pjxici8+PC9kaXY+b3BxIHJzdCB1
dncgeHl6PC9kaXY+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBkaXI9cnRsIGlkPSJtbF84IiBjbGFz
cz0idGVzdF9tb3ZlX2J5X3dvcmQgZml4X3dpZHRoIiB0aXRsZT0iW21sXzgsIDE1LCA1XVttbF84
LCAxMSwgNV1bbWxfOCwgOCwgNV1bbWxfOCwgMywgNV1bbWxfOCwgMCwgNV1bbWxfOCwgMTZdW21s
XzgsIDExXVttbF84LCA4XVttbF84LCAzXVttbF84LCAwXXxbbWxfOCwgMF1bbWxfOCwgM11bbWxf
OCwgOF1bbWxfOCwgMTFdW21sXzgsIDE2XVttbF84LCAwLCA1XVttbF84LCAzLCA1XVttbF84LCA4
LCA1XVttbF84LCAxMSwgNV1bbWxfOCwgMTUsIDVdIj5hYmMgZGVmIGdoaSBqa2wgbW4gPGRpdj48
YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rpdj48ZGl2Pjxici8+PC9kaXY+b3BxIHJzdCB1dncgeHl6
PC9kaXY+CiAKIDxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1ydGwgaWQ9Im1sXzkiIGNsYXNzPSJ0
ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSJbbWxfOSwgMTUsIDVdW21sXzksIDEy
LCA1XVttbF85LCA4LCA1XVttbF85LCA0LCA1XVttbF85LCAwLCA1XVttbF85LCAxMl1bbWxfOSwg
OF1bbWxfOSwgNF1bbWxfOSwgMF18W21sXzksIDBdW21sXzksIDRdW21sXzksIDhdW21sXzksIDEy
XVttbF85LCAwLCA1XVttbF85LCA0LCA1XVttbF85LCA4LCA1XVttbF85LCAxMiwgNV1bbWxfOSwg
MTUsIDVdIj7XkNeQ15Ag15DXkNeQINeQ15DXkCDXkNeQ15AgPGJyLz48YnIvPjxici8+15DXkNeQ
INeQ15DXkCDXkNeQ15Ag15DXkNeQPC9kaXY+CiAKQEAgLTY1LDExICs2NSwxNSBAQCB3aGVyZSBj
aGlsZF9ub2RlX2luZGV4IGlzIG9wdGlvbmFsLCBkZWZhCiAiPiBhYmMgZGVmINeQ15DXkCDXkNeQ
15AgaGlqINeQ15DXkCDXkNeQ15AgdXZ3IHh5eiA8YnIvPjxici8+PGJyLz7XkNeQ15Aga2og15DX
kNeQIG1uIG9wcSDXkNeQ15Ag15DXkNeQPC9kaXY+CiAKIDxkaXYgY29udGVudGVkaXRhYmxlIGRp
cj1ydGwgaWQ9Im1sXzEyIiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQgZml4X3dpZHRoIiB0aXRs
ZT0iCi1bbWxfMTIsIDI1LCA1XVttbF8xMiwgMjIsIDVdW21sXzEyLCAxOCwgNV1bbWxfMTIsIDE0
LCA1XVttbF8xMiwgMTEsIDVdW21sXzEyLCA3LCA1XVttbF8xMiwgNCwgNV1bbWxfMTIsIDAsIDVd
W21sXzEyLCAzNl1bbWxfMTIsIDMzXVttbF8xMiwgMjldW21sXzEyLCAyNV1bbWxfMTIsIDIxXVtt
bF8xMiwgMTddW21sXzEyLCAxM11bbWxfMTIsIDldW21sXzEyLCA0XVttbF8xMiwgMV18W21sXzEy
LCAxXVttbF8xMiwgNF1bbWxfMTIsIDldW21sXzEyLCAxM11bbWxfMTIsIDE3XVttbF8xMiwgMjFd
W21sXzEyLCAyNV1bbWxfMTIsIDI5XVttbF8xMiwgMzNdW21sXzEyLCAwLCA1XVttbF8xMiwgNCwg
NV1bbWxfMTIsIDcsIDVdW21sXzEyLCAxMSwgNV1bbWxfMTIsIDE0LCA1XVttbF8xMiwgMTgsIDVd
W21sXzEyLCAyMiwgNV1bbWxfMTIsIDI1LCA1XQorW21sXzEyLCAyNSwgNV1bbWxfMTIsIDIyLCA1
XVttbF8xMiwgMTgsIDVdW21sXzEyLCAxNCwgNV1bbWxfMTIsIDExLCA1XVttbF8xMiwgNywgNV1b
bWxfMTIsIDQsIDVdW21sXzEyLCAwLCA1XVttbF8xMiwgMzNdW21sXzEyLCAyOV1bbWxfMTIsIDI1
XVttbF8xMiwgMjFdW21sXzEyLCAxN11bbWxfMTIsIDEzXVttbF8xMiwgOV1bbWxfMTIsIDRdW21s
XzEyLCAxXXxbbWxfMTIsIDFdW21sXzEyLCA0XVttbF8xMiwgOV1bbWxfMTIsIDEzXVttbF8xMiwg
MTddW21sXzEyLCAyMV1bbWxfMTIsIDI1XVttbF8xMiwgMjldW21sXzEyLCAzM11bbWxfMTIsIDAs
IDVdW21sXzEyLCA0LCA1XVttbF8xMiwgNywgNV1bbWxfMTIsIDExLCA1XVttbF8xMiwgMTQsIDVd
W21sXzEyLCAxOCwgNV1bbWxfMTIsIDIyLCA1XVttbF8xMiwgMjUsIDVdCiAiPiBhYmMgZGVmINeQ
15DXkCDXkNeQ15AgaGlqINeQ15DXkCDXkNeQ15AgdXZ3IHh5eiA8ZGl2Pjxici8+PC9kaXY+PGRp
dj48YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rpdj7XkNeQ15Aga2og15DXkNeQIG1uIG9wcSDXkNeQ
15Ag15DXkNeQPC9kaXY+CiAKKzxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1sdHIgaWQ9Im1sXzEz
IiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQgZml4X3dpZHRoIiB0aXRsZT0iW21sXzEzLCAwXVtt
bF8xMywgNF1bbWxfMTMsIDhdW21sXzEzLCAxMl1bbWxfMTMsIDE2XVttbF8xMywgMCwgNV1bbWxf
MTMsIDQsIDVdW21sXzEzLCA4LCA1XVttbF8xMywgMTIsIDVdW21sXzEzLCAxNSwgNV18W21sXzEz
LCAxNSwgNV1bbWxfMTMsIDEyLCA1XVttbF8xMywgOCwgNV1bbWxfMTMsIDQsIDVdW21sXzEzLCAw
LCA1XVttbF8xMywgMTZdW21sXzEzLCAxMl1bbWxfMTMsIDhdW21sXzEzLCA0XVttbF8xMywgMF0i
PmFiYyBkZWYgZ2hpIGprbCBtbiA8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj5vcHEg
cnN0IHV2dyB4eXo8L2Rpdj4KKworPGRpdiBjb250ZW50ZWRpdGFibGUgZGlyPWx0ciBpZD0ibWxf
MTQiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSJbbWxfMTQsIDBd
W21sXzE0LCA0XVttbF8xNCwgOF1bbWxfMTQsIDEyXVttbF8xNCwgMTZdW21sXzE0LCAxOF18W21s
XzE0LCAxOF1bbWxfMTQsIDE2XVttbF8xNCwgMTJdW21sXzE0LCA4XVttbF8xNCwgNF1bbWxfMTQs
IDBdIj5hYmMgZGVmIGdoaSBqa2wgbW4gPGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+
PC9kaXY+CisKIDwhLS0gbWl4ZWQgZWRpdGFiaWxpdHkgLS0+Ci08ZGl2IGRpcj1sdHIgY2xhc3M9
InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCA0fDggNSAxIj5hYmMgZGVmIDxzcGFuIGNvbnRl
bnRlZGl0YWJsZT4gaW5zaWRlIHNwYW4gPC9zcGFuPiBoaWogb3BxPC9kaXY+Cis8ZGl2IGRpcj1s
dHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCA0IDh8OCA1IDEiPmFiYyBkZWYg
PHNwYW4gY29udGVudGVkaXRhYmxlPiBpbnNpZGUgc3BhbiA8L3NwYW4+IGhpaiBvcHE8L2Rpdj4K
IAogPGRpdiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIGNvbnRlbnRlZGl0YWJsZSBkaXI9bHRy
IHRpdGxlPSIwfDAiPjwvZGl2PgogCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNlLWlubGluZS1lbGVtZW50LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3Zl
LWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNlLWlubGluZS1lbGVtZW50LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTA2NTAzKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92
ZS1ieS13b3JkLXZpc3VhbGx5LXNpbmdsZS1zcGFjZS1pbmxpbmUtZWxlbWVudC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3LDMwICsxNywxNCBAQCBNb3ZlIGxlZnQgYnkgb25lIHdv
cmQKICIgcnN0IHV2dyJbOCwgNSwgMV0sICJoaWogb3BxIls0XSwgImFiYyBkZWYgIls4LCA0LCAw
XQogVGVzdCA0LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJhYmMgZGVmICJbMF0sICIg
cnN0IHV2dyJbNF0sICJoaWogb3BxIlszXSwgImFiYyBkZWYgIls3LCAzXSwgIiByc3QgdXZ3Ils4
XSAgICBGQUlMIGV4cGVjdGVkOiBbImFiYyBkZWYgIlsgMCwgXSIgcnN0IHV2dyJbIDQsIF0iaGlq
IG9wcSJbIDcsICAzLCBdImFiYyBkZWYgIlsgNywgIDMsIF0iIHJzdCB1dnciWyA4XQotIiByc3Qg
dXZ3Ils0XSwgImhpaiBvcHEiWzNdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iIHJz
dCB1dnciWzNdLCAiaGlqIG9wcSJbM10gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSIg
cnN0IHV2dyJbMl0sICJoaWogb3BxIlszXSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQot
IiByc3QgdXZ3IlsxXSwgImhpaiBvcHEiWzNdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDdd
Ci1Nb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iIHJzdCB1dnciWzhdLCAiYWJjIGRlZiAiWzMsIDdd
LCAiaGlqIG9wcSJbM10sICIgcnN0IHV2dyJbNF0sICJhYmMgZGVmICJbMF0gICAgRkFJTCBleHBl
Y3RlZDogWyIgcnN0IHV2dyJbIDgsIF0iYWJjIGRlZiAiWyAzLCAgNywgXSJoaWogb3BxIlsgMywg
IDcsIF0iIHJzdCB1dnciWyA0LCBdImFiYyBkZWYgIlsgMF0KLSJoaWogb3BxIlszXSwgIiByc3Qg
dXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotImhpaiBvcHEiWzRdLCAiIHJz
dCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iaGlqIG9wcSJbNV0sICIg
cnN0IHV2dyJbNF0gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSJoaWogb3BxIls2XSwg
IiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQorImFiYyBkZWYgIlsw
XSwgIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzcsIDNdLCAiYWJjIGRlZiAiWzcsIDNdLCAiIHJz
dCB1dnciWzhdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiIHJzdCB1dnciWzhdLCAiYWJjIGRl
ZiAiWzMsIDddLCAiaGlqIG9wcSJbMywgN10sICIgcnN0IHV2dyJbNF0sICJhYmMgZGVmICJbMF0K
IFRlc3QgNSwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiAiWzBdLCAiIHJz
dCB1dnciWzRdLCAiaGlqIG9wcSJbM10sICJhYmMgZGVmICJbNywgM10sICIgcnN0IHV2dyJbOF0g
ICAgRkFJTCBleHBlY3RlZDogWyJhYmMgZGVmICJbIDAsIF0iIHJzdCB1dnciWyA0LCBdImhpaiBv
cHEiWyA3LCAgMywgXSJhYmMgZGVmICJbIDcsICAzLCBdIiByc3QgdXZ3IlsgOF0KLSIgcnN0IHV2
dyJbNF0sICJoaWogb3BxIlszXSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotIiByc3Qg
dXZ3IlszXSwgImhpaiBvcHEiWzNdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iIHJz
dCB1dnciWzJdLCAiaGlqIG9wcSJbM10gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSIg
cnN0IHV2dyJbMV0sICJoaWogb3BxIlszXSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQot
TW92ZSByaWdodCBieSBvbmUgd29yZAotIiByc3QgdXZ3Ils4XSwgImFiYyBkZWYgIlszLCA3XSwg
ImhpaiBvcHEiWzNdLCAiIHJzdCB1dnciWzRdLCAiYWJjIGRlZiAiWzBdICAgIEZBSUwgZXhwZWN0
ZWQ6IFsiIHJzdCB1dnciWyA4LCBdImFiYyBkZWYgIlsgMywgIDcsIF0iaGlqIG9wcSJbIDMsICA3
LCBdIiByc3QgdXZ3IlsgNCwgXSJhYmMgZGVmICJbIDBdCi0iaGlqIG9wcSJbM10sICIgcnN0IHV2
dyJbNF0gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSJoaWogb3BxIls0XSwgIiByc3Qg
dXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotImhpaiBvcHEiWzVdLCAiIHJz
dCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iaGlqIG9wcSJbNl0sICIg
cnN0IHV2dyJbNF0gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KKyJhYmMgZGVmICJbMF0s
ICIgcnN0IHV2dyJbNF0sICJoaWogb3BxIls3LCAzXSwgImFiYyBkZWYgIls3LCAzXSwgIiByc3Qg
dXZ3Ils4XQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIiByc3QgdXZ3Ils4XSwgImFiYyBkZWYg
IlszLCA3XSwgImhpaiBvcHEiWzMsIDddLCAiIHJzdCB1dnciWzRdLCAiYWJjIGRlZiAiWzBdCiBU
ZXN0IDYsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKICJhYmMgZGVmICJbMCwgNCwgOF0s
ICJoaWogb3BxIls0XSwgIiByc3QgdXZ3IlsxLCA1LCA4XQpAQCAtNjgsOSArNTIsMTcgQEAgTW92
ZSBsZWZ0IGJ5IG9uZSB3b3JkCiAiRkZaIExJRyJbN10sICJBQkQgRFNVICJbMywgN10sICJFSkgg
RlVYIlszXSwgIkZGWiBMSUciWzNdLCAiQUJEIERTVSAiWzBdCiBUZXN0IDExLCBSVEw6CiBNb3Zl
IGxlZnQgYnkgb25lIHdvcmQKLSJBQkQgRFNVICJbMCwgNCwgOF0sICJhYmMgZGVmIlszXSwgIkZG
WiBMSUciWzQsIDddCi1Nb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iRkZaIExJRyJbNywgNF0sICJh
YmMgZGVmIlszXSwgIkFCRCBEU1UgIls4LCA0LCAwXQorIkFCRCBEU1UgIlswLCA0XSwgImFiYyBk
ZWYiWzNdLCAiRkZaIExJRyJbNCwgN10gICAgRkFJTCBleHBlY3RlZDogWyJBQkQgRFNVICJbIDAs
ICA0LCAgOCwgXSJhYmMgZGVmIlsgMywgXSJGRlogTElHIlsgNCwgIDddCisiQUJEIERTVSAiWzRd
LCAiYWJjIGRlZiJbM10gICBGQUlMIGV4cGVjdGVkICJBQkQgRFNVICJbIDhdCisiQUJEIERTVSAi
WzVdLCAiYWJjIGRlZiJbM10gICBGQUlMIGV4cGVjdGVkICJBQkQgRFNVICJbIDhdCisiQUJEIERT
VSAiWzZdLCAiYWJjIGRlZiJbM10gICBGQUlMIGV4cGVjdGVkICJBQkQgRFNVICJbIDhdCisiQUJE
IERTVSAiWzddLCAiYWJjIGRlZiJbM10gICBGQUlMIGV4cGVjdGVkICJBQkQgRFNVICJbIDhdCitN
b3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiRkZaIExJRyJbNywgNF0sICJhYmMgZGVmIlszXSwgIkFC
RCBEU1UgIls0LCAwXSAgICBGQUlMIGV4cGVjdGVkOiBbIkZGWiBMSUciWyA3LCAgNCwgXSJhYmMg
ZGVmIlsgMywgXSJBQkQgRFNVICJbIDgsICA0LCAgMF0KKyJhYmMgZGVmIlszXSwgIkFCRCBEU1Ug
Ils0XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBEU1UgIlsgOF0KKyJhYmMgZGVmIls0XSwgIkFCRCBE
U1UgIls0XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBEU1UgIlsgOF0KKyJhYmMgZGVmIls1XSwgIkFC
RCBEU1UgIls0XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBEU1UgIlsgOF0KKyJhYmMgZGVmIls2XSwg
IkFCRCBEU1UgIls0XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBEU1UgIlsgOF0KIFRlc3QgMTIsIExU
UjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKICJBQkQgRFNVICJbMF0sICJGRlogTElHIlszXSwg
IkFCRCBEU1UgIls4XSwgImFiYyBkZWYiWzRdLCAiQUJEIERTVSAiWzcsIDNdLCAiRkZaIExJRyJb
N10KQEAgLTc4LDUyICs3MCw2NyBAQCBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKICJGRlogTElHIls3
XSwgIkFCRCBEU1UgIlszLCA3XSwgImFiYyBkZWYiWzRdLCAiQUJEIERTVSAiWzhdLCAiRkZaIExJ
RyJbM10sICJBQkQgRFNVICJbMF0KIFRlc3QgMTMsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29y
ZAotIkFCRCBEU1UgIlswLCA0LCA4XSwgImFiYyBkZWYiWzNdLCAiRkZaIExJRyJbNCwgN10KLU1v
dmUgcmlnaHQgYnkgb25lIHdvcmQKLSJGRlogTElHIls3LCA0XSwgImFiYyBkZWYiWzNdLCAiQUJE
IERTVSAiWzgsIDQsIDBdCisiQUJEIERTVSAiWzAsIDRdLCAiYWJjIGRlZiJbM10sICJGRlogTElH
Ils0LCA3XSAgICBGQUlMIGV4cGVjdGVkOiBbIkFCRCBEU1UgIlsgMCwgIDQsICA4LCBdImFiYyBk
ZWYiWyAzLCBdIkZGWiBMSUciWyA0LCAgN10KKyJBQkQgRFNVICJbNF0sICJhYmMgZGVmIlszXSAg
IEZBSUwgZXhwZWN0ZWQgIkFCRCBEU1UgIlsgOF0KKyJBQkQgRFNVICJbNV0sICJhYmMgZGVmIlsz
XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBEU1UgIlsgOF0KKyJBQkQgRFNVICJbNl0sICJhYmMgZGVm
IlszXSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBEU1UgIlsgOF0KKyJBQkQgRFNVICJbN10sICJhYmMg
ZGVmIlszXSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBEU1UgIlsgOF0KK01vdmUgcmlnaHQgYnkgb25l
IHdvcmQKKyJGRlogTElHIls3LCA0XSwgImFiYyBkZWYiWzNdLCAiQUJEIERTVSAiWzQsIDBdICAg
IEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIExJRyJbIDcsICA0LCBdImFiYyBkZWYiWyAzLCBdIkFCRCBE
U1UgIlsgOCwgIDQsICAwXQorImFiYyBkZWYiWzNdLCAiQUJEIERTVSAiWzRdICAgRkFJTCBleHBl
Y3RlZCAiQUJEIERTVSAiWyA4XQorImFiYyBkZWYiWzRdLCAiQUJEIERTVSAiWzRdICAgRkFJTCBl
eHBlY3RlZCAiQUJEIERTVSAiWyA4XQorImFiYyBkZWYiWzVdLCAiQUJEIERTVSAiWzRdICAgRkFJ
TCBleHBlY3RlZCAiQUJEIERTVSAiWyA4XQorImFiYyBkZWYiWzZdLCAiQUJEIERTVSAiWzRdICAg
RkFJTCBleHBlY3RlZCAiQUJEIERTVSAiWyA4XQogVGVzdCAxNCwgTFRSOgogTW92ZSByaWdodCBi
eSBvbmUgd29yZAotIkFCRCBEU1UgIlswLCAzLCA4XSwgImFiYyBkZWYiWzRdLCAiRkZaIExJRyJb
MywgN10KLU1vdmUgbGVmdCBieSBvbmUgd29yZAotIkZGWiBMSUciWzcsIDNdLCAiYWJjIGRlZiJb
NF0sICJBQkQgRFNVICJbOCwgMywgMF0KKyJBQkQgRFNVICJbMCwgMywgOF0sICJhYmMgZGVmIls0
LCA3XSwgIkZGWiBMSUciWzMsIDddICAgIEZBSUwgZXhwZWN0ZWQ6IFsiQUJEIERTVSAiWyAwLCAg
MywgIDgsIF0iYWJjIGRlZiJbIDQsIF0iRkZaIExJRyJbIDMsICA3XQorImFiYyBkZWYiWzQsIDdd
ICAgRkFJTCBleHBlY3RlZCAiRkZaIExJRyJbIDNdCisiYWJjIGRlZiJbNSwgN10gICBGQUlMIGV4
cGVjdGVkICJGRlogTElHIlsgM10KKyJhYmMgZGVmIls2LCA3XSAgIEZBSUwgZXhwZWN0ZWQgIkZG
WiBMSUciWyAzXQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiRkZaIExJRyJbNywgM10sICJhYmMg
ZGVmIls3LCA0XSwgIkFCRCBEU1UgIls4LCAzLCAwXSAgICBGQUlMIGV4cGVjdGVkOiBbIkZGWiBM
SUciWyA3LCAgMywgXSJhYmMgZGVmIlsgNCwgXSJBQkQgRFNVICJbIDgsICAzLCAgMF0KKyJGRlog
TElHIlszXSwgImFiYyBkZWYiWzddICAgRkFJTCBleHBlY3RlZCAiYWJjIGRlZiJbIDRdCisiRkZa
IExJRyJbNF0sICJhYmMgZGVmIls3XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBkZWYiWyA0XQorIkZG
WiBMSUciWzVdLCAiYWJjIGRlZiJbN10gICBGQUlMIGV4cGVjdGVkICJhYmMgZGVmIlsgNF0KKyJG
RlogTElHIls2XSwgImFiYyBkZWYiWzddICAgRkFJTCBleHBlY3RlZCAiYWJjIGRlZiJbIDRdCiBU
ZXN0IDE1LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJBQkQgb3BxIERTVSAiWzAsIDQs
IDgsIDEyXSwgImFiYyBBQUEgZGVmIls4LCA0LCAzXSwgIkZGWiByc3QgTElHIls0LCA4LCAxMV0g
ICAgRkFJTCBleHBlY3RlZDogWyJBQkQgb3BxIERTVSAiWyAwLCAgNCwgIDgsICAxMiwgXSJhYmMg
QUFBIGRlZiJbIDQsICAzLCBdIkZGWiByc3QgTElHIlsgNCwgIDgsICAxMV0KLSJBQkQgb3BxIERT
VSAiWzEyXSwgImFiYyBBQUEgZGVmIls4XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsg
NF0KLSJhYmMgQUFBIGRlZiJbMTAsIDhdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA0
XQotImFiYyBBQUEgZGVmIls5LCA4XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgNF0K
KyJBQkQgb3BxIERTVSAiWzAsIDQsIDgsIDEyXSwgImFiYyBBQUEgZGVmIls0LCAzXSwgIkZGWiBy
c3QgTElHIls0LCA4LCAxMV0KIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJGRlogcnN0IExJRyJb
MTEsIDgsIDRdLCAiYWJjIEFBQSBkZWYiWzMsIDQsIDhdLCAiQUJEIG9wcSBEU1UgIlsxMiwgOCwg
NCwgMF0gICAgRkFJTCBleHBlY3RlZDogWyJGRlogcnN0IExJRyJbIDExLCAgOCwgIDQsIF0iYWJj
IEFBQSBkZWYiWyAzLCAgNCwgXSJBQkQgb3BxIERTVSAiWyAxMiwgIDgsICA0LCAgMF0KLSJhYmMg
QUFBIGRlZiJbNCwgOF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyAxMl0KKyJGRlog
cnN0IExJRyJbMTEsIDgsIDRdLCAiYWJjIEFBQSBkZWYiWzMsIDRdLCAiQUJEIG9wcSBEU1UgIlsx
MiwgOCwgNCwgMF0KIFRlc3QgMTYsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJBQkQg
b3BxIERTVSAiWzAsIDRdLCAiYWJjIEFBQSBkZWYiWzgsIDRdLCAiQUJEIG9wcSBEU1UgIlsxMiwg
MTFdLCAiRkZaIHJzdCBMSUciWzQsIDgsIDExXSAgICBGQUlMIGV4cGVjdGVkOiBbIkFCRCBvcHEg
RFNVICJbIDAsICA0LCAgOCwgXSJhYmMgQUFBIGRlZiJbIDgsICA3LCBdIkFCRCBvcHEgRFNVICJb
IDEyLCAgMTEsIF0iRkZaIHJzdCBMSUciWyA0LCAgOCwgIDExXQotIkFCRCBvcHEgRFNVICJbNF0s
ICJhYmMgQUFBIGRlZiJbOF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyA4XQotIkFC
RCBvcHEgRFNVICJbNV0sICJhYmMgQUFBIGRlZiJbOF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3Bx
IERTVSAiWyA4XQotIkFCRCBvcHEgRFNVICJbNl0sICJhYmMgQUFBIGRlZiJbOF0gICBGQUlMIGV4
cGVjdGVkICJBQkQgb3BxIERTVSAiWyA4XQotIkFCRCBvcHEgRFNVICJbN10sICJhYmMgQUFBIGRl
ZiJbOF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyA4XQotImFiYyBBQUEgZGVmIls4
LCA0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgN10KLSJhYmMgQUFBIGRlZiJbOSwg
NF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDddCi0iYWJjIEFBQSBkZWYiWzEwLCA0
XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgN10KLSJhYmMgQUFBIGRlZiJbMTEsIDRd
ICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA3XQotImFiYyBBQUEgZGVmIls3LCA0XSAg
IEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDEyXQotImFiYyBBQUEgZGVmIls2LCA0XSAg
IEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDEyXQotImFiYyBBQUEgZGVmIls1LCA0XSAg
IEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDEyXQotTW92ZSBsZWZ0IGJ5IG9uZSB3b3Jk
Ci0iRkZaIHJzdCBMSUciWzExLCA4LCA0XSwgIkFCRCBvcHEgRFNVICJbMTEsIDEyXSwgImFiYyBB
QUEgZGVmIls3LCA4XSwgIkFCRCBvcHEgRFNVICJbNCwgMF0gICAgRkFJTCBleHBlY3RlZDogWyJG
RlogcnN0IExJRyJbIDExLCAgOCwgIDQsIF0iQUJEIG9wcSBEU1UgIlsgMTEsICAxMiwgXSJhYmMg
QUFBIGRlZiJbIDcsICA4LCBdIkFCRCBvcHEgRFNVICJbIDgsICA0LCAgMF0KLSJhYmMgQUFBIGRl
ZiJbOF0sICJBQkQgb3BxIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsg
OF0KLSJGRlogcnN0IExJRyJbMV0sICJBQkQgb3BxIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAi
QUJEIG9wcSBEU1UgIlsgOF0KLSJGRlogcnN0IExJRyJbMl0sICJBQkQgb3BxIERTVSAiWzRdICAg
RkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgOF0KKyJBQkQgb3BxIERTVSAiWzAsIDQsIDhd
LCAiYWJjIEFBQSBkZWYiWzgsIDddLCAiQUJEIG9wcSBEU1UgIlsxMiwgMTFdLCAiRkZaIHJzdCBM
SUciWzQsIDgsIDExXQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiRkZaIHJzdCBMSUciWzExLCA4
LCA0XSwgIkFCRCBvcHEgRFNVICJbMTEsIDEyXSwgImFiYyBBQUEgZGVmIls3LCA4XSwgIkFCRCBv
cHEgRFNVICJbOCwgNCwgMF0KIFRlc3QgMTcsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAot
IkFCRCBvcHEgRFNVICJbMCwgNCwgOCwgMTJdLCAiYWJjIEFBQSBkZWYiWzQsIDhdLCAiRkZaIHJz
dCBMSUciWzQsIDgsIDExXQotTW92ZSByaWdodCBieSBvbmUgd29yZAotIkZGWiByc3QgTElHIlsx
MSwgOCwgNF0sICJhYmMgQUFBIGRlZiJbOCwgNF0sICJBQkQgb3BxIERTVSAiWzEyLCA4LCA0LCAw
XQorIkFCRCBvcHEgRFNVICJbMCwgNCwgOCwgMTJdLCAiYWJjIEFBQSBkZWYiWzRdLCAiRkZaIHJz
dCBMSUciWzQsIDgsIDExXSAgICBGQUlMIGV4cGVjdGVkOiBbIkFCRCBvcHEgRFNVICJbIDAsICA0
LCAgOCwgIDEyLCBdImFiYyBBQUEgZGVmIlsgNCwgIDgsIF0iRkZaIHJzdCBMSUciWyA0LCAgOCwg
IDExXQorImFiYyBBQUEgZGVmIls0XSwgIkZGWiByc3QgTElHIls0XSAgIEZBSUwgZXhwZWN0ZWQg
ImFiYyBBQUEgZGVmIlsgOF0KKyJhYmMgQUFBIGRlZiJbNV0sICJGRlogcnN0IExJRyJbNF0gICBG
QUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDhdCisiYWJjIEFBQSBkZWYiWzZdLCAiRkZaIHJz
dCBMSUciWzRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA4XQorImFiYyBBQUEgZGVm
Ils3XSwgIkZGWiByc3QgTElHIls0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0K
K01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJGRlogcnN0IExJRyJbMTEsIDgsIDRdLCAiYWJjIEFB
QSBkZWYiWzRdLCAiQUJEIG9wcSBEU1UgIlsxMiwgOCwgNCwgMF0gICAgRkFJTCBleHBlY3RlZDog
WyJGRlogcnN0IExJRyJbIDExLCAgOCwgIDQsIF0iYWJjIEFBQSBkZWYiWyA4LCAgNCwgXSJBQkQg
b3BxIERTVSAiWyAxMiwgIDgsICA0LCAgMF0KKyJGRlogcnN0IExJRyJbNF0sICJhYmMgQUFBIGRl
ZiJbNF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDhdCisiRkZaIHJzdCBMSUciWzNd
LCAiYWJjIEFBQSBkZWYiWzRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA4XQorIkZG
WiByc3QgTElHIlsyXSwgImFiYyBBQUEgZGVmIls0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEg
ZGVmIlsgOF0KKyJGRlogcnN0IExJRyJbMV0sICJhYmMgQUFBIGRlZiJbNF0gICBGQUlMIGV4cGVj
dGVkICJhYmMgQUFBIGRlZiJbIDhdCisiYWJjIEFBQSBkZWYiWzExLCA0XSAgIEZBSUwgZXhwZWN0
ZWQgImFiYyBBQUEgZGVmIlsgOF0KKyJhYmMgQUFBIGRlZiJbOSwgNF0gICBGQUlMIGV4cGVjdGVk
ICJhYmMgQUFBIGRlZiJbIDhdCisiYWJjIEFBQSBkZWYiWzEwLCA0XSAgIEZBSUwgZXhwZWN0ZWQg
ImFiYyBBQUEgZGVmIlsgOF0KIFRlc3QgMTgsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQK
LSJBQkQgb3BxIERTVSAiWzAsIDQsIDgsIDEyXSwgImFiYyBBQUEgZGVmIls0LCA4XSwgIkZGWiBy
c3QgTElHIls0LCA4LCAxMV0KLU1vdmUgbGVmdCBieSBvbmUgd29yZAotIkZGWiByc3QgTElHIlsx
MSwgOCwgNF0sICJhYmMgQUFBIGRlZiJbOCwgNF0sICJBQkQgb3BxIERTVSAiWzEyLCA4LCA0LCAw
XQorIkFCRCBvcHEgRFNVICJbMCwgNCwgOCwgMTJdLCAiYWJjIEFBQSBkZWYiWzQsIDgsIDExXSwg
IkZGWiByc3QgTElHIls0LCA4LCAxMV0gICAgRkFJTCBleHBlY3RlZDogWyJBQkQgb3BxIERTVSAi
WyAwLCAgNCwgIDgsICAxMiwgXSJhYmMgQUFBIGRlZiJbIDQsICA4LCBdIkZGWiByc3QgTElHIlsg
NCwgIDgsICAxMV0KKyJhYmMgQUFBIGRlZiJbOCwgMTFdICAgRkFJTCBleHBlY3RlZCAiRkZaIHJz
dCBMSUciWyA0XQorImFiYyBBQUEgZGVmIls5LCAxMV0gICBGQUlMIGV4cGVjdGVkICJGRlogcnN0
IExJRyJbIDRdCisiYWJjIEFBQSBkZWYiWzEwLCAxMV0gICBGQUlMIGV4cGVjdGVkICJGRlogcnN0
IExJRyJbIDRdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJGRlogcnN0IExJRyJbMTEsIDgsIDRd
LCAiYWJjIEFBQSBkZWYiWzExLCA4LCA0XSwgIkFCRCBvcHEgRFNVICJbMTIsIDgsIDQsIDBdICAg
IEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIHJzdCBMSUciWyAxMSwgIDgsICA0LCBdImFiYyBBQUEgZGVm
IlsgOCwgIDQsIF0iQUJEIG9wcSBEU1UgIlsgMTIsICA4LCAgNCwgIDBdCisiRkZaIHJzdCBMSUci
WzRdLCAiYWJjIEFBQSBkZWYiWzExXSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0K
KyJGRlogcnN0IExJRyJbM10sICJhYmMgQUFBIGRlZiJbMTFdICAgRkFJTCBleHBlY3RlZCAiYWJj
IEFBQSBkZWYiWyA4XQorIkZGWiByc3QgTElHIlsxXSwgImFiYyBBQUEgZGVmIlsxMV0gICBGQUlM
IGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDhdCisiRkZaIHJzdCBMSUciWzJdLCAiYWJjIEFBQSBk
ZWYiWzExXSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0KIFRlc3QgMTksIExUUjoK
IE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKICJhYWEgIlswLCA0XSwgImJiYiBBQUEgIls0LCA3XSwg
IkZGWiJbM10KQEAgLTEzMSwxNCArMTM4LDcgQEAgTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCiAiRkZa
IlszXSwgImJiYiBBQUEgIls3LCA0XSwgImFhYSAiWzQsIDBdCiBUZXN0IDIwLCBSVEw6CiBNb3Zl
IGxlZnQgYnkgb25lIHdvcmQKLSJBQkQgb3BxIHJzdCBEU1UgIlswLCA0LCA3LCAxMiwgMTZdLCAi
YWJjIHV2dyBBQUEgZGVmIGxtbiJbMTIsIDgsIDcsIDNdLCAiQUJXIGhpaiB4eXogRlhYIls0LCA3
LCAxMiwgMTVdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiQUJEIG9wcSByc3QgRFNVICJbIDAsICA0LCAg
NywgIDEyLCAgMTYsIF0iYWJjIHV2dyBBQUEgZGVmIGxtbiJbIDE1LCAgOCwgIDcsICAzLCBdIkFC
VyBoaWogeHl6IEZYWCJbIDQsICA3LCAgMTIsICAxNV0KLSJBQkQgb3BxIHJzdCBEU1UgIlsxNl0s
ICJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsxMl0gICBGQUlMIGV4cGVjdGVkICJhYmMgdXZ3IEFBQSBk
ZWYgbG1uIlsgMTVdCi0iYWJjIHV2dyBBQUEgZGVmIGxtbiJbMTgsIDEyXSAgIEZBSUwgZXhwZWN0
ZWQgImFiYyB1dncgQUFBIGRlZiBsbW4iWyAxNV0KLSJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsxNywg
MTJdICAgRkFJTCBleHBlY3RlZCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbIDE1XQotImFiYyB1dncg
QUFBIGRlZiBsbW4iWzE2LCAxMl0gICBGQUlMIGV4cGVjdGVkICJhYmMgdXZ3IEFBQSBkZWYgbG1u
IlsgMTVdCi0iYWJjIHV2dyBBQUEgZGVmIGxtbiJbMTUsIDEyXSAgIEZBSUwgZXhwZWN0ZWQgImFi
YyB1dncgQUFBIGRlZiBsbW4iWyA4XQotImFiYyB1dncgQUFBIGRlZiBsbW4iWzE0LCAxMl0gICBG
QUlMIGV4cGVjdGVkICJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsgOF0KLSJhYmMgdXZ3IEFBQSBkZWYg
bG1uIlsxMywgMTJdICAgRkFJTCBleHBlY3RlZCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbIDhdCisi
QUJEIG9wcSByc3QgRFNVICJbMCwgNCwgNywgMTIsIDE2XSwgImFiYyB1dncgQUFBIGRlZiBsbW4i
WzE1LCA4LCA3LCAzXSwgIkFCVyBoaWogeHl6IEZYWCJbNCwgNywgMTIsIDE1XQogTW92ZSByaWdo
dCBieSBvbmUgd29yZAogIkFCVyBoaWogeHl6IEZYWCJbMTUsIDEyLCA3LCA0XSwgImFiYyB1dncg
QUFBIGRlZiBsbW4iWzMsIDcsIDgsIDE1XSwgIkFCRCBvcHEgcnN0IERTVSAiWzE2LCAxMiwgNywg
NCwgMF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128018</attachid>
            <date>2012-02-21 12:14:07 -0800</date>
            <delta_ts>2012-02-21 15:11:14 -0800</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>78856.v1</filename>
            <type>text/plain</type>
            <size>74188</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODAwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTE2ICBYaWFvbWVp
IEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2luZyBJQ1UgYnJlYWsgaXRlcmF0
b3IgdG8gc2ltcGxpZnkgdmlzdWFsIHdvcmQgbW92ZW1lbnQgaW1wbGVtZW50YXRpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVs
aWVzIG9uIElDVSB3b3JkIGJyZWFrIGl0ZXJhdG9yIGFuZCBjdXJzb3IgdmlzdWFsIG1vdmVtZW50
IGJ5IGNoYXJhY3RlciB0byBnZXQgdGhlIHdvcmQgYnJlYWsKKyAgICAgICAgcG9zaXRpb24gaW4g
dmlzdWFsIG9yZGVyLiBJdCByZWR1Y2VzIHRoZSBjb21wbGV4aXR5IG9mIG9sZCBpbXBsZW1lbnRh
dGlvbi4KKworICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1N0YXJ0T2ZXb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRW5kT2ZXb3JkKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNSb290SW5saW5l
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRSb290SW5saW5lQm94KToKKyAgICAgICAgKFdl
YkNvcmU6OnNlYXJjaFByZXZpb3VzQm94SW5TYW1lTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZWFyY2hOZXh0Qm94SW5TYW1lTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hQcmV2aW91
c0JveEluUHJldmlvdXNSb290SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OnNlYXJjaE5l
eHRCb3hJbk5leHRSb290SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdvcmRC
cmVha0l0ZXJhdG9yRm9yTWluT2Zmc2V0Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlV29yZEJyZWFrSXRlcmF0b3JGb3JNYXhPZmZzZXRCb3VuZGFyeSk6CisgICAgICAgIChXZWJD
b3JlOjp3b3JkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6bGVmdFdvcmRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpyaWdodFdvcmRQb3NpdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppc1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNXb3JkVGV4dEJyZWFrKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC93aW5jZS9UZXh0QnJlYWtJdGVyYXRvcldpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlzV29yZFRleHRCcmVhayk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wMi0xNSAgU2hp
bnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGFuIGlu
dGVybmFsIGZsYWcgdG8gYWNjZXB0IG11bHRpcGxlIHNoYWRvdyByb290cyBmb3IgdGhlIHB1cnBv
c2Ugb2YgdGVzdHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5j
cHAJKHJldmlzaW9uIDEwNjUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91
bml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDM1OCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIFdURjo6
VW5pY29kZTsKIAorLy8tLS0tIFRoZSBmb2xsb3dpbmcgNCBmdW5jdGlvbnMgYXJlIGp1c3QgbW92
ZWQgaGVyZSB3aXRob3V0IGFueSBmdW5jdGlvbmFsaXR5IG1vZGlmaWNhdGlvbnMgLS0tLS0vLwor
CisvLyBUaGUgZmlyc3QgbGVhZiBiZWZvcmUgbm9kZSB0aGF0IGhhcyB0aGUgc2FtZSBlZGl0YWJp
bGl0eSBhcyBub2RlLgorc3RhdGljIE5vZGUqIHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFiaWxp
dHkoTm9kZSogbm9kZSwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSkKK3sKKyAgICBib29sIGVk
aXRhYmxlID0gbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKGVkaXRhYmxlVHlwZSk7CisgICAgTm9k
ZSogbiA9IG5vZGUtPnByZXZpb3VzTGVhZk5vZGUoKTsKKyAgICB3aGlsZSAobikgeworICAgICAg
ICBpZiAoZWRpdGFibGUgPT0gbi0+cmVuZGVyZXJJc0VkaXRhYmxlKGVkaXRhYmxlVHlwZSkpCisg
ICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgbiA9IG4tPnByZXZpb3VzTGVhZk5vZGUoKTsK
KyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBOb2RlKiBlbmNsb3NpbmdOb2RlV2l0
aE5vbklubGluZVJlbmRlcmVyKE5vZGUqIG4pCit7CisgICAgZm9yIChOb2RlKiBwID0gbjsgcDsg
cCA9IHAtPnBhcmVudE5vZGUoKSkgeworICAgICAgICBpZiAocC0+cmVuZGVyZXIoKSAmJiAhcC0+
cmVuZGVyZXIoKS0+aXNJbmxpbmUoKSkKKyAgICAgICAgICAgIHJldHVybiBwOworICAgIH0KKyAg
ICByZXR1cm4gMDsKK30KKworc3RhdGljIE5vZGUqIG5leHRMZWFmV2l0aFNhbWVFZGl0YWJpbGl0
eShOb2RlKiBub2RlLCBpbnQgb2Zmc2V0KQoreworICAgIGJvb2wgZWRpdGFibGUgPSBub2RlLT5y
ZW5kZXJlcklzRWRpdGFibGUoKTsKKyAgICBBU1NFUlQob2Zmc2V0ID49IDApOworICAgIE5vZGUq
IGNoaWxkID0gbm9kZS0+Y2hpbGROb2RlKG9mZnNldCk7CisgICAgTm9kZSogbiA9IGNoaWxkID8g
Y2hpbGQtPm5leHRMZWFmTm9kZSgpIDogbm9kZS0+bGFzdERlc2NlbmRhbnQoKS0+bmV4dExlYWZO
b2RlKCk7CisgICAgd2hpbGUgKG4pIHsKKyAgICAgICAgaWYgKGVkaXRhYmxlID09IG4tPnJlbmRl
cmVySXNFZGl0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIG47CisgICAgICAgIG4gPSBuLT5u
ZXh0TGVhZk5vZGUoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBOb2RlKiBu
ZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkoTm9kZSogbm9kZSwgRWRpdGFibGVUeXBlIGVkaXRh
YmxlVHlwZSA9IENvbnRlbnRJc0VkaXRhYmxlKQoreworICAgIGlmICghbm9kZSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgCisgICAgYm9vbCBlZGl0YWJsZSA9IG5vZGUtPnJlbmRlcmVySXNFZGl0
YWJsZShlZGl0YWJsZVR5cGUpOworICAgIE5vZGUqIG4gPSBub2RlLT5uZXh0TGVhZk5vZGUoKTsK
KyAgICB3aGlsZSAobikgeworICAgICAgICBpZiAoZWRpdGFibGUgPT0gbi0+cmVuZGVyZXJJc0Vk
aXRhYmxlKGVkaXRhYmxlVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgbiA9
IG4tPm5leHRMZWFmTm9kZSgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0gIGJlZ2luIG9mIHZpc3VhbCB3b3JkIG1vdmVtZW50ICAtLS0tLS0tLS0tLS0tLS0t
LS0tLy8KKy8vIFRPRE86IGNvbnNvbGlkYXRlIHdpdGggcHJldmlvdXNMaW5lUG9zaXRpb24uCitz
dGF0aWMgY29uc3QgUm9vdElubGluZUJveCogcHJldmlvdXNSb290SW5saW5lQm94KGNvbnN0IElu
bGluZUJveCogYm94LCBjb25zdCBOb2RlKiBoaWdoZXN0Um9vdCkKK3sKKyAgICBOb2RlKiBub2Rl
ID0gYm94LT5yZW5kZXJlcigpLT5ub2RlKCk7CisgICAgTm9kZSogZW5jbG9zaW5nQmxvY2tOb2Rl
ID0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihub2RlKTsKKyAgICBOb2RlKiBw
cmV2aW91c05vZGUgPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5vZGUsIENvbnRl
bnRJc0VkaXRhYmxlKTsKKyAgICB3aGlsZSAocHJldmlvdXNOb2RlICYmIGVuY2xvc2luZ0Jsb2Nr
Tm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKHByZXZpb3VzTm9kZSkp
CisgICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFiaWxpdHko
cHJldmlvdXNOb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisgIAorICAgIHdoaWxlIChwcmV2aW91
c05vZGUgJiYgIXByZXZpb3VzTm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgaWYgKGhp
Z2hlc3RFZGl0YWJsZVJvb3QoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHByZXZpb3VzTm9k
ZSksIENvbnRlbnRJc0VkaXRhYmxlKSAhPSBoaWdoZXN0Um9vdCkKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIFBvc2l0aW9uIHBvcyA9IHByZXZpb3VzTm9kZS0+aGFzVGFnTmFtZShiclRh
ZykgPyBwb3NpdGlvbkJlZm9yZU5vZGUocHJldmlvdXNOb2RlKSA6IGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihwcmV2aW91c05vZGUsIGNhcmV0TWF4T2Zmc2V0KHByZXZpb3VzTm9kZSkpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKHBvcy5pc0NhbmRpZGF0ZSgpKSB7CisgICAgICAgICAgICBS
ZW5kZXJlZFBvc2l0aW9uIHJlbmRlcmVkUG9zKHBvcywgRE9XTlNUUkVBTSk7CisgICAgICAgICAg
ICBSb290SW5saW5lQm94KiByb290ID0gcmVuZGVyZWRQb3Mucm9vdEJveCgpOworICAgICAgICAg
ICAgaWYgKHJvb3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Q7CisgICAgICAgIH0KKwor
ICAgICAgICBwcmV2aW91c05vZGUgPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KHBy
ZXZpb3VzTm9kZSwgQ29udGVudElzRWRpdGFibGUpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30K
Kworc3RhdGljIGNvbnN0IFJvb3RJbmxpbmVCb3gqIG5leHRSb290SW5saW5lQm94KGNvbnN0IElu
bGluZUJveCogYm94LCBjb25zdCBOb2RlKiBoaWdoZXN0Um9vdCkKK3sKKyAgICBOb2RlKiBub2Rl
ID0gYm94LT5yZW5kZXJlcigpLT5ub2RlKCk7CisgICAgTm9kZSogZW5jbG9zaW5nQmxvY2tOb2Rl
ID0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihub2RlKTsKKyAgICBOb2RlKiBu
ZXh0Tm9kZSA9IG5leHRMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShub2RlLCBDb250ZW50SXNFZGl0
YWJsZSk7CisgICAgd2hpbGUgKG5leHROb2RlICYmIGVuY2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNs
b3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKG5leHROb2RlKSkKKyAgICAgICAgbmV4dE5v
ZGUgPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobmV4dE5vZGUsIENvbnRlbnRJc0VkaXRh
YmxlKTsKKyAgCisgICAgd2hpbGUgKG5leHROb2RlICYmICFuZXh0Tm9kZS0+aXNTaGFkb3dSb290
KCkpIHsKKyAgICAgICAgaWYgKGhpZ2hlc3RFZGl0YWJsZVJvb3QoZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKG5leHROb2RlKSwgQ29udGVudElzRWRpdGFibGUpICE9IGhpZ2hlc3RSb290KQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgUG9zaXRpb24gcG9zOworICAgICAgICBwb3Mg
PSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obmV4dE5vZGUsIGNhcmV0TWluT2Zmc2V0KG5l
eHROb2RlKSk7CisgICAgICAgIAorICAgICAgICBpZiAocG9zLmlzQ2FuZGlkYXRlKCkpIHsKKyAg
ICAgICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3MocG9zLCBET1dOU1RSRUFNKTsK
KyAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIHJvb3QgPSByZW5kZXJlZFBvcy5yb290Qm94KCk7
CisgICAgICAgICAgICBpZiAocm9vdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcm9vdDsKKyAg
ICAgICAgfQorCisgICAgICAgIG5leHROb2RlID0gbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5
KG5leHROb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisgICAgfQorICAgIHJldHVybiAwOworfQor
CitzdGF0aWMgdm9pZCBzZWFyY2hQcmV2aW91c0JveEluU2FtZUxpbmUoY29uc3QgSW5saW5lVGV4
dEJveCogdGV4dEJveCwgSW5saW5lVGV4dEJveComIHByZXZpb3VzQm94KQoreworICAgIFZlY3Rv
cjxJbmxpbmVCb3gqPiBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcjsKKyAgICB0ZXh0Qm94LT5yb290
KCktPmNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihsZWFmQm94ZXNJbkxvZ2ljYWxPcmRl
cik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlYWZCb3hlc0luTG9naWNhbE9yZGVy
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICh0ZXh0Qm94ID09IGxlYWZCb3hlc0luTG9naWNh
bE9yZGVyW2ldKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChsZWFmQm94ZXNJbkxv
Z2ljYWxPcmRlcltpXS0+aXNJbmxpbmVUZXh0Qm94KCkpCisgICAgICAgICAgICBwcmV2aW91c0Jv
eCA9IHRvSW5saW5lVGV4dEJveChsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcltpXSk7CisgICAgfQor
fQorCitzdGF0aWMgdm9pZCBzZWFyY2hOZXh0Qm94SW5TYW1lTGluZShjb25zdCBJbmxpbmVUZXh0
Qm94KiB0ZXh0Qm94LCBJbmxpbmVUZXh0Qm94KiYgbmV4dEJveCkKK3sKKyAgICBWZWN0b3I8SW5s
aW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7CisgICAgdGV4dEJveC0+cm9vdCgpLT5j
b2xsZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXpl
KCk7ICsraSkgeworICAgICAgICBpZiAodGV4dEJveCA9PSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRl
cltpXSkgeworICAgICAgICAgICAgc2l6ZV90IGogPSBpICsgMTsKKyAgICAgICAgICAgIHdoaWxl
IChqIDwgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAg
aWYgKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2pdLT5pc0lubGluZVRleHRCb3goKSkgeworICAg
ICAgICAgICAgICAgICAgICBuZXh0Qm94ID0gdG9JbmxpbmVUZXh0Qm94KGxlYWZCb3hlc0luTG9n
aWNhbE9yZGVyW2pdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaFByZXZpb3VzQm94SW5QcmV2aW91c1Jvb3RJbmxpbmVC
b3goY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGNvbnN0IElubGluZVRl
eHRCb3gqIHRleHRCb3gsCisgICAgSW5saW5lVGV4dEJveComIHByZXZpb3VzQm94LCBib29sJiBw
cmV2aW91c0JveEluRGlmZmVyZW50TGluZSkKK3sKKyAgICBOb2RlKiBoaWdoZXN0Um9vdCA9IGhp
Z2hlc3RFZGl0YWJsZVJvb3QodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCksIENvbnRl
bnRJc0VkaXRhYmxlKTsKKyAgICBjb25zdCBJbmxpbmVCb3gqIHN0YXJ0Qm94ID0gdGV4dEJveDsK
KyAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7CisKKyAgICB3
aGlsZSAoMSkgeyAKKyAgICAgICAgY29uc3QgUm9vdElubGluZUJveCogcHJldmlvdXNSb290ID0g
cHJldmlvdXNSb290SW5saW5lQm94KHN0YXJ0Qm94LCBoaWdoZXN0Um9vdCk7CisgICAgICAgIGlm
ICghcHJldmlvdXNSb290KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgbGVhZkJveGVz
SW5Mb2dpY2FsT3JkZXIuY2xlYXIoKTsKKyAgICAgICAgcHJldmlvdXNSb290LT5jb2xsZWN0TGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworICAgICAgICBp
bnQgaSA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLnNpemUoKSAtIDE7CisgICAgICAgIGZvciAo
OyBpID49MDsgLS1pKSB7CisgICAgICAgICAgICBpZiAobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJb
aV0tPmlzSW5saW5lVGV4dEJveCgpKSB7CisgICAgICAgICAgICAgICAgcHJldmlvdXNCb3ggPSB0
b0lubGluZVRleHRCb3gobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbaV0pOworICAgICAgICAgICAg
ICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSAwKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXpl
KCkpCisgICAgICAgICAgICBzdGFydEJveCA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyWzBdOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk
IHNlYXJjaE5leHRCb3hJbk5leHRSb290SW5saW5lQm94KGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dmlzaWJsZVBvc2l0aW9uLCBjb25zdCBJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LAorICAgIElubGlu
ZVRleHRCb3gqJiBuZXh0Qm94LCBib29sJiBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lKQoreworICAg
IE5vZGUqIGhpZ2hlc3RSb290ID0gaGlnaGVzdEVkaXRhYmxlUm9vdCh2aXNpYmxlUG9zaXRpb24u
ZGVlcEVxdWl2YWxlbnQoKSwgQ29udGVudElzRWRpdGFibGUpOworICAgIGNvbnN0IElubGluZUJv
eCogc3RhcnRCb3ggPSB0ZXh0Qm94OworICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBsZWFmQm94ZXNJ
bkxvZ2ljYWxPcmRlcjsKKworICAgIHdoaWxlICgxKSB7IAorICAgICAgICBjb25zdCBSb290SW5s
aW5lQm94KiBuZXh0Um9vdCA9IG5leHRSb290SW5saW5lQm94KHN0YXJ0Qm94LCBoaWdoZXN0Um9v
dCk7CisgICAgICAgIGlmICghbmV4dFJvb3QpCisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5jbGVhcigpOworICAgICAgICBuZXh0Um9vdC0+Y29s
bGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKKyAg
ICAgICAgc2l6ZV90IGkgPSAwOworICAgICAgICBmb3IgKDsgaSA8IGxlYWZCb3hlc0luTG9naWNh
bE9yZGVyLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobGVhZkJveGVzSW5Mb2dpY2Fs
T3JkZXJbaV0tPmlzSW5saW5lVGV4dEJveCgpKSB7CisgICAgICAgICAgICAgICAgbmV4dEJveCA9
IHRvSW5saW5lVGV4dEJveChsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcltpXSk7CisgICAgICAgICAg
ICAgICAgbmV4dEJveEluRGlmZmVyZW50TGluZSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPCBsZWFmQm94ZXNJ
bkxvZ2ljYWxPcmRlci5zaXplKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGxl
YWZCb3hlc0luTG9naWNhbE9yZGVyLnNpemUoKSkKKyAgICAgICAgICAgIHN0YXJ0Qm94ID0gbGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXJbMF07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworc3RhdGljIHZvaWQgY3JlYXRlV29yZEJyZWFrSXRlcmF0b3JGb3JNaW5P
ZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29u
c3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwKKyAgICBUZXh0QnJlYWtJdGVyYXRvciomIGl0ZXIs
IGludCYgcHJldmlvdXNCb3hMZW4sIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQor
eworICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CisKKyAgICAvLyBUT0RP
OiBob3cgc2hvdWxkIHdlIGhhbmRsZSBub24tdGV4dCBib3g/CisgICAgSW5saW5lVGV4dEJveCog
cHJldmlvdXNCb3ggPSAwOworICAgIHNlYXJjaFByZXZpb3VzQm94SW5TYW1lTGluZSh0ZXh0Qm94
LCBwcmV2aW91c0JveCk7CisKKyAgICBpZiAoIXByZXZpb3VzQm94KQorICAgICAgICBzZWFyY2hQ
cmV2aW91c0JveEluUHJldmlvdXNSb290SW5saW5lQm94KHZpc2libGVQb3NpdGlvbiwgdGV4dEJv
eCwgcHJldmlvdXNCb3gsIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKTsKKworICAgIGludCBs
ZW4gPSAwOworICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOworICAgIGlmIChwcmV2aW91
c0JveCkgeworICAgICAgICBwcmV2aW91c0JveExlbiA9IHByZXZpb3VzQm94LT5sZW4oKTsKKyAg
ICAgICAgc3RyaW5nLmFwcGVuZChwcmV2aW91c0JveC0+dGV4dFJlbmRlcmVyKCktPnRleHQoKS0+
Y2hhcmFjdGVycygpICsgcHJldmlvdXNCb3gtPnN0YXJ0KCksIHByZXZpb3VzQm94TGVuKTsgCisg
ICAgICAgIGxlbiArPSBwcmV2aW91c0JveExlbjsKKyAgICB9CisgICAgc3RyaW5nLmFwcGVuZCh0
ZXh0Qm94LT50ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyB0ZXh0Qm94LT5z
dGFydCgpLCB0ZXh0Qm94LT5sZW4oKSk7CisgICAgbGVuICs9IHRleHRCb3gtPmxlbigpOworCisg
ICAgaXRlciA9IHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5kYXRhKCksIGxlbik7CisgICAgdGV4
dEJyZWFrRmlyc3QoaXRlcik7Cit9IAorCitzdGF0aWMgdm9pZCBjcmVhdGVXb3JkQnJlYWtJdGVy
YXRvckZvck1heE9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBv
c2l0aW9uLCBjb25zdCBJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LAorICAgIFRleHRCcmVha0l0ZXJh
dG9yKiYgaXRlciwgYm9vbCYgbmV4dEJveEluRGlmZmVyZW50TGluZSkKK3sKKyAgICBuZXh0Qm94
SW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CisKKyAgICAvLyBUT0RPOiBob3cgc2hvdWxkIHdlIGhh
bmRsZSBub24tdGV4dCBib3g/CisgICAgSW5saW5lVGV4dEJveCogbmV4dEJveCA9IDA7CisgICAg
c2VhcmNoTmV4dEJveEluU2FtZUxpbmUodGV4dEJveCwgbmV4dEJveCk7CisKKyAgICBpZiAoIW5l
eHRCb3gpCisgICAgICAgIHNlYXJjaE5leHRCb3hJbk5leHRSb290SW5saW5lQm94KHZpc2libGVQ
b3NpdGlvbiwgdGV4dEJveCwgbmV4dEJveCwgbmV4dEJveEluRGlmZmVyZW50TGluZSk7CisKKyAg
ICBpbnQgbGVuID0gMDsKKyAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IHN0cmluZzsKKyAgICBzdHJp
bmcuYXBwZW5kKHRleHRCb3gtPnRleHRSZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSAr
IHRleHRCb3gtPnN0YXJ0KCksIHRleHRCb3gtPmxlbigpKTsKKyAgICBsZW4gKz0gdGV4dEJveC0+
bGVuKCk7CisgICAgaWYgKG5leHRCb3gpIHsKKyAgICAgICAgc3RyaW5nLmFwcGVuZChuZXh0Qm94
LT50ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBuZXh0Qm94LT5zdGFydCgp
LCBuZXh0Qm94LT5sZW4oKSk7IAorICAgICAgICBsZW4gKz0gbmV4dEJveC0+bGVuKCk7CisgICAg
fQorCisgICAgaXRlciA9IHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5kYXRhKCksIGxlbik7Cisg
ICAgdGV4dEJyZWFrRmlyc3QoaXRlcik7Cit9IAorCitlbnVtIEVDdXJzb3JNb3ZlbWVudERpcmVj
dGlvbgoreworICAgIE1PVkVfTEVGVCwgTU9WRV9SSUdIVCwKK307CisKK3N0YXRpYyBib29sIGlz
U3RhcnRPZldvcmQoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBo
YXJkTGluZUJyZWFrKQoreworICAgIGJvb2wgYm91bmRhcnkgPSBoYXJkTGluZUJyZWFrID8gdHJ1
ZSA6IGlzVGV4dEJyZWFrKGl0ZXIsIHBvc2l0aW9uKTsKKyAgICBpZiAoIWJvdW5kYXJ5KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB0ZXh0QnJlYWtGb2xsb3dpbmcoaXRlciwgcG9zaXRp
b24pOworICAgIHJldHVybiBpc1dvcmRUZXh0QnJlYWsoaXRlcik7Cit9CisKK3N0YXRpYyBib29s
IGlzRW5kT2ZXb3JkKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyLCBpbnQgcG9zaXRpb24sIGJvb2wg
aGFyZExpbmVCcmVhaykKK3sKKyAgICBib29sIGJvdW5kYXJ5ID0gaXNUZXh0QnJlYWsoaXRlciwg
cG9zaXRpb24pOworICAgIHJldHVybiAoaGFyZExpbmVCcmVhayB8fCBib3VuZGFyeSkgJiYgaXNX
b3JkVGV4dEJyZWFrKGl0ZXIpOworfQorCitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHdvcmRQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgRUN1cnNvck1vdmVt
ZW50RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CisKKyAgICBUZXh0RGlyZWN0
aW9uIGJsb2NrRGlyZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxlUG9z
aXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgSW5saW5lQm94KiBwcmV2aW91c2x5VmlzaXRl
ZEJveCA9IDA7CisgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnQgPSB2aXNpYmxlUG9zaXRpb247
CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXI7CisKKyAgICB3aGlsZSAoMSkgeworICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gYWRqYWNlbnRCeUNoYXJhY3RlciA9IGRpcmVjdGlvbiA9PSBNT1ZF
X1JJR0hUID8gY3VycmVudC5yaWdodCh0cnVlKSA6IGN1cnJlbnQubGVmdCh0cnVlKTsgCisgICAg
ICAgIGlmIChhZGphY2VudEJ5Q2hhcmFjdGVyID09IGN1cnJlbnQgfHwgYWRqYWNlbnRCeUNoYXJh
Y3Rlci5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKKyAg
ICAKKyAgICAgICAgSW5saW5lQm94KiBib3g7CisgICAgICAgIGludCBvZmZzZXQ7CisgICAgICAg
IGFkamFjZW50QnlDaGFyYWN0ZXIuZ2V0SW5saW5lQm94QW5kT2Zmc2V0KGJveCwgb2Zmc2V0KTsK
KyAgICAKKyAgICAgICAgLy8gVE9ETzogaG93IHNob3VsZCB3ZSBoYW5kbGUgbm9uIHRleHQgYm94
PworICAgICAgICBpZiAoIWJveCB8fCAhYm94LT5pc0lubGluZVRleHRCb3goKSkKKyAgICAgICAg
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKKworICAgICAgICBJbmxpbmVUZXh0Qm94KiB0
ZXh0Qm94ID0gdG9JbmxpbmVUZXh0Qm94KGJveCk7CisgICAgICAgIGludCBwcmV2aW91c0JveExl
biA9IDA7CisgICAgICAgIGJvb2wgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUgPSBmYWxzZTsK
KyAgICAgICAgYm9vbCBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CisKKyAgICAgICAg
aWYgKG9mZnNldCA9PSBib3gtPmNhcmV0TWluT2Zmc2V0KCkpCisgICAgICAgICAgICBjcmVhdGVX
b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KHZpc2libGVQb3NpdGlvbiwgdGV4
dEJveCwgaXRlciwgcHJldmlvdXNCb3hMZW4sIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKTsK
KyAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID09IGJveC0+Y2FyZXRNYXhPZmZzZXQoKSkKKyAgICAg
ICAgICAgIGNyZWF0ZVdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkodmlzaWJs
ZVBvc2l0aW9uLCB0ZXh0Qm94LCBpdGVyLCBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocHJldmlvdXNseVZpc2l0ZWRCb3ggIT0gYm94KSB7
CisgICAgICAgICAgICAgICAgaXRlciA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHRCb3gtPnRleHRS
ZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIHRleHRCb3gtPnN0YXJ0KCksIHRleHRC
b3gtPmxlbigpKTsKKyAgICAgICAgICAgICAgICB0ZXh0QnJlYWtGaXJzdChpdGVyKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHByZXZpb3VzbHlWaXNpdGVkQm94ID0gYm94OworICAgICAg
ICB9CisgICAgCisgICAgICAgIGJvb2wgaXNXb3JkQnJlYWsgPSAoYm94LT5kaXJlY3Rpb24oKSA9
PSBibG9ja0RpcmVjdGlvbikgPworICAgICAgICAgICAgaXNTdGFydE9mV29yZChpdGVyLCBvZmZz
ZXQgLSB0ZXh0Qm94LT5zdGFydCgpICsgcHJldmlvdXNCb3hMZW4sCisgICAgICAgICAgICAgICAg
b2Zmc2V0ID09IChpbnQpdGV4dEJveC0+c3RhcnQoKSAmJiBwcmV2aW91c0JveEluRGlmZmVyZW50
TGluZSkgOgorICAgICAgICAgICAgaXNFbmRPZldvcmQoaXRlciwgb2Zmc2V0IC0gdGV4dEJveC0+
c3RhcnQoKSArIHByZXZpb3VzQm94TGVuLAorICAgICAgICAgICAgICAgIG9mZnNldCA9PSAoaW50
KSh0ZXh0Qm94LT5zdGFydCgpICsgdGV4dEJveC0+bGVuKCkpICYmIG5leHRCb3hJbkRpZmZlcmVu
dExpbmUpOworICAgICAgICBpZiAoaXNXb3JkQnJlYWspCisgICAgICAgICAgICByZXR1cm4gYWRq
YWNlbnRCeUNoYXJhY3RlcjsKKyAgICAKKyAgICAgICAgY3VycmVudCA9IGFkamFjZW50QnlDaGFy
YWN0ZXI7CisgICAgfQorICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKK30KKworVmlzaWJs
ZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxl
UG9zaXRpb24pCit7CisgICAgVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3JkQnJlYWsgPSB3b3JkUG9z
aXRpb24odmlzaWJsZVBvc2l0aW9uLCBNT1ZFX0xFRlQpOworICAgIAorICAgIC8vIEZJWE1FOiBI
b3cgc2hvdWxkIHdlIGhhbmRsZSBhIG5vbi1lZGl0YWJsZSBwb3NpdGlvbj8KKyAgICBpZiAobGVm
dFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0aW9u
LmRlZXBFcXVpdmFsZW50KCkpKSB7CisgICAgICAgIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rp
b24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZh
bGVudCgpKTsKKyAgICAgICAgbGVmdFdvcmRCcmVhayA9IGJsb2NrRGlyZWN0aW9uID09IExUUiA/
IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKSA6IGVuZE9mRWRpdGFibGVD
b250ZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgfQorICAgIHJldHVybiBsZWZ0V29yZEJyZWFr
OworfQorCitWaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCit7CisgICAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0V29y
ZEJyZWFrID0gd29yZFBvc2l0aW9uKHZpc2libGVQb3NpdGlvbiwgTU9WRV9SSUdIVCk7CisKKyAg
ICAvLyBGSVhNRTogSG93IHNob3VsZCB3ZSBoYW5kbGUgYSBub24tZWRpdGFibGUgcG9zaXRpb24/
CisgICAgaWYgKHJpZ2h0V29yZEJyZWFrLmlzTnVsbCgpICYmIGlzRWRpdGFibGVQb3NpdGlvbih2
aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpIHsKKyAgICAgICAgVGV4dERpcmVjdGlv
biBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2sodmlzaWJsZVBvc2l0
aW9uLmRlZXBFcXVpdmFsZW50KCkpOworICAgICAgICByaWdodFdvcmRCcmVhayA9IGJsb2NrRGly
ZWN0aW9uID09IExUUiA/IGVuZE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbikgOiBz
dGFydE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgfQorICAgIHJldHVy
biByaWdodFdvcmRCcmVhazsKK30KKy8vLS0tLS0tLS0tLS0tLS0tICBlbmQgb2YgdmlzdWFsIHdv
cmQgbW92ZW1lbnQgIC0tLS0tLS0tLS0tLS0tLS0tLS0vLworCiBlbnVtIEJvdW5kYXJ5U2VhcmNo
Q29udGV4dEF2YWlsYWJpbGl0eSB7IERvbnRIYXZlTW9yZUNvbnRleHQsIE1heUhhdmVNb3JlQ29u
dGV4dCB9OwogCiB0eXBlZGVmIHVuc2lnbmVkICgqQm91bmRhcnlTZWFyY2hGdW5jdGlvbikoY29u
c3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIG9mZnNldCwgQm91bmRhcnlTZWFy
Y2hDb250ZXh0QXZhaWxhYmlsaXR5LCBib29sJiBuZWVkTW9yZUNvbnRleHQpOwpAQCAtNTE3LDI4
ICs4NjksNiBAQCBib29sIGlzRW5kT2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmCiAgICAg
cmV0dXJuIHAuaXNOb3ROdWxsKCkgJiYgcCA9PSBlbmRPZkxpbmUocCk7CiB9CiAKLS8vIFRoZSBm
aXJzdCBsZWFmIGJlZm9yZSBub2RlIHRoYXQgaGFzIHRoZSBzYW1lIGVkaXRhYmlsaXR5IGFzIG5v
ZGUuCi1zdGF0aWMgTm9kZSogcHJldmlvdXNMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShOb2RlKiBu
b2RlLCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlKQotewotICAgIGJvb2wgZWRpdGFibGUgPSBu
b2RlLT5yZW5kZXJlcklzRWRpdGFibGUoZWRpdGFibGVUeXBlKTsKLSAgICBOb2RlKiBuID0gbm9k
ZS0+cHJldmlvdXNMZWFmTm9kZSgpOwotICAgIHdoaWxlIChuKSB7Ci0gICAgICAgIGlmIChlZGl0
YWJsZSA9PSBuLT5yZW5kZXJlcklzRWRpdGFibGUoZWRpdGFibGVUeXBlKSkKLSAgICAgICAgICAg
IHJldHVybiBuOwotICAgICAgICBuID0gbi0+cHJldmlvdXNMZWFmTm9kZSgpOwotICAgIH0KLSAg
ICByZXR1cm4gMDsKLX0KLQotc3RhdGljIE5vZGUqIGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5l
UmVuZGVyZXIoTm9kZSogbikKLXsKLSAgICBmb3IgKE5vZGUqIHAgPSBuOyBwOyBwID0gcC0+cGFy
ZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChwLT5yZW5kZXJlcigpICYmICFwLT5yZW5kZXJlcigp
LT5pc0lubGluZSgpKQotICAgICAgICAgICAgcmV0dXJuIHA7Ci0gICAgfQotICAgIHJldHVybiAw
OwotfQotCiBzdGF0aWMgaW5saW5lIEludFBvaW50IGFic29sdXRlTGluZURpcmVjdGlvblBvaW50
VG9Mb2NhbFBvaW50SW5CbG9jayhSb290SW5saW5lQm94KiByb290LCBpbnQgbGluZURpcmVjdGlv
blBvaW50KQogewogICAgIEFTU0VSVChyb290KTsKQEAgLTYyNSwzNCArOTU1LDYgQEAgVmlzaWJs
ZVBvc2l0aW9uIHByZXZpb3VzTGluZVBvc2l0aW9uKGNvbgogICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24oZmlyc3RQb3NpdGlvbkluTm9kZShyb290RWxlbWVudCksIERPV05TVFJFQU0pOwogfQog
Ci1zdGF0aWMgTm9kZSogbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KE5vZGUqIG5vZGUsIGlu
dCBvZmZzZXQpCi17Ci0gICAgYm9vbCBlZGl0YWJsZSA9IG5vZGUtPnJlbmRlcmVySXNFZGl0YWJs
ZSgpOwotICAgIEFTU0VSVChvZmZzZXQgPj0gMCk7Ci0gICAgTm9kZSogY2hpbGQgPSBub2RlLT5j
aGlsZE5vZGUob2Zmc2V0KTsKLSAgICBOb2RlKiBuID0gY2hpbGQgPyBjaGlsZC0+bmV4dExlYWZO
b2RlKCkgOiBub2RlLT5sYXN0RGVzY2VuZGFudCgpLT5uZXh0TGVhZk5vZGUoKTsKLSAgICB3aGls
ZSAobikgewotICAgICAgICBpZiAoZWRpdGFibGUgPT0gbi0+cmVuZGVyZXJJc0VkaXRhYmxlKCkp
Ci0gICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgbiA9IG4tPm5leHRMZWFmTm9kZSgpOwot
ICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIE5vZGUqIG5leHRMZWFmV2l0aFNhbWVF
ZGl0YWJpbGl0eShOb2RlKiBub2RlLCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlID0gQ29udGVu
dElzRWRpdGFibGUpCi17Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gMDsKLSAgICAK
LSAgICBib29sIGVkaXRhYmxlID0gbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKGVkaXRhYmxlVHlw
ZSk7Ci0gICAgTm9kZSogbiA9IG5vZGUtPm5leHRMZWFmTm9kZSgpOwotICAgIHdoaWxlIChuKSB7
Ci0gICAgICAgIGlmIChlZGl0YWJsZSA9PSBuLT5yZW5kZXJlcklzRWRpdGFibGUoZWRpdGFibGVU
eXBlKSkKLSAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICBuID0gbi0+bmV4dExlYWZOb2Rl
KCk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQogCiBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJnZpc2libGVQb3NpdGlvbiwgaW50IGxpbmVE
aXJlY3Rpb25Qb2ludCwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSkKIHsKQEAgLTEwOTksNTQz
ICsxNDAxLDQgQEAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0Qm91bmRhcnlPZkxpbmUoY29ucwogICAg
IHJldHVybiBkaXJlY3Rpb24gPT0gTFRSID8gbG9naWNhbEVuZE9mTGluZShjKSA6IGxvZ2ljYWxT
dGFydE9mTGluZShjKTsKIH0KIAotc3RhdGljIGNvbnN0IGludCBpbnZhbGlkT2Zmc2V0ID0gLTE7
Ci1zdGF0aWMgY29uc3QgaW50IG9mZnNldE5vdEZvdW5kID0gLTE7Ci0KLXN0YXRpYyBib29sIHBv
c2l0aW9uSXNJbkJveChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHdvcmRCcmVhaywgY29uc3QgSW5s
aW5lQm94KiBib3gsIGludCYgb2Zmc2V0T2ZXb3JkQnJlYWspCi17Ci0gICAgaWYgKHdvcmRCcmVh
ay5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSW5saW5lQm94KiBib3hP
ZldvcmRCcmVhazsKLSAgICB3b3JkQnJlYWsuZ2V0SW5saW5lQm94QW5kT2Zmc2V0KGJveE9mV29y
ZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhayk7Ci0gICAgcmV0dXJuIGJveCA9PSBib3hPZldvcmRC
cmVhazsKLX0KLQotc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRCcmVha0luQm94
SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGNvbnN0IElubGluZUJveCogYm94LCBj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHByZXZpb3VzV29yZEJyZWFrLCBpbnQmIG9mZnNldE9mV29y
ZEJyZWFrKQotewotICAgIC8vIEluIGEgTFRSIGJsb2NrLCB0aGUgd29yZCBicmVhayBzaG91bGQg
YmUgb24gdGhlIGxlZnQgYm91bmRhcnkgb2YgYSB3b3JkLgotICAgIC8vIEluIGEgUlRMIGJsb2Nr
LCB0aGUgd29yZCBicmVhayBzaG91bGQgYmUgb24gdGhlIHJpZ2h0IGJvdW5kYXJ5IG9mIGEgd29y
ZC4KLSAgICAvLyBCZWNhdXNlIG5leHRXb3JkUG9zaXRpb24oKSByZXR1cm5zIHRoZSB3b3JkIGJy
ZWFrIG9uIHRoZSByaWdodCBib3VuZGFyeSBvZiB0aGUgd29yZCBmb3IgTFRSIHRleHQsCi0gICAg
Ly8gd2UgbmVlZCB0byB1c2UgcHJldmlvdXNXb3JkUG9zaXRpb24oKSB0byB0cmF2ZXJzZSB3b3Jk
cyB3aXRoaW4gdGhlIGlubGluZSBib3hlcyBmcm9tIHJpZ2h0IHRvIGxlZnQKLSAgICAvLyB0byBm
aW5kIHRoZSBwcmV2aW91cyB3b3JkIGJyZWFrIChpLmUuIHRoZSBmaXJzdCB3b3JkIGJyZWFrIG9u
IHRoZSBsZWZ0KS4gVGhlIHNhbWUgYXBwbGllcyB0byBSVEwgdGV4dC4KLSAgICAKLSAgICBib29s
IGhhc1NlZW5Xb3JkQnJlYWtJblRoaXNCb3ggPSBwcmV2aW91c1dvcmRCcmVhay5pc05vdE51bGwo
KTsKLQotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0KLSAgICBpZiAoaGFzU2Vlbldv
cmRCcmVha0luVGhpc0JveCkKLSAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNXb3JkQnJlYWs7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIHdvcmRCcmVhayA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihib3gtPnJlbmRlcmVyKCktPm5vZGUoKSwgYm94LT5jYXJldE1heE9mZnNldCgpKTsKLQot
ICAgICAgICAvLyBSZXR1cm4gdGhlIHJpZ2h0bW9zdCB3b3JkIGJvdW5kYXJ5IG9mIExUUiBib3gg
b3IgbGVmdG1vc3Qgd29yZCBib3VuZGFyeSBvZiBSVEwgYm94IGlmCi0gICAgICAgIC8vIGl0IGlz
IG5vdCBpbiB0aGUgcHJldmlvdXNseSB2aXNpdGVkIGJveGVzLiBGb3IgZXhhbXBsZSwgZ2l2ZW4g
YSBsb2dpY2FsIHRleHQgCi0gICAgICAgIC8vICJhYmMgZGVmICAgICBoaWogb3BxIiwgdGhlcmUg
YXJlIDIgYm94ZXM6IHRoZSAiYWJjIGRlZiAiIChzdGFydHMgYXQgMCBhbmQgbGVuZ3RoIGlzIDgp
IAotICAgICAgICAvLyBhbmQgdGhlICJoaWogb3BxIiAoc3RhcnRzIGF0IDEyIGFuZCBsZW5ndGgg
aXMgNykuIFRoZSB3b3JkIGJyZWFrcyBhcmUgCi0gICAgICAgIC8vICJhYmMgfGRlZiB8ICAgIGhp
aiB8b3BxIi4gV2Ugbm9ybWFsbHkgY2F0Y2ggdGhlIHdvcmQgYnJlYWsgYmV0d2VlbiAiZGVmIiBh
bmQgImhpaiIgd2hlbgotICAgICAgICAvLyB3ZSB2aXNpdCB0aGUgYm94IHRoYXQgY29udGFpbnMg
ImhpaiBvcHEiLCBidXQgdGhpcyB3b3JkIGJyZWFrIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIGJveAot
ICAgICAgICAvLyB0aGF0IGNvbnRhaW5zICJoaWogb3BxIiB3aGVuIHRoZXJlIGFyZSBtdWx0aXBs
ZSBzcGFjZXMuIFNvIHdlIGRldGVjdCBpdCB3aGVuIHdlJ3JlCi0gICAgICAgIC8vIHRyYXZlcnNp
bmcgdGhlIGJveCB0aGF0IGNvbnRhaW5zICJhYmMgZGVmICIgaW5zdGVhZC4KLQotICAgICAgICBp
ZiAoKGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYmIGJveC0+bmV4dExlYWZDaGlsZCgp
KQotICAgICAgICAgICAgfHwgKCFib3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBib3gt
PnByZXZMZWFmQ2hpbGQoKSkpIHsKLQotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0
aW9uQWZ0ZXJXb3JkID0gbmV4dEJvdW5kYXJ5KHdvcmRCcmVhaywgbmV4dFdvcmRQb3NpdGlvbkJv
dW5kYXJ5KTsKLSAgICAgICAgICAgIGlmIChwb3NpdGlvbkFmdGVyV29yZC5pc05vdE51bGwoKSkg
ewotICAgICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZVdvcmQgPSBw
cmV2aW91c0JvdW5kYXJ5KHBvc2l0aW9uQWZ0ZXJXb3JkLCBwcmV2aW91c1dvcmRQb3NpdGlvbkJv
dW5kYXJ5KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbklzSW5C
b3gocG9zaXRpb25CZWZvcmVXb3JkLCBib3gsIG9mZnNldE9mV29yZEJyZWFrKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uQmVmb3JlV29yZDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLSAgCi0gICAgd29yZEJyZWFrID0gcHJldmlvdXNCb3VuZGFyeSh3b3Jk
QnJlYWssIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnkpOwotICAgIGlmIChwcmV2aW91c1dv
cmRCcmVhayA9PSB3b3JkQnJlYWspCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsK
LQotICAgIHJldHVybiBwb3NpdGlvbklzSW5Cb3god29yZEJyZWFrLCBib3gsIG9mZnNldE9mV29y
ZEJyZWFrKSA/IHdvcmRCcmVhayA6IFZpc2libGVQb3NpdGlvbigpOwotfQotCi1zdGF0aWMgVmlz
aWJsZVBvc2l0aW9uIGxlZnRtb3N0UG9zaXRpb25JblJUTEJveEluTFRSQmxvY2soY29uc3QgSW5s
aW5lQm94KiBib3gpCi17Ci0gICAgLy8gRklYTUU6IFByb2JhYmx5IG5lZWQgdG8gdGFrZSBjYXJl
IG9mIGJpZGkgbGV2ZWwgdG9vLgotICAgIE5vZGUqIG5vZGUgPSBib3gtPnJlbmRlcmVyKCktPm5v
ZGUoKTsKLSAgICBJbmxpbmVCb3gqIHByZXZpb3VzTGVhZiA9IGJveC0+cHJldkxlYWZDaGlsZCgp
OwotICAgIElubGluZUJveCogbmV4dExlYWYgPSBib3gtPm5leHRMZWFmQ2hpbGQoKTsgICAKLSAg
ICAKLSAgICBpZiAocHJldmlvdXNMZWFmICYmICFwcmV2aW91c0xlYWYtPmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihu
b2RlLCBib3gtPmNhcmV0TWF4T2Zmc2V0KCkpOwotCi0gICAgaWYgKG5leHRMZWFmICYmICFuZXh0
TGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7Ci0gICAgICAgIGlmIChwcmV2aW91c0xl
YWYpCi0gICAgICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHByZXZp
b3VzTGVhZi0+cmVuZGVyZXIoKS0+bm9kZSgpLCBwcmV2aW91c0xlYWYtPmNhcmV0TWF4T2Zmc2V0
KCkpOwotCi0gICAgICAgIElubGluZUJveCogbGFzdFJUTExlYWY7Ci0gICAgICAgIGRvIHsKLSAg
ICAgICAgICAgIGxhc3RSVExMZWFmID0gbmV4dExlYWY7Ci0gICAgICAgICAgICBuZXh0TGVhZiA9
IG5leHRMZWFmLT5uZXh0TGVhZkNoaWxkKCk7Ci0gICAgICAgIH0gd2hpbGUgKG5leHRMZWFmICYm
ICFuZXh0TGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKTsKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihsYXN0UlRMTGVhZi0+cmVuZGVyZXIoKS0+bm9kZSgp
LCBsYXN0UlRMTGVhZi0+Y2FyZXRNaW5PZmZzZXQoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNy
ZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBib3gtPmNhcmV0TWluT2Zmc2V0KCkpOwot
fQotCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0bW9zdFBvc2l0aW9uSW5MVFJCb3hJblJU
TEJsb2NrKGNvbnN0IElubGluZUJveCogYm94KQotewotICAgIC8vIEZJWE1FOiBQcm9iYWJseSBu
ZWVkIHRvIHRha2UgY2FyZSBvZiBiaWRpIGxldmVsIHRvby4KLSAgICBOb2RlKiBub2RlID0gYm94
LT5yZW5kZXJlcigpLT5ub2RlKCk7Ci0gICAgSW5saW5lQm94KiBwcmV2aW91c0xlYWYgPSBib3gt
PnByZXZMZWFmQ2hpbGQoKTsKLSAgICBJbmxpbmVCb3gqIG5leHRMZWFmID0gYm94LT5uZXh0TGVh
ZkNoaWxkKCk7ICAgCi0gICAgCi0gICAgaWYgKG5leHRMZWFmICYmIG5leHRMZWFmLT5pc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKCkpICAgIAotICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKG5vZGUsIGJveC0+Y2FyZXRNYXhPZmZzZXQoKSk7Ci0KLSAgICBpZiAocHJldmlv
dXNMZWFmICYmIHByZXZpb3VzTGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7Ci0gICAg
ICAgIGlmIChuZXh0TGVhZikKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24obmV4dExlYWYtPnJlbmRlcmVyKCktPm5vZGUoKSwgbmV4dExlYWYtPmNhcmV0TWF4
T2Zmc2V0KCkpOwotCi0gICAgICAgIElubGluZUJveCogZmlyc3RMVFJMZWFmOwotICAgICAgICBk
byB7Ci0gICAgICAgICAgICBmaXJzdExUUkxlYWYgPSBwcmV2aW91c0xlYWY7Ci0gICAgICAgICAg
ICBwcmV2aW91c0xlYWYgPSBwcmV2aW91c0xlYWYtPnByZXZMZWFmQ2hpbGQoKTsKLSAgICAgICAg
fSB3aGlsZSAocHJldmlvdXNMZWFmICYmIHByZXZpb3VzTGVhZi0+aXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihmaXJz
dExUUkxlYWYtPnJlbmRlcmVyKCktPm5vZGUoKSwgZmlyc3RMVFJMZWFmLT5jYXJldE1pbk9mZnNl
dCgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5v
ZGUsIGJveC0+Y2FyZXRNaW5PZmZzZXQoKSk7Ci19Ci0gICAgCi1zdGF0aWMgVmlzaWJsZVBvc2l0
aW9uIGxhc3RXb3JkQnJlYWtJbkJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50JiBvZmZzZXRP
ZldvcmRCcmVhaykKLXsKLSAgICAvLyBBZGQgdGhlIGxlZnRtb3N0IHdvcmQgYnJlYWsgZm9yIFJU
TCBib3ggb3IgcmlnaHRtb3N0IHdvcmQgYnJlYWsgZm9yIExUUiBib3guCi0gICAgSW5saW5lQm94
KiBwcmV2aW91c0xlYWYgPSBib3gtPnByZXZMZWFmQ2hpbGQoKTsKLSAgICBJbmxpbmVCb3gqIG5l
eHRMZWFmID0gYm94LT5uZXh0TGVhZkNoaWxkKCk7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIGJvdW5k
YXJ5UG9zaXRpb247Ci0gICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gUlRMICYmICghcHJldmlv
dXNMZWFmIHx8IHByZXZpb3VzTGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSkKLSAgICAg
ICAgYm91bmRhcnlQb3NpdGlvbiA9IGxlZnRtb3N0UG9zaXRpb25JblJUTEJveEluTFRSQmxvY2so
Ym94KTsKLSAgICBlbHNlIGlmIChib3gtPmRpcmVjdGlvbigpID09IExUUiAmJiAoIW5leHRMZWFm
IHx8ICFuZXh0TGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSkKLSAgICAgICAgYm91bmRh
cnlQb3NpdGlvbiA9IHJpZ2h0bW9zdFBvc2l0aW9uSW5MVFJCb3hJblJUTEJsb2NrKGJveCk7Ci0K
LSAgICBpZiAoYm91bmRhcnlQb3NpdGlvbi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbigpOyAgICAgICAgICAgIAotCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVh
ayA9IG5leHRCb3VuZGFyeShib3VuZGFyeVBvc2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uQm91bmRh
cnkpOwotICAgIGlmICh3b3JkQnJlYWsuaXNOdWxsKCkpCi0gICAgICAgIHdvcmRCcmVhayA9IGJv
dW5kYXJ5UG9zaXRpb247Ci0gICAgZWxzZSBpZiAod29yZEJyZWFrICE9IGJvdW5kYXJ5UG9zaXRp
b24pCi0gICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzQm91bmRhcnkod29yZEJyZWFrLCBwcmV2
aW91c1dvcmRQb3NpdGlvbkJvdW5kYXJ5KTsKLQotICAgIHJldHVybiBwb3NpdGlvbklzSW5Cb3go
d29yZEJyZWFrLCBib3gsIG9mZnNldE9mV29yZEJyZWFrKSA/IHdvcmRCcmVhayA6IFZpc2libGVQ
b3NpdGlvbigpOyAgICAKLX0KLQotc3RhdGljIGJvb2wgcG9zaXRpb25Jc1Zpc3VhbGx5T3JkZXJl
ZEluQm94SW5CbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25hbGl0eShjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHdvcmRCcmVhaywgY29uc3QgSW5saW5lQm94KiBib3gsIGludCYgb2Zmc2V0T2ZXb3Jk
QnJlYWspCi17Ci0gICAgaW50IHByZXZpb3VzT2Zmc2V0ID0gb2Zmc2V0T2ZXb3JkQnJlYWs7Ci0g
ICAgcmV0dXJuIHBvc2l0aW9uSXNJbkJveCh3b3JkQnJlYWssIGJveCwgb2Zmc2V0T2ZXb3JkQnJl
YWspCi0gICAgICAgICYmIChwcmV2aW91c09mZnNldCA9PSBpbnZhbGlkT2Zmc2V0IHx8IHByZXZp
b3VzT2Zmc2V0IDwgb2Zmc2V0T2ZXb3JkQnJlYWspOwotfQotICAgIAotc3RhdGljIFZpc2libGVQ
b3NpdGlvbiBuZXh0V29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rp
b25hbGl0eSgKLSAgICBjb25zdCBJbmxpbmVCb3gqIGJveCwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBwcmV2aW91c1dvcmRCcmVhaywgaW50JiBvZmZzZXRPZldvcmRCcmVhaywgYm9vbCYgaXNMYXN0
V29yZEJyZWFrSW5Cb3gpCi17Ci0gICAgLy8gRklYTUU6IFByb2JhYmx5IG5lZWQgdG8gdGFrZSBj
YXJlIG9mIGJpZGkgbGV2ZWwgdG9vLgotICAgIAotICAgIC8vIEluIGEgTFRSIGJsb2NrLCB0aGUg
d29yZCBicmVhayBzaG91bGQgYmUgb24gdGhlIGxlZnQgYm91bmRhcnkgb2YgYSB3b3JkLgotICAg
IC8vIEluIGEgUlRMIGJsb2NrLCB0aGUgd29yZCBicmVhayBzaG91bGQgYmUgb24gdGhlIHJpZ2h0
IGJvdW5kYXJ5IG9mIGEgd29yZC4KLSAgICAvLyBCZWNhdXNlIHByZXZpb3VzV29yZFBvc2l0aW9u
KCkgcmV0dXJucyB0aGUgd29yZCBicmVhayBvbiB0aGUgcmlnaHQgYm91bmRhcnkgb2YgdGhlIHdv
cmQgZm9yIFJUTCB0ZXh0LAotICAgIC8vIHdlIG5lZWQgdG8gdXNlIG5leHRXb3JkUG9zaXRpb24o
KSB0byB0cmF2ZXJzZSB3b3JkcyB3aXRoaW4gdGhlIGlubGluZSBib3hlcyBmcm9tIHJpZ2h0IHRv
IGxlZnQgdG8gZmluZCB0aGUgbmV4dCB3b3JkIGJyZWFrLgotICAgIC8vIFRoZSBzYW1lIGFwcGxp
ZXMgdG8gTFRSIHRleHQsIGluIHdoaWNoIHdvcmRzIGFyZSB0cmF2ZXJzZWQgd2l0aGluIHRoZSBp
bmxpbmUgYm94ZXMgZnJvbSBsZWZ0IHRvIHJpZ2h0LgotICAgIAotICAgIGJvb2wgaGFzU2Vlbldv
cmRCcmVha0luVGhpc0JveCA9IHByZXZpb3VzV29yZEJyZWFrLmlzTm90TnVsbCgpOwotICAgIFZp
c2libGVQb3NpdGlvbiB3b3JkQnJlYWsgPSBoYXNTZWVuV29yZEJyZWFrSW5UaGlzQm94ID8gcHJl
dmlvdXNXb3JkQnJlYWsgOiAKLSAgICAgICAgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGJv
eC0+cmVuZGVyZXIoKS0+bm9kZSgpLCBib3gtPmNhcmV0TWluT2Zmc2V0KCkpOwotCi0gICAgd29y
ZEJyZWFrID0gbmV4dEJvdW5kYXJ5KHdvcmRCcmVhaywgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5
KTsKLSAgCi0gICAgLy8gR2l2ZW4gUlRMIGJveCAiQUJDIERFRiIgZWl0aGVyIGZvbGxvd3MgYSBM
VFIgYm94IG9yIGlzIHRoZSBmaXJzdCB2aXN1YWwgYm94IGluIGFuIExUUiBibG9jayBhcyBhbiBl
eGFtcGxlLAotICAgIC8vIHRoZSB2aXN1YWwgZGlzcGxheSBvZiB0aGUgUlRMIGJveCBpczogIigw
KUooMTApSSg5KUgoOCkgKDcpRig2KUUoNSlEKDQpICgzKUMoMilCKDEpQSgxMSkiLAotICAgIC8v
IHdoZXJlIHRoZSBudW1iZXIgaW4gcGFyZW50aGVzaXMgcmVwcmVzZW50cyBvZmZzZXQgaW4gdmlz
aWJsZVBvc2l0aW9uLiAKLSAgICAvLyBTdGFydCBhdCBvZmZzZXQgMCwgdGhlIGZpcnN0IHdvcmQg
YnJlYWsgaXMgYXQgb2Zmc2V0IDMsIHRoZSAybmQgd29yZCBicmVhayBpcyBhdCBvZmZzZXQgNywg
YW5kIHRoZSAzcmQgd29yZCBicmVhayBzaG91bGQgYmUgYXQgb2Zmc2V0IDAuCi0gICAgLy8gQnV0
IG5leHRXb3JkUG9zaXRpb24oKSBvZiBvZmZzZXQgNyBpcyBvZmZzZXQgMTEsIHdoaWNoIHNob3Vs
ZCBiZSBpZ25vcmVkLCAKLSAgICAvLyBhbmQgdGhlIHBvc2l0aW9uIGF0IG9mZnNldCAwIHNob3Vs
ZCBiZSBtYW51YWxseSBhZGRlZCBhcyB0aGUgbGFzdCB3b3JkIGJyZWFrIHdpdGhpbiB0aGUgYm94
LgotICAgIGlmICh3b3JkQnJlYWsgIT0gcHJldmlvdXNXb3JkQnJlYWsgJiYgcG9zaXRpb25Jc1Zp
c3VhbGx5T3JkZXJlZEluQm94SW5CbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25hbGl0eSh3b3Jk
QnJlYWssIGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspKSB7Ci0gICAgICAgIGlzTGFzdFdvcmRCcmVh
a0luQm94ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiB3b3JkQnJlYWs7Ci0gICAgfQotICAgIAot
ICAgIGlzTGFzdFdvcmRCcmVha0luQm94ID0gdHJ1ZTsKLSAgICByZXR1cm4gbGFzdFdvcmRCcmVh
a0luQm94KGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspOwotfQotCi1zdHJ1Y3QgV29yZEJvdW5kYXJ5
RW50cnkgewotICAgIFdvcmRCb3VuZGFyeUVudHJ5KCkKLSAgICAgICAgOiBvZmZzZXRJbklubGlu
ZUJveChpbnZhbGlkT2Zmc2V0KSAKLSAgICB7IAotICAgIH0KLQotICAgIFdvcmRCb3VuZGFyeUVu
dHJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvZmZzZXQpCi0gICAgICAg
IDogdmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uKQotICAgICAgICAsIG9mZnNldEluSW5saW5lQm94
KG9mZnNldCkgCi0gICAgeyAKLSAgICB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBv
c2l0aW9uOwotICAgIGludCBvZmZzZXRJbklubGluZUJveDsKLX07Ci0gICAgCi10eXBlZGVmIFZl
Y3RvcjxXb3JkQm91bmRhcnlFbnRyeSwgNTA+IFdvcmRCb3VuZGFyeVZlY3RvcjsKLSAgICAKLXN0
YXRpYyB2b2lkIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0
aW9uYWxpdHkoY29uc3QgSW5saW5lQm94KiBib3gsIFdvcmRCb3VuZGFyeVZlY3RvciYgb3JkZXJl
ZFdvcmRCb3VuZGFyaWVzKQotewotICAgIG9yZGVyZWRXb3JkQm91bmRhcmllcy5jbGVhcigpOwot
Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBpbnQgb2Zmc2V0T2ZXb3JkQnJl
YWsgPSBpbnZhbGlkT2Zmc2V0OwotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIHdvcmRCcmVhayA9
IHByZXZpb3VzV29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHko
Ym94LCB3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrKTsKLSAgICAgICAgaWYgKHdvcmRCcmVh
ay5pc051bGwoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBXb3JkQm91bmRhcnlFbnRy
eSB3b3JkQm91bmRhcnlFbnRyeSh3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrKTsKLSAgICAg
ICAgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLmFwcGVuZCh3b3JkQm91bmRhcnlFbnRyeSk7Ci0gICAg
fQotfQotCi1zdGF0aWMgdm9pZCBjb2xsZWN0V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tXaXRo
RGlmZmVybnREaXJlY3Rpb25hbGl0eShjb25zdCBJbmxpbmVCb3gqIGJveCwgV29yZEJvdW5kYXJ5
VmVjdG9yJiBvcmRlcmVkV29yZEJvdW5kYXJpZXMpCi17Ci0gICAgb3JkZXJlZFdvcmRCb3VuZGFy
aWVzLmNsZWFyKCk7Ci0gICAgCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBp
bnQgb2Zmc2V0T2ZXb3JkQnJlYWsgPSBpbnZhbGlkT2Zmc2V0OwotICAgIGJvb2wgaXNMYXN0V29y
ZEJyZWFrSW5Cb3ggPSBmYWxzZTsKLSAgICB3aGlsZSAoMSkgewotICAgICAgICB3b3JkQnJlYWsg
PSBuZXh0V29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25hbGl0
eShib3gsIHdvcmRCcmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWssIGlzTGFzdFdvcmRCcmVha0luQm94
KTsKLSAgICAgICAgaWYgKHdvcmRCcmVhay5pc05vdE51bGwoKSkgewotICAgICAgICAgICAgV29y
ZEJvdW5kYXJ5RW50cnkgd29yZEJvdW5kYXJ5RW50cnkod29yZEJyZWFrLCBvZmZzZXRPZldvcmRC
cmVhayk7Ci0gICAgICAgICAgICBvcmRlcmVkV29yZEJvdW5kYXJpZXMuYXBwZW5kKHdvcmRCb3Vu
ZGFyeUVudHJ5KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNMYXN0V29yZEJyZWFrSW5Cb3gp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbGxlY3RXb3Jk
QnJlYWtzSW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gsIFdvcmRCb3VuZGFyeVZlY3RvciYgb3Jk
ZXJlZFdvcmRCb3VuZGFyaWVzLCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQotewotICAg
IGlmIChib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0aW9uKQotICAgICAgICBjb2xsZWN0
V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGJveCwgb3Jk
ZXJlZFdvcmRCb3VuZGFyaWVzKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbGxlY3RXb3JkQnJlYWtz
SW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJudERpcmVjdGlvbmFsaXR5KGJveCwgb3JkZXJlZFdv
cmRCb3VuZGFyaWVzKTsgICAgICAgIAotfQotICAgIAotc3RhdGljIFZpc2libGVQb3NpdGlvbiBw
cmV2aW91c1dvcmRCb3VuZGFyeUluQm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQgb2Zmc2V0
KQotewotICAgIGludCBvZmZzZXRPZldvcmRCcmVhayA9IDA7Ci0gICAgVmlzaWJsZVBvc2l0aW9u
IHdvcmRCcmVhazsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICB3b3JkQnJlYWsgPSBwcmV2
aW91c1dvcmRCcmVha0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGJveCwg
d29yZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhayk7Ci0gICAgICAgIGlmICh3b3JkQnJlYWsuaXNO
dWxsKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlk
T2Zmc2V0IHx8IG9mZnNldE9mV29yZEJyZWFrICE9IG9mZnNldCkKLSAgICAgICAgICAgIHJldHVy
biB3b3JkQnJlYWs7Ci0gICAgfSAgICAgICAgCi0gICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigp
OwotfQotCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkQm91bmRhcnlJbkJveChjb25z
dCBJbmxpbmVCb3gqIGJveCwgaW50IG9mZnNldCkKLXsKLSAgICBpbnQgb2Zmc2V0T2ZXb3JkQnJl
YWsgPSAwOwotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0gICAgYm9vbCBpc0xhc3RX
b3JkQnJlYWtJbkJveCA9IGZhbHNlOwotICAgIGRvIHsKLSAgICAgICAgd29yZEJyZWFrID0gbmV4
dFdvcmRCcmVha0luQm94SW5zaWRlQmxvY2tXaXRoRGlmZmVyZW50RGlyZWN0aW9uYWxpdHkoYm94
LCB3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrLCBpc0xhc3RXb3JkQnJlYWtJbkJveCk7Ci0g
ICAgICAgIGlmICh3b3JkQnJlYWsuaXNOb3ROdWxsKCkgJiYgKG9mZnNldCA9PSBpbnZhbGlkT2Zm
c2V0IHx8IG9mZnNldE9mV29yZEJyZWFrICE9IG9mZnNldCkpCi0gICAgICAgICAgICByZXR1cm4g
d29yZEJyZWFrOwotICAgIH0gd2hpbGUgKCFpc0xhc3RXb3JkQnJlYWtJbkJveCk7ICAgICAgIAot
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLX0KLSAgICAKLXN0YXRpYyBWaXNpYmxlUG9z
aXRpb24gdmlzdWFsbHlMYXN0V29yZEJvdW5kYXJ5SW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gs
IGludCBvZmZzZXQsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCi17Ci0gICAgV29yZEJv
dW5kYXJ5VmVjdG9yIG9yZGVyZWRXb3JkQm91bmRhcmllczsKLSAgICBjb2xsZWN0V29yZEJyZWFr
c0luQm94KGJveCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLCBibG9ja0RpcmVjdGlvbik7Ci0gICAg
aWYgKCFvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpKSAKLSAgICAgICAgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbigpOwotICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCB8fCBvcmRlcmVk
V29yZEJvdW5kYXJpZXNbb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDFdLm9mZnNldElu
SW5saW5lQm94ICE9IG9mZnNldCkKLSAgICAgICAgcmV0dXJuIG9yZGVyZWRXb3JkQm91bmRhcmll
c1tvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMV0udmlzaWJsZVBvc2l0aW9uOwotICAg
IGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpID4gMSkKLSAgICAgICAgcmV0dXJuIG9y
ZGVyZWRXb3JkQm91bmRhcmllc1tvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMl0udmlz
aWJsZVBvc2l0aW9uOwotICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLX0KLSAgICAgICAg
Ci1zdGF0aWMgaW50IGdyZWF0ZXN0T2Zmc2V0VW5kZXIoaW50IG9mZnNldCwgYm9vbCBib3hBbmRC
bG9ja0FyZUluU2FtZURpcmVjdGlvbiwgY29uc3QgV29yZEJvdW5kYXJ5VmVjdG9yJiBvcmRlcmVk
V29yZEJvdW5kYXJpZXMpCi17Ci0gICAgaWYgKCFvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgp
KQotICAgICAgICByZXR1cm4gb2Zmc2V0Tm90Rm91bmQ7Ci0gICAgLy8gRklYTUU6IGJpbmFyeSBz
ZWFyY2guCi0gICAgaWYgKGJveEFuZEJsb2NrQXJlSW5TYW1lRGlyZWN0aW9uKSB7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXNbaV0ub2Zmc2V0SW5J
bmxpbmVCb3ggPCBvZmZzZXQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIG9mZnNldE5vdEZvdW5kOwotICAgIH0KLSAgICBmb3IgKGludCBpID0g
b3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAg
IGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXNbaV0ub2Zmc2V0SW5JbmxpbmVCb3ggPCBvZmZzZXQp
Ci0gICAgICAgICAgICByZXR1cm4gaTsKLSAgICB9Ci0gICAgcmV0dXJuIG9mZnNldE5vdEZvdW5k
OwotfQotCi1zdGF0aWMgaW50IHNtYWxsZXN0T2Zmc2V0QWJvdmUoaW50IG9mZnNldCwgYm9vbCBi
b3hBbmRCbG9ja0FyZUluU2FtZURpcmVjdGlvbiwgY29uc3QgV29yZEJvdW5kYXJ5VmVjdG9yJiBv
cmRlcmVkV29yZEJvdW5kYXJpZXMpCi17Ci0gICAgaWYgKCFvcmRlcmVkV29yZEJvdW5kYXJpZXMu
c2l6ZSgpKQotICAgICAgICByZXR1cm4gb2Zmc2V0Tm90Rm91bmQ7Ci0gICAgLy8gRklYTUU6IGJp
bmFyeSBzZWFyY2guCi0gICAgaWYgKGJveEFuZEJsb2NrQXJlSW5TYW1lRGlyZWN0aW9uKSB7Ci0g
ICAgICAgIGZvciAoaW50IGkgPSBvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMTsgaSA+
PSAwOyAtLWkpIHsKLSAgICAgICAgICAgIGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXNbaV0ub2Zm
c2V0SW5JbmxpbmVCb3ggPiBvZmZzZXQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIG9mZnNldE5vdEZvdW5kOwotICAgIH0KLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXNbaV0ub2Zmc2V0SW5JbmxpbmVCb3ggPiBv
ZmZzZXQpCi0gICAgICAgICAgICByZXR1cm4gaTsKLSAgICB9Ci0gICAgcmV0dXJuIG9mZnNldE5v
dEZvdW5kOwotfQotCi1zdGF0aWMgY29uc3QgUm9vdElubGluZUJveCogcHJldmlvdXNSb290SW5s
aW5lQm94KGNvbnN0IElubGluZUJveCogYm94KQotewotICAgIE5vZGUqIG5vZGUgPSBib3gtPnJl
bmRlcmVyKCktPm5vZGUoKTsKLSAgICBOb2RlKiBlbmNsb3NpbmdCbG9ja05vZGUgPSBlbmNsb3Np
bmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKG5vZGUpOwotICAgIE5vZGUqIHByZXZpb3VzTm9k
ZSA9IG5vZGUtPnByZXZpb3VzTGVhZk5vZGUoKTsKLSAgICB3aGlsZSAocHJldmlvdXNOb2RlICYm
IGVuY2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVy
KHByZXZpb3VzTm9kZSkpCi0gICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTm9kZS0+cHJl
dmlvdXNMZWFmTm9kZSgpOwotICAKLSAgICB3aGlsZSAocHJldmlvdXNOb2RlICYmICFwcmV2aW91
c05vZGUtPmlzU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIFBvc2l0aW9uIHBvcyA9IGNyZWF0ZUxl
Z2FjeUVkaXRpbmdQb3NpdGlvbihwcmV2aW91c05vZGUsIGNhcmV0TWF4T2Zmc2V0KHByZXZpb3Vz
Tm9kZSkpOwotICAgICAgICAKLSAgICAgICAgaWYgKHBvcy5pc0NhbmRpZGF0ZSgpKSB7Ci0gICAg
ICAgICAgICBSZW5kZXJlZFBvc2l0aW9uIHJlbmRlcmVkUG9zKHBvcywgRE9XTlNUUkVBTSk7Ci0g
ICAgICAgICAgICBSb290SW5saW5lQm94KiByb290ID0gcmVuZGVyZWRQb3Mucm9vdEJveCgpOwot
ICAgICAgICAgICAgaWYgKHJvb3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Q7Ci0gICAg
ICAgIH0KLQotICAgICAgICBwcmV2aW91c05vZGUgPSBwcmV2aW91c05vZGUtPnByZXZpb3VzTGVh
Zk5vZGUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBjb25zdCBSb290SW5s
aW5lQm94KiBuZXh0Um9vdElubGluZUJveChjb25zdCBJbmxpbmVCb3gqIGJveCkKLXsKLSAgICBO
b2RlKiBub2RlID0gYm94LT5yZW5kZXJlcigpLT5ub2RlKCk7Ci0gICAgTm9kZSogZW5jbG9zaW5n
QmxvY2tOb2RlID0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihub2RlKTsKLSAg
ICBOb2RlKiBuZXh0Tm9kZSA9IG5vZGUtPm5leHRMZWFmTm9kZSgpOwotICAgIHdoaWxlIChuZXh0
Tm9kZSAmJiBlbmNsb3NpbmdCbG9ja05vZGUgPT0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVS
ZW5kZXJlcihuZXh0Tm9kZSkpCi0gICAgICAgIG5leHROb2RlID0gbmV4dE5vZGUtPm5leHRMZWFm
Tm9kZSgpOwotICAKLSAgICB3aGlsZSAobmV4dE5vZGUgJiYgIW5leHROb2RlLT5pc1NoYWRvd1Jv
b3QoKSkgewotICAgICAgICBQb3NpdGlvbiBwb3M7Ci0gICAgICAgIHBvcyA9IGNyZWF0ZUxlZ2Fj
eUVkaXRpbmdQb3NpdGlvbihuZXh0Tm9kZSwgY2FyZXRNaW5PZmZzZXQobmV4dE5vZGUpKTsKLSAg
ICAgICAgCi0gICAgICAgIGlmIChwb3MuaXNDYW5kaWRhdGUoKSkgewotICAgICAgICAgICAgUmVu
ZGVyZWRQb3NpdGlvbiByZW5kZXJlZFBvcyhwb3MsIERPV05TVFJFQU0pOwotICAgICAgICAgICAg
Um9vdElubGluZUJveCogcm9vdCA9IHJlbmRlcmVkUG9zLnJvb3RCb3goKTsKLSAgICAgICAgICAg
IGlmIChyb290KQotICAgICAgICAgICAgICAgIHJldHVybiByb290OwotICAgICAgICB9Ci0KLSAg
ICAgICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS0+bmV4dExlYWZOb2RlKCk7Ci0gICAgfQotICAgIHJl
dHVybiAwOwotfQotCi1zdGF0aWMgY29uc3QgSW5saW5lQm94KiBsZWZ0SW5saW5lQm94KGNvbnN0
IElubGluZUJveCogYm94LCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQotewotICAgIGlm
IChib3gtPnByZXZMZWFmQ2hpbGQoKSkKLSAgICAgICAgcmV0dXJuIGJveC0+cHJldkxlYWZDaGls
ZCgpOwotICAgIAotICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSBib3gtPnJvb3Qo
KTsKLSAgICBjb25zdCBib29sIGlzQmxvY2tMVFIgPSBibG9ja0RpcmVjdGlvbiA9PSBMVFI7Ci0g
ICAgY29uc3QgSW5saW5lRmxvd0JveCogbGVmdExpbmVCb3ggPSBpc0Jsb2NrTFRSID8gcm9vdEJv
eC0+cHJldkxpbmVCb3goKSA6IHJvb3RCb3gtPm5leHRMaW5lQm94KCk7Ci0gICAgaWYgKGxlZnRM
aW5lQm94KQotICAgICAgICByZXR1cm4gbGVmdExpbmVCb3gtPmxhc3RMZWFmQ2hpbGQoKTsKLQot
ICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIGxlZnRSb290SW5saW5lQm94ID0gaXNCbG9ja0xUUiA/
IHByZXZpb3VzUm9vdElubGluZUJveChib3gpIDoKLSAgICAgICAgbmV4dFJvb3RJbmxpbmVCb3go
Ym94KTsgCi0gICAgcmV0dXJuIGxlZnRSb290SW5saW5lQm94ID8gbGVmdFJvb3RJbmxpbmVCb3gt
Pmxhc3RMZWFmQ2hpbGQoKSA6IDA7IAotfQotCi1zdGF0aWMgY29uc3QgSW5saW5lQm94KiByaWdo
dElubGluZUJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVj
dGlvbikKLXsKLSAgICBpZiAoYm94LT5uZXh0TGVhZkNoaWxkKCkpCi0gICAgICAgIHJldHVybiBi
b3gtPm5leHRMZWFmQ2hpbGQoKTsKLSAgICAKLSAgICBjb25zdCBSb290SW5saW5lQm94KiByb290
Qm94ID0gYm94LT5yb290KCk7Ci0gICAgY29uc3QgYm9vbCBpc0Jsb2NrTFRSID0gYmxvY2tEaXJl
Y3Rpb24gPT0gTFRSOwotICAgIGNvbnN0IElubGluZUZsb3dCb3gqIHJpZ2h0TGluZUJveCA9IGlz
QmxvY2tMVFIgPyByb290Qm94LT5uZXh0TGluZUJveCgpIDogcm9vdEJveC0+cHJldkxpbmVCb3go
KTsKLSAgICBpZiAocmlnaHRMaW5lQm94KQotICAgICAgICByZXR1cm4gcmlnaHRMaW5lQm94LT5m
aXJzdExlYWZDaGlsZCgpOwotCi0gICAgY29uc3QgUm9vdElubGluZUJveCogcmlnaHRSb290SW5s
aW5lQm94ID0gaXNCbG9ja0xUUiA/IG5leHRSb290SW5saW5lQm94KGJveCkgOgotICAgICAgICBw
cmV2aW91c1Jvb3RJbmxpbmVCb3goYm94KTsgCi0gICAgcmV0dXJuIHJpZ2h0Um9vdElubGluZUJv
eCA/IHJpZ2h0Um9vdElubGluZUJveC0+Zmlyc3RMZWFmQ2hpbGQoKSA6IDA7IAotfQotCi1zdGF0
aWMgVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3JkQm91bmRhcnkoY29uc3QgSW5saW5lQm94KiBib3gs
IGludCBvZmZzZXQsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCi17Ci0gICAgVmlzaWJs
ZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBmb3IgIChjb25zdCBJbmxpbmVCb3gqIGFkamFjZW50
Qm94ID0gYm94OyBhZGphY2VudEJveDsgYWRqYWNlbnRCb3ggPSBsZWZ0SW5saW5lQm94KGFkamFj
ZW50Qm94LCBibG9ja0RpcmVjdGlvbikpIHsKLSAgICAgICAgaWYgKGJsb2NrRGlyZWN0aW9uID09
IExUUikgewotICAgICAgICAgICAgaWYgKGFkamFjZW50Qm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkpIAotICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzV29yZEJvdW5kYXJ5
SW5Cb3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRP
ZmZzZXQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IG5l
eHRXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8gb2Zm
c2V0IDogaW52YWxpZE9mZnNldCk7Ci0gICAgICAgIH0gZWxzZSAKLSAgICAgICAgICAgIHdvcmRC
cmVhayA9IHZpc3VhbGx5TGFzdFdvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2Vu
dEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7ICAg
ICAgICAgICAgCi0gICAgICAgIGlmICh3b3JkQnJlYWsuaXNOb3ROdWxsKCkpCi0gICAgICAgICAg
ICByZXR1cm4gd29yZEJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7
Ci19Ci0gCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0V29yZEJvdW5kYXJ5KGNvbnN0IElu
bGluZUJveCogYm94LCBpbnQgb2Zmc2V0LCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQot
ewotICAgIAotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0gICAgZm9yIChjb25zdCBJ
bmxpbmVCb3gqIGFkamFjZW50Qm94ID0gYm94OyBhZGphY2VudEJveDsgYWRqYWNlbnRCb3ggPSBy
aWdodElubGluZUJveChhZGphY2VudEJveCwgYmxvY2tEaXJlY3Rpb24pKSB7Ci0gICAgICAgIGlm
IChibG9ja0RpcmVjdGlvbiA9PSBSVEwpIHsKLSAgICAgICAgICAgIGlmIChhZGphY2VudEJveC0+
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IG5l
eHRXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8gb2Zm
c2V0IDogaW52YWxpZE9mZnNldCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
d29yZEJyZWFrID0gcHJldmlvdXNXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNl
bnRCb3ggPT0gYm94ID8gb2Zmc2V0IDogaW52YWxpZE9mZnNldCk7Ci0gICAgICAgIH0gZWxzZSAK
LSAgICAgICAgICAgIHdvcmRCcmVhayA9IHZpc3VhbGx5TGFzdFdvcmRCb3VuZGFyeUluQm94KGFk
amFjZW50Qm94LCBhZGphY2VudEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0LCBi
bG9ja0RpcmVjdGlvbik7ICAgICAgICAgICAgCi0gICAgICAgIGlmICghd29yZEJyZWFrLmlzTnVs
bCgpKQotICAgICAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOwotfQotICAgIAotc3RhdGljIGJvb2wgcG9zaXRpb25Jc0luQm94QnV0
Tm90T25Cb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHdvcmRCcmVhaywgY29uc3QgSW5s
aW5lQm94KiBib3gpCi17Ci0gICAgaW50IG9mZnNldE9mV29yZEJyZWFrOwotICAgIHJldHVybiBw
b3NpdGlvbklzSW5Cb3god29yZEJyZWFrLCBib3gsIG9mZnNldE9mV29yZEJyZWFrKQotICAgICAg
ICAmJiBvZmZzZXRPZldvcmRCcmVhayAhPSBib3gtPmNhcmV0TWF4T2Zmc2V0KCkgJiYgb2Zmc2V0
T2ZXb3JkQnJlYWsgIT0gYm94LT5jYXJldE1pbk9mZnNldCgpOwotfQotCi1zdGF0aWMgVmlzaWJs
ZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb25JZ25vcmluZ0VkaXRpbmdCb3VuZGFyeShjb25zdCBW
aXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKLXsKLSAgICBJbmxpbmVCb3gqIGJveDsK
LSAgICBpbnQgb2Zmc2V0OwotICAgIHZpc2libGVQb3NpdGlvbi5nZXRJbmxpbmVCb3hBbmRPZmZz
ZXQoYm94LCBvZmZzZXQpOwotCi0gICAgaWYgKCFib3gpCi0gICAgICAgIHJldHVybiBWaXNpYmxl
UG9zaXRpb24oKTsKLQotICAgIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJlY3Rp
b25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKLQot
ICAgIC8vIEZJWE1FOiBJZiB0aGUgYm94J3MgZGlyZWN0aW9uYWxpdHkgaXMgdGhlIHNhbWUgYXMg
dGhhdCBvZiB0aGUgZW5jbG9zaW5nIGJsb2NrLCB3aGVuIHRoZSBvZmZzZXQgaXMgYXQgdGhlIGJv
eCBib3VuZGFyeQotICAgIC8vIGFuZCB0aGUgZGlyZWN0aW9uIGlzIHRvd2FyZHMgaW5zaWRlIHRo
ZSBib3gsIGRvIEkgc3RpbGwgbmVlZCB0byBtYWtlIGl0IGEgc3BlY2lhbCBjYXNlPyBGb3IgZXhh
bXBsZSwgYSBMVFIgYm94IGluc2lkZSBhIExUUiBibG9jaywKLSAgICAvLyB3aGVuIG9mZnNldCBp
cyBhdCBib3gncyBjYXJldE1pbk9mZnNldCBhbmQgdGhlIGRpcmVjdGlvbiBpcyBEaXJlY3Rpb25S
aWdodCwgc2hvdWxkIGl0IGJlIHRha2VuIGNhcmUgYXMgYSBnZW5lcmFsIGNhc2U/Ci0gICAgaWYg
KG9mZnNldCA9PSBib3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKSkKLSAgICAgICAgcmV0dXJuIGxl
ZnRXb3JkQm91bmRhcnkobGVmdElubGluZUJveChib3gsIGJsb2NrRGlyZWN0aW9uKSwgaW52YWxp
ZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOwotICAgIGlmIChvZmZzZXQgPT0gYm94LT5jYXJldFJp
Z2h0bW9zdE9mZnNldCgpKQotICAgICAgICByZXR1cm4gbGVmdFdvcmRCb3VuZGFyeShib3gsIG9m
ZnNldCwgYmxvY2tEaXJlY3Rpb24pOwotICAgIAotICAgIAotICAgIFZpc2libGVQb3NpdGlvbiB3
b3JkQnJlYWs7Ci0gICAgaWYgKGJsb2NrRGlyZWN0aW9uID09IExUUikgewotICAgICAgICBpZiAo
Ym94LT5kaXJlY3Rpb24oKSA9PSBibG9ja0RpcmVjdGlvbikKLSAgICAgICAgICAgIHdvcmRCcmVh
ayA9IHByZXZpb3VzQm91bmRhcnkodmlzaWJsZVBvc2l0aW9uLCBwcmV2aW91c1dvcmRQb3NpdGlv
bkJvdW5kYXJ5KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgd29yZEJyZWFrID0gbmV4dEJv
dW5kYXJ5KHZpc2libGVQb3NpdGlvbiwgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5KTsKLSAgICB9
Ci0gICAgaWYgKHdvcmRCcmVhay5pc05vdE51bGwoKSAmJiBwb3NpdGlvbklzSW5Cb3hCdXROb3RP
bkJvdW5kYXJ5KHdvcmRCcmVhaywgYm94KSkKLSAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsKLSAg
ICAKLSAgICBXb3JkQm91bmRhcnlWZWN0b3Igb3JkZXJlZFdvcmRCb3VuZGFyaWVzOwotICAgIGNv
bGxlY3RXb3JkQnJlYWtzSW5Cb3goYm94LCBvcmRlcmVkV29yZEJvdW5kYXJpZXMsIGJsb2NrRGly
ZWN0aW9uKTsKLQotICAgIGludCBpbmRleCA9IGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
ID8gZ3JlYXRlc3RPZmZzZXRVbmRlcihvZmZzZXQsIGJsb2NrRGlyZWN0aW9uID09IExUUiwgb3Jk
ZXJlZFdvcmRCb3VuZGFyaWVzKQotICAgICAgICA6IHNtYWxsZXN0T2Zmc2V0QWJvdmUob2Zmc2V0
LCBibG9ja0RpcmVjdGlvbiA9PSBSVEwsIG9yZGVyZWRXb3JkQm91bmRhcmllcyk7Ci0gICAgaWYg
KGluZGV4ID49IDApCi0gICAgICAgIHJldHVybiBvcmRlcmVkV29yZEJvdW5kYXJpZXNbaW5kZXhd
LnZpc2libGVQb3NpdGlvbjsKLSAgICAKLSAgICByZXR1cm4gbGVmdFdvcmRCb3VuZGFyeShsZWZ0
SW5saW5lQm94KGJveCwgYmxvY2tEaXJlY3Rpb24pLCBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVj
dGlvbik7Ci19Ci0KLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkUG9zaXRpb25JZ25v
cmluZ0VkaXRpbmdCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlv
bikKLXsKLSAgICBJbmxpbmVCb3gqIGJveDsKLSAgICBpbnQgb2Zmc2V0OwotICAgIHZpc2libGVQ
b3NpdGlvbi5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoYm94LCBvZmZzZXQpOwotCi0gICAgaWYgKCFi
b3gpCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLQotICAgIFRleHREaXJlY3Rp
b24gYmxvY2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3Np
dGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKLSAgICAKLSAgICBpZiAob2Zmc2V0ID09IGJveC0+Y2Fy
ZXRMZWZ0bW9zdE9mZnNldCgpKQotICAgICAgICByZXR1cm4gcmlnaHRXb3JkQm91bmRhcnkoYm94
LCBvZmZzZXQsIGJsb2NrRGlyZWN0aW9uKTsKLSAgICBpZiAob2Zmc2V0ID09IGJveC0+Y2FyZXRS
aWdodG1vc3RPZmZzZXQoKSkKLSAgICAgICAgcmV0dXJuIHJpZ2h0V29yZEJvdW5kYXJ5KHJpZ2h0
SW5saW5lQm94KGJveCwgYmxvY2tEaXJlY3Rpb24pLCBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVj
dGlvbik7Ci0gCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBpZiAoYmxvY2tE
aXJlY3Rpb24gPT0gUlRMKSB7Ci0gICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IGJsb2Nr
RGlyZWN0aW9uKQotICAgICAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNCb3VuZGFyeSh2aXNp
YmxlUG9zaXRpb24sIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnkpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB3b3JkQnJlYWsgPSBuZXh0Qm91bmRhcnkodmlzaWJsZVBvc2l0aW9uLCBu
ZXh0V29yZFBvc2l0aW9uQm91bmRhcnkpOwotICAgIH0KLSAgICBpZiAod29yZEJyZWFrLmlzTm90
TnVsbCgpICYmIHBvc2l0aW9uSXNJbkJveEJ1dE5vdE9uQm91bmRhcnkod29yZEJyZWFrLCBib3gp
KQotICAgICAgICByZXR1cm4gd29yZEJyZWFrOwotICAgIAotICAgIFdvcmRCb3VuZGFyeVZlY3Rv
ciBvcmRlcmVkV29yZEJvdW5kYXJpZXM7Ci0gICAgY29sbGVjdFdvcmRCcmVha3NJbkJveChib3gs
IG9yZGVyZWRXb3JkQm91bmRhcmllcywgYmxvY2tEaXJlY3Rpb24pOwotICAgIAotICAgIGludCBp
bmRleCA9IGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gc21hbGxlc3RPZmZzZXRBYm92
ZShvZmZzZXQsIGJsb2NrRGlyZWN0aW9uID09IExUUiwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKQot
ICAgICAgICA6IGdyZWF0ZXN0T2Zmc2V0VW5kZXIob2Zmc2V0LCBibG9ja0RpcmVjdGlvbiA9PSBS
VEwsIG9yZGVyZWRXb3JkQm91bmRhcmllcyk7Ci0gICAgaWYgKGluZGV4ID49IDApCi0gICAgICAg
IHJldHVybiBvcmRlcmVkV29yZEJvdW5kYXJpZXNbaW5kZXhdLnZpc2libGVQb3NpdGlvbjsKLSAg
ICAKLSAgICByZXR1cm4gcmlnaHRXb3JkQm91bmRhcnkocmlnaHRJbmxpbmVCb3goYm94LCBibG9j
a0RpcmVjdGlvbiksIGludmFsaWRPZmZzZXQsIGJsb2NrRGlyZWN0aW9uKTsKLX0KLQotVmlzaWJs
ZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxl
UG9zaXRpb24pCi17Ci0gICAgaWYgKHZpc2libGVQb3NpdGlvbi5pc051bGwoKSkKLSAgICAgICAg
cmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotCi0gICAgVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3Jk
QnJlYWsgPSBsZWZ0V29yZFBvc2l0aW9uSWdub3JpbmdFZGl0aW5nQm91bmRhcnkodmlzaWJsZVBv
c2l0aW9uKTsKLSAgICBsZWZ0V29yZEJyZWFrID0gdmlzaWJsZVBvc2l0aW9uLmhvbm9yRWRpdGlu
Z0JvdW5kYXJ5QXRPckJlZm9yZShsZWZ0V29yZEJyZWFrKTsKLSAgICAKLSAgICAvLyBGSVhNRTog
SG93IHNob3VsZCB3ZSBoYW5kbGUgYSBub24tZWRpdGFibGUgcG9zaXRpb24/Ci0gICAgaWYgKGxl
ZnRXb3JkQnJlYWsuaXNOdWxsKCkgJiYgaXNFZGl0YWJsZVBvc2l0aW9uKHZpc2libGVQb3NpdGlv
bi5kZWVwRXF1aXZhbGVudCgpKSkgewotICAgICAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0
aW9uID0gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2
YWxlbnQoKSk7Ci0gICAgICAgIGxlZnRXb3JkQnJlYWsgPSBibG9ja0RpcmVjdGlvbiA9PSBMVFIg
PyBzdGFydE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbikgOiBlbmRPZkVkaXRhYmxl
Q29udGVudCh2aXNpYmxlUG9zaXRpb24pOwotICAgIH0KLSAgICByZXR1cm4gbGVmdFdvcmRCcmVh
azsKLX0KLQotVmlzaWJsZVBvc2l0aW9uIHJpZ2h0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQotewotICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLQotICAgIFZpc2libGVQ
b3NpdGlvbiByaWdodFdvcmRCcmVhayA9IHJpZ2h0V29yZFBvc2l0aW9uSWdub3JpbmdFZGl0aW5n
Qm91bmRhcnkodmlzaWJsZVBvc2l0aW9uKTsKLSAgICByaWdodFdvcmRCcmVhayA9IHZpc2libGVQ
b3NpdGlvbi5ob25vckVkaXRpbmdCb3VuZGFyeUF0T3JCZWZvcmUocmlnaHRXb3JkQnJlYWspOwot
Ci0gICAgLy8gRklYTUU6IEhvdyBzaG91bGQgd2UgaGFuZGxlIGEgbm9uLWVkaXRhYmxlIHBvc2l0
aW9uPwotICAgIGlmIChyaWdodFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRp
b24odmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7Ci0gICAgICAgIFRleHREaXJl
Y3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQ
b3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKLSAgICAgICAgcmlnaHRXb3JkQnJlYWsgPSBibG9j
a0RpcmVjdGlvbiA9PSBMVFIgPyBlbmRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24p
IDogc3RhcnRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pOwotICAgIH0KLSAgICBy
ZXR1cm4gcmlnaHRXb3JkQnJlYWs7Ci19Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgJKHJldmlzaW9uIDEwNjUwMykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgaW50IHRl
eHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CiAgICAgaW50IHRleHRC
cmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CiAgICAgYm9vbCBpc1RleHRC
cmVhayhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CisgICAgYm9vbCBpc1dvcmRUZXh0QnJlYWso
VGV4dEJyZWFrSXRlcmF0b3IqKTsKIAogICAgIGNvbnN0IGludCBUZXh0QnJlYWtEb25lID0gLTE7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJ
Q1UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3JJQ1UuY3BwCShyZXZpc2lvbiAxMDY1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM3LDYgKzEzNywxMiBAQCBib29sIGlzVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVy
CiAgICAgcmV0dXJuIHVicmtfaXNCb3VuZGFyeShyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJh
dG9yKj4oaXRlcmF0b3IpLCBwb3NpdGlvbik7CiB9CiAKK2Jvb2wgaXNXb3JkVGV4dEJyZWFrKFRl
eHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAgICBpbnQgcnVsZVN0YXR1cyA9IHVicmtf
Z2V0UnVsZVN0YXR1cyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3Ip
KTsKKyAgICByZXR1cm4gcnVsZVN0YXR1cyAhPSBVQlJLX1dPUkRfTk9ORTsKK30KKwogc3RhdGlj
IFRleHRCcmVha0l0ZXJhdG9yKiBzZXRVcEl0ZXJhdG9yV2l0aFJ1bGVzKGJvb2wmIGNyZWF0ZWRJ
dGVyYXRvciwgVGV4dEJyZWFrSXRlcmF0b3IqJiBpdGVyYXRvciwKICAgICBjb25zdCBjaGFyKiBi
cmVha1J1bGVzLCBjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQogewpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVha0l0
ZXJhdG9yR3RrLmNwcAkocmV2aXNpb24gMTA2NTAzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
ODUsNCArMzg1LDkgQEAgYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciogaXRlcgog
ICAgIHJldHVybiBpdGVyYXRvci0+bV9jaGFySXRlcmF0b3IuZ2V0SW5kZXgoKSA9PSBpbmRleDsK
IH0KIAorYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqKQoreworICAgIHJl
dHVybiB0cnVlOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3F0
L1RleHRCcmVha0l0ZXJhdG9yUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAJKHJldmlzaW9uIDEwNjUwMykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw0ICsxNTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGJvb2wgaXNXb3JkVGV4dEJyZWFr
KFRleHRCcmVha0l0ZXJhdG9yKikKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW5jZS9UZXh0QnJlYWtJ
dGVyYXRvcldpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L3dpbmNlL1RleHRCcmVha0l0ZXJhdG9yV2luQ0UuY3BwCShyZXZpc2lvbiAxMDY1MDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbmNlL1RleHRCcmVha0l0ZXJhdG9yV2lu
Q0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNiArMzE3LDExIEBAIGJvb2wgaXNUZXh0QnJl
YWsoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBp
c1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqKQoreworICAgIHJldHVybiB0cnVlOwor
fQorCiBUZXh0QnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihjb25zdCBVQ2hh
ciogc3RyaW5nLCBpbnQgbGVuZ3RoKQogewogICAgIHJldHVybiBjaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yKHN0cmluZywgbGVuZ3RoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODAwNSkKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAy
LTE2ICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2luZyBJQ1Ug
YnJlYWsgaXRlcmF0b3IgdG8gc2ltcGxpZnkgdmlzdWFsIHdvcmQgbW92ZW1lbnQgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
ODg1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1ibG9jay1wb3Np
dGlvbmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9u
L21vdmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50Lmh0
bWw6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LW11
bHRpLWxpbmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL21vdmUt
Ynktd29yZC12aXN1YWxseS1tdWx0aS1saW5lLmh0bWw6CisgICAgICAgICogZWRpdGluZy9zZWxl
Y3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXNpbmdsZS1zcGFjZS1pbmxpbmUtZWxlbWVudC1l
eHBlY3RlZC50eHQ6CisKIDIwMTItMDItMTYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVucmV2aWV3ZWQgYmFzZWxpbmUgdXBkYXRl
IGZvciBjb21wb3NpdGluZy9zY3JvbGxiYXItcGFpbnRpbmcuaHRtbApJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1ibG9jay1w
b3NpdGlvbmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUtYmxvY2stcG9z
aXRpb25lZC1lbGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA2NTAzKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1ibG9j
ay1wb3NpdGlvbmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDM3
ICsyLDM3IEBACiA9PT09PT09PSBNb3ZlIEJ5IFdvcmQgPT09PQogVGVzdCAxLCBMVFI6CiBNb3Zl
IHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYmVnaW4gc3RhcnQiWzAsIDZdLCAiYWJjIGRlZiJbMCwgNF0s
ICJlbmQgaW5nIlswLCA0XSwgInRoaXMgaXMgZmxvYXQiWzAsIDUsIDhdLCAidGhpcyBpcyBmaXhl
ZCJbNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4XSwgInRoaXMgaXMgYWJzb2x1dGUi
WzAsIDUsIDgsIDE2XQorImJlZ2luIHN0YXJ0IlswLCA2XSwgImFiYyBkZWYiWzAsIDRdLCAiZW5k
IGluZyJbMCwgNF0sICJ0aGlzIGlzIGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzAs
IDUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlsw
LCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2
LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJb
OCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRl
ZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwg
NSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUs
IDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYi
WzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCiBUZXN0IDIsIExUUjoKIE1vdmUgcmlnaHQgYnkg
b25lIHdvcmQKLSJhYmMgZGVmIlswLCA0XSwgImVuZCBpbmciWzAsIDRdLCAidGhpcyBpcyBmbG9h
dCJbMCwgNSwgOF0sICJ0aGlzIGlzIGZpeGVkIls1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUiWzAs
IDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCisiYWJjIGRlZiJbMCwgNF0s
ICJlbmQgaW5nIlswLCA0XSwgInRoaXMgaXMgZmxvYXQiWzAsIDUsIDhdLCAidGhpcyBpcyBmaXhl
ZCJbMCwgNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4XSwgInRoaXMgaXMgYWJzb2x1
dGUiWzAsIDUsIDgsIDE2XQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0idGhpcyBpcyBhYnNvbHV0
ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZp
eGVkIls4LCA1XSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJh
YmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQorInRoaXMgaXMgYWJzb2x1dGUiWzE2
LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJb
OCwgNSwgMF0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJj
IGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KIFRlc3QgMywgTFRSOgogTW92ZSByaWdo
dCBieSBvbmUgd29yZAotImVuZCBpbmciWzAsIDRdLCAidGhpcyBpcyBmbG9hdCJbMCwgNSwgOF0s
ICJ0aGlzIGlzIGZpeGVkIls1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUiWzAsIDUsIDhdLCAidGhp
cyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCisiZW5kIGluZyJbMCwgNF0sICJ0aGlzIGlzIGZs
b2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzAsIDUsIDhdLCAidGhpcyBpcyByZWxhdGl2
ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBi
eSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVs
YXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4
LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJb
NiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZl
Ils4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwg
NSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYs
IDBdCiBUZXN0IDQsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJ0aGlzIGlzIGZsb2F0
IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJbMCwg
NSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KKyJ0aGlzIGlzIGZsb2F0Ilsw
LCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzAsIDUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJbMCwg
NSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBvbmUg
d29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUi
WzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAw
XSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0K
KyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1
LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0s
ICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCiBU
ZXN0IDUsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKICJ0aGlzIGlzIGZpeGVkIlswLCA1
LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUiWzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJbMCwg
NSwgOCwgMTZdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJ0aGlzIGlzIGFic29sdXRlIlsxNiwg
OCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgs
IDVdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYi
WzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCisidGhpcyBpcyBhYnNvbHV0ZSJbMTYsIDgsIDUs
IDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4LCA1LCAw
XSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMgZGVmIls0
LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQogVGVzdCA2LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9u
ZSB3b3JkCiAidGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlsw
LCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2
LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJb
OCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRl
ZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwg
NSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUs
IDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYi
WzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCiBUZXN0IDcsIExUUjoKIE1vdmUgcmlnaHQgYnkg
b25lIHdvcmQKICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBv
bmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRp
dmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1
LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwg
MF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4
LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwg
MF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBd
CiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1
YWxseS1pbmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGlu
ZS1ibG9jay1wb3NpdGlvbmVkLWVsZW1lbnQuaHRtbAkocmV2aXNpb24gMTA2NTAzKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1i
bG9jay1wb3NpdGlvbmVkLWVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcsMzggKzE3
LDM4IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIAogPGRpdiBpZD0idGVz
dE1vdmVCeVdvcmQiIGNvbnRlbnRlZGl0YWJsZSBzdHlsZT0id2lkdGg6MjAwMHB4OyBoZWlnaHQ6
MjAwMHB4Ij4KIDxkaXYgaWQ9ImRfMSIgZGlyPWx0ciAKLXRpdGxlPSJbZF8xLCAwXVtkXzEsIDZd
W2RfMiwgMF1bZF8yLCA0XVtkXzMsIDBdW2RfMywgNF1bZF80LCAwXVtkXzQsIDVdW2RfNCwgOF1b
ZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1XVtk
XzcsIDhdW2RfNywgMTZdfAotW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwg
OF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzQsIDhdW2RfNCwgNV1bZF80LCAw
XVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCit0aXRs
ZT0iW2RfMSwgMF1bZF8xLCA2XVtkXzIsIDBdW2RfMiwgNF1bZF8zLCAwXVtkXzMsIDRdW2RfNCwg
MF1bZF80LCA1XVtkXzQsIDhdW2RfNSwgMF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1
XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAorW2RfNywgMTZdW2Rf
NywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81
LCA1XVtkXzUsIDBdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIs
IDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCI+
YmVnaW4gc3RhcnQ8L2Rpdj4KIAogPGRpdiBpZD0iZF8yIiBkaXI9bHRyIAotdGl0bGU9IltkXzIs
IDBdW2RfMiwgNF1bZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2RfNSwg
NV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywgNV1bZF83LCA4
XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2Rf
NiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8z
LCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAordGl0bGU9Iltk
XzIsIDBdW2RfMiwgNF1bZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2Rf
NSwgMF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83
LCA1XVtkXzcsIDhdW2RfNywgMTZdfAorW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBd
W2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1b
ZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtk
XzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgc3R5bGU9ImRpc3BsYXk6aW5saW5l
LWJsb2NrIj5hYmMgZGVmPC9kaXY+CiAKIDxkaXYgaWQ9ImRfMyIgZGlyPWx0ciAKLXRpdGxlPSJb
ZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2RfNSwgNV1bZF81LCA4XVtk
XzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywgNV1bZF83LCA4XVtkXzcsIDE2XXwK
LVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAw
XVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMsIDBd
W2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAordGl0bGU9IltkXzMsIDBdW2RfMywg
NF1bZF80LCAwXVtkXzQsIDVdW2RfNCwgOF1bZF81LCAwXVtkXzUsIDVdW2RfNSwgOF1bZF82LCAw
XVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAxNl18CitbZF83
LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1bZF81
LCA4XVtkXzUsIDVdW2RfNSwgMF1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMs
IDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAogY2xhc3M9InRlc3RfbW92ZV9i
eV93b3JkIj5lbmQgaW5nPC9kaXY+CiAKIDxkaXYgaWQ9ImRfNCIgZGlyPWx0ciAKLXRpdGxlPSJb
ZF80LCAwXVtkXzQsIDVdW2RfNCwgOF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtk
XzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAotW2RfNywgMTZdW2RfNywg
OF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1
XVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBd
W2RfMSwgNl1bZF8xLCAwXSIgCit0aXRsZT0iW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2RfNSwg
MF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1
XVtkXzcsIDhdW2RfNywgMTZdfAorW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2Rf
NiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1bZF80
LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEs
IDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgc3R5bGU9ImZsb2F0OmxlZnQiPnRoaXMg
aXMgZmxvYXQ8L2Rpdj4KIAogPGRpdiBpZD0iZF81IiBkaXI9bHRyIAogdGl0bGU9IltkXzUsIDBd
W2RfNSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywgNV1b
ZF83LCA4XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYs
IDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2RfNCwg
MF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAorW2Rf
NywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2Rf
NSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8z
LCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVf
Ynlfd29yZCIgc3R5bGU9InBvc2l0aW9uOmZpeGVkOyB0b3A6MzBweDsgcmlnaHQ6NXB4Ij50aGlz
IGlzIGZpeGVkPC9kaXY+CiAKIDxkaXYgaWQ9ImRfNiIgZGlyPWx0ciAKIHRpdGxlPSJbZF82LCAw
XVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAxNl18Ci1bZF83
LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1bZF81
LCA4XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIs
IDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKK1tkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1b
ZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF81LCAwXVtk
XzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2Rf
MSwgNl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHN0eWxlPSJwb3NpdGlv
bjpyZWxhdGl2ZTsgbGVmdDoyMHB4Ij50aGlzIGlzIHJlbGF0aXZlPC9kaXY+CiAKIDxkaXYgaWQ9
ImRfNyIgZGlyPWx0ciAKIHRpdGxlPSJbZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAxNl18
Ci1bZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwg
MF1bZF81LCA4XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAw
XVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKK1tkXzcsIDE2XVtkXzcsIDhdW2Rf
NywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF81
LCAwXVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIs
IDBdW2RfMSwgNl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHN0eWxlPSJw
b3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxMDBweDsgdG9wOjE1MHB4Ij50aGlzIGlzIGFic29sdXRl
PC9kaXY+CiAKIDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92
ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLWxpbmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0
aS1saW5lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA2NTAzKQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLWxpbmUtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsOSBAQCBNb3ZlIHJpZ2h0IGJ5IG9uZSB3
b3JkCiAib3BxIHJzdCB1dncgeHl6IlsxNSwgMTEsIDgsIDMsIDBdLCAiYWJjIGRlZiBnaGkgamts
IG1uICJbMTYsIDExLCA4LCAzLCAwXQogVGVzdCA4LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdv
cmQKLSJhYmMgZGVmIGdoaSBqa2wgbW4gIlswLCAzLCA4LCAxMSwgMTYsIDE4XSwgIm9wcSByc3Qg
dXZ3IHh5eiJbMCwgMywgOCwgMTEsIDE1XSAgICBGQUlMIGV4cGVjdGVkOiBbImFiYyBkZWYgZ2hp
IGprbCBtbiAiWyAwLCAgMywgIDgsICAxMSwgIDE2LCBdIm9wcSByc3QgdXZ3IHh5eiJbIDAsICAz
LCAgOCwgIDExLCAgMTVdCi0iYWJjIGRlZiBnaGkgamtsIG1uICJbMTYsIDE4XSAgIEZBSUwgZXhw
ZWN0ZWQgIm9wcSByc3QgdXZ3IHh5eiJbIDBdCi0iYWJjIGRlZiBnaGkgamtsIG1uICJbMTcsIDE4
XSAgIEZBSUwgZXhwZWN0ZWQgIm9wcSByc3QgdXZ3IHh5eiJbIDBdCisiYWJjIGRlZiBnaGkgamts
IG1uICJbMCwgMywgOCwgMTEsIDE2XSwgIm9wcSByc3QgdXZ3IHh5eiJbMCwgMywgOCwgMTEsIDE1
XQogTW92ZSByaWdodCBieSBvbmUgd29yZAotIm9wcSByc3QgdXZ3IHh5eiJbMTUsIDExLCA4LCAz
LCAwXSwgImFiYyBkZWYgZ2hpIGprbCBtbiAiWzE4LCAxNiwgMTEsIDgsIDMsIDBdCisib3BxIHJz
dCB1dncgeHl6IlsxNSwgMTEsIDgsIDMsIDBdLCAiYWJjIGRlZiBnaGkgamtsIG1uICJbMTYsIDEx
LCA4LCAzLCAwXQogVGVzdCA5LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKICJBQUEgQUFB
IEFBQSBBQUEgIlswLCA0LCA4LCAxMl0sICJBQUEgQUFBIEFBQSBBQUEiWzAsIDQsIDgsIDEyLCAx
NV0KQEAgLTU5LDIzICs1NywzMCBAQCBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCiAiQUFBIGtqIEFB
QSBtbiBvcHEgQUFBIEFBQSJbMjUsIDIyLCAxOCwgMTQsIDExLCA3LCA0LCAwXSwgIiBhYmMgZGVm
IEFBQSBBQUEgaGlqIEFBQSBBQUEgdXZ3IHh5eiAiWzMzLCAyOSwgMjUsIDIxLCAxNywgMTMsIDks
IDQsIDFdCiBUZXN0IDEyLCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSIgYWJjIGRlZiBB
QUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlsxLCA0LCA5LCAxMywgMTcsIDIxLCAyNSwgMjks
IDMzLCAzNl0sICJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlswLCA0LCA3LCAxMSwgMTQsIDE4
LCAyMiwgMjVdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiIGFiYyBkZWYgQUFBIEFBQSBoaWogQUFBIEFB
QSB1dncgeHl6ICJbIDEsICA0LCAgOSwgIDEzLCAgMTcsICAyMSwgIDI1LCAgMjksICAzMywgXSJB
QUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlsgMCwgIDQsICA3LCAgMTEsICAxNCwgIDE4LCAgMjIs
ICAyNV0KLSIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlszMywgMzZdICAg
RkFJTCBleHBlY3RlZCAiQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFBQSJbIDBdCi0iIGFiYyBkZWYg
QUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJbMzUsIDM2XSAgIEZBSUwgZXhwZWN0ZWQgIkFB
QSBraiBBQUEgbW4gb3BxIEFBQSBBQUEiWyAwXQotIiBhYmMgZGVmIEFBQSBBQUEgaGlqIEFBQSBB
QUEgdXZ3IHh5eiAiWzM0LCAzNl0gICBGQUlMIGV4cGVjdGVkICJBQUEga2ogQUFBIG1uIG9wcSBB
QUEgQUFBIlsgMF0KKyIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlsxLCA0
LCA5LCAxMywgMTcsIDIxLCAyNSwgMjksIDMzXSwgIkFBQSBraiBBQUEgbW4gb3BxIEFBQSBBQUEi
WzAsIDQsIDcsIDExLCAxNCwgMTgsIDIyLCAyNV0KIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJB
QUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlsyNSwgMjIsIDE4LCAxNCwgMTEsIDcsIDQsIDBdLCAi
IGFiYyBkZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJbMzYsIDMzLCAyOSwgMjUsIDIx
LCAxNywgMTMsIDksIDQsIDFdCisiQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFBQSJbMjUsIDIyLCAx
OCwgMTQsIDExLCA3LCA0LCAwXSwgIiBhYmMgZGVmIEFBQSBBQUEgaGlqIEFBQSBBQUEgdXZ3IHh5
eiAiWzMzLCAyOSwgMjUsIDIxLCAxNywgMTMsIDksIDQsIDFdCiBUZXN0IDEzLCBMVFI6CiBNb3Zl
IHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiAiWzAsIDRdCisiYWJjIGRlZiBnaGkgamtsIG1u
ICJbMCwgNCwgOCwgMTIsIDE2XSwgIm9wcSByc3QgdXZ3IHh5eiJbMCwgNCwgOCwgMTIsIDE1XQog
TW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iIGhpaiBvcHEiWzgsIDUsIDFdCisib3BxIHJzdCB1dncg
eHl6IlsxNSwgMTIsIDgsIDQsIDBdLCAiYWJjIGRlZiBnaGkgamtsIG1uICJbMTYsIDEyLCA4LCA0
LCAwXQogVGVzdCAxNCwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYgZ2hp
IGprbCBtbiAiWzAsIDQsIDgsIDEyLCAxNiwgMThdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJh
YmMgZGVmIGdoaSBqa2wgbW4gIlsxOCwgMTYsIDEyLCA4LCA0LCAwXQorVGVzdCAxNSwgTFRSOgor
TW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYgIlswLCA0LCA4XQorTW92ZSBsZWZ0IGJ5
IG9uZSB3b3JkCisiIGhpaiBvcHEiWzgsIDUsIDFdCitUZXN0IDE2LCBMVFI6CitNb3ZlIHJpZ2h0
IGJ5IG9uZSB3b3JkCiA8RElWPlswXQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCiA8RElWPlswXQot
VGVzdCAxNSwgTFRSOgorVGVzdCAxNywgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAogIlxu
MDAiWzNdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1saW5lLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5
LW11bHRpLWxpbmUuaHRtbAkocmV2aXNpb24gMTA2NTAzKQorKysgTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLWxpbmUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCB3aGVyZSBjaGlsZF9ub2RlX2luZGV4IGlzIG9wdGlv
bmFsLCBkZWZhCiAKIDxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1ydGwgaWQ9Im1sXzciIGNsYXNz
PSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSJbbWxfNywgMTUsIDVdW21sXzcs
IDExLCA1XVttbF83LCA4LCA1XVttbF83LCAzLCA1XVttbF83LCAwLCA1XVttbF83LCAxNl1bbWxf
NywgMTFdW21sXzcsIDhdW21sXzcsIDNdW21sXzcsIDBdfFttbF83LCAwXVttbF83LCAzXVttbF83
LCA4XVttbF83LCAxMV1bbWxfNywgMTZdW21sXzcsIDAsIDVdW21sXzcsIDMsIDVdW21sXzcsIDgs
IDVdW21sXzcsIDExLCA1XVttbF83LCAxNSwgNV0iPmFiYyBkZWYgZ2hpIGprbCBtbiA8YnIvPjxi
ci8+PGJyLz5vcHEgcnN0IHV2dyB4eXo8L2Rpdj4KIAotPGRpdiBjb250ZW50ZWRpdGFibGUgZGly
PXJ0bCBpZD0ibWxfOCIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIGZpeF93aWR0aCIgdGl0bGU9
IlttbF84LCAxNSwgNV1bbWxfOCwgMTEsIDVdW21sXzgsIDgsIDVdW21sXzgsIDMsIDVdW21sXzgs
IDAsIDVdW21sXzgsIDE4XVttbF84LCAxNl1bbWxfOCwgMTFdW21sXzgsIDhdW21sXzgsIDNdW21s
XzgsIDBdfFttbF84LCAwXVttbF84LCAzXVttbF84LCA4XVttbF84LCAxMV1bbWxfOCwgMTZdW21s
XzgsIDAsIDVdW21sXzgsIDMsIDVdW21sXzgsIDgsIDVdW21sXzgsIDExLCA1XVttbF84LCAxNSwg
NV0iPmFiYyBkZWYgZ2hpIGprbCBtbiA8ZGl2Pjxici8+PC9kaXY+PGRpdj48YnIvPjwvZGl2Pjxk
aXY+PGJyLz48L2Rpdj5vcHEgcnN0IHV2dyB4eXo8L2Rpdj4KKzxkaXYgY29udGVudGVkaXRhYmxl
IGRpcj1ydGwgaWQ9Im1sXzgiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRp
dGxlPSJbbWxfOCwgMTUsIDVdW21sXzgsIDExLCA1XVttbF84LCA4LCA1XVttbF84LCAzLCA1XVtt
bF84LCAwLCA1XVttbF84LCAxNl1bbWxfOCwgMTFdW21sXzgsIDhdW21sXzgsIDNdW21sXzgsIDBd
fFttbF84LCAwXVttbF84LCAzXVttbF84LCA4XVttbF84LCAxMV1bbWxfOCwgMTZdW21sXzgsIDAs
IDVdW21sXzgsIDMsIDVdW21sXzgsIDgsIDVdW21sXzgsIDExLCA1XVttbF84LCAxNSwgNV0iPmFi
YyBkZWYgZ2hpIGprbCBtbiA8ZGl2Pjxici8+PC9kaXY+PGRpdj48YnIvPjwvZGl2PjxkaXY+PGJy
Lz48L2Rpdj5vcHEgcnN0IHV2dyB4eXo8L2Rpdj4KIAogPGRpdiBjb250ZW50ZWRpdGFibGUgZGly
PXJ0bCBpZD0ibWxfOSIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIGZpeF93aWR0aCIgdGl0bGU9
IlttbF85LCAxNSwgNV1bbWxfOSwgMTIsIDVdW21sXzksIDgsIDVdW21sXzksIDQsIDVdW21sXzks
IDAsIDVdW21sXzksIDEyXVttbF85LCA4XVttbF85LCA0XVttbF85LCAwXXxbbWxfOSwgMF1bbWxf
OSwgNF1bbWxfOSwgOF1bbWxfOSwgMTJdW21sXzksIDAsIDVdW21sXzksIDQsIDVdW21sXzksIDgs
IDVdW21sXzksIDEyLCA1XVttbF85LCAxNSwgNV0iPteQ15DXkCDXkNeQ15Ag15DXkNeQINeQ15DX
kCA8YnIvPjxici8+PGJyLz7XkNeQ15Ag15DXkNeQINeQ15DXkCDXkNeQ15A8L2Rpdj4KIApAQCAt
NjUsMTEgKzY1LDE1IEBAIHdoZXJlIGNoaWxkX25vZGVfaW5kZXggaXMgb3B0aW9uYWwsIGRlZmEK
ICI+IGFiYyBkZWYg15DXkNeQINeQ15DXkCBoaWog15DXkNeQINeQ15DXkCB1dncgeHl6IDxici8+
PGJyLz48YnIvPteQ15DXkCBraiDXkNeQ15AgbW4gb3BxINeQ15DXkCDXkNeQ15A8L2Rpdj4KIAog
PGRpdiBjb250ZW50ZWRpdGFibGUgZGlyPXJ0bCBpZD0ibWxfMTIiIGNsYXNzPSJ0ZXN0X21vdmVf
Ynlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSIKLVttbF8xMiwgMjUsIDVdW21sXzEyLCAyMiwgNV1b
bWxfMTIsIDE4LCA1XVttbF8xMiwgMTQsIDVdW21sXzEyLCAxMSwgNV1bbWxfMTIsIDcsIDVdW21s
XzEyLCA0LCA1XVttbF8xMiwgMCwgNV1bbWxfMTIsIDM2XVttbF8xMiwgMzNdW21sXzEyLCAyOV1b
bWxfMTIsIDI1XVttbF8xMiwgMjFdW21sXzEyLCAxN11bbWxfMTIsIDEzXVttbF8xMiwgOV1bbWxf
MTIsIDRdW21sXzEyLCAxXXxbbWxfMTIsIDFdW21sXzEyLCA0XVttbF8xMiwgOV1bbWxfMTIsIDEz
XVttbF8xMiwgMTddW21sXzEyLCAyMV1bbWxfMTIsIDI1XVttbF8xMiwgMjldW21sXzEyLCAzM11b
bWxfMTIsIDAsIDVdW21sXzEyLCA0LCA1XVttbF8xMiwgNywgNV1bbWxfMTIsIDExLCA1XVttbF8x
MiwgMTQsIDVdW21sXzEyLCAxOCwgNV1bbWxfMTIsIDIyLCA1XVttbF8xMiwgMjUsIDVdCitbbWxf
MTIsIDI1LCA1XVttbF8xMiwgMjIsIDVdW21sXzEyLCAxOCwgNV1bbWxfMTIsIDE0LCA1XVttbF8x
MiwgMTEsIDVdW21sXzEyLCA3LCA1XVttbF8xMiwgNCwgNV1bbWxfMTIsIDAsIDVdW21sXzEyLCAz
M11bbWxfMTIsIDI5XVttbF8xMiwgMjVdW21sXzEyLCAyMV1bbWxfMTIsIDE3XVttbF8xMiwgMTNd
W21sXzEyLCA5XVttbF8xMiwgNF1bbWxfMTIsIDFdfFttbF8xMiwgMV1bbWxfMTIsIDRdW21sXzEy
LCA5XVttbF8xMiwgMTNdW21sXzEyLCAxN11bbWxfMTIsIDIxXVttbF8xMiwgMjVdW21sXzEyLCAy
OV1bbWxfMTIsIDMzXVttbF8xMiwgMCwgNV1bbWxfMTIsIDQsIDVdW21sXzEyLCA3LCA1XVttbF8x
MiwgMTEsIDVdW21sXzEyLCAxNCwgNV1bbWxfMTIsIDE4LCA1XVttbF8xMiwgMjIsIDVdW21sXzEy
LCAyNSwgNV0KICI+IGFiYyBkZWYg15DXkNeQINeQ15DXkCBoaWog15DXkNeQINeQ15DXkCB1dncg
eHl6IDxkaXY+PGJyLz48L2Rpdj48ZGl2Pjxici8+PC9kaXY+PGRpdj48YnIvPjwvZGl2PteQ15DX
kCBraiDXkNeQ15AgbW4gb3BxINeQ15DXkCDXkNeQ15A8L2Rpdj4KIAorPGRpdiBjb250ZW50ZWRp
dGFibGUgZGlyPWx0ciBpZD0ibWxfMTMiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lk
dGgiIHRpdGxlPSJbbWxfMTMsIDBdW21sXzEzLCA0XVttbF8xMywgOF1bbWxfMTMsIDEyXVttbF8x
MywgMTZdW21sXzEzLCAwLCA1XVttbF8xMywgNCwgNV1bbWxfMTMsIDgsIDVdW21sXzEzLCAxMiwg
NV1bbWxfMTMsIDE1LCA1XXxbbWxfMTMsIDE1LCA1XVttbF8xMywgMTIsIDVdW21sXzEzLCA4LCA1
XVttbF8xMywgNCwgNV1bbWxfMTMsIDAsIDVdW21sXzEzLCAxNl1bbWxfMTMsIDEyXVttbF8xMywg
OF1bbWxfMTMsIDRdW21sXzEzLCAwXSI+YWJjIGRlZiBnaGkgamtsIG1uIDxkaXY+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2Pm9wcSByc3QgdXZ3IHh5ejwvZGl2PgorCis8ZGl2IGNvbnRlbnRl
ZGl0YWJsZSBkaXI9bHRyIGlkPSJtbF8xNCIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIGZpeF93
aWR0aCIgdGl0bGU9IlttbF8xNCwgMF1bbWxfMTQsIDRdW21sXzE0LCA4XVttbF8xNCwgMTJdW21s
XzE0LCAxNl1bbWxfMTQsIDE4XXxbbWxfMTQsIDE4XVttbF8xNCwgMTZdW21sXzE0LCAxMl1bbWxf
MTQsIDhdW21sXzE0LCA0XVttbF8xNCwgMF0iPmFiYyBkZWYgZ2hpIGprbCBtbiA8ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj4KKwogPCEtLSBtaXhlZCBlZGl0YWJpbGl0eSAt
LT4KLTxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDR8OCA1
IDEiPmFiYyBkZWYgPHNwYW4gY29udGVudGVkaXRhYmxlPiBpbnNpZGUgc3BhbiA8L3NwYW4+IGhp
aiBvcHE8L2Rpdj4KKzxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxl
PSIwIDQgOHw4IDUgMSI+YWJjIGRlZiA8c3BhbiBjb250ZW50ZWRpdGFibGU+IGluc2lkZSBzcGFu
IDwvc3Bhbj4gaGlqIG9wcTwvZGl2PgogCiA8ZGl2IGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIg
Y29udGVudGVkaXRhYmxlIGRpcj1sdHIgdGl0bGU9IjB8MCI+PC9kaXY+CiAKSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1zaW5nbGUtc3Bh
Y2UtaW5saW5lLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1zaW5nbGUtc3BhY2UtaW5s
aW5lLWVsZW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMDY1MDMpCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNlLWlu
bGluZS1lbGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTcsMzAgKzE3LDE0
IEBAIE1vdmUgbGVmdCBieSBvbmUgd29yZAogIiByc3QgdXZ3Ils4LCA1LCAxXSwgImhpaiBvcHEi
WzRdLCAiYWJjIGRlZiAiWzgsIDQsIDBdCiBUZXN0IDQsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUg
d29yZAotImFiYyBkZWYgIlswXSwgIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzNdLCAiYWJjIGRl
ZiAiWzcsIDNdLCAiIHJzdCB1dnciWzhdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiYWJjIGRlZiAiWyAw
LCBdIiByc3QgdXZ3IlsgNCwgXSJoaWogb3BxIlsgNywgIDMsIF0iYWJjIGRlZiAiWyA3LCAgMywg
XSIgcnN0IHV2dyJbIDhdCi0iIHJzdCB1dnciWzRdLCAiaGlqIG9wcSJbM10gICBGQUlMIGV4cGVj
dGVkICJoaWogb3BxIlsgN10KLSIgcnN0IHV2dyJbM10sICJoaWogb3BxIlszXSAgIEZBSUwgZXhw
ZWN0ZWQgImhpaiBvcHEiWyA3XQotIiByc3QgdXZ3IlsyXSwgImhpaiBvcHEiWzNdICAgRkFJTCBl
eHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iIHJzdCB1dnciWzFdLCAiaGlqIG9wcSJbM10gICBGQUlM
IGV4cGVjdGVkICJoaWogb3BxIlsgN10KLU1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSIgcnN0IHV2
dyJbOF0sICJhYmMgZGVmICJbMywgN10sICJoaWogb3BxIlszXSwgIiByc3QgdXZ3Ils0XSwgImFi
YyBkZWYgIlswXSAgICBGQUlMIGV4cGVjdGVkOiBbIiByc3QgdXZ3IlsgOCwgXSJhYmMgZGVmICJb
IDMsICA3LCBdImhpaiBvcHEiWyAzLCAgNywgXSIgcnN0IHV2dyJbIDQsIF0iYWJjIGRlZiAiWyAw
XQotImhpaiBvcHEiWzNdLCAiIHJzdCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJb
IDddCi0iaGlqIG9wcSJbNF0sICIgcnN0IHV2dyJbNF0gICBGQUlMIGV4cGVjdGVkICJoaWogb3Bx
IlsgN10KLSJoaWogb3BxIls1XSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBv
cHEiWyA3XQotImhpaiBvcHEiWzZdLCAiIHJzdCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAiaGlq
IG9wcSJbIDddCisiYWJjIGRlZiAiWzBdLCAiIHJzdCB1dnciWzRdLCAiaGlqIG9wcSJbNywgM10s
ICJhYmMgZGVmICJbNywgM10sICIgcnN0IHV2dyJbOF0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQK
KyIgcnN0IHV2dyJbOF0sICJhYmMgZGVmICJbMywgN10sICJoaWogb3BxIlszLCA3XSwgIiByc3Qg
dXZ3Ils0XSwgImFiYyBkZWYgIlswXQogVGVzdCA1LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdv
cmQKLSJhYmMgZGVmICJbMF0sICIgcnN0IHV2dyJbNF0sICJoaWogb3BxIlszXSwgImFiYyBkZWYg
Ils3LCAzXSwgIiByc3QgdXZ3Ils4XSAgICBGQUlMIGV4cGVjdGVkOiBbImFiYyBkZWYgIlsgMCwg
XSIgcnN0IHV2dyJbIDQsIF0iaGlqIG9wcSJbIDcsICAzLCBdImFiYyBkZWYgIlsgNywgIDMsIF0i
IHJzdCB1dnciWyA4XQotIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzNdICAgRkFJTCBleHBlY3Rl
ZCAiaGlqIG9wcSJbIDddCi0iIHJzdCB1dnciWzNdLCAiaGlqIG9wcSJbM10gICBGQUlMIGV4cGVj
dGVkICJoaWogb3BxIlsgN10KLSIgcnN0IHV2dyJbMl0sICJoaWogb3BxIlszXSAgIEZBSUwgZXhw
ZWN0ZWQgImhpaiBvcHEiWyA3XQotIiByc3QgdXZ3IlsxXSwgImhpaiBvcHEiWzNdICAgRkFJTCBl
eHBlY3RlZCAiaGlqIG9wcSJbIDddCi1Nb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iIHJzdCB1dnci
WzhdLCAiYWJjIGRlZiAiWzMsIDddLCAiaGlqIG9wcSJbM10sICIgcnN0IHV2dyJbNF0sICJhYmMg
ZGVmICJbMF0gICAgRkFJTCBleHBlY3RlZDogWyIgcnN0IHV2dyJbIDgsIF0iYWJjIGRlZiAiWyAz
LCAgNywgXSJoaWogb3BxIlsgMywgIDcsIF0iIHJzdCB1dnciWyA0LCBdImFiYyBkZWYgIlsgMF0K
LSJoaWogb3BxIlszXSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3
XQotImhpaiBvcHEiWzRdLCAiIHJzdCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJb
IDddCi0iaGlqIG9wcSJbNV0sICIgcnN0IHV2dyJbNF0gICBGQUlMIGV4cGVjdGVkICJoaWogb3Bx
IlsgN10KLSJoaWogb3BxIls2XSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBv
cHEiWyA3XQorImFiYyBkZWYgIlswXSwgIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzcsIDNdLCAi
YWJjIGRlZiAiWzcsIDNdLCAiIHJzdCB1dnciWzhdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisi
IHJzdCB1dnciWzhdLCAiYWJjIGRlZiAiWzMsIDddLCAiaGlqIG9wcSJbMywgN10sICIgcnN0IHV2
dyJbNF0sICJhYmMgZGVmICJbMF0KIFRlc3QgNiwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29y
ZAogImFiYyBkZWYgIlswLCA0LCA4XSwgImhpaiBvcHEiWzRdLCAiIHJzdCB1dnciWzEsIDUsIDhd
CkBAIC02OCw5ICs1MiwxNyBAQCBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKICJGRlogTElHIls3XSwg
IkFCRCBEU1UgIlszLCA3XSwgIkVKSCBGVVgiWzNdLCAiRkZaIExJRyJbM10sICJBQkQgRFNVICJb
MF0KIFRlc3QgMTEsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotIkFCRCBEU1UgIlswLCA0
LCA4XSwgImFiYyBkZWYiWzNdLCAiRkZaIExJRyJbNCwgN10KLU1vdmUgcmlnaHQgYnkgb25lIHdv
cmQKLSJGRlogTElHIls3LCA0XSwgImFiYyBkZWYiWzNdLCAiQUJEIERTVSAiWzgsIDQsIDBdCisi
QUJEIERTVSAiWzAsIDRdLCAiYWJjIGRlZiJbM10sICJGRlogTElHIls0LCA3XSAgICBGQUlMIGV4
cGVjdGVkOiBbIkFCRCBEU1UgIlsgMCwgIDQsICA4LCBdImFiYyBkZWYiWyAzLCBdIkZGWiBMSUci
WyA0LCAgN10KKyJBQkQgRFNVICJbNF0sICJhYmMgZGVmIlszXSAgIEZBSUwgZXhwZWN0ZWQgIkFC
RCBEU1UgIlsgOF0KKyJBQkQgRFNVICJbNV0sICJhYmMgZGVmIlszXSAgIEZBSUwgZXhwZWN0ZWQg
IkFCRCBEU1UgIlsgOF0KKyJBQkQgRFNVICJbNl0sICJhYmMgZGVmIlszXSAgIEZBSUwgZXhwZWN0
ZWQgIkFCRCBEU1UgIlsgOF0KKyJBQkQgRFNVICJbN10sICJhYmMgZGVmIlszXSAgIEZBSUwgZXhw
ZWN0ZWQgIkFCRCBEU1UgIlsgOF0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJGRlogTElHIls3
LCA0XSwgImFiYyBkZWYiWzNdLCAiQUJEIERTVSAiWzQsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6IFsi
RkZaIExJRyJbIDcsICA0LCBdImFiYyBkZWYiWyAzLCBdIkFCRCBEU1UgIlsgOCwgIDQsICAwXQor
ImFiYyBkZWYiWzNdLCAiQUJEIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJEIERTVSAiWyA4
XQorImFiYyBkZWYiWzRdLCAiQUJEIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJEIERTVSAi
WyA4XQorImFiYyBkZWYiWzVdLCAiQUJEIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJEIERT
VSAiWyA4XQorImFiYyBkZWYiWzZdLCAiQUJEIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJE
IERTVSAiWyA4XQogVGVzdCAxMiwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAogIkFCRCBE
U1UgIlswXSwgIkZGWiBMSUciWzNdLCAiQUJEIERTVSAiWzhdLCAiYWJjIGRlZiJbNF0sICJBQkQg
RFNVICJbNywgM10sICJGRlogTElHIls3XQpAQCAtNzgsNTIgKzcwLDY3IEBAIE1vdmUgbGVmdCBi
eSBvbmUgd29yZAogIkZGWiBMSUciWzddLCAiQUJEIERTVSAiWzMsIDddLCAiYWJjIGRlZiJbNF0s
ICJBQkQgRFNVICJbOF0sICJGRlogTElHIlszXSwgIkFCRCBEU1UgIlswXQogVGVzdCAxMywgUlRM
OgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iQUJEIERTVSAiWzAsIDQsIDhdLCAiYWJjIGRlZiJb
M10sICJGRlogTElHIls0LCA3XQotTW92ZSByaWdodCBieSBvbmUgd29yZAotIkZGWiBMSUciWzcs
IDRdLCAiYWJjIGRlZiJbM10sICJBQkQgRFNVICJbOCwgNCwgMF0KKyJBQkQgRFNVICJbMCwgNF0s
ICJhYmMgZGVmIlszXSwgIkZGWiBMSUciWzQsIDddICAgIEZBSUwgZXhwZWN0ZWQ6IFsiQUJEIERT
VSAiWyAwLCAgNCwgIDgsIF0iYWJjIGRlZiJbIDMsIF0iRkZaIExJRyJbIDQsICA3XQorIkFCRCBE
U1UgIls0XSwgImFiYyBkZWYiWzNdICAgRkFJTCBleHBlY3RlZCAiQUJEIERTVSAiWyA4XQorIkFC
RCBEU1UgIls1XSwgImFiYyBkZWYiWzNdICAgRkFJTCBleHBlY3RlZCAiQUJEIERTVSAiWyA4XQor
IkFCRCBEU1UgIls2XSwgImFiYyBkZWYiWzNdICAgRkFJTCBleHBlY3RlZCAiQUJEIERTVSAiWyA4
XQorIkFCRCBEU1UgIls3XSwgImFiYyBkZWYiWzNdICAgRkFJTCBleHBlY3RlZCAiQUJEIERTVSAi
WyA4XQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkZGWiBMSUciWzcsIDRdLCAiYWJjIGRlZiJb
M10sICJBQkQgRFNVICJbNCwgMF0gICAgRkFJTCBleHBlY3RlZDogWyJGRlogTElHIlsgNywgIDQs
IF0iYWJjIGRlZiJbIDMsIF0iQUJEIERTVSAiWyA4LCAgNCwgIDBdCisiYWJjIGRlZiJbM10sICJB
QkQgRFNVICJbNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgRFNVICJbIDhdCisiYWJjIGRlZiJbNF0s
ICJBQkQgRFNVICJbNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgRFNVICJbIDhdCisiYWJjIGRlZiJb
NV0sICJBQkQgRFNVICJbNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgRFNVICJbIDhdCisiYWJjIGRl
ZiJbNl0sICJBQkQgRFNVICJbNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgRFNVICJbIDhdCiBUZXN0
IDE0LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iQUJEIERTVSAiWzAsIDMsIDhdLCAi
YWJjIGRlZiJbNF0sICJGRlogTElHIlszLCA3XQotTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iRkZa
IExJRyJbNywgM10sICJhYmMgZGVmIls0XSwgIkFCRCBEU1UgIls4LCAzLCAwXQorIkFCRCBEU1Ug
IlswLCAzLCA4XSwgImFiYyBkZWYiWzQsIDddLCAiRkZaIExJRyJbMywgN10gICAgRkFJTCBleHBl
Y3RlZDogWyJBQkQgRFNVICJbIDAsICAzLCAgOCwgXSJhYmMgZGVmIlsgNCwgXSJGRlogTElHIlsg
MywgIDddCisiYWJjIGRlZiJbNCwgN10gICBGQUlMIGV4cGVjdGVkICJGRlogTElHIlsgM10KKyJh
YmMgZGVmIls1LCA3XSAgIEZBSUwgZXhwZWN0ZWQgIkZGWiBMSUciWyAzXQorImFiYyBkZWYiWzYs
IDddICAgRkFJTCBleHBlY3RlZCAiRkZaIExJRyJbIDNdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQK
KyJGRlogTElHIls3LCAzXSwgImFiYyBkZWYiWzcsIDRdLCAiQUJEIERTVSAiWzgsIDMsIDBdICAg
IEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIExJRyJbIDcsICAzLCBdImFiYyBkZWYiWyA0LCBdIkFCRCBE
U1UgIlsgOCwgIDMsICAwXQorIkZGWiBMSUciWzNdLCAiYWJjIGRlZiJbN10gICBGQUlMIGV4cGVj
dGVkICJhYmMgZGVmIlsgNF0KKyJGRlogTElHIls0XSwgImFiYyBkZWYiWzddICAgRkFJTCBleHBl
Y3RlZCAiYWJjIGRlZiJbIDRdCisiRkZaIExJRyJbNV0sICJhYmMgZGVmIls3XSAgIEZBSUwgZXhw
ZWN0ZWQgImFiYyBkZWYiWyA0XQorIkZGWiBMSUciWzZdLCAiYWJjIGRlZiJbN10gICBGQUlMIGV4
cGVjdGVkICJhYmMgZGVmIlsgNF0KIFRlc3QgMTUsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29y
ZAotIkFCRCBvcHEgRFNVICJbMCwgNCwgOCwgMTJdLCAiYWJjIEFBQSBkZWYiWzgsIDQsIDNdLCAi
RkZaIHJzdCBMSUciWzQsIDgsIDExXSAgICBGQUlMIGV4cGVjdGVkOiBbIkFCRCBvcHEgRFNVICJb
IDAsICA0LCAgOCwgIDEyLCBdImFiYyBBQUEgZGVmIlsgNCwgIDMsIF0iRkZaIHJzdCBMSUciWyA0
LCAgOCwgIDExXQotIkFCRCBvcHEgRFNVICJbMTJdLCAiYWJjIEFBQSBkZWYiWzhdICAgRkFJTCBl
eHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA0XQotImFiYyBBQUEgZGVmIlsxMCwgOF0gICBGQUlMIGV4
cGVjdGVkICJhYmMgQUFBIGRlZiJbIDRdCi0iYWJjIEFBQSBkZWYiWzksIDhdICAgRkFJTCBleHBl
Y3RlZCAiYWJjIEFBQSBkZWYiWyA0XQorIkFCRCBvcHEgRFNVICJbMCwgNCwgOCwgMTJdLCAiYWJj
IEFBQSBkZWYiWzQsIDNdLCAiRkZaIHJzdCBMSUciWzQsIDgsIDExXQogTW92ZSByaWdodCBieSBv
bmUgd29yZAotIkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJhYmMgQUFBIGRlZiJbMywgNCwgOF0s
ICJBQkQgb3BxIERTVSAiWzEyLCA4LCA0LCAwXSAgICBGQUlMIGV4cGVjdGVkOiBbIkZGWiByc3Qg
TElHIlsgMTEsICA4LCAgNCwgXSJhYmMgQUFBIGRlZiJbIDMsICA0LCBdIkFCRCBvcHEgRFNVICJb
IDEyLCAgOCwgIDQsICAwXQotImFiYyBBQUEgZGVmIls0LCA4XSAgIEZBSUwgZXhwZWN0ZWQgIkFC
RCBvcHEgRFNVICJbIDEyXQorIkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJhYmMgQUFBIGRlZiJb
MywgNF0sICJBQkQgb3BxIERTVSAiWzEyLCA4LCA0LCAwXQogVGVzdCAxNiwgTFRSOgogTW92ZSBy
aWdodCBieSBvbmUgd29yZAotIkFCRCBvcHEgRFNVICJbMCwgNF0sICJhYmMgQUFBIGRlZiJbOCwg
NF0sICJBQkQgb3BxIERTVSAiWzEyLCAxMV0sICJGRlogcnN0IExJRyJbNCwgOCwgMTFdICAgIEZB
SUwgZXhwZWN0ZWQ6IFsiQUJEIG9wcSBEU1UgIlsgMCwgIDQsICA4LCBdImFiYyBBQUEgZGVmIlsg
OCwgIDcsIF0iQUJEIG9wcSBEU1UgIlsgMTIsICAxMSwgXSJGRlogcnN0IExJRyJbIDQsICA4LCAg
MTFdCi0iQUJEIG9wcSBEU1UgIls0XSwgImFiYyBBQUEgZGVmIls4XSAgIEZBSUwgZXhwZWN0ZWQg
IkFCRCBvcHEgRFNVICJbIDhdCi0iQUJEIG9wcSBEU1UgIls1XSwgImFiYyBBQUEgZGVmIls4XSAg
IEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDhdCi0iQUJEIG9wcSBEU1UgIls2XSwgImFi
YyBBQUEgZGVmIls4XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDhdCi0iQUJEIG9w
cSBEU1UgIls3XSwgImFiYyBBQUEgZGVmIls4XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNV
ICJbIDhdCi0iYWJjIEFBQSBkZWYiWzgsIDRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYi
WyA3XQotImFiYyBBQUEgZGVmIls5LCA0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsg
N10KLSJhYmMgQUFBIGRlZiJbMTAsIDRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA3
XQotImFiYyBBQUEgZGVmIlsxMSwgNF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDdd
Ci0iYWJjIEFBQSBkZWYiWzcsIDRdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgMTJd
Ci0iYWJjIEFBQSBkZWYiWzYsIDRdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgMTJd
Ci0iYWJjIEFBQSBkZWYiWzUsIDRdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgMTJd
Ci1Nb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJGRlogcnN0IExJRyJbMTEsIDgsIDRdLCAiQUJEIG9w
cSBEU1UgIlsxMSwgMTJdLCAiYWJjIEFBQSBkZWYiWzcsIDhdLCAiQUJEIG9wcSBEU1UgIls0LCAw
XSAgICBGQUlMIGV4cGVjdGVkOiBbIkZGWiByc3QgTElHIlsgMTEsICA4LCAgNCwgXSJBQkQgb3Bx
IERTVSAiWyAxMSwgIDEyLCBdImFiYyBBQUEgZGVmIlsgNywgIDgsIF0iQUJEIG9wcSBEU1UgIlsg
OCwgIDQsICAwXQotImFiYyBBQUEgZGVmIls4XSwgIkFCRCBvcHEgRFNVICJbNF0gICBGQUlMIGV4
cGVjdGVkICJBQkQgb3BxIERTVSAiWyA4XQotIkZGWiByc3QgTElHIlsxXSwgIkFCRCBvcHEgRFNV
ICJbNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyA4XQotIkZGWiByc3QgTElHIlsy
XSwgIkFCRCBvcHEgRFNVICJbNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyA4XQor
IkFCRCBvcHEgRFNVICJbMCwgNCwgOF0sICJhYmMgQUFBIGRlZiJbOCwgN10sICJBQkQgb3BxIERT
VSAiWzEyLCAxMV0sICJGRlogcnN0IExJRyJbNCwgOCwgMTFdCitNb3ZlIGxlZnQgYnkgb25lIHdv
cmQKKyJGRlogcnN0IExJRyJbMTEsIDgsIDRdLCAiQUJEIG9wcSBEU1UgIlsxMSwgMTJdLCAiYWJj
IEFBQSBkZWYiWzcsIDhdLCAiQUJEIG9wcSBEU1UgIls4LCA0LCAwXQogVGVzdCAxNywgUlRMOgog
TW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iQUJEIG9wcSBEU1UgIlswLCA0LCA4LCAxMl0sICJhYmMg
QUFBIGRlZiJbNCwgOF0sICJGRlogcnN0IExJRyJbNCwgOCwgMTFdCi1Nb3ZlIHJpZ2h0IGJ5IG9u
ZSB3b3JkCi0iRkZaIHJzdCBMSUciWzExLCA4LCA0XSwgImFiYyBBQUEgZGVmIls4LCA0XSwgIkFC
RCBvcHEgRFNVICJbMTIsIDgsIDQsIDBdCisiQUJEIG9wcSBEU1UgIlswLCA0LCA4LCAxMl0sICJh
YmMgQUFBIGRlZiJbNF0sICJGRlogcnN0IExJRyJbNCwgOCwgMTFdICAgIEZBSUwgZXhwZWN0ZWQ6
IFsiQUJEIG9wcSBEU1UgIlsgMCwgIDQsICA4LCAgMTIsIF0iYWJjIEFBQSBkZWYiWyA0LCAgOCwg
XSJGRlogcnN0IExJRyJbIDQsICA4LCAgMTFdCisiYWJjIEFBQSBkZWYiWzRdLCAiRkZaIHJzdCBM
SUciWzRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA4XQorImFiYyBBQUEgZGVmIls1
XSwgIkZGWiByc3QgTElHIls0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0KKyJh
YmMgQUFBIGRlZiJbNl0sICJGRlogcnN0IExJRyJbNF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFB
IGRlZiJbIDhdCisiYWJjIEFBQSBkZWYiWzddLCAiRkZaIHJzdCBMSUciWzRdICAgRkFJTCBleHBl
Y3RlZCAiYWJjIEFBQSBkZWYiWyA4XQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkZGWiByc3Qg
TElHIlsxMSwgOCwgNF0sICJhYmMgQUFBIGRlZiJbNF0sICJBQkQgb3BxIERTVSAiWzEyLCA4LCA0
LCAwXSAgICBGQUlMIGV4cGVjdGVkOiBbIkZGWiByc3QgTElHIlsgMTEsICA4LCAgNCwgXSJhYmMg
QUFBIGRlZiJbIDgsICA0LCBdIkFCRCBvcHEgRFNVICJbIDEyLCAgOCwgIDQsICAwXQorIkZGWiBy
c3QgTElHIls0XSwgImFiYyBBQUEgZGVmIls0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVm
IlsgOF0KKyJGRlogcnN0IExJRyJbM10sICJhYmMgQUFBIGRlZiJbNF0gICBGQUlMIGV4cGVjdGVk
ICJhYmMgQUFBIGRlZiJbIDhdCisiRkZaIHJzdCBMSUciWzJdLCAiYWJjIEFBQSBkZWYiWzRdICAg
RkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA4XQorIkZGWiByc3QgTElHIlsxXSwgImFiYyBB
QUEgZGVmIls0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0KKyJhYmMgQUFBIGRl
ZiJbMTEsIDRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA4XQorImFiYyBBQUEgZGVm
Ils5LCA0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0KKyJhYmMgQUFBIGRlZiJb
MTAsIDRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA4XQogVGVzdCAxOCwgTFRSOgog
TW92ZSByaWdodCBieSBvbmUgd29yZAotIkFCRCBvcHEgRFNVICJbMCwgNCwgOCwgMTJdLCAiYWJj
IEFBQSBkZWYiWzQsIDhdLCAiRkZaIHJzdCBMSUciWzQsIDgsIDExXQotTW92ZSBsZWZ0IGJ5IG9u
ZSB3b3JkCi0iRkZaIHJzdCBMSUciWzExLCA4LCA0XSwgImFiYyBBQUEgZGVmIls4LCA0XSwgIkFC
RCBvcHEgRFNVICJbMTIsIDgsIDQsIDBdCisiQUJEIG9wcSBEU1UgIlswLCA0LCA4LCAxMl0sICJh
YmMgQUFBIGRlZiJbNCwgOCwgMTFdLCAiRkZaIHJzdCBMSUciWzQsIDgsIDExXSAgICBGQUlMIGV4
cGVjdGVkOiBbIkFCRCBvcHEgRFNVICJbIDAsICA0LCAgOCwgIDEyLCBdImFiYyBBQUEgZGVmIlsg
NCwgIDgsIF0iRkZaIHJzdCBMSUciWyA0LCAgOCwgIDExXQorImFiYyBBQUEgZGVmIls4LCAxMV0g
ICBGQUlMIGV4cGVjdGVkICJGRlogcnN0IExJRyJbIDRdCisiYWJjIEFBQSBkZWYiWzksIDExXSAg
IEZBSUwgZXhwZWN0ZWQgIkZGWiByc3QgTElHIlsgNF0KKyJhYmMgQUFBIGRlZiJbMTAsIDExXSAg
IEZBSUwgZXhwZWN0ZWQgIkZGWiByc3QgTElHIlsgNF0KK01vdmUgbGVmdCBieSBvbmUgd29yZAor
IkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJhYmMgQUFBIGRlZiJbMTEsIDgsIDRdLCAiQUJEIG9w
cSBEU1UgIlsxMiwgOCwgNCwgMF0gICAgRkFJTCBleHBlY3RlZDogWyJGRlogcnN0IExJRyJbIDEx
LCAgOCwgIDQsIF0iYWJjIEFBQSBkZWYiWyA4LCAgNCwgXSJBQkQgb3BxIERTVSAiWyAxMiwgIDgs
ICA0LCAgMF0KKyJGRlogcnN0IExJRyJbNF0sICJhYmMgQUFBIGRlZiJbMTFdICAgRkFJTCBleHBl
Y3RlZCAiYWJjIEFBQSBkZWYiWyA4XQorIkZGWiByc3QgTElHIlszXSwgImFiYyBBQUEgZGVmIlsx
MV0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDhdCisiRkZaIHJzdCBMSUciWzFdLCAi
YWJjIEFBQSBkZWYiWzExXSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0KKyJGRlog
cnN0IExJRyJbMl0sICJhYmMgQUFBIGRlZiJbMTFdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBk
ZWYiWyA4XQogVGVzdCAxOSwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAogImFhYSAiWzAs
IDRdLCAiYmJiIEFBQSAiWzQsIDddLCAiRkZaIlszXQpAQCAtMTMxLDE0ICsxMzgsNyBAQCBNb3Zl
IGxlZnQgYnkgb25lIHdvcmQKICJGRloiWzNdLCAiYmJiIEFBQSAiWzcsIDRdLCAiYWFhICJbNCwg
MF0KIFRlc3QgMjAsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotIkFCRCBvcHEgcnN0IERT
VSAiWzAsIDQsIDcsIDEyLCAxNl0sICJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsxMiwgOCwgNywgM10s
ICJBQlcgaGlqIHh5eiBGWFgiWzQsIDcsIDEyLCAxNV0gICAgRkFJTCBleHBlY3RlZDogWyJBQkQg
b3BxIHJzdCBEU1UgIlsgMCwgIDQsICA3LCAgMTIsICAxNiwgXSJhYmMgdXZ3IEFBQSBkZWYgbG1u
IlsgMTUsICA4LCAgNywgIDMsIF0iQUJXIGhpaiB4eXogRlhYIlsgNCwgIDcsICAxMiwgIDE1XQot
IkFCRCBvcHEgcnN0IERTVSAiWzE2XSwgImFiYyB1dncgQUFBIGRlZiBsbW4iWzEyXSAgIEZBSUwg
ZXhwZWN0ZWQgImFiYyB1dncgQUFBIGRlZiBsbW4iWyAxNV0KLSJhYmMgdXZ3IEFBQSBkZWYgbG1u
IlsxOCwgMTJdICAgRkFJTCBleHBlY3RlZCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbIDE1XQotImFi
YyB1dncgQUFBIGRlZiBsbW4iWzE3LCAxMl0gICBGQUlMIGV4cGVjdGVkICJhYmMgdXZ3IEFBQSBk
ZWYgbG1uIlsgMTVdCi0iYWJjIHV2dyBBQUEgZGVmIGxtbiJbMTYsIDEyXSAgIEZBSUwgZXhwZWN0
ZWQgImFiYyB1dncgQUFBIGRlZiBsbW4iWyAxNV0KLSJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsxNSwg
MTJdICAgRkFJTCBleHBlY3RlZCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbIDhdCi0iYWJjIHV2dyBB
QUEgZGVmIGxtbiJbMTQsIDEyXSAgIEZBSUwgZXhwZWN0ZWQgImFiYyB1dncgQUFBIGRlZiBsbW4i
WyA4XQotImFiYyB1dncgQUFBIGRlZiBsbW4iWzEzLCAxMl0gICBGQUlMIGV4cGVjdGVkICJhYmMg
dXZ3IEFBQSBkZWYgbG1uIlsgOF0KKyJBQkQgb3BxIHJzdCBEU1UgIlswLCA0LCA3LCAxMiwgMTZd
LCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbMTUsIDgsIDcsIDNdLCAiQUJXIGhpaiB4eXogRlhYIls0
LCA3LCAxMiwgMTVdCiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCiAiQUJXIGhpaiB4eXogRlhYIlsx
NSwgMTIsIDcsIDRdLCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbMywgNywgOCwgMTVdLCAiQUJEIG9w
cSByc3QgRFNVICJbMTYsIDEyLCA3LCA0LCAwXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128053</attachid>
            <date>2012-02-21 15:11:14 -0800</date>
            <delta_ts>2012-02-24 11:09:57 -0800</delta_ts>
            <desc>WIP (fix compilation error)</desc>
            <filename>78856.v1</filename>
            <type>text/plain</type>
            <size>74192</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODAwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTE2ICBYaWFvbWVp
IEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2luZyBJQ1UgYnJlYWsgaXRlcmF0
b3IgdG8gc2ltcGxpZnkgdmlzdWFsIHdvcmQgbW92ZW1lbnQgaW1wbGVtZW50YXRpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVs
aWVzIG9uIElDVSB3b3JkIGJyZWFrIGl0ZXJhdG9yIGFuZCBjdXJzb3IgdmlzdWFsIG1vdmVtZW50
IGJ5IGNoYXJhY3RlciB0byBnZXQgdGhlIHdvcmQgYnJlYWsKKyAgICAgICAgcG9zaXRpb24gaW4g
dmlzdWFsIG9yZGVyLiBJdCByZWR1Y2VzIHRoZSBjb21wbGV4aXR5IG9mIG9sZCBpbXBsZW1lbnRh
dGlvbi4KKworICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1N0YXJ0T2ZXb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRW5kT2ZXb3JkKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNSb290SW5saW5l
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRSb290SW5saW5lQm94KToKKyAgICAgICAgKFdl
YkNvcmU6OnNlYXJjaFByZXZpb3VzQm94SW5TYW1lTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZWFyY2hOZXh0Qm94SW5TYW1lTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hQcmV2aW91
c0JveEluUHJldmlvdXNSb290SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OnNlYXJjaE5l
eHRCb3hJbk5leHRSb290SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdvcmRC
cmVha0l0ZXJhdG9yRm9yTWluT2Zmc2V0Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlV29yZEJyZWFrSXRlcmF0b3JGb3JNYXhPZmZzZXRCb3VuZGFyeSk6CisgICAgICAgIChXZWJD
b3JlOjp3b3JkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6bGVmdFdvcmRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpyaWdodFdvcmRQb3NpdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppc1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNXb3JkVGV4dEJyZWFrKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC93aW5jZS9UZXh0QnJlYWtJdGVyYXRvcldpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlzV29yZFRleHRCcmVhayk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wMi0xNSAgU2hp
bnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGFuIGlu
dGVybmFsIGZsYWcgdG8gYWNjZXB0IG11bHRpcGxlIHNoYWRvdyByb290cyBmb3IgdGhlIHB1cnBv
c2Ugb2YgdGVzdHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5j
cHAJKHJldmlzaW9uIDEwNjUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91
bml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDM1OCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIFdURjo6
VW5pY29kZTsKIAorLy8tLS0tIFRoZSBmb2xsb3dpbmcgNCBmdW5jdGlvbnMgYXJlIGp1c3QgbW92
ZWQgaGVyZSB3aXRob3V0IGFueSBmdW5jdGlvbmFsaXR5IG1vZGlmaWNhdGlvbnMgLS0tLS0vLwor
CisvLyBUaGUgZmlyc3QgbGVhZiBiZWZvcmUgbm9kZSB0aGF0IGhhcyB0aGUgc2FtZSBlZGl0YWJp
bGl0eSBhcyBub2RlLgorc3RhdGljIE5vZGUqIHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFiaWxp
dHkoTm9kZSogbm9kZSwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSkKK3sKKyAgICBib29sIGVk
aXRhYmxlID0gbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKGVkaXRhYmxlVHlwZSk7CisgICAgTm9k
ZSogbiA9IG5vZGUtPnByZXZpb3VzTGVhZk5vZGUoKTsKKyAgICB3aGlsZSAobikgeworICAgICAg
ICBpZiAoZWRpdGFibGUgPT0gbi0+cmVuZGVyZXJJc0VkaXRhYmxlKGVkaXRhYmxlVHlwZSkpCisg
ICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgbiA9IG4tPnByZXZpb3VzTGVhZk5vZGUoKTsK
KyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBOb2RlKiBlbmNsb3NpbmdOb2RlV2l0
aE5vbklubGluZVJlbmRlcmVyKE5vZGUqIG4pCit7CisgICAgZm9yIChOb2RlKiBwID0gbjsgcDsg
cCA9IHAtPnBhcmVudE5vZGUoKSkgeworICAgICAgICBpZiAocC0+cmVuZGVyZXIoKSAmJiAhcC0+
cmVuZGVyZXIoKS0+aXNJbmxpbmUoKSkKKyAgICAgICAgICAgIHJldHVybiBwOworICAgIH0KKyAg
ICByZXR1cm4gMDsKK30KKworc3RhdGljIE5vZGUqIG5leHRMZWFmV2l0aFNhbWVFZGl0YWJpbGl0
eShOb2RlKiBub2RlLCBpbnQgb2Zmc2V0KQoreworICAgIGJvb2wgZWRpdGFibGUgPSBub2RlLT5y
ZW5kZXJlcklzRWRpdGFibGUoKTsKKyAgICBBU1NFUlQob2Zmc2V0ID49IDApOworICAgIE5vZGUq
IGNoaWxkID0gbm9kZS0+Y2hpbGROb2RlKG9mZnNldCk7CisgICAgTm9kZSogbiA9IGNoaWxkID8g
Y2hpbGQtPm5leHRMZWFmTm9kZSgpIDogbm9kZS0+bGFzdERlc2NlbmRhbnQoKS0+bmV4dExlYWZO
b2RlKCk7CisgICAgd2hpbGUgKG4pIHsKKyAgICAgICAgaWYgKGVkaXRhYmxlID09IG4tPnJlbmRl
cmVySXNFZGl0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIG47CisgICAgICAgIG4gPSBuLT5u
ZXh0TGVhZk5vZGUoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBOb2RlKiBu
ZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkoTm9kZSogbm9kZSwgRWRpdGFibGVUeXBlIGVkaXRh
YmxlVHlwZSA9IENvbnRlbnRJc0VkaXRhYmxlKQoreworICAgIGlmICghbm9kZSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgCisgICAgYm9vbCBlZGl0YWJsZSA9IG5vZGUtPnJlbmRlcmVySXNFZGl0
YWJsZShlZGl0YWJsZVR5cGUpOworICAgIE5vZGUqIG4gPSBub2RlLT5uZXh0TGVhZk5vZGUoKTsK
KyAgICB3aGlsZSAobikgeworICAgICAgICBpZiAoZWRpdGFibGUgPT0gbi0+cmVuZGVyZXJJc0Vk
aXRhYmxlKGVkaXRhYmxlVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgbiA9
IG4tPm5leHRMZWFmTm9kZSgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0gIGJlZ2luIG9mIHZpc3VhbCB3b3JkIG1vdmVtZW50ICAtLS0tLS0tLS0tLS0tLS0t
LS0tLy8KKy8vIFRPRE86IGNvbnNvbGlkYXRlIHdpdGggcHJldmlvdXNMaW5lUG9zaXRpb24uCitz
dGF0aWMgY29uc3QgUm9vdElubGluZUJveCogcHJldmlvdXNSb290SW5saW5lQm94KGNvbnN0IElu
bGluZUJveCogYm94LCBjb25zdCBOb2RlKiBoaWdoZXN0Um9vdCkKK3sKKyAgICBOb2RlKiBub2Rl
ID0gYm94LT5yZW5kZXJlcigpLT5ub2RlKCk7CisgICAgTm9kZSogZW5jbG9zaW5nQmxvY2tOb2Rl
ID0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihub2RlKTsKKyAgICBOb2RlKiBw
cmV2aW91c05vZGUgPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5vZGUsIENvbnRl
bnRJc0VkaXRhYmxlKTsKKyAgICB3aGlsZSAocHJldmlvdXNOb2RlICYmIGVuY2xvc2luZ0Jsb2Nr
Tm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKHByZXZpb3VzTm9kZSkp
CisgICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFiaWxpdHko
cHJldmlvdXNOb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisgIAorICAgIHdoaWxlIChwcmV2aW91
c05vZGUgJiYgIXByZXZpb3VzTm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgaWYgKGhp
Z2hlc3RFZGl0YWJsZVJvb3QoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHByZXZpb3VzTm9k
ZSksIENvbnRlbnRJc0VkaXRhYmxlKSAhPSBoaWdoZXN0Um9vdCkKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIFBvc2l0aW9uIHBvcyA9IHByZXZpb3VzTm9kZS0+aGFzVGFnTmFtZShiclRh
ZykgPyBwb3NpdGlvbkJlZm9yZU5vZGUocHJldmlvdXNOb2RlKSA6IGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihwcmV2aW91c05vZGUsIGNhcmV0TWF4T2Zmc2V0KHByZXZpb3VzTm9kZSkpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKHBvcy5pc0NhbmRpZGF0ZSgpKSB7CisgICAgICAgICAgICBS
ZW5kZXJlZFBvc2l0aW9uIHJlbmRlcmVkUG9zKHBvcywgRE9XTlNUUkVBTSk7CisgICAgICAgICAg
ICBSb290SW5saW5lQm94KiByb290ID0gcmVuZGVyZWRQb3Mucm9vdEJveCgpOworICAgICAgICAg
ICAgaWYgKHJvb3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Q7CisgICAgICAgIH0KKwor
ICAgICAgICBwcmV2aW91c05vZGUgPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KHBy
ZXZpb3VzTm9kZSwgQ29udGVudElzRWRpdGFibGUpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30K
Kworc3RhdGljIGNvbnN0IFJvb3RJbmxpbmVCb3gqIG5leHRSb290SW5saW5lQm94KGNvbnN0IElu
bGluZUJveCogYm94LCBjb25zdCBOb2RlKiBoaWdoZXN0Um9vdCkKK3sKKyAgICBOb2RlKiBub2Rl
ID0gYm94LT5yZW5kZXJlcigpLT5ub2RlKCk7CisgICAgTm9kZSogZW5jbG9zaW5nQmxvY2tOb2Rl
ID0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihub2RlKTsKKyAgICBOb2RlKiBu
ZXh0Tm9kZSA9IG5leHRMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShub2RlLCBDb250ZW50SXNFZGl0
YWJsZSk7CisgICAgd2hpbGUgKG5leHROb2RlICYmIGVuY2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNs
b3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKG5leHROb2RlKSkKKyAgICAgICAgbmV4dE5v
ZGUgPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobmV4dE5vZGUsIENvbnRlbnRJc0VkaXRh
YmxlKTsKKyAgCisgICAgd2hpbGUgKG5leHROb2RlICYmICFuZXh0Tm9kZS0+aXNTaGFkb3dSb290
KCkpIHsKKyAgICAgICAgaWYgKGhpZ2hlc3RFZGl0YWJsZVJvb3QoZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKG5leHROb2RlKSwgQ29udGVudElzRWRpdGFibGUpICE9IGhpZ2hlc3RSb290KQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgUG9zaXRpb24gcG9zOworICAgICAgICBwb3Mg
PSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obmV4dE5vZGUsIGNhcmV0TWluT2Zmc2V0KG5l
eHROb2RlKSk7CisgICAgICAgIAorICAgICAgICBpZiAocG9zLmlzQ2FuZGlkYXRlKCkpIHsKKyAg
ICAgICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3MocG9zLCBET1dOU1RSRUFNKTsK
KyAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIHJvb3QgPSByZW5kZXJlZFBvcy5yb290Qm94KCk7
CisgICAgICAgICAgICBpZiAocm9vdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcm9vdDsKKyAg
ICAgICAgfQorCisgICAgICAgIG5leHROb2RlID0gbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5
KG5leHROb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisgICAgfQorICAgIHJldHVybiAwOworfQor
CitzdGF0aWMgdm9pZCBzZWFyY2hQcmV2aW91c0JveEluU2FtZUxpbmUoY29uc3QgSW5saW5lVGV4
dEJveCogdGV4dEJveCwgSW5saW5lVGV4dEJveComIHByZXZpb3VzQm94KQoreworICAgIFZlY3Rv
cjxJbmxpbmVCb3gqPiBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcjsKKyAgICB0ZXh0Qm94LT5yb290
KCktPmNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihsZWFmQm94ZXNJbkxvZ2ljYWxPcmRl
cik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlYWZCb3hlc0luTG9naWNhbE9yZGVy
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICh0ZXh0Qm94ID09IGxlYWZCb3hlc0luTG9naWNh
bE9yZGVyW2ldKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChsZWFmQm94ZXNJbkxv
Z2ljYWxPcmRlcltpXS0+aXNJbmxpbmVUZXh0Qm94KCkpCisgICAgICAgICAgICBwcmV2aW91c0Jv
eCA9IHRvSW5saW5lVGV4dEJveChsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcltpXSk7CisgICAgfQor
fQorCitzdGF0aWMgdm9pZCBzZWFyY2hOZXh0Qm94SW5TYW1lTGluZShjb25zdCBJbmxpbmVUZXh0
Qm94KiB0ZXh0Qm94LCBJbmxpbmVUZXh0Qm94KiYgbmV4dEJveCkKK3sKKyAgICBWZWN0b3I8SW5s
aW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7CisgICAgdGV4dEJveC0+cm9vdCgpLT5j
b2xsZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXpl
KCk7ICsraSkgeworICAgICAgICBpZiAodGV4dEJveCA9PSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRl
cltpXSkgeworICAgICAgICAgICAgc2l6ZV90IGogPSBpICsgMTsKKyAgICAgICAgICAgIHdoaWxl
IChqIDwgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAg
aWYgKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2pdLT5pc0lubGluZVRleHRCb3goKSkgeworICAg
ICAgICAgICAgICAgICAgICBuZXh0Qm94ID0gdG9JbmxpbmVUZXh0Qm94KGxlYWZCb3hlc0luTG9n
aWNhbE9yZGVyW2pdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaFByZXZpb3VzQm94SW5QcmV2aW91c1Jvb3RJbmxpbmVC
b3goY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGNvbnN0IElubGluZVRl
eHRCb3gqIHRleHRCb3gsCisgICAgSW5saW5lVGV4dEJveComIHByZXZpb3VzQm94LCBib29sJiBw
cmV2aW91c0JveEluRGlmZmVyZW50TGluZSkKK3sKKyAgICBOb2RlKiBoaWdoZXN0Um9vdCA9IGhp
Z2hlc3RFZGl0YWJsZVJvb3QodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCksIENvbnRl
bnRJc0VkaXRhYmxlKTsKKyAgICBjb25zdCBJbmxpbmVCb3gqIHN0YXJ0Qm94ID0gdGV4dEJveDsK
KyAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7CisKKyAgICB3
aGlsZSAoMSkgeyAKKyAgICAgICAgY29uc3QgUm9vdElubGluZUJveCogcHJldmlvdXNSb290ID0g
cHJldmlvdXNSb290SW5saW5lQm94KHN0YXJ0Qm94LCBoaWdoZXN0Um9vdCk7CisgICAgICAgIGlm
ICghcHJldmlvdXNSb290KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgbGVhZkJveGVz
SW5Mb2dpY2FsT3JkZXIuY2xlYXIoKTsKKyAgICAgICAgcHJldmlvdXNSb290LT5jb2xsZWN0TGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworICAgICAgICBp
bnQgaSA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLnNpemUoKSAtIDE7CisgICAgICAgIGZvciAo
OyBpID49MDsgLS1pKSB7CisgICAgICAgICAgICBpZiAobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJb
aV0tPmlzSW5saW5lVGV4dEJveCgpKSB7CisgICAgICAgICAgICAgICAgcHJldmlvdXNCb3ggPSB0
b0lubGluZVRleHRCb3gobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbaV0pOworICAgICAgICAgICAg
ICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSAwKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXpl
KCkpCisgICAgICAgICAgICBzdGFydEJveCA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyWzBdOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk
IHNlYXJjaE5leHRCb3hJbk5leHRSb290SW5saW5lQm94KGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dmlzaWJsZVBvc2l0aW9uLCBjb25zdCBJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LAorICAgIElubGlu
ZVRleHRCb3gqJiBuZXh0Qm94LCBib29sJiBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lKQoreworICAg
IE5vZGUqIGhpZ2hlc3RSb290ID0gaGlnaGVzdEVkaXRhYmxlUm9vdCh2aXNpYmxlUG9zaXRpb24u
ZGVlcEVxdWl2YWxlbnQoKSwgQ29udGVudElzRWRpdGFibGUpOworICAgIGNvbnN0IElubGluZUJv
eCogc3RhcnRCb3ggPSB0ZXh0Qm94OworICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBsZWFmQm94ZXNJ
bkxvZ2ljYWxPcmRlcjsKKworICAgIHdoaWxlICgxKSB7IAorICAgICAgICBjb25zdCBSb290SW5s
aW5lQm94KiBuZXh0Um9vdCA9IG5leHRSb290SW5saW5lQm94KHN0YXJ0Qm94LCBoaWdoZXN0Um9v
dCk7CisgICAgICAgIGlmICghbmV4dFJvb3QpCisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5jbGVhcigpOworICAgICAgICBuZXh0Um9vdC0+Y29s
bGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKKyAg
ICAgICAgc2l6ZV90IGkgPSAwOworICAgICAgICBmb3IgKDsgaSA8IGxlYWZCb3hlc0luTG9naWNh
bE9yZGVyLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobGVhZkJveGVzSW5Mb2dpY2Fs
T3JkZXJbaV0tPmlzSW5saW5lVGV4dEJveCgpKSB7CisgICAgICAgICAgICAgICAgbmV4dEJveCA9
IHRvSW5saW5lVGV4dEJveChsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcltpXSk7CisgICAgICAgICAg
ICAgICAgbmV4dEJveEluRGlmZmVyZW50TGluZSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPCBsZWFmQm94ZXNJ
bkxvZ2ljYWxPcmRlci5zaXplKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGxl
YWZCb3hlc0luTG9naWNhbE9yZGVyLnNpemUoKSkKKyAgICAgICAgICAgIHN0YXJ0Qm94ID0gbGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXJbMF07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworc3RhdGljIHZvaWQgY3JlYXRlV29yZEJyZWFrSXRlcmF0b3JGb3JNaW5P
ZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29u
c3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwKKyAgICBUZXh0QnJlYWtJdGVyYXRvciomIGl0ZXIs
IGludCYgcHJldmlvdXNCb3hMZW4sIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQor
eworICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CisKKyAgICAvLyBUT0RP
OiBob3cgc2hvdWxkIHdlIGhhbmRsZSBub24tdGV4dCBib3g/CisgICAgSW5saW5lVGV4dEJveCog
cHJldmlvdXNCb3ggPSAwOworICAgIHNlYXJjaFByZXZpb3VzQm94SW5TYW1lTGluZSh0ZXh0Qm94
LCBwcmV2aW91c0JveCk7CisKKyAgICBpZiAoIXByZXZpb3VzQm94KQorICAgICAgICBzZWFyY2hQ
cmV2aW91c0JveEluUHJldmlvdXNSb290SW5saW5lQm94KHZpc2libGVQb3NpdGlvbiwgdGV4dEJv
eCwgcHJldmlvdXNCb3gsIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKTsKKworICAgIGludCBs
ZW4gPSAwOworICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOworICAgIGlmIChwcmV2aW91
c0JveCkgeworICAgICAgICBwcmV2aW91c0JveExlbiA9IHByZXZpb3VzQm94LT5sZW4oKTsKKyAg
ICAgICAgc3RyaW5nLmFwcGVuZChwcmV2aW91c0JveC0+dGV4dFJlbmRlcmVyKCktPnRleHQoKS0+
Y2hhcmFjdGVycygpICsgcHJldmlvdXNCb3gtPnN0YXJ0KCksIHByZXZpb3VzQm94TGVuKTsgCisg
ICAgICAgIGxlbiArPSBwcmV2aW91c0JveExlbjsKKyAgICB9CisgICAgc3RyaW5nLmFwcGVuZCh0
ZXh0Qm94LT50ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyB0ZXh0Qm94LT5z
dGFydCgpLCB0ZXh0Qm94LT5sZW4oKSk7CisgICAgbGVuICs9IHRleHRCb3gtPmxlbigpOworCisg
ICAgaXRlciA9IHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5kYXRhKCksIGxlbik7CisgICAgdGV4
dEJyZWFrRmlyc3QoaXRlcik7Cit9IAorCitzdGF0aWMgdm9pZCBjcmVhdGVXb3JkQnJlYWtJdGVy
YXRvckZvck1heE9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBv
c2l0aW9uLCBjb25zdCBJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LAorICAgIFRleHRCcmVha0l0ZXJh
dG9yKiYgaXRlciwgYm9vbCYgbmV4dEJveEluRGlmZmVyZW50TGluZSkKK3sKKyAgICBuZXh0Qm94
SW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CisKKyAgICAvLyBUT0RPOiBob3cgc2hvdWxkIHdlIGhh
bmRsZSBub24tdGV4dCBib3g/CisgICAgSW5saW5lVGV4dEJveCogbmV4dEJveCA9IDA7CisgICAg
c2VhcmNoTmV4dEJveEluU2FtZUxpbmUodGV4dEJveCwgbmV4dEJveCk7CisKKyAgICBpZiAoIW5l
eHRCb3gpCisgICAgICAgIHNlYXJjaE5leHRCb3hJbk5leHRSb290SW5saW5lQm94KHZpc2libGVQ
b3NpdGlvbiwgdGV4dEJveCwgbmV4dEJveCwgbmV4dEJveEluRGlmZmVyZW50TGluZSk7CisKKyAg
ICBpbnQgbGVuID0gMDsKKyAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IHN0cmluZzsKKyAgICBzdHJp
bmcuYXBwZW5kKHRleHRCb3gtPnRleHRSZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSAr
IHRleHRCb3gtPnN0YXJ0KCksIHRleHRCb3gtPmxlbigpKTsKKyAgICBsZW4gKz0gdGV4dEJveC0+
bGVuKCk7CisgICAgaWYgKG5leHRCb3gpIHsKKyAgICAgICAgc3RyaW5nLmFwcGVuZChuZXh0Qm94
LT50ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBuZXh0Qm94LT5zdGFydCgp
LCBuZXh0Qm94LT5sZW4oKSk7IAorICAgICAgICBsZW4gKz0gbmV4dEJveC0+bGVuKCk7CisgICAg
fQorCisgICAgaXRlciA9IHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5kYXRhKCksIGxlbik7Cisg
ICAgdGV4dEJyZWFrRmlyc3QoaXRlcik7Cit9IAorCitlbnVtIEVDdXJzb3JNb3ZlbWVudERpcmVj
dGlvbgoreworICAgIE1PVkVfTEVGVCwgTU9WRV9SSUdIVCwKK307CisKK3N0YXRpYyBib29sIGlz
U3RhcnRPZldvcmQoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBo
YXJkTGluZUJyZWFrKQoreworICAgIGJvb2wgYm91bmRhcnkgPSBoYXJkTGluZUJyZWFrID8gdHJ1
ZSA6IGlzVGV4dEJyZWFrKGl0ZXIsIHBvc2l0aW9uKTsKKyAgICBpZiAoIWJvdW5kYXJ5KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB0ZXh0QnJlYWtGb2xsb3dpbmcoaXRlciwgcG9zaXRp
b24pOworICAgIHJldHVybiBpc1dvcmRUZXh0QnJlYWsoaXRlcik7Cit9CisKK3N0YXRpYyBib29s
IGlzRW5kT2ZXb3JkKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyLCBpbnQgcG9zaXRpb24sIGJvb2wg
aGFyZExpbmVCcmVhaykKK3sKKyAgICBib29sIGJvdW5kYXJ5ID0gaXNUZXh0QnJlYWsoaXRlciwg
cG9zaXRpb24pOworICAgIHJldHVybiAoaGFyZExpbmVCcmVhayB8fCBib3VuZGFyeSkgJiYgaXNX
b3JkVGV4dEJyZWFrKGl0ZXIpOworfQorCitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHdvcmRQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgRUN1cnNvck1vdmVt
ZW50RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CisKKyAgICBUZXh0RGlyZWN0
aW9uIGJsb2NrRGlyZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxlUG9z
aXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgSW5saW5lQm94KiBwcmV2aW91c2x5VmlzaXRl
ZEJveCA9IDA7CisgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnQgPSB2aXNpYmxlUG9zaXRpb247
CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIgPSAwOworCisgICAgd2hpbGUgKDEpIHsKKyAg
ICAgICAgVmlzaWJsZVBvc2l0aW9uIGFkamFjZW50QnlDaGFyYWN0ZXIgPSBkaXJlY3Rpb24gPT0g
TU9WRV9SSUdIVCA/IGN1cnJlbnQucmlnaHQodHJ1ZSkgOiBjdXJyZW50LmxlZnQodHJ1ZSk7IAor
ICAgICAgICBpZiAoYWRqYWNlbnRCeUNoYXJhY3RlciA9PSBjdXJyZW50IHx8IGFkamFjZW50QnlD
aGFyYWN0ZXIuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7
CisgICAgCisgICAgICAgIElubGluZUJveCogYm94OworICAgICAgICBpbnQgb2Zmc2V0OworICAg
ICAgICBhZGphY2VudEJ5Q2hhcmFjdGVyLmdldElubGluZUJveEFuZE9mZnNldChib3gsIG9mZnNl
dCk7CisgICAgCisgICAgICAgIC8vIFRPRE86IGhvdyBzaG91bGQgd2UgaGFuZGxlIG5vbiB0ZXh0
IGJveD8KKyAgICAgICAgaWYgKCFib3ggfHwgIWJveC0+aXNJbmxpbmVUZXh0Qm94KCkpCisgICAg
ICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CisKKyAgICAgICAgSW5saW5lVGV4dEJv
eCogdGV4dEJveCA9IHRvSW5saW5lVGV4dEJveChib3gpOworICAgICAgICBpbnQgcHJldmlvdXNC
b3hMZW4gPSAwOworICAgICAgICBib29sIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lID0gZmFs
c2U7CisgICAgICAgIGJvb2wgbmV4dEJveEluRGlmZmVyZW50TGluZSA9IGZhbHNlOworCisgICAg
ICAgIGlmIChvZmZzZXQgPT0gYm94LT5jYXJldE1pbk9mZnNldCgpKQorICAgICAgICAgICAgY3Jl
YXRlV29yZEJyZWFrSXRlcmF0b3JGb3JNaW5PZmZzZXRCb3VuZGFyeSh2aXNpYmxlUG9zaXRpb24s
IHRleHRCb3gsIGl0ZXIsIHByZXZpb3VzQm94TGVuLCBwcmV2aW91c0JveEluRGlmZmVyZW50TGlu
ZSk7CisgICAgICAgIGVsc2UgaWYgKG9mZnNldCA9PSBib3gtPmNhcmV0TWF4T2Zmc2V0KCkpCisg
ICAgICAgICAgICBjcmVhdGVXb3JkQnJlYWtJdGVyYXRvckZvck1heE9mZnNldEJvdW5kYXJ5KHZp
c2libGVQb3NpdGlvbiwgdGV4dEJveCwgaXRlciwgbmV4dEJveEluRGlmZmVyZW50TGluZSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHByZXZpb3VzbHlWaXNpdGVkQm94ICE9IGJv
eCkgeworICAgICAgICAgICAgICAgIGl0ZXIgPSB3b3JkQnJlYWtJdGVyYXRvcih0ZXh0Qm94LT50
ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyB0ZXh0Qm94LT5zdGFydCgpLCB0
ZXh0Qm94LT5sZW4oKSk7CisgICAgICAgICAgICAgICAgdGV4dEJyZWFrRmlyc3QoaXRlcik7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBwcmV2aW91c2x5VmlzaXRlZEJveCA9IGJveDsKKyAg
ICAgICAgfQorICAgIAorICAgICAgICBib29sIGlzV29yZEJyZWFrID0gKGJveC0+ZGlyZWN0aW9u
KCkgPT0gYmxvY2tEaXJlY3Rpb24pID8KKyAgICAgICAgICAgIGlzU3RhcnRPZldvcmQoaXRlciwg
b2Zmc2V0IC0gdGV4dEJveC0+c3RhcnQoKSArIHByZXZpb3VzQm94TGVuLAorICAgICAgICAgICAg
ICAgIG9mZnNldCA9PSAoaW50KXRleHRCb3gtPnN0YXJ0KCkgJiYgcHJldmlvdXNCb3hJbkRpZmZl
cmVudExpbmUpIDoKKyAgICAgICAgICAgIGlzRW5kT2ZXb3JkKGl0ZXIsIG9mZnNldCAtIHRleHRC
b3gtPnN0YXJ0KCkgKyBwcmV2aW91c0JveExlbiwKKyAgICAgICAgICAgICAgICBvZmZzZXQgPT0g
KGludCkodGV4dEJveC0+c3RhcnQoKSArIHRleHRCb3gtPmxlbigpKSAmJiBuZXh0Qm94SW5EaWZm
ZXJlbnRMaW5lKTsKKyAgICAgICAgaWYgKGlzV29yZEJyZWFrKQorICAgICAgICAgICAgcmV0dXJu
IGFkamFjZW50QnlDaGFyYWN0ZXI7CisgICAgCisgICAgICAgIGN1cnJlbnQgPSBhZGphY2VudEJ5
Q2hhcmFjdGVyOworICAgIH0KKyAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Cit9CisKK1Zp
c2libGVQb3NpdGlvbiBsZWZ0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlz
aWJsZVBvc2l0aW9uKQoreworICAgIFZpc2libGVQb3NpdGlvbiBsZWZ0V29yZEJyZWFrID0gd29y
ZFBvc2l0aW9uKHZpc2libGVQb3NpdGlvbiwgTU9WRV9MRUZUKTsKKyAgICAKKyAgICAvLyBGSVhN
RTogSG93IHNob3VsZCB3ZSBoYW5kbGUgYSBub24tZWRpdGFibGUgcG9zaXRpb24/CisgICAgaWYg
KGxlZnRXb3JkQnJlYWsuaXNOdWxsKCkgJiYgaXNFZGl0YWJsZVBvc2l0aW9uKHZpc2libGVQb3Np
dGlvbi5kZWVwRXF1aXZhbGVudCgpKSkgeworICAgICAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGly
ZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVx
dWl2YWxlbnQoKSk7CisgICAgICAgIGxlZnRXb3JkQnJlYWsgPSBibG9ja0RpcmVjdGlvbiA9PSBM
VFIgPyBzdGFydE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbikgOiBlbmRPZkVkaXRh
YmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pOworICAgIH0KKyAgICByZXR1cm4gbGVmdFdvcmRC
cmVhazsKK30KKworVmlzaWJsZVBvc2l0aW9uIHJpZ2h0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQoreworICAgIFZpc2libGVQb3NpdGlvbiByaWdo
dFdvcmRCcmVhayA9IHdvcmRQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24sIE1PVkVfUklHSFQpOwor
CisgICAgLy8gRklYTUU6IEhvdyBzaG91bGQgd2UgaGFuZGxlIGEgbm9uLWVkaXRhYmxlIHBvc2l0
aW9uPworICAgIGlmIChyaWdodFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRp
b24odmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7CisgICAgICAgIFRleHREaXJl
Y3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQ
b3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICAgICAgcmlnaHRXb3JkQnJlYWsgPSBibG9j
a0RpcmVjdGlvbiA9PSBMVFIgPyBlbmRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24p
IDogc3RhcnRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pOworICAgIH0KKyAgICBy
ZXR1cm4gcmlnaHRXb3JkQnJlYWs7Cit9CisvLy0tLS0tLS0tLS0tLS0tLSAgZW5kIG9mIHZpc3Vh
bCB3b3JkIG1vdmVtZW50ICAtLS0tLS0tLS0tLS0tLS0tLS0tLy8KKwogZW51bSBCb3VuZGFyeVNl
YXJjaENvbnRleHRBdmFpbGFiaWxpdHkgeyBEb250SGF2ZU1vcmVDb250ZXh0LCBNYXlIYXZlTW9y
ZUNvbnRleHQgfTsKIAogdHlwZWRlZiB1bnNpZ25lZCAoKkJvdW5kYXJ5U2VhcmNoRnVuY3Rpb24p
KGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBvZmZzZXQsIEJvdW5kYXJ5
U2VhcmNoQ29udGV4dEF2YWlsYWJpbGl0eSwgYm9vbCYgbmVlZE1vcmVDb250ZXh0KTsKQEAgLTUx
NywyOCArODY5LDYgQEAgYm9vbCBpc0VuZE9mTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24gJgog
ICAgIHJldHVybiBwLmlzTm90TnVsbCgpICYmIHAgPT0gZW5kT2ZMaW5lKHApOwogfQogCi0vLyBU
aGUgZmlyc3QgbGVhZiBiZWZvcmUgbm9kZSB0aGF0IGhhcyB0aGUgc2FtZSBlZGl0YWJpbGl0eSBh
cyBub2RlLgotc3RhdGljIE5vZGUqIHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFiaWxpdHkoTm9k
ZSogbm9kZSwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSkKLXsKLSAgICBib29sIGVkaXRhYmxl
ID0gbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKGVkaXRhYmxlVHlwZSk7Ci0gICAgTm9kZSogbiA9
IG5vZGUtPnByZXZpb3VzTGVhZk5vZGUoKTsKLSAgICB3aGlsZSAobikgewotICAgICAgICBpZiAo
ZWRpdGFibGUgPT0gbi0+cmVuZGVyZXJJc0VkaXRhYmxlKGVkaXRhYmxlVHlwZSkpCi0gICAgICAg
ICAgICByZXR1cm4gbjsKLSAgICAgICAgbiA9IG4tPnByZXZpb3VzTGVhZk5vZGUoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBOb2RlKiBlbmNsb3NpbmdOb2RlV2l0aE5vbklu
bGluZVJlbmRlcmVyKE5vZGUqIG4pCi17Ci0gICAgZm9yIChOb2RlKiBwID0gbjsgcDsgcCA9IHAt
PnBhcmVudE5vZGUoKSkgewotICAgICAgICBpZiAocC0+cmVuZGVyZXIoKSAmJiAhcC0+cmVuZGVy
ZXIoKS0+aXNJbmxpbmUoKSkKLSAgICAgICAgICAgIHJldHVybiBwOwotICAgIH0KLSAgICByZXR1
cm4gMDsKLX0KLQogc3RhdGljIGlubGluZSBJbnRQb2ludCBhYnNvbHV0ZUxpbmVEaXJlY3Rpb25Q
b2ludFRvTG9jYWxQb2ludEluQmxvY2soUm9vdElubGluZUJveCogcm9vdCwgaW50IGxpbmVEaXJl
Y3Rpb25Qb2ludCkKIHsKICAgICBBU1NFUlQocm9vdCk7CkBAIC02MjUsMzQgKzk1NSw2IEBAIFZp
c2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVQb3NpdGlvbihjb24KICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk5vZGUocm9vdEVsZW1lbnQpLCBET1dOU1RSRUFNKTsK
IH0KIAotc3RhdGljIE5vZGUqIG5leHRMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShOb2RlKiBub2Rl
LCBpbnQgb2Zmc2V0KQotewotICAgIGJvb2wgZWRpdGFibGUgPSBub2RlLT5yZW5kZXJlcklzRWRp
dGFibGUoKTsKLSAgICBBU1NFUlQob2Zmc2V0ID49IDApOwotICAgIE5vZGUqIGNoaWxkID0gbm9k
ZS0+Y2hpbGROb2RlKG9mZnNldCk7Ci0gICAgTm9kZSogbiA9IGNoaWxkID8gY2hpbGQtPm5leHRM
ZWFmTm9kZSgpIDogbm9kZS0+bGFzdERlc2NlbmRhbnQoKS0+bmV4dExlYWZOb2RlKCk7Ci0gICAg
d2hpbGUgKG4pIHsKLSAgICAgICAgaWYgKGVkaXRhYmxlID09IG4tPnJlbmRlcmVySXNFZGl0YWJs
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgIG4gPSBuLT5uZXh0TGVhZk5vZGUo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBOb2RlKiBuZXh0TGVhZldpdGhT
YW1lRWRpdGFiaWxpdHkoTm9kZSogbm9kZSwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSA9IENv
bnRlbnRJc0VkaXRhYmxlKQotewotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgCi0gICAgYm9vbCBlZGl0YWJsZSA9IG5vZGUtPnJlbmRlcmVySXNFZGl0YWJsZShlZGl0YWJs
ZVR5cGUpOwotICAgIE5vZGUqIG4gPSBub2RlLT5uZXh0TGVhZk5vZGUoKTsKLSAgICB3aGlsZSAo
bikgewotICAgICAgICBpZiAoZWRpdGFibGUgPT0gbi0+cmVuZGVyZXJJc0VkaXRhYmxlKGVkaXRh
YmxlVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgbiA9IG4tPm5leHRMZWFm
Tm9kZSgpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KIAogVmlzaWJsZVBvc2l0aW9uIG5leHRM
aW5lUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ2aXNpYmxlUG9zaXRpb24sIGludCBs
aW5lRGlyZWN0aW9uUG9pbnQsIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUpCiB7CkBAIC0xMDk5
LDU0MyArMTQwMSw0IEBAIFZpc2libGVQb3NpdGlvbiByaWdodEJvdW5kYXJ5T2ZMaW5lKGNvbnMK
ICAgICByZXR1cm4gZGlyZWN0aW9uID09IExUUiA/IGxvZ2ljYWxFbmRPZkxpbmUoYykgOiBsb2dp
Y2FsU3RhcnRPZkxpbmUoYyk7CiB9CiAKLXN0YXRpYyBjb25zdCBpbnQgaW52YWxpZE9mZnNldCA9
IC0xOwotc3RhdGljIGNvbnN0IGludCBvZmZzZXROb3RGb3VuZCA9IC0xOwotCi1zdGF0aWMgYm9v
bCBwb3NpdGlvbklzSW5Cb3goY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB3b3JkQnJlYWssIGNvbnN0
IElubGluZUJveCogYm94LCBpbnQmIG9mZnNldE9mV29yZEJyZWFrKQotewotICAgIGlmICh3b3Jk
QnJlYWsuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIElubGluZUJveCog
Ym94T2ZXb3JkQnJlYWs7Ci0gICAgd29yZEJyZWFrLmdldElubGluZUJveEFuZE9mZnNldChib3hP
ZldvcmRCcmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWspOwotICAgIHJldHVybiBib3ggPT0gYm94T2ZX
b3JkQnJlYWs7Ci19Ci0KLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3JkQnJlYWtJ
bkJveEluc2lkZUJsb2NrV2l0aFNhbWVEaXJlY3Rpb25hbGl0eShjb25zdCBJbmxpbmVCb3gqIGJv
eCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwcmV2aW91c1dvcmRCcmVhaywgaW50JiBvZmZzZXRP
ZldvcmRCcmVhaykKLXsKLSAgICAvLyBJbiBhIExUUiBibG9jaywgdGhlIHdvcmQgYnJlYWsgc2hv
dWxkIGJlIG9uIHRoZSBsZWZ0IGJvdW5kYXJ5IG9mIGEgd29yZC4KLSAgICAvLyBJbiBhIFJUTCBi
bG9jaywgdGhlIHdvcmQgYnJlYWsgc2hvdWxkIGJlIG9uIHRoZSByaWdodCBib3VuZGFyeSBvZiBh
IHdvcmQuCi0gICAgLy8gQmVjYXVzZSBuZXh0V29yZFBvc2l0aW9uKCkgcmV0dXJucyB0aGUgd29y
ZCBicmVhayBvbiB0aGUgcmlnaHQgYm91bmRhcnkgb2YgdGhlIHdvcmQgZm9yIExUUiB0ZXh0LAot
ICAgIC8vIHdlIG5lZWQgdG8gdXNlIHByZXZpb3VzV29yZFBvc2l0aW9uKCkgdG8gdHJhdmVyc2Ug
d29yZHMgd2l0aGluIHRoZSBpbmxpbmUgYm94ZXMgZnJvbSByaWdodCB0byBsZWZ0Ci0gICAgLy8g
dG8gZmluZCB0aGUgcHJldmlvdXMgd29yZCBicmVhayAoaS5lLiB0aGUgZmlyc3Qgd29yZCBicmVh
ayBvbiB0aGUgbGVmdCkuIFRoZSBzYW1lIGFwcGxpZXMgdG8gUlRMIHRleHQuCi0gICAgCi0gICAg
Ym9vbCBoYXNTZWVuV29yZEJyZWFrSW5UaGlzQm94ID0gcHJldmlvdXNXb3JkQnJlYWsuaXNOb3RO
dWxsKCk7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrOwotCi0gICAgaWYgKGhhc1Nl
ZW5Xb3JkQnJlYWtJblRoaXNCb3gpCi0gICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzV29yZEJy
ZWFrOwotICAgIGVsc2UgewotICAgICAgICB3b3JkQnJlYWsgPSBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24oYm94LT5yZW5kZXJlcigpLT5ub2RlKCksIGJveC0+Y2FyZXRNYXhPZmZzZXQoKSk7
Ci0KLSAgICAgICAgLy8gUmV0dXJuIHRoZSByaWdodG1vc3Qgd29yZCBib3VuZGFyeSBvZiBMVFIg
Ym94IG9yIGxlZnRtb3N0IHdvcmQgYm91bmRhcnkgb2YgUlRMIGJveCBpZgotICAgICAgICAvLyBp
dCBpcyBub3QgaW4gdGhlIHByZXZpb3VzbHkgdmlzaXRlZCBib3hlcy4gRm9yIGV4YW1wbGUsIGdp
dmVuIGEgbG9naWNhbCB0ZXh0IAotICAgICAgICAvLyAiYWJjIGRlZiAgICAgaGlqIG9wcSIsIHRo
ZXJlIGFyZSAyIGJveGVzOiB0aGUgImFiYyBkZWYgIiAoc3RhcnRzIGF0IDAgYW5kIGxlbmd0aCBp
cyA4KSAKLSAgICAgICAgLy8gYW5kIHRoZSAiaGlqIG9wcSIgKHN0YXJ0cyBhdCAxMiBhbmQgbGVu
Z3RoIGlzIDcpLiBUaGUgd29yZCBicmVha3MgYXJlIAotICAgICAgICAvLyAiYWJjIHxkZWYgfCAg
ICBoaWogfG9wcSIuIFdlIG5vcm1hbGx5IGNhdGNoIHRoZSB3b3JkIGJyZWFrIGJldHdlZW4gImRl
ZiIgYW5kICJoaWoiIHdoZW4KLSAgICAgICAgLy8gd2UgdmlzaXQgdGhlIGJveCB0aGF0IGNvbnRh
aW5zICJoaWogb3BxIiwgYnV0IHRoaXMgd29yZCBicmVhayBkb2Vzbid0IGV4aXN0IGluIHRoZSBi
b3gKLSAgICAgICAgLy8gdGhhdCBjb250YWlucyAiaGlqIG9wcSIgd2hlbiB0aGVyZSBhcmUgbXVs
dGlwbGUgc3BhY2VzLiBTbyB3ZSBkZXRlY3QgaXQgd2hlbiB3ZSdyZQotICAgICAgICAvLyB0cmF2
ZXJzaW5nIHRoZSBib3ggdGhhdCBjb250YWlucyAiYWJjIGRlZiAiIGluc3RlYWQuCi0KLSAgICAg
ICAgaWYgKChib3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBib3gtPm5leHRMZWFmQ2hp
bGQoKSkKLSAgICAgICAgICAgIHx8ICghYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYg
Ym94LT5wcmV2TGVhZkNoaWxkKCkpKSB7Ci0KLSAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbkFmdGVyV29yZCA9IG5leHRCb3VuZGFyeSh3b3JkQnJlYWssIG5leHRXb3JkUG9zaXRp
b25Cb3VuZGFyeSk7Ci0gICAgICAgICAgICBpZiAocG9zaXRpb25BZnRlcldvcmQuaXNOb3ROdWxs
KCkpIHsKLSAgICAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25CZWZvcmVXb3Jk
ID0gcHJldmlvdXNCb3VuZGFyeShwb3NpdGlvbkFmdGVyV29yZCwgcHJldmlvdXNXb3JkUG9zaXRp
b25Cb3VuZGFyeSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAocG9zaXRpb25J
c0luQm94KHBvc2l0aW9uQmVmb3JlV29yZCwgYm94LCBvZmZzZXRPZldvcmRCcmVhaykpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkJlZm9yZVdvcmQ7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0gIAotICAgIHdvcmRCcmVhayA9IHByZXZpb3VzQm91bmRhcnko
d29yZEJyZWFrLCBwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW5kYXJ5KTsKLSAgICBpZiAocHJldmlv
dXNXb3JkQnJlYWsgPT0gd29yZEJyZWFrKQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KCk7Ci0KLSAgICByZXR1cm4gcG9zaXRpb25Jc0luQm94KHdvcmRCcmVhaywgYm94LCBvZmZzZXRP
ZldvcmRCcmVhaykgPyB3b3JkQnJlYWsgOiBWaXNpYmxlUG9zaXRpb24oKTsKLX0KLQotc3RhdGlj
IFZpc2libGVQb3NpdGlvbiBsZWZ0bW9zdFBvc2l0aW9uSW5SVExCb3hJbkxUUkJsb2NrKGNvbnN0
IElubGluZUJveCogYm94KQotewotICAgIC8vIEZJWE1FOiBQcm9iYWJseSBuZWVkIHRvIHRha2Ug
Y2FyZSBvZiBiaWRpIGxldmVsIHRvby4KLSAgICBOb2RlKiBub2RlID0gYm94LT5yZW5kZXJlcigp
LT5ub2RlKCk7Ci0gICAgSW5saW5lQm94KiBwcmV2aW91c0xlYWYgPSBib3gtPnByZXZMZWFmQ2hp
bGQoKTsKLSAgICBJbmxpbmVCb3gqIG5leHRMZWFmID0gYm94LT5uZXh0TGVhZkNoaWxkKCk7ICAg
Ci0gICAgCi0gICAgaWYgKHByZXZpb3VzTGVhZiAmJiAhcHJldmlvdXNMZWFmLT5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRp
b24obm9kZSwgYm94LT5jYXJldE1heE9mZnNldCgpKTsKLQotICAgIGlmIChuZXh0TGVhZiAmJiAh
bmV4dExlYWYtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgewotICAgICAgICBpZiAocHJldmlv
dXNMZWFmKQotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihw
cmV2aW91c0xlYWYtPnJlbmRlcmVyKCktPm5vZGUoKSwgcHJldmlvdXNMZWFmLT5jYXJldE1heE9m
ZnNldCgpKTsKLQotICAgICAgICBJbmxpbmVCb3gqIGxhc3RSVExMZWFmOwotICAgICAgICBkbyB7
Ci0gICAgICAgICAgICBsYXN0UlRMTGVhZiA9IG5leHRMZWFmOwotICAgICAgICAgICAgbmV4dExl
YWYgPSBuZXh0TGVhZi0+bmV4dExlYWZDaGlsZCgpOwotICAgICAgICB9IHdoaWxlIChuZXh0TGVh
ZiAmJiAhbmV4dExlYWYtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSk7Ci0gICAgICAgIHJldHVy
biBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obGFzdFJUTExlYWYtPnJlbmRlcmVyKCktPm5v
ZGUoKSwgbGFzdFJUTExlYWYtPmNhcmV0TWluT2Zmc2V0KCkpOwotICAgIH0KLQotICAgIHJldHVy
biBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgYm94LT5jYXJldE1pbk9mZnNldCgp
KTsKLX0KLQotc3RhdGljIFZpc2libGVQb3NpdGlvbiByaWdodG1vc3RQb3NpdGlvbkluTFRSQm94
SW5SVExCbG9jayhjb25zdCBJbmxpbmVCb3gqIGJveCkKLXsKLSAgICAvLyBGSVhNRTogUHJvYmFi
bHkgbmVlZCB0byB0YWtlIGNhcmUgb2YgYmlkaSBsZXZlbCB0b28uCi0gICAgTm9kZSogbm9kZSA9
IGJveC0+cmVuZGVyZXIoKS0+bm9kZSgpOwotICAgIElubGluZUJveCogcHJldmlvdXNMZWFmID0g
Ym94LT5wcmV2TGVhZkNoaWxkKCk7Ci0gICAgSW5saW5lQm94KiBuZXh0TGVhZiA9IGJveC0+bmV4
dExlYWZDaGlsZCgpOyAgIAotICAgIAotICAgIGlmIChuZXh0TGVhZiAmJiBuZXh0TGVhZi0+aXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpKSAgICAKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihub2RlLCBib3gtPmNhcmV0TWF4T2Zmc2V0KCkpOwotCi0gICAgaWYgKHBy
ZXZpb3VzTGVhZiAmJiBwcmV2aW91c0xlYWYtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgewot
ICAgICAgICBpZiAobmV4dExlYWYpCi0gICAgICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKG5leHRMZWFmLT5yZW5kZXJlcigpLT5ub2RlKCksIG5leHRMZWFmLT5jYXJl
dE1heE9mZnNldCgpKTsKLQotICAgICAgICBJbmxpbmVCb3gqIGZpcnN0TFRSTGVhZjsKLSAgICAg
ICAgZG8gewotICAgICAgICAgICAgZmlyc3RMVFJMZWFmID0gcHJldmlvdXNMZWFmOwotICAgICAg
ICAgICAgcHJldmlvdXNMZWFmID0gcHJldmlvdXNMZWFmLT5wcmV2TGVhZkNoaWxkKCk7Ci0gICAg
ICAgIH0gd2hpbGUgKHByZXZpb3VzTGVhZiAmJiBwcmV2aW91c0xlYWYtPmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSk7Ci0gICAgICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
Zmlyc3RMVFJMZWFmLT5yZW5kZXJlcigpLT5ub2RlKCksIGZpcnN0TFRSTGVhZi0+Y2FyZXRNaW5P
ZmZzZXQoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihub2RlLCBib3gtPmNhcmV0TWluT2Zmc2V0KCkpOwotfQotICAgIAotc3RhdGljIFZpc2libGVQ
b3NpdGlvbiBsYXN0V29yZEJyZWFrSW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gsIGludCYgb2Zm
c2V0T2ZXb3JkQnJlYWspCi17Ci0gICAgLy8gQWRkIHRoZSBsZWZ0bW9zdCB3b3JkIGJyZWFrIGZv
ciBSVEwgYm94IG9yIHJpZ2h0bW9zdCB3b3JkIGJyZWFrIGZvciBMVFIgYm94LgotICAgIElubGlu
ZUJveCogcHJldmlvdXNMZWFmID0gYm94LT5wcmV2TGVhZkNoaWxkKCk7Ci0gICAgSW5saW5lQm94
KiBuZXh0TGVhZiA9IGJveC0+bmV4dExlYWZDaGlsZCgpOwotICAgIFZpc2libGVQb3NpdGlvbiBi
b3VuZGFyeVBvc2l0aW9uOwotICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IFJUTCAmJiAoIXBy
ZXZpb3VzTGVhZiB8fCBwcmV2aW91c0xlYWYtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkpCi0g
ICAgICAgIGJvdW5kYXJ5UG9zaXRpb24gPSBsZWZ0bW9zdFBvc2l0aW9uSW5SVExCb3hJbkxUUkJs
b2NrKGJveCk7Ci0gICAgZWxzZSBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBMVFIgJiYgKCFuZXh0
TGVhZiB8fCAhbmV4dExlYWYtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkpCi0gICAgICAgIGJv
dW5kYXJ5UG9zaXRpb24gPSByaWdodG1vc3RQb3NpdGlvbkluTFRSQm94SW5SVExCbG9jayhib3gp
OwotCi0gICAgaWYgKGJvdW5kYXJ5UG9zaXRpb24uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24oKTsgICAgICAgICAgICAKLQotICAgIFZpc2libGVQb3NpdGlvbiB3b3Jk
QnJlYWsgPSBuZXh0Qm91bmRhcnkoYm91bmRhcnlQb3NpdGlvbiwgbmV4dFdvcmRQb3NpdGlvbkJv
dW5kYXJ5KTsKLSAgICBpZiAod29yZEJyZWFrLmlzTnVsbCgpKQotICAgICAgICB3b3JkQnJlYWsg
PSBib3VuZGFyeVBvc2l0aW9uOwotICAgIGVsc2UgaWYgKHdvcmRCcmVhayAhPSBib3VuZGFyeVBv
c2l0aW9uKQotICAgICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c0JvdW5kYXJ5KHdvcmRCcmVhaywg
cHJldmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFyeSk7Ci0KLSAgICByZXR1cm4gcG9zaXRpb25Jc0lu
Qm94KHdvcmRCcmVhaywgYm94LCBvZmZzZXRPZldvcmRCcmVhaykgPyB3b3JkQnJlYWsgOiBWaXNp
YmxlUG9zaXRpb24oKTsgICAgCi19Ci0KLXN0YXRpYyBib29sIHBvc2l0aW9uSXNWaXN1YWxseU9y
ZGVyZWRJbkJveEluQmxvY2tXaXRoRGlmZmVyZW50RGlyZWN0aW9uYWxpdHkoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB3b3JkQnJlYWssIGNvbnN0IElubGluZUJveCogYm94LCBpbnQmIG9mZnNldE9m
V29yZEJyZWFrKQotewotICAgIGludCBwcmV2aW91c09mZnNldCA9IG9mZnNldE9mV29yZEJyZWFr
OwotICAgIHJldHVybiBwb3NpdGlvbklzSW5Cb3god29yZEJyZWFrLCBib3gsIG9mZnNldE9mV29y
ZEJyZWFrKQotICAgICAgICAmJiAocHJldmlvdXNPZmZzZXQgPT0gaW52YWxpZE9mZnNldCB8fCBw
cmV2aW91c09mZnNldCA8IG9mZnNldE9mV29yZEJyZWFrKTsKLX0KLSAgICAKLXN0YXRpYyBWaXNp
YmxlUG9zaXRpb24gbmV4dFdvcmRCcmVha0luQm94SW5zaWRlQmxvY2tXaXRoRGlmZmVyZW50RGly
ZWN0aW9uYWxpdHkoCi0gICAgY29uc3QgSW5saW5lQm94KiBib3gsIGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgcHJldmlvdXNXb3JkQnJlYWssIGludCYgb2Zmc2V0T2ZXb3JkQnJlYWssIGJvb2wmIGlz
TGFzdFdvcmRCcmVha0luQm94KQotewotICAgIC8vIEZJWE1FOiBQcm9iYWJseSBuZWVkIHRvIHRh
a2UgY2FyZSBvZiBiaWRpIGxldmVsIHRvby4KLSAgICAKLSAgICAvLyBJbiBhIExUUiBibG9jaywg
dGhlIHdvcmQgYnJlYWsgc2hvdWxkIGJlIG9uIHRoZSBsZWZ0IGJvdW5kYXJ5IG9mIGEgd29yZC4K
LSAgICAvLyBJbiBhIFJUTCBibG9jaywgdGhlIHdvcmQgYnJlYWsgc2hvdWxkIGJlIG9uIHRoZSBy
aWdodCBib3VuZGFyeSBvZiBhIHdvcmQuCi0gICAgLy8gQmVjYXVzZSBwcmV2aW91c1dvcmRQb3Np
dGlvbigpIHJldHVybnMgdGhlIHdvcmQgYnJlYWsgb24gdGhlIHJpZ2h0IGJvdW5kYXJ5IG9mIHRo
ZSB3b3JkIGZvciBSVEwgdGV4dCwKLSAgICAvLyB3ZSBuZWVkIHRvIHVzZSBuZXh0V29yZFBvc2l0
aW9uKCkgdG8gdHJhdmVyc2Ugd29yZHMgd2l0aGluIHRoZSBpbmxpbmUgYm94ZXMgZnJvbSByaWdo
dCB0byBsZWZ0IHRvIGZpbmQgdGhlIG5leHQgd29yZCBicmVhay4KLSAgICAvLyBUaGUgc2FtZSBh
cHBsaWVzIHRvIExUUiB0ZXh0LCBpbiB3aGljaCB3b3JkcyBhcmUgdHJhdmVyc2VkIHdpdGhpbiB0
aGUgaW5saW5lIGJveGVzIGZyb20gbGVmdCB0byByaWdodC4KLSAgICAKLSAgICBib29sIGhhc1Nl
ZW5Xb3JkQnJlYWtJblRoaXNCb3ggPSBwcmV2aW91c1dvcmRCcmVhay5pc05vdE51bGwoKTsKLSAg
ICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrID0gaGFzU2VlbldvcmRCcmVha0luVGhpc0JveCA/
IHByZXZpb3VzV29yZEJyZWFrIDogCi0gICAgICAgIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihib3gtPnJlbmRlcmVyKCktPm5vZGUoKSwgYm94LT5jYXJldE1pbk9mZnNldCgpKTsKLQotICAg
IHdvcmRCcmVhayA9IG5leHRCb3VuZGFyeSh3b3JkQnJlYWssIG5leHRXb3JkUG9zaXRpb25Cb3Vu
ZGFyeSk7Ci0gIAotICAgIC8vIEdpdmVuIFJUTCBib3ggIkFCQyBERUYiIGVpdGhlciBmb2xsb3dz
IGEgTFRSIGJveCBvciBpcyB0aGUgZmlyc3QgdmlzdWFsIGJveCBpbiBhbiBMVFIgYmxvY2sgYXMg
YW4gZXhhbXBsZSwKLSAgICAvLyB0aGUgdmlzdWFsIGRpc3BsYXkgb2YgdGhlIFJUTCBib3ggaXM6
ICIoMClKKDEwKUkoOSlIKDgpICg3KUYoNilFKDUpRCg0KSAoMylDKDIpQigxKUEoMTEpIiwKLSAg
ICAvLyB3aGVyZSB0aGUgbnVtYmVyIGluIHBhcmVudGhlc2lzIHJlcHJlc2VudHMgb2Zmc2V0IGlu
IHZpc2libGVQb3NpdGlvbi4gCi0gICAgLy8gU3RhcnQgYXQgb2Zmc2V0IDAsIHRoZSBmaXJzdCB3
b3JkIGJyZWFrIGlzIGF0IG9mZnNldCAzLCB0aGUgMm5kIHdvcmQgYnJlYWsgaXMgYXQgb2Zmc2V0
IDcsIGFuZCB0aGUgM3JkIHdvcmQgYnJlYWsgc2hvdWxkIGJlIGF0IG9mZnNldCAwLgotICAgIC8v
IEJ1dCBuZXh0V29yZFBvc2l0aW9uKCkgb2Ygb2Zmc2V0IDcgaXMgb2Zmc2V0IDExLCB3aGljaCBz
aG91bGQgYmUgaWdub3JlZCwgCi0gICAgLy8gYW5kIHRoZSBwb3NpdGlvbiBhdCBvZmZzZXQgMCBz
aG91bGQgYmUgbWFudWFsbHkgYWRkZWQgYXMgdGhlIGxhc3Qgd29yZCBicmVhayB3aXRoaW4gdGhl
IGJveC4KLSAgICBpZiAod29yZEJyZWFrICE9IHByZXZpb3VzV29yZEJyZWFrICYmIHBvc2l0aW9u
SXNWaXN1YWxseU9yZGVyZWRJbkJveEluQmxvY2tXaXRoRGlmZmVyZW50RGlyZWN0aW9uYWxpdHko
d29yZEJyZWFrLCBib3gsIG9mZnNldE9mV29yZEJyZWFrKSkgewotICAgICAgICBpc0xhc3RXb3Jk
QnJlYWtJbkJveCA9IGZhbHNlOwotICAgICAgICByZXR1cm4gd29yZEJyZWFrOwotICAgIH0KLSAg
ICAKLSAgICBpc0xhc3RXb3JkQnJlYWtJbkJveCA9IHRydWU7Ci0gICAgcmV0dXJuIGxhc3RXb3Jk
QnJlYWtJbkJveChib3gsIG9mZnNldE9mV29yZEJyZWFrKTsKLX0KLQotc3RydWN0IFdvcmRCb3Vu
ZGFyeUVudHJ5IHsKLSAgICBXb3JkQm91bmRhcnlFbnRyeSgpCi0gICAgICAgIDogb2Zmc2V0SW5J
bmxpbmVCb3goaW52YWxpZE9mZnNldCkgCi0gICAgeyAKLSAgICB9Ci0KLSAgICBXb3JkQm91bmRh
cnlFbnRyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgb2Zmc2V0KQotICAg
ICAgICA6IHZpc2libGVQb3NpdGlvbihwb3NpdGlvbikKLSAgICAgICAgLCBvZmZzZXRJbklubGlu
ZUJveChvZmZzZXQpIAotICAgIHsgCi0gICAgfQotCi0gICAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3NpdGlvbjsKLSAgICBpbnQgb2Zmc2V0SW5JbmxpbmVCb3g7Ci19OwotICAgIAotdHlwZWRl
ZiBWZWN0b3I8V29yZEJvdW5kYXJ5RW50cnksIDUwPiBXb3JkQm91bmRhcnlWZWN0b3I7Ci0gICAg
Ci1zdGF0aWMgdm9pZCBjb2xsZWN0V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURp
cmVjdGlvbmFsaXR5KGNvbnN0IElubGluZUJveCogYm94LCBXb3JkQm91bmRhcnlWZWN0b3ImIG9y
ZGVyZWRXb3JkQm91bmRhcmllcykKLXsKLSAgICBvcmRlcmVkV29yZEJvdW5kYXJpZXMuY2xlYXIo
KTsKLQotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0gICAgaW50IG9mZnNldE9mV29y
ZEJyZWFrID0gaW52YWxpZE9mZnNldDsKLSAgICB3aGlsZSAoMSkgewotICAgICAgICB3b3JkQnJl
YWsgPSBwcmV2aW91c1dvcmRCcmVha0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFs
aXR5KGJveCwgd29yZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhayk7Ci0gICAgICAgIGlmICh3b3Jk
QnJlYWsuaXNOdWxsKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgV29yZEJvdW5kYXJ5
RW50cnkgd29yZEJvdW5kYXJ5RW50cnkod29yZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhayk7Ci0g
ICAgICAgIG9yZGVyZWRXb3JkQm91bmRhcmllcy5hcHBlbmQod29yZEJvdW5kYXJ5RW50cnkpOwot
ICAgIH0KLX0KLQotc3RhdGljIHZvaWQgY29sbGVjdFdvcmRCcmVha3NJbkJveEluc2lkZUJsb2Nr
V2l0aERpZmZlcm50RGlyZWN0aW9uYWxpdHkoY29uc3QgSW5saW5lQm94KiBib3gsIFdvcmRCb3Vu
ZGFyeVZlY3RvciYgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKQotewotICAgIG9yZGVyZWRXb3JkQm91
bmRhcmllcy5jbGVhcigpOwotICAgIAotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0g
ICAgaW50IG9mZnNldE9mV29yZEJyZWFrID0gaW52YWxpZE9mZnNldDsKLSAgICBib29sIGlzTGFz
dFdvcmRCcmVha0luQm94ID0gZmFsc2U7Ci0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgd29yZEJy
ZWFrID0gbmV4dFdvcmRCcmVha0luQm94SW5zaWRlQmxvY2tXaXRoRGlmZmVyZW50RGlyZWN0aW9u
YWxpdHkoYm94LCB3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrLCBpc0xhc3RXb3JkQnJlYWtJ
bkJveCk7Ci0gICAgICAgIGlmICh3b3JkQnJlYWsuaXNOb3ROdWxsKCkpIHsKLSAgICAgICAgICAg
IFdvcmRCb3VuZGFyeUVudHJ5IHdvcmRCb3VuZGFyeUVudHJ5KHdvcmRCcmVhaywgb2Zmc2V0T2ZX
b3JkQnJlYWspOwotICAgICAgICAgICAgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLmFwcGVuZCh3b3Jk
Qm91bmRhcnlFbnRyeSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzTGFzdFdvcmRCcmVha0lu
Qm94KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBjb2xsZWN0
V29yZEJyZWFrc0luQm94KGNvbnN0IElubGluZUJveCogYm94LCBXb3JkQm91bmRhcnlWZWN0b3Im
IG9yZGVyZWRXb3JkQm91bmRhcmllcywgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbikKLXsK
LSAgICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBibG9ja0RpcmVjdGlvbikKLSAgICAgICAgY29s
bGVjdFdvcmRCcmVha3NJbkJveEluc2lkZUJsb2NrV2l0aFNhbWVEaXJlY3Rpb25hbGl0eShib3gs
IG9yZGVyZWRXb3JkQm91bmRhcmllcyk7Ci0gICAgZWxzZQotICAgICAgICBjb2xsZWN0V29yZEJy
ZWFrc0luQm94SW5zaWRlQmxvY2tXaXRoRGlmZmVybnREaXJlY3Rpb25hbGl0eShib3gsIG9yZGVy
ZWRXb3JkQm91bmRhcmllcyk7ICAgICAgICAKLX0KLSAgICAKLXN0YXRpYyBWaXNpYmxlUG9zaXRp
b24gcHJldmlvdXNXb3JkQm91bmRhcnlJbkJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50IG9m
ZnNldCkKLXsKLSAgICBpbnQgb2Zmc2V0T2ZXb3JkQnJlYWsgPSAwOwotICAgIFZpc2libGVQb3Np
dGlvbiB3b3JkQnJlYWs7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgd29yZEJyZWFrID0g
cHJldmlvdXNXb3JkQnJlYWtJbkJveEluc2lkZUJsb2NrV2l0aFNhbWVEaXJlY3Rpb25hbGl0eShi
b3gsIHdvcmRCcmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWspOwotICAgICAgICBpZiAod29yZEJyZWFr
LmlzTnVsbCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gaW52
YWxpZE9mZnNldCB8fCBvZmZzZXRPZldvcmRCcmVhayAhPSBvZmZzZXQpCi0gICAgICAgICAgICBy
ZXR1cm4gd29yZEJyZWFrOwotICAgIH0gICAgICAgIAotICAgIHJldHVybiBWaXNpYmxlUG9zaXRp
b24oKTsKLX0KLQotc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZEJvdW5kYXJ5SW5Cb3go
Y29uc3QgSW5saW5lQm94KiBib3gsIGludCBvZmZzZXQpCi17Ci0gICAgaW50IG9mZnNldE9mV29y
ZEJyZWFrID0gMDsKLSAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrOwotICAgIGJvb2wgaXNM
YXN0V29yZEJyZWFrSW5Cb3ggPSBmYWxzZTsKLSAgICBkbyB7Ci0gICAgICAgIHdvcmRCcmVhayA9
IG5leHRXb3JkQnJlYWtJbkJveEluc2lkZUJsb2NrV2l0aERpZmZlcmVudERpcmVjdGlvbmFsaXR5
KGJveCwgd29yZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhaywgaXNMYXN0V29yZEJyZWFrSW5Cb3gp
OwotICAgICAgICBpZiAod29yZEJyZWFrLmlzTm90TnVsbCgpICYmIChvZmZzZXQgPT0gaW52YWxp
ZE9mZnNldCB8fCBvZmZzZXRPZldvcmRCcmVhayAhPSBvZmZzZXQpKQotICAgICAgICAgICAgcmV0
dXJuIHdvcmRCcmVhazsKLSAgICB9IHdoaWxlICghaXNMYXN0V29yZEJyZWFrSW5Cb3gpOyAgICAg
ICAKLSAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci19Ci0gICAgCi1zdGF0aWMgVmlzaWJs
ZVBvc2l0aW9uIHZpc3VhbGx5TGFzdFdvcmRCb3VuZGFyeUluQm94KGNvbnN0IElubGluZUJveCog
Ym94LCBpbnQgb2Zmc2V0LCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQotewotICAgIFdv
cmRCb3VuZGFyeVZlY3RvciBvcmRlcmVkV29yZEJvdW5kYXJpZXM7Ci0gICAgY29sbGVjdFdvcmRC
cmVha3NJbkJveChib3gsIG9yZGVyZWRXb3JkQm91bmRhcmllcywgYmxvY2tEaXJlY3Rpb24pOwot
ICAgIGlmICghb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSkgCi0gICAgICAgIHJldHVybiBW
aXNpYmxlUG9zaXRpb24oKTsKLSAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQgfHwgb3Jk
ZXJlZFdvcmRCb3VuZGFyaWVzW29yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkgLSAxXS5vZmZz
ZXRJbklubGluZUJveCAhPSBvZmZzZXQpCi0gICAgICAgIHJldHVybiBvcmRlcmVkV29yZEJvdW5k
YXJpZXNbb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDFdLnZpc2libGVQb3NpdGlvbjsK
LSAgICBpZiAob3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSA+IDEpCi0gICAgICAgIHJldHVy
biBvcmRlcmVkV29yZEJvdW5kYXJpZXNbb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDJd
LnZpc2libGVQb3NpdGlvbjsKLSAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci19Ci0gICAg
ICAgIAotc3RhdGljIGludCBncmVhdGVzdE9mZnNldFVuZGVyKGludCBvZmZzZXQsIGJvb2wgYm94
QW5kQmxvY2tBcmVJblNhbWVEaXJlY3Rpb24sIGNvbnN0IFdvcmRCb3VuZGFyeVZlY3RvciYgb3Jk
ZXJlZFdvcmRCb3VuZGFyaWVzKQotewotICAgIGlmICghb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNp
emUoKSkKLSAgICAgICAgcmV0dXJuIG9mZnNldE5vdEZvdW5kOwotICAgIC8vIEZJWE1FOiBiaW5h
cnkgc2VhcmNoLgotICAgIGlmIChib3hBbmRCbG9ja0FyZUluU2FtZURpcmVjdGlvbikgewotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAob3JkZXJlZFdvcmRCb3VuZGFyaWVzW2ldLm9mZnNl
dEluSW5saW5lQm94IDwgb2Zmc2V0KQotICAgICAgICAgICAgICAgIHJldHVybiBpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBvZmZzZXROb3RGb3VuZDsKLSAgICB9Ci0gICAgZm9yIChpbnQg
aSA9IG9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewotICAg
ICAgICBpZiAob3JkZXJlZFdvcmRCb3VuZGFyaWVzW2ldLm9mZnNldEluSW5saW5lQm94IDwgb2Zm
c2V0KQotICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgfQotICAgIHJldHVybiBvZmZzZXROb3RG
b3VuZDsKLX0KLQotc3RhdGljIGludCBzbWFsbGVzdE9mZnNldEFib3ZlKGludCBvZmZzZXQsIGJv
b2wgYm94QW5kQmxvY2tBcmVJblNhbWVEaXJlY3Rpb24sIGNvbnN0IFdvcmRCb3VuZGFyeVZlY3Rv
ciYgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKQotewotICAgIGlmICghb3JkZXJlZFdvcmRCb3VuZGFy
aWVzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIG9mZnNldE5vdEZvdW5kOwotICAgIC8vIEZJWE1F
OiBiaW5hcnkgc2VhcmNoLgotICAgIGlmIChib3hBbmRCbG9ja0FyZUluU2FtZURpcmVjdGlvbikg
ewotICAgICAgICBmb3IgKGludCBpID0gb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDE7
IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgICAgICBpZiAob3JkZXJlZFdvcmRCb3VuZGFyaWVzW2ld
Lm9mZnNldEluSW5saW5lQm94ID4gb2Zmc2V0KQotICAgICAgICAgICAgICAgIHJldHVybiBpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBvZmZzZXROb3RGb3VuZDsKLSAgICB9Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCk7ICsraSkg
ewotICAgICAgICBpZiAob3JkZXJlZFdvcmRCb3VuZGFyaWVzW2ldLm9mZnNldEluSW5saW5lQm94
ID4gb2Zmc2V0KQotICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgfQotICAgIHJldHVybiBvZmZz
ZXROb3RGb3VuZDsKLX0KLQotc3RhdGljIGNvbnN0IFJvb3RJbmxpbmVCb3gqIHByZXZpb3VzUm9v
dElubGluZUJveChjb25zdCBJbmxpbmVCb3gqIGJveCkKLXsKLSAgICBOb2RlKiBub2RlID0gYm94
LT5yZW5kZXJlcigpLT5ub2RlKCk7Ci0gICAgTm9kZSogZW5jbG9zaW5nQmxvY2tOb2RlID0gZW5j
bG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihub2RlKTsKLSAgICBOb2RlKiBwcmV2aW91
c05vZGUgPSBub2RlLT5wcmV2aW91c0xlYWZOb2RlKCk7Ci0gICAgd2hpbGUgKHByZXZpb3VzTm9k
ZSAmJiBlbmNsb3NpbmdCbG9ja05vZGUgPT0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5k
ZXJlcihwcmV2aW91c05vZGUpKQotICAgICAgICBwcmV2aW91c05vZGUgPSBwcmV2aW91c05vZGUt
PnByZXZpb3VzTGVhZk5vZGUoKTsKLSAgCi0gICAgd2hpbGUgKHByZXZpb3VzTm9kZSAmJiAhcHJl
dmlvdXNOb2RlLT5pc1NoYWRvd1Jvb3QoKSkgewotICAgICAgICBQb3NpdGlvbiBwb3MgPSBjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocHJldmlvdXNOb2RlLCBjYXJldE1heE9mZnNldChwcmV2
aW91c05vZGUpKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChwb3MuaXNDYW5kaWRhdGUoKSkgewot
ICAgICAgICAgICAgUmVuZGVyZWRQb3NpdGlvbiByZW5kZXJlZFBvcyhwb3MsIERPV05TVFJFQU0p
OwotICAgICAgICAgICAgUm9vdElubGluZUJveCogcm9vdCA9IHJlbmRlcmVkUG9zLnJvb3RCb3go
KTsKLSAgICAgICAgICAgIGlmIChyb290KQotICAgICAgICAgICAgICAgIHJldHVybiByb290Owot
ICAgICAgICB9Ci0KLSAgICAgICAgcHJldmlvdXNOb2RlID0gcHJldmlvdXNOb2RlLT5wcmV2aW91
c0xlYWZOb2RlKCk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgY29uc3QgUm9v
dElubGluZUJveCogbmV4dFJvb3RJbmxpbmVCb3goY29uc3QgSW5saW5lQm94KiBib3gpCi17Ci0g
ICAgTm9kZSogbm9kZSA9IGJveC0+cmVuZGVyZXIoKS0+bm9kZSgpOwotICAgIE5vZGUqIGVuY2xv
c2luZ0Jsb2NrTm9kZSA9IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5lUmVuZGVyZXIobm9kZSk7
Ci0gICAgTm9kZSogbmV4dE5vZGUgPSBub2RlLT5uZXh0TGVhZk5vZGUoKTsKLSAgICB3aGlsZSAo
bmV4dE5vZGUgJiYgZW5jbG9zaW5nQmxvY2tOb2RlID09IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5s
aW5lUmVuZGVyZXIobmV4dE5vZGUpKQotICAgICAgICBuZXh0Tm9kZSA9IG5leHROb2RlLT5uZXh0
TGVhZk5vZGUoKTsKLSAgCi0gICAgd2hpbGUgKG5leHROb2RlICYmICFuZXh0Tm9kZS0+aXNTaGFk
b3dSb290KCkpIHsKLSAgICAgICAgUG9zaXRpb24gcG9zOwotICAgICAgICBwb3MgPSBjcmVhdGVM
ZWdhY3lFZGl0aW5nUG9zaXRpb24obmV4dE5vZGUsIGNhcmV0TWluT2Zmc2V0KG5leHROb2RlKSk7
Ci0gICAgICAgIAotICAgICAgICBpZiAocG9zLmlzQ2FuZGlkYXRlKCkpIHsKLSAgICAgICAgICAg
IFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3MocG9zLCBET1dOU1RSRUFNKTsKLSAgICAgICAg
ICAgIFJvb3RJbmxpbmVCb3gqIHJvb3QgPSByZW5kZXJlZFBvcy5yb290Qm94KCk7Ci0gICAgICAg
ICAgICBpZiAocm9vdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcm9vdDsKLSAgICAgICAgfQot
Ci0gICAgICAgIG5leHROb2RlID0gbmV4dE5vZGUtPm5leHRMZWFmTm9kZSgpOwotICAgIH0KLSAg
ICByZXR1cm4gMDsKLX0KLQotc3RhdGljIGNvbnN0IElubGluZUJveCogbGVmdElubGluZUJveChj
b25zdCBJbmxpbmVCb3gqIGJveCwgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbikKLXsKLSAg
ICBpZiAoYm94LT5wcmV2TGVhZkNoaWxkKCkpCi0gICAgICAgIHJldHVybiBib3gtPnByZXZMZWFm
Q2hpbGQoKTsKLSAgICAKLSAgICBjb25zdCBSb290SW5saW5lQm94KiByb290Qm94ID0gYm94LT5y
b290KCk7Ci0gICAgY29uc3QgYm9vbCBpc0Jsb2NrTFRSID0gYmxvY2tEaXJlY3Rpb24gPT0gTFRS
OwotICAgIGNvbnN0IElubGluZUZsb3dCb3gqIGxlZnRMaW5lQm94ID0gaXNCbG9ja0xUUiA/IHJv
b3RCb3gtPnByZXZMaW5lQm94KCkgOiByb290Qm94LT5uZXh0TGluZUJveCgpOwotICAgIGlmIChs
ZWZ0TGluZUJveCkKLSAgICAgICAgcmV0dXJuIGxlZnRMaW5lQm94LT5sYXN0TGVhZkNoaWxkKCk7
Ci0KLSAgICBjb25zdCBSb290SW5saW5lQm94KiBsZWZ0Um9vdElubGluZUJveCA9IGlzQmxvY2tM
VFIgPyBwcmV2aW91c1Jvb3RJbmxpbmVCb3goYm94KSA6Ci0gICAgICAgIG5leHRSb290SW5saW5l
Qm94KGJveCk7IAotICAgIHJldHVybiBsZWZ0Um9vdElubGluZUJveCA/IGxlZnRSb290SW5saW5l
Qm94LT5sYXN0TGVhZkNoaWxkKCkgOiAwOyAKLX0KLQotc3RhdGljIGNvbnN0IElubGluZUJveCog
cmlnaHRJbmxpbmVCb3goY29uc3QgSW5saW5lQm94KiBib3gsIFRleHREaXJlY3Rpb24gYmxvY2tE
aXJlY3Rpb24pCi17Ci0gICAgaWYgKGJveC0+bmV4dExlYWZDaGlsZCgpKQotICAgICAgICByZXR1
cm4gYm94LT5uZXh0TGVhZkNoaWxkKCk7Ci0gICAgCi0gICAgY29uc3QgUm9vdElubGluZUJveCog
cm9vdEJveCA9IGJveC0+cm9vdCgpOwotICAgIGNvbnN0IGJvb2wgaXNCbG9ja0xUUiA9IGJsb2Nr
RGlyZWN0aW9uID09IExUUjsKLSAgICBjb25zdCBJbmxpbmVGbG93Qm94KiByaWdodExpbmVCb3gg
PSBpc0Jsb2NrTFRSID8gcm9vdEJveC0+bmV4dExpbmVCb3goKSA6IHJvb3RCb3gtPnByZXZMaW5l
Qm94KCk7Ci0gICAgaWYgKHJpZ2h0TGluZUJveCkKLSAgICAgICAgcmV0dXJuIHJpZ2h0TGluZUJv
eC0+Zmlyc3RMZWFmQ2hpbGQoKTsKLQotICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIHJpZ2h0Um9v
dElubGluZUJveCA9IGlzQmxvY2tMVFIgPyBuZXh0Um9vdElubGluZUJveChib3gpIDoKLSAgICAg
ICAgcHJldmlvdXNSb290SW5saW5lQm94KGJveCk7IAotICAgIHJldHVybiByaWdodFJvb3RJbmxp
bmVCb3ggPyByaWdodFJvb3RJbmxpbmVCb3gtPmZpcnN0TGVhZkNoaWxkKCkgOiAwOyAKLX0KLQot
c3RhdGljIFZpc2libGVQb3NpdGlvbiBsZWZ0V29yZEJvdW5kYXJ5KGNvbnN0IElubGluZUJveCog
Ym94LCBpbnQgb2Zmc2V0LCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQotewotICAgIFZp
c2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0gICAgZm9yICAoY29uc3QgSW5saW5lQm94KiBhZGph
Y2VudEJveCA9IGJveDsgYWRqYWNlbnRCb3g7IGFkamFjZW50Qm94ID0gbGVmdElubGluZUJveChh
ZGphY2VudEJveCwgYmxvY2tEaXJlY3Rpb24pKSB7Ci0gICAgICAgIGlmIChibG9ja0RpcmVjdGlv
biA9PSBMVFIpIHsKLSAgICAgICAgICAgIGlmIChhZGphY2VudEJveC0+aXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpKSAKLSAgICAgICAgICAgICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c1dvcmRCb3Vu
ZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZh
bGlkT2Zmc2V0KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB3b3JkQnJlYWsg
PSBuZXh0V29yZEJvdW5kYXJ5SW5Cb3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/
IG9mZnNldCA6IGludmFsaWRPZmZzZXQpOwotICAgICAgICB9IGVsc2UgCi0gICAgICAgICAgICB3
b3JkQnJlYWsgPSB2aXN1YWxseUxhc3RXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRq
YWNlbnRCb3ggPT0gYm94ID8gb2Zmc2V0IDogaW52YWxpZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24p
OyAgICAgICAgICAgIAotICAgICAgICBpZiAod29yZEJyZWFrLmlzTm90TnVsbCgpKQotICAgICAg
ICAgICAgcmV0dXJuIHdvcmRCcmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bigpOwotfQotIAotc3RhdGljIFZpc2libGVQb3NpdGlvbiByaWdodFdvcmRCb3VuZGFyeShjb25z
dCBJbmxpbmVCb3gqIGJveCwgaW50IG9mZnNldCwgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlv
bikKLXsKLSAgICAKLSAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrOwotICAgIGZvciAoY29u
c3QgSW5saW5lQm94KiBhZGphY2VudEJveCA9IGJveDsgYWRqYWNlbnRCb3g7IGFkamFjZW50Qm94
ID0gcmlnaHRJbmxpbmVCb3goYWRqYWNlbnRCb3gsIGJsb2NrRGlyZWN0aW9uKSkgewotICAgICAg
ICBpZiAoYmxvY2tEaXJlY3Rpb24gPT0gUlRMKSB7Ci0gICAgICAgICAgICBpZiAoYWRqYWNlbnRC
b3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgICAgICB3b3JkQnJlYWsg
PSBuZXh0V29yZEJvdW5kYXJ5SW5Cb3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/
IG9mZnNldCA6IGludmFsaWRPZmZzZXQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHdvcmRCcmVhayA9IHByZXZpb3VzV29yZEJvdW5kYXJ5SW5Cb3goYWRqYWNlbnRCb3gsIGFk
amFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRPZmZzZXQpOwotICAgICAgICB9IGVs
c2UgCi0gICAgICAgICAgICB3b3JkQnJlYWsgPSB2aXN1YWxseUxhc3RXb3JkQm91bmRhcnlJbkJv
eChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8gb2Zmc2V0IDogaW52YWxpZE9mZnNl
dCwgYmxvY2tEaXJlY3Rpb24pOyAgICAgICAgICAgIAotICAgICAgICBpZiAoIXdvcmRCcmVhay5p
c051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiB3b3JkQnJlYWs7Ci0gICAgfQotICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb24oKTsKLX0KLSAgICAKLXN0YXRpYyBib29sIHBvc2l0aW9uSXNJbkJv
eEJ1dE5vdE9uQm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB3b3JkQnJlYWssIGNvbnN0
IElubGluZUJveCogYm94KQotewotICAgIGludCBvZmZzZXRPZldvcmRCcmVhazsKLSAgICByZXR1
cm4gcG9zaXRpb25Jc0luQm94KHdvcmRCcmVhaywgYm94LCBvZmZzZXRPZldvcmRCcmVhaykKLSAg
ICAgICAgJiYgb2Zmc2V0T2ZXb3JkQnJlYWsgIT0gYm94LT5jYXJldE1heE9mZnNldCgpICYmIG9m
ZnNldE9mV29yZEJyZWFrICE9IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKLX0KLQotc3RhdGljIFZp
c2libGVQb3NpdGlvbiBsZWZ0V29yZFBvc2l0aW9uSWdub3JpbmdFZGl0aW5nQm91bmRhcnkoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCi17Ci0gICAgSW5saW5lQm94KiBi
b3g7Ci0gICAgaW50IG9mZnNldDsKLSAgICB2aXNpYmxlUG9zaXRpb24uZ2V0SW5saW5lQm94QW5k
T2Zmc2V0KGJveCwgb2Zmc2V0KTsKLQotICAgIGlmICghYm94KQotICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKCk7Ci0KLSAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uID0gZGly
ZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7
Ci0KLSAgICAvLyBGSVhNRTogSWYgdGhlIGJveCdzIGRpcmVjdGlvbmFsaXR5IGlzIHRoZSBzYW1l
IGFzIHRoYXQgb2YgdGhlIGVuY2xvc2luZyBibG9jaywgd2hlbiB0aGUgb2Zmc2V0IGlzIGF0IHRo
ZSBib3ggYm91bmRhcnkKLSAgICAvLyBhbmQgdGhlIGRpcmVjdGlvbiBpcyB0b3dhcmRzIGluc2lk
ZSB0aGUgYm94LCBkbyBJIHN0aWxsIG5lZWQgdG8gbWFrZSBpdCBhIHNwZWNpYWwgY2FzZT8gRm9y
IGV4YW1wbGUsIGEgTFRSIGJveCBpbnNpZGUgYSBMVFIgYmxvY2ssCi0gICAgLy8gd2hlbiBvZmZz
ZXQgaXMgYXQgYm94J3MgY2FyZXRNaW5PZmZzZXQgYW5kIHRoZSBkaXJlY3Rpb24gaXMgRGlyZWN0
aW9uUmlnaHQsIHNob3VsZCBpdCBiZSB0YWtlbiBjYXJlIGFzIGEgZ2VuZXJhbCBjYXNlPwotICAg
IGlmIChvZmZzZXQgPT0gYm94LT5jYXJldExlZnRtb3N0T2Zmc2V0KCkpCi0gICAgICAgIHJldHVy
biBsZWZ0V29yZEJvdW5kYXJ5KGxlZnRJbmxpbmVCb3goYm94LCBibG9ja0RpcmVjdGlvbiksIGlu
dmFsaWRPZmZzZXQsIGJsb2NrRGlyZWN0aW9uKTsKLSAgICBpZiAob2Zmc2V0ID09IGJveC0+Y2Fy
ZXRSaWdodG1vc3RPZmZzZXQoKSkKLSAgICAgICAgcmV0dXJuIGxlZnRXb3JkQm91bmRhcnkoYm94
LCBvZmZzZXQsIGJsb2NrRGlyZWN0aW9uKTsKLSAgICAKLSAgICAKLSAgICBWaXNpYmxlUG9zaXRp
b24gd29yZEJyZWFrOwotICAgIGlmIChibG9ja0RpcmVjdGlvbiA9PSBMVFIpIHsKLSAgICAgICAg
aWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gYmxvY2tEaXJlY3Rpb24pCi0gICAgICAgICAgICB3b3Jk
QnJlYWsgPSBwcmV2aW91c0JvdW5kYXJ5KHZpc2libGVQb3NpdGlvbiwgcHJldmlvdXNXb3JkUG9z
aXRpb25Cb3VuZGFyeSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHdvcmRCcmVhayA9IG5l
eHRCb3VuZGFyeSh2aXNpYmxlUG9zaXRpb24sIG5leHRXb3JkUG9zaXRpb25Cb3VuZGFyeSk7Ci0g
ICAgfQotICAgIGlmICh3b3JkQnJlYWsuaXNOb3ROdWxsKCkgJiYgcG9zaXRpb25Jc0luQm94QnV0
Tm90T25Cb3VuZGFyeSh3b3JkQnJlYWssIGJveCkpCi0gICAgICAgIHJldHVybiB3b3JkQnJlYWs7
Ci0gICAgCi0gICAgV29yZEJvdW5kYXJ5VmVjdG9yIG9yZGVyZWRXb3JkQm91bmRhcmllczsKLSAg
ICBjb2xsZWN0V29yZEJyZWFrc0luQm94KGJveCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLCBibG9j
a0RpcmVjdGlvbik7Ci0KLSAgICBpbnQgaW5kZXggPSBib3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSA/IGdyZWF0ZXN0T2Zmc2V0VW5kZXIob2Zmc2V0LCBibG9ja0RpcmVjdGlvbiA9PSBMVFIs
IG9yZGVyZWRXb3JkQm91bmRhcmllcykKLSAgICAgICAgOiBzbWFsbGVzdE9mZnNldEFib3ZlKG9m
ZnNldCwgYmxvY2tEaXJlY3Rpb24gPT0gUlRMLCBvcmRlcmVkV29yZEJvdW5kYXJpZXMpOwotICAg
IGlmIChpbmRleCA+PSAwKQotICAgICAgICByZXR1cm4gb3JkZXJlZFdvcmRCb3VuZGFyaWVzW2lu
ZGV4XS52aXNpYmxlUG9zaXRpb247Ci0gICAgCi0gICAgcmV0dXJuIGxlZnRXb3JkQm91bmRhcnko
bGVmdElubGluZUJveChib3gsIGJsb2NrRGlyZWN0aW9uKSwgaW52YWxpZE9mZnNldCwgYmxvY2tE
aXJlY3Rpb24pOwotfQotCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0V29yZFBvc2l0aW9u
SWdub3JpbmdFZGl0aW5nQm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9z
aXRpb24pCi17Ci0gICAgSW5saW5lQm94KiBib3g7Ci0gICAgaW50IG9mZnNldDsKLSAgICB2aXNp
YmxlUG9zaXRpb24uZ2V0SW5saW5lQm94QW5kT2Zmc2V0KGJveCwgb2Zmc2V0KTsKLQotICAgIGlm
ICghYm94KQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0KLSAgICBUZXh0RGly
ZWN0aW9uIGJsb2NrRGlyZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxl
UG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7Ci0gICAgCi0gICAgaWYgKG9mZnNldCA9PSBib3gt
PmNhcmV0TGVmdG1vc3RPZmZzZXQoKSkKLSAgICAgICAgcmV0dXJuIHJpZ2h0V29yZEJvdW5kYXJ5
KGJveCwgb2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7Ci0gICAgaWYgKG9mZnNldCA9PSBib3gtPmNh
cmV0UmlnaHRtb3N0T2Zmc2V0KCkpCi0gICAgICAgIHJldHVybiByaWdodFdvcmRCb3VuZGFyeShy
aWdodElubGluZUJveChib3gsIGJsb2NrRGlyZWN0aW9uKSwgaW52YWxpZE9mZnNldCwgYmxvY2tE
aXJlY3Rpb24pOwotIAotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0gICAgaWYgKGJs
b2NrRGlyZWN0aW9uID09IFJUTCkgewotICAgICAgICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBi
bG9ja0RpcmVjdGlvbikKLSAgICAgICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzQm91bmRhcnko
dmlzaWJsZVBvc2l0aW9uLCBwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW5kYXJ5KTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgd29yZEJyZWFrID0gbmV4dEJvdW5kYXJ5KHZpc2libGVQb3NpdGlv
biwgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5KTsKLSAgICB9Ci0gICAgaWYgKHdvcmRCcmVhay5p
c05vdE51bGwoKSAmJiBwb3NpdGlvbklzSW5Cb3hCdXROb3RPbkJvdW5kYXJ5KHdvcmRCcmVhaywg
Ym94KSkKLSAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsKLSAgICAKLSAgICBXb3JkQm91bmRhcnlW
ZWN0b3Igb3JkZXJlZFdvcmRCb3VuZGFyaWVzOwotICAgIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3go
Ym94LCBvcmRlcmVkV29yZEJvdW5kYXJpZXMsIGJsb2NrRGlyZWN0aW9uKTsKLSAgICAKLSAgICBp
bnQgaW5kZXggPSBib3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHNtYWxsZXN0T2Zmc2V0
QWJvdmUob2Zmc2V0LCBibG9ja0RpcmVjdGlvbiA9PSBMVFIsIG9yZGVyZWRXb3JkQm91bmRhcmll
cykKLSAgICAgICAgOiBncmVhdGVzdE9mZnNldFVuZGVyKG9mZnNldCwgYmxvY2tEaXJlY3Rpb24g
PT0gUlRMLCBvcmRlcmVkV29yZEJvdW5kYXJpZXMpOwotICAgIGlmIChpbmRleCA+PSAwKQotICAg
ICAgICByZXR1cm4gb3JkZXJlZFdvcmRCb3VuZGFyaWVzW2luZGV4XS52aXNpYmxlUG9zaXRpb247
Ci0gICAgCi0gICAgcmV0dXJuIHJpZ2h0V29yZEJvdW5kYXJ5KHJpZ2h0SW5saW5lQm94KGJveCwg
YmxvY2tEaXJlY3Rpb24pLCBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7Ci19Ci0KLVZp
c2libGVQb3NpdGlvbiBsZWZ0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlz
aWJsZVBvc2l0aW9uKQotewotICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLQotICAgIFZpc2libGVQb3NpdGlvbiBsZWZ0
V29yZEJyZWFrID0gbGVmdFdvcmRQb3NpdGlvbklnbm9yaW5nRWRpdGluZ0JvdW5kYXJ5KHZpc2li
bGVQb3NpdGlvbik7Ci0gICAgbGVmdFdvcmRCcmVhayA9IHZpc2libGVQb3NpdGlvbi5ob25vckVk
aXRpbmdCb3VuZGFyeUF0T3JCZWZvcmUobGVmdFdvcmRCcmVhayk7Ci0gICAgCi0gICAgLy8gRklY
TUU6IEhvdyBzaG91bGQgd2UgaGFuZGxlIGEgbm9uLWVkaXRhYmxlIHBvc2l0aW9uPwotICAgIGlm
IChsZWZ0V29yZEJyZWFrLmlzTnVsbCgpICYmIGlzRWRpdGFibGVQb3NpdGlvbih2aXNpYmxlUG9z
aXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpIHsKLSAgICAgICAgVGV4dERpcmVjdGlvbiBibG9ja0Rp
cmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2sodmlzaWJsZVBvc2l0aW9uLmRlZXBF
cXVpdmFsZW50KCkpOwotICAgICAgICBsZWZ0V29yZEJyZWFrID0gYmxvY2tEaXJlY3Rpb24gPT0g
TFRSID8gc3RhcnRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pIDogZW5kT2ZFZGl0
YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKTsKLSAgICB9Ci0gICAgcmV0dXJuIGxlZnRXb3Jk
QnJlYWs7Ci19Ci0KLVZpc2libGVQb3NpdGlvbiByaWdodFdvcmRQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKLXsKLSAgICBpZiAodmlzaWJsZVBvc2l0aW9u
LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0KLSAgICBWaXNp
YmxlUG9zaXRpb24gcmlnaHRXb3JkQnJlYWsgPSByaWdodFdvcmRQb3NpdGlvbklnbm9yaW5nRWRp
dGluZ0JvdW5kYXJ5KHZpc2libGVQb3NpdGlvbik7Ci0gICAgcmlnaHRXb3JkQnJlYWsgPSB2aXNp
YmxlUG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQmVmb3JlKHJpZ2h0V29yZEJyZWFr
KTsKLQotICAgIC8vIEZJWE1FOiBIb3cgc2hvdWxkIHdlIGhhbmRsZSBhIG5vbi1lZGl0YWJsZSBw
b3NpdGlvbj8KLSAgICBpZiAocmlnaHRXb3JkQnJlYWsuaXNOdWxsKCkgJiYgaXNFZGl0YWJsZVBv
c2l0aW9uKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKSkgewotICAgICAgICBUZXh0
RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayh2aXNp
YmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7Ci0gICAgICAgIHJpZ2h0V29yZEJyZWFrID0g
YmxvY2tEaXJlY3Rpb24gPT0gTFRSID8gZW5kT2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0
aW9uKSA6IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHJpZ2h0V29yZEJyZWFrOwotfQotCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCShyZXZpc2lvbiAxMDY1MDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGlu
dCB0ZXh0QnJlYWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwogICAgIGludCB0
ZXh0QnJlYWtGb2xsb3dpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwogICAgIGJvb2wgaXNU
ZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOworICAgIGJvb2wgaXNXb3JkVGV4dEJy
ZWFrKFRleHRCcmVha0l0ZXJhdG9yKik7CiAKICAgICBjb25zdCBpbnQgVGV4dEJyZWFrRG9uZSA9
IC0xOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJh
dG9ySUNVLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9ySUNVLmNwcAkocmV2aXNpb24gMTA2NTAzKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzNyw2ICsxMzcsMTIgQEAgYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciog
aXRlcgogICAgIHJldHVybiB1YnJrX2lzQm91bmRhcnkocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJ
dGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9zaXRpb24pOwogfQogCitib29sIGlzV29yZFRleHRCcmVh
ayhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCit7CisgICAgaW50IHJ1bGVTdGF0dXMgPSB1
YnJrX2dldFJ1bGVTdGF0dXMocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJh
dG9yKSk7CisgICAgcmV0dXJuIHJ1bGVTdGF0dXMgIT0gVUJSS19XT1JEX05PTkU7Cit9CisKIHN0
YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VXBJdGVyYXRvcldpdGhSdWxlcyhib29sJiBjcmVh
dGVkSXRlcmF0b3IsIFRleHRCcmVha0l0ZXJhdG9yKiYgaXRlcmF0b3IsCiAgICAgY29uc3QgY2hh
ciogYnJlYWtSdWxlcywgY29uc3QgVUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9yR3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJl
YWtJdGVyYXRvckd0ay5jcHAJKHJldmlzaW9uIDEwNjUwMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9yR3RrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzg1LDQgKzM4NSw5IEBAIGJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIGl0
ZXIKICAgICByZXR1cm4gaXRlcmF0b3ItPm1fY2hhckl0ZXJhdG9yLmdldEluZGV4KCkgPT0gaW5k
ZXg7CiB9CiAKK2Jvb2wgaXNXb3JkVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKikKK3sKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L3F0L1RleHRCcmVha0l0ZXJhdG9yUXQuY3BwCShyZXZpc2lvbiAxMDY1
MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3F0L1RleHRCcmVha0l0ZXJhdG9y
UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNCArMTUwLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBib29sIGlzV29yZFRleHRC
cmVhayhUZXh0QnJlYWtJdGVyYXRvciopCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luY2UvVGV4dEJy
ZWFrSXRlcmF0b3JXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC93aW5jZS9UZXh0QnJlYWtJdGVyYXRvcldpbkNFLmNwcAkocmV2aXNpb24gMTA2NTAz
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW5jZS9UZXh0QnJlYWtJdGVyYXRv
cldpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDYgKzMxNywxMSBAQCBib29sIGlzVGV4
dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiwgaW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jv
b2wgaXNXb3JkVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKikKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoY29uc3Qg
VUNoYXIqIHN0cmluZywgaW50IGxlbmd0aCkKIHsKICAgICByZXR1cm4gY2hhcmFjdGVyQnJlYWtJ
dGVyYXRvcihzdHJpbmcsIGxlbmd0aCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDgwMDUpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAx
Mi0wMi0xNiAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXNpbmcg
SUNVIGJyZWFrIGl0ZXJhdG9yIHRvIHNpbXBsaWZ5IHZpc3VhbCB3b3JkIG1vdmVtZW50IGltcGxl
bWVudGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Nzg4NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUtYmxvY2st
cG9zaXRpb25lZC1lbGVtZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVj
dGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktaW5saW5lLWJsb2NrLXBvc2l0aW9uZWQtZWxlbWVu
dC5odG1sOgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxs
eS1tdWx0aS1saW5lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9t
b3ZlLWJ5LXdvcmQtdmlzdWFsbHktbXVsdGktbGluZS5odG1sOgorICAgICAgICAqIGVkaXRpbmcv
c2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1zaW5nbGUtc3BhY2UtaW5saW5lLWVsZW1l
bnQtZXhwZWN0ZWQudHh0OgorCiAyMDEyLTAyLTE2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbnJldmlld2VkIGJhc2VsaW5lIHVw
ZGF0ZSBmb3IgY29tcG9zaXRpbmcvc2Nyb2xsYmFyLXBhaW50aW5nLmh0bWwKSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUtYmxv
Y2stcG9zaXRpb25lZC1lbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktaW5saW5lLWJsb2Nr
LXBvc2l0aW9uZWQtZWxlbWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEwNjUwMykKKysrIExh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUt
YmxvY2stcG9zaXRpb25lZC1lbGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MiwzNyArMiwzNyBAQAogPT09PT09PT0gTW92ZSBCeSBXb3JkID09PT0KIFRlc3QgMSwgTFRSOgog
TW92ZSByaWdodCBieSBvbmUgd29yZAotImJlZ2luIHN0YXJ0IlswLCA2XSwgImFiYyBkZWYiWzAs
IDRdLCAiZW5kIGluZyJbMCwgNF0sICJ0aGlzIGlzIGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMg
Zml4ZWQiWzUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29s
dXRlIlswLCA1LCA4LCAxNl0KKyJiZWdpbiBzdGFydCJbMCwgNl0sICJhYmMgZGVmIlswLCA0XSwg
ImVuZCBpbmciWzAsIDRdLCAidGhpcyBpcyBmbG9hdCJbMCwgNSwgOF0sICJ0aGlzIGlzIGZpeGVk
IlswLCA1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUiWzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0
ZSJbMCwgNSwgOCwgMTZdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJ0aGlzIGlzIGFic29sdXRl
IlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4
ZWQiWzgsIDVdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFi
YyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCisidGhpcyBpcyBhYnNvbHV0ZSJbMTYs
IDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4
LCA1LCAwXSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMg
ZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQogVGVzdCAyLCBMVFI6CiBNb3ZlIHJpZ2h0
IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiJbMCwgNF0sICJlbmQgaW5nIlswLCA0XSwgInRoaXMgaXMg
ZmxvYXQiWzAsIDUsIDhdLCAidGhpcyBpcyBmaXhlZCJbNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZl
IlswLCA1LCA4XSwgInRoaXMgaXMgYWJzb2x1dGUiWzAsIDUsIDgsIDE2XQorImFiYyBkZWYiWzAs
IDRdLCAiZW5kIGluZyJbMCwgNF0sICJ0aGlzIGlzIGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMg
Zml4ZWQiWzAsIDUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFi
c29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJz
b2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBp
cyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBd
LCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRl
IlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4
ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwg
ImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCiBUZXN0IDMsIExUUjoKIE1vdmUg
cmlnaHQgYnkgb25lIHdvcmQKLSJlbmQgaW5nIlswLCA0XSwgInRoaXMgaXMgZmxvYXQiWzAsIDUs
IDhdLCAidGhpcyBpcyBmaXhlZCJbNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4XSwg
InRoaXMgaXMgYWJzb2x1dGUiWzAsIDUsIDgsIDE2XQorImVuZCBpbmciWzAsIDRdLCAidGhpcyBp
cyBmbG9hdCJbMCwgNSwgOF0sICJ0aGlzIGlzIGZpeGVkIlswLCA1LCA4XSwgInRoaXMgaXMgcmVs
YXRpdmUiWzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCiBNb3ZlIGxl
ZnQgYnkgb25lIHdvcmQKLSJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlz
IHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDVdLCAidGhpcyBpcyBmbG9h
dCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3Rh
cnQiWzYsIDBdCisidGhpcyBpcyBhYnNvbHV0ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxh
dGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4LCA1LCAwXSwgInRoaXMgaXMgZmxvYXQi
WzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0
Ils2LCAwXQogVGVzdCA0LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0idGhpcyBpcyBm
bG9hdCJbMCwgNSwgOF0sICJ0aGlzIGlzIGZpeGVkIls1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUi
WzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCisidGhpcyBpcyBmbG9h
dCJbMCwgNSwgOF0sICJ0aGlzIGlzIGZpeGVkIlswLCA1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUi
WzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCiBNb3ZlIGxlZnQgYnkg
b25lIHdvcmQKLSJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0
aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDVdLCAidGhpcyBpcyBmbG9hdCJbOCwg
NSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYs
IDBdCisidGhpcyBpcyBhYnNvbHV0ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJb
OCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4LCA1LCAwXSwgInRoaXMgaXMgZmxvYXQiWzgsIDUs
IDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAw
XQogVGVzdCA1LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCiAidGhpcyBpcyBmaXhlZCJb
MCwgNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4XSwgInRoaXMgaXMgYWJzb2x1dGUi
WzAsIDUsIDgsIDE2XQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0idGhpcyBpcyBhYnNvbHV0ZSJb
MTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVk
Ils4LCA1XSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMg
ZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQorInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4
LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwg
NSwgMF0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRl
ZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KIFRlc3QgNiwgTFRSOgogTW92ZSByaWdodCBi
eSBvbmUgd29yZAogInRoaXMgaXMgcmVsYXRpdmUiWzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0
ZSJbMCwgNSwgOCwgMTZdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJ0aGlzIGlzIGFic29sdXRl
IlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4
ZWQiWzgsIDVdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFi
YyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCisidGhpcyBpcyBhYnNvbHV0ZSJbMTYs
IDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4
LCA1LCAwXSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMg
ZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQogVGVzdCA3LCBMVFI6CiBNb3ZlIHJpZ2h0
IGJ5IG9uZSB3b3JkCiAidGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCiBNb3ZlIGxlZnQg
Ynkgb25lIHdvcmQKLSJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJl
bGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDVdLCAidGhpcyBpcyBmbG9hdCJb
OCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQi
WzYsIDBdCisidGhpcyBpcyBhYnNvbHV0ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2
ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4LCA1LCAwXSwgInRoaXMgaXMgZmxvYXQiWzgs
IDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2
LCAwXQogCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQt
dmlzdWFsbHktaW5saW5lLWJsb2NrLXBvc2l0aW9uZWQtZWxlbWVudC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1p
bmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDEwNjUwMykKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1pbmxp
bmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE3LDM4
ICsxNywzOCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAKIDxkaXYgaWQ9
InRlc3RNb3ZlQnlXb3JkIiBjb250ZW50ZWRpdGFibGUgc3R5bGU9IndpZHRoOjIwMDBweDsgaGVp
Z2h0OjIwMDBweCI+CiA8ZGl2IGlkPSJkXzEiIGRpcj1sdHIgCi10aXRsZT0iW2RfMSwgMF1bZF8x
LCA2XVtkXzIsIDBdW2RfMiwgNF1bZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQs
IDhdW2RfNSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywg
NV1bZF83LCA4XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtk
XzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2Rf
NCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAor
dGl0bGU9IltkXzEsIDBdW2RfMSwgNl1bZF8yLCAwXVtkXzIsIDRdW2RfMywgMF1bZF8zLCA0XVtk
XzQsIDBdW2RfNCwgNV1bZF80LCA4XVtkXzUsIDBdW2RfNSwgNV1bZF81LCA4XVtkXzYsIDBdW2Rf
NiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywgNV1bZF83LCA4XVtkXzcsIDE2XXwKK1tkXzcsIDE2
XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhd
W2RfNSwgNV1bZF81LCAwXVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1b
ZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dv
cmQiPmJlZ2luIHN0YXJ0PC9kaXY+CiAKIDxkaXYgaWQ9ImRfMiIgZGlyPWx0ciAKLXRpdGxlPSJb
ZF8yLCAwXVtkXzIsIDRdW2RfMywgMF1bZF8zLCA0XVtkXzQsIDBdW2RfNCwgNV1bZF80LCA4XVtk
XzUsIDVdW2RfNSwgOF1bZF82LCAwXVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2Rf
NywgOF1bZF83LCAxNl18Ci1bZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4
XVtkXzYsIDVdW2RfNiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBd
W2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKK3RpdGxl
PSJbZF8yLCAwXVtkXzIsIDRdW2RfMywgMF1bZF8zLCA0XVtkXzQsIDBdW2RfNCwgNV1bZF80LCA4
XVtkXzUsIDBdW2RfNSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBd
W2RfNywgNV1bZF83LCA4XVtkXzcsIDE2XXwKK1tkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83
LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF81LCAwXVtkXzQs
IDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwg
Nl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHN0eWxlPSJkaXNwbGF5Omlu
bGluZS1ibG9jayI+YWJjIGRlZjwvZGl2PgogCiA8ZGl2IGlkPSJkXzMiIGRpcj1sdHIgCi10aXRs
ZT0iW2RfMywgMF1bZF8zLCA0XVtkXzQsIDBdW2RfNCwgNV1bZF80LCA4XVtkXzUsIDVdW2RfNSwg
OF1bZF82LCAwXVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAx
Nl18Ci1bZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2Rf
NiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8z
LCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKK3RpdGxlPSJbZF8zLCAwXVtk
XzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2RfNSwgMF1bZF81LCA1XVtkXzUsIDhdW2Rf
NiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAor
W2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBd
W2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1b
ZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21v
dmVfYnlfd29yZCI+ZW5kIGluZzwvZGl2PgogCiA8ZGl2IGlkPSJkXzQiIGRpcj1sdHIgCi10aXRs
ZT0iW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2RfNSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwg
NV1bZF82LCA4XVtkXzcsIDBdW2RfNywgNV1bZF83LCA4XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtk
XzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2Rf
NSwgNV1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8y
LCAwXVtkXzEsIDZdW2RfMSwgMF0iIAordGl0bGU9IltkXzQsIDBdW2RfNCwgNV1bZF80LCA4XVtk
XzUsIDBdW2RfNSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2Rf
NywgNV1bZF83LCA4XVtkXzcsIDE2XXwKK1tkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAw
XVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF81LCAwXVtkXzQsIDhd
W2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1b
ZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHN0eWxlPSJmbG9hdDpsZWZ0Ij50
aGlzIGlzIGZsb2F0PC9kaXY+CiAKIDxkaXYgaWQ9ImRfNSIgZGlyPWx0ciAKIHRpdGxlPSJbZF81
LCAwXVtkXzUsIDVdW2RfNSwgOF1bZF82LCAwXVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcs
IDVdW2RfNywgOF1bZF83LCAxNl18Ci1bZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1b
ZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtk
XzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAK
K1tkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAw
XVtkXzUsIDhdW2RfNSwgNV1bZF81LCAwXVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRd
W2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9t
b3ZlX2J5X3dvcmQiIHN0eWxlPSJwb3NpdGlvbjpmaXhlZDsgdG9wOjMwcHg7IHJpZ2h0OjVweCI+
dGhpcyBpcyBmaXhlZDwvZGl2PgogCiA8ZGl2IGlkPSJkXzYiIGRpcj1sdHIgCiB0aXRsZT0iW2Rf
NiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAot
W2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBd
W2RfNSwgOF1bZF81LCA1XVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1b
ZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCitbZF83LCAxNl1bZF83LCA4XVtkXzcs
IDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNSwg
MF1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAw
XVtkXzEsIDZdW2RfMSwgMF0iIAogY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiBzdHlsZT0icG9z
aXRpb246cmVsYXRpdmU7IGxlZnQ6MjBweCI+dGhpcyBpcyByZWxhdGl2ZTwvZGl2PgogCiA8ZGl2
IGlkPSJkXzciIGRpcj1sdHIgCiB0aXRsZT0iW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywg
MTZdfAotW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtk
XzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2Rf
MywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCitbZF83LCAxNl1bZF83LCA4
XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1bZF81LCA4XVtkXzUsIDVd
W2RfNSwgMF1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1b
ZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAogY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiBzdHls
ZT0icG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MTAwcHg7IHRvcDoxNTBweCI+dGhpcyBpcyBhYnNv
bHV0ZTwvZGl2PgogCiA8L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1saW5lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHkt
bXVsdGktbGluZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEwNjUwMykKKysrIExheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1saW5lLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTEgKzM3LDkgQEAgTW92ZSByaWdodCBieSBv
bmUgd29yZAogIm9wcSByc3QgdXZ3IHh5eiJbMTUsIDExLCA4LCAzLCAwXSwgImFiYyBkZWYgZ2hp
IGprbCBtbiAiWzE2LCAxMSwgOCwgMywgMF0KIFRlc3QgOCwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9u
ZSB3b3JkCi0iYWJjIGRlZiBnaGkgamtsIG1uICJbMCwgMywgOCwgMTEsIDE2LCAxOF0sICJvcHEg
cnN0IHV2dyB4eXoiWzAsIDMsIDgsIDExLCAxNV0gICAgRkFJTCBleHBlY3RlZDogWyJhYmMgZGVm
IGdoaSBqa2wgbW4gIlsgMCwgIDMsICA4LCAgMTEsICAxNiwgXSJvcHEgcnN0IHV2dyB4eXoiWyAw
LCAgMywgIDgsICAxMSwgIDE1XQotImFiYyBkZWYgZ2hpIGprbCBtbiAiWzE2LCAxOF0gICBGQUlM
IGV4cGVjdGVkICJvcHEgcnN0IHV2dyB4eXoiWyAwXQotImFiYyBkZWYgZ2hpIGprbCBtbiAiWzE3
LCAxOF0gICBGQUlMIGV4cGVjdGVkICJvcHEgcnN0IHV2dyB4eXoiWyAwXQorImFiYyBkZWYgZ2hp
IGprbCBtbiAiWzAsIDMsIDgsIDExLCAxNl0sICJvcHEgcnN0IHV2dyB4eXoiWzAsIDMsIDgsIDEx
LCAxNV0KIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJvcHEgcnN0IHV2dyB4eXoiWzE1LCAxMSwg
OCwgMywgMF0sICJhYmMgZGVmIGdoaSBqa2wgbW4gIlsxOCwgMTYsIDExLCA4LCAzLCAwXQorIm9w
cSByc3QgdXZ3IHh5eiJbMTUsIDExLCA4LCAzLCAwXSwgImFiYyBkZWYgZ2hpIGprbCBtbiAiWzE2
LCAxMSwgOCwgMywgMF0KIFRlc3QgOSwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCiAiQUFB
IEFBQSBBQUEgQUFBICJbMCwgNCwgOCwgMTJdLCAiQUFBIEFBQSBBQUEgQUFBIlswLCA0LCA4LCAx
MiwgMTVdCkBAIC01OSwyMyArNTcsMzAgQEAgTW92ZSByaWdodCBieSBvbmUgd29yZAogIkFBQSBr
aiBBQUEgbW4gb3BxIEFBQSBBQUEiWzI1LCAyMiwgMTgsIDE0LCAxMSwgNywgNCwgMF0sICIgYWJj
IGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlszMywgMjksIDI1LCAyMSwgMTcsIDEz
LCA5LCA0LCAxXQogVGVzdCAxMiwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iIGFiYyBk
ZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJbMSwgNCwgOSwgMTMsIDE3LCAyMSwgMjUs
IDI5LCAzMywgMzZdLCAiQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFBQSJbMCwgNCwgNywgMTEsIDE0
LCAxOCwgMjIsIDI1XSAgICBGQUlMIGV4cGVjdGVkOiBbIiBhYmMgZGVmIEFBQSBBQUEgaGlqIEFB
QSBBQUEgdXZ3IHh5eiAiWyAxLCAgNCwgIDksICAxMywgIDE3LCAgMjEsICAyNSwgIDI5LCAgMzMs
IF0iQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFBQSJbIDAsICA0LCAgNywgIDExLCAgMTQsICAxOCwg
IDIyLCAgMjVdCi0iIGFiYyBkZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJbMzMsIDM2
XSAgIEZBSUwgZXhwZWN0ZWQgIkFBQSBraiBBQUEgbW4gb3BxIEFBQSBBQUEiWyAwXQotIiBhYmMg
ZGVmIEFBQSBBQUEgaGlqIEFBQSBBQUEgdXZ3IHh5eiAiWzM1LCAzNl0gICBGQUlMIGV4cGVjdGVk
ICJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlsgMF0KLSIgYWJjIGRlZiBBQUEgQUFBIGhpaiBB
QUEgQUFBIHV2dyB4eXogIlszNCwgMzZdICAgRkFJTCBleHBlY3RlZCAiQUFBIGtqIEFBQSBtbiBv
cHEgQUFBIEFBQSJbIDBdCisiIGFiYyBkZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJb
MSwgNCwgOSwgMTMsIDE3LCAyMSwgMjUsIDI5LCAzM10sICJBQUEga2ogQUFBIG1uIG9wcSBBQUEg
QUFBIlswLCA0LCA3LCAxMSwgMTQsIDE4LCAyMiwgMjVdCiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3Jk
Ci0iQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFBQSJbMjUsIDIyLCAxOCwgMTQsIDExLCA3LCA0LCAw
XSwgIiBhYmMgZGVmIEFBQSBBQUEgaGlqIEFBQSBBQUEgdXZ3IHh5eiAiWzM2LCAzMywgMjksIDI1
LCAyMSwgMTcsIDEzLCA5LCA0LCAxXQorIkFBQSBraiBBQUEgbW4gb3BxIEFBQSBBQUEiWzI1LCAy
MiwgMTgsIDE0LCAxMSwgNywgNCwgMF0sICIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2
dyB4eXogIlszMywgMjksIDI1LCAyMSwgMTcsIDEzLCA5LCA0LCAxXQogVGVzdCAxMywgTFRSOgog
TW92ZSByaWdodCBieSBvbmUgd29yZAotImFiYyBkZWYgIlswLCA0XQorImFiYyBkZWYgZ2hpIGpr
bCBtbiAiWzAsIDQsIDgsIDEyLCAxNl0sICJvcHEgcnN0IHV2dyB4eXoiWzAsIDQsIDgsIDEyLCAx
NV0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotIiBoaWogb3BxIls4LCA1LCAxXQorIm9wcSByc3Qg
dXZ3IHh5eiJbMTUsIDEyLCA4LCA0LCAwXSwgImFiYyBkZWYgZ2hpIGprbCBtbiAiWzE2LCAxMiwg
OCwgNCwgMF0KIFRlc3QgMTQsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJhYmMgZGVm
IGdoaSBqa2wgbW4gIlswLCA0LCA4LCAxMiwgMTYsIDE4XQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3Jk
CisiYWJjIGRlZiBnaGkgamtsIG1uICJbMTgsIDE2LCAxMiwgOCwgNCwgMF0KK1Rlc3QgMTUsIExU
UjoKK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJhYmMgZGVmICJbMCwgNCwgOF0KK01vdmUgbGVm
dCBieSBvbmUgd29yZAorIiBoaWogb3BxIls4LCA1LCAxXQorVGVzdCAxNiwgTFRSOgorTW92ZSBy
aWdodCBieSBvbmUgd29yZAogPERJVj5bMF0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAogPERJVj5b
MF0KLVRlc3QgMTUsIExUUjoKK1Rlc3QgMTcsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQK
ICJcbjAwIlszXQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktbXVsdGktbGluZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1
YWxseS1tdWx0aS1saW5lLmh0bWwJKHJldmlzaW9uIDEwNjUwMykKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1saW5lLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgd2hlcmUgY2hpbGRfbm9kZV9pbmRleCBpcyBv
cHRpb25hbCwgZGVmYQogCiA8ZGl2IGNvbnRlbnRlZGl0YWJsZSBkaXI9cnRsIGlkPSJtbF83IiBj
bGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQgZml4X3dpZHRoIiB0aXRsZT0iW21sXzcsIDE1LCA1XVtt
bF83LCAxMSwgNV1bbWxfNywgOCwgNV1bbWxfNywgMywgNV1bbWxfNywgMCwgNV1bbWxfNywgMTZd
W21sXzcsIDExXVttbF83LCA4XVttbF83LCAzXVttbF83LCAwXXxbbWxfNywgMF1bbWxfNywgM11b
bWxfNywgOF1bbWxfNywgMTFdW21sXzcsIDE2XVttbF83LCAwLCA1XVttbF83LCAzLCA1XVttbF83
LCA4LCA1XVttbF83LCAxMSwgNV1bbWxfNywgMTUsIDVdIj5hYmMgZGVmIGdoaSBqa2wgbW4gPGJy
Lz48YnIvPjxici8+b3BxIHJzdCB1dncgeHl6PC9kaXY+CiAKLTxkaXYgY29udGVudGVkaXRhYmxl
IGRpcj1ydGwgaWQ9Im1sXzgiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRp
dGxlPSJbbWxfOCwgMTUsIDVdW21sXzgsIDExLCA1XVttbF84LCA4LCA1XVttbF84LCAzLCA1XVtt
bF84LCAwLCA1XVttbF84LCAxOF1bbWxfOCwgMTZdW21sXzgsIDExXVttbF84LCA4XVttbF84LCAz
XVttbF84LCAwXXxbbWxfOCwgMF1bbWxfOCwgM11bbWxfOCwgOF1bbWxfOCwgMTFdW21sXzgsIDE2
XVttbF84LCAwLCA1XVttbF84LCAzLCA1XVttbF84LCA4LCA1XVttbF84LCAxMSwgNV1bbWxfOCwg
MTUsIDVdIj5hYmMgZGVmIGdoaSBqa2wgbW4gPGRpdj48YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rp
dj48ZGl2Pjxici8+PC9kaXY+b3BxIHJzdCB1dncgeHl6PC9kaXY+Cis8ZGl2IGNvbnRlbnRlZGl0
YWJsZSBkaXI9cnRsIGlkPSJtbF84IiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQgZml4X3dpZHRo
IiB0aXRsZT0iW21sXzgsIDE1LCA1XVttbF84LCAxMSwgNV1bbWxfOCwgOCwgNV1bbWxfOCwgMywg
NV1bbWxfOCwgMCwgNV1bbWxfOCwgMTZdW21sXzgsIDExXVttbF84LCA4XVttbF84LCAzXVttbF84
LCAwXXxbbWxfOCwgMF1bbWxfOCwgM11bbWxfOCwgOF1bbWxfOCwgMTFdW21sXzgsIDE2XVttbF84
LCAwLCA1XVttbF84LCAzLCA1XVttbF84LCA4LCA1XVttbF84LCAxMSwgNV1bbWxfOCwgMTUsIDVd
Ij5hYmMgZGVmIGdoaSBqa2wgbW4gPGRpdj48YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rpdj48ZGl2
Pjxici8+PC9kaXY+b3BxIHJzdCB1dncgeHl6PC9kaXY+CiAKIDxkaXYgY29udGVudGVkaXRhYmxl
IGRpcj1ydGwgaWQ9Im1sXzkiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRp
dGxlPSJbbWxfOSwgMTUsIDVdW21sXzksIDEyLCA1XVttbF85LCA4LCA1XVttbF85LCA0LCA1XVtt
bF85LCAwLCA1XVttbF85LCAxMl1bbWxfOSwgOF1bbWxfOSwgNF1bbWxfOSwgMF18W21sXzksIDBd
W21sXzksIDRdW21sXzksIDhdW21sXzksIDEyXVttbF85LCAwLCA1XVttbF85LCA0LCA1XVttbF85
LCA4LCA1XVttbF85LCAxMiwgNV1bbWxfOSwgMTUsIDVdIj7XkNeQ15Ag15DXkNeQINeQ15DXkCDX
kNeQ15AgPGJyLz48YnIvPjxici8+15DXkNeQINeQ15DXkCDXkNeQ15Ag15DXkNeQPC9kaXY+CiAK
QEAgLTY1LDExICs2NSwxNSBAQCB3aGVyZSBjaGlsZF9ub2RlX2luZGV4IGlzIG9wdGlvbmFsLCBk
ZWZhCiAiPiBhYmMgZGVmINeQ15DXkCDXkNeQ15AgaGlqINeQ15DXkCDXkNeQ15AgdXZ3IHh5eiA8
YnIvPjxici8+PGJyLz7XkNeQ15Aga2og15DXkNeQIG1uIG9wcSDXkNeQ15Ag15DXkNeQPC9kaXY+
CiAKIDxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1ydGwgaWQ9Im1sXzEyIiBjbGFzcz0idGVzdF9t
b3ZlX2J5X3dvcmQgZml4X3dpZHRoIiB0aXRsZT0iCi1bbWxfMTIsIDI1LCA1XVttbF8xMiwgMjIs
IDVdW21sXzEyLCAxOCwgNV1bbWxfMTIsIDE0LCA1XVttbF8xMiwgMTEsIDVdW21sXzEyLCA3LCA1
XVttbF8xMiwgNCwgNV1bbWxfMTIsIDAsIDVdW21sXzEyLCAzNl1bbWxfMTIsIDMzXVttbF8xMiwg
MjldW21sXzEyLCAyNV1bbWxfMTIsIDIxXVttbF8xMiwgMTddW21sXzEyLCAxM11bbWxfMTIsIDld
W21sXzEyLCA0XVttbF8xMiwgMV18W21sXzEyLCAxXVttbF8xMiwgNF1bbWxfMTIsIDldW21sXzEy
LCAxM11bbWxfMTIsIDE3XVttbF8xMiwgMjFdW21sXzEyLCAyNV1bbWxfMTIsIDI5XVttbF8xMiwg
MzNdW21sXzEyLCAwLCA1XVttbF8xMiwgNCwgNV1bbWxfMTIsIDcsIDVdW21sXzEyLCAxMSwgNV1b
bWxfMTIsIDE0LCA1XVttbF8xMiwgMTgsIDVdW21sXzEyLCAyMiwgNV1bbWxfMTIsIDI1LCA1XQor
W21sXzEyLCAyNSwgNV1bbWxfMTIsIDIyLCA1XVttbF8xMiwgMTgsIDVdW21sXzEyLCAxNCwgNV1b
bWxfMTIsIDExLCA1XVttbF8xMiwgNywgNV1bbWxfMTIsIDQsIDVdW21sXzEyLCAwLCA1XVttbF8x
MiwgMzNdW21sXzEyLCAyOV1bbWxfMTIsIDI1XVttbF8xMiwgMjFdW21sXzEyLCAxN11bbWxfMTIs
IDEzXVttbF8xMiwgOV1bbWxfMTIsIDRdW21sXzEyLCAxXXxbbWxfMTIsIDFdW21sXzEyLCA0XVtt
bF8xMiwgOV1bbWxfMTIsIDEzXVttbF8xMiwgMTddW21sXzEyLCAyMV1bbWxfMTIsIDI1XVttbF8x
MiwgMjldW21sXzEyLCAzM11bbWxfMTIsIDAsIDVdW21sXzEyLCA0LCA1XVttbF8xMiwgNywgNV1b
bWxfMTIsIDExLCA1XVttbF8xMiwgMTQsIDVdW21sXzEyLCAxOCwgNV1bbWxfMTIsIDIyLCA1XVtt
bF8xMiwgMjUsIDVdCiAiPiBhYmMgZGVmINeQ15DXkCDXkNeQ15AgaGlqINeQ15DXkCDXkNeQ15Ag
dXZ3IHh5eiA8ZGl2Pjxici8+PC9kaXY+PGRpdj48YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rpdj7X
kNeQ15Aga2og15DXkNeQIG1uIG9wcSDXkNeQ15Ag15DXkNeQPC9kaXY+CiAKKzxkaXYgY29udGVu
dGVkaXRhYmxlIGRpcj1sdHIgaWQ9Im1sXzEzIiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQgZml4
X3dpZHRoIiB0aXRsZT0iW21sXzEzLCAwXVttbF8xMywgNF1bbWxfMTMsIDhdW21sXzEzLCAxMl1b
bWxfMTMsIDE2XVttbF8xMywgMCwgNV1bbWxfMTMsIDQsIDVdW21sXzEzLCA4LCA1XVttbF8xMywg
MTIsIDVdW21sXzEzLCAxNSwgNV18W21sXzEzLCAxNSwgNV1bbWxfMTMsIDEyLCA1XVttbF8xMywg
OCwgNV1bbWxfMTMsIDQsIDVdW21sXzEzLCAwLCA1XVttbF8xMywgMTZdW21sXzEzLCAxMl1bbWxf
MTMsIDhdW21sXzEzLCA0XVttbF8xMywgMF0iPmFiYyBkZWYgZ2hpIGprbCBtbiA8ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj5vcHEgcnN0IHV2dyB4eXo8L2Rpdj4KKworPGRpdiBjb250
ZW50ZWRpdGFibGUgZGlyPWx0ciBpZD0ibWxfMTQiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBm
aXhfd2lkdGgiIHRpdGxlPSJbbWxfMTQsIDBdW21sXzE0LCA0XVttbF8xNCwgOF1bbWxfMTQsIDEy
XVttbF8xNCwgMTZdW21sXzE0LCAxOF18W21sXzE0LCAxOF1bbWxfMTQsIDE2XVttbF8xNCwgMTJd
W21sXzE0LCA4XVttbF8xNCwgNF1bbWxfMTQsIDBdIj5hYmMgZGVmIGdoaSBqa2wgbW4gPGRpdj48
L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PC9kaXY+CisKIDwhLS0gbWl4ZWQgZWRpdGFiaWxp
dHkgLS0+Ci08ZGl2IGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCA0
fDggNSAxIj5hYmMgZGVmIDxzcGFuIGNvbnRlbnRlZGl0YWJsZT4gaW5zaWRlIHNwYW4gPC9zcGFu
PiBoaWogb3BxPC9kaXY+Cis8ZGl2IGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0
aXRsZT0iMCA0IDh8OCA1IDEiPmFiYyBkZWYgPHNwYW4gY29udGVudGVkaXRhYmxlPiBpbnNpZGUg
c3BhbiA8L3NwYW4+IGhpaiBvcHE8L2Rpdj4KIAogPGRpdiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dv
cmQiIGNvbnRlbnRlZGl0YWJsZSBkaXI9bHRyIHRpdGxlPSIwfDAiPjwvZGl2PgogCkluZGV4OiBM
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xl
LXNwYWNlLWlubGluZS1lbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNl
LWlubGluZS1lbGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA2NTAzKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXNpbmdsZS1zcGFj
ZS1pbmxpbmUtZWxlbWVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3LDMwICsx
NywxNCBAQCBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKICIgcnN0IHV2dyJbOCwgNSwgMV0sICJoaWog
b3BxIls0XSwgImFiYyBkZWYgIls4LCA0LCAwXQogVGVzdCA0LCBSVEw6CiBNb3ZlIGxlZnQgYnkg
b25lIHdvcmQKLSJhYmMgZGVmICJbMF0sICIgcnN0IHV2dyJbNF0sICJoaWogb3BxIlszXSwgImFi
YyBkZWYgIls3LCAzXSwgIiByc3QgdXZ3Ils4XSAgICBGQUlMIGV4cGVjdGVkOiBbImFiYyBkZWYg
IlsgMCwgXSIgcnN0IHV2dyJbIDQsIF0iaGlqIG9wcSJbIDcsICAzLCBdImFiYyBkZWYgIlsgNywg
IDMsIF0iIHJzdCB1dnciWyA4XQotIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzNdICAgRkFJTCBl
eHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iIHJzdCB1dnciWzNdLCAiaGlqIG9wcSJbM10gICBGQUlM
IGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSIgcnN0IHV2dyJbMl0sICJoaWogb3BxIlszXSAgIEZB
SUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotIiByc3QgdXZ3IlsxXSwgImhpaiBvcHEiWzNdICAg
RkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi1Nb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iIHJz
dCB1dnciWzhdLCAiYWJjIGRlZiAiWzMsIDddLCAiaGlqIG9wcSJbM10sICIgcnN0IHV2dyJbNF0s
ICJhYmMgZGVmICJbMF0gICAgRkFJTCBleHBlY3RlZDogWyIgcnN0IHV2dyJbIDgsIF0iYWJjIGRl
ZiAiWyAzLCAgNywgXSJoaWogb3BxIlsgMywgIDcsIF0iIHJzdCB1dnciWyA0LCBdImFiYyBkZWYg
IlsgMF0KLSJoaWogb3BxIlszXSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBv
cHEiWyA3XQotImhpaiBvcHEiWzRdLCAiIHJzdCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAiaGlq
IG9wcSJbIDddCi0iaGlqIG9wcSJbNV0sICIgcnN0IHV2dyJbNF0gICBGQUlMIGV4cGVjdGVkICJo
aWogb3BxIlsgN10KLSJoaWogb3BxIls2XSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQg
ImhpaiBvcHEiWyA3XQorImFiYyBkZWYgIlswXSwgIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzcs
IDNdLCAiYWJjIGRlZiAiWzcsIDNdLCAiIHJzdCB1dnciWzhdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3
b3JkCisiIHJzdCB1dnciWzhdLCAiYWJjIGRlZiAiWzMsIDddLCAiaGlqIG9wcSJbMywgN10sICIg
cnN0IHV2dyJbNF0sICJhYmMgZGVmICJbMF0KIFRlc3QgNSwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9u
ZSB3b3JkCi0iYWJjIGRlZiAiWzBdLCAiIHJzdCB1dnciWzRdLCAiaGlqIG9wcSJbM10sICJhYmMg
ZGVmICJbNywgM10sICIgcnN0IHV2dyJbOF0gICAgRkFJTCBleHBlY3RlZDogWyJhYmMgZGVmICJb
IDAsIF0iIHJzdCB1dnciWyA0LCBdImhpaiBvcHEiWyA3LCAgMywgXSJhYmMgZGVmICJbIDcsICAz
LCBdIiByc3QgdXZ3IlsgOF0KLSIgcnN0IHV2dyJbNF0sICJoaWogb3BxIlszXSAgIEZBSUwgZXhw
ZWN0ZWQgImhpaiBvcHEiWyA3XQotIiByc3QgdXZ3IlszXSwgImhpaiBvcHEiWzNdICAgRkFJTCBl
eHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iIHJzdCB1dnciWzJdLCAiaGlqIG9wcSJbM10gICBGQUlM
IGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSIgcnN0IHV2dyJbMV0sICJoaWogb3BxIlszXSAgIEZB
SUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotTW92ZSByaWdodCBieSBvbmUgd29yZAotIiByc3Qg
dXZ3Ils4XSwgImFiYyBkZWYgIlszLCA3XSwgImhpaiBvcHEiWzNdLCAiIHJzdCB1dnciWzRdLCAi
YWJjIGRlZiAiWzBdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiIHJzdCB1dnciWyA4LCBdImFiYyBkZWYg
IlsgMywgIDcsIF0iaGlqIG9wcSJbIDMsICA3LCBdIiByc3QgdXZ3IlsgNCwgXSJhYmMgZGVmICJb
IDBdCi0iaGlqIG9wcSJbM10sICIgcnN0IHV2dyJbNF0gICBGQUlMIGV4cGVjdGVkICJoaWogb3Bx
IlsgN10KLSJoaWogb3BxIls0XSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBv
cHEiWyA3XQotImhpaiBvcHEiWzVdLCAiIHJzdCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAiaGlq
IG9wcSJbIDddCi0iaGlqIG9wcSJbNl0sICIgcnN0IHV2dyJbNF0gICBGQUlMIGV4cGVjdGVkICJo
aWogb3BxIlsgN10KKyJhYmMgZGVmICJbMF0sICIgcnN0IHV2dyJbNF0sICJoaWogb3BxIls3LCAz
XSwgImFiYyBkZWYgIls3LCAzXSwgIiByc3QgdXZ3Ils4XQorTW92ZSByaWdodCBieSBvbmUgd29y
ZAorIiByc3QgdXZ3Ils4XSwgImFiYyBkZWYgIlszLCA3XSwgImhpaiBvcHEiWzMsIDddLCAiIHJz
dCB1dnciWzRdLCAiYWJjIGRlZiAiWzBdCiBUZXN0IDYsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25l
IHdvcmQKICJhYmMgZGVmICJbMCwgNCwgOF0sICJoaWogb3BxIls0XSwgIiByc3QgdXZ3IlsxLCA1
LCA4XQpAQCAtNjgsOSArNTIsMTcgQEAgTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCiAiRkZaIExJRyJb
N10sICJBQkQgRFNVICJbMywgN10sICJFSkggRlVYIlszXSwgIkZGWiBMSUciWzNdLCAiQUJEIERT
VSAiWzBdCiBUZXN0IDExLCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJBQkQgRFNVICJb
MCwgNCwgOF0sICJhYmMgZGVmIlszXSwgIkZGWiBMSUciWzQsIDddCi1Nb3ZlIHJpZ2h0IGJ5IG9u
ZSB3b3JkCi0iRkZaIExJRyJbNywgNF0sICJhYmMgZGVmIlszXSwgIkFCRCBEU1UgIls4LCA0LCAw
XQorIkFCRCBEU1UgIlswLCA0XSwgImFiYyBkZWYiWzNdLCAiRkZaIExJRyJbNCwgN10gICAgRkFJ
TCBleHBlY3RlZDogWyJBQkQgRFNVICJbIDAsICA0LCAgOCwgXSJhYmMgZGVmIlsgMywgXSJGRlog
TElHIlsgNCwgIDddCisiQUJEIERTVSAiWzRdLCAiYWJjIGRlZiJbM10gICBGQUlMIGV4cGVjdGVk
ICJBQkQgRFNVICJbIDhdCisiQUJEIERTVSAiWzVdLCAiYWJjIGRlZiJbM10gICBGQUlMIGV4cGVj
dGVkICJBQkQgRFNVICJbIDhdCisiQUJEIERTVSAiWzZdLCAiYWJjIGRlZiJbM10gICBGQUlMIGV4
cGVjdGVkICJBQkQgRFNVICJbIDhdCisiQUJEIERTVSAiWzddLCAiYWJjIGRlZiJbM10gICBGQUlM
IGV4cGVjdGVkICJBQkQgRFNVICJbIDhdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiRkZaIExJ
RyJbNywgNF0sICJhYmMgZGVmIlszXSwgIkFCRCBEU1UgIls0LCAwXSAgICBGQUlMIGV4cGVjdGVk
OiBbIkZGWiBMSUciWyA3LCAgNCwgXSJhYmMgZGVmIlsgMywgXSJBQkQgRFNVICJbIDgsICA0LCAg
MF0KKyJhYmMgZGVmIlszXSwgIkFCRCBEU1UgIls0XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBEU1Ug
IlsgOF0KKyJhYmMgZGVmIls0XSwgIkFCRCBEU1UgIls0XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBE
U1UgIlsgOF0KKyJhYmMgZGVmIls1XSwgIkFCRCBEU1UgIls0XSAgIEZBSUwgZXhwZWN0ZWQgIkFC
RCBEU1UgIlsgOF0KKyJhYmMgZGVmIls2XSwgIkFCRCBEU1UgIls0XSAgIEZBSUwgZXhwZWN0ZWQg
IkFCRCBEU1UgIlsgOF0KIFRlc3QgMTIsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKICJB
QkQgRFNVICJbMF0sICJGRlogTElHIlszXSwgIkFCRCBEU1UgIls4XSwgImFiYyBkZWYiWzRdLCAi
QUJEIERTVSAiWzcsIDNdLCAiRkZaIExJRyJbN10KQEAgLTc4LDUyICs3MCw2NyBAQCBNb3ZlIGxl
ZnQgYnkgb25lIHdvcmQKICJGRlogTElHIls3XSwgIkFCRCBEU1UgIlszLCA3XSwgImFiYyBkZWYi
WzRdLCAiQUJEIERTVSAiWzhdLCAiRkZaIExJRyJbM10sICJBQkQgRFNVICJbMF0KIFRlc3QgMTMs
IFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotIkFCRCBEU1UgIlswLCA0LCA4XSwgImFiYyBk
ZWYiWzNdLCAiRkZaIExJRyJbNCwgN10KLU1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJGRlogTElH
Ils3LCA0XSwgImFiYyBkZWYiWzNdLCAiQUJEIERTVSAiWzgsIDQsIDBdCisiQUJEIERTVSAiWzAs
IDRdLCAiYWJjIGRlZiJbM10sICJGRlogTElHIls0LCA3XSAgICBGQUlMIGV4cGVjdGVkOiBbIkFC
RCBEU1UgIlsgMCwgIDQsICA4LCBdImFiYyBkZWYiWyAzLCBdIkZGWiBMSUciWyA0LCAgN10KKyJB
QkQgRFNVICJbNF0sICJhYmMgZGVmIlszXSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBEU1UgIlsgOF0K
KyJBQkQgRFNVICJbNV0sICJhYmMgZGVmIlszXSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBEU1UgIlsg
OF0KKyJBQkQgRFNVICJbNl0sICJhYmMgZGVmIlszXSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBEU1Ug
IlsgOF0KKyJBQkQgRFNVICJbN10sICJhYmMgZGVmIlszXSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBE
U1UgIlsgOF0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJGRlogTElHIls3LCA0XSwgImFiYyBk
ZWYiWzNdLCAiQUJEIERTVSAiWzQsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIExJRyJbIDcs
ICA0LCBdImFiYyBkZWYiWyAzLCBdIkFCRCBEU1UgIlsgOCwgIDQsICAwXQorImFiYyBkZWYiWzNd
LCAiQUJEIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJEIERTVSAiWyA4XQorImFiYyBkZWYi
WzRdLCAiQUJEIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJEIERTVSAiWyA4XQorImFiYyBk
ZWYiWzVdLCAiQUJEIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJEIERTVSAiWyA4XQorImFi
YyBkZWYiWzZdLCAiQUJEIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJEIERTVSAiWyA4XQog
VGVzdCAxNCwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAotIkFCRCBEU1UgIlswLCAzLCA4
XSwgImFiYyBkZWYiWzRdLCAiRkZaIExJRyJbMywgN10KLU1vdmUgbGVmdCBieSBvbmUgd29yZAot
IkZGWiBMSUciWzcsIDNdLCAiYWJjIGRlZiJbNF0sICJBQkQgRFNVICJbOCwgMywgMF0KKyJBQkQg
RFNVICJbMCwgMywgOF0sICJhYmMgZGVmIls0LCA3XSwgIkZGWiBMSUciWzMsIDddICAgIEZBSUwg
ZXhwZWN0ZWQ6IFsiQUJEIERTVSAiWyAwLCAgMywgIDgsIF0iYWJjIGRlZiJbIDQsIF0iRkZaIExJ
RyJbIDMsICA3XQorImFiYyBkZWYiWzQsIDddICAgRkFJTCBleHBlY3RlZCAiRkZaIExJRyJbIDNd
CisiYWJjIGRlZiJbNSwgN10gICBGQUlMIGV4cGVjdGVkICJGRlogTElHIlsgM10KKyJhYmMgZGVm
Ils2LCA3XSAgIEZBSUwgZXhwZWN0ZWQgIkZGWiBMSUciWyAzXQorTW92ZSBsZWZ0IGJ5IG9uZSB3
b3JkCisiRkZaIExJRyJbNywgM10sICJhYmMgZGVmIls3LCA0XSwgIkFCRCBEU1UgIls4LCAzLCAw
XSAgICBGQUlMIGV4cGVjdGVkOiBbIkZGWiBMSUciWyA3LCAgMywgXSJhYmMgZGVmIlsgNCwgXSJB
QkQgRFNVICJbIDgsICAzLCAgMF0KKyJGRlogTElHIlszXSwgImFiYyBkZWYiWzddICAgRkFJTCBl
eHBlY3RlZCAiYWJjIGRlZiJbIDRdCisiRkZaIExJRyJbNF0sICJhYmMgZGVmIls3XSAgIEZBSUwg
ZXhwZWN0ZWQgImFiYyBkZWYiWyA0XQorIkZGWiBMSUciWzVdLCAiYWJjIGRlZiJbN10gICBGQUlM
IGV4cGVjdGVkICJhYmMgZGVmIlsgNF0KKyJGRlogTElHIls2XSwgImFiYyBkZWYiWzddICAgRkFJ
TCBleHBlY3RlZCAiYWJjIGRlZiJbIDRdCiBUZXN0IDE1LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25l
IHdvcmQKLSJBQkQgb3BxIERTVSAiWzAsIDQsIDgsIDEyXSwgImFiYyBBQUEgZGVmIls4LCA0LCAz
XSwgIkZGWiByc3QgTElHIls0LCA4LCAxMV0gICAgRkFJTCBleHBlY3RlZDogWyJBQkQgb3BxIERT
VSAiWyAwLCAgNCwgIDgsICAxMiwgXSJhYmMgQUFBIGRlZiJbIDQsICAzLCBdIkZGWiByc3QgTElH
IlsgNCwgIDgsICAxMV0KLSJBQkQgb3BxIERTVSAiWzEyXSwgImFiYyBBQUEgZGVmIls4XSAgIEZB
SUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgNF0KLSJhYmMgQUFBIGRlZiJbMTAsIDhdICAgRkFJ
TCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA0XQotImFiYyBBQUEgZGVmIls5LCA4XSAgIEZBSUwg
ZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgNF0KKyJBQkQgb3BxIERTVSAiWzAsIDQsIDgsIDEyXSwg
ImFiYyBBQUEgZGVmIls0LCAzXSwgIkZGWiByc3QgTElHIls0LCA4LCAxMV0KIE1vdmUgcmlnaHQg
Ynkgb25lIHdvcmQKLSJGRlogcnN0IExJRyJbMTEsIDgsIDRdLCAiYWJjIEFBQSBkZWYiWzMsIDQs
IDhdLCAiQUJEIG9wcSBEU1UgIlsxMiwgOCwgNCwgMF0gICAgRkFJTCBleHBlY3RlZDogWyJGRlog
cnN0IExJRyJbIDExLCAgOCwgIDQsIF0iYWJjIEFBQSBkZWYiWyAzLCAgNCwgXSJBQkQgb3BxIERT
VSAiWyAxMiwgIDgsICA0LCAgMF0KLSJhYmMgQUFBIGRlZiJbNCwgOF0gICBGQUlMIGV4cGVjdGVk
ICJBQkQgb3BxIERTVSAiWyAxMl0KKyJGRlogcnN0IExJRyJbMTEsIDgsIDRdLCAiYWJjIEFBQSBk
ZWYiWzMsIDRdLCAiQUJEIG9wcSBEU1UgIlsxMiwgOCwgNCwgMF0KIFRlc3QgMTYsIExUUjoKIE1v
dmUgcmlnaHQgYnkgb25lIHdvcmQKLSJBQkQgb3BxIERTVSAiWzAsIDRdLCAiYWJjIEFBQSBkZWYi
WzgsIDRdLCAiQUJEIG9wcSBEU1UgIlsxMiwgMTFdLCAiRkZaIHJzdCBMSUciWzQsIDgsIDExXSAg
ICBGQUlMIGV4cGVjdGVkOiBbIkFCRCBvcHEgRFNVICJbIDAsICA0LCAgOCwgXSJhYmMgQUFBIGRl
ZiJbIDgsICA3LCBdIkFCRCBvcHEgRFNVICJbIDEyLCAgMTEsIF0iRkZaIHJzdCBMSUciWyA0LCAg
OCwgIDExXQotIkFCRCBvcHEgRFNVICJbNF0sICJhYmMgQUFBIGRlZiJbOF0gICBGQUlMIGV4cGVj
dGVkICJBQkQgb3BxIERTVSAiWyA4XQotIkFCRCBvcHEgRFNVICJbNV0sICJhYmMgQUFBIGRlZiJb
OF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyA4XQotIkFCRCBvcHEgRFNVICJbNl0s
ICJhYmMgQUFBIGRlZiJbOF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyA4XQotIkFC
RCBvcHEgRFNVICJbN10sICJhYmMgQUFBIGRlZiJbOF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3Bx
IERTVSAiWyA4XQotImFiYyBBQUEgZGVmIls4LCA0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEg
ZGVmIlsgN10KLSJhYmMgQUFBIGRlZiJbOSwgNF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRl
ZiJbIDddCi0iYWJjIEFBQSBkZWYiWzEwLCA0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVm
IlsgN10KLSJhYmMgQUFBIGRlZiJbMTEsIDRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYi
WyA3XQotImFiYyBBQUEgZGVmIls3LCA0XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJb
IDEyXQotImFiYyBBQUEgZGVmIls2LCA0XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJb
IDEyXQotImFiYyBBQUEgZGVmIls1LCA0XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJb
IDEyXQotTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iRkZaIHJzdCBMSUciWzExLCA4LCA0XSwgIkFC
RCBvcHEgRFNVICJbMTEsIDEyXSwgImFiYyBBQUEgZGVmIls3LCA4XSwgIkFCRCBvcHEgRFNVICJb
NCwgMF0gICAgRkFJTCBleHBlY3RlZDogWyJGRlogcnN0IExJRyJbIDExLCAgOCwgIDQsIF0iQUJE
IG9wcSBEU1UgIlsgMTEsICAxMiwgXSJhYmMgQUFBIGRlZiJbIDcsICA4LCBdIkFCRCBvcHEgRFNV
ICJbIDgsICA0LCAgMF0KLSJhYmMgQUFBIGRlZiJbOF0sICJBQkQgb3BxIERTVSAiWzRdICAgRkFJ
TCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgOF0KLSJGRlogcnN0IExJRyJbMV0sICJBQkQgb3Bx
IERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgOF0KLSJGRlogcnN0IExJ
RyJbMl0sICJBQkQgb3BxIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsg
OF0KKyJBQkQgb3BxIERTVSAiWzAsIDQsIDhdLCAiYWJjIEFBQSBkZWYiWzgsIDddLCAiQUJEIG9w
cSBEU1UgIlsxMiwgMTFdLCAiRkZaIHJzdCBMSUciWzQsIDgsIDExXQorTW92ZSBsZWZ0IGJ5IG9u
ZSB3b3JkCisiRkZaIHJzdCBMSUciWzExLCA4LCA0XSwgIkFCRCBvcHEgRFNVICJbMTEsIDEyXSwg
ImFiYyBBQUEgZGVmIls3LCA4XSwgIkFCRCBvcHEgRFNVICJbOCwgNCwgMF0KIFRlc3QgMTcsIFJU
TDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotIkFCRCBvcHEgRFNVICJbMCwgNCwgOCwgMTJdLCAi
YWJjIEFBQSBkZWYiWzQsIDhdLCAiRkZaIHJzdCBMSUciWzQsIDgsIDExXQotTW92ZSByaWdodCBi
eSBvbmUgd29yZAotIkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJhYmMgQUFBIGRlZiJbOCwgNF0s
ICJBQkQgb3BxIERTVSAiWzEyLCA4LCA0LCAwXQorIkFCRCBvcHEgRFNVICJbMCwgNCwgOCwgMTJd
LCAiYWJjIEFBQSBkZWYiWzRdLCAiRkZaIHJzdCBMSUciWzQsIDgsIDExXSAgICBGQUlMIGV4cGVj
dGVkOiBbIkFCRCBvcHEgRFNVICJbIDAsICA0LCAgOCwgIDEyLCBdImFiYyBBQUEgZGVmIlsgNCwg
IDgsIF0iRkZaIHJzdCBMSUciWyA0LCAgOCwgIDExXQorImFiYyBBQUEgZGVmIls0XSwgIkZGWiBy
c3QgTElHIls0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0KKyJhYmMgQUFBIGRl
ZiJbNV0sICJGRlogcnN0IExJRyJbNF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDhd
CisiYWJjIEFBQSBkZWYiWzZdLCAiRkZaIHJzdCBMSUciWzRdICAgRkFJTCBleHBlY3RlZCAiYWJj
IEFBQSBkZWYiWyA4XQorImFiYyBBQUEgZGVmIls3XSwgIkZGWiByc3QgTElHIls0XSAgIEZBSUwg
ZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJGRlog
cnN0IExJRyJbMTEsIDgsIDRdLCAiYWJjIEFBQSBkZWYiWzRdLCAiQUJEIG9wcSBEU1UgIlsxMiwg
OCwgNCwgMF0gICAgRkFJTCBleHBlY3RlZDogWyJGRlogcnN0IExJRyJbIDExLCAgOCwgIDQsIF0i
YWJjIEFBQSBkZWYiWyA4LCAgNCwgXSJBQkQgb3BxIERTVSAiWyAxMiwgIDgsICA0LCAgMF0KKyJG
RlogcnN0IExJRyJbNF0sICJhYmMgQUFBIGRlZiJbNF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFB
IGRlZiJbIDhdCisiRkZaIHJzdCBMSUciWzNdLCAiYWJjIEFBQSBkZWYiWzRdICAgRkFJTCBleHBl
Y3RlZCAiYWJjIEFBQSBkZWYiWyA4XQorIkZGWiByc3QgTElHIlsyXSwgImFiYyBBQUEgZGVmIls0
XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0KKyJGRlogcnN0IExJRyJbMV0sICJh
YmMgQUFBIGRlZiJbNF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDhdCisiYWJjIEFB
QSBkZWYiWzExLCA0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0KKyJhYmMgQUFB
IGRlZiJbOSwgNF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDhdCisiYWJjIEFBQSBk
ZWYiWzEwLCA0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0KIFRlc3QgMTgsIExU
UjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJBQkQgb3BxIERTVSAiWzAsIDQsIDgsIDEyXSwg
ImFiYyBBQUEgZGVmIls0LCA4XSwgIkZGWiByc3QgTElHIls0LCA4LCAxMV0KLU1vdmUgbGVmdCBi
eSBvbmUgd29yZAotIkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJhYmMgQUFBIGRlZiJbOCwgNF0s
ICJBQkQgb3BxIERTVSAiWzEyLCA4LCA0LCAwXQorIkFCRCBvcHEgRFNVICJbMCwgNCwgOCwgMTJd
LCAiYWJjIEFBQSBkZWYiWzQsIDgsIDExXSwgIkZGWiByc3QgTElHIls0LCA4LCAxMV0gICAgRkFJ
TCBleHBlY3RlZDogWyJBQkQgb3BxIERTVSAiWyAwLCAgNCwgIDgsICAxMiwgXSJhYmMgQUFBIGRl
ZiJbIDQsICA4LCBdIkZGWiByc3QgTElHIlsgNCwgIDgsICAxMV0KKyJhYmMgQUFBIGRlZiJbOCwg
MTFdICAgRkFJTCBleHBlY3RlZCAiRkZaIHJzdCBMSUciWyA0XQorImFiYyBBQUEgZGVmIls5LCAx
MV0gICBGQUlMIGV4cGVjdGVkICJGRlogcnN0IExJRyJbIDRdCisiYWJjIEFBQSBkZWYiWzEwLCAx
MV0gICBGQUlMIGV4cGVjdGVkICJGRlogcnN0IExJRyJbIDRdCitNb3ZlIGxlZnQgYnkgb25lIHdv
cmQKKyJGRlogcnN0IExJRyJbMTEsIDgsIDRdLCAiYWJjIEFBQSBkZWYiWzExLCA4LCA0XSwgIkFC
RCBvcHEgRFNVICJbMTIsIDgsIDQsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIHJzdCBMSUci
WyAxMSwgIDgsICA0LCBdImFiYyBBQUEgZGVmIlsgOCwgIDQsIF0iQUJEIG9wcSBEU1UgIlsgMTIs
ICA4LCAgNCwgIDBdCisiRkZaIHJzdCBMSUciWzRdLCAiYWJjIEFBQSBkZWYiWzExXSAgIEZBSUwg
ZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0KKyJGRlogcnN0IExJRyJbM10sICJhYmMgQUFBIGRl
ZiJbMTFdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA4XQorIkZGWiByc3QgTElHIlsx
XSwgImFiYyBBQUEgZGVmIlsxMV0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDhdCisi
RkZaIHJzdCBMSUciWzJdLCAiYWJjIEFBQSBkZWYiWzExXSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBB
QUEgZGVmIlsgOF0KIFRlc3QgMTksIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKICJhYWEg
IlswLCA0XSwgImJiYiBBQUEgIls0LCA3XSwgIkZGWiJbM10KQEAgLTEzMSwxNCArMTM4LDcgQEAg
TW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCiAiRkZaIlszXSwgImJiYiBBQUEgIls3LCA0XSwgImFhYSAi
WzQsIDBdCiBUZXN0IDIwLCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJBQkQgb3BxIHJz
dCBEU1UgIlswLCA0LCA3LCAxMiwgMTZdLCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbMTIsIDgsIDcs
IDNdLCAiQUJXIGhpaiB4eXogRlhYIls0LCA3LCAxMiwgMTVdICAgIEZBSUwgZXhwZWN0ZWQ6IFsi
QUJEIG9wcSByc3QgRFNVICJbIDAsICA0LCAgNywgIDEyLCAgMTYsIF0iYWJjIHV2dyBBQUEgZGVm
IGxtbiJbIDE1LCAgOCwgIDcsICAzLCBdIkFCVyBoaWogeHl6IEZYWCJbIDQsICA3LCAgMTIsICAx
NV0KLSJBQkQgb3BxIHJzdCBEU1UgIlsxNl0sICJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsxMl0gICBG
QUlMIGV4cGVjdGVkICJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsgMTVdCi0iYWJjIHV2dyBBQUEgZGVm
IGxtbiJbMTgsIDEyXSAgIEZBSUwgZXhwZWN0ZWQgImFiYyB1dncgQUFBIGRlZiBsbW4iWyAxNV0K
LSJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsxNywgMTJdICAgRkFJTCBleHBlY3RlZCAiYWJjIHV2dyBB
QUEgZGVmIGxtbiJbIDE1XQotImFiYyB1dncgQUFBIGRlZiBsbW4iWzE2LCAxMl0gICBGQUlMIGV4
cGVjdGVkICJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsgMTVdCi0iYWJjIHV2dyBBQUEgZGVmIGxtbiJb
MTUsIDEyXSAgIEZBSUwgZXhwZWN0ZWQgImFiYyB1dncgQUFBIGRlZiBsbW4iWyA4XQotImFiYyB1
dncgQUFBIGRlZiBsbW4iWzE0LCAxMl0gICBGQUlMIGV4cGVjdGVkICJhYmMgdXZ3IEFBQSBkZWYg
bG1uIlsgOF0KLSJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsxMywgMTJdICAgRkFJTCBleHBlY3RlZCAi
YWJjIHV2dyBBQUEgZGVmIGxtbiJbIDhdCisiQUJEIG9wcSByc3QgRFNVICJbMCwgNCwgNywgMTIs
IDE2XSwgImFiYyB1dncgQUFBIGRlZiBsbW4iWzE1LCA4LCA3LCAzXSwgIkFCVyBoaWogeHl6IEZY
WCJbNCwgNywgMTIsIDE1XQogTW92ZSByaWdodCBieSBvbmUgd29yZAogIkFCVyBoaWogeHl6IEZY
WCJbMTUsIDEyLCA3LCA0XSwgImFiYyB1dncgQUFBIGRlZiBsbW4iWzMsIDcsIDgsIDE1XSwgIkFC
RCBvcHEgcnN0IERTVSAiWzE2LCAxMiwgNywgNCwgMF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128769</attachid>
            <date>2012-02-24 11:09:57 -0800</date>
            <delta_ts>2012-03-12 17:52:47 -0700</delta_ts>
            <desc>wip</desc>
            <filename>78856.v1</filename>
            <type>text/plain</type>
            <size>74191</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODAwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTE2ICBYaWFvbWVp
IEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2luZyBJQ1UgYnJlYWsgaXRlcmF0
b3IgdG8gc2ltcGxpZnkgdmlzdWFsIHdvcmQgbW92ZW1lbnQgaW1wbGVtZW50YXRpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVs
aWVzIG9uIElDVSB3b3JkIGJyZWFrIGl0ZXJhdG9yIGFuZCBjdXJzb3IgdmlzdWFsIG1vdmVtZW50
IGJ5IGNoYXJhY3RlciB0byBnZXQgdGhlIHdvcmQgYnJlYWsKKyAgICAgICAgcG9zaXRpb24gaW4g
dmlzdWFsIG9yZGVyLiBJdCByZWR1Y2VzIHRoZSBjb21wbGV4aXR5IG9mIG9sZCBpbXBsZW1lbnRh
dGlvbi4KKworICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1N0YXJ0T2ZXb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRW5kT2ZXb3JkKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNSb290SW5saW5l
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRSb290SW5saW5lQm94KToKKyAgICAgICAgKFdl
YkNvcmU6OnNlYXJjaFByZXZpb3VzQm94SW5TYW1lTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZWFyY2hOZXh0Qm94SW5TYW1lTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hQcmV2aW91
c0JveEluUHJldmlvdXNSb290SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OnNlYXJjaE5l
eHRCb3hJbk5leHRSb290SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdvcmRC
cmVha0l0ZXJhdG9yRm9yTWluT2Zmc2V0Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlV29yZEJyZWFrSXRlcmF0b3JGb3JNYXhPZmZzZXRCb3VuZGFyeSk6CisgICAgICAgIChXZWJD
b3JlOjp3b3JkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6bGVmdFdvcmRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpyaWdodFdvcmRQb3NpdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppc1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNXb3JkVGV4dEJyZWFrKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC93aW5jZS9UZXh0QnJlYWtJdGVyYXRvcldpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlzV29yZFRleHRCcmVhayk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wMi0xNSAgU2hp
bnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGFuIGlu
dGVybmFsIGZsYWcgdG8gYWNjZXB0IG11bHRpcGxlIHNoYWRvdyByb290cyBmb3IgdGhlIHB1cnBv
c2Ugb2YgdGVzdHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5j
cHAJKHJldmlzaW9uIDEwNjUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91
bml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDM1NyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIFdURjo6
VW5pY29kZTsKIAorLy8tLS0tIFRoZSBmb2xsb3dpbmcgNCBmdW5jdGlvbnMgYXJlIGp1c3QgbW92
ZWQgaGVyZSB3aXRob3V0IGFueSBmdW5jdGlvbmFsaXR5IG1vZGlmaWNhdGlvbnMgLS0tLS0vLwor
CisvLyBUaGUgZmlyc3QgbGVhZiBiZWZvcmUgbm9kZSB0aGF0IGhhcyB0aGUgc2FtZSBlZGl0YWJp
bGl0eSBhcyBub2RlLgorc3RhdGljIE5vZGUqIHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFiaWxp
dHkoTm9kZSogbm9kZSwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSkKK3sKKyAgICBib29sIGVk
aXRhYmxlID0gbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKGVkaXRhYmxlVHlwZSk7CisgICAgTm9k
ZSogbiA9IG5vZGUtPnByZXZpb3VzTGVhZk5vZGUoKTsKKyAgICB3aGlsZSAobikgeworICAgICAg
ICBpZiAoZWRpdGFibGUgPT0gbi0+cmVuZGVyZXJJc0VkaXRhYmxlKGVkaXRhYmxlVHlwZSkpCisg
ICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgbiA9IG4tPnByZXZpb3VzTGVhZk5vZGUoKTsK
KyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBOb2RlKiBlbmNsb3NpbmdOb2RlV2l0
aE5vbklubGluZVJlbmRlcmVyKE5vZGUqIG4pCit7CisgICAgZm9yIChOb2RlKiBwID0gbjsgcDsg
cCA9IHAtPnBhcmVudE5vZGUoKSkgeworICAgICAgICBpZiAocC0+cmVuZGVyZXIoKSAmJiAhcC0+
cmVuZGVyZXIoKS0+aXNJbmxpbmUoKSkKKyAgICAgICAgICAgIHJldHVybiBwOworICAgIH0KKyAg
ICByZXR1cm4gMDsKK30KKworc3RhdGljIE5vZGUqIG5leHRMZWFmV2l0aFNhbWVFZGl0YWJpbGl0
eShOb2RlKiBub2RlLCBpbnQgb2Zmc2V0KQoreworICAgIGJvb2wgZWRpdGFibGUgPSBub2RlLT5y
ZW5kZXJlcklzRWRpdGFibGUoKTsKKyAgICBBU1NFUlQob2Zmc2V0ID49IDApOworICAgIE5vZGUq
IGNoaWxkID0gbm9kZS0+Y2hpbGROb2RlKG9mZnNldCk7CisgICAgTm9kZSogbiA9IGNoaWxkID8g
Y2hpbGQtPm5leHRMZWFmTm9kZSgpIDogbm9kZS0+bGFzdERlc2NlbmRhbnQoKS0+bmV4dExlYWZO
b2RlKCk7CisgICAgd2hpbGUgKG4pIHsKKyAgICAgICAgaWYgKGVkaXRhYmxlID09IG4tPnJlbmRl
cmVySXNFZGl0YWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuIG47CisgICAgICAgIG4gPSBuLT5u
ZXh0TGVhZk5vZGUoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBOb2RlKiBu
ZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkoTm9kZSogbm9kZSwgRWRpdGFibGVUeXBlIGVkaXRh
YmxlVHlwZSA9IENvbnRlbnRJc0VkaXRhYmxlKQoreworICAgIGlmICghbm9kZSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgCisgICAgYm9vbCBlZGl0YWJsZSA9IG5vZGUtPnJlbmRlcmVySXNFZGl0
YWJsZShlZGl0YWJsZVR5cGUpOworICAgIE5vZGUqIG4gPSBub2RlLT5uZXh0TGVhZk5vZGUoKTsK
KyAgICB3aGlsZSAobikgeworICAgICAgICBpZiAoZWRpdGFibGUgPT0gbi0+cmVuZGVyZXJJc0Vk
aXRhYmxlKGVkaXRhYmxlVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgbiA9
IG4tPm5leHRMZWFmTm9kZSgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLy8tLS0tLS0t
LS0tLS0tLS0gIGJlZ2luIG9mIHZpc3VhbCB3b3JkIG1vdmVtZW50ICAtLS0tLS0tLS0tLS0tLS0t
LS0tLy8KKy8vIFRPRE86IGNvbnNvbGlkYXRlIHdpdGggcHJldmlvdXNMaW5lUG9zaXRpb24uCitz
dGF0aWMgY29uc3QgUm9vdElubGluZUJveCogcHJldmlvdXNSb290SW5saW5lQm94KGNvbnN0IElu
bGluZUJveCogYm94LCBjb25zdCBOb2RlKiBoaWdoZXN0Um9vdCkKK3sKKyAgICBOb2RlKiBub2Rl
ID0gYm94LT5yZW5kZXJlcigpLT5ub2RlKCk7CisgICAgTm9kZSogZW5jbG9zaW5nQmxvY2tOb2Rl
ID0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihub2RlKTsKKyAgICBOb2RlKiBw
cmV2aW91c05vZGUgPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5vZGUsIENvbnRl
bnRJc0VkaXRhYmxlKTsKKyAgICB3aGlsZSAocHJldmlvdXNOb2RlICYmIGVuY2xvc2luZ0Jsb2Nr
Tm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKHByZXZpb3VzTm9kZSkp
CisgICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFiaWxpdHko
cHJldmlvdXNOb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisgIAorICAgIHdoaWxlIChwcmV2aW91
c05vZGUgJiYgIXByZXZpb3VzTm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgaWYgKGhp
Z2hlc3RFZGl0YWJsZVJvb3QoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHByZXZpb3VzTm9k
ZSksIENvbnRlbnRJc0VkaXRhYmxlKSAhPSBoaWdoZXN0Um9vdCkKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIFBvc2l0aW9uIHBvcyA9IHByZXZpb3VzTm9kZS0+aGFzVGFnTmFtZShiclRh
ZykgPyBwb3NpdGlvbkJlZm9yZU5vZGUocHJldmlvdXNOb2RlKSA6IGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihwcmV2aW91c05vZGUsIGNhcmV0TWF4T2Zmc2V0KHByZXZpb3VzTm9kZSkpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKHBvcy5pc0NhbmRpZGF0ZSgpKSB7CisgICAgICAgICAgICBS
ZW5kZXJlZFBvc2l0aW9uIHJlbmRlcmVkUG9zKHBvcywgRE9XTlNUUkVBTSk7CisgICAgICAgICAg
ICBSb290SW5saW5lQm94KiByb290ID0gcmVuZGVyZWRQb3Mucm9vdEJveCgpOworICAgICAgICAg
ICAgaWYgKHJvb3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Q7CisgICAgICAgIH0KKwor
ICAgICAgICBwcmV2aW91c05vZGUgPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KHBy
ZXZpb3VzTm9kZSwgQ29udGVudElzRWRpdGFibGUpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30K
Kworc3RhdGljIGNvbnN0IFJvb3RJbmxpbmVCb3gqIG5leHRSb290SW5saW5lQm94KGNvbnN0IElu
bGluZUJveCogYm94LCBjb25zdCBOb2RlKiBoaWdoZXN0Um9vdCkKK3sKKyAgICBOb2RlKiBub2Rl
ID0gYm94LT5yZW5kZXJlcigpLT5ub2RlKCk7CisgICAgTm9kZSogZW5jbG9zaW5nQmxvY2tOb2Rl
ID0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihub2RlKTsKKyAgICBOb2RlKiBu
ZXh0Tm9kZSA9IG5leHRMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShub2RlLCBDb250ZW50SXNFZGl0
YWJsZSk7CisgICAgd2hpbGUgKG5leHROb2RlICYmIGVuY2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNs
b3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKG5leHROb2RlKSkKKyAgICAgICAgbmV4dE5v
ZGUgPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobmV4dE5vZGUsIENvbnRlbnRJc0VkaXRh
YmxlKTsKKyAgCisgICAgd2hpbGUgKG5leHROb2RlICYmICFuZXh0Tm9kZS0+aXNTaGFkb3dSb290
KCkpIHsKKyAgICAgICAgaWYgKGhpZ2hlc3RFZGl0YWJsZVJvb3QoZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKG5leHROb2RlKSwgQ29udGVudElzRWRpdGFibGUpICE9IGhpZ2hlc3RSb290KQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgUG9zaXRpb24gcG9zOworICAgICAgICBwb3Mg
PSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obmV4dE5vZGUsIGNhcmV0TWluT2Zmc2V0KG5l
eHROb2RlKSk7CisgICAgICAgIAorICAgICAgICBpZiAocG9zLmlzQ2FuZGlkYXRlKCkpIHsKKyAg
ICAgICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3MocG9zLCBET1dOU1RSRUFNKTsK
KyAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIHJvb3QgPSByZW5kZXJlZFBvcy5yb290Qm94KCk7
CisgICAgICAgICAgICBpZiAocm9vdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcm9vdDsKKyAg
ICAgICAgfQorCisgICAgICAgIG5leHROb2RlID0gbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5
KG5leHROb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisgICAgfQorICAgIHJldHVybiAwOworfQor
CitzdGF0aWMgdm9pZCBzZWFyY2hQcmV2aW91c0JveEluU2FtZUxpbmUoY29uc3QgSW5saW5lVGV4
dEJveCogdGV4dEJveCwgSW5saW5lVGV4dEJveComIHByZXZpb3VzQm94KQoreworICAgIFZlY3Rv
cjxJbmxpbmVCb3gqPiBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcjsKKyAgICB0ZXh0Qm94LT5yb290
KCktPmNvbGxlY3RMZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihsZWFmQm94ZXNJbkxvZ2ljYWxPcmRl
cik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlYWZCb3hlc0luTG9naWNhbE9yZGVy
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICh0ZXh0Qm94ID09IGxlYWZCb3hlc0luTG9naWNh
bE9yZGVyW2ldKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChsZWFmQm94ZXNJbkxv
Z2ljYWxPcmRlcltpXS0+aXNJbmxpbmVUZXh0Qm94KCkpCisgICAgICAgICAgICBwcmV2aW91c0Jv
eCA9IHRvSW5saW5lVGV4dEJveChsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcltpXSk7CisgICAgfQor
fQorCitzdGF0aWMgdm9pZCBzZWFyY2hOZXh0Qm94SW5TYW1lTGluZShjb25zdCBJbmxpbmVUZXh0
Qm94KiB0ZXh0Qm94LCBJbmxpbmVUZXh0Qm94KiYgbmV4dEJveCkKK3sKKyAgICBWZWN0b3I8SW5s
aW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7CisgICAgdGV4dEJveC0+cm9vdCgpLT5j
b2xsZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXpl
KCk7ICsraSkgeworICAgICAgICBpZiAodGV4dEJveCA9PSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRl
cltpXSkgeworICAgICAgICAgICAgc2l6ZV90IGogPSBpICsgMTsKKyAgICAgICAgICAgIHdoaWxl
IChqIDwgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAg
aWYgKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2pdLT5pc0lubGluZVRleHRCb3goKSkgeworICAg
ICAgICAgICAgICAgICAgICBuZXh0Qm94ID0gdG9JbmxpbmVUZXh0Qm94KGxlYWZCb3hlc0luTG9n
aWNhbE9yZGVyW2pdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaFByZXZpb3VzQm94SW5QcmV2aW91c1Jvb3RJbmxpbmVC
b3goY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGNvbnN0IElubGluZVRl
eHRCb3gqIHRleHRCb3gsCisgICAgSW5saW5lVGV4dEJveComIHByZXZpb3VzQm94LCBib29sJiBw
cmV2aW91c0JveEluRGlmZmVyZW50TGluZSkKK3sKKyAgICBOb2RlKiBoaWdoZXN0Um9vdCA9IGhp
Z2hlc3RFZGl0YWJsZVJvb3QodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCksIENvbnRl
bnRJc0VkaXRhYmxlKTsKKyAgICBjb25zdCBJbmxpbmVCb3gqIHN0YXJ0Qm94ID0gdGV4dEJveDsK
KyAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7CisKKyAgICB3
aGlsZSAoMSkgeyAKKyAgICAgICAgY29uc3QgUm9vdElubGluZUJveCogcHJldmlvdXNSb290ID0g
cHJldmlvdXNSb290SW5saW5lQm94KHN0YXJ0Qm94LCBoaWdoZXN0Um9vdCk7CisgICAgICAgIGlm
ICghcHJldmlvdXNSb290KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgbGVhZkJveGVz
SW5Mb2dpY2FsT3JkZXIuY2xlYXIoKTsKKyAgICAgICAgcHJldmlvdXNSb290LT5jb2xsZWN0TGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworICAgICAgICBp
bnQgaSA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLnNpemUoKSAtIDE7CisgICAgICAgIGZvciAo
OyBpID49MDsgLS1pKSB7CisgICAgICAgICAgICBpZiAobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJb
aV0tPmlzSW5saW5lVGV4dEJveCgpKSB7CisgICAgICAgICAgICAgICAgcHJldmlvdXNCb3ggPSB0
b0lubGluZVRleHRCb3gobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbaV0pOworICAgICAgICAgICAg
ICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSAwKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXpl
KCkpCisgICAgICAgICAgICBzdGFydEJveCA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyWzBdOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk
IHNlYXJjaE5leHRCb3hJbk5leHRSb290SW5saW5lQm94KGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dmlzaWJsZVBvc2l0aW9uLCBjb25zdCBJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LAorICAgIElubGlu
ZVRleHRCb3gqJiBuZXh0Qm94LCBib29sJiBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lKQoreworICAg
IE5vZGUqIGhpZ2hlc3RSb290ID0gaGlnaGVzdEVkaXRhYmxlUm9vdCh2aXNpYmxlUG9zaXRpb24u
ZGVlcEVxdWl2YWxlbnQoKSwgQ29udGVudElzRWRpdGFibGUpOworICAgIGNvbnN0IElubGluZUJv
eCogc3RhcnRCb3ggPSB0ZXh0Qm94OworICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBsZWFmQm94ZXNJ
bkxvZ2ljYWxPcmRlcjsKKworICAgIHdoaWxlICgxKSB7IAorICAgICAgICBjb25zdCBSb290SW5s
aW5lQm94KiBuZXh0Um9vdCA9IG5leHRSb290SW5saW5lQm94KHN0YXJ0Qm94LCBoaWdoZXN0Um9v
dCk7CisgICAgICAgIGlmICghbmV4dFJvb3QpCisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5jbGVhcigpOworICAgICAgICBuZXh0Um9vdC0+Y29s
bGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKKyAg
ICAgICAgc2l6ZV90IGkgPSAwOworICAgICAgICBmb3IgKDsgaSA8IGxlYWZCb3hlc0luTG9naWNh
bE9yZGVyLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobGVhZkJveGVzSW5Mb2dpY2Fs
T3JkZXJbaV0tPmlzSW5saW5lVGV4dEJveCgpKSB7CisgICAgICAgICAgICAgICAgbmV4dEJveCA9
IHRvSW5saW5lVGV4dEJveChsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcltpXSk7CisgICAgICAgICAg
ICAgICAgbmV4dEJveEluRGlmZmVyZW50TGluZSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPCBsZWFmQm94ZXNJ
bkxvZ2ljYWxPcmRlci5zaXplKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGxl
YWZCb3hlc0luTG9naWNhbE9yZGVyLnNpemUoKSkKKyAgICAgICAgICAgIHN0YXJ0Qm94ID0gbGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXJbMF07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworc3RhdGljIHZvaWQgY3JlYXRlV29yZEJyZWFrSXRlcmF0b3JGb3JNaW5P
ZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29u
c3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwKKyAgICBUZXh0QnJlYWtJdGVyYXRvciomIGl0ZXIs
IGludCYgcHJldmlvdXNCb3hMZW4sIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQor
eworICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CisKKyAgICAvLyBUT0RP
OiBob3cgc2hvdWxkIHdlIGhhbmRsZSBub24tdGV4dCBib3g/CisgICAgSW5saW5lVGV4dEJveCog
cHJldmlvdXNCb3ggPSAwOworICAgIHNlYXJjaFByZXZpb3VzQm94SW5TYW1lTGluZSh0ZXh0Qm94
LCBwcmV2aW91c0JveCk7CisKKyAgICBpZiAoIXByZXZpb3VzQm94KQorICAgICAgICBzZWFyY2hQ
cmV2aW91c0JveEluUHJldmlvdXNSb290SW5saW5lQm94KHZpc2libGVQb3NpdGlvbiwgdGV4dEJv
eCwgcHJldmlvdXNCb3gsIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKTsKKworICAgIGludCBs
ZW4gPSAwOworICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOworICAgIGlmIChwcmV2aW91
c0JveCkgeworICAgICAgICBwcmV2aW91c0JveExlbiA9IHByZXZpb3VzQm94LT5sZW4oKTsKKyAg
ICAgICAgc3RyaW5nLmFwcGVuZChwcmV2aW91c0JveC0+dGV4dFJlbmRlcmVyKCktPnRleHQoKS0+
Y2hhcmFjdGVycygpICsgcHJldmlvdXNCb3gtPnN0YXJ0KCksIHByZXZpb3VzQm94TGVuKTsgCisg
ICAgICAgIGxlbiArPSBwcmV2aW91c0JveExlbjsKKyAgICB9CisgICAgc3RyaW5nLmFwcGVuZCh0
ZXh0Qm94LT50ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyB0ZXh0Qm94LT5z
dGFydCgpLCB0ZXh0Qm94LT5sZW4oKSk7CisgICAgbGVuICs9IHRleHRCb3gtPmxlbigpOworCisg
ICAgaXRlciA9IHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5kYXRhKCksIGxlbik7CisgICAgdGV4
dEJyZWFrRmlyc3QoaXRlcik7Cit9IAorCitzdGF0aWMgdm9pZCBjcmVhdGVXb3JkQnJlYWtJdGVy
YXRvckZvck1heE9mZnNldEJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBv
c2l0aW9uLCBjb25zdCBJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LAorICAgIFRleHRCcmVha0l0ZXJh
dG9yKiYgaXRlciwgYm9vbCYgbmV4dEJveEluRGlmZmVyZW50TGluZSkKK3sKKyAgICBuZXh0Qm94
SW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CisKKyAgICAvLyBUT0RPOiBob3cgc2hvdWxkIHdlIGhh
bmRsZSBub24tdGV4dCBib3g/CisgICAgSW5saW5lVGV4dEJveCogbmV4dEJveCA9IDA7CisgICAg
c2VhcmNoTmV4dEJveEluU2FtZUxpbmUodGV4dEJveCwgbmV4dEJveCk7CisKKyAgICBpZiAoIW5l
eHRCb3gpCisgICAgICAgIHNlYXJjaE5leHRCb3hJbk5leHRSb290SW5saW5lQm94KHZpc2libGVQ
b3NpdGlvbiwgdGV4dEJveCwgbmV4dEJveCwgbmV4dEJveEluRGlmZmVyZW50TGluZSk7CisKKyAg
ICBpbnQgbGVuID0gMDsKKyAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IHN0cmluZzsKKyAgICBzdHJp
bmcuYXBwZW5kKHRleHRCb3gtPnRleHRSZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSAr
IHRleHRCb3gtPnN0YXJ0KCksIHRleHRCb3gtPmxlbigpKTsKKyAgICBsZW4gKz0gdGV4dEJveC0+
bGVuKCk7CisgICAgaWYgKG5leHRCb3gpIHsKKyAgICAgICAgc3RyaW5nLmFwcGVuZChuZXh0Qm94
LT50ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBuZXh0Qm94LT5zdGFydCgp
LCBuZXh0Qm94LT5sZW4oKSk7IAorICAgICAgICBsZW4gKz0gbmV4dEJveC0+bGVuKCk7CisgICAg
fQorCisgICAgaXRlciA9IHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5kYXRhKCksIGxlbik7Cisg
ICAgdGV4dEJyZWFrRmlyc3QoaXRlcik7Cit9IAorCitlbnVtIEVDdXJzb3JNb3ZlbWVudERpcmVj
dGlvbiB7CisgICAgTU9WRV9MRUZULCBNT1ZFX1JJR0hULAorfTsKKworc3RhdGljIGJvb2wgaXNT
dGFydE9mV29yZChUZXh0QnJlYWtJdGVyYXRvciogaXRlciwgaW50IHBvc2l0aW9uLCBib29sIGhh
cmRMaW5lQnJlYWspCit7CisgICAgYm9vbCBib3VuZGFyeSA9IGhhcmRMaW5lQnJlYWsgPyB0cnVl
IDogaXNUZXh0QnJlYWsoaXRlciwgcG9zaXRpb24pOworICAgIGlmICghYm91bmRhcnkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHRleHRCcmVha0ZvbGxvd2luZyhpdGVyLCBwb3NpdGlv
bik7CisgICAgcmV0dXJuIGlzV29yZFRleHRCcmVhayhpdGVyKTsKK30KKworc3RhdGljIGJvb2wg
aXNFbmRPZldvcmQoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBo
YXJkTGluZUJyZWFrKQoreworICAgIGJvb2wgYm91bmRhcnkgPSBpc1RleHRCcmVhayhpdGVyLCBw
b3NpdGlvbik7CisgICAgcmV0dXJuIChoYXJkTGluZUJyZWFrIHx8IGJvdW5kYXJ5KSAmJiBpc1dv
cmRUZXh0QnJlYWsoaXRlcik7Cit9CisKK3N0YXRpYyBWaXNpYmxlUG9zaXRpb24gd29yZFBvc2l0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBFQ3Vyc29yTW92ZW1l
bnREaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKKworICAgIFRleHREaXJlY3Rp
b24gYmxvY2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3Np
dGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICBJbmxpbmVCb3gqIHByZXZpb3VzbHlWaXNpdGVk
Qm94ID0gMDsKKyAgICBWaXNpYmxlUG9zaXRpb24gY3VycmVudCA9IHZpc2libGVQb3NpdGlvbjsK
KyAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlciA9IDA7CisKKyAgICB3aGlsZSAoMSkgeworICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gYWRqYWNlbnRCeUNoYXJhY3RlciA9IGRpcmVjdGlvbiA9PSBN
T1ZFX1JJR0hUID8gY3VycmVudC5yaWdodCh0cnVlKSA6IGN1cnJlbnQubGVmdCh0cnVlKTsgCisg
ICAgICAgIGlmIChhZGphY2VudEJ5Q2hhcmFjdGVyID09IGN1cnJlbnQgfHwgYWRqYWNlbnRCeUNo
YXJhY3Rlci5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsK
KyAgICAKKyAgICAgICAgSW5saW5lQm94KiBib3g7CisgICAgICAgIGludCBvZmZzZXQ7CisgICAg
ICAgIGFkamFjZW50QnlDaGFyYWN0ZXIuZ2V0SW5saW5lQm94QW5kT2Zmc2V0KGJveCwgb2Zmc2V0
KTsKKyAgICAKKyAgICAgICAgLy8gVE9ETzogaG93IHNob3VsZCB3ZSBoYW5kbGUgbm9uIHRleHQg
Ym94PworICAgICAgICBpZiAoIWJveCB8fCAhYm94LT5pc0lubGluZVRleHRCb3goKSkKKyAgICAg
ICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKKworICAgICAgICBJbmxpbmVUZXh0Qm94
KiB0ZXh0Qm94ID0gdG9JbmxpbmVUZXh0Qm94KGJveCk7CisgICAgICAgIGludCBwcmV2aW91c0Jv
eExlbiA9IDA7CisgICAgICAgIGJvb2wgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUgPSBmYWxz
ZTsKKyAgICAgICAgYm9vbCBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CisKKyAgICAg
ICAgaWYgKG9mZnNldCA9PSBib3gtPmNhcmV0TWluT2Zmc2V0KCkpCisgICAgICAgICAgICBjcmVh
dGVXb3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KHZpc2libGVQb3NpdGlvbiwg
dGV4dEJveCwgaXRlciwgcHJldmlvdXNCb3hMZW4sIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5l
KTsKKyAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID09IGJveC0+Y2FyZXRNYXhPZmZzZXQoKSkKKyAg
ICAgICAgICAgIGNyZWF0ZVdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkodmlz
aWJsZVBvc2l0aW9uLCB0ZXh0Qm94LCBpdGVyLCBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocHJldmlvdXNseVZpc2l0ZWRCb3ggIT0gYm94
KSB7CisgICAgICAgICAgICAgICAgaXRlciA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHRCb3gtPnRl
eHRSZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIHRleHRCb3gtPnN0YXJ0KCksIHRl
eHRCb3gtPmxlbigpKTsKKyAgICAgICAgICAgICAgICB0ZXh0QnJlYWtGaXJzdChpdGVyKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHByZXZpb3VzbHlWaXNpdGVkQm94ID0gYm94OworICAg
ICAgICB9CisgICAgCisgICAgICAgIGJvb2wgaXNXb3JkQnJlYWsgPSAoYm94LT5kaXJlY3Rpb24o
KSA9PSBibG9ja0RpcmVjdGlvbikgPworICAgICAgICAgICAgaXNTdGFydE9mV29yZChpdGVyLCBv
ZmZzZXQgLSB0ZXh0Qm94LT5zdGFydCgpICsgcHJldmlvdXNCb3hMZW4sCisgICAgICAgICAgICAg
ICAgb2Zmc2V0ID09IChpbnQpdGV4dEJveC0+c3RhcnQoKSAmJiBwcmV2aW91c0JveEluRGlmZmVy
ZW50TGluZSkgOgorICAgICAgICAgICAgaXNFbmRPZldvcmQoaXRlciwgb2Zmc2V0IC0gdGV4dEJv
eC0+c3RhcnQoKSArIHByZXZpb3VzQm94TGVuLAorICAgICAgICAgICAgICAgIG9mZnNldCA9PSAo
aW50KSh0ZXh0Qm94LT5zdGFydCgpICsgdGV4dEJveC0+bGVuKCkpICYmIG5leHRCb3hJbkRpZmZl
cmVudExpbmUpOworICAgICAgICBpZiAoaXNXb3JkQnJlYWspCisgICAgICAgICAgICByZXR1cm4g
YWRqYWNlbnRCeUNoYXJhY3RlcjsKKyAgICAKKyAgICAgICAgY3VycmVudCA9IGFkamFjZW50QnlD
aGFyYWN0ZXI7CisgICAgfQorICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKK30KKworVmlz
aWJsZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNp
YmxlUG9zaXRpb24pCit7CisgICAgVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3JkQnJlYWsgPSB3b3Jk
UG9zaXRpb24odmlzaWJsZVBvc2l0aW9uLCBNT1ZFX0xFRlQpOworICAgIAorICAgIC8vIEZJWE1F
OiBIb3cgc2hvdWxkIHdlIGhhbmRsZSBhIG5vbi1lZGl0YWJsZSBwb3NpdGlvbj8KKyAgICBpZiAo
bGVmdFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0
aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7CisgICAgICAgIFRleHREaXJlY3Rpb24gYmxvY2tEaXJl
Y3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1
aXZhbGVudCgpKTsKKyAgICAgICAgbGVmdFdvcmRCcmVhayA9IGJsb2NrRGlyZWN0aW9uID09IExU
UiA/IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKSA6IGVuZE9mRWRpdGFi
bGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgfQorICAgIHJldHVybiBsZWZ0V29yZEJy
ZWFrOworfQorCitWaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCit7CisgICAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0
V29yZEJyZWFrID0gd29yZFBvc2l0aW9uKHZpc2libGVQb3NpdGlvbiwgTU9WRV9SSUdIVCk7CisK
KyAgICAvLyBGSVhNRTogSG93IHNob3VsZCB3ZSBoYW5kbGUgYSBub24tZWRpdGFibGUgcG9zaXRp
b24/CisgICAgaWYgKHJpZ2h0V29yZEJyZWFrLmlzTnVsbCgpICYmIGlzRWRpdGFibGVQb3NpdGlv
bih2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpIHsKKyAgICAgICAgVGV4dERpcmVj
dGlvbiBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2sodmlzaWJsZVBv
c2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOworICAgICAgICByaWdodFdvcmRCcmVhayA9IGJsb2Nr
RGlyZWN0aW9uID09IExUUiA/IGVuZE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbikg
OiBzdGFydE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgfQorICAgIHJl
dHVybiByaWdodFdvcmRCcmVhazsKK30KKy8vLS0tLS0tLS0tLS0tLS0tICBlbmQgb2YgdmlzdWFs
IHdvcmQgbW92ZW1lbnQgIC0tLS0tLS0tLS0tLS0tLS0tLS0vLworCiBlbnVtIEJvdW5kYXJ5U2Vh
cmNoQ29udGV4dEF2YWlsYWJpbGl0eSB7IERvbnRIYXZlTW9yZUNvbnRleHQsIE1heUhhdmVNb3Jl
Q29udGV4dCB9OwogCiB0eXBlZGVmIHVuc2lnbmVkICgqQm91bmRhcnlTZWFyY2hGdW5jdGlvbiko
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIG9mZnNldCwgQm91bmRhcnlT
ZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5LCBib29sJiBuZWVkTW9yZUNvbnRleHQpOwpAQCAtNTE3
LDI4ICs4NjgsNiBAQCBib29sIGlzRW5kT2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmCiAg
ICAgcmV0dXJuIHAuaXNOb3ROdWxsKCkgJiYgcCA9PSBlbmRPZkxpbmUocCk7CiB9CiAKLS8vIFRo
ZSBmaXJzdCBsZWFmIGJlZm9yZSBub2RlIHRoYXQgaGFzIHRoZSBzYW1lIGVkaXRhYmlsaXR5IGFz
IG5vZGUuCi1zdGF0aWMgTm9kZSogcHJldmlvdXNMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShOb2Rl
KiBub2RlLCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlKQotewotICAgIGJvb2wgZWRpdGFibGUg
PSBub2RlLT5yZW5kZXJlcklzRWRpdGFibGUoZWRpdGFibGVUeXBlKTsKLSAgICBOb2RlKiBuID0g
bm9kZS0+cHJldmlvdXNMZWFmTm9kZSgpOwotICAgIHdoaWxlIChuKSB7Ci0gICAgICAgIGlmIChl
ZGl0YWJsZSA9PSBuLT5yZW5kZXJlcklzRWRpdGFibGUoZWRpdGFibGVUeXBlKSkKLSAgICAgICAg
ICAgIHJldHVybiBuOwotICAgICAgICBuID0gbi0+cHJldmlvdXNMZWFmTm9kZSgpOwotICAgIH0K
LSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIE5vZGUqIGVuY2xvc2luZ05vZGVXaXRoTm9uSW5s
aW5lUmVuZGVyZXIoTm9kZSogbikKLXsKLSAgICBmb3IgKE5vZGUqIHAgPSBuOyBwOyBwID0gcC0+
cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChwLT5yZW5kZXJlcigpICYmICFwLT5yZW5kZXJl
cigpLT5pc0lubGluZSgpKQotICAgICAgICAgICAgcmV0dXJuIHA7Ci0gICAgfQotICAgIHJldHVy
biAwOwotfQotCiBzdGF0aWMgaW5saW5lIEludFBvaW50IGFic29sdXRlTGluZURpcmVjdGlvblBv
aW50VG9Mb2NhbFBvaW50SW5CbG9jayhSb290SW5saW5lQm94KiByb290LCBpbnQgbGluZURpcmVj
dGlvblBvaW50KQogewogICAgIEFTU0VSVChyb290KTsKQEAgLTYyNSwzNCArOTU0LDYgQEAgVmlz
aWJsZVBvc2l0aW9uIHByZXZpb3VzTGluZVBvc2l0aW9uKGNvbgogICAgIHJldHVybiBWaXNpYmxl
UG9zaXRpb24oZmlyc3RQb3NpdGlvbkluTm9kZShyb290RWxlbWVudCksIERPV05TVFJFQU0pOwog
fQogCi1zdGF0aWMgTm9kZSogbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KE5vZGUqIG5vZGUs
IGludCBvZmZzZXQpCi17Ci0gICAgYm9vbCBlZGl0YWJsZSA9IG5vZGUtPnJlbmRlcmVySXNFZGl0
YWJsZSgpOwotICAgIEFTU0VSVChvZmZzZXQgPj0gMCk7Ci0gICAgTm9kZSogY2hpbGQgPSBub2Rl
LT5jaGlsZE5vZGUob2Zmc2V0KTsKLSAgICBOb2RlKiBuID0gY2hpbGQgPyBjaGlsZC0+bmV4dExl
YWZOb2RlKCkgOiBub2RlLT5sYXN0RGVzY2VuZGFudCgpLT5uZXh0TGVhZk5vZGUoKTsKLSAgICB3
aGlsZSAobikgewotICAgICAgICBpZiAoZWRpdGFibGUgPT0gbi0+cmVuZGVyZXJJc0VkaXRhYmxl
KCkpCi0gICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgbiA9IG4tPm5leHRMZWFmTm9kZSgp
OwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIE5vZGUqIG5leHRMZWFmV2l0aFNh
bWVFZGl0YWJpbGl0eShOb2RlKiBub2RlLCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlID0gQ29u
dGVudElzRWRpdGFibGUpCi17Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICAKLSAgICBib29sIGVkaXRhYmxlID0gbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKGVkaXRhYmxl
VHlwZSk7Ci0gICAgTm9kZSogbiA9IG5vZGUtPm5leHRMZWFmTm9kZSgpOwotICAgIHdoaWxlIChu
KSB7Ci0gICAgICAgIGlmIChlZGl0YWJsZSA9PSBuLT5yZW5kZXJlcklzRWRpdGFibGUoZWRpdGFi
bGVUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICBuID0gbi0+bmV4dExlYWZO
b2RlKCk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQogCiBWaXNpYmxlUG9zaXRpb24gbmV4dExp
bmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJnZpc2libGVQb3NpdGlvbiwgaW50IGxp
bmVEaXJlY3Rpb25Qb2ludCwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSkKIHsKQEAgLTEwOTks
NTQzICsxNDAwLDQgQEAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0Qm91bmRhcnlPZkxpbmUoY29ucwog
ICAgIHJldHVybiBkaXJlY3Rpb24gPT0gTFRSID8gbG9naWNhbEVuZE9mTGluZShjKSA6IGxvZ2lj
YWxTdGFydE9mTGluZShjKTsKIH0KIAotc3RhdGljIGNvbnN0IGludCBpbnZhbGlkT2Zmc2V0ID0g
LTE7Ci1zdGF0aWMgY29uc3QgaW50IG9mZnNldE5vdEZvdW5kID0gLTE7Ci0KLXN0YXRpYyBib29s
IHBvc2l0aW9uSXNJbkJveChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHdvcmRCcmVhaywgY29uc3Qg
SW5saW5lQm94KiBib3gsIGludCYgb2Zmc2V0T2ZXb3JkQnJlYWspCi17Ci0gICAgaWYgKHdvcmRC
cmVhay5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSW5saW5lQm94KiBi
b3hPZldvcmRCcmVhazsKLSAgICB3b3JkQnJlYWsuZ2V0SW5saW5lQm94QW5kT2Zmc2V0KGJveE9m
V29yZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhayk7Ci0gICAgcmV0dXJuIGJveCA9PSBib3hPZldv
cmRCcmVhazsKLX0KLQotc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRCcmVha0lu
Qm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGNvbnN0IElubGluZUJveCogYm94
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHByZXZpb3VzV29yZEJyZWFrLCBpbnQmIG9mZnNldE9m
V29yZEJyZWFrKQotewotICAgIC8vIEluIGEgTFRSIGJsb2NrLCB0aGUgd29yZCBicmVhayBzaG91
bGQgYmUgb24gdGhlIGxlZnQgYm91bmRhcnkgb2YgYSB3b3JkLgotICAgIC8vIEluIGEgUlRMIGJs
b2NrLCB0aGUgd29yZCBicmVhayBzaG91bGQgYmUgb24gdGhlIHJpZ2h0IGJvdW5kYXJ5IG9mIGEg
d29yZC4KLSAgICAvLyBCZWNhdXNlIG5leHRXb3JkUG9zaXRpb24oKSByZXR1cm5zIHRoZSB3b3Jk
IGJyZWFrIG9uIHRoZSByaWdodCBib3VuZGFyeSBvZiB0aGUgd29yZCBmb3IgTFRSIHRleHQsCi0g
ICAgLy8gd2UgbmVlZCB0byB1c2UgcHJldmlvdXNXb3JkUG9zaXRpb24oKSB0byB0cmF2ZXJzZSB3
b3JkcyB3aXRoaW4gdGhlIGlubGluZSBib3hlcyBmcm9tIHJpZ2h0IHRvIGxlZnQKLSAgICAvLyB0
byBmaW5kIHRoZSBwcmV2aW91cyB3b3JkIGJyZWFrIChpLmUuIHRoZSBmaXJzdCB3b3JkIGJyZWFr
IG9uIHRoZSBsZWZ0KS4gVGhlIHNhbWUgYXBwbGllcyB0byBSVEwgdGV4dC4KLSAgICAKLSAgICBi
b29sIGhhc1NlZW5Xb3JkQnJlYWtJblRoaXNCb3ggPSBwcmV2aW91c1dvcmRCcmVhay5pc05vdE51
bGwoKTsKLQotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0KLSAgICBpZiAoaGFzU2Vl
bldvcmRCcmVha0luVGhpc0JveCkKLSAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNXb3JkQnJl
YWs7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHdvcmRCcmVhayA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihib3gtPnJlbmRlcmVyKCktPm5vZGUoKSwgYm94LT5jYXJldE1heE9mZnNldCgpKTsK
LQotICAgICAgICAvLyBSZXR1cm4gdGhlIHJpZ2h0bW9zdCB3b3JkIGJvdW5kYXJ5IG9mIExUUiBi
b3ggb3IgbGVmdG1vc3Qgd29yZCBib3VuZGFyeSBvZiBSVEwgYm94IGlmCi0gICAgICAgIC8vIGl0
IGlzIG5vdCBpbiB0aGUgcHJldmlvdXNseSB2aXNpdGVkIGJveGVzLiBGb3IgZXhhbXBsZSwgZ2l2
ZW4gYSBsb2dpY2FsIHRleHQgCi0gICAgICAgIC8vICJhYmMgZGVmICAgICBoaWogb3BxIiwgdGhl
cmUgYXJlIDIgYm94ZXM6IHRoZSAiYWJjIGRlZiAiIChzdGFydHMgYXQgMCBhbmQgbGVuZ3RoIGlz
IDgpIAotICAgICAgICAvLyBhbmQgdGhlICJoaWogb3BxIiAoc3RhcnRzIGF0IDEyIGFuZCBsZW5n
dGggaXMgNykuIFRoZSB3b3JkIGJyZWFrcyBhcmUgCi0gICAgICAgIC8vICJhYmMgfGRlZiB8ICAg
IGhpaiB8b3BxIi4gV2Ugbm9ybWFsbHkgY2F0Y2ggdGhlIHdvcmQgYnJlYWsgYmV0d2VlbiAiZGVm
IiBhbmQgImhpaiIgd2hlbgotICAgICAgICAvLyB3ZSB2aXNpdCB0aGUgYm94IHRoYXQgY29udGFp
bnMgImhpaiBvcHEiLCBidXQgdGhpcyB3b3JkIGJyZWFrIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIGJv
eAotICAgICAgICAvLyB0aGF0IGNvbnRhaW5zICJoaWogb3BxIiB3aGVuIHRoZXJlIGFyZSBtdWx0
aXBsZSBzcGFjZXMuIFNvIHdlIGRldGVjdCBpdCB3aGVuIHdlJ3JlCi0gICAgICAgIC8vIHRyYXZl
cnNpbmcgdGhlIGJveCB0aGF0IGNvbnRhaW5zICJhYmMgZGVmICIgaW5zdGVhZC4KLQotICAgICAg
ICBpZiAoKGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYmIGJveC0+bmV4dExlYWZDaGls
ZCgpKQotICAgICAgICAgICAgfHwgKCFib3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBi
b3gtPnByZXZMZWFmQ2hpbGQoKSkpIHsKLQotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBv
c2l0aW9uQWZ0ZXJXb3JkID0gbmV4dEJvdW5kYXJ5KHdvcmRCcmVhaywgbmV4dFdvcmRQb3NpdGlv
bkJvdW5kYXJ5KTsKLSAgICAgICAgICAgIGlmIChwb3NpdGlvbkFmdGVyV29yZC5pc05vdE51bGwo
KSkgewotICAgICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZVdvcmQg
PSBwcmV2aW91c0JvdW5kYXJ5KHBvc2l0aW9uQWZ0ZXJXb3JkLCBwcmV2aW91c1dvcmRQb3NpdGlv
bkJvdW5kYXJ5KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbklz
SW5Cb3gocG9zaXRpb25CZWZvcmVXb3JkLCBib3gsIG9mZnNldE9mV29yZEJyZWFrKSkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uQmVmb3JlV29yZDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLSAgCi0gICAgd29yZEJyZWFrID0gcHJldmlvdXNCb3VuZGFyeSh3
b3JkQnJlYWssIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnkpOwotICAgIGlmIChwcmV2aW91
c1dvcmRCcmVhayA9PSB3b3JkQnJlYWspCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
KTsKLQotICAgIHJldHVybiBwb3NpdGlvbklzSW5Cb3god29yZEJyZWFrLCBib3gsIG9mZnNldE9m
V29yZEJyZWFrKSA/IHdvcmRCcmVhayA6IFZpc2libGVQb3NpdGlvbigpOwotfQotCi1zdGF0aWMg
VmlzaWJsZVBvc2l0aW9uIGxlZnRtb3N0UG9zaXRpb25JblJUTEJveEluTFRSQmxvY2soY29uc3Qg
SW5saW5lQm94KiBib3gpCi17Ci0gICAgLy8gRklYTUU6IFByb2JhYmx5IG5lZWQgdG8gdGFrZSBj
YXJlIG9mIGJpZGkgbGV2ZWwgdG9vLgotICAgIE5vZGUqIG5vZGUgPSBib3gtPnJlbmRlcmVyKCkt
Pm5vZGUoKTsKLSAgICBJbmxpbmVCb3gqIHByZXZpb3VzTGVhZiA9IGJveC0+cHJldkxlYWZDaGls
ZCgpOwotICAgIElubGluZUJveCogbmV4dExlYWYgPSBib3gtPm5leHRMZWFmQ2hpbGQoKTsgICAK
LSAgICAKLSAgICBpZiAocHJldmlvdXNMZWFmICYmICFwcmV2aW91c0xlYWYtPmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihub2RlLCBib3gtPmNhcmV0TWF4T2Zmc2V0KCkpOwotCi0gICAgaWYgKG5leHRMZWFmICYmICFu
ZXh0TGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7Ci0gICAgICAgIGlmIChwcmV2aW91
c0xlYWYpCi0gICAgICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHBy
ZXZpb3VzTGVhZi0+cmVuZGVyZXIoKS0+bm9kZSgpLCBwcmV2aW91c0xlYWYtPmNhcmV0TWF4T2Zm
c2V0KCkpOwotCi0gICAgICAgIElubGluZUJveCogbGFzdFJUTExlYWY7Ci0gICAgICAgIGRvIHsK
LSAgICAgICAgICAgIGxhc3RSVExMZWFmID0gbmV4dExlYWY7Ci0gICAgICAgICAgICBuZXh0TGVh
ZiA9IG5leHRMZWFmLT5uZXh0TGVhZkNoaWxkKCk7Ci0gICAgICAgIH0gd2hpbGUgKG5leHRMZWFm
ICYmICFuZXh0TGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKTsKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihsYXN0UlRMTGVhZi0+cmVuZGVyZXIoKS0+bm9k
ZSgpLCBsYXN0UlRMTGVhZi0+Y2FyZXRNaW5PZmZzZXQoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBib3gtPmNhcmV0TWluT2Zmc2V0KCkp
OwotfQotCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0bW9zdFBvc2l0aW9uSW5MVFJCb3hJ
blJUTEJsb2NrKGNvbnN0IElubGluZUJveCogYm94KQotewotICAgIC8vIEZJWE1FOiBQcm9iYWJs
eSBuZWVkIHRvIHRha2UgY2FyZSBvZiBiaWRpIGxldmVsIHRvby4KLSAgICBOb2RlKiBub2RlID0g
Ym94LT5yZW5kZXJlcigpLT5ub2RlKCk7Ci0gICAgSW5saW5lQm94KiBwcmV2aW91c0xlYWYgPSBi
b3gtPnByZXZMZWFmQ2hpbGQoKTsKLSAgICBJbmxpbmVCb3gqIG5leHRMZWFmID0gYm94LT5uZXh0
TGVhZkNoaWxkKCk7ICAgCi0gICAgCi0gICAgaWYgKG5leHRMZWFmICYmIG5leHRMZWFmLT5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkpICAgIAotICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKG5vZGUsIGJveC0+Y2FyZXRNYXhPZmZzZXQoKSk7Ci0KLSAgICBpZiAocHJl
dmlvdXNMZWFmICYmIHByZXZpb3VzTGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7Ci0g
ICAgICAgIGlmIChuZXh0TGVhZikKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0
aW5nUG9zaXRpb24obmV4dExlYWYtPnJlbmRlcmVyKCktPm5vZGUoKSwgbmV4dExlYWYtPmNhcmV0
TWF4T2Zmc2V0KCkpOwotCi0gICAgICAgIElubGluZUJveCogZmlyc3RMVFJMZWFmOwotICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICBmaXJzdExUUkxlYWYgPSBwcmV2aW91c0xlYWY7Ci0gICAgICAg
ICAgICBwcmV2aW91c0xlYWYgPSBwcmV2aW91c0xlYWYtPnByZXZMZWFmQ2hpbGQoKTsKLSAgICAg
ICAgfSB3aGlsZSAocHJldmlvdXNMZWFmICYmIHByZXZpb3VzTGVhZi0+aXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihm
aXJzdExUUkxlYWYtPnJlbmRlcmVyKCktPm5vZGUoKSwgZmlyc3RMVFJMZWFmLT5jYXJldE1pbk9m
ZnNldCgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KG5vZGUsIGJveC0+Y2FyZXRNaW5PZmZzZXQoKSk7Ci19Ci0gICAgCi1zdGF0aWMgVmlzaWJsZVBv
c2l0aW9uIGxhc3RXb3JkQnJlYWtJbkJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50JiBvZmZz
ZXRPZldvcmRCcmVhaykKLXsKLSAgICAvLyBBZGQgdGhlIGxlZnRtb3N0IHdvcmQgYnJlYWsgZm9y
IFJUTCBib3ggb3IgcmlnaHRtb3N0IHdvcmQgYnJlYWsgZm9yIExUUiBib3guCi0gICAgSW5saW5l
Qm94KiBwcmV2aW91c0xlYWYgPSBib3gtPnByZXZMZWFmQ2hpbGQoKTsKLSAgICBJbmxpbmVCb3gq
IG5leHRMZWFmID0gYm94LT5uZXh0TGVhZkNoaWxkKCk7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIGJv
dW5kYXJ5UG9zaXRpb247Ci0gICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gUlRMICYmICghcHJl
dmlvdXNMZWFmIHx8IHByZXZpb3VzTGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSkKLSAg
ICAgICAgYm91bmRhcnlQb3NpdGlvbiA9IGxlZnRtb3N0UG9zaXRpb25JblJUTEJveEluTFRSQmxv
Y2soYm94KTsKLSAgICBlbHNlIGlmIChib3gtPmRpcmVjdGlvbigpID09IExUUiAmJiAoIW5leHRM
ZWFmIHx8ICFuZXh0TGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSkKLSAgICAgICAgYm91
bmRhcnlQb3NpdGlvbiA9IHJpZ2h0bW9zdFBvc2l0aW9uSW5MVFJCb3hJblJUTEJsb2NrKGJveCk7
Ci0KLSAgICBpZiAoYm91bmRhcnlQb3NpdGlvbi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOyAgICAgICAgICAgIAotCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRC
cmVhayA9IG5leHRCb3VuZGFyeShib3VuZGFyeVBvc2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uQm91
bmRhcnkpOwotICAgIGlmICh3b3JkQnJlYWsuaXNOdWxsKCkpCi0gICAgICAgIHdvcmRCcmVhayA9
IGJvdW5kYXJ5UG9zaXRpb247Ci0gICAgZWxzZSBpZiAod29yZEJyZWFrICE9IGJvdW5kYXJ5UG9z
aXRpb24pCi0gICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzQm91bmRhcnkod29yZEJyZWFrLCBw
cmV2aW91c1dvcmRQb3NpdGlvbkJvdW5kYXJ5KTsKLQotICAgIHJldHVybiBwb3NpdGlvbklzSW5C
b3god29yZEJyZWFrLCBib3gsIG9mZnNldE9mV29yZEJyZWFrKSA/IHdvcmRCcmVhayA6IFZpc2li
bGVQb3NpdGlvbigpOyAgICAKLX0KLQotc3RhdGljIGJvb2wgcG9zaXRpb25Jc1Zpc3VhbGx5T3Jk
ZXJlZEluQm94SW5CbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25hbGl0eShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHdvcmRCcmVhaywgY29uc3QgSW5saW5lQm94KiBib3gsIGludCYgb2Zmc2V0T2ZX
b3JkQnJlYWspCi17Ci0gICAgaW50IHByZXZpb3VzT2Zmc2V0ID0gb2Zmc2V0T2ZXb3JkQnJlYWs7
Ci0gICAgcmV0dXJuIHBvc2l0aW9uSXNJbkJveCh3b3JkQnJlYWssIGJveCwgb2Zmc2V0T2ZXb3Jk
QnJlYWspCi0gICAgICAgICYmIChwcmV2aW91c09mZnNldCA9PSBpbnZhbGlkT2Zmc2V0IHx8IHBy
ZXZpb3VzT2Zmc2V0IDwgb2Zmc2V0T2ZXb3JkQnJlYWspOwotfQotICAgIAotc3RhdGljIFZpc2li
bGVQb3NpdGlvbiBuZXh0V29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJlbnREaXJl
Y3Rpb25hbGl0eSgKLSAgICBjb25zdCBJbmxpbmVCb3gqIGJveCwgY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBwcmV2aW91c1dvcmRCcmVhaywgaW50JiBvZmZzZXRPZldvcmRCcmVhaywgYm9vbCYgaXNM
YXN0V29yZEJyZWFrSW5Cb3gpCi17Ci0gICAgLy8gRklYTUU6IFByb2JhYmx5IG5lZWQgdG8gdGFr
ZSBjYXJlIG9mIGJpZGkgbGV2ZWwgdG9vLgotICAgIAotICAgIC8vIEluIGEgTFRSIGJsb2NrLCB0
aGUgd29yZCBicmVhayBzaG91bGQgYmUgb24gdGhlIGxlZnQgYm91bmRhcnkgb2YgYSB3b3JkLgot
ICAgIC8vIEluIGEgUlRMIGJsb2NrLCB0aGUgd29yZCBicmVhayBzaG91bGQgYmUgb24gdGhlIHJp
Z2h0IGJvdW5kYXJ5IG9mIGEgd29yZC4KLSAgICAvLyBCZWNhdXNlIHByZXZpb3VzV29yZFBvc2l0
aW9uKCkgcmV0dXJucyB0aGUgd29yZCBicmVhayBvbiB0aGUgcmlnaHQgYm91bmRhcnkgb2YgdGhl
IHdvcmQgZm9yIFJUTCB0ZXh0LAotICAgIC8vIHdlIG5lZWQgdG8gdXNlIG5leHRXb3JkUG9zaXRp
b24oKSB0byB0cmF2ZXJzZSB3b3JkcyB3aXRoaW4gdGhlIGlubGluZSBib3hlcyBmcm9tIHJpZ2h0
IHRvIGxlZnQgdG8gZmluZCB0aGUgbmV4dCB3b3JkIGJyZWFrLgotICAgIC8vIFRoZSBzYW1lIGFw
cGxpZXMgdG8gTFRSIHRleHQsIGluIHdoaWNoIHdvcmRzIGFyZSB0cmF2ZXJzZWQgd2l0aGluIHRo
ZSBpbmxpbmUgYm94ZXMgZnJvbSBsZWZ0IHRvIHJpZ2h0LgotICAgIAotICAgIGJvb2wgaGFzU2Vl
bldvcmRCcmVha0luVGhpc0JveCA9IHByZXZpb3VzV29yZEJyZWFrLmlzTm90TnVsbCgpOwotICAg
IFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWsgPSBoYXNTZWVuV29yZEJyZWFrSW5UaGlzQm94ID8g
cHJldmlvdXNXb3JkQnJlYWsgOiAKLSAgICAgICAgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KGJveC0+cmVuZGVyZXIoKS0+bm9kZSgpLCBib3gtPmNhcmV0TWluT2Zmc2V0KCkpOwotCi0gICAg
d29yZEJyZWFrID0gbmV4dEJvdW5kYXJ5KHdvcmRCcmVhaywgbmV4dFdvcmRQb3NpdGlvbkJvdW5k
YXJ5KTsKLSAgCi0gICAgLy8gR2l2ZW4gUlRMIGJveCAiQUJDIERFRiIgZWl0aGVyIGZvbGxvd3Mg
YSBMVFIgYm94IG9yIGlzIHRoZSBmaXJzdCB2aXN1YWwgYm94IGluIGFuIExUUiBibG9jayBhcyBh
biBleGFtcGxlLAotICAgIC8vIHRoZSB2aXN1YWwgZGlzcGxheSBvZiB0aGUgUlRMIGJveCBpczog
IigwKUooMTApSSg5KUgoOCkgKDcpRig2KUUoNSlEKDQpICgzKUMoMilCKDEpQSgxMSkiLAotICAg
IC8vIHdoZXJlIHRoZSBudW1iZXIgaW4gcGFyZW50aGVzaXMgcmVwcmVzZW50cyBvZmZzZXQgaW4g
dmlzaWJsZVBvc2l0aW9uLiAKLSAgICAvLyBTdGFydCBhdCBvZmZzZXQgMCwgdGhlIGZpcnN0IHdv
cmQgYnJlYWsgaXMgYXQgb2Zmc2V0IDMsIHRoZSAybmQgd29yZCBicmVhayBpcyBhdCBvZmZzZXQg
NywgYW5kIHRoZSAzcmQgd29yZCBicmVhayBzaG91bGQgYmUgYXQgb2Zmc2V0IDAuCi0gICAgLy8g
QnV0IG5leHRXb3JkUG9zaXRpb24oKSBvZiBvZmZzZXQgNyBpcyBvZmZzZXQgMTEsIHdoaWNoIHNo
b3VsZCBiZSBpZ25vcmVkLCAKLSAgICAvLyBhbmQgdGhlIHBvc2l0aW9uIGF0IG9mZnNldCAwIHNo
b3VsZCBiZSBtYW51YWxseSBhZGRlZCBhcyB0aGUgbGFzdCB3b3JkIGJyZWFrIHdpdGhpbiB0aGUg
Ym94LgotICAgIGlmICh3b3JkQnJlYWsgIT0gcHJldmlvdXNXb3JkQnJlYWsgJiYgcG9zaXRpb25J
c1Zpc3VhbGx5T3JkZXJlZEluQm94SW5CbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25hbGl0eSh3
b3JkQnJlYWssIGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspKSB7Ci0gICAgICAgIGlzTGFzdFdvcmRC
cmVha0luQm94ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiB3b3JkQnJlYWs7Ci0gICAgfQotICAg
IAotICAgIGlzTGFzdFdvcmRCcmVha0luQm94ID0gdHJ1ZTsKLSAgICByZXR1cm4gbGFzdFdvcmRC
cmVha0luQm94KGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspOwotfQotCi1zdHJ1Y3QgV29yZEJvdW5k
YXJ5RW50cnkgewotICAgIFdvcmRCb3VuZGFyeUVudHJ5KCkKLSAgICAgICAgOiBvZmZzZXRJbklu
bGluZUJveChpbnZhbGlkT2Zmc2V0KSAKLSAgICB7IAotICAgIH0KLQotICAgIFdvcmRCb3VuZGFy
eUVudHJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvZmZzZXQpCi0gICAg
ICAgIDogdmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uKQotICAgICAgICAsIG9mZnNldEluSW5saW5l
Qm94KG9mZnNldCkgCi0gICAgeyAKLSAgICB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uOwotICAgIGludCBvZmZzZXRJbklubGluZUJveDsKLX07Ci0gICAgCi10eXBlZGVm
IFZlY3RvcjxXb3JkQm91bmRhcnlFbnRyeSwgNTA+IFdvcmRCb3VuZGFyeVZlY3RvcjsKLSAgICAK
LXN0YXRpYyB2b2lkIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGly
ZWN0aW9uYWxpdHkoY29uc3QgSW5saW5lQm94KiBib3gsIFdvcmRCb3VuZGFyeVZlY3RvciYgb3Jk
ZXJlZFdvcmRCb3VuZGFyaWVzKQotewotICAgIG9yZGVyZWRXb3JkQm91bmRhcmllcy5jbGVhcigp
OwotCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBpbnQgb2Zmc2V0T2ZXb3Jk
QnJlYWsgPSBpbnZhbGlkT2Zmc2V0OwotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIHdvcmRCcmVh
ayA9IHByZXZpb3VzV29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxp
dHkoYm94LCB3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrKTsKLSAgICAgICAgaWYgKHdvcmRC
cmVhay5pc051bGwoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBXb3JkQm91bmRhcnlF
bnRyeSB3b3JkQm91bmRhcnlFbnRyeSh3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrKTsKLSAg
ICAgICAgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLmFwcGVuZCh3b3JkQm91bmRhcnlFbnRyeSk7Ci0g
ICAgfQotfQotCi1zdGF0aWMgdm9pZCBjb2xsZWN0V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tX
aXRoRGlmZmVybnREaXJlY3Rpb25hbGl0eShjb25zdCBJbmxpbmVCb3gqIGJveCwgV29yZEJvdW5k
YXJ5VmVjdG9yJiBvcmRlcmVkV29yZEJvdW5kYXJpZXMpCi17Ci0gICAgb3JkZXJlZFdvcmRCb3Vu
ZGFyaWVzLmNsZWFyKCk7Ci0gICAgCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAg
ICBpbnQgb2Zmc2V0T2ZXb3JkQnJlYWsgPSBpbnZhbGlkT2Zmc2V0OwotICAgIGJvb2wgaXNMYXN0
V29yZEJyZWFrSW5Cb3ggPSBmYWxzZTsKLSAgICB3aGlsZSAoMSkgewotICAgICAgICB3b3JkQnJl
YWsgPSBuZXh0V29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25h
bGl0eShib3gsIHdvcmRCcmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWssIGlzTGFzdFdvcmRCcmVha0lu
Qm94KTsKLSAgICAgICAgaWYgKHdvcmRCcmVhay5pc05vdE51bGwoKSkgewotICAgICAgICAgICAg
V29yZEJvdW5kYXJ5RW50cnkgd29yZEJvdW5kYXJ5RW50cnkod29yZEJyZWFrLCBvZmZzZXRPZldv
cmRCcmVhayk7Ci0gICAgICAgICAgICBvcmRlcmVkV29yZEJvdW5kYXJpZXMuYXBwZW5kKHdvcmRC
b3VuZGFyeUVudHJ5KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNMYXN0V29yZEJyZWFrSW5C
b3gpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbGxlY3RX
b3JkQnJlYWtzSW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gsIFdvcmRCb3VuZGFyeVZlY3RvciYg
b3JkZXJlZFdvcmRCb3VuZGFyaWVzLCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQotewot
ICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0aW9uKQotICAgICAgICBjb2xs
ZWN0V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGJveCwg
b3JkZXJlZFdvcmRCb3VuZGFyaWVzKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbGxlY3RXb3JkQnJl
YWtzSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJudERpcmVjdGlvbmFsaXR5KGJveCwgb3JkZXJl
ZFdvcmRCb3VuZGFyaWVzKTsgICAgICAgIAotfQotICAgIAotc3RhdGljIFZpc2libGVQb3NpdGlv
biBwcmV2aW91c1dvcmRCb3VuZGFyeUluQm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQgb2Zm
c2V0KQotewotICAgIGludCBvZmZzZXRPZldvcmRCcmVhayA9IDA7Ci0gICAgVmlzaWJsZVBvc2l0
aW9uIHdvcmRCcmVhazsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICB3b3JkQnJlYWsgPSBw
cmV2aW91c1dvcmRCcmVha0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGJv
eCwgd29yZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhayk7Ci0gICAgICAgIGlmICh3b3JkQnJlYWsu
aXNOdWxsKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG9mZnNldCA9PSBpbnZh
bGlkT2Zmc2V0IHx8IG9mZnNldE9mV29yZEJyZWFrICE9IG9mZnNldCkKLSAgICAgICAgICAgIHJl
dHVybiB3b3JkQnJlYWs7Ci0gICAgfSAgICAgICAgCi0gICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bigpOwotfQotCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkQm91bmRhcnlJbkJveChj
b25zdCBJbmxpbmVCb3gqIGJveCwgaW50IG9mZnNldCkKLXsKLSAgICBpbnQgb2Zmc2V0T2ZXb3Jk
QnJlYWsgPSAwOwotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0gICAgYm9vbCBpc0xh
c3RXb3JkQnJlYWtJbkJveCA9IGZhbHNlOwotICAgIGRvIHsKLSAgICAgICAgd29yZEJyZWFrID0g
bmV4dFdvcmRCcmVha0luQm94SW5zaWRlQmxvY2tXaXRoRGlmZmVyZW50RGlyZWN0aW9uYWxpdHko
Ym94LCB3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrLCBpc0xhc3RXb3JkQnJlYWtJbkJveCk7
Ci0gICAgICAgIGlmICh3b3JkQnJlYWsuaXNOb3ROdWxsKCkgJiYgKG9mZnNldCA9PSBpbnZhbGlk
T2Zmc2V0IHx8IG9mZnNldE9mV29yZEJyZWFrICE9IG9mZnNldCkpCi0gICAgICAgICAgICByZXR1
cm4gd29yZEJyZWFrOwotICAgIH0gd2hpbGUgKCFpc0xhc3RXb3JkQnJlYWtJbkJveCk7ICAgICAg
IAotICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLX0KLSAgICAKLXN0YXRpYyBWaXNpYmxl
UG9zaXRpb24gdmlzdWFsbHlMYXN0V29yZEJvdW5kYXJ5SW5Cb3goY29uc3QgSW5saW5lQm94KiBi
b3gsIGludCBvZmZzZXQsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCi17Ci0gICAgV29y
ZEJvdW5kYXJ5VmVjdG9yIG9yZGVyZWRXb3JkQm91bmRhcmllczsKLSAgICBjb2xsZWN0V29yZEJy
ZWFrc0luQm94KGJveCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLCBibG9ja0RpcmVjdGlvbik7Ci0g
ICAgaWYgKCFvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpKSAKLSAgICAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOwotICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCB8fCBvcmRl
cmVkV29yZEJvdW5kYXJpZXNbb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDFdLm9mZnNl
dEluSW5saW5lQm94ICE9IG9mZnNldCkKLSAgICAgICAgcmV0dXJuIG9yZGVyZWRXb3JkQm91bmRh
cmllc1tvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMV0udmlzaWJsZVBvc2l0aW9uOwot
ICAgIGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpID4gMSkKLSAgICAgICAgcmV0dXJu
IG9yZGVyZWRXb3JkQm91bmRhcmllc1tvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMl0u
dmlzaWJsZVBvc2l0aW9uOwotICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLX0KLSAgICAg
ICAgCi1zdGF0aWMgaW50IGdyZWF0ZXN0T2Zmc2V0VW5kZXIoaW50IG9mZnNldCwgYm9vbCBib3hB
bmRCbG9ja0FyZUluU2FtZURpcmVjdGlvbiwgY29uc3QgV29yZEJvdW5kYXJ5VmVjdG9yJiBvcmRl
cmVkV29yZEJvdW5kYXJpZXMpCi17Ci0gICAgaWYgKCFvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6
ZSgpKQotICAgICAgICByZXR1cm4gb2Zmc2V0Tm90Rm91bmQ7Ci0gICAgLy8gRklYTUU6IGJpbmFy
eSBzZWFyY2guCi0gICAgaWYgKGJveEFuZEJsb2NrQXJlSW5TYW1lRGlyZWN0aW9uKSB7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXNbaV0ub2Zmc2V0
SW5JbmxpbmVCb3ggPCBvZmZzZXQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIG9mZnNldE5vdEZvdW5kOwotICAgIH0KLSAgICBmb3IgKGludCBp
ID0gb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAg
ICAgIGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXNbaV0ub2Zmc2V0SW5JbmxpbmVCb3ggPCBvZmZz
ZXQpCi0gICAgICAgICAgICByZXR1cm4gaTsKLSAgICB9Ci0gICAgcmV0dXJuIG9mZnNldE5vdEZv
dW5kOwotfQotCi1zdGF0aWMgaW50IHNtYWxsZXN0T2Zmc2V0QWJvdmUoaW50IG9mZnNldCwgYm9v
bCBib3hBbmRCbG9ja0FyZUluU2FtZURpcmVjdGlvbiwgY29uc3QgV29yZEJvdW5kYXJ5VmVjdG9y
JiBvcmRlcmVkV29yZEJvdW5kYXJpZXMpCi17Ci0gICAgaWYgKCFvcmRlcmVkV29yZEJvdW5kYXJp
ZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gb2Zmc2V0Tm90Rm91bmQ7Ci0gICAgLy8gRklYTUU6
IGJpbmFyeSBzZWFyY2guCi0gICAgaWYgKGJveEFuZEJsb2NrQXJlSW5TYW1lRGlyZWN0aW9uKSB7
Ci0gICAgICAgIGZvciAoaW50IGkgPSBvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMTsg
aSA+PSAwOyAtLWkpIHsKLSAgICAgICAgICAgIGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXNbaV0u
b2Zmc2V0SW5JbmxpbmVCb3ggPiBvZmZzZXQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG9mZnNldE5vdEZvdW5kOwotICAgIH0KLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXNbaV0ub2Zmc2V0SW5JbmxpbmVCb3gg
PiBvZmZzZXQpCi0gICAgICAgICAgICByZXR1cm4gaTsKLSAgICB9Ci0gICAgcmV0dXJuIG9mZnNl
dE5vdEZvdW5kOwotfQotCi1zdGF0aWMgY29uc3QgUm9vdElubGluZUJveCogcHJldmlvdXNSb290
SW5saW5lQm94KGNvbnN0IElubGluZUJveCogYm94KQotewotICAgIE5vZGUqIG5vZGUgPSBib3gt
PnJlbmRlcmVyKCktPm5vZGUoKTsKLSAgICBOb2RlKiBlbmNsb3NpbmdCbG9ja05vZGUgPSBlbmNs
b3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKG5vZGUpOwotICAgIE5vZGUqIHByZXZpb3Vz
Tm9kZSA9IG5vZGUtPnByZXZpb3VzTGVhZk5vZGUoKTsKLSAgICB3aGlsZSAocHJldmlvdXNOb2Rl
ICYmIGVuY2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRl
cmVyKHByZXZpb3VzTm9kZSkpCi0gICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTm9kZS0+
cHJldmlvdXNMZWFmTm9kZSgpOwotICAKLSAgICB3aGlsZSAocHJldmlvdXNOb2RlICYmICFwcmV2
aW91c05vZGUtPmlzU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIFBvc2l0aW9uIHBvcyA9IGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihwcmV2aW91c05vZGUsIGNhcmV0TWF4T2Zmc2V0KHByZXZp
b3VzTm9kZSkpOwotICAgICAgICAKLSAgICAgICAgaWYgKHBvcy5pc0NhbmRpZGF0ZSgpKSB7Ci0g
ICAgICAgICAgICBSZW5kZXJlZFBvc2l0aW9uIHJlbmRlcmVkUG9zKHBvcywgRE9XTlNUUkVBTSk7
Ci0gICAgICAgICAgICBSb290SW5saW5lQm94KiByb290ID0gcmVuZGVyZWRQb3Mucm9vdEJveCgp
OwotICAgICAgICAgICAgaWYgKHJvb3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Q7Ci0g
ICAgICAgIH0KLQotICAgICAgICBwcmV2aW91c05vZGUgPSBwcmV2aW91c05vZGUtPnByZXZpb3Vz
TGVhZk5vZGUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBjb25zdCBSb290
SW5saW5lQm94KiBuZXh0Um9vdElubGluZUJveChjb25zdCBJbmxpbmVCb3gqIGJveCkKLXsKLSAg
ICBOb2RlKiBub2RlID0gYm94LT5yZW5kZXJlcigpLT5ub2RlKCk7Ci0gICAgTm9kZSogZW5jbG9z
aW5nQmxvY2tOb2RlID0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihub2RlKTsK
LSAgICBOb2RlKiBuZXh0Tm9kZSA9IG5vZGUtPm5leHRMZWFmTm9kZSgpOwotICAgIHdoaWxlIChu
ZXh0Tm9kZSAmJiBlbmNsb3NpbmdCbG9ja05vZGUgPT0gZW5jbG9zaW5nTm9kZVdpdGhOb25Jbmxp
bmVSZW5kZXJlcihuZXh0Tm9kZSkpCi0gICAgICAgIG5leHROb2RlID0gbmV4dE5vZGUtPm5leHRM
ZWFmTm9kZSgpOwotICAKLSAgICB3aGlsZSAobmV4dE5vZGUgJiYgIW5leHROb2RlLT5pc1NoYWRv
d1Jvb3QoKSkgewotICAgICAgICBQb3NpdGlvbiBwb3M7Ci0gICAgICAgIHBvcyA9IGNyZWF0ZUxl
Z2FjeUVkaXRpbmdQb3NpdGlvbihuZXh0Tm9kZSwgY2FyZXRNaW5PZmZzZXQobmV4dE5vZGUpKTsK
LSAgICAgICAgCi0gICAgICAgIGlmIChwb3MuaXNDYW5kaWRhdGUoKSkgewotICAgICAgICAgICAg
UmVuZGVyZWRQb3NpdGlvbiByZW5kZXJlZFBvcyhwb3MsIERPV05TVFJFQU0pOwotICAgICAgICAg
ICAgUm9vdElubGluZUJveCogcm9vdCA9IHJlbmRlcmVkUG9zLnJvb3RCb3goKTsKLSAgICAgICAg
ICAgIGlmIChyb290KQotICAgICAgICAgICAgICAgIHJldHVybiByb290OwotICAgICAgICB9Ci0K
LSAgICAgICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS0+bmV4dExlYWZOb2RlKCk7Ci0gICAgfQotICAg
IHJldHVybiAwOwotfQotCi1zdGF0aWMgY29uc3QgSW5saW5lQm94KiBsZWZ0SW5saW5lQm94KGNv
bnN0IElubGluZUJveCogYm94LCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQotewotICAg
IGlmIChib3gtPnByZXZMZWFmQ2hpbGQoKSkKLSAgICAgICAgcmV0dXJuIGJveC0+cHJldkxlYWZD
aGlsZCgpOwotICAgIAotICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSBib3gtPnJv
b3QoKTsKLSAgICBjb25zdCBib29sIGlzQmxvY2tMVFIgPSBibG9ja0RpcmVjdGlvbiA9PSBMVFI7
Ci0gICAgY29uc3QgSW5saW5lRmxvd0JveCogbGVmdExpbmVCb3ggPSBpc0Jsb2NrTFRSID8gcm9v
dEJveC0+cHJldkxpbmVCb3goKSA6IHJvb3RCb3gtPm5leHRMaW5lQm94KCk7Ci0gICAgaWYgKGxl
ZnRMaW5lQm94KQotICAgICAgICByZXR1cm4gbGVmdExpbmVCb3gtPmxhc3RMZWFmQ2hpbGQoKTsK
LQotICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIGxlZnRSb290SW5saW5lQm94ID0gaXNCbG9ja0xU
UiA/IHByZXZpb3VzUm9vdElubGluZUJveChib3gpIDoKLSAgICAgICAgbmV4dFJvb3RJbmxpbmVC
b3goYm94KTsgCi0gICAgcmV0dXJuIGxlZnRSb290SW5saW5lQm94ID8gbGVmdFJvb3RJbmxpbmVC
b3gtPmxhc3RMZWFmQ2hpbGQoKSA6IDA7IAotfQotCi1zdGF0aWMgY29uc3QgSW5saW5lQm94KiBy
aWdodElubGluZUJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgVGV4dERpcmVjdGlvbiBibG9ja0Rp
cmVjdGlvbikKLXsKLSAgICBpZiAoYm94LT5uZXh0TGVhZkNoaWxkKCkpCi0gICAgICAgIHJldHVy
biBib3gtPm5leHRMZWFmQ2hpbGQoKTsKLSAgICAKLSAgICBjb25zdCBSb290SW5saW5lQm94KiBy
b290Qm94ID0gYm94LT5yb290KCk7Ci0gICAgY29uc3QgYm9vbCBpc0Jsb2NrTFRSID0gYmxvY2tE
aXJlY3Rpb24gPT0gTFRSOwotICAgIGNvbnN0IElubGluZUZsb3dCb3gqIHJpZ2h0TGluZUJveCA9
IGlzQmxvY2tMVFIgPyByb290Qm94LT5uZXh0TGluZUJveCgpIDogcm9vdEJveC0+cHJldkxpbmVC
b3goKTsKLSAgICBpZiAocmlnaHRMaW5lQm94KQotICAgICAgICByZXR1cm4gcmlnaHRMaW5lQm94
LT5maXJzdExlYWZDaGlsZCgpOwotCi0gICAgY29uc3QgUm9vdElubGluZUJveCogcmlnaHRSb290
SW5saW5lQm94ID0gaXNCbG9ja0xUUiA/IG5leHRSb290SW5saW5lQm94KGJveCkgOgotICAgICAg
ICBwcmV2aW91c1Jvb3RJbmxpbmVCb3goYm94KTsgCi0gICAgcmV0dXJuIHJpZ2h0Um9vdElubGlu
ZUJveCA/IHJpZ2h0Um9vdElubGluZUJveC0+Zmlyc3RMZWFmQ2hpbGQoKSA6IDA7IAotfQotCi1z
dGF0aWMgVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3JkQm91bmRhcnkoY29uc3QgSW5saW5lQm94KiBi
b3gsIGludCBvZmZzZXQsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCi17Ci0gICAgVmlz
aWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBmb3IgIChjb25zdCBJbmxpbmVCb3gqIGFkamFj
ZW50Qm94ID0gYm94OyBhZGphY2VudEJveDsgYWRqYWNlbnRCb3ggPSBsZWZ0SW5saW5lQm94KGFk
amFjZW50Qm94LCBibG9ja0RpcmVjdGlvbikpIHsKLSAgICAgICAgaWYgKGJsb2NrRGlyZWN0aW9u
ID09IExUUikgewotICAgICAgICAgICAgaWYgKGFkamFjZW50Qm94LT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkpIAotICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzV29yZEJvdW5k
YXJ5SW5Cb3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFs
aWRPZmZzZXQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9
IG5leHRXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8g
b2Zmc2V0IDogaW52YWxpZE9mZnNldCk7Ci0gICAgICAgIH0gZWxzZSAKLSAgICAgICAgICAgIHdv
cmRCcmVhayA9IHZpc3VhbGx5TGFzdFdvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGph
Y2VudEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7
ICAgICAgICAgICAgCi0gICAgICAgIGlmICh3b3JkQnJlYWsuaXNOb3ROdWxsKCkpCi0gICAgICAg
ICAgICByZXR1cm4gd29yZEJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KCk7Ci19Ci0gCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0V29yZEJvdW5kYXJ5KGNvbnN0
IElubGluZUJveCogYm94LCBpbnQgb2Zmc2V0LCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9u
KQotewotICAgIAotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0gICAgZm9yIChjb25z
dCBJbmxpbmVCb3gqIGFkamFjZW50Qm94ID0gYm94OyBhZGphY2VudEJveDsgYWRqYWNlbnRCb3gg
PSByaWdodElubGluZUJveChhZGphY2VudEJveCwgYmxvY2tEaXJlY3Rpb24pKSB7Ci0gICAgICAg
IGlmIChibG9ja0RpcmVjdGlvbiA9PSBSVEwpIHsKLSAgICAgICAgICAgIGlmIChhZGphY2VudEJv
eC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9
IG5leHRXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8g
b2Zmc2V0IDogaW52YWxpZE9mZnNldCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgd29yZEJyZWFrID0gcHJldmlvdXNXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRq
YWNlbnRCb3ggPT0gYm94ID8gb2Zmc2V0IDogaW52YWxpZE9mZnNldCk7Ci0gICAgICAgIH0gZWxz
ZSAKLSAgICAgICAgICAgIHdvcmRCcmVhayA9IHZpc3VhbGx5TGFzdFdvcmRCb3VuZGFyeUluQm94
KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0
LCBibG9ja0RpcmVjdGlvbik7ICAgICAgICAgICAgCi0gICAgICAgIGlmICghd29yZEJyZWFrLmlz
TnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsKLSAgICB9Ci0gICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbigpOwotfQotICAgIAotc3RhdGljIGJvb2wgcG9zaXRpb25Jc0luQm94
QnV0Tm90T25Cb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHdvcmRCcmVhaywgY29uc3Qg
SW5saW5lQm94KiBib3gpCi17Ci0gICAgaW50IG9mZnNldE9mV29yZEJyZWFrOwotICAgIHJldHVy
biBwb3NpdGlvbklzSW5Cb3god29yZEJyZWFrLCBib3gsIG9mZnNldE9mV29yZEJyZWFrKQotICAg
ICAgICAmJiBvZmZzZXRPZldvcmRCcmVhayAhPSBib3gtPmNhcmV0TWF4T2Zmc2V0KCkgJiYgb2Zm
c2V0T2ZXb3JkQnJlYWsgIT0gYm94LT5jYXJldE1pbk9mZnNldCgpOwotfQotCi1zdGF0aWMgVmlz
aWJsZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb25JZ25vcmluZ0VkaXRpbmdCb3VuZGFyeShjb25z
dCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKLXsKLSAgICBJbmxpbmVCb3gqIGJv
eDsKLSAgICBpbnQgb2Zmc2V0OwotICAgIHZpc2libGVQb3NpdGlvbi5nZXRJbmxpbmVCb3hBbmRP
ZmZzZXQoYm94LCBvZmZzZXQpOwotCi0gICAgaWYgKCFib3gpCi0gICAgICAgIHJldHVybiBWaXNp
YmxlUG9zaXRpb24oKTsKLQotICAgIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJl
Y3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsK
LQotICAgIC8vIEZJWE1FOiBJZiB0aGUgYm94J3MgZGlyZWN0aW9uYWxpdHkgaXMgdGhlIHNhbWUg
YXMgdGhhdCBvZiB0aGUgZW5jbG9zaW5nIGJsb2NrLCB3aGVuIHRoZSBvZmZzZXQgaXMgYXQgdGhl
IGJveCBib3VuZGFyeQotICAgIC8vIGFuZCB0aGUgZGlyZWN0aW9uIGlzIHRvd2FyZHMgaW5zaWRl
IHRoZSBib3gsIGRvIEkgc3RpbGwgbmVlZCB0byBtYWtlIGl0IGEgc3BlY2lhbCBjYXNlPyBGb3Ig
ZXhhbXBsZSwgYSBMVFIgYm94IGluc2lkZSBhIExUUiBibG9jaywKLSAgICAvLyB3aGVuIG9mZnNl
dCBpcyBhdCBib3gncyBjYXJldE1pbk9mZnNldCBhbmQgdGhlIGRpcmVjdGlvbiBpcyBEaXJlY3Rp
b25SaWdodCwgc2hvdWxkIGl0IGJlIHRha2VuIGNhcmUgYXMgYSBnZW5lcmFsIGNhc2U/Ci0gICAg
aWYgKG9mZnNldCA9PSBib3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKSkKLSAgICAgICAgcmV0dXJu
IGxlZnRXb3JkQm91bmRhcnkobGVmdElubGluZUJveChib3gsIGJsb2NrRGlyZWN0aW9uKSwgaW52
YWxpZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOwotICAgIGlmIChvZmZzZXQgPT0gYm94LT5jYXJl
dFJpZ2h0bW9zdE9mZnNldCgpKQotICAgICAgICByZXR1cm4gbGVmdFdvcmRCb3VuZGFyeShib3gs
IG9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOwotICAgIAotICAgIAotICAgIFZpc2libGVQb3NpdGlv
biB3b3JkQnJlYWs7Ci0gICAgaWYgKGJsb2NrRGlyZWN0aW9uID09IExUUikgewotICAgICAgICBp
ZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBibG9ja0RpcmVjdGlvbikKLSAgICAgICAgICAgIHdvcmRC
cmVhayA9IHByZXZpb3VzQm91bmRhcnkodmlzaWJsZVBvc2l0aW9uLCBwcmV2aW91c1dvcmRQb3Np
dGlvbkJvdW5kYXJ5KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgd29yZEJyZWFrID0gbmV4
dEJvdW5kYXJ5KHZpc2libGVQb3NpdGlvbiwgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5KTsKLSAg
ICB9Ci0gICAgaWYgKHdvcmRCcmVhay5pc05vdE51bGwoKSAmJiBwb3NpdGlvbklzSW5Cb3hCdXRO
b3RPbkJvdW5kYXJ5KHdvcmRCcmVhaywgYm94KSkKLSAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsK
LSAgICAKLSAgICBXb3JkQm91bmRhcnlWZWN0b3Igb3JkZXJlZFdvcmRCb3VuZGFyaWVzOwotICAg
IGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3goYm94LCBvcmRlcmVkV29yZEJvdW5kYXJpZXMsIGJsb2Nr
RGlyZWN0aW9uKTsKLQotICAgIGludCBpbmRleCA9IGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpID8gZ3JlYXRlc3RPZmZzZXRVbmRlcihvZmZzZXQsIGJsb2NrRGlyZWN0aW9uID09IExUUiwg
b3JkZXJlZFdvcmRCb3VuZGFyaWVzKQotICAgICAgICA6IHNtYWxsZXN0T2Zmc2V0QWJvdmUob2Zm
c2V0LCBibG9ja0RpcmVjdGlvbiA9PSBSVEwsIG9yZGVyZWRXb3JkQm91bmRhcmllcyk7Ci0gICAg
aWYgKGluZGV4ID49IDApCi0gICAgICAgIHJldHVybiBvcmRlcmVkV29yZEJvdW5kYXJpZXNbaW5k
ZXhdLnZpc2libGVQb3NpdGlvbjsKLSAgICAKLSAgICByZXR1cm4gbGVmdFdvcmRCb3VuZGFyeShs
ZWZ0SW5saW5lQm94KGJveCwgYmxvY2tEaXJlY3Rpb24pLCBpbnZhbGlkT2Zmc2V0LCBibG9ja0Rp
cmVjdGlvbik7Ci19Ci0KLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkUG9zaXRpb25J
Z25vcmluZ0VkaXRpbmdCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3Np
dGlvbikKLXsKLSAgICBJbmxpbmVCb3gqIGJveDsKLSAgICBpbnQgb2Zmc2V0OwotICAgIHZpc2li
bGVQb3NpdGlvbi5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoYm94LCBvZmZzZXQpOwotCi0gICAgaWYg
KCFib3gpCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLQotICAgIFRleHREaXJl
Y3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQ
b3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKLSAgICAKLSAgICBpZiAob2Zmc2V0ID09IGJveC0+
Y2FyZXRMZWZ0bW9zdE9mZnNldCgpKQotICAgICAgICByZXR1cm4gcmlnaHRXb3JkQm91bmRhcnko
Ym94LCBvZmZzZXQsIGJsb2NrRGlyZWN0aW9uKTsKLSAgICBpZiAob2Zmc2V0ID09IGJveC0+Y2Fy
ZXRSaWdodG1vc3RPZmZzZXQoKSkKLSAgICAgICAgcmV0dXJuIHJpZ2h0V29yZEJvdW5kYXJ5KHJp
Z2h0SW5saW5lQm94KGJveCwgYmxvY2tEaXJlY3Rpb24pLCBpbnZhbGlkT2Zmc2V0LCBibG9ja0Rp
cmVjdGlvbik7Ci0gCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBpZiAoYmxv
Y2tEaXJlY3Rpb24gPT0gUlRMKSB7Ci0gICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IGJs
b2NrRGlyZWN0aW9uKQotICAgICAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNCb3VuZGFyeSh2
aXNpYmxlUG9zaXRpb24sIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnkpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICB3b3JkQnJlYWsgPSBuZXh0Qm91bmRhcnkodmlzaWJsZVBvc2l0aW9u
LCBuZXh0V29yZFBvc2l0aW9uQm91bmRhcnkpOwotICAgIH0KLSAgICBpZiAod29yZEJyZWFrLmlz
Tm90TnVsbCgpICYmIHBvc2l0aW9uSXNJbkJveEJ1dE5vdE9uQm91bmRhcnkod29yZEJyZWFrLCBi
b3gpKQotICAgICAgICByZXR1cm4gd29yZEJyZWFrOwotICAgIAotICAgIFdvcmRCb3VuZGFyeVZl
Y3RvciBvcmRlcmVkV29yZEJvdW5kYXJpZXM7Ci0gICAgY29sbGVjdFdvcmRCcmVha3NJbkJveChi
b3gsIG9yZGVyZWRXb3JkQm91bmRhcmllcywgYmxvY2tEaXJlY3Rpb24pOwotICAgIAotICAgIGlu
dCBpbmRleCA9IGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gc21hbGxlc3RPZmZzZXRB
Ym92ZShvZmZzZXQsIGJsb2NrRGlyZWN0aW9uID09IExUUiwgb3JkZXJlZFdvcmRCb3VuZGFyaWVz
KQotICAgICAgICA6IGdyZWF0ZXN0T2Zmc2V0VW5kZXIob2Zmc2V0LCBibG9ja0RpcmVjdGlvbiA9
PSBSVEwsIG9yZGVyZWRXb3JkQm91bmRhcmllcyk7Ci0gICAgaWYgKGluZGV4ID49IDApCi0gICAg
ICAgIHJldHVybiBvcmRlcmVkV29yZEJvdW5kYXJpZXNbaW5kZXhdLnZpc2libGVQb3NpdGlvbjsK
LSAgICAKLSAgICByZXR1cm4gcmlnaHRXb3JkQm91bmRhcnkocmlnaHRJbmxpbmVCb3goYm94LCBi
bG9ja0RpcmVjdGlvbiksIGludmFsaWRPZmZzZXQsIGJsb2NrRGlyZWN0aW9uKTsKLX0KLQotVmlz
aWJsZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNp
YmxlUG9zaXRpb24pCi17Ci0gICAgaWYgKHZpc2libGVQb3NpdGlvbi5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotCi0gICAgVmlzaWJsZVBvc2l0aW9uIGxlZnRX
b3JkQnJlYWsgPSBsZWZ0V29yZFBvc2l0aW9uSWdub3JpbmdFZGl0aW5nQm91bmRhcnkodmlzaWJs
ZVBvc2l0aW9uKTsKLSAgICBsZWZ0V29yZEJyZWFrID0gdmlzaWJsZVBvc2l0aW9uLmhvbm9yRWRp
dGluZ0JvdW5kYXJ5QXRPckJlZm9yZShsZWZ0V29yZEJyZWFrKTsKLSAgICAKLSAgICAvLyBGSVhN
RTogSG93IHNob3VsZCB3ZSBoYW5kbGUgYSBub24tZWRpdGFibGUgcG9zaXRpb24/Ci0gICAgaWYg
KGxlZnRXb3JkQnJlYWsuaXNOdWxsKCkgJiYgaXNFZGl0YWJsZVBvc2l0aW9uKHZpc2libGVQb3Np
dGlvbi5kZWVwRXF1aXZhbGVudCgpKSkgewotICAgICAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGly
ZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVx
dWl2YWxlbnQoKSk7Ci0gICAgICAgIGxlZnRXb3JkQnJlYWsgPSBibG9ja0RpcmVjdGlvbiA9PSBM
VFIgPyBzdGFydE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbikgOiBlbmRPZkVkaXRh
YmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pOwotICAgIH0KLSAgICByZXR1cm4gbGVmdFdvcmRC
cmVhazsKLX0KLQotVmlzaWJsZVBvc2l0aW9uIHJpZ2h0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQotewotICAgIGlmICh2aXNpYmxlUG9zaXRpb24u
aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLQotICAgIFZpc2li
bGVQb3NpdGlvbiByaWdodFdvcmRCcmVhayA9IHJpZ2h0V29yZFBvc2l0aW9uSWdub3JpbmdFZGl0
aW5nQm91bmRhcnkodmlzaWJsZVBvc2l0aW9uKTsKLSAgICByaWdodFdvcmRCcmVhayA9IHZpc2li
bGVQb3NpdGlvbi5ob25vckVkaXRpbmdCb3VuZGFyeUF0T3JCZWZvcmUocmlnaHRXb3JkQnJlYWsp
OwotCi0gICAgLy8gRklYTUU6IEhvdyBzaG91bGQgd2UgaGFuZGxlIGEgbm9uLWVkaXRhYmxlIHBv
c2l0aW9uPwotICAgIGlmIChyaWdodFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9z
aXRpb24odmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7Ci0gICAgICAgIFRleHRE
aXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2li
bGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKLSAgICAgICAgcmlnaHRXb3JkQnJlYWsgPSBi
bG9ja0RpcmVjdGlvbiA9PSBMVFIgPyBlbmRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRp
b24pIDogc3RhcnRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pOwotICAgIH0KLSAg
ICByZXR1cm4gcmlnaHRXb3JkQnJlYWs7Ci19Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgJKHJldmlzaW9uIDEwNjUwMykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgaW50
IHRleHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CiAgICAgaW50IHRl
eHRCcmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CiAgICAgYm9vbCBpc1Rl
eHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CisgICAgYm9vbCBpc1dvcmRUZXh0QnJl
YWsoVGV4dEJyZWFrSXRlcmF0b3IqKTsKIAogICAgIGNvbnN0IGludCBUZXh0QnJlYWtEb25lID0g
LTE7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3JJQ1UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3JJQ1UuY3BwCShyZXZpc2lvbiAxMDY1MDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM3LDYgKzEzNywxMiBAQCBib29sIGlzVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiBp
dGVyCiAgICAgcmV0dXJuIHVicmtfaXNCb3VuZGFyeShyZWludGVycHJldF9jYXN0PFVCcmVha0l0
ZXJhdG9yKj4oaXRlcmF0b3IpLCBwb3NpdGlvbik7CiB9CiAKK2Jvb2wgaXNXb3JkVGV4dEJyZWFr
KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAgICBpbnQgcnVsZVN0YXR1cyA9IHVi
cmtfZ2V0UnVsZVN0YXR1cyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0
b3IpKTsKKyAgICByZXR1cm4gcnVsZVN0YXR1cyAhPSBVQlJLX1dPUkRfTk9ORTsKK30KKwogc3Rh
dGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRVcEl0ZXJhdG9yV2l0aFJ1bGVzKGJvb2wmIGNyZWF0
ZWRJdGVyYXRvciwgVGV4dEJyZWFrSXRlcmF0b3IqJiBpdGVyYXRvciwKICAgICBjb25zdCBjaGFy
KiBicmVha1J1bGVzLCBjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQogewpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVh
a0l0ZXJhdG9yR3RrLmNwcAkocmV2aXNpb24gMTA2NTAzKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zODUsNCArMzg1LDkgQEAgYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciogaXRl
cgogICAgIHJldHVybiBpdGVyYXRvci0+bV9jaGFySXRlcmF0b3IuZ2V0SW5kZXgoKSA9PSBpbmRl
eDsKIH0KIAorYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqKQoreworICAg
IHJldHVybiB0cnVlOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L3F0L1RleHRCcmVha0l0ZXJhdG9yUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAJKHJldmlzaW9uIDEwNjUw
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw0ICsxNTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGJvb2wgaXNXb3JkVGV4dEJy
ZWFrKFRleHRCcmVha0l0ZXJhdG9yKikKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW5jZS9UZXh0QnJl
YWtJdGVyYXRvcldpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L3dpbmNlL1RleHRCcmVha0l0ZXJhdG9yV2luQ0UuY3BwCShyZXZpc2lvbiAxMDY1MDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbmNlL1RleHRCcmVha0l0ZXJhdG9y
V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNiArMzE3LDExIEBAIGJvb2wgaXNUZXh0
QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9v
bCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqKQoreworICAgIHJldHVybiB0cnVl
OworfQorCiBUZXh0QnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihjb25zdCBV
Q2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQogewogICAgIHJldHVybiBjaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yKHN0cmluZywgbGVuZ3RoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODAwNSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTAyLTE2ICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2luZyBJ
Q1UgYnJlYWsgaXRlcmF0b3IgdG8gc2ltcGxpZnkgdmlzdWFsIHdvcmQgbW92ZW1lbnQgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03ODg1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1ibG9jay1w
b3NpdGlvbmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0
aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50
Lmh0bWw6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5
LW11bHRpLWxpbmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL21v
dmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1saW5lLmh0bWw6CisgICAgICAgICogZWRpdGluZy9z
ZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXNpbmdsZS1zcGFjZS1pbmxpbmUtZWxlbWVu
dC1leHBlY3RlZC50eHQ6CisKIDIwMTItMDItMTYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVucmV2aWV3ZWQgYmFzZWxpbmUgdXBk
YXRlIGZvciBjb21wb3NpdGluZy9zY3JvbGxiYXItcGFpbnRpbmcuaHRtbApJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1ibG9j
ay1wb3NpdGlvbmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUtYmxvY2st
cG9zaXRpb25lZC1lbGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA2NTAzKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1i
bG9jay1wb3NpdGlvbmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0y
LDM3ICsyLDM3IEBACiA9PT09PT09PSBNb3ZlIEJ5IFdvcmQgPT09PQogVGVzdCAxLCBMVFI6CiBN
b3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYmVnaW4gc3RhcnQiWzAsIDZdLCAiYWJjIGRlZiJbMCwg
NF0sICJlbmQgaW5nIlswLCA0XSwgInRoaXMgaXMgZmxvYXQiWzAsIDUsIDhdLCAidGhpcyBpcyBm
aXhlZCJbNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4XSwgInRoaXMgaXMgYWJzb2x1
dGUiWzAsIDUsIDgsIDE2XQorImJlZ2luIHN0YXJ0IlswLCA2XSwgImFiYyBkZWYiWzAsIDRdLCAi
ZW5kIGluZyJbMCwgNF0sICJ0aGlzIGlzIGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQi
WzAsIDUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRl
IlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUi
WzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhl
ZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJj
IGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwg
OCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgs
IDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBk
ZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCiBUZXN0IDIsIExUUjoKIE1vdmUgcmlnaHQg
Ynkgb25lIHdvcmQKLSJhYmMgZGVmIlswLCA0XSwgImVuZCBpbmciWzAsIDRdLCAidGhpcyBpcyBm
bG9hdCJbMCwgNSwgOF0sICJ0aGlzIGlzIGZpeGVkIls1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUi
WzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCisiYWJjIGRlZiJbMCwg
NF0sICJlbmQgaW5nIlswLCA0XSwgInRoaXMgaXMgZmxvYXQiWzAsIDUsIDhdLCAidGhpcyBpcyBm
aXhlZCJbMCwgNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4XSwgInRoaXMgaXMgYWJz
b2x1dGUiWzAsIDUsIDgsIDE2XQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0idGhpcyBpcyBhYnNv
bHV0ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlz
IGZpeGVkIls4LCA1XSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0s
ICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQorInRoaXMgaXMgYWJzb2x1dGUi
WzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhl
ZCJbOCwgNSwgMF0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAi
YWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KIFRlc3QgMywgTFRSOgogTW92ZSBy
aWdodCBieSBvbmUgd29yZAotImVuZCBpbmciWzAsIDRdLCAidGhpcyBpcyBmbG9hdCJbMCwgNSwg
OF0sICJ0aGlzIGlzIGZpeGVkIls1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUiWzAsIDUsIDhdLCAi
dGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCisiZW5kIGluZyJbMCwgNF0sICJ0aGlzIGlz
IGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzAsIDUsIDhdLCAidGhpcyBpcyByZWxh
dGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVm
dCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMg
cmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0
Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFy
dCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0
aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJb
OCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQi
WzYsIDBdCiBUZXN0IDQsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJ0aGlzIGlzIGZs
b2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJb
MCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KKyJ0aGlzIGlzIGZsb2F0
IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzAsIDUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJb
MCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBv
bmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRp
dmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1
LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwg
MF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4
LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwg
MF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBd
CiBUZXN0IDUsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKICJ0aGlzIGlzIGZpeGVkIlsw
LCA1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUiWzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJb
MCwgNSwgOCwgMTZdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJ0aGlzIGlzIGFic29sdXRlIlsx
NiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQi
WzgsIDVdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBk
ZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCisidGhpcyBpcyBhYnNvbHV0ZSJbMTYsIDgs
IDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4LCA1
LCAwXSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMgZGVm
Ils0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQogVGVzdCA2LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5
IG9uZSB3b3JkCiAidGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRl
IlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUi
WzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhl
ZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJj
IGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwg
OCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgs
IDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBk
ZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCiBUZXN0IDcsIExUUjoKIE1vdmUgcmlnaHQg
Ynkgb25lIHdvcmQKICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBi
eSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVs
YXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4
LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJb
NiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZl
Ils4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwg
NSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYs
IDBdCiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12
aXN1YWxseS1pbmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlu
bGluZS1ibG9jay1wb3NpdGlvbmVkLWVsZW1lbnQuaHRtbAkocmV2aXNpb24gMTA2NTAzKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGlu
ZS1ibG9jay1wb3NpdGlvbmVkLWVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcsMzgg
KzE3LDM4IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIAogPGRpdiBpZD0i
dGVzdE1vdmVCeVdvcmQiIGNvbnRlbnRlZGl0YWJsZSBzdHlsZT0id2lkdGg6MjAwMHB4OyBoZWln
aHQ6MjAwMHB4Ij4KIDxkaXYgaWQ9ImRfMSIgZGlyPWx0ciAKLXRpdGxlPSJbZF8xLCAwXVtkXzEs
IDZdW2RfMiwgMF1bZF8yLCA0XVtkXzMsIDBdW2RfMywgNF1bZF80LCAwXVtkXzQsIDVdW2RfNCwg
OF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1
XVtkXzcsIDhdW2RfNywgMTZdfAotW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2Rf
NiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzQsIDhdW2RfNCwgNV1bZF80
LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCit0
aXRsZT0iW2RfMSwgMF1bZF8xLCA2XVtkXzIsIDBdW2RfMiwgNF1bZF8zLCAwXVtkXzMsIDRdW2Rf
NCwgMF1bZF80LCA1XVtkXzQsIDhdW2RfNSwgMF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82
LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAorW2RfNywgMTZd
W2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1b
ZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtk
XzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29y
ZCI+YmVnaW4gc3RhcnQ8L2Rpdj4KIAogPGRpdiBpZD0iZF8yIiBkaXI9bHRyIAotdGl0bGU9Iltk
XzIsIDBdW2RfMiwgNF1bZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2Rf
NSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywgNV1bZF83
LCA4XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhd
W2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1b
ZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAordGl0bGU9
IltkXzIsIDBdW2RfMiwgNF1bZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhd
W2RfNSwgMF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1b
ZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAorW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcs
IDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwg
OF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2
XVtkXzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgc3R5bGU9ImRpc3BsYXk6aW5s
aW5lLWJsb2NrIj5hYmMgZGVmPC9kaXY+CiAKIDxkaXYgaWQ9ImRfMyIgZGlyPWx0ciAKLXRpdGxl
PSJbZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2RfNSwgNV1bZF81LCA4
XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywgNV1bZF83LCA4XVtkXzcsIDE2
XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82
LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMs
IDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAordGl0bGU9IltkXzMsIDBdW2Rf
MywgNF1bZF80LCAwXVtkXzQsIDVdW2RfNCwgOF1bZF81LCAwXVtkXzUsIDVdW2RfNSwgOF1bZF82
LCAwXVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAxNl18Citb
ZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1b
ZF81LCA4XVtkXzUsIDVdW2RfNSwgMF1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtk
XzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAogY2xhc3M9InRlc3RfbW92
ZV9ieV93b3JkIj5lbmQgaW5nPC9kaXY+CiAKIDxkaXYgaWQ9ImRfNCIgZGlyPWx0ciAKLXRpdGxl
PSJbZF80LCAwXVtkXzQsIDVdW2RfNCwgOF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1
XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAotW2RfNywgMTZdW2Rf
NywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81
LCA1XVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIs
IDBdW2RfMSwgNl1bZF8xLCAwXSIgCit0aXRsZT0iW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2Rf
NSwgMF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83
LCA1XVtkXzcsIDhdW2RfNywgMTZdfAorW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBd
W2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1b
ZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtk
XzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgc3R5bGU9ImZsb2F0OmxlZnQiPnRo
aXMgaXMgZmxvYXQ8L2Rpdj4KIAogPGRpdiBpZD0iZF81IiBkaXI9bHRyIAogdGl0bGU9IltkXzUs
IDBdW2RfNSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywg
NV1bZF83LCA4XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtk
XzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2Rf
NCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAor
W2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBd
W2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1b
ZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21v
dmVfYnlfd29yZCIgc3R5bGU9InBvc2l0aW9uOmZpeGVkOyB0b3A6MzBweDsgcmlnaHQ6NXB4Ij50
aGlzIGlzIGZpeGVkPC9kaXY+CiAKIDxkaXYgaWQ9ImRfNiIgZGlyPWx0ciAKIHRpdGxlPSJbZF82
LCAwXVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAxNl18Ci1b
ZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1b
ZF81LCA4XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtk
XzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKK1tkXzcsIDE2XVtkXzcsIDhdW2RfNywg
NV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF81LCAw
XVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBd
W2RfMSwgNl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHN0eWxlPSJwb3Np
dGlvbjpyZWxhdGl2ZTsgbGVmdDoyMHB4Ij50aGlzIGlzIHJlbGF0aXZlPC9kaXY+CiAKIDxkaXYg
aWQ9ImRfNyIgZGlyPWx0ciAKIHRpdGxlPSJbZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAx
Nl18Ci1bZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2Rf
NiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8z
LCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKK1tkXzcsIDE2XVtkXzcsIDhd
W2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1b
ZF81LCAwXVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtk
XzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHN0eWxl
PSJwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxMDBweDsgdG9wOjE1MHB4Ij50aGlzIGlzIGFic29s
dXRlPC9kaXY+CiAKIDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
bW92ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLWxpbmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1t
dWx0aS1saW5lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA2NTAzKQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLWxpbmUtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsOSBAQCBNb3ZlIHJpZ2h0IGJ5IG9u
ZSB3b3JkCiAib3BxIHJzdCB1dncgeHl6IlsxNSwgMTEsIDgsIDMsIDBdLCAiYWJjIGRlZiBnaGkg
amtsIG1uICJbMTYsIDExLCA4LCAzLCAwXQogVGVzdCA4LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25l
IHdvcmQKLSJhYmMgZGVmIGdoaSBqa2wgbW4gIlswLCAzLCA4LCAxMSwgMTYsIDE4XSwgIm9wcSBy
c3QgdXZ3IHh5eiJbMCwgMywgOCwgMTEsIDE1XSAgICBGQUlMIGV4cGVjdGVkOiBbImFiYyBkZWYg
Z2hpIGprbCBtbiAiWyAwLCAgMywgIDgsICAxMSwgIDE2LCBdIm9wcSByc3QgdXZ3IHh5eiJbIDAs
ICAzLCAgOCwgIDExLCAgMTVdCi0iYWJjIGRlZiBnaGkgamtsIG1uICJbMTYsIDE4XSAgIEZBSUwg
ZXhwZWN0ZWQgIm9wcSByc3QgdXZ3IHh5eiJbIDBdCi0iYWJjIGRlZiBnaGkgamtsIG1uICJbMTcs
IDE4XSAgIEZBSUwgZXhwZWN0ZWQgIm9wcSByc3QgdXZ3IHh5eiJbIDBdCisiYWJjIGRlZiBnaGkg
amtsIG1uICJbMCwgMywgOCwgMTEsIDE2XSwgIm9wcSByc3QgdXZ3IHh5eiJbMCwgMywgOCwgMTEs
IDE1XQogTW92ZSByaWdodCBieSBvbmUgd29yZAotIm9wcSByc3QgdXZ3IHh5eiJbMTUsIDExLCA4
LCAzLCAwXSwgImFiYyBkZWYgZ2hpIGprbCBtbiAiWzE4LCAxNiwgMTEsIDgsIDMsIDBdCisib3Bx
IHJzdCB1dncgeHl6IlsxNSwgMTEsIDgsIDMsIDBdLCAiYWJjIGRlZiBnaGkgamtsIG1uICJbMTYs
IDExLCA4LCAzLCAwXQogVGVzdCA5LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKICJBQUEg
QUFBIEFBQSBBQUEgIlswLCA0LCA4LCAxMl0sICJBQUEgQUFBIEFBQSBBQUEiWzAsIDQsIDgsIDEy
LCAxNV0KQEAgLTU5LDIzICs1NywzMCBAQCBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCiAiQUFBIGtq
IEFBQSBtbiBvcHEgQUFBIEFBQSJbMjUsIDIyLCAxOCwgMTQsIDExLCA3LCA0LCAwXSwgIiBhYmMg
ZGVmIEFBQSBBQUEgaGlqIEFBQSBBQUEgdXZ3IHh5eiAiWzMzLCAyOSwgMjUsIDIxLCAxNywgMTMs
IDksIDQsIDFdCiBUZXN0IDEyLCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSIgYWJjIGRl
ZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlsxLCA0LCA5LCAxMywgMTcsIDIxLCAyNSwg
MjksIDMzLCAzNl0sICJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlswLCA0LCA3LCAxMSwgMTQs
IDE4LCAyMiwgMjVdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiIGFiYyBkZWYgQUFBIEFBQSBoaWogQUFB
IEFBQSB1dncgeHl6ICJbIDEsICA0LCAgOSwgIDEzLCAgMTcsICAyMSwgIDI1LCAgMjksICAzMywg
XSJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlsgMCwgIDQsICA3LCAgMTEsICAxNCwgIDE4LCAg
MjIsICAyNV0KLSIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlszMywgMzZd
ICAgRkFJTCBleHBlY3RlZCAiQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFBQSJbIDBdCi0iIGFiYyBk
ZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJbMzUsIDM2XSAgIEZBSUwgZXhwZWN0ZWQg
IkFBQSBraiBBQUEgbW4gb3BxIEFBQSBBQUEiWyAwXQotIiBhYmMgZGVmIEFBQSBBQUEgaGlqIEFB
QSBBQUEgdXZ3IHh5eiAiWzM0LCAzNl0gICBGQUlMIGV4cGVjdGVkICJBQUEga2ogQUFBIG1uIG9w
cSBBQUEgQUFBIlsgMF0KKyIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlsx
LCA0LCA5LCAxMywgMTcsIDIxLCAyNSwgMjksIDMzXSwgIkFBQSBraiBBQUEgbW4gb3BxIEFBQSBB
QUEiWzAsIDQsIDcsIDExLCAxNCwgMTgsIDIyLCAyNV0KIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQK
LSJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlsyNSwgMjIsIDE4LCAxNCwgMTEsIDcsIDQsIDBd
LCAiIGFiYyBkZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJbMzYsIDMzLCAyOSwgMjUs
IDIxLCAxNywgMTMsIDksIDQsIDFdCisiQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFBQSJbMjUsIDIy
LCAxOCwgMTQsIDExLCA3LCA0LCAwXSwgIiBhYmMgZGVmIEFBQSBBQUEgaGlqIEFBQSBBQUEgdXZ3
IHh5eiAiWzMzLCAyOSwgMjUsIDIxLCAxNywgMTMsIDksIDQsIDFdCiBUZXN0IDEzLCBMVFI6CiBN
b3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiAiWzAsIDRdCisiYWJjIGRlZiBnaGkgamts
IG1uICJbMCwgNCwgOCwgMTIsIDE2XSwgIm9wcSByc3QgdXZ3IHh5eiJbMCwgNCwgOCwgMTIsIDE1
XQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iIGhpaiBvcHEiWzgsIDUsIDFdCisib3BxIHJzdCB1
dncgeHl6IlsxNSwgMTIsIDgsIDQsIDBdLCAiYWJjIGRlZiBnaGkgamtsIG1uICJbMTYsIDEyLCA4
LCA0LCAwXQogVGVzdCAxNCwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYg
Z2hpIGprbCBtbiAiWzAsIDQsIDgsIDEyLCAxNiwgMThdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQK
KyJhYmMgZGVmIGdoaSBqa2wgbW4gIlsxOCwgMTYsIDEyLCA4LCA0LCAwXQorVGVzdCAxNSwgTFRS
OgorTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYgIlswLCA0LCA4XQorTW92ZSBsZWZ0
IGJ5IG9uZSB3b3JkCisiIGhpaiBvcHEiWzgsIDUsIDFdCitUZXN0IDE2LCBMVFI6CitNb3ZlIHJp
Z2h0IGJ5IG9uZSB3b3JkCiA8RElWPlswXQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCiA8RElWPlsw
XQotVGVzdCAxNSwgTFRSOgorVGVzdCAxNywgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAog
IlxuMDAiWzNdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKSW5kZXg6IExheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1saW5lLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3Vh
bGx5LW11bHRpLWxpbmUuaHRtbAkocmV2aXNpb24gMTA2NTAzKQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLWxpbmUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCB3aGVyZSBjaGlsZF9ub2RlX2luZGV4IGlzIG9w
dGlvbmFsLCBkZWZhCiAKIDxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1ydGwgaWQ9Im1sXzciIGNs
YXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSJbbWxfNywgMTUsIDVdW21s
XzcsIDExLCA1XVttbF83LCA4LCA1XVttbF83LCAzLCA1XVttbF83LCAwLCA1XVttbF83LCAxNl1b
bWxfNywgMTFdW21sXzcsIDhdW21sXzcsIDNdW21sXzcsIDBdfFttbF83LCAwXVttbF83LCAzXVtt
bF83LCA4XVttbF83LCAxMV1bbWxfNywgMTZdW21sXzcsIDAsIDVdW21sXzcsIDMsIDVdW21sXzcs
IDgsIDVdW21sXzcsIDExLCA1XVttbF83LCAxNSwgNV0iPmFiYyBkZWYgZ2hpIGprbCBtbiA8YnIv
Pjxici8+PGJyLz5vcHEgcnN0IHV2dyB4eXo8L2Rpdj4KIAotPGRpdiBjb250ZW50ZWRpdGFibGUg
ZGlyPXJ0bCBpZD0ibWxfOCIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIGZpeF93aWR0aCIgdGl0
bGU9IlttbF84LCAxNSwgNV1bbWxfOCwgMTEsIDVdW21sXzgsIDgsIDVdW21sXzgsIDMsIDVdW21s
XzgsIDAsIDVdW21sXzgsIDE4XVttbF84LCAxNl1bbWxfOCwgMTFdW21sXzgsIDhdW21sXzgsIDNd
W21sXzgsIDBdfFttbF84LCAwXVttbF84LCAzXVttbF84LCA4XVttbF84LCAxMV1bbWxfOCwgMTZd
W21sXzgsIDAsIDVdW21sXzgsIDMsIDVdW21sXzgsIDgsIDVdW21sXzgsIDExLCA1XVttbF84LCAx
NSwgNV0iPmFiYyBkZWYgZ2hpIGprbCBtbiA8ZGl2Pjxici8+PC9kaXY+PGRpdj48YnIvPjwvZGl2
PjxkaXY+PGJyLz48L2Rpdj5vcHEgcnN0IHV2dyB4eXo8L2Rpdj4KKzxkaXYgY29udGVudGVkaXRh
YmxlIGRpcj1ydGwgaWQ9Im1sXzgiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgi
IHRpdGxlPSJbbWxfOCwgMTUsIDVdW21sXzgsIDExLCA1XVttbF84LCA4LCA1XVttbF84LCAzLCA1
XVttbF84LCAwLCA1XVttbF84LCAxNl1bbWxfOCwgMTFdW21sXzgsIDhdW21sXzgsIDNdW21sXzgs
IDBdfFttbF84LCAwXVttbF84LCAzXVttbF84LCA4XVttbF84LCAxMV1bbWxfOCwgMTZdW21sXzgs
IDAsIDVdW21sXzgsIDMsIDVdW21sXzgsIDgsIDVdW21sXzgsIDExLCA1XVttbF84LCAxNSwgNV0i
PmFiYyBkZWYgZ2hpIGprbCBtbiA8ZGl2Pjxici8+PC9kaXY+PGRpdj48YnIvPjwvZGl2PjxkaXY+
PGJyLz48L2Rpdj5vcHEgcnN0IHV2dyB4eXo8L2Rpdj4KIAogPGRpdiBjb250ZW50ZWRpdGFibGUg
ZGlyPXJ0bCBpZD0ibWxfOSIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIGZpeF93aWR0aCIgdGl0
bGU9IlttbF85LCAxNSwgNV1bbWxfOSwgMTIsIDVdW21sXzksIDgsIDVdW21sXzksIDQsIDVdW21s
XzksIDAsIDVdW21sXzksIDEyXVttbF85LCA4XVttbF85LCA0XVttbF85LCAwXXxbbWxfOSwgMF1b
bWxfOSwgNF1bbWxfOSwgOF1bbWxfOSwgMTJdW21sXzksIDAsIDVdW21sXzksIDQsIDVdW21sXzks
IDgsIDVdW21sXzksIDEyLCA1XVttbF85LCAxNSwgNV0iPteQ15DXkCDXkNeQ15Ag15DXkNeQINeQ
15DXkCA8YnIvPjxici8+PGJyLz7XkNeQ15Ag15DXkNeQINeQ15DXkCDXkNeQ15A8L2Rpdj4KIApA
QCAtNjUsMTEgKzY1LDE1IEBAIHdoZXJlIGNoaWxkX25vZGVfaW5kZXggaXMgb3B0aW9uYWwsIGRl
ZmEKICI+IGFiYyBkZWYg15DXkNeQINeQ15DXkCBoaWog15DXkNeQINeQ15DXkCB1dncgeHl6IDxi
ci8+PGJyLz48YnIvPteQ15DXkCBraiDXkNeQ15AgbW4gb3BxINeQ15DXkCDXkNeQ15A8L2Rpdj4K
IAogPGRpdiBjb250ZW50ZWRpdGFibGUgZGlyPXJ0bCBpZD0ibWxfMTIiIGNsYXNzPSJ0ZXN0X21v
dmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSIKLVttbF8xMiwgMjUsIDVdW21sXzEyLCAyMiwg
NV1bbWxfMTIsIDE4LCA1XVttbF8xMiwgMTQsIDVdW21sXzEyLCAxMSwgNV1bbWxfMTIsIDcsIDVd
W21sXzEyLCA0LCA1XVttbF8xMiwgMCwgNV1bbWxfMTIsIDM2XVttbF8xMiwgMzNdW21sXzEyLCAy
OV1bbWxfMTIsIDI1XVttbF8xMiwgMjFdW21sXzEyLCAxN11bbWxfMTIsIDEzXVttbF8xMiwgOV1b
bWxfMTIsIDRdW21sXzEyLCAxXXxbbWxfMTIsIDFdW21sXzEyLCA0XVttbF8xMiwgOV1bbWxfMTIs
IDEzXVttbF8xMiwgMTddW21sXzEyLCAyMV1bbWxfMTIsIDI1XVttbF8xMiwgMjldW21sXzEyLCAz
M11bbWxfMTIsIDAsIDVdW21sXzEyLCA0LCA1XVttbF8xMiwgNywgNV1bbWxfMTIsIDExLCA1XVtt
bF8xMiwgMTQsIDVdW21sXzEyLCAxOCwgNV1bbWxfMTIsIDIyLCA1XVttbF8xMiwgMjUsIDVdCitb
bWxfMTIsIDI1LCA1XVttbF8xMiwgMjIsIDVdW21sXzEyLCAxOCwgNV1bbWxfMTIsIDE0LCA1XVtt
bF8xMiwgMTEsIDVdW21sXzEyLCA3LCA1XVttbF8xMiwgNCwgNV1bbWxfMTIsIDAsIDVdW21sXzEy
LCAzM11bbWxfMTIsIDI5XVttbF8xMiwgMjVdW21sXzEyLCAyMV1bbWxfMTIsIDE3XVttbF8xMiwg
MTNdW21sXzEyLCA5XVttbF8xMiwgNF1bbWxfMTIsIDFdfFttbF8xMiwgMV1bbWxfMTIsIDRdW21s
XzEyLCA5XVttbF8xMiwgMTNdW21sXzEyLCAxN11bbWxfMTIsIDIxXVttbF8xMiwgMjVdW21sXzEy
LCAyOV1bbWxfMTIsIDMzXVttbF8xMiwgMCwgNV1bbWxfMTIsIDQsIDVdW21sXzEyLCA3LCA1XVtt
bF8xMiwgMTEsIDVdW21sXzEyLCAxNCwgNV1bbWxfMTIsIDE4LCA1XVttbF8xMiwgMjIsIDVdW21s
XzEyLCAyNSwgNV0KICI+IGFiYyBkZWYg15DXkNeQINeQ15DXkCBoaWog15DXkNeQINeQ15DXkCB1
dncgeHl6IDxkaXY+PGJyLz48L2Rpdj48ZGl2Pjxici8+PC9kaXY+PGRpdj48YnIvPjwvZGl2PteQ
15DXkCBraiDXkNeQ15AgbW4gb3BxINeQ15DXkCDXkNeQ15A8L2Rpdj4KIAorPGRpdiBjb250ZW50
ZWRpdGFibGUgZGlyPWx0ciBpZD0ibWxfMTMiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhf
d2lkdGgiIHRpdGxlPSJbbWxfMTMsIDBdW21sXzEzLCA0XVttbF8xMywgOF1bbWxfMTMsIDEyXVtt
bF8xMywgMTZdW21sXzEzLCAwLCA1XVttbF8xMywgNCwgNV1bbWxfMTMsIDgsIDVdW21sXzEzLCAx
MiwgNV1bbWxfMTMsIDE1LCA1XXxbbWxfMTMsIDE1LCA1XVttbF8xMywgMTIsIDVdW21sXzEzLCA4
LCA1XVttbF8xMywgNCwgNV1bbWxfMTMsIDAsIDVdW21sXzEzLCAxNl1bbWxfMTMsIDEyXVttbF8x
MywgOF1bbWxfMTMsIDRdW21sXzEzLCAwXSI+YWJjIGRlZiBnaGkgamtsIG1uIDxkaXY+PC9kaXY+
PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pm9wcSByc3QgdXZ3IHh5ejwvZGl2PgorCis8ZGl2IGNvbnRl
bnRlZGl0YWJsZSBkaXI9bHRyIGlkPSJtbF8xNCIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIGZp
eF93aWR0aCIgdGl0bGU9IlttbF8xNCwgMF1bbWxfMTQsIDRdW21sXzE0LCA4XVttbF8xNCwgMTJd
W21sXzE0LCAxNl1bbWxfMTQsIDE4XXxbbWxfMTQsIDE4XVttbF8xNCwgMTZdW21sXzE0LCAxMl1b
bWxfMTQsIDhdW21sXzE0LCA0XVttbF8xNCwgMF0iPmFiYyBkZWYgZ2hpIGprbCBtbiA8ZGl2Pjwv
ZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj4KKwogPCEtLSBtaXhlZCBlZGl0YWJpbGl0
eSAtLT4KLTxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDR8
OCA1IDEiPmFiYyBkZWYgPHNwYW4gY29udGVudGVkaXRhYmxlPiBpbnNpZGUgc3BhbiA8L3NwYW4+
IGhpaiBvcHE8L2Rpdj4KKzxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRp
dGxlPSIwIDQgOHw4IDUgMSI+YWJjIGRlZiA8c3BhbiBjb250ZW50ZWRpdGFibGU+IGluc2lkZSBz
cGFuIDwvc3Bhbj4gaGlqIG9wcTwvZGl2PgogCiA8ZGl2IGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29y
ZCIgY29udGVudGVkaXRhYmxlIGRpcj1sdHIgdGl0bGU9IjB8MCI+PC9kaXY+CiAKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1zaW5nbGUt
c3BhY2UtaW5saW5lLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1zaW5nbGUtc3BhY2Ut
aW5saW5lLWVsZW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMDY1MDMpCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNl
LWlubGluZS1lbGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTcsMzAgKzE3
LDE0IEBAIE1vdmUgbGVmdCBieSBvbmUgd29yZAogIiByc3QgdXZ3Ils4LCA1LCAxXSwgImhpaiBv
cHEiWzRdLCAiYWJjIGRlZiAiWzgsIDQsIDBdCiBUZXN0IDQsIFJUTDoKIE1vdmUgbGVmdCBieSBv
bmUgd29yZAotImFiYyBkZWYgIlswXSwgIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzNdLCAiYWJj
IGRlZiAiWzcsIDNdLCAiIHJzdCB1dnciWzhdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiYWJjIGRlZiAi
WyAwLCBdIiByc3QgdXZ3IlsgNCwgXSJoaWogb3BxIlsgNywgIDMsIF0iYWJjIGRlZiAiWyA3LCAg
MywgXSIgcnN0IHV2dyJbIDhdCi0iIHJzdCB1dnciWzRdLCAiaGlqIG9wcSJbM10gICBGQUlMIGV4
cGVjdGVkICJoaWogb3BxIlsgN10KLSIgcnN0IHV2dyJbM10sICJoaWogb3BxIlszXSAgIEZBSUwg
ZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotIiByc3QgdXZ3IlsyXSwgImhpaiBvcHEiWzNdICAgRkFJ
TCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iIHJzdCB1dnciWzFdLCAiaGlqIG9wcSJbM10gICBG
QUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLU1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSIgcnN0
IHV2dyJbOF0sICJhYmMgZGVmICJbMywgN10sICJoaWogb3BxIlszXSwgIiByc3QgdXZ3Ils0XSwg
ImFiYyBkZWYgIlswXSAgICBGQUlMIGV4cGVjdGVkOiBbIiByc3QgdXZ3IlsgOCwgXSJhYmMgZGVm
ICJbIDMsICA3LCBdImhpaiBvcHEiWyAzLCAgNywgXSIgcnN0IHV2dyJbIDQsIF0iYWJjIGRlZiAi
WyAwXQotImhpaiBvcHEiWzNdLCAiIHJzdCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9w
cSJbIDddCi0iaGlqIG9wcSJbNF0sICIgcnN0IHV2dyJbNF0gICBGQUlMIGV4cGVjdGVkICJoaWog
b3BxIlsgN10KLSJoaWogb3BxIls1XSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhp
aiBvcHEiWyA3XQotImhpaiBvcHEiWzZdLCAiIHJzdCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAi
aGlqIG9wcSJbIDddCisiYWJjIGRlZiAiWzBdLCAiIHJzdCB1dnciWzRdLCAiaGlqIG9wcSJbNywg
M10sICJhYmMgZGVmICJbNywgM10sICIgcnN0IHV2dyJbOF0KK01vdmUgcmlnaHQgYnkgb25lIHdv
cmQKKyIgcnN0IHV2dyJbOF0sICJhYmMgZGVmICJbMywgN10sICJoaWogb3BxIlszLCA3XSwgIiBy
c3QgdXZ3Ils0XSwgImFiYyBkZWYgIlswXQogVGVzdCA1LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25l
IHdvcmQKLSJhYmMgZGVmICJbMF0sICIgcnN0IHV2dyJbNF0sICJoaWogb3BxIlszXSwgImFiYyBk
ZWYgIls3LCAzXSwgIiByc3QgdXZ3Ils4XSAgICBGQUlMIGV4cGVjdGVkOiBbImFiYyBkZWYgIlsg
MCwgXSIgcnN0IHV2dyJbIDQsIF0iaGlqIG9wcSJbIDcsICAzLCBdImFiYyBkZWYgIlsgNywgIDMs
IF0iIHJzdCB1dnciWyA4XQotIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzNdICAgRkFJTCBleHBl
Y3RlZCAiaGlqIG9wcSJbIDddCi0iIHJzdCB1dnciWzNdLCAiaGlqIG9wcSJbM10gICBGQUlMIGV4
cGVjdGVkICJoaWogb3BxIlsgN10KLSIgcnN0IHV2dyJbMl0sICJoaWogb3BxIlszXSAgIEZBSUwg
ZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotIiByc3QgdXZ3IlsxXSwgImhpaiBvcHEiWzNdICAgRkFJ
TCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi1Nb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iIHJzdCB1
dnciWzhdLCAiYWJjIGRlZiAiWzMsIDddLCAiaGlqIG9wcSJbM10sICIgcnN0IHV2dyJbNF0sICJh
YmMgZGVmICJbMF0gICAgRkFJTCBleHBlY3RlZDogWyIgcnN0IHV2dyJbIDgsIF0iYWJjIGRlZiAi
WyAzLCAgNywgXSJoaWogb3BxIlsgMywgIDcsIF0iIHJzdCB1dnciWyA0LCBdImFiYyBkZWYgIlsg
MF0KLSJoaWogb3BxIlszXSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEi
WyA3XQotImhpaiBvcHEiWzRdLCAiIHJzdCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9w
cSJbIDddCi0iaGlqIG9wcSJbNV0sICIgcnN0IHV2dyJbNF0gICBGQUlMIGV4cGVjdGVkICJoaWog
b3BxIlsgN10KLSJoaWogb3BxIls2XSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhp
aiBvcHEiWyA3XQorImFiYyBkZWYgIlswXSwgIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzcsIDNd
LCAiYWJjIGRlZiAiWzcsIDNdLCAiIHJzdCB1dnciWzhdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3Jk
CisiIHJzdCB1dnciWzhdLCAiYWJjIGRlZiAiWzMsIDddLCAiaGlqIG9wcSJbMywgN10sICIgcnN0
IHV2dyJbNF0sICJhYmMgZGVmICJbMF0KIFRlc3QgNiwgTFRSOgogTW92ZSByaWdodCBieSBvbmUg
d29yZAogImFiYyBkZWYgIlswLCA0LCA4XSwgImhpaiBvcHEiWzRdLCAiIHJzdCB1dnciWzEsIDUs
IDhdCkBAIC02OCw5ICs1MiwxNyBAQCBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKICJGRlogTElHIls3
XSwgIkFCRCBEU1UgIlszLCA3XSwgIkVKSCBGVVgiWzNdLCAiRkZaIExJRyJbM10sICJBQkQgRFNV
ICJbMF0KIFRlc3QgMTEsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotIkFCRCBEU1UgIlsw
LCA0LCA4XSwgImFiYyBkZWYiWzNdLCAiRkZaIExJRyJbNCwgN10KLU1vdmUgcmlnaHQgYnkgb25l
IHdvcmQKLSJGRlogTElHIls3LCA0XSwgImFiYyBkZWYiWzNdLCAiQUJEIERTVSAiWzgsIDQsIDBd
CisiQUJEIERTVSAiWzAsIDRdLCAiYWJjIGRlZiJbM10sICJGRlogTElHIls0LCA3XSAgICBGQUlM
IGV4cGVjdGVkOiBbIkFCRCBEU1UgIlsgMCwgIDQsICA4LCBdImFiYyBkZWYiWyAzLCBdIkZGWiBM
SUciWyA0LCAgN10KKyJBQkQgRFNVICJbNF0sICJhYmMgZGVmIlszXSAgIEZBSUwgZXhwZWN0ZWQg
IkFCRCBEU1UgIlsgOF0KKyJBQkQgRFNVICJbNV0sICJhYmMgZGVmIlszXSAgIEZBSUwgZXhwZWN0
ZWQgIkFCRCBEU1UgIlsgOF0KKyJBQkQgRFNVICJbNl0sICJhYmMgZGVmIlszXSAgIEZBSUwgZXhw
ZWN0ZWQgIkFCRCBEU1UgIlsgOF0KKyJBQkQgRFNVICJbN10sICJhYmMgZGVmIlszXSAgIEZBSUwg
ZXhwZWN0ZWQgIkFCRCBEU1UgIlsgOF0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJGRlogTElH
Ils3LCA0XSwgImFiYyBkZWYiWzNdLCAiQUJEIERTVSAiWzQsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6
IFsiRkZaIExJRyJbIDcsICA0LCBdImFiYyBkZWYiWyAzLCBdIkFCRCBEU1UgIlsgOCwgIDQsICAw
XQorImFiYyBkZWYiWzNdLCAiQUJEIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJEIERTVSAi
WyA4XQorImFiYyBkZWYiWzRdLCAiQUJEIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJEIERT
VSAiWyA4XQorImFiYyBkZWYiWzVdLCAiQUJEIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJE
IERTVSAiWyA4XQorImFiYyBkZWYiWzZdLCAiQUJEIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAi
QUJEIERTVSAiWyA4XQogVGVzdCAxMiwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAogIkFC
RCBEU1UgIlswXSwgIkZGWiBMSUciWzNdLCAiQUJEIERTVSAiWzhdLCAiYWJjIGRlZiJbNF0sICJB
QkQgRFNVICJbNywgM10sICJGRlogTElHIls3XQpAQCAtNzgsNTIgKzcwLDY3IEBAIE1vdmUgbGVm
dCBieSBvbmUgd29yZAogIkZGWiBMSUciWzddLCAiQUJEIERTVSAiWzMsIDddLCAiYWJjIGRlZiJb
NF0sICJBQkQgRFNVICJbOF0sICJGRlogTElHIlszXSwgIkFCRCBEU1UgIlswXQogVGVzdCAxMywg
UlRMOgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iQUJEIERTVSAiWzAsIDQsIDhdLCAiYWJjIGRl
ZiJbM10sICJGRlogTElHIls0LCA3XQotTW92ZSByaWdodCBieSBvbmUgd29yZAotIkZGWiBMSUci
WzcsIDRdLCAiYWJjIGRlZiJbM10sICJBQkQgRFNVICJbOCwgNCwgMF0KKyJBQkQgRFNVICJbMCwg
NF0sICJhYmMgZGVmIlszXSwgIkZGWiBMSUciWzQsIDddICAgIEZBSUwgZXhwZWN0ZWQ6IFsiQUJE
IERTVSAiWyAwLCAgNCwgIDgsIF0iYWJjIGRlZiJbIDMsIF0iRkZaIExJRyJbIDQsICA3XQorIkFC
RCBEU1UgIls0XSwgImFiYyBkZWYiWzNdICAgRkFJTCBleHBlY3RlZCAiQUJEIERTVSAiWyA4XQor
IkFCRCBEU1UgIls1XSwgImFiYyBkZWYiWzNdICAgRkFJTCBleHBlY3RlZCAiQUJEIERTVSAiWyA4
XQorIkFCRCBEU1UgIls2XSwgImFiYyBkZWYiWzNdICAgRkFJTCBleHBlY3RlZCAiQUJEIERTVSAi
WyA4XQorIkFCRCBEU1UgIls3XSwgImFiYyBkZWYiWzNdICAgRkFJTCBleHBlY3RlZCAiQUJEIERT
VSAiWyA4XQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkZGWiBMSUciWzcsIDRdLCAiYWJjIGRl
ZiJbM10sICJBQkQgRFNVICJbNCwgMF0gICAgRkFJTCBleHBlY3RlZDogWyJGRlogTElHIlsgNywg
IDQsIF0iYWJjIGRlZiJbIDMsIF0iQUJEIERTVSAiWyA4LCAgNCwgIDBdCisiYWJjIGRlZiJbM10s
ICJBQkQgRFNVICJbNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgRFNVICJbIDhdCisiYWJjIGRlZiJb
NF0sICJBQkQgRFNVICJbNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgRFNVICJbIDhdCisiYWJjIGRl
ZiJbNV0sICJBQkQgRFNVICJbNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgRFNVICJbIDhdCisiYWJj
IGRlZiJbNl0sICJBQkQgRFNVICJbNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgRFNVICJbIDhdCiBU
ZXN0IDE0LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iQUJEIERTVSAiWzAsIDMsIDhd
LCAiYWJjIGRlZiJbNF0sICJGRlogTElHIlszLCA3XQotTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0i
RkZaIExJRyJbNywgM10sICJhYmMgZGVmIls0XSwgIkFCRCBEU1UgIls4LCAzLCAwXQorIkFCRCBE
U1UgIlswLCAzLCA4XSwgImFiYyBkZWYiWzQsIDddLCAiRkZaIExJRyJbMywgN10gICAgRkFJTCBl
eHBlY3RlZDogWyJBQkQgRFNVICJbIDAsICAzLCAgOCwgXSJhYmMgZGVmIlsgNCwgXSJGRlogTElH
IlsgMywgIDddCisiYWJjIGRlZiJbNCwgN10gICBGQUlMIGV4cGVjdGVkICJGRlogTElHIlsgM10K
KyJhYmMgZGVmIls1LCA3XSAgIEZBSUwgZXhwZWN0ZWQgIkZGWiBMSUciWyAzXQorImFiYyBkZWYi
WzYsIDddICAgRkFJTCBleHBlY3RlZCAiRkZaIExJRyJbIDNdCitNb3ZlIGxlZnQgYnkgb25lIHdv
cmQKKyJGRlogTElHIls3LCAzXSwgImFiYyBkZWYiWzcsIDRdLCAiQUJEIERTVSAiWzgsIDMsIDBd
ICAgIEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIExJRyJbIDcsICAzLCBdImFiYyBkZWYiWyA0LCBdIkFC
RCBEU1UgIlsgOCwgIDMsICAwXQorIkZGWiBMSUciWzNdLCAiYWJjIGRlZiJbN10gICBGQUlMIGV4
cGVjdGVkICJhYmMgZGVmIlsgNF0KKyJGRlogTElHIls0XSwgImFiYyBkZWYiWzddICAgRkFJTCBl
eHBlY3RlZCAiYWJjIGRlZiJbIDRdCisiRkZaIExJRyJbNV0sICJhYmMgZGVmIls3XSAgIEZBSUwg
ZXhwZWN0ZWQgImFiYyBkZWYiWyA0XQorIkZGWiBMSUciWzZdLCAiYWJjIGRlZiJbN10gICBGQUlM
IGV4cGVjdGVkICJhYmMgZGVmIlsgNF0KIFRlc3QgMTUsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUg
d29yZAotIkFCRCBvcHEgRFNVICJbMCwgNCwgOCwgMTJdLCAiYWJjIEFBQSBkZWYiWzgsIDQsIDNd
LCAiRkZaIHJzdCBMSUciWzQsIDgsIDExXSAgICBGQUlMIGV4cGVjdGVkOiBbIkFCRCBvcHEgRFNV
ICJbIDAsICA0LCAgOCwgIDEyLCBdImFiYyBBQUEgZGVmIlsgNCwgIDMsIF0iRkZaIHJzdCBMSUci
WyA0LCAgOCwgIDExXQotIkFCRCBvcHEgRFNVICJbMTJdLCAiYWJjIEFBQSBkZWYiWzhdICAgRkFJ
TCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA0XQotImFiYyBBQUEgZGVmIlsxMCwgOF0gICBGQUlM
IGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDRdCi0iYWJjIEFBQSBkZWYiWzksIDhdICAgRkFJTCBl
eHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA0XQorIkFCRCBvcHEgRFNVICJbMCwgNCwgOCwgMTJdLCAi
YWJjIEFBQSBkZWYiWzQsIDNdLCAiRkZaIHJzdCBMSUciWzQsIDgsIDExXQogTW92ZSByaWdodCBi
eSBvbmUgd29yZAotIkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJhYmMgQUFBIGRlZiJbMywgNCwg
OF0sICJBQkQgb3BxIERTVSAiWzEyLCA4LCA0LCAwXSAgICBGQUlMIGV4cGVjdGVkOiBbIkZGWiBy
c3QgTElHIlsgMTEsICA4LCAgNCwgXSJhYmMgQUFBIGRlZiJbIDMsICA0LCBdIkFCRCBvcHEgRFNV
ICJbIDEyLCAgOCwgIDQsICAwXQotImFiYyBBQUEgZGVmIls0LCA4XSAgIEZBSUwgZXhwZWN0ZWQg
IkFCRCBvcHEgRFNVICJbIDEyXQorIkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJhYmMgQUFBIGRl
ZiJbMywgNF0sICJBQkQgb3BxIERTVSAiWzEyLCA4LCA0LCAwXQogVGVzdCAxNiwgTFRSOgogTW92
ZSByaWdodCBieSBvbmUgd29yZAotIkFCRCBvcHEgRFNVICJbMCwgNF0sICJhYmMgQUFBIGRlZiJb
OCwgNF0sICJBQkQgb3BxIERTVSAiWzEyLCAxMV0sICJGRlogcnN0IExJRyJbNCwgOCwgMTFdICAg
IEZBSUwgZXhwZWN0ZWQ6IFsiQUJEIG9wcSBEU1UgIlsgMCwgIDQsICA4LCBdImFiYyBBQUEgZGVm
IlsgOCwgIDcsIF0iQUJEIG9wcSBEU1UgIlsgMTIsICAxMSwgXSJGRlogcnN0IExJRyJbIDQsICA4
LCAgMTFdCi0iQUJEIG9wcSBEU1UgIls0XSwgImFiYyBBQUEgZGVmIls4XSAgIEZBSUwgZXhwZWN0
ZWQgIkFCRCBvcHEgRFNVICJbIDhdCi0iQUJEIG9wcSBEU1UgIls1XSwgImFiYyBBQUEgZGVmIls4
XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDhdCi0iQUJEIG9wcSBEU1UgIls2XSwg
ImFiYyBBQUEgZGVmIls4XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDhdCi0iQUJE
IG9wcSBEU1UgIls3XSwgImFiYyBBQUEgZGVmIls4XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEg
RFNVICJbIDhdCi0iYWJjIEFBQSBkZWYiWzgsIDRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBk
ZWYiWyA3XQotImFiYyBBQUEgZGVmIls5LCA0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVm
IlsgN10KLSJhYmMgQUFBIGRlZiJbMTAsIDRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYi
WyA3XQotImFiYyBBQUEgZGVmIlsxMSwgNF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJb
IDddCi0iYWJjIEFBQSBkZWYiWzcsIDRdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsg
MTJdCi0iYWJjIEFBQSBkZWYiWzYsIDRdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsg
MTJdCi0iYWJjIEFBQSBkZWYiWzUsIDRdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsg
MTJdCi1Nb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJGRlogcnN0IExJRyJbMTEsIDgsIDRdLCAiQUJE
IG9wcSBEU1UgIlsxMSwgMTJdLCAiYWJjIEFBQSBkZWYiWzcsIDhdLCAiQUJEIG9wcSBEU1UgIls0
LCAwXSAgICBGQUlMIGV4cGVjdGVkOiBbIkZGWiByc3QgTElHIlsgMTEsICA4LCAgNCwgXSJBQkQg
b3BxIERTVSAiWyAxMSwgIDEyLCBdImFiYyBBQUEgZGVmIlsgNywgIDgsIF0iQUJEIG9wcSBEU1Ug
IlsgOCwgIDQsICAwXQotImFiYyBBQUEgZGVmIls4XSwgIkFCRCBvcHEgRFNVICJbNF0gICBGQUlM
IGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyA4XQotIkZGWiByc3QgTElHIlsxXSwgIkFCRCBvcHEg
RFNVICJbNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyA4XQotIkZGWiByc3QgTElH
IlsyXSwgIkFCRCBvcHEgRFNVICJbNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyA4
XQorIkFCRCBvcHEgRFNVICJbMCwgNCwgOF0sICJhYmMgQUFBIGRlZiJbOCwgN10sICJBQkQgb3Bx
IERTVSAiWzEyLCAxMV0sICJGRlogcnN0IExJRyJbNCwgOCwgMTFdCitNb3ZlIGxlZnQgYnkgb25l
IHdvcmQKKyJGRlogcnN0IExJRyJbMTEsIDgsIDRdLCAiQUJEIG9wcSBEU1UgIlsxMSwgMTJdLCAi
YWJjIEFBQSBkZWYiWzcsIDhdLCAiQUJEIG9wcSBEU1UgIls4LCA0LCAwXQogVGVzdCAxNywgUlRM
OgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iQUJEIG9wcSBEU1UgIlswLCA0LCA4LCAxMl0sICJh
YmMgQUFBIGRlZiJbNCwgOF0sICJGRlogcnN0IExJRyJbNCwgOCwgMTFdCi1Nb3ZlIHJpZ2h0IGJ5
IG9uZSB3b3JkCi0iRkZaIHJzdCBMSUciWzExLCA4LCA0XSwgImFiYyBBQUEgZGVmIls4LCA0XSwg
IkFCRCBvcHEgRFNVICJbMTIsIDgsIDQsIDBdCisiQUJEIG9wcSBEU1UgIlswLCA0LCA4LCAxMl0s
ICJhYmMgQUFBIGRlZiJbNF0sICJGRlogcnN0IExJRyJbNCwgOCwgMTFdICAgIEZBSUwgZXhwZWN0
ZWQ6IFsiQUJEIG9wcSBEU1UgIlsgMCwgIDQsICA4LCAgMTIsIF0iYWJjIEFBQSBkZWYiWyA0LCAg
OCwgXSJGRlogcnN0IExJRyJbIDQsICA4LCAgMTFdCisiYWJjIEFBQSBkZWYiWzRdLCAiRkZaIHJz
dCBMSUciWzRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA4XQorImFiYyBBQUEgZGVm
Ils1XSwgIkZGWiByc3QgTElHIls0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0K
KyJhYmMgQUFBIGRlZiJbNl0sICJGRlogcnN0IExJRyJbNF0gICBGQUlMIGV4cGVjdGVkICJhYmMg
QUFBIGRlZiJbIDhdCisiYWJjIEFBQSBkZWYiWzddLCAiRkZaIHJzdCBMSUciWzRdICAgRkFJTCBl
eHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA4XQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkZGWiBy
c3QgTElHIlsxMSwgOCwgNF0sICJhYmMgQUFBIGRlZiJbNF0sICJBQkQgb3BxIERTVSAiWzEyLCA4
LCA0LCAwXSAgICBGQUlMIGV4cGVjdGVkOiBbIkZGWiByc3QgTElHIlsgMTEsICA4LCAgNCwgXSJh
YmMgQUFBIGRlZiJbIDgsICA0LCBdIkFCRCBvcHEgRFNVICJbIDEyLCAgOCwgIDQsICAwXQorIkZG
WiByc3QgTElHIls0XSwgImFiYyBBQUEgZGVmIls0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEg
ZGVmIlsgOF0KKyJGRlogcnN0IExJRyJbM10sICJhYmMgQUFBIGRlZiJbNF0gICBGQUlMIGV4cGVj
dGVkICJhYmMgQUFBIGRlZiJbIDhdCisiRkZaIHJzdCBMSUciWzJdLCAiYWJjIEFBQSBkZWYiWzRd
ICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA4XQorIkZGWiByc3QgTElHIlsxXSwgImFi
YyBBQUEgZGVmIls0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0KKyJhYmMgQUFB
IGRlZiJbMTEsIDRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA4XQorImFiYyBBQUEg
ZGVmIls5LCA0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0KKyJhYmMgQUFBIGRl
ZiJbMTAsIDRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA4XQogVGVzdCAxOCwgTFRS
OgogTW92ZSByaWdodCBieSBvbmUgd29yZAotIkFCRCBvcHEgRFNVICJbMCwgNCwgOCwgMTJdLCAi
YWJjIEFBQSBkZWYiWzQsIDhdLCAiRkZaIHJzdCBMSUciWzQsIDgsIDExXQotTW92ZSBsZWZ0IGJ5
IG9uZSB3b3JkCi0iRkZaIHJzdCBMSUciWzExLCA4LCA0XSwgImFiYyBBQUEgZGVmIls4LCA0XSwg
IkFCRCBvcHEgRFNVICJbMTIsIDgsIDQsIDBdCisiQUJEIG9wcSBEU1UgIlswLCA0LCA4LCAxMl0s
ICJhYmMgQUFBIGRlZiJbNCwgOCwgMTFdLCAiRkZaIHJzdCBMSUciWzQsIDgsIDExXSAgICBGQUlM
IGV4cGVjdGVkOiBbIkFCRCBvcHEgRFNVICJbIDAsICA0LCAgOCwgIDEyLCBdImFiYyBBQUEgZGVm
IlsgNCwgIDgsIF0iRkZaIHJzdCBMSUciWyA0LCAgOCwgIDExXQorImFiYyBBQUEgZGVmIls4LCAx
MV0gICBGQUlMIGV4cGVjdGVkICJGRlogcnN0IExJRyJbIDRdCisiYWJjIEFBQSBkZWYiWzksIDEx
XSAgIEZBSUwgZXhwZWN0ZWQgIkZGWiByc3QgTElHIlsgNF0KKyJhYmMgQUFBIGRlZiJbMTAsIDEx
XSAgIEZBSUwgZXhwZWN0ZWQgIkZGWiByc3QgTElHIlsgNF0KK01vdmUgbGVmdCBieSBvbmUgd29y
ZAorIkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJhYmMgQUFBIGRlZiJbMTEsIDgsIDRdLCAiQUJE
IG9wcSBEU1UgIlsxMiwgOCwgNCwgMF0gICAgRkFJTCBleHBlY3RlZDogWyJGRlogcnN0IExJRyJb
IDExLCAgOCwgIDQsIF0iYWJjIEFBQSBkZWYiWyA4LCAgNCwgXSJBQkQgb3BxIERTVSAiWyAxMiwg
IDgsICA0LCAgMF0KKyJGRlogcnN0IExJRyJbNF0sICJhYmMgQUFBIGRlZiJbMTFdICAgRkFJTCBl
eHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA4XQorIkZGWiByc3QgTElHIlszXSwgImFiYyBBQUEgZGVm
IlsxMV0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDhdCisiRkZaIHJzdCBMSUciWzFd
LCAiYWJjIEFBQSBkZWYiWzExXSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgOF0KKyJG
RlogcnN0IExJRyJbMl0sICJhYmMgQUFBIGRlZiJbMTFdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFB
QSBkZWYiWyA4XQogVGVzdCAxOSwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAogImFhYSAi
WzAsIDRdLCAiYmJiIEFBQSAiWzQsIDddLCAiRkZaIlszXQpAQCAtMTMxLDE0ICsxMzgsNyBAQCBN
b3ZlIGxlZnQgYnkgb25lIHdvcmQKICJGRloiWzNdLCAiYmJiIEFBQSAiWzcsIDRdLCAiYWFhICJb
NCwgMF0KIFRlc3QgMjAsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotIkFCRCBvcHEgcnN0
IERTVSAiWzAsIDQsIDcsIDEyLCAxNl0sICJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsxMiwgOCwgNywg
M10sICJBQlcgaGlqIHh5eiBGWFgiWzQsIDcsIDEyLCAxNV0gICAgRkFJTCBleHBlY3RlZDogWyJB
QkQgb3BxIHJzdCBEU1UgIlsgMCwgIDQsICA3LCAgMTIsICAxNiwgXSJhYmMgdXZ3IEFBQSBkZWYg
bG1uIlsgMTUsICA4LCAgNywgIDMsIF0iQUJXIGhpaiB4eXogRlhYIlsgNCwgIDcsICAxMiwgIDE1
XQotIkFCRCBvcHEgcnN0IERTVSAiWzE2XSwgImFiYyB1dncgQUFBIGRlZiBsbW4iWzEyXSAgIEZB
SUwgZXhwZWN0ZWQgImFiYyB1dncgQUFBIGRlZiBsbW4iWyAxNV0KLSJhYmMgdXZ3IEFBQSBkZWYg
bG1uIlsxOCwgMTJdICAgRkFJTCBleHBlY3RlZCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbIDE1XQot
ImFiYyB1dncgQUFBIGRlZiBsbW4iWzE3LCAxMl0gICBGQUlMIGV4cGVjdGVkICJhYmMgdXZ3IEFB
QSBkZWYgbG1uIlsgMTVdCi0iYWJjIHV2dyBBQUEgZGVmIGxtbiJbMTYsIDEyXSAgIEZBSUwgZXhw
ZWN0ZWQgImFiYyB1dncgQUFBIGRlZiBsbW4iWyAxNV0KLSJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsx
NSwgMTJdICAgRkFJTCBleHBlY3RlZCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbIDhdCi0iYWJjIHV2
dyBBQUEgZGVmIGxtbiJbMTQsIDEyXSAgIEZBSUwgZXhwZWN0ZWQgImFiYyB1dncgQUFBIGRlZiBs
bW4iWyA4XQotImFiYyB1dncgQUFBIGRlZiBsbW4iWzEzLCAxMl0gICBGQUlMIGV4cGVjdGVkICJh
YmMgdXZ3IEFBQSBkZWYgbG1uIlsgOF0KKyJBQkQgb3BxIHJzdCBEU1UgIlswLCA0LCA3LCAxMiwg
MTZdLCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbMTUsIDgsIDcsIDNdLCAiQUJXIGhpaiB4eXogRlhY
Ils0LCA3LCAxMiwgMTVdCiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCiAiQUJXIGhpaiB4eXogRlhY
IlsxNSwgMTIsIDcsIDRdLCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbMywgNywgOCwgMTVdLCAiQUJE
IG9wcSByc3QgRFNVICJbMTYsIDEyLCA3LCA0LCAwXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131476</attachid>
            <date>2012-03-12 17:52:47 -0700</date>
            <delta_ts>2012-03-14 16:43:27 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>78856.v2</filename>
            <type>text/plain</type>
            <size>69103</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAyLTE2ICBYaWFvbWVp
IEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2luZyBJQ1UgYnJlYWsgaXRlcmF0
b3IgdG8gc2ltcGxpZnkgdmlzdWFsIHdvcmQgbW92ZW1lbnQgaW1wbGVtZW50YXRpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVs
aWVzIG9uIElDVSB3b3JkIGJyZWFrIGl0ZXJhdG9yIGFuZCBjdXJzb3IgdmlzdWFsIG1vdmVtZW50
IGJ5IGNoYXJhY3RlciB0byBnZXQgdGhlIHdvcmQgYnJlYWsKKyAgICAgICAgcG9zaXRpb24gaW4g
dmlzdWFsIG9yZGVyLiBJdCByZWR1Y2VzIHRoZSBjb21wbGV4aXR5IG9mIG9sZCBpbXBsZW1lbnRh
dGlvbi4KKworICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1N0YXJ0T2ZXb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRW5kT2ZXb3JkKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNSb290SW5saW5l
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRSb290SW5saW5lQm94KToKKyAgICAgICAgKFdl
YkNvcmU6OnNlYXJjaFByZXZpb3VzQm94SW5TYW1lTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZWFyY2hOZXh0Qm94SW5TYW1lTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hQcmV2aW91
c0JveEluUHJldmlvdXNSb290SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OnNlYXJjaE5l
eHRCb3hJbk5leHRSb290SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdvcmRC
cmVha0l0ZXJhdG9yRm9yTWluT2Zmc2V0Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlV29yZEJyZWFrSXRlcmF0b3JGb3JNYXhPZmZzZXRCb3VuZGFyeSk6CisgICAgICAgIChXZWJD
b3JlOjp3b3JkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6bGVmdFdvcmRQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpyaWdodFdvcmRQb3NpdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjppc1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNXb3JkVGV4dEJyZWFrKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC93aW5jZS9UZXh0QnJlYWtJdGVyYXRvcldpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlzV29yZFRleHRCcmVhayk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wMy0xMiAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmZpbml0ZSBy
ZXBhaW50IGxvb3Agd2l0aCBTVkdJbWFnZUNhY2hlIGFuZCBkZWZlcnJlZCByZXBhaW50IHRpbWVy
cwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCShyZXZpc2lv
biAxMTA0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSwzNjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAK
Ky8vLS0tLSBUaGUgZm9sbG93aW5nIDQgZnVuY3Rpb25zIGFyZSBqdXN0IG1vdmVkIGhlcmUgd2l0
aG91dCBhbnkgZnVuY3Rpb25hbGl0eSBtb2RpZmljYXRpb25zIC0tLS0tLy8KKworLy8gVGhlIGZp
cnN0IGxlYWYgYmVmb3JlIG5vZGUgdGhhdCBoYXMgdGhlIHNhbWUgZWRpdGFiaWxpdHkgYXMgbm9k
ZS4KK3N0YXRpYyBOb2RlKiBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KE5vZGUqIG5v
ZGUsIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUpCit7CisgICAgYm9vbCBlZGl0YWJsZSA9IG5v
ZGUtPnJlbmRlcmVySXNFZGl0YWJsZShlZGl0YWJsZVR5cGUpOworICAgIE5vZGUqIG4gPSBub2Rl
LT5wcmV2aW91c0xlYWZOb2RlKCk7CisgICAgd2hpbGUgKG4pIHsKKyAgICAgICAgaWYgKGVkaXRh
YmxlID09IG4tPnJlbmRlcmVySXNFZGl0YWJsZShlZGl0YWJsZVR5cGUpKQorICAgICAgICAgICAg
cmV0dXJuIG47CisgICAgICAgIG4gPSBuLT5wcmV2aW91c0xlYWZOb2RlKCk7CisgICAgfQorICAg
IHJldHVybiAwOworfQorCitzdGF0aWMgTm9kZSogZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVS
ZW5kZXJlcihOb2RlKiBuKQoreworICAgIGZvciAoTm9kZSogcCA9IG47IHA7IHAgPSBwLT5wYXJl
bnROb2RlKCkpIHsKKyAgICAgICAgaWYgKHAtPnJlbmRlcmVyKCkgJiYgIXAtPnJlbmRlcmVyKCkt
PmlzSW5saW5lKCkpCisgICAgICAgICAgICByZXR1cm4gcDsKKyAgICB9CisgICAgcmV0dXJuIDA7
Cit9CisKK3N0YXRpYyBOb2RlKiBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkoTm9kZSogbm9k
ZSwgaW50IG9mZnNldCkKK3sKKyAgICBib29sIGVkaXRhYmxlID0gbm9kZS0+cmVuZGVyZXJJc0Vk
aXRhYmxlKCk7CisgICAgQVNTRVJUKG9mZnNldCA+PSAwKTsKKyAgICBOb2RlKiBjaGlsZCA9IG5v
ZGUtPmNoaWxkTm9kZShvZmZzZXQpOworICAgIE5vZGUqIG4gPSBjaGlsZCA/IGNoaWxkLT5uZXh0
TGVhZk5vZGUoKSA6IG5vZGUtPmxhc3REZXNjZW5kYW50KCktPm5leHRMZWFmTm9kZSgpOworICAg
IHdoaWxlIChuKSB7CisgICAgICAgIGlmIChlZGl0YWJsZSA9PSBuLT5yZW5kZXJlcklzRWRpdGFi
bGUoKSkKKyAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICBuID0gbi0+bmV4dExlYWZOb2Rl
KCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgTm9kZSogbmV4dExlYWZXaXRo
U2FtZUVkaXRhYmlsaXR5KE5vZGUqIG5vZGUsIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUgPSBD
b250ZW50SXNFZGl0YWJsZSkKK3sKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiAwOwor
ICAgIAorICAgIGJvb2wgZWRpdGFibGUgPSBub2RlLT5yZW5kZXJlcklzRWRpdGFibGUoZWRpdGFi
bGVUeXBlKTsKKyAgICBOb2RlKiBuID0gbm9kZS0+bmV4dExlYWZOb2RlKCk7CisgICAgd2hpbGUg
KG4pIHsKKyAgICAgICAgaWYgKGVkaXRhYmxlID09IG4tPnJlbmRlcmVySXNFZGl0YWJsZShlZGl0
YWJsZVR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIG47CisgICAgICAgIG4gPSBuLT5uZXh0TGVh
Zk5vZGUoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8vLS0tLS0tLS0tLS0tLS0tICBi
ZWdpbiBvZiB2aXN1YWwgd29yZCBtb3ZlbWVudCAgLS0tLS0tLS0tLS0tLS0tLS0tLS8vCisvLyBU
T0RPOiBjb25zb2xpZGF0ZSB3aXRoIHByZXZpb3VzTGluZVBvc2l0aW9uLgorc3RhdGljIGNvbnN0
IFJvb3RJbmxpbmVCb3gqIHByZXZpb3VzUm9vdElubGluZUJveChjb25zdCBJbmxpbmVCb3gqIGJv
eCwgY29uc3QgTm9kZSogaGlnaGVzdFJvb3QpCit7CisgICAgaWYgKGJveC0+cm9vdCgpICYmIGJv
eC0+cm9vdCgpLT5wcmV2TGluZUJveCgpKQorICAgICAgICByZXR1cm4gYm94LT5yb290KCktPnBy
ZXZMaW5lQm94KCktPnJvb3QoKTsKKworICAgIE5vZGUqIG5vZGUgPSBib3gtPnJlbmRlcmVyKCkt
Pm5vZGUoKTsKKyAgICBOb2RlKiBlbmNsb3NpbmdCbG9ja05vZGUgPSBlbmNsb3NpbmdOb2RlV2l0
aE5vbklubGluZVJlbmRlcmVyKG5vZGUpOworICAgIE5vZGUqIHByZXZpb3VzTm9kZSA9IHByZXZp
b3VzTGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobm9kZSwgQ29udGVudElzRWRpdGFibGUpOworICAg
IHdoaWxlIChwcmV2aW91c05vZGUgJiYgZW5jbG9zaW5nQmxvY2tOb2RlID09IGVuY2xvc2luZ05v
ZGVXaXRoTm9uSW5saW5lUmVuZGVyZXIocHJldmlvdXNOb2RlKSkKKyAgICAgICAgcHJldmlvdXNO
b2RlID0gcHJldmlvdXNMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShwcmV2aW91c05vZGUsIENvbnRl
bnRJc0VkaXRhYmxlKTsKKyAgCisgICAgd2hpbGUgKHByZXZpb3VzTm9kZSAmJiAhcHJldmlvdXNO
b2RlLT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBpZiAoaGlnaGVzdEVkaXRhYmxlUm9vdChm
aXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocHJldmlvdXNOb2RlKSwgQ29udGVudElzRWRpdGFi
bGUpICE9IGhpZ2hlc3RSb290KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgUG9zaXRp
b24gcG9zID0gcHJldmlvdXNOb2RlLT5oYXNUYWdOYW1lKGJyVGFnKSA/IHBvc2l0aW9uQmVmb3Jl
Tm9kZShwcmV2aW91c05vZGUpIDogY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHByZXZpb3Vz
Tm9kZSwgY2FyZXRNYXhPZmZzZXQocHJldmlvdXNOb2RlKSk7CisgICAgICAgIAorICAgICAgICBp
ZiAocG9zLmlzQ2FuZGlkYXRlKCkpIHsKKyAgICAgICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVu
ZGVyZWRQb3MocG9zLCBET1dOU1RSRUFNKTsKKyAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIHJv
b3QgPSByZW5kZXJlZFBvcy5yb290Qm94KCk7CisgICAgICAgICAgICBpZiAocm9vdCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcm9vdDsKKyAgICAgICAgfQorCisgICAgICAgIHByZXZpb3VzTm9k
ZSA9IHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFiaWxpdHkocHJldmlvdXNOb2RlLCBDb250ZW50
SXNFZGl0YWJsZSk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgY29uc3QgUm9v
dElubGluZUJveCogbmV4dFJvb3RJbmxpbmVCb3goY29uc3QgSW5saW5lQm94KiBib3gsIGNvbnN0
IE5vZGUqIGhpZ2hlc3RSb290KQoreworICAgIGlmIChib3gtPnJvb3QoKSAmJiBib3gtPnJvb3Qo
KS0+bmV4dExpbmVCb3goKSkKKyAgICAgICAgcmV0dXJuIGJveC0+cm9vdCgpLT5uZXh0TGluZUJv
eCgpLT5yb290KCk7CisKKyAgICBOb2RlKiBub2RlID0gYm94LT5yZW5kZXJlcigpLT5ub2RlKCk7
CisgICAgTm9kZSogZW5jbG9zaW5nQmxvY2tOb2RlID0gZW5jbG9zaW5nTm9kZVdpdGhOb25Jbmxp
bmVSZW5kZXJlcihub2RlKTsKKyAgICBOb2RlKiBuZXh0Tm9kZSA9IG5leHRMZWFmV2l0aFNhbWVF
ZGl0YWJpbGl0eShub2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisgICAgd2hpbGUgKG5leHROb2Rl
ICYmIGVuY2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRl
cmVyKG5leHROb2RlKSkKKyAgICAgICAgbmV4dE5vZGUgPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFi
aWxpdHkobmV4dE5vZGUsIENvbnRlbnRJc0VkaXRhYmxlKTsKKyAgCisgICAgd2hpbGUgKG5leHRO
b2RlICYmICFuZXh0Tm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgaWYgKGhpZ2hlc3RF
ZGl0YWJsZVJvb3QoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5leHROb2RlKSwgQ29udGVu
dElzRWRpdGFibGUpICE9IGhpZ2hlc3RSb290KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgUG9zaXRpb24gcG9zOworICAgICAgICBwb3MgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRp
b24obmV4dE5vZGUsIGNhcmV0TWluT2Zmc2V0KG5leHROb2RlKSk7CisgICAgICAgIAorICAgICAg
ICBpZiAocG9zLmlzQ2FuZGlkYXRlKCkpIHsKKyAgICAgICAgICAgIFJlbmRlcmVkUG9zaXRpb24g
cmVuZGVyZWRQb3MocG9zLCBET1dOU1RSRUFNKTsKKyAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gq
IHJvb3QgPSByZW5kZXJlZFBvcy5yb290Qm94KCk7CisgICAgICAgICAgICBpZiAocm9vdCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcm9vdDsKKyAgICAgICAgfQorCisgICAgICAgIG5leHROb2Rl
ID0gbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5leHROb2RlLCBDb250ZW50SXNFZGl0YWJs
ZSk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2hQcmV2aW91
c0JveEluU2FtZUxpbmUoY29uc3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwgSW5saW5lVGV4dEJv
eComIHByZXZpb3VzQm94KQoreworICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBsZWFmQm94ZXNJbkxv
Z2ljYWxPcmRlcjsKKyAgICB0ZXh0Qm94LT5yb290KCktPmNvbGxlY3RMZWFmQm94ZXNJbkxvZ2lj
YWxPcmRlcihsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcik7CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlm
ICh0ZXh0Qm94ID09IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2ldKQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGlmIChsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcltpXS0+aXNJbmxpbmVUZXh0
Qm94KCkpCisgICAgICAgICAgICBwcmV2aW91c0JveCA9IHRvSW5saW5lVGV4dEJveChsZWFmQm94
ZXNJbkxvZ2ljYWxPcmRlcltpXSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBzZWFyY2hOZXh0
Qm94SW5TYW1lTGluZShjb25zdCBJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LCBJbmxpbmVUZXh0Qm94
KiYgbmV4dEJveCkKK3sKKyAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2Fs
T3JkZXI7CisgICAgdGV4dEJveC0+cm9vdCgpLT5jb2xsZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3Jk
ZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAodGV4
dEJveCA9PSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcltpXSkgeworICAgICAgICAgICAgc2l6ZV90
IGogPSBpICsgMTsKKyAgICAgICAgICAgIHdoaWxlIChqIDwgbGVhZkJveGVzSW5Mb2dpY2FsT3Jk
ZXIuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGxlYWZCb3hlc0luTG9naWNhbE9yZGVy
W2pdLT5pc0lubGluZVRleHRCb3goKSkgeworICAgICAgICAgICAgICAgICAgICBuZXh0Qm94ID0g
dG9JbmxpbmVUZXh0Qm94KGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2pdKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaFBy
ZXZpb3VzQm94SW5QcmV2aW91c1Jvb3RJbmxpbmVCb3goY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2
aXNpYmxlUG9zaXRpb24sIGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gsCisgICAgSW5saW5l
VGV4dEJveComIHByZXZpb3VzQm94LCBib29sJiBwcmV2aW91c0JveEluRGlmZmVyZW50TGluZSkK
K3sKKyAgICBOb2RlKiBoaWdoZXN0Um9vdCA9IGhpZ2hlc3RFZGl0YWJsZVJvb3QodmlzaWJsZVBv
c2l0aW9uLmRlZXBFcXVpdmFsZW50KCksIENvbnRlbnRJc0VkaXRhYmxlKTsKKyAgICBjb25zdCBJ
bmxpbmVCb3gqIHN0YXJ0Qm94ID0gdGV4dEJveDsKKyAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXI7CisKKyAgICB3aGlsZSAoMSkgeyAKKyAgICAgICAgY29uc3Qg
Um9vdElubGluZUJveCogcHJldmlvdXNSb290ID0gcHJldmlvdXNSb290SW5saW5lQm94KHN0YXJ0
Qm94LCBoaWdoZXN0Um9vdCk7CisgICAgICAgIGlmICghcHJldmlvdXNSb290KQorICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuY2xlYXIoKTsKKyAg
ICAgICAgcHJldmlvdXNSb290LT5jb2xsZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVhZkJv
eGVzSW5Mb2dpY2FsT3JkZXIpOworICAgICAgICBpbnQgaSA9IGxlYWZCb3hlc0luTG9naWNhbE9y
ZGVyLnNpemUoKSAtIDE7CisgICAgICAgIGZvciAoOyBpID49MDsgLS1pKSB7CisgICAgICAgICAg
ICBpZiAobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbaV0tPmlzSW5saW5lVGV4dEJveCgpKSB7Cisg
ICAgICAgICAgICAgICAgcHJldmlvdXNCb3ggPSB0b0lubGluZVRleHRCb3gobGVhZkJveGVzSW5M
b2dpY2FsT3JkZXJbaV0pOworICAgICAgICAgICAgICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRM
aW5lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBpZiAoaSA+PSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlm
IChsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXplKCkpCisgICAgICAgICAgICBzdGFydEJveCA9
IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyWzBdOworICAgICAgICBlbHNlCisgICAgICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaE5leHRCb3hJbk5leHRSb290SW5s
aW5lQm94KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBjb25zdCBJbmxp
bmVUZXh0Qm94KiB0ZXh0Qm94LAorICAgIElubGluZVRleHRCb3gqJiBuZXh0Qm94LCBib29sJiBu
ZXh0Qm94SW5EaWZmZXJlbnRMaW5lKQoreworICAgIE5vZGUqIGhpZ2hlc3RSb290ID0gaGlnaGVz
dEVkaXRhYmxlUm9vdCh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSwgQ29udGVudElz
RWRpdGFibGUpOworICAgIGNvbnN0IElubGluZUJveCogc3RhcnRCb3ggPSB0ZXh0Qm94OworICAg
IFZlY3RvcjxJbmxpbmVCb3gqPiBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcjsKKworICAgIHdoaWxl
ICgxKSB7IAorICAgICAgICBjb25zdCBSb290SW5saW5lQm94KiBuZXh0Um9vdCA9IG5leHRSb290
SW5saW5lQm94KHN0YXJ0Qm94LCBoaWdoZXN0Um9vdCk7CisgICAgICAgIGlmICghbmV4dFJvb3Qp
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5j
bGVhcigpOworICAgICAgICBuZXh0Um9vdC0+Y29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVy
KGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKKyAgICAgICAgc2l6ZV90IGkgPSAwOworICAgICAg
ICBmb3IgKDsgaSA8IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICBpZiAobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbaV0tPmlzSW5saW5lVGV4dEJveCgp
KSB7CisgICAgICAgICAgICAgICAgbmV4dEJveCA9IHRvSW5saW5lVGV4dEJveChsZWFmQm94ZXNJ
bkxvZ2ljYWxPcmRlcltpXSk7CisgICAgICAgICAgICAgICAgbmV4dEJveEluRGlmZmVyZW50TGlu
ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGkgPCBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXplKCkpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLnNpemUo
KSkKKyAgICAgICAgICAgIHN0YXJ0Qm94ID0gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbMF07Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQg
Y3JlYXRlV29yZEJyZWFrSXRlcmF0b3JGb3JNaW5PZmZzZXRCb3VuZGFyeShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29uc3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwK
KyAgICBUZXh0QnJlYWtJdGVyYXRvciomIGl0ZXIsIGludCYgcHJldmlvdXNCb3hMZW4sIGJvb2wm
IHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5lKQoreworICAgIHByZXZpb3VzQm94SW5EaWZmZXJl
bnRMaW5lID0gZmFsc2U7CisKKyAgICAvLyBUT0RPOiBob3cgc2hvdWxkIHdlIGhhbmRsZSBub24t
dGV4dCBib3g/CisgICAgSW5saW5lVGV4dEJveCogcHJldmlvdXNCb3ggPSAwOworICAgIHNlYXJj
aFByZXZpb3VzQm94SW5TYW1lTGluZSh0ZXh0Qm94LCBwcmV2aW91c0JveCk7CisKKyAgICBpZiAo
IXByZXZpb3VzQm94KQorICAgICAgICBzZWFyY2hQcmV2aW91c0JveEluUHJldmlvdXNSb290SW5s
aW5lQm94KHZpc2libGVQb3NpdGlvbiwgdGV4dEJveCwgcHJldmlvdXNCb3gsIHByZXZpb3VzQm94
SW5EaWZmZXJlbnRMaW5lKTsKKworICAgIGludCBsZW4gPSAwOworICAgIFZlY3RvcjxVQ2hhciwg
MTAyND4gc3RyaW5nOworICAgIGlmIChwcmV2aW91c0JveCkgeworICAgICAgICBwcmV2aW91c0Jv
eExlbiA9IHByZXZpb3VzQm94LT5sZW4oKTsKKyAgICAgICAgc3RyaW5nLmFwcGVuZChwcmV2aW91
c0JveC0+dGV4dFJlbmRlcmVyKCktPnRleHQoKS0+Y2hhcmFjdGVycygpICsgcHJldmlvdXNCb3gt
PnN0YXJ0KCksIHByZXZpb3VzQm94TGVuKTsgCisgICAgICAgIGxlbiArPSBwcmV2aW91c0JveExl
bjsKKyAgICB9CisgICAgc3RyaW5nLmFwcGVuZCh0ZXh0Qm94LT50ZXh0UmVuZGVyZXIoKS0+dGV4
dCgpLT5jaGFyYWN0ZXJzKCkgKyB0ZXh0Qm94LT5zdGFydCgpLCB0ZXh0Qm94LT5sZW4oKSk7Cisg
ICAgbGVuICs9IHRleHRCb3gtPmxlbigpOworCisgICAgaXRlciA9IHdvcmRCcmVha0l0ZXJhdG9y
KHN0cmluZy5kYXRhKCksIGxlbik7CisgICAgdGV4dEJyZWFrRmlyc3QoaXRlcik7Cit9IAorCitz
dGF0aWMgdm9pZCBjcmVhdGVXb3JkQnJlYWtJdGVyYXRvckZvck1heE9mZnNldEJvdW5kYXJ5KGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBjb25zdCBJbmxpbmVUZXh0Qm94
KiB0ZXh0Qm94LAorICAgIFRleHRCcmVha0l0ZXJhdG9yKiYgaXRlciwgYm9vbCYgbmV4dEJveElu
RGlmZmVyZW50TGluZSkKK3sKKyAgICBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CisK
KyAgICAvLyBUT0RPOiBob3cgc2hvdWxkIHdlIGhhbmRsZSBub24tdGV4dCBib3g/CisgICAgSW5s
aW5lVGV4dEJveCogbmV4dEJveCA9IDA7CisgICAgc2VhcmNoTmV4dEJveEluU2FtZUxpbmUodGV4
dEJveCwgbmV4dEJveCk7CisKKyAgICBpZiAoIW5leHRCb3gpCisgICAgICAgIHNlYXJjaE5leHRC
b3hJbk5leHRSb290SW5saW5lQm94KHZpc2libGVQb3NpdGlvbiwgdGV4dEJveCwgbmV4dEJveCwg
bmV4dEJveEluRGlmZmVyZW50TGluZSk7CisKKyAgICBpbnQgbGVuID0gMDsKKyAgICBWZWN0b3I8
VUNoYXIsIDEwMjQ+IHN0cmluZzsKKyAgICBzdHJpbmcuYXBwZW5kKHRleHRCb3gtPnRleHRSZW5k
ZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIHRleHRCb3gtPnN0YXJ0KCksIHRleHRCb3gt
PmxlbigpKTsKKyAgICBsZW4gKz0gdGV4dEJveC0+bGVuKCk7CisgICAgaWYgKG5leHRCb3gpIHsK
KyAgICAgICAgc3RyaW5nLmFwcGVuZChuZXh0Qm94LT50ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5j
aGFyYWN0ZXJzKCkgKyBuZXh0Qm94LT5zdGFydCgpLCBuZXh0Qm94LT5sZW4oKSk7IAorICAgICAg
ICBsZW4gKz0gbmV4dEJveC0+bGVuKCk7CisgICAgfQorCisgICAgaXRlciA9IHdvcmRCcmVha0l0
ZXJhdG9yKHN0cmluZy5kYXRhKCksIGxlbik7CisgICAgdGV4dEJyZWFrRmlyc3QoaXRlcik7Cit9
IAorCitlbnVtIEVDdXJzb3JNb3ZlbWVudERpcmVjdGlvbiB7CisgICAgTU9WRV9MRUZULCBNT1ZF
X1JJR0hULAorfTsKKworc3RhdGljIGJvb2wgaXNTdGFydE9mV29yZChUZXh0QnJlYWtJdGVyYXRv
ciogaXRlciwgaW50IHBvc2l0aW9uLCBib29sIGhhcmRMaW5lQnJlYWspCit7CisgICAgYm9vbCBi
b3VuZGFyeSA9IGhhcmRMaW5lQnJlYWsgPyB0cnVlIDogaXNUZXh0QnJlYWsoaXRlciwgcG9zaXRp
b24pOworICAgIGlmICghYm91bmRhcnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHRl
eHRCcmVha0ZvbGxvd2luZyhpdGVyLCBwb3NpdGlvbik7CisgICAgcmV0dXJuIGlzV29yZFRleHRC
cmVhayhpdGVyKTsKK30KKworc3RhdGljIGJvb2wgaXNFbmRPZldvcmQoVGV4dEJyZWFrSXRlcmF0
b3IqIGl0ZXIsIGludCBwb3NpdGlvbiwgYm9vbCBoYXJkTGluZUJyZWFrKQoreworICAgIGJvb2wg
Ym91bmRhcnkgPSBpc1RleHRCcmVhayhpdGVyLCBwb3NpdGlvbik7CisgICAgcmV0dXJuIChoYXJk
TGluZUJyZWFrIHx8IGJvdW5kYXJ5KSAmJiBpc1dvcmRUZXh0QnJlYWsoaXRlcik7Cit9CisKK3N0
YXRpYyBWaXNpYmxlUG9zaXRpb24gd29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dmlzaWJsZVBvc2l0aW9uLCBFQ3Vyc29yTW92ZW1lbnREaXJlY3Rpb24gZGlyZWN0aW9uKQorewor
ICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBWaXNpYmxl
UG9zaXRpb24oKTsKKworICAgIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJlY3Rp
b25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKKyAg
ICBJbmxpbmVCb3gqIHByZXZpb3VzbHlWaXNpdGVkQm94ID0gMDsKKyAgICBWaXNpYmxlUG9zaXRp
b24gY3VycmVudCA9IHZpc2libGVQb3NpdGlvbjsKKyAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRl
ciA9IDA7CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb24gYWRqYWNl
bnRCeUNoYXJhY3RlciA9IGRpcmVjdGlvbiA9PSBNT1ZFX1JJR0hUID8gY3VycmVudC5yaWdodCh0
cnVlKSA6IGN1cnJlbnQubGVmdCh0cnVlKTsgCisgICAgICAgIGlmIChhZGphY2VudEJ5Q2hhcmFj
dGVyID09IGN1cnJlbnQgfHwgYWRqYWNlbnRCeUNoYXJhY3Rlci5pc051bGwoKSkKKyAgICAgICAg
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKKyAgICAKKyAgICAgICAgSW5saW5lQm94KiBi
b3g7CisgICAgICAgIGludCBvZmZzZXQ7CisgICAgICAgIGFkamFjZW50QnlDaGFyYWN0ZXIuZGVl
cEVxdWl2YWxlbnQoKS5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoVVBTVFJFQU0sIGJveCwgb2Zmc2V0
KTsKKyAgICAKKyAgICAgICAgLy8gVE9ETzogaG93IHNob3VsZCB3ZSBoYW5kbGUgbm9uIHRleHQg
Ym94PworICAgICAgICBpZiAoIWJveCB8fCAhYm94LT5pc0lubGluZVRleHRCb3goKSkKKyAgICAg
ICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKKworICAgICAgICBJbmxpbmVUZXh0Qm94
KiB0ZXh0Qm94ID0gdG9JbmxpbmVUZXh0Qm94KGJveCk7CisgICAgICAgIGludCBwcmV2aW91c0Jv
eExlbiA9IDA7CisgICAgICAgIGJvb2wgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmUgPSBmYWxz
ZTsKKyAgICAgICAgYm9vbCBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lID0gZmFsc2U7CisKKyAgICAg
ICAgaWYgKG9mZnNldCA9PSBib3gtPmNhcmV0TWluT2Zmc2V0KCkpCisgICAgICAgICAgICBjcmVh
dGVXb3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KHZpc2libGVQb3NpdGlvbiwg
dGV4dEJveCwgaXRlciwgcHJldmlvdXNCb3hMZW4sIHByZXZpb3VzQm94SW5EaWZmZXJlbnRMaW5l
KTsKKyAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID09IGJveC0+Y2FyZXRNYXhPZmZzZXQoKSkKKyAg
ICAgICAgICAgIGNyZWF0ZVdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkodmlz
aWJsZVBvc2l0aW9uLCB0ZXh0Qm94LCBpdGVyLCBuZXh0Qm94SW5EaWZmZXJlbnRMaW5lKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocHJldmlvdXNseVZpc2l0ZWRCb3ggIT0gYm94
KSB7CisgICAgICAgICAgICAgICAgaXRlciA9IHdvcmRCcmVha0l0ZXJhdG9yKHRleHRCb3gtPnRl
eHRSZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIHRleHRCb3gtPnN0YXJ0KCksIHRl
eHRCb3gtPmxlbigpKTsKKyAgICAgICAgICAgICAgICB0ZXh0QnJlYWtGaXJzdChpdGVyKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHByZXZpb3VzbHlWaXNpdGVkQm94ID0gYm94OworICAg
ICAgICB9CisgICAgCisgICAgICAgIGJvb2wgaXNXb3JkQnJlYWsgPSAoYm94LT5kaXJlY3Rpb24o
KSA9PSBibG9ja0RpcmVjdGlvbikgPworICAgICAgICAgICAgaXNTdGFydE9mV29yZChpdGVyLCBv
ZmZzZXQgLSB0ZXh0Qm94LT5zdGFydCgpICsgcHJldmlvdXNCb3hMZW4sCisgICAgICAgICAgICAg
ICAgb2Zmc2V0ID09IChpbnQpdGV4dEJveC0+c3RhcnQoKSAmJiBwcmV2aW91c0JveEluRGlmZmVy
ZW50TGluZSkgOgorICAgICAgICAgICAgaXNFbmRPZldvcmQoaXRlciwgb2Zmc2V0IC0gdGV4dEJv
eC0+c3RhcnQoKSArIHByZXZpb3VzQm94TGVuLAorICAgICAgICAgICAgICAgIG9mZnNldCA9PSAo
aW50KSh0ZXh0Qm94LT5zdGFydCgpICsgdGV4dEJveC0+bGVuKCkpICYmIG5leHRCb3hJbkRpZmZl
cmVudExpbmUpOworICAgICAgICBpZiAoaXNXb3JkQnJlYWspCisgICAgICAgICAgICByZXR1cm4g
YWRqYWNlbnRCeUNoYXJhY3RlcjsKKyAgICAKKyAgICAgICAgY3VycmVudCA9IGFkamFjZW50QnlD
aGFyYWN0ZXI7CisgICAgfQorICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKK30KKworVmlz
aWJsZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNp
YmxlUG9zaXRpb24pCit7CisgICAgVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3JkQnJlYWsgPSB3b3Jk
UG9zaXRpb24odmlzaWJsZVBvc2l0aW9uLCBNT1ZFX0xFRlQpOworICAgIAorICAgIC8vIEZJWE1F
OiBIb3cgc2hvdWxkIHdlIGhhbmRsZSBhIG5vbi1lZGl0YWJsZSBwb3NpdGlvbj8KKyAgICBpZiAo
bGVmdFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0
aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7CisgICAgICAgIFRleHREaXJlY3Rpb24gYmxvY2tEaXJl
Y3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1
aXZhbGVudCgpKTsKKyAgICAgICAgbGVmdFdvcmRCcmVhayA9IGJsb2NrRGlyZWN0aW9uID09IExU
UiA/IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKSA6IGVuZE9mRWRpdGFi
bGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgfQorICAgIHJldHVybiBsZWZ0V29yZEJy
ZWFrOworfQorCitWaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCit7CisgICAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0
V29yZEJyZWFrID0gd29yZFBvc2l0aW9uKHZpc2libGVQb3NpdGlvbiwgTU9WRV9SSUdIVCk7CisK
KyAgICAvLyBGSVhNRTogSG93IHNob3VsZCB3ZSBoYW5kbGUgYSBub24tZWRpdGFibGUgcG9zaXRp
b24/CisgICAgaWYgKHJpZ2h0V29yZEJyZWFrLmlzTnVsbCgpICYmIGlzRWRpdGFibGVQb3NpdGlv
bih2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpIHsKKyAgICAgICAgVGV4dERpcmVj
dGlvbiBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2sodmlzaWJsZVBv
c2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOworICAgICAgICByaWdodFdvcmRCcmVhayA9IGJsb2Nr
RGlyZWN0aW9uID09IExUUiA/IGVuZE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbikg
OiBzdGFydE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgfQorICAgIHJl
dHVybiByaWdodFdvcmRCcmVhazsKK30KKy8vLS0tLS0tLS0tLS0tLS0tICBlbmQgb2YgdmlzdWFs
IHdvcmQgbW92ZW1lbnQgIC0tLS0tLS0tLS0tLS0tLS0tLS0vLworCiBlbnVtIEJvdW5kYXJ5U2Vh
cmNoQ29udGV4dEF2YWlsYWJpbGl0eSB7IERvbnRIYXZlTW9yZUNvbnRleHQsIE1heUhhdmVNb3Jl
Q29udGV4dCB9OwogCiB0eXBlZGVmIHVuc2lnbmVkICgqQm91bmRhcnlTZWFyY2hGdW5jdGlvbiko
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIG9mZnNldCwgQm91bmRhcnlT
ZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5LCBib29sJiBuZWVkTW9yZUNvbnRleHQpOwpAQCAtNTE3
LDI4ICs4NzQsNiBAQCBib29sIGlzRW5kT2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmCiAg
ICAgcmV0dXJuIHAuaXNOb3ROdWxsKCkgJiYgcCA9PSBlbmRPZkxpbmUocCk7CiB9CiAKLS8vIFRo
ZSBmaXJzdCBsZWFmIGJlZm9yZSBub2RlIHRoYXQgaGFzIHRoZSBzYW1lIGVkaXRhYmlsaXR5IGFz
IG5vZGUuCi1zdGF0aWMgTm9kZSogcHJldmlvdXNMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShOb2Rl
KiBub2RlLCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlKQotewotICAgIGJvb2wgZWRpdGFibGUg
PSBub2RlLT5yZW5kZXJlcklzRWRpdGFibGUoZWRpdGFibGVUeXBlKTsKLSAgICBOb2RlKiBuID0g
bm9kZS0+cHJldmlvdXNMZWFmTm9kZSgpOwotICAgIHdoaWxlIChuKSB7Ci0gICAgICAgIGlmIChl
ZGl0YWJsZSA9PSBuLT5yZW5kZXJlcklzRWRpdGFibGUoZWRpdGFibGVUeXBlKSkKLSAgICAgICAg
ICAgIHJldHVybiBuOwotICAgICAgICBuID0gbi0+cHJldmlvdXNMZWFmTm9kZSgpOwotICAgIH0K
LSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIE5vZGUqIGVuY2xvc2luZ05vZGVXaXRoTm9uSW5s
aW5lUmVuZGVyZXIoTm9kZSogbikKLXsKLSAgICBmb3IgKE5vZGUqIHAgPSBuOyBwOyBwID0gcC0+
cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChwLT5yZW5kZXJlcigpICYmICFwLT5yZW5kZXJl
cigpLT5pc0lubGluZSgpKQotICAgICAgICAgICAgcmV0dXJuIHA7Ci0gICAgfQotICAgIHJldHVy
biAwOwotfQotCiBzdGF0aWMgaW5saW5lIEludFBvaW50IGFic29sdXRlTGluZURpcmVjdGlvblBv
aW50VG9Mb2NhbFBvaW50SW5CbG9jayhSb290SW5saW5lQm94KiByb290LCBpbnQgbGluZURpcmVj
dGlvblBvaW50KQogewogICAgIEFTU0VSVChyb290KTsKQEAgLTYyNSwzNCArOTYwLDYgQEAgVmlz
aWJsZVBvc2l0aW9uIHByZXZpb3VzTGluZVBvc2l0aW9uKGNvbgogICAgIHJldHVybiBWaXNpYmxl
UG9zaXRpb24oZmlyc3RQb3NpdGlvbkluTm9kZShyb290RWxlbWVudCksIERPV05TVFJFQU0pOwog
fQogCi1zdGF0aWMgTm9kZSogbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KE5vZGUqIG5vZGUs
IGludCBvZmZzZXQpCi17Ci0gICAgYm9vbCBlZGl0YWJsZSA9IG5vZGUtPnJlbmRlcmVySXNFZGl0
YWJsZSgpOwotICAgIEFTU0VSVChvZmZzZXQgPj0gMCk7Ci0gICAgTm9kZSogY2hpbGQgPSBub2Rl
LT5jaGlsZE5vZGUob2Zmc2V0KTsKLSAgICBOb2RlKiBuID0gY2hpbGQgPyBjaGlsZC0+bmV4dExl
YWZOb2RlKCkgOiBub2RlLT5sYXN0RGVzY2VuZGFudCgpLT5uZXh0TGVhZk5vZGUoKTsKLSAgICB3
aGlsZSAobikgewotICAgICAgICBpZiAoZWRpdGFibGUgPT0gbi0+cmVuZGVyZXJJc0VkaXRhYmxl
KCkpCi0gICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgbiA9IG4tPm5leHRMZWFmTm9kZSgp
OwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIE5vZGUqIG5leHRMZWFmV2l0aFNh
bWVFZGl0YWJpbGl0eShOb2RlKiBub2RlLCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlID0gQ29u
dGVudElzRWRpdGFibGUpCi17Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICAKLSAgICBib29sIGVkaXRhYmxlID0gbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKGVkaXRhYmxl
VHlwZSk7Ci0gICAgTm9kZSogbiA9IG5vZGUtPm5leHRMZWFmTm9kZSgpOwotICAgIHdoaWxlIChu
KSB7Ci0gICAgICAgIGlmIChlZGl0YWJsZSA9PSBuLT5yZW5kZXJlcklzRWRpdGFibGUoZWRpdGFi
bGVUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICBuID0gbi0+bmV4dExlYWZO
b2RlKCk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQogCiBWaXNpYmxlUG9zaXRpb24gbmV4dExp
bmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJnZpc2libGVQb3NpdGlvbiwgaW50IGxp
bmVEaXJlY3Rpb25Qb2ludCwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSkKIHsKQEAgLTEwOTks
NTQzICsxNDA2LDQgQEAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0Qm91bmRhcnlPZkxpbmUoY29ucwog
ICAgIHJldHVybiBkaXJlY3Rpb24gPT0gTFRSID8gbG9naWNhbEVuZE9mTGluZShjKSA6IGxvZ2lj
YWxTdGFydE9mTGluZShjKTsKIH0KIAotc3RhdGljIGNvbnN0IGludCBpbnZhbGlkT2Zmc2V0ID0g
LTE7Ci1zdGF0aWMgY29uc3QgaW50IG9mZnNldE5vdEZvdW5kID0gLTE7Ci0KLXN0YXRpYyBib29s
IHBvc2l0aW9uSXNJbkJveChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHdvcmRCcmVhaywgY29uc3Qg
SW5saW5lQm94KiBib3gsIGludCYgb2Zmc2V0T2ZXb3JkQnJlYWspCi17Ci0gICAgaWYgKHdvcmRC
cmVhay5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSW5saW5lQm94KiBi
b3hPZldvcmRCcmVhazsKLSAgICB3b3JkQnJlYWsuZ2V0SW5saW5lQm94QW5kT2Zmc2V0KGJveE9m
V29yZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhayk7Ci0gICAgcmV0dXJuIGJveCA9PSBib3hPZldv
cmRCcmVhazsKLX0KLQotc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRCcmVha0lu
Qm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGNvbnN0IElubGluZUJveCogYm94
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHByZXZpb3VzV29yZEJyZWFrLCBpbnQmIG9mZnNldE9m
V29yZEJyZWFrKQotewotICAgIC8vIEluIGEgTFRSIGJsb2NrLCB0aGUgd29yZCBicmVhayBzaG91
bGQgYmUgb24gdGhlIGxlZnQgYm91bmRhcnkgb2YgYSB3b3JkLgotICAgIC8vIEluIGEgUlRMIGJs
b2NrLCB0aGUgd29yZCBicmVhayBzaG91bGQgYmUgb24gdGhlIHJpZ2h0IGJvdW5kYXJ5IG9mIGEg
d29yZC4KLSAgICAvLyBCZWNhdXNlIG5leHRXb3JkUG9zaXRpb24oKSByZXR1cm5zIHRoZSB3b3Jk
IGJyZWFrIG9uIHRoZSByaWdodCBib3VuZGFyeSBvZiB0aGUgd29yZCBmb3IgTFRSIHRleHQsCi0g
ICAgLy8gd2UgbmVlZCB0byB1c2UgcHJldmlvdXNXb3JkUG9zaXRpb24oKSB0byB0cmF2ZXJzZSB3
b3JkcyB3aXRoaW4gdGhlIGlubGluZSBib3hlcyBmcm9tIHJpZ2h0IHRvIGxlZnQKLSAgICAvLyB0
byBmaW5kIHRoZSBwcmV2aW91cyB3b3JkIGJyZWFrIChpLmUuIHRoZSBmaXJzdCB3b3JkIGJyZWFr
IG9uIHRoZSBsZWZ0KS4gVGhlIHNhbWUgYXBwbGllcyB0byBSVEwgdGV4dC4KLSAgICAKLSAgICBi
b29sIGhhc1NlZW5Xb3JkQnJlYWtJblRoaXNCb3ggPSBwcmV2aW91c1dvcmRCcmVhay5pc05vdE51
bGwoKTsKLQotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0KLSAgICBpZiAoaGFzU2Vl
bldvcmRCcmVha0luVGhpc0JveCkKLSAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNXb3JkQnJl
YWs7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHdvcmRCcmVhayA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihib3gtPnJlbmRlcmVyKCktPm5vZGUoKSwgYm94LT5jYXJldE1heE9mZnNldCgpKTsK
LQotICAgICAgICAvLyBSZXR1cm4gdGhlIHJpZ2h0bW9zdCB3b3JkIGJvdW5kYXJ5IG9mIExUUiBi
b3ggb3IgbGVmdG1vc3Qgd29yZCBib3VuZGFyeSBvZiBSVEwgYm94IGlmCi0gICAgICAgIC8vIGl0
IGlzIG5vdCBpbiB0aGUgcHJldmlvdXNseSB2aXNpdGVkIGJveGVzLiBGb3IgZXhhbXBsZSwgZ2l2
ZW4gYSBsb2dpY2FsIHRleHQgCi0gICAgICAgIC8vICJhYmMgZGVmICAgICBoaWogb3BxIiwgdGhl
cmUgYXJlIDIgYm94ZXM6IHRoZSAiYWJjIGRlZiAiIChzdGFydHMgYXQgMCBhbmQgbGVuZ3RoIGlz
IDgpIAotICAgICAgICAvLyBhbmQgdGhlICJoaWogb3BxIiAoc3RhcnRzIGF0IDEyIGFuZCBsZW5n
dGggaXMgNykuIFRoZSB3b3JkIGJyZWFrcyBhcmUgCi0gICAgICAgIC8vICJhYmMgfGRlZiB8ICAg
IGhpaiB8b3BxIi4gV2Ugbm9ybWFsbHkgY2F0Y2ggdGhlIHdvcmQgYnJlYWsgYmV0d2VlbiAiZGVm
IiBhbmQgImhpaiIgd2hlbgotICAgICAgICAvLyB3ZSB2aXNpdCB0aGUgYm94IHRoYXQgY29udGFp
bnMgImhpaiBvcHEiLCBidXQgdGhpcyB3b3JkIGJyZWFrIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIGJv
eAotICAgICAgICAvLyB0aGF0IGNvbnRhaW5zICJoaWogb3BxIiB3aGVuIHRoZXJlIGFyZSBtdWx0
aXBsZSBzcGFjZXMuIFNvIHdlIGRldGVjdCBpdCB3aGVuIHdlJ3JlCi0gICAgICAgIC8vIHRyYXZl
cnNpbmcgdGhlIGJveCB0aGF0IGNvbnRhaW5zICJhYmMgZGVmICIgaW5zdGVhZC4KLQotICAgICAg
ICBpZiAoKGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYmIGJveC0+bmV4dExlYWZDaGls
ZCgpKQotICAgICAgICAgICAgfHwgKCFib3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBi
b3gtPnByZXZMZWFmQ2hpbGQoKSkpIHsKLQotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBv
c2l0aW9uQWZ0ZXJXb3JkID0gbmV4dEJvdW5kYXJ5KHdvcmRCcmVhaywgbmV4dFdvcmRQb3NpdGlv
bkJvdW5kYXJ5KTsKLSAgICAgICAgICAgIGlmIChwb3NpdGlvbkFmdGVyV29yZC5pc05vdE51bGwo
KSkgewotICAgICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZVdvcmQg
PSBwcmV2aW91c0JvdW5kYXJ5KHBvc2l0aW9uQWZ0ZXJXb3JkLCBwcmV2aW91c1dvcmRQb3NpdGlv
bkJvdW5kYXJ5KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbklz
SW5Cb3gocG9zaXRpb25CZWZvcmVXb3JkLCBib3gsIG9mZnNldE9mV29yZEJyZWFrKSkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uQmVmb3JlV29yZDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLSAgCi0gICAgd29yZEJyZWFrID0gcHJldmlvdXNCb3VuZGFyeSh3
b3JkQnJlYWssIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnkpOwotICAgIGlmIChwcmV2aW91
c1dvcmRCcmVhayA9PSB3b3JkQnJlYWspCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
KTsKLQotICAgIHJldHVybiBwb3NpdGlvbklzSW5Cb3god29yZEJyZWFrLCBib3gsIG9mZnNldE9m
V29yZEJyZWFrKSA/IHdvcmRCcmVhayA6IFZpc2libGVQb3NpdGlvbigpOwotfQotCi1zdGF0aWMg
VmlzaWJsZVBvc2l0aW9uIGxlZnRtb3N0UG9zaXRpb25JblJUTEJveEluTFRSQmxvY2soY29uc3Qg
SW5saW5lQm94KiBib3gpCi17Ci0gICAgLy8gRklYTUU6IFByb2JhYmx5IG5lZWQgdG8gdGFrZSBj
YXJlIG9mIGJpZGkgbGV2ZWwgdG9vLgotICAgIE5vZGUqIG5vZGUgPSBib3gtPnJlbmRlcmVyKCkt
Pm5vZGUoKTsKLSAgICBJbmxpbmVCb3gqIHByZXZpb3VzTGVhZiA9IGJveC0+cHJldkxlYWZDaGls
ZCgpOwotICAgIElubGluZUJveCogbmV4dExlYWYgPSBib3gtPm5leHRMZWFmQ2hpbGQoKTsgICAK
LSAgICAKLSAgICBpZiAocHJldmlvdXNMZWFmICYmICFwcmV2aW91c0xlYWYtPmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihub2RlLCBib3gtPmNhcmV0TWF4T2Zmc2V0KCkpOwotCi0gICAgaWYgKG5leHRMZWFmICYmICFu
ZXh0TGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7Ci0gICAgICAgIGlmIChwcmV2aW91
c0xlYWYpCi0gICAgICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHBy
ZXZpb3VzTGVhZi0+cmVuZGVyZXIoKS0+bm9kZSgpLCBwcmV2aW91c0xlYWYtPmNhcmV0TWF4T2Zm
c2V0KCkpOwotCi0gICAgICAgIElubGluZUJveCogbGFzdFJUTExlYWY7Ci0gICAgICAgIGRvIHsK
LSAgICAgICAgICAgIGxhc3RSVExMZWFmID0gbmV4dExlYWY7Ci0gICAgICAgICAgICBuZXh0TGVh
ZiA9IG5leHRMZWFmLT5uZXh0TGVhZkNoaWxkKCk7Ci0gICAgICAgIH0gd2hpbGUgKG5leHRMZWFm
ICYmICFuZXh0TGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKTsKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihsYXN0UlRMTGVhZi0+cmVuZGVyZXIoKS0+bm9k
ZSgpLCBsYXN0UlRMTGVhZi0+Y2FyZXRNaW5PZmZzZXQoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihub2RlLCBib3gtPmNhcmV0TWluT2Zmc2V0KCkp
OwotfQotCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0bW9zdFBvc2l0aW9uSW5MVFJCb3hJ
blJUTEJsb2NrKGNvbnN0IElubGluZUJveCogYm94KQotewotICAgIC8vIEZJWE1FOiBQcm9iYWJs
eSBuZWVkIHRvIHRha2UgY2FyZSBvZiBiaWRpIGxldmVsIHRvby4KLSAgICBOb2RlKiBub2RlID0g
Ym94LT5yZW5kZXJlcigpLT5ub2RlKCk7Ci0gICAgSW5saW5lQm94KiBwcmV2aW91c0xlYWYgPSBi
b3gtPnByZXZMZWFmQ2hpbGQoKTsKLSAgICBJbmxpbmVCb3gqIG5leHRMZWFmID0gYm94LT5uZXh0
TGVhZkNoaWxkKCk7ICAgCi0gICAgCi0gICAgaWYgKG5leHRMZWFmICYmIG5leHRMZWFmLT5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkpICAgIAotICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKG5vZGUsIGJveC0+Y2FyZXRNYXhPZmZzZXQoKSk7Ci0KLSAgICBpZiAocHJl
dmlvdXNMZWFmICYmIHByZXZpb3VzTGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7Ci0g
ICAgICAgIGlmIChuZXh0TGVhZikKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0
aW5nUG9zaXRpb24obmV4dExlYWYtPnJlbmRlcmVyKCktPm5vZGUoKSwgbmV4dExlYWYtPmNhcmV0
TWF4T2Zmc2V0KCkpOwotCi0gICAgICAgIElubGluZUJveCogZmlyc3RMVFJMZWFmOwotICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICBmaXJzdExUUkxlYWYgPSBwcmV2aW91c0xlYWY7Ci0gICAgICAg
ICAgICBwcmV2aW91c0xlYWYgPSBwcmV2aW91c0xlYWYtPnByZXZMZWFmQ2hpbGQoKTsKLSAgICAg
ICAgfSB3aGlsZSAocHJldmlvdXNMZWFmICYmIHByZXZpb3VzTGVhZi0+aXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihm
aXJzdExUUkxlYWYtPnJlbmRlcmVyKCktPm5vZGUoKSwgZmlyc3RMVFJMZWFmLT5jYXJldE1pbk9m
ZnNldCgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KG5vZGUsIGJveC0+Y2FyZXRNaW5PZmZzZXQoKSk7Ci19Ci0gICAgCi1zdGF0aWMgVmlzaWJsZVBv
c2l0aW9uIGxhc3RXb3JkQnJlYWtJbkJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50JiBvZmZz
ZXRPZldvcmRCcmVhaykKLXsKLSAgICAvLyBBZGQgdGhlIGxlZnRtb3N0IHdvcmQgYnJlYWsgZm9y
IFJUTCBib3ggb3IgcmlnaHRtb3N0IHdvcmQgYnJlYWsgZm9yIExUUiBib3guCi0gICAgSW5saW5l
Qm94KiBwcmV2aW91c0xlYWYgPSBib3gtPnByZXZMZWFmQ2hpbGQoKTsKLSAgICBJbmxpbmVCb3gq
IG5leHRMZWFmID0gYm94LT5uZXh0TGVhZkNoaWxkKCk7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIGJv
dW5kYXJ5UG9zaXRpb247Ci0gICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gUlRMICYmICghcHJl
dmlvdXNMZWFmIHx8IHByZXZpb3VzTGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSkKLSAg
ICAgICAgYm91bmRhcnlQb3NpdGlvbiA9IGxlZnRtb3N0UG9zaXRpb25JblJUTEJveEluTFRSQmxv
Y2soYm94KTsKLSAgICBlbHNlIGlmIChib3gtPmRpcmVjdGlvbigpID09IExUUiAmJiAoIW5leHRM
ZWFmIHx8ICFuZXh0TGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSkKLSAgICAgICAgYm91
bmRhcnlQb3NpdGlvbiA9IHJpZ2h0bW9zdFBvc2l0aW9uSW5MVFJCb3hJblJUTEJsb2NrKGJveCk7
Ci0KLSAgICBpZiAoYm91bmRhcnlQb3NpdGlvbi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOyAgICAgICAgICAgIAotCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRC
cmVhayA9IG5leHRCb3VuZGFyeShib3VuZGFyeVBvc2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uQm91
bmRhcnkpOwotICAgIGlmICh3b3JkQnJlYWsuaXNOdWxsKCkpCi0gICAgICAgIHdvcmRCcmVhayA9
IGJvdW5kYXJ5UG9zaXRpb247Ci0gICAgZWxzZSBpZiAod29yZEJyZWFrICE9IGJvdW5kYXJ5UG9z
aXRpb24pCi0gICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzQm91bmRhcnkod29yZEJyZWFrLCBw
cmV2aW91c1dvcmRQb3NpdGlvbkJvdW5kYXJ5KTsKLQotICAgIHJldHVybiBwb3NpdGlvbklzSW5C
b3god29yZEJyZWFrLCBib3gsIG9mZnNldE9mV29yZEJyZWFrKSA/IHdvcmRCcmVhayA6IFZpc2li
bGVQb3NpdGlvbigpOyAgICAKLX0KLQotc3RhdGljIGJvb2wgcG9zaXRpb25Jc1Zpc3VhbGx5T3Jk
ZXJlZEluQm94SW5CbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25hbGl0eShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHdvcmRCcmVhaywgY29uc3QgSW5saW5lQm94KiBib3gsIGludCYgb2Zmc2V0T2ZX
b3JkQnJlYWspCi17Ci0gICAgaW50IHByZXZpb3VzT2Zmc2V0ID0gb2Zmc2V0T2ZXb3JkQnJlYWs7
Ci0gICAgcmV0dXJuIHBvc2l0aW9uSXNJbkJveCh3b3JkQnJlYWssIGJveCwgb2Zmc2V0T2ZXb3Jk
QnJlYWspCi0gICAgICAgICYmIChwcmV2aW91c09mZnNldCA9PSBpbnZhbGlkT2Zmc2V0IHx8IHBy
ZXZpb3VzT2Zmc2V0IDwgb2Zmc2V0T2ZXb3JkQnJlYWspOwotfQotICAgIAotc3RhdGljIFZpc2li
bGVQb3NpdGlvbiBuZXh0V29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJlbnREaXJl
Y3Rpb25hbGl0eSgKLSAgICBjb25zdCBJbmxpbmVCb3gqIGJveCwgY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBwcmV2aW91c1dvcmRCcmVhaywgaW50JiBvZmZzZXRPZldvcmRCcmVhaywgYm9vbCYgaXNM
YXN0V29yZEJyZWFrSW5Cb3gpCi17Ci0gICAgLy8gRklYTUU6IFByb2JhYmx5IG5lZWQgdG8gdGFr
ZSBjYXJlIG9mIGJpZGkgbGV2ZWwgdG9vLgotICAgIAotICAgIC8vIEluIGEgTFRSIGJsb2NrLCB0
aGUgd29yZCBicmVhayBzaG91bGQgYmUgb24gdGhlIGxlZnQgYm91bmRhcnkgb2YgYSB3b3JkLgot
ICAgIC8vIEluIGEgUlRMIGJsb2NrLCB0aGUgd29yZCBicmVhayBzaG91bGQgYmUgb24gdGhlIHJp
Z2h0IGJvdW5kYXJ5IG9mIGEgd29yZC4KLSAgICAvLyBCZWNhdXNlIHByZXZpb3VzV29yZFBvc2l0
aW9uKCkgcmV0dXJucyB0aGUgd29yZCBicmVhayBvbiB0aGUgcmlnaHQgYm91bmRhcnkgb2YgdGhl
IHdvcmQgZm9yIFJUTCB0ZXh0LAotICAgIC8vIHdlIG5lZWQgdG8gdXNlIG5leHRXb3JkUG9zaXRp
b24oKSB0byB0cmF2ZXJzZSB3b3JkcyB3aXRoaW4gdGhlIGlubGluZSBib3hlcyBmcm9tIHJpZ2h0
IHRvIGxlZnQgdG8gZmluZCB0aGUgbmV4dCB3b3JkIGJyZWFrLgotICAgIC8vIFRoZSBzYW1lIGFw
cGxpZXMgdG8gTFRSIHRleHQsIGluIHdoaWNoIHdvcmRzIGFyZSB0cmF2ZXJzZWQgd2l0aGluIHRo
ZSBpbmxpbmUgYm94ZXMgZnJvbSBsZWZ0IHRvIHJpZ2h0LgotICAgIAotICAgIGJvb2wgaGFzU2Vl
bldvcmRCcmVha0luVGhpc0JveCA9IHByZXZpb3VzV29yZEJyZWFrLmlzTm90TnVsbCgpOwotICAg
IFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWsgPSBoYXNTZWVuV29yZEJyZWFrSW5UaGlzQm94ID8g
cHJldmlvdXNXb3JkQnJlYWsgOiAKLSAgICAgICAgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KGJveC0+cmVuZGVyZXIoKS0+bm9kZSgpLCBib3gtPmNhcmV0TWluT2Zmc2V0KCkpOwotCi0gICAg
d29yZEJyZWFrID0gbmV4dEJvdW5kYXJ5KHdvcmRCcmVhaywgbmV4dFdvcmRQb3NpdGlvbkJvdW5k
YXJ5KTsKLSAgCi0gICAgLy8gR2l2ZW4gUlRMIGJveCAiQUJDIERFRiIgZWl0aGVyIGZvbGxvd3Mg
YSBMVFIgYm94IG9yIGlzIHRoZSBmaXJzdCB2aXN1YWwgYm94IGluIGFuIExUUiBibG9jayBhcyBh
biBleGFtcGxlLAotICAgIC8vIHRoZSB2aXN1YWwgZGlzcGxheSBvZiB0aGUgUlRMIGJveCBpczog
IigwKUooMTApSSg5KUgoOCkgKDcpRig2KUUoNSlEKDQpICgzKUMoMilCKDEpQSgxMSkiLAotICAg
IC8vIHdoZXJlIHRoZSBudW1iZXIgaW4gcGFyZW50aGVzaXMgcmVwcmVzZW50cyBvZmZzZXQgaW4g
dmlzaWJsZVBvc2l0aW9uLiAKLSAgICAvLyBTdGFydCBhdCBvZmZzZXQgMCwgdGhlIGZpcnN0IHdv
cmQgYnJlYWsgaXMgYXQgb2Zmc2V0IDMsIHRoZSAybmQgd29yZCBicmVhayBpcyBhdCBvZmZzZXQg
NywgYW5kIHRoZSAzcmQgd29yZCBicmVhayBzaG91bGQgYmUgYXQgb2Zmc2V0IDAuCi0gICAgLy8g
QnV0IG5leHRXb3JkUG9zaXRpb24oKSBvZiBvZmZzZXQgNyBpcyBvZmZzZXQgMTEsIHdoaWNoIHNo
b3VsZCBiZSBpZ25vcmVkLCAKLSAgICAvLyBhbmQgdGhlIHBvc2l0aW9uIGF0IG9mZnNldCAwIHNo
b3VsZCBiZSBtYW51YWxseSBhZGRlZCBhcyB0aGUgbGFzdCB3b3JkIGJyZWFrIHdpdGhpbiB0aGUg
Ym94LgotICAgIGlmICh3b3JkQnJlYWsgIT0gcHJldmlvdXNXb3JkQnJlYWsgJiYgcG9zaXRpb25J
c1Zpc3VhbGx5T3JkZXJlZEluQm94SW5CbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25hbGl0eSh3
b3JkQnJlYWssIGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspKSB7Ci0gICAgICAgIGlzTGFzdFdvcmRC
cmVha0luQm94ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiB3b3JkQnJlYWs7Ci0gICAgfQotICAg
IAotICAgIGlzTGFzdFdvcmRCcmVha0luQm94ID0gdHJ1ZTsKLSAgICByZXR1cm4gbGFzdFdvcmRC
cmVha0luQm94KGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspOwotfQotCi1zdHJ1Y3QgV29yZEJvdW5k
YXJ5RW50cnkgewotICAgIFdvcmRCb3VuZGFyeUVudHJ5KCkKLSAgICAgICAgOiBvZmZzZXRJbklu
bGluZUJveChpbnZhbGlkT2Zmc2V0KSAKLSAgICB7IAotICAgIH0KLQotICAgIFdvcmRCb3VuZGFy
eUVudHJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvZmZzZXQpCi0gICAg
ICAgIDogdmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uKQotICAgICAgICAsIG9mZnNldEluSW5saW5l
Qm94KG9mZnNldCkgCi0gICAgeyAKLSAgICB9Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uOwotICAgIGludCBvZmZzZXRJbklubGluZUJveDsKLX07Ci0gICAgCi10eXBlZGVm
IFZlY3RvcjxXb3JkQm91bmRhcnlFbnRyeSwgNTA+IFdvcmRCb3VuZGFyeVZlY3RvcjsKLSAgICAK
LXN0YXRpYyB2b2lkIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGly
ZWN0aW9uYWxpdHkoY29uc3QgSW5saW5lQm94KiBib3gsIFdvcmRCb3VuZGFyeVZlY3RvciYgb3Jk
ZXJlZFdvcmRCb3VuZGFyaWVzKQotewotICAgIG9yZGVyZWRXb3JkQm91bmRhcmllcy5jbGVhcigp
OwotCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBpbnQgb2Zmc2V0T2ZXb3Jk
QnJlYWsgPSBpbnZhbGlkT2Zmc2V0OwotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIHdvcmRCcmVh
ayA9IHByZXZpb3VzV29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxp
dHkoYm94LCB3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrKTsKLSAgICAgICAgaWYgKHdvcmRC
cmVhay5pc051bGwoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBXb3JkQm91bmRhcnlF
bnRyeSB3b3JkQm91bmRhcnlFbnRyeSh3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrKTsKLSAg
ICAgICAgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLmFwcGVuZCh3b3JkQm91bmRhcnlFbnRyeSk7Ci0g
ICAgfQotfQotCi1zdGF0aWMgdm9pZCBjb2xsZWN0V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tX
aXRoRGlmZmVybnREaXJlY3Rpb25hbGl0eShjb25zdCBJbmxpbmVCb3gqIGJveCwgV29yZEJvdW5k
YXJ5VmVjdG9yJiBvcmRlcmVkV29yZEJvdW5kYXJpZXMpCi17Ci0gICAgb3JkZXJlZFdvcmRCb3Vu
ZGFyaWVzLmNsZWFyKCk7Ci0gICAgCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAg
ICBpbnQgb2Zmc2V0T2ZXb3JkQnJlYWsgPSBpbnZhbGlkT2Zmc2V0OwotICAgIGJvb2wgaXNMYXN0
V29yZEJyZWFrSW5Cb3ggPSBmYWxzZTsKLSAgICB3aGlsZSAoMSkgewotICAgICAgICB3b3JkQnJl
YWsgPSBuZXh0V29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25h
bGl0eShib3gsIHdvcmRCcmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWssIGlzTGFzdFdvcmRCcmVha0lu
Qm94KTsKLSAgICAgICAgaWYgKHdvcmRCcmVhay5pc05vdE51bGwoKSkgewotICAgICAgICAgICAg
V29yZEJvdW5kYXJ5RW50cnkgd29yZEJvdW5kYXJ5RW50cnkod29yZEJyZWFrLCBvZmZzZXRPZldv
cmRCcmVhayk7Ci0gICAgICAgICAgICBvcmRlcmVkV29yZEJvdW5kYXJpZXMuYXBwZW5kKHdvcmRC
b3VuZGFyeUVudHJ5KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNMYXN0V29yZEJyZWFrSW5C
b3gpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbGxlY3RX
b3JkQnJlYWtzSW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gsIFdvcmRCb3VuZGFyeVZlY3RvciYg
b3JkZXJlZFdvcmRCb3VuZGFyaWVzLCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQotewot
ICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0aW9uKQotICAgICAgICBjb2xs
ZWN0V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGJveCwg
b3JkZXJlZFdvcmRCb3VuZGFyaWVzKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbGxlY3RXb3JkQnJl
YWtzSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJudERpcmVjdGlvbmFsaXR5KGJveCwgb3JkZXJl
ZFdvcmRCb3VuZGFyaWVzKTsgICAgICAgIAotfQotICAgIAotc3RhdGljIFZpc2libGVQb3NpdGlv
biBwcmV2aW91c1dvcmRCb3VuZGFyeUluQm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQgb2Zm
c2V0KQotewotICAgIGludCBvZmZzZXRPZldvcmRCcmVhayA9IDA7Ci0gICAgVmlzaWJsZVBvc2l0
aW9uIHdvcmRCcmVhazsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICB3b3JkQnJlYWsgPSBw
cmV2aW91c1dvcmRCcmVha0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGJv
eCwgd29yZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhayk7Ci0gICAgICAgIGlmICh3b3JkQnJlYWsu
aXNOdWxsKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG9mZnNldCA9PSBpbnZh
bGlkT2Zmc2V0IHx8IG9mZnNldE9mV29yZEJyZWFrICE9IG9mZnNldCkKLSAgICAgICAgICAgIHJl
dHVybiB3b3JkQnJlYWs7Ci0gICAgfSAgICAgICAgCi0gICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bigpOwotfQotCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkQm91bmRhcnlJbkJveChj
b25zdCBJbmxpbmVCb3gqIGJveCwgaW50IG9mZnNldCkKLXsKLSAgICBpbnQgb2Zmc2V0T2ZXb3Jk
QnJlYWsgPSAwOwotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0gICAgYm9vbCBpc0xh
c3RXb3JkQnJlYWtJbkJveCA9IGZhbHNlOwotICAgIGRvIHsKLSAgICAgICAgd29yZEJyZWFrID0g
bmV4dFdvcmRCcmVha0luQm94SW5zaWRlQmxvY2tXaXRoRGlmZmVyZW50RGlyZWN0aW9uYWxpdHko
Ym94LCB3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrLCBpc0xhc3RXb3JkQnJlYWtJbkJveCk7
Ci0gICAgICAgIGlmICh3b3JkQnJlYWsuaXNOb3ROdWxsKCkgJiYgKG9mZnNldCA9PSBpbnZhbGlk
T2Zmc2V0IHx8IG9mZnNldE9mV29yZEJyZWFrICE9IG9mZnNldCkpCi0gICAgICAgICAgICByZXR1
cm4gd29yZEJyZWFrOwotICAgIH0gd2hpbGUgKCFpc0xhc3RXb3JkQnJlYWtJbkJveCk7ICAgICAg
IAotICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLX0KLSAgICAKLXN0YXRpYyBWaXNpYmxl
UG9zaXRpb24gdmlzdWFsbHlMYXN0V29yZEJvdW5kYXJ5SW5Cb3goY29uc3QgSW5saW5lQm94KiBi
b3gsIGludCBvZmZzZXQsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCi17Ci0gICAgV29y
ZEJvdW5kYXJ5VmVjdG9yIG9yZGVyZWRXb3JkQm91bmRhcmllczsKLSAgICBjb2xsZWN0V29yZEJy
ZWFrc0luQm94KGJveCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLCBibG9ja0RpcmVjdGlvbik7Ci0g
ICAgaWYgKCFvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpKSAKLSAgICAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOwotICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCB8fCBvcmRl
cmVkV29yZEJvdW5kYXJpZXNbb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDFdLm9mZnNl
dEluSW5saW5lQm94ICE9IG9mZnNldCkKLSAgICAgICAgcmV0dXJuIG9yZGVyZWRXb3JkQm91bmRh
cmllc1tvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMV0udmlzaWJsZVBvc2l0aW9uOwot
ICAgIGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpID4gMSkKLSAgICAgICAgcmV0dXJu
IG9yZGVyZWRXb3JkQm91bmRhcmllc1tvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMl0u
dmlzaWJsZVBvc2l0aW9uOwotICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLX0KLSAgICAg
ICAgCi1zdGF0aWMgaW50IGdyZWF0ZXN0T2Zmc2V0VW5kZXIoaW50IG9mZnNldCwgYm9vbCBib3hB
bmRCbG9ja0FyZUluU2FtZURpcmVjdGlvbiwgY29uc3QgV29yZEJvdW5kYXJ5VmVjdG9yJiBvcmRl
cmVkV29yZEJvdW5kYXJpZXMpCi17Ci0gICAgaWYgKCFvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6
ZSgpKQotICAgICAgICByZXR1cm4gb2Zmc2V0Tm90Rm91bmQ7Ci0gICAgLy8gRklYTUU6IGJpbmFy
eSBzZWFyY2guCi0gICAgaWYgKGJveEFuZEJsb2NrQXJlSW5TYW1lRGlyZWN0aW9uKSB7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXNbaV0ub2Zmc2V0
SW5JbmxpbmVCb3ggPCBvZmZzZXQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIG9mZnNldE5vdEZvdW5kOwotICAgIH0KLSAgICBmb3IgKGludCBp
ID0gb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAg
ICAgIGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXNbaV0ub2Zmc2V0SW5JbmxpbmVCb3ggPCBvZmZz
ZXQpCi0gICAgICAgICAgICByZXR1cm4gaTsKLSAgICB9Ci0gICAgcmV0dXJuIG9mZnNldE5vdEZv
dW5kOwotfQotCi1zdGF0aWMgaW50IHNtYWxsZXN0T2Zmc2V0QWJvdmUoaW50IG9mZnNldCwgYm9v
bCBib3hBbmRCbG9ja0FyZUluU2FtZURpcmVjdGlvbiwgY29uc3QgV29yZEJvdW5kYXJ5VmVjdG9y
JiBvcmRlcmVkV29yZEJvdW5kYXJpZXMpCi17Ci0gICAgaWYgKCFvcmRlcmVkV29yZEJvdW5kYXJp
ZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gb2Zmc2V0Tm90Rm91bmQ7Ci0gICAgLy8gRklYTUU6
IGJpbmFyeSBzZWFyY2guCi0gICAgaWYgKGJveEFuZEJsb2NrQXJlSW5TYW1lRGlyZWN0aW9uKSB7
Ci0gICAgICAgIGZvciAoaW50IGkgPSBvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMTsg
aSA+PSAwOyAtLWkpIHsKLSAgICAgICAgICAgIGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXNbaV0u
b2Zmc2V0SW5JbmxpbmVCb3ggPiBvZmZzZXQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG9mZnNldE5vdEZvdW5kOwotICAgIH0KLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIGlmIChvcmRlcmVkV29yZEJvdW5kYXJpZXNbaV0ub2Zmc2V0SW5JbmxpbmVCb3gg
PiBvZmZzZXQpCi0gICAgICAgICAgICByZXR1cm4gaTsKLSAgICB9Ci0gICAgcmV0dXJuIG9mZnNl
dE5vdEZvdW5kOwotfQotCi1zdGF0aWMgY29uc3QgUm9vdElubGluZUJveCogcHJldmlvdXNSb290
SW5saW5lQm94KGNvbnN0IElubGluZUJveCogYm94KQotewotICAgIE5vZGUqIG5vZGUgPSBib3gt
PnJlbmRlcmVyKCktPm5vZGUoKTsKLSAgICBOb2RlKiBlbmNsb3NpbmdCbG9ja05vZGUgPSBlbmNs
b3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKG5vZGUpOwotICAgIE5vZGUqIHByZXZpb3Vz
Tm9kZSA9IG5vZGUtPnByZXZpb3VzTGVhZk5vZGUoKTsKLSAgICB3aGlsZSAocHJldmlvdXNOb2Rl
ICYmIGVuY2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRl
cmVyKHByZXZpb3VzTm9kZSkpCi0gICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTm9kZS0+
cHJldmlvdXNMZWFmTm9kZSgpOwotICAKLSAgICB3aGlsZSAocHJldmlvdXNOb2RlICYmICFwcmV2
aW91c05vZGUtPmlzU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIFBvc2l0aW9uIHBvcyA9IGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihwcmV2aW91c05vZGUsIGNhcmV0TWF4T2Zmc2V0KHByZXZp
b3VzTm9kZSkpOwotICAgICAgICAKLSAgICAgICAgaWYgKHBvcy5pc0NhbmRpZGF0ZSgpKSB7Ci0g
ICAgICAgICAgICBSZW5kZXJlZFBvc2l0aW9uIHJlbmRlcmVkUG9zKHBvcywgRE9XTlNUUkVBTSk7
Ci0gICAgICAgICAgICBSb290SW5saW5lQm94KiByb290ID0gcmVuZGVyZWRQb3Mucm9vdEJveCgp
OwotICAgICAgICAgICAgaWYgKHJvb3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Q7Ci0g
ICAgICAgIH0KLQotICAgICAgICBwcmV2aW91c05vZGUgPSBwcmV2aW91c05vZGUtPnByZXZpb3Vz
TGVhZk5vZGUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBjb25zdCBSb290
SW5saW5lQm94KiBuZXh0Um9vdElubGluZUJveChjb25zdCBJbmxpbmVCb3gqIGJveCkKLXsKLSAg
ICBOb2RlKiBub2RlID0gYm94LT5yZW5kZXJlcigpLT5ub2RlKCk7Ci0gICAgTm9kZSogZW5jbG9z
aW5nQmxvY2tOb2RlID0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihub2RlKTsK
LSAgICBOb2RlKiBuZXh0Tm9kZSA9IG5vZGUtPm5leHRMZWFmTm9kZSgpOwotICAgIHdoaWxlIChu
ZXh0Tm9kZSAmJiBlbmNsb3NpbmdCbG9ja05vZGUgPT0gZW5jbG9zaW5nTm9kZVdpdGhOb25Jbmxp
bmVSZW5kZXJlcihuZXh0Tm9kZSkpCi0gICAgICAgIG5leHROb2RlID0gbmV4dE5vZGUtPm5leHRM
ZWFmTm9kZSgpOwotICAKLSAgICB3aGlsZSAobmV4dE5vZGUgJiYgIW5leHROb2RlLT5pc1NoYWRv
d1Jvb3QoKSkgewotICAgICAgICBQb3NpdGlvbiBwb3M7Ci0gICAgICAgIHBvcyA9IGNyZWF0ZUxl
Z2FjeUVkaXRpbmdQb3NpdGlvbihuZXh0Tm9kZSwgY2FyZXRNaW5PZmZzZXQobmV4dE5vZGUpKTsK
LSAgICAgICAgCi0gICAgICAgIGlmIChwb3MuaXNDYW5kaWRhdGUoKSkgewotICAgICAgICAgICAg
UmVuZGVyZWRQb3NpdGlvbiByZW5kZXJlZFBvcyhwb3MsIERPV05TVFJFQU0pOwotICAgICAgICAg
ICAgUm9vdElubGluZUJveCogcm9vdCA9IHJlbmRlcmVkUG9zLnJvb3RCb3goKTsKLSAgICAgICAg
ICAgIGlmIChyb290KQotICAgICAgICAgICAgICAgIHJldHVybiByb290OwotICAgICAgICB9Ci0K
LSAgICAgICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS0+bmV4dExlYWZOb2RlKCk7Ci0gICAgfQotICAg
IHJldHVybiAwOwotfQotCi1zdGF0aWMgY29uc3QgSW5saW5lQm94KiBsZWZ0SW5saW5lQm94KGNv
bnN0IElubGluZUJveCogYm94LCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQotewotICAg
IGlmIChib3gtPnByZXZMZWFmQ2hpbGQoKSkKLSAgICAgICAgcmV0dXJuIGJveC0+cHJldkxlYWZD
aGlsZCgpOwotICAgIAotICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSBib3gtPnJv
b3QoKTsKLSAgICBjb25zdCBib29sIGlzQmxvY2tMVFIgPSBibG9ja0RpcmVjdGlvbiA9PSBMVFI7
Ci0gICAgY29uc3QgSW5saW5lRmxvd0JveCogbGVmdExpbmVCb3ggPSBpc0Jsb2NrTFRSID8gcm9v
dEJveC0+cHJldkxpbmVCb3goKSA6IHJvb3RCb3gtPm5leHRMaW5lQm94KCk7Ci0gICAgaWYgKGxl
ZnRMaW5lQm94KQotICAgICAgICByZXR1cm4gbGVmdExpbmVCb3gtPmxhc3RMZWFmQ2hpbGQoKTsK
LQotICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIGxlZnRSb290SW5saW5lQm94ID0gaXNCbG9ja0xU
UiA/IHByZXZpb3VzUm9vdElubGluZUJveChib3gpIDoKLSAgICAgICAgbmV4dFJvb3RJbmxpbmVC
b3goYm94KTsgCi0gICAgcmV0dXJuIGxlZnRSb290SW5saW5lQm94ID8gbGVmdFJvb3RJbmxpbmVC
b3gtPmxhc3RMZWFmQ2hpbGQoKSA6IDA7IAotfQotCi1zdGF0aWMgY29uc3QgSW5saW5lQm94KiBy
aWdodElubGluZUJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgVGV4dERpcmVjdGlvbiBibG9ja0Rp
cmVjdGlvbikKLXsKLSAgICBpZiAoYm94LT5uZXh0TGVhZkNoaWxkKCkpCi0gICAgICAgIHJldHVy
biBib3gtPm5leHRMZWFmQ2hpbGQoKTsKLSAgICAKLSAgICBjb25zdCBSb290SW5saW5lQm94KiBy
b290Qm94ID0gYm94LT5yb290KCk7Ci0gICAgY29uc3QgYm9vbCBpc0Jsb2NrTFRSID0gYmxvY2tE
aXJlY3Rpb24gPT0gTFRSOwotICAgIGNvbnN0IElubGluZUZsb3dCb3gqIHJpZ2h0TGluZUJveCA9
IGlzQmxvY2tMVFIgPyByb290Qm94LT5uZXh0TGluZUJveCgpIDogcm9vdEJveC0+cHJldkxpbmVC
b3goKTsKLSAgICBpZiAocmlnaHRMaW5lQm94KQotICAgICAgICByZXR1cm4gcmlnaHRMaW5lQm94
LT5maXJzdExlYWZDaGlsZCgpOwotCi0gICAgY29uc3QgUm9vdElubGluZUJveCogcmlnaHRSb290
SW5saW5lQm94ID0gaXNCbG9ja0xUUiA/IG5leHRSb290SW5saW5lQm94KGJveCkgOgotICAgICAg
ICBwcmV2aW91c1Jvb3RJbmxpbmVCb3goYm94KTsgCi0gICAgcmV0dXJuIHJpZ2h0Um9vdElubGlu
ZUJveCA/IHJpZ2h0Um9vdElubGluZUJveC0+Zmlyc3RMZWFmQ2hpbGQoKSA6IDA7IAotfQotCi1z
dGF0aWMgVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3JkQm91bmRhcnkoY29uc3QgSW5saW5lQm94KiBi
b3gsIGludCBvZmZzZXQsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCi17Ci0gICAgVmlz
aWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBmb3IgIChjb25zdCBJbmxpbmVCb3gqIGFkamFj
ZW50Qm94ID0gYm94OyBhZGphY2VudEJveDsgYWRqYWNlbnRCb3ggPSBsZWZ0SW5saW5lQm94KGFk
amFjZW50Qm94LCBibG9ja0RpcmVjdGlvbikpIHsKLSAgICAgICAgaWYgKGJsb2NrRGlyZWN0aW9u
ID09IExUUikgewotICAgICAgICAgICAgaWYgKGFkamFjZW50Qm94LT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkpIAotICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzV29yZEJvdW5k
YXJ5SW5Cb3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFs
aWRPZmZzZXQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9
IG5leHRXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8g
b2Zmc2V0IDogaW52YWxpZE9mZnNldCk7Ci0gICAgICAgIH0gZWxzZSAKLSAgICAgICAgICAgIHdv
cmRCcmVhayA9IHZpc3VhbGx5TGFzdFdvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGph
Y2VudEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7
ICAgICAgICAgICAgCi0gICAgICAgIGlmICh3b3JkQnJlYWsuaXNOb3ROdWxsKCkpCi0gICAgICAg
ICAgICByZXR1cm4gd29yZEJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KCk7Ci19Ci0gCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0V29yZEJvdW5kYXJ5KGNvbnN0
IElubGluZUJveCogYm94LCBpbnQgb2Zmc2V0LCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9u
KQotewotICAgIAotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7Ci0gICAgZm9yIChjb25z
dCBJbmxpbmVCb3gqIGFkamFjZW50Qm94ID0gYm94OyBhZGphY2VudEJveDsgYWRqYWNlbnRCb3gg
PSByaWdodElubGluZUJveChhZGphY2VudEJveCwgYmxvY2tEaXJlY3Rpb24pKSB7Ci0gICAgICAg
IGlmIChibG9ja0RpcmVjdGlvbiA9PSBSVEwpIHsKLSAgICAgICAgICAgIGlmIChhZGphY2VudEJv
eC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9
IG5leHRXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8g
b2Zmc2V0IDogaW52YWxpZE9mZnNldCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgd29yZEJyZWFrID0gcHJldmlvdXNXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRq
YWNlbnRCb3ggPT0gYm94ID8gb2Zmc2V0IDogaW52YWxpZE9mZnNldCk7Ci0gICAgICAgIH0gZWxz
ZSAKLSAgICAgICAgICAgIHdvcmRCcmVhayA9IHZpc3VhbGx5TGFzdFdvcmRCb3VuZGFyeUluQm94
KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0
LCBibG9ja0RpcmVjdGlvbik7ICAgICAgICAgICAgCi0gICAgICAgIGlmICghd29yZEJyZWFrLmlz
TnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsKLSAgICB9Ci0gICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbigpOwotfQotICAgIAotc3RhdGljIGJvb2wgcG9zaXRpb25Jc0luQm94
QnV0Tm90T25Cb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHdvcmRCcmVhaywgY29uc3Qg
SW5saW5lQm94KiBib3gpCi17Ci0gICAgaW50IG9mZnNldE9mV29yZEJyZWFrOwotICAgIHJldHVy
biBwb3NpdGlvbklzSW5Cb3god29yZEJyZWFrLCBib3gsIG9mZnNldE9mV29yZEJyZWFrKQotICAg
ICAgICAmJiBvZmZzZXRPZldvcmRCcmVhayAhPSBib3gtPmNhcmV0TWF4T2Zmc2V0KCkgJiYgb2Zm
c2V0T2ZXb3JkQnJlYWsgIT0gYm94LT5jYXJldE1pbk9mZnNldCgpOwotfQotCi1zdGF0aWMgVmlz
aWJsZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb25JZ25vcmluZ0VkaXRpbmdCb3VuZGFyeShjb25z
dCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKLXsKLSAgICBJbmxpbmVCb3gqIGJv
eDsKLSAgICBpbnQgb2Zmc2V0OwotICAgIHZpc2libGVQb3NpdGlvbi5nZXRJbmxpbmVCb3hBbmRP
ZmZzZXQoYm94LCBvZmZzZXQpOwotCi0gICAgaWYgKCFib3gpCi0gICAgICAgIHJldHVybiBWaXNp
YmxlUG9zaXRpb24oKTsKLQotICAgIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJl
Y3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsK
LQotICAgIC8vIEZJWE1FOiBJZiB0aGUgYm94J3MgZGlyZWN0aW9uYWxpdHkgaXMgdGhlIHNhbWUg
YXMgdGhhdCBvZiB0aGUgZW5jbG9zaW5nIGJsb2NrLCB3aGVuIHRoZSBvZmZzZXQgaXMgYXQgdGhl
IGJveCBib3VuZGFyeQotICAgIC8vIGFuZCB0aGUgZGlyZWN0aW9uIGlzIHRvd2FyZHMgaW5zaWRl
IHRoZSBib3gsIGRvIEkgc3RpbGwgbmVlZCB0byBtYWtlIGl0IGEgc3BlY2lhbCBjYXNlPyBGb3Ig
ZXhhbXBsZSwgYSBMVFIgYm94IGluc2lkZSBhIExUUiBibG9jaywKLSAgICAvLyB3aGVuIG9mZnNl
dCBpcyBhdCBib3gncyBjYXJldE1pbk9mZnNldCBhbmQgdGhlIGRpcmVjdGlvbiBpcyBEaXJlY3Rp
b25SaWdodCwgc2hvdWxkIGl0IGJlIHRha2VuIGNhcmUgYXMgYSBnZW5lcmFsIGNhc2U/Ci0gICAg
aWYgKG9mZnNldCA9PSBib3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKSkKLSAgICAgICAgcmV0dXJu
IGxlZnRXb3JkQm91bmRhcnkobGVmdElubGluZUJveChib3gsIGJsb2NrRGlyZWN0aW9uKSwgaW52
YWxpZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOwotICAgIGlmIChvZmZzZXQgPT0gYm94LT5jYXJl
dFJpZ2h0bW9zdE9mZnNldCgpKQotICAgICAgICByZXR1cm4gbGVmdFdvcmRCb3VuZGFyeShib3gs
IG9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOwotICAgIAotICAgIAotICAgIFZpc2libGVQb3NpdGlv
biB3b3JkQnJlYWs7Ci0gICAgaWYgKGJsb2NrRGlyZWN0aW9uID09IExUUikgewotICAgICAgICBp
ZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBibG9ja0RpcmVjdGlvbikKLSAgICAgICAgICAgIHdvcmRC
cmVhayA9IHByZXZpb3VzQm91bmRhcnkodmlzaWJsZVBvc2l0aW9uLCBwcmV2aW91c1dvcmRQb3Np
dGlvbkJvdW5kYXJ5KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgd29yZEJyZWFrID0gbmV4
dEJvdW5kYXJ5KHZpc2libGVQb3NpdGlvbiwgbmV4dFdvcmRQb3NpdGlvbkJvdW5kYXJ5KTsKLSAg
ICB9Ci0gICAgaWYgKHdvcmRCcmVhay5pc05vdE51bGwoKSAmJiBwb3NpdGlvbklzSW5Cb3hCdXRO
b3RPbkJvdW5kYXJ5KHdvcmRCcmVhaywgYm94KSkKLSAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsK
LSAgICAKLSAgICBXb3JkQm91bmRhcnlWZWN0b3Igb3JkZXJlZFdvcmRCb3VuZGFyaWVzOwotICAg
IGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3goYm94LCBvcmRlcmVkV29yZEJvdW5kYXJpZXMsIGJsb2Nr
RGlyZWN0aW9uKTsKLQotICAgIGludCBpbmRleCA9IGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpID8gZ3JlYXRlc3RPZmZzZXRVbmRlcihvZmZzZXQsIGJsb2NrRGlyZWN0aW9uID09IExUUiwg
b3JkZXJlZFdvcmRCb3VuZGFyaWVzKQotICAgICAgICA6IHNtYWxsZXN0T2Zmc2V0QWJvdmUob2Zm
c2V0LCBibG9ja0RpcmVjdGlvbiA9PSBSVEwsIG9yZGVyZWRXb3JkQm91bmRhcmllcyk7Ci0gICAg
aWYgKGluZGV4ID49IDApCi0gICAgICAgIHJldHVybiBvcmRlcmVkV29yZEJvdW5kYXJpZXNbaW5k
ZXhdLnZpc2libGVQb3NpdGlvbjsKLSAgICAKLSAgICByZXR1cm4gbGVmdFdvcmRCb3VuZGFyeShs
ZWZ0SW5saW5lQm94KGJveCwgYmxvY2tEaXJlY3Rpb24pLCBpbnZhbGlkT2Zmc2V0LCBibG9ja0Rp
cmVjdGlvbik7Ci19Ci0KLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkUG9zaXRpb25J
Z25vcmluZ0VkaXRpbmdCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3Np
dGlvbikKLXsKLSAgICBJbmxpbmVCb3gqIGJveDsKLSAgICBpbnQgb2Zmc2V0OwotICAgIHZpc2li
bGVQb3NpdGlvbi5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoYm94LCBvZmZzZXQpOwotCi0gICAgaWYg
KCFib3gpCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLQotICAgIFRleHREaXJl
Y3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQ
b3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKLSAgICAKLSAgICBpZiAob2Zmc2V0ID09IGJveC0+
Y2FyZXRMZWZ0bW9zdE9mZnNldCgpKQotICAgICAgICByZXR1cm4gcmlnaHRXb3JkQm91bmRhcnko
Ym94LCBvZmZzZXQsIGJsb2NrRGlyZWN0aW9uKTsKLSAgICBpZiAob2Zmc2V0ID09IGJveC0+Y2Fy
ZXRSaWdodG1vc3RPZmZzZXQoKSkKLSAgICAgICAgcmV0dXJuIHJpZ2h0V29yZEJvdW5kYXJ5KHJp
Z2h0SW5saW5lQm94KGJveCwgYmxvY2tEaXJlY3Rpb24pLCBpbnZhbGlkT2Zmc2V0LCBibG9ja0Rp
cmVjdGlvbik7Ci0gCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBpZiAoYmxv
Y2tEaXJlY3Rpb24gPT0gUlRMKSB7Ci0gICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IGJs
b2NrRGlyZWN0aW9uKQotICAgICAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNCb3VuZGFyeSh2
aXNpYmxlUG9zaXRpb24sIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnkpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICB3b3JkQnJlYWsgPSBuZXh0Qm91bmRhcnkodmlzaWJsZVBvc2l0aW9u
LCBuZXh0V29yZFBvc2l0aW9uQm91bmRhcnkpOwotICAgIH0KLSAgICBpZiAod29yZEJyZWFrLmlz
Tm90TnVsbCgpICYmIHBvc2l0aW9uSXNJbkJveEJ1dE5vdE9uQm91bmRhcnkod29yZEJyZWFrLCBi
b3gpKQotICAgICAgICByZXR1cm4gd29yZEJyZWFrOwotICAgIAotICAgIFdvcmRCb3VuZGFyeVZl
Y3RvciBvcmRlcmVkV29yZEJvdW5kYXJpZXM7Ci0gICAgY29sbGVjdFdvcmRCcmVha3NJbkJveChi
b3gsIG9yZGVyZWRXb3JkQm91bmRhcmllcywgYmxvY2tEaXJlY3Rpb24pOwotICAgIAotICAgIGlu
dCBpbmRleCA9IGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gc21hbGxlc3RPZmZzZXRB
Ym92ZShvZmZzZXQsIGJsb2NrRGlyZWN0aW9uID09IExUUiwgb3JkZXJlZFdvcmRCb3VuZGFyaWVz
KQotICAgICAgICA6IGdyZWF0ZXN0T2Zmc2V0VW5kZXIob2Zmc2V0LCBibG9ja0RpcmVjdGlvbiA9
PSBSVEwsIG9yZGVyZWRXb3JkQm91bmRhcmllcyk7Ci0gICAgaWYgKGluZGV4ID49IDApCi0gICAg
ICAgIHJldHVybiBvcmRlcmVkV29yZEJvdW5kYXJpZXNbaW5kZXhdLnZpc2libGVQb3NpdGlvbjsK
LSAgICAKLSAgICByZXR1cm4gcmlnaHRXb3JkQm91bmRhcnkocmlnaHRJbmxpbmVCb3goYm94LCBi
bG9ja0RpcmVjdGlvbiksIGludmFsaWRPZmZzZXQsIGJsb2NrRGlyZWN0aW9uKTsKLX0KLQotVmlz
aWJsZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNp
YmxlUG9zaXRpb24pCi17Ci0gICAgaWYgKHZpc2libGVQb3NpdGlvbi5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotCi0gICAgVmlzaWJsZVBvc2l0aW9uIGxlZnRX
b3JkQnJlYWsgPSBsZWZ0V29yZFBvc2l0aW9uSWdub3JpbmdFZGl0aW5nQm91bmRhcnkodmlzaWJs
ZVBvc2l0aW9uKTsKLSAgICBsZWZ0V29yZEJyZWFrID0gdmlzaWJsZVBvc2l0aW9uLmhvbm9yRWRp
dGluZ0JvdW5kYXJ5QXRPckJlZm9yZShsZWZ0V29yZEJyZWFrKTsKLSAgICAKLSAgICAvLyBGSVhN
RTogSG93IHNob3VsZCB3ZSBoYW5kbGUgYSBub24tZWRpdGFibGUgcG9zaXRpb24/Ci0gICAgaWYg
KGxlZnRXb3JkQnJlYWsuaXNOdWxsKCkgJiYgaXNFZGl0YWJsZVBvc2l0aW9uKHZpc2libGVQb3Np
dGlvbi5kZWVwRXF1aXZhbGVudCgpKSkgewotICAgICAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGly
ZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVx
dWl2YWxlbnQoKSk7Ci0gICAgICAgIGxlZnRXb3JkQnJlYWsgPSBibG9ja0RpcmVjdGlvbiA9PSBM
VFIgPyBzdGFydE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbikgOiBlbmRPZkVkaXRh
YmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pOwotICAgIH0KLSAgICByZXR1cm4gbGVmdFdvcmRC
cmVhazsKLX0KLQotVmlzaWJsZVBvc2l0aW9uIHJpZ2h0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQotewotICAgIGlmICh2aXNpYmxlUG9zaXRpb24u
aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLQotICAgIFZpc2li
bGVQb3NpdGlvbiByaWdodFdvcmRCcmVhayA9IHJpZ2h0V29yZFBvc2l0aW9uSWdub3JpbmdFZGl0
aW5nQm91bmRhcnkodmlzaWJsZVBvc2l0aW9uKTsKLSAgICByaWdodFdvcmRCcmVhayA9IHZpc2li
bGVQb3NpdGlvbi5ob25vckVkaXRpbmdCb3VuZGFyeUF0T3JCZWZvcmUocmlnaHRXb3JkQnJlYWsp
OwotCi0gICAgLy8gRklYTUU6IEhvdyBzaG91bGQgd2UgaGFuZGxlIGEgbm9uLWVkaXRhYmxlIHBv
c2l0aW9uPwotICAgIGlmIChyaWdodFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9z
aXRpb24odmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7Ci0gICAgICAgIFRleHRE
aXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2li
bGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKLSAgICAgICAgcmlnaHRXb3JkQnJlYWsgPSBi
bG9ja0RpcmVjdGlvbiA9PSBMVFIgPyBlbmRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRp
b24pIDogc3RhcnRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pOwotICAgIH0KLSAg
ICByZXR1cm4gcmlnaHRXb3JkQnJlYWs7Ci19Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgJKHJldmlzaW9uIDExMDQ3MykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgaW50
IHRleHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CiAgICAgaW50IHRl
eHRCcmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CiAgICAgYm9vbCBpc1Rl
eHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CisgICAgYm9vbCBpc1dvcmRUZXh0QnJl
YWsoVGV4dEJyZWFrSXRlcmF0b3IqKTsKIAogICAgIGNvbnN0IGludCBUZXh0QnJlYWtEb25lID0g
LTE7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3JJQ1UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3JJQ1UuY3BwCShyZXZpc2lvbiAxMTA0NzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM5LDYgKzEzOSwxMiBAQCBib29sIGlzVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiBp
dGVyCiAgICAgcmV0dXJuIHVicmtfaXNCb3VuZGFyeShyZWludGVycHJldF9jYXN0PFVCcmVha0l0
ZXJhdG9yKj4oaXRlcmF0b3IpLCBwb3NpdGlvbik7CiB9CiAKK2Jvb2wgaXNXb3JkVGV4dEJyZWFr
KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAgICBpbnQgcnVsZVN0YXR1cyA9IHVi
cmtfZ2V0UnVsZVN0YXR1cyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0
b3IpKTsKKyAgICByZXR1cm4gcnVsZVN0YXR1cyAhPSBVQlJLX1dPUkRfTk9ORTsKK30KKwogc3Rh
dGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRVcEl0ZXJhdG9yV2l0aFJ1bGVzKGJvb2wmIGNyZWF0
ZWRJdGVyYXRvciwgVGV4dEJyZWFrSXRlcmF0b3IqJiBpdGVyYXRvciwKICAgICBjb25zdCBjaGFy
KiBicmVha1J1bGVzLCBjb25zdCBVQ2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQogewpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVh
a0l0ZXJhdG9yR3RrLmNwcAkocmV2aXNpb24gMTEwNDczKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zODUsNCArMzg1LDkgQEAgYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciogaXRl
cgogICAgIHJldHVybiBpdGVyYXRvci0+bV9jaGFySXRlcmF0b3IuZ2V0SW5kZXgoKSA9PSBpbmRl
eDsKIH0KIAorYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqKQoreworICAg
IHJldHVybiB0cnVlOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L3F0L1RleHRCcmVha0l0ZXJhdG9yUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAJKHJldmlzaW9uIDExMDQ3
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw0ICsxNTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGJvb2wgaXNXb3JkVGV4dEJy
ZWFrKFRleHRCcmVha0l0ZXJhdG9yKikKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW5jZS9UZXh0QnJl
YWtJdGVyYXRvcldpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L3dpbmNlL1RleHRCcmVha0l0ZXJhdG9yV2luQ0UuY3BwCShyZXZpc2lvbiAxMTA0NzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbmNlL1RleHRCcmVha0l0ZXJhdG9y
V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNiArMzE3LDExIEBAIGJvb2wgaXNUZXh0
QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9v
bCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqKQoreworICAgIHJldHVybiB0cnVl
OworfQorCiBUZXh0QnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihjb25zdCBV
Q2hhciogc3RyaW5nLCBpbnQgbGVuZ3RoKQogewogICAgIHJldHVybiBjaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yKHN0cmluZywgbGVuZ3RoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDQ3MykKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTAyLTE2ICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2luZyBJ
Q1UgYnJlYWsgaXRlcmF0b3IgdG8gc2ltcGxpZnkgdmlzdWFsIHdvcmQgbW92ZW1lbnQgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03ODg1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1ibG9jay1w
b3NpdGlvbmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0
aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50
Lmh0bWw6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5
LW11bHRpLWxpbmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL21v
dmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1saW5lLmh0bWw6CisgICAgICAgICogZWRpdGluZy9z
ZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXNpbmdsZS1zcGFjZS1pbmxpbmUtZWxlbWVu
dC1leHBlY3RlZC50eHQ6CisKIDIwMTItMDMtMTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgTWFjIHJlYmFzZWxpbmUuIE9mZnNldCBpcyBhbHdheXMgNzAwcHgg
bm93LgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZp
c3VhbGx5LWlubGluZS1ibG9jay1wb3NpdGlvbmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1
YWxseS1pbmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTEwNDczKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3Jk
LXZpc3VhbGx5LWlubGluZS1ibG9jay1wb3NpdGlvbmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0yLDM3ICsyLDM3IEBACiA9PT09PT09PSBNb3ZlIEJ5IFdvcmQgPT09
PQogVGVzdCAxLCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYmVnaW4gc3RhcnQiWzAs
IDZdLCAiYWJjIGRlZiJbMCwgNF0sICJlbmQgaW5nIlswLCA0XSwgInRoaXMgaXMgZmxvYXQiWzAs
IDUsIDhdLCAidGhpcyBpcyBmaXhlZCJbNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4
XSwgInRoaXMgaXMgYWJzb2x1dGUiWzAsIDUsIDgsIDE2XQorImJlZ2luIHN0YXJ0IlswLCA2XSwg
ImFiYyBkZWYiWzAsIDRdLCAiZW5kIGluZyJbMCwgNF0sICJ0aGlzIGlzIGZsb2F0IlswLCA1LCA4
XSwgInRoaXMgaXMgZml4ZWQiWzAsIDUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0s
ICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAot
InRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUs
IDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVu
ZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KKyJ0aGlz
IGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwg
InRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQg
aW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCiBUZXN0IDIs
IExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJhYmMgZGVmIlswLCA0XSwgImVuZCBpbmci
WzAsIDRdLCAidGhpcyBpcyBmbG9hdCJbMCwgNSwgOF0sICJ0aGlzIGlzIGZpeGVkIls1LCA4XSwg
InRoaXMgaXMgcmVsYXRpdmUiWzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwg
MTZdCisiYWJjIGRlZiJbMCwgNF0sICJlbmQgaW5nIlswLCA0XSwgInRoaXMgaXMgZmxvYXQiWzAs
IDUsIDhdLCAidGhpcyBpcyBmaXhlZCJbMCwgNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1
LCA4XSwgInRoaXMgaXMgYWJzb2x1dGUiWzAsIDUsIDgsIDE2XQogTW92ZSBsZWZ0IGJ5IG9uZSB3
b3JkCi0idGhpcyBpcyBhYnNvbHV0ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJb
OCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4LCA1XSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBd
LCAiZW5kIGluZyJbNCwgMF0sICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQor
InRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUs
IDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNSwgMF0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwg
ImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KIFRl
c3QgMywgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAotImVuZCBpbmciWzAsIDRdLCAidGhp
cyBpcyBmbG9hdCJbMCwgNSwgOF0sICJ0aGlzIGlzIGZpeGVkIls1LCA4XSwgInRoaXMgaXMgcmVs
YXRpdmUiWzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCisiZW5kIGlu
ZyJbMCwgNF0sICJ0aGlzIGlzIGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzAsIDUs
IDhdLCAidGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1
LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4
LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwg
NV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJb
NCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwg
MF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBd
LCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQs
IDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCiBUZXN0IDQsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25l
IHdvcmQKLSJ0aGlzIGlzIGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzUsIDhdLCAi
dGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAx
Nl0KKyJ0aGlzIGlzIGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzAsIDUsIDhdLCAi
dGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAx
Nl0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAw
XSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0
aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0s
ICJiZWdpbiBzdGFydCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0
aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhp
cyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAi
YmVnaW4gc3RhcnQiWzYsIDBdCiBUZXN0IDUsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQK
ICJ0aGlzIGlzIGZpeGVkIlswLCA1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUiWzAsIDUsIDhdLCAi
dGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJ0
aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAw
XSwgInRoaXMgaXMgZml4ZWQiWzgsIDVdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQg
aW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCisidGhpcyBp
cyBhYnNvbHV0ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0
aGlzIGlzIGZpeGVkIls4LCA1LCAwXSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGlu
ZyJbNCwgMF0sICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQogVGVzdCA2LCBM
VFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCiAidGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0s
ICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAot
InRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUs
IDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVu
ZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KKyJ0aGlz
IGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwg
InRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQg
aW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCiBUZXN0IDcs
IExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4
LCAxNl0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1
LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0s
ICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwg
MF0sICJiZWdpbiBzdGFydCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0s
ICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAi
dGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBd
LCAiYmVnaW4gc3RhcnQiWzYsIDBdCiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1i
eS13b3JkLXZpc3VhbGx5LWlubGluZS1ibG9jay1wb3NpdGlvbmVkLWVsZW1lbnQuaHRtbAkocmV2
aXNpb24gMTEwNDczKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13
b3JkLXZpc3VhbGx5LWlubGluZS1ibG9jay1wb3NpdGlvbmVkLWVsZW1lbnQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcsMzggKzE3LDM4IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKIAogPGRpdiBpZD0idGVzdE1vdmVCeVdvcmQiIGNvbnRlbnRlZGl0YWJsZSBzdHlsZT0i
d2lkdGg6MjAwMHB4OyBoZWlnaHQ6MjAwMHB4Ij4KIDxkaXYgaWQ9ImRfMSIgZGlyPWx0ciAKLXRp
dGxlPSJbZF8xLCAwXVtkXzEsIDZdW2RfMiwgMF1bZF8yLCA0XVtkXzMsIDBdW2RfMywgNF1bZF80
LCAwXVtkXzQsIDVdW2RfNCwgOF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYs
IDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAotW2RfNywgMTZdW2RfNywgOF1b
ZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtk
XzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2Rf
MSwgNl1bZF8xLCAwXSIgCit0aXRsZT0iW2RfMSwgMF1bZF8xLCA2XVtkXzIsIDBdW2RfMiwgNF1b
ZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2RfNSwgMF1bZF81LCA1XVtk
XzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2Rf
NywgMTZdfAorW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1
XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBd
W2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKIGNsYXNz
PSJ0ZXN0X21vdmVfYnlfd29yZCI+YmVnaW4gc3RhcnQ8L2Rpdj4KIAogPGRpdiBpZD0iZF8yIiBk
aXI9bHRyIAotdGl0bGU9IltkXzIsIDBdW2RfMiwgNF1bZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1b
ZF80LCA1XVtkXzQsIDhdW2RfNSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtk
XzcsIDBdW2RfNywgNV1bZF83LCA4XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywg
NV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4
XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZd
W2RfMSwgMF0iIAordGl0bGU9IltkXzIsIDBdW2RfMiwgNF1bZF8zLCAwXVtkXzMsIDRdW2RfNCwg
MF1bZF80LCA1XVtkXzQsIDhdW2RfNSwgMF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1
XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAorW2RfNywgMTZdW2Rf
NywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81
LCA1XVtkXzUsIDBdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIs
IDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIg
c3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrIj5hYmMgZGVmPC9kaXY+CiAKIDxkaXYgaWQ9ImRf
MyIgZGlyPWx0ciAKLXRpdGxlPSJbZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQs
IDhdW2RfNSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywg
NV1bZF83LCA4XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtk
XzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2Rf
NCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAor
dGl0bGU9IltkXzMsIDBdW2RfMywgNF1bZF80LCAwXVtkXzQsIDVdW2RfNCwgOF1bZF81LCAwXVtk
XzUsIDVdW2RfNSwgOF1bZF82LCAwXVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2Rf
NywgOF1bZF83LCAxNl18CitbZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4
XVtkXzYsIDVdW2RfNiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNSwgMF1bZF80LCA4XVtkXzQsIDVd
W2RfNCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0i
IAogY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIj5lbmQgaW5nPC9kaXY+CiAKIDxkaXYgaWQ9ImRf
NCIgZGlyPWx0ciAKLXRpdGxlPSJbZF80LCAwXVtkXzQsIDVdW2RfNCwgOF1bZF81LCA1XVtkXzUs
IDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywg
MTZdfAotW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtk
XzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2Rf
MywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCit0aXRsZT0iW2RfNCwgMF1b
ZF80LCA1XVtkXzQsIDhdW2RfNSwgMF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtk
XzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAorW2RfNywgMTZdW2RfNywg
OF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1
XVtkXzUsIDBdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRd
W2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgc3R5
bGU9ImZsb2F0OmxlZnQiPnRoaXMgaXMgZmxvYXQ8L2Rpdj4KIAogPGRpdiBpZD0iZF81IiBkaXI9
bHRyIAogdGl0bGU9IltkXzUsIDBdW2RfNSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82
LCA4XVtkXzcsIDBdW2RfNywgNV1bZF83LCA4XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtkXzcsIDhd
W2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1b
ZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtk
XzEsIDZdW2RfMSwgMF0iIAorW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwg
OF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1bZF80LCA1
XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBd
IiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgc3R5bGU9InBvc2l0aW9uOmZpeGVkOyB0b3A6
MzBweDsgcmlnaHQ6NXB4Ij50aGlzIGlzIGZpeGVkPC9kaXY+CiAKIDxkaXYgaWQ9ImRfNiIgZGly
PWx0ciAKIHRpdGxlPSJbZF82LCAwXVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2Rf
NywgOF1bZF83LCAxNl18Ci1bZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4
XVtkXzYsIDVdW2RfNiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBd
W2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKK1tkXzcs
IDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUs
IDhdW2RfNSwgNV1bZF81LCAwXVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywg
MF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9tb3ZlX2J5
X3dvcmQiIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsgbGVmdDoyMHB4Ij50aGlzIGlzIHJlbGF0
aXZlPC9kaXY+CiAKIDxkaXYgaWQ9ImRfNyIgZGlyPWx0ciAKIHRpdGxlPSJbZF83LCAwXVtkXzcs
IDVdW2RfNywgOF1bZF83LCAxNl18Ci1bZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1b
ZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtk
XzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAK
K1tkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAw
XVtkXzUsIDhdW2RfNSwgNV1bZF81LCAwXVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRd
W2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9t
b3ZlX2J5X3dvcmQiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxMDBweDsgdG9wOjE1
MHB4Ij50aGlzIGlzIGFic29sdXRlPC9kaXY+CiAKIDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLWxpbmUtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUt
Ynktd29yZC12aXN1YWxseS1tdWx0aS1saW5lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTEwNDcz
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5
LW11bHRpLWxpbmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsOSBA
QCBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCiAib3BxIHJzdCB1dncgeHl6IlsxNSwgMTEsIDgsIDMs
IDBdLCAiYWJjIGRlZiBnaGkgamtsIG1uICJbMTYsIDExLCA4LCAzLCAwXQogVGVzdCA4LCBSVEw6
CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJhYmMgZGVmIGdoaSBqa2wgbW4gIlswLCAzLCA4LCAx
MSwgMTYsIDE4XSwgIm9wcSByc3QgdXZ3IHh5eiJbMCwgMywgOCwgMTEsIDE1XSAgICBGQUlMIGV4
cGVjdGVkOiBbImFiYyBkZWYgZ2hpIGprbCBtbiAiWyAwLCAgMywgIDgsICAxMSwgIDE2LCBdIm9w
cSByc3QgdXZ3IHh5eiJbIDAsICAzLCAgOCwgIDExLCAgMTVdCi0iYWJjIGRlZiBnaGkgamtsIG1u
ICJbMTYsIDE4XSAgIEZBSUwgZXhwZWN0ZWQgIm9wcSByc3QgdXZ3IHh5eiJbIDBdCi0iYWJjIGRl
ZiBnaGkgamtsIG1uICJbMTcsIDE4XSAgIEZBSUwgZXhwZWN0ZWQgIm9wcSByc3QgdXZ3IHh5eiJb
IDBdCisiYWJjIGRlZiBnaGkgamtsIG1uICJbMCwgMywgOCwgMTEsIDE2XSwgIm9wcSByc3QgdXZ3
IHh5eiJbMCwgMywgOCwgMTEsIDE1XQogTW92ZSByaWdodCBieSBvbmUgd29yZAotIm9wcSByc3Qg
dXZ3IHh5eiJbMTUsIDExLCA4LCAzLCAwXSwgImFiYyBkZWYgZ2hpIGprbCBtbiAiWzE4LCAxNiwg
MTEsIDgsIDMsIDBdCisib3BxIHJzdCB1dncgeHl6IlsxNSwgMTEsIDgsIDMsIDBdLCAiYWJjIGRl
ZiBnaGkgamtsIG1uICJbMTYsIDExLCA4LCAzLCAwXQogVGVzdCA5LCBSVEw6CiBNb3ZlIGxlZnQg
Ynkgb25lIHdvcmQKICJBQUEgQUFBIEFBQSBBQUEgIlswLCA0LCA4LCAxMl0sICJBQUEgQUFBIEFB
QSBBQUEiWzAsIDQsIDgsIDEyLCAxNV0KQEAgLTU5LDIzICs1NywzMCBAQCBNb3ZlIHJpZ2h0IGJ5
IG9uZSB3b3JkCiAiQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFBQSJbMjUsIDIyLCAxOCwgMTQsIDEx
LCA3LCA0LCAwXSwgIiBhYmMgZGVmIEFBQSBBQUEgaGlqIEFBQSBBQUEgdXZ3IHh5eiAiWzMzLCAy
OSwgMjUsIDIxLCAxNywgMTMsIDksIDQsIDFdCiBUZXN0IDEyLCBSVEw6CiBNb3ZlIGxlZnQgYnkg
b25lIHdvcmQKLSIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlsxLCA0LCA5
LCAxMywgMTcsIDIxLCAyNSwgMjksIDMzLCAzNl0sICJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFB
IlswLCA0LCA3LCAxMSwgMTQsIDE4LCAyMiwgMjVdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiIGFiYyBk
ZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJbIDEsICA0LCAgOSwgIDEzLCAgMTcsICAy
MSwgIDI1LCAgMjksICAzMywgXSJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlsgMCwgIDQsICA3
LCAgMTEsICAxNCwgIDE4LCAgMjIsICAyNV0KLSIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFB
IHV2dyB4eXogIlszMywgMzZdICAgRkFJTCBleHBlY3RlZCAiQUFBIGtqIEFBQSBtbiBvcHEgQUFB
IEFBQSJbIDBdCi0iIGFiYyBkZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJbMzUsIDM2
XSAgIEZBSUwgZXhwZWN0ZWQgIkFBQSBraiBBQUEgbW4gb3BxIEFBQSBBQUEiWyAwXQotIiBhYmMg
ZGVmIEFBQSBBQUEgaGlqIEFBQSBBQUEgdXZ3IHh5eiAiWzM0LCAzNl0gICBGQUlMIGV4cGVjdGVk
ICJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlsgMF0KKyIgYWJjIGRlZiBBQUEgQUFBIGhpaiBB
QUEgQUFBIHV2dyB4eXogIlsxLCA0LCA5LCAxMywgMTcsIDIxLCAyNSwgMjksIDMzXSwgIkFBQSBr
aiBBQUEgbW4gb3BxIEFBQSBBQUEiWzAsIDQsIDcsIDExLCAxNCwgMTgsIDIyLCAyNV0KIE1vdmUg
cmlnaHQgYnkgb25lIHdvcmQKLSJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlsyNSwgMjIsIDE4
LCAxNCwgMTEsIDcsIDQsIDBdLCAiIGFiYyBkZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6
ICJbMzYsIDMzLCAyOSwgMjUsIDIxLCAxNywgMTMsIDksIDQsIDFdCisiQUFBIGtqIEFBQSBtbiBv
cHEgQUFBIEFBQSJbMjUsIDIyLCAxOCwgMTQsIDExLCA3LCA0LCAwXSwgIiBhYmMgZGVmIEFBQSBB
QUEgaGlqIEFBQSBBQUEgdXZ3IHh5eiAiWzMzLCAyOSwgMjUsIDIxLCAxNywgMTMsIDksIDQsIDFd
CiBUZXN0IDEzLCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiAiWzAsIDRd
CisiYWJjIGRlZiBnaGkgamtsIG1uICJbMCwgNCwgOCwgMTIsIDE2XSwgIm9wcSByc3QgdXZ3IHh5
eiJbMCwgNCwgOCwgMTIsIDE1XQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iIGhpaiBvcHEiWzgs
IDUsIDFdCisib3BxIHJzdCB1dncgeHl6IlsxNSwgMTIsIDgsIDQsIDBdLCAiYWJjIGRlZiBnaGkg
amtsIG1uICJbMTYsIDEyLCA4LCA0LCAwXQogVGVzdCAxNCwgTFRSOgogTW92ZSByaWdodCBieSBv
bmUgd29yZAorImFiYyBkZWYgZ2hpIGprbCBtbiAiWzAsIDQsIDgsIDEyLCAxNiwgMThdCitNb3Zl
IGxlZnQgYnkgb25lIHdvcmQKKyJhYmMgZGVmIGdoaSBqa2wgbW4gIlsxOCwgMTYsIDEyLCA4LCA0
LCAwXQorVGVzdCAxNSwgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYgIlsw
LCA0LCA4XQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiIGhpaiBvcHEiWzgsIDUsIDFdCitUZXN0
IDE2LCBMVFI6CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCiA8RElWPlswXQogTW92ZSBsZWZ0IGJ5
IG9uZSB3b3JkCiA8RElWPlswXQotVGVzdCAxNSwgTFRSOgorVGVzdCAxNywgTFRSOgogTW92ZSBy
aWdodCBieSBvbmUgd29yZAogIlxuMDAiWzNdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0
aS1saW5lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
bW92ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLWxpbmUuaHRtbAkocmV2aXNpb24gMTEwNDczKQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LW11
bHRpLWxpbmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCB3aGVyZSBjaGls
ZF9ub2RlX2luZGV4IGlzIG9wdGlvbmFsLCBkZWZhCiAKIDxkaXYgY29udGVudGVkaXRhYmxlIGRp
cj1ydGwgaWQ9Im1sXzciIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxl
PSJbbWxfNywgMTUsIDVdW21sXzcsIDExLCA1XVttbF83LCA4LCA1XVttbF83LCAzLCA1XVttbF83
LCAwLCA1XVttbF83LCAxNl1bbWxfNywgMTFdW21sXzcsIDhdW21sXzcsIDNdW21sXzcsIDBdfFtt
bF83LCAwXVttbF83LCAzXVttbF83LCA4XVttbF83LCAxMV1bbWxfNywgMTZdW21sXzcsIDAsIDVd
W21sXzcsIDMsIDVdW21sXzcsIDgsIDVdW21sXzcsIDExLCA1XVttbF83LCAxNSwgNV0iPmFiYyBk
ZWYgZ2hpIGprbCBtbiA8YnIvPjxici8+PGJyLz5vcHEgcnN0IHV2dyB4eXo8L2Rpdj4KIAotPGRp
diBjb250ZW50ZWRpdGFibGUgZGlyPXJ0bCBpZD0ibWxfOCIgY2xhc3M9InRlc3RfbW92ZV9ieV93
b3JkIGZpeF93aWR0aCIgdGl0bGU9IlttbF84LCAxNSwgNV1bbWxfOCwgMTEsIDVdW21sXzgsIDgs
IDVdW21sXzgsIDMsIDVdW21sXzgsIDAsIDVdW21sXzgsIDE4XVttbF84LCAxNl1bbWxfOCwgMTFd
W21sXzgsIDhdW21sXzgsIDNdW21sXzgsIDBdfFttbF84LCAwXVttbF84LCAzXVttbF84LCA4XVtt
bF84LCAxMV1bbWxfOCwgMTZdW21sXzgsIDAsIDVdW21sXzgsIDMsIDVdW21sXzgsIDgsIDVdW21s
XzgsIDExLCA1XVttbF84LCAxNSwgNV0iPmFiYyBkZWYgZ2hpIGprbCBtbiA8ZGl2Pjxici8+PC9k
aXY+PGRpdj48YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rpdj5vcHEgcnN0IHV2dyB4eXo8L2Rpdj4K
KzxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1ydGwgaWQ9Im1sXzgiIGNsYXNzPSJ0ZXN0X21vdmVf
Ynlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSJbbWxfOCwgMTUsIDVdW21sXzgsIDExLCA1XVttbF84
LCA4LCA1XVttbF84LCAzLCA1XVttbF84LCAwLCA1XVttbF84LCAxNl1bbWxfOCwgMTFdW21sXzgs
IDhdW21sXzgsIDNdW21sXzgsIDBdfFttbF84LCAwXVttbF84LCAzXVttbF84LCA4XVttbF84LCAx
MV1bbWxfOCwgMTZdW21sXzgsIDAsIDVdW21sXzgsIDMsIDVdW21sXzgsIDgsIDVdW21sXzgsIDEx
LCA1XVttbF84LCAxNSwgNV0iPmFiYyBkZWYgZ2hpIGprbCBtbiA8ZGl2Pjxici8+PC9kaXY+PGRp
dj48YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rpdj5vcHEgcnN0IHV2dyB4eXo8L2Rpdj4KIAogPGRp
diBjb250ZW50ZWRpdGFibGUgZGlyPXJ0bCBpZD0ibWxfOSIgY2xhc3M9InRlc3RfbW92ZV9ieV93
b3JkIGZpeF93aWR0aCIgdGl0bGU9IlttbF85LCAxNSwgNV1bbWxfOSwgMTIsIDVdW21sXzksIDgs
IDVdW21sXzksIDQsIDVdW21sXzksIDAsIDVdW21sXzksIDEyXVttbF85LCA4XVttbF85LCA0XVtt
bF85LCAwXXxbbWxfOSwgMF1bbWxfOSwgNF1bbWxfOSwgOF1bbWxfOSwgMTJdW21sXzksIDAsIDVd
W21sXzksIDQsIDVdW21sXzksIDgsIDVdW21sXzksIDEyLCA1XVttbF85LCAxNSwgNV0iPteQ15DX
kCDXkNeQ15Ag15DXkNeQINeQ15DXkCA8YnIvPjxici8+PGJyLz7XkNeQ15Ag15DXkNeQINeQ15DX
kCDXkNeQ15A8L2Rpdj4KIApAQCAtNjUsMTEgKzY1LDE1IEBAIHdoZXJlIGNoaWxkX25vZGVfaW5k
ZXggaXMgb3B0aW9uYWwsIGRlZmEKICI+IGFiYyBkZWYg15DXkNeQINeQ15DXkCBoaWog15DXkNeQ
INeQ15DXkCB1dncgeHl6IDxici8+PGJyLz48YnIvPteQ15DXkCBraiDXkNeQ15AgbW4gb3BxINeQ
15DXkCDXkNeQ15A8L2Rpdj4KIAogPGRpdiBjb250ZW50ZWRpdGFibGUgZGlyPXJ0bCBpZD0ibWxf
MTIiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSIKLVttbF8xMiwg
MjUsIDVdW21sXzEyLCAyMiwgNV1bbWxfMTIsIDE4LCA1XVttbF8xMiwgMTQsIDVdW21sXzEyLCAx
MSwgNV1bbWxfMTIsIDcsIDVdW21sXzEyLCA0LCA1XVttbF8xMiwgMCwgNV1bbWxfMTIsIDM2XVtt
bF8xMiwgMzNdW21sXzEyLCAyOV1bbWxfMTIsIDI1XVttbF8xMiwgMjFdW21sXzEyLCAxN11bbWxf
MTIsIDEzXVttbF8xMiwgOV1bbWxfMTIsIDRdW21sXzEyLCAxXXxbbWxfMTIsIDFdW21sXzEyLCA0
XVttbF8xMiwgOV1bbWxfMTIsIDEzXVttbF8xMiwgMTddW21sXzEyLCAyMV1bbWxfMTIsIDI1XVtt
bF8xMiwgMjldW21sXzEyLCAzM11bbWxfMTIsIDAsIDVdW21sXzEyLCA0LCA1XVttbF8xMiwgNywg
NV1bbWxfMTIsIDExLCA1XVttbF8xMiwgMTQsIDVdW21sXzEyLCAxOCwgNV1bbWxfMTIsIDIyLCA1
XVttbF8xMiwgMjUsIDVdCitbbWxfMTIsIDI1LCA1XVttbF8xMiwgMjIsIDVdW21sXzEyLCAxOCwg
NV1bbWxfMTIsIDE0LCA1XVttbF8xMiwgMTEsIDVdW21sXzEyLCA3LCA1XVttbF8xMiwgNCwgNV1b
bWxfMTIsIDAsIDVdW21sXzEyLCAzM11bbWxfMTIsIDI5XVttbF8xMiwgMjVdW21sXzEyLCAyMV1b
bWxfMTIsIDE3XVttbF8xMiwgMTNdW21sXzEyLCA5XVttbF8xMiwgNF1bbWxfMTIsIDFdfFttbF8x
MiwgMV1bbWxfMTIsIDRdW21sXzEyLCA5XVttbF8xMiwgMTNdW21sXzEyLCAxN11bbWxfMTIsIDIx
XVttbF8xMiwgMjVdW21sXzEyLCAyOV1bbWxfMTIsIDMzXVttbF8xMiwgMCwgNV1bbWxfMTIsIDQs
IDVdW21sXzEyLCA3LCA1XVttbF8xMiwgMTEsIDVdW21sXzEyLCAxNCwgNV1bbWxfMTIsIDE4LCA1
XVttbF8xMiwgMjIsIDVdW21sXzEyLCAyNSwgNV0KICI+IGFiYyBkZWYg15DXkNeQINeQ15DXkCBo
aWog15DXkNeQINeQ15DXkCB1dncgeHl6IDxkaXY+PGJyLz48L2Rpdj48ZGl2Pjxici8+PC9kaXY+
PGRpdj48YnIvPjwvZGl2PteQ15DXkCBraiDXkNeQ15AgbW4gb3BxINeQ15DXkCDXkNeQ15A8L2Rp
dj4KIAorPGRpdiBjb250ZW50ZWRpdGFibGUgZGlyPWx0ciBpZD0ibWxfMTMiIGNsYXNzPSJ0ZXN0
X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSJbbWxfMTMsIDBdW21sXzEzLCA0XVttbF8x
MywgOF1bbWxfMTMsIDEyXVttbF8xMywgMTZdW21sXzEzLCAwLCA1XVttbF8xMywgNCwgNV1bbWxf
MTMsIDgsIDVdW21sXzEzLCAxMiwgNV1bbWxfMTMsIDE1LCA1XXxbbWxfMTMsIDE1LCA1XVttbF8x
MywgMTIsIDVdW21sXzEzLCA4LCA1XVttbF8xMywgNCwgNV1bbWxfMTMsIDAsIDVdW21sXzEzLCAx
Nl1bbWxfMTMsIDEyXVttbF8xMywgOF1bbWxfMTMsIDRdW21sXzEzLCAwXSI+YWJjIGRlZiBnaGkg
amtsIG1uIDxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pm9wcSByc3QgdXZ3IHh5ejwv
ZGl2PgorCis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBkaXI9bHRyIGlkPSJtbF8xNCIgY2xhc3M9InRl
c3RfbW92ZV9ieV93b3JkIGZpeF93aWR0aCIgdGl0bGU9IlttbF8xNCwgMF1bbWxfMTQsIDRdW21s
XzE0LCA4XVttbF8xNCwgMTJdW21sXzE0LCAxNl1bbWxfMTQsIDE4XXxbbWxfMTQsIDE4XVttbF8x
NCwgMTZdW21sXzE0LCAxMl1bbWxfMTQsIDhdW21sXzE0LCA0XVttbF8xNCwgMF0iPmFiYyBkZWYg
Z2hpIGprbCBtbiA8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj4KKwogPCEt
LSBtaXhlZCBlZGl0YWJpbGl0eSAtLT4KLTxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5
X3dvcmQiIHRpdGxlPSIwIDR8OCA1IDEiPmFiYyBkZWYgPHNwYW4gY29udGVudGVkaXRhYmxlPiBp
bnNpZGUgc3BhbiA8L3NwYW4+IGhpaiBvcHE8L2Rpdj4KKzxkaXYgZGlyPWx0ciBjbGFzcz0idGVz
dF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDQgOHw4IDUgMSI+YWJjIGRlZiA8c3BhbiBjb250ZW50
ZWRpdGFibGU+IGluc2lkZSBzcGFuIDwvc3Bhbj4gaGlqIG9wcTwvZGl2PgogCiA8ZGl2IGNsYXNz
PSJ0ZXN0X21vdmVfYnlfd29yZCIgY29udGVudGVkaXRhYmxlIGRpcj1sdHIgdGl0bGU9IjB8MCI+
PC9kaXY+CiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29y
ZC12aXN1YWxseS1zaW5nbGUtc3BhY2UtaW5saW5lLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1
YWxseS1zaW5nbGUtc3BhY2UtaW5saW5lLWVsZW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
MTA0NzMpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlz
dWFsbHktc2luZ2xlLXNwYWNlLWlubGluZS1lbGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTcsMzAgKzE3LDE0IEBAIE1vdmUgbGVmdCBieSBvbmUgd29yZAogIiByc3QgdXZ3
Ils4LCA1LCAxXSwgImhpaiBvcHEiWzRdLCAiYWJjIGRlZiAiWzgsIDQsIDBdCiBUZXN0IDQsIFJU
TDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotImFiYyBkZWYgIlswXSwgIiByc3QgdXZ3Ils0XSwg
ImhpaiBvcHEiWzNdLCAiYWJjIGRlZiAiWzcsIDNdLCAiIHJzdCB1dnciWzhdICAgIEZBSUwgZXhw
ZWN0ZWQ6IFsiYWJjIGRlZiAiWyAwLCBdIiByc3QgdXZ3IlsgNCwgXSJoaWogb3BxIlsgNywgIDMs
IF0iYWJjIGRlZiAiWyA3LCAgMywgXSIgcnN0IHV2dyJbIDhdCi0iIHJzdCB1dnciWzRdLCAiaGlq
IG9wcSJbM10gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSIgcnN0IHV2dyJbM10sICJo
aWogb3BxIlszXSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotIiByc3QgdXZ3IlsyXSwg
ImhpaiBvcHEiWzNdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iIHJzdCB1dnciWzFd
LCAiaGlqIG9wcSJbM10gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLU1vdmUgcmlnaHQg
Ynkgb25lIHdvcmQKLSIgcnN0IHV2dyJbOF0sICJhYmMgZGVmICJbMywgN10sICJoaWogb3BxIlsz
XSwgIiByc3QgdXZ3Ils0XSwgImFiYyBkZWYgIlswXSAgICBGQUlMIGV4cGVjdGVkOiBbIiByc3Qg
dXZ3IlsgOCwgXSJhYmMgZGVmICJbIDMsICA3LCBdImhpaiBvcHEiWyAzLCAgNywgXSIgcnN0IHV2
dyJbIDQsIF0iYWJjIGRlZiAiWyAwXQotImhpaiBvcHEiWzNdLCAiIHJzdCB1dnciWzRdICAgRkFJ
TCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iaGlqIG9wcSJbNF0sICIgcnN0IHV2dyJbNF0gICBG
QUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSJoaWogb3BxIls1XSwgIiByc3QgdXZ3Ils0XSAg
IEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotImhpaiBvcHEiWzZdLCAiIHJzdCB1dnciWzRd
ICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCisiYWJjIGRlZiAiWzBdLCAiIHJzdCB1dnci
WzRdLCAiaGlqIG9wcSJbNywgM10sICJhYmMgZGVmICJbNywgM10sICIgcnN0IHV2dyJbOF0KK01v
dmUgcmlnaHQgYnkgb25lIHdvcmQKKyIgcnN0IHV2dyJbOF0sICJhYmMgZGVmICJbMywgN10sICJo
aWogb3BxIlszLCA3XSwgIiByc3QgdXZ3Ils0XSwgImFiYyBkZWYgIlswXQogVGVzdCA1LCBSVEw6
CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJhYmMgZGVmICJbMF0sICIgcnN0IHV2dyJbNF0sICJo
aWogb3BxIlszXSwgImFiYyBkZWYgIls3LCAzXSwgIiByc3QgdXZ3Ils4XSAgICBGQUlMIGV4cGVj
dGVkOiBbImFiYyBkZWYgIlsgMCwgXSIgcnN0IHV2dyJbIDQsIF0iaGlqIG9wcSJbIDcsICAzLCBd
ImFiYyBkZWYgIlsgNywgIDMsIF0iIHJzdCB1dnciWyA4XQotIiByc3QgdXZ3Ils0XSwgImhpaiBv
cHEiWzNdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iIHJzdCB1dnciWzNdLCAiaGlq
IG9wcSJbM10gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSIgcnN0IHV2dyJbMl0sICJo
aWogb3BxIlszXSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotIiByc3QgdXZ3IlsxXSwg
ImhpaiBvcHEiWzNdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi1Nb3ZlIHJpZ2h0IGJ5
IG9uZSB3b3JkCi0iIHJzdCB1dnciWzhdLCAiYWJjIGRlZiAiWzMsIDddLCAiaGlqIG9wcSJbM10s
ICIgcnN0IHV2dyJbNF0sICJhYmMgZGVmICJbMF0gICAgRkFJTCBleHBlY3RlZDogWyIgcnN0IHV2
dyJbIDgsIF0iYWJjIGRlZiAiWyAzLCAgNywgXSJoaWogb3BxIlsgMywgIDcsIF0iIHJzdCB1dnci
WyA0LCBdImFiYyBkZWYgIlsgMF0KLSJoaWogb3BxIlszXSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwg
ZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotImhpaiBvcHEiWzRdLCAiIHJzdCB1dnciWzRdICAgRkFJ
TCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iaGlqIG9wcSJbNV0sICIgcnN0IHV2dyJbNF0gICBG
QUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSJoaWogb3BxIls2XSwgIiByc3QgdXZ3Ils0XSAg
IEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQorImFiYyBkZWYgIlswXSwgIiByc3QgdXZ3Ils0
XSwgImhpaiBvcHEiWzcsIDNdLCAiYWJjIGRlZiAiWzcsIDNdLCAiIHJzdCB1dnciWzhdCitNb3Zl
IHJpZ2h0IGJ5IG9uZSB3b3JkCisiIHJzdCB1dnciWzhdLCAiYWJjIGRlZiAiWzMsIDddLCAiaGlq
IG9wcSJbMywgN10sICIgcnN0IHV2dyJbNF0sICJhYmMgZGVmICJbMF0KIFRlc3QgNiwgTFRSOgog
TW92ZSByaWdodCBieSBvbmUgd29yZAogImFiYyBkZWYgIlswLCA0LCA4XSwgImhpaiBvcHEiWzRd
LCAiIHJzdCB1dnciWzEsIDUsIDhdCkBAIC04OCwzMiArNzIsMTQgQEAgTW92ZSBsZWZ0IGJ5IG9u
ZSB3b3JkCiAiRkZaIExJRyJbNywgM10sICJhYmMgZGVmIls0XSwgIkFCRCBEU1UgIls4LCAzLCAw
XQogVGVzdCAxNSwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iQUJEIG9wcSBEU1UgIlsw
LCA0LCA4LCAxMl0sICJhYmMgQUFBIGRlZiJbOCwgNCwgM10sICJGRlogcnN0IExJRyJbNCwgOCwg
MTFdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiQUJEIG9wcSBEU1UgIlsgMCwgIDQsICA4LCAgMTIsIF0i
YWJjIEFBQSBkZWYiWyA0LCAgMywgXSJGRlogcnN0IExJRyJbIDQsICA4LCAgMTFdCi0iQUJEIG9w
cSBEU1UgIlsxMl0sICJhYmMgQUFBIGRlZiJbOF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRl
ZiJbIDRdCi0iYWJjIEFBQSBkZWYiWzEwLCA4XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVm
IlsgNF0KLSJhYmMgQUFBIGRlZiJbOSwgOF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJb
IDRdCisiQUJEIG9wcSBEU1UgIlswLCA0LCA4LCAxMl0sICJhYmMgQUFBIGRlZiJbNCwgM10sICJG
RlogcnN0IExJRyJbNCwgOCwgMTFdCiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iRkZaIHJzdCBM
SUciWzExLCA4LCA0XSwgImFiYyBBQUEgZGVmIlszLCA0LCA4XSwgIkFCRCBvcHEgRFNVICJbMTIs
IDgsIDQsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIHJzdCBMSUciWyAxMSwgIDgsICA0LCBd
ImFiYyBBQUEgZGVmIlsgMywgIDQsIF0iQUJEIG9wcSBEU1UgIlsgMTIsICA4LCAgNCwgIDBdCi0i
YWJjIEFBQSBkZWYiWzQsIDhdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgMTJdCisi
RkZaIHJzdCBMSUciWzExLCA4LCA0XSwgImFiYyBBQUEgZGVmIlszLCA0XSwgIkFCRCBvcHEgRFNV
ICJbMTIsIDgsIDQsIDBdCiBUZXN0IDE2LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0i
QUJEIG9wcSBEU1UgIlswLCA0XSwgImFiYyBBQUEgZGVmIls4LCA0XSwgIkFCRCBvcHEgRFNVICJb
MTIsIDExXSwgIkZGWiByc3QgTElHIls0LCA4LCAxMV0gICAgRkFJTCBleHBlY3RlZDogWyJBQkQg
b3BxIERTVSAiWyAwLCAgNCwgIDgsIF0iYWJjIEFBQSBkZWYiWyA4LCAgNywgXSJBQkQgb3BxIERT
VSAiWyAxMiwgIDExLCBdIkZGWiByc3QgTElHIlsgNCwgIDgsICAxMV0KLSJBQkQgb3BxIERTVSAi
WzRdLCAiYWJjIEFBQSBkZWYiWzhdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgOF0K
LSJBQkQgb3BxIERTVSAiWzVdLCAiYWJjIEFBQSBkZWYiWzhdICAgRkFJTCBleHBlY3RlZCAiQUJE
IG9wcSBEU1UgIlsgOF0KLSJBQkQgb3BxIERTVSAiWzZdLCAiYWJjIEFBQSBkZWYiWzhdICAgRkFJ
TCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgOF0KLSJBQkQgb3BxIERTVSAiWzddLCAiYWJjIEFB
QSBkZWYiWzhdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgOF0KLSJhYmMgQUFBIGRl
ZiJbOCwgNF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDddCi0iYWJjIEFBQSBkZWYi
WzksIDRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA3XQotImFiYyBBQUEgZGVmIlsx
MCwgNF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDddCi0iYWJjIEFBQSBkZWYiWzEx
LCA0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgN10KLSJhYmMgQUFBIGRlZiJbNywg
NF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyAxMl0KLSJhYmMgQUFBIGRlZiJbNiwg
NF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyAxMl0KLSJhYmMgQUFBIGRlZiJbNSwg
NF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyAxMl0KLU1vdmUgbGVmdCBieSBvbmUg
d29yZAotIkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJBQkQgb3BxIERTVSAiWzExLCAxMl0sICJh
YmMgQUFBIGRlZiJbNywgOF0sICJBQkQgb3BxIERTVSAiWzQsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6
IFsiRkZaIHJzdCBMSUciWyAxMSwgIDgsICA0LCBdIkFCRCBvcHEgRFNVICJbIDExLCAgMTIsIF0i
YWJjIEFBQSBkZWYiWyA3LCAgOCwgXSJBQkQgb3BxIERTVSAiWyA4LCAgNCwgIDBdCi0iYWJjIEFB
QSBkZWYiWzhdLCAiQUJEIG9wcSBEU1UgIls0XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNV
ICJbIDhdCi0iRkZaIHJzdCBMSUciWzFdLCAiQUJEIG9wcSBEU1UgIls0XSAgIEZBSUwgZXhwZWN0
ZWQgIkFCRCBvcHEgRFNVICJbIDhdCi0iRkZaIHJzdCBMSUciWzJdLCAiQUJEIG9wcSBEU1UgIls0
XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDhdCisiQUJEIG9wcSBEU1UgIlswLCA0
LCA4XSwgImFiYyBBQUEgZGVmIls4LCA3XSwgIkFCRCBvcHEgRFNVICJbMTIsIDExXSwgIkZGWiBy
c3QgTElHIls0LCA4LCAxMV0KK01vdmUgbGVmdCBieSBvbmUgd29yZAorIkZGWiByc3QgTElHIlsx
MSwgOCwgNF0sICJBQkQgb3BxIERTVSAiWzExLCAxMl0sICJhYmMgQUFBIGRlZiJbNywgOF0sICJB
QkQgb3BxIERTVSAiWzgsIDQsIDBdCiBUZXN0IDE3LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdv
cmQKICJBQkQgb3BxIERTVSAiWzAsIDQsIDgsIDEyXSwgImFiYyBBQUEgZGVmIls0LCA4XSwgIkZG
WiByc3QgTElHIls0LCA4LCAxMV0KQEAgLTEzMSwxNCArOTcsNyBAQCBNb3ZlIGxlZnQgYnkgb25l
IHdvcmQKICJGRloiWzNdLCAiYmJiIEFBQSAiWzcsIDRdLCAiYWFhICJbNCwgMF0KIFRlc3QgMjAs
IFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotIkFCRCBvcHEgcnN0IERTVSAiWzAsIDQsIDcs
IDEyLCAxNl0sICJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsxMiwgOCwgNywgM10sICJBQlcgaGlqIHh5
eiBGWFgiWzQsIDcsIDEyLCAxNV0gICAgRkFJTCBleHBlY3RlZDogWyJBQkQgb3BxIHJzdCBEU1Ug
IlsgMCwgIDQsICA3LCAgMTIsICAxNiwgXSJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsgMTUsICA4LCAg
NywgIDMsIF0iQUJXIGhpaiB4eXogRlhYIlsgNCwgIDcsICAxMiwgIDE1XQotIkFCRCBvcHEgcnN0
IERTVSAiWzE2XSwgImFiYyB1dncgQUFBIGRlZiBsbW4iWzEyXSAgIEZBSUwgZXhwZWN0ZWQgImFi
YyB1dncgQUFBIGRlZiBsbW4iWyAxNV0KLSJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsxOCwgMTJdICAg
RkFJTCBleHBlY3RlZCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbIDE1XQotImFiYyB1dncgQUFBIGRl
ZiBsbW4iWzE3LCAxMl0gICBGQUlMIGV4cGVjdGVkICJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsgMTVd
Ci0iYWJjIHV2dyBBQUEgZGVmIGxtbiJbMTYsIDEyXSAgIEZBSUwgZXhwZWN0ZWQgImFiYyB1dncg
QUFBIGRlZiBsbW4iWyAxNV0KLSJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsxNSwgMTJdICAgRkFJTCBl
eHBlY3RlZCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbIDhdCi0iYWJjIHV2dyBBQUEgZGVmIGxtbiJb
MTQsIDEyXSAgIEZBSUwgZXhwZWN0ZWQgImFiYyB1dncgQUFBIGRlZiBsbW4iWyA4XQotImFiYyB1
dncgQUFBIGRlZiBsbW4iWzEzLCAxMl0gICBGQUlMIGV4cGVjdGVkICJhYmMgdXZ3IEFBQSBkZWYg
bG1uIlsgOF0KKyJBQkQgb3BxIHJzdCBEU1UgIlswLCA0LCA3LCAxMiwgMTZdLCAiYWJjIHV2dyBB
QUEgZGVmIGxtbiJbMTUsIDgsIDcsIDNdLCAiQUJXIGhpaiB4eXogRlhYIls0LCA3LCAxMiwgMTVd
CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCiAiQUJXIGhpaiB4eXogRlhYIlsxNSwgMTIsIDcsIDRd
LCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbMywgNywgOCwgMTVdLCAiQUJEIG9wcSByc3QgRFNVICJb
MTYsIDEyLCA3LCA0LCAwXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131956</attachid>
            <date>2012-03-14 16:43:27 -0700</date>
            <delta_ts>2012-03-15 12:22:57 -0700</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>78856.v3</filename>
            <type>text/plain</type>
            <size>84456</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDEyLTAzLTE0ICBYaWFvbWVp
IEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2luZyBJQ1UgYnJlYWsgaXRlcmF0
b3IgdG8gc2ltcGxpZnkgdmlzdWFsIHdvcmQgbW92ZW1lbnQgaW1wbGVtZW50YXRpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVs
aWVzIG9uIElDVSB3b3JkIGJyZWFrIGl0ZXJhdG9yIGFuZCBjdXJzb3IgdmlzdWFsIG1vdmVtZW50
IGJ5IGNoYXJhY3RlciB0byBnZXQgdGhlIHdvcmQgYnJlYWsKKyAgICAgICAgcG9zaXRpb24gaW4g
dmlzdWFsIG9yZGVyLiBJdCByZWR1Y2VzIHRoZSBjb21wbGV4aXR5IG9mIG9sZCBpbXBsZW1lbnRh
dGlvbi4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlz
dWFsbHktd3JvbmctbGVmdC1yaWdodC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcDogRXhjbHVkZSBXaW5DRSBmcm9tIHZpc3VhbCB3b3JkIG1vdmVtZW50IHNpbmNl
IGlzV29yZFRleHRCcmVhayBpcyBub3QgaW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQpOgorICAgICAgICAqIGVkaXRpbmcvdmlzaWJs
ZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnByZXZp
b3VzTGVhZldpdGhTYW1lRWRpdGFiaWxpdHkpOiBKdXN0IG1vdmluZyB0byB0aGUgdG9wIHdpdGhv
dXQgZnVuY3Rpb25hbGl0eSBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdOb2Rl
V2l0aE5vbklubGluZVJlbmRlcmVyKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpuZXh0TGVh
ZldpdGhTYW1lRWRpdGFiaWxpdHkpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnByZXZpb3Vz
Um9vdElubGluZUJveCk6IHJldHVybiBwcmV2aW91cyBSb290SW5saW5lQm94IHdoaWNoIGlzIGlu
IGRpZmZlcmVudCByZW5kZXJlci4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRSb290SW5saW5lQm94
KTogcmV0dXJuIG5leHQgUm9vdElubGluZUJveCB3aGljaCBpcyBpbiBkaWZmZXJlbnQgcmVuZGVy
ZXIuCisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0JveEluT25lTGluZSk6IHJldHVybnMgbG9n
aWNhbGx5IHByZXZpb3VzIGJveCBpbiBvbmUgbGluZS4KKyAgICAgICAgKFdlYkNvcmU6OmxvZ2lj
YWxseVByZXZpb3VzQm94KTogcmV0dXJucyBsb2dpY2FsbHkgcHJldmlvdXMgYm94LgorICAgICAg
ICAoV2ViQ29yZTo6bmV4dEJveEluT25lTGluZSk6IHJldHVybnMgbG9naWNhbGx5IG5leHQgYm94
IGluIG9uZSBsaW5lLgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5TmV4dEJveCk6IHJldHVy
bnMgbG9naWNhbGx5IG5leHQgYm94LgorICAgICAgICAoV2ViQ29yZTo6d29yZEJyZWFrSXRlcmF0
b3JGb3JNaW5PZmZzZXRCb3VuZGFyeSk6IGNyZWF0ZSB3b3JkIGJyZWFrIGl0ZXJhdG9yIGZvciBw
b3NpdGlvbiB0aGF0IGlzIGEgYm94J3MgbWluIG9mZnNldC4KKyAgICAgICAgKFdlYkNvcmU6Ondv
cmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkpOiBjcmVhdGUgd29yZCBicmVhayBp
dGVyYXRvciBmb3IgcG9zaXRpb24gdGhhdCBpcyBhIGJveCdzIG1heCBvZmZzZXQuCisgICAgICAg
IChXZWJDb3JlOjpsb2dpY2FsbHlTdGFydE9mV29yZCk6IHJldHVybiB3aGV0aGVyIGEgcG9zaXRp
b24gaXMgbG9naWNhbGx5IHN0YXJ0IG9mIHdvcmQuCisgICAgICAgIChXZWJDb3JlOjpsb2dpY2Fs
bHlFbmRPZldvcmQpOiByZXR1cm4gd2hldGhlciBhIHBvc2l0aW9uIGlzIGxvZ2ljYWxseSBlbmQg
b2Ygd29yZC4KKyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbFdvcmRQb3NpdGlvbik6IHJldHVybnMg
dGhlIHZpc3VhbCBsZWZ0IG9yIHJpZ2h0IHdvcmQgcG9zaXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpsZWZ0V29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0V29yZFBvc2l0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg6IEFkZCBpc1dv
cmRUZXh0QnJlYWsoKS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNXb3JkVGV4
dEJyZWFrKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvZ3Rr
L1RleHRCcmVha0l0ZXJhdG9yR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzV29yZFRleHRC
cmVhayk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3F0L1Rl
eHRCcmVha0l0ZXJhdG9yUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNXb3JkVGV4dEJyZWFr
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvd2luY2UvVGV4
dEJyZWFrSXRlcmF0b3JXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1dvcmRUZXh0QnJl
YWspOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDMtMTQgIFRvbnkgQ2hhbmcgIDx0b255
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBmaXggbmVnYXRpdmUgZmxleGluZyBpbiBhdXRvIHNp
emVkIGNvbHVtbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCShyZXZpc2lvbiAxMTA0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQyLDExICs2NDIsMTQgQEAgVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAgICAgcG9zID0gVmlzaWJs
ZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5y
aWdodCh0cnVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Cisj
aWYgIU9TKFdJTkNFKQorICAgICAgICAvLyBWaXN1YWwgd29yZCBtb3ZlbWVudCByZWxpZXMgb24g
aXNXb3JkVGV4dEJyZWFrIHdoaWNoIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBXaW5DRS4KICAgICAg
ICAgaWYgKHZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoKQogICAgICAgICAgICAgfHwgKG1fZnJh
bWUgJiYgbV9mcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxkTW92ZUxlZnRSaWdodEJ5
V29yZEluVmlzdWFsT3JkZXIoKSkpIHsKICAgICAgICAgICAgIHBvcyA9IHJpZ2h0V29yZFBvc2l0
aW9uKFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZm
aW5pdHkoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIGNh
c2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICBjYXNlIExpbmVHcmFudWxhcml0eToKICAgICBj
YXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgpAQCAtODA5LDExICs4MTIsMTMgQEAgVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAgICAgcG9zID0gVmlzaWJs
ZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5s
ZWZ0KHRydWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyNp
ZiAhT1MoV0lOQ0UpCiAgICAgICAgIGlmICh2aXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKCkKICAg
ICAgICAgICAgIHx8IChtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNo
b3VsZE1vdmVMZWZ0UmlnaHRCeVdvcmRJblZpc3VhbE9yZGVyKCkpKSB7CiAgICAgICAgICAgICBw
b3MgPSBsZWZ0V29yZFBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQo
KSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KKyNlbmRpZgogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICBjYXNlIExpbmVH
cmFudWxhcml0eToKICAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCShyZXZpc2lvbiAxMTA0NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw2ICs0OSwzODIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAKKy8vIFRoZSBmaXJzdCBs
ZWFmIGJlZm9yZSBub2RlIHRoYXQgaGFzIHRoZSBzYW1lIGVkaXRhYmlsaXR5IGFzIG5vZGUuCitz
dGF0aWMgTm9kZSogcHJldmlvdXNMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShOb2RlKiBub2RlLCBF
ZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlKQoreworICAgIGJvb2wgZWRpdGFibGUgPSBub2RlLT5y
ZW5kZXJlcklzRWRpdGFibGUoZWRpdGFibGVUeXBlKTsKKyAgICBOb2RlKiBuID0gbm9kZS0+cHJl
dmlvdXNMZWFmTm9kZSgpOworICAgIHdoaWxlIChuKSB7CisgICAgICAgIGlmIChlZGl0YWJsZSA9
PSBuLT5yZW5kZXJlcklzRWRpdGFibGUoZWRpdGFibGVUeXBlKSkKKyAgICAgICAgICAgIHJldHVy
biBuOworICAgICAgICBuID0gbi0+cHJldmlvdXNMZWFmTm9kZSgpOworICAgIH0KKyAgICByZXR1
cm4gMDsKK30KKworc3RhdGljIE5vZGUqIGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5lUmVuZGVy
ZXIoTm9kZSogbikKK3sKKyAgICBmb3IgKE5vZGUqIHAgPSBuOyBwOyBwID0gcC0+cGFyZW50Tm9k
ZSgpKSB7CisgICAgICAgIGlmIChwLT5yZW5kZXJlcigpICYmICFwLT5yZW5kZXJlcigpLT5pc0lu
bGluZSgpKQorICAgICAgICAgICAgcmV0dXJuIHA7CisgICAgfQorICAgIHJldHVybiAwOworfQor
CitzdGF0aWMgTm9kZSogbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KE5vZGUqIG5vZGUsIGlu
dCBvZmZzZXQpCit7CisgICAgYm9vbCBlZGl0YWJsZSA9IG5vZGUtPnJlbmRlcmVySXNFZGl0YWJs
ZSgpOworICAgIEFTU0VSVChvZmZzZXQgPj0gMCk7CisgICAgTm9kZSogY2hpbGQgPSBub2RlLT5j
aGlsZE5vZGUob2Zmc2V0KTsKKyAgICBOb2RlKiBuID0gY2hpbGQgPyBjaGlsZC0+bmV4dExlYWZO
b2RlKCkgOiBub2RlLT5sYXN0RGVzY2VuZGFudCgpLT5uZXh0TGVhZk5vZGUoKTsKKyAgICB3aGls
ZSAobikgeworICAgICAgICBpZiAoZWRpdGFibGUgPT0gbi0+cmVuZGVyZXJJc0VkaXRhYmxlKCkp
CisgICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgbiA9IG4tPm5leHRMZWFmTm9kZSgpOwor
ICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIE5vZGUqIG5leHRMZWFmV2l0aFNhbWVF
ZGl0YWJpbGl0eShOb2RlKiBub2RlLCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlID0gQ29udGVu
dElzRWRpdGFibGUpCit7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gMDsKKyAgICAK
KyAgICBib29sIGVkaXRhYmxlID0gbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKGVkaXRhYmxlVHlw
ZSk7CisgICAgTm9kZSogbiA9IG5vZGUtPm5leHRMZWFmTm9kZSgpOworICAgIHdoaWxlIChuKSB7
CisgICAgICAgIGlmIChlZGl0YWJsZSA9PSBuLT5yZW5kZXJlcklzRWRpdGFibGUoZWRpdGFibGVU
eXBlKSkKKyAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICBuID0gbi0+bmV4dExlYWZOb2Rl
KCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvLyBGSVhNRTogY29uc29saWRhdGUgd2l0
aCBjb2RlIGluIHByZXZpb3VzTGluZVBvc2l0aW9uLgorc3RhdGljIGNvbnN0IFJvb3RJbmxpbmVC
b3gqIHByZXZpb3VzUm9vdElubGluZUJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCit7CisgICAgTm9kZSogaGlnaGVzdFJvb3Qg
PSBoaWdoZXN0RWRpdGFibGVSb290KHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLCBD
b250ZW50SXNFZGl0YWJsZSk7CisgICAgTm9kZSogbm9kZSA9IGJveC0+cmVuZGVyZXIoKS0+bm9k
ZSgpOworICAgIE5vZGUqIGVuY2xvc2luZ0Jsb2NrTm9kZSA9IGVuY2xvc2luZ05vZGVXaXRoTm9u
SW5saW5lUmVuZGVyZXIobm9kZSk7CisgICAgTm9kZSogcHJldmlvdXNOb2RlID0gcHJldmlvdXNM
ZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShub2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisgICAgd2hp
bGUgKHByZXZpb3VzTm9kZSAmJiBlbmNsb3NpbmdCbG9ja05vZGUgPT0gZW5jbG9zaW5nTm9kZVdp
dGhOb25JbmxpbmVSZW5kZXJlcihwcmV2aW91c05vZGUpKQorICAgICAgICBwcmV2aW91c05vZGUg
PSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KHByZXZpb3VzTm9kZSwgQ29udGVudElz
RWRpdGFibGUpOworICAKKyAgICB3aGlsZSAocHJldmlvdXNOb2RlICYmICFwcmV2aW91c05vZGUt
PmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIGlmIChoaWdoZXN0RWRpdGFibGVSb290KGZpcnN0
UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwcmV2aW91c05vZGUpLCBDb250ZW50SXNFZGl0YWJsZSkg
IT0gaGlnaGVzdFJvb3QpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBQb3NpdGlvbiBw
b3MgPSBwcmV2aW91c05vZGUtPmhhc1RhZ05hbWUoYnJUYWcpID8gcG9zaXRpb25CZWZvcmVOb2Rl
KHByZXZpb3VzTm9kZSkgOgorICAgICAgICAgICAgY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KHByZXZpb3VzTm9kZSwgY2FyZXRNYXhPZmZzZXQocHJldmlvdXNOb2RlKSk7CisgICAgICAgIAor
ICAgICAgICBpZiAocG9zLmlzQ2FuZGlkYXRlKCkpIHsKKyAgICAgICAgICAgIFJlbmRlcmVkUG9z
aXRpb24gcmVuZGVyZWRQb3MocG9zLCBET1dOU1RSRUFNKTsKKyAgICAgICAgICAgIFJvb3RJbmxp
bmVCb3gqIHJvb3QgPSByZW5kZXJlZFBvcy5yb290Qm94KCk7CisgICAgICAgICAgICBpZiAocm9v
dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcm9vdDsKKyAgICAgICAgfQorCisgICAgICAgIHBy
ZXZpb3VzTm9kZSA9IHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFiaWxpdHkocHJldmlvdXNOb2Rl
LCBDb250ZW50SXNFZGl0YWJsZSk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMg
Y29uc3QgUm9vdElubGluZUJveCogbmV4dFJvb3RJbmxpbmVCb3goY29uc3QgSW5saW5lQm94KiBi
b3gsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQoreworICAgIE5vZGUq
IGhpZ2hlc3RSb290ID0gaGlnaGVzdEVkaXRhYmxlUm9vdCh2aXNpYmxlUG9zaXRpb24uZGVlcEVx
dWl2YWxlbnQoKSwgQ29udGVudElzRWRpdGFibGUpOworICAgIE5vZGUqIG5vZGUgPSBib3gtPnJl
bmRlcmVyKCktPm5vZGUoKTsKKyAgICBOb2RlKiBlbmNsb3NpbmdCbG9ja05vZGUgPSBlbmNsb3Np
bmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKG5vZGUpOworICAgIE5vZGUqIG5leHROb2RlID0g
bmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5vZGUsIENvbnRlbnRJc0VkaXRhYmxlKTsKKyAg
ICB3aGlsZSAobmV4dE5vZGUgJiYgZW5jbG9zaW5nQmxvY2tOb2RlID09IGVuY2xvc2luZ05vZGVX
aXRoTm9uSW5saW5lUmVuZGVyZXIobmV4dE5vZGUpKQorICAgICAgICBuZXh0Tm9kZSA9IG5leHRM
ZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShuZXh0Tm9kZSwgQ29udGVudElzRWRpdGFibGUpOworICAK
KyAgICB3aGlsZSAobmV4dE5vZGUgJiYgIW5leHROb2RlLT5pc1NoYWRvd1Jvb3QoKSkgeworICAg
ICAgICBpZiAoaGlnaGVzdEVkaXRhYmxlUm9vdChmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUo
bmV4dE5vZGUpLCBDb250ZW50SXNFZGl0YWJsZSkgIT0gaGlnaGVzdFJvb3QpCisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBQb3NpdGlvbiBwb3M7CisgICAgICAgIHBvcyA9IGNyZWF0ZUxl
Z2FjeUVkaXRpbmdQb3NpdGlvbihuZXh0Tm9kZSwgY2FyZXRNaW5PZmZzZXQobmV4dE5vZGUpKTsK
KyAgICAgICAgCisgICAgICAgIGlmIChwb3MuaXNDYW5kaWRhdGUoKSkgeworICAgICAgICAgICAg
UmVuZGVyZWRQb3NpdGlvbiByZW5kZXJlZFBvcyhwb3MsIERPV05TVFJFQU0pOworICAgICAgICAg
ICAgUm9vdElubGluZUJveCogcm9vdCA9IHJlbmRlcmVkUG9zLnJvb3RCb3goKTsKKyAgICAgICAg
ICAgIGlmIChyb290KQorICAgICAgICAgICAgICAgIHJldHVybiByb290OworICAgICAgICB9CisK
KyAgICAgICAgbmV4dE5vZGUgPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobmV4dE5vZGUs
IENvbnRlbnRJc0VkaXRhYmxlKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBj
b25zdCBJbmxpbmVUZXh0Qm94KiBwcmV2aW91c0JveEluT25lTGluZShjb25zdCBSb290SW5saW5l
Qm94KiByb290LCBjb25zdCBJbmxpbmVUZXh0Qm94KiBib3gsIFZlY3RvcjxJbmxpbmVCb3gqPiYg
bGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpCit7CisgICAgaWYgKCFyb290KQorICAgICAgICByZXR1
cm4gMDsKKworICAgIGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLmNsZWFyKCk7CisgICAgcm9vdC0+
Y29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsK
KworICAgIC8vIElmIGJveCBpcyBudWxsLCByb290IGlzIGJveCdzIHByZXZpb3VzIFJvb3RJbmxp
bmVCb3gsIGFuZCBwcmV2aW91c0JveCBpcyB0aGUgbGFzdCBsb2dpY2FsIGJveCBpbiByb290Lgor
ICAgIC8vIE90aGVyd2lzZSwgcm9vdCBpcyBib3gncyBSb290SW5saW5lQm94LCBhbmQgcHJldmlv
dXNCb3ggaXMgdGhlIHByZXZpb3VzIGxvZ2ljYWwgYm94IGluIHRoZSBzYW1lIGxpbmUuCisgICAg
aW50IHByZXZpb3VzQm94SW5kZXggPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXplKCkgLSAx
OworICAgIGlmIChib3gpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZWFmQm94
ZXNJbkxvZ2ljYWxPcmRlci5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGJveCA9PSBs
ZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcltpXSkgeworICAgICAgICAgICAgICAgIHByZXZpb3VzQm94
SW5kZXggPSBpIC0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0gICAgCisKKyAgICBmb3IgKGludCBqID0gcHJldmlvdXNCb3hJbmRleDsg
aiA+PSAwOyAtLWopIHsKKyAgICAgICAgaWYgKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2pdLT5p
c0lubGluZVRleHRCb3goKSkKKyAgICAgICAgICAgIHJldHVybiB0b0lubGluZVRleHRCb3gobGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXJbal0pOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitz
dGF0aWMgY29uc3QgSW5saW5lVGV4dEJveCogbG9naWNhbGx5UHJldmlvdXNCb3goY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGNvbnN0IElubGluZVRleHRCb3gqIHRleHRC
b3gsIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRSZW5kZXJlcikKK3sKKyAgICBjb25zdCBJ
bmxpbmVCb3gqIHN0YXJ0Qm94ID0gdGV4dEJveDsKKyAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXI7CisKKyAgICBjb25zdCBJbmxpbmVUZXh0Qm94KiBwcmV2aW91
c0JveCA9IHByZXZpb3VzQm94SW5PbmVMaW5lKHN0YXJ0Qm94LT5yb290KCksIHRleHRCb3gsIGxl
YWZCb3hlc0luTG9naWNhbE9yZGVyKTsKKyAgICBpZiAocHJldmlvdXNCb3gpCisgICAgICAgIHJl
dHVybiBwcmV2aW91c0JveDsKKworICAgIHByZXZpb3VzQm94ID0gcHJldmlvdXNCb3hJbk9uZUxp
bmUoc3RhcnRCb3gtPnJvb3QoKS0+cHJldlJvb3RCb3goKSwgMCwgbGVhZkJveGVzSW5Mb2dpY2Fs
T3JkZXIpOworICAgIGlmIChwcmV2aW91c0JveCkKKyAgICAgICAgcmV0dXJuIHByZXZpb3VzQm94
OworCisgICAgd2hpbGUgKDEpIHsgCisgICAgICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIHByZXZp
b3VzUm9vdCA9IHByZXZpb3VzUm9vdElubGluZUJveChzdGFydEJveCwgdmlzaWJsZVBvc2l0aW9u
KTsKKyAgICAgICAgaWYgKCFwcmV2aW91c1Jvb3QpCisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBwcmV2aW91c0JveCA9IHByZXZpb3VzQm94SW5PbmVMaW5lKHByZXZpb3VzUm9vdCwgMCwg
bGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworICAgICAgICBpZiAocHJldmlvdXNCb3gpIHsKKyAg
ICAgICAgICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRSZW5kZXJlciA9IHRydWU7CisgICAgICAg
ICAgICByZXR1cm4gcHJldmlvdXNCb3g7CisgICAgICAgIH0KKworICAgICAgICBpZiAobGVhZkJv
eGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpKQorICAgICAgICAgICAgc3RhcnRCb3ggPSBsZWFmQm94
ZXNJbkxvZ2ljYWxPcmRlclswXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgY29uc3QgSW5saW5lVGV4dEJveCogbmV4
dEJveEluT25lTGluZShjb25zdCBSb290SW5saW5lQm94KiByb290LCBjb25zdCBJbmxpbmVUZXh0
Qm94KiBib3gsIFZlY3RvcjxJbmxpbmVCb3gqPiYgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpCit7
CisgICAgaWYgKCFyb290KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGxlYWZCb3hlc0luTG9n
aWNhbE9yZGVyLmNsZWFyKCk7CisgICAgcm9vdC0+Y29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9y
ZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKKworICAgIC8vIElmIGJveCBpcyBudWxsLCBy
b290IGlzIGJveCdzIG5leHQgUm9vdElubGluZUJveCwgYW5kIG5leHRCb3ggaXMgdGhlIGZpcnN0
IGxvZ2ljYWwgYm94IGluIHJvb3QuCisgICAgLy8gT3RoZXJ3aXNlLCByb290IGlzIGJveCdzIFJv
b3RJbmxpbmVCb3gsIGFuZCBuZXh0Qm94IGlzIHRoZSBuZXh0IGxvZ2ljYWwgYm94IGluIHRoZSBz
YW1lIGxpbmUuCisgICAgc2l6ZV90IG5leHRCb3hJbmRleCA9IDA7CisgICAgaWYgKGJveCkgewor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoYm94ID09IGxlYWZCb3hlc0luTG9naWNhbE9y
ZGVyW2ldKSB7CisgICAgICAgICAgICAgICAgbmV4dEJveEluZGV4ID0gaSArIDE7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9ICAgIAorCisg
ICAgZm9yIChzaXplX3QgaiA9IG5leHRCb3hJbmRleDsgaiA8IGxlYWZCb3hlc0luTG9naWNhbE9y
ZGVyLnNpemUoKTsgKytqKSB7CisgICAgICAgIGlmIChsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcltq
XS0+aXNJbmxpbmVUZXh0Qm94KCkpCisgICAgICAgICAgICByZXR1cm4gdG9JbmxpbmVUZXh0Qm94
KGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2pdKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K
Kworc3RhdGljIGNvbnN0IElubGluZVRleHRCb3gqIGxvZ2ljYWxseU5leHRCb3goY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGNvbnN0IElubGluZVRleHRCb3gqIHRleHRC
b3gsIGJvb2wmIG5leHRCb3hJbkRpZmZlcmVudFJlbmRlcmVyKQoreworICAgIGNvbnN0IElubGlu
ZUJveCogc3RhcnRCb3ggPSB0ZXh0Qm94OworICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBsZWFmQm94
ZXNJbkxvZ2ljYWxPcmRlcjsKKworICAgIGNvbnN0IElubGluZVRleHRCb3gqIG5leHRCb3ggPSBu
ZXh0Qm94SW5PbmVMaW5lKHN0YXJ0Qm94LT5yb290KCksIHRleHRCb3gsIGxlYWZCb3hlc0luTG9n
aWNhbE9yZGVyKTsKKyAgICBpZiAobmV4dEJveCkKKyAgICAgICAgcmV0dXJuIG5leHRCb3g7CisK
KyAgICBuZXh0Qm94ID0gbmV4dEJveEluT25lTGluZShzdGFydEJveC0+cm9vdCgpLT5uZXh0Um9v
dEJveCgpLCAwLCBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcik7CisgICAgaWYgKG5leHRCb3gpCisg
ICAgICAgIHJldHVybiBuZXh0Qm94OworCisgICAgd2hpbGUgKDEpIHsgCisgICAgICAgIGNvbnN0
IFJvb3RJbmxpbmVCb3gqIG5leHRSb290ID0gbmV4dFJvb3RJbmxpbmVCb3goc3RhcnRCb3gsIHZp
c2libGVQb3NpdGlvbik7CisgICAgICAgIGlmICghbmV4dFJvb3QpCisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBuZXh0Qm94ID0gbmV4dEJveEluT25lTGluZShuZXh0Um9vdCwgMCwgbGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworICAgICAgICBpZiAobmV4dEJveCkgeworICAgICAgICAg
ICAgbmV4dEJveEluRGlmZmVyZW50UmVuZGVyZXIgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJu
IG5leHRCb3g7CisgICAgICAgIH0KKworICAgICAgICBpZiAobGVhZkJveGVzSW5Mb2dpY2FsT3Jk
ZXIuc2l6ZSgpKQorICAgICAgICAgICAgc3RhcnRCb3ggPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRl
clswXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVy
biAwOworfQorCitzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9y
TWluT2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24s
IGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gsCisgICAgIGludCYgcHJldmlvdXNCb3hMZW5n
dGgsIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRSZW5kZXJlcikKK3sKKyAgICBwcmV2aW91
c0JveEluRGlmZmVyZW50UmVuZGVyZXIgPSBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBIYW5kbGUg
dGhlIGNhc2Ugd2hlbiB3ZSBkb24ndCBoYXZlIGFuIGlubGluZSB0ZXh0IGJveC4KKyAgICBjb25z
dCBJbmxpbmVUZXh0Qm94KiBwcmV2aW91c0JveCA9IGxvZ2ljYWxseVByZXZpb3VzQm94KHZpc2li
bGVQb3NpdGlvbiwgdGV4dEJveCwgcHJldmlvdXNCb3hJbkRpZmZlcmVudFJlbmRlcmVyKTsKKwor
ICAgIGludCBsZW4gPSAwOworICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOworICAgIGlm
IChwcmV2aW91c0JveCkgeworICAgICAgICBwcmV2aW91c0JveExlbmd0aCA9IHByZXZpb3VzQm94
LT5sZW4oKTsKKyAgICAgICAgc3RyaW5nLmFwcGVuZChwcmV2aW91c0JveC0+dGV4dFJlbmRlcmVy
KCktPnRleHQoKS0+Y2hhcmFjdGVycygpICsgcHJldmlvdXNCb3gtPnN0YXJ0KCksIHByZXZpb3Vz
Qm94TGVuZ3RoKTsgCisgICAgICAgIGxlbiArPSBwcmV2aW91c0JveExlbmd0aDsKKyAgICB9Cisg
ICAgc3RyaW5nLmFwcGVuZCh0ZXh0Qm94LT50ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0
ZXJzKCkgKyB0ZXh0Qm94LT5zdGFydCgpLCB0ZXh0Qm94LT5sZW4oKSk7CisgICAgbGVuICs9IHRl
eHRCb3gtPmxlbigpOworCisgICAgcmV0dXJuIHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5kYXRh
KCksIGxlbik7Cit9IAorCitzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJh
dG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9z
aXRpb24sIGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gsIGJvb2wmIG5leHRCb3hJbkRpZmZl
cmVudFJlbmRlcmVyKQoreworICAgIG5leHRCb3hJbkRpZmZlcmVudFJlbmRlcmVyID0gZmFsc2U7
CisKKyAgICAvLyBGSVhNRTogSGFuZGxlIHRoZSBjYXNlIHdoZW4gd2UgZG9uJ3QgaGF2ZSBhbiBp
bmxpbmUgdGV4dCBib3guCisgICAgY29uc3QgSW5saW5lVGV4dEJveCogbmV4dEJveCA9IGxvZ2lj
YWxseU5leHRCb3godmlzaWJsZVBvc2l0aW9uLCB0ZXh0Qm94LCBuZXh0Qm94SW5EaWZmZXJlbnRS
ZW5kZXJlcik7CisKKyAgICBpbnQgbGVuID0gMDsKKyAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IHN0
cmluZzsKKyAgICBzdHJpbmcuYXBwZW5kKHRleHRCb3gtPnRleHRSZW5kZXJlcigpLT50ZXh0KCkt
PmNoYXJhY3RlcnMoKSArIHRleHRCb3gtPnN0YXJ0KCksIHRleHRCb3gtPmxlbigpKTsKKyAgICBs
ZW4gKz0gdGV4dEJveC0+bGVuKCk7CisgICAgaWYgKG5leHRCb3gpIHsKKyAgICAgICAgc3RyaW5n
LmFwcGVuZChuZXh0Qm94LT50ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBu
ZXh0Qm94LT5zdGFydCgpLCBuZXh0Qm94LT5sZW4oKSk7IAorICAgICAgICBsZW4gKz0gbmV4dEJv
eC0+bGVuKCk7CisgICAgfQorCisgICAgcmV0dXJuIHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5k
YXRhKCksIGxlbik7Cit9IAorCitzdGF0aWMgYm9vbCBsb2dpY2FsbHlTdGFydE9mV29yZChUZXh0
QnJlYWtJdGVyYXRvciogaXRlciwgaW50IHBvc2l0aW9uLCBib29sIGhhcmRMaW5lQnJlYWspCit7
CisgICAgYm9vbCBib3VuZGFyeSA9IGhhcmRMaW5lQnJlYWsgPyB0cnVlIDogaXNUZXh0QnJlYWso
aXRlciwgcG9zaXRpb24pOworICAgIGlmICghYm91bmRhcnkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHRleHRCcmVha0ZvbGxvd2luZyhpdGVyLCBwb3NpdGlvbik7CisgICAgLy8gaXNX
b3JkVGV4dEJyZWFrIHJldHVybnMgdHJ1ZSBhZnRlciBtb3ZpbmcgYWNyb3NzIGEgd29yZCBhbmQg
ZmFsc2UgYWZ0ZXIgbW92aW5nIGFjcm9zcyBhIHB1bmN0dWF0aW9uL3NwYWNlLgorICAgIHJldHVy
biBpc1dvcmRUZXh0QnJlYWsoaXRlcik7Cit9CisKK3N0YXRpYyBib29sIGxvZ2ljYWxseUVuZE9m
V29yZChUZXh0QnJlYWtJdGVyYXRvciogaXRlciwgaW50IHBvc2l0aW9uLCBib29sIGhhcmRMaW5l
QnJlYWspCit7CisgICAgYm9vbCBib3VuZGFyeSA9IGlzVGV4dEJyZWFrKGl0ZXIsIHBvc2l0aW9u
KTsKKyAgICByZXR1cm4gKGhhcmRMaW5lQnJlYWsgfHwgYm91bmRhcnkpICYmIGlzV29yZFRleHRC
cmVhayhpdGVyKTsKK30KKworZW51bSBDdXJzb3JNb3ZlbWVudERpcmVjdGlvbiB7CisgICAgTW92
ZUxlZnQsIE1vdmVSaWdodCwKK307CisKK3N0YXRpYyBWaXNpYmxlUG9zaXRpb24gdmlzdWFsV29y
ZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBDdXJzb3JN
b3ZlbWVudERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgaWYgKHZpc2libGVQb3NpdGlvbi5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOworCisgICAgVGV4dERp
cmVjdGlvbiBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2sodmlzaWJs
ZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOworICAgIElubGluZUJveCogcHJldmlvdXNseVZp
c2l0ZWRCb3ggPSAwOworICAgIFZpc2libGVQb3NpdGlvbiBjdXJyZW50ID0gdmlzaWJsZVBvc2l0
aW9uOworICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyID0gMDsKKworICAgIHdoaWxlICgxKSB7
CisgICAgICAgIFZpc2libGVQb3NpdGlvbiBhZGphY2VudENoYXJhY3RlciA9IGRpcmVjdGlvbiA9
PSBNb3ZlUmlnaHQgPyBjdXJyZW50LnJpZ2h0KHRydWUpIDogY3VycmVudC5sZWZ0KHRydWUpOyAK
KyAgICAgICAgaWYgKGFkamFjZW50Q2hhcmFjdGVyID09IGN1cnJlbnQgfHwgYWRqYWNlbnRDaGFy
YWN0ZXIuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Cisg
ICAgCisgICAgICAgIElubGluZUJveCogYm94OworICAgICAgICBpbnQgb2Zmc2V0SW5Cb3g7Cisg
ICAgICAgIGFkamFjZW50Q2hhcmFjdGVyLmRlZXBFcXVpdmFsZW50KCkuZ2V0SW5saW5lQm94QW5k
T2Zmc2V0KFVQU1RSRUFNLCBib3gsIG9mZnNldEluQm94KTsKKyAgICAKKyAgICAgICAgaWYgKCFi
b3gpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKCFib3gtPmlzSW5saW5lVGV4dEJv
eCgpKSB7CisgICAgICAgICAgICBjdXJyZW50ID0gYWRqYWNlbnRDaGFyYWN0ZXI7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIElubGluZVRleHRCb3gqIHRleHRC
b3ggPSB0b0lubGluZVRleHRCb3goYm94KTsKKyAgICAgICAgaW50IHByZXZpb3VzQm94TGVuZ3Ro
ID0gMDsKKyAgICAgICAgYm9vbCBwcmV2aW91c0JveEluRGlmZmVyZW50UmVuZGVyZXIgPSBmYWxz
ZTsKKyAgICAgICAgYm9vbCBuZXh0Qm94SW5EaWZmZXJlbnRSZW5kZXJlciA9IGZhbHNlOworICAg
ICAgICBib29sIG1vdmluZ0ludG9OZXdCb3ggPSBwcmV2aW91c2x5VmlzaXRlZEJveCAhPSBib3g7
CisKKyAgICAgICAgaWYgKG9mZnNldEluQm94ID09IGJveC0+Y2FyZXRNaW5PZmZzZXQoKSkKKyAg
ICAgICAgICAgIGl0ZXIgPSB3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KHZp
c2libGVQb3NpdGlvbiwgdGV4dEJveCwgcHJldmlvdXNCb3hMZW5ndGgsIHByZXZpb3VzQm94SW5E
aWZmZXJlbnRSZW5kZXJlcik7CisgICAgICAgIGVsc2UgaWYgKG9mZnNldEluQm94ID09IGJveC0+
Y2FyZXRNYXhPZmZzZXQoKSkKKyAgICAgICAgICAgIGl0ZXIgPSB3b3JkQnJlYWtJdGVyYXRvckZv
ck1heE9mZnNldEJvdW5kYXJ5KHZpc2libGVQb3NpdGlvbiwgdGV4dEJveCwgbmV4dEJveEluRGlm
ZmVyZW50UmVuZGVyZXIpOworICAgICAgICBlbHNlIGlmIChtb3ZpbmdJbnRvTmV3Qm94KSB7Cisg
ICAgICAgICAgICBpdGVyID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dEJveC0+dGV4dFJlbmRlcmVy
KCktPnRleHQoKS0+Y2hhcmFjdGVycygpICsgdGV4dEJveC0+c3RhcnQoKSwgdGV4dEJveC0+bGVu
KCkpOworICAgICAgICAgICAgcHJldmlvdXNseVZpc2l0ZWRCb3ggPSBib3g7CisgICAgICAgIH0K
KworICAgICAgICB0ZXh0QnJlYWtGaXJzdChpdGVyKTsKKyAgICAgICAgaW50IG9mZnNldEluSXRl
cmF0b3IgPSBvZmZzZXRJbkJveCAtIHRleHRCb3gtPnN0YXJ0KCkgKyBwcmV2aW91c0JveExlbmd0
aDsKKworICAgICAgICBib29sIGlzV29yZEJyZWFrOworICAgICAgICBpZiAoYm94LT5kaXJlY3Rp
b24oKSA9PSBibG9ja0RpcmVjdGlvbikgeworICAgICAgICAgICAgYm9vbCBsb2dpY2FsU3RhcnRJ
blJlbmRlcmVyID0gb2Zmc2V0SW5Cb3ggPT0gc3RhdGljX2Nhc3Q8aW50Pih0ZXh0Qm94LT5zdGFy
dCgpKSAmJiBwcmV2aW91c0JveEluRGlmZmVyZW50UmVuZGVyZXI7CisgICAgICAgICAgICBpc1dv
cmRCcmVhayA9IGxvZ2ljYWxseVN0YXJ0T2ZXb3JkKGl0ZXIsIG9mZnNldEluSXRlcmF0b3IsIGxv
Z2ljYWxTdGFydEluUmVuZGVyZXIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYm9v
bCBsb2dpY2FsRW5kSW5SZW5kZXJlciA9IG9mZnNldEluQm94ID09IHN0YXRpY19jYXN0PGludD4o
dGV4dEJveC0+c3RhcnQoKSArIHRleHRCb3gtPmxlbigpKSAmJiBuZXh0Qm94SW5EaWZmZXJlbnRS
ZW5kZXJlcjsKKyAgICAgICAgICAgIGlzV29yZEJyZWFrID0gbG9naWNhbGx5RW5kT2ZXb3JkKGl0
ZXIsIG9mZnNldEluSXRlcmF0b3IsIGxvZ2ljYWxFbmRJblJlbmRlcmVyKTsKKyAgICAgICAgfSAg
ICAgIAorCisgICAgICAgIGlmIChpc1dvcmRCcmVhaykKKyAgICAgICAgICAgIHJldHVybiBhZGph
Y2VudENoYXJhY3RlcjsKKyAgICAKKyAgICAgICAgY3VycmVudCA9IGFkamFjZW50Q2hhcmFjdGVy
OworICAgIH0KKyAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Cit9CisKK1Zpc2libGVQb3Np
dGlvbiBsZWZ0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0
aW9uKQoreworICAgIFZpc2libGVQb3NpdGlvbiBsZWZ0V29yZEJyZWFrID0gdmlzdWFsV29yZFBv
c2l0aW9uKHZpc2libGVQb3NpdGlvbiwgTW92ZUxlZnQpOworICAgIGxlZnRXb3JkQnJlYWsgPSB2
aXNpYmxlUG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQmVmb3JlKGxlZnRXb3JkQnJl
YWspOworICAgIAorICAgIC8vIEZJWE1FOiBIb3cgc2hvdWxkIHdlIGhhbmRsZSBhIG5vbi1lZGl0
YWJsZSBwb3NpdGlvbj8KKyAgICBpZiAobGVmdFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRh
YmxlUG9zaXRpb24odmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7CisgICAgICAg
IFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2Nr
KHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICAgICAgbGVmdFdvcmRCcmVh
ayA9IGJsb2NrRGlyZWN0aW9uID09IExUUiA/IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJs
ZVBvc2l0aW9uKSA6IGVuZE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7CisgICAg
fQorICAgIHJldHVybiBsZWZ0V29yZEJyZWFrOworfQorCitWaXNpYmxlUG9zaXRpb24gcmlnaHRX
b3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCit7Cisg
ICAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0V29yZEJyZWFrID0gdmlzdWFsV29yZFBvc2l0aW9uKHZp
c2libGVQb3NpdGlvbiwgTW92ZVJpZ2h0KTsKKyAgICByaWdodFdvcmRCcmVhayA9IHZpc2libGVQ
b3NpdGlvbi5ob25vckVkaXRpbmdCb3VuZGFyeUF0T3JCZWZvcmUocmlnaHRXb3JkQnJlYWspOwor
CisgICAgLy8gRklYTUU6IEhvdyBzaG91bGQgd2UgaGFuZGxlIGEgbm9uLWVkaXRhYmxlIHBvc2l0
aW9uPworICAgIGlmIChyaWdodFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRp
b24odmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7CisgICAgICAgIFRleHREaXJl
Y3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQ
b3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICAgICAgcmlnaHRXb3JkQnJlYWsgPSBibG9j
a0RpcmVjdGlvbiA9PSBMVFIgPyBlbmRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24p
IDogc3RhcnRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pOworICAgIH0KKyAgICBy
ZXR1cm4gcmlnaHRXb3JkQnJlYWs7Cit9CisKIGVudW0gQm91bmRhcnlTZWFyY2hDb250ZXh0QXZh
aWxhYmlsaXR5IHsgRG9udEhhdmVNb3JlQ29udGV4dCwgTWF5SGF2ZU1vcmVDb250ZXh0IH07CiAK
IHR5cGVkZWYgdW5zaWduZWQgKCpCb3VuZGFyeVNlYXJjaEZ1bmN0aW9uKShjb25zdCBVQ2hhcios
IHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRleHRB
dmFpbGFiaWxpdHksIGJvb2wmIG5lZWRNb3JlQ29udGV4dCk7CkBAIC01MTcsMjggKzg5Myw2IEBA
IGJvb2wgaXNFbmRPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uICYKICAgICByZXR1cm4gcC5p
c05vdE51bGwoKSAmJiBwID09IGVuZE9mTGluZShwKTsKIH0KIAotLy8gVGhlIGZpcnN0IGxlYWYg
YmVmb3JlIG5vZGUgdGhhdCBoYXMgdGhlIHNhbWUgZWRpdGFiaWxpdHkgYXMgbm9kZS4KLXN0YXRp
YyBOb2RlKiBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KE5vZGUqIG5vZGUsIEVkaXRh
YmxlVHlwZSBlZGl0YWJsZVR5cGUpCi17Ci0gICAgYm9vbCBlZGl0YWJsZSA9IG5vZGUtPnJlbmRl
cmVySXNFZGl0YWJsZShlZGl0YWJsZVR5cGUpOwotICAgIE5vZGUqIG4gPSBub2RlLT5wcmV2aW91
c0xlYWZOb2RlKCk7Ci0gICAgd2hpbGUgKG4pIHsKLSAgICAgICAgaWYgKGVkaXRhYmxlID09IG4t
PnJlbmRlcmVySXNFZGl0YWJsZShlZGl0YWJsZVR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIG47
Ci0gICAgICAgIG4gPSBuLT5wcmV2aW91c0xlYWZOb2RlKCk7Ci0gICAgfQotICAgIHJldHVybiAw
OwotfQotCi1zdGF0aWMgTm9kZSogZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihO
b2RlKiBuKQotewotICAgIGZvciAoTm9kZSogcCA9IG47IHA7IHAgPSBwLT5wYXJlbnROb2RlKCkp
IHsKLSAgICAgICAgaWYgKHAtPnJlbmRlcmVyKCkgJiYgIXAtPnJlbmRlcmVyKCktPmlzSW5saW5l
KCkpCi0gICAgICAgICAgICByZXR1cm4gcDsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0
YXRpYyBpbmxpbmUgSW50UG9pbnQgYWJzb2x1dGVMaW5lRGlyZWN0aW9uUG9pbnRUb0xvY2FsUG9p
bnRJbkJsb2NrKFJvb3RJbmxpbmVCb3gqIHJvb3QsIGludCBsaW5lRGlyZWN0aW9uUG9pbnQpCiB7
CiAgICAgQVNTRVJUKHJvb3QpOwpAQCAtNjI1LDM0ICs5NzksNiBAQCBWaXNpYmxlUG9zaXRpb24g
cHJldmlvdXNMaW5lUG9zaXRpb24oY29uCiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihmaXJz
dFBvc2l0aW9uSW5Ob2RlKHJvb3RFbGVtZW50KSwgRE9XTlNUUkVBTSk7CiB9CiAKLXN0YXRpYyBO
b2RlKiBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkoTm9kZSogbm9kZSwgaW50IG9mZnNldCkK
LXsKLSAgICBib29sIGVkaXRhYmxlID0gbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKCk7Ci0gICAg
QVNTRVJUKG9mZnNldCA+PSAwKTsKLSAgICBOb2RlKiBjaGlsZCA9IG5vZGUtPmNoaWxkTm9kZShv
ZmZzZXQpOwotICAgIE5vZGUqIG4gPSBjaGlsZCA/IGNoaWxkLT5uZXh0TGVhZk5vZGUoKSA6IG5v
ZGUtPmxhc3REZXNjZW5kYW50KCktPm5leHRMZWFmTm9kZSgpOwotICAgIHdoaWxlIChuKSB7Ci0g
ICAgICAgIGlmIChlZGl0YWJsZSA9PSBuLT5yZW5kZXJlcklzRWRpdGFibGUoKSkKLSAgICAgICAg
ICAgIHJldHVybiBuOwotICAgICAgICBuID0gbi0+bmV4dExlYWZOb2RlKCk7Ci0gICAgfQotICAg
IHJldHVybiAwOwotfQotCi1zdGF0aWMgTm9kZSogbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5
KE5vZGUqIG5vZGUsIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUgPSBDb250ZW50SXNFZGl0YWJs
ZSkKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGJvb2wg
ZWRpdGFibGUgPSBub2RlLT5yZW5kZXJlcklzRWRpdGFibGUoZWRpdGFibGVUeXBlKTsKLSAgICBO
b2RlKiBuID0gbm9kZS0+bmV4dExlYWZOb2RlKCk7Ci0gICAgd2hpbGUgKG4pIHsKLSAgICAgICAg
aWYgKGVkaXRhYmxlID09IG4tPnJlbmRlcmVySXNFZGl0YWJsZShlZGl0YWJsZVR5cGUpKQotICAg
ICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgIG4gPSBuLT5uZXh0TGVhZk5vZGUoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIDA7Ci19CiAKIFZpc2libGVQb3NpdGlvbiBuZXh0TGluZVBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiAmdmlzaWJsZVBvc2l0aW9uLCBpbnQgbGluZURpcmVjdGlvblBv
aW50LCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlKQogewpAQCAtMTA5OSw1NDMgKzE0MjUsNCBA
QCBWaXNpYmxlUG9zaXRpb24gcmlnaHRCb3VuZGFyeU9mTGluZShjb25zCiAgICAgcmV0dXJuIGRp
cmVjdGlvbiA9PSBMVFIgPyBsb2dpY2FsRW5kT2ZMaW5lKGMpIDogbG9naWNhbFN0YXJ0T2ZMaW5l
KGMpOwogfQogCi1zdGF0aWMgY29uc3QgaW50IGludmFsaWRPZmZzZXQgPSAtMTsKLXN0YXRpYyBj
b25zdCBpbnQgb2Zmc2V0Tm90Rm91bmQgPSAtMTsKLQotc3RhdGljIGJvb2wgcG9zaXRpb25Jc0lu
Qm94KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgd29yZEJyZWFrLCBjb25zdCBJbmxpbmVCb3gqIGJv
eCwgaW50JiBvZmZzZXRPZldvcmRCcmVhaykKLXsKLSAgICBpZiAod29yZEJyZWFrLmlzTnVsbCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBJbmxpbmVCb3gqIGJveE9mV29yZEJyZWFr
OwotICAgIHdvcmRCcmVhay5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoYm94T2ZXb3JkQnJlYWssIG9m
ZnNldE9mV29yZEJyZWFrKTsKLSAgICByZXR1cm4gYm94ID09IGJveE9mV29yZEJyZWFrOwotfQot
Ci1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9j
a1dpdGhTYW1lRGlyZWN0aW9uYWxpdHkoY29uc3QgSW5saW5lQm94KiBib3gsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgcHJldmlvdXNXb3JkQnJlYWssIGludCYgb2Zmc2V0T2ZXb3JkQnJlYWspCi17
Ci0gICAgLy8gSW4gYSBMVFIgYmxvY2ssIHRoZSB3b3JkIGJyZWFrIHNob3VsZCBiZSBvbiB0aGUg
bGVmdCBib3VuZGFyeSBvZiBhIHdvcmQuCi0gICAgLy8gSW4gYSBSVEwgYmxvY2ssIHRoZSB3b3Jk
IGJyZWFrIHNob3VsZCBiZSBvbiB0aGUgcmlnaHQgYm91bmRhcnkgb2YgYSB3b3JkLgotICAgIC8v
IEJlY2F1c2UgbmV4dFdvcmRQb3NpdGlvbigpIHJldHVybnMgdGhlIHdvcmQgYnJlYWsgb24gdGhl
IHJpZ2h0IGJvdW5kYXJ5IG9mIHRoZSB3b3JkIGZvciBMVFIgdGV4dCwKLSAgICAvLyB3ZSBuZWVk
IHRvIHVzZSBwcmV2aW91c1dvcmRQb3NpdGlvbigpIHRvIHRyYXZlcnNlIHdvcmRzIHdpdGhpbiB0
aGUgaW5saW5lIGJveGVzIGZyb20gcmlnaHQgdG8gbGVmdAotICAgIC8vIHRvIGZpbmQgdGhlIHBy
ZXZpb3VzIHdvcmQgYnJlYWsgKGkuZS4gdGhlIGZpcnN0IHdvcmQgYnJlYWsgb24gdGhlIGxlZnQp
LiBUaGUgc2FtZSBhcHBsaWVzIHRvIFJUTCB0ZXh0LgotICAgIAotICAgIGJvb2wgaGFzU2Vlbldv
cmRCcmVha0luVGhpc0JveCA9IHByZXZpb3VzV29yZEJyZWFrLmlzTm90TnVsbCgpOwotCi0gICAg
VmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLQotICAgIGlmIChoYXNTZWVuV29yZEJyZWFrSW5U
aGlzQm94KQotICAgICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c1dvcmRCcmVhazsKLSAgICBlbHNl
IHsKLSAgICAgICAgd29yZEJyZWFrID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGJveC0+
cmVuZGVyZXIoKS0+bm9kZSgpLCBib3gtPmNhcmV0TWF4T2Zmc2V0KCkpOwotCi0gICAgICAgIC8v
IFJldHVybiB0aGUgcmlnaHRtb3N0IHdvcmQgYm91bmRhcnkgb2YgTFRSIGJveCBvciBsZWZ0bW9z
dCB3b3JkIGJvdW5kYXJ5IG9mIFJUTCBib3ggaWYKLSAgICAgICAgLy8gaXQgaXMgbm90IGluIHRo
ZSBwcmV2aW91c2x5IHZpc2l0ZWQgYm94ZXMuIEZvciBleGFtcGxlLCBnaXZlbiBhIGxvZ2ljYWwg
dGV4dCAKLSAgICAgICAgLy8gImFiYyBkZWYgICAgIGhpaiBvcHEiLCB0aGVyZSBhcmUgMiBib3hl
czogdGhlICJhYmMgZGVmICIgKHN0YXJ0cyBhdCAwIGFuZCBsZW5ndGggaXMgOCkgCi0gICAgICAg
IC8vIGFuZCB0aGUgImhpaiBvcHEiIChzdGFydHMgYXQgMTIgYW5kIGxlbmd0aCBpcyA3KS4gVGhl
IHdvcmQgYnJlYWtzIGFyZSAKLSAgICAgICAgLy8gImFiYyB8ZGVmIHwgICAgaGlqIHxvcHEiLiBX
ZSBub3JtYWxseSBjYXRjaCB0aGUgd29yZCBicmVhayBiZXR3ZWVuICJkZWYiIGFuZCAiaGlqIiB3
aGVuCi0gICAgICAgIC8vIHdlIHZpc2l0IHRoZSBib3ggdGhhdCBjb250YWlucyAiaGlqIG9wcSIs
IGJ1dCB0aGlzIHdvcmQgYnJlYWsgZG9lc24ndCBleGlzdCBpbiB0aGUgYm94Ci0gICAgICAgIC8v
IHRoYXQgY29udGFpbnMgImhpaiBvcHEiIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIHNwYWNlcy4g
U28gd2UgZGV0ZWN0IGl0IHdoZW4gd2UncmUKLSAgICAgICAgLy8gdHJhdmVyc2luZyB0aGUgYm94
IHRoYXQgY29udGFpbnMgImFiYyBkZWYgIiBpbnN0ZWFkLgotCi0gICAgICAgIGlmICgoYm94LT5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgYm94LT5uZXh0TGVhZkNoaWxkKCkpCi0gICAgICAg
ICAgICB8fCAoIWJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYmIGJveC0+cHJldkxlYWZD
aGlsZCgpKSkgewotCi0gICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25BZnRlcldv
cmQgPSBuZXh0Qm91bmRhcnkod29yZEJyZWFrLCBuZXh0V29yZFBvc2l0aW9uQm91bmRhcnkpOwot
ICAgICAgICAgICAgaWYgKHBvc2l0aW9uQWZ0ZXJXb3JkLmlzTm90TnVsbCgpKSB7Ci0gICAgICAg
ICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlV29yZCA9IHByZXZpb3VzQm91
bmRhcnkocG9zaXRpb25BZnRlcldvcmQsIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnkpOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uSXNJbkJveChwb3NpdGlv
bkJlZm9yZVdvcmQsIGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb25CZWZvcmVXb3JkOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotICAKLSAgICB3b3JkQnJlYWsgPSBwcmV2aW91c0JvdW5kYXJ5KHdvcmRCcmVhaywgcHJl
dmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFyeSk7Ci0gICAgaWYgKHByZXZpb3VzV29yZEJyZWFrID09
IHdvcmRCcmVhaykKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotCi0gICAgcmV0
dXJuIHBvc2l0aW9uSXNJbkJveCh3b3JkQnJlYWssIGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspID8g
d29yZEJyZWFrIDogVmlzaWJsZVBvc2l0aW9uKCk7Ci19Ci0KLXN0YXRpYyBWaXNpYmxlUG9zaXRp
b24gbGVmdG1vc3RQb3NpdGlvbkluUlRMQm94SW5MVFJCbG9jayhjb25zdCBJbmxpbmVCb3gqIGJv
eCkKLXsKLSAgICAvLyBGSVhNRTogUHJvYmFibHkgbmVlZCB0byB0YWtlIGNhcmUgb2YgYmlkaSBs
ZXZlbCB0b28uCi0gICAgTm9kZSogbm9kZSA9IGJveC0+cmVuZGVyZXIoKS0+bm9kZSgpOwotICAg
IElubGluZUJveCogcHJldmlvdXNMZWFmID0gYm94LT5wcmV2TGVhZkNoaWxkKCk7Ci0gICAgSW5s
aW5lQm94KiBuZXh0TGVhZiA9IGJveC0+bmV4dExlYWZDaGlsZCgpOyAgIAotICAgIAotICAgIGlm
IChwcmV2aW91c0xlYWYgJiYgIXByZXZpb3VzTGVhZi0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
KQotICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIGJveC0+
Y2FyZXRNYXhPZmZzZXQoKSk7Ci0KLSAgICBpZiAobmV4dExlYWYgJiYgIW5leHRMZWFmLT5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkpIHsKLSAgICAgICAgaWYgKHByZXZpb3VzTGVhZikKLSAgICAg
ICAgICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocHJldmlvdXNMZWFmLT5y
ZW5kZXJlcigpLT5ub2RlKCksIHByZXZpb3VzTGVhZi0+Y2FyZXRNYXhPZmZzZXQoKSk7Ci0KLSAg
ICAgICAgSW5saW5lQm94KiBsYXN0UlRMTGVhZjsKLSAgICAgICAgZG8gewotICAgICAgICAgICAg
bGFzdFJUTExlYWYgPSBuZXh0TGVhZjsKLSAgICAgICAgICAgIG5leHRMZWFmID0gbmV4dExlYWYt
Pm5leHRMZWFmQ2hpbGQoKTsKLSAgICAgICAgfSB3aGlsZSAobmV4dExlYWYgJiYgIW5leHRMZWFm
LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpOwotICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKGxhc3RSVExMZWFmLT5yZW5kZXJlcigpLT5ub2RlKCksIGxhc3RSVExM
ZWFmLT5jYXJldE1pbk9mZnNldCgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY3JlYXRlTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIGJveC0+Y2FyZXRNaW5PZmZzZXQoKSk7Ci19Ci0KLXN0YXRp
YyBWaXNpYmxlUG9zaXRpb24gcmlnaHRtb3N0UG9zaXRpb25JbkxUUkJveEluUlRMQmxvY2soY29u
c3QgSW5saW5lQm94KiBib3gpCi17Ci0gICAgLy8gRklYTUU6IFByb2JhYmx5IG5lZWQgdG8gdGFr
ZSBjYXJlIG9mIGJpZGkgbGV2ZWwgdG9vLgotICAgIE5vZGUqIG5vZGUgPSBib3gtPnJlbmRlcmVy
KCktPm5vZGUoKTsKLSAgICBJbmxpbmVCb3gqIHByZXZpb3VzTGVhZiA9IGJveC0+cHJldkxlYWZD
aGlsZCgpOwotICAgIElubGluZUJveCogbmV4dExlYWYgPSBib3gtPm5leHRMZWFmQ2hpbGQoKTsg
ICAKLSAgICAKLSAgICBpZiAobmV4dExlYWYgJiYgbmV4dExlYWYtPmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSkgICAgCi0gICAgICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
bm9kZSwgYm94LT5jYXJldE1heE9mZnNldCgpKTsKLQotICAgIGlmIChwcmV2aW91c0xlYWYgJiYg
cHJldmlvdXNMZWFmLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpIHsKLSAgICAgICAgaWYgKG5l
eHRMZWFmKQotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihu
ZXh0TGVhZi0+cmVuZGVyZXIoKS0+bm9kZSgpLCBuZXh0TGVhZi0+Y2FyZXRNYXhPZmZzZXQoKSk7
Ci0KLSAgICAgICAgSW5saW5lQm94KiBmaXJzdExUUkxlYWY7Ci0gICAgICAgIGRvIHsKLSAgICAg
ICAgICAgIGZpcnN0TFRSTGVhZiA9IHByZXZpb3VzTGVhZjsKLSAgICAgICAgICAgIHByZXZpb3Vz
TGVhZiA9IHByZXZpb3VzTGVhZi0+cHJldkxlYWZDaGlsZCgpOwotICAgICAgICB9IHdoaWxlIChw
cmV2aW91c0xlYWYgJiYgcHJldmlvdXNMZWFmLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpOwot
ICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGZpcnN0TFRSTGVhZi0+
cmVuZGVyZXIoKS0+bm9kZSgpLCBmaXJzdExUUkxlYWYtPmNhcmV0TWluT2Zmc2V0KCkpOwotICAg
IH0KLQotICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwgYm94LT5j
YXJldE1pbk9mZnNldCgpKTsKLX0KLSAgICAKLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbGFzdFdv
cmRCcmVha0luQm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQmIG9mZnNldE9mV29yZEJyZWFr
KQotewotICAgIC8vIEFkZCB0aGUgbGVmdG1vc3Qgd29yZCBicmVhayBmb3IgUlRMIGJveCBvciBy
aWdodG1vc3Qgd29yZCBicmVhayBmb3IgTFRSIGJveC4KLSAgICBJbmxpbmVCb3gqIHByZXZpb3Vz
TGVhZiA9IGJveC0+cHJldkxlYWZDaGlsZCgpOwotICAgIElubGluZUJveCogbmV4dExlYWYgPSBi
b3gtPm5leHRMZWFmQ2hpbGQoKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gYm91bmRhcnlQb3NpdGlv
bjsKLSAgICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBSVEwgJiYgKCFwcmV2aW91c0xlYWYgfHwg
cHJldmlvdXNMZWFmLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpKQotICAgICAgICBib3VuZGFy
eVBvc2l0aW9uID0gbGVmdG1vc3RQb3NpdGlvbkluUlRMQm94SW5MVFJCbG9jayhib3gpOwotICAg
IGVsc2UgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gTFRSICYmICghbmV4dExlYWYgfHwgIW5leHRM
ZWFmLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpKQotICAgICAgICBib3VuZGFyeVBvc2l0aW9u
ID0gcmlnaHRtb3N0UG9zaXRpb25JbkxUUkJveEluUlRMQmxvY2soYm94KTsKLQotICAgIGlmIChi
b3VuZGFyeVBvc2l0aW9uLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KCk7ICAgICAgICAgICAgCi0KLSAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrID0gbmV4dEJv
dW5kYXJ5KGJvdW5kYXJ5UG9zaXRpb24sIG5leHRXb3JkUG9zaXRpb25Cb3VuZGFyeSk7Ci0gICAg
aWYgKHdvcmRCcmVhay5pc051bGwoKSkKLSAgICAgICAgd29yZEJyZWFrID0gYm91bmRhcnlQb3Np
dGlvbjsKLSAgICBlbHNlIGlmICh3b3JkQnJlYWsgIT0gYm91bmRhcnlQb3NpdGlvbikKLSAgICAg
ICAgd29yZEJyZWFrID0gcHJldmlvdXNCb3VuZGFyeSh3b3JkQnJlYWssIHByZXZpb3VzV29yZFBv
c2l0aW9uQm91bmRhcnkpOwotCi0gICAgcmV0dXJuIHBvc2l0aW9uSXNJbkJveCh3b3JkQnJlYWss
IGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspID8gd29yZEJyZWFrIDogVmlzaWJsZVBvc2l0aW9uKCk7
ICAgIAotfQotCi1zdGF0aWMgYm9vbCBwb3NpdGlvbklzVmlzdWFsbHlPcmRlcmVkSW5Cb3hJbkJs
b2NrV2l0aERpZmZlcmVudERpcmVjdGlvbmFsaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgd29y
ZEJyZWFrLCBjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50JiBvZmZzZXRPZldvcmRCcmVhaykKLXsK
LSAgICBpbnQgcHJldmlvdXNPZmZzZXQgPSBvZmZzZXRPZldvcmRCcmVhazsKLSAgICByZXR1cm4g
cG9zaXRpb25Jc0luQm94KHdvcmRCcmVhaywgYm94LCBvZmZzZXRPZldvcmRCcmVhaykKLSAgICAg
ICAgJiYgKHByZXZpb3VzT2Zmc2V0ID09IGludmFsaWRPZmZzZXQgfHwgcHJldmlvdXNPZmZzZXQg
PCBvZmZzZXRPZldvcmRCcmVhayk7Ci19Ci0gICAgCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5l
eHRXb3JkQnJlYWtJbkJveEluc2lkZUJsb2NrV2l0aERpZmZlcmVudERpcmVjdGlvbmFsaXR5KAot
ICAgIGNvbnN0IElubGluZUJveCogYm94LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHByZXZpb3Vz
V29yZEJyZWFrLCBpbnQmIG9mZnNldE9mV29yZEJyZWFrLCBib29sJiBpc0xhc3RXb3JkQnJlYWtJ
bkJveCkKLXsKLSAgICAvLyBGSVhNRTogUHJvYmFibHkgbmVlZCB0byB0YWtlIGNhcmUgb2YgYmlk
aSBsZXZlbCB0b28uCi0gICAgCi0gICAgLy8gSW4gYSBMVFIgYmxvY2ssIHRoZSB3b3JkIGJyZWFr
IHNob3VsZCBiZSBvbiB0aGUgbGVmdCBib3VuZGFyeSBvZiBhIHdvcmQuCi0gICAgLy8gSW4gYSBS
VEwgYmxvY2ssIHRoZSB3b3JkIGJyZWFrIHNob3VsZCBiZSBvbiB0aGUgcmlnaHQgYm91bmRhcnkg
b2YgYSB3b3JkLgotICAgIC8vIEJlY2F1c2UgcHJldmlvdXNXb3JkUG9zaXRpb24oKSByZXR1cm5z
IHRoZSB3b3JkIGJyZWFrIG9uIHRoZSByaWdodCBib3VuZGFyeSBvZiB0aGUgd29yZCBmb3IgUlRM
IHRleHQsCi0gICAgLy8gd2UgbmVlZCB0byB1c2UgbmV4dFdvcmRQb3NpdGlvbigpIHRvIHRyYXZl
cnNlIHdvcmRzIHdpdGhpbiB0aGUgaW5saW5lIGJveGVzIGZyb20gcmlnaHQgdG8gbGVmdCB0byBm
aW5kIHRoZSBuZXh0IHdvcmQgYnJlYWsuCi0gICAgLy8gVGhlIHNhbWUgYXBwbGllcyB0byBMVFIg
dGV4dCwgaW4gd2hpY2ggd29yZHMgYXJlIHRyYXZlcnNlZCB3aXRoaW4gdGhlIGlubGluZSBib3hl
cyBmcm9tIGxlZnQgdG8gcmlnaHQuCi0gICAgCi0gICAgYm9vbCBoYXNTZWVuV29yZEJyZWFrSW5U
aGlzQm94ID0gcHJldmlvdXNXb3JkQnJlYWsuaXNOb3ROdWxsKCk7Ci0gICAgVmlzaWJsZVBvc2l0
aW9uIHdvcmRCcmVhayA9IGhhc1NlZW5Xb3JkQnJlYWtJblRoaXNCb3ggPyBwcmV2aW91c1dvcmRC
cmVhayA6IAotICAgICAgICBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oYm94LT5yZW5kZXJl
cigpLT5ub2RlKCksIGJveC0+Y2FyZXRNaW5PZmZzZXQoKSk7Ci0KLSAgICB3b3JkQnJlYWsgPSBu
ZXh0Qm91bmRhcnkod29yZEJyZWFrLCBuZXh0V29yZFBvc2l0aW9uQm91bmRhcnkpOwotICAKLSAg
ICAvLyBHaXZlbiBSVEwgYm94ICJBQkMgREVGIiBlaXRoZXIgZm9sbG93cyBhIExUUiBib3ggb3Ig
aXMgdGhlIGZpcnN0IHZpc3VhbCBib3ggaW4gYW4gTFRSIGJsb2NrIGFzIGFuIGV4YW1wbGUsCi0g
ICAgLy8gdGhlIHZpc3VhbCBkaXNwbGF5IG9mIHRoZSBSVEwgYm94IGlzOiAiKDApSigxMClJKDkp
SCg4KSAoNylGKDYpRSg1KUQoNCkgKDMpQygyKUIoMSlBKDExKSIsCi0gICAgLy8gd2hlcmUgdGhl
IG51bWJlciBpbiBwYXJlbnRoZXNpcyByZXByZXNlbnRzIG9mZnNldCBpbiB2aXNpYmxlUG9zaXRp
b24uIAotICAgIC8vIFN0YXJ0IGF0IG9mZnNldCAwLCB0aGUgZmlyc3Qgd29yZCBicmVhayBpcyBh
dCBvZmZzZXQgMywgdGhlIDJuZCB3b3JkIGJyZWFrIGlzIGF0IG9mZnNldCA3LCBhbmQgdGhlIDNy
ZCB3b3JkIGJyZWFrIHNob3VsZCBiZSBhdCBvZmZzZXQgMC4KLSAgICAvLyBCdXQgbmV4dFdvcmRQ
b3NpdGlvbigpIG9mIG9mZnNldCA3IGlzIG9mZnNldCAxMSwgd2hpY2ggc2hvdWxkIGJlIGlnbm9y
ZWQsIAotICAgIC8vIGFuZCB0aGUgcG9zaXRpb24gYXQgb2Zmc2V0IDAgc2hvdWxkIGJlIG1hbnVh
bGx5IGFkZGVkIGFzIHRoZSBsYXN0IHdvcmQgYnJlYWsgd2l0aGluIHRoZSBib3guCi0gICAgaWYg
KHdvcmRCcmVhayAhPSBwcmV2aW91c1dvcmRCcmVhayAmJiBwb3NpdGlvbklzVmlzdWFsbHlPcmRl
cmVkSW5Cb3hJbkJsb2NrV2l0aERpZmZlcmVudERpcmVjdGlvbmFsaXR5KHdvcmRCcmVhaywgYm94
LCBvZmZzZXRPZldvcmRCcmVhaykpIHsKLSAgICAgICAgaXNMYXN0V29yZEJyZWFrSW5Cb3ggPSBm
YWxzZTsKLSAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsKLSAgICB9Ci0gICAgCi0gICAgaXNMYXN0
V29yZEJyZWFrSW5Cb3ggPSB0cnVlOwotICAgIHJldHVybiBsYXN0V29yZEJyZWFrSW5Cb3goYm94
LCBvZmZzZXRPZldvcmRCcmVhayk7Ci19Ci0KLXN0cnVjdCBXb3JkQm91bmRhcnlFbnRyeSB7Ci0g
ICAgV29yZEJvdW5kYXJ5RW50cnkoKQotICAgICAgICA6IG9mZnNldEluSW5saW5lQm94KGludmFs
aWRPZmZzZXQpIAotICAgIHsgCi0gICAgfQotCi0gICAgV29yZEJvdW5kYXJ5RW50cnkoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG9mZnNldCkKLSAgICAgICAgOiB2aXNpYmxl
UG9zaXRpb24ocG9zaXRpb24pCi0gICAgICAgICwgb2Zmc2V0SW5JbmxpbmVCb3gob2Zmc2V0KSAK
LSAgICB7IAotICAgIH0KLQotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb247Ci0g
ICAgaW50IG9mZnNldEluSW5saW5lQm94OwotfTsKLSAgICAKLXR5cGVkZWYgVmVjdG9yPFdvcmRC
b3VuZGFyeUVudHJ5LCA1MD4gV29yZEJvdW5kYXJ5VmVjdG9yOwotICAgIAotc3RhdGljIHZvaWQg
Y29sbGVjdFdvcmRCcmVha3NJbkJveEluc2lkZUJsb2NrV2l0aFNhbWVEaXJlY3Rpb25hbGl0eShj
b25zdCBJbmxpbmVCb3gqIGJveCwgV29yZEJvdW5kYXJ5VmVjdG9yJiBvcmRlcmVkV29yZEJvdW5k
YXJpZXMpCi17Ci0gICAgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLmNsZWFyKCk7Ci0KLSAgICBWaXNp
YmxlUG9zaXRpb24gd29yZEJyZWFrOwotICAgIGludCBvZmZzZXRPZldvcmRCcmVhayA9IGludmFs
aWRPZmZzZXQ7Ci0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNX
b3JkQnJlYWtJbkJveEluc2lkZUJsb2NrV2l0aFNhbWVEaXJlY3Rpb25hbGl0eShib3gsIHdvcmRC
cmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWspOwotICAgICAgICBpZiAod29yZEJyZWFrLmlzTnVsbCgp
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFdvcmRCb3VuZGFyeUVudHJ5IHdvcmRCb3Vu
ZGFyeUVudHJ5KHdvcmRCcmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWspOwotICAgICAgICBvcmRlcmVk
V29yZEJvdW5kYXJpZXMuYXBwZW5kKHdvcmRCb3VuZGFyeUVudHJ5KTsKLSAgICB9Ci19Ci0KLXN0
YXRpYyB2b2lkIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJudERp
cmVjdGlvbmFsaXR5KGNvbnN0IElubGluZUJveCogYm94LCBXb3JkQm91bmRhcnlWZWN0b3ImIG9y
ZGVyZWRXb3JkQm91bmRhcmllcykKLXsKLSAgICBvcmRlcmVkV29yZEJvdW5kYXJpZXMuY2xlYXIo
KTsKLSAgICAKLSAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrOwotICAgIGludCBvZmZzZXRP
ZldvcmRCcmVhayA9IGludmFsaWRPZmZzZXQ7Ci0gICAgYm9vbCBpc0xhc3RXb3JkQnJlYWtJbkJv
eCA9IGZhbHNlOwotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIHdvcmRCcmVhayA9IG5leHRXb3Jk
QnJlYWtJbkJveEluc2lkZUJsb2NrV2l0aERpZmZlcmVudERpcmVjdGlvbmFsaXR5KGJveCwgd29y
ZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhaywgaXNMYXN0V29yZEJyZWFrSW5Cb3gpOwotICAgICAg
ICBpZiAod29yZEJyZWFrLmlzTm90TnVsbCgpKSB7Ci0gICAgICAgICAgICBXb3JkQm91bmRhcnlF
bnRyeSB3b3JkQm91bmRhcnlFbnRyeSh3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrKTsKLSAg
ICAgICAgICAgIG9yZGVyZWRXb3JkQm91bmRhcmllcy5hcHBlbmQod29yZEJvdW5kYXJ5RW50cnkp
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0xhc3RXb3JkQnJlYWtJbkJveCkKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgY29sbGVjdFdvcmRCcmVha3NJbkJv
eChjb25zdCBJbmxpbmVCb3gqIGJveCwgV29yZEJvdW5kYXJ5VmVjdG9yJiBvcmRlcmVkV29yZEJv
dW5kYXJpZXMsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCi17Ci0gICAgaWYgKGJveC0+
ZGlyZWN0aW9uKCkgPT0gYmxvY2tEaXJlY3Rpb24pCi0gICAgICAgIGNvbGxlY3RXb3JkQnJlYWtz
SW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHkoYm94LCBvcmRlcmVkV29yZEJv
dW5kYXJpZXMpOwotICAgIGVsc2UKLSAgICAgICAgY29sbGVjdFdvcmRCcmVha3NJbkJveEluc2lk
ZUJsb2NrV2l0aERpZmZlcm50RGlyZWN0aW9uYWxpdHkoYm94LCBvcmRlcmVkV29yZEJvdW5kYXJp
ZXMpOyAgICAgICAgCi19Ci0gICAgCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29y
ZEJvdW5kYXJ5SW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gsIGludCBvZmZzZXQpCi17Ci0gICAg
aW50IG9mZnNldE9mV29yZEJyZWFrID0gMDsKLSAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFr
OwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzV29yZEJy
ZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHkoYm94LCB3b3JkQnJlYWss
IG9mZnNldE9mV29yZEJyZWFrKTsKLSAgICAgICAgaWYgKHdvcmRCcmVhay5pc051bGwoKSkKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQgfHwg
b2Zmc2V0T2ZXb3JkQnJlYWsgIT0gb2Zmc2V0KQotICAgICAgICAgICAgcmV0dXJuIHdvcmRCcmVh
azsKLSAgICB9ICAgICAgICAKLSAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci19Ci0KLXN0
YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRCb3VuZGFyeUluQm94KGNvbnN0IElubGluZUJv
eCogYm94LCBpbnQgb2Zmc2V0KQotewotICAgIGludCBvZmZzZXRPZldvcmRCcmVhayA9IDA7Ci0g
ICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBib29sIGlzTGFzdFdvcmRCcmVha0lu
Qm94ID0gZmFsc2U7Ci0gICAgZG8gewotICAgICAgICB3b3JkQnJlYWsgPSBuZXh0V29yZEJyZWFr
SW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25hbGl0eShib3gsIHdvcmRCcmVh
aywgb2Zmc2V0T2ZXb3JkQnJlYWssIGlzTGFzdFdvcmRCcmVha0luQm94KTsKLSAgICAgICAgaWYg
KHdvcmRCcmVhay5pc05vdE51bGwoKSAmJiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQgfHwgb2Zm
c2V0T2ZXb3JkQnJlYWsgIT0gb2Zmc2V0KSkKLSAgICAgICAgICAgIHJldHVybiB3b3JkQnJlYWs7
Ci0gICAgfSB3aGlsZSAoIWlzTGFzdFdvcmRCcmVha0luQm94KTsgICAgICAgCi0gICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbigpOwotfQotICAgIAotc3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXN1
YWxseUxhc3RXb3JkQm91bmRhcnlJbkJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50IG9mZnNl
dCwgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbikKLXsKLSAgICBXb3JkQm91bmRhcnlWZWN0
b3Igb3JkZXJlZFdvcmRCb3VuZGFyaWVzOwotICAgIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3goYm94
LCBvcmRlcmVkV29yZEJvdW5kYXJpZXMsIGJsb2NrRGlyZWN0aW9uKTsKLSAgICBpZiAoIW9yZGVy
ZWRXb3JkQm91bmRhcmllcy5zaXplKCkpIAotICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KCk7Ci0gICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0IHx8IG9yZGVyZWRXb3JkQm91bmRh
cmllc1tvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMV0ub2Zmc2V0SW5JbmxpbmVCb3gg
IT0gb2Zmc2V0KQotICAgICAgICByZXR1cm4gb3JkZXJlZFdvcmRCb3VuZGFyaWVzW29yZGVyZWRX
b3JkQm91bmRhcmllcy5zaXplKCkgLSAxXS52aXNpYmxlUG9zaXRpb247Ci0gICAgaWYgKG9yZGVy
ZWRXb3JkQm91bmRhcmllcy5zaXplKCkgPiAxKQotICAgICAgICByZXR1cm4gb3JkZXJlZFdvcmRC
b3VuZGFyaWVzW29yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkgLSAyXS52aXNpYmxlUG9zaXRp
b247Ci0gICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotfQotICAgICAgICAKLXN0YXRpYyBp
bnQgZ3JlYXRlc3RPZmZzZXRVbmRlcihpbnQgb2Zmc2V0LCBib29sIGJveEFuZEJsb2NrQXJlSW5T
YW1lRGlyZWN0aW9uLCBjb25zdCBXb3JkQm91bmRhcnlWZWN0b3ImIG9yZGVyZWRXb3JkQm91bmRh
cmllcykKLXsKLSAgICBpZiAoIW9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkpCi0gICAgICAg
IHJldHVybiBvZmZzZXROb3RGb3VuZDsKLSAgICAvLyBGSVhNRTogYmluYXJ5IHNlYXJjaC4KLSAg
ICBpZiAoYm94QW5kQmxvY2tBcmVJblNhbWVEaXJlY3Rpb24pIHsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCk7ICsraSkgewotICAg
ICAgICAgICAgaWYgKG9yZGVyZWRXb3JkQm91bmRhcmllc1tpXS5vZmZzZXRJbklubGluZUJveCA8
IG9mZnNldCkKLSAgICAgICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gb2Zmc2V0Tm90Rm91bmQ7Ci0gICAgfQotICAgIGZvciAoaW50IGkgPSBvcmRlcmVkV29y
ZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAgaWYgKG9yZGVy
ZWRXb3JkQm91bmRhcmllc1tpXS5vZmZzZXRJbklubGluZUJveCA8IG9mZnNldCkKLSAgICAgICAg
ICAgIHJldHVybiBpOwotICAgIH0KLSAgICByZXR1cm4gb2Zmc2V0Tm90Rm91bmQ7Ci19Ci0KLXN0
YXRpYyBpbnQgc21hbGxlc3RPZmZzZXRBYm92ZShpbnQgb2Zmc2V0LCBib29sIGJveEFuZEJsb2Nr
QXJlSW5TYW1lRGlyZWN0aW9uLCBjb25zdCBXb3JkQm91bmRhcnlWZWN0b3ImIG9yZGVyZWRXb3Jk
Qm91bmRhcmllcykKLXsKLSAgICBpZiAoIW9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkpCi0g
ICAgICAgIHJldHVybiBvZmZzZXROb3RGb3VuZDsKLSAgICAvLyBGSVhNRTogYmluYXJ5IHNlYXJj
aC4KLSAgICBpZiAoYm94QW5kQmxvY2tBcmVJblNhbWVEaXJlY3Rpb24pIHsKLSAgICAgICAgZm9y
IChpbnQgaSA9IG9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkg
ewotICAgICAgICAgICAgaWYgKG9yZGVyZWRXb3JkQm91bmRhcmllc1tpXS5vZmZzZXRJbklubGlu
ZUJveCA+IG9mZnNldCkKLSAgICAgICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gb2Zmc2V0Tm90Rm91bmQ7Ci0gICAgfQotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYg
KG9yZGVyZWRXb3JkQm91bmRhcmllc1tpXS5vZmZzZXRJbklubGluZUJveCA+IG9mZnNldCkKLSAg
ICAgICAgICAgIHJldHVybiBpOwotICAgIH0KLSAgICByZXR1cm4gb2Zmc2V0Tm90Rm91bmQ7Ci19
Ci0KLXN0YXRpYyBjb25zdCBSb290SW5saW5lQm94KiBwcmV2aW91c1Jvb3RJbmxpbmVCb3goY29u
c3QgSW5saW5lQm94KiBib3gpCi17Ci0gICAgTm9kZSogbm9kZSA9IGJveC0+cmVuZGVyZXIoKS0+
bm9kZSgpOwotICAgIE5vZGUqIGVuY2xvc2luZ0Jsb2NrTm9kZSA9IGVuY2xvc2luZ05vZGVXaXRo
Tm9uSW5saW5lUmVuZGVyZXIobm9kZSk7Ci0gICAgTm9kZSogcHJldmlvdXNOb2RlID0gbm9kZS0+
cHJldmlvdXNMZWFmTm9kZSgpOwotICAgIHdoaWxlIChwcmV2aW91c05vZGUgJiYgZW5jbG9zaW5n
QmxvY2tOb2RlID09IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5lUmVuZGVyZXIocHJldmlvdXNO
b2RlKSkKLSAgICAgICAgcHJldmlvdXNOb2RlID0gcHJldmlvdXNOb2RlLT5wcmV2aW91c0xlYWZO
b2RlKCk7Ci0gIAotICAgIHdoaWxlIChwcmV2aW91c05vZGUgJiYgIXByZXZpb3VzTm9kZS0+aXNT
aGFkb3dSb290KCkpIHsKLSAgICAgICAgUG9zaXRpb24gcG9zID0gY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKHByZXZpb3VzTm9kZSwgY2FyZXRNYXhPZmZzZXQocHJldmlvdXNOb2RlKSk7Ci0g
ICAgICAgIAotICAgICAgICBpZiAocG9zLmlzQ2FuZGlkYXRlKCkpIHsKLSAgICAgICAgICAgIFJl
bmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3MocG9zLCBET1dOU1RSRUFNKTsKLSAgICAgICAgICAg
IFJvb3RJbmxpbmVCb3gqIHJvb3QgPSByZW5kZXJlZFBvcy5yb290Qm94KCk7Ci0gICAgICAgICAg
ICBpZiAocm9vdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcm9vdDsKLSAgICAgICAgfQotCi0g
ICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTm9kZS0+cHJldmlvdXNMZWFmTm9kZSgpOwot
ICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIGNvbnN0IFJvb3RJbmxpbmVCb3gqIG5l
eHRSb290SW5saW5lQm94KGNvbnN0IElubGluZUJveCogYm94KQotewotICAgIE5vZGUqIG5vZGUg
PSBib3gtPnJlbmRlcmVyKCktPm5vZGUoKTsKLSAgICBOb2RlKiBlbmNsb3NpbmdCbG9ja05vZGUg
PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKG5vZGUpOwotICAgIE5vZGUqIG5l
eHROb2RlID0gbm9kZS0+bmV4dExlYWZOb2RlKCk7Ci0gICAgd2hpbGUgKG5leHROb2RlICYmIGVu
Y2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKG5l
eHROb2RlKSkKLSAgICAgICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS0+bmV4dExlYWZOb2RlKCk7Ci0g
IAotICAgIHdoaWxlIChuZXh0Tm9kZSAmJiAhbmV4dE5vZGUtPmlzU2hhZG93Um9vdCgpKSB7Ci0g
ICAgICAgIFBvc2l0aW9uIHBvczsKLSAgICAgICAgcG9zID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKG5leHROb2RlLCBjYXJldE1pbk9mZnNldChuZXh0Tm9kZSkpOwotICAgICAgICAKLSAg
ICAgICAgaWYgKHBvcy5pc0NhbmRpZGF0ZSgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJlZFBvc2l0
aW9uIHJlbmRlcmVkUG9zKHBvcywgRE9XTlNUUkVBTSk7Ci0gICAgICAgICAgICBSb290SW5saW5l
Qm94KiByb290ID0gcmVuZGVyZWRQb3Mucm9vdEJveCgpOwotICAgICAgICAgICAgaWYgKHJvb3Qp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Q7Ci0gICAgICAgIH0KLQotICAgICAgICBuZXh0
Tm9kZSA9IG5leHROb2RlLT5uZXh0TGVhZk5vZGUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLXN0YXRpYyBjb25zdCBJbmxpbmVCb3gqIGxlZnRJbmxpbmVCb3goY29uc3QgSW5saW5lQm94
KiBib3gsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCi17Ci0gICAgaWYgKGJveC0+cHJl
dkxlYWZDaGlsZCgpKQotICAgICAgICByZXR1cm4gYm94LT5wcmV2TGVhZkNoaWxkKCk7Ci0gICAg
Ci0gICAgY29uc3QgUm9vdElubGluZUJveCogcm9vdEJveCA9IGJveC0+cm9vdCgpOwotICAgIGNv
bnN0IGJvb2wgaXNCbG9ja0xUUiA9IGJsb2NrRGlyZWN0aW9uID09IExUUjsKLSAgICBjb25zdCBJ
bmxpbmVGbG93Qm94KiBsZWZ0TGluZUJveCA9IGlzQmxvY2tMVFIgPyByb290Qm94LT5wcmV2TGlu
ZUJveCgpIDogcm9vdEJveC0+bmV4dExpbmVCb3goKTsKLSAgICBpZiAobGVmdExpbmVCb3gpCi0g
ICAgICAgIHJldHVybiBsZWZ0TGluZUJveC0+bGFzdExlYWZDaGlsZCgpOwotCi0gICAgY29uc3Qg
Um9vdElubGluZUJveCogbGVmdFJvb3RJbmxpbmVCb3ggPSBpc0Jsb2NrTFRSID8gcHJldmlvdXNS
b290SW5saW5lQm94KGJveCkgOgotICAgICAgICBuZXh0Um9vdElubGluZUJveChib3gpOyAKLSAg
ICByZXR1cm4gbGVmdFJvb3RJbmxpbmVCb3ggPyBsZWZ0Um9vdElubGluZUJveC0+bGFzdExlYWZD
aGlsZCgpIDogMDsgCi19Ci0KLXN0YXRpYyBjb25zdCBJbmxpbmVCb3gqIHJpZ2h0SW5saW5lQm94
KGNvbnN0IElubGluZUJveCogYm94LCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQotewot
ICAgIGlmIChib3gtPm5leHRMZWFmQ2hpbGQoKSkKLSAgICAgICAgcmV0dXJuIGJveC0+bmV4dExl
YWZDaGlsZCgpOwotICAgIAotICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSBib3gt
PnJvb3QoKTsKLSAgICBjb25zdCBib29sIGlzQmxvY2tMVFIgPSBibG9ja0RpcmVjdGlvbiA9PSBM
VFI7Ci0gICAgY29uc3QgSW5saW5lRmxvd0JveCogcmlnaHRMaW5lQm94ID0gaXNCbG9ja0xUUiA/
IHJvb3RCb3gtPm5leHRMaW5lQm94KCkgOiByb290Qm94LT5wcmV2TGluZUJveCgpOwotICAgIGlm
IChyaWdodExpbmVCb3gpCi0gICAgICAgIHJldHVybiByaWdodExpbmVCb3gtPmZpcnN0TGVhZkNo
aWxkKCk7Ci0KLSAgICBjb25zdCBSb290SW5saW5lQm94KiByaWdodFJvb3RJbmxpbmVCb3ggPSBp
c0Jsb2NrTFRSID8gbmV4dFJvb3RJbmxpbmVCb3goYm94KSA6Ci0gICAgICAgIHByZXZpb3VzUm9v
dElubGluZUJveChib3gpOyAKLSAgICByZXR1cm4gcmlnaHRSb290SW5saW5lQm94ID8gcmlnaHRS
b290SW5saW5lQm94LT5maXJzdExlYWZDaGlsZCgpIDogMDsgCi19Ci0KLXN0YXRpYyBWaXNpYmxl
UG9zaXRpb24gbGVmdFdvcmRCb3VuZGFyeShjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50IG9mZnNl
dCwgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbikKLXsKLSAgICBWaXNpYmxlUG9zaXRpb24g
d29yZEJyZWFrOwotICAgIGZvciAgKGNvbnN0IElubGluZUJveCogYWRqYWNlbnRCb3ggPSBib3g7
IGFkamFjZW50Qm94OyBhZGphY2VudEJveCA9IGxlZnRJbmxpbmVCb3goYWRqYWNlbnRCb3gsIGJs
b2NrRGlyZWN0aW9uKSkgewotICAgICAgICBpZiAoYmxvY2tEaXJlY3Rpb24gPT0gTFRSKSB7Ci0g
ICAgICAgICAgICBpZiAoYWRqYWNlbnRCb3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgCi0g
ICAgICAgICAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNXb3JkQm91bmRhcnlJbkJveChhZGph
Y2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8gb2Zmc2V0IDogaW52YWxpZE9mZnNldCk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgd29yZEJyZWFrID0gbmV4dFdvcmRCb3Vu
ZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZh
bGlkT2Zmc2V0KTsKLSAgICAgICAgfSBlbHNlIAotICAgICAgICAgICAgd29yZEJyZWFrID0gdmlz
dWFsbHlMYXN0V29yZEJvdW5kYXJ5SW5Cb3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJv
eCA/IG9mZnNldCA6IGludmFsaWRPZmZzZXQsIGJsb2NrRGlyZWN0aW9uKTsgICAgICAgICAgICAK
LSAgICAgICAgaWYgKHdvcmRCcmVhay5pc05vdE51bGwoKSkKLSAgICAgICAgICAgIHJldHVybiB3
b3JkQnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLX0KLSAKLXN0
YXRpYyBWaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkQm91bmRhcnkoY29uc3QgSW5saW5lQm94KiBi
b3gsIGludCBvZmZzZXQsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCi17Ci0gICAgCi0g
ICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBmb3IgKGNvbnN0IElubGluZUJveCog
YWRqYWNlbnRCb3ggPSBib3g7IGFkamFjZW50Qm94OyBhZGphY2VudEJveCA9IHJpZ2h0SW5saW5l
Qm94KGFkamFjZW50Qm94LCBibG9ja0RpcmVjdGlvbikpIHsKLSAgICAgICAgaWYgKGJsb2NrRGly
ZWN0aW9uID09IFJUTCkgewotICAgICAgICAgICAgaWYgKGFkamFjZW50Qm94LT5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgd29yZEJyZWFrID0gbmV4dFdvcmRCb3Vu
ZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZh
bGlkT2Zmc2V0KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB3b3JkQnJlYWsg
PSBwcmV2aW91c1dvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBi
b3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0KTsKLSAgICAgICAgfSBlbHNlIAotICAgICAgICAg
ICAgd29yZEJyZWFrID0gdmlzdWFsbHlMYXN0V29yZEJvdW5kYXJ5SW5Cb3goYWRqYWNlbnRCb3gs
IGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRPZmZzZXQsIGJsb2NrRGlyZWN0
aW9uKTsgICAgICAgICAgICAKLSAgICAgICAgaWYgKCF3b3JkQnJlYWsuaXNOdWxsKCkpCi0gICAg
ICAgICAgICByZXR1cm4gd29yZEJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uKCk7Ci19Ci0gICAgCi1zdGF0aWMgYm9vbCBwb3NpdGlvbklzSW5Cb3hCdXROb3RPbkJvdW5k
YXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgd29yZEJyZWFrLCBjb25zdCBJbmxpbmVCb3gqIGJv
eCkKLXsKLSAgICBpbnQgb2Zmc2V0T2ZXb3JkQnJlYWs7Ci0gICAgcmV0dXJuIHBvc2l0aW9uSXNJ
bkJveCh3b3JkQnJlYWssIGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspCi0gICAgICAgICYmIG9mZnNl
dE9mV29yZEJyZWFrICE9IGJveC0+Y2FyZXRNYXhPZmZzZXQoKSAmJiBvZmZzZXRPZldvcmRCcmVh
ayAhPSBib3gtPmNhcmV0TWluT2Zmc2V0KCk7Ci19Ci0KLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24g
bGVmdFdvcmRQb3NpdGlvbklnbm9yaW5nRWRpdGluZ0JvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgdmlzaWJsZVBvc2l0aW9uKQotewotICAgIElubGluZUJveCogYm94OwotICAgIGludCBv
ZmZzZXQ7Ci0gICAgdmlzaWJsZVBvc2l0aW9uLmdldElubGluZUJveEFuZE9mZnNldChib3gsIG9m
ZnNldCk7Ci0KLSAgICBpZiAoIWJveCkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigp
OwotCi0gICAgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9z
aW5nQmxvY2sodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwotCi0gICAgLy8gRklY
TUU6IElmIHRoZSBib3gncyBkaXJlY3Rpb25hbGl0eSBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIHRo
ZSBlbmNsb3NpbmcgYmxvY2ssIHdoZW4gdGhlIG9mZnNldCBpcyBhdCB0aGUgYm94IGJvdW5kYXJ5
Ci0gICAgLy8gYW5kIHRoZSBkaXJlY3Rpb24gaXMgdG93YXJkcyBpbnNpZGUgdGhlIGJveCwgZG8g
SSBzdGlsbCBuZWVkIHRvIG1ha2UgaXQgYSBzcGVjaWFsIGNhc2U/IEZvciBleGFtcGxlLCBhIExU
UiBib3ggaW5zaWRlIGEgTFRSIGJsb2NrLAotICAgIC8vIHdoZW4gb2Zmc2V0IGlzIGF0IGJveCdz
IGNhcmV0TWluT2Zmc2V0IGFuZCB0aGUgZGlyZWN0aW9uIGlzIERpcmVjdGlvblJpZ2h0LCBzaG91
bGQgaXQgYmUgdGFrZW4gY2FyZSBhcyBhIGdlbmVyYWwgY2FzZT8KLSAgICBpZiAob2Zmc2V0ID09
IGJveC0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgpKQotICAgICAgICByZXR1cm4gbGVmdFdvcmRCb3Vu
ZGFyeShsZWZ0SW5saW5lQm94KGJveCwgYmxvY2tEaXJlY3Rpb24pLCBpbnZhbGlkT2Zmc2V0LCBi
bG9ja0RpcmVjdGlvbik7Ci0gICAgaWYgKG9mZnNldCA9PSBib3gtPmNhcmV0UmlnaHRtb3N0T2Zm
c2V0KCkpCi0gICAgICAgIHJldHVybiBsZWZ0V29yZEJvdW5kYXJ5KGJveCwgb2Zmc2V0LCBibG9j
a0RpcmVjdGlvbik7Ci0gICAgCi0gICAgCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsK
LSAgICBpZiAoYmxvY2tEaXJlY3Rpb24gPT0gTFRSKSB7Ci0gICAgICAgIGlmIChib3gtPmRpcmVj
dGlvbigpID09IGJsb2NrRGlyZWN0aW9uKQotICAgICAgICAgICAgd29yZEJyZWFrID0gcHJldmlv
dXNCb3VuZGFyeSh2aXNpYmxlUG9zaXRpb24sIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnkp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3b3JkQnJlYWsgPSBuZXh0Qm91bmRhcnkodmlz
aWJsZVBvc2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uQm91bmRhcnkpOwotICAgIH0KLSAgICBpZiAo
d29yZEJyZWFrLmlzTm90TnVsbCgpICYmIHBvc2l0aW9uSXNJbkJveEJ1dE5vdE9uQm91bmRhcnko
d29yZEJyZWFrLCBib3gpKQotICAgICAgICByZXR1cm4gd29yZEJyZWFrOwotICAgIAotICAgIFdv
cmRCb3VuZGFyeVZlY3RvciBvcmRlcmVkV29yZEJvdW5kYXJpZXM7Ci0gICAgY29sbGVjdFdvcmRC
cmVha3NJbkJveChib3gsIG9yZGVyZWRXb3JkQm91bmRhcmllcywgYmxvY2tEaXJlY3Rpb24pOwot
Ci0gICAgaW50IGluZGV4ID0gYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBncmVhdGVz
dE9mZnNldFVuZGVyKG9mZnNldCwgYmxvY2tEaXJlY3Rpb24gPT0gTFRSLCBvcmRlcmVkV29yZEJv
dW5kYXJpZXMpCi0gICAgICAgIDogc21hbGxlc3RPZmZzZXRBYm92ZShvZmZzZXQsIGJsb2NrRGly
ZWN0aW9uID09IFJUTCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKTsKLSAgICBpZiAoaW5kZXggPj0g
MCkKLSAgICAgICAgcmV0dXJuIG9yZGVyZWRXb3JkQm91bmRhcmllc1tpbmRleF0udmlzaWJsZVBv
c2l0aW9uOwotICAgIAotICAgIHJldHVybiBsZWZ0V29yZEJvdW5kYXJ5KGxlZnRJbmxpbmVCb3go
Ym94LCBibG9ja0RpcmVjdGlvbiksIGludmFsaWRPZmZzZXQsIGJsb2NrRGlyZWN0aW9uKTsKLX0K
LQotc3RhdGljIFZpc2libGVQb3NpdGlvbiByaWdodFdvcmRQb3NpdGlvbklnbm9yaW5nRWRpdGlu
Z0JvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQotewotICAg
IElubGluZUJveCogYm94OwotICAgIGludCBvZmZzZXQ7Ci0gICAgdmlzaWJsZVBvc2l0aW9uLmdl
dElubGluZUJveEFuZE9mZnNldChib3gsIG9mZnNldCk7Ci0KLSAgICBpZiAoIWJveCkKLSAgICAg
ICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotCi0gICAgVGV4dERpcmVjdGlvbiBibG9ja0Rp
cmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2sodmlzaWJsZVBvc2l0aW9uLmRlZXBF
cXVpdmFsZW50KCkpOwotICAgIAotICAgIGlmIChvZmZzZXQgPT0gYm94LT5jYXJldExlZnRtb3N0
T2Zmc2V0KCkpCi0gICAgICAgIHJldHVybiByaWdodFdvcmRCb3VuZGFyeShib3gsIG9mZnNldCwg
YmxvY2tEaXJlY3Rpb24pOwotICAgIGlmIChvZmZzZXQgPT0gYm94LT5jYXJldFJpZ2h0bW9zdE9m
ZnNldCgpKQotICAgICAgICByZXR1cm4gcmlnaHRXb3JkQm91bmRhcnkocmlnaHRJbmxpbmVCb3go
Ym94LCBibG9ja0RpcmVjdGlvbiksIGludmFsaWRPZmZzZXQsIGJsb2NrRGlyZWN0aW9uKTsKLSAK
LSAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrOwotICAgIGlmIChibG9ja0RpcmVjdGlvbiA9
PSBSVEwpIHsKLSAgICAgICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gYmxvY2tEaXJlY3Rpb24p
Ci0gICAgICAgICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c0JvdW5kYXJ5KHZpc2libGVQb3NpdGlv
biwgcHJldmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFyeSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHdvcmRCcmVhayA9IG5leHRCb3VuZGFyeSh2aXNpYmxlUG9zaXRpb24sIG5leHRXb3JkUG9z
aXRpb25Cb3VuZGFyeSk7Ci0gICAgfQotICAgIGlmICh3b3JkQnJlYWsuaXNOb3ROdWxsKCkgJiYg
cG9zaXRpb25Jc0luQm94QnV0Tm90T25Cb3VuZGFyeSh3b3JkQnJlYWssIGJveCkpCi0gICAgICAg
IHJldHVybiB3b3JkQnJlYWs7Ci0gICAgCi0gICAgV29yZEJvdW5kYXJ5VmVjdG9yIG9yZGVyZWRX
b3JkQm91bmRhcmllczsKLSAgICBjb2xsZWN0V29yZEJyZWFrc0luQm94KGJveCwgb3JkZXJlZFdv
cmRCb3VuZGFyaWVzLCBibG9ja0RpcmVjdGlvbik7Ci0gICAgCi0gICAgaW50IGluZGV4ID0gYm94
LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBzbWFsbGVzdE9mZnNldEFib3ZlKG9mZnNldCwg
YmxvY2tEaXJlY3Rpb24gPT0gTFRSLCBvcmRlcmVkV29yZEJvdW5kYXJpZXMpCi0gICAgICAgIDog
Z3JlYXRlc3RPZmZzZXRVbmRlcihvZmZzZXQsIGJsb2NrRGlyZWN0aW9uID09IFJUTCwgb3JkZXJl
ZFdvcmRCb3VuZGFyaWVzKTsKLSAgICBpZiAoaW5kZXggPj0gMCkKLSAgICAgICAgcmV0dXJuIG9y
ZGVyZWRXb3JkQm91bmRhcmllc1tpbmRleF0udmlzaWJsZVBvc2l0aW9uOwotICAgIAotICAgIHJl
dHVybiByaWdodFdvcmRCb3VuZGFyeShyaWdodElubGluZUJveChib3gsIGJsb2NrRGlyZWN0aW9u
KSwgaW52YWxpZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOwotfQotCi1WaXNpYmxlUG9zaXRpb24g
bGVmdFdvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikK
LXsKLSAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKCk7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRCcmVhayA9IGxl
ZnRXb3JkUG9zaXRpb25JZ25vcmluZ0VkaXRpbmdCb3VuZGFyeSh2aXNpYmxlUG9zaXRpb24pOwot
ICAgIGxlZnRXb3JkQnJlYWsgPSB2aXNpYmxlUG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRhcnlB
dE9yQmVmb3JlKGxlZnRXb3JkQnJlYWspOwotICAgIAotICAgIC8vIEZJWE1FOiBIb3cgc2hvdWxk
IHdlIGhhbmRsZSBhIG5vbi1lZGl0YWJsZSBwb3NpdGlvbj8KLSAgICBpZiAobGVmdFdvcmRCcmVh
ay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVp
dmFsZW50KCkpKSB7Ci0gICAgICAgIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24gPSBkaXJl
Y3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKTsK
LSAgICAgICAgbGVmdFdvcmRCcmVhayA9IGJsb2NrRGlyZWN0aW9uID09IExUUiA/IHN0YXJ0T2ZF
ZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKSA6IGVuZE9mRWRpdGFibGVDb250ZW50KHZp
c2libGVQb3NpdGlvbik7Ci0gICAgfQotICAgIHJldHVybiBsZWZ0V29yZEJyZWFrOwotfQotCi1W
aXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2
aXNpYmxlUG9zaXRpb24pCi17Ci0gICAgaWYgKHZpc2libGVQb3NpdGlvbi5pc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotCi0gICAgVmlzaWJsZVBvc2l0aW9uIHJp
Z2h0V29yZEJyZWFrID0gcmlnaHRXb3JkUG9zaXRpb25JZ25vcmluZ0VkaXRpbmdCb3VuZGFyeSh2
aXNpYmxlUG9zaXRpb24pOwotICAgIHJpZ2h0V29yZEJyZWFrID0gdmlzaWJsZVBvc2l0aW9uLmhv
bm9yRWRpdGluZ0JvdW5kYXJ5QXRPckJlZm9yZShyaWdodFdvcmRCcmVhayk7Ci0KLSAgICAvLyBG
SVhNRTogSG93IHNob3VsZCB3ZSBoYW5kbGUgYSBub24tZWRpdGFibGUgcG9zaXRpb24/Ci0gICAg
aWYgKHJpZ2h0V29yZEJyZWFrLmlzTnVsbCgpICYmIGlzRWRpdGFibGVQb3NpdGlvbih2aXNpYmxl
UG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpIHsKLSAgICAgICAgVGV4dERpcmVjdGlvbiBibG9j
a0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2sodmlzaWJsZVBvc2l0aW9uLmRl
ZXBFcXVpdmFsZW50KCkpOwotICAgICAgICByaWdodFdvcmRCcmVhayA9IGJsb2NrRGlyZWN0aW9u
ID09IExUUiA/IGVuZE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbikgOiBzdGFydE9m
RWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7Ci0gICAgfQotICAgIHJldHVybiByaWdo
dFdvcmRCcmVhazsKLX0KLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0QnJlYWtJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAkocmV2aXNpb24gMTEwNDczKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBpbnQgdGV4dEJyZWFrUHJl
Y2VkaW5nKFRleHRCcmVha0l0ZXJhdG9yKiwgaW50KTsKICAgICBpbnQgdGV4dEJyZWFrRm9sbG93
aW5nKFRleHRCcmVha0l0ZXJhdG9yKiwgaW50KTsKICAgICBib29sIGlzVGV4dEJyZWFrKFRleHRC
cmVha0l0ZXJhdG9yKiwgaW50KTsKKyAgICBib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJ
dGVyYXRvciopOwogCiAgICAgY29uc3QgaW50IFRleHRCcmVha0RvbmUgPSAtMTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRv
cklDVS5jcHAJKHJldmlzaW9uIDExMDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5
LDEyIEBAIGJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIKICAgICByZXR1
cm4gdWJya19pc0JvdW5kYXJ5KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVy
YXRvciksIHBvc2l0aW9uKTsKIH0KIAorYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRl
cmF0b3IqIGl0ZXJhdG9yKQoreworICAgIGludCBydWxlU3RhdHVzID0gdWJya19nZXRSdWxlU3Rh
dHVzKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworICAgIHJl
dHVybiBydWxlU3RhdHVzICE9IFVCUktfV09SRF9OT05FOworfQorCiBzdGF0aWMgVGV4dEJyZWFr
SXRlcmF0b3IqIHNldFVwSXRlcmF0b3JXaXRoUnVsZXMoYm9vbCYgY3JlYXRlZEl0ZXJhdG9yLCBU
ZXh0QnJlYWtJdGVyYXRvciomIGl0ZXJhdG9yLAogICAgIGNvbnN0IGNoYXIqIGJyZWFrUnVsZXMs
IGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckd0ay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsu
Y3BwCShyZXZpc2lvbiAxMTA0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0
ay9UZXh0QnJlYWtJdGVyYXRvckd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NSw0ICszODUs
OSBAQCBib29sIGlzVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyCiAgICAgcmV0dXJu
IGl0ZXJhdG9yLT5tX2NoYXJJdGVyYXRvci5nZXRJbmRleCgpID09IGluZGV4OwogfQogCitib29s
IGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciopCit7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFr
SXRlcmF0b3JRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcAkocmV2aXNpb24gMTEwNDczKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUwLDQgKzE1MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFr
SXRlcmF0b3IqKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbmNlL1RleHRCcmVha0l0ZXJhdG9yV2lu
Q0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luY2Uv
VGV4dEJyZWFrSXRlcmF0b3JXaW5DRS5jcHAJKHJldmlzaW9uIDExMDQ3MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luY2UvVGV4dEJyZWFrSXRlcmF0b3JXaW5DRS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxNyw2ICszMTcsMTEgQEAgYm9vbCBpc1RleHRCcmVhayhUZXh0QnJl
YWtJdGVyYXRvciosIGludAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIGlzV29yZFRleHRC
cmVhayhUZXh0QnJlYWtJdGVyYXRvciopCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFRleHRC
cmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKGNvbnN0IFVDaGFyKiBzdHJpbmcs
IGludCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIGNoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5n
LCBsZW5ndGgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTEwNzc1KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTItMDMtMTQgIFhpYW9t
ZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVzaW5nIElDVSBicmVhayBpdGVy
YXRvciB0byBzaW1wbGlmeSB2aXN1YWwgd29yZCBtb3ZlbWVudCBpbXBsZW1lbnRhdGlvbi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4ODU2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL3Nl
bGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktaW5saW5lLWJsb2NrLXBvc2l0aW9uZWQtZWxl
bWVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13
b3JkLXZpc3VhbGx5LWlubGluZS1ibG9jay1wb3NpdGlvbmVkLWVsZW1lbnQuaHRtbDoKKyAgICAg
ICAgICBUaGUgd29yZCBicmVhayBzdG9wcyBhdCB0aGUgYmVnaW5uaW5nIG9mIGZpeGVkIHBvc2l0
aW9uZWQgZWxlbWVudCwgd2hpY2ggaXMgY29ycmVjdCBhbmQgY29uc2lzdGVudCBiZWhhdmlvci4K
KworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0
aS1saW5lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5
LXdvcmQtdmlzdWFsbHktbXVsdGktbGluZS5odG1sOgorICAgICAgICAgIFRoZSB3b3JkIGJyZWFr
IGRvZXMgbm90IHN0b3AgYXQgdGhlIGVuZCBvZiBhIHRleHQgaWYgdGhlcmUgaXMgbmV4dCBsaW5l
IG9mIHRleHQgYXZhaWxhYmxlIHVuZGVyIHRoZSBzYW1lCisgICAgICAgICAgZWRpdGFibGUgcm9v
dCwgd2hpY2ggaXMgYSBjb25zaXN0ZW50IGJlaGF2aW9yIGNyb3NzIHRoZSBib2FyZC4KKyAgICAg
ICAgICBBZGQgbW9yZSB0ZXN0IGNhc2VzLCBpbmNsdWRpbmcgb25lIHdpdGggbm9uIElubGluZVRl
eHRCb3guCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFs
bHktc2luZ2xlLXNwYWNlLWlubGluZS1lbGVtZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgICBG
aXhpbmcgb2YgcHJldmlvdXNseSBtaXNzaW5nIG9yIGV4dHJhIHdvcmQgYnJlYWsgcG9zaXRpb25z
LgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXNp
bmdsZS1zcGFjZS1vbmUtZWxlbWVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9z
ZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXNpbmdsZS1zcGFjZS1vbmUtZWxlbWVudC5o
dG1sOgorICAgICAgICAgIEFkZCBhIHRlc3QgY2FzZSBpbmNsdWRpbmcgYmlkaSBjb250cm9sIGNo
YXJhY3RlciB3aGljaCByZW5kZXJzIHdyb25nIHJlc3VsdCBzaW5jZSByaWdodC1hcnJvdyBjb3Vs
ZCBub3QgcmVhY2gKKyAgICAgICAgICBhIHBvc2l0aW9uIHdoaWNoIGlzIHRoZSB3b3JkIGJyZWFr
IHBvc2l0aW9uLgorICAgICAgICAgIEFkZCBhbm90aGVyIHRlc3QgY2FzZSBjb250YWluaW5nIG5v
biBJbmxpbmVUZXh0Qm94LgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13
b3JkLXZpc3VhbGx5LXdyb25nLWxlZnQtcmlnaHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktd3JvbmctbGVmdC1y
aWdodC5odG1sOiBBZGRlZC4KKyAgICAgICAgICBBZGQgYSB0ZXN0IGNhc2Ugd2hpY2ggcmVuZGVy
cyB3cm9uZyByZXN1bHQgZHVlIHRvIGxlZnQvcmlnaHQtYXJyb3cgcmV0dXJucyB3cm9uZyByZXN1
bHQuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvbW92ZS1ieS13b3Jk
LXZpc3VhbGx5LmpzOgorICAgICAgICAobW92ZUJ5V29yZE9uRXZlcnlDaGFyKTogSGFuZGxlIGEg
c3BlY2lhbCBjYXNlIHdoZW4gbGVmdC9yaWdodCBhcnJvdyBtaXNzaW5nIGNlcnRhaW4gcG9zaXRp
b24uCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6IEFkZCBtb3ZlLWJ5LXdvcmQtdmlz
dWFsbHkqLmh0bWwgdG8gYmUgc2tpcHBlZCBzaW5jZSBpc1dvcmRUZXh0QnJlYWsgaXMgbm90IGlt
cGxlbWVudGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6IGRpdHRvLgorCiAyMDEy
LTAzLTE0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSSd2ZSBh
bHJlYWR5IHVwZGF0ZWQgdGhlIGJhc2VsaW5lcyBmb3IgdGhpcyB0ZXN0LgpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1ibG9j
ay1wb3NpdGlvbmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUtYmxvY2st
cG9zaXRpb25lZC1lbGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTEwNDczKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1i
bG9jay1wb3NpdGlvbmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0y
LDM3ICsyLDM3IEBACiA9PT09PT09PSBNb3ZlIEJ5IFdvcmQgPT09PQogVGVzdCAxLCBMVFI6CiBN
b3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYmVnaW4gc3RhcnQiWzAsIDZdLCAiYWJjIGRlZiJbMCwg
NF0sICJlbmQgaW5nIlswLCA0XSwgInRoaXMgaXMgZmxvYXQiWzAsIDUsIDhdLCAidGhpcyBpcyBm
aXhlZCJbNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4XSwgInRoaXMgaXMgYWJzb2x1
dGUiWzAsIDUsIDgsIDE2XQorImJlZ2luIHN0YXJ0IlswLCA2XSwgImFiYyBkZWYiWzAsIDRdLCAi
ZW5kIGluZyJbMCwgNF0sICJ0aGlzIGlzIGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQi
WzAsIDUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRl
IlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUi
WzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhl
ZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJj
IGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwg
OCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgs
IDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBk
ZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCiBUZXN0IDIsIExUUjoKIE1vdmUgcmlnaHQg
Ynkgb25lIHdvcmQKLSJhYmMgZGVmIlswLCA0XSwgImVuZCBpbmciWzAsIDRdLCAidGhpcyBpcyBm
bG9hdCJbMCwgNSwgOF0sICJ0aGlzIGlzIGZpeGVkIls1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUi
WzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCisiYWJjIGRlZiJbMCwg
NF0sICJlbmQgaW5nIlswLCA0XSwgInRoaXMgaXMgZmxvYXQiWzAsIDUsIDhdLCAidGhpcyBpcyBm
aXhlZCJbMCwgNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4XSwgInRoaXMgaXMgYWJz
b2x1dGUiWzAsIDUsIDgsIDE2XQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0idGhpcyBpcyBhYnNv
bHV0ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlz
IGZpeGVkIls4LCA1XSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0s
ICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQorInRoaXMgaXMgYWJzb2x1dGUi
WzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhl
ZCJbOCwgNSwgMF0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAi
YWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KIFRlc3QgMywgTFRSOgogTW92ZSBy
aWdodCBieSBvbmUgd29yZAotImVuZCBpbmciWzAsIDRdLCAidGhpcyBpcyBmbG9hdCJbMCwgNSwg
OF0sICJ0aGlzIGlzIGZpeGVkIls1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUiWzAsIDUsIDhdLCAi
dGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCisiZW5kIGluZyJbMCwgNF0sICJ0aGlzIGlz
IGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzAsIDUsIDhdLCAidGhpcyBpcyByZWxh
dGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVm
dCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMg
cmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0
Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFy
dCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0
aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJb
OCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQi
WzYsIDBdCiBUZXN0IDQsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJ0aGlzIGlzIGZs
b2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJb
MCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KKyJ0aGlzIGlzIGZsb2F0
IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzAsIDUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJb
MCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBv
bmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRp
dmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1
LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwg
MF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4
LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwg
MF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBd
CiBUZXN0IDUsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKICJ0aGlzIGlzIGZpeGVkIlsw
LCA1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUiWzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJb
MCwgNSwgOCwgMTZdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJ0aGlzIGlzIGFic29sdXRlIlsx
NiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQi
WzgsIDVdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBk
ZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCisidGhpcyBpcyBhYnNvbHV0ZSJbMTYsIDgs
IDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4LCA1
LCAwXSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMgZGVm
Ils0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQogVGVzdCA2LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5
IG9uZSB3b3JkCiAidGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRl
IlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUi
WzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhl
ZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJj
IGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwg
OCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgs
IDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBk
ZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCiBUZXN0IDcsIExUUjoKIE1vdmUgcmlnaHQg
Ynkgb25lIHdvcmQKICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBi
eSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVs
YXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4
LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJb
NiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZl
Ils4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwg
NSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYs
IDBdCiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12
aXN1YWxseS1pbmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlu
bGluZS1ibG9jay1wb3NpdGlvbmVkLWVsZW1lbnQuaHRtbAkocmV2aXNpb24gMTEwNDczKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGlu
ZS1ibG9jay1wb3NpdGlvbmVkLWVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcsMzgg
KzE3LDM4IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIAogPGRpdiBpZD0i
dGVzdE1vdmVCeVdvcmQiIGNvbnRlbnRlZGl0YWJsZSBzdHlsZT0id2lkdGg6MjAwMHB4OyBoZWln
aHQ6MjAwMHB4Ij4KIDxkaXYgaWQ9ImRfMSIgZGlyPWx0ciAKLXRpdGxlPSJbZF8xLCAwXVtkXzEs
IDZdW2RfMiwgMF1bZF8yLCA0XVtkXzMsIDBdW2RfMywgNF1bZF80LCAwXVtkXzQsIDVdW2RfNCwg
OF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1
XVtkXzcsIDhdW2RfNywgMTZdfAotW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2Rf
NiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzQsIDhdW2RfNCwgNV1bZF80
LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCit0
aXRsZT0iW2RfMSwgMF1bZF8xLCA2XVtkXzIsIDBdW2RfMiwgNF1bZF8zLCAwXVtkXzMsIDRdW2Rf
NCwgMF1bZF80LCA1XVtkXzQsIDhdW2RfNSwgMF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82
LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAorW2RfNywgMTZd
W2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1b
ZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtk
XzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29y
ZCI+YmVnaW4gc3RhcnQ8L2Rpdj4KIAogPGRpdiBpZD0iZF8yIiBkaXI9bHRyIAotdGl0bGU9Iltk
XzIsIDBdW2RfMiwgNF1bZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2Rf
NSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywgNV1bZF83
LCA4XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhd
W2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1b
ZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAordGl0bGU9
IltkXzIsIDBdW2RfMiwgNF1bZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhd
W2RfNSwgMF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1b
ZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAorW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcs
IDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwg
OF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2
XVtkXzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgc3R5bGU9ImRpc3BsYXk6aW5s
aW5lLWJsb2NrIj5hYmMgZGVmPC9kaXY+CiAKIDxkaXYgaWQ9ImRfMyIgZGlyPWx0ciAKLXRpdGxl
PSJbZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2RfNSwgNV1bZF81LCA4
XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywgNV1bZF83LCA4XVtkXzcsIDE2
XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82
LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMs
IDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAordGl0bGU9IltkXzMsIDBdW2Rf
MywgNF1bZF80LCAwXVtkXzQsIDVdW2RfNCwgOF1bZF81LCAwXVtkXzUsIDVdW2RfNSwgOF1bZF82
LCAwXVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAxNl18Citb
ZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1b
ZF81LCA4XVtkXzUsIDVdW2RfNSwgMF1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtk
XzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAogY2xhc3M9InRlc3RfbW92
ZV9ieV93b3JkIj5lbmQgaW5nPC9kaXY+CiAKIDxkaXYgaWQ9ImRfNCIgZGlyPWx0ciAKLXRpdGxl
PSJbZF80LCAwXVtkXzQsIDVdW2RfNCwgOF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1
XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAotW2RfNywgMTZdW2Rf
NywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81
LCA1XVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIs
IDBdW2RfMSwgNl1bZF8xLCAwXSIgCit0aXRsZT0iW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2Rf
NSwgMF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83
LCA1XVtkXzcsIDhdW2RfNywgMTZdfAorW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBd
W2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1b
ZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtk
XzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgc3R5bGU9ImZsb2F0OmxlZnQiPnRo
aXMgaXMgZmxvYXQ8L2Rpdj4KIAogPGRpdiBpZD0iZF81IiBkaXI9bHRyIAogdGl0bGU9IltkXzUs
IDBdW2RfNSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywg
NV1bZF83LCA4XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtk
XzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2Rf
NCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAor
W2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBd
W2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1b
ZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21v
dmVfYnlfd29yZCIgc3R5bGU9InBvc2l0aW9uOmZpeGVkOyB0b3A6MzBweDsgcmlnaHQ6NXB4Ij50
aGlzIGlzIGZpeGVkPC9kaXY+CiAKIDxkaXYgaWQ9ImRfNiIgZGlyPWx0ciAKIHRpdGxlPSJbZF82
LCAwXVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAxNl18Ci1b
ZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1b
ZF81LCA4XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtk
XzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKK1tkXzcsIDE2XVtkXzcsIDhdW2RfNywg
NV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF81LCAw
XVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBd
W2RfMSwgNl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHN0eWxlPSJwb3Np
dGlvbjpyZWxhdGl2ZTsgbGVmdDoyMHB4Ij50aGlzIGlzIHJlbGF0aXZlPC9kaXY+CiAKIDxkaXYg
aWQ9ImRfNyIgZGlyPWx0ciAKIHRpdGxlPSJbZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAx
Nl18Ci1bZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2Rf
NiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8z
LCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKK1tkXzcsIDE2XVtkXzcsIDhd
W2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1b
ZF81LCAwXVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtk
XzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHN0eWxl
PSJwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxMDBweDsgdG9wOjE1MHB4Ij50aGlzIGlzIGFic29s
dXRlPC9kaXY+CiAKIDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
bW92ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLWxpbmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1t
dWx0aS1saW5lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTEwNDczKQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLWxpbmUtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsOSBAQCBNb3ZlIHJpZ2h0IGJ5IG9u
ZSB3b3JkCiAib3BxIHJzdCB1dncgeHl6IlsxNSwgMTEsIDgsIDMsIDBdLCAiYWJjIGRlZiBnaGkg
amtsIG1uICJbMTYsIDExLCA4LCAzLCAwXQogVGVzdCA4LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25l
IHdvcmQKLSJhYmMgZGVmIGdoaSBqa2wgbW4gIlswLCAzLCA4LCAxMSwgMTYsIDE4XSwgIm9wcSBy
c3QgdXZ3IHh5eiJbMCwgMywgOCwgMTEsIDE1XSAgICBGQUlMIGV4cGVjdGVkOiBbImFiYyBkZWYg
Z2hpIGprbCBtbiAiWyAwLCAgMywgIDgsICAxMSwgIDE2LCBdIm9wcSByc3QgdXZ3IHh5eiJbIDAs
ICAzLCAgOCwgIDExLCAgMTVdCi0iYWJjIGRlZiBnaGkgamtsIG1uICJbMTYsIDE4XSAgIEZBSUwg
ZXhwZWN0ZWQgIm9wcSByc3QgdXZ3IHh5eiJbIDBdCi0iYWJjIGRlZiBnaGkgamtsIG1uICJbMTcs
IDE4XSAgIEZBSUwgZXhwZWN0ZWQgIm9wcSByc3QgdXZ3IHh5eiJbIDBdCisiYWJjIGRlZiBnaGkg
amtsIG1uICJbMCwgMywgOCwgMTEsIDE2XSwgIm9wcSByc3QgdXZ3IHh5eiJbMCwgMywgOCwgMTEs
IDE1XQogTW92ZSByaWdodCBieSBvbmUgd29yZAotIm9wcSByc3QgdXZ3IHh5eiJbMTUsIDExLCA4
LCAzLCAwXSwgImFiYyBkZWYgZ2hpIGprbCBtbiAiWzE4LCAxNiwgMTEsIDgsIDMsIDBdCisib3Bx
IHJzdCB1dncgeHl6IlsxNSwgMTEsIDgsIDMsIDBdLCAiYWJjIGRlZiBnaGkgamtsIG1uICJbMTYs
IDExLCA4LCAzLCAwXQogVGVzdCA5LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKICJBQUEg
QUFBIEFBQSBBQUEgIlswLCA0LCA4LCAxMl0sICJBQUEgQUFBIEFBQSBBQUEiWzAsIDQsIDgsIDEy
LCAxNV0KQEAgLTU5LDIzICs1NywzNSBAQCBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCiAiQUFBIGtq
IEFBQSBtbiBvcHEgQUFBIEFBQSJbMjUsIDIyLCAxOCwgMTQsIDExLCA3LCA0LCAwXSwgIiBhYmMg
ZGVmIEFBQSBBQUEgaGlqIEFBQSBBQUEgdXZ3IHh5eiAiWzMzLCAyOSwgMjUsIDIxLCAxNywgMTMs
IDksIDQsIDFdCiBUZXN0IDEyLCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSIgYWJjIGRl
ZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlsxLCA0LCA5LCAxMywgMTcsIDIxLCAyNSwg
MjksIDMzLCAzNl0sICJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlswLCA0LCA3LCAxMSwgMTQs
IDE4LCAyMiwgMjVdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiIGFiYyBkZWYgQUFBIEFBQSBoaWogQUFB
IEFBQSB1dncgeHl6ICJbIDEsICA0LCAgOSwgIDEzLCAgMTcsICAyMSwgIDI1LCAgMjksICAzMywg
XSJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlsgMCwgIDQsICA3LCAgMTEsICAxNCwgIDE4LCAg
MjIsICAyNV0KLSIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlszMywgMzZd
ICAgRkFJTCBleHBlY3RlZCAiQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFBQSJbIDBdCi0iIGFiYyBk
ZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJbMzUsIDM2XSAgIEZBSUwgZXhwZWN0ZWQg
IkFBQSBraiBBQUEgbW4gb3BxIEFBQSBBQUEiWyAwXQotIiBhYmMgZGVmIEFBQSBBQUEgaGlqIEFB
QSBBQUEgdXZ3IHh5eiAiWzM0LCAzNl0gICBGQUlMIGV4cGVjdGVkICJBQUEga2ogQUFBIG1uIG9w
cSBBQUEgQUFBIlsgMF0KKyIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlsx
LCA0LCA5LCAxMywgMTcsIDIxLCAyNSwgMjksIDMzXSwgIkFBQSBraiBBQUEgbW4gb3BxIEFBQSBB
QUEiWzAsIDQsIDcsIDExLCAxNCwgMTgsIDIyLCAyNV0KIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQK
LSJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlsyNSwgMjIsIDE4LCAxNCwgMTEsIDcsIDQsIDBd
LCAiIGFiYyBkZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJbMzYsIDMzLCAyOSwgMjUs
IDIxLCAxNywgMTMsIDksIDQsIDFdCisiQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFBQSJbMjUsIDIy
LCAxOCwgMTQsIDExLCA3LCA0LCAwXSwgIiBhYmMgZGVmIEFBQSBBQUEgaGlqIEFBQSBBQUEgdXZ3
IHh5eiAiWzMzLCAyOSwgMjUsIDIxLCAxNywgMTMsIDksIDQsIDFdCiBUZXN0IDEzLCBMVFI6CiBN
b3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiAiWzAsIDRdCisiYWJjIGRlZiBnaGkgamts
IG1uICJbMCwgNCwgOCwgMTIsIDE2XSwgIm9wcSByc3QgdXZ3IHh5eiJbMCwgNCwgOCwgMTIsIDE1
XQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iIGhpaiBvcHEiWzgsIDUsIDFdCisib3BxIHJzdCB1
dncgeHl6IlsxNSwgMTIsIDgsIDQsIDBdLCAiYWJjIGRlZiBnaGkgamtsIG1uICJbMTYsIDEyLCA4
LCA0LCAwXQogVGVzdCAxNCwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYg
Z2hpIGprbCBtbiAiWzAsIDQsIDgsIDEyLCAxNiwgMThdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQK
KyJhYmMgZGVmIGdoaSBqa2wgbW4gIlsxOCwgMTYsIDEyLCA4LCA0LCAwXQorVGVzdCAxNSwgTFRS
OgorTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYgZ2hpIGprbCBtbiAiWzAsIDQsIDgs
IDEyLCAxNl0sICJvcHEgcnN0IHV2dyB4eXoiWzAsIDQsIDgsIDEyLCAxNV0KK01vdmUgbGVmdCBi
eSBvbmUgd29yZAorIm9wcSByc3QgdXZ3IHh5eiJbMTUsIDEyLCA4LCA0LCAwXSwgImFiYyBkZWYg
Z2hpIGprbCBtbiAiWzE2LCAxMiwgOCwgNCwgMF0KK1Rlc3QgMTYsIExUUjoKK01vdmUgcmlnaHQg
Ynkgb25lIHdvcmQKKyJhYmMgZGVmICJbMCwgNCwgOF0KK01vdmUgbGVmdCBieSBvbmUgd29yZAor
IiBoaWogb3BxIls4LCA1LCAxXQorVGVzdCAxNywgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29y
ZAogPERJVj5bMF0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAogPERJVj5bMF0KLVRlc3QgMTUsIExU
UjoKK1Rlc3QgMTgsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKICJcbjAwIlszXQogTW92
ZSBsZWZ0IGJ5IG9uZSB3b3JkCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9t
b3ZlLWJ5LXdvcmQtdmlzdWFsbHktbXVsdGktbGluZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1saW5l
Lmh0bWwJKHJldmlzaW9uIDExMDQ3MykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1saW5lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDcgKzU0LDcgQEAgd2hlcmUgY2hpbGRfbm9kZV9pbmRleCBpcyBvcHRpb25hbCwgZGVmYQog
CiA8ZGl2IGNvbnRlbnRlZGl0YWJsZSBkaXI9cnRsIGlkPSJtbF83IiBjbGFzcz0idGVzdF9tb3Zl
X2J5X3dvcmQgZml4X3dpZHRoIiB0aXRsZT0iW21sXzcsIDE1LCA1XVttbF83LCAxMSwgNV1bbWxf
NywgOCwgNV1bbWxfNywgMywgNV1bbWxfNywgMCwgNV1bbWxfNywgMTZdW21sXzcsIDExXVttbF83
LCA4XVttbF83LCAzXVttbF83LCAwXXxbbWxfNywgMF1bbWxfNywgM11bbWxfNywgOF1bbWxfNywg
MTFdW21sXzcsIDE2XVttbF83LCAwLCA1XVttbF83LCAzLCA1XVttbF83LCA4LCA1XVttbF83LCAx
MSwgNV1bbWxfNywgMTUsIDVdIj5hYmMgZGVmIGdoaSBqa2wgbW4gPGJyLz48YnIvPjxici8+b3Bx
IHJzdCB1dncgeHl6PC9kaXY+CiAKLTxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1ydGwgaWQ9Im1s
XzgiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSJbbWxfOCwgMTUs
IDVdW21sXzgsIDExLCA1XVttbF84LCA4LCA1XVttbF84LCAzLCA1XVttbF84LCAwLCA1XVttbF84
LCAxOF1bbWxfOCwgMTZdW21sXzgsIDExXVttbF84LCA4XVttbF84LCAzXVttbF84LCAwXXxbbWxf
OCwgMF1bbWxfOCwgM11bbWxfOCwgOF1bbWxfOCwgMTFdW21sXzgsIDE2XVttbF84LCAwLCA1XVtt
bF84LCAzLCA1XVttbF84LCA4LCA1XVttbF84LCAxMSwgNV1bbWxfOCwgMTUsIDVdIj5hYmMgZGVm
IGdoaSBqa2wgbW4gPGRpdj48YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rpdj48ZGl2Pjxici8+PC9k
aXY+b3BxIHJzdCB1dncgeHl6PC9kaXY+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBkaXI9cnRsIGlk
PSJtbF84IiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQgZml4X3dpZHRoIiB0aXRsZT0iW21sXzgs
IDE1LCA1XVttbF84LCAxMSwgNV1bbWxfOCwgOCwgNV1bbWxfOCwgMywgNV1bbWxfOCwgMCwgNV1b
bWxfOCwgMTZdW21sXzgsIDExXVttbF84LCA4XVttbF84LCAzXVttbF84LCAwXXxbbWxfOCwgMF1b
bWxfOCwgM11bbWxfOCwgOF1bbWxfOCwgMTFdW21sXzgsIDE2XVttbF84LCAwLCA1XVttbF84LCAz
LCA1XVttbF84LCA4LCA1XVttbF84LCAxMSwgNV1bbWxfOCwgMTUsIDVdIj5hYmMgZGVmIGdoaSBq
a2wgbW4gPGRpdj48YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rpdj48ZGl2Pjxici8+PC9kaXY+b3Bx
IHJzdCB1dncgeHl6PC9kaXY+CiAKIDxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1ydGwgaWQ9Im1s
XzkiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSJbbWxfOSwgMTUs
IDVdW21sXzksIDEyLCA1XVttbF85LCA4LCA1XVttbF85LCA0LCA1XVttbF85LCAwLCA1XVttbF85
LCAxMl1bbWxfOSwgOF1bbWxfOSwgNF1bbWxfOSwgMF18W21sXzksIDBdW21sXzksIDRdW21sXzks
IDhdW21sXzksIDEyXVttbF85LCAwLCA1XVttbF85LCA0LCA1XVttbF85LCA4LCA1XVttbF85LCAx
MiwgNV1bbWxfOSwgMTUsIDVdIj7XkNeQ15Ag15DXkNeQINeQ15DXkCDXkNeQ15AgPGJyLz48YnIv
Pjxici8+15DXkNeQINeQ15DXkCDXkNeQ15Ag15DXkNeQPC9kaXY+CiAKQEAgLTY1LDExICs2NSwx
NyBAQCB3aGVyZSBjaGlsZF9ub2RlX2luZGV4IGlzIG9wdGlvbmFsLCBkZWZhCiAiPiBhYmMgZGVm
INeQ15DXkCDXkNeQ15AgaGlqINeQ15DXkCDXkNeQ15AgdXZ3IHh5eiA8YnIvPjxici8+PGJyLz7X
kNeQ15Aga2og15DXkNeQIG1uIG9wcSDXkNeQ15Ag15DXkNeQPC9kaXY+CiAKIDxkaXYgY29udGVu
dGVkaXRhYmxlIGRpcj1ydGwgaWQ9Im1sXzEyIiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQgZml4
X3dpZHRoIiB0aXRsZT0iCi1bbWxfMTIsIDI1LCA1XVttbF8xMiwgMjIsIDVdW21sXzEyLCAxOCwg
NV1bbWxfMTIsIDE0LCA1XVttbF8xMiwgMTEsIDVdW21sXzEyLCA3LCA1XVttbF8xMiwgNCwgNV1b
bWxfMTIsIDAsIDVdW21sXzEyLCAzNl1bbWxfMTIsIDMzXVttbF8xMiwgMjldW21sXzEyLCAyNV1b
bWxfMTIsIDIxXVttbF8xMiwgMTddW21sXzEyLCAxM11bbWxfMTIsIDldW21sXzEyLCA0XVttbF8x
MiwgMV18W21sXzEyLCAxXVttbF8xMiwgNF1bbWxfMTIsIDldW21sXzEyLCAxM11bbWxfMTIsIDE3
XVttbF8xMiwgMjFdW21sXzEyLCAyNV1bbWxfMTIsIDI5XVttbF8xMiwgMzNdW21sXzEyLCAwLCA1
XVttbF8xMiwgNCwgNV1bbWxfMTIsIDcsIDVdW21sXzEyLCAxMSwgNV1bbWxfMTIsIDE0LCA1XVtt
bF8xMiwgMTgsIDVdW21sXzEyLCAyMiwgNV1bbWxfMTIsIDI1LCA1XQorW21sXzEyLCAyNSwgNV1b
bWxfMTIsIDIyLCA1XVttbF8xMiwgMTgsIDVdW21sXzEyLCAxNCwgNV1bbWxfMTIsIDExLCA1XVtt
bF8xMiwgNywgNV1bbWxfMTIsIDQsIDVdW21sXzEyLCAwLCA1XVttbF8xMiwgMzNdW21sXzEyLCAy
OV1bbWxfMTIsIDI1XVttbF8xMiwgMjFdW21sXzEyLCAxN11bbWxfMTIsIDEzXVttbF8xMiwgOV1b
bWxfMTIsIDRdW21sXzEyLCAxXXxbbWxfMTIsIDFdW21sXzEyLCA0XVttbF8xMiwgOV1bbWxfMTIs
IDEzXVttbF8xMiwgMTddW21sXzEyLCAyMV1bbWxfMTIsIDI1XVttbF8xMiwgMjldW21sXzEyLCAz
M11bbWxfMTIsIDAsIDVdW21sXzEyLCA0LCA1XVttbF8xMiwgNywgNV1bbWxfMTIsIDExLCA1XVtt
bF8xMiwgMTQsIDVdW21sXzEyLCAxOCwgNV1bbWxfMTIsIDIyLCA1XVttbF8xMiwgMjUsIDVdCiAi
PiBhYmMgZGVmINeQ15DXkCDXkNeQ15AgaGlqINeQ15DXkCDXkNeQ15AgdXZ3IHh5eiA8ZGl2Pjxi
ci8+PC9kaXY+PGRpdj48YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rpdj7XkNeQ15Aga2og15DXkNeQ
IG1uIG9wcSDXkNeQ15Ag15DXkNeQPC9kaXY+CiAKKzxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1s
dHIgaWQ9Im1sXzEzIiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQgZml4X3dpZHRoIiB0aXRsZT0i
W21sXzEzLCAwXVttbF8xMywgNF1bbWxfMTMsIDhdW21sXzEzLCAxMl1bbWxfMTMsIDE2XVttbF8x
MywgMCwgNV1bbWxfMTMsIDQsIDVdW21sXzEzLCA4LCA1XVttbF8xMywgMTIsIDVdW21sXzEzLCAx
NSwgNV18W21sXzEzLCAxNSwgNV1bbWxfMTMsIDEyLCA1XVttbF8xMywgOCwgNV1bbWxfMTMsIDQs
IDVdW21sXzEzLCAwLCA1XVttbF8xMywgMTZdW21sXzEzLCAxMl1bbWxfMTMsIDhdW21sXzEzLCA0
XVttbF8xMywgMF0iPmFiYyBkZWYgZ2hpIGprbCBtbiA8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj5vcHEgcnN0IHV2dyB4eXo8L2Rpdj4KKworPGRpdiBjb250ZW50ZWRpdGFibGUgZGly
PWx0ciBpZD0ibWxfMTQiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxl
PSJbbWxfMTQsIDBdW21sXzE0LCA0XVttbF8xNCwgOF1bbWxfMTQsIDEyXVttbF8xNCwgMTZdW21s
XzE0LCAxOF18W21sXzE0LCAxOF1bbWxfMTQsIDE2XVttbF8xNCwgMTJdW21sXzE0LCA4XVttbF8x
NCwgNF1bbWxfMTQsIDBdIj5hYmMgZGVmIGdoaSBqa2wgbW4gPGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PC9kaXY+CisKKzxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1sdHIgaWQ9Im1s
XzE1IiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQgZml4X3dpZHRoIiB0aXRsZT0iW21sXzE1LCAw
XVttbF8xNSwgNF1bbWxfMTUsIDhdW21sXzE1LCAxMl1bbWxfMTUsIDE2XVttbF8xNSwgMCwgNV1b
bWxfMTUsIDQsIDVdW21sXzE1LCA4LCA1XVttbF8xNSwgMTIsIDVdW21sXzE1LCAxNSwgNV18W21s
XzE1LCAxNSwgNV1bbWxfMTUsIDEyLCA1XVttbF8xNSwgOCwgNV1bbWxfMTUsIDQsIDVdW21sXzE1
LCAwLCA1XVttbF8xNSwgMTZdW21sXzE1LCAxMl1bbWxfMTUsIDhdW21sXzE1LCA0XVttbF8xNSwg
MF0iPmFiYyBkZWYgZ2hpIGprbCBtbiA8ZGl2PjxpbWcgc3JjPS4uLy4uL2FjY2Vzc2liaWxpdHkv
cmVzb3VyY2VzL2Nha2UucG5nPjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj5vcHEgcnN0IHV2
dyB4eXo8L2Rpdj4KKwogPCEtLSBtaXhlZCBlZGl0YWJpbGl0eSAtLT4KLTxkaXYgZGlyPWx0ciBj
bGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDR8OCA1IDEiPmFiYyBkZWYgPHNwYW4g
Y29udGVudGVkaXRhYmxlPiBpbnNpZGUgc3BhbiA8L3NwYW4+IGhpaiBvcHE8L2Rpdj4KKzxkaXYg
ZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDQgOHw4IDUgMSI+YWJj
IGRlZiA8c3BhbiBjb250ZW50ZWRpdGFibGU+IGluc2lkZSBzcGFuIDwvc3Bhbj4gaGlqIG9wcTwv
ZGl2PgogCiA8ZGl2IGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgY29udGVudGVkaXRhYmxlIGRp
cj1sdHIgdGl0bGU9IjB8MCI+PC9kaXY+CiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1zaW5nbGUtc3BhY2UtaW5saW5lLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L21vdmUtYnktd29yZC12aXN1YWxseS1zaW5nbGUtc3BhY2UtaW5saW5lLWVsZW1lbnQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxMTA0NzMpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNlLWlubGluZS1lbGVtZW50LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTcsMzAgKzE3LDE0IEBAIE1vdmUgbGVmdCBieSBv
bmUgd29yZAogIiByc3QgdXZ3Ils4LCA1LCAxXSwgImhpaiBvcHEiWzRdLCAiYWJjIGRlZiAiWzgs
IDQsIDBdCiBUZXN0IDQsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotImFiYyBkZWYgIlsw
XSwgIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzNdLCAiYWJjIGRlZiAiWzcsIDNdLCAiIHJzdCB1
dnciWzhdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiYWJjIGRlZiAiWyAwLCBdIiByc3QgdXZ3IlsgNCwg
XSJoaWogb3BxIlsgNywgIDMsIF0iYWJjIGRlZiAiWyA3LCAgMywgXSIgcnN0IHV2dyJbIDhdCi0i
IHJzdCB1dnciWzRdLCAiaGlqIG9wcSJbM10gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10K
LSIgcnN0IHV2dyJbM10sICJoaWogb3BxIlszXSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3
XQotIiByc3QgdXZ3IlsyXSwgImhpaiBvcHEiWzNdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJb
IDddCi0iIHJzdCB1dnciWzFdLCAiaGlqIG9wcSJbM10gICBGQUlMIGV4cGVjdGVkICJoaWogb3Bx
IlsgN10KLU1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSIgcnN0IHV2dyJbOF0sICJhYmMgZGVmICJb
MywgN10sICJoaWogb3BxIlszXSwgIiByc3QgdXZ3Ils0XSwgImFiYyBkZWYgIlswXSAgICBGQUlM
IGV4cGVjdGVkOiBbIiByc3QgdXZ3IlsgOCwgXSJhYmMgZGVmICJbIDMsICA3LCBdImhpaiBvcHEi
WyAzLCAgNywgXSIgcnN0IHV2dyJbIDQsIF0iYWJjIGRlZiAiWyAwXQotImhpaiBvcHEiWzNdLCAi
IHJzdCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iaGlqIG9wcSJbNF0s
ICIgcnN0IHV2dyJbNF0gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSJoaWogb3BxIls1
XSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotImhpaiBvcHEi
WzZdLCAiIHJzdCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCisiYWJjIGRl
ZiAiWzBdLCAiIHJzdCB1dnciWzRdLCAiaGlqIG9wcSJbNywgM10sICJhYmMgZGVmICJbNywgM10s
ICIgcnN0IHV2dyJbOF0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyIgcnN0IHV2dyJbOF0sICJh
YmMgZGVmICJbMywgN10sICJoaWogb3BxIlszLCA3XSwgIiByc3QgdXZ3Ils0XSwgImFiYyBkZWYg
IlswXQogVGVzdCA1LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJhYmMgZGVmICJbMF0s
ICIgcnN0IHV2dyJbNF0sICJoaWogb3BxIlszXSwgImFiYyBkZWYgIls3LCAzXSwgIiByc3QgdXZ3
Ils4XSAgICBGQUlMIGV4cGVjdGVkOiBbImFiYyBkZWYgIlsgMCwgXSIgcnN0IHV2dyJbIDQsIF0i
aGlqIG9wcSJbIDcsICAzLCBdImFiYyBkZWYgIlsgNywgIDMsIF0iIHJzdCB1dnciWyA4XQotIiBy
c3QgdXZ3Ils0XSwgImhpaiBvcHEiWzNdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0i
IHJzdCB1dnciWzNdLCAiaGlqIG9wcSJbM10gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10K
LSIgcnN0IHV2dyJbMl0sICJoaWogb3BxIlszXSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3
XQotIiByc3QgdXZ3IlsxXSwgImhpaiBvcHEiWzNdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJb
IDddCi1Nb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iIHJzdCB1dnciWzhdLCAiYWJjIGRlZiAiWzMs
IDddLCAiaGlqIG9wcSJbM10sICIgcnN0IHV2dyJbNF0sICJhYmMgZGVmICJbMF0gICAgRkFJTCBl
eHBlY3RlZDogWyIgcnN0IHV2dyJbIDgsIF0iYWJjIGRlZiAiWyAzLCAgNywgXSJoaWogb3BxIlsg
MywgIDcsIF0iIHJzdCB1dnciWyA0LCBdImFiYyBkZWYgIlsgMF0KLSJoaWogb3BxIlszXSwgIiBy
c3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotImhpaiBvcHEiWzRdLCAi
IHJzdCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iaGlqIG9wcSJbNV0s
ICIgcnN0IHV2dyJbNF0gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSJoaWogb3BxIls2
XSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQorImFiYyBkZWYg
IlswXSwgIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzcsIDNdLCAiYWJjIGRlZiAiWzcsIDNdLCAi
IHJzdCB1dnciWzhdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiIHJzdCB1dnciWzhdLCAiYWJj
IGRlZiAiWzMsIDddLCAiaGlqIG9wcSJbMywgN10sICIgcnN0IHV2dyJbNF0sICJhYmMgZGVmICJb
MF0KIFRlc3QgNiwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAogImFiYyBkZWYgIlswLCA0
LCA4XSwgImhpaiBvcHEiWzRdLCAiIHJzdCB1dnciWzEsIDUsIDhdCkBAIC04OCwzMiArNzIsMTQg
QEAgTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCiAiRkZaIExJRyJbNywgM10sICJhYmMgZGVmIls0XSwg
IkFCRCBEU1UgIls4LCAzLCAwXQogVGVzdCAxNSwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3Jk
Ci0iQUJEIG9wcSBEU1UgIlswLCA0LCA4LCAxMl0sICJhYmMgQUFBIGRlZiJbOCwgNCwgM10sICJG
RlogcnN0IExJRyJbNCwgOCwgMTFdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiQUJEIG9wcSBEU1UgIlsg
MCwgIDQsICA4LCAgMTIsIF0iYWJjIEFBQSBkZWYiWyA0LCAgMywgXSJGRlogcnN0IExJRyJbIDQs
ICA4LCAgMTFdCi0iQUJEIG9wcSBEU1UgIlsxMl0sICJhYmMgQUFBIGRlZiJbOF0gICBGQUlMIGV4
cGVjdGVkICJhYmMgQUFBIGRlZiJbIDRdCi0iYWJjIEFBQSBkZWYiWzEwLCA4XSAgIEZBSUwgZXhw
ZWN0ZWQgImFiYyBBQUEgZGVmIlsgNF0KLSJhYmMgQUFBIGRlZiJbOSwgOF0gICBGQUlMIGV4cGVj
dGVkICJhYmMgQUFBIGRlZiJbIDRdCisiQUJEIG9wcSBEU1UgIlswLCA0LCA4LCAxMl0sICJhYmMg
QUFBIGRlZiJbNCwgM10sICJGRlogcnN0IExJRyJbNCwgOCwgMTFdCiBNb3ZlIHJpZ2h0IGJ5IG9u
ZSB3b3JkCi0iRkZaIHJzdCBMSUciWzExLCA4LCA0XSwgImFiYyBBQUEgZGVmIlszLCA0LCA4XSwg
IkFCRCBvcHEgRFNVICJbMTIsIDgsIDQsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIHJzdCBM
SUciWyAxMSwgIDgsICA0LCBdImFiYyBBQUEgZGVmIlsgMywgIDQsIF0iQUJEIG9wcSBEU1UgIlsg
MTIsICA4LCAgNCwgIDBdCi0iYWJjIEFBQSBkZWYiWzQsIDhdICAgRkFJTCBleHBlY3RlZCAiQUJE
IG9wcSBEU1UgIlsgMTJdCisiRkZaIHJzdCBMSUciWzExLCA4LCA0XSwgImFiYyBBQUEgZGVmIlsz
LCA0XSwgIkFCRCBvcHEgRFNVICJbMTIsIDgsIDQsIDBdCiBUZXN0IDE2LCBMVFI6CiBNb3ZlIHJp
Z2h0IGJ5IG9uZSB3b3JkCi0iQUJEIG9wcSBEU1UgIlswLCA0XSwgImFiYyBBQUEgZGVmIls4LCA0
XSwgIkFCRCBvcHEgRFNVICJbMTIsIDExXSwgIkZGWiByc3QgTElHIls0LCA4LCAxMV0gICAgRkFJ
TCBleHBlY3RlZDogWyJBQkQgb3BxIERTVSAiWyAwLCAgNCwgIDgsIF0iYWJjIEFBQSBkZWYiWyA4
LCAgNywgXSJBQkQgb3BxIERTVSAiWyAxMiwgIDExLCBdIkZGWiByc3QgTElHIlsgNCwgIDgsICAx
MV0KLSJBQkQgb3BxIERTVSAiWzRdLCAiYWJjIEFBQSBkZWYiWzhdICAgRkFJTCBleHBlY3RlZCAi
QUJEIG9wcSBEU1UgIlsgOF0KLSJBQkQgb3BxIERTVSAiWzVdLCAiYWJjIEFBQSBkZWYiWzhdICAg
RkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgOF0KLSJBQkQgb3BxIERTVSAiWzZdLCAiYWJj
IEFBQSBkZWYiWzhdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgOF0KLSJBQkQgb3Bx
IERTVSAiWzddLCAiYWJjIEFBQSBkZWYiWzhdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1Ug
IlsgOF0KLSJhYmMgQUFBIGRlZiJbOCwgNF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJb
IDddCi0iYWJjIEFBQSBkZWYiWzksIDRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA3
XQotImFiYyBBQUEgZGVmIlsxMCwgNF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDdd
Ci0iYWJjIEFBQSBkZWYiWzExLCA0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgN10K
LSJhYmMgQUFBIGRlZiJbNywgNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyAxMl0K
LSJhYmMgQUFBIGRlZiJbNiwgNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyAxMl0K
LSJhYmMgQUFBIGRlZiJbNSwgNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyAxMl0K
LU1vdmUgbGVmdCBieSBvbmUgd29yZAotIkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJBQkQgb3Bx
IERTVSAiWzExLCAxMl0sICJhYmMgQUFBIGRlZiJbNywgOF0sICJBQkQgb3BxIERTVSAiWzQsIDBd
ICAgIEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIHJzdCBMSUciWyAxMSwgIDgsICA0LCBdIkFCRCBvcHEg
RFNVICJbIDExLCAgMTIsIF0iYWJjIEFBQSBkZWYiWyA3LCAgOCwgXSJBQkQgb3BxIERTVSAiWyA4
LCAgNCwgIDBdCi0iYWJjIEFBQSBkZWYiWzhdLCAiQUJEIG9wcSBEU1UgIls0XSAgIEZBSUwgZXhw
ZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDhdCi0iRkZaIHJzdCBMSUciWzFdLCAiQUJEIG9wcSBEU1Ug
Ils0XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDhdCi0iRkZaIHJzdCBMSUciWzJd
LCAiQUJEIG9wcSBEU1UgIls0XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDhdCisi
QUJEIG9wcSBEU1UgIlswLCA0LCA4XSwgImFiYyBBQUEgZGVmIls4LCA3XSwgIkFCRCBvcHEgRFNV
ICJbMTIsIDExXSwgIkZGWiByc3QgTElHIls0LCA4LCAxMV0KK01vdmUgbGVmdCBieSBvbmUgd29y
ZAorIkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJBQkQgb3BxIERTVSAiWzExLCAxMl0sICJhYmMg
QUFBIGRlZiJbNywgOF0sICJBQkQgb3BxIERTVSAiWzgsIDQsIDBdCiBUZXN0IDE3LCBSVEw6CiBN
b3ZlIGxlZnQgYnkgb25lIHdvcmQKICJBQkQgb3BxIERTVSAiWzAsIDQsIDgsIDEyXSwgImFiYyBB
QUEgZGVmIls0LCA4XSwgIkZGWiByc3QgTElHIls0LCA4LCAxMV0KQEAgLTEzMSwxNCArOTcsNyBA
QCBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKICJGRloiWzNdLCAiYmJiIEFBQSAiWzcsIDRdLCAiYWFh
ICJbNCwgMF0KIFRlc3QgMjAsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotIkFCRCBvcHEg
cnN0IERTVSAiWzAsIDQsIDcsIDEyLCAxNl0sICJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsxMiwgOCwg
NywgM10sICJBQlcgaGlqIHh5eiBGWFgiWzQsIDcsIDEyLCAxNV0gICAgRkFJTCBleHBlY3RlZDog
WyJBQkQgb3BxIHJzdCBEU1UgIlsgMCwgIDQsICA3LCAgMTIsICAxNiwgXSJhYmMgdXZ3IEFBQSBk
ZWYgbG1uIlsgMTUsICA4LCAgNywgIDMsIF0iQUJXIGhpaiB4eXogRlhYIlsgNCwgIDcsICAxMiwg
IDE1XQotIkFCRCBvcHEgcnN0IERTVSAiWzE2XSwgImFiYyB1dncgQUFBIGRlZiBsbW4iWzEyXSAg
IEZBSUwgZXhwZWN0ZWQgImFiYyB1dncgQUFBIGRlZiBsbW4iWyAxNV0KLSJhYmMgdXZ3IEFBQSBk
ZWYgbG1uIlsxOCwgMTJdICAgRkFJTCBleHBlY3RlZCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbIDE1
XQotImFiYyB1dncgQUFBIGRlZiBsbW4iWzE3LCAxMl0gICBGQUlMIGV4cGVjdGVkICJhYmMgdXZ3
IEFBQSBkZWYgbG1uIlsgMTVdCi0iYWJjIHV2dyBBQUEgZGVmIGxtbiJbMTYsIDEyXSAgIEZBSUwg
ZXhwZWN0ZWQgImFiYyB1dncgQUFBIGRlZiBsbW4iWyAxNV0KLSJhYmMgdXZ3IEFBQSBkZWYgbG1u
IlsxNSwgMTJdICAgRkFJTCBleHBlY3RlZCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbIDhdCi0iYWJj
IHV2dyBBQUEgZGVmIGxtbiJbMTQsIDEyXSAgIEZBSUwgZXhwZWN0ZWQgImFiYyB1dncgQUFBIGRl
ZiBsbW4iWyA4XQotImFiYyB1dncgQUFBIGRlZiBsbW4iWzEzLCAxMl0gICBGQUlMIGV4cGVjdGVk
ICJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsgOF0KKyJBQkQgb3BxIHJzdCBEU1UgIlswLCA0LCA3LCAx
MiwgMTZdLCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbMTUsIDgsIDcsIDNdLCAiQUJXIGhpaiB4eXog
RlhYIls0LCA3LCAxMiwgMTVdCiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCiAiQUJXIGhpaiB4eXog
RlhYIlsxNSwgMTIsIDcsIDRdLCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbMywgNywgOCwgMTVdLCAi
QUJEIG9wcSByc3QgRFNVICJbMTYsIDEyLCA3LCA0LCAwXQogCkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNlLW9uZS1l
bGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNlLW9uZS1lbGVtZW50LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTEwNDczKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXNpbmdsZS1zcGFjZS1vbmUtZWxlbWVudC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDIxIEBAIE1vdmUgcmlnaHQgYnkg
b25lIHdvcmQKICJaUUIgYWJjIFJJRyJbMTEsIDgsIDQsIDBdCiBUZXN0IDE3LCBMVFI6CiBNb3Zl
IHJpZ2h0IGJ5IG9uZSB3b3JkCisiYWJjIOGqnEJBRCBkZWbhqp0geHl6IlswLCA4LCAxNCwgMTdd
ICAgIEZBSUwgZXhwZWN0ZWQ6IFswLCA5LCA4LCAxNCwgMTddCisiYWJjIOGqnEJBRCBkZWbhqp0g
eHl6IlswLCA4XSAgIEZBSUwgZXhwZWN0ZWQgOQorImFiYyDhqpxCQUQgZGVm4aqdIHh5eiJbMSwg
OF0gICBGQUlMIGV4cGVjdGVkIDkKKyJhYmMg4aqcQkFEIGRlZuGqnSB4eXoiWzIsIDhdICAgRkFJ
TCBleHBlY3RlZCA5CisiYWJjIOGqnEJBRCBkZWbhqp0geHl6IlszLCA4XSAgIEZBSUwgZXhwZWN0
ZWQgOQorImFiYyDhqpxCQUQgZGVm4aqdIHh5eiJbNCwgOF0gICBGQUlMIGV4cGVjdGVkIDkKK01v
dmUgbGVmdCBieSBvbmUgd29yZAorImFiYyDhqpxCQUQgZGVm4aqdIHh5eiJbMTcsIDE0LCA4LCA5
LCAwXQorVGVzdCAxOCwgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYgaGlq
ICJbMCwgNCwgOF0sICIgb3BxIHJzdCAiWzEsIDUsIDhdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQK
KyIgb3BxIHJzdCAiWzgsIDUsIDFdLCAiYWJjIGRlZiBoaWogIls4LCA0LCAwXQorVGVzdCAxOSwg
TFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAogPERJVj5bMF0KIE1vdmUgbGVmdCBieSBvbmUg
d29yZAogPERJVj5bMF0KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUt
Ynktd29yZC12aXN1YWxseS1zaW5nbGUtc3BhY2Utb25lLWVsZW1lbnQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHkt
c2luZ2xlLXNwYWNlLW9uZS1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDExMDQ3MykKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1zaW5nbGUtc3Bh
Y2Utb25lLWVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTIgQEAgd2hl
cmUgY2hpbGRfbm9kZV9pbmRleCBpcyBvcHRpb25hbCwgZGVmYQogPGRpdiBkaXI9bHRyIGNsYXNz
PSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgNCA4IDExfDExIDggNCAwIiBjb250ZW50ZWRp
dGFibGU+16nXoNeRIGFiYyDXodeY15Y8L2Rpdj4KIDxkaXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9t
b3ZlX2J5X3dvcmQiIHRpdGxlPSIxMSA4IDQgMHwwIDQgOCAxMSIgY29udGVudGVkaXRhYmxlPtep
16DXkSBhYmMg16HXmNeWPC9kaXY+CiAKKzwhLS0gVGVzdCB3aXRoIEJpZGkgY29udHJvbCBjaGFy
YWN0ZXJzIC0tPgorPGRpdiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgaWQ9Im5v
dFJlYWNoYWJsZVBvc2l0aW9uIiB0aXRsZT0iMCA5IDggMTQgMTd8MTcgMTQgOCA5IDAiIGNvbnRl
bnRlZGl0YWJsZT5hYmMgJiN4MjAyYjvXkdeQ15MgZGVmJiN4MjAyYzsgeHl6PC9kaXY+CisKKzwh
LS0gVGVzdCB3aXRoIGltYWdlIC0tIG5vbi1pbmxpbmUtdGV4dC1ib3ggLS0+Cis8ZGl2IGlkPSJk
XzEiIGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiBjb250ZW50ZWRpdGFibGUgdGl0
bGU9IltkXzEsIDAsIDFdW2RfMSwgNCwgMV1bZF8xLCA4LCAxXVtkXzEsIDEsIDNdW2RfMSwgNSwg
M11bZF8xLCA4LCAzXXxbZF8xLCA4LCAzXVtkXzEsIDUsIDNdW2RfMSwgMSwgM11bZF8xLCA4LCAx
XVtkXzEsIDQsIDFdW2RfMSwgMCwgMV0iPmFiYyBkZWYgaGlqIDxpbWcgc3JjPS4uLy4uL2FjY2Vz
c2liaWxpdHkvcmVzb3VyY2VzL2Nha2UucG5nPiBvcHEgcnN0IDwvZGl2PgorCiA8IS0tIGVtcHR5
IGRpdiAtLT4KIDxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIw
fDAiIGNvbnRlbnRlZGl0YWJsZT48L2Rpdj4KIApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXdyb25nLWxlZnQtcmlnaHQtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnkt
d29yZC12aXN1YWxseS13cm9uZy1sZWZ0LXJpZ2h0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS13
cm9uZy1sZWZ0LXJpZ2h0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBA
CithYmMg16nXqdepIGRlZiDXqdeg15Egb3BxINeh15jXliB1dncg16nXqdepIHh5egorY3RybC9h
bHQrcmlnaHQgZnJvbSBsZWZ0IG9mINeh15jXliBzaG91bGQgbW92ZSBjdXJzb3IgdG8gbGVmdCBv
ZiBvcHEuIEJ1dCBpdCBhY3R1YWxseSBtb3ZlZCB0byBwb3NpdGlvbiA0CkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktd3JvbmctbGVmdC1y
aWdodC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21v
dmUtYnktd29yZC12aXN1YWxseS13cm9uZy1sZWZ0LXJpZ2h0Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktd3Jv
bmctbGVmdC1yaWdodC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZ
UEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJyZXNvdXJjZXMvZXh0ZW5kLXNlbGVjdGlvbi5jc3Mi
IC8+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21vdmUtYnktd29yZC12aXN1YWxseS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0Pgorb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgc2VsLnNldFBvc2l0
aW9uKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkXzEnKSwgMCk7IAorICAgICAgICBzZWwubW9k
aWZ5KCJtb3ZlIiwgInJpZ2h0IiwgIndvcmQiKTsKKyAgICAgICAgaWYgKHNlbC5hbmNob3JPZmZz
ZXQgPT0gNSkKKyAgICAgICAgICAgIGxvZygiUEFTUyIpOyAgICAgICAKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbG9nKCJjdHJsL2FsdCtyaWdodCBmcm9tIGxlZnQgb2Yg16HXmNeWIHNob3Vs
ZCBtb3ZlIGN1cnNvciB0byBsZWZ0IG9mIG9wcS4gIiArCisgICAgICAgICAgICAgICAgIkJ1dCBp
dCBhY3R1YWxseSBtb3ZlZCB0byBwb3NpdGlvbiAiICsgc2VsLmFuY2hvck9mZnNldCk7CisgICAg
fSBmaW5hbGx5IHsKKyAgICAgICAgZmx1c2hMb2coKTsKKyAgICB9Cit9OworCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEVkaXRpbmdCZWhhdmlvcignd2lu
Jyk7Cit9Cis8L3NjcmlwdD4KKzx0aXRsZT53cm9uZyByZXN1bHQgYmVjYXVzZSBWaXNpYmxlUG9z
aXRpb24ubGVmdCgpL3JpZ2h0KCkgcmV0dXJucyB3cm9uZyByZXN1bHQ8L3RpdGxlPgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0TW92ZUJ5V29yZCI+Cis8ZGl2IGRpcj1sdHIgY29udGVu
dGVkaXRhYmxlPmFiYyDXqdep16kgZGVmIDxzcGFuIGlkPSJkXzEiIGRpcj1ydGw+16nXoNeRICBv
cHEg16HXmNeWPC9zcGFuPiAgdXZ3INep16nXqSB4eXo8L2Rpdj4KKzwvZGl2PgorPHVsIGlkPSJj
b25zb2xlIj48L3VsPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vcmVzb3VyY2VzL21vdmUtYnktd29yZC12aXN1YWxseS5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvbW92ZS1ieS13b3Jk
LXZpc3VhbGx5LmpzCShyZXZpc2lvbiAxMTA0NzMpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9yZXNvdXJjZXMvbW92ZS1ieS13b3JkLXZpc3VhbGx5LmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzUsNiArMTc1LDEwIEBAIGZ1bmN0aW9uIG1vdmVCeVdvcmRPbkV2ZXJ5Q2hhcihzZWws
IHRlc3QKICAgICB2YXIgcHJldk9mZnNldCA9IHNlbC5hbmNob3JPZmZzZXQ7CiAgICAgdmFyIHBy
ZXZOb2RlID0gc2VsLmFuY2hvck5vZGU7CiAKKyAgICAvLyBhZHZhbmNlIGlzIHVzZWQgdG8gc3Bl
Y2lhbCBoYW5kbGluZyB0aGUgY2FzZSB0aGF0IGFycm93IGtleSBpcyBub3QgYWJsZSB0byByZWFj
aCBjZXJ0YWluIHBvc2l0aW9uLgorICAgIC8vIEluIHdoaWNoIGNhc2UsIHdlIHdpbGwgbmVlZCB0
byBtYW51YWxseSBza2lwIHRoaXMgd29yZCBicmVhayBwb3NpdGlvbiBpbiBvcmRlciB0byByZXBv
cnQgY29ycmVjdCBsb2cuCisgICAgdmFyIGFkdmFuY2UgPSB0cnVlOyAKKwogICAgIHdoaWxlICgx
KSB7CiAgICAgICAgIHZhciBwb3NpdGlvbnMgPSBbXTsKICAgICAgICAgcG9zaXRpb25zLnB1c2go
eyBub2RlOiBzZWwuYW5jaG9yTm9kZSwgb2Zmc2V0OiBzZWwuYW5jaG9yT2Zmc2V0IH0pOwpAQCAt
MjA1LDkgKzIwOSwxNSBAQCBmdW5jdGlvbiBtb3ZlQnlXb3JkT25FdmVyeUNoYXIoc2VsLCB0ZXN0
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBwb3NpdGlvbiA9IHsgbm9kZTogc2VsLmFu
Y2hvck5vZGUsIG9mZnNldDogc2VsLmFuY2hvck9mZnNldCB9OwotICAgICAgICBpZiAod29yZEJy
ZWFrSW5kZXggPCB3b3JkQnJlYWtzLmxlbmd0aCAKKyAgICAgICAgaWYgKCh3b3JkQnJlYWtJbmRl
eCA8IHdvcmRCcmVha3MubGVuZ3RoIAogICAgICAgICAgICAgJiYgcG9zaXRpb25FcXVhbFRvV29y
ZEJyZWFrKHBvc2l0aW9uLCB3b3JkQnJlYWtzW3dvcmRCcmVha0luZGV4XSkpCisgICAgICAgICAg
ICB8fCAodGVzdCA9PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm90UmVhY2hhYmxlUG9zaXRp
b24iKQorICAgICAgICAgICAgJiYgc2VsLmFuY2hvck9mZnNldCA+IHdvcmRCcmVha3Nbd29yZEJy
ZWFrSW5kZXhdCisgICAgICAgICAgICAmJiBhZHZhbmNlCisgICAgICAgICAgICAmJiBzZWFyY2hE
aXJlY3Rpb24gPT0gInJpZ2h0IikpIHsKICAgICAgICAgICAgICsrd29yZEJyZWFrSW5kZXg7Cisg
ICAgICAgICAgICBhZHZhbmNlID0gZmFsc2U7CisgICAgICAgIH0KIAogICAgICAgICBwcmV2Tm9k
ZSA9IHNlbC5hbmNob3JOb2RlOwogICAgICAgICBwcmV2T2Zmc2V0ID0gc2VsLmFuY2hvck9mZnNl
dDsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lvbiAxMTA0NzMpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTUxMSw3
ICsxNTExLDYgQEAgZmFzdC9jc3Mvem9vbS1ib2R5LXNjcm9sbC5odG1sCiBmYXN0L3JlcGFpbnQv
bW92aW5nLXNoYWRvdy1vbi1jb250YWluZXIuaHRtbAogZmFzdC9yZXBhaW50L21vdmluZy1zaGFk
b3ctb24tcGF0aC5odG1sCiBjc3MzL2ZsZXhib3gvbGluZS13cmFwcGluZy5odG1sCi1lZGl0aW5n
L3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktbXVsdGktbGluZS5odG1sCiBmYXN0L2Js
b2NrL2Zsb2F0L292ZXJoYW5naW5nLXRhbGwtYmxvY2suaHRtbAogZmFzdC9jc3MvZm9udC1mYWNl
LWRhdGEtdXJpLmh0bWwKIGZhc3QvY3NzL2ZvbnQtZmFjZS1kb3dubG9hZC1lcnJvci5odG1sCkBA
IC0xNjA1LDMgKzE2MDQsMTkgQEAgZmFzdC9ldmVudHMvYXV0b3Njcm9sbC1pbi10ZXh0ZmllbGQu
aHRtbAogCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDgyNQog
cGxhdGZvcm0vZ3RrL3Njcm9sbGJhcnMvb3ZlcmZsb3ctc2Nyb2xsYmFyLWhvcml6b250YWwtd2hl
ZWwtc2Nyb2xsLmh0bWwKKworIyBGYWlsaW5nIHNpbmNlIGlzV29yZFRleHRCcmVhayBpcyBub3Qg
aW1wbGVtZW50ZWQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTEz
NgorZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWNyYXNoLXRlc3QtMS5o
dG1sCitlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktY3Jhc2gtdGVzdC0y
Lmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1jcmFzaC10ZXN0
LTMuaHRtbAorZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWNyYXNoLXRl
c3QtNC5odG1sCitlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktY3Jhc2gt
dGVzdC10ZXh0YXJlYS5odG1sCitlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFs
bHktZW1wdHktZGl2Lmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxs
eS1pbmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50Lmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9u
L21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1saW5lLmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9u
L21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1zcGFjZS5odG1sCitlZGl0aW5nL3NlbGVjdGlv
bi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktbnVsbC1ib3guaHRtbAorZWRpdGluZy9zZWxlY3Rpb24v
bW92ZS1ieS13b3JkLXZpc3VhbGx5LXNpbmdsZS1zcGFjZS1pbmxpbmUtZWxlbWVudC5odG1sCitl
ZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNlLW9uZS1l
bGVtZW50Lmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS10ZXh0
YXJlYS5odG1sCitlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktd3Jvbmct
bGVmdC1yaWdodC5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDEx
MDQ3MykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkK
QEAgLTc0MiwxNCArNzQyLDYgQEAgZWRpdGluZy9zZWxlY3Rpb24vbW9kaWZ5LXVwLW9uLXJ0bC13
cmFwcAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ3MjUKIGVk
aXRpbmcvc2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLmh0bWwKIAotIyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkyNjUKLWVkaXRpbmcvc2VsZWN0aW9uL21v
dmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1saW5lLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL21v
dmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1zcGFjZS5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9t
b3ZlLWJ5LXdvcmQtdmlzdWFsbHktbnVsbC1ib3guaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vbW92
ZS1ieS13b3JkLXZpc3VhbGx5LXNpbmdsZS1zcGFjZS1pbmxpbmUtZWxlbWVudC5odG1sCi1lZGl0
aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNlLW9uZS1lbGVt
ZW50Lmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUt
YmxvY2stcG9zaXRpb25lZC1lbGVtZW50Lmh0bWwKLQogIyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAj
CiAjIEZhaWxpbmcgZWRpdGluZy9zcGVsbGluZyB0ZXN0cwogIyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PSAjCkBAIC0yNzQwLDMgKzI3MzIsMTkgQEAgZmFzdC9ldmVudHMvZGlzcGF0Y2gtbWVzc2FnZS1z
dHJpbmctZGF0YQogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1
NjgKIHBsdWdpbnMvbW91c2UtY2xpY2stcGx1Z2luLWNsZWFycy1zZWxlY3Rpb24uaHRtbAogZmFz
dC9ldmVudHMvbW91c2UtcmVsYXRpdmUtcG9zaXRpb24uaHRtbAorCisjIEZhaWxpbmcgc2luY2Ug
aXNXb3JkVGV4dEJyZWFrIGlzIG5vdCBpbXBsZW1lbnRlZC4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgxMTM2CitlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQt
dmlzdWFsbHktY3Jhc2gtdGVzdC0xLmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29y
ZC12aXN1YWxseS1jcmFzaC10ZXN0LTIuaHRtbAorZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13
b3JkLXZpc3VhbGx5LWNyYXNoLXRlc3QtMy5odG1sCitlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5
LXdvcmQtdmlzdWFsbHktY3Jhc2gtdGVzdC00Lmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9uL21vdmUt
Ynktd29yZC12aXN1YWxseS1jcmFzaC10ZXN0LXRleHRhcmVhLmh0bWwKK2VkaXRpbmcvc2VsZWN0
aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1lbXB0eS1kaXYuaHRtbAorZWRpdGluZy9zZWxlY3Rp
b24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1ibG9jay1wb3NpdGlvbmVkLWVsZW1lbnQu
aHRtbAorZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLWxpbmUu
aHRtbAorZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLXNwYWNl
Lmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1udWxsLWJveC5o
dG1sCitlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNl
LWlubGluZS1lbGVtZW50Lmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1
YWxseS1zaW5nbGUtc3BhY2Utb25lLWVsZW1lbnQuaHRtbAorZWRpdGluZy9zZWxlY3Rpb24vbW92
ZS1ieS13b3JkLXZpc3VhbGx5LXRleHRhcmVhLmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9uL21vdmUt
Ynktd29yZC12aXN1YWxseS13cm9uZy1sZWZ0LXJpZ2h0Lmh0bWwK
</data>
<flag name="review"
          id="135444"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132101</attachid>
            <date>2012-03-15 12:22:57 -0700</date>
            <delta_ts>2012-03-15 14:27:57 -0700</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>78856.v4</filename>
            <type>text/plain</type>
            <size>80231</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDc3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDEyLTAzLTE0ICBYaWFvbWVp
IEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2luZyBJQ1UgYnJlYWsgaXRlcmF0
b3IgdG8gc2ltcGxpZnkgdmlzdWFsIHdvcmQgbW92ZW1lbnQgaW1wbGVtZW50YXRpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVs
aWVzIG9uIElDVSB3b3JkIGJyZWFrIGl0ZXJhdG9yIGFuZCBjdXJzb3IgdmlzdWFsIG1vdmVtZW50
IGJ5IGNoYXJhY3RlciB0byBnZXQgdGhlIHdvcmQgYnJlYWsKKyAgICAgICAgcG9zaXRpb24gaW4g
dmlzdWFsIG9yZGVyLiBJdCByZWR1Y2VzIHRoZSBjb21wbGV4aXR5IG9mIG9sZCBpbXBsZW1lbnRh
dGlvbi4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlz
dWFsbHktd3JvbmctbGVmdC1yaWdodC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcDogRXhjbHVkZSBXaW5DRSBmcm9tIHZpc3VhbCB3b3JkIG1vdmVtZW50IHNpbmNl
IGlzV29yZFRleHRCcmVhayBpcyBub3QgaW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQpOgorICAgICAgICAqIGVkaXRpbmcvdmlzaWJs
ZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnByZXZp
b3VzTGVhZldpdGhTYW1lRWRpdGFiaWxpdHkpOiBKdXN0IG1vdmluZyB0byB0aGUgdG9wIHdpdGhv
dXQgZnVuY3Rpb25hbGl0eSBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdOb2Rl
V2l0aE5vbklubGluZVJlbmRlcmVyKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpuZXh0TGVh
ZldpdGhTYW1lRWRpdGFiaWxpdHkpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnByZXZpb3Vz
Um9vdElubGluZUJveCk6IHJldHVybiBwcmV2aW91cyBSb290SW5saW5lQm94IHdoaWNoIGlzIGlu
IGRpZmZlcmVudCByZW5kZXJlci4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRSb290SW5saW5lQm94
KTogcmV0dXJuIG5leHQgUm9vdElubGluZUJveCB3aGljaCBpcyBpbiBkaWZmZXJlbnQgcmVuZGVy
ZXIuCisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0JveEluT25lTGluZSk6IHJldHVybnMgbG9n
aWNhbGx5IHByZXZpb3VzIGJveCBpbiBvbmUgbGluZS4KKyAgICAgICAgKFdlYkNvcmU6OmxvZ2lj
YWxseVByZXZpb3VzQm94KTogcmV0dXJucyBsb2dpY2FsbHkgcHJldmlvdXMgYm94LgorICAgICAg
ICAoV2ViQ29yZTo6bmV4dEJveEluT25lTGluZSk6IHJldHVybnMgbG9naWNhbGx5IG5leHQgYm94
IGluIG9uZSBsaW5lLgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5TmV4dEJveCk6IHJldHVy
bnMgbG9naWNhbGx5IG5leHQgYm94LgorICAgICAgICAoV2ViQ29yZTo6d29yZEJyZWFrSXRlcmF0
b3JGb3JNaW5PZmZzZXRCb3VuZGFyeSk6IGNyZWF0ZSB3b3JkIGJyZWFrIGl0ZXJhdG9yIGZvciBw
b3NpdGlvbiB0aGF0IGlzIGEgYm94J3MgbWluIG9mZnNldC4KKyAgICAgICAgKFdlYkNvcmU6Ondv
cmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0Qm91bmRhcnkpOiBjcmVhdGUgd29yZCBicmVhayBp
dGVyYXRvciBmb3IgcG9zaXRpb24gdGhhdCBpcyBhIGJveCdzIG1heCBvZmZzZXQuCisgICAgICAg
IChXZWJDb3JlOjpsb2dpY2FsbHlTdGFydE9mV29yZCk6IHJldHVybiB3aGV0aGVyIGEgcG9zaXRp
b24gaXMgbG9naWNhbGx5IHN0YXJ0IG9mIHdvcmQuCisgICAgICAgIChXZWJDb3JlOjpsb2dpY2Fs
bHlFbmRPZldvcmQpOiByZXR1cm4gd2hldGhlciBhIHBvc2l0aW9uIGlzIGxvZ2ljYWxseSBlbmQg
b2Ygd29yZC4KKyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbFdvcmRQb3NpdGlvbik6IHJldHVybnMg
dGhlIHZpc3VhbCBsZWZ0IG9yIHJpZ2h0IHdvcmQgcG9zaXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpsZWZ0V29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0V29yZFBvc2l0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg6IEFkZCBpc1dv
cmRUZXh0QnJlYWsoKS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNXb3JkVGV4
dEJyZWFrKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvZ3Rr
L1RleHRCcmVha0l0ZXJhdG9yR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzV29yZFRleHRC
cmVhayk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3F0L1Rl
eHRCcmVha0l0ZXJhdG9yUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNXb3JkVGV4dEJyZWFr
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvd2luY2UvVGV4
dEJyZWFrSXRlcmF0b3JXaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1dvcmRUZXh0QnJl
YWspOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDMtMTQgIFRvbnkgQ2hhbmcgIDx0b255
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBmaXggbmVnYXRpdmUgZmxleGluZyBpbiBhdXRvIHNp
emVkIGNvbHVtbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwCShyZXZpc2lvbiAxMTA0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQyLDExICs2NDIsMTQgQEAgVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAgICAgcG9zID0gVmlzaWJs
ZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5y
aWdodCh0cnVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Cisj
aWYgIU9TKFdJTkNFKQorICAgICAgICAvLyBWaXN1YWwgd29yZCBtb3ZlbWVudCByZWxpZXMgb24g
aXNXb3JkVGV4dEJyZWFrIHdoaWNoIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBXaW5DRS4KICAgICAg
ICAgaWYgKHZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoKQogICAgICAgICAgICAgfHwgKG1fZnJh
bWUgJiYgbV9mcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxkTW92ZUxlZnRSaWdodEJ5
V29yZEluVmlzdWFsT3JkZXIoKSkpIHsKICAgICAgICAgICAgIHBvcyA9IHJpZ2h0V29yZFBvc2l0
aW9uKFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZm
aW5pdHkoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIGNh
c2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICBjYXNlIExpbmVHcmFudWxhcml0eToKICAgICBj
YXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgpAQCAtODA5LDExICs4MTIsMTMgQEAgVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAgICAgcG9zID0gVmlzaWJs
ZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5s
ZWZ0KHRydWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyNp
ZiAhT1MoV0lOQ0UpCiAgICAgICAgIGlmICh2aXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKCkKICAg
ICAgICAgICAgIHx8IChtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNo
b3VsZE1vdmVMZWZ0UmlnaHRCeVdvcmRJblZpc3VhbE9yZGVyKCkpKSB7CiAgICAgICAgICAgICBw
b3MgPSBsZWZ0V29yZFBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQo
KSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KKyNlbmRpZgogICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKICAgICBjYXNlIExpbmVH
cmFudWxhcml0eToKICAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCShyZXZpc2lvbiAxMTA0NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw2ICs0OSwzODAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAKK3N0YXRpYyBOb2RlKiBw
cmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KE5vZGUqIG5vZGUsIEVkaXRhYmxlVHlwZSBl
ZGl0YWJsZVR5cGUpCit7CisgICAgYm9vbCBlZGl0YWJsZSA9IG5vZGUtPnJlbmRlcmVySXNFZGl0
YWJsZShlZGl0YWJsZVR5cGUpOworICAgIG5vZGUgPSBub2RlLT5wcmV2aW91c0xlYWZOb2RlKCk7
CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgaWYgKGVkaXRhYmxlID09IG5vZGUtPnJlbmRl
cmVySXNFZGl0YWJsZShlZGl0YWJsZVR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIG5vZGU7Cisg
ICAgICAgIG5vZGUgPSBub2RlLT5wcmV2aW91c0xlYWZOb2RlKCk7CisgICAgfQorICAgIHJldHVy
biAwOworfQorCitzdGF0aWMgTm9kZSogZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJl
cihOb2RlKiBub2RlKQoreworICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9k
ZSgpKSB7CisgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpICYmICFub2RlLT5yZW5kZXJlcigp
LT5pc0lubGluZSgpKQorICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgfQorICAgIHJldHVy
biAwOworfQorCitzdGF0aWMgTm9kZSogbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KE5vZGUq
IG5vZGUsIGludCBvZmZzZXQpCit7CisgICAgYm9vbCBlZGl0YWJsZSA9IG5vZGUtPnJlbmRlcmVy
SXNFZGl0YWJsZSgpOworICAgIEFTU0VSVChvZmZzZXQgPj0gMCk7CisgICAgTm9kZSogY2hpbGQg
PSBub2RlLT5jaGlsZE5vZGUob2Zmc2V0KTsKKyAgICBub2RlID0gY2hpbGQgPyBjaGlsZC0+bmV4
dExlYWZOb2RlKCkgOiBub2RlLT5sYXN0RGVzY2VuZGFudCgpLT5uZXh0TGVhZk5vZGUoKTsKKyAg
ICB3aGlsZSAobm9kZSkgeworICAgICAgICBpZiAoZWRpdGFibGUgPT0gbm9kZS0+cmVuZGVyZXJJ
c0VkaXRhYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAgICAgICAgbm9kZSA9IG5v
ZGUtPm5leHRMZWFmTm9kZSgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIE5v
ZGUqIG5leHRMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShOb2RlKiBub2RlLCBFZGl0YWJsZVR5cGUg
ZWRpdGFibGVUeXBlID0gQ29udGVudElzRWRpdGFibGUpCit7CisgICAgaWYgKCFub2RlKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBib29sIGVkaXRhYmxlID0gbm9kZS0+cmVuZGVyZXJJ
c0VkaXRhYmxlKGVkaXRhYmxlVHlwZSk7CisgICAgbm9kZSA9IG5vZGUtPm5leHRMZWFmTm9kZSgp
OworICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgIGlmIChlZGl0YWJsZSA9PSBub2RlLT5yZW5k
ZXJlcklzRWRpdGFibGUoZWRpdGFibGVUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiBub2RlOwor
ICAgICAgICBub2RlID0gbm9kZS0+bmV4dExlYWZOb2RlKCk7CisgICAgfQorICAgIHJldHVybiAw
OworfQorCisvLyBGSVhNRTogY29uc29saWRhdGUgd2l0aCBjb2RlIGluIHByZXZpb3VzTGluZVBv
c2l0aW9uLgorc3RhdGljIGNvbnN0IFJvb3RJbmxpbmVCb3gqIHByZXZpb3VzUm9vdElubGluZUJv
eChjb25zdCBJbmxpbmVCb3gqIGJveCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9z
aXRpb24pCit7CisgICAgTm9kZSogaGlnaGVzdFJvb3QgPSBoaWdoZXN0RWRpdGFibGVSb290KHZp
c2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLCBDb250ZW50SXNFZGl0YWJsZSk7CisgICAg
Tm9kZSogbm9kZSA9IGJveC0+cmVuZGVyZXIoKS0+bm9kZSgpOworICAgIE5vZGUqIGVuY2xvc2lu
Z0Jsb2NrTm9kZSA9IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5lUmVuZGVyZXIobm9kZSk7Cisg
ICAgTm9kZSogcHJldmlvdXNOb2RlID0gcHJldmlvdXNMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShu
b2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisKKyAgICB3aGlsZSAocHJldmlvdXNOb2RlICYmIGVu
Y2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKHBy
ZXZpb3VzTm9kZSkpCisgICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTGVhZldpdGhTYW1l
RWRpdGFiaWxpdHkocHJldmlvdXNOb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisgIAorICAgIHdo
aWxlIChwcmV2aW91c05vZGUgJiYgIXByZXZpb3VzTm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAg
ICAgICAgaWYgKGhpZ2hlc3RFZGl0YWJsZVJvb3QoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2Rl
KHByZXZpb3VzTm9kZSksIENvbnRlbnRJc0VkaXRhYmxlKSAhPSBoaWdoZXN0Um9vdCkKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIFBvc2l0aW9uIHBvcyA9IHByZXZpb3VzTm9kZS0+aGFz
VGFnTmFtZShiclRhZykgPyBwb3NpdGlvbkJlZm9yZU5vZGUocHJldmlvdXNOb2RlKSA6CisgICAg
ICAgICAgICBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocHJldmlvdXNOb2RlLCBjYXJldE1h
eE9mZnNldChwcmV2aW91c05vZGUpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChwb3MuaXNDYW5k
aWRhdGUoKSkgeworICAgICAgICAgICAgUmVuZGVyZWRQb3NpdGlvbiByZW5kZXJlZFBvcyhwb3Ms
IERPV05TVFJFQU0pOworICAgICAgICAgICAgUm9vdElubGluZUJveCogcm9vdCA9IHJlbmRlcmVk
UG9zLnJvb3RCb3goKTsKKyAgICAgICAgICAgIGlmIChyb290KQorICAgICAgICAgICAgICAgIHJl
dHVybiByb290OworICAgICAgICB9CisKKyAgICAgICAgcHJldmlvdXNOb2RlID0gcHJldmlvdXNM
ZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShwcmV2aW91c05vZGUsIENvbnRlbnRJc0VkaXRhYmxlKTsK
KyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBSb290SW5saW5lQm94KiBu
ZXh0Um9vdElubGluZUJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB2aXNpYmxlUG9zaXRpb24pCit7CisgICAgTm9kZSogaGlnaGVzdFJvb3QgPSBoaWdoZXN0
RWRpdGFibGVSb290KHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLCBDb250ZW50SXNF
ZGl0YWJsZSk7CisgICAgTm9kZSogbm9kZSA9IGJveC0+cmVuZGVyZXIoKS0+bm9kZSgpOworICAg
IE5vZGUqIGVuY2xvc2luZ0Jsb2NrTm9kZSA9IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5lUmVu
ZGVyZXIobm9kZSk7CisgICAgTm9kZSogbmV4dE5vZGUgPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFi
aWxpdHkobm9kZSwgQ29udGVudElzRWRpdGFibGUpOworICAgIHdoaWxlIChuZXh0Tm9kZSAmJiBl
bmNsb3NpbmdCbG9ja05vZGUgPT0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihu
ZXh0Tm9kZSkpCisgICAgICAgIG5leHROb2RlID0gbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5
KG5leHROb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisgIAorICAgIHdoaWxlIChuZXh0Tm9kZSAm
JiAhbmV4dE5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIGlmIChoaWdoZXN0RWRpdGFi
bGVSb290KGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShuZXh0Tm9kZSksIENvbnRlbnRJc0Vk
aXRhYmxlKSAhPSBoaWdoZXN0Um9vdCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIFBv
c2l0aW9uIHBvczsKKyAgICAgICAgcG9zID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5l
eHROb2RlLCBjYXJldE1pbk9mZnNldChuZXh0Tm9kZSkpOworICAgICAgICAKKyAgICAgICAgaWYg
KHBvcy5pc0NhbmRpZGF0ZSgpKSB7CisgICAgICAgICAgICBSZW5kZXJlZFBvc2l0aW9uIHJlbmRl
cmVkUG9zKHBvcywgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICBSb290SW5saW5lQm94KiByb290
ID0gcmVuZGVyZWRQb3Mucm9vdEJveCgpOworICAgICAgICAgICAgaWYgKHJvb3QpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJvb3Q7CisgICAgICAgIH0KKworICAgICAgICBuZXh0Tm9kZSA9IG5l
eHRMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShuZXh0Tm9kZSwgQ29udGVudElzRWRpdGFibGUpOwor
ICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IElubGluZVRleHRCb3gqIHBy
ZXZpb3VzQm94SW5MaW5lKGNvbnN0IFJvb3RJbmxpbmVCb3gqIHJvb3QsIGNvbnN0IElubGluZVRl
eHRCb3gqIGJveCwgVmVjdG9yPElubGluZUJveCo+JiBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcikK
K3sKKyAgICBpZiAoIXJvb3QpCisgICAgICAgIHJldHVybiAwOworCisgICAgbGVhZkJveGVzSW5M
b2dpY2FsT3JkZXIuY2xlYXIoKTsKKyAgICByb290LT5jb2xsZWN0TGVhZkJveGVzSW5Mb2dpY2Fs
T3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworCisgICAgLy8gSWYgYm94IGlzIG51bGws
IHJvb3QgaXMgYm94J3MgcHJldmlvdXMgUm9vdElubGluZUJveCwgYW5kIHByZXZpb3VzQm94IGlz
IHRoZSBsYXN0IGxvZ2ljYWwgYm94IGluIHJvb3QuCisgICAgaW50IHByZXZpb3VzQm94SW5kZXgg
PSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXplKCkgLSAxOworICAgIGlmIChib3gpIHsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXpl
KCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGJveCA9PSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRl
cltpXSkgeworICAgICAgICAgICAgICAgIHByZXZpb3VzQm94SW5kZXggPSBpIC0gMTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gICAgCisK
KyAgICBmb3IgKGludCBqID0gcHJldmlvdXNCb3hJbmRleDsgaiA+PSAwOyAtLWopIHsKKyAgICAg
ICAgaWYgKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2pdLT5pc0lubGluZVRleHRCb3goKSkKKyAg
ICAgICAgICAgIHJldHVybiB0b0lubGluZVRleHRCb3gobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJb
al0pOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgY29uc3QgSW5saW5lVGV4
dEJveCogbG9naWNhbGx5UHJldmlvdXNCb3goY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxl
UG9zaXRpb24sIGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gsIGJvb2wmIHByZXZpb3VzQm94
SW5EaWZmZXJlbnRCbG9jaykKK3sKKyAgICBjb25zdCBJbmxpbmVCb3gqIHN0YXJ0Qm94ID0gdGV4
dEJveDsKKyAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7CisK
KyAgICBjb25zdCBJbmxpbmVUZXh0Qm94KiBwcmV2aW91c0JveCA9IHByZXZpb3VzQm94SW5MaW5l
KHN0YXJ0Qm94LT5yb290KCksIHRleHRCb3gsIGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKKyAg
ICBpZiAocHJldmlvdXNCb3gpCisgICAgICAgIHJldHVybiBwcmV2aW91c0JveDsKKworICAgIHBy
ZXZpb3VzQm94ID0gcHJldmlvdXNCb3hJbkxpbmUoc3RhcnRCb3gtPnJvb3QoKS0+cHJldlJvb3RC
b3goKSwgMCwgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworICAgIGlmIChwcmV2aW91c0JveCkK
KyAgICAgICAgcmV0dXJuIHByZXZpb3VzQm94OworCisgICAgd2hpbGUgKDEpIHsgCisgICAgICAg
IGNvbnN0IFJvb3RJbmxpbmVCb3gqIHByZXZpb3VzUm9vdCA9IHByZXZpb3VzUm9vdElubGluZUJv
eChzdGFydEJveCwgdmlzaWJsZVBvc2l0aW9uKTsKKyAgICAgICAgaWYgKCFwcmV2aW91c1Jvb3Qp
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBwcmV2aW91c0JveCA9IHByZXZpb3VzQm94
SW5MaW5lKHByZXZpb3VzUm9vdCwgMCwgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworICAgICAg
ICBpZiAocHJldmlvdXNCb3gpIHsKKyAgICAgICAgICAgIHByZXZpb3VzQm94SW5EaWZmZXJlbnRC
bG9jayA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNCb3g7CisgICAgICAgIH0K
KworICAgICAgICBpZiAobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpKQorICAgICAgICAg
ICAgc3RhcnRCb3ggPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlclswXTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgY29u
c3QgSW5saW5lVGV4dEJveCogbmV4dEJveEluTGluZShjb25zdCBSb290SW5saW5lQm94KiByb290
LCBjb25zdCBJbmxpbmVUZXh0Qm94KiBib3gsIFZlY3RvcjxJbmxpbmVCb3gqPiYgbGVhZkJveGVz
SW5Mb2dpY2FsT3JkZXIpCit7CisgICAgaWYgKCFyb290KQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLmNsZWFyKCk7CisgICAgcm9vdC0+Y29sbGVjdExl
YWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKKworICAgIC8v
IElmIGJveCBpcyBudWxsLCByb290IGlzIGJveCdzIG5leHQgUm9vdElubGluZUJveCwgYW5kIG5l
eHRCb3ggaXMgdGhlIGZpcnN0IGxvZ2ljYWwgYm94IGluIHJvb3QuCisgICAgLy8gT3RoZXJ3aXNl
LCByb290IGlzIGJveCdzIFJvb3RJbmxpbmVCb3gsIGFuZCBuZXh0Qm94IGlzIHRoZSBuZXh0IGxv
Z2ljYWwgYm94IGluIHRoZSBzYW1lIGxpbmUuCisgICAgc2l6ZV90IG5leHRCb3hJbmRleCA9IDA7
CisgICAgaWYgKGJveCkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlYWZCb3hl
c0luTG9naWNhbE9yZGVyLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoYm94ID09IGxl
YWZCb3hlc0luTG9naWNhbE9yZGVyW2ldKSB7CisgICAgICAgICAgICAgICAgbmV4dEJveEluZGV4
ID0gaSArIDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9ICAgIAorCisgICAgZm9yIChzaXplX3QgaiA9IG5leHRCb3hJbmRleDsgaiA8IGxl
YWZCb3hlc0luTG9naWNhbE9yZGVyLnNpemUoKTsgKytqKSB7CisgICAgICAgIGlmIChsZWFmQm94
ZXNJbkxvZ2ljYWxPcmRlcltqXS0+aXNJbmxpbmVUZXh0Qm94KCkpCisgICAgICAgICAgICByZXR1
cm4gdG9JbmxpbmVUZXh0Qm94KGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2pdKTsKKyAgICB9CisK
KyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IElubGluZVRleHRCb3gqIGxvZ2ljYWxs
eU5leHRCb3goY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGNvbnN0IElu
bGluZVRleHRCb3gqIHRleHRCb3gsIGJvb2wmIG5leHRCb3hJbkRpZmZlcmVudEJsb2NrKQorewor
ICAgIGNvbnN0IElubGluZUJveCogc3RhcnRCb3ggPSB0ZXh0Qm94OworICAgIFZlY3RvcjxJbmxp
bmVCb3gqPiBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcjsKKworICAgIGNvbnN0IElubGluZVRleHRC
b3gqIG5leHRCb3ggPSBuZXh0Qm94SW5MaW5lKHN0YXJ0Qm94LT5yb290KCksIHRleHRCb3gsIGxl
YWZCb3hlc0luTG9naWNhbE9yZGVyKTsKKyAgICBpZiAobmV4dEJveCkKKyAgICAgICAgcmV0dXJu
IG5leHRCb3g7CisKKyAgICBuZXh0Qm94ID0gbmV4dEJveEluTGluZShzdGFydEJveC0+cm9vdCgp
LT5uZXh0Um9vdEJveCgpLCAwLCBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcik7CisgICAgaWYgKG5l
eHRCb3gpCisgICAgICAgIHJldHVybiBuZXh0Qm94OworCisgICAgd2hpbGUgKDEpIHsgCisgICAg
ICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIG5leHRSb290ID0gbmV4dFJvb3RJbmxpbmVCb3goc3Rh
cnRCb3gsIHZpc2libGVQb3NpdGlvbik7CisgICAgICAgIGlmICghbmV4dFJvb3QpCisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBuZXh0Qm94ID0gbmV4dEJveEluTGluZShuZXh0Um9vdCwg
MCwgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworICAgICAgICBpZiAobmV4dEJveCkgeworICAg
ICAgICAgICAgbmV4dEJveEluRGlmZmVyZW50QmxvY2sgPSB0cnVlOworICAgICAgICAgICAgcmV0
dXJuIG5leHRCb3g7CisgICAgICAgIH0KKworICAgICAgICBpZiAobGVhZkJveGVzSW5Mb2dpY2Fs
T3JkZXIuc2l6ZSgpKQorICAgICAgICAgICAgc3RhcnRCb3ggPSBsZWFmQm94ZXNJbkxvZ2ljYWxP
cmRlclswXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJl
dHVybiAwOworfQorCitzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9y
Rm9yTWluT2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRp
b24sIGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gsCisgICAgIGludCYgcHJldmlvdXNCb3hM
ZW5ndGgsIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRCbG9jaykKK3sKKyAgICBwcmV2aW91
c0JveEluRGlmZmVyZW50QmxvY2sgPSBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhl
IGNhc2Ugd2hlbiB3ZSBkb24ndCBoYXZlIGFuIGlubGluZSB0ZXh0IGJveC4KKyAgICBjb25zdCBJ
bmxpbmVUZXh0Qm94KiBwcmV2aW91c0JveCA9IGxvZ2ljYWxseVByZXZpb3VzQm94KHZpc2libGVQ
b3NpdGlvbiwgdGV4dEJveCwgcHJldmlvdXNCb3hJbkRpZmZlcmVudEJsb2NrKTsKKworICAgIGlu
dCBsZW4gPSAwOworICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOworICAgIGlmIChwcmV2
aW91c0JveCkgeworICAgICAgICBwcmV2aW91c0JveExlbmd0aCA9IHByZXZpb3VzQm94LT5sZW4o
KTsKKyAgICAgICAgc3RyaW5nLmFwcGVuZChwcmV2aW91c0JveC0+dGV4dFJlbmRlcmVyKCktPnRl
eHQoKS0+Y2hhcmFjdGVycygpICsgcHJldmlvdXNCb3gtPnN0YXJ0KCksIHByZXZpb3VzQm94TGVu
Z3RoKTsgCisgICAgICAgIGxlbiArPSBwcmV2aW91c0JveExlbmd0aDsKKyAgICB9CisgICAgc3Ry
aW5nLmFwcGVuZCh0ZXh0Qm94LT50ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkg
KyB0ZXh0Qm94LT5zdGFydCgpLCB0ZXh0Qm94LT5sZW4oKSk7CisgICAgbGVuICs9IHRleHRCb3gt
PmxlbigpOworCisgICAgcmV0dXJuIHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5kYXRhKCksIGxl
bik7Cit9IAorCitzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9y
TWF4T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24s
IGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gsIGJvb2wmIG5leHRCb3hJbkRpZmZlcmVudEJs
b2NrKQoreworICAgIG5leHRCb3hJbkRpZmZlcmVudEJsb2NrID0gZmFsc2U7CisKKyAgICAvLyBG
SVhNRTogSGFuZGxlIHRoZSBjYXNlIHdoZW4gd2UgZG9uJ3QgaGF2ZSBhbiBpbmxpbmUgdGV4dCBi
b3guCisgICAgY29uc3QgSW5saW5lVGV4dEJveCogbmV4dEJveCA9IGxvZ2ljYWxseU5leHRCb3go
dmlzaWJsZVBvc2l0aW9uLCB0ZXh0Qm94LCBuZXh0Qm94SW5EaWZmZXJlbnRCbG9jayk7CisKKyAg
ICBpbnQgbGVuID0gMDsKKyAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IHN0cmluZzsKKyAgICBzdHJp
bmcuYXBwZW5kKHRleHRCb3gtPnRleHRSZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSAr
IHRleHRCb3gtPnN0YXJ0KCksIHRleHRCb3gtPmxlbigpKTsKKyAgICBsZW4gKz0gdGV4dEJveC0+
bGVuKCk7CisgICAgaWYgKG5leHRCb3gpIHsKKyAgICAgICAgc3RyaW5nLmFwcGVuZChuZXh0Qm94
LT50ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBuZXh0Qm94LT5zdGFydCgp
LCBuZXh0Qm94LT5sZW4oKSk7IAorICAgICAgICBsZW4gKz0gbmV4dEJveC0+bGVuKCk7CisgICAg
fQorCisgICAgcmV0dXJuIHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5kYXRhKCksIGxlbik7Cit9
IAorCitzdGF0aWMgYm9vbCBpc0xvZ2ljYWxTdGFydE9mV29yZChUZXh0QnJlYWtJdGVyYXRvciog
aXRlciwgaW50IHBvc2l0aW9uLCBib29sIGhhcmRMaW5lQnJlYWspCit7CisgICAgYm9vbCBib3Vu
ZGFyeSA9IGhhcmRMaW5lQnJlYWsgPyB0cnVlIDogaXNUZXh0QnJlYWsoaXRlciwgcG9zaXRpb24p
OworICAgIGlmICghYm91bmRhcnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHRleHRC
cmVha0ZvbGxvd2luZyhpdGVyLCBwb3NpdGlvbik7CisgICAgLy8gaXNXb3JkVGV4dEJyZWFrIHJl
dHVybnMgdHJ1ZSBhZnRlciBtb3ZpbmcgYWNyb3NzIGEgd29yZCBhbmQgZmFsc2UgYWZ0ZXIgbW92
aW5nIGFjcm9zcyBhIHB1bmN0dWF0aW9uL3NwYWNlLgorICAgIHJldHVybiBpc1dvcmRUZXh0QnJl
YWsoaXRlcik7Cit9CisKK3N0YXRpYyBib29sIGlzbG9naWNhbEVuZE9mV29yZChUZXh0QnJlYWtJ
dGVyYXRvciogaXRlciwgaW50IHBvc2l0aW9uLCBib29sIGhhcmRMaW5lQnJlYWspCit7CisgICAg
Ym9vbCBib3VuZGFyeSA9IGlzVGV4dEJyZWFrKGl0ZXIsIHBvc2l0aW9uKTsKKyAgICByZXR1cm4g
KGhhcmRMaW5lQnJlYWsgfHwgYm91bmRhcnkpICYmIGlzV29yZFRleHRCcmVhayhpdGVyKTsKK30K
KworZW51bSBDdXJzb3JNb3ZlbWVudERpcmVjdGlvbiB7IE1vdmVMZWZ0LCBNb3ZlUmlnaHQgfTsK
Kworc3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXN1YWxXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIEN1cnNvck1vdmVtZW50RGlyZWN0aW9uIGRpcmVj
dGlvbikKK3sKKyAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7CisKKyAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9u
ID0gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxl
bnQoKSk7CisgICAgSW5saW5lQm94KiBwcmV2aW91c2x5VmlzaXRlZEJveCA9IDA7CisgICAgVmlz
aWJsZVBvc2l0aW9uIGN1cnJlbnQgPSB2aXNpYmxlUG9zaXRpb247CisgICAgVGV4dEJyZWFrSXRl
cmF0b3IqIGl0ZXIgPSAwOworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgVmlzaWJsZVBvc2l0
aW9uIGFkamFjZW50Q2hhcmFjdGVyUG9zaXRpb24gPSBkaXJlY3Rpb24gPT0gTW92ZVJpZ2h0ID8g
Y3VycmVudC5yaWdodCh0cnVlKSA6IGN1cnJlbnQubGVmdCh0cnVlKTsgCisgICAgICAgIGlmIChh
ZGphY2VudENoYXJhY3RlclBvc2l0aW9uID09IGN1cnJlbnQgfHwgYWRqYWNlbnRDaGFyYWN0ZXJQ
b3NpdGlvbi5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsK
KyAgICAKKyAgICAgICAgSW5saW5lQm94KiBib3g7CisgICAgICAgIGludCBvZmZzZXRJbkJveDsK
KyAgICAgICAgYWRqYWNlbnRDaGFyYWN0ZXJQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmdldElu
bGluZUJveEFuZE9mZnNldChVUFNUUkVBTSwgYm94LCBvZmZzZXRJbkJveCk7CisgICAgCisgICAg
ICAgIGlmICghYm94KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICghYm94LT5pc0lu
bGluZVRleHRCb3goKSkgeworICAgICAgICAgICAgY3VycmVudCA9IGFkamFjZW50Q2hhcmFjdGVy
UG9zaXRpb247CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIElu
bGluZVRleHRCb3gqIHRleHRCb3ggPSB0b0lubGluZVRleHRCb3goYm94KTsKKyAgICAgICAgaW50
IHByZXZpb3VzQm94TGVuZ3RoID0gMDsKKyAgICAgICAgYm9vbCBwcmV2aW91c0JveEluRGlmZmVy
ZW50QmxvY2sgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBuZXh0Qm94SW5EaWZmZXJlbnRCbG9jayA9
IGZhbHNlOworICAgICAgICBib29sIG1vdmluZ0ludG9OZXdCb3ggPSBwcmV2aW91c2x5VmlzaXRl
ZEJveCAhPSBib3g7CisKKyAgICAgICAgaWYgKG9mZnNldEluQm94ID09IGJveC0+Y2FyZXRNaW5P
ZmZzZXQoKSkKKyAgICAgICAgICAgIGl0ZXIgPSB3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNl
dEJvdW5kYXJ5KHZpc2libGVQb3NpdGlvbiwgdGV4dEJveCwgcHJldmlvdXNCb3hMZW5ndGgsIHBy
ZXZpb3VzQm94SW5EaWZmZXJlbnRCbG9jayk7CisgICAgICAgIGVsc2UgaWYgKG9mZnNldEluQm94
ID09IGJveC0+Y2FyZXRNYXhPZmZzZXQoKSkKKyAgICAgICAgICAgIGl0ZXIgPSB3b3JkQnJlYWtJ
dGVyYXRvckZvck1heE9mZnNldEJvdW5kYXJ5KHZpc2libGVQb3NpdGlvbiwgdGV4dEJveCwgbmV4
dEJveEluRGlmZmVyZW50QmxvY2spOworICAgICAgICBlbHNlIGlmIChtb3ZpbmdJbnRvTmV3Qm94
KSB7CisgICAgICAgICAgICBpdGVyID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dEJveC0+dGV4dFJl
bmRlcmVyKCktPnRleHQoKS0+Y2hhcmFjdGVycygpICsgdGV4dEJveC0+c3RhcnQoKSwgdGV4dEJv
eC0+bGVuKCkpOworICAgICAgICAgICAgcHJldmlvdXNseVZpc2l0ZWRCb3ggPSBib3g7CisgICAg
ICAgIH0KKworICAgICAgICB0ZXh0QnJlYWtGaXJzdChpdGVyKTsKKyAgICAgICAgaW50IG9mZnNl
dEluSXRlcmF0b3IgPSBvZmZzZXRJbkJveCAtIHRleHRCb3gtPnN0YXJ0KCkgKyBwcmV2aW91c0Jv
eExlbmd0aDsKKworICAgICAgICBib29sIGlzV29yZEJyZWFrOworICAgICAgICBpZiAoYm94LT5k
aXJlY3Rpb24oKSA9PSBibG9ja0RpcmVjdGlvbikgeworICAgICAgICAgICAgYm9vbCBsb2dpY2Fs
U3RhcnRJblJlbmRlcmVyID0gb2Zmc2V0SW5Cb3ggPT0gc3RhdGljX2Nhc3Q8aW50Pih0ZXh0Qm94
LT5zdGFydCgpKSAmJiBwcmV2aW91c0JveEluRGlmZmVyZW50QmxvY2s7CisgICAgICAgICAgICBp
c1dvcmRCcmVhayA9IGlzTG9naWNhbFN0YXJ0T2ZXb3JkKGl0ZXIsIG9mZnNldEluSXRlcmF0b3Is
IGxvZ2ljYWxTdGFydEluUmVuZGVyZXIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Ym9vbCBsb2dpY2FsRW5kSW5SZW5kZXJlciA9IG9mZnNldEluQm94ID09IHN0YXRpY19jYXN0PGlu
dD4odGV4dEJveC0+c3RhcnQoKSArIHRleHRCb3gtPmxlbigpKSAmJiBuZXh0Qm94SW5EaWZmZXJl
bnRCbG9jazsKKyAgICAgICAgICAgIGlzV29yZEJyZWFrID0gaXNsb2dpY2FsRW5kT2ZXb3JkKGl0
ZXIsIG9mZnNldEluSXRlcmF0b3IsIGxvZ2ljYWxFbmRJblJlbmRlcmVyKTsKKyAgICAgICAgfSAg
ICAgIAorCisgICAgICAgIGlmIChpc1dvcmRCcmVhaykKKyAgICAgICAgICAgIHJldHVybiBhZGph
Y2VudENoYXJhY3RlclBvc2l0aW9uOworICAgIAorICAgICAgICBjdXJyZW50ID0gYWRqYWNlbnRD
aGFyYWN0ZXJQb3NpdGlvbjsKKyAgICB9CisgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwor
fQorCitWaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHZpc2libGVQb3NpdGlvbikKK3sKKyAgICBWaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRCcmVh
ayA9IHZpc3VhbFdvcmRQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24sIE1vdmVMZWZ0KTsKKyAgICBs
ZWZ0V29yZEJyZWFrID0gdmlzaWJsZVBvc2l0aW9uLmhvbm9yRWRpdGluZ0JvdW5kYXJ5QXRPckJl
Zm9yZShsZWZ0V29yZEJyZWFrKTsKKyAgICAKKyAgICAvLyBGSVhNRTogSG93IHNob3VsZCB3ZSBo
YW5kbGUgYSBub24tZWRpdGFibGUgcG9zaXRpb24/CisgICAgaWYgKGxlZnRXb3JkQnJlYWsuaXNO
dWxsKCkgJiYgaXNFZGl0YWJsZVBvc2l0aW9uKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVu
dCgpKSkgeworICAgICAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uID0gZGlyZWN0aW9u
T2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7CisgICAg
ICAgIGxlZnRXb3JkQnJlYWsgPSBibG9ja0RpcmVjdGlvbiA9PSBMVFIgPyBzdGFydE9mRWRpdGFi
bGVDb250ZW50KHZpc2libGVQb3NpdGlvbikgOiBlbmRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxl
UG9zaXRpb24pOworICAgIH0KKyAgICByZXR1cm4gbGVmdFdvcmRCcmVhazsKK30KKworVmlzaWJs
ZVBvc2l0aW9uIHJpZ2h0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJs
ZVBvc2l0aW9uKQoreworICAgIFZpc2libGVQb3NpdGlvbiByaWdodFdvcmRCcmVhayA9IHZpc3Vh
bFdvcmRQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24sIE1vdmVSaWdodCk7CisgICAgcmlnaHRXb3Jk
QnJlYWsgPSB2aXNpYmxlUG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQmVmb3JlKHJp
Z2h0V29yZEJyZWFrKTsKKworICAgIC8vIEZJWE1FOiBIb3cgc2hvdWxkIHdlIGhhbmRsZSBhIG5v
bi1lZGl0YWJsZSBwb3NpdGlvbj8KKyAgICBpZiAocmlnaHRXb3JkQnJlYWsuaXNOdWxsKCkgJiYg
aXNFZGl0YWJsZVBvc2l0aW9uKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKSkgewor
ICAgICAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNsb3Np
bmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgICAgIHJpZ2h0
V29yZEJyZWFrID0gYmxvY2tEaXJlY3Rpb24gPT0gTFRSID8gZW5kT2ZFZGl0YWJsZUNvbnRlbnQo
dmlzaWJsZVBvc2l0aW9uKSA6IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9u
KTsKKyAgICB9CisgICAgcmV0dXJuIHJpZ2h0V29yZEJyZWFrOworfQorCisKIGVudW0gQm91bmRh
cnlTZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5IHsgRG9udEhhdmVNb3JlQ29udGV4dCwgTWF5SGF2
ZU1vcmVDb250ZXh0IH07CiAKIHR5cGVkZWYgdW5zaWduZWQgKCpCb3VuZGFyeVNlYXJjaEZ1bmN0
aW9uKShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgb2Zmc2V0LCBCb3Vu
ZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHksIGJvb2wmIG5lZWRNb3JlQ29udGV4dCk7CkBA
IC01MTcsMjggKzg5MSw2IEBAIGJvb2wgaXNFbmRPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9u
ICYKICAgICByZXR1cm4gcC5pc05vdE51bGwoKSAmJiBwID09IGVuZE9mTGluZShwKTsKIH0KIAot
Ly8gVGhlIGZpcnN0IGxlYWYgYmVmb3JlIG5vZGUgdGhhdCBoYXMgdGhlIHNhbWUgZWRpdGFiaWxp
dHkgYXMgbm9kZS4KLXN0YXRpYyBOb2RlKiBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5
KE5vZGUqIG5vZGUsIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUpCi17Ci0gICAgYm9vbCBlZGl0
YWJsZSA9IG5vZGUtPnJlbmRlcmVySXNFZGl0YWJsZShlZGl0YWJsZVR5cGUpOwotICAgIE5vZGUq
IG4gPSBub2RlLT5wcmV2aW91c0xlYWZOb2RlKCk7Ci0gICAgd2hpbGUgKG4pIHsKLSAgICAgICAg
aWYgKGVkaXRhYmxlID09IG4tPnJlbmRlcmVySXNFZGl0YWJsZShlZGl0YWJsZVR5cGUpKQotICAg
ICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgIG4gPSBuLT5wcmV2aW91c0xlYWZOb2RlKCk7Ci0g
ICAgfQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgTm9kZSogZW5jbG9zaW5nTm9kZVdpdGhO
b25JbmxpbmVSZW5kZXJlcihOb2RlKiBuKQotewotICAgIGZvciAoTm9kZSogcCA9IG47IHA7IHAg
PSBwLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKHAtPnJlbmRlcmVyKCkgJiYgIXAtPnJl
bmRlcmVyKCktPmlzSW5saW5lKCkpCi0gICAgICAgICAgICByZXR1cm4gcDsKLSAgICB9Ci0gICAg
cmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSW50UG9pbnQgYWJzb2x1dGVMaW5lRGlyZWN0
aW9uUG9pbnRUb0xvY2FsUG9pbnRJbkJsb2NrKFJvb3RJbmxpbmVCb3gqIHJvb3QsIGludCBsaW5l
RGlyZWN0aW9uUG9pbnQpCiB7CiAgICAgQVNTRVJUKHJvb3QpOwpAQCAtNjI1LDM0ICs5NzcsNiBA
QCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNMaW5lUG9zaXRpb24oY29uCiAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5Ob2RlKHJvb3RFbGVtZW50KSwgRE9XTlNUUkVB
TSk7CiB9CiAKLXN0YXRpYyBOb2RlKiBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkoTm9kZSog
bm9kZSwgaW50IG9mZnNldCkKLXsKLSAgICBib29sIGVkaXRhYmxlID0gbm9kZS0+cmVuZGVyZXJJ
c0VkaXRhYmxlKCk7Ci0gICAgQVNTRVJUKG9mZnNldCA+PSAwKTsKLSAgICBOb2RlKiBjaGlsZCA9
IG5vZGUtPmNoaWxkTm9kZShvZmZzZXQpOwotICAgIE5vZGUqIG4gPSBjaGlsZCA/IGNoaWxkLT5u
ZXh0TGVhZk5vZGUoKSA6IG5vZGUtPmxhc3REZXNjZW5kYW50KCktPm5leHRMZWFmTm9kZSgpOwot
ICAgIHdoaWxlIChuKSB7Ci0gICAgICAgIGlmIChlZGl0YWJsZSA9PSBuLT5yZW5kZXJlcklzRWRp
dGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICBuID0gbi0+bmV4dExlYWZO
b2RlKCk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgTm9kZSogbmV4dExlYWZX
aXRoU2FtZUVkaXRhYmlsaXR5KE5vZGUqIG5vZGUsIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUg
PSBDb250ZW50SXNFZGl0YWJsZSkKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAw
OwotICAgIAotICAgIGJvb2wgZWRpdGFibGUgPSBub2RlLT5yZW5kZXJlcklzRWRpdGFibGUoZWRp
dGFibGVUeXBlKTsKLSAgICBOb2RlKiBuID0gbm9kZS0+bmV4dExlYWZOb2RlKCk7Ci0gICAgd2hp
bGUgKG4pIHsKLSAgICAgICAgaWYgKGVkaXRhYmxlID09IG4tPnJlbmRlcmVySXNFZGl0YWJsZShl
ZGl0YWJsZVR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgIG4gPSBuLT5uZXh0
TGVhZk5vZGUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19CiAKIFZpc2libGVQb3NpdGlvbiBu
ZXh0TGluZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmdmlzaWJsZVBvc2l0aW9uLCBp
bnQgbGluZURpcmVjdGlvblBvaW50LCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlKQogewpAQCAt
MTA5OSw1NDMgKzE0MjMsNCBAQCBWaXNpYmxlUG9zaXRpb24gcmlnaHRCb3VuZGFyeU9mTGluZShj
b25zCiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBMVFIgPyBsb2dpY2FsRW5kT2ZMaW5lKGMpIDog
bG9naWNhbFN0YXJ0T2ZMaW5lKGMpOwogfQogCi1zdGF0aWMgY29uc3QgaW50IGludmFsaWRPZmZz
ZXQgPSAtMTsKLXN0YXRpYyBjb25zdCBpbnQgb2Zmc2V0Tm90Rm91bmQgPSAtMTsKLQotc3RhdGlj
IGJvb2wgcG9zaXRpb25Jc0luQm94KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgd29yZEJyZWFrLCBj
b25zdCBJbmxpbmVCb3gqIGJveCwgaW50JiBvZmZzZXRPZldvcmRCcmVhaykKLXsKLSAgICBpZiAo
d29yZEJyZWFrLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBJbmxpbmVC
b3gqIGJveE9mV29yZEJyZWFrOwotICAgIHdvcmRCcmVhay5nZXRJbmxpbmVCb3hBbmRPZmZzZXQo
Ym94T2ZXb3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrKTsKLSAgICByZXR1cm4gYm94ID09IGJv
eE9mV29yZEJyZWFrOwotfQotCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZEJy
ZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHkoY29uc3QgSW5saW5lQm94
KiBib3gsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcHJldmlvdXNXb3JkQnJlYWssIGludCYgb2Zm
c2V0T2ZXb3JkQnJlYWspCi17Ci0gICAgLy8gSW4gYSBMVFIgYmxvY2ssIHRoZSB3b3JkIGJyZWFr
IHNob3VsZCBiZSBvbiB0aGUgbGVmdCBib3VuZGFyeSBvZiBhIHdvcmQuCi0gICAgLy8gSW4gYSBS
VEwgYmxvY2ssIHRoZSB3b3JkIGJyZWFrIHNob3VsZCBiZSBvbiB0aGUgcmlnaHQgYm91bmRhcnkg
b2YgYSB3b3JkLgotICAgIC8vIEJlY2F1c2UgbmV4dFdvcmRQb3NpdGlvbigpIHJldHVybnMgdGhl
IHdvcmQgYnJlYWsgb24gdGhlIHJpZ2h0IGJvdW5kYXJ5IG9mIHRoZSB3b3JkIGZvciBMVFIgdGV4
dCwKLSAgICAvLyB3ZSBuZWVkIHRvIHVzZSBwcmV2aW91c1dvcmRQb3NpdGlvbigpIHRvIHRyYXZl
cnNlIHdvcmRzIHdpdGhpbiB0aGUgaW5saW5lIGJveGVzIGZyb20gcmlnaHQgdG8gbGVmdAotICAg
IC8vIHRvIGZpbmQgdGhlIHByZXZpb3VzIHdvcmQgYnJlYWsgKGkuZS4gdGhlIGZpcnN0IHdvcmQg
YnJlYWsgb24gdGhlIGxlZnQpLiBUaGUgc2FtZSBhcHBsaWVzIHRvIFJUTCB0ZXh0LgotICAgIAot
ICAgIGJvb2wgaGFzU2VlbldvcmRCcmVha0luVGhpc0JveCA9IHByZXZpb3VzV29yZEJyZWFrLmlz
Tm90TnVsbCgpOwotCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLQotICAgIGlmICho
YXNTZWVuV29yZEJyZWFrSW5UaGlzQm94KQotICAgICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c1dv
cmRCcmVhazsKLSAgICBlbHNlIHsKLSAgICAgICAgd29yZEJyZWFrID0gY3JlYXRlTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKGJveC0+cmVuZGVyZXIoKS0+bm9kZSgpLCBib3gtPmNhcmV0TWF4T2Zmc2V0
KCkpOwotCi0gICAgICAgIC8vIFJldHVybiB0aGUgcmlnaHRtb3N0IHdvcmQgYm91bmRhcnkgb2Yg
TFRSIGJveCBvciBsZWZ0bW9zdCB3b3JkIGJvdW5kYXJ5IG9mIFJUTCBib3ggaWYKLSAgICAgICAg
Ly8gaXQgaXMgbm90IGluIHRoZSBwcmV2aW91c2x5IHZpc2l0ZWQgYm94ZXMuIEZvciBleGFtcGxl
LCBnaXZlbiBhIGxvZ2ljYWwgdGV4dCAKLSAgICAgICAgLy8gImFiYyBkZWYgICAgIGhpaiBvcHEi
LCB0aGVyZSBhcmUgMiBib3hlczogdGhlICJhYmMgZGVmICIgKHN0YXJ0cyBhdCAwIGFuZCBsZW5n
dGggaXMgOCkgCi0gICAgICAgIC8vIGFuZCB0aGUgImhpaiBvcHEiIChzdGFydHMgYXQgMTIgYW5k
IGxlbmd0aCBpcyA3KS4gVGhlIHdvcmQgYnJlYWtzIGFyZSAKLSAgICAgICAgLy8gImFiYyB8ZGVm
IHwgICAgaGlqIHxvcHEiLiBXZSBub3JtYWxseSBjYXRjaCB0aGUgd29yZCBicmVhayBiZXR3ZWVu
ICJkZWYiIGFuZCAiaGlqIiB3aGVuCi0gICAgICAgIC8vIHdlIHZpc2l0IHRoZSBib3ggdGhhdCBj
b250YWlucyAiaGlqIG9wcSIsIGJ1dCB0aGlzIHdvcmQgYnJlYWsgZG9lc24ndCBleGlzdCBpbiB0
aGUgYm94Ci0gICAgICAgIC8vIHRoYXQgY29udGFpbnMgImhpaiBvcHEiIHdoZW4gdGhlcmUgYXJl
IG11bHRpcGxlIHNwYWNlcy4gU28gd2UgZGV0ZWN0IGl0IHdoZW4gd2UncmUKLSAgICAgICAgLy8g
dHJhdmVyc2luZyB0aGUgYm94IHRoYXQgY29udGFpbnMgImFiYyBkZWYgIiBpbnN0ZWFkLgotCi0g
ICAgICAgIGlmICgoYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgYm94LT5uZXh0TGVh
ZkNoaWxkKCkpCi0gICAgICAgICAgICB8fCAoIWJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
ICYmIGJveC0+cHJldkxlYWZDaGlsZCgpKSkgewotCi0gICAgICAgICAgICBWaXNpYmxlUG9zaXRp
b24gcG9zaXRpb25BZnRlcldvcmQgPSBuZXh0Qm91bmRhcnkod29yZEJyZWFrLCBuZXh0V29yZFBv
c2l0aW9uQm91bmRhcnkpOwotICAgICAgICAgICAgaWYgKHBvc2l0aW9uQWZ0ZXJXb3JkLmlzTm90
TnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uQmVmb3Jl
V29yZCA9IHByZXZpb3VzQm91bmRhcnkocG9zaXRpb25BZnRlcldvcmQsIHByZXZpb3VzV29yZFBv
c2l0aW9uQm91bmRhcnkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHBvc2l0
aW9uSXNJbkJveChwb3NpdGlvbkJlZm9yZVdvcmQsIGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb25CZWZvcmVXb3JkOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAKLSAgICB3b3JkQnJlYWsgPSBwcmV2aW91c0JvdW5k
YXJ5KHdvcmRCcmVhaywgcHJldmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFyeSk7Ci0gICAgaWYgKHBy
ZXZpb3VzV29yZEJyZWFrID09IHdvcmRCcmVhaykKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbigpOwotCi0gICAgcmV0dXJuIHBvc2l0aW9uSXNJbkJveCh3b3JkQnJlYWssIGJveCwgb2Zm
c2V0T2ZXb3JkQnJlYWspID8gd29yZEJyZWFrIDogVmlzaWJsZVBvc2l0aW9uKCk7Ci19Ci0KLXN0
YXRpYyBWaXNpYmxlUG9zaXRpb24gbGVmdG1vc3RQb3NpdGlvbkluUlRMQm94SW5MVFJCbG9jayhj
b25zdCBJbmxpbmVCb3gqIGJveCkKLXsKLSAgICAvLyBGSVhNRTogUHJvYmFibHkgbmVlZCB0byB0
YWtlIGNhcmUgb2YgYmlkaSBsZXZlbCB0b28uCi0gICAgTm9kZSogbm9kZSA9IGJveC0+cmVuZGVy
ZXIoKS0+bm9kZSgpOwotICAgIElubGluZUJveCogcHJldmlvdXNMZWFmID0gYm94LT5wcmV2TGVh
ZkNoaWxkKCk7Ci0gICAgSW5saW5lQm94KiBuZXh0TGVhZiA9IGJveC0+bmV4dExlYWZDaGlsZCgp
OyAgIAotICAgIAotICAgIGlmIChwcmV2aW91c0xlYWYgJiYgIXByZXZpb3VzTGVhZi0+aXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKG5vZGUsIGJveC0+Y2FyZXRNYXhPZmZzZXQoKSk7Ci0KLSAgICBpZiAobmV4dExlYWYg
JiYgIW5leHRMZWFmLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpIHsKLSAgICAgICAgaWYgKHBy
ZXZpb3VzTGVhZikKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRp
b24ocHJldmlvdXNMZWFmLT5yZW5kZXJlcigpLT5ub2RlKCksIHByZXZpb3VzTGVhZi0+Y2FyZXRN
YXhPZmZzZXQoKSk7Ci0KLSAgICAgICAgSW5saW5lQm94KiBsYXN0UlRMTGVhZjsKLSAgICAgICAg
ZG8gewotICAgICAgICAgICAgbGFzdFJUTExlYWYgPSBuZXh0TGVhZjsKLSAgICAgICAgICAgIG5l
eHRMZWFmID0gbmV4dExlYWYtPm5leHRMZWFmQ2hpbGQoKTsKLSAgICAgICAgfSB3aGlsZSAobmV4
dExlYWYgJiYgIW5leHRMZWFmLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpOwotICAgICAgICBy
ZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGxhc3RSVExMZWFmLT5yZW5kZXJlcigp
LT5ub2RlKCksIGxhc3RSVExMZWFmLT5jYXJldE1pbk9mZnNldCgpKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIGJveC0+Y2FyZXRNaW5PZmZz
ZXQoKSk7Ci19Ci0KLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcmlnaHRtb3N0UG9zaXRpb25JbkxU
UkJveEluUlRMQmxvY2soY29uc3QgSW5saW5lQm94KiBib3gpCi17Ci0gICAgLy8gRklYTUU6IFBy
b2JhYmx5IG5lZWQgdG8gdGFrZSBjYXJlIG9mIGJpZGkgbGV2ZWwgdG9vLgotICAgIE5vZGUqIG5v
ZGUgPSBib3gtPnJlbmRlcmVyKCktPm5vZGUoKTsKLSAgICBJbmxpbmVCb3gqIHByZXZpb3VzTGVh
ZiA9IGJveC0+cHJldkxlYWZDaGlsZCgpOwotICAgIElubGluZUJveCogbmV4dExlYWYgPSBib3gt
Pm5leHRMZWFmQ2hpbGQoKTsgICAKLSAgICAKLSAgICBpZiAobmV4dExlYWYgJiYgbmV4dExlYWYt
PmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgICAgCi0gICAgICAgIHJldHVybiBjcmVhdGVMZWdh
Y3lFZGl0aW5nUG9zaXRpb24obm9kZSwgYm94LT5jYXJldE1heE9mZnNldCgpKTsKLQotICAgIGlm
IChwcmV2aW91c0xlYWYgJiYgcHJldmlvdXNMZWFmLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkp
IHsKLSAgICAgICAgaWYgKG5leHRMZWFmKQotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2Fj
eUVkaXRpbmdQb3NpdGlvbihuZXh0TGVhZi0+cmVuZGVyZXIoKS0+bm9kZSgpLCBuZXh0TGVhZi0+
Y2FyZXRNYXhPZmZzZXQoKSk7Ci0KLSAgICAgICAgSW5saW5lQm94KiBmaXJzdExUUkxlYWY7Ci0g
ICAgICAgIGRvIHsKLSAgICAgICAgICAgIGZpcnN0TFRSTGVhZiA9IHByZXZpb3VzTGVhZjsKLSAg
ICAgICAgICAgIHByZXZpb3VzTGVhZiA9IHByZXZpb3VzTGVhZi0+cHJldkxlYWZDaGlsZCgpOwot
ICAgICAgICB9IHdoaWxlIChwcmV2aW91c0xlYWYgJiYgcHJldmlvdXNMZWFmLT5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkpOwotICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKGZpcnN0TFRSTGVhZi0+cmVuZGVyZXIoKS0+bm9kZSgpLCBmaXJzdExUUkxlYWYtPmNhcmV0
TWluT2Zmc2V0KCkpOwotICAgIH0KLQotICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9z
aXRpb24obm9kZSwgYm94LT5jYXJldE1pbk9mZnNldCgpKTsKLX0KLSAgICAKLXN0YXRpYyBWaXNp
YmxlUG9zaXRpb24gbGFzdFdvcmRCcmVha0luQm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQm
IG9mZnNldE9mV29yZEJyZWFrKQotewotICAgIC8vIEFkZCB0aGUgbGVmdG1vc3Qgd29yZCBicmVh
ayBmb3IgUlRMIGJveCBvciByaWdodG1vc3Qgd29yZCBicmVhayBmb3IgTFRSIGJveC4KLSAgICBJ
bmxpbmVCb3gqIHByZXZpb3VzTGVhZiA9IGJveC0+cHJldkxlYWZDaGlsZCgpOwotICAgIElubGlu
ZUJveCogbmV4dExlYWYgPSBib3gtPm5leHRMZWFmQ2hpbGQoKTsKLSAgICBWaXNpYmxlUG9zaXRp
b24gYm91bmRhcnlQb3NpdGlvbjsKLSAgICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBSVEwgJiYg
KCFwcmV2aW91c0xlYWYgfHwgcHJldmlvdXNMZWFmLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkp
KQotICAgICAgICBib3VuZGFyeVBvc2l0aW9uID0gbGVmdG1vc3RQb3NpdGlvbkluUlRMQm94SW5M
VFJCbG9jayhib3gpOwotICAgIGVsc2UgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gTFRSICYmICgh
bmV4dExlYWYgfHwgIW5leHRMZWFmLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpKQotICAgICAg
ICBib3VuZGFyeVBvc2l0aW9uID0gcmlnaHRtb3N0UG9zaXRpb25JbkxUUkJveEluUlRMQmxvY2so
Ym94KTsKLQotICAgIGlmIChib3VuZGFyeVBvc2l0aW9uLmlzTnVsbCgpKQotICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7ICAgICAgICAgICAgCi0KLSAgICBWaXNpYmxlUG9zaXRpb24g
d29yZEJyZWFrID0gbmV4dEJvdW5kYXJ5KGJvdW5kYXJ5UG9zaXRpb24sIG5leHRXb3JkUG9zaXRp
b25Cb3VuZGFyeSk7Ci0gICAgaWYgKHdvcmRCcmVhay5pc051bGwoKSkKLSAgICAgICAgd29yZEJy
ZWFrID0gYm91bmRhcnlQb3NpdGlvbjsKLSAgICBlbHNlIGlmICh3b3JkQnJlYWsgIT0gYm91bmRh
cnlQb3NpdGlvbikKLSAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNCb3VuZGFyeSh3b3JkQnJl
YWssIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnkpOwotCi0gICAgcmV0dXJuIHBvc2l0aW9u
SXNJbkJveCh3b3JkQnJlYWssIGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspID8gd29yZEJyZWFrIDog
VmlzaWJsZVBvc2l0aW9uKCk7ICAgIAotfQotCi1zdGF0aWMgYm9vbCBwb3NpdGlvbklzVmlzdWFs
bHlPcmRlcmVkSW5Cb3hJbkJsb2NrV2l0aERpZmZlcmVudERpcmVjdGlvbmFsaXR5KGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgd29yZEJyZWFrLCBjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50JiBvZmZz
ZXRPZldvcmRCcmVhaykKLXsKLSAgICBpbnQgcHJldmlvdXNPZmZzZXQgPSBvZmZzZXRPZldvcmRC
cmVhazsKLSAgICByZXR1cm4gcG9zaXRpb25Jc0luQm94KHdvcmRCcmVhaywgYm94LCBvZmZzZXRP
ZldvcmRCcmVhaykKLSAgICAgICAgJiYgKHByZXZpb3VzT2Zmc2V0ID09IGludmFsaWRPZmZzZXQg
fHwgcHJldmlvdXNPZmZzZXQgPCBvZmZzZXRPZldvcmRCcmVhayk7Ci19Ci0gICAgCi1zdGF0aWMg
VmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkQnJlYWtJbkJveEluc2lkZUJsb2NrV2l0aERpZmZlcmVu
dERpcmVjdGlvbmFsaXR5KAotICAgIGNvbnN0IElubGluZUJveCogYm94LCBjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHByZXZpb3VzV29yZEJyZWFrLCBpbnQmIG9mZnNldE9mV29yZEJyZWFrLCBib29s
JiBpc0xhc3RXb3JkQnJlYWtJbkJveCkKLXsKLSAgICAvLyBGSVhNRTogUHJvYmFibHkgbmVlZCB0
byB0YWtlIGNhcmUgb2YgYmlkaSBsZXZlbCB0b28uCi0gICAgCi0gICAgLy8gSW4gYSBMVFIgYmxv
Y2ssIHRoZSB3b3JkIGJyZWFrIHNob3VsZCBiZSBvbiB0aGUgbGVmdCBib3VuZGFyeSBvZiBhIHdv
cmQuCi0gICAgLy8gSW4gYSBSVEwgYmxvY2ssIHRoZSB3b3JkIGJyZWFrIHNob3VsZCBiZSBvbiB0
aGUgcmlnaHQgYm91bmRhcnkgb2YgYSB3b3JkLgotICAgIC8vIEJlY2F1c2UgcHJldmlvdXNXb3Jk
UG9zaXRpb24oKSByZXR1cm5zIHRoZSB3b3JkIGJyZWFrIG9uIHRoZSByaWdodCBib3VuZGFyeSBv
ZiB0aGUgd29yZCBmb3IgUlRMIHRleHQsCi0gICAgLy8gd2UgbmVlZCB0byB1c2UgbmV4dFdvcmRQ
b3NpdGlvbigpIHRvIHRyYXZlcnNlIHdvcmRzIHdpdGhpbiB0aGUgaW5saW5lIGJveGVzIGZyb20g
cmlnaHQgdG8gbGVmdCB0byBmaW5kIHRoZSBuZXh0IHdvcmQgYnJlYWsuCi0gICAgLy8gVGhlIHNh
bWUgYXBwbGllcyB0byBMVFIgdGV4dCwgaW4gd2hpY2ggd29yZHMgYXJlIHRyYXZlcnNlZCB3aXRo
aW4gdGhlIGlubGluZSBib3hlcyBmcm9tIGxlZnQgdG8gcmlnaHQuCi0gICAgCi0gICAgYm9vbCBo
YXNTZWVuV29yZEJyZWFrSW5UaGlzQm94ID0gcHJldmlvdXNXb3JkQnJlYWsuaXNOb3ROdWxsKCk7
Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhayA9IGhhc1NlZW5Xb3JkQnJlYWtJblRoaXNC
b3ggPyBwcmV2aW91c1dvcmRCcmVhayA6IAotICAgICAgICBjcmVhdGVMZWdhY3lFZGl0aW5nUG9z
aXRpb24oYm94LT5yZW5kZXJlcigpLT5ub2RlKCksIGJveC0+Y2FyZXRNaW5PZmZzZXQoKSk7Ci0K
LSAgICB3b3JkQnJlYWsgPSBuZXh0Qm91bmRhcnkod29yZEJyZWFrLCBuZXh0V29yZFBvc2l0aW9u
Qm91bmRhcnkpOwotICAKLSAgICAvLyBHaXZlbiBSVEwgYm94ICJBQkMgREVGIiBlaXRoZXIgZm9s
bG93cyBhIExUUiBib3ggb3IgaXMgdGhlIGZpcnN0IHZpc3VhbCBib3ggaW4gYW4gTFRSIGJsb2Nr
IGFzIGFuIGV4YW1wbGUsCi0gICAgLy8gdGhlIHZpc3VhbCBkaXNwbGF5IG9mIHRoZSBSVEwgYm94
IGlzOiAiKDApSigxMClJKDkpSCg4KSAoNylGKDYpRSg1KUQoNCkgKDMpQygyKUIoMSlBKDExKSIs
Ci0gICAgLy8gd2hlcmUgdGhlIG51bWJlciBpbiBwYXJlbnRoZXNpcyByZXByZXNlbnRzIG9mZnNl
dCBpbiB2aXNpYmxlUG9zaXRpb24uIAotICAgIC8vIFN0YXJ0IGF0IG9mZnNldCAwLCB0aGUgZmly
c3Qgd29yZCBicmVhayBpcyBhdCBvZmZzZXQgMywgdGhlIDJuZCB3b3JkIGJyZWFrIGlzIGF0IG9m
ZnNldCA3LCBhbmQgdGhlIDNyZCB3b3JkIGJyZWFrIHNob3VsZCBiZSBhdCBvZmZzZXQgMC4KLSAg
ICAvLyBCdXQgbmV4dFdvcmRQb3NpdGlvbigpIG9mIG9mZnNldCA3IGlzIG9mZnNldCAxMSwgd2hp
Y2ggc2hvdWxkIGJlIGlnbm9yZWQsIAotICAgIC8vIGFuZCB0aGUgcG9zaXRpb24gYXQgb2Zmc2V0
IDAgc2hvdWxkIGJlIG1hbnVhbGx5IGFkZGVkIGFzIHRoZSBsYXN0IHdvcmQgYnJlYWsgd2l0aGlu
IHRoZSBib3guCi0gICAgaWYgKHdvcmRCcmVhayAhPSBwcmV2aW91c1dvcmRCcmVhayAmJiBwb3Np
dGlvbklzVmlzdWFsbHlPcmRlcmVkSW5Cb3hJbkJsb2NrV2l0aERpZmZlcmVudERpcmVjdGlvbmFs
aXR5KHdvcmRCcmVhaywgYm94LCBvZmZzZXRPZldvcmRCcmVhaykpIHsKLSAgICAgICAgaXNMYXN0
V29yZEJyZWFrSW5Cb3ggPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsKLSAgICB9
Ci0gICAgCi0gICAgaXNMYXN0V29yZEJyZWFrSW5Cb3ggPSB0cnVlOwotICAgIHJldHVybiBsYXN0
V29yZEJyZWFrSW5Cb3goYm94LCBvZmZzZXRPZldvcmRCcmVhayk7Ci19Ci0KLXN0cnVjdCBXb3Jk
Qm91bmRhcnlFbnRyeSB7Ci0gICAgV29yZEJvdW5kYXJ5RW50cnkoKQotICAgICAgICA6IG9mZnNl
dEluSW5saW5lQm94KGludmFsaWRPZmZzZXQpIAotICAgIHsgCi0gICAgfQotCi0gICAgV29yZEJv
dW5kYXJ5RW50cnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG9mZnNldCkK
LSAgICAgICAgOiB2aXNpYmxlUG9zaXRpb24ocG9zaXRpb24pCi0gICAgICAgICwgb2Zmc2V0SW5J
bmxpbmVCb3gob2Zmc2V0KSAKLSAgICB7IAotICAgIH0KLQotICAgIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlUG9zaXRpb247Ci0gICAgaW50IG9mZnNldEluSW5saW5lQm94OwotfTsKLSAgICAKLXR5
cGVkZWYgVmVjdG9yPFdvcmRCb3VuZGFyeUVudHJ5LCA1MD4gV29yZEJvdW5kYXJ5VmVjdG9yOwot
ICAgIAotc3RhdGljIHZvaWQgY29sbGVjdFdvcmRCcmVha3NJbkJveEluc2lkZUJsb2NrV2l0aFNh
bWVEaXJlY3Rpb25hbGl0eShjb25zdCBJbmxpbmVCb3gqIGJveCwgV29yZEJvdW5kYXJ5VmVjdG9y
JiBvcmRlcmVkV29yZEJvdW5kYXJpZXMpCi17Ci0gICAgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLmNs
ZWFyKCk7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrOwotICAgIGludCBvZmZzZXRP
ZldvcmRCcmVhayA9IGludmFsaWRPZmZzZXQ7Ci0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgd29y
ZEJyZWFrID0gcHJldmlvdXNXb3JkQnJlYWtJbkJveEluc2lkZUJsb2NrV2l0aFNhbWVEaXJlY3Rp
b25hbGl0eShib3gsIHdvcmRCcmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWspOwotICAgICAgICBpZiAo
d29yZEJyZWFrLmlzTnVsbCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFdvcmRCb3Vu
ZGFyeUVudHJ5IHdvcmRCb3VuZGFyeUVudHJ5KHdvcmRCcmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWsp
OwotICAgICAgICBvcmRlcmVkV29yZEJvdW5kYXJpZXMuYXBwZW5kKHdvcmRCb3VuZGFyeUVudHJ5
KTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3hJbnNpZGVC
bG9ja1dpdGhEaWZmZXJudERpcmVjdGlvbmFsaXR5KGNvbnN0IElubGluZUJveCogYm94LCBXb3Jk
Qm91bmRhcnlWZWN0b3ImIG9yZGVyZWRXb3JkQm91bmRhcmllcykKLXsKLSAgICBvcmRlcmVkV29y
ZEJvdW5kYXJpZXMuY2xlYXIoKTsKLSAgICAKLSAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFr
OwotICAgIGludCBvZmZzZXRPZldvcmRCcmVhayA9IGludmFsaWRPZmZzZXQ7Ci0gICAgYm9vbCBp
c0xhc3RXb3JkQnJlYWtJbkJveCA9IGZhbHNlOwotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIHdv
cmRCcmVhayA9IG5leHRXb3JkQnJlYWtJbkJveEluc2lkZUJsb2NrV2l0aERpZmZlcmVudERpcmVj
dGlvbmFsaXR5KGJveCwgd29yZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhaywgaXNMYXN0V29yZEJy
ZWFrSW5Cb3gpOwotICAgICAgICBpZiAod29yZEJyZWFrLmlzTm90TnVsbCgpKSB7Ci0gICAgICAg
ICAgICBXb3JkQm91bmRhcnlFbnRyeSB3b3JkQm91bmRhcnlFbnRyeSh3b3JkQnJlYWssIG9mZnNl
dE9mV29yZEJyZWFrKTsKLSAgICAgICAgICAgIG9yZGVyZWRXb3JkQm91bmRhcmllcy5hcHBlbmQo
d29yZEJvdW5kYXJ5RW50cnkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0xhc3RXb3JkQnJl
YWtJbkJveCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgY29s
bGVjdFdvcmRCcmVha3NJbkJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgV29yZEJvdW5kYXJ5VmVj
dG9yJiBvcmRlcmVkV29yZEJvdW5kYXJpZXMsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24p
Ci17Ci0gICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gYmxvY2tEaXJlY3Rpb24pCi0gICAgICAg
IGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHko
Ym94LCBvcmRlcmVkV29yZEJvdW5kYXJpZXMpOwotICAgIGVsc2UKLSAgICAgICAgY29sbGVjdFdv
cmRCcmVha3NJbkJveEluc2lkZUJsb2NrV2l0aERpZmZlcm50RGlyZWN0aW9uYWxpdHkoYm94LCBv
cmRlcmVkV29yZEJvdW5kYXJpZXMpOyAgICAgICAgCi19Ci0gICAgCi1zdGF0aWMgVmlzaWJsZVBv
c2l0aW9uIHByZXZpb3VzV29yZEJvdW5kYXJ5SW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gsIGlu
dCBvZmZzZXQpCi17Ci0gICAgaW50IG9mZnNldE9mV29yZEJyZWFrID0gMDsKLSAgICBWaXNpYmxl
UG9zaXRpb24gd29yZEJyZWFrOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHdvcmRCcmVh
ayA9IHByZXZpb3VzV29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxp
dHkoYm94LCB3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrKTsKLSAgICAgICAgaWYgKHdvcmRC
cmVhay5pc051bGwoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAob2Zmc2V0ID09
IGludmFsaWRPZmZzZXQgfHwgb2Zmc2V0T2ZXb3JkQnJlYWsgIT0gb2Zmc2V0KQotICAgICAgICAg
ICAgcmV0dXJuIHdvcmRCcmVhazsKLSAgICB9ICAgICAgICAKLSAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKCk7Ci19Ci0KLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRCb3VuZGFyeUlu
Qm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQgb2Zmc2V0KQotewotICAgIGludCBvZmZzZXRP
ZldvcmRCcmVhayA9IDA7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBib29s
IGlzTGFzdFdvcmRCcmVha0luQm94ID0gZmFsc2U7Ci0gICAgZG8gewotICAgICAgICB3b3JkQnJl
YWsgPSBuZXh0V29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25h
bGl0eShib3gsIHdvcmRCcmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWssIGlzTGFzdFdvcmRCcmVha0lu
Qm94KTsKLSAgICAgICAgaWYgKHdvcmRCcmVhay5pc05vdE51bGwoKSAmJiAob2Zmc2V0ID09IGlu
dmFsaWRPZmZzZXQgfHwgb2Zmc2V0T2ZXb3JkQnJlYWsgIT0gb2Zmc2V0KSkKLSAgICAgICAgICAg
IHJldHVybiB3b3JkQnJlYWs7Ci0gICAgfSB3aGlsZSAoIWlzTGFzdFdvcmRCcmVha0luQm94KTsg
ICAgICAgCi0gICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotfQotICAgIAotc3RhdGljIFZp
c2libGVQb3NpdGlvbiB2aXN1YWxseUxhc3RXb3JkQm91bmRhcnlJbkJveChjb25zdCBJbmxpbmVC
b3gqIGJveCwgaW50IG9mZnNldCwgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbikKLXsKLSAg
ICBXb3JkQm91bmRhcnlWZWN0b3Igb3JkZXJlZFdvcmRCb3VuZGFyaWVzOwotICAgIGNvbGxlY3RX
b3JkQnJlYWtzSW5Cb3goYm94LCBvcmRlcmVkV29yZEJvdW5kYXJpZXMsIGJsb2NrRGlyZWN0aW9u
KTsKLSAgICBpZiAoIW9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkpIAotICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0gICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0IHx8
IG9yZGVyZWRXb3JkQm91bmRhcmllc1tvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMV0u
b2Zmc2V0SW5JbmxpbmVCb3ggIT0gb2Zmc2V0KQotICAgICAgICByZXR1cm4gb3JkZXJlZFdvcmRC
b3VuZGFyaWVzW29yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkgLSAxXS52aXNpYmxlUG9zaXRp
b247Ci0gICAgaWYgKG9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkgPiAxKQotICAgICAgICBy
ZXR1cm4gb3JkZXJlZFdvcmRCb3VuZGFyaWVzW29yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkg
LSAyXS52aXNpYmxlUG9zaXRpb247Ci0gICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotfQot
ICAgICAgICAKLXN0YXRpYyBpbnQgZ3JlYXRlc3RPZmZzZXRVbmRlcihpbnQgb2Zmc2V0LCBib29s
IGJveEFuZEJsb2NrQXJlSW5TYW1lRGlyZWN0aW9uLCBjb25zdCBXb3JkQm91bmRhcnlWZWN0b3Im
IG9yZGVyZWRXb3JkQm91bmRhcmllcykKLXsKLSAgICBpZiAoIW9yZGVyZWRXb3JkQm91bmRhcmll
cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBvZmZzZXROb3RGb3VuZDsKLSAgICAvLyBGSVhNRTog
YmluYXJ5IHNlYXJjaC4KLSAgICBpZiAoYm94QW5kQmxvY2tBcmVJblNhbWVEaXJlY3Rpb24pIHsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9yZGVyZWRXb3JkQm91bmRhcmllcy5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKG9yZGVyZWRXb3JkQm91bmRhcmllc1tpXS5v
ZmZzZXRJbklubGluZUJveCA8IG9mZnNldCkKLSAgICAgICAgICAgICAgICByZXR1cm4gaTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gb2Zmc2V0Tm90Rm91bmQ7Ci0gICAgfQotICAgIGZvciAo
aW50IGkgPSBvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsK
LSAgICAgICAgaWYgKG9yZGVyZWRXb3JkQm91bmRhcmllc1tpXS5vZmZzZXRJbklubGluZUJveCA8
IG9mZnNldCkKLSAgICAgICAgICAgIHJldHVybiBpOwotICAgIH0KLSAgICByZXR1cm4gb2Zmc2V0
Tm90Rm91bmQ7Ci19Ci0KLXN0YXRpYyBpbnQgc21hbGxlc3RPZmZzZXRBYm92ZShpbnQgb2Zmc2V0
LCBib29sIGJveEFuZEJsb2NrQXJlSW5TYW1lRGlyZWN0aW9uLCBjb25zdCBXb3JkQm91bmRhcnlW
ZWN0b3ImIG9yZGVyZWRXb3JkQm91bmRhcmllcykKLXsKLSAgICBpZiAoIW9yZGVyZWRXb3JkQm91
bmRhcmllcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBvZmZzZXROb3RGb3VuZDsKLSAgICAvLyBG
SVhNRTogYmluYXJ5IHNlYXJjaC4KLSAgICBpZiAoYm94QW5kQmxvY2tBcmVJblNhbWVEaXJlY3Rp
b24pIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IG9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkg
LSAxOyBpID49IDA7IC0taSkgewotICAgICAgICAgICAgaWYgKG9yZGVyZWRXb3JkQm91bmRhcmll
c1tpXS5vZmZzZXRJbklubGluZUJveCA+IG9mZnNldCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
aTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gb2Zmc2V0Tm90Rm91bmQ7Ci0gICAgfQotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKG9yZGVyZWRXb3JkQm91bmRhcmllc1tpXS5vZmZzZXRJbklubGlu
ZUJveCA+IG9mZnNldCkKLSAgICAgICAgICAgIHJldHVybiBpOwotICAgIH0KLSAgICByZXR1cm4g
b2Zmc2V0Tm90Rm91bmQ7Ci19Ci0KLXN0YXRpYyBjb25zdCBSb290SW5saW5lQm94KiBwcmV2aW91
c1Jvb3RJbmxpbmVCb3goY29uc3QgSW5saW5lQm94KiBib3gpCi17Ci0gICAgTm9kZSogbm9kZSA9
IGJveC0+cmVuZGVyZXIoKS0+bm9kZSgpOwotICAgIE5vZGUqIGVuY2xvc2luZ0Jsb2NrTm9kZSA9
IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5lUmVuZGVyZXIobm9kZSk7Ci0gICAgTm9kZSogcHJl
dmlvdXNOb2RlID0gbm9kZS0+cHJldmlvdXNMZWFmTm9kZSgpOwotICAgIHdoaWxlIChwcmV2aW91
c05vZGUgJiYgZW5jbG9zaW5nQmxvY2tOb2RlID09IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5l
UmVuZGVyZXIocHJldmlvdXNOb2RlKSkKLSAgICAgICAgcHJldmlvdXNOb2RlID0gcHJldmlvdXNO
b2RlLT5wcmV2aW91c0xlYWZOb2RlKCk7Ci0gIAotICAgIHdoaWxlIChwcmV2aW91c05vZGUgJiYg
IXByZXZpb3VzTm9kZS0+aXNTaGFkb3dSb290KCkpIHsKLSAgICAgICAgUG9zaXRpb24gcG9zID0g
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHByZXZpb3VzTm9kZSwgY2FyZXRNYXhPZmZzZXQo
cHJldmlvdXNOb2RlKSk7Ci0gICAgICAgIAotICAgICAgICBpZiAocG9zLmlzQ2FuZGlkYXRlKCkp
IHsKLSAgICAgICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3MocG9zLCBET1dOU1RS
RUFNKTsKLSAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIHJvb3QgPSByZW5kZXJlZFBvcy5yb290
Qm94KCk7Ci0gICAgICAgICAgICBpZiAocm9vdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcm9v
dDsKLSAgICAgICAgfQotCi0gICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTm9kZS0+cHJl
dmlvdXNMZWFmTm9kZSgpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIGNvbnN0
IFJvb3RJbmxpbmVCb3gqIG5leHRSb290SW5saW5lQm94KGNvbnN0IElubGluZUJveCogYm94KQot
ewotICAgIE5vZGUqIG5vZGUgPSBib3gtPnJlbmRlcmVyKCktPm5vZGUoKTsKLSAgICBOb2RlKiBl
bmNsb3NpbmdCbG9ja05vZGUgPSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKG5v
ZGUpOwotICAgIE5vZGUqIG5leHROb2RlID0gbm9kZS0+bmV4dExlYWZOb2RlKCk7Ci0gICAgd2hp
bGUgKG5leHROb2RlICYmIGVuY2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5v
bklubGluZVJlbmRlcmVyKG5leHROb2RlKSkKLSAgICAgICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS0+
bmV4dExlYWZOb2RlKCk7Ci0gIAotICAgIHdoaWxlIChuZXh0Tm9kZSAmJiAhbmV4dE5vZGUtPmlz
U2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIFBvc2l0aW9uIHBvczsKLSAgICAgICAgcG9zID0gY3Jl
YXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5leHROb2RlLCBjYXJldE1pbk9mZnNldChuZXh0Tm9k
ZSkpOwotICAgICAgICAKLSAgICAgICAgaWYgKHBvcy5pc0NhbmRpZGF0ZSgpKSB7Ci0gICAgICAg
ICAgICBSZW5kZXJlZFBvc2l0aW9uIHJlbmRlcmVkUG9zKHBvcywgRE9XTlNUUkVBTSk7Ci0gICAg
ICAgICAgICBSb290SW5saW5lQm94KiByb290ID0gcmVuZGVyZWRQb3Mucm9vdEJveCgpOwotICAg
ICAgICAgICAgaWYgKHJvb3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Q7Ci0gICAgICAg
IH0KLQotICAgICAgICBuZXh0Tm9kZSA9IG5leHROb2RlLT5uZXh0TGVhZk5vZGUoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBjb25zdCBJbmxpbmVCb3gqIGxlZnRJbmxpbmVC
b3goY29uc3QgSW5saW5lQm94KiBib3gsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCi17
Ci0gICAgaWYgKGJveC0+cHJldkxlYWZDaGlsZCgpKQotICAgICAgICByZXR1cm4gYm94LT5wcmV2
TGVhZkNoaWxkKCk7Ci0gICAgCi0gICAgY29uc3QgUm9vdElubGluZUJveCogcm9vdEJveCA9IGJv
eC0+cm9vdCgpOwotICAgIGNvbnN0IGJvb2wgaXNCbG9ja0xUUiA9IGJsb2NrRGlyZWN0aW9uID09
IExUUjsKLSAgICBjb25zdCBJbmxpbmVGbG93Qm94KiBsZWZ0TGluZUJveCA9IGlzQmxvY2tMVFIg
PyByb290Qm94LT5wcmV2TGluZUJveCgpIDogcm9vdEJveC0+bmV4dExpbmVCb3goKTsKLSAgICBp
ZiAobGVmdExpbmVCb3gpCi0gICAgICAgIHJldHVybiBsZWZ0TGluZUJveC0+bGFzdExlYWZDaGls
ZCgpOwotCi0gICAgY29uc3QgUm9vdElubGluZUJveCogbGVmdFJvb3RJbmxpbmVCb3ggPSBpc0Js
b2NrTFRSID8gcHJldmlvdXNSb290SW5saW5lQm94KGJveCkgOgotICAgICAgICBuZXh0Um9vdElu
bGluZUJveChib3gpOyAKLSAgICByZXR1cm4gbGVmdFJvb3RJbmxpbmVCb3ggPyBsZWZ0Um9vdElu
bGluZUJveC0+bGFzdExlYWZDaGlsZCgpIDogMDsgCi19Ci0KLXN0YXRpYyBjb25zdCBJbmxpbmVC
b3gqIHJpZ2h0SW5saW5lQm94KGNvbnN0IElubGluZUJveCogYm94LCBUZXh0RGlyZWN0aW9uIGJs
b2NrRGlyZWN0aW9uKQotewotICAgIGlmIChib3gtPm5leHRMZWFmQ2hpbGQoKSkKLSAgICAgICAg
cmV0dXJuIGJveC0+bmV4dExlYWZDaGlsZCgpOwotICAgIAotICAgIGNvbnN0IFJvb3RJbmxpbmVC
b3gqIHJvb3RCb3ggPSBib3gtPnJvb3QoKTsKLSAgICBjb25zdCBib29sIGlzQmxvY2tMVFIgPSBi
bG9ja0RpcmVjdGlvbiA9PSBMVFI7Ci0gICAgY29uc3QgSW5saW5lRmxvd0JveCogcmlnaHRMaW5l
Qm94ID0gaXNCbG9ja0xUUiA/IHJvb3RCb3gtPm5leHRMaW5lQm94KCkgOiByb290Qm94LT5wcmV2
TGluZUJveCgpOwotICAgIGlmIChyaWdodExpbmVCb3gpCi0gICAgICAgIHJldHVybiByaWdodExp
bmVCb3gtPmZpcnN0TGVhZkNoaWxkKCk7Ci0KLSAgICBjb25zdCBSb290SW5saW5lQm94KiByaWdo
dFJvb3RJbmxpbmVCb3ggPSBpc0Jsb2NrTFRSID8gbmV4dFJvb3RJbmxpbmVCb3goYm94KSA6Ci0g
ICAgICAgIHByZXZpb3VzUm9vdElubGluZUJveChib3gpOyAKLSAgICByZXR1cm4gcmlnaHRSb290
SW5saW5lQm94ID8gcmlnaHRSb290SW5saW5lQm94LT5maXJzdExlYWZDaGlsZCgpIDogMDsgCi19
Ci0KLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRCb3VuZGFyeShjb25zdCBJbmxpbmVC
b3gqIGJveCwgaW50IG9mZnNldCwgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbikKLXsKLSAg
ICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrOwotICAgIGZvciAgKGNvbnN0IElubGluZUJveCog
YWRqYWNlbnRCb3ggPSBib3g7IGFkamFjZW50Qm94OyBhZGphY2VudEJveCA9IGxlZnRJbmxpbmVC
b3goYWRqYWNlbnRCb3gsIGJsb2NrRGlyZWN0aW9uKSkgewotICAgICAgICBpZiAoYmxvY2tEaXJl
Y3Rpb24gPT0gTFRSKSB7Ci0gICAgICAgICAgICBpZiAoYWRqYWNlbnRCb3gtPmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSkgCi0gICAgICAgICAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNXb3Jk
Qm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8gb2Zmc2V0IDog
aW52YWxpZE9mZnNldCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgd29yZEJy
ZWFrID0gbmV4dFdvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBi
b3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0KTsKLSAgICAgICAgfSBlbHNlIAotICAgICAgICAg
ICAgd29yZEJyZWFrID0gdmlzdWFsbHlMYXN0V29yZEJvdW5kYXJ5SW5Cb3goYWRqYWNlbnRCb3gs
IGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRPZmZzZXQsIGJsb2NrRGlyZWN0
aW9uKTsgICAgICAgICAgICAKLSAgICAgICAgaWYgKHdvcmRCcmVhay5pc05vdE51bGwoKSkKLSAg
ICAgICAgICAgIHJldHVybiB3b3JkQnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24oKTsKLX0KLSAKLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkQm91bmRhcnko
Y29uc3QgSW5saW5lQm94KiBib3gsIGludCBvZmZzZXQsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJl
Y3Rpb24pCi17Ci0gICAgCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBmb3Ig
KGNvbnN0IElubGluZUJveCogYWRqYWNlbnRCb3ggPSBib3g7IGFkamFjZW50Qm94OyBhZGphY2Vu
dEJveCA9IHJpZ2h0SW5saW5lQm94KGFkamFjZW50Qm94LCBibG9ja0RpcmVjdGlvbikpIHsKLSAg
ICAgICAgaWYgKGJsb2NrRGlyZWN0aW9uID09IFJUTCkgewotICAgICAgICAgICAgaWYgKGFkamFj
ZW50Qm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgd29yZEJy
ZWFrID0gbmV4dFdvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBi
b3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c1dvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94
LCBhZGphY2VudEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0KTsKLSAgICAgICAg
fSBlbHNlIAotICAgICAgICAgICAgd29yZEJyZWFrID0gdmlzdWFsbHlMYXN0V29yZEJvdW5kYXJ5
SW5Cb3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRP
ZmZzZXQsIGJsb2NrRGlyZWN0aW9uKTsgICAgICAgICAgICAKLSAgICAgICAgaWYgKCF3b3JkQnJl
YWsuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gd29yZEJyZWFrOwotICAgIH0KLSAgICBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci19Ci0gICAgCi1zdGF0aWMgYm9vbCBwb3NpdGlvbklz
SW5Cb3hCdXROb3RPbkJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgd29yZEJyZWFrLCBj
b25zdCBJbmxpbmVCb3gqIGJveCkKLXsKLSAgICBpbnQgb2Zmc2V0T2ZXb3JkQnJlYWs7Ci0gICAg
cmV0dXJuIHBvc2l0aW9uSXNJbkJveCh3b3JkQnJlYWssIGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWsp
Ci0gICAgICAgICYmIG9mZnNldE9mV29yZEJyZWFrICE9IGJveC0+Y2FyZXRNYXhPZmZzZXQoKSAm
JiBvZmZzZXRPZldvcmRCcmVhayAhPSBib3gtPmNhcmV0TWluT2Zmc2V0KCk7Ci19Ci0KLXN0YXRp
YyBWaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRQb3NpdGlvbklnbm9yaW5nRWRpdGluZ0JvdW5kYXJ5
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQotewotICAgIElubGluZUJv
eCogYm94OwotICAgIGludCBvZmZzZXQ7Ci0gICAgdmlzaWJsZVBvc2l0aW9uLmdldElubGluZUJv
eEFuZE9mZnNldChib3gsIG9mZnNldCk7Ci0KLSAgICBpZiAoIWJveCkKLSAgICAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbigpOwotCi0gICAgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbiA9
IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2sodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50
KCkpOwotCi0gICAgLy8gRklYTUU6IElmIHRoZSBib3gncyBkaXJlY3Rpb25hbGl0eSBpcyB0aGUg
c2FtZSBhcyB0aGF0IG9mIHRoZSBlbmNsb3NpbmcgYmxvY2ssIHdoZW4gdGhlIG9mZnNldCBpcyBh
dCB0aGUgYm94IGJvdW5kYXJ5Ci0gICAgLy8gYW5kIHRoZSBkaXJlY3Rpb24gaXMgdG93YXJkcyBp
bnNpZGUgdGhlIGJveCwgZG8gSSBzdGlsbCBuZWVkIHRvIG1ha2UgaXQgYSBzcGVjaWFsIGNhc2U/
IEZvciBleGFtcGxlLCBhIExUUiBib3ggaW5zaWRlIGEgTFRSIGJsb2NrLAotICAgIC8vIHdoZW4g
b2Zmc2V0IGlzIGF0IGJveCdzIGNhcmV0TWluT2Zmc2V0IGFuZCB0aGUgZGlyZWN0aW9uIGlzIERp
cmVjdGlvblJpZ2h0LCBzaG91bGQgaXQgYmUgdGFrZW4gY2FyZSBhcyBhIGdlbmVyYWwgY2FzZT8K
LSAgICBpZiAob2Zmc2V0ID09IGJveC0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgpKQotICAgICAgICBy
ZXR1cm4gbGVmdFdvcmRCb3VuZGFyeShsZWZ0SW5saW5lQm94KGJveCwgYmxvY2tEaXJlY3Rpb24p
LCBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7Ci0gICAgaWYgKG9mZnNldCA9PSBib3gt
PmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCkpCi0gICAgICAgIHJldHVybiBsZWZ0V29yZEJvdW5kYXJ5
KGJveCwgb2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7Ci0gICAgCi0gICAgCi0gICAgVmlzaWJsZVBv
c2l0aW9uIHdvcmRCcmVhazsKLSAgICBpZiAoYmxvY2tEaXJlY3Rpb24gPT0gTFRSKSB7Ci0gICAg
ICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0aW9uKQotICAgICAgICAgICAg
d29yZEJyZWFrID0gcHJldmlvdXNCb3VuZGFyeSh2aXNpYmxlUG9zaXRpb24sIHByZXZpb3VzV29y
ZFBvc2l0aW9uQm91bmRhcnkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3b3JkQnJlYWsg
PSBuZXh0Qm91bmRhcnkodmlzaWJsZVBvc2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uQm91bmRhcnkp
OwotICAgIH0KLSAgICBpZiAod29yZEJyZWFrLmlzTm90TnVsbCgpICYmIHBvc2l0aW9uSXNJbkJv
eEJ1dE5vdE9uQm91bmRhcnkod29yZEJyZWFrLCBib3gpKQotICAgICAgICByZXR1cm4gd29yZEJy
ZWFrOwotICAgIAotICAgIFdvcmRCb3VuZGFyeVZlY3RvciBvcmRlcmVkV29yZEJvdW5kYXJpZXM7
Ci0gICAgY29sbGVjdFdvcmRCcmVha3NJbkJveChib3gsIG9yZGVyZWRXb3JkQm91bmRhcmllcywg
YmxvY2tEaXJlY3Rpb24pOwotCi0gICAgaW50IGluZGV4ID0gYm94LT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgPyBncmVhdGVzdE9mZnNldFVuZGVyKG9mZnNldCwgYmxvY2tEaXJlY3Rpb24gPT0g
TFRSLCBvcmRlcmVkV29yZEJvdW5kYXJpZXMpCi0gICAgICAgIDogc21hbGxlc3RPZmZzZXRBYm92
ZShvZmZzZXQsIGJsb2NrRGlyZWN0aW9uID09IFJUTCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKTsK
LSAgICBpZiAoaW5kZXggPj0gMCkKLSAgICAgICAgcmV0dXJuIG9yZGVyZWRXb3JkQm91bmRhcmll
c1tpbmRleF0udmlzaWJsZVBvc2l0aW9uOwotICAgIAotICAgIHJldHVybiBsZWZ0V29yZEJvdW5k
YXJ5KGxlZnRJbmxpbmVCb3goYm94LCBibG9ja0RpcmVjdGlvbiksIGludmFsaWRPZmZzZXQsIGJs
b2NrRGlyZWN0aW9uKTsKLX0KLQotc3RhdGljIFZpc2libGVQb3NpdGlvbiByaWdodFdvcmRQb3Np
dGlvbklnbm9yaW5nRWRpdGluZ0JvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJs
ZVBvc2l0aW9uKQotewotICAgIElubGluZUJveCogYm94OwotICAgIGludCBvZmZzZXQ7Ci0gICAg
dmlzaWJsZVBvc2l0aW9uLmdldElubGluZUJveEFuZE9mZnNldChib3gsIG9mZnNldCk7Ci0KLSAg
ICBpZiAoIWJveCkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotCi0gICAgVGV4
dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2sodmlz
aWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwotICAgIAotICAgIGlmIChvZmZzZXQgPT0g
Ym94LT5jYXJldExlZnRtb3N0T2Zmc2V0KCkpCi0gICAgICAgIHJldHVybiByaWdodFdvcmRCb3Vu
ZGFyeShib3gsIG9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOwotICAgIGlmIChvZmZzZXQgPT0gYm94
LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpKQotICAgICAgICByZXR1cm4gcmlnaHRXb3JkQm91bmRh
cnkocmlnaHRJbmxpbmVCb3goYm94LCBibG9ja0RpcmVjdGlvbiksIGludmFsaWRPZmZzZXQsIGJs
b2NrRGlyZWN0aW9uKTsKLSAKLSAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrOwotICAgIGlm
IChibG9ja0RpcmVjdGlvbiA9PSBSVEwpIHsKLSAgICAgICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkg
PT0gYmxvY2tEaXJlY3Rpb24pCi0gICAgICAgICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c0JvdW5k
YXJ5KHZpc2libGVQb3NpdGlvbiwgcHJldmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFyeSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHdvcmRCcmVhayA9IG5leHRCb3VuZGFyeSh2aXNpYmxlUG9z
aXRpb24sIG5leHRXb3JkUG9zaXRpb25Cb3VuZGFyeSk7Ci0gICAgfQotICAgIGlmICh3b3JkQnJl
YWsuaXNOb3ROdWxsKCkgJiYgcG9zaXRpb25Jc0luQm94QnV0Tm90T25Cb3VuZGFyeSh3b3JkQnJl
YWssIGJveCkpCi0gICAgICAgIHJldHVybiB3b3JkQnJlYWs7Ci0gICAgCi0gICAgV29yZEJvdW5k
YXJ5VmVjdG9yIG9yZGVyZWRXb3JkQm91bmRhcmllczsKLSAgICBjb2xsZWN0V29yZEJyZWFrc0lu
Qm94KGJveCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLCBibG9ja0RpcmVjdGlvbik7Ci0gICAgCi0g
ICAgaW50IGluZGV4ID0gYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBzbWFsbGVzdE9m
ZnNldEFib3ZlKG9mZnNldCwgYmxvY2tEaXJlY3Rpb24gPT0gTFRSLCBvcmRlcmVkV29yZEJvdW5k
YXJpZXMpCi0gICAgICAgIDogZ3JlYXRlc3RPZmZzZXRVbmRlcihvZmZzZXQsIGJsb2NrRGlyZWN0
aW9uID09IFJUTCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKTsKLSAgICBpZiAoaW5kZXggPj0gMCkK
LSAgICAgICAgcmV0dXJuIG9yZGVyZWRXb3JkQm91bmRhcmllc1tpbmRleF0udmlzaWJsZVBvc2l0
aW9uOwotICAgIAotICAgIHJldHVybiByaWdodFdvcmRCb3VuZGFyeShyaWdodElubGluZUJveChi
b3gsIGJsb2NrRGlyZWN0aW9uKSwgaW52YWxpZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOwotfQot
Ci1WaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHZpc2libGVQb3NpdGlvbikKLXsKLSAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24g
bGVmdFdvcmRCcmVhayA9IGxlZnRXb3JkUG9zaXRpb25JZ25vcmluZ0VkaXRpbmdCb3VuZGFyeSh2
aXNpYmxlUG9zaXRpb24pOwotICAgIGxlZnRXb3JkQnJlYWsgPSB2aXNpYmxlUG9zaXRpb24uaG9u
b3JFZGl0aW5nQm91bmRhcnlBdE9yQmVmb3JlKGxlZnRXb3JkQnJlYWspOwotICAgIAotICAgIC8v
IEZJWE1FOiBIb3cgc2hvdWxkIHdlIGhhbmRsZSBhIG5vbi1lZGl0YWJsZSBwb3NpdGlvbj8KLSAg
ICBpZiAobGVmdFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRpb24odmlzaWJs
ZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7Ci0gICAgICAgIFRleHREaXJlY3Rpb24gYmxv
Y2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5k
ZWVwRXF1aXZhbGVudCgpKTsKLSAgICAgICAgbGVmdFdvcmRCcmVhayA9IGJsb2NrRGlyZWN0aW9u
ID09IExUUiA/IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKSA6IGVuZE9m
RWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7Ci0gICAgfQotICAgIHJldHVybiBsZWZ0
V29yZEJyZWFrOwotfQotCi1WaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCi17Ci0gICAgaWYgKHZpc2libGVQb3Np
dGlvbi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotCi0gICAg
VmlzaWJsZVBvc2l0aW9uIHJpZ2h0V29yZEJyZWFrID0gcmlnaHRXb3JkUG9zaXRpb25JZ25vcmlu
Z0VkaXRpbmdCb3VuZGFyeSh2aXNpYmxlUG9zaXRpb24pOwotICAgIHJpZ2h0V29yZEJyZWFrID0g
dmlzaWJsZVBvc2l0aW9uLmhvbm9yRWRpdGluZ0JvdW5kYXJ5QXRPckJlZm9yZShyaWdodFdvcmRC
cmVhayk7Ci0KLSAgICAvLyBGSVhNRTogSG93IHNob3VsZCB3ZSBoYW5kbGUgYSBub24tZWRpdGFi
bGUgcG9zaXRpb24/Ci0gICAgaWYgKHJpZ2h0V29yZEJyZWFrLmlzTnVsbCgpICYmIGlzRWRpdGFi
bGVQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpIHsKLSAgICAgICAg
VGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2so
dmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwotICAgICAgICByaWdodFdvcmRCcmVh
ayA9IGJsb2NrRGlyZWN0aW9uID09IExUUiA/IGVuZE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQ
b3NpdGlvbikgOiBzdGFydE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7Ci0gICAg
fQotICAgIHJldHVybiByaWdodFdvcmRCcmVhazsKLX0KLQogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAkocmV2aXNpb24gMTEw
NDczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBpbnQgdGV4dEJyZWFrUHJlY2VkaW5nKFRleHRCcmVha0l0ZXJhdG9yKiwgaW50KTsKICAgICBp
bnQgdGV4dEJyZWFrRm9sbG93aW5nKFRleHRCcmVha0l0ZXJhdG9yKiwgaW50KTsKICAgICBib29s
IGlzVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiwgaW50KTsKKyAgICBib29sIGlzV29yZFRl
eHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciopOwogCiAgICAgY29uc3QgaW50IFRleHRCcmVha0Rv
bmUgPSAtMTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJ
dGVyYXRvcklDVS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAJKHJldmlzaW9uIDExMDQ3MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzksNiArMTM5LDEyIEBAIGJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0
b3IqIGl0ZXIKICAgICByZXR1cm4gdWJya19pc0JvdW5kYXJ5KHJlaW50ZXJwcmV0X2Nhc3Q8VUJy
ZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvc2l0aW9uKTsKIH0KIAorYm9vbCBpc1dvcmRUZXh0
QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQoreworICAgIGludCBydWxlU3RhdHVz
ID0gdWJya19nZXRSdWxlU3RhdHVzKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihp
dGVyYXRvcikpOworICAgIHJldHVybiBydWxlU3RhdHVzICE9IFVCUktfV09SRF9OT05FOworfQor
CiBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldFVwSXRlcmF0b3JXaXRoUnVsZXMoYm9vbCYg
Y3JlYXRlZEl0ZXJhdG9yLCBUZXh0QnJlYWtJdGVyYXRvciomIGl0ZXJhdG9yLAogICAgIGNvbnN0
IGNoYXIqIGJyZWFrUnVsZXMsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4
dEJyZWFrSXRlcmF0b3JHdGsuY3BwCShyZXZpc2lvbiAxMTA0NzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4NSw0ICszODUsOSBAQCBib29sIGlzVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9y
KiBpdGVyCiAgICAgcmV0dXJuIGl0ZXJhdG9yLT5tX2NoYXJJdGVyYXRvci5nZXRJbmRleCgpID09
IGluZGV4OwogfQogCitib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciopCit7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcAkocmV2aXNpb24g
MTEwNDczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVy
YXRvclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDQgKzE1MCw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgYm9vbCBpc1dvcmRU
ZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbmNlL1Rl
eHRCcmVha0l0ZXJhdG9yV2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvd2luY2UvVGV4dEJyZWFrSXRlcmF0b3JXaW5DRS5jcHAJKHJldmlzaW9uIDEx
MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luY2UvVGV4dEJyZWFrSXRl
cmF0b3JXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw2ICszMTcsMTEgQEAgYm9vbCBp
c1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciosIGludAogICAgIHJldHVybiB0cnVlOwogfQog
Citib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciopCit7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIFRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKGNv
bnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIGNoYXJhY3RlckJy
ZWFrSXRlcmF0b3Ioc3RyaW5nLCBsZW5ndGgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTEwNzc1KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAK
KzIwMTItMDMtMTQgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVz
aW5nIElDVSBicmVhayBpdGVyYXRvciB0byBzaW1wbGlmeSB2aXN1YWwgd29yZCBtb3ZlbWVudCBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc4ODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktaW5saW5lLWJs
b2NrLXBvc2l0aW9uZWQtZWxlbWVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9z
ZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1ibG9jay1wb3NpdGlvbmVkLWVs
ZW1lbnQuaHRtbDoKKyAgICAgICAgICBUaGUgd29yZCBicmVhayBzdG9wcyBhdCB0aGUgYmVnaW5u
aW5nIG9mIGZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudCwgd2hpY2ggaXMgY29ycmVjdCBhbmQgY29u
c2lzdGVudCBiZWhhdmlvci4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnkt
d29yZC12aXN1YWxseS1tdWx0aS1saW5lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5n
L3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktbXVsdGktbGluZS5odG1sOgorICAgICAg
ICAgIFRoZSB3b3JkIGJyZWFrIGRvZXMgbm90IHN0b3AgYXQgdGhlIGVuZCBvZiBhIHRleHQgaWYg
dGhlcmUgaXMgbmV4dCBsaW5lIG9mIHRleHQgYXZhaWxhYmxlIHVuZGVyIHRoZSBzYW1lCisgICAg
ICAgICAgZWRpdGFibGUgcm9vdCwgd2hpY2ggaXMgYSBjb25zaXN0ZW50IGJlaGF2aW9yIGNyb3Nz
IHRoZSBib2FyZC4KKyAgICAgICAgICBBZGQgbW9yZSB0ZXN0IGNhc2VzLCBpbmNsdWRpbmcgb25l
IHdpdGggbm9uIElubGluZVRleHRCb3guCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9t
b3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNlLWlubGluZS1lbGVtZW50LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgICBGaXhpbmcgb2YgcHJldmlvdXNseSBtaXNzaW5nIG9yIGV4dHJhIHdv
cmQgYnJlYWsgcG9zaXRpb25zLgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1i
eS13b3JkLXZpc3VhbGx5LXNpbmdsZS1zcGFjZS1vbmUtZWxlbWVudC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXNpbmdsZS1z
cGFjZS1vbmUtZWxlbWVudC5odG1sOgorICAgICAgICAgIEFkZCBhIHRlc3QgY2FzZSBpbmNsdWRp
bmcgYmlkaSBjb250cm9sIGNoYXJhY3RlciB3aGljaCByZW5kZXJzIHdyb25nIHJlc3VsdCBzaW5j
ZSByaWdodC1hcnJvdyBjb3VsZCBub3QgcmVhY2gKKyAgICAgICAgICBhIHBvc2l0aW9uIHdoaWNo
IGlzIHRoZSB3b3JkIGJyZWFrIHBvc2l0aW9uLgorICAgICAgICAgIEFkZCBhbm90aGVyIHRlc3Qg
Y2FzZSBjb250YWluaW5nIG5vbiBJbmxpbmVUZXh0Qm94LgorCisgICAgICAgICogZWRpdGluZy9z
ZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXdyb25nLWxlZnQtcmlnaHQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlz
dWFsbHktd3JvbmctbGVmdC1yaWdodC5odG1sOiBBZGRlZC4KKyAgICAgICAgICBBZGQgYSB0ZXN0
IGNhc2Ugd2hpY2ggcmVuZGVycyB3cm9uZyByZXN1bHQgZHVlIHRvIGxlZnQvcmlnaHQtYXJyb3cg
cmV0dXJucyB3cm9uZyByZXN1bHQuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9yZXNv
dXJjZXMvbW92ZS1ieS13b3JkLXZpc3VhbGx5LmpzOgorICAgICAgICAobW92ZUJ5V29yZE9uRXZl
cnlDaGFyKTogSGFuZGxlIGEgc3BlY2lhbCBjYXNlIHdoZW4gbGVmdC9yaWdodCBhcnJvdyBtaXNz
aW5nIGNlcnRhaW4gcG9zaXRpb24uCisKIDIwMTItMDMtMTQgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBJJ3ZlIGFscmVhZHkgdXBkYXRlZCB0aGUgYmFzZWxpbmVz
IGZvciB0aGlzIHRlc3QuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3Zl
LWJ5LXdvcmQtdmlzdWFsbHktaW5saW5lLWJsb2NrLXBvc2l0aW9uZWQtZWxlbWVudC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1i
eS13b3JkLXZpc3VhbGx5LWlubGluZS1ibG9jay1wb3NpdGlvbmVkLWVsZW1lbnQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxMTA0NzMpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9t
b3ZlLWJ5LXdvcmQtdmlzdWFsbHktaW5saW5lLWJsb2NrLXBvc2l0aW9uZWQtZWxlbWVudC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsMzcgKzIsMzcgQEAKID09PT09PT09IE1vdmUg
QnkgV29yZCA9PT09CiBUZXN0IDEsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJiZWdp
biBzdGFydCJbMCwgNl0sICJhYmMgZGVmIlswLCA0XSwgImVuZCBpbmciWzAsIDRdLCAidGhpcyBp
cyBmbG9hdCJbMCwgNSwgOF0sICJ0aGlzIGlzIGZpeGVkIls1LCA4XSwgInRoaXMgaXMgcmVsYXRp
dmUiWzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCisiYmVnaW4gc3Rh
cnQiWzAsIDZdLCAiYWJjIGRlZiJbMCwgNF0sICJlbmQgaW5nIlswLCA0XSwgInRoaXMgaXMgZmxv
YXQiWzAsIDUsIDhdLCAidGhpcyBpcyBmaXhlZCJbMCwgNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZl
IlswLCA1LCA4XSwgInRoaXMgaXMgYWJzb2x1dGUiWzAsIDUsIDgsIDE2XQogTW92ZSBsZWZ0IGJ5
IG9uZSB3b3JkCi0idGhpcyBpcyBhYnNvbHV0ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxh
dGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4LCA1XSwgInRoaXMgaXMgZmxvYXQiWzgs
IDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2
LCAwXQorInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUi
WzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNSwgMF0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1
LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwg
MF0KIFRlc3QgMiwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAotImFiYyBkZWYiWzAsIDRd
LCAiZW5kIGluZyJbMCwgNF0sICJ0aGlzIGlzIGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4
ZWQiWzUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRl
IlswLCA1LCA4LCAxNl0KKyJhYmMgZGVmIlswLCA0XSwgImVuZCBpbmciWzAsIDRdLCAidGhpcyBp
cyBmbG9hdCJbMCwgNSwgOF0sICJ0aGlzIGlzIGZpeGVkIlswLCA1LCA4XSwgInRoaXMgaXMgcmVs
YXRpdmUiWzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCiBNb3ZlIGxl
ZnQgYnkgb25lIHdvcmQKLSJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlz
IHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDVdLCAidGhpcyBpcyBmbG9h
dCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3Rh
cnQiWzYsIDBdCisidGhpcyBpcyBhYnNvbHV0ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxh
dGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4LCA1LCAwXSwgInRoaXMgaXMgZmxvYXQi
WzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0
Ils2LCAwXQogVGVzdCAzLCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iZW5kIGluZyJb
MCwgNF0sICJ0aGlzIGlzIGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzUsIDhdLCAi
dGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAx
Nl0KKyJlbmQgaW5nIlswLCA0XSwgInRoaXMgaXMgZmxvYXQiWzAsIDUsIDhdLCAidGhpcyBpcyBm
aXhlZCJbMCwgNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4XSwgInRoaXMgaXMgYWJz
b2x1dGUiWzAsIDUsIDgsIDE2XQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0idGhpcyBpcyBhYnNv
bHV0ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlz
IGZpeGVkIls4LCA1XSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0s
ICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQorInRoaXMgaXMgYWJzb2x1dGUi
WzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhl
ZCJbOCwgNSwgMF0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAi
YWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KIFRlc3QgNCwgTFRSOgogTW92ZSBy
aWdodCBieSBvbmUgd29yZAotInRoaXMgaXMgZmxvYXQiWzAsIDUsIDhdLCAidGhpcyBpcyBmaXhl
ZCJbNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4XSwgInRoaXMgaXMgYWJzb2x1dGUi
WzAsIDUsIDgsIDE2XQorInRoaXMgaXMgZmxvYXQiWzAsIDUsIDhdLCAidGhpcyBpcyBmaXhlZCJb
MCwgNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4XSwgInRoaXMgaXMgYWJzb2x1dGUi
WzAsIDUsIDgsIDE2XQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0idGhpcyBpcyBhYnNvbHV0ZSJb
MTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVk
Ils4LCA1XSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMg
ZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQorInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4
LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwg
NSwgMF0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRl
ZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KIFRlc3QgNSwgTFRSOgogTW92ZSByaWdodCBi
eSBvbmUgd29yZAogInRoaXMgaXMgZml4ZWQiWzAsIDUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJb
MCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBv
bmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRp
dmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1
LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwg
MF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4
LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwg
MF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBd
CiBUZXN0IDYsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKICJ0aGlzIGlzIHJlbGF0aXZl
IlswLCA1LCA4XSwgInRoaXMgaXMgYWJzb2x1dGUiWzAsIDUsIDgsIDE2XQogTW92ZSBsZWZ0IGJ5
IG9uZSB3b3JkCi0idGhpcyBpcyBhYnNvbHV0ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxh
dGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4LCA1XSwgInRoaXMgaXMgZmxvYXQiWzgs
IDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2
LCAwXQorInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUi
WzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNSwgMF0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1
LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwg
MF0KIFRlc3QgNywgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAogInRoaXMgaXMgYWJzb2x1
dGUiWzAsIDUsIDgsIDE2XQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0idGhpcyBpcyBhYnNvbHV0
ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZp
eGVkIls4LCA1XSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJh
YmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQorInRoaXMgaXMgYWJzb2x1dGUiWzE2
LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJb
OCwgNSwgMF0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJj
IGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KIApJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1ibG9jay1wb3NpdGlv
bmVkLWVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktaW5saW5lLWJsb2NrLXBvc2l0aW9uZWQtZWxlbWVu
dC5odG1sCShyZXZpc2lvbiAxMTA0NzMpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktaW5saW5lLWJsb2NrLXBvc2l0aW9uZWQtZWxlbWVudC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNywzOCArMTcsMzggQEAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewogCiA8ZGl2IGlkPSJ0ZXN0TW92ZUJ5V29yZCIgY29udGVudGVkaXRh
YmxlIHN0eWxlPSJ3aWR0aDoyMDAwcHg7IGhlaWdodDoyMDAwcHgiPgogPGRpdiBpZD0iZF8xIiBk
aXI9bHRyIAotdGl0bGU9IltkXzEsIDBdW2RfMSwgNl1bZF8yLCAwXVtkXzIsIDRdW2RfMywgMF1b
ZF8zLCA0XVtkXzQsIDBdW2RfNCwgNV1bZF80LCA4XVtkXzUsIDVdW2RfNSwgOF1bZF82LCAwXVtk
XzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAxNl18Ci1bZF83LCAx
Nl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1bZF81LCA4
XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRd
W2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKK3RpdGxlPSJbZF8xLCAwXVtkXzEsIDZdW2RfMiwg
MF1bZF8yLCA0XVtkXzMsIDBdW2RfMywgNF1bZF80LCAwXVtkXzQsIDVdW2RfNCwgOF1bZF81LCAw
XVtkXzUsIDVdW2RfNSwgOF1bZF82LCAwXVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVd
W2RfNywgOF1bZF83LCAxNl18CitbZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82
LCA4XVtkXzYsIDVdW2RfNiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNSwgMF1bZF80LCA4XVtkXzQs
IDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwg
MF0iIAogY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIj5iZWdpbiBzdGFydDwvZGl2PgogCiA8ZGl2
IGlkPSJkXzIiIGRpcj1sdHIgCi10aXRsZT0iW2RfMiwgMF1bZF8yLCA0XVtkXzMsIDBdW2RfMywg
NF1bZF80LCAwXVtkXzQsIDVdW2RfNCwgOF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1
XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAotW2RfNywgMTZdW2Rf
NywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81
LCA1XVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIs
IDBdW2RfMSwgNl1bZF8xLCAwXSIgCit0aXRsZT0iW2RfMiwgMF1bZF8yLCA0XVtkXzMsIDBdW2Rf
MywgNF1bZF80LCAwXVtkXzQsIDVdW2RfNCwgOF1bZF81LCAwXVtkXzUsIDVdW2RfNSwgOF1bZF82
LCAwXVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAxNl18Citb
ZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1b
ZF81LCA4XVtkXzUsIDVdW2RfNSwgMF1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtk
XzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAogY2xhc3M9InRlc3RfbW92
ZV9ieV93b3JkIiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2siPmFiYyBkZWY8L2Rpdj4KIAog
PGRpdiBpZD0iZF8zIiBkaXI9bHRyIAotdGl0bGU9IltkXzMsIDBdW2RfMywgNF1bZF80LCAwXVtk
XzQsIDVdW2RfNCwgOF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2Rf
NywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAotW2RfNywgMTZdW2RfNywgOF1bZF83LCA1
XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzQsIDhd
W2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1b
ZF8xLCAwXSIgCit0aXRsZT0iW2RfMywgMF1bZF8zLCA0XVtkXzQsIDBdW2RfNCwgNV1bZF80LCA4
XVtkXzUsIDBdW2RfNSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBd
W2RfNywgNV1bZF83LCA4XVtkXzcsIDE2XXwKK1tkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83
LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF81LCAwXVtkXzQs
IDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwg
Nl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiPmVuZCBpbmc8L2Rpdj4KIAog
PGRpdiBpZD0iZF80IiBkaXI9bHRyIAotdGl0bGU9IltkXzQsIDBdW2RfNCwgNV1bZF80LCA4XVtk
XzUsIDVdW2RfNSwgOF1bZF82LCAwXVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2Rf
NywgOF1bZF83LCAxNl18Ci1bZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4
XVtkXzYsIDVdW2RfNiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBd
W2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKK3RpdGxl
PSJbZF80LCAwXVtkXzQsIDVdW2RfNCwgOF1bZF81LCAwXVtkXzUsIDVdW2RfNSwgOF1bZF82LCAw
XVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAxNl18CitbZF83
LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1bZF81
LCA4XVtkXzUsIDVdW2RfNSwgMF1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMs
IDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAogY2xhc3M9InRlc3RfbW92ZV9i
eV93b3JkIiBzdHlsZT0iZmxvYXQ6bGVmdCI+dGhpcyBpcyBmbG9hdDwvZGl2PgogCiA8ZGl2IGlk
PSJkXzUiIGRpcj1sdHIgCiB0aXRsZT0iW2RfNSwgMF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1b
ZF82LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAotW2RfNywg
MTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwg
OF1bZF81LCA1XVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0
XVtkXzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCitbZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2Rf
NywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNSwgMF1bZF80
LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEs
IDZdW2RfMSwgMF0iIAogY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiBzdHlsZT0icG9zaXRpb246
Zml4ZWQ7IHRvcDozMHB4OyByaWdodDo1cHgiPnRoaXMgaXMgZml4ZWQ8L2Rpdj4KIAogPGRpdiBp
ZD0iZF82IiBkaXI9bHRyIAogdGl0bGU9IltkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBd
W2RfNywgNV1bZF83LCA4XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83
LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQs
IDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwg
MF0iIAorW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtk
XzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2Rf
MywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKIGNsYXNzPSJ0
ZXN0X21vdmVfYnlfd29yZCIgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0OjIwcHgiPnRo
aXMgaXMgcmVsYXRpdmU8L2Rpdj4KIAogPGRpdiBpZD0iZF83IiBkaXI9bHRyIAogdGl0bGU9Iltk
XzcsIDBdW2RfNywgNV1bZF83LCA4XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywg
NV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4
XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZd
W2RfMSwgMF0iIAorW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82
LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1bZF80LCA1XVtkXzQs
IDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKIGNs
YXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjEw
MHB4OyB0b3A6MTUwcHgiPnRoaXMgaXMgYWJzb2x1dGU8L2Rpdj4KIAogPC9kaXY+CkluZGV4OiBM
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktbXVsdGkt
bGluZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLWxpbmUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxMTA0NzMpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdv
cmQtdmlzdWFsbHktbXVsdGktbGluZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDExICszNyw5IEBAIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKICJvcHEgcnN0IHV2dyB4eXoiWzE1
LCAxMSwgOCwgMywgMF0sICJhYmMgZGVmIGdoaSBqa2wgbW4gIlsxNiwgMTEsIDgsIDMsIDBdCiBU
ZXN0IDgsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotImFiYyBkZWYgZ2hpIGprbCBtbiAi
WzAsIDMsIDgsIDExLCAxNiwgMThdLCAib3BxIHJzdCB1dncgeHl6IlswLCAzLCA4LCAxMSwgMTVd
ICAgIEZBSUwgZXhwZWN0ZWQ6IFsiYWJjIGRlZiBnaGkgamtsIG1uICJbIDAsICAzLCAgOCwgIDEx
LCAgMTYsIF0ib3BxIHJzdCB1dncgeHl6IlsgMCwgIDMsICA4LCAgMTEsICAxNV0KLSJhYmMgZGVm
IGdoaSBqa2wgbW4gIlsxNiwgMThdICAgRkFJTCBleHBlY3RlZCAib3BxIHJzdCB1dncgeHl6Ilsg
MF0KLSJhYmMgZGVmIGdoaSBqa2wgbW4gIlsxNywgMThdICAgRkFJTCBleHBlY3RlZCAib3BxIHJz
dCB1dncgeHl6IlsgMF0KKyJhYmMgZGVmIGdoaSBqa2wgbW4gIlswLCAzLCA4LCAxMSwgMTZdLCAi
b3BxIHJzdCB1dncgeHl6IlswLCAzLCA4LCAxMSwgMTVdCiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3Jk
Ci0ib3BxIHJzdCB1dncgeHl6IlsxNSwgMTEsIDgsIDMsIDBdLCAiYWJjIGRlZiBnaGkgamtsIG1u
ICJbMTgsIDE2LCAxMSwgOCwgMywgMF0KKyJvcHEgcnN0IHV2dyB4eXoiWzE1LCAxMSwgOCwgMywg
MF0sICJhYmMgZGVmIGdoaSBqa2wgbW4gIlsxNiwgMTEsIDgsIDMsIDBdCiBUZXN0IDksIFJUTDoK
IE1vdmUgbGVmdCBieSBvbmUgd29yZAogIkFBQSBBQUEgQUFBIEFBQSAiWzAsIDQsIDgsIDEyXSwg
IkFBQSBBQUEgQUFBIEFBQSJbMCwgNCwgOCwgMTIsIDE1XQpAQCAtNTksMjMgKzU3LDM1IEBAIE1v
dmUgcmlnaHQgYnkgb25lIHdvcmQKICJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlsyNSwgMjIs
IDE4LCAxNCwgMTEsIDcsIDQsIDBdLCAiIGFiYyBkZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncg
eHl6ICJbMzMsIDI5LCAyNSwgMjEsIDE3LCAxMywgOSwgNCwgMV0KIFRlc3QgMTIsIFJUTDoKIE1v
dmUgbGVmdCBieSBvbmUgd29yZAotIiBhYmMgZGVmIEFBQSBBQUEgaGlqIEFBQSBBQUEgdXZ3IHh5
eiAiWzEsIDQsIDksIDEzLCAxNywgMjEsIDI1LCAyOSwgMzMsIDM2XSwgIkFBQSBraiBBQUEgbW4g
b3BxIEFBQSBBQUEiWzAsIDQsIDcsIDExLCAxNCwgMTgsIDIyLCAyNV0gICAgRkFJTCBleHBlY3Rl
ZDogWyIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlsgMSwgIDQsICA5LCAg
MTMsICAxNywgIDIxLCAgMjUsICAyOSwgIDMzLCBdIkFBQSBraiBBQUEgbW4gb3BxIEFBQSBBQUEi
WyAwLCAgNCwgIDcsICAxMSwgIDE0LCAgMTgsICAyMiwgIDI1XQotIiBhYmMgZGVmIEFBQSBBQUEg
aGlqIEFBQSBBQUEgdXZ3IHh5eiAiWzMzLCAzNl0gICBGQUlMIGV4cGVjdGVkICJBQUEga2ogQUFB
IG1uIG9wcSBBQUEgQUFBIlsgMF0KLSIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4
eXogIlszNSwgMzZdICAgRkFJTCBleHBlY3RlZCAiQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFBQSJb
IDBdCi0iIGFiYyBkZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJbMzQsIDM2XSAgIEZB
SUwgZXhwZWN0ZWQgIkFBQSBraiBBQUEgbW4gb3BxIEFBQSBBQUEiWyAwXQorIiBhYmMgZGVmIEFB
QSBBQUEgaGlqIEFBQSBBQUEgdXZ3IHh5eiAiWzEsIDQsIDksIDEzLCAxNywgMjEsIDI1LCAyOSwg
MzNdLCAiQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFBQSJbMCwgNCwgNywgMTEsIDE0LCAxOCwgMjIs
IDI1XQogTW92ZSByaWdodCBieSBvbmUgd29yZAotIkFBQSBraiBBQUEgbW4gb3BxIEFBQSBBQUEi
WzI1LCAyMiwgMTgsIDE0LCAxMSwgNywgNCwgMF0sICIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEg
QUFBIHV2dyB4eXogIlszNiwgMzMsIDI5LCAyNSwgMjEsIDE3LCAxMywgOSwgNCwgMV0KKyJBQUEg
a2ogQUFBIG1uIG9wcSBBQUEgQUFBIlsyNSwgMjIsIDE4LCAxNCwgMTEsIDcsIDQsIDBdLCAiIGFi
YyBkZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJbMzMsIDI5LCAyNSwgMjEsIDE3LCAx
MywgOSwgNCwgMV0KIFRlc3QgMTMsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJhYmMg
ZGVmICJbMCwgNF0KKyJhYmMgZGVmIGdoaSBqa2wgbW4gIlswLCA0LCA4LCAxMiwgMTZdLCAib3Bx
IHJzdCB1dncgeHl6IlswLCA0LCA4LCAxMiwgMTVdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSIg
aGlqIG9wcSJbOCwgNSwgMV0KKyJvcHEgcnN0IHV2dyB4eXoiWzE1LCAxMiwgOCwgNCwgMF0sICJh
YmMgZGVmIGdoaSBqa2wgbW4gIlsxNiwgMTIsIDgsIDQsIDBdCiBUZXN0IDE0LCBMVFI6CiBNb3Zl
IHJpZ2h0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBnaGkgamtsIG1uICJbMCwgNCwgOCwgMTIsIDE2
LCAxOF0KK01vdmUgbGVmdCBieSBvbmUgd29yZAorImFiYyBkZWYgZ2hpIGprbCBtbiAiWzE4LCAx
NiwgMTIsIDgsIDQsIDBdCitUZXN0IDE1LCBMVFI6CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisi
YWJjIGRlZiBnaGkgamtsIG1uICJbMCwgNCwgOCwgMTIsIDE2XSwgIm9wcSByc3QgdXZ3IHh5eiJb
MCwgNCwgOCwgMTIsIDE1XQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisib3BxIHJzdCB1dncgeHl6
IlsxNSwgMTIsIDgsIDQsIDBdLCAiYWJjIGRlZiBnaGkgamtsIG1uICJbMTYsIDEyLCA4LCA0LCAw
XQorVGVzdCAxNiwgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYgIlswLCA0
LCA4XQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiIGhpaiBvcHEiWzgsIDUsIDFdCitUZXN0IDE3
LCBMVFI6CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCiA8RElWPlswXQogTW92ZSBsZWZ0IGJ5IG9u
ZSB3b3JkCiA8RElWPlswXQotVGVzdCAxNSwgTFRSOgorVGVzdCAxOCwgTFRSOgogTW92ZSByaWdo
dCBieSBvbmUgd29yZAogIlxuMDAiWzNdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1s
aW5lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92
ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLWxpbmUuaHRtbAkocmV2aXNpb24gMTEwNDczKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRp
LWxpbmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCB3aGVyZSBjaGlsZF9u
b2RlX2luZGV4IGlzIG9wdGlvbmFsLCBkZWZhCiAKIDxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1y
dGwgaWQ9Im1sXzciIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSJb
bWxfNywgMTUsIDVdW21sXzcsIDExLCA1XVttbF83LCA4LCA1XVttbF83LCAzLCA1XVttbF83LCAw
LCA1XVttbF83LCAxNl1bbWxfNywgMTFdW21sXzcsIDhdW21sXzcsIDNdW21sXzcsIDBdfFttbF83
LCAwXVttbF83LCAzXVttbF83LCA4XVttbF83LCAxMV1bbWxfNywgMTZdW21sXzcsIDAsIDVdW21s
XzcsIDMsIDVdW21sXzcsIDgsIDVdW21sXzcsIDExLCA1XVttbF83LCAxNSwgNV0iPmFiYyBkZWYg
Z2hpIGprbCBtbiA8YnIvPjxici8+PGJyLz5vcHEgcnN0IHV2dyB4eXo8L2Rpdj4KIAotPGRpdiBj
b250ZW50ZWRpdGFibGUgZGlyPXJ0bCBpZD0ibWxfOCIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3Jk
IGZpeF93aWR0aCIgdGl0bGU9IlttbF84LCAxNSwgNV1bbWxfOCwgMTEsIDVdW21sXzgsIDgsIDVd
W21sXzgsIDMsIDVdW21sXzgsIDAsIDVdW21sXzgsIDE4XVttbF84LCAxNl1bbWxfOCwgMTFdW21s
XzgsIDhdW21sXzgsIDNdW21sXzgsIDBdfFttbF84LCAwXVttbF84LCAzXVttbF84LCA4XVttbF84
LCAxMV1bbWxfOCwgMTZdW21sXzgsIDAsIDVdW21sXzgsIDMsIDVdW21sXzgsIDgsIDVdW21sXzgs
IDExLCA1XVttbF84LCAxNSwgNV0iPmFiYyBkZWYgZ2hpIGprbCBtbiA8ZGl2Pjxici8+PC9kaXY+
PGRpdj48YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rpdj5vcHEgcnN0IHV2dyB4eXo8L2Rpdj4KKzxk
aXYgY29udGVudGVkaXRhYmxlIGRpcj1ydGwgaWQ9Im1sXzgiIGNsYXNzPSJ0ZXN0X21vdmVfYnlf
d29yZCBmaXhfd2lkdGgiIHRpdGxlPSJbbWxfOCwgMTUsIDVdW21sXzgsIDExLCA1XVttbF84LCA4
LCA1XVttbF84LCAzLCA1XVttbF84LCAwLCA1XVttbF84LCAxNl1bbWxfOCwgMTFdW21sXzgsIDhd
W21sXzgsIDNdW21sXzgsIDBdfFttbF84LCAwXVttbF84LCAzXVttbF84LCA4XVttbF84LCAxMV1b
bWxfOCwgMTZdW21sXzgsIDAsIDVdW21sXzgsIDMsIDVdW21sXzgsIDgsIDVdW21sXzgsIDExLCA1
XVttbF84LCAxNSwgNV0iPmFiYyBkZWYgZ2hpIGprbCBtbiA8ZGl2Pjxici8+PC9kaXY+PGRpdj48
YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rpdj5vcHEgcnN0IHV2dyB4eXo8L2Rpdj4KIAogPGRpdiBj
b250ZW50ZWRpdGFibGUgZGlyPXJ0bCBpZD0ibWxfOSIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3Jk
IGZpeF93aWR0aCIgdGl0bGU9IlttbF85LCAxNSwgNV1bbWxfOSwgMTIsIDVdW21sXzksIDgsIDVd
W21sXzksIDQsIDVdW21sXzksIDAsIDVdW21sXzksIDEyXVttbF85LCA4XVttbF85LCA0XVttbF85
LCAwXXxbbWxfOSwgMF1bbWxfOSwgNF1bbWxfOSwgOF1bbWxfOSwgMTJdW21sXzksIDAsIDVdW21s
XzksIDQsIDVdW21sXzksIDgsIDVdW21sXzksIDEyLCA1XVttbF85LCAxNSwgNV0iPteQ15DXkCDX
kNeQ15Ag15DXkNeQINeQ15DXkCA8YnIvPjxici8+PGJyLz7XkNeQ15Ag15DXkNeQINeQ15DXkCDX
kNeQ15A8L2Rpdj4KIApAQCAtNjUsMTEgKzY1LDE3IEBAIHdoZXJlIGNoaWxkX25vZGVfaW5kZXgg
aXMgb3B0aW9uYWwsIGRlZmEKICI+IGFiYyBkZWYg15DXkNeQINeQ15DXkCBoaWog15DXkNeQINeQ
15DXkCB1dncgeHl6IDxici8+PGJyLz48YnIvPteQ15DXkCBraiDXkNeQ15AgbW4gb3BxINeQ15DX
kCDXkNeQ15A8L2Rpdj4KIAogPGRpdiBjb250ZW50ZWRpdGFibGUgZGlyPXJ0bCBpZD0ibWxfMTIi
IGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSIKLVttbF8xMiwgMjUs
IDVdW21sXzEyLCAyMiwgNV1bbWxfMTIsIDE4LCA1XVttbF8xMiwgMTQsIDVdW21sXzEyLCAxMSwg
NV1bbWxfMTIsIDcsIDVdW21sXzEyLCA0LCA1XVttbF8xMiwgMCwgNV1bbWxfMTIsIDM2XVttbF8x
MiwgMzNdW21sXzEyLCAyOV1bbWxfMTIsIDI1XVttbF8xMiwgMjFdW21sXzEyLCAxN11bbWxfMTIs
IDEzXVttbF8xMiwgOV1bbWxfMTIsIDRdW21sXzEyLCAxXXxbbWxfMTIsIDFdW21sXzEyLCA0XVtt
bF8xMiwgOV1bbWxfMTIsIDEzXVttbF8xMiwgMTddW21sXzEyLCAyMV1bbWxfMTIsIDI1XVttbF8x
MiwgMjldW21sXzEyLCAzM11bbWxfMTIsIDAsIDVdW21sXzEyLCA0LCA1XVttbF8xMiwgNywgNV1b
bWxfMTIsIDExLCA1XVttbF8xMiwgMTQsIDVdW21sXzEyLCAxOCwgNV1bbWxfMTIsIDIyLCA1XVtt
bF8xMiwgMjUsIDVdCitbbWxfMTIsIDI1LCA1XVttbF8xMiwgMjIsIDVdW21sXzEyLCAxOCwgNV1b
bWxfMTIsIDE0LCA1XVttbF8xMiwgMTEsIDVdW21sXzEyLCA3LCA1XVttbF8xMiwgNCwgNV1bbWxf
MTIsIDAsIDVdW21sXzEyLCAzM11bbWxfMTIsIDI5XVttbF8xMiwgMjVdW21sXzEyLCAyMV1bbWxf
MTIsIDE3XVttbF8xMiwgMTNdW21sXzEyLCA5XVttbF8xMiwgNF1bbWxfMTIsIDFdfFttbF8xMiwg
MV1bbWxfMTIsIDRdW21sXzEyLCA5XVttbF8xMiwgMTNdW21sXzEyLCAxN11bbWxfMTIsIDIxXVtt
bF8xMiwgMjVdW21sXzEyLCAyOV1bbWxfMTIsIDMzXVttbF8xMiwgMCwgNV1bbWxfMTIsIDQsIDVd
W21sXzEyLCA3LCA1XVttbF8xMiwgMTEsIDVdW21sXzEyLCAxNCwgNV1bbWxfMTIsIDE4LCA1XVtt
bF8xMiwgMjIsIDVdW21sXzEyLCAyNSwgNV0KICI+IGFiYyBkZWYg15DXkNeQINeQ15DXkCBoaWog
15DXkNeQINeQ15DXkCB1dncgeHl6IDxkaXY+PGJyLz48L2Rpdj48ZGl2Pjxici8+PC9kaXY+PGRp
dj48YnIvPjwvZGl2PteQ15DXkCBraiDXkNeQ15AgbW4gb3BxINeQ15DXkCDXkNeQ15A8L2Rpdj4K
IAorPGRpdiBjb250ZW50ZWRpdGFibGUgZGlyPWx0ciBpZD0ibWxfMTMiIGNsYXNzPSJ0ZXN0X21v
dmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSJbbWxfMTMsIDBdW21sXzEzLCA0XVttbF8xMywg
OF1bbWxfMTMsIDEyXVttbF8xMywgMTZdW21sXzEzLCAwLCA1XVttbF8xMywgNCwgNV1bbWxfMTMs
IDgsIDVdW21sXzEzLCAxMiwgNV1bbWxfMTMsIDE1LCA1XXxbbWxfMTMsIDE1LCA1XVttbF8xMywg
MTIsIDVdW21sXzEzLCA4LCA1XVttbF8xMywgNCwgNV1bbWxfMTMsIDAsIDVdW21sXzEzLCAxNl1b
bWxfMTMsIDEyXVttbF8xMywgOF1bbWxfMTMsIDRdW21sXzEzLCAwXSI+YWJjIGRlZiBnaGkgamts
IG1uIDxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2Pm9wcSByc3QgdXZ3IHh5ejwvZGl2
PgorCis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBkaXI9bHRyIGlkPSJtbF8xNCIgY2xhc3M9InRlc3Rf
bW92ZV9ieV93b3JkIGZpeF93aWR0aCIgdGl0bGU9IlttbF8xNCwgMF1bbWxfMTQsIDRdW21sXzE0
LCA4XVttbF8xNCwgMTJdW21sXzE0LCAxNl1bbWxfMTQsIDE4XXxbbWxfMTQsIDE4XVttbF8xNCwg
MTZdW21sXzE0LCAxMl1bbWxfMTQsIDhdW21sXzE0LCA0XVttbF8xNCwgMF0iPmFiYyBkZWYgZ2hp
IGprbCBtbiA8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj4KKworPGRpdiBj
b250ZW50ZWRpdGFibGUgZGlyPWx0ciBpZD0ibWxfMTUiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29y
ZCBmaXhfd2lkdGgiIHRpdGxlPSJbbWxfMTUsIDBdW21sXzE1LCA0XVttbF8xNSwgOF1bbWxfMTUs
IDEyXVttbF8xNSwgMTZdW21sXzE1LCAwLCA1XVttbF8xNSwgNCwgNV1bbWxfMTUsIDgsIDVdW21s
XzE1LCAxMiwgNV1bbWxfMTUsIDE1LCA1XXxbbWxfMTUsIDE1LCA1XVttbF8xNSwgMTIsIDVdW21s
XzE1LCA4LCA1XVttbF8xNSwgNCwgNV1bbWxfMTUsIDAsIDVdW21sXzE1LCAxNl1bbWxfMTUsIDEy
XVttbF8xNSwgOF1bbWxfMTUsIDRdW21sXzE1LCAwXSI+YWJjIGRlZiBnaGkgamtsIG1uIDxkaXY+
PGltZyBzcmM9Li4vLi4vYWNjZXNzaWJpbGl0eS9yZXNvdXJjZXMvY2FrZS5wbmc+PC9kaXY+PGRp
dj48L2Rpdj48ZGl2PjwvZGl2Pm9wcSByc3QgdXZ3IHh5ejwvZGl2PgorCiA8IS0tIG1peGVkIGVk
aXRhYmlsaXR5IC0tPgotPGRpdiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0
bGU9IjAgNHw4IDUgMSI+YWJjIGRlZiA8c3BhbiBjb250ZW50ZWRpdGFibGU+IGluc2lkZSBzcGFu
IDwvc3Bhbj4gaGlqIG9wcTwvZGl2PgorPGRpdiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlf
d29yZCIgdGl0bGU9IjAgNCA4fDggNSAxIj5hYmMgZGVmIDxzcGFuIGNvbnRlbnRlZGl0YWJsZT4g
aW5zaWRlIHNwYW4gPC9zcGFuPiBoaWogb3BxPC9kaXY+CiAKIDxkaXYgY2xhc3M9InRlc3RfbW92
ZV9ieV93b3JkIiBjb250ZW50ZWRpdGFibGUgZGlyPWx0ciB0aXRsZT0iMHwwIj48L2Rpdj4KIApJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5
LXNpbmdsZS1zcGFjZS1pbmxpbmUtZWxlbWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXNpbmds
ZS1zcGFjZS1pbmxpbmUtZWxlbWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDExMDQ3MykKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1zaW5n
bGUtc3BhY2UtaW5saW5lLWVsZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
NywzMCArMTcsMTQgQEAgTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCiAiIHJzdCB1dnciWzgsIDUsIDFd
LCAiaGlqIG9wcSJbNF0sICJhYmMgZGVmICJbOCwgNCwgMF0KIFRlc3QgNCwgUlRMOgogTW92ZSBs
ZWZ0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiAiWzBdLCAiIHJzdCB1dnciWzRdLCAiaGlqIG9wcSJb
M10sICJhYmMgZGVmICJbNywgM10sICIgcnN0IHV2dyJbOF0gICAgRkFJTCBleHBlY3RlZDogWyJh
YmMgZGVmICJbIDAsIF0iIHJzdCB1dnciWyA0LCBdImhpaiBvcHEiWyA3LCAgMywgXSJhYmMgZGVm
ICJbIDcsICAzLCBdIiByc3QgdXZ3IlsgOF0KLSIgcnN0IHV2dyJbNF0sICJoaWogb3BxIlszXSAg
IEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotIiByc3QgdXZ3IlszXSwgImhpaiBvcHEiWzNd
ICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iIHJzdCB1dnciWzJdLCAiaGlqIG9wcSJb
M10gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSIgcnN0IHV2dyJbMV0sICJoaWogb3Bx
IlszXSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotTW92ZSByaWdodCBieSBvbmUgd29y
ZAotIiByc3QgdXZ3Ils4XSwgImFiYyBkZWYgIlszLCA3XSwgImhpaiBvcHEiWzNdLCAiIHJzdCB1
dnciWzRdLCAiYWJjIGRlZiAiWzBdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiIHJzdCB1dnciWyA4LCBd
ImFiYyBkZWYgIlsgMywgIDcsIF0iaGlqIG9wcSJbIDMsICA3LCBdIiByc3QgdXZ3IlsgNCwgXSJh
YmMgZGVmICJbIDBdCi0iaGlqIG9wcSJbM10sICIgcnN0IHV2dyJbNF0gICBGQUlMIGV4cGVjdGVk
ICJoaWogb3BxIlsgN10KLSJoaWogb3BxIls0XSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0
ZWQgImhpaiBvcHEiWyA3XQotImhpaiBvcHEiWzVdLCAiIHJzdCB1dnciWzRdICAgRkFJTCBleHBl
Y3RlZCAiaGlqIG9wcSJbIDddCi0iaGlqIG9wcSJbNl0sICIgcnN0IHV2dyJbNF0gICBGQUlMIGV4
cGVjdGVkICJoaWogb3BxIlsgN10KKyJhYmMgZGVmICJbMF0sICIgcnN0IHV2dyJbNF0sICJoaWog
b3BxIls3LCAzXSwgImFiYyBkZWYgIls3LCAzXSwgIiByc3QgdXZ3Ils4XQorTW92ZSByaWdodCBi
eSBvbmUgd29yZAorIiByc3QgdXZ3Ils4XSwgImFiYyBkZWYgIlszLCA3XSwgImhpaiBvcHEiWzMs
IDddLCAiIHJzdCB1dnciWzRdLCAiYWJjIGRlZiAiWzBdCiBUZXN0IDUsIFJUTDoKIE1vdmUgbGVm
dCBieSBvbmUgd29yZAotImFiYyBkZWYgIlswXSwgIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzNd
LCAiYWJjIGRlZiAiWzcsIDNdLCAiIHJzdCB1dnciWzhdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiYWJj
IGRlZiAiWyAwLCBdIiByc3QgdXZ3IlsgNCwgXSJoaWogb3BxIlsgNywgIDMsIF0iYWJjIGRlZiAi
WyA3LCAgMywgXSIgcnN0IHV2dyJbIDhdCi0iIHJzdCB1dnciWzRdLCAiaGlqIG9wcSJbM10gICBG
QUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSIgcnN0IHV2dyJbM10sICJoaWogb3BxIlszXSAg
IEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotIiByc3QgdXZ3IlsyXSwgImhpaiBvcHEiWzNd
ICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iIHJzdCB1dnciWzFdLCAiaGlqIG9wcSJb
M10gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLU1vdmUgcmlnaHQgYnkgb25lIHdvcmQK
LSIgcnN0IHV2dyJbOF0sICJhYmMgZGVmICJbMywgN10sICJoaWogb3BxIlszXSwgIiByc3QgdXZ3
Ils0XSwgImFiYyBkZWYgIlswXSAgICBGQUlMIGV4cGVjdGVkOiBbIiByc3QgdXZ3IlsgOCwgXSJh
YmMgZGVmICJbIDMsICA3LCBdImhpaiBvcHEiWyAzLCAgNywgXSIgcnN0IHV2dyJbIDQsIF0iYWJj
IGRlZiAiWyAwXQotImhpaiBvcHEiWzNdLCAiIHJzdCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAi
aGlqIG9wcSJbIDddCi0iaGlqIG9wcSJbNF0sICIgcnN0IHV2dyJbNF0gICBGQUlMIGV4cGVjdGVk
ICJoaWogb3BxIlsgN10KLSJoaWogb3BxIls1XSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0
ZWQgImhpaiBvcHEiWyA3XQotImhpaiBvcHEiWzZdLCAiIHJzdCB1dnciWzRdICAgRkFJTCBleHBl
Y3RlZCAiaGlqIG9wcSJbIDddCisiYWJjIGRlZiAiWzBdLCAiIHJzdCB1dnciWzRdLCAiaGlqIG9w
cSJbNywgM10sICJhYmMgZGVmICJbNywgM10sICIgcnN0IHV2dyJbOF0KK01vdmUgcmlnaHQgYnkg
b25lIHdvcmQKKyIgcnN0IHV2dyJbOF0sICJhYmMgZGVmICJbMywgN10sICJoaWogb3BxIlszLCA3
XSwgIiByc3QgdXZ3Ils0XSwgImFiYyBkZWYgIlswXQogVGVzdCA2LCBMVFI6CiBNb3ZlIHJpZ2h0
IGJ5IG9uZSB3b3JkCiAiYWJjIGRlZiAiWzAsIDQsIDhdLCAiaGlqIG9wcSJbNF0sICIgcnN0IHV2
dyJbMSwgNSwgOF0KQEAgLTg4LDMyICs3MiwxNCBAQCBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKICJG
RlogTElHIls3LCAzXSwgImFiYyBkZWYiWzRdLCAiQUJEIERTVSAiWzgsIDMsIDBdCiBUZXN0IDE1
LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJBQkQgb3BxIERTVSAiWzAsIDQsIDgsIDEy
XSwgImFiYyBBQUEgZGVmIls4LCA0LCAzXSwgIkZGWiByc3QgTElHIls0LCA4LCAxMV0gICAgRkFJ
TCBleHBlY3RlZDogWyJBQkQgb3BxIERTVSAiWyAwLCAgNCwgIDgsICAxMiwgXSJhYmMgQUFBIGRl
ZiJbIDQsICAzLCBdIkZGWiByc3QgTElHIlsgNCwgIDgsICAxMV0KLSJBQkQgb3BxIERTVSAiWzEy
XSwgImFiYyBBQUEgZGVmIls4XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgNF0KLSJh
YmMgQUFBIGRlZiJbMTAsIDhdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA0XQotImFi
YyBBQUEgZGVmIls5LCA4XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgNF0KKyJBQkQg
b3BxIERTVSAiWzAsIDQsIDgsIDEyXSwgImFiYyBBQUEgZGVmIls0LCAzXSwgIkZGWiByc3QgTElH
Ils0LCA4LCAxMV0KIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJGRlogcnN0IExJRyJbMTEsIDgs
IDRdLCAiYWJjIEFBQSBkZWYiWzMsIDQsIDhdLCAiQUJEIG9wcSBEU1UgIlsxMiwgOCwgNCwgMF0g
ICAgRkFJTCBleHBlY3RlZDogWyJGRlogcnN0IExJRyJbIDExLCAgOCwgIDQsIF0iYWJjIEFBQSBk
ZWYiWyAzLCAgNCwgXSJBQkQgb3BxIERTVSAiWyAxMiwgIDgsICA0LCAgMF0KLSJhYmMgQUFBIGRl
ZiJbNCwgOF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyAxMl0KKyJGRlogcnN0IExJ
RyJbMTEsIDgsIDRdLCAiYWJjIEFBQSBkZWYiWzMsIDRdLCAiQUJEIG9wcSBEU1UgIlsxMiwgOCwg
NCwgMF0KIFRlc3QgMTYsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJBQkQgb3BxIERT
VSAiWzAsIDRdLCAiYWJjIEFBQSBkZWYiWzgsIDRdLCAiQUJEIG9wcSBEU1UgIlsxMiwgMTFdLCAi
RkZaIHJzdCBMSUciWzQsIDgsIDExXSAgICBGQUlMIGV4cGVjdGVkOiBbIkFCRCBvcHEgRFNVICJb
IDAsICA0LCAgOCwgXSJhYmMgQUFBIGRlZiJbIDgsICA3LCBdIkFCRCBvcHEgRFNVICJbIDEyLCAg
MTEsIF0iRkZaIHJzdCBMSUciWyA0LCAgOCwgIDExXQotIkFCRCBvcHEgRFNVICJbNF0sICJhYmMg
QUFBIGRlZiJbOF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyA4XQotIkFCRCBvcHEg
RFNVICJbNV0sICJhYmMgQUFBIGRlZiJbOF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAi
WyA4XQotIkFCRCBvcHEgRFNVICJbNl0sICJhYmMgQUFBIGRlZiJbOF0gICBGQUlMIGV4cGVjdGVk
ICJBQkQgb3BxIERTVSAiWyA4XQotIkFCRCBvcHEgRFNVICJbN10sICJhYmMgQUFBIGRlZiJbOF0g
ICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyA4XQotImFiYyBBQUEgZGVmIls4LCA0XSAg
IEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgN10KLSJhYmMgQUFBIGRlZiJbOSwgNF0gICBG
QUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDddCi0iYWJjIEFBQSBkZWYiWzEwLCA0XSAgIEZB
SUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgN10KLSJhYmMgQUFBIGRlZiJbMTEsIDRdICAgRkFJ
TCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA3XQotImFiYyBBQUEgZGVmIls3LCA0XSAgIEZBSUwg
ZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDEyXQotImFiYyBBQUEgZGVmIls2LCA0XSAgIEZBSUwg
ZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDEyXQotImFiYyBBQUEgZGVmIls1LCA0XSAgIEZBSUwg
ZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDEyXQotTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iRkZa
IHJzdCBMSUciWzExLCA4LCA0XSwgIkFCRCBvcHEgRFNVICJbMTEsIDEyXSwgImFiYyBBQUEgZGVm
Ils3LCA4XSwgIkFCRCBvcHEgRFNVICJbNCwgMF0gICAgRkFJTCBleHBlY3RlZDogWyJGRlogcnN0
IExJRyJbIDExLCAgOCwgIDQsIF0iQUJEIG9wcSBEU1UgIlsgMTEsICAxMiwgXSJhYmMgQUFBIGRl
ZiJbIDcsICA4LCBdIkFCRCBvcHEgRFNVICJbIDgsICA0LCAgMF0KLSJhYmMgQUFBIGRlZiJbOF0s
ICJBQkQgb3BxIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgOF0KLSJG
RlogcnN0IExJRyJbMV0sICJBQkQgb3BxIERTVSAiWzRdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9w
cSBEU1UgIlsgOF0KLSJGRlogcnN0IExJRyJbMl0sICJBQkQgb3BxIERTVSAiWzRdICAgRkFJTCBl
eHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgOF0KKyJBQkQgb3BxIERTVSAiWzAsIDQsIDhdLCAiYWJj
IEFBQSBkZWYiWzgsIDddLCAiQUJEIG9wcSBEU1UgIlsxMiwgMTFdLCAiRkZaIHJzdCBMSUciWzQs
IDgsIDExXQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiRkZaIHJzdCBMSUciWzExLCA4LCA0XSwg
IkFCRCBvcHEgRFNVICJbMTEsIDEyXSwgImFiYyBBQUEgZGVmIls3LCA4XSwgIkFCRCBvcHEgRFNV
ICJbOCwgNCwgMF0KIFRlc3QgMTcsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAogIkFCRCBv
cHEgRFNVICJbMCwgNCwgOCwgMTJdLCAiYWJjIEFBQSBkZWYiWzQsIDhdLCAiRkZaIHJzdCBMSUci
WzQsIDgsIDExXQpAQCAtMTMxLDE0ICs5Nyw3IEBAIE1vdmUgbGVmdCBieSBvbmUgd29yZAogIkZG
WiJbM10sICJiYmIgQUFBICJbNywgNF0sICJhYWEgIls0LCAwXQogVGVzdCAyMCwgUlRMOgogTW92
ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iQUJEIG9wcSByc3QgRFNVICJbMCwgNCwgNywgMTIsIDE2XSwg
ImFiYyB1dncgQUFBIGRlZiBsbW4iWzEyLCA4LCA3LCAzXSwgIkFCVyBoaWogeHl6IEZYWCJbNCwg
NywgMTIsIDE1XSAgICBGQUlMIGV4cGVjdGVkOiBbIkFCRCBvcHEgcnN0IERTVSAiWyAwLCAgNCwg
IDcsICAxMiwgIDE2LCBdImFiYyB1dncgQUFBIGRlZiBsbW4iWyAxNSwgIDgsICA3LCAgMywgXSJB
QlcgaGlqIHh5eiBGWFgiWyA0LCAgNywgIDEyLCAgMTVdCi0iQUJEIG9wcSByc3QgRFNVICJbMTZd
LCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbMTJdICAgRkFJTCBleHBlY3RlZCAiYWJjIHV2dyBBQUEg
ZGVmIGxtbiJbIDE1XQotImFiYyB1dncgQUFBIGRlZiBsbW4iWzE4LCAxMl0gICBGQUlMIGV4cGVj
dGVkICJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsgMTVdCi0iYWJjIHV2dyBBQUEgZGVmIGxtbiJbMTcs
IDEyXSAgIEZBSUwgZXhwZWN0ZWQgImFiYyB1dncgQUFBIGRlZiBsbW4iWyAxNV0KLSJhYmMgdXZ3
IEFBQSBkZWYgbG1uIlsxNiwgMTJdICAgRkFJTCBleHBlY3RlZCAiYWJjIHV2dyBBQUEgZGVmIGxt
biJbIDE1XQotImFiYyB1dncgQUFBIGRlZiBsbW4iWzE1LCAxMl0gICBGQUlMIGV4cGVjdGVkICJh
YmMgdXZ3IEFBQSBkZWYgbG1uIlsgOF0KLSJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsxNCwgMTJdICAg
RkFJTCBleHBlY3RlZCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbIDhdCi0iYWJjIHV2dyBBQUEgZGVm
IGxtbiJbMTMsIDEyXSAgIEZBSUwgZXhwZWN0ZWQgImFiYyB1dncgQUFBIGRlZiBsbW4iWyA4XQor
IkFCRCBvcHEgcnN0IERTVSAiWzAsIDQsIDcsIDEyLCAxNl0sICJhYmMgdXZ3IEFBQSBkZWYgbG1u
IlsxNSwgOCwgNywgM10sICJBQlcgaGlqIHh5eiBGWFgiWzQsIDcsIDEyLCAxNV0KIE1vdmUgcmln
aHQgYnkgb25lIHdvcmQKICJBQlcgaGlqIHh5eiBGWFgiWzE1LCAxMiwgNywgNF0sICJhYmMgdXZ3
IEFBQSBkZWYgbG1uIlszLCA3LCA4LCAxNV0sICJBQkQgb3BxIHJzdCBEU1UgIlsxNiwgMTIsIDcs
IDQsIDBdCiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29y
ZC12aXN1YWxseS1zaW5nbGUtc3BhY2Utb25lLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxs
eS1zaW5nbGUtc3BhY2Utb25lLWVsZW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMTA0NzMp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHkt
c2luZ2xlLXNwYWNlLW9uZS1lbGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
ODIsNiArODIsMjEgQEAgTW92ZSByaWdodCBieSBvbmUgd29yZAogIlpRQiBhYmMgUklHIlsxMSwg
OCwgNCwgMF0KIFRlc3QgMTcsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJhYmMg4aqc
QkFEIGRlZuGqnSB4eXoiWzAsIDgsIDE0LCAxN10gICAgRkFJTCBleHBlY3RlZDogWzAsIDksIDgs
IDE0LCAxN10KKyJhYmMg4aqcQkFEIGRlZuGqnSB4eXoiWzAsIDhdICAgRkFJTCBleHBlY3RlZCA5
CisiYWJjIOGqnEJBRCBkZWbhqp0geHl6IlsxLCA4XSAgIEZBSUwgZXhwZWN0ZWQgOQorImFiYyDh
qpxCQUQgZGVm4aqdIHh5eiJbMiwgOF0gICBGQUlMIGV4cGVjdGVkIDkKKyJhYmMg4aqcQkFEIGRl
ZuGqnSB4eXoiWzMsIDhdICAgRkFJTCBleHBlY3RlZCA5CisiYWJjIOGqnEJBRCBkZWbhqp0geHl6
Ils0LCA4XSAgIEZBSUwgZXhwZWN0ZWQgOQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiYWJjIOGq
nEJBRCBkZWbhqp0geHl6IlsxNywgMTQsIDgsIDksIDBdCitUZXN0IDE4LCBMVFI6CitNb3ZlIHJp
Z2h0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBoaWogIlswLCA0LCA4XSwgIiBvcHEgcnN0ICJbMSwg
NSwgOF0KK01vdmUgbGVmdCBieSBvbmUgd29yZAorIiBvcHEgcnN0ICJbOCwgNSwgMV0sICJhYmMg
ZGVmIGhpaiAiWzgsIDQsIDBdCitUZXN0IDE5LCBMVFI6CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3Jk
CiA8RElWPlswXQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCiA8RElWPlswXQpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXNpbmdsZS1zcGFj
ZS1vbmUtZWxlbWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1zaW5nbGUtc3BhY2Utb25lLWVsZW1lbnQuaHRt
bAkocmV2aXNpb24gMTEwNDczKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92
ZS1ieS13b3JkLXZpc3VhbGx5LXNpbmdsZS1zcGFjZS1vbmUtZWxlbWVudC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC02NSw2ICs2NSwxMiBAQCB3aGVyZSBjaGlsZF9ub2RlX2luZGV4IGlzIG9wdGlv
bmFsLCBkZWZhCiA8ZGl2IGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0i
MCA0IDggMTF8MTEgOCA0IDAiIGNvbnRlbnRlZGl0YWJsZT7Xqdeg15EgYWJjINeh15jXljwvZGl2
PgogPGRpdiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjExIDggNCAw
fDAgNCA4IDExIiBjb250ZW50ZWRpdGFibGU+16nXoNeRIGFiYyDXodeY15Y8L2Rpdj4KIAorPCEt
LSBUZXN0IHdpdGggQmlkaSBjb250cm9sIGNoYXJhY3RlcnMgLS0+Cis8ZGl2IGRpcj1sdHIgY2xh
c3M9InRlc3RfbW92ZV9ieV93b3JkIiBpZD0ibm90UmVhY2hhYmxlUG9zaXRpb24iIHRpdGxlPSIw
IDkgOCAxNCAxN3wxNyAxNCA4IDkgMCIgY29udGVudGVkaXRhYmxlPmFiYyAmI3gyMDJiO9eR15DX
kyBkZWYmI3gyMDJjOyB4eXo8L2Rpdj4KKworPCEtLSBUZXN0IHdpdGggaW1hZ2UgLS0gbm9uLWlu
bGluZS10ZXh0LWJveCAtLT4KKzxkaXYgaWQ9ImRfMSIgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3Zl
X2J5X3dvcmQiIGNvbnRlbnRlZGl0YWJsZSB0aXRsZT0iW2RfMSwgMCwgMV1bZF8xLCA0LCAxXVtk
XzEsIDgsIDFdW2RfMSwgMSwgM11bZF8xLCA1LCAzXVtkXzEsIDgsIDNdfFtkXzEsIDgsIDNdW2Rf
MSwgNSwgM11bZF8xLCAxLCAzXVtkXzEsIDgsIDFdW2RfMSwgNCwgMV1bZF8xLCAwLCAxXSI+YWJj
IGRlZiBoaWogPGltZyBzcmM9Li4vLi4vYWNjZXNzaWJpbGl0eS9yZXNvdXJjZXMvY2FrZS5wbmc+
IG9wcSByc3QgPC9kaXY+CisKIDwhLS0gZW1wdHkgZGl2IC0tPgogPGRpdiBkaXI9bHRyIGNsYXNz
PSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjB8MCIgY29udGVudGVkaXRhYmxlPjwvZGl2Pgog
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFs
bHktd3JvbmctbGVmdC1yaWdodC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXdyb25nLWxlZnQtcmln
aHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXdyb25nLWxlZnQtcmlnaHQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK2FiYyDXqdep16kgZGVmINep16DXkSBvcHEg
16HXmNeWIHV2dyDXqdep16kgeHl6CitjdHJsL2FsdCtyaWdodCBmcm9tIGxlZnQgb2Yg16HXmNeW
IHNob3VsZCBtb3ZlIGN1cnNvciB0byBsZWZ0IG9mIG9wcS4gQnV0IGl0IGFjdHVhbGx5IG1vdmVk
IHRvIHBvc2l0aW9uIDQKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUt
Ynktd29yZC12aXN1YWxseS13cm9uZy1sZWZ0LXJpZ2h0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXdyb25nLWxl
ZnQtcmlnaHQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL21vdmUtYnktd29yZC12aXN1YWxseS13cm9uZy1sZWZ0LXJpZ2h0Lmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InJl
c291cmNlcy9leHRlbmQtc2VsZWN0aW9uLmNzcyIgLz4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
bW92ZS1ieS13b3JkLXZpc3VhbGx5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitvbmxvYWQgPSBm
dW5jdGlvbigpIHsKKyAgICB0cnkgeworICAgICAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVj
dGlvbigpOworICAgICAgICBzZWwuc2V0UG9zaXRpb24oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2RfMScpLCAwKTsgCisgICAgICAgIHNlbC5tb2RpZnkoIm1vdmUiLCAicmlnaHQiLCAid29yZCIp
OworICAgICAgICBpZiAoc2VsLmFuY2hvck9mZnNldCA9PSA1KQorICAgICAgICAgICAgbG9nKCJQ
QVNTIik7ICAgICAgIAorICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2coImN0cmwvYWx0K3Jp
Z2h0IGZyb20gbGVmdCBvZiDXodeY15Ygc2hvdWxkIG1vdmUgY3Vyc29yIHRvIGxlZnQgb2Ygb3Bx
LiAiICsKKyAgICAgICAgICAgICAgICAiQnV0IGl0IGFjdHVhbGx5IG1vdmVkIHRvIHBvc2l0aW9u
ICIgKyBzZWwuYW5jaG9yT2Zmc2V0KTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgICBmbHVzaExv
ZygpOworICAgIH0KK307CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0RWRpdGluZ0JlaGF2aW9yKCd3aW4nKTsKK30KKzwvc2NyaXB0PgorPHRpdGxlPndy
b25nIHJlc3VsdCBiZWNhdXNlIFZpc2libGVQb3NpdGlvbi5sZWZ0KCkvcmlnaHQoKSByZXR1cm5z
IHdyb25nIHJlc3VsdDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InRlc3RNb3Zl
QnlXb3JkIj4KKzxkaXYgZGlyPWx0ciBjb250ZW50ZWRpdGFibGU+YWJjINep16nXqSBkZWYgPHNw
YW4gaWQ9ImRfMSIgZGlyPXJ0bD7Xqdeg15EgIG9wcSDXodeY15Y8L3NwYW4+ICB1dncg16nXqdep
IHh5ejwvZGl2PgorPC9kaXY+Cis8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvbW92ZS1i
eS13b3JkLXZpc3VhbGx5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL3Jlc291cmNlcy9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHkuanMJKHJldmlzaW9uIDExMDQ3
MykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9tb3ZlLWJ5LXdv
cmQtdmlzdWFsbHkuanMJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw2ICsxNzUsMTAgQEAgZnVuY3Rp
b24gbW92ZUJ5V29yZE9uRXZlcnlDaGFyKHNlbCwgdGVzdAogICAgIHZhciBwcmV2T2Zmc2V0ID0g
c2VsLmFuY2hvck9mZnNldDsKICAgICB2YXIgcHJldk5vZGUgPSBzZWwuYW5jaG9yTm9kZTsKIAor
ICAgIC8vIGFkdmFuY2UgaXMgdXNlZCB0byBzcGVjaWFsIGhhbmRsaW5nIHRoZSBjYXNlIHRoYXQg
YXJyb3cga2V5IGlzIG5vdCBhYmxlIHRvIHJlYWNoIGNlcnRhaW4gcG9zaXRpb24uCisgICAgLy8g
SW4gd2hpY2ggY2FzZSwgd2Ugd2lsbCBuZWVkIHRvIG1hbnVhbGx5IHNraXAgdGhpcyB3b3JkIGJy
ZWFrIHBvc2l0aW9uIGluIG9yZGVyIHRvIHJlcG9ydCBjb3JyZWN0IGxvZy4KKyAgICB2YXIgYWR2
YW5jZSA9IHRydWU7IAorCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgdmFyIHBvc2l0aW9ucyA9
IFtdOwogICAgICAgICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6IHNlbC5hbmNob3JOb2RlLCBvZmZz
ZXQ6IHNlbC5hbmNob3JPZmZzZXQgfSk7CkBAIC0yMDUsOSArMjA5LDE1IEBAIGZ1bmN0aW9uIG1v
dmVCeVdvcmRPbkV2ZXJ5Q2hhcihzZWwsIHRlc3QKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIHBvc2l0aW9uID0geyBub2RlOiBzZWwuYW5jaG9yTm9kZSwgb2Zmc2V0OiBzZWwuYW5jaG9y
T2Zmc2V0IH07Ci0gICAgICAgIGlmICh3b3JkQnJlYWtJbmRleCA8IHdvcmRCcmVha3MubGVuZ3Ro
IAorICAgICAgICBpZiAoKHdvcmRCcmVha0luZGV4IDwgd29yZEJyZWFrcy5sZW5ndGggCiAgICAg
ICAgICAgICAmJiBwb3NpdGlvbkVxdWFsVG9Xb3JkQnJlYWsocG9zaXRpb24sIHdvcmRCcmVha3Nb
d29yZEJyZWFrSW5kZXhdKSkKKyAgICAgICAgICAgIHx8ICh0ZXN0ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJub3RSZWFjaGFibGVQb3NpdGlvbiIpCisgICAgICAgICAgICAmJiBzZWwuYW5j
aG9yT2Zmc2V0ID4gd29yZEJyZWFrc1t3b3JkQnJlYWtJbmRleF0KKyAgICAgICAgICAgICYmIGFk
dmFuY2UKKyAgICAgICAgICAgICYmIHNlYXJjaERpcmVjdGlvbiA9PSAicmlnaHQiKSkgewogICAg
ICAgICAgICAgKyt3b3JkQnJlYWtJbmRleDsKKyAgICAgICAgICAgIGFkdmFuY2UgPSBmYWxzZTsK
KyAgICAgICAgfQogCiAgICAgICAgIHByZXZOb2RlID0gc2VsLmFuY2hvck5vZGU7CiAgICAgICAg
IHByZXZPZmZzZXQgPSBzZWwuYW5jaG9yT2Zmc2V0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132121</attachid>
            <date>2012-03-15 14:27:57 -0700</date>
            <delta_ts>2012-03-16 01:27:44 -0700</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>78856.v5</filename>
            <type>text/plain</type>
            <size>80259</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDg4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEyLTAzLTE1ICBYaWFvbWVp
IEppICA8eGppQGNocm9taXVtLm9yZz4KKworICAgICAgICBVc2luZyBJQ1UgYnJlYWsgaXRlcmF0
b3IgdG8gc2ltcGxpZnkgdmlzdWFsIHdvcmQgbW92ZW1lbnQgaW1wbGVtZW50YXRpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVs
aWVzIG9uIElDVSB3b3JkIGJyZWFrIGl0ZXJhdG9yIGFuZCBjdXJzb3IgdmlzdWFsIG1vdmVtZW50
IGJ5IGNoYXJhY3RlciB0byBnZXQgdGhlIHdvcmQgYnJlYWsKKyAgICAgICAgcG9zaXRpb24gaW4g
dmlzdWFsIG9yZGVyLiBJdCByZWR1Y2VzIHRoZSBjb21wbGV4aXR5IG9mIG9sZCBpbXBsZW1lbnRh
dGlvbi4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlz
dWFsbHktd3JvbmctbGVmdC1yaWdodC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcDogRXhjbHVkZSBXaW5DRSBmcm9tIHZpc3VhbCB3b3JkIG1vdmVtZW50IHNpbmNl
IGlzV29yZFRleHRCcmVhayBpcyBub3QgaW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQpOgorICAgICAgICAqIGVkaXRpbmcvdmlzaWJs
ZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnByZXZp
b3VzTGVhZldpdGhTYW1lRWRpdGFiaWxpdHkpOiBKdXN0IG1vdmluZyB0byB0aGUgdG9wIHdpdGhv
dXQgZnVuY3Rpb25hbGl0eSBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdOb2Rl
V2l0aE5vbklubGluZVJlbmRlcmVyKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpuZXh0TGVh
ZldpdGhTYW1lRWRpdGFiaWxpdHkpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnByZXZpb3Vz
Um9vdElubGluZUJveCk6IHJldHVybiBwcmV2aW91cyBSb290SW5saW5lQm94IHdoaWNoIGlzIGlu
IGRpZmZlcmVudCByZW5kZXJlci4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRSb290SW5saW5lQm94
KTogcmV0dXJuIG5leHQgUm9vdElubGluZUJveCB3aGljaCBpcyBpbiBkaWZmZXJlbnQgcmVuZGVy
ZXIuCisgICAgICAgIChXZWJDb3JlOjpib3hJbmRleEluVmVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OnByZXZpb3VzQm94SW5MaW5lKTogcmV0dXJucyBsb2dpY2FsbHkgcHJldmlvdXMgYm94IGlu
IG9uZSBsaW5lLgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbGx5UHJldmlvdXNCb3gpOiByZXR1
cm5zIGxvZ2ljYWxseSBwcmV2aW91cyBib3guCisgICAgICAgIChXZWJDb3JlOjpuZXh0Qm94SW5M
aW5lKTogcmV0dXJucyBsb2dpY2FsbHkgbmV4dCBib3ggaW4gb25lIGxpbmUuCisgICAgICAgIChX
ZWJDb3JlOjpsb2dpY2FsbHlOZXh0Qm94KTogcmV0dXJucyBsb2dpY2FsbHkgbmV4dCBib3guCisg
ICAgICAgIChXZWJDb3JlOjp3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNldEJvdW5kYXJ5KTog
Y3JlYXRlIHdvcmQgYnJlYWsgaXRlcmF0b3IgZm9yIHBvc2l0aW9uIHRoYXQgaXMgYSBib3gncyBt
aW4gb2Zmc2V0LgorICAgICAgICAoV2ViQ29yZTo6d29yZEJyZWFrSXRlcmF0b3JGb3JNYXhPZmZz
ZXRCb3VuZGFyeSk6IGNyZWF0ZSB3b3JkIGJyZWFrIGl0ZXJhdG9yIGZvciBwb3NpdGlvbiB0aGF0
IGlzIGEgYm94J3MgbWF4IG9mZnNldC4KKyAgICAgICAgKFdlYkNvcmU6OmlzTG9naWNhbFN0YXJ0
T2ZXb3JkKTogcmV0dXJuIHdoZXRoZXIgYSBwb3NpdGlvbiBpcyBsb2dpY2FsbHkgc3RhcnQgb2Yg
d29yZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzbG9naWNhbEVuZE9mV29yZCk6IHJldHVybiB3aGV0
aGVyIGEgcG9zaXRpb24gaXMgbG9naWNhbGx5IGVuZCBvZiB3b3JkLgorICAgICAgICAoV2ViQ29y
ZTo6dmlzdWFsV29yZFBvc2l0aW9uKTogcmV0dXJucyB0aGUgdmlzdWFsIGxlZnQgb3IgcmlnaHQg
d29yZCBwb3NpdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmxlZnRXb3JkUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6cmlnaHRXb3JkUG9zaXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3IuaDogQWRkIGlzV29yZFRleHRCcmVhaygpLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjppc1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aXNXb3JkVGV4dEJyZWFrKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppc1dvcmRUZXh0QnJlYWspOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC93aW5jZS9UZXh0QnJlYWtJdGVyYXRvcldpbkNFLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzV29yZFRleHRCcmVhayk6CisgICAgICAgIChXZWJDb3JlKToK
KwogMjAxMi0wMy0xNSAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFzc2VydGlvbiBmYWlsdXJlcyBpbiBXZWJDb3JlOjpQYWdlOjpnb0JhY2tPckZvcndhcmQg
Y2F1c2luZyBtdWx0aXBsZSAiY3Jhc2hlcyIgb24gTGlvbiBJbnRlbApJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDExMDQ3MykKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NDIsMTEgKzY0MiwxNCBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlm
eU1vCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50
KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLnJpZ2h0KHRydWUpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyNpZiAhT1MoV0lOQ0UpCisgICAgICAgIC8vIFZp
c3VhbCB3b3JkIG1vdmVtZW50IHJlbGllcyBvbiBpc1dvcmRUZXh0QnJlYWsgd2hpY2ggaXMgbm90
IGltcGxlbWVudGVkIGluIFdpbkNFLgogICAgICAgICBpZiAodmlzdWFsV29yZE1vdmVtZW50RW5h
YmxlZCgpCiAgICAgICAgICAgICB8fCAobV9mcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS0+YmVo
YXZpb3IoKS5zaG91bGRNb3ZlTGVmdFJpZ2h0QnlXb3JkSW5WaXN1YWxPcmRlcigpKSkgewogICAg
ICAgICAgICAgcG9zID0gcmlnaHRXb3JkUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0
aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorI2VuZGlmCiAgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgogICAg
IGNhc2UgTGluZUdyYW51bGFyaXR5OgogICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CkBA
IC04MDksMTEgKzgxMiwxMyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlm
eU1vCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50
KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLmxlZnQodHJ1ZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorI2lmICFPUyhXSU5DRSkKICAgICAgICAgaWYgKHZp
c3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoKQogICAgICAgICAgICAgfHwgKG1fZnJhbWUgJiYgbV9m
cmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxkTW92ZUxlZnRSaWdodEJ5V29yZEluVmlz
dWFsT3JkZXIoKSkpIHsKICAgICAgICAgICAgIHBvcyA9IGxlZnRXb3JkUG9zaXRpb24oVmlzaWJs
ZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorI2VuZGlmCiAgICAgY2FzZSBTZW50ZW5j
ZUdyYW51bGFyaXR5OgogICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgogICAgIGNhc2UgUGFyYWdy
YXBoR3JhbnVsYXJpdHk6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5p
dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0
cy5jcHAJKHJldmlzaW9uIDExMDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJs
ZV91bml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDM3NSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIFdU
Rjo6VW5pY29kZTsKIAorc3RhdGljIE5vZGUqIHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFiaWxp
dHkoTm9kZSogbm9kZSwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSkKK3sKKyAgICBib29sIGVk
aXRhYmxlID0gbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKGVkaXRhYmxlVHlwZSk7CisgICAgbm9k
ZSA9IG5vZGUtPnByZXZpb3VzTGVhZk5vZGUoKTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAg
ICBpZiAoZWRpdGFibGUgPT0gbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKGVkaXRhYmxlVHlwZSkp
CisgICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAgICAgICAgbm9kZSA9IG5vZGUtPnByZXZpb3Vz
TGVhZk5vZGUoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBOb2RlKiBlbmNs
b3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKE5vZGUqIG5vZGUpCit7CisgICAgZm9yICg7
IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgaWYgKG5vZGUtPnJl
bmRlcmVyKCkgJiYgIW5vZGUtPnJlbmRlcmVyKCktPmlzSW5saW5lKCkpCisgICAgICAgICAgICBy
ZXR1cm4gbm9kZTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBOb2RlKiBuZXh0
TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkoTm9kZSogbm9kZSwgaW50IG9mZnNldCkKK3sKKyAgICBi
b29sIGVkaXRhYmxlID0gbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKCk7CisgICAgQVNTRVJUKG9m
ZnNldCA+PSAwKTsKKyAgICBOb2RlKiBjaGlsZCA9IG5vZGUtPmNoaWxkTm9kZShvZmZzZXQpOwor
ICAgIG5vZGUgPSBjaGlsZCA/IGNoaWxkLT5uZXh0TGVhZk5vZGUoKSA6IG5vZGUtPmxhc3REZXNj
ZW5kYW50KCktPm5leHRMZWFmTm9kZSgpOworICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgIGlm
IChlZGl0YWJsZSA9PSBub2RlLT5yZW5kZXJlcklzRWRpdGFibGUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBub2RlOworICAgICAgICBub2RlID0gbm9kZS0+bmV4dExlYWZOb2RlKCk7CisgICAgfQor
ICAgIHJldHVybiAwOworfQorCitzdGF0aWMgTm9kZSogbmV4dExlYWZXaXRoU2FtZUVkaXRhYmls
aXR5KE5vZGUqIG5vZGUsIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUgPSBDb250ZW50SXNFZGl0
YWJsZSkKK3sKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIGJv
b2wgZWRpdGFibGUgPSBub2RlLT5yZW5kZXJlcklzRWRpdGFibGUoZWRpdGFibGVUeXBlKTsKKyAg
ICBub2RlID0gbm9kZS0+bmV4dExlYWZOb2RlKCk7CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAg
ICAgaWYgKGVkaXRhYmxlID09IG5vZGUtPnJlbmRlcmVySXNFZGl0YWJsZShlZGl0YWJsZVR5cGUp
KQorICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0TGVh
Zk5vZGUoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIEZJWE1FOiBjb25zb2xpZGF0
ZSB3aXRoIGNvZGUgaW4gcHJldmlvdXNMaW5lUG9zaXRpb24uCitzdGF0aWMgY29uc3QgUm9vdElu
bGluZUJveCogcHJldmlvdXNSb290SW5saW5lQm94KGNvbnN0IElubGluZUJveCogYm94LCBjb25z
dCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKK3sKKyAgICBOb2RlKiBoaWdoZXN0
Um9vdCA9IGhpZ2hlc3RFZGl0YWJsZVJvb3QodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50
KCksIENvbnRlbnRJc0VkaXRhYmxlKTsKKyAgICBOb2RlKiBub2RlID0gYm94LT5yZW5kZXJlcigp
LT5ub2RlKCk7CisgICAgTm9kZSogZW5jbG9zaW5nQmxvY2tOb2RlID0gZW5jbG9zaW5nTm9kZVdp
dGhOb25JbmxpbmVSZW5kZXJlcihub2RlKTsKKyAgICBOb2RlKiBwcmV2aW91c05vZGUgPSBwcmV2
aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5vZGUsIENvbnRlbnRJc0VkaXRhYmxlKTsKKwor
ICAgIHdoaWxlIChwcmV2aW91c05vZGUgJiYgZW5jbG9zaW5nQmxvY2tOb2RlID09IGVuY2xvc2lu
Z05vZGVXaXRoTm9uSW5saW5lUmVuZGVyZXIocHJldmlvdXNOb2RlKSkKKyAgICAgICAgcHJldmlv
dXNOb2RlID0gcHJldmlvdXNMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShwcmV2aW91c05vZGUsIENv
bnRlbnRJc0VkaXRhYmxlKTsKKyAgCisgICAgd2hpbGUgKHByZXZpb3VzTm9kZSAmJiAhcHJldmlv
dXNOb2RlLT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBpZiAoaGlnaGVzdEVkaXRhYmxlUm9v
dChmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocHJldmlvdXNOb2RlKSwgQ29udGVudElzRWRp
dGFibGUpICE9IGhpZ2hlc3RSb290KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgUG9z
aXRpb24gcG9zID0gcHJldmlvdXNOb2RlLT5oYXNUYWdOYW1lKGJyVGFnKSA/IHBvc2l0aW9uQmVm
b3JlTm9kZShwcmV2aW91c05vZGUpIDoKKyAgICAgICAgICAgIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihwcmV2aW91c05vZGUsIGNhcmV0TWF4T2Zmc2V0KHByZXZpb3VzTm9kZSkpOworICAg
ICAgICAKKyAgICAgICAgaWYgKHBvcy5pc0NhbmRpZGF0ZSgpKSB7CisgICAgICAgICAgICBSZW5k
ZXJlZFBvc2l0aW9uIHJlbmRlcmVkUG9zKHBvcywgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICBS
b290SW5saW5lQm94KiByb290ID0gcmVuZGVyZWRQb3Mucm9vdEJveCgpOworICAgICAgICAgICAg
aWYgKHJvb3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Q7CisgICAgICAgIH0KKworICAg
ICAgICBwcmV2aW91c05vZGUgPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KHByZXZp
b3VzTm9kZSwgQ29udGVudElzRWRpdGFibGUpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwor
c3RhdGljIGNvbnN0IFJvb3RJbmxpbmVCb3gqIG5leHRSb290SW5saW5lQm94KGNvbnN0IElubGlu
ZUJveCogYm94LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKK3sKKyAg
ICBOb2RlKiBoaWdoZXN0Um9vdCA9IGhpZ2hlc3RFZGl0YWJsZVJvb3QodmlzaWJsZVBvc2l0aW9u
LmRlZXBFcXVpdmFsZW50KCksIENvbnRlbnRJc0VkaXRhYmxlKTsKKyAgICBOb2RlKiBub2RlID0g
Ym94LT5yZW5kZXJlcigpLT5ub2RlKCk7CisgICAgTm9kZSogZW5jbG9zaW5nQmxvY2tOb2RlID0g
ZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihub2RlKTsKKyAgICBOb2RlKiBuZXh0
Tm9kZSA9IG5leHRMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShub2RlLCBDb250ZW50SXNFZGl0YWJs
ZSk7CisgICAgd2hpbGUgKG5leHROb2RlICYmIGVuY2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNsb3Np
bmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKG5leHROb2RlKSkKKyAgICAgICAgbmV4dE5vZGUg
PSBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobmV4dE5vZGUsIENvbnRlbnRJc0VkaXRhYmxl
KTsKKyAgCisgICAgd2hpbGUgKG5leHROb2RlICYmICFuZXh0Tm9kZS0+aXNTaGFkb3dSb290KCkp
IHsKKyAgICAgICAgaWYgKGhpZ2hlc3RFZGl0YWJsZVJvb3QoZmlyc3RQb3NpdGlvbkluT3JCZWZv
cmVOb2RlKG5leHROb2RlKSwgQ29udGVudElzRWRpdGFibGUpICE9IGhpZ2hlc3RSb290KQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgUG9zaXRpb24gcG9zOworICAgICAgICBwb3MgPSBj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obmV4dE5vZGUsIGNhcmV0TWluT2Zmc2V0KG5leHRO
b2RlKSk7CisgICAgICAgIAorICAgICAgICBpZiAocG9zLmlzQ2FuZGlkYXRlKCkpIHsKKyAgICAg
ICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3MocG9zLCBET1dOU1RSRUFNKTsKKyAg
ICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIHJvb3QgPSByZW5kZXJlZFBvcy5yb290Qm94KCk7Cisg
ICAgICAgICAgICBpZiAocm9vdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcm9vdDsKKyAgICAg
ICAgfQorCisgICAgICAgIG5leHROb2RlID0gbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5l
eHROb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitz
dGF0aWMgaW50IGJveEluZGV4SW5WZWN0b3IoY29uc3QgSW5saW5lVGV4dEJveCogYm94LCBjb25z
dCBWZWN0b3I8SW5saW5lQm94Kj4mIGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKQoreworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgaWYgKGJveCA9PSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcltpXSkKKyAgICAg
ICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0
IElubGluZVRleHRCb3gqIHByZXZpb3VzQm94SW5MaW5lKGNvbnN0IFJvb3RJbmxpbmVCb3gqIHJv
b3QsIGNvbnN0IElubGluZVRleHRCb3gqIGJveCwgVmVjdG9yPElubGluZUJveCo+JiBsZWFmQm94
ZXNJbkxvZ2ljYWxPcmRlcikKK3sKKyAgICBpZiAoIXJvb3QpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuY2xlYXIoKTsKKyAgICByb290LT5jb2xsZWN0
TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworCisgICAg
Ly8gSWYgYm94IGlzIG51bGwsIHJvb3QgaXMgYm94J3MgcHJldmlvdXMgUm9vdElubGluZUJveCwg
YW5kIHByZXZpb3VzQm94IGlzIHRoZSBsYXN0IGxvZ2ljYWwgYm94IGluIHJvb3QuCisgICAgaW50
IGJveEluZGV4ID0gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpIC0gMTsKKyAgICBpZiAo
Ym94KQorICAgICAgICBib3hJbmRleCA9IGJveEluZGV4SW5WZWN0b3IoYm94LCBsZWFmQm94ZXNJ
bkxvZ2ljYWxPcmRlcikgLSAxOworCisgICAgZm9yIChpbnQgaSA9IGJveEluZGV4OyBpID49IDA7
IC0taSkgeworICAgICAgICBpZiAobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbaV0tPmlzSW5saW5l
VGV4dEJveCgpKQorICAgICAgICAgICAgcmV0dXJuIHRvSW5saW5lVGV4dEJveChsZWFmQm94ZXNJ
bkxvZ2ljYWxPcmRlcltpXSk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBj
b25zdCBJbmxpbmVUZXh0Qm94KiBsb2dpY2FsbHlQcmV2aW91c0JveChjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHZpc2libGVQb3NpdGlvbiwgY29uc3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwgYm9v
bCYgcHJldmlvdXNCb3hJbkRpZmZlcmVudEJsb2NrKQoreworICAgIGNvbnN0IElubGluZUJveCog
c3RhcnRCb3ggPSB0ZXh0Qm94OworICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBsZWFmQm94ZXNJbkxv
Z2ljYWxPcmRlcjsKKworICAgIGNvbnN0IElubGluZVRleHRCb3gqIHByZXZpb3VzQm94ID0gcHJl
dmlvdXNCb3hJbkxpbmUoc3RhcnRCb3gtPnJvb3QoKSwgdGV4dEJveCwgbGVhZkJveGVzSW5Mb2dp
Y2FsT3JkZXIpOworICAgIGlmIChwcmV2aW91c0JveCkKKyAgICAgICAgcmV0dXJuIHByZXZpb3Vz
Qm94OworCisgICAgcHJldmlvdXNCb3ggPSBwcmV2aW91c0JveEluTGluZShzdGFydEJveC0+cm9v
dCgpLT5wcmV2Um9vdEJveCgpLCAwLCBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcik7CisgICAgaWYg
KHByZXZpb3VzQm94KQorICAgICAgICByZXR1cm4gcHJldmlvdXNCb3g7CisKKyAgICB3aGlsZSAo
MSkgeyAKKyAgICAgICAgY29uc3QgUm9vdElubGluZUJveCogcHJldmlvdXNSb290ID0gcHJldmlv
dXNSb290SW5saW5lQm94KHN0YXJ0Qm94LCB2aXNpYmxlUG9zaXRpb24pOworICAgICAgICBpZiAo
IXByZXZpb3VzUm9vdCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHByZXZpb3VzQm94
ID0gcHJldmlvdXNCb3hJbkxpbmUocHJldmlvdXNSb290LCAwLCBsZWFmQm94ZXNJbkxvZ2ljYWxP
cmRlcik7CisgICAgICAgIGlmIChwcmV2aW91c0JveCkgeworICAgICAgICAgICAgcHJldmlvdXNC
b3hJbkRpZmZlcmVudEJsb2NrID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0Jv
eDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6
ZSgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHN0YXJ0Qm94ID0gbGVhZkJveGVzSW5M
b2dpY2FsT3JkZXJbMF07CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qg
SW5saW5lVGV4dEJveCogbmV4dEJveEluTGluZShjb25zdCBSb290SW5saW5lQm94KiByb290LCBj
b25zdCBJbmxpbmVUZXh0Qm94KiBib3gsIFZlY3RvcjxJbmxpbmVCb3gqPiYgbGVhZkJveGVzSW5M
b2dpY2FsT3JkZXIpCit7CisgICAgaWYgKCFyb290KQorICAgICAgICByZXR1cm4gMDsKKworICAg
IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLmNsZWFyKCk7CisgICAgcm9vdC0+Y29sbGVjdExlYWZC
b3hlc0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKKworICAgIC8vIElm
IGJveCBpcyBudWxsLCByb290IGlzIGJveCdzIG5leHQgUm9vdElubGluZUJveCwgYW5kIG5leHRC
b3ggaXMgdGhlIGZpcnN0IGxvZ2ljYWwgYm94IGluIHJvb3QuCisgICAgLy8gT3RoZXJ3aXNlLCBy
b290IGlzIGJveCdzIFJvb3RJbmxpbmVCb3gsIGFuZCBuZXh0Qm94IGlzIHRoZSBuZXh0IGxvZ2lj
YWwgYm94IGluIHRoZSBzYW1lIGxpbmUuCisgICAgc2l6ZV90IG5leHRCb3hJbmRleCA9IDA7Cisg
ICAgaWYgKGJveCkKKyAgICAgICAgbmV4dEJveEluZGV4ID0gYm94SW5kZXhJblZlY3Rvcihib3gs
IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKSArIDE7CisKKyAgICBmb3IgKHNpemVfdCBpID0gbmV4
dEJveEluZGV4OyBpIDwgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgaWYgKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2ldLT5pc0lubGluZVRleHRCb3goKSkK
KyAgICAgICAgICAgIHJldHVybiB0b0lubGluZVRleHRCb3gobGVhZkJveGVzSW5Mb2dpY2FsT3Jk
ZXJbaV0pOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgY29uc3QgSW5saW5l
VGV4dEJveCogbG9naWNhbGx5TmV4dEJveChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQ
b3NpdGlvbiwgY29uc3QgSW5saW5lVGV4dEJveCogdGV4dEJveCwgYm9vbCYgbmV4dEJveEluRGlm
ZmVyZW50QmxvY2spCit7CisgICAgY29uc3QgSW5saW5lQm94KiBzdGFydEJveCA9IHRleHRCb3g7
CisgICAgVmVjdG9yPElubGluZUJveCo+IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyOworCisgICAg
Y29uc3QgSW5saW5lVGV4dEJveCogbmV4dEJveCA9IG5leHRCb3hJbkxpbmUoc3RhcnRCb3gtPnJv
b3QoKSwgdGV4dEJveCwgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworICAgIGlmIChuZXh0Qm94
KQorICAgICAgICByZXR1cm4gbmV4dEJveDsKKworICAgIG5leHRCb3ggPSBuZXh0Qm94SW5MaW5l
KHN0YXJ0Qm94LT5yb290KCktPm5leHRSb290Qm94KCksIDAsIGxlYWZCb3hlc0luTG9naWNhbE9y
ZGVyKTsKKyAgICBpZiAobmV4dEJveCkKKyAgICAgICAgcmV0dXJuIG5leHRCb3g7CisKKyAgICB3
aGlsZSAoMSkgeyAKKyAgICAgICAgY29uc3QgUm9vdElubGluZUJveCogbmV4dFJvb3QgPSBuZXh0
Um9vdElubGluZUJveChzdGFydEJveCwgdmlzaWJsZVBvc2l0aW9uKTsKKyAgICAgICAgaWYgKCFu
ZXh0Um9vdCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIG5leHRCb3ggPSBuZXh0Qm94
SW5MaW5lKG5leHRSb290LCAwLCBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcik7CisgICAgICAgIGlm
IChuZXh0Qm94KSB7CisgICAgICAgICAgICBuZXh0Qm94SW5EaWZmZXJlbnRCbG9jayA9IHRydWU7
CisgICAgICAgICAgICByZXR1cm4gbmV4dEJveDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
bGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIHN0YXJ0Qm94ID0gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbMF07CisgICAgfQorICAgIHJl
dHVybiAwOworfQorCitzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9y
Rm9yTWluT2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRp
b24sIGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gsCisgICAgIGludCYgcHJldmlvdXNCb3hM
ZW5ndGgsIGJvb2wmIHByZXZpb3VzQm94SW5EaWZmZXJlbnRCbG9jaykKK3sKKyAgICBwcmV2aW91
c0JveEluRGlmZmVyZW50QmxvY2sgPSBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhl
IGNhc2Ugd2hlbiB3ZSBkb24ndCBoYXZlIGFuIGlubGluZSB0ZXh0IGJveC4KKyAgICBjb25zdCBJ
bmxpbmVUZXh0Qm94KiBwcmV2aW91c0JveCA9IGxvZ2ljYWxseVByZXZpb3VzQm94KHZpc2libGVQ
b3NpdGlvbiwgdGV4dEJveCwgcHJldmlvdXNCb3hJbkRpZmZlcmVudEJsb2NrKTsKKworICAgIGlu
dCBsZW4gPSAwOworICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOworICAgIGlmIChwcmV2
aW91c0JveCkgeworICAgICAgICBwcmV2aW91c0JveExlbmd0aCA9IHByZXZpb3VzQm94LT5sZW4o
KTsKKyAgICAgICAgc3RyaW5nLmFwcGVuZChwcmV2aW91c0JveC0+dGV4dFJlbmRlcmVyKCktPnRl
eHQoKS0+Y2hhcmFjdGVycygpICsgcHJldmlvdXNCb3gtPnN0YXJ0KCksIHByZXZpb3VzQm94TGVu
Z3RoKTsgCisgICAgICAgIGxlbiArPSBwcmV2aW91c0JveExlbmd0aDsKKyAgICB9CisgICAgc3Ry
aW5nLmFwcGVuZCh0ZXh0Qm94LT50ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkg
KyB0ZXh0Qm94LT5zdGFydCgpLCB0ZXh0Qm94LT5sZW4oKSk7CisgICAgbGVuICs9IHRleHRCb3gt
PmxlbigpOworCisgICAgcmV0dXJuIHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5kYXRhKCksIGxl
bik7Cit9IAorCitzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9y
TWF4T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24s
IGNvbnN0IElubGluZVRleHRCb3gqIHRleHRCb3gsIGJvb2wmIG5leHRCb3hJbkRpZmZlcmVudEJs
b2NrKQoreworICAgIG5leHRCb3hJbkRpZmZlcmVudEJsb2NrID0gZmFsc2U7CisKKyAgICAvLyBG
SVhNRTogSGFuZGxlIHRoZSBjYXNlIHdoZW4gd2UgZG9uJ3QgaGF2ZSBhbiBpbmxpbmUgdGV4dCBi
b3guCisgICAgY29uc3QgSW5saW5lVGV4dEJveCogbmV4dEJveCA9IGxvZ2ljYWxseU5leHRCb3go
dmlzaWJsZVBvc2l0aW9uLCB0ZXh0Qm94LCBuZXh0Qm94SW5EaWZmZXJlbnRCbG9jayk7CisKKyAg
ICBpbnQgbGVuID0gMDsKKyAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IHN0cmluZzsKKyAgICBzdHJp
bmcuYXBwZW5kKHRleHRCb3gtPnRleHRSZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSAr
IHRleHRCb3gtPnN0YXJ0KCksIHRleHRCb3gtPmxlbigpKTsKKyAgICBsZW4gKz0gdGV4dEJveC0+
bGVuKCk7CisgICAgaWYgKG5leHRCb3gpIHsKKyAgICAgICAgc3RyaW5nLmFwcGVuZChuZXh0Qm94
LT50ZXh0UmVuZGVyZXIoKS0+dGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBuZXh0Qm94LT5zdGFydCgp
LCBuZXh0Qm94LT5sZW4oKSk7IAorICAgICAgICBsZW4gKz0gbmV4dEJveC0+bGVuKCk7CisgICAg
fQorCisgICAgcmV0dXJuIHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5kYXRhKCksIGxlbik7Cit9
IAorCitzdGF0aWMgYm9vbCBpc0xvZ2ljYWxTdGFydE9mV29yZChUZXh0QnJlYWtJdGVyYXRvciog
aXRlciwgaW50IHBvc2l0aW9uLCBib29sIGhhcmRMaW5lQnJlYWspCit7CisgICAgYm9vbCBib3Vu
ZGFyeSA9IGhhcmRMaW5lQnJlYWsgPyB0cnVlIDogaXNUZXh0QnJlYWsoaXRlciwgcG9zaXRpb24p
OworICAgIGlmICghYm91bmRhcnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHRleHRC
cmVha0ZvbGxvd2luZyhpdGVyLCBwb3NpdGlvbik7CisgICAgLy8gaXNXb3JkVGV4dEJyZWFrIHJl
dHVybnMgdHJ1ZSBhZnRlciBtb3ZpbmcgYWNyb3NzIGEgd29yZCBhbmQgZmFsc2UgYWZ0ZXIgbW92
aW5nIGFjcm9zcyBhIHB1bmN0dWF0aW9uL3NwYWNlLgorICAgIHJldHVybiBpc1dvcmRUZXh0QnJl
YWsoaXRlcik7Cit9CisKK3N0YXRpYyBib29sIGlzbG9naWNhbEVuZE9mV29yZChUZXh0QnJlYWtJ
dGVyYXRvciogaXRlciwgaW50IHBvc2l0aW9uLCBib29sIGhhcmRMaW5lQnJlYWspCit7CisgICAg
Ym9vbCBib3VuZGFyeSA9IGlzVGV4dEJyZWFrKGl0ZXIsIHBvc2l0aW9uKTsKKyAgICByZXR1cm4g
KGhhcmRMaW5lQnJlYWsgfHwgYm91bmRhcnkpICYmIGlzV29yZFRleHRCcmVhayhpdGVyKTsKK30K
KworZW51bSBDdXJzb3JNb3ZlbWVudERpcmVjdGlvbiB7IE1vdmVMZWZ0LCBNb3ZlUmlnaHQgfTsK
Kworc3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXN1YWxXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIEN1cnNvck1vdmVtZW50RGlyZWN0aW9uIGRpcmVj
dGlvbikKK3sKKyAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7CisKKyAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9u
ID0gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxl
bnQoKSk7CisgICAgSW5saW5lQm94KiBwcmV2aW91c2x5VmlzaXRlZEJveCA9IDA7CisgICAgVmlz
aWJsZVBvc2l0aW9uIGN1cnJlbnQgPSB2aXNpYmxlUG9zaXRpb247CisgICAgVGV4dEJyZWFrSXRl
cmF0b3IqIGl0ZXIgPSAwOworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgVmlzaWJsZVBvc2l0
aW9uIGFkamFjZW50Q2hhcmFjdGVyUG9zaXRpb24gPSBkaXJlY3Rpb24gPT0gTW92ZVJpZ2h0ID8g
Y3VycmVudC5yaWdodCh0cnVlKSA6IGN1cnJlbnQubGVmdCh0cnVlKTsgCisgICAgICAgIGlmIChh
ZGphY2VudENoYXJhY3RlclBvc2l0aW9uID09IGN1cnJlbnQgfHwgYWRqYWNlbnRDaGFyYWN0ZXJQ
b3NpdGlvbi5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsK
KyAgICAKKyAgICAgICAgSW5saW5lQm94KiBib3g7CisgICAgICAgIGludCBvZmZzZXRJbkJveDsK
KyAgICAgICAgYWRqYWNlbnRDaGFyYWN0ZXJQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmdldElu
bGluZUJveEFuZE9mZnNldChVUFNUUkVBTSwgYm94LCBvZmZzZXRJbkJveCk7CisgICAgCisgICAg
ICAgIGlmICghYm94KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICghYm94LT5pc0lu
bGluZVRleHRCb3goKSkgeworICAgICAgICAgICAgY3VycmVudCA9IGFkamFjZW50Q2hhcmFjdGVy
UG9zaXRpb247CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIElu
bGluZVRleHRCb3gqIHRleHRCb3ggPSB0b0lubGluZVRleHRCb3goYm94KTsKKyAgICAgICAgaW50
IHByZXZpb3VzQm94TGVuZ3RoID0gMDsKKyAgICAgICAgYm9vbCBwcmV2aW91c0JveEluRGlmZmVy
ZW50QmxvY2sgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBuZXh0Qm94SW5EaWZmZXJlbnRCbG9jayA9
IGZhbHNlOworICAgICAgICBib29sIG1vdmluZ0ludG9OZXdCb3ggPSBwcmV2aW91c2x5VmlzaXRl
ZEJveCAhPSBib3g7CisKKyAgICAgICAgaWYgKG9mZnNldEluQm94ID09IGJveC0+Y2FyZXRNaW5P
ZmZzZXQoKSkKKyAgICAgICAgICAgIGl0ZXIgPSB3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNl
dEJvdW5kYXJ5KHZpc2libGVQb3NpdGlvbiwgdGV4dEJveCwgcHJldmlvdXNCb3hMZW5ndGgsIHBy
ZXZpb3VzQm94SW5EaWZmZXJlbnRCbG9jayk7CisgICAgICAgIGVsc2UgaWYgKG9mZnNldEluQm94
ID09IGJveC0+Y2FyZXRNYXhPZmZzZXQoKSkKKyAgICAgICAgICAgIGl0ZXIgPSB3b3JkQnJlYWtJ
dGVyYXRvckZvck1heE9mZnNldEJvdW5kYXJ5KHZpc2libGVQb3NpdGlvbiwgdGV4dEJveCwgbmV4
dEJveEluRGlmZmVyZW50QmxvY2spOworICAgICAgICBlbHNlIGlmIChtb3ZpbmdJbnRvTmV3Qm94
KSB7CisgICAgICAgICAgICBpdGVyID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dEJveC0+dGV4dFJl
bmRlcmVyKCktPnRleHQoKS0+Y2hhcmFjdGVycygpICsgdGV4dEJveC0+c3RhcnQoKSwgdGV4dEJv
eC0+bGVuKCkpOworICAgICAgICAgICAgcHJldmlvdXNseVZpc2l0ZWRCb3ggPSBib3g7CisgICAg
ICAgIH0KKworICAgICAgICB0ZXh0QnJlYWtGaXJzdChpdGVyKTsKKyAgICAgICAgaW50IG9mZnNl
dEluSXRlcmF0b3IgPSBvZmZzZXRJbkJveCAtIHRleHRCb3gtPnN0YXJ0KCkgKyBwcmV2aW91c0Jv
eExlbmd0aDsKKworICAgICAgICBib29sIGlzV29yZEJyZWFrOworICAgICAgICBpZiAoYm94LT5k
aXJlY3Rpb24oKSA9PSBibG9ja0RpcmVjdGlvbikgeworICAgICAgICAgICAgYm9vbCBsb2dpY2Fs
U3RhcnRJblJlbmRlcmVyID0gb2Zmc2V0SW5Cb3ggPT0gc3RhdGljX2Nhc3Q8aW50Pih0ZXh0Qm94
LT5zdGFydCgpKSAmJiBwcmV2aW91c0JveEluRGlmZmVyZW50QmxvY2s7CisgICAgICAgICAgICBp
c1dvcmRCcmVhayA9IGlzTG9naWNhbFN0YXJ0T2ZXb3JkKGl0ZXIsIG9mZnNldEluSXRlcmF0b3Is
IGxvZ2ljYWxTdGFydEluUmVuZGVyZXIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Ym9vbCBsb2dpY2FsRW5kSW5SZW5kZXJlciA9IG9mZnNldEluQm94ID09IHN0YXRpY19jYXN0PGlu
dD4odGV4dEJveC0+c3RhcnQoKSArIHRleHRCb3gtPmxlbigpKSAmJiBuZXh0Qm94SW5EaWZmZXJl
bnRCbG9jazsKKyAgICAgICAgICAgIGlzV29yZEJyZWFrID0gaXNsb2dpY2FsRW5kT2ZXb3JkKGl0
ZXIsIG9mZnNldEluSXRlcmF0b3IsIGxvZ2ljYWxFbmRJblJlbmRlcmVyKTsKKyAgICAgICAgfSAg
ICAgIAorCisgICAgICAgIGlmIChpc1dvcmRCcmVhaykKKyAgICAgICAgICAgIHJldHVybiBhZGph
Y2VudENoYXJhY3RlclBvc2l0aW9uOworICAgIAorICAgICAgICBjdXJyZW50ID0gYWRqYWNlbnRD
aGFyYWN0ZXJQb3NpdGlvbjsKKyAgICB9CisgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwor
fQorCitWaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHZpc2libGVQb3NpdGlvbikKK3sKKyAgICBWaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRCcmVh
ayA9IHZpc3VhbFdvcmRQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24sIE1vdmVMZWZ0KTsKKyAgICBs
ZWZ0V29yZEJyZWFrID0gdmlzaWJsZVBvc2l0aW9uLmhvbm9yRWRpdGluZ0JvdW5kYXJ5QXRPckJl
Zm9yZShsZWZ0V29yZEJyZWFrKTsKKyAgICAKKyAgICAvLyBGSVhNRTogSG93IHNob3VsZCB3ZSBo
YW5kbGUgYSBub24tZWRpdGFibGUgcG9zaXRpb24/CisgICAgaWYgKGxlZnRXb3JkQnJlYWsuaXNO
dWxsKCkgJiYgaXNFZGl0YWJsZVBvc2l0aW9uKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVu
dCgpKSkgeworICAgICAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uID0gZGlyZWN0aW9u
T2ZFbmNsb3NpbmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7CisgICAg
ICAgIGxlZnRXb3JkQnJlYWsgPSBibG9ja0RpcmVjdGlvbiA9PSBMVFIgPyBzdGFydE9mRWRpdGFi
bGVDb250ZW50KHZpc2libGVQb3NpdGlvbikgOiBlbmRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxl
UG9zaXRpb24pOworICAgIH0KKyAgICByZXR1cm4gbGVmdFdvcmRCcmVhazsKK30KKworVmlzaWJs
ZVBvc2l0aW9uIHJpZ2h0V29yZFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJs
ZVBvc2l0aW9uKQoreworICAgIFZpc2libGVQb3NpdGlvbiByaWdodFdvcmRCcmVhayA9IHZpc3Vh
bFdvcmRQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24sIE1vdmVSaWdodCk7CisgICAgcmlnaHRXb3Jk
QnJlYWsgPSB2aXNpYmxlUG9zaXRpb24uaG9ub3JFZGl0aW5nQm91bmRhcnlBdE9yQmVmb3JlKHJp
Z2h0V29yZEJyZWFrKTsKKworICAgIC8vIEZJWE1FOiBIb3cgc2hvdWxkIHdlIGhhbmRsZSBhIG5v
bi1lZGl0YWJsZSBwb3NpdGlvbj8KKyAgICBpZiAocmlnaHRXb3JkQnJlYWsuaXNOdWxsKCkgJiYg
aXNFZGl0YWJsZVBvc2l0aW9uKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpKSkgewor
ICAgICAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNsb3Np
bmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgICAgIHJpZ2h0
V29yZEJyZWFrID0gYmxvY2tEaXJlY3Rpb24gPT0gTFRSID8gZW5kT2ZFZGl0YWJsZUNvbnRlbnQo
dmlzaWJsZVBvc2l0aW9uKSA6IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9u
KTsKKyAgICB9CisgICAgcmV0dXJuIHJpZ2h0V29yZEJyZWFrOworfQorCisKIGVudW0gQm91bmRh
cnlTZWFyY2hDb250ZXh0QXZhaWxhYmlsaXR5IHsgRG9udEhhdmVNb3JlQ29udGV4dCwgTWF5SGF2
ZU1vcmVDb250ZXh0IH07CiAKIHR5cGVkZWYgdW5zaWduZWQgKCpCb3VuZGFyeVNlYXJjaEZ1bmN0
aW9uKShjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgb2Zmc2V0LCBCb3Vu
ZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHksIGJvb2wmIG5lZWRNb3JlQ29udGV4dCk7CkBA
IC01MTcsMjggKzg4Niw2IEBAIGJvb2wgaXNFbmRPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9u
ICYKICAgICByZXR1cm4gcC5pc05vdE51bGwoKSAmJiBwID09IGVuZE9mTGluZShwKTsKIH0KIAot
Ly8gVGhlIGZpcnN0IGxlYWYgYmVmb3JlIG5vZGUgdGhhdCBoYXMgdGhlIHNhbWUgZWRpdGFiaWxp
dHkgYXMgbm9kZS4KLXN0YXRpYyBOb2RlKiBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5
KE5vZGUqIG5vZGUsIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUpCi17Ci0gICAgYm9vbCBlZGl0
YWJsZSA9IG5vZGUtPnJlbmRlcmVySXNFZGl0YWJsZShlZGl0YWJsZVR5cGUpOwotICAgIE5vZGUq
IG4gPSBub2RlLT5wcmV2aW91c0xlYWZOb2RlKCk7Ci0gICAgd2hpbGUgKG4pIHsKLSAgICAgICAg
aWYgKGVkaXRhYmxlID09IG4tPnJlbmRlcmVySXNFZGl0YWJsZShlZGl0YWJsZVR5cGUpKQotICAg
ICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgIG4gPSBuLT5wcmV2aW91c0xlYWZOb2RlKCk7Ci0g
ICAgfQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgTm9kZSogZW5jbG9zaW5nTm9kZVdpdGhO
b25JbmxpbmVSZW5kZXJlcihOb2RlKiBuKQotewotICAgIGZvciAoTm9kZSogcCA9IG47IHA7IHAg
PSBwLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKHAtPnJlbmRlcmVyKCkgJiYgIXAtPnJl
bmRlcmVyKCktPmlzSW5saW5lKCkpCi0gICAgICAgICAgICByZXR1cm4gcDsKLSAgICB9Ci0gICAg
cmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSW50UG9pbnQgYWJzb2x1dGVMaW5lRGlyZWN0
aW9uUG9pbnRUb0xvY2FsUG9pbnRJbkJsb2NrKFJvb3RJbmxpbmVCb3gqIHJvb3QsIGludCBsaW5l
RGlyZWN0aW9uUG9pbnQpCiB7CiAgICAgQVNTRVJUKHJvb3QpOwpAQCAtNjI1LDM0ICs5NzIsNiBA
QCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNMaW5lUG9zaXRpb24oY29uCiAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5Ob2RlKHJvb3RFbGVtZW50KSwgRE9XTlNUUkVB
TSk7CiB9CiAKLXN0YXRpYyBOb2RlKiBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkoTm9kZSog
bm9kZSwgaW50IG9mZnNldCkKLXsKLSAgICBib29sIGVkaXRhYmxlID0gbm9kZS0+cmVuZGVyZXJJ
c0VkaXRhYmxlKCk7Ci0gICAgQVNTRVJUKG9mZnNldCA+PSAwKTsKLSAgICBOb2RlKiBjaGlsZCA9
IG5vZGUtPmNoaWxkTm9kZShvZmZzZXQpOwotICAgIE5vZGUqIG4gPSBjaGlsZCA/IGNoaWxkLT5u
ZXh0TGVhZk5vZGUoKSA6IG5vZGUtPmxhc3REZXNjZW5kYW50KCktPm5leHRMZWFmTm9kZSgpOwot
ICAgIHdoaWxlIChuKSB7Ci0gICAgICAgIGlmIChlZGl0YWJsZSA9PSBuLT5yZW5kZXJlcklzRWRp
dGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICBuID0gbi0+bmV4dExlYWZO
b2RlKCk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgTm9kZSogbmV4dExlYWZX
aXRoU2FtZUVkaXRhYmlsaXR5KE5vZGUqIG5vZGUsIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUg
PSBDb250ZW50SXNFZGl0YWJsZSkKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAw
OwotICAgIAotICAgIGJvb2wgZWRpdGFibGUgPSBub2RlLT5yZW5kZXJlcklzRWRpdGFibGUoZWRp
dGFibGVUeXBlKTsKLSAgICBOb2RlKiBuID0gbm9kZS0+bmV4dExlYWZOb2RlKCk7Ci0gICAgd2hp
bGUgKG4pIHsKLSAgICAgICAgaWYgKGVkaXRhYmxlID09IG4tPnJlbmRlcmVySXNFZGl0YWJsZShl
ZGl0YWJsZVR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgIG4gPSBuLT5uZXh0
TGVhZk5vZGUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19CiAKIFZpc2libGVQb3NpdGlvbiBu
ZXh0TGluZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmdmlzaWJsZVBvc2l0aW9uLCBp
bnQgbGluZURpcmVjdGlvblBvaW50LCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlKQogewpAQCAt
MTA5OSw1NDMgKzE0MTgsNCBAQCBWaXNpYmxlUG9zaXRpb24gcmlnaHRCb3VuZGFyeU9mTGluZShj
b25zCiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBMVFIgPyBsb2dpY2FsRW5kT2ZMaW5lKGMpIDog
bG9naWNhbFN0YXJ0T2ZMaW5lKGMpOwogfQogCi1zdGF0aWMgY29uc3QgaW50IGludmFsaWRPZmZz
ZXQgPSAtMTsKLXN0YXRpYyBjb25zdCBpbnQgb2Zmc2V0Tm90Rm91bmQgPSAtMTsKLQotc3RhdGlj
IGJvb2wgcG9zaXRpb25Jc0luQm94KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgd29yZEJyZWFrLCBj
b25zdCBJbmxpbmVCb3gqIGJveCwgaW50JiBvZmZzZXRPZldvcmRCcmVhaykKLXsKLSAgICBpZiAo
d29yZEJyZWFrLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBJbmxpbmVC
b3gqIGJveE9mV29yZEJyZWFrOwotICAgIHdvcmRCcmVhay5nZXRJbmxpbmVCb3hBbmRPZmZzZXQo
Ym94T2ZXb3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrKTsKLSAgICByZXR1cm4gYm94ID09IGJv
eE9mV29yZEJyZWFrOwotfQotCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZEJy
ZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHkoY29uc3QgSW5saW5lQm94
KiBib3gsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcHJldmlvdXNXb3JkQnJlYWssIGludCYgb2Zm
c2V0T2ZXb3JkQnJlYWspCi17Ci0gICAgLy8gSW4gYSBMVFIgYmxvY2ssIHRoZSB3b3JkIGJyZWFr
IHNob3VsZCBiZSBvbiB0aGUgbGVmdCBib3VuZGFyeSBvZiBhIHdvcmQuCi0gICAgLy8gSW4gYSBS
VEwgYmxvY2ssIHRoZSB3b3JkIGJyZWFrIHNob3VsZCBiZSBvbiB0aGUgcmlnaHQgYm91bmRhcnkg
b2YgYSB3b3JkLgotICAgIC8vIEJlY2F1c2UgbmV4dFdvcmRQb3NpdGlvbigpIHJldHVybnMgdGhl
IHdvcmQgYnJlYWsgb24gdGhlIHJpZ2h0IGJvdW5kYXJ5IG9mIHRoZSB3b3JkIGZvciBMVFIgdGV4
dCwKLSAgICAvLyB3ZSBuZWVkIHRvIHVzZSBwcmV2aW91c1dvcmRQb3NpdGlvbigpIHRvIHRyYXZl
cnNlIHdvcmRzIHdpdGhpbiB0aGUgaW5saW5lIGJveGVzIGZyb20gcmlnaHQgdG8gbGVmdAotICAg
IC8vIHRvIGZpbmQgdGhlIHByZXZpb3VzIHdvcmQgYnJlYWsgKGkuZS4gdGhlIGZpcnN0IHdvcmQg
YnJlYWsgb24gdGhlIGxlZnQpLiBUaGUgc2FtZSBhcHBsaWVzIHRvIFJUTCB0ZXh0LgotICAgIAot
ICAgIGJvb2wgaGFzU2VlbldvcmRCcmVha0luVGhpc0JveCA9IHByZXZpb3VzV29yZEJyZWFrLmlz
Tm90TnVsbCgpOwotCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLQotICAgIGlmICho
YXNTZWVuV29yZEJyZWFrSW5UaGlzQm94KQotICAgICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c1dv
cmRCcmVhazsKLSAgICBlbHNlIHsKLSAgICAgICAgd29yZEJyZWFrID0gY3JlYXRlTGVnYWN5RWRp
dGluZ1Bvc2l0aW9uKGJveC0+cmVuZGVyZXIoKS0+bm9kZSgpLCBib3gtPmNhcmV0TWF4T2Zmc2V0
KCkpOwotCi0gICAgICAgIC8vIFJldHVybiB0aGUgcmlnaHRtb3N0IHdvcmQgYm91bmRhcnkgb2Yg
TFRSIGJveCBvciBsZWZ0bW9zdCB3b3JkIGJvdW5kYXJ5IG9mIFJUTCBib3ggaWYKLSAgICAgICAg
Ly8gaXQgaXMgbm90IGluIHRoZSBwcmV2aW91c2x5IHZpc2l0ZWQgYm94ZXMuIEZvciBleGFtcGxl
LCBnaXZlbiBhIGxvZ2ljYWwgdGV4dCAKLSAgICAgICAgLy8gImFiYyBkZWYgICAgIGhpaiBvcHEi
LCB0aGVyZSBhcmUgMiBib3hlczogdGhlICJhYmMgZGVmICIgKHN0YXJ0cyBhdCAwIGFuZCBsZW5n
dGggaXMgOCkgCi0gICAgICAgIC8vIGFuZCB0aGUgImhpaiBvcHEiIChzdGFydHMgYXQgMTIgYW5k
IGxlbmd0aCBpcyA3KS4gVGhlIHdvcmQgYnJlYWtzIGFyZSAKLSAgICAgICAgLy8gImFiYyB8ZGVm
IHwgICAgaGlqIHxvcHEiLiBXZSBub3JtYWxseSBjYXRjaCB0aGUgd29yZCBicmVhayBiZXR3ZWVu
ICJkZWYiIGFuZCAiaGlqIiB3aGVuCi0gICAgICAgIC8vIHdlIHZpc2l0IHRoZSBib3ggdGhhdCBj
b250YWlucyAiaGlqIG9wcSIsIGJ1dCB0aGlzIHdvcmQgYnJlYWsgZG9lc24ndCBleGlzdCBpbiB0
aGUgYm94Ci0gICAgICAgIC8vIHRoYXQgY29udGFpbnMgImhpaiBvcHEiIHdoZW4gdGhlcmUgYXJl
IG11bHRpcGxlIHNwYWNlcy4gU28gd2UgZGV0ZWN0IGl0IHdoZW4gd2UncmUKLSAgICAgICAgLy8g
dHJhdmVyc2luZyB0aGUgYm94IHRoYXQgY29udGFpbnMgImFiYyBkZWYgIiBpbnN0ZWFkLgotCi0g
ICAgICAgIGlmICgoYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgYm94LT5uZXh0TGVh
ZkNoaWxkKCkpCi0gICAgICAgICAgICB8fCAoIWJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
ICYmIGJveC0+cHJldkxlYWZDaGlsZCgpKSkgewotCi0gICAgICAgICAgICBWaXNpYmxlUG9zaXRp
b24gcG9zaXRpb25BZnRlcldvcmQgPSBuZXh0Qm91bmRhcnkod29yZEJyZWFrLCBuZXh0V29yZFBv
c2l0aW9uQm91bmRhcnkpOwotICAgICAgICAgICAgaWYgKHBvc2l0aW9uQWZ0ZXJXb3JkLmlzTm90
TnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uQmVmb3Jl
V29yZCA9IHByZXZpb3VzQm91bmRhcnkocG9zaXRpb25BZnRlcldvcmQsIHByZXZpb3VzV29yZFBv
c2l0aW9uQm91bmRhcnkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKHBvc2l0
aW9uSXNJbkJveChwb3NpdGlvbkJlZm9yZVdvcmQsIGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb25CZWZvcmVXb3JkOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAKLSAgICB3b3JkQnJlYWsgPSBwcmV2aW91c0JvdW5k
YXJ5KHdvcmRCcmVhaywgcHJldmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFyeSk7Ci0gICAgaWYgKHBy
ZXZpb3VzV29yZEJyZWFrID09IHdvcmRCcmVhaykKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbigpOwotCi0gICAgcmV0dXJuIHBvc2l0aW9uSXNJbkJveCh3b3JkQnJlYWssIGJveCwgb2Zm
c2V0T2ZXb3JkQnJlYWspID8gd29yZEJyZWFrIDogVmlzaWJsZVBvc2l0aW9uKCk7Ci19Ci0KLXN0
YXRpYyBWaXNpYmxlUG9zaXRpb24gbGVmdG1vc3RQb3NpdGlvbkluUlRMQm94SW5MVFJCbG9jayhj
b25zdCBJbmxpbmVCb3gqIGJveCkKLXsKLSAgICAvLyBGSVhNRTogUHJvYmFibHkgbmVlZCB0byB0
YWtlIGNhcmUgb2YgYmlkaSBsZXZlbCB0b28uCi0gICAgTm9kZSogbm9kZSA9IGJveC0+cmVuZGVy
ZXIoKS0+bm9kZSgpOwotICAgIElubGluZUJveCogcHJldmlvdXNMZWFmID0gYm94LT5wcmV2TGVh
ZkNoaWxkKCk7Ci0gICAgSW5saW5lQm94KiBuZXh0TGVhZiA9IGJveC0+bmV4dExlYWZDaGlsZCgp
OyAgIAotICAgIAotICAgIGlmIChwcmV2aW91c0xlYWYgJiYgIXByZXZpb3VzTGVhZi0+aXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKG5vZGUsIGJveC0+Y2FyZXRNYXhPZmZzZXQoKSk7Ci0KLSAgICBpZiAobmV4dExlYWYg
JiYgIW5leHRMZWFmLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpIHsKLSAgICAgICAgaWYgKHBy
ZXZpb3VzTGVhZikKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRp
b24ocHJldmlvdXNMZWFmLT5yZW5kZXJlcigpLT5ub2RlKCksIHByZXZpb3VzTGVhZi0+Y2FyZXRN
YXhPZmZzZXQoKSk7Ci0KLSAgICAgICAgSW5saW5lQm94KiBsYXN0UlRMTGVhZjsKLSAgICAgICAg
ZG8gewotICAgICAgICAgICAgbGFzdFJUTExlYWYgPSBuZXh0TGVhZjsKLSAgICAgICAgICAgIG5l
eHRMZWFmID0gbmV4dExlYWYtPm5leHRMZWFmQ2hpbGQoKTsKLSAgICAgICAgfSB3aGlsZSAobmV4
dExlYWYgJiYgIW5leHRMZWFmLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpOwotICAgICAgICBy
ZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGxhc3RSVExMZWFmLT5yZW5kZXJlcigp
LT5ub2RlKCksIGxhc3RSVExMZWFmLT5jYXJldE1pbk9mZnNldCgpKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5vZGUsIGJveC0+Y2FyZXRNaW5PZmZz
ZXQoKSk7Ci19Ci0KLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcmlnaHRtb3N0UG9zaXRpb25JbkxU
UkJveEluUlRMQmxvY2soY29uc3QgSW5saW5lQm94KiBib3gpCi17Ci0gICAgLy8gRklYTUU6IFBy
b2JhYmx5IG5lZWQgdG8gdGFrZSBjYXJlIG9mIGJpZGkgbGV2ZWwgdG9vLgotICAgIE5vZGUqIG5v
ZGUgPSBib3gtPnJlbmRlcmVyKCktPm5vZGUoKTsKLSAgICBJbmxpbmVCb3gqIHByZXZpb3VzTGVh
ZiA9IGJveC0+cHJldkxlYWZDaGlsZCgpOwotICAgIElubGluZUJveCogbmV4dExlYWYgPSBib3gt
Pm5leHRMZWFmQ2hpbGQoKTsgICAKLSAgICAKLSAgICBpZiAobmV4dExlYWYgJiYgbmV4dExlYWYt
PmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgICAgCi0gICAgICAgIHJldHVybiBjcmVhdGVMZWdh
Y3lFZGl0aW5nUG9zaXRpb24obm9kZSwgYm94LT5jYXJldE1heE9mZnNldCgpKTsKLQotICAgIGlm
IChwcmV2aW91c0xlYWYgJiYgcHJldmlvdXNMZWFmLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkp
IHsKLSAgICAgICAgaWYgKG5leHRMZWFmKQotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2Fj
eUVkaXRpbmdQb3NpdGlvbihuZXh0TGVhZi0+cmVuZGVyZXIoKS0+bm9kZSgpLCBuZXh0TGVhZi0+
Y2FyZXRNYXhPZmZzZXQoKSk7Ci0KLSAgICAgICAgSW5saW5lQm94KiBmaXJzdExUUkxlYWY7Ci0g
ICAgICAgIGRvIHsKLSAgICAgICAgICAgIGZpcnN0TFRSTGVhZiA9IHByZXZpb3VzTGVhZjsKLSAg
ICAgICAgICAgIHByZXZpb3VzTGVhZiA9IHByZXZpb3VzTGVhZi0+cHJldkxlYWZDaGlsZCgpOwot
ICAgICAgICB9IHdoaWxlIChwcmV2aW91c0xlYWYgJiYgcHJldmlvdXNMZWFmLT5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkpOwotICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKGZpcnN0TFRSTGVhZi0+cmVuZGVyZXIoKS0+bm9kZSgpLCBmaXJzdExUUkxlYWYtPmNhcmV0
TWluT2Zmc2V0KCkpOwotICAgIH0KLQotICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9z
aXRpb24obm9kZSwgYm94LT5jYXJldE1pbk9mZnNldCgpKTsKLX0KLSAgICAKLXN0YXRpYyBWaXNp
YmxlUG9zaXRpb24gbGFzdFdvcmRCcmVha0luQm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQm
IG9mZnNldE9mV29yZEJyZWFrKQotewotICAgIC8vIEFkZCB0aGUgbGVmdG1vc3Qgd29yZCBicmVh
ayBmb3IgUlRMIGJveCBvciByaWdodG1vc3Qgd29yZCBicmVhayBmb3IgTFRSIGJveC4KLSAgICBJ
bmxpbmVCb3gqIHByZXZpb3VzTGVhZiA9IGJveC0+cHJldkxlYWZDaGlsZCgpOwotICAgIElubGlu
ZUJveCogbmV4dExlYWYgPSBib3gtPm5leHRMZWFmQ2hpbGQoKTsKLSAgICBWaXNpYmxlUG9zaXRp
b24gYm91bmRhcnlQb3NpdGlvbjsKLSAgICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBSVEwgJiYg
KCFwcmV2aW91c0xlYWYgfHwgcHJldmlvdXNMZWFmLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkp
KQotICAgICAgICBib3VuZGFyeVBvc2l0aW9uID0gbGVmdG1vc3RQb3NpdGlvbkluUlRMQm94SW5M
VFJCbG9jayhib3gpOwotICAgIGVsc2UgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gTFRSICYmICgh
bmV4dExlYWYgfHwgIW5leHRMZWFmLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpKQotICAgICAg
ICBib3VuZGFyeVBvc2l0aW9uID0gcmlnaHRtb3N0UG9zaXRpb25JbkxUUkJveEluUlRMQmxvY2so
Ym94KTsKLQotICAgIGlmIChib3VuZGFyeVBvc2l0aW9uLmlzTnVsbCgpKQotICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7ICAgICAgICAgICAgCi0KLSAgICBWaXNpYmxlUG9zaXRpb24g
d29yZEJyZWFrID0gbmV4dEJvdW5kYXJ5KGJvdW5kYXJ5UG9zaXRpb24sIG5leHRXb3JkUG9zaXRp
b25Cb3VuZGFyeSk7Ci0gICAgaWYgKHdvcmRCcmVhay5pc051bGwoKSkKLSAgICAgICAgd29yZEJy
ZWFrID0gYm91bmRhcnlQb3NpdGlvbjsKLSAgICBlbHNlIGlmICh3b3JkQnJlYWsgIT0gYm91bmRh
cnlQb3NpdGlvbikKLSAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNCb3VuZGFyeSh3b3JkQnJl
YWssIHByZXZpb3VzV29yZFBvc2l0aW9uQm91bmRhcnkpOwotCi0gICAgcmV0dXJuIHBvc2l0aW9u
SXNJbkJveCh3b3JkQnJlYWssIGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspID8gd29yZEJyZWFrIDog
VmlzaWJsZVBvc2l0aW9uKCk7ICAgIAotfQotCi1zdGF0aWMgYm9vbCBwb3NpdGlvbklzVmlzdWFs
bHlPcmRlcmVkSW5Cb3hJbkJsb2NrV2l0aERpZmZlcmVudERpcmVjdGlvbmFsaXR5KGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgd29yZEJyZWFrLCBjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50JiBvZmZz
ZXRPZldvcmRCcmVhaykKLXsKLSAgICBpbnQgcHJldmlvdXNPZmZzZXQgPSBvZmZzZXRPZldvcmRC
cmVhazsKLSAgICByZXR1cm4gcG9zaXRpb25Jc0luQm94KHdvcmRCcmVhaywgYm94LCBvZmZzZXRP
ZldvcmRCcmVhaykKLSAgICAgICAgJiYgKHByZXZpb3VzT2Zmc2V0ID09IGludmFsaWRPZmZzZXQg
fHwgcHJldmlvdXNPZmZzZXQgPCBvZmZzZXRPZldvcmRCcmVhayk7Ci19Ci0gICAgCi1zdGF0aWMg
VmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkQnJlYWtJbkJveEluc2lkZUJsb2NrV2l0aERpZmZlcmVu
dERpcmVjdGlvbmFsaXR5KAotICAgIGNvbnN0IElubGluZUJveCogYm94LCBjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHByZXZpb3VzV29yZEJyZWFrLCBpbnQmIG9mZnNldE9mV29yZEJyZWFrLCBib29s
JiBpc0xhc3RXb3JkQnJlYWtJbkJveCkKLXsKLSAgICAvLyBGSVhNRTogUHJvYmFibHkgbmVlZCB0
byB0YWtlIGNhcmUgb2YgYmlkaSBsZXZlbCB0b28uCi0gICAgCi0gICAgLy8gSW4gYSBMVFIgYmxv
Y2ssIHRoZSB3b3JkIGJyZWFrIHNob3VsZCBiZSBvbiB0aGUgbGVmdCBib3VuZGFyeSBvZiBhIHdv
cmQuCi0gICAgLy8gSW4gYSBSVEwgYmxvY2ssIHRoZSB3b3JkIGJyZWFrIHNob3VsZCBiZSBvbiB0
aGUgcmlnaHQgYm91bmRhcnkgb2YgYSB3b3JkLgotICAgIC8vIEJlY2F1c2UgcHJldmlvdXNXb3Jk
UG9zaXRpb24oKSByZXR1cm5zIHRoZSB3b3JkIGJyZWFrIG9uIHRoZSByaWdodCBib3VuZGFyeSBv
ZiB0aGUgd29yZCBmb3IgUlRMIHRleHQsCi0gICAgLy8gd2UgbmVlZCB0byB1c2UgbmV4dFdvcmRQ
b3NpdGlvbigpIHRvIHRyYXZlcnNlIHdvcmRzIHdpdGhpbiB0aGUgaW5saW5lIGJveGVzIGZyb20g
cmlnaHQgdG8gbGVmdCB0byBmaW5kIHRoZSBuZXh0IHdvcmQgYnJlYWsuCi0gICAgLy8gVGhlIHNh
bWUgYXBwbGllcyB0byBMVFIgdGV4dCwgaW4gd2hpY2ggd29yZHMgYXJlIHRyYXZlcnNlZCB3aXRo
aW4gdGhlIGlubGluZSBib3hlcyBmcm9tIGxlZnQgdG8gcmlnaHQuCi0gICAgCi0gICAgYm9vbCBo
YXNTZWVuV29yZEJyZWFrSW5UaGlzQm94ID0gcHJldmlvdXNXb3JkQnJlYWsuaXNOb3ROdWxsKCk7
Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhayA9IGhhc1NlZW5Xb3JkQnJlYWtJblRoaXNC
b3ggPyBwcmV2aW91c1dvcmRCcmVhayA6IAotICAgICAgICBjcmVhdGVMZWdhY3lFZGl0aW5nUG9z
aXRpb24oYm94LT5yZW5kZXJlcigpLT5ub2RlKCksIGJveC0+Y2FyZXRNaW5PZmZzZXQoKSk7Ci0K
LSAgICB3b3JkQnJlYWsgPSBuZXh0Qm91bmRhcnkod29yZEJyZWFrLCBuZXh0V29yZFBvc2l0aW9u
Qm91bmRhcnkpOwotICAKLSAgICAvLyBHaXZlbiBSVEwgYm94ICJBQkMgREVGIiBlaXRoZXIgZm9s
bG93cyBhIExUUiBib3ggb3IgaXMgdGhlIGZpcnN0IHZpc3VhbCBib3ggaW4gYW4gTFRSIGJsb2Nr
IGFzIGFuIGV4YW1wbGUsCi0gICAgLy8gdGhlIHZpc3VhbCBkaXNwbGF5IG9mIHRoZSBSVEwgYm94
IGlzOiAiKDApSigxMClJKDkpSCg4KSAoNylGKDYpRSg1KUQoNCkgKDMpQygyKUIoMSlBKDExKSIs
Ci0gICAgLy8gd2hlcmUgdGhlIG51bWJlciBpbiBwYXJlbnRoZXNpcyByZXByZXNlbnRzIG9mZnNl
dCBpbiB2aXNpYmxlUG9zaXRpb24uIAotICAgIC8vIFN0YXJ0IGF0IG9mZnNldCAwLCB0aGUgZmly
c3Qgd29yZCBicmVhayBpcyBhdCBvZmZzZXQgMywgdGhlIDJuZCB3b3JkIGJyZWFrIGlzIGF0IG9m
ZnNldCA3LCBhbmQgdGhlIDNyZCB3b3JkIGJyZWFrIHNob3VsZCBiZSBhdCBvZmZzZXQgMC4KLSAg
ICAvLyBCdXQgbmV4dFdvcmRQb3NpdGlvbigpIG9mIG9mZnNldCA3IGlzIG9mZnNldCAxMSwgd2hp
Y2ggc2hvdWxkIGJlIGlnbm9yZWQsIAotICAgIC8vIGFuZCB0aGUgcG9zaXRpb24gYXQgb2Zmc2V0
IDAgc2hvdWxkIGJlIG1hbnVhbGx5IGFkZGVkIGFzIHRoZSBsYXN0IHdvcmQgYnJlYWsgd2l0aGlu
IHRoZSBib3guCi0gICAgaWYgKHdvcmRCcmVhayAhPSBwcmV2aW91c1dvcmRCcmVhayAmJiBwb3Np
dGlvbklzVmlzdWFsbHlPcmRlcmVkSW5Cb3hJbkJsb2NrV2l0aERpZmZlcmVudERpcmVjdGlvbmFs
aXR5KHdvcmRCcmVhaywgYm94LCBvZmZzZXRPZldvcmRCcmVhaykpIHsKLSAgICAgICAgaXNMYXN0
V29yZEJyZWFrSW5Cb3ggPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsKLSAgICB9
Ci0gICAgCi0gICAgaXNMYXN0V29yZEJyZWFrSW5Cb3ggPSB0cnVlOwotICAgIHJldHVybiBsYXN0
V29yZEJyZWFrSW5Cb3goYm94LCBvZmZzZXRPZldvcmRCcmVhayk7Ci19Ci0KLXN0cnVjdCBXb3Jk
Qm91bmRhcnlFbnRyeSB7Ci0gICAgV29yZEJvdW5kYXJ5RW50cnkoKQotICAgICAgICA6IG9mZnNl
dEluSW5saW5lQm94KGludmFsaWRPZmZzZXQpIAotICAgIHsgCi0gICAgfQotCi0gICAgV29yZEJv
dW5kYXJ5RW50cnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG9mZnNldCkK
LSAgICAgICAgOiB2aXNpYmxlUG9zaXRpb24ocG9zaXRpb24pCi0gICAgICAgICwgb2Zmc2V0SW5J
bmxpbmVCb3gob2Zmc2V0KSAKLSAgICB7IAotICAgIH0KLQotICAgIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlUG9zaXRpb247Ci0gICAgaW50IG9mZnNldEluSW5saW5lQm94OwotfTsKLSAgICAKLXR5
cGVkZWYgVmVjdG9yPFdvcmRCb3VuZGFyeUVudHJ5LCA1MD4gV29yZEJvdW5kYXJ5VmVjdG9yOwot
ICAgIAotc3RhdGljIHZvaWQgY29sbGVjdFdvcmRCcmVha3NJbkJveEluc2lkZUJsb2NrV2l0aFNh
bWVEaXJlY3Rpb25hbGl0eShjb25zdCBJbmxpbmVCb3gqIGJveCwgV29yZEJvdW5kYXJ5VmVjdG9y
JiBvcmRlcmVkV29yZEJvdW5kYXJpZXMpCi17Ci0gICAgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLmNs
ZWFyKCk7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrOwotICAgIGludCBvZmZzZXRP
ZldvcmRCcmVhayA9IGludmFsaWRPZmZzZXQ7Ci0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgd29y
ZEJyZWFrID0gcHJldmlvdXNXb3JkQnJlYWtJbkJveEluc2lkZUJsb2NrV2l0aFNhbWVEaXJlY3Rp
b25hbGl0eShib3gsIHdvcmRCcmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWspOwotICAgICAgICBpZiAo
d29yZEJyZWFrLmlzTnVsbCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFdvcmRCb3Vu
ZGFyeUVudHJ5IHdvcmRCb3VuZGFyeUVudHJ5KHdvcmRCcmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWsp
OwotICAgICAgICBvcmRlcmVkV29yZEJvdW5kYXJpZXMuYXBwZW5kKHdvcmRCb3VuZGFyeUVudHJ5
KTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3hJbnNpZGVC
bG9ja1dpdGhEaWZmZXJudERpcmVjdGlvbmFsaXR5KGNvbnN0IElubGluZUJveCogYm94LCBXb3Jk
Qm91bmRhcnlWZWN0b3ImIG9yZGVyZWRXb3JkQm91bmRhcmllcykKLXsKLSAgICBvcmRlcmVkV29y
ZEJvdW5kYXJpZXMuY2xlYXIoKTsKLSAgICAKLSAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFr
OwotICAgIGludCBvZmZzZXRPZldvcmRCcmVhayA9IGludmFsaWRPZmZzZXQ7Ci0gICAgYm9vbCBp
c0xhc3RXb3JkQnJlYWtJbkJveCA9IGZhbHNlOwotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIHdv
cmRCcmVhayA9IG5leHRXb3JkQnJlYWtJbkJveEluc2lkZUJsb2NrV2l0aERpZmZlcmVudERpcmVj
dGlvbmFsaXR5KGJveCwgd29yZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhaywgaXNMYXN0V29yZEJy
ZWFrSW5Cb3gpOwotICAgICAgICBpZiAod29yZEJyZWFrLmlzTm90TnVsbCgpKSB7Ci0gICAgICAg
ICAgICBXb3JkQm91bmRhcnlFbnRyeSB3b3JkQm91bmRhcnlFbnRyeSh3b3JkQnJlYWssIG9mZnNl
dE9mV29yZEJyZWFrKTsKLSAgICAgICAgICAgIG9yZGVyZWRXb3JkQm91bmRhcmllcy5hcHBlbmQo
d29yZEJvdW5kYXJ5RW50cnkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0xhc3RXb3JkQnJl
YWtJbkJveCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgY29s
bGVjdFdvcmRCcmVha3NJbkJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgV29yZEJvdW5kYXJ5VmVj
dG9yJiBvcmRlcmVkV29yZEJvdW5kYXJpZXMsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24p
Ci17Ci0gICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gYmxvY2tEaXJlY3Rpb24pCi0gICAgICAg
IGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHko
Ym94LCBvcmRlcmVkV29yZEJvdW5kYXJpZXMpOwotICAgIGVsc2UKLSAgICAgICAgY29sbGVjdFdv
cmRCcmVha3NJbkJveEluc2lkZUJsb2NrV2l0aERpZmZlcm50RGlyZWN0aW9uYWxpdHkoYm94LCBv
cmRlcmVkV29yZEJvdW5kYXJpZXMpOyAgICAgICAgCi19Ci0gICAgCi1zdGF0aWMgVmlzaWJsZVBv
c2l0aW9uIHByZXZpb3VzV29yZEJvdW5kYXJ5SW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gsIGlu
dCBvZmZzZXQpCi17Ci0gICAgaW50IG9mZnNldE9mV29yZEJyZWFrID0gMDsKLSAgICBWaXNpYmxl
UG9zaXRpb24gd29yZEJyZWFrOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHdvcmRCcmVh
ayA9IHByZXZpb3VzV29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxp
dHkoYm94LCB3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrKTsKLSAgICAgICAgaWYgKHdvcmRC
cmVhay5pc051bGwoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAob2Zmc2V0ID09
IGludmFsaWRPZmZzZXQgfHwgb2Zmc2V0T2ZXb3JkQnJlYWsgIT0gb2Zmc2V0KQotICAgICAgICAg
ICAgcmV0dXJuIHdvcmRCcmVhazsKLSAgICB9ICAgICAgICAKLSAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKCk7Ci19Ci0KLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dFdvcmRCb3VuZGFyeUlu
Qm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQgb2Zmc2V0KQotewotICAgIGludCBvZmZzZXRP
ZldvcmRCcmVhayA9IDA7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBib29s
IGlzTGFzdFdvcmRCcmVha0luQm94ID0gZmFsc2U7Ci0gICAgZG8gewotICAgICAgICB3b3JkQnJl
YWsgPSBuZXh0V29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25h
bGl0eShib3gsIHdvcmRCcmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWssIGlzTGFzdFdvcmRCcmVha0lu
Qm94KTsKLSAgICAgICAgaWYgKHdvcmRCcmVhay5pc05vdE51bGwoKSAmJiAob2Zmc2V0ID09IGlu
dmFsaWRPZmZzZXQgfHwgb2Zmc2V0T2ZXb3JkQnJlYWsgIT0gb2Zmc2V0KSkKLSAgICAgICAgICAg
IHJldHVybiB3b3JkQnJlYWs7Ci0gICAgfSB3aGlsZSAoIWlzTGFzdFdvcmRCcmVha0luQm94KTsg
ICAgICAgCi0gICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotfQotICAgIAotc3RhdGljIFZp
c2libGVQb3NpdGlvbiB2aXN1YWxseUxhc3RXb3JkQm91bmRhcnlJbkJveChjb25zdCBJbmxpbmVC
b3gqIGJveCwgaW50IG9mZnNldCwgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbikKLXsKLSAg
ICBXb3JkQm91bmRhcnlWZWN0b3Igb3JkZXJlZFdvcmRCb3VuZGFyaWVzOwotICAgIGNvbGxlY3RX
b3JkQnJlYWtzSW5Cb3goYm94LCBvcmRlcmVkV29yZEJvdW5kYXJpZXMsIGJsb2NrRGlyZWN0aW9u
KTsKLSAgICBpZiAoIW9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkpIAotICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0gICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0IHx8
IG9yZGVyZWRXb3JkQm91bmRhcmllc1tvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMV0u
b2Zmc2V0SW5JbmxpbmVCb3ggIT0gb2Zmc2V0KQotICAgICAgICByZXR1cm4gb3JkZXJlZFdvcmRC
b3VuZGFyaWVzW29yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkgLSAxXS52aXNpYmxlUG9zaXRp
b247Ci0gICAgaWYgKG9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkgPiAxKQotICAgICAgICBy
ZXR1cm4gb3JkZXJlZFdvcmRCb3VuZGFyaWVzW29yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkg
LSAyXS52aXNpYmxlUG9zaXRpb247Ci0gICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotfQot
ICAgICAgICAKLXN0YXRpYyBpbnQgZ3JlYXRlc3RPZmZzZXRVbmRlcihpbnQgb2Zmc2V0LCBib29s
IGJveEFuZEJsb2NrQXJlSW5TYW1lRGlyZWN0aW9uLCBjb25zdCBXb3JkQm91bmRhcnlWZWN0b3Im
IG9yZGVyZWRXb3JkQm91bmRhcmllcykKLXsKLSAgICBpZiAoIW9yZGVyZWRXb3JkQm91bmRhcmll
cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBvZmZzZXROb3RGb3VuZDsKLSAgICAvLyBGSVhNRTog
YmluYXJ5IHNlYXJjaC4KLSAgICBpZiAoYm94QW5kQmxvY2tBcmVJblNhbWVEaXJlY3Rpb24pIHsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9yZGVyZWRXb3JkQm91bmRhcmllcy5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKG9yZGVyZWRXb3JkQm91bmRhcmllc1tpXS5v
ZmZzZXRJbklubGluZUJveCA8IG9mZnNldCkKLSAgICAgICAgICAgICAgICByZXR1cm4gaTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gb2Zmc2V0Tm90Rm91bmQ7Ci0gICAgfQotICAgIGZvciAo
aW50IGkgPSBvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsK
LSAgICAgICAgaWYgKG9yZGVyZWRXb3JkQm91bmRhcmllc1tpXS5vZmZzZXRJbklubGluZUJveCA8
IG9mZnNldCkKLSAgICAgICAgICAgIHJldHVybiBpOwotICAgIH0KLSAgICByZXR1cm4gb2Zmc2V0
Tm90Rm91bmQ7Ci19Ci0KLXN0YXRpYyBpbnQgc21hbGxlc3RPZmZzZXRBYm92ZShpbnQgb2Zmc2V0
LCBib29sIGJveEFuZEJsb2NrQXJlSW5TYW1lRGlyZWN0aW9uLCBjb25zdCBXb3JkQm91bmRhcnlW
ZWN0b3ImIG9yZGVyZWRXb3JkQm91bmRhcmllcykKLXsKLSAgICBpZiAoIW9yZGVyZWRXb3JkQm91
bmRhcmllcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBvZmZzZXROb3RGb3VuZDsKLSAgICAvLyBG
SVhNRTogYmluYXJ5IHNlYXJjaC4KLSAgICBpZiAoYm94QW5kQmxvY2tBcmVJblNhbWVEaXJlY3Rp
b24pIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IG9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkg
LSAxOyBpID49IDA7IC0taSkgewotICAgICAgICAgICAgaWYgKG9yZGVyZWRXb3JkQm91bmRhcmll
c1tpXS5vZmZzZXRJbklubGluZUJveCA+IG9mZnNldCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
aTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gb2Zmc2V0Tm90Rm91bmQ7Ci0gICAgfQotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKG9yZGVyZWRXb3JkQm91bmRhcmllc1tpXS5vZmZzZXRJbklubGlu
ZUJveCA+IG9mZnNldCkKLSAgICAgICAgICAgIHJldHVybiBpOwotICAgIH0KLSAgICByZXR1cm4g
b2Zmc2V0Tm90Rm91bmQ7Ci19Ci0KLXN0YXRpYyBjb25zdCBSb290SW5saW5lQm94KiBwcmV2aW91
c1Jvb3RJbmxpbmVCb3goY29uc3QgSW5saW5lQm94KiBib3gpCi17Ci0gICAgTm9kZSogbm9kZSA9
IGJveC0+cmVuZGVyZXIoKS0+bm9kZSgpOwotICAgIE5vZGUqIGVuY2xvc2luZ0Jsb2NrTm9kZSA9
IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5lUmVuZGVyZXIobm9kZSk7Ci0gICAgTm9kZSogcHJl
dmlvdXNOb2RlID0gbm9kZS0+cHJldmlvdXNMZWFmTm9kZSgpOwotICAgIHdoaWxlIChwcmV2aW91
c05vZGUgJiYgZW5jbG9zaW5nQmxvY2tOb2RlID09IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5l
UmVuZGVyZXIocHJldmlvdXNOb2RlKSkKLSAgICAgICAgcHJldmlvdXNOb2RlID0gcHJldmlvdXNO
b2RlLT5wcmV2aW91c0xlYWZOb2RlKCk7Ci0gIAotICAgIHdoaWxlIChwcmV2aW91c05vZGUgJiYg
IXByZXZpb3VzTm9kZS0+aXNTaGFkb3dSb290KCkpIHsKLSAgICAgICAgUG9zaXRpb24gcG9zID0g
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHByZXZpb3VzTm9kZSwgY2FyZXRNYXhPZmZzZXQo
cHJldmlvdXNOb2RlKSk7Ci0gICAgICAgIAotICAgICAgICBpZiAocG9zLmlzQ2FuZGlkYXRlKCkp
IHsKLSAgICAgICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3MocG9zLCBET1dOU1RS
RUFNKTsKLSAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIHJvb3QgPSByZW5kZXJlZFBvcy5yb290
Qm94KCk7Ci0gICAgICAgICAgICBpZiAocm9vdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcm9v
dDsKLSAgICAgICAgfQotCi0gICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTm9kZS0+cHJl
dmlvdXNMZWFmTm9kZSgpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIGNvbnN0
IFJvb3RJbmxpbmVCb3gqIG5leHRSb290SW5saW5lQm94KGNvbnN0IElubGluZUJveCogYm94KQot
ewotICAgIE5vZGUqIG5vZGUgPSBib3gtPnJlbmRlcmVyKCktPm5vZGUoKTsKLSAgICBOb2RlKiBl
bmNsb3NpbmdCbG9ja05vZGUgPSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKG5v
ZGUpOwotICAgIE5vZGUqIG5leHROb2RlID0gbm9kZS0+bmV4dExlYWZOb2RlKCk7Ci0gICAgd2hp
bGUgKG5leHROb2RlICYmIGVuY2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5v
bklubGluZVJlbmRlcmVyKG5leHROb2RlKSkKLSAgICAgICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS0+
bmV4dExlYWZOb2RlKCk7Ci0gIAotICAgIHdoaWxlIChuZXh0Tm9kZSAmJiAhbmV4dE5vZGUtPmlz
U2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIFBvc2l0aW9uIHBvczsKLSAgICAgICAgcG9zID0gY3Jl
YXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG5leHROb2RlLCBjYXJldE1pbk9mZnNldChuZXh0Tm9k
ZSkpOwotICAgICAgICAKLSAgICAgICAgaWYgKHBvcy5pc0NhbmRpZGF0ZSgpKSB7Ci0gICAgICAg
ICAgICBSZW5kZXJlZFBvc2l0aW9uIHJlbmRlcmVkUG9zKHBvcywgRE9XTlNUUkVBTSk7Ci0gICAg
ICAgICAgICBSb290SW5saW5lQm94KiByb290ID0gcmVuZGVyZWRQb3Mucm9vdEJveCgpOwotICAg
ICAgICAgICAgaWYgKHJvb3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Q7Ci0gICAgICAg
IH0KLQotICAgICAgICBuZXh0Tm9kZSA9IG5leHROb2RlLT5uZXh0TGVhZk5vZGUoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBjb25zdCBJbmxpbmVCb3gqIGxlZnRJbmxpbmVC
b3goY29uc3QgSW5saW5lQm94KiBib3gsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCi17
Ci0gICAgaWYgKGJveC0+cHJldkxlYWZDaGlsZCgpKQotICAgICAgICByZXR1cm4gYm94LT5wcmV2
TGVhZkNoaWxkKCk7Ci0gICAgCi0gICAgY29uc3QgUm9vdElubGluZUJveCogcm9vdEJveCA9IGJv
eC0+cm9vdCgpOwotICAgIGNvbnN0IGJvb2wgaXNCbG9ja0xUUiA9IGJsb2NrRGlyZWN0aW9uID09
IExUUjsKLSAgICBjb25zdCBJbmxpbmVGbG93Qm94KiBsZWZ0TGluZUJveCA9IGlzQmxvY2tMVFIg
PyByb290Qm94LT5wcmV2TGluZUJveCgpIDogcm9vdEJveC0+bmV4dExpbmVCb3goKTsKLSAgICBp
ZiAobGVmdExpbmVCb3gpCi0gICAgICAgIHJldHVybiBsZWZ0TGluZUJveC0+bGFzdExlYWZDaGls
ZCgpOwotCi0gICAgY29uc3QgUm9vdElubGluZUJveCogbGVmdFJvb3RJbmxpbmVCb3ggPSBpc0Js
b2NrTFRSID8gcHJldmlvdXNSb290SW5saW5lQm94KGJveCkgOgotICAgICAgICBuZXh0Um9vdElu
bGluZUJveChib3gpOyAKLSAgICByZXR1cm4gbGVmdFJvb3RJbmxpbmVCb3ggPyBsZWZ0Um9vdElu
bGluZUJveC0+bGFzdExlYWZDaGlsZCgpIDogMDsgCi19Ci0KLXN0YXRpYyBjb25zdCBJbmxpbmVC
b3gqIHJpZ2h0SW5saW5lQm94KGNvbnN0IElubGluZUJveCogYm94LCBUZXh0RGlyZWN0aW9uIGJs
b2NrRGlyZWN0aW9uKQotewotICAgIGlmIChib3gtPm5leHRMZWFmQ2hpbGQoKSkKLSAgICAgICAg
cmV0dXJuIGJveC0+bmV4dExlYWZDaGlsZCgpOwotICAgIAotICAgIGNvbnN0IFJvb3RJbmxpbmVC
b3gqIHJvb3RCb3ggPSBib3gtPnJvb3QoKTsKLSAgICBjb25zdCBib29sIGlzQmxvY2tMVFIgPSBi
bG9ja0RpcmVjdGlvbiA9PSBMVFI7Ci0gICAgY29uc3QgSW5saW5lRmxvd0JveCogcmlnaHRMaW5l
Qm94ID0gaXNCbG9ja0xUUiA/IHJvb3RCb3gtPm5leHRMaW5lQm94KCkgOiByb290Qm94LT5wcmV2
TGluZUJveCgpOwotICAgIGlmIChyaWdodExpbmVCb3gpCi0gICAgICAgIHJldHVybiByaWdodExp
bmVCb3gtPmZpcnN0TGVhZkNoaWxkKCk7Ci0KLSAgICBjb25zdCBSb290SW5saW5lQm94KiByaWdo
dFJvb3RJbmxpbmVCb3ggPSBpc0Jsb2NrTFRSID8gbmV4dFJvb3RJbmxpbmVCb3goYm94KSA6Ci0g
ICAgICAgIHByZXZpb3VzUm9vdElubGluZUJveChib3gpOyAKLSAgICByZXR1cm4gcmlnaHRSb290
SW5saW5lQm94ID8gcmlnaHRSb290SW5saW5lQm94LT5maXJzdExlYWZDaGlsZCgpIDogMDsgCi19
Ci0KLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRCb3VuZGFyeShjb25zdCBJbmxpbmVC
b3gqIGJveCwgaW50IG9mZnNldCwgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbikKLXsKLSAg
ICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrOwotICAgIGZvciAgKGNvbnN0IElubGluZUJveCog
YWRqYWNlbnRCb3ggPSBib3g7IGFkamFjZW50Qm94OyBhZGphY2VudEJveCA9IGxlZnRJbmxpbmVC
b3goYWRqYWNlbnRCb3gsIGJsb2NrRGlyZWN0aW9uKSkgewotICAgICAgICBpZiAoYmxvY2tEaXJl
Y3Rpb24gPT0gTFRSKSB7Ci0gICAgICAgICAgICBpZiAoYWRqYWNlbnRCb3gtPmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSkgCi0gICAgICAgICAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNXb3Jk
Qm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8gb2Zmc2V0IDog
aW52YWxpZE9mZnNldCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgd29yZEJy
ZWFrID0gbmV4dFdvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBi
b3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0KTsKLSAgICAgICAgfSBlbHNlIAotICAgICAgICAg
ICAgd29yZEJyZWFrID0gdmlzdWFsbHlMYXN0V29yZEJvdW5kYXJ5SW5Cb3goYWRqYWNlbnRCb3gs
IGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRPZmZzZXQsIGJsb2NrRGlyZWN0
aW9uKTsgICAgICAgICAgICAKLSAgICAgICAgaWYgKHdvcmRCcmVhay5pc05vdE51bGwoKSkKLSAg
ICAgICAgICAgIHJldHVybiB3b3JkQnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24oKTsKLX0KLSAKLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkQm91bmRhcnko
Y29uc3QgSW5saW5lQm94KiBib3gsIGludCBvZmZzZXQsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJl
Y3Rpb24pCi17Ci0gICAgCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKLSAgICBmb3Ig
KGNvbnN0IElubGluZUJveCogYWRqYWNlbnRCb3ggPSBib3g7IGFkamFjZW50Qm94OyBhZGphY2Vu
dEJveCA9IHJpZ2h0SW5saW5lQm94KGFkamFjZW50Qm94LCBibG9ja0RpcmVjdGlvbikpIHsKLSAg
ICAgICAgaWYgKGJsb2NrRGlyZWN0aW9uID09IFJUTCkgewotICAgICAgICAgICAgaWYgKGFkamFj
ZW50Qm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgd29yZEJy
ZWFrID0gbmV4dFdvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBi
b3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c1dvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94
LCBhZGphY2VudEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0KTsKLSAgICAgICAg
fSBlbHNlIAotICAgICAgICAgICAgd29yZEJyZWFrID0gdmlzdWFsbHlMYXN0V29yZEJvdW5kYXJ5
SW5Cb3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRP
ZmZzZXQsIGJsb2NrRGlyZWN0aW9uKTsgICAgICAgICAgICAKLSAgICAgICAgaWYgKCF3b3JkQnJl
YWsuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gd29yZEJyZWFrOwotICAgIH0KLSAgICBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci19Ci0gICAgCi1zdGF0aWMgYm9vbCBwb3NpdGlvbklz
SW5Cb3hCdXROb3RPbkJvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgd29yZEJyZWFrLCBj
b25zdCBJbmxpbmVCb3gqIGJveCkKLXsKLSAgICBpbnQgb2Zmc2V0T2ZXb3JkQnJlYWs7Ci0gICAg
cmV0dXJuIHBvc2l0aW9uSXNJbkJveCh3b3JkQnJlYWssIGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWsp
Ci0gICAgICAgICYmIG9mZnNldE9mV29yZEJyZWFrICE9IGJveC0+Y2FyZXRNYXhPZmZzZXQoKSAm
JiBvZmZzZXRPZldvcmRCcmVhayAhPSBib3gtPmNhcmV0TWluT2Zmc2V0KCk7Ci19Ci0KLXN0YXRp
YyBWaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRQb3NpdGlvbklnbm9yaW5nRWRpdGluZ0JvdW5kYXJ5
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQotewotICAgIElubGluZUJv
eCogYm94OwotICAgIGludCBvZmZzZXQ7Ci0gICAgdmlzaWJsZVBvc2l0aW9uLmdldElubGluZUJv
eEFuZE9mZnNldChib3gsIG9mZnNldCk7Ci0KLSAgICBpZiAoIWJveCkKLSAgICAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbigpOwotCi0gICAgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbiA9
IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2sodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50
KCkpOwotCi0gICAgLy8gRklYTUU6IElmIHRoZSBib3gncyBkaXJlY3Rpb25hbGl0eSBpcyB0aGUg
c2FtZSBhcyB0aGF0IG9mIHRoZSBlbmNsb3NpbmcgYmxvY2ssIHdoZW4gdGhlIG9mZnNldCBpcyBh
dCB0aGUgYm94IGJvdW5kYXJ5Ci0gICAgLy8gYW5kIHRoZSBkaXJlY3Rpb24gaXMgdG93YXJkcyBp
bnNpZGUgdGhlIGJveCwgZG8gSSBzdGlsbCBuZWVkIHRvIG1ha2UgaXQgYSBzcGVjaWFsIGNhc2U/
IEZvciBleGFtcGxlLCBhIExUUiBib3ggaW5zaWRlIGEgTFRSIGJsb2NrLAotICAgIC8vIHdoZW4g
b2Zmc2V0IGlzIGF0IGJveCdzIGNhcmV0TWluT2Zmc2V0IGFuZCB0aGUgZGlyZWN0aW9uIGlzIERp
cmVjdGlvblJpZ2h0LCBzaG91bGQgaXQgYmUgdGFrZW4gY2FyZSBhcyBhIGdlbmVyYWwgY2FzZT8K
LSAgICBpZiAob2Zmc2V0ID09IGJveC0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgpKQotICAgICAgICBy
ZXR1cm4gbGVmdFdvcmRCb3VuZGFyeShsZWZ0SW5saW5lQm94KGJveCwgYmxvY2tEaXJlY3Rpb24p
LCBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7Ci0gICAgaWYgKG9mZnNldCA9PSBib3gt
PmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCkpCi0gICAgICAgIHJldHVybiBsZWZ0V29yZEJvdW5kYXJ5
KGJveCwgb2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7Ci0gICAgCi0gICAgCi0gICAgVmlzaWJsZVBv
c2l0aW9uIHdvcmRCcmVhazsKLSAgICBpZiAoYmxvY2tEaXJlY3Rpb24gPT0gTFRSKSB7Ci0gICAg
ICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0aW9uKQotICAgICAgICAgICAg
d29yZEJyZWFrID0gcHJldmlvdXNCb3VuZGFyeSh2aXNpYmxlUG9zaXRpb24sIHByZXZpb3VzV29y
ZFBvc2l0aW9uQm91bmRhcnkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3b3JkQnJlYWsg
PSBuZXh0Qm91bmRhcnkodmlzaWJsZVBvc2l0aW9uLCBuZXh0V29yZFBvc2l0aW9uQm91bmRhcnkp
OwotICAgIH0KLSAgICBpZiAod29yZEJyZWFrLmlzTm90TnVsbCgpICYmIHBvc2l0aW9uSXNJbkJv
eEJ1dE5vdE9uQm91bmRhcnkod29yZEJyZWFrLCBib3gpKQotICAgICAgICByZXR1cm4gd29yZEJy
ZWFrOwotICAgIAotICAgIFdvcmRCb3VuZGFyeVZlY3RvciBvcmRlcmVkV29yZEJvdW5kYXJpZXM7
Ci0gICAgY29sbGVjdFdvcmRCcmVha3NJbkJveChib3gsIG9yZGVyZWRXb3JkQm91bmRhcmllcywg
YmxvY2tEaXJlY3Rpb24pOwotCi0gICAgaW50IGluZGV4ID0gYm94LT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgPyBncmVhdGVzdE9mZnNldFVuZGVyKG9mZnNldCwgYmxvY2tEaXJlY3Rpb24gPT0g
TFRSLCBvcmRlcmVkV29yZEJvdW5kYXJpZXMpCi0gICAgICAgIDogc21hbGxlc3RPZmZzZXRBYm92
ZShvZmZzZXQsIGJsb2NrRGlyZWN0aW9uID09IFJUTCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKTsK
LSAgICBpZiAoaW5kZXggPj0gMCkKLSAgICAgICAgcmV0dXJuIG9yZGVyZWRXb3JkQm91bmRhcmll
c1tpbmRleF0udmlzaWJsZVBvc2l0aW9uOwotICAgIAotICAgIHJldHVybiBsZWZ0V29yZEJvdW5k
YXJ5KGxlZnRJbmxpbmVCb3goYm94LCBibG9ja0RpcmVjdGlvbiksIGludmFsaWRPZmZzZXQsIGJs
b2NrRGlyZWN0aW9uKTsKLX0KLQotc3RhdGljIFZpc2libGVQb3NpdGlvbiByaWdodFdvcmRQb3Np
dGlvbklnbm9yaW5nRWRpdGluZ0JvdW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJs
ZVBvc2l0aW9uKQotewotICAgIElubGluZUJveCogYm94OwotICAgIGludCBvZmZzZXQ7Ci0gICAg
dmlzaWJsZVBvc2l0aW9uLmdldElubGluZUJveEFuZE9mZnNldChib3gsIG9mZnNldCk7Ci0KLSAg
ICBpZiAoIWJveCkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotCi0gICAgVGV4
dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2sodmlz
aWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwotICAgIAotICAgIGlmIChvZmZzZXQgPT0g
Ym94LT5jYXJldExlZnRtb3N0T2Zmc2V0KCkpCi0gICAgICAgIHJldHVybiByaWdodFdvcmRCb3Vu
ZGFyeShib3gsIG9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOwotICAgIGlmIChvZmZzZXQgPT0gYm94
LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpKQotICAgICAgICByZXR1cm4gcmlnaHRXb3JkQm91bmRh
cnkocmlnaHRJbmxpbmVCb3goYm94LCBibG9ja0RpcmVjdGlvbiksIGludmFsaWRPZmZzZXQsIGJs
b2NrRGlyZWN0aW9uKTsKLSAKLSAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrOwotICAgIGlm
IChibG9ja0RpcmVjdGlvbiA9PSBSVEwpIHsKLSAgICAgICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkg
PT0gYmxvY2tEaXJlY3Rpb24pCi0gICAgICAgICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c0JvdW5k
YXJ5KHZpc2libGVQb3NpdGlvbiwgcHJldmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFyeSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHdvcmRCcmVhayA9IG5leHRCb3VuZGFyeSh2aXNpYmxlUG9z
aXRpb24sIG5leHRXb3JkUG9zaXRpb25Cb3VuZGFyeSk7Ci0gICAgfQotICAgIGlmICh3b3JkQnJl
YWsuaXNOb3ROdWxsKCkgJiYgcG9zaXRpb25Jc0luQm94QnV0Tm90T25Cb3VuZGFyeSh3b3JkQnJl
YWssIGJveCkpCi0gICAgICAgIHJldHVybiB3b3JkQnJlYWs7Ci0gICAgCi0gICAgV29yZEJvdW5k
YXJ5VmVjdG9yIG9yZGVyZWRXb3JkQm91bmRhcmllczsKLSAgICBjb2xsZWN0V29yZEJyZWFrc0lu
Qm94KGJveCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLCBibG9ja0RpcmVjdGlvbik7Ci0gICAgCi0g
ICAgaW50IGluZGV4ID0gYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBzbWFsbGVzdE9m
ZnNldEFib3ZlKG9mZnNldCwgYmxvY2tEaXJlY3Rpb24gPT0gTFRSLCBvcmRlcmVkV29yZEJvdW5k
YXJpZXMpCi0gICAgICAgIDogZ3JlYXRlc3RPZmZzZXRVbmRlcihvZmZzZXQsIGJsb2NrRGlyZWN0
aW9uID09IFJUTCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKTsKLSAgICBpZiAoaW5kZXggPj0gMCkK
LSAgICAgICAgcmV0dXJuIG9yZGVyZWRXb3JkQm91bmRhcmllc1tpbmRleF0udmlzaWJsZVBvc2l0
aW9uOwotICAgIAotICAgIHJldHVybiByaWdodFdvcmRCb3VuZGFyeShyaWdodElubGluZUJveChi
b3gsIGJsb2NrRGlyZWN0aW9uKSwgaW52YWxpZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOwotfQot
Ci1WaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHZpc2libGVQb3NpdGlvbikKLXsKLSAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24g
bGVmdFdvcmRCcmVhayA9IGxlZnRXb3JkUG9zaXRpb25JZ25vcmluZ0VkaXRpbmdCb3VuZGFyeSh2
aXNpYmxlUG9zaXRpb24pOwotICAgIGxlZnRXb3JkQnJlYWsgPSB2aXNpYmxlUG9zaXRpb24uaG9u
b3JFZGl0aW5nQm91bmRhcnlBdE9yQmVmb3JlKGxlZnRXb3JkQnJlYWspOwotICAgIAotICAgIC8v
IEZJWE1FOiBIb3cgc2hvdWxkIHdlIGhhbmRsZSBhIG5vbi1lZGl0YWJsZSBwb3NpdGlvbj8KLSAg
ICBpZiAobGVmdFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRpb24odmlzaWJs
ZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7Ci0gICAgICAgIFRleHREaXJlY3Rpb24gYmxv
Y2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5k
ZWVwRXF1aXZhbGVudCgpKTsKLSAgICAgICAgbGVmdFdvcmRCcmVhayA9IGJsb2NrRGlyZWN0aW9u
ID09IExUUiA/IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKSA6IGVuZE9m
RWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7Ci0gICAgfQotICAgIHJldHVybiBsZWZ0
V29yZEJyZWFrOwotfQotCi1WaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCi17Ci0gICAgaWYgKHZpc2libGVQb3Np
dGlvbi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotCi0gICAg
VmlzaWJsZVBvc2l0aW9uIHJpZ2h0V29yZEJyZWFrID0gcmlnaHRXb3JkUG9zaXRpb25JZ25vcmlu
Z0VkaXRpbmdCb3VuZGFyeSh2aXNpYmxlUG9zaXRpb24pOwotICAgIHJpZ2h0V29yZEJyZWFrID0g
dmlzaWJsZVBvc2l0aW9uLmhvbm9yRWRpdGluZ0JvdW5kYXJ5QXRPckJlZm9yZShyaWdodFdvcmRC
cmVhayk7Ci0KLSAgICAvLyBGSVhNRTogSG93IHNob3VsZCB3ZSBoYW5kbGUgYSBub24tZWRpdGFi
bGUgcG9zaXRpb24/Ci0gICAgaWYgKHJpZ2h0V29yZEJyZWFrLmlzTnVsbCgpICYmIGlzRWRpdGFi
bGVQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpIHsKLSAgICAgICAg
VGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2so
dmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwotICAgICAgICByaWdodFdvcmRCcmVh
ayA9IGJsb2NrRGlyZWN0aW9uID09IExUUiA/IGVuZE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQ
b3NpdGlvbikgOiBzdGFydE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7Ci0gICAg
fQotICAgIHJldHVybiByaWdodFdvcmRCcmVhazsKLX0KLQogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAkocmV2aXNpb24gMTEw
NDczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBpbnQgdGV4dEJyZWFrUHJlY2VkaW5nKFRleHRCcmVha0l0ZXJhdG9yKiwgaW50KTsKICAgICBp
bnQgdGV4dEJyZWFrRm9sbG93aW5nKFRleHRCcmVha0l0ZXJhdG9yKiwgaW50KTsKICAgICBib29s
IGlzVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiwgaW50KTsKKyAgICBib29sIGlzV29yZFRl
eHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciopOwogCiAgICAgY29uc3QgaW50IFRleHRCcmVha0Rv
bmUgPSAtMTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJ
dGVyYXRvcklDVS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAJKHJldmlzaW9uIDExMDQ3MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzksNiArMTM5LDEyIEBAIGJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0
b3IqIGl0ZXIKICAgICByZXR1cm4gdWJya19pc0JvdW5kYXJ5KHJlaW50ZXJwcmV0X2Nhc3Q8VUJy
ZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvc2l0aW9uKTsKIH0KIAorYm9vbCBpc1dvcmRUZXh0
QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQoreworICAgIGludCBydWxlU3RhdHVz
ID0gdWJya19nZXRSdWxlU3RhdHVzKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihp
dGVyYXRvcikpOworICAgIHJldHVybiBydWxlU3RhdHVzICE9IFVCUktfV09SRF9OT05FOworfQor
CiBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldFVwSXRlcmF0b3JXaXRoUnVsZXMoYm9vbCYg
Y3JlYXRlZEl0ZXJhdG9yLCBUZXh0QnJlYWtJdGVyYXRvciomIGl0ZXJhdG9yLAogICAgIGNvbnN0
IGNoYXIqIGJyZWFrUnVsZXMsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4
dEJyZWFrSXRlcmF0b3JHdGsuY3BwCShyZXZpc2lvbiAxMTA0NzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4NSw0ICszODUsOSBAQCBib29sIGlzVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9y
KiBpdGVyCiAgICAgcmV0dXJuIGl0ZXJhdG9yLT5tX2NoYXJJdGVyYXRvci5nZXRJbmRleCgpID09
IGluZGV4OwogfQogCitib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciopCit7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvclF0LmNwcAkocmV2aXNpb24g
MTEwNDczKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVy
YXRvclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDQgKzE1MCw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgYm9vbCBpc1dvcmRU
ZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbmNlL1Rl
eHRCcmVha0l0ZXJhdG9yV2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvd2luY2UvVGV4dEJyZWFrSXRlcmF0b3JXaW5DRS5jcHAJKHJldmlzaW9uIDEx
MDQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luY2UvVGV4dEJyZWFrSXRl
cmF0b3JXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw2ICszMTcsMTEgQEAgYm9vbCBp
c1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciosIGludAogICAgIHJldHVybiB0cnVlOwogfQog
Citib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciopCit7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIFRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKGNv
bnN0IFVDaGFyKiBzdHJpbmcsIGludCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIGNoYXJhY3RlckJy
ZWFrSXRlcmF0b3Ioc3RyaW5nLCBsZW5ndGgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTEwODg0KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAK
KzIwMTItMDMtMTUgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVz
aW5nIElDVSBicmVhayBpdGVyYXRvciB0byBzaW1wbGlmeSB2aXN1YWwgd29yZCBtb3ZlbWVudCBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc4ODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktaW5saW5lLWJs
b2NrLXBvc2l0aW9uZWQtZWxlbWVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9z
ZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1ibG9jay1wb3NpdGlvbmVkLWVs
ZW1lbnQuaHRtbDoKKyAgICAgICAgICBUaGUgd29yZCBicmVhayBzdG9wcyBhdCB0aGUgYmVnaW5u
aW5nIG9mIGZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudCwgd2hpY2ggaXMgY29ycmVjdCBhbmQgY29u
c2lzdGVudCBiZWhhdmlvci4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnkt
d29yZC12aXN1YWxseS1tdWx0aS1saW5lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5n
L3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktbXVsdGktbGluZS5odG1sOgorICAgICAg
ICAgIFRoZSB3b3JkIGJyZWFrIGRvZXMgbm90IHN0b3AgYXQgdGhlIGVuZCBvZiBhIHRleHQgaWYg
dGhlcmUgaXMgbmV4dCBsaW5lIG9mIHRleHQgYXZhaWxhYmxlIHVuZGVyIHRoZSBzYW1lCisgICAg
ICAgICAgZWRpdGFibGUgcm9vdCwgd2hpY2ggaXMgYSBjb25zaXN0ZW50IGJlaGF2aW9yIGNyb3Nz
IHRoZSBib2FyZC4KKyAgICAgICAgICBBZGQgbW9yZSB0ZXN0IGNhc2VzLCBpbmNsdWRpbmcgb25l
IHdpdGggbm9uIElubGluZVRleHRCb3guCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9t
b3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNlLWlubGluZS1lbGVtZW50LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgICBGaXhpbmcgb2YgcHJldmlvdXNseSBtaXNzaW5nIG9yIGV4dHJhIHdv
cmQgYnJlYWsgcG9zaXRpb25zLgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1i
eS13b3JkLXZpc3VhbGx5LXNpbmdsZS1zcGFjZS1vbmUtZWxlbWVudC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXNpbmdsZS1z
cGFjZS1vbmUtZWxlbWVudC5odG1sOgorICAgICAgICAgIEFkZCBhIHRlc3QgY2FzZSBpbmNsdWRp
bmcgYmlkaSBjb250cm9sIGNoYXJhY3RlciB3aGljaCByZW5kZXJzIHdyb25nIHJlc3VsdCBzaW5j
ZSByaWdodC1hcnJvdyBjb3VsZCBub3QgcmVhY2gKKyAgICAgICAgICBhIHBvc2l0aW9uIHdoaWNo
IGlzIHRoZSB3b3JkIGJyZWFrIHBvc2l0aW9uLgorICAgICAgICAgIEFkZCBhbm90aGVyIHRlc3Qg
Y2FzZSBjb250YWluaW5nIG5vbiBJbmxpbmVUZXh0Qm94LgorCisgICAgICAgICogZWRpdGluZy9z
ZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXdyb25nLWxlZnQtcmlnaHQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlz
dWFsbHktd3JvbmctbGVmdC1yaWdodC5odG1sOiBBZGRlZC4KKyAgICAgICAgICBBZGQgYSB0ZXN0
IGNhc2Ugd2hpY2ggcmVuZGVycyB3cm9uZyByZXN1bHQgZHVlIHRvIGxlZnQvcmlnaHQtYXJyb3cg
cmV0dXJucyB3cm9uZyByZXN1bHQuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9yZXNv
dXJjZXMvbW92ZS1ieS13b3JkLXZpc3VhbGx5LmpzOgorICAgICAgICAobW92ZUJ5V29yZE9uRXZl
cnlDaGFyKTogSGFuZGxlIGEgc3BlY2lhbCBjYXNlIHdoZW4gbGVmdC9yaWdodCBhcnJvdyBtaXNz
aW5nIGNlcnRhaW4gcG9zaXRpb24uCisKIDIwMTItMDMtMTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTAzNjkwMD4gYW5kIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTA3OQpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1ibG9j
ay1wb3NpdGlvbmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1pbmxpbmUtYmxvY2st
cG9zaXRpb25lZC1lbGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTEwNDczKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGluZS1i
bG9jay1wb3NpdGlvbmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0y
LDM3ICsyLDM3IEBACiA9PT09PT09PSBNb3ZlIEJ5IFdvcmQgPT09PQogVGVzdCAxLCBMVFI6CiBN
b3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYmVnaW4gc3RhcnQiWzAsIDZdLCAiYWJjIGRlZiJbMCwg
NF0sICJlbmQgaW5nIlswLCA0XSwgInRoaXMgaXMgZmxvYXQiWzAsIDUsIDhdLCAidGhpcyBpcyBm
aXhlZCJbNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4XSwgInRoaXMgaXMgYWJzb2x1
dGUiWzAsIDUsIDgsIDE2XQorImJlZ2luIHN0YXJ0IlswLCA2XSwgImFiYyBkZWYiWzAsIDRdLCAi
ZW5kIGluZyJbMCwgNF0sICJ0aGlzIGlzIGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQi
WzAsIDUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRl
IlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUi
WzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhl
ZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJj
IGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwg
OCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgs
IDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBk
ZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCiBUZXN0IDIsIExUUjoKIE1vdmUgcmlnaHQg
Ynkgb25lIHdvcmQKLSJhYmMgZGVmIlswLCA0XSwgImVuZCBpbmciWzAsIDRdLCAidGhpcyBpcyBm
bG9hdCJbMCwgNSwgOF0sICJ0aGlzIGlzIGZpeGVkIls1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUi
WzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCisiYWJjIGRlZiJbMCwg
NF0sICJlbmQgaW5nIlswLCA0XSwgInRoaXMgaXMgZmxvYXQiWzAsIDUsIDhdLCAidGhpcyBpcyBm
aXhlZCJbMCwgNSwgOF0sICJ0aGlzIGlzIHJlbGF0aXZlIlswLCA1LCA4XSwgInRoaXMgaXMgYWJz
b2x1dGUiWzAsIDUsIDgsIDE2XQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0idGhpcyBpcyBhYnNv
bHV0ZSJbMTYsIDgsIDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlz
IGZpeGVkIls4LCA1XSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0s
ICJhYmMgZGVmIls0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQorInRoaXMgaXMgYWJzb2x1dGUi
WzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhl
ZCJbOCwgNSwgMF0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAi
YWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KIFRlc3QgMywgTFRSOgogTW92ZSBy
aWdodCBieSBvbmUgd29yZAotImVuZCBpbmciWzAsIDRdLCAidGhpcyBpcyBmbG9hdCJbMCwgNSwg
OF0sICJ0aGlzIGlzIGZpeGVkIls1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUiWzAsIDUsIDhdLCAi
dGhpcyBpcyBhYnNvbHV0ZSJbMCwgNSwgOCwgMTZdCisiZW5kIGluZyJbMCwgNF0sICJ0aGlzIGlz
IGZsb2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzAsIDUsIDhdLCAidGhpcyBpcyByZWxh
dGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVm
dCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMg
cmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0
Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFy
dCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0
aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJb
OCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQi
WzYsIDBdCiBUZXN0IDQsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJ0aGlzIGlzIGZs
b2F0IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJb
MCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KKyJ0aGlzIGlzIGZsb2F0
IlswLCA1LCA4XSwgInRoaXMgaXMgZml4ZWQiWzAsIDUsIDhdLCAidGhpcyBpcyByZWxhdGl2ZSJb
MCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBv
bmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRp
dmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1
LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwg
MF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4
LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwg
MF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBd
CiBUZXN0IDUsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKICJ0aGlzIGlzIGZpeGVkIlsw
LCA1LCA4XSwgInRoaXMgaXMgcmVsYXRpdmUiWzAsIDUsIDhdLCAidGhpcyBpcyBhYnNvbHV0ZSJb
MCwgNSwgOCwgMTZdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJ0aGlzIGlzIGFic29sdXRlIlsx
NiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQi
WzgsIDVdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBk
ZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCisidGhpcyBpcyBhYnNvbHV0ZSJbMTYsIDgs
IDUsIDBdLCAidGhpcyBpcyByZWxhdGl2ZSJbOCwgNSwgMF0sICJ0aGlzIGlzIGZpeGVkIls4LCA1
LCAwXSwgInRoaXMgaXMgZmxvYXQiWzgsIDUsIDBdLCAiZW5kIGluZyJbNCwgMF0sICJhYmMgZGVm
Ils0LCAwXSwgImJlZ2luIHN0YXJ0Ils2LCAwXQogVGVzdCA2LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5
IG9uZSB3b3JkCiAidGhpcyBpcyByZWxhdGl2ZSJbMCwgNSwgOF0sICJ0aGlzIGlzIGFic29sdXRl
IlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUi
WzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVsYXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhl
ZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJj
IGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJbNiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwg
OCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZlIls4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgs
IDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwgNSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBk
ZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYsIDBdCiBUZXN0IDcsIExUUjoKIE1vdmUgcmlnaHQg
Ynkgb25lIHdvcmQKICJ0aGlzIGlzIGFic29sdXRlIlswLCA1LCA4LCAxNl0KIE1vdmUgbGVmdCBi
eSBvbmUgd29yZAotInRoaXMgaXMgYWJzb2x1dGUiWzE2LCA4LCA1LCAwXSwgInRoaXMgaXMgcmVs
YXRpdmUiWzgsIDUsIDBdLCAidGhpcyBpcyBmaXhlZCJbOCwgNV0sICJ0aGlzIGlzIGZsb2F0Ils4
LCA1LCAwXSwgImVuZCBpbmciWzQsIDBdLCAiYWJjIGRlZiJbNCwgMF0sICJiZWdpbiBzdGFydCJb
NiwgMF0KKyJ0aGlzIGlzIGFic29sdXRlIlsxNiwgOCwgNSwgMF0sICJ0aGlzIGlzIHJlbGF0aXZl
Ils4LCA1LCAwXSwgInRoaXMgaXMgZml4ZWQiWzgsIDUsIDBdLCAidGhpcyBpcyBmbG9hdCJbOCwg
NSwgMF0sICJlbmQgaW5nIls0LCAwXSwgImFiYyBkZWYiWzQsIDBdLCAiYmVnaW4gc3RhcnQiWzYs
IDBdCiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12
aXN1YWxseS1pbmxpbmUtYmxvY2stcG9zaXRpb25lZC1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlu
bGluZS1ibG9jay1wb3NpdGlvbmVkLWVsZW1lbnQuaHRtbAkocmV2aXNpb24gMTEwNDczKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWlubGlu
ZS1ibG9jay1wb3NpdGlvbmVkLWVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTcsMzgg
KzE3LDM4IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIAogPGRpdiBpZD0i
dGVzdE1vdmVCeVdvcmQiIGNvbnRlbnRlZGl0YWJsZSBzdHlsZT0id2lkdGg6MjAwMHB4OyBoZWln
aHQ6MjAwMHB4Ij4KIDxkaXYgaWQ9ImRfMSIgZGlyPWx0ciAKLXRpdGxlPSJbZF8xLCAwXVtkXzEs
IDZdW2RfMiwgMF1bZF8yLCA0XVtkXzMsIDBdW2RfMywgNF1bZF80LCAwXVtkXzQsIDVdW2RfNCwg
OF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1
XVtkXzcsIDhdW2RfNywgMTZdfAotW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2Rf
NiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzQsIDhdW2RfNCwgNV1bZF80
LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCit0
aXRsZT0iW2RfMSwgMF1bZF8xLCA2XVtkXzIsIDBdW2RfMiwgNF1bZF8zLCAwXVtkXzMsIDRdW2Rf
NCwgMF1bZF80LCA1XVtkXzQsIDhdW2RfNSwgMF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82
LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAorW2RfNywgMTZd
W2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1b
ZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtk
XzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29y
ZCI+YmVnaW4gc3RhcnQ8L2Rpdj4KIAogPGRpdiBpZD0iZF8yIiBkaXI9bHRyIAotdGl0bGU9Iltk
XzIsIDBdW2RfMiwgNF1bZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2Rf
NSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywgNV1bZF83
LCA4XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhd
W2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1b
ZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAordGl0bGU9
IltkXzIsIDBdW2RfMiwgNF1bZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhd
W2RfNSwgMF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1b
ZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAorW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcs
IDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwg
OF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2
XVtkXzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgc3R5bGU9ImRpc3BsYXk6aW5s
aW5lLWJsb2NrIj5hYmMgZGVmPC9kaXY+CiAKIDxkaXYgaWQ9ImRfMyIgZGlyPWx0ciAKLXRpdGxl
PSJbZF8zLCAwXVtkXzMsIDRdW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2RfNSwgNV1bZF81LCA4
XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywgNV1bZF83LCA4XVtkXzcsIDE2
XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82
LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtkXzMs
IDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAordGl0bGU9IltkXzMsIDBdW2Rf
MywgNF1bZF80LCAwXVtkXzQsIDVdW2RfNCwgOF1bZF81LCAwXVtkXzUsIDVdW2RfNSwgOF1bZF82
LCAwXVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAxNl18Citb
ZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1b
ZF81LCA4XVtkXzUsIDVdW2RfNSwgMF1bZF80LCA4XVtkXzQsIDVdW2RfNCwgMF1bZF8zLCA0XVtk
XzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAogY2xhc3M9InRlc3RfbW92
ZV9ieV93b3JkIj5lbmQgaW5nPC9kaXY+CiAKIDxkaXYgaWQ9ImRfNCIgZGlyPWx0ciAKLXRpdGxl
PSJbZF80LCAwXVtkXzQsIDVdW2RfNCwgOF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1
XVtkXzYsIDhdW2RfNywgMF1bZF83LCA1XVtkXzcsIDhdW2RfNywgMTZdfAotW2RfNywgMTZdW2Rf
NywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81
LCA1XVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIs
IDBdW2RfMSwgNl1bZF8xLCAwXSIgCit0aXRsZT0iW2RfNCwgMF1bZF80LCA1XVtkXzQsIDhdW2Rf
NSwgMF1bZF81LCA1XVtkXzUsIDhdW2RfNiwgMF1bZF82LCA1XVtkXzYsIDhdW2RfNywgMF1bZF83
LCA1XVtkXzcsIDhdW2RfNywgMTZdfAorW2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBd
W2RfNiwgOF1bZF82LCA1XVtkXzYsIDBdW2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1b
ZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtk
XzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgc3R5bGU9ImZsb2F0OmxlZnQiPnRo
aXMgaXMgZmxvYXQ8L2Rpdj4KIAogPGRpdiBpZD0iZF81IiBkaXI9bHRyIAogdGl0bGU9IltkXzUs
IDBdW2RfNSwgNV1bZF81LCA4XVtkXzYsIDBdW2RfNiwgNV1bZF82LCA4XVtkXzcsIDBdW2RfNywg
NV1bZF83LCA4XVtkXzcsIDE2XXwKLVtkXzcsIDE2XVtkXzcsIDhdW2RfNywgNV1bZF83LCAwXVtk
XzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF80LCA4XVtkXzQsIDVdW2Rf
NCwgMF1bZF8zLCA0XVtkXzMsIDBdW2RfMiwgNF1bZF8yLCAwXVtkXzEsIDZdW2RfMSwgMF0iIAor
W2RfNywgMTZdW2RfNywgOF1bZF83LCA1XVtkXzcsIDBdW2RfNiwgOF1bZF82LCA1XVtkXzYsIDBd
W2RfNSwgOF1bZF81LCA1XVtkXzUsIDBdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1b
ZF8zLCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKIGNsYXNzPSJ0ZXN0X21v
dmVfYnlfd29yZCIgc3R5bGU9InBvc2l0aW9uOmZpeGVkOyB0b3A6MzBweDsgcmlnaHQ6NXB4Ij50
aGlzIGlzIGZpeGVkPC9kaXY+CiAKIDxkaXYgaWQ9ImRfNiIgZGlyPWx0ciAKIHRpdGxlPSJbZF82
LCAwXVtkXzYsIDVdW2RfNiwgOF1bZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAxNl18Ci1b
ZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2RfNiwgMF1b
ZF81LCA4XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8zLCAwXVtk
XzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKK1tkXzcsIDE2XVtkXzcsIDhdW2RfNywg
NV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1bZF81LCAw
XVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtkXzIsIDBd
W2RfMSwgNl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHN0eWxlPSJwb3Np
dGlvbjpyZWxhdGl2ZTsgbGVmdDoyMHB4Ij50aGlzIGlzIHJlbGF0aXZlPC9kaXY+CiAKIDxkaXYg
aWQ9ImRfNyIgZGlyPWx0ciAKIHRpdGxlPSJbZF83LCAwXVtkXzcsIDVdW2RfNywgOF1bZF83LCAx
Nl18Ci1bZF83LCAxNl1bZF83LCA4XVtkXzcsIDVdW2RfNywgMF1bZF82LCA4XVtkXzYsIDVdW2Rf
NiwgMF1bZF81LCA4XVtkXzUsIDVdW2RfNCwgOF1bZF80LCA1XVtkXzQsIDBdW2RfMywgNF1bZF8z
LCAwXVtkXzIsIDRdW2RfMiwgMF1bZF8xLCA2XVtkXzEsIDBdIiAKK1tkXzcsIDE2XVtkXzcsIDhd
W2RfNywgNV1bZF83LCAwXVtkXzYsIDhdW2RfNiwgNV1bZF82LCAwXVtkXzUsIDhdW2RfNSwgNV1b
ZF81LCAwXVtkXzQsIDhdW2RfNCwgNV1bZF80LCAwXVtkXzMsIDRdW2RfMywgMF1bZF8yLCA0XVtk
XzIsIDBdW2RfMSwgNl1bZF8xLCAwXSIgCiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHN0eWxl
PSJwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxMDBweDsgdG9wOjE1MHB4Ij50aGlzIGlzIGFic29s
dXRlPC9kaXY+CiAKIDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
bW92ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLWxpbmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1t
dWx0aS1saW5lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTEwNDczKQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LW11bHRpLWxpbmUtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsOSBAQCBNb3ZlIHJpZ2h0IGJ5IG9u
ZSB3b3JkCiAib3BxIHJzdCB1dncgeHl6IlsxNSwgMTEsIDgsIDMsIDBdLCAiYWJjIGRlZiBnaGkg
amtsIG1uICJbMTYsIDExLCA4LCAzLCAwXQogVGVzdCA4LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25l
IHdvcmQKLSJhYmMgZGVmIGdoaSBqa2wgbW4gIlswLCAzLCA4LCAxMSwgMTYsIDE4XSwgIm9wcSBy
c3QgdXZ3IHh5eiJbMCwgMywgOCwgMTEsIDE1XSAgICBGQUlMIGV4cGVjdGVkOiBbImFiYyBkZWYg
Z2hpIGprbCBtbiAiWyAwLCAgMywgIDgsICAxMSwgIDE2LCBdIm9wcSByc3QgdXZ3IHh5eiJbIDAs
ICAzLCAgOCwgIDExLCAgMTVdCi0iYWJjIGRlZiBnaGkgamtsIG1uICJbMTYsIDE4XSAgIEZBSUwg
ZXhwZWN0ZWQgIm9wcSByc3QgdXZ3IHh5eiJbIDBdCi0iYWJjIGRlZiBnaGkgamtsIG1uICJbMTcs
IDE4XSAgIEZBSUwgZXhwZWN0ZWQgIm9wcSByc3QgdXZ3IHh5eiJbIDBdCisiYWJjIGRlZiBnaGkg
amtsIG1uICJbMCwgMywgOCwgMTEsIDE2XSwgIm9wcSByc3QgdXZ3IHh5eiJbMCwgMywgOCwgMTEs
IDE1XQogTW92ZSByaWdodCBieSBvbmUgd29yZAotIm9wcSByc3QgdXZ3IHh5eiJbMTUsIDExLCA4
LCAzLCAwXSwgImFiYyBkZWYgZ2hpIGprbCBtbiAiWzE4LCAxNiwgMTEsIDgsIDMsIDBdCisib3Bx
IHJzdCB1dncgeHl6IlsxNSwgMTEsIDgsIDMsIDBdLCAiYWJjIGRlZiBnaGkgamtsIG1uICJbMTYs
IDExLCA4LCAzLCAwXQogVGVzdCA5LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKICJBQUEg
QUFBIEFBQSBBQUEgIlswLCA0LCA4LCAxMl0sICJBQUEgQUFBIEFBQSBBQUEiWzAsIDQsIDgsIDEy
LCAxNV0KQEAgLTU5LDIzICs1NywzNSBAQCBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCiAiQUFBIGtq
IEFBQSBtbiBvcHEgQUFBIEFBQSJbMjUsIDIyLCAxOCwgMTQsIDExLCA3LCA0LCAwXSwgIiBhYmMg
ZGVmIEFBQSBBQUEgaGlqIEFBQSBBQUEgdXZ3IHh5eiAiWzMzLCAyOSwgMjUsIDIxLCAxNywgMTMs
IDksIDQsIDFdCiBUZXN0IDEyLCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSIgYWJjIGRl
ZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlsxLCA0LCA5LCAxMywgMTcsIDIxLCAyNSwg
MjksIDMzLCAzNl0sICJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlswLCA0LCA3LCAxMSwgMTQs
IDE4LCAyMiwgMjVdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiIGFiYyBkZWYgQUFBIEFBQSBoaWogQUFB
IEFBQSB1dncgeHl6ICJbIDEsICA0LCAgOSwgIDEzLCAgMTcsICAyMSwgIDI1LCAgMjksICAzMywg
XSJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlsgMCwgIDQsICA3LCAgMTEsICAxNCwgIDE4LCAg
MjIsICAyNV0KLSIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlszMywgMzZd
ICAgRkFJTCBleHBlY3RlZCAiQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFBQSJbIDBdCi0iIGFiYyBk
ZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJbMzUsIDM2XSAgIEZBSUwgZXhwZWN0ZWQg
IkFBQSBraiBBQUEgbW4gb3BxIEFBQSBBQUEiWyAwXQotIiBhYmMgZGVmIEFBQSBBQUEgaGlqIEFB
QSBBQUEgdXZ3IHh5eiAiWzM0LCAzNl0gICBGQUlMIGV4cGVjdGVkICJBQUEga2ogQUFBIG1uIG9w
cSBBQUEgQUFBIlsgMF0KKyIgYWJjIGRlZiBBQUEgQUFBIGhpaiBBQUEgQUFBIHV2dyB4eXogIlsx
LCA0LCA5LCAxMywgMTcsIDIxLCAyNSwgMjksIDMzXSwgIkFBQSBraiBBQUEgbW4gb3BxIEFBQSBB
QUEiWzAsIDQsIDcsIDExLCAxNCwgMTgsIDIyLCAyNV0KIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQK
LSJBQUEga2ogQUFBIG1uIG9wcSBBQUEgQUFBIlsyNSwgMjIsIDE4LCAxNCwgMTEsIDcsIDQsIDBd
LCAiIGFiYyBkZWYgQUFBIEFBQSBoaWogQUFBIEFBQSB1dncgeHl6ICJbMzYsIDMzLCAyOSwgMjUs
IDIxLCAxNywgMTMsIDksIDQsIDFdCisiQUFBIGtqIEFBQSBtbiBvcHEgQUFBIEFBQSJbMjUsIDIy
LCAxOCwgMTQsIDExLCA3LCA0LCAwXSwgIiBhYmMgZGVmIEFBQSBBQUEgaGlqIEFBQSBBQUEgdXZ3
IHh5eiAiWzMzLCAyOSwgMjUsIDIxLCAxNywgMTMsIDksIDQsIDFdCiBUZXN0IDEzLCBMVFI6CiBN
b3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiAiWzAsIDRdCisiYWJjIGRlZiBnaGkgamts
IG1uICJbMCwgNCwgOCwgMTIsIDE2XSwgIm9wcSByc3QgdXZ3IHh5eiJbMCwgNCwgOCwgMTIsIDE1
XQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iIGhpaiBvcHEiWzgsIDUsIDFdCisib3BxIHJzdCB1
dncgeHl6IlsxNSwgMTIsIDgsIDQsIDBdLCAiYWJjIGRlZiBnaGkgamtsIG1uICJbMTYsIDEyLCA4
LCA0LCAwXQogVGVzdCAxNCwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYg
Z2hpIGprbCBtbiAiWzAsIDQsIDgsIDEyLCAxNiwgMThdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQK
KyJhYmMgZGVmIGdoaSBqa2wgbW4gIlsxOCwgMTYsIDEyLCA4LCA0LCAwXQorVGVzdCAxNSwgTFRS
OgorTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYgZ2hpIGprbCBtbiAiWzAsIDQsIDgs
IDEyLCAxNl0sICJvcHEgcnN0IHV2dyB4eXoiWzAsIDQsIDgsIDEyLCAxNV0KK01vdmUgbGVmdCBi
eSBvbmUgd29yZAorIm9wcSByc3QgdXZ3IHh5eiJbMTUsIDEyLCA4LCA0LCAwXSwgImFiYyBkZWYg
Z2hpIGprbCBtbiAiWzE2LCAxMiwgOCwgNCwgMF0KK1Rlc3QgMTYsIExUUjoKK01vdmUgcmlnaHQg
Ynkgb25lIHdvcmQKKyJhYmMgZGVmICJbMCwgNCwgOF0KK01vdmUgbGVmdCBieSBvbmUgd29yZAor
IiBoaWogb3BxIls4LCA1LCAxXQorVGVzdCAxNywgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29y
ZAogPERJVj5bMF0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAogPERJVj5bMF0KLVRlc3QgMTUsIExU
UjoKK1Rlc3QgMTgsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKICJcbjAwIlszXQogTW92
ZSBsZWZ0IGJ5IG9uZSB3b3JkCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9t
b3ZlLWJ5LXdvcmQtdmlzdWFsbHktbXVsdGktbGluZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1saW5l
Lmh0bWwJKHJldmlzaW9uIDExMDQ3MykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L21vdmUtYnktd29yZC12aXN1YWxseS1tdWx0aS1saW5lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDcgKzU0LDcgQEAgd2hlcmUgY2hpbGRfbm9kZV9pbmRleCBpcyBvcHRpb25hbCwgZGVmYQog
CiA8ZGl2IGNvbnRlbnRlZGl0YWJsZSBkaXI9cnRsIGlkPSJtbF83IiBjbGFzcz0idGVzdF9tb3Zl
X2J5X3dvcmQgZml4X3dpZHRoIiB0aXRsZT0iW21sXzcsIDE1LCA1XVttbF83LCAxMSwgNV1bbWxf
NywgOCwgNV1bbWxfNywgMywgNV1bbWxfNywgMCwgNV1bbWxfNywgMTZdW21sXzcsIDExXVttbF83
LCA4XVttbF83LCAzXVttbF83LCAwXXxbbWxfNywgMF1bbWxfNywgM11bbWxfNywgOF1bbWxfNywg
MTFdW21sXzcsIDE2XVttbF83LCAwLCA1XVttbF83LCAzLCA1XVttbF83LCA4LCA1XVttbF83LCAx
MSwgNV1bbWxfNywgMTUsIDVdIj5hYmMgZGVmIGdoaSBqa2wgbW4gPGJyLz48YnIvPjxici8+b3Bx
IHJzdCB1dncgeHl6PC9kaXY+CiAKLTxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1ydGwgaWQ9Im1s
XzgiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSJbbWxfOCwgMTUs
IDVdW21sXzgsIDExLCA1XVttbF84LCA4LCA1XVttbF84LCAzLCA1XVttbF84LCAwLCA1XVttbF84
LCAxOF1bbWxfOCwgMTZdW21sXzgsIDExXVttbF84LCA4XVttbF84LCAzXVttbF84LCAwXXxbbWxf
OCwgMF1bbWxfOCwgM11bbWxfOCwgOF1bbWxfOCwgMTFdW21sXzgsIDE2XVttbF84LCAwLCA1XVtt
bF84LCAzLCA1XVttbF84LCA4LCA1XVttbF84LCAxMSwgNV1bbWxfOCwgMTUsIDVdIj5hYmMgZGVm
IGdoaSBqa2wgbW4gPGRpdj48YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rpdj48ZGl2Pjxici8+PC9k
aXY+b3BxIHJzdCB1dncgeHl6PC9kaXY+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBkaXI9cnRsIGlk
PSJtbF84IiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQgZml4X3dpZHRoIiB0aXRsZT0iW21sXzgs
IDE1LCA1XVttbF84LCAxMSwgNV1bbWxfOCwgOCwgNV1bbWxfOCwgMywgNV1bbWxfOCwgMCwgNV1b
bWxfOCwgMTZdW21sXzgsIDExXVttbF84LCA4XVttbF84LCAzXVttbF84LCAwXXxbbWxfOCwgMF1b
bWxfOCwgM11bbWxfOCwgOF1bbWxfOCwgMTFdW21sXzgsIDE2XVttbF84LCAwLCA1XVttbF84LCAz
LCA1XVttbF84LCA4LCA1XVttbF84LCAxMSwgNV1bbWxfOCwgMTUsIDVdIj5hYmMgZGVmIGdoaSBq
a2wgbW4gPGRpdj48YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rpdj48ZGl2Pjxici8+PC9kaXY+b3Bx
IHJzdCB1dncgeHl6PC9kaXY+CiAKIDxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1ydGwgaWQ9Im1s
XzkiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxlPSJbbWxfOSwgMTUs
IDVdW21sXzksIDEyLCA1XVttbF85LCA4LCA1XVttbF85LCA0LCA1XVttbF85LCAwLCA1XVttbF85
LCAxMl1bbWxfOSwgOF1bbWxfOSwgNF1bbWxfOSwgMF18W21sXzksIDBdW21sXzksIDRdW21sXzks
IDhdW21sXzksIDEyXVttbF85LCAwLCA1XVttbF85LCA0LCA1XVttbF85LCA4LCA1XVttbF85LCAx
MiwgNV1bbWxfOSwgMTUsIDVdIj7XkNeQ15Ag15DXkNeQINeQ15DXkCDXkNeQ15AgPGJyLz48YnIv
Pjxici8+15DXkNeQINeQ15DXkCDXkNeQ15Ag15DXkNeQPC9kaXY+CiAKQEAgLTY1LDExICs2NSwx
NyBAQCB3aGVyZSBjaGlsZF9ub2RlX2luZGV4IGlzIG9wdGlvbmFsLCBkZWZhCiAiPiBhYmMgZGVm
INeQ15DXkCDXkNeQ15AgaGlqINeQ15DXkCDXkNeQ15AgdXZ3IHh5eiA8YnIvPjxici8+PGJyLz7X
kNeQ15Aga2og15DXkNeQIG1uIG9wcSDXkNeQ15Ag15DXkNeQPC9kaXY+CiAKIDxkaXYgY29udGVu
dGVkaXRhYmxlIGRpcj1ydGwgaWQ9Im1sXzEyIiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQgZml4
X3dpZHRoIiB0aXRsZT0iCi1bbWxfMTIsIDI1LCA1XVttbF8xMiwgMjIsIDVdW21sXzEyLCAxOCwg
NV1bbWxfMTIsIDE0LCA1XVttbF8xMiwgMTEsIDVdW21sXzEyLCA3LCA1XVttbF8xMiwgNCwgNV1b
bWxfMTIsIDAsIDVdW21sXzEyLCAzNl1bbWxfMTIsIDMzXVttbF8xMiwgMjldW21sXzEyLCAyNV1b
bWxfMTIsIDIxXVttbF8xMiwgMTddW21sXzEyLCAxM11bbWxfMTIsIDldW21sXzEyLCA0XVttbF8x
MiwgMV18W21sXzEyLCAxXVttbF8xMiwgNF1bbWxfMTIsIDldW21sXzEyLCAxM11bbWxfMTIsIDE3
XVttbF8xMiwgMjFdW21sXzEyLCAyNV1bbWxfMTIsIDI5XVttbF8xMiwgMzNdW21sXzEyLCAwLCA1
XVttbF8xMiwgNCwgNV1bbWxfMTIsIDcsIDVdW21sXzEyLCAxMSwgNV1bbWxfMTIsIDE0LCA1XVtt
bF8xMiwgMTgsIDVdW21sXzEyLCAyMiwgNV1bbWxfMTIsIDI1LCA1XQorW21sXzEyLCAyNSwgNV1b
bWxfMTIsIDIyLCA1XVttbF8xMiwgMTgsIDVdW21sXzEyLCAxNCwgNV1bbWxfMTIsIDExLCA1XVtt
bF8xMiwgNywgNV1bbWxfMTIsIDQsIDVdW21sXzEyLCAwLCA1XVttbF8xMiwgMzNdW21sXzEyLCAy
OV1bbWxfMTIsIDI1XVttbF8xMiwgMjFdW21sXzEyLCAxN11bbWxfMTIsIDEzXVttbF8xMiwgOV1b
bWxfMTIsIDRdW21sXzEyLCAxXXxbbWxfMTIsIDFdW21sXzEyLCA0XVttbF8xMiwgOV1bbWxfMTIs
IDEzXVttbF8xMiwgMTddW21sXzEyLCAyMV1bbWxfMTIsIDI1XVttbF8xMiwgMjldW21sXzEyLCAz
M11bbWxfMTIsIDAsIDVdW21sXzEyLCA0LCA1XVttbF8xMiwgNywgNV1bbWxfMTIsIDExLCA1XVtt
bF8xMiwgMTQsIDVdW21sXzEyLCAxOCwgNV1bbWxfMTIsIDIyLCA1XVttbF8xMiwgMjUsIDVdCiAi
PiBhYmMgZGVmINeQ15DXkCDXkNeQ15AgaGlqINeQ15DXkCDXkNeQ15AgdXZ3IHh5eiA8ZGl2Pjxi
ci8+PC9kaXY+PGRpdj48YnIvPjwvZGl2PjxkaXY+PGJyLz48L2Rpdj7XkNeQ15Aga2og15DXkNeQ
IG1uIG9wcSDXkNeQ15Ag15DXkNeQPC9kaXY+CiAKKzxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1s
dHIgaWQ9Im1sXzEzIiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQgZml4X3dpZHRoIiB0aXRsZT0i
W21sXzEzLCAwXVttbF8xMywgNF1bbWxfMTMsIDhdW21sXzEzLCAxMl1bbWxfMTMsIDE2XVttbF8x
MywgMCwgNV1bbWxfMTMsIDQsIDVdW21sXzEzLCA4LCA1XVttbF8xMywgMTIsIDVdW21sXzEzLCAx
NSwgNV18W21sXzEzLCAxNSwgNV1bbWxfMTMsIDEyLCA1XVttbF8xMywgOCwgNV1bbWxfMTMsIDQs
IDVdW21sXzEzLCAwLCA1XVttbF8xMywgMTZdW21sXzEzLCAxMl1bbWxfMTMsIDhdW21sXzEzLCA0
XVttbF8xMywgMF0iPmFiYyBkZWYgZ2hpIGprbCBtbiA8ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRp
dj48L2Rpdj5vcHEgcnN0IHV2dyB4eXo8L2Rpdj4KKworPGRpdiBjb250ZW50ZWRpdGFibGUgZGly
PWx0ciBpZD0ibWxfMTQiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCBmaXhfd2lkdGgiIHRpdGxl
PSJbbWxfMTQsIDBdW21sXzE0LCA0XVttbF8xNCwgOF1bbWxfMTQsIDEyXVttbF8xNCwgMTZdW21s
XzE0LCAxOF18W21sXzE0LCAxOF1bbWxfMTQsIDE2XVttbF8xNCwgMTJdW21sXzE0LCA4XVttbF8x
NCwgNF1bbWxfMTQsIDBdIj5hYmMgZGVmIGdoaSBqa2wgbW4gPGRpdj48L2Rpdj48ZGl2PjwvZGl2
PjxkaXY+PC9kaXY+PC9kaXY+CisKKzxkaXYgY29udGVudGVkaXRhYmxlIGRpcj1sdHIgaWQ9Im1s
XzE1IiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQgZml4X3dpZHRoIiB0aXRsZT0iW21sXzE1LCAw
XVttbF8xNSwgNF1bbWxfMTUsIDhdW21sXzE1LCAxMl1bbWxfMTUsIDE2XVttbF8xNSwgMCwgNV1b
bWxfMTUsIDQsIDVdW21sXzE1LCA4LCA1XVttbF8xNSwgMTIsIDVdW21sXzE1LCAxNSwgNV18W21s
XzE1LCAxNSwgNV1bbWxfMTUsIDEyLCA1XVttbF8xNSwgOCwgNV1bbWxfMTUsIDQsIDVdW21sXzE1
LCAwLCA1XVttbF8xNSwgMTZdW21sXzE1LCAxMl1bbWxfMTUsIDhdW21sXzE1LCA0XVttbF8xNSwg
MF0iPmFiYyBkZWYgZ2hpIGprbCBtbiA8ZGl2PjxpbWcgc3JjPS4uLy4uL2FjY2Vzc2liaWxpdHkv
cmVzb3VyY2VzL2Nha2UucG5nPjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj5vcHEgcnN0IHV2
dyB4eXo8L2Rpdj4KKwogPCEtLSBtaXhlZCBlZGl0YWJpbGl0eSAtLT4KLTxkaXYgZGlyPWx0ciBj
bGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDR8OCA1IDEiPmFiYyBkZWYgPHNwYW4g
Y29udGVudGVkaXRhYmxlPiBpbnNpZGUgc3BhbiA8L3NwYW4+IGhpaiBvcHE8L2Rpdj4KKzxkaXYg
ZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDQgOHw4IDUgMSI+YWJj
IGRlZiA8c3BhbiBjb250ZW50ZWRpdGFibGU+IGluc2lkZSBzcGFuIDwvc3Bhbj4gaGlqIG9wcTwv
ZGl2PgogCiA8ZGl2IGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgY29udGVudGVkaXRhYmxlIGRp
cj1sdHIgdGl0bGU9IjB8MCI+PC9kaXY+CiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1zaW5nbGUtc3BhY2UtaW5saW5lLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L21vdmUtYnktd29yZC12aXN1YWxseS1zaW5nbGUtc3BhY2UtaW5saW5lLWVsZW1lbnQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxMTA0NzMpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNlLWlubGluZS1lbGVtZW50LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTcsMzAgKzE3LDE0IEBAIE1vdmUgbGVmdCBieSBv
bmUgd29yZAogIiByc3QgdXZ3Ils4LCA1LCAxXSwgImhpaiBvcHEiWzRdLCAiYWJjIGRlZiAiWzgs
IDQsIDBdCiBUZXN0IDQsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotImFiYyBkZWYgIlsw
XSwgIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzNdLCAiYWJjIGRlZiAiWzcsIDNdLCAiIHJzdCB1
dnciWzhdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiYWJjIGRlZiAiWyAwLCBdIiByc3QgdXZ3IlsgNCwg
XSJoaWogb3BxIlsgNywgIDMsIF0iYWJjIGRlZiAiWyA3LCAgMywgXSIgcnN0IHV2dyJbIDhdCi0i
IHJzdCB1dnciWzRdLCAiaGlqIG9wcSJbM10gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10K
LSIgcnN0IHV2dyJbM10sICJoaWogb3BxIlszXSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3
XQotIiByc3QgdXZ3IlsyXSwgImhpaiBvcHEiWzNdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJb
IDddCi0iIHJzdCB1dnciWzFdLCAiaGlqIG9wcSJbM10gICBGQUlMIGV4cGVjdGVkICJoaWogb3Bx
IlsgN10KLU1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSIgcnN0IHV2dyJbOF0sICJhYmMgZGVmICJb
MywgN10sICJoaWogb3BxIlszXSwgIiByc3QgdXZ3Ils0XSwgImFiYyBkZWYgIlswXSAgICBGQUlM
IGV4cGVjdGVkOiBbIiByc3QgdXZ3IlsgOCwgXSJhYmMgZGVmICJbIDMsICA3LCBdImhpaiBvcHEi
WyAzLCAgNywgXSIgcnN0IHV2dyJbIDQsIF0iYWJjIGRlZiAiWyAwXQotImhpaiBvcHEiWzNdLCAi
IHJzdCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iaGlqIG9wcSJbNF0s
ICIgcnN0IHV2dyJbNF0gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSJoaWogb3BxIls1
XSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotImhpaiBvcHEi
WzZdLCAiIHJzdCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCisiYWJjIGRl
ZiAiWzBdLCAiIHJzdCB1dnciWzRdLCAiaGlqIG9wcSJbNywgM10sICJhYmMgZGVmICJbNywgM10s
ICIgcnN0IHV2dyJbOF0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyIgcnN0IHV2dyJbOF0sICJh
YmMgZGVmICJbMywgN10sICJoaWogb3BxIlszLCA3XSwgIiByc3QgdXZ3Ils0XSwgImFiYyBkZWYg
IlswXQogVGVzdCA1LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJhYmMgZGVmICJbMF0s
ICIgcnN0IHV2dyJbNF0sICJoaWogb3BxIlszXSwgImFiYyBkZWYgIls3LCAzXSwgIiByc3QgdXZ3
Ils4XSAgICBGQUlMIGV4cGVjdGVkOiBbImFiYyBkZWYgIlsgMCwgXSIgcnN0IHV2dyJbIDQsIF0i
aGlqIG9wcSJbIDcsICAzLCBdImFiYyBkZWYgIlsgNywgIDMsIF0iIHJzdCB1dnciWyA4XQotIiBy
c3QgdXZ3Ils0XSwgImhpaiBvcHEiWzNdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0i
IHJzdCB1dnciWzNdLCAiaGlqIG9wcSJbM10gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10K
LSIgcnN0IHV2dyJbMl0sICJoaWogb3BxIlszXSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3
XQotIiByc3QgdXZ3IlsxXSwgImhpaiBvcHEiWzNdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJb
IDddCi1Nb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iIHJzdCB1dnciWzhdLCAiYWJjIGRlZiAiWzMs
IDddLCAiaGlqIG9wcSJbM10sICIgcnN0IHV2dyJbNF0sICJhYmMgZGVmICJbMF0gICAgRkFJTCBl
eHBlY3RlZDogWyIgcnN0IHV2dyJbIDgsIF0iYWJjIGRlZiAiWyAzLCAgNywgXSJoaWogb3BxIlsg
MywgIDcsIF0iIHJzdCB1dnciWyA0LCBdImFiYyBkZWYgIlsgMF0KLSJoaWogb3BxIlszXSwgIiBy
c3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQotImhpaiBvcHEiWzRdLCAi
IHJzdCB1dnciWzRdICAgRkFJTCBleHBlY3RlZCAiaGlqIG9wcSJbIDddCi0iaGlqIG9wcSJbNV0s
ICIgcnN0IHV2dyJbNF0gICBGQUlMIGV4cGVjdGVkICJoaWogb3BxIlsgN10KLSJoaWogb3BxIls2
XSwgIiByc3QgdXZ3Ils0XSAgIEZBSUwgZXhwZWN0ZWQgImhpaiBvcHEiWyA3XQorImFiYyBkZWYg
IlswXSwgIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzcsIDNdLCAiYWJjIGRlZiAiWzcsIDNdLCAi
IHJzdCB1dnciWzhdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiIHJzdCB1dnciWzhdLCAiYWJj
IGRlZiAiWzMsIDddLCAiaGlqIG9wcSJbMywgN10sICIgcnN0IHV2dyJbNF0sICJhYmMgZGVmICJb
MF0KIFRlc3QgNiwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAogImFiYyBkZWYgIlswLCA0
LCA4XSwgImhpaiBvcHEiWzRdLCAiIHJzdCB1dnciWzEsIDUsIDhdCkBAIC04OCwzMiArNzIsMTQg
QEAgTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCiAiRkZaIExJRyJbNywgM10sICJhYmMgZGVmIls0XSwg
IkFCRCBEU1UgIls4LCAzLCAwXQogVGVzdCAxNSwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3Jk
Ci0iQUJEIG9wcSBEU1UgIlswLCA0LCA4LCAxMl0sICJhYmMgQUFBIGRlZiJbOCwgNCwgM10sICJG
RlogcnN0IExJRyJbNCwgOCwgMTFdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiQUJEIG9wcSBEU1UgIlsg
MCwgIDQsICA4LCAgMTIsIF0iYWJjIEFBQSBkZWYiWyA0LCAgMywgXSJGRlogcnN0IExJRyJbIDQs
ICA4LCAgMTFdCi0iQUJEIG9wcSBEU1UgIlsxMl0sICJhYmMgQUFBIGRlZiJbOF0gICBGQUlMIGV4
cGVjdGVkICJhYmMgQUFBIGRlZiJbIDRdCi0iYWJjIEFBQSBkZWYiWzEwLCA4XSAgIEZBSUwgZXhw
ZWN0ZWQgImFiYyBBQUEgZGVmIlsgNF0KLSJhYmMgQUFBIGRlZiJbOSwgOF0gICBGQUlMIGV4cGVj
dGVkICJhYmMgQUFBIGRlZiJbIDRdCisiQUJEIG9wcSBEU1UgIlswLCA0LCA4LCAxMl0sICJhYmMg
QUFBIGRlZiJbNCwgM10sICJGRlogcnN0IExJRyJbNCwgOCwgMTFdCiBNb3ZlIHJpZ2h0IGJ5IG9u
ZSB3b3JkCi0iRkZaIHJzdCBMSUciWzExLCA4LCA0XSwgImFiYyBBQUEgZGVmIlszLCA0LCA4XSwg
IkFCRCBvcHEgRFNVICJbMTIsIDgsIDQsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIHJzdCBM
SUciWyAxMSwgIDgsICA0LCBdImFiYyBBQUEgZGVmIlsgMywgIDQsIF0iQUJEIG9wcSBEU1UgIlsg
MTIsICA4LCAgNCwgIDBdCi0iYWJjIEFBQSBkZWYiWzQsIDhdICAgRkFJTCBleHBlY3RlZCAiQUJE
IG9wcSBEU1UgIlsgMTJdCisiRkZaIHJzdCBMSUciWzExLCA4LCA0XSwgImFiYyBBQUEgZGVmIlsz
LCA0XSwgIkFCRCBvcHEgRFNVICJbMTIsIDgsIDQsIDBdCiBUZXN0IDE2LCBMVFI6CiBNb3ZlIHJp
Z2h0IGJ5IG9uZSB3b3JkCi0iQUJEIG9wcSBEU1UgIlswLCA0XSwgImFiYyBBQUEgZGVmIls4LCA0
XSwgIkFCRCBvcHEgRFNVICJbMTIsIDExXSwgIkZGWiByc3QgTElHIls0LCA4LCAxMV0gICAgRkFJ
TCBleHBlY3RlZDogWyJBQkQgb3BxIERTVSAiWyAwLCAgNCwgIDgsIF0iYWJjIEFBQSBkZWYiWyA4
LCAgNywgXSJBQkQgb3BxIERTVSAiWyAxMiwgIDExLCBdIkZGWiByc3QgTElHIlsgNCwgIDgsICAx
MV0KLSJBQkQgb3BxIERTVSAiWzRdLCAiYWJjIEFBQSBkZWYiWzhdICAgRkFJTCBleHBlY3RlZCAi
QUJEIG9wcSBEU1UgIlsgOF0KLSJBQkQgb3BxIERTVSAiWzVdLCAiYWJjIEFBQSBkZWYiWzhdICAg
RkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgOF0KLSJBQkQgb3BxIERTVSAiWzZdLCAiYWJj
IEFBQSBkZWYiWzhdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1UgIlsgOF0KLSJBQkQgb3Bx
IERTVSAiWzddLCAiYWJjIEFBQSBkZWYiWzhdICAgRkFJTCBleHBlY3RlZCAiQUJEIG9wcSBEU1Ug
IlsgOF0KLSJhYmMgQUFBIGRlZiJbOCwgNF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJb
IDddCi0iYWJjIEFBQSBkZWYiWzksIDRdICAgRkFJTCBleHBlY3RlZCAiYWJjIEFBQSBkZWYiWyA3
XQotImFiYyBBQUEgZGVmIlsxMCwgNF0gICBGQUlMIGV4cGVjdGVkICJhYmMgQUFBIGRlZiJbIDdd
Ci0iYWJjIEFBQSBkZWYiWzExLCA0XSAgIEZBSUwgZXhwZWN0ZWQgImFiYyBBQUEgZGVmIlsgN10K
LSJhYmMgQUFBIGRlZiJbNywgNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyAxMl0K
LSJhYmMgQUFBIGRlZiJbNiwgNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyAxMl0K
LSJhYmMgQUFBIGRlZiJbNSwgNF0gICBGQUlMIGV4cGVjdGVkICJBQkQgb3BxIERTVSAiWyAxMl0K
LU1vdmUgbGVmdCBieSBvbmUgd29yZAotIkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJBQkQgb3Bx
IERTVSAiWzExLCAxMl0sICJhYmMgQUFBIGRlZiJbNywgOF0sICJBQkQgb3BxIERTVSAiWzQsIDBd
ICAgIEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIHJzdCBMSUciWyAxMSwgIDgsICA0LCBdIkFCRCBvcHEg
RFNVICJbIDExLCAgMTIsIF0iYWJjIEFBQSBkZWYiWyA3LCAgOCwgXSJBQkQgb3BxIERTVSAiWyA4
LCAgNCwgIDBdCi0iYWJjIEFBQSBkZWYiWzhdLCAiQUJEIG9wcSBEU1UgIls0XSAgIEZBSUwgZXhw
ZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDhdCi0iRkZaIHJzdCBMSUciWzFdLCAiQUJEIG9wcSBEU1Ug
Ils0XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDhdCi0iRkZaIHJzdCBMSUciWzJd
LCAiQUJEIG9wcSBEU1UgIls0XSAgIEZBSUwgZXhwZWN0ZWQgIkFCRCBvcHEgRFNVICJbIDhdCisi
QUJEIG9wcSBEU1UgIlswLCA0LCA4XSwgImFiYyBBQUEgZGVmIls4LCA3XSwgIkFCRCBvcHEgRFNV
ICJbMTIsIDExXSwgIkZGWiByc3QgTElHIls0LCA4LCAxMV0KK01vdmUgbGVmdCBieSBvbmUgd29y
ZAorIkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJBQkQgb3BxIERTVSAiWzExLCAxMl0sICJhYmMg
QUFBIGRlZiJbNywgOF0sICJBQkQgb3BxIERTVSAiWzgsIDQsIDBdCiBUZXN0IDE3LCBSVEw6CiBN
b3ZlIGxlZnQgYnkgb25lIHdvcmQKICJBQkQgb3BxIERTVSAiWzAsIDQsIDgsIDEyXSwgImFiYyBB
QUEgZGVmIls0LCA4XSwgIkZGWiByc3QgTElHIls0LCA4LCAxMV0KQEAgLTEzMSwxNCArOTcsNyBA
QCBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKICJGRloiWzNdLCAiYmJiIEFBQSAiWzcsIDRdLCAiYWFh
ICJbNCwgMF0KIFRlc3QgMjAsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotIkFCRCBvcHEg
cnN0IERTVSAiWzAsIDQsIDcsIDEyLCAxNl0sICJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsxMiwgOCwg
NywgM10sICJBQlcgaGlqIHh5eiBGWFgiWzQsIDcsIDEyLCAxNV0gICAgRkFJTCBleHBlY3RlZDog
WyJBQkQgb3BxIHJzdCBEU1UgIlsgMCwgIDQsICA3LCAgMTIsICAxNiwgXSJhYmMgdXZ3IEFBQSBk
ZWYgbG1uIlsgMTUsICA4LCAgNywgIDMsIF0iQUJXIGhpaiB4eXogRlhYIlsgNCwgIDcsICAxMiwg
IDE1XQotIkFCRCBvcHEgcnN0IERTVSAiWzE2XSwgImFiYyB1dncgQUFBIGRlZiBsbW4iWzEyXSAg
IEZBSUwgZXhwZWN0ZWQgImFiYyB1dncgQUFBIGRlZiBsbW4iWyAxNV0KLSJhYmMgdXZ3IEFBQSBk
ZWYgbG1uIlsxOCwgMTJdICAgRkFJTCBleHBlY3RlZCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbIDE1
XQotImFiYyB1dncgQUFBIGRlZiBsbW4iWzE3LCAxMl0gICBGQUlMIGV4cGVjdGVkICJhYmMgdXZ3
IEFBQSBkZWYgbG1uIlsgMTVdCi0iYWJjIHV2dyBBQUEgZGVmIGxtbiJbMTYsIDEyXSAgIEZBSUwg
ZXhwZWN0ZWQgImFiYyB1dncgQUFBIGRlZiBsbW4iWyAxNV0KLSJhYmMgdXZ3IEFBQSBkZWYgbG1u
IlsxNSwgMTJdICAgRkFJTCBleHBlY3RlZCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbIDhdCi0iYWJj
IHV2dyBBQUEgZGVmIGxtbiJbMTQsIDEyXSAgIEZBSUwgZXhwZWN0ZWQgImFiYyB1dncgQUFBIGRl
ZiBsbW4iWyA4XQotImFiYyB1dncgQUFBIGRlZiBsbW4iWzEzLCAxMl0gICBGQUlMIGV4cGVjdGVk
ICJhYmMgdXZ3IEFBQSBkZWYgbG1uIlsgOF0KKyJBQkQgb3BxIHJzdCBEU1UgIlswLCA0LCA3LCAx
MiwgMTZdLCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbMTUsIDgsIDcsIDNdLCAiQUJXIGhpaiB4eXog
RlhYIls0LCA3LCAxMiwgMTVdCiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCiAiQUJXIGhpaiB4eXog
RlhYIlsxNSwgMTIsIDcsIDRdLCAiYWJjIHV2dyBBQUEgZGVmIGxtbiJbMywgNywgOCwgMTVdLCAi
QUJEIG9wcSByc3QgRFNVICJbMTYsIDEyLCA3LCA0LCAwXQogCkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNlLW9uZS1l
bGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktc2luZ2xlLXNwYWNlLW9uZS1lbGVtZW50LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTEwNDczKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXNpbmdsZS1zcGFjZS1vbmUtZWxlbWVudC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDIxIEBAIE1vdmUgcmlnaHQgYnkg
b25lIHdvcmQKICJaUUIgYWJjIFJJRyJbMTEsIDgsIDQsIDBdCiBUZXN0IDE3LCBMVFI6CiBNb3Zl
IHJpZ2h0IGJ5IG9uZSB3b3JkCisiYWJjIOGqnEJBRCBkZWbhqp0geHl6IlswLCA4LCAxNCwgMTdd
ICAgIEZBSUwgZXhwZWN0ZWQ6IFswLCA5LCA4LCAxNCwgMTddCisiYWJjIOGqnEJBRCBkZWbhqp0g
eHl6IlswLCA4XSAgIEZBSUwgZXhwZWN0ZWQgOQorImFiYyDhqpxCQUQgZGVm4aqdIHh5eiJbMSwg
OF0gICBGQUlMIGV4cGVjdGVkIDkKKyJhYmMg4aqcQkFEIGRlZuGqnSB4eXoiWzIsIDhdICAgRkFJ
TCBleHBlY3RlZCA5CisiYWJjIOGqnEJBRCBkZWbhqp0geHl6IlszLCA4XSAgIEZBSUwgZXhwZWN0
ZWQgOQorImFiYyDhqpxCQUQgZGVm4aqdIHh5eiJbNCwgOF0gICBGQUlMIGV4cGVjdGVkIDkKK01v
dmUgbGVmdCBieSBvbmUgd29yZAorImFiYyDhqpxCQUQgZGVm4aqdIHh5eiJbMTcsIDE0LCA4LCA5
LCAwXQorVGVzdCAxOCwgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYgaGlq
ICJbMCwgNCwgOF0sICIgb3BxIHJzdCAiWzEsIDUsIDhdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQK
KyIgb3BxIHJzdCAiWzgsIDUsIDFdLCAiYWJjIGRlZiBoaWogIls4LCA0LCAwXQorVGVzdCAxOSwg
TFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAogPERJVj5bMF0KIE1vdmUgbGVmdCBieSBvbmUg
d29yZAogPERJVj5bMF0KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUt
Ynktd29yZC12aXN1YWxseS1zaW5nbGUtc3BhY2Utb25lLWVsZW1lbnQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHkt
c2luZ2xlLXNwYWNlLW9uZS1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDExMDQ3MykKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1zaW5nbGUtc3Bh
Y2Utb25lLWVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTIgQEAgd2hl
cmUgY2hpbGRfbm9kZV9pbmRleCBpcyBvcHRpb25hbCwgZGVmYQogPGRpdiBkaXI9bHRyIGNsYXNz
PSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgNCA4IDExfDExIDggNCAwIiBjb250ZW50ZWRp
dGFibGU+16nXoNeRIGFiYyDXodeY15Y8L2Rpdj4KIDxkaXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9t
b3ZlX2J5X3dvcmQiIHRpdGxlPSIxMSA4IDQgMHwwIDQgOCAxMSIgY29udGVudGVkaXRhYmxlPtep
16DXkSBhYmMg16HXmNeWPC9kaXY+CiAKKzwhLS0gVGVzdCB3aXRoIEJpZGkgY29udHJvbCBjaGFy
YWN0ZXJzIC0tPgorPGRpdiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgaWQ9Im5v
dFJlYWNoYWJsZVBvc2l0aW9uIiB0aXRsZT0iMCA5IDggMTQgMTd8MTcgMTQgOCA5IDAiIGNvbnRl
bnRlZGl0YWJsZT5hYmMgJiN4MjAyYjvXkdeQ15MgZGVmJiN4MjAyYzsgeHl6PC9kaXY+CisKKzwh
LS0gVGVzdCB3aXRoIGltYWdlIC0tIG5vbi1pbmxpbmUtdGV4dC1ib3ggLS0+Cis8ZGl2IGlkPSJk
XzEiIGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiBjb250ZW50ZWRpdGFibGUgdGl0
bGU9IltkXzEsIDAsIDFdW2RfMSwgNCwgMV1bZF8xLCA4LCAxXVtkXzEsIDEsIDNdW2RfMSwgNSwg
M11bZF8xLCA4LCAzXXxbZF8xLCA4LCAzXVtkXzEsIDUsIDNdW2RfMSwgMSwgM11bZF8xLCA4LCAx
XVtkXzEsIDQsIDFdW2RfMSwgMCwgMV0iPmFiYyBkZWYgaGlqIDxpbWcgc3JjPS4uLy4uL2FjY2Vz
c2liaWxpdHkvcmVzb3VyY2VzL2Nha2UucG5nPiBvcHEgcnN0IDwvZGl2PgorCiA8IS0tIGVtcHR5
IGRpdiAtLT4KIDxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIw
fDAiIGNvbnRlbnRlZGl0YWJsZT48L2Rpdj4KIApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LXdyb25nLWxlZnQtcmlnaHQtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnkt
d29yZC12aXN1YWxseS13cm9uZy1sZWZ0LXJpZ2h0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS13
cm9uZy1sZWZ0LXJpZ2h0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBA
CithYmMg16nXqdepIGRlZiDXqdeg15Egb3BxINeh15jXliB1dncg16nXqdepIHh5egorY3RybC9h
bHQrcmlnaHQgZnJvbSBsZWZ0IG9mINeh15jXliBzaG91bGQgbW92ZSBjdXJzb3IgdG8gbGVmdCBv
ZiBvcHEuIEJ1dCBpdCBhY3R1YWxseSBtb3ZlZCB0byBwb3NpdGlvbiA0CkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktd3JvbmctbGVmdC1y
aWdodC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21v
dmUtYnktd29yZC12aXN1YWxseS13cm9uZy1sZWZ0LXJpZ2h0Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktd3Jv
bmctbGVmdC1yaWdodC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZ
UEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJyZXNvdXJjZXMvZXh0ZW5kLXNlbGVjdGlvbi5jc3Mi
IC8+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21vdmUtYnktd29yZC12aXN1YWxseS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0Pgorb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgdHJ5IHsKKyAgICAg
ICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgc2VsLnNldFBvc2l0
aW9uKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkXzEnKSwgMCk7IAorICAgICAgICBzZWwubW9k
aWZ5KCJtb3ZlIiwgInJpZ2h0IiwgIndvcmQiKTsKKyAgICAgICAgaWYgKHNlbC5hbmNob3JPZmZz
ZXQgPT0gNSkKKyAgICAgICAgICAgIGxvZygiUEFTUyIpOyAgICAgICAKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbG9nKCJjdHJsL2FsdCtyaWdodCBmcm9tIGxlZnQgb2Yg16HXmNeWIHNob3Vs
ZCBtb3ZlIGN1cnNvciB0byBsZWZ0IG9mIG9wcS4gIiArCisgICAgICAgICAgICAgICAgIkJ1dCBp
dCBhY3R1YWxseSBtb3ZlZCB0byBwb3NpdGlvbiAiICsgc2VsLmFuY2hvck9mZnNldCk7CisgICAg
fSBmaW5hbGx5IHsKKyAgICAgICAgZmx1c2hMb2coKTsKKyAgICB9Cit9OworCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEVkaXRpbmdCZWhhdmlvcignd2lu
Jyk7Cit9Cis8L3NjcmlwdD4KKzx0aXRsZT53cm9uZyByZXN1bHQgYmVjYXVzZSBWaXNpYmxlUG9z
aXRpb24ubGVmdCgpL3JpZ2h0KCkgcmV0dXJucyB3cm9uZyByZXN1bHQ8L3RpdGxlPgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0TW92ZUJ5V29yZCI+Cis8ZGl2IGRpcj1sdHIgY29udGVu
dGVkaXRhYmxlPmFiYyDXqdep16kgZGVmIDxzcGFuIGlkPSJkXzEiIGRpcj1ydGw+16nXoNeRICBv
cHEg16HXmNeWPC9zcGFuPiAgdXZ3INep16nXqSB4eXo8L2Rpdj4KKzwvZGl2PgorPHVsIGlkPSJj
b25zb2xlIj48L3VsPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vcmVzb3VyY2VzL21vdmUtYnktd29yZC12aXN1YWxseS5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvbW92ZS1ieS13b3Jk
LXZpc3VhbGx5LmpzCShyZXZpc2lvbiAxMTA0NzMpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9yZXNvdXJjZXMvbW92ZS1ieS13b3JkLXZpc3VhbGx5LmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzUsNiArMTc1LDEwIEBAIGZ1bmN0aW9uIG1vdmVCeVdvcmRPbkV2ZXJ5Q2hhcihzZWws
IHRlc3QKICAgICB2YXIgcHJldk9mZnNldCA9IHNlbC5hbmNob3JPZmZzZXQ7CiAgICAgdmFyIHBy
ZXZOb2RlID0gc2VsLmFuY2hvck5vZGU7CiAKKyAgICAvLyBhZHZhbmNlIGlzIHVzZWQgdG8gc3Bl
Y2lhbCBoYW5kbGluZyB0aGUgY2FzZSB0aGF0IGFycm93IGtleSBpcyBub3QgYWJsZSB0byByZWFj
aCBjZXJ0YWluIHBvc2l0aW9uLgorICAgIC8vIEluIHdoaWNoIGNhc2UsIHdlIHdpbGwgbmVlZCB0
byBtYW51YWxseSBza2lwIHRoaXMgd29yZCBicmVhayBwb3NpdGlvbiBpbiBvcmRlciB0byByZXBv
cnQgY29ycmVjdCBsb2cuCisgICAgdmFyIGFkdmFuY2UgPSB0cnVlOyAKKwogICAgIHdoaWxlICgx
KSB7CiAgICAgICAgIHZhciBwb3NpdGlvbnMgPSBbXTsKICAgICAgICAgcG9zaXRpb25zLnB1c2go
eyBub2RlOiBzZWwuYW5jaG9yTm9kZSwgb2Zmc2V0OiBzZWwuYW5jaG9yT2Zmc2V0IH0pOwpAQCAt
MjA1LDkgKzIwOSwxNSBAQCBmdW5jdGlvbiBtb3ZlQnlXb3JkT25FdmVyeUNoYXIoc2VsLCB0ZXN0
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBwb3NpdGlvbiA9IHsgbm9kZTogc2VsLmFu
Y2hvck5vZGUsIG9mZnNldDogc2VsLmFuY2hvck9mZnNldCB9OwotICAgICAgICBpZiAod29yZEJy
ZWFrSW5kZXggPCB3b3JkQnJlYWtzLmxlbmd0aCAKKyAgICAgICAgaWYgKCh3b3JkQnJlYWtJbmRl
eCA8IHdvcmRCcmVha3MubGVuZ3RoIAogICAgICAgICAgICAgJiYgcG9zaXRpb25FcXVhbFRvV29y
ZEJyZWFrKHBvc2l0aW9uLCB3b3JkQnJlYWtzW3dvcmRCcmVha0luZGV4XSkpCisgICAgICAgICAg
ICB8fCAodGVzdCA9PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm90UmVhY2hhYmxlUG9zaXRp
b24iKQorICAgICAgICAgICAgJiYgc2VsLmFuY2hvck9mZnNldCA+IHdvcmRCcmVha3Nbd29yZEJy
ZWFrSW5kZXhdCisgICAgICAgICAgICAmJiBhZHZhbmNlCisgICAgICAgICAgICAmJiBzZWFyY2hE
aXJlY3Rpb24gPT0gInJpZ2h0IikpIHsKICAgICAgICAgICAgICsrd29yZEJyZWFrSW5kZXg7Cisg
ICAgICAgICAgICBhZHZhbmNlID0gZmFsc2U7CisgICAgICAgIH0KIAogICAgICAgICBwcmV2Tm9k
ZSA9IHNlbC5hbmNob3JOb2RlOwogICAgICAgICBwcmV2T2Zmc2V0ID0gc2VsLmFuY2hvck9mZnNl
dDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>