<?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>30946</bug_id>
          
          <creation_ts>2009-10-29 23:04:57 -0700</creation_ts>
          <short_desc>Extra layout on keypress after a space (problem with rebalanceWhitespaceAt in InsertTextCommand)</short_desc>
          <delta_ts>2017-07-18 08:29:33 -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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Garcia">justin.garcia</reporter>
          <assigned_to name="Justin Garcia">justin.garcia</assigned_to>
          <cc>adele</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>jparent</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>159227</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-10-29 23:04:57 -0700</bug_when>
    <thetext>When a insert a character after a space, we do two layouts:

insertTextIntoNode(textNode, offset, text); =&gt; setNeedsLayout
rebalanceWhitespaceAt(startPosition); =&gt; replaceTextInNode =&gt; updateLayout
then
rebalanceWhitespaceAt(startPosition); =&gt; replaceTextInNode =&gt; setText =&gt; setNeedsLayout
setEndingSelection(Selection(endingSelection().end(), endingSelection().affinity()))) =&gt; updateLayout

I think we have two ways to go here:

Make the decision about what we need to turn adjacent spaces into before we do any DOM operations (since this requires a fresh layout), and do whitespace modifications with all of the other DOM operations that the command performs.
Turn all spaces into non-breaking spaces (I believe we can do this because of the non-breaking-space-mode:space we have on editable regions) and then turn them into patterns at serialization time.

ojan Vafai &lt;ojan@chromium.org&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159230</commentid>
    <comment_count>1</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-10-29 23:20:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/6744306&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164679</commentid>
    <comment_count>2</comment_count>
      <attachid>43452</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-11-18 12:52:20 -0800</bug_when>
    <thetext>Created attachment 43452
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165040</commentid>
    <comment_count>3</comment_count>
      <attachid>43452</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-19 11:51:37 -0800</bug_when>
    <thetext>Comment on attachment 43452
patch

Looks pretty good. I have a few thoughts.

I am concerned about copying the function named isWhitespace in two different source files. Can we put this into PlatformString.h or StringImpl.h instead? What&apos;s the right name for it to distinguish it from other functions of similar name?

&gt; +void InsertTextCommand::insertTextIntoNodeAndRebalanceWhitespace(const String&amp; textToInsert, PassRefPtr&lt;Text&gt; node, unsigned offset)

This function does not take ownership of the text node, so the argument type should be Text*, not PassRefPtr&lt;Text&gt;.

&gt; +    unsigned whitespaceStart, whitespaceEnd;
&gt; +    if (!extentOfWhitespaceAt(node.get(), offset, whitespaceStart, whitespaceEnd)) {
&gt; +    
&gt; +        VisiblePosition visiblePosition(Position(node.get(), offset));
&gt; +        String rebalancedText = stringWithRebalancedWhitespace(textToInsert, isStartOfParagraph(visiblePosition), isEndOfParagraph(visiblePosition));
&gt; +    
&gt; +        insertTextIntoNode(node.get(), offset, rebalancedText);
&gt; +        return;
&gt; +    }

There should not be a blank line after the if statement.

&gt; +    
&gt; +    ASSERT(whitespaceEnd &gt;= whitespaceStart);
&gt; +    unsigned length = whitespaceEnd - whitespaceStart + 1;

Why the +1 here? It seems like the &quot;end&quot; value may be inclusive, which seems like a mistake.

I can&apos;t tell by reading this.

&gt; +    void insertTextIntoNodeAndRebalanceWhitespace(const String&amp; text, PassRefPtr&lt;Text&gt; node, unsigned offset);

As I said above, the type of the node should be Text*. The names &quot;text&quot; and &quot;node&quot; for the arguments are justified here because of the clash of type names with roles of the arguments. The argument names help make it clear.

&gt; +// Finds the extent of whitespace around a particular offset, as long as it is in a node with collapsable whitespace.

The word &quot;collapsible&quot; is misspelled here.

The comment could be clearer on what &quot;as long as&quot; means.

There are multiple modes of collapsible whitespace. For example, pre-wrap collapses other whitespace, but not &quot;\n&quot;. To handle those correctly, I think RenderStyle::isCollapsibleWhiteSpace needs to be used instead of a local isWhiteSpace function.

&gt; +    if (node-&gt;length() == 0)
&gt; +        return false;

Do we really need a special case for empty text nodes? Is this a common case that needs performance optimization? Does the code below fail for empty text nodes?

I&apos;d like to see an assertion about offset being &lt;= node-&gt;length() and also get a sense of whether callers really guarantee that or not.

&gt; +    if (offset == text.length() || !isWhitespace(text[offset])) {

Because of how String indexing works, I don&apos;t think you need the &quot;offset == text.length&quot; check here. Getting a character past the end returns 0, and that will return false from isWhitespace.

&gt; +        if (offset == 0 || !isWhitespace(text[offset - 1]))
&gt; +            // If neither text[offset] nor text[offset - 1] are some form of whitespace, no rebalancing is necessary.
&gt; +            return false;

Need braces around this.

&gt; +    while (start &gt; 0 &amp;&amp; isWhitespace(text[start - 1]))
&gt; +        start--;
&gt; +        
&gt; +    for (unsigned i = end + 1; i &lt; text.length(); i++) {
&gt; +        if (!isWhitespace(text[i]))
&gt; +            break;
&gt; +        end = i;
&gt; +    }

I don&apos;t understand why these loops are structured differently, since they both do the same thing. It would be slightly nicer to make them match.

I don&apos;t understand how this function can possibly do the right thing if there are adjacent text nodes that also have whitespace in them.

review- because at least some of my comments seem worth doing, especially the use of RenderStyle::isColllapsibleWhiteSpace

I&apos;d like to see more test cases -- I worry that we are making performance faster but correctness suffer in various edge cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165488</commentid>
    <comment_count>4</comment_count>
      <attachid>43622</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-11-20 16:08:40 -0800</bug_when>
    <thetext>Created attachment 43622
patch

&gt; I am concerned about copying the function named isWhitespace in two different
&gt; source files. 

Fixed, it didn&apos;t need to be in InsertTextCommand at all.

&gt; Can we put this into PlatformString.h or StringImpl.h instead?
&gt; What&apos;s the right name for it to distinguish it from other functions of similar
&gt; name?

It&apos;s a strange function, I&apos;d rather leave it in htmlediting.cpp for now.  I&apos;m not sure that it needs to check for tabs and newlines, since those will be removed as insignificant whitespace before we get to whitespace rebalancing.  But this is part of the old code that I&apos;d like to address after.

&gt; &gt; +void InsertTextCommand::insertTextIntoNodeAndRebalanceWhitespace(const String&amp; textToInsert, PassRefPtr&lt;Text&gt; node, unsigned offset)
&gt; 
&gt; This function does not take ownership of the text node, so the argument type
&gt; should be Text*, not PassRefPtr&lt;Text&gt;.

OK.  But when does a function take ownership of the node?  insertTextIntoNode(...) takes in a PassRefPtr&lt;Node&gt;, even though it seems like it only calls a function that takes ownership of the node (the create function).

&gt; There should not be a blank line after the if statement.

FIxed.

&gt; &gt; +    ASSERT(whitespaceEnd &gt;= whitespaceStart);
&gt; &gt; +    unsigned length = whitespaceEnd - whitespaceStart + 1;
&gt; 
&gt; Why the +1 here? It seems like the &quot;end&quot; value may be inclusive, which seems
&gt; like a mistake.

whitespaceEnd was strangely the offset *of* the last whitespace character, not the offset after the last whitespace character, thus the plus 1.  Fixed this.

&gt; &gt; +// Finds the extent of whitespace around a particular offset, as long as it is in a node with collapsable whitespace.
&gt; 
&gt; The word &quot;collapsible&quot; is misspelled here.
&gt; 
&gt; The comment could be clearer on what &quot;as long as&quot; means.
&gt; 
&gt; There are multiple modes of collapsible whitespace. For example, pre-wrap
&gt; collapses other whitespace, but not &quot;\n&quot;. To handle those correctly, I think
&gt; RenderStyle::isCollapsibleWhiteSpace needs to be used instead of a local
&gt; isWhiteSpace function.

The comment now reads: &quot;Find the extent of whitespace around a particular offset.  If whitespace characters (&apos; &apos;) are preserved, then we don&apos;t do whitespace rebalancing and this function returns false.&quot; and the function name is &quot;extentOfWhitespaceForRebalancingAt&quot;.

&gt; Do we really need a special case for empty text nodes? Is this a common case
&gt; that needs performance optimization? Does the code below fail for empty text
&gt; nodes?

We don&apos;t need it, I&apos;ll remove it.

&gt; I&apos;d like to see an assertion about offset being &lt;= node-&gt;length() and also get
&gt; a sense of whether callers really guarantee that or not.

They can&apos;t.  They get their offsets from VisiblePositions, which can technically have invalid offsets.

&gt; &gt; +    if (offset == text.length() || !isWhitespace(text[offset])) {
&gt; 
&gt; Because of how String indexing works, I don&apos;t think you need the &quot;offset ==
&gt; text.length&quot; check here. Getting a character past the end returns 0, and that
&gt; will return false from isWhitespace.

Seems strange to rely on this detail, and no index checking would look odd since it looks like straight array indexing at first glance.

&gt; &gt; +    while (start &gt; 0 &amp;&amp; isWhitespace(text[start - 1]))
&gt; &gt; +        start--;
&gt; &gt; +        
&gt; &gt; +    for (unsigned i = end + 1; i &lt; text.length(); i++) {
&gt; &gt; +        if (!isWhitespace(text[i]))
&gt; &gt; +            break;
&gt; &gt; +        end = i;
&gt; &gt; +    }
&gt; 
&gt; I don&apos;t understand why these loops are structured differently, since they both
&gt; do the same thing. It would be slightly nicer to make them match.

Fixed.

&gt; I&apos;d like to see more test cases -- I worry that we are making performance
&gt; faster but correctness suffer in various edge cases.

Added a few test cases that insert content in and around multiple spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193788</commentid>
    <comment_count>5</comment_count>
      <attachid>49506</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2010-02-25 10:11:12 -0800</bug_when>
    <thetext>Created attachment 49506
Patch2

I took the updated patch from Justin that addresses Darin&apos;s comments and merge it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193795</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-25 10:15:44 -0800</bug_when>
    <thetext>Attachment 49506 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/editing/htmlediting.cpp:447:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 28 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>193803</commentid>
    <comment_count>7</comment_count>
      <attachid>49510</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2010-02-25 10:27:36 -0800</bug_when>
    <thetext>Created attachment 49510
Patch3

Fixed style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193944</commentid>
    <comment_count>8</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2010-02-25 17:01:26 -0800</bug_when>
    <thetext>Committed revision 55263.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194022</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-02-26 00:18:10 -0800</bug_when>
    <thetext>This patch broke fast/forms/textarea-type-spaces-pretty-diff.html test on all buildbot.

Tiger: http://build.webkit.org/results/Tiger%20Intel%20Release/r55265%20%289128%29/fast/forms/textarea-type-spaces-pretty-diff.html
Leopard(debug): http://build.webkit.org/results/Leopard%20Intel%20Debug%20%28Tests%29/r55264%20%2810851%29/fast/forms/textarea-type-spaces-pretty-diff.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194029</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-02-26 00:43:28 -0800</bug_when>
    <thetext>I had to roll out r55263 to make buildbots and commit bot happier: http://trac.webkit.org/changeset/55271 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194050</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-02-26 03:24:06 -0800</bug_when>
    <thetext>The patch broke fast/events/key-events-in-input-text.html too: 

http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20%28Tests%29/r55270%20%286022%29/fast/events/key-events-in-input-text-pretty-diff.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194141</commentid>
    <comment_count>12</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2010-02-26 09:38:31 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; The patch broke fast/events/key-events-in-input-text.html too: 
&gt; 
&gt; http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20%28Tests%29/r55270%20%286022%29/fast/events/key-events-in-input-text-pretty-diff.html

I&apos;m aware of the problem and I&apos;m preparing a patch to fix the failing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226693</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-17 01:46:19 -0700</bug_when>
    <thetext>I&apos;m unsure what the status of this bug is.  It looks like this got landed and then rolled out.  Presumably it was landed again?  Should this bug be closed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335409</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-17 11:23:14 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; I&apos;m unsure what the status of this bug is.  It looks like this got landed and then rolled out.  Presumably it was landed again?  Should this bug be closed?

I don&apos;t think it was landed again as far as http://trac.webkit.org/browser/trunk/Source/WebCore/editing/CompositeEditCommand.cpp?annotate=blame&amp;rev=75835 tells me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423136</commentid>
    <comment_count>15</comment_count>
      <attachid>49510</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-18 11:26:09 -0700</bug_when>
    <thetext>Comment on attachment 49510
Patch3

Bug is still open. Need to find a way to fix this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43452</attachid>
            <date>2009-11-18 12:52:20 -0800</date>
            <delta_ts>2009-11-20 16:08:40 -0800</delta_ts>
            <desc>patch</desc>
            <filename>hello.txt</filename>
            <type>text/plain</type>
            <size>21989</size>
            <attacher name="Justin Garcia">justin.garcia</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTEyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMDktMTEtMTkgIEp1c3RpbiBHYXJjaWEgIDxqdXN0aW4uZ2FyY2lh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA5NDYKKyAgICAg
ICAgRXh0cmEgbGF5b3V0IG9uIGtleXByZXNzIGFmdGVyIGEgc3BhY2UgKHByb2JsZW0gd2l0aCBy
ZWJhbGFuY2VXaGl0ZXNwYWNlQXQgaW4gSW5zZXJ0VGV4dENvbW1hbmQpCisgICAgICAgIAorICAg
ICAgICBEbyB0ZXh0IGluc2VydGlvbiBhbmQgd2hpdGVzcGFjZSByZWJhbGFuY2luZyBhcm91bmQg
dGhlIGluc2VydGlvbiBpbiBhIHNpbmdsZSBzdGVwIHNvIHRoYXQgdGhlcmUncyBvbmx5IG9uZSBs
YXlvdXQuCisKKyAgICAgICAgVGVzdHMgYWxyZWFkeSBleGlzdCB0aGF0IGNvdmVyIGluc2VydGlv
biBvZiBhbmQgYXJvdW5kIHNwYWNlKHMpLgorCisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6
cmViYWxhbmNlV2hpdGVzcGFjZUF0KTogTm8gYmVoYXZpb3IgY2hhbmdlcyBoZXJlLAorICAgICAg
ICBqdXN0IHB1c2hlZCB0aGUgY29kZSB0aGF0IGRldGVybWluZWQgdGhlIGV4dGVudCBvZiB3aGl0
ZXNwYWNlIHN1cnJvdW5kaW5nIGEgcG9zaXRpb24KKyAgICAgICAgdG8gaXRzIG93biBoZWxwZXIg
ZnVuY3Rpb24uCisgICAgICAgICogZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjppc1doaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0VGV4
dENvbW1hbmQ6Omluc2VydFRleHRJbnRvTm9kZUFuZFJlYmFsYW5jZVdoaXRlc3BhY2UpOiBBZGRl
ZC4gIEZpbmQgCisgICAgICAgIHdoaXRlc3BhY2Ugc3Vycm91bmRpbmcgdGhlIGluc2VydGlvbiBw
b3NpdGlvbiwgYWRkIHRoZSB0ZXh0IHRvIGluc2VydCwgcmViYWxhbmNlIHRoYXQgZW50aXJlCisg
ICAgICAgIHN0cmluZywgdGhlbiBpbnNlcnQgaXQgaW50byB0aGUgZG9jdW1lbnQuCisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRUZXh0Q29tbWFuZDo6aW5wdXQpOgorICAgICAgICAqIGVkaXRpbmcv
SW5zZXJ0VGV4dENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzV2hpdGVzcGFjZSk6IE1vdmVkIGZyb20gQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6ZXh0ZW50T2ZXaGl0ZXNwYWNlQXQpOiBN
b3ZlZCBjb2RlIGZyb20gcmViYWxhbmNlV2hpdGVzcGFjZUF0IGludG8gdGhpcyBoZWxwZXIgCisg
ICAgICAgIGZ1bmN0aW9uLiAgT2J0YWlucyB0aGUgb2Zmc2V0IG9mIHRoZSBzdGFydCBhbmQgZW5k
IG9mIHdoaXRlc3BhY2UgYXJvdW5kIGEgcGFydGljdWxhciBwb3NpdGlvbi4KKyAgICAgICAgKiBl
ZGl0aW5nL2h0bWxlZGl0aW5nLmg6CisKIDIwMDktMTEtMTggIENocmlzIE1hcnJpbiAgPGNtYXJy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6
IFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gNTA1NDEp
CisrKyBXZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zODUsMTEgKzM4NSw2IEBACiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoU2V0
Tm9kZUF0dHJpYnV0ZUNvbW1hbmQ6OmNyZWF0ZShlbGVtZW50LCBhdHRyaWJ1dGUsIHZhbHVlKSk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1doaXRlc3BhY2UoVUNoYXIgYykKLXsKLSAgICBy
ZXR1cm4gYyA9PSBub0JyZWFrU3BhY2UgfHwgYyA9PSAnICcgfHwgYyA9PSAnXG4nIHx8IGMgPT0g
J1x0JzsKLX0KLQogLy8gRklYTUU6IERvZXNuJ3QgZ28gaW50byB0ZXh0IG5vZGVzIHRoYXQgY29u
dHJpYnV0ZSBhZGphY2VudCB0ZXh0IChzaWJsaW5ncywgY291c2lucywgZXRjKS4KIHZvaWQgQ29t
cG9zaXRlRWRpdENvbW1hbmQ6OnJlYmFsYW5jZVdoaXRlc3BhY2VBdChjb25zdCBQb3NpdGlvbiYg
cG9zaXRpb24pCiB7CkBAIC0zOTgsMzIgKzM5MywxMiBAQAogICAgICAgICByZXR1cm47CiAgICAg
VGV4dCogdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0Kj4obm9kZSk7CiAgICAgCi0gICAgaWYg
KHRleHROb2RlLT5sZW5ndGgoKSA9PSAwKQotICAgICAgICByZXR1cm47Ci0gICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHRleHROb2RlLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAm
JiAhcmVuZGVyZXItPnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKQotICAgICAgICByZXR1
cm47Ci0gICAgICAgIAogICAgIFN0cmluZyB0ZXh0ID0gdGV4dE5vZGUtPmRhdGEoKTsKLSAgICBB
U1NFUlQoIXRleHQuaXNFbXB0eSgpKTsKLQotICAgIGludCBvZmZzZXQgPSBwb3NpdGlvbi5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpOwotICAgIC8vIElmIG5laXRoZXIgdGV4dFtvZmZzZXRdIG5v
ciB0ZXh0W29mZnNldCAtIDFdIGFyZSBzb21lIGZvcm0gb2Ygd2hpdGVzcGFjZSwgZG8gbm90aGlu
Zy4KLSAgICBpZiAoIWlzV2hpdGVzcGFjZSh0ZXh0W29mZnNldF0pKSB7Ci0gICAgICAgIG9mZnNl
dC0tOwotICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCAhaXNXaGl0ZXNwYWNlKHRleHRbb2Zmc2V0
XSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIAotICAgIC8vIFNldCB1cHN0cmVh
bSBhbmQgZG93bnN0cmVhbSB0byBkZWZpbmUgdGhlIGV4dGVudCBvZiB0aGUgd2hpdGVzcGFjZSBz
dXJyb3VuZGluZyB0ZXh0W29mZnNldF0uCi0gICAgaW50IHVwc3RyZWFtID0gb2Zmc2V0OwotICAg
IHdoaWxlICh1cHN0cmVhbSA+IDAgJiYgaXNXaGl0ZXNwYWNlKHRleHRbdXBzdHJlYW0gLSAxXSkp
Ci0gICAgICAgIHVwc3RyZWFtLS07CisgICAgdW5zaWduZWQgdXBzdHJlYW0sIGRvd25zdHJlYW07
CisgICAgaWYgKCFleHRlbnRPZldoaXRlc3BhY2VBdCh0ZXh0Tm9kZSwgcG9zaXRpb24uZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKSwgdXBzdHJlYW0sIGRvd25zdHJlYW0pKQorICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgaW50IGRvd25zdHJlYW0gPSBvZmZzZXQ7Ci0gICAgd2hpbGUgKCh1bnNp
Z25lZClkb3duc3RyZWFtICsgMSA8IHRleHQubGVuZ3RoKCkgJiYgaXNXaGl0ZXNwYWNlKHRleHRb
ZG93bnN0cmVhbSArIDFdKSkKLSAgICAgICAgZG93bnN0cmVhbSsrOwotICAgIAogICAgIGludCBs
ZW5ndGggPSBkb3duc3RyZWFtIC0gdXBzdHJlYW0gKyAxOwogICAgIEFTU0VSVChsZW5ndGggPiAw
KTsKICAgICAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAkocmV2aXNp
b24gNTA1NDEpCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDYsOSArMTA2LDQwIEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0
YXRpYyBpbmxpbmUgYm9vbCBpc1doaXRlc3BhY2UoVUNoYXIgYykKK3sKKyAgICByZXR1cm4gYyA9
PSBub0JyZWFrU3BhY2UgfHwgYyA9PSAnICcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1x0JzsKK30K
Kwordm9pZCBJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0VGV4dEludG9Ob2RlQW5kUmViYWxhbmNl
V2hpdGVzcGFjZShjb25zdCBTdHJpbmcmIHRleHRUb0luc2VydCwgUGFzc1JlZlB0cjxUZXh0PiBu
b2RlLCB1bnNpZ25lZCBvZmZzZXQpCit7CisgICAgdW5zaWduZWQgd2hpdGVzcGFjZVN0YXJ0LCB3
aGl0ZXNwYWNlRW5kOworICAgIGlmICghZXh0ZW50T2ZXaGl0ZXNwYWNlQXQobm9kZS5nZXQoKSwg
b2Zmc2V0LCB3aGl0ZXNwYWNlU3RhcnQsIHdoaXRlc3BhY2VFbmQpKSB7CisgICAgCisgICAgICAg
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb24oUG9zaXRpb24obm9kZS5nZXQoKSwgb2Zm
c2V0KSk7CisgICAgICAgIFN0cmluZyByZWJhbGFuY2VkVGV4dCA9IHN0cmluZ1dpdGhSZWJhbGFu
Y2VkV2hpdGVzcGFjZSh0ZXh0VG9JbnNlcnQsIGlzU3RhcnRPZlBhcmFncmFwaCh2aXNpYmxlUG9z
aXRpb24pLCBpc0VuZE9mUGFyYWdyYXBoKHZpc2libGVQb3NpdGlvbikpOworICAgIAorICAgICAg
ICBpbnNlcnRUZXh0SW50b05vZGUobm9kZS5nZXQoKSwgb2Zmc2V0LCByZWJhbGFuY2VkVGV4dCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKHdoaXRlc3BhY2VFbmQg
Pj0gd2hpdGVzcGFjZVN0YXJ0KTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSB3aGl0ZXNwYWNlRW5k
IC0gd2hpdGVzcGFjZVN0YXJ0ICsgMTsKKyAgICBTdHJpbmcgc3RyaW5nID0gbm9kZS0+ZGF0YSgp
LnN1YnN0cmluZyh3aGl0ZXNwYWNlU3RhcnQsIGxlbmd0aCk7CisgICAgCisgICAgLy8gSW5zZXJ0
IHRleHRUb0luc2VydCBpbnRvIHRoZSB3aGl0ZXNwYWNlIHdlIGZvdW5kLgorICAgIHN0cmluZy5p
bnNlcnQodGV4dFRvSW5zZXJ0LCBvZmZzZXQgLSB3aGl0ZXNwYWNlU3RhcnQpOworICAgIAorICAg
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlU3RhcnQoUG9zaXRpb24obm9kZS5nZXQoKSwgd2hpdGVz
cGFjZVN0YXJ0KSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQoUG9zaXRpb24obm9k
ZS5nZXQoKSwgd2hpdGVzcGFjZUVuZCArIHRleHRUb0luc2VydC5sZW5ndGgoKSkpOworICAgIAor
ICAgIFN0cmluZyByZWJhbGFuY2VkU3RyaW5nID0gc3RyaW5nV2l0aFJlYmFsYW5jZWRXaGl0ZXNw
YWNlKHN0cmluZywgaXNTdGFydE9mUGFyYWdyYXBoKHZpc2libGVTdGFydCksIGlzRW5kT2ZQYXJh
Z3JhcGgodmlzaWJsZUVuZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIHJlcGxhY2VUZXh0SW5Ob2RlKG5vZGUuZ2V0
KCksIHdoaXRlc3BhY2VTdGFydCwgbGVuZ3RoLCByZWJhbGFuY2VkU3RyaW5nKTsKK30KKwogdm9p
ZCBJbnNlcnRUZXh0Q29tbWFuZDo6aW5wdXQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVj
dEluc2VydGVkVGV4dCkKIHsKLSAgICAKICAgICBBU1NFUlQodGV4dC5maW5kKCdcbicpID09IC0x
KTsKIAogICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkKQEAgLTE3MCwxNCArMjAx
LDkgQEAKICAgICAgICAgVGV4dCAqdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KHN0YXJ0
UG9zaXRpb24ubm9kZSgpKTsKICAgICAgICAgaW50IG9mZnNldCA9IHN0YXJ0UG9zaXRpb24uZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKIAotICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUodGV4
dE5vZGUsIG9mZnNldCwgdGV4dCk7CisgICAgICAgIGluc2VydFRleHRJbnRvTm9kZUFuZFJlYmFs
YW5jZVdoaXRlc3BhY2UodGV4dCwgdGV4dE5vZGUsIG9mZnNldCk7CisgICAgICAgIAogICAgICAg
ICBlbmRQb3NpdGlvbiA9IFBvc2l0aW9uKHRleHROb2RlLCBvZmZzZXQgKyB0ZXh0Lmxlbmd0aCgp
KTsKLQotICAgICAgICAvLyBUaGUgaW5zZXJ0aW9uIG1heSByZXF1aXJlIGFkanVzdGluZyBhZGph
Y2VudCB3aGl0ZXNwYWNlLCBpZiBpdCBpcyBwcmVzZW50LgotICAgICAgICByZWJhbGFuY2VXaGl0
ZXNwYWNlQXQoZW5kUG9zaXRpb24pOwotICAgICAgICAvLyBSZWJhbGFuY2luZyBvbiBib3RoIHNp
ZGVzIGlzbid0IG5lY2Vzc2FyeSBpZiB3ZSd2ZSBpbnNlcnRlZCBhIHNwYWNlLgotICAgICAgICBp
ZiAodGV4dCAhPSAiICIpIAotICAgICAgICAgICAgcmViYWxhbmNlV2hpdGVzcGFjZUF0KHN0YXJ0
UG9zaXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAgIG1fY2hhcmFjdGVyc0FkZGVkICs9IHRl
eHQubGVuZ3RoKCk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21t
YW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmgJ
KHJldmlzaW9uIDUwNTQxKQorKysgV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDggQEAKICAgICBQb3NpdGlvbiBpbnNlcnRUYWIo
Y29uc3QgUG9zaXRpb24mKTsKICAgICAKICAgICBib29sIHBlcmZvcm1Ucml2aWFsUmVwbGFjZShj
b25zdCBTdHJpbmcmLCBib29sIHNlbGVjdEluc2VydGVkVGV4dCk7CisgICAgCisgICAgdm9pZCBp
bnNlcnRUZXh0SW50b05vZGVBbmRSZWJhbGFuY2VXaGl0ZXNwYWNlKGNvbnN0IFN0cmluZyYgdGV4
dCwgUGFzc1JlZlB0cjxUZXh0PiBub2RlLCB1bnNpZ25lZCBvZmZzZXQpOwogCiAgICAgdW5zaWdu
ZWQgbV9jaGFyYWN0ZXJzQWRkZWQ7CiB9OwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0
aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCShy
ZXZpc2lvbiA1MDU0MikKKysrIFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyNSw2ICs0MjUsNDcgQEAKICAgICByZXR1cm4gcmViYWxhbmNlZFN0cmlu
ZzsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlzV2hpdGVzcGFjZShVQ2hhciBjKQoreworICAg
IHJldHVybiBjID09IG5vQnJlYWtTcGFjZSB8fCBjID09ICcgJyB8fCBjID09ICdcbicgfHwgYyA9
PSAnXHQnOworfQorCisvLyBGaW5kcyB0aGUgZXh0ZW50IG9mIHdoaXRlc3BhY2UgYXJvdW5kIGEg
cGFydGljdWxhciBvZmZzZXQsIGFzIGxvbmcgYXMgaXQgaXMgaW4gYSBub2RlIHdpdGggY29sbGFw
c2FibGUgd2hpdGVzcGFjZS4KK2Jvb2wgZXh0ZW50T2ZXaGl0ZXNwYWNlQXQoUGFzc1JlZlB0cjxU
ZXh0PiBub2RlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkJiBzdGFydCwgdW5zaWduZWQmIGVu
ZCkKK3sKKyAgICBpZiAobm9kZS0+bGVuZ3RoKCkgPT0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwor
ICAgIGlmIChyZW5kZXJlciAmJiAhcmVuZGVyZXItPnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFj
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgU3RyaW5nIHRleHQgPSBub2Rl
LT5kYXRhKCk7CisgICAgCisgICAgc3RhcnQgPSBvZmZzZXQ7CisgICAgZW5kID0gb2Zmc2V0Owor
ICAgIGlmIChvZmZzZXQgPT0gdGV4dC5sZW5ndGgoKSB8fCAhaXNXaGl0ZXNwYWNlKHRleHRbb2Zm
c2V0XSkpIHsKKyAgICAgICAgaWYgKG9mZnNldCA9PSAwIHx8ICFpc1doaXRlc3BhY2UodGV4dFtv
ZmZzZXQgLSAxXSkpCisgICAgICAgICAgICAvLyBJZiBuZWl0aGVyIHRleHRbb2Zmc2V0XSBub3Ig
dGV4dFtvZmZzZXQgLSAxXSBhcmUgc29tZSBmb3JtIG9mIHdoaXRlc3BhY2UsIG5vIHJlYmFsYW5j
aW5nIGlzIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IAorICAgICAgICAvLyB0ZXh0W29mZnNldF0gaXMgbm90IHdoaXRlc3BhY2UsIGJ1dCB0ZXh0W29m
ZnNldCAtIDFdIGlzLCBhZGp1c3Qgc3RhcnQgYW5kIGVuZCBvZmZzZXRzLgorICAgICAgICBzdGFy
dCA9IG9mZnNldCAtIDE7CisgICAgICAgIGVuZCA9IHN0YXJ0OworICAgIH0KKyAgICAKKyAgICB3
aGlsZSAoc3RhcnQgPiAwICYmIGlzV2hpdGVzcGFjZSh0ZXh0W3N0YXJ0IC0gMV0pKQorICAgICAg
ICBzdGFydC0tOworICAgICAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBlbmQgKyAxOyBpIDwg
dGV4dC5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGlmICghaXNXaGl0ZXNwYWNlKHRleHRbaV0p
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGVuZCA9IGk7CisgICAgfQorICAgIAorICAg
IHJldHVybiB0cnVlOworfQorCiBib29sIGlzVGFibGVTdHJ1Y3R1cmVOb2RlKGNvbnN0IE5vZGUg
Km5vZGUpCiB7CiAgICAgUmVuZGVyT2JqZWN0ICpyID0gbm9kZS0+cmVuZGVyZXIoKTsKSW5kZXg6
IFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRp
dGluZy9odG1sZWRpdGluZy5oCShyZXZpc2lvbiA1MDU0MikKKysrIFdlYkNvcmUvZWRpdGluZy9o
dG1sZWRpdGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiBjbGFzcyBQb3Np
dGlvbjsKIGNsYXNzIFJhbmdlOwogY2xhc3MgU3RyaW5nOworY2xhc3MgVGV4dDsKIGNsYXNzIFZp
c2libGVQb3NpdGlvbjsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAKQEAgLTIyNyw2ICsyMjgs
NyBAQAogLy8gTWlzY2VsbGFuZW91cyBmdW5jdGlvbnMgb24gU3RyaW5nCiAgICAgCiBTdHJpbmcg
c3RyaW5nV2l0aFJlYmFsYW5jZWRXaGl0ZXNwYWNlKGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wp
OworYm9vbCBleHRlbnRPZldoaXRlc3BhY2VBdChQYXNzUmVmUHRyPFRleHQ+IG5vZGUsIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQmIHN0YXJ0LCB1bnNpZ25lZCYgZW5kKTsKIGNvbnN0IFN0cmlu
ZyYgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpOwogYm9vbCB2YWxpZEJsb2NrVGFnKGNvbnN0IEF0
b21pY1N0cmluZyYpOwogICAgIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTExMjgpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAwOS0xMS0x
OCAgSnVzdGluIEdhcmNpYSAgPGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMDk0NgorICAgICAgICBFeHRyYSBsYXlvdXQgb24ga2V5cHJl
c3MgYWZ0ZXIgYSBzcGFjZSAocHJvYmxlbSB3aXRoIHJlYmFsYW5jZVdoaXRlc3BhY2VBdCBpbiBJ
bnNlcnRUZXh0Q29tbWFuZCkKKyAgICAgICAgCisgICAgICAgIFRoZXJlIGFyZSBub3cgcmVndWxh
ciBzcGFjZXMgd2hlcmUgbmJzcHMgd2VyZSB1c2VkIHVubmVjZXNzYXJpbHkgYmVmb3JlLiAgQWxz
bywKKyAgICAgICAgbXVsdGktY2hhcmFjdGVyIGluc2VydGlvbnMgbm93IGhhdmUgdGhlaXIgd2hp
dGVzcGFjZSByZWJhbGFuY2VkLCBhbmQgdGhpcyBpcyAKKyAgICAgICAgcmVmbGVjdGVkIGluIGEg
ZmV3IHRlc3RzLgorCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC81MTQyMDEyLTMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU0
ODIwMjMtZXhwZWN0ZWQuY2hlY2tzdW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcv
ZXhlY0NvbW1hbmQvNTQ4MjAyMy1leHBlY3RlZC5wbmc6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L2VkaXRpbmcvZXhlY0NvbW1hbmQvNTQ4MjAyMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctZXhwZWN0ZWQu
Y2hlY2tzdW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVt
b3ZlLWZvcm1hdHRpbmctZXhwZWN0ZWQucG5nOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0
aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnNlcnRpbmcvZWRpdGFibGUtaHRtbC1lbGVtZW50LWV4
cGVjdGVkLmNoZWNrc3VtOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2luc2VydGlu
Zy9lZGl0YWJsZS1odG1sLWVsZW1lbnQtZXhwZWN0ZWQucG5nOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9lZGl0aW5nL2luc2VydGluZy9lZGl0YWJsZS1odG1sLWVsZW1lbnQtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvNDk4OTc3NC1leHBl
Y3RlZC5jaGVja3N1bToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJk
LzQ5ODk3NzQtZXhwZWN0ZWQucG5nOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bh
c3RlYm9hcmQvNDk4OTc3NC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc2VsZWN0aW9uLzQ5ODM4NTgtZXhwZWN0ZWQuY2hlY2tzdW06CisgICAgICAgICogcGxh
dGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzQ5ODM4NTgtZXhwZWN0ZWQucG5nOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi80OTgzODU4LWV4cGVjdGVkLnR4dDoK
KwogMjAwOS0xMS0xOCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kLzUxNDIwMTItMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC81MTQyMDEyLTMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA1MDU0MSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTE0MjAxMi0z
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIFRoaXMgdGVzdHMg
Zm9yIGEgYnVnIHdoZW4gaW5zZXJ0aW5nIGFmdGVyIGEgbGluayBhdCB0aGUgZW5kIG9mIHRoZSBk
b2N1bWVudC4gTGlrZSBUZXh0RWRpdCwgd2UgaW5zZXJ0IGNvbnRlbnQgb3V0c2lkZSBvZiB0aGUg
bGluaywgYnV0IGluc2VydGluZyBvdXRzaWRlIG9mIHRoZSBsaW5rIHNob3VsZG4ndCBjYXVzZSB0
aGUgY29udGVudCB0byBiZSBpbnNlcnRlZCBpbiB0aGUgd3JvbmcgcGFyYWdyYXBoLgogCiBUaGlz
IHBhcmFncmFwaCBzaG91bGQgbm90IGNvbnRhaW5zIGxpbmtzLgotVGhpcyBzZW50ZW5jZSBzaG91
bGQgYmUgYSBsaW5rLsKgVGhpcyBzZW50ZW5jZSBzaG91bGQgbm90LgotPGEgaHJlZj0iIyI+VGhp
cyBzZW50ZW5jZSBzaG91bGQgYmUgYSBsaW5rLjwvYT4mbmJzcDtUaGlzIHNlbnRlbmNlIHNob3Vs
ZCBub3QuCitUaGlzIHNlbnRlbmNlIHNob3VsZCBiZSBhIGxpbmsuIFRoaXMgc2VudGVuY2Ugc2hv
dWxkIG5vdC4KKzxhIGhyZWY9IiMiPlRoaXMgc2VudGVuY2Ugc2hvdWxkIGJlIGEgbGluay48L2E+
IFRoaXMgc2VudGVuY2Ugc2hvdWxkIG5vdC4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL2luc2VydGluZy9lZGl0YWJsZS1odG1sLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2luc2VydGluZy9l
ZGl0YWJsZS1odG1sLWVsZW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDU0MSkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2luc2VydGluZy9lZGl0YWJsZS1odG1sLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNywxMCArMTcsOSBAQAogICBS
ZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgUmVuZGVyQm9keSB7
Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CiAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3Vz
KSBhdCAoMCwwKSBzaXplIDc4NHg1NAotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA3ODN4NTQKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3MTQ6ICJU
aGlzIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IHdoZW4gdGhlIGVuY2xvc2luZyBibG9jayBpcyB0
aGUgYm9keSBlbGVtZW50LCBhbmQgd2hlbiB0aGUgaHRtbCBlbGVtZW50IGlzIGVkaXRhYmxlLCAi
Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDcxNCwwKSB3aWR0aCA2NTogImluc2VydGluZyBhIgot
ICAgICAgICAgIHRleHQgcnVuIGF0ICg3NzksMCkgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc4NHg1NAorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDc4MzogIlRoaXMgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgd2hlbiB0aGUg
ZW5jbG9zaW5nIGJsb2NrIGlzIHRoZSBib2R5IGVsZW1lbnQsIGFuZCB3aGVuIHRoZSBodG1sIGVs
ZW1lbnQgaXMgZWRpdGFibGUsICBpbnNlcnRpbmcgYSIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
NzgzLDApIHdpZHRoIDE6ICIgIgogICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA3
NTE6ICJwYXJhZ3JhcGggc2VwYXJhdG9yIGRvZXNuJ3Qgc3BsaXQgdGhlIGJvZHkgKGluc2VydGlu
ZyBhIHBhcmFncmFwaCBzZXBhcmF0b3IgdXN1YWxseSBzcGxpdHMvY2xvbmVzIHRoZSBlbmNsb3Np
bmcgYmxvY2sgZmxvdyIKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNzUxLDE4KSB3aWR0aCA0OiAi
ICIKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzNikgd2lkdGggNTg6ICJlbGVtZW50KS4iCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnNlcnRpbmcvZWRpdGFibGUt
aHRtbC1lbGVtZW50LWV4cGVjdGVkLmNoZWNrc3VtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL2luc2VydGluZy9lZGl0YWJsZS1odG1sLWVsZW1lbnQtZXhw
ZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDUwNTQxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2VkaXRhYmxlLWh0bWwtZWxlbWVudC1leHBlY3RlZC5jaGVj
a3N1bQkod29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAotZjE3ZDgwMDMzNGE1Nzk0MDcyYWJiZmMz
MDkxNmEyOGMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis2ODY5MGM5NjdmN2Y2YTgzMDBm
Zjc4NjIxZWYyOWU1ZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2luc2VydGluZy9lZGl0YWJsZS1odG1sLWVsZW1lbnQt
ZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEg
YmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU0ODIwMjMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5k
LzU0ODIwMjMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDU0MSkKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU0ODIwMjMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDExICs0LDEwIEBACiAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCww
KSBzaXplIDgwMHg2MDAKICAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1
NzEKICAgICAgIFJlbmRlckJsb2NrIHtIMX0gYXQgKDAsMCkgc2l6ZSA3ODR4MTExCi0gICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc3OXgxMTEKKyAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzg0eDExMQogICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDcyMTogIlRoaXMgdGVzdHMgZm9yIGEgYnVnIHdoZW4gcGVyZm9ybWluZyBh
IEZvcm1hdEJsb2NrIgogICAgICAgICAgIHRleHQgcnVuIGF0ICg3MjEsMCkgd2lkdGggODogIiAi
Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzcpIHdpZHRoIDUxMjogImluc2lkZSBhIGJvZHkg
d2l0aCBubyB2aXNpYmxlIGNvbnRlbnQuICIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNTEyLDM3
KSB3aWR0aCAyNTk6ICJUaGlzIHRleHQgc2hvdWxkIGJlIgotICAgICAgICAgIHRleHQgcnVuIGF0
ICg3NzEsMzcpIHdpZHRoIDg6ICIgIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM3KSB3aWR0
aCA3Nzk6ICJpbnNpZGUgYSBib2R5IHdpdGggbm8gdmlzaWJsZSBjb250ZW50LiAgVGhpcyB0ZXh0
IHNob3VsZCBiZSIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNzc5LDM3KSB3aWR0aCA1OiAiICIK
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw3NCkgd2lkdGggMjg3OiAiaW5zaWRlIGFuIGgxIGVs
ZW1lbnQuIgogY2FyZXQ6IHBvc2l0aW9uIDEzMiBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQg
MCB7SDF9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50Cklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUt
Zm9ybWF0dGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA1MDU0MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4
ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNyArMjQsNyBAQAogICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDYzOiAi
Zm9vYmFyYmF6IgogICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg2MywxNCkgc2l6ZSAweDAKICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDE4KSBzaXplIDcxeDE4Ci0gICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDcxOiAiZm9vXHh7OX1iYXJceHs5fWJheiIKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggNzE6ICJmb28gYmFyIGJheiIKICAgICAgICAg
UmVuZGVyQlIge0JSfSBhdCAoNzEsMzIpIHNpemUgMHgwCiAgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwzNikgc2l6ZSA2M3gxOAogICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM2KSB3
aWR0aCA2MzogImZvb2JhcmJheiIKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLTItZXhwZWN0ZWQucG5nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1l
LXR5cGUgPSBpbWFnZS9wbmcKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLWV4cGVjdGVkLmNoZWNrc3VtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92
ZS1mb3JtYXR0aW5nLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiA1MDU0MSkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5n
LWV4cGVjdGVkLmNoZWNrc3VtCSh3b3JraW5nIGNvcHkpCkBAIC0xICsxIEBACi1hMGU1M2JkMDNj
ZWNiOTM5MmMxM2YwZjE2ZTE4Y2IxNQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2NkNmEz
NTZlMjY0YmJkYmMyM2Q2ODI2ZDMxNGFlMjU5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTQ4MjAy
My1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMg
YSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctZXhw
ZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmlu
YXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU0ODIwMjMtZXhwZWN0ZWQuY2hlY2tzdW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1h
bmQvNTQ4MjAyMy1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gNTA1NDEpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC81NDgyMDIzLWV4cGVjdGVkLmNo
ZWNrc3VtCSh3b3JraW5nIGNvcHkpCkBAIC0xICsxIEBACi1lNjczNTdlNTU1MmU1Y2YyZjA2MjQx
NmUyZjM1N2ZhNwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzcyNzUyMjM2Mjk3YTk5NDgy
MDUzZDFiZjA3MzJmYmZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmct
Mi1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0dGluZy0yLWV4cGVjdGVkLmNoZWNr
c3VtCShyZXZpc2lvbiA1MDU0MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLTItZXhwZWN0ZWQuY2hlY2tzdW0JKHdvcmtp
bmcgY29weSkKQEAgLTEgKzEgQEAKLTEzYzk3ZGFlNWFlMjBlYTRmYmYzOGI1ODU1ZjM4NmIwClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorMWYzMGU5Y2YzNjFjMjM0YjE2OTAwYTA0NTk0NzQ1
NDQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkLzQ5ODk3NzQtZXhwZWN0ZWQucG5nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Q2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5
cGUgPSBpbWFnZS9wbmcKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bh
c3RlYm9hcmQvNDk4OTc3NC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC80OTg5Nzc0LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gNTA1NDEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJv
YXJkLzQ5ODk3NzQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03LDExICs3LDEwIEBA
CiAgICAgICBSZW5kZXJJbWFnZSB7SU1HfSBhdCAoNzYsMCkgc2l6ZSA3NngxMDMKICAgICAgIFJl
bmRlckltYWdlIHtJTUd9IGF0ICgxNTIsMCkgc2l6ZSA3NngxMDMKICAgICAgIFJlbmRlckJSIHtC
Un0gYXQgKDIyOCwxMDMpIHNpemUgMHgwCi0gICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MTAzKSBzaXplIDc4NHgzNgotICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxMDMpIHdpZHRoIDYyOTog
IlRoaXMgdGVzdHMgZm9yIGEgYnVnIHdoZXJlIGFuIGltYWdlcyBwYXN0ZWQgb24gdGhlIHNhbWUg
bGluZSB3b3VsZCBhcHBlYXIgb24gZGlmZmVyZW50IGxpbmVzLiAiCi0gICAgICAgIHRleHQgcnVu
IGF0ICg2MjksMTAzKSB3aWR0aCAxNTM6ICJZb3Ugc2hvdWxkIHNlZSBzZXZlcmFsIgotICAgICAg
ICB0ZXh0IHJ1biBhdCAoNzgyLDEwMykgd2lkdGggMjogIiAiCi0gICAgICAgIHRleHQgcnVuIGF0
ICgwLDEyMSkgd2lkdGggMzA3OiAicGljdHVyZXMgYWJvdmUgYWxsIGluIHRoZSBzYW1lIGxpbmUv
cGFyYWdyYXBoLiIKKyAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxMDMpIHNpemUgNzM5
eDM2CisgICAgICAgIHRleHQgcnVuIGF0ICgwLDEwMykgd2lkdGggNzM1OiAiVGhpcyB0ZXN0cyBm
b3IgYSBidWcgd2hlcmUgYW4gaW1hZ2VzIHBhc3RlZCBvbiB0aGUgc2FtZSBsaW5lIHdvdWxkIGFw
cGVhciBvbiBkaWZmZXJlbnQgbGluZXMuICBZb3Ugc2hvdWxkIHNlZSIKKyAgICAgICAgdGV4dCBy
dW4gYXQgKDczNSwxMDMpIHdpZHRoIDQ6ICIgIgorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxMjEp
IHdpZHRoIDM1ODogInNldmVyYWwgcGljdHVyZXMgYWJvdmUgYWxsIGluIHRoZSBzYW1lIGxpbmUv
cGFyYWdyYXBoLiIKICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAog
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCiBjYXJldDogcG9zaXRp
b24gMTY0IG9mIGNoaWxkIDQgeyN0ZXh0fSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtI
VE1MfSBvZiBkb2N1bWVudApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
cGFzdGVib2FyZC80OTg5Nzc0LWV4cGVjdGVkLmNoZWNrc3VtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvNDk4OTc3NC1leHBlY3RlZC5j
aGVja3N1bQkocmV2aXNpb24gNTA1NDEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRp
dGluZy9wYXN0ZWJvYXJkLzQ5ODk3NzQtZXhwZWN0ZWQuY2hlY2tzdW0JKHdvcmtpbmcgY29weSkK
QEAgLTEgKzEgQEAKLTJiODIwMzM1MmY4NzU0NDI1ZWJmMDRhZmRmOWZjMWRkClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQorMmFmNTE4NDBkZmQwZTU3NTMxNGRhN2M2YmVmZmYyZDYKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRp
dGluZy9zZWxlY3Rpb24vNDk4Mzg1OC1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vNDk4Mzg1OC1leHBlY3Rl
ZC5jaGVja3N1bQkocmV2aXNpb24gNTA1NDEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9zZWxlY3Rpb24vNDk4Mzg1OC1leHBlY3RlZC5jaGVja3N1bQkod29ya2luZyBjb3B5
KQpAQCAtMSArMSBAQAotMWVhNzZiZWQzZDE3N2U3ZGVhNjM0ZGMwYTM2NThjNmYKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCitlMjNiNDc1N2EyMzU1OTM4YWNhZTFmZmZjZmIwNzM2MgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL3NlbGVjdGlvbi80OTgzODU4LWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBk
aXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1h
Z2UvcG5nCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24v
NDk4Mzg1OC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uLzQ5ODM4NTgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDU0
MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi80OTgzODU4
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxMSArNCw5IEBACiAgIFJlbmRlckJs
b2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICBSZW5kZXJCb2R5IHtCT0RZfSBh
dCAoOCw4KSBzaXplIDc4NHg1ODQKICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgw
LDApIHNpemUgNzg0eDM2Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDc3MngzNgotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDU3MDogIlRoaXMgdGVz
dHMgZm9yIGEgYnVnIHdoZXJlIHNlbGVjdGluZyBhIHdvcmQgd291bGQgc2VsZWN0IHRoZSBsaW5l
IGJyZWFrIGFuZCB3b3JkIGJlZm9yZSBpdC4gIgotICAgICAgICAgIHRleHQgcnVuIGF0ICg1NzAs
MCkgd2lkdGggMTM1OiAiT25seSB0aGUgd29yZCBpbiB0aGUgIgotICAgICAgICAgIHRleHQgcnVu
IGF0ICg3MDUsMCkgd2lkdGggNjM6ICJwYXJhZ3JhcGgiCi0gICAgICAgICAgdGV4dCBydW4gYXQg
KDc2OCwwKSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgNzgweDM2CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzc2OiAiVGhp
cyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgc2VsZWN0aW5nIGEgd29yZCB3b3VsZCBzZWxlY3QgdGhl
IGxpbmUgYnJlYWsgYW5kIHdvcmQgYmVmb3JlIGl0LiAgT25seSB0aGUgd29yZCBpbiB0aGUgIHBh
cmFncmFwaCIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNzc2LDApIHdpZHRoIDQ6ICIgIgogICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCAxNjI6ICJiZWxvdyBzaG91bGQgYmUgc2Vs
ZWN0ZWQ6IgogICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKICAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM2KSBzaXplIDc4NHgxOAo=
</data>
<flag name="review"
          id="25158"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43622</attachid>
            <date>2009-11-20 16:08:40 -0800</date>
            <delta_ts>2010-02-25 10:11:12 -0800</delta_ts>
            <desc>patch</desc>
            <filename>mynewpatch.txt</filename>
            <type>text/plain</type>
            <size>28585</size>
            <attacher name="Justin Garcia">justin.garcia</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTEyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMDktMTEtMTkgIEp1c3RpbiBHYXJjaWEgIDxqdXN0aW4uZ2FyY2lh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA5NDYKKyAgICAg
ICAgRXh0cmEgbGF5b3V0IG9uIGtleXByZXNzIGFmdGVyIGEgc3BhY2UgKHByb2JsZW0gd2l0aCBy
ZWJhbGFuY2VXaGl0ZXNwYWNlQXQgaW4gSW5zZXJ0VGV4dENvbW1hbmQpCisgICAgICAgIAorICAg
ICAgICBEbyB0ZXh0IGluc2VydGlvbiBhbmQgd2hpdGVzcGFjZSByZWJhbGFuY2luZyBhcm91bmQg
dGhlIGluc2VydGlvbiBpbiBvbmUgc3RlcCBzbyB0aGF0IHRoZXJlJ3Mgb25seSBvbmUgbGF5b3V0
LgorCisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdGVzcGFjZUF0KTog
Tm8gYmVoYXZpb3IgY2hhbmdlcyBoZXJlLAorICAgICAgICBqdXN0IHB1c2hlZCB0aGUgY29kZSB0
aGF0IGRldGVybWluZWQgdGhlIGV4dGVudCBvZiB3aGl0ZXNwYWNlIHN1cnJvdW5kaW5nIGEgcG9z
aXRpb24KKyAgICAgICAgdG8gaXRzIG93biBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgICogZWRp
dGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRUZXh0
Q29tbWFuZDo6aW5zZXJ0VGV4dEludG9Ob2RlQW5kUmViYWxhbmNlV2hpdGVzcGFjZSk6IEFkZGVk
LiAgRmluZCAKKyAgICAgICAgd2hpdGVzcGFjZSBzdXJyb3VuZGluZyB0aGUgaW5zZXJ0aW9uIHBv
c2l0aW9uLCBhZGQgdGhlIHRleHQgdG8gaW5zZXJ0LCByZWJhbGFuY2UgdGhhdCBlbnRpcmUKKyAg
ICAgICAgc3RyaW5nLCB0aGVuIGluc2VydCBpdCBpbnRvIHRoZSBkb2N1bWVudC4KKyAgICAgICAg
KFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5kOjppbnB1dCk6CisgICAgICAgICogZWRpdGluZy9J
bnNlcnRUZXh0Q29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aXNXaGl0ZXNwYWNlKTogTW92ZWQgZnJvbSBDb21wb3NpdGVFZGl0
Q29tbWFuZC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpleHRlbnRPZldoaXRlc3BhY2VGb3JSZWJh
bGFuY2luZ0F0KTogTW92ZWQgY29kZSBmcm9tIHJlYmFsYW5jZVdoaXRlc3BhY2VBdCBpbnRvIHRo
aXMgaGVscGVyIAorICAgICAgICBmdW5jdGlvbi4gIE9idGFpbnMgdGhlIG9mZnNldCBvZiB0aGUg
c3RhcnQgYW5kIGVuZCBvZiB3aGl0ZXNwYWNlIGFyb3VuZCBhIHBhcnRpY3VsYXIgcG9zaXRpb24u
CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5oOgorCiAyMDA5LTExLTE4ICBDaHJpcyBN
YXJyaW4gIDxjbWFycmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBG
cmFzZXIuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJl
dmlzaW9uIDUwNTQxKQorKysgV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzg1LDExICszODUsNiBAQAogICAgIGFwcGx5Q29tbWFuZFRv
Q29tcG9zaXRlKFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kOjpjcmVhdGUoZWxlbWVudCwgYXR0cmli
dXRlLCB2YWx1ZSkpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFy
IGMpCi17Ci0gICAgcmV0dXJuIGMgPT0gbm9CcmVha1NwYWNlIHx8IGMgPT0gJyAnIHx8IGMgPT0g
J1xuJyB8fCBjID09ICdcdCc7Ci19Ci0KIC8vIEZJWE1FOiBEb2Vzbid0IGdvIGludG8gdGV4dCBu
b2RlcyB0aGF0IGNvbnRyaWJ1dGUgYWRqYWNlbnQgdGV4dCAoc2libGluZ3MsIGNvdXNpbnMsIGV0
YykuCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZWJhbGFuY2VXaGl0ZXNwYWNlQXQoY29u
c3QgUG9zaXRpb24mIHBvc2l0aW9uKQogewpAQCAtMzk4LDM1ICszOTMsMTUgQEAKICAgICAgICAg
cmV0dXJuOwogICAgIFRleHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KG5vZGUpOwog
ICAgIAotICAgIGlmICh0ZXh0Tm9kZS0+bGVuZ3RoKCkgPT0gMCkKLSAgICAgICAgcmV0dXJuOwot
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0ZXh0Tm9kZS0+cmVuZGVyZXIoKTsKLSAgICBp
ZiAocmVuZGVyZXIgJiYgIXJlbmRlcmVyLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgICAgICAKICAgICBTdHJpbmcgdGV4dCA9IHRleHROb2RlLT5k
YXRhKCk7Ci0gICAgQVNTRVJUKCF0ZXh0LmlzRW1wdHkoKSk7Ci0KLSAgICBpbnQgb2Zmc2V0ID0g
cG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKLSAgICAvLyBJZiBuZWl0aGVyIHRl
eHRbb2Zmc2V0XSBub3IgdGV4dFtvZmZzZXQgLSAxXSBhcmUgc29tZSBmb3JtIG9mIHdoaXRlc3Bh
Y2UsIGRvIG5vdGhpbmcuCi0gICAgaWYgKCFpc1doaXRlc3BhY2UodGV4dFtvZmZzZXRdKSkgewot
ICAgICAgICBvZmZzZXQtLTsKLSAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgIWlzV2hpdGVzcGFj
ZSh0ZXh0W29mZnNldF0pKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICAKLSAgICAv
LyBTZXQgdXBzdHJlYW0gYW5kIGRvd25zdHJlYW0gdG8gZGVmaW5lIHRoZSBleHRlbnQgb2YgdGhl
IHdoaXRlc3BhY2Ugc3Vycm91bmRpbmcgdGV4dFtvZmZzZXRdLgotICAgIGludCB1cHN0cmVhbSA9
IG9mZnNldDsKLSAgICB3aGlsZSAodXBzdHJlYW0gPiAwICYmIGlzV2hpdGVzcGFjZSh0ZXh0W3Vw
c3RyZWFtIC0gMV0pKQotICAgICAgICB1cHN0cmVhbS0tOworICAgIHVuc2lnbmVkIHVwc3RyZWFt
LCBkb3duc3RyZWFtOworICAgIGlmICghZXh0ZW50T2ZXaGl0ZXNwYWNlRm9yUmViYWxhbmNpbmdB
dCh0ZXh0Tm9kZSwgcG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgdXBzdHJlYW0s
IGRvd25zdHJlYW0pKQorICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaW50IGRvd25zdHJlYW0g
PSBvZmZzZXQ7Ci0gICAgd2hpbGUgKCh1bnNpZ25lZClkb3duc3RyZWFtICsgMSA8IHRleHQubGVu
Z3RoKCkgJiYgaXNXaGl0ZXNwYWNlKHRleHRbZG93bnN0cmVhbSArIDFdKSkKLSAgICAgICAgZG93
bnN0cmVhbSsrOworICAgIEFTU0VSVChkb3duc3RyZWFtID4gdXBzdHJlYW0pOworICAgIGludCBs
ZW5ndGggPSBkb3duc3RyZWFtIC0gdXBzdHJlYW07CiAgICAgCi0gICAgaW50IGxlbmd0aCA9IGRv
d25zdHJlYW0gLSB1cHN0cmVhbSArIDE7Ci0gICAgQVNTRVJUKGxlbmd0aCA+IDApOwotICAgIAog
ICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlVXBzdHJlYW1Qb3MoUG9zaXRpb24ocG9zaXRpb24u
bm9kZSgpLCB1cHN0cmVhbSkpOwogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlRG93bnN0cmVh
bVBvcyhQb3NpdGlvbihwb3NpdGlvbi5ub2RlKCksIGRvd25zdHJlYW0gKyAxKSk7CiAgICAgCklu
ZGV4OiBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDUwNTQxKQor
KysgV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA2LDkgKzEwNiwzMyBAQAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEluc2VydFRl
eHRDb21tYW5kOjppbnNlcnRUZXh0SW50b05vZGVBbmRSZWJhbGFuY2VXaGl0ZXNwYWNlKGNvbnN0
IFN0cmluZyYgdGV4dFRvSW5zZXJ0LCBUZXh0KiBub2RlLCB1bnNpZ25lZCBvZmZzZXQpCit7Cisg
ICAgdW5zaWduZWQgd2hpdGVzcGFjZVN0YXJ0LCB3aGl0ZXNwYWNlRW5kOworICAgIGlmICghZXh0
ZW50T2ZXaGl0ZXNwYWNlRm9yUmViYWxhbmNpbmdBdChub2RlLCBvZmZzZXQsIHdoaXRlc3BhY2VT
dGFydCwgd2hpdGVzcGFjZUVuZCkpIHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQ
b3NpdGlvbihQb3NpdGlvbihub2RlLCBvZmZzZXQpKTsKKyAgICAgICAgU3RyaW5nIHJlYmFsYW5j
ZWRUZXh0ID0gc3RyaW5nV2l0aFJlYmFsYW5jZWRXaGl0ZXNwYWNlKHRleHRUb0luc2VydCwgaXNT
dGFydE9mUGFyYWdyYXBoKHZpc2libGVQb3NpdGlvbiksIGlzRW5kT2ZQYXJhZ3JhcGgodmlzaWJs
ZVBvc2l0aW9uKSk7CisgICAgICAgIGluc2VydFRleHRJbnRvTm9kZShub2RlLCBvZmZzZXQsIHJl
YmFsYW5jZWRUZXh0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQo
d2hpdGVzcGFjZUVuZCA+IHdoaXRlc3BhY2VTdGFydCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0g
d2hpdGVzcGFjZUVuZCAtIHdoaXRlc3BhY2VTdGFydDsKKyAgICBTdHJpbmcgc3RyaW5nID0gbm9k
ZS0+ZGF0YSgpLnN1YnN0cmluZyh3aGl0ZXNwYWNlU3RhcnQsIGxlbmd0aCk7CisgICAgCisgICAg
Ly8gSW5zZXJ0IHRleHRUb0luc2VydCBpbnRvIHRoZSB3aGl0ZXNwYWNlIHdlIGZvdW5kLgorICAg
IHN0cmluZy5pbnNlcnQodGV4dFRvSW5zZXJ0LCBvZmZzZXQgLSB3aGl0ZXNwYWNlU3RhcnQpOwor
ICAgIAorICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlU3RhcnQoUG9zaXRpb24obm9kZSwgd2hp
dGVzcGFjZVN0YXJ0KSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQoUG9zaXRpb24o
bm9kZSwgd2hpdGVzcGFjZUVuZCArIHRleHRUb0luc2VydC5sZW5ndGgoKSkpOworICAgIAorICAg
IFN0cmluZyByZWJhbGFuY2VkU3RyaW5nID0gc3RyaW5nV2l0aFJlYmFsYW5jZWRXaGl0ZXNwYWNl
KHN0cmluZywgaXNTdGFydE9mUGFyYWdyYXBoKHZpc2libGVTdGFydCksIGlzRW5kT2ZQYXJhZ3Jh
cGgodmlzaWJsZUVuZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAorICAgIHJlcGxhY2VUZXh0SW5Ob2RlKG5vZGUsIHdoaXRl
c3BhY2VTdGFydCwgbGVuZ3RoLCByZWJhbGFuY2VkU3RyaW5nKTsKK30KKwogdm9pZCBJbnNlcnRU
ZXh0Q29tbWFuZDo6aW5wdXQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluc2VydGVk
VGV4dCkKIHsKLSAgICAKICAgICBBU1NFUlQodGV4dC5maW5kKCdcbicpID09IC0xKTsKIAogICAg
IGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkKQEAgLTE3MCwxNCArMTk0LDkgQEAKICAg
ICAgICAgVGV4dCAqdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KHN0YXJ0UG9zaXRpb24u
bm9kZSgpKTsKICAgICAgICAgaW50IG9mZnNldCA9IHN0YXJ0UG9zaXRpb24uZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKTsKIAotICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUodGV4dE5vZGUsIG9m
ZnNldCwgdGV4dCk7CisgICAgICAgIGluc2VydFRleHRJbnRvTm9kZUFuZFJlYmFsYW5jZVdoaXRl
c3BhY2UodGV4dCwgdGV4dE5vZGUsIG9mZnNldCk7CisgICAgICAgIAogICAgICAgICBlbmRQb3Np
dGlvbiA9IFBvc2l0aW9uKHRleHROb2RlLCBvZmZzZXQgKyB0ZXh0Lmxlbmd0aCgpKTsKLQotICAg
ICAgICAvLyBUaGUgaW5zZXJ0aW9uIG1heSByZXF1aXJlIGFkanVzdGluZyBhZGphY2VudCB3aGl0
ZXNwYWNlLCBpZiBpdCBpcyBwcmVzZW50LgotICAgICAgICByZWJhbGFuY2VXaGl0ZXNwYWNlQXQo
ZW5kUG9zaXRpb24pOwotICAgICAgICAvLyBSZWJhbGFuY2luZyBvbiBib3RoIHNpZGVzIGlzbid0
IG5lY2Vzc2FyeSBpZiB3ZSd2ZSBpbnNlcnRlZCBhIHNwYWNlLgotICAgICAgICBpZiAodGV4dCAh
PSAiICIpIAotICAgICAgICAgICAgcmViYWxhbmNlV2hpdGVzcGFjZUF0KHN0YXJ0UG9zaXRpb24p
OwogICAgICAgICAgICAgCiAgICAgICAgIG1fY2hhcmFjdGVyc0FkZGVkICs9IHRleHQubGVuZ3Ro
KCk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmgJKHJldmlzaW9u
IDUwNTQxKQorKysgV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDYgKzUyLDggQEAKICAgICBQb3NpdGlvbiBpbnNlcnRUYWIoY29uc3QgUG9z
aXRpb24mKTsKICAgICAKICAgICBib29sIHBlcmZvcm1Ucml2aWFsUmVwbGFjZShjb25zdCBTdHJp
bmcmLCBib29sIHNlbGVjdEluc2VydGVkVGV4dCk7CisgICAgCisgICAgdm9pZCBpbnNlcnRUZXh0
SW50b05vZGVBbmRSZWJhbGFuY2VXaGl0ZXNwYWNlKGNvbnN0IFN0cmluZyYgdGV4dCwgVGV4dCog
bm9kZSwgdW5zaWduZWQgb2Zmc2V0KTsKIAogICAgIHVuc2lnbmVkIG1fY2hhcmFjdGVyc0FkZGVk
OwogfTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAkocmV2aXNpb24gNTA1NDIpCisrKyBX
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjUsNiAr
NDI1LDQzIEBACiAgICAgcmV0dXJuIHJlYmFsYW5jZWRTdHJpbmc7CiB9CiAKKy8vIEZJWE1FOiBN
b3ZlIHRoaXMgaW50byBQbGF0Zm9ybVN0cmluZy5oIG9yIFN0cmluZ0ltcGwuaCBhbmQgcmVuYW1l
IGl0IHRvIGRpc3Rpbmd1aXNoIGl0IGZyb20gc2ltaWxhciBmdW5jdGlvbnMuCitzdGF0aWMgaW5s
aW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFyIGMpCit7CisgICAgcmV0dXJuIGMgPT0gbm9CcmVh
a1NwYWNlIHx8IGMgPT0gJyAnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcdCc7Cit9CisKKy8vIEZp
bmQgdGhlIGV4dGVudCBvZiB3aGl0ZXNwYWNlIGFyb3VuZCBhIHBhcnRpY3VsYXIgb2Zmc2V0LiAg
SWYgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzICgnICcpIGFyZSBwcmVzZXJ2ZWQsIHRoZW4gd2UgZG9u
J3QKKy8vIGRvIHdoaXRlc3BhY2UgcmViYWxhbmNpbmcgYW5kIHRoaXMgZnVuY3Rpb24gcmV0dXJu
cyBmYWxzZS4KK2Jvb2wgZXh0ZW50T2ZXaGl0ZXNwYWNlRm9yUmViYWxhbmNpbmdBdChQYXNzUmVm
UHRyPFRleHQ+IG5vZGUsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQmIHN0YXJ0LCB1bnNpZ25l
ZCYgZW5kKQoreworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigp
OworICAgIGlmIChyZW5kZXJlciAmJiAhcmVuZGVyZXItPnN0eWxlKCktPmNvbGxhcHNlV2hpdGVT
cGFjZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgU3RyaW5nIHRleHQgPSBu
b2RlLT5kYXRhKCk7CisgICAgCisgICAgc3RhcnQgPSBvZmZzZXQ7CisgICAgZW5kID0gb2Zmc2V0
OworICAgIGlmIChvZmZzZXQgPT0gdGV4dC5sZW5ndGgoKSB8fCAhaXNXaGl0ZXNwYWNlKHRleHRb
b2Zmc2V0XSkpIHsKKyAgICAgICAgaWYgKG9mZnNldCA9PSAwIHx8ICFpc1doaXRlc3BhY2UodGV4
dFtvZmZzZXQgLSAxXSkpCisgICAgICAgICAgICAvLyBJZiBuZWl0aGVyIHRleHRbb2Zmc2V0XSBu
b3IgdGV4dFtvZmZzZXQgLSAxXSBhcmUgc29tZSBmb3JtIG9mIHdoaXRlc3BhY2UsIG5vIHJlYmFs
YW5jaW5nIGlzIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIAorICAgICAgICAvLyB0ZXh0W29mZnNldF0gaXMgbm90IHdoaXRlc3BhY2UsIGJ1dCB0ZXh0
W29mZnNldCAtIDFdIGlzLCBhZGp1c3Qgc3RhcnQgYW5kIGVuZCBvZmZzZXRzLgorICAgICAgICBz
dGFydCA9IG9mZnNldCAtIDE7CisgICAgICAgIGVuZCA9IG9mZnNldDsKKyAgICB9CisgICAgCisg
ICAgd2hpbGUgKHN0YXJ0ID4gMCAmJiBpc1doaXRlc3BhY2UodGV4dFtzdGFydCAtIDFdKSkKKyAg
ICAgICAgc3RhcnQtLTsKKyAgICAgICAgCisgICAgd2hpbGUgKGVuZCA8IHRleHQubGVuZ3RoKCkg
JiYgaXNXaGl0ZXNwYWNlKHRleHRbZW5kXSkpCisgICAgICAgIGVuZCsrOworICAgIAorICAgIHJl
dHVybiB0cnVlOworfQorCiBib29sIGlzVGFibGVTdHJ1Y3R1cmVOb2RlKGNvbnN0IE5vZGUgKm5v
ZGUpCiB7CiAgICAgUmVuZGVyT2JqZWN0ICpyID0gbm9kZS0+cmVuZGVyZXIoKTsKSW5kZXg6IFdl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGlu
Zy9odG1sZWRpdGluZy5oCShyZXZpc2lvbiA1MDU0MikKKysrIFdlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiBjbGFzcyBQb3NpdGlv
bjsKIGNsYXNzIFJhbmdlOwogY2xhc3MgU3RyaW5nOworY2xhc3MgVGV4dDsKIGNsYXNzIFZpc2li
bGVQb3NpdGlvbjsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAKQEAgLTIyNyw2ICsyMjgsNyBA
QAogLy8gTWlzY2VsbGFuZW91cyBmdW5jdGlvbnMgb24gU3RyaW5nCiAgICAgCiBTdHJpbmcgc3Ry
aW5nV2l0aFJlYmFsYW5jZWRXaGl0ZXNwYWNlKGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wpOwor
Ym9vbCBleHRlbnRPZldoaXRlc3BhY2VGb3JSZWJhbGFuY2luZ0F0KFBhc3NSZWZQdHI8VGV4dD4g
bm9kZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCYgc3RhcnQsIHVuc2lnbmVkJiBlbmQpOwog
Y29uc3QgU3RyaW5nJiBub25CcmVha2luZ1NwYWNlU3RyaW5nKCk7CiBib29sIHZhbGlkQmxvY2tU
YWcoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTEyOCkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDA5LTExLTE4ICBKdXN0aW4gR2FyY2lhICA8anVzdGluLmdhcmNpYUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwOTQ2CisgICAgICAgIEV4dHJhIGxheW91
dCBvbiBrZXlwcmVzcyBhZnRlciBhIHNwYWNlIChwcm9ibGVtIHdpdGggcmViYWxhbmNlV2hpdGVz
cGFjZUF0IGluIEluc2VydFRleHRDb21tYW5kKQorICAgICAgICAKKyAgICAgICAgVGhlcmUgYXJl
IG5vdyByZWd1bGFyIHNwYWNlcyB3aGVyZSBuYnNwcyB3ZXJlIHVzZWQgdW5uZWNlc3NhcmlseSBi
ZWZvcmUuICBBbHNvLAorICAgICAgICBtdWx0aS1jaGFyYWN0ZXIgaW5zZXJ0aW9ucyBub3cgaGF2
ZSB0aGVpciB3aGl0ZXNwYWNlIHJlYmFsYW5jZWQsIGFuZCB0aGlzIGlzIAorICAgICAgICByZWZs
ZWN0ZWQgaW4gYSBmZXcgdGVzdHMuCisKKyAgICAgICAgKiBlZGl0aW5nL2luc2VydGluZy9yZWJh
bGFuY2Utd2hpdGVzcGFjZS0xLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0
aW5nL3JlYmFsYW5jZS13aGl0ZXNwYWNlLTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL2V4ZWNDb21tYW5kLzUxNDIwMTItMy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTQ4MjAyMy1leHBlY3RlZC5jaGVja3N1
bToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC81NDgyMDIzLWV4
cGVjdGVkLnBuZzoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC81
NDgyMDIzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVj
Q29tbWFuZC9yZW1vdmUtZm9ybWF0dGluZy1leHBlY3RlZC5jaGVja3N1bToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0dGluZy1leHBlY3Rl
ZC5wbmc6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3Zl
LWZvcm1hdHRpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5n
L2luc2VydGluZy9lZGl0YWJsZS1odG1sLWVsZW1lbnQtZXhwZWN0ZWQuY2hlY2tzdW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2VkaXRhYmxlLWh0bWwtZWxlbWVu
dC1leHBlY3RlZC5wbmc6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5n
L2VkaXRhYmxlLWh0bWwtZWxlbWVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL2VkaXRpbmcvcGFzdGVib2FyZC80OTg5Nzc0LWV4cGVjdGVkLmNoZWNrc3VtOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvNDk4OTc3NC1leHBlY3RlZC5wbmc6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC80OTg5Nzc0LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vNDk4Mzg1
OC1leHBlY3RlZC5jaGVja3N1bToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxl
Y3Rpb24vNDk4Mzg1OC1leHBlY3RlZC5wbmc6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRp
bmcvc2VsZWN0aW9uLzQ5ODM4NTgtZXhwZWN0ZWQudHh0OgorCiAyMDA5LTExLTE4ICBPbGl2ZXIg
SHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFBy
b3NrdXJ5YWtvdi4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3JlYmFsYW5j
ZS13aGl0ZXNwYWNlLTEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Vk
aXRpbmcvaW5zZXJ0aW5nL3JlYmFsYW5jZS13aGl0ZXNwYWNlLTEtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmViYWxhbmNlLXdoaXRl
c3BhY2UtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMg
dGVzdHMgd2hpdGVzcGFjZSByZWJhbGFuY2luZyB3aGVuIGluc2VydGluZyBjaGFyYWN0ZXJzIGlu
IGFuZCBhcm91bmQgYWxyZWFkeSBiYWxhbmNlZCBzZXF1ZW5jZXMuIEluIGVhY2ggZGl2IGJlbG93
LCAyIG9yIG1vcmUgYWRqYWNlbnQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHNob3VsZCBiZSBhbHRl
cm5hdGUgYmV0d2VlbiByZWd1bGFyIHdoaXRlc3BhY2UgYW5kIG5vbi1icmVha2luZyBzcGFjZXMg
KG5vdGUgdGhhdCBlZGl0YWJsZSByZWdpb25zIHVzZSAtd2Via2l0LW5ic3AtbW9kZTpzcGFjZSku
CisKK2hlbGxveCB3b3JsZAoraGVsbG94IMKgd29ybGQKK2hlbGxveCDCoCB3b3JsZAoraGVsbG8g
eCB3b3JsZAoraGVsbG8gwqB4IHdvcmxkCitoZWxsbyDCoHggwqB3b3JsZAoraGVsbG8gwqB4IMKg
IHdvcmxkCitoZWxsbyDCoCB4IMKgd29ybGQKK2hlbGxvIMKgIHggwqAgd29ybGQKKwpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmViYWxhbmNlLXdoaXRlc3BhY2UtMS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3JlYmFsYW5jZS13
aGl0ZXNwYWNlLTEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5z
ZXJ0aW5nL3JlYmFsYW5jZS13aGl0ZXNwYWNlLTEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMjMgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKwor
PGRpdiBjb250ZW50RWRpdGFibGU9InRydWUiIGlkPSJ0ZXN0MSI+aGVsbG8gd29ybGQ8L2Rpdj4K
KzxzY3JpcHQ+CisvLyBUZXN0IHJlYmFsYW5jaW5nIGEgc2luZ2xlIHNwYWNlIG9uIG9uZSBzaWRl
LgordGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MSIpOwordGV4dCA9IHRlc3Qu
Zmlyc3RDaGlsZDsKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXh0LCA1KTsK
K2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ4Iik7Cis8L3Njcmlw
dD4KKworPGRpdiBjb250ZW50RWRpdGFibGU9InRydWUiIGlkPSJ0ZXN0MiI+aGVsbG8gd29ybGQ8
L2Rpdj4KKzxzY3JpcHQ+CisvLyBUZXN0IHJlYmFsYW5jaW5nIHR3byBzcGFjZXMgb24gb25lIHNp
ZGUuCit0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QyIik7Cit0ZXh0ID0gdGVz
dC5maXJzdENoaWxkOword2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHRleHQsIDUp
OworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIiAiKTsKK3dpbmRv
dy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXh0LCA1KTsKK2RvY3VtZW50LmV4ZWNDb21t
YW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ4Iik7Cis8L3NjcmlwdD4KKworPGRpdiBjb250ZW50
RWRpdGFibGU9InRydWUiIGlkPSJ0ZXN0MyI+aGVsbG8gd29ybGQ8L2Rpdj4KKzxzY3JpcHQ+Cisv
LyBUZXN0IHJlYmFsYW5jaW5nIHRocmVlIHNwYWNlcyBvbiBvbmUgc2lkZS4KK3Rlc3QgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDMiKTsKK3RleHQgPSB0ZXN0LmZpcnN0Q2hpbGQ7Cit3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGV4dCwgNSk7Citkb2N1bWVudC5leGVj
Q29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiICIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQo
Ikluc2VydFRleHQiLCBmYWxzZSwgIiAiKTsKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3Np
dGlvbih0ZXh0LCA1KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2Us
ICJ4Iik7Cis8L3NjcmlwdD4KKworPGRpdiBjb250ZW50RWRpdGFibGU9InRydWUiIGlkPSJ0ZXN0
NCI+aGVsbG8gd29ybGQ8L2Rpdj4KKzxzY3JpcHQ+CisvLyBUZXN0IHJlYmFsYW5jaW5nIG9uZSBz
cGFjZSBvbiBlaXRoZXIgc2lkZSBvZiB0aGUgaW5zZXJ0aW9uLgordGVzdCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXN0NCIpOwordGV4dCA9IHRlc3QuZmlyc3RDaGlsZDsKK3dpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXh0LCA1KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5k
KCJJbnNlcnRUZXh0IiwgZmFsc2UsICIgIik7Cit3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9z
aXRpb24odGV4dCwgNik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNl
LCAieCIpOworPC9zY3JpcHQ+CisKKzxkaXYgY29udGVudEVkaXRhYmxlPSJ0cnVlIiBpZD0idGVz
dDUiPmhlbGxvIHdvcmxkPC9kaXY+Cis8c2NyaXB0PgorLy8gVGVzdCByZWJhbGFuY2luZyB0d28g
c3BhY2VzIG9uIG9uZSBzaWRlIGFuZCBvbmUgc3BhY2Ugb24gdGhlIG90aGVyIHNpZGUgb2YgdGhl
IGluc2VydGlvbi4KK3Rlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDUiKTsKK3Rl
eHQgPSB0ZXN0LmZpcnN0Q2hpbGQ7Cit3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24o
dGV4dCwgNSk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiICIp
OworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIiAiKTsKK3dpbmRv
dy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXh0LCA3KTsKK2RvY3VtZW50LmV4ZWNDb21t
YW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ4Iik7Cis8L3NjcmlwdD4KKworPGRpdiBjb250ZW50
RWRpdGFibGU9InRydWUiIGlkPSJ0ZXN0NiI+aGVsbG8gd29ybGQ8L2Rpdj4KKzxzY3JpcHQ+Cisv
LyBUZXN0IHJlYmFsYW5jaW5nIHR3byBzcGFjZXMgb24gZWl0aGVyIHNpZGUgb2YgdGhlIGluc2Vy
dGlvbi4KK3Rlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDYiKTsKK3RleHQgPSB0
ZXN0LmZpcnN0Q2hpbGQ7Cit3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGV4dCwg
NSk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiICIpOworZG9j
dW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIiAiKTsKK2RvY3VtZW50LmV4
ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICIgIik7Cit3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuc2V0UG9zaXRpb24odGV4dCwgNyk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4
dCIsIGZhbHNlLCAieCIpOworPC9zY3JpcHQ+CisKKzxkaXYgY29udGVudEVkaXRhYmxlPSJ0cnVl
IiBpZD0idGVzdDciPmhlbGxvIHdvcmxkPC9kaXY+Cis8c2NyaXB0PgorLy8gVGVzdCByZWJhbGFu
Y2luZyB0d28gc3BhY2VzIG9uIGVpdGhlciBzaWRlIG9mIHRoZSBpbnNlcnRpb24uCit0ZXN0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Q3Iik7Cit0ZXh0ID0gdGVzdC5maXJzdENoaWxk
Oword2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHRleHQsIDUpOworZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIiAiKTsKK2RvY3VtZW50LmV4ZWNDb21t
YW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICIgIik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5z
ZXJ0VGV4dCIsIGZhbHNlLCAiICIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQi
LCBmYWxzZSwgIiAiKTsKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXh0LCA3
KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ4Iik7Cis8L3Nj
cmlwdD4KKworPGRpdiBjb250ZW50RWRpdGFibGU9InRydWUiIGlkPSJ0ZXN0OCI+aGVsbG8gd29y
bGQ8L2Rpdj4KKzxzY3JpcHQ+CisvLyBUZXN0IHJlYmFsYW5jaW5nIHRocmVlIHNwYWNlcyBvbiBv
bmUgc2lkZSBhbmQgdHdvIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBpbnNlcnRpb24uCit0ZXN0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Q4Iik7Cit0ZXh0ID0gdGVzdC5maXJzdENo
aWxkOword2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHRleHQsIDUpOworZG9jdW1l
bnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIiAiKTsKK2RvY3VtZW50LmV4ZWND
b21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICIgIik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgi
SW5zZXJ0VGV4dCIsIGZhbHNlLCAiICIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRl
eHQiLCBmYWxzZSwgIiAiKTsKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXh0
LCA4KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ4Iik7Cis8
L3NjcmlwdD4KKworPGRpdiBjb250ZW50RWRpdGFibGU9InRydWUiIGlkPSJ0ZXN0OSI+aGVsbG8g
d29ybGQ8L2Rpdj4KKzxzY3JpcHQ+CisvLyBUZXN0IHJlYmFsYW5jaW5nIHRocmVlIHNwYWNlcyBv
biBlaXRoZXIgc2lkZSBvZiB0aGUgaW5zZXJ0aW9uLgordGVzdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0ZXN0OSIpOwordGV4dCA9IHRlc3QuZmlyc3RDaGlsZDsKK3dpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5zZXRQb3NpdGlvbih0ZXh0LCA1KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNl
cnRUZXh0IiwgZmFsc2UsICIgIik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIs
IGZhbHNlLCAiICIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwg
IiAiKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICIgIik7Citk
b2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiICIpOword2luZG93Lmdl
dFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHRleHQsIDgpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQo
Ikluc2VydFRleHQiLCBmYWxzZSwgIngiKTsKKzwvc2NyaXB0PgorCis8c2NyaXB0PgorZGl2cyA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKTsKK3ZhciBvdXRwdXQgPSAiVGhp
cyB0ZXN0cyB3aGl0ZXNwYWNlIHJlYmFsYW5jaW5nIHdoZW4gaW5zZXJ0aW5nIGNoYXJhY3RlcnMg
aW4gYW5kIGFyb3VuZCBhbHJlYWR5IGJhbGFuY2VkIHNlcXVlbmNlcy4gSW4gZWFjaCBkaXYgYmVs
b3csIDIgb3IgbW9yZSBhZGphY2VudCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgc2hvdWxkIGJlIGFs
dGVybmF0ZSBiZXR3ZWVuIHJlZ3VsYXIgd2hpdGVzcGFjZSBhbmQgbm9uLWJyZWFraW5nIHNwYWNl
cyAobm90ZSB0aGF0IGVkaXRhYmxlIHJlZ2lvbnMgdXNlIC13ZWJraXQtbmJzcC1tb2RlOnNwYWNl
KS5cblxuIjsKK2ZvciAoaSA9IDA7IGkgPCBkaXZzLmxlbmd0aDsgaSsrKQorICAgIG91dHB1dCAr
PSBkaXZzW2ldLmlubmVyVGV4dCArICJcbiI7Citkb2N1bWVudC5ib2R5LmlubmVyVGV4dCA9IG91
dHB1dDsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC81
MTQyMDEyLTMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcv
ZXhlY0NvbW1hbmQvNTE0MjAxMi0zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTA1NDEpCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUxNDIwMTItMy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiBUaGlzIHRlc3RzIGZvciBhIGJ1ZyB3aGVuIGlu
c2VydGluZyBhZnRlciBhIGxpbmsgYXQgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuIExpa2UgVGV4
dEVkaXQsIHdlIGluc2VydCBjb250ZW50IG91dHNpZGUgb2YgdGhlIGxpbmssIGJ1dCBpbnNlcnRp
bmcgb3V0c2lkZSBvZiB0aGUgbGluayBzaG91bGRuJ3QgY2F1c2UgdGhlIGNvbnRlbnQgdG8gYmUg
aW5zZXJ0ZWQgaW4gdGhlIHdyb25nIHBhcmFncmFwaC4KIAogVGhpcyBwYXJhZ3JhcGggc2hvdWxk
IG5vdCBjb250YWlucyBsaW5rcy4KLVRoaXMgc2VudGVuY2Ugc2hvdWxkIGJlIGEgbGluay7CoFRo
aXMgc2VudGVuY2Ugc2hvdWxkIG5vdC4KLTxhIGhyZWY9IiMiPlRoaXMgc2VudGVuY2Ugc2hvdWxk
IGJlIGEgbGluay48L2E+Jm5ic3A7VGhpcyBzZW50ZW5jZSBzaG91bGQgbm90LgorVGhpcyBzZW50
ZW5jZSBzaG91bGQgYmUgYSBsaW5rLiBUaGlzIHNlbnRlbmNlIHNob3VsZCBub3QuCis8YSBocmVm
PSIjIj5UaGlzIHNlbnRlbmNlIHNob3VsZCBiZSBhIGxpbmsuPC9hPiBUaGlzIHNlbnRlbmNlIHNo
b3VsZCBub3QuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvNTUyMTIzNy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
LzU1MjEyMzctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDU0MSkKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC81NTIxMjM3LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDMgQEAKIFRoaXMgdGVzdHMgZm9yIGEgYnVnIHdoZW4gcGFzdGluZyBhIHdvcmQgY29w
aWVkIGZyb20gVGV4dEVkaXQgYWZ0ZXIgYSByZWd1bGFyLCBicmVha2luZyBzcGFjZS4KIAotRXZl
cnl0aGluZ8KgaW4gdGhpcyBlZGl0YWJsZSByZWdpb24gc2hvdWxkIGJlIGluIG9uZSBwYXJhZ3Jh
cGguCitFdmVyeXRoaW5nIGluIHRoaXMgZWRpdGFibGUgcmVnaW9uIHNob3VsZCBiZSBpbiBvbmUg
cGFyYWdyYXBoLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0
aW5nL2VkaXRhYmxlLWh0bWwtZWxlbWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2VkaXRhYmxlLWh0bWwtZWxl
bWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUwNTQxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2VkaXRhYmxlLWh0bWwtZWxlbWVudC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3LDEwICsxNyw5IEBACiAgIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBz
aXplIDc4NHg1ODQKICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUg
Nzg0eDU0Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc4M3g1NAot
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDcxNDogIlRoaXMgdGVzdHMgdG8gbWFr
ZSBzdXJlIHRoYXQgd2hlbiB0aGUgZW5jbG9zaW5nIGJsb2NrIGlzIHRoZSBib2R5IGVsZW1lbnQs
IGFuZCB3aGVuIHRoZSBodG1sIGVsZW1lbnQgaXMgZWRpdGFibGUsICIKLSAgICAgICAgICB0ZXh0
IHJ1biBhdCAoNzE0LDApIHdpZHRoIDY1OiAiaW5zZXJ0aW5nIGEiCi0gICAgICAgICAgdGV4dCBy
dW4gYXQgKDc3OSwwKSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgNzg0eDU0CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzgz
OiAiVGhpcyB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCB3aGVuIHRoZSBlbmNsb3NpbmcgYmxvY2sg
aXMgdGhlIGJvZHkgZWxlbWVudCwgYW5kIHdoZW4gdGhlIGh0bWwgZWxlbWVudCBpcyBlZGl0YWJs
ZSwgIGluc2VydGluZyBhIgorICAgICAgICAgIHRleHQgcnVuIGF0ICg3ODMsMCkgd2lkdGggMTog
IiAiCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDc1MTogInBhcmFncmFwaCBz
ZXBhcmF0b3IgZG9lc24ndCBzcGxpdCB0aGUgYm9keSAoaW5zZXJ0aW5nIGEgcGFyYWdyYXBoIHNl
cGFyYXRvciB1c3VhbGx5IHNwbGl0cy9jbG9uZXMgdGhlIGVuY2xvc2luZyBibG9jayBmbG93Igog
ICAgICAgICAgIHRleHQgcnVuIGF0ICg3NTEsMTgpIHdpZHRoIDQ6ICIgIgogICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDM2KSB3aWR0aCA1ODogImVsZW1lbnQpLiIKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL2luc2VydGluZy9lZGl0YWJsZS1odG1sLWVsZW1lbnQtZXhw
ZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvaW5zZXJ0aW5nL2VkaXRhYmxlLWh0bWwtZWxlbWVudC1leHBlY3RlZC5jaGVja3N1bQko
cmV2aXNpb24gNTA1NDEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnNl
cnRpbmcvZWRpdGFibGUtaHRtbC1lbGVtZW50LWV4cGVjdGVkLmNoZWNrc3VtCSh3b3JraW5nIGNv
cHkpCkBAIC0xICsxIEBACi1mMTdkODAwMzM0YTU3OTQwNzJhYmJmYzMwOTE2YTI4YwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKKzY4NjkwYzk2N2Y3ZjZhODMwMGZmNzg2MjFlZjI5ZTVmClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvaW5zZXJ0aW5nL2VkaXRhYmxlLWh0bWwtZWxlbWVudC1leHBlY3RlZC5wbmcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3Zu
Om1pbWUtdHlwZSA9IGltYWdlL3BuZwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvZXhlY0NvbW1hbmQvNTQ4MjAyMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTQ4MjAyMy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDUwNTQxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvZXhlY0NvbW1hbmQvNTQ4MjAyMy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQs
MTEgKzQsMTAgQEAKICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAog
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3MQogICAgICAgUmVuZGVy
QmxvY2sge0gxfSBhdCAoMCwwKSBzaXplIDc4NHgxMTEKLSAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgNzc5eDExMQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSA3ODR4MTExCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzIx
OiAiVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlbiBwZXJmb3JtaW5nIGEgRm9ybWF0QmxvY2siCiAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDcyMSwwKSB3aWR0aCA4OiAiICIKLSAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwzNykgd2lkdGggNTEyOiAiaW5zaWRlIGEgYm9keSB3aXRoIG5vIHZpc2libGUg
Y29udGVudC4gIgotICAgICAgICAgIHRleHQgcnVuIGF0ICg1MTIsMzcpIHdpZHRoIDI1OTogIlRo
aXMgdGV4dCBzaG91bGQgYmUiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDc3MSwzNykgd2lkdGgg
ODogIiAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzcpIHdpZHRoIDc3OTogImluc2lkZSBh
IGJvZHkgd2l0aCBubyB2aXNpYmxlIGNvbnRlbnQuICBUaGlzIHRleHQgc2hvdWxkIGJlIgorICAg
ICAgICAgIHRleHQgcnVuIGF0ICg3NzksMzcpIHdpZHRoIDU6ICIgIgogICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDc0KSB3aWR0aCAyODc6ICJpbnNpZGUgYW4gaDEgZWxlbWVudC4iCiBjYXJldDog
cG9zaXRpb24gMTMyIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtIMX0gb2YgY2hpbGQg
MSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9l
eGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0dGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUwNTQx
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3Zl
LWZvcm1hdHRpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBA
CiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNjM6ICJmb29iYXJiYXoiCiAgICAg
ICAgIFJlbmRlckJSIHtCUn0gYXQgKDYzLDE0KSBzaXplIDB4MAogICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMTgpIHNpemUgNzF4MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
OCkgd2lkdGggNzE6ICJmb29ceHs5fWJhclx4ezl9YmF6IgorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDE4KSB3aWR0aCA3MTogImZvbyBiYXIgYmF6IgogICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICg3MSwzMikgc2l6ZSAweDAKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDM2KSBz
aXplIDYzeDE4CiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzYpIHdpZHRoIDYzOiAiZm9vYmFy
YmF6IgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQv
cmVtb3ZlLWZvcm1hdHRpbmctMi1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxh
eTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3Bu
ZwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVt
b3ZlLWZvcm1hdHRpbmctZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctZXhw
ZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDUwNTQxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctZXhwZWN0ZWQuY2hlY2tz
dW0JKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLWEwZTUzYmQwM2NlY2I5MzkyYzEzZjBmMTZl
MThjYjE1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorY2Q2YTM1NmUyNjRiYmRiYzIzZDY4
MjZkMzE0YWUyNTkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC81NDgyMDIzLWV4cGVjdGVkLnBuZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpz
dm46bWltZS10eXBlID0gaW1hZ2UvcG5nCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0dGluZy1leHBlY3RlZC5wbmcKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1p
bWUtdHlwZSA9IGltYWdlL3BuZwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvZXhlY0NvbW1hbmQvNTQ4MjAyMy1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC81NDgyMDIzLWV4cGVj
dGVkLmNoZWNrc3VtCShyZXZpc2lvbiA1MDU0MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU0ODIwMjMtZXhwZWN0ZWQuY2hlY2tzdW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEgKzEgQEAKLWU2NzM1N2U1NTUyZTVjZjJmMDYyNDE2ZTJmMzU3ZmE3ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorNzI3NTIyMzYyOTdhOTk0ODIwNTNkMWJmMDczMmZiZmUK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0dGluZy0yLWV4cGVjdGVkLmNoZWNr
c3VtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWND
b21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLTItZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDUw
NTQxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVt
b3ZlLWZvcm1hdHRpbmctMi1leHBlY3RlZC5jaGVja3N1bQkod29ya2luZyBjb3B5KQpAQCAtMSAr
MSBAQAotMTNjOTdkYWU1YWUyMGVhNGZiZjM4YjU4NTVmMzg2YjAKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCisxZjMwZTljZjM2MWMyMzRiMTY5MDBhMDQ1OTQ3NDU0NApcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bh
c3RlYm9hcmQvNDk4OTc3NC1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTog
ZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC80OTg5Nzc0
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRp
dGluZy9wYXN0ZWJvYXJkLzQ5ODk3NzQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDU0MSkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvNDk4OTc3NC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcsMTEgKzcsMTAgQEAKICAgICAgIFJlbmRlcklt
YWdlIHtJTUd9IGF0ICg3NiwwKSBzaXplIDc2eDEwMwogICAgICAgUmVuZGVySW1hZ2Uge0lNR30g
YXQgKDE1MiwwKSBzaXplIDc2eDEwMwogICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMjI4LDEwMykg
c2l6ZSAweDAKLSAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxMDMpIHNpemUgNzg0eDM2
Ci0gICAgICAgIHRleHQgcnVuIGF0ICgwLDEwMykgd2lkdGggNjI5OiAiVGhpcyB0ZXN0cyBmb3Ig
YSBidWcgd2hlcmUgYW4gaW1hZ2VzIHBhc3RlZCBvbiB0aGUgc2FtZSBsaW5lIHdvdWxkIGFwcGVh
ciBvbiBkaWZmZXJlbnQgbGluZXMuICIKLSAgICAgICAgdGV4dCBydW4gYXQgKDYyOSwxMDMpIHdp
ZHRoIDE1MzogIllvdSBzaG91bGQgc2VlIHNldmVyYWwiCi0gICAgICAgIHRleHQgcnVuIGF0ICg3
ODIsMTAzKSB3aWR0aCAyOiAiICIKLSAgICAgICAgdGV4dCBydW4gYXQgKDAsMTIxKSB3aWR0aCAz
MDc6ICJwaWN0dXJlcyBhYm92ZSBhbGwgaW4gdGhlIHNhbWUgbGluZS9wYXJhZ3JhcGguIgorICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDEwMykgc2l6ZSA3Mzl4MzYKKyAgICAgICAgdGV4
dCBydW4gYXQgKDAsMTAzKSB3aWR0aCA3MzU6ICJUaGlzIHRlc3RzIGZvciBhIGJ1ZyB3aGVyZSBh
biBpbWFnZXMgcGFzdGVkIG9uIHRoZSBzYW1lIGxpbmUgd291bGQgYXBwZWFyIG9uIGRpZmZlcmVu
dCBsaW5lcy4gIFlvdSBzaG91bGQgc2VlIgorICAgICAgICB0ZXh0IHJ1biBhdCAoNzM1LDEwMykg
d2lkdGggNDogIiAiCisgICAgICAgIHRleHQgcnVuIGF0ICgwLDEyMSkgd2lkdGggMzU4OiAic2V2
ZXJhbCBwaWN0dXJlcyBhYm92ZSBhbGwgaW4gdGhlIHNhbWUgbGluZS9wYXJhZ3JhcGguIgogICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCiAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKIGNhcmV0OiBwb3NpdGlvbiAxNjQgb2YgY2hpbGQg
NCB7I3RleHR9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkLzQ5ODk3
NzQtZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvcGFzdGVib2FyZC80OTg5Nzc0LWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lv
biA1MDU0MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQv
NDk4OTc3NC1leHBlY3RlZC5jaGVja3N1bQkod29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAotMmI4
MjAzMzUyZjg3NTQ0MjVlYmYwNGFmZGY5ZmMxZGQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CisyYWY1MTg0MGRmZDBlNTc1MzE0ZGE3YzZiZWZmZjJkNgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi80
OTgzODU4LWV4cGVjdGVkLmNoZWNrc3VtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi80OTgzODU4LWV4cGVjdGVkLmNoZWNrc3VtCShyZXZp
c2lvbiA1MDU0MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlv
bi80OTgzODU4LWV4cGVjdGVkLmNoZWNrc3VtCSh3b3JraW5nIGNvcHkpCkBAIC0xICsxIEBACi0x
ZWE3NmJlZDNkMTc3ZTdkZWE2MzRkYzBhMzY1OGM2ZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKK2UyM2I0NzU3YTIzNTU5MzhhY2FlMWZmZmNmYjA3MzYyClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9u
LzQ5ODM4NTgtZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFy
a2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi80OTgzODU4LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxl
Y3Rpb24vNDk4Mzg1OC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUwNTQxKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzQ5ODM4NTgtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC00LDExICs0LDkgQEAKICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgw
LDApIHNpemUgODAweDYwMAogICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0
eDU4NAogICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA3ODR4MzYK
LSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzcyeDM2Ci0gICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTcwOiAiVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hl
cmUgc2VsZWN0aW5nIGEgd29yZCB3b3VsZCBzZWxlY3QgdGhlIGxpbmUgYnJlYWsgYW5kIHdvcmQg
YmVmb3JlIGl0LiAiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDU3MCwwKSB3aWR0aCAxMzU6ICJP
bmx5IHRoZSB3b3JkIGluIHRoZSAiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDcwNSwwKSB3aWR0
aCA2MzogInBhcmFncmFwaCIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNzY4LDApIHdpZHRoIDQ6
ICIgIgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3ODB4MzYKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NzY6ICJUaGlzIHRlc3RzIGZvciBhIGJ1
ZyB3aGVyZSBzZWxlY3RpbmcgYSB3b3JkIHdvdWxkIHNlbGVjdCB0aGUgbGluZSBicmVhayBhbmQg
d29yZCBiZWZvcmUgaXQuICBPbmx5IHRoZSB3b3JkIGluIHRoZSAgcGFyYWdyYXBoIgorICAgICAg
ICAgIHRleHQgcnVuIGF0ICg3NzYsMCkgd2lkdGggNDogIiAiCiAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMTgpIHdpZHRoIDE2MjogImJlbG93IHNob3VsZCBiZSBzZWxlY3RlZDoiCiAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDAsMzYpIHNpemUgNzg0eDE4Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49506</attachid>
            <date>2010-02-25 10:11:12 -0800</date>
            <delta_ts>2010-02-25 10:27:36 -0800</delta_ts>
            <desc>Patch2</desc>
            <filename>bug7639184.txt</filename>
            <type>text/plain</type>
            <size>29512</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTI0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDItMjUgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
eHRyYSBsYXlvdXQgb24ga2V5cHJlc3MgYWZ0ZXIgYSBzcGFjZSAocHJvYmxlbSB3aXRoIHJlYmFs
YW5jZVdoaXRlc3BhY2VBdCBpbiBJbnNlcnRUZXh0Q29tbWFuZCkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDk0NgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNzYzOTE4ND4KKworICAgICAgICBEbyB0ZXh0IGluc2VydGlvbiBhbmQgd2hpdGVzcGFj
ZSByZWJhbGFuY2luZyBhcm91bmQgdGhlIGluc2VydGlvbiBpbiBvbmUgc3RlcCBzbyB0aGF0IHRo
ZXJlJ3Mgb25seSBvbmUgbGF5b3V0LgorICAgICAgICBUaGlzIHBhdGNoIHdhcyBvcmlnaW5hbGx5
IG1hZGUgYnkgSnVzdGluIEdhcmNpYS4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6IGVkaXRpbmcv
aW5zZXJ0aW5nL3JlYmFsYW5jZS13aGl0ZXNwYWNlLTEuaHRtbAorCisgICAgICAgICogZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdGVzcGFjZUF0KTogTm8gYmVoYXZpb3IgY2hhbmdlcyBo
ZXJlLAorICAgICAgICBqdXN0IHB1c2hlZCB0aGUgY29kZSB0aGF0IGRldGVybWluZWQgdGhlIGV4
dGVudCBvZiB3aGl0ZXNwYWNlIHN1cnJvdW5kaW5nIGEgcG9zaXRpb24KKyAgICAgICAgdG8gaXRz
IG93biBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgICogZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0VGV4dElu
dG9Ob2RlQW5kUmViYWxhbmNlV2hpdGVzcGFjZSk6IEFkZGVkLiAgRmluZCAKKyAgICAgICAgd2hp
dGVzcGFjZSBzdXJyb3VuZGluZyB0aGUgaW5zZXJ0aW9uIHBvc2l0aW9uLCBhZGQgdGhlIHRleHQg
dG8gaW5zZXJ0LCByZWJhbGFuY2UgdGhhdCBlbnRpcmUKKyAgICAgICAgc3RyaW5nLCB0aGVuIGlu
c2VydCBpdCBpbnRvIHRoZSBkb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRleHRD
b21tYW5kOjppbnB1dCk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5oOgor
ICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNX
aGl0ZXNwYWNlKTogTW92ZWQgZnJvbSBDb21wb3NpdGVFZGl0Q29tbWFuZC5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbnRPZldoaXRlc3BhY2VGb3JSZWJhbGFuY2luZ0F0KTogTW92ZWQgY29k
ZSBmcm9tIHJlYmFsYW5jZVdoaXRlc3BhY2VBdCBpbnRvIHRoaXMgaGVscGVyCisgICAgICAgIGZ1
bmN0aW9uLiAgT2J0YWlucyB0aGUgb2Zmc2V0IG9mIHRoZSBzdGFydCBhbmQgZW5kIG9mIHdoaXRl
c3BhY2UgYXJvdW5kIGEgcGFydGljdWxhciBwb3NpdGlvbi4KKyAgICAgICAgKiBlZGl0aW5nL2h0
bWxlZGl0aW5nLmg6CisKIDIwMTAtMDItMjUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDog
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiA1NTIxMSkK
KysrIFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4NSwxMSArMzg1LDYgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c2V0Tm9k
ZUF0dHJpYgogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFNldE5vZGVBdHRyaWJ1dGVDb21t
YW5kOjpjcmVhdGUoZWxlbWVudCwgYXR0cmlidXRlLCB2YWx1ZSkpOwogfQogCi1zdGF0aWMgaW5s
aW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIGMgPT0gbm9CcmVh
a1NwYWNlIHx8IGMgPT0gJyAnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcdCc7Ci19Ci0KIC8vIEZJ
WE1FOiBEb2Vzbid0IGdvIGludG8gdGV4dCBub2RlcyB0aGF0IGNvbnRyaWJ1dGUgYWRqYWNlbnQg
dGV4dCAoc2libGluZ3MsIGNvdXNpbnMsIGV0YykuCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5k
OjpyZWJhbGFuY2VXaGl0ZXNwYWNlQXQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogewpAQCAt
Mzk4LDM0ICszOTMsMTQgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hp
dAogICAgICAgICByZXR1cm47CiAgICAgVGV4dCogdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0
Kj4obm9kZSk7CiAgICAgCi0gICAgaWYgKHRleHROb2RlLT5sZW5ndGgoKSA9PSAwKQotICAgICAg
ICByZXR1cm47Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRleHROb2RlLT5yZW5kZXJl
cigpOwotICAgIGlmIChyZW5kZXJlciAmJiAhcmVuZGVyZXItPnN0eWxlKCktPmNvbGxhcHNlV2hp
dGVTcGFjZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgICAgIAogICAgIFN0cmluZyB0ZXh0ID0g
dGV4dE5vZGUtPmRhdGEoKTsKLSAgICBBU1NFUlQoIXRleHQuaXNFbXB0eSgpKTsKLQotICAgIGlu
dCBvZmZzZXQgPSBwb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwotICAgIC8vIElm
IG5laXRoZXIgdGV4dFtvZmZzZXRdIG5vciB0ZXh0W29mZnNldCAtIDFdIGFyZSBzb21lIGZvcm0g
b2Ygd2hpdGVzcGFjZSwgZG8gbm90aGluZy4KLSAgICBpZiAoIWlzV2hpdGVzcGFjZSh0ZXh0W29m
ZnNldF0pKSB7Ci0gICAgICAgIG9mZnNldC0tOwotICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCAh
aXNXaGl0ZXNwYWNlKHRleHRbb2Zmc2V0XSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIAotICAgIC8vIFNldCB1cHN0cmVhbSBhbmQgZG93bnN0cmVhbSB0byBkZWZpbmUgdGhlIGV4
dGVudCBvZiB0aGUgd2hpdGVzcGFjZSBzdXJyb3VuZGluZyB0ZXh0W29mZnNldF0uCi0gICAgaW50
IHVwc3RyZWFtID0gb2Zmc2V0OwotICAgIHdoaWxlICh1cHN0cmVhbSA+IDAgJiYgaXNXaGl0ZXNw
YWNlKHRleHRbdXBzdHJlYW0gLSAxXSkpCi0gICAgICAgIHVwc3RyZWFtLS07Ci0gICAgCi0gICAg
aW50IGRvd25zdHJlYW0gPSBvZmZzZXQ7Ci0gICAgd2hpbGUgKCh1bnNpZ25lZClkb3duc3RyZWFt
ICsgMSA8IHRleHQubGVuZ3RoKCkgJiYgaXNXaGl0ZXNwYWNlKHRleHRbZG93bnN0cmVhbSArIDFd
KSkKLSAgICAgICAgZG93bnN0cmVhbSsrOwogICAgIAotICAgIGludCBsZW5ndGggPSBkb3duc3Ry
ZWFtIC0gdXBzdHJlYW0gKyAxOwotICAgIEFTU0VSVChsZW5ndGggPiAwKTsKKyAgICB1bnNpZ25l
ZCB1cHN0cmVhbSwgZG93bnN0cmVhbTsKKyAgICBpZiAoIWV4dGVudE9mV2hpdGVzcGFjZUZvclJl
YmFsYW5jaW5nQXQodGV4dE5vZGUsIHBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCks
IHVwc3RyZWFtLCBkb3duc3RyZWFtKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEFTU0VS
VChkb3duc3RyZWFtID4gdXBzdHJlYW0pOworICAgIGludCBsZW5ndGggPSBkb3duc3RyZWFtIC0g
dXBzdHJlYW07CiAgICAgCiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVVcHN0cmVhbVBvcyhQ
b3NpdGlvbihwb3NpdGlvbi5ub2RlKCksIHVwc3RyZWFtKSk7CiAgICAgVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVEb3duc3RyZWFtUG9zKFBvc2l0aW9uKHBvc2l0aW9uLm5vZGUoKSwgZG93bnN0cmVh
bSArIDEpKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAkocmV2aXNp
b24gNTUyMTEpCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDYsOSArMTA2LDMzIEBAIGJvb2wgSW5zZXJ0VGV4dENvbW1hbmQ6OnBl
cmZvcm1Ucml2aWFsUmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbnNlcnRUZXh0Q29t
bWFuZDo6aW5wdXQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkVGV4dCkK
K3ZvaWQgSW5zZXJ0VGV4dENvbW1hbmQ6Omluc2VydFRleHRJbnRvTm9kZUFuZFJlYmFsYW5jZVdo
aXRlc3BhY2UoY29uc3QgU3RyaW5nJiB0ZXh0VG9JbnNlcnQsIFRleHQqIG5vZGUsIHVuc2lnbmVk
IG9mZnNldCkKIHsKKyAgICB1bnNpZ25lZCB3aGl0ZXNwYWNlU3RhcnQsIHdoaXRlc3BhY2VFbmQ7
CisgICAgaWYgKCFleHRlbnRPZldoaXRlc3BhY2VGb3JSZWJhbGFuY2luZ0F0KG5vZGUsIG9mZnNl
dCwgd2hpdGVzcGFjZVN0YXJ0LCB3aGl0ZXNwYWNlRW5kKSkgeworICAgICAgICBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKG5vZGUsIG9mZnNldCkpOworICAgICAgICBT
dHJpbmcgcmViYWxhbmNlZFRleHQgPSBzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2UodGV4
dFRvSW5zZXJ0LCBpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZVBvc2l0aW9uKSwgaXNFbmRPZlBh
cmFncmFwaCh2aXNpYmxlUG9zaXRpb24pKTsKKyAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKG5v
ZGUsIG9mZnNldCwgcmViYWxhbmNlZFRleHQpOworICAgICAgICByZXR1cm47CisgICAgfQogICAg
IAorICAgIEFTU0VSVCh3aGl0ZXNwYWNlRW5kID4gd2hpdGVzcGFjZVN0YXJ0KTsKKyAgICB1bnNp
Z25lZCBsZW5ndGggPSB3aGl0ZXNwYWNlRW5kIC0gd2hpdGVzcGFjZVN0YXJ0OworICAgIFN0cmlu
ZyBzdHJpbmcgPSBub2RlLT5kYXRhKCkuc3Vic3RyaW5nKHdoaXRlc3BhY2VTdGFydCwgbGVuZ3Ro
KTsKKyAgICAKKyAgICAvLyBJbnNlcnQgdGV4dFRvSW5zZXJ0IGludG8gdGhlIHdoaXRlc3BhY2Ug
d2UgZm91bmQuCisgICAgc3RyaW5nLmluc2VydCh0ZXh0VG9JbnNlcnQsIG9mZnNldCAtIHdoaXRl
c3BhY2VTdGFydCk7CisgICAgCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVTdGFydChQb3Np
dGlvbihub2RlLCB3aGl0ZXNwYWNlU3RhcnQpKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZUVuZChQb3NpdGlvbihub2RlLCB3aGl0ZXNwYWNlRW5kICsgdGV4dFRvSW5zZXJ0Lmxlbmd0aCgp
KSk7CisgICAgCisgICAgU3RyaW5nIHJlYmFsYW5jZWRTdHJpbmcgPSBzdHJpbmdXaXRoUmViYWxh
bmNlZFdoaXRlc3BhY2Uoc3RyaW5nLCBpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZVN0YXJ0KSwg
aXNFbmRPZlBhcmFncmFwaCh2aXNpYmxlRW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgcmVwbGFjZVRleHRJbk5v
ZGUobm9kZSwgd2hpdGVzcGFjZVN0YXJ0LCBsZW5ndGgsIHJlYmFsYW5jZWRTdHJpbmcpOworfQor
Cit2b2lkIEluc2VydFRleHRDb21tYW5kOjppbnB1dChjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wg
c2VsZWN0SW5zZXJ0ZWRUZXh0KQorewogICAgIEFTU0VSVCh0ZXh0LmZpbmQoJ1xuJykgPT0gLTEp
OwogCiAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzTm9uZSgpKQpAQCAtMTcwLDE0ICsxOTQs
OSBAQCB2b2lkIEluc2VydFRleHRDb21tYW5kOjppbnB1dChjb25zdCBTdHJpCiAgICAgICAgIFRl
eHQgKnRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCAqPihzdGFydFBvc2l0aW9uLm5vZGUoKSk7
CiAgICAgICAgIGludCBvZmZzZXQgPSBzdGFydFBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCk7CiAKLSAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRleHROb2RlLCBvZmZzZXQsIHRl
eHQpOworICAgICAgICBpbnNlcnRUZXh0SW50b05vZGVBbmRSZWJhbGFuY2VXaGl0ZXNwYWNlKHRl
eHQsIHRleHROb2RlLCBvZmZzZXQpOworICAgICAgICAKICAgICAgICAgZW5kUG9zaXRpb24gPSBQ
b3NpdGlvbih0ZXh0Tm9kZSwgb2Zmc2V0ICsgdGV4dC5sZW5ndGgoKSk7Ci0KLSAgICAgICAgLy8g
VGhlIGluc2VydGlvbiBtYXkgcmVxdWlyZSBhZGp1c3RpbmcgYWRqYWNlbnQgd2hpdGVzcGFjZSwg
aWYgaXQgaXMgcHJlc2VudC4KLSAgICAgICAgcmViYWxhbmNlV2hpdGVzcGFjZUF0KGVuZFBvc2l0
aW9uKTsKLSAgICAgICAgLy8gUmViYWxhbmNpbmcgb24gYm90aCBzaWRlcyBpc24ndCBuZWNlc3Nh
cnkgaWYgd2UndmUgaW5zZXJ0ZWQgYSBzcGFjZS4KLSAgICAgICAgaWYgKHRleHQgIT0gIiAiKSAK
LSAgICAgICAgICAgIHJlYmFsYW5jZVdoaXRlc3BhY2VBdChzdGFydFBvc2l0aW9uKTsKICAgICAg
ICAgICAgIAogICAgICAgICBtX2NoYXJhY3RlcnNBZGRlZCArPSB0ZXh0Lmxlbmd0aCgpOwogICAg
IH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5oCShyZXZpc2lvbiA1NTIxMSkK
KysrIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Miw2ICs1Miw4IEBAIHByaXZhdGU6CiAgICAgUG9zaXRpb24gaW5zZXJ0VGFiKGNvbnN0IFBv
c2l0aW9uJik7CiAgICAgCiAgICAgYm9vbCBwZXJmb3JtVHJpdmlhbFJlcGxhY2UoY29uc3QgU3Ry
aW5nJiwgYm9vbCBzZWxlY3RJbnNlcnRlZFRleHQpOworICAgIAorICAgIHZvaWQgaW5zZXJ0VGV4
dEludG9Ob2RlQW5kUmViYWxhbmNlV2hpdGVzcGFjZShjb25zdCBTdHJpbmcmIHRleHQsIFRleHQq
IG5vZGUsIHVuc2lnbmVkIG9mZnNldCk7CiAKICAgICB1bnNpZ25lZCBtX2NoYXJhY3RlcnNBZGRl
ZDsKIH07CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHJldmlzaW9uIDU1MjExKQorKysg
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI1LDYg
KzQyNSw0MyBAQCBTdHJpbmcgc3RyaW5nV2l0aFJlYmFsYW5jZWRXaGl0ZXNwYWNlKGNvCiAgICAg
cmV0dXJuIHJlYmFsYW5jZWRTdHJpbmc7CiB9CiAKKy8vIEZJWE1FOiBNb3ZlIHRoaXMgaW50byBQ
bGF0Zm9ybVN0cmluZy5oIG9yIFN0cmluZ0ltcGwuaCBhbmQgcmVuYW1lIGl0IHRvIGRpc3Rpbmd1
aXNoIGl0IGZyb20gc2ltaWxhciBmdW5jdGlvbnMuCitzdGF0aWMgaW5saW5lIGJvb2wgaXNXaGl0
ZXNwYWNlKFVDaGFyIGMpCit7CisgICAgcmV0dXJuIGMgPT0gbm9CcmVha1NwYWNlIHx8IGMgPT0g
JyAnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcdCc7Cit9CisKKy8vIEZpbmQgdGhlIGV4dGVudCBv
ZiB3aGl0ZXNwYWNlIGFyb3VuZCBhIHBhcnRpY3VsYXIgb2Zmc2V0LiAgSWYgd2hpdGVzcGFjZSBj
aGFyYWN0ZXJzICgnICcpIGFyZSBwcmVzZXJ2ZWQsIHRoZW4gd2UgZG9uJ3QKKy8vIGRvIHdoaXRl
c3BhY2UgcmViYWxhbmNpbmcgYW5kIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBmYWxzZS4KK2Jvb2wg
ZXh0ZW50T2ZXaGl0ZXNwYWNlRm9yUmViYWxhbmNpbmdBdChQYXNzUmVmUHRyPFRleHQ+IG5vZGUs
IHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQmIHN0YXJ0LCB1bnNpZ25lZCYgZW5kKQoreworICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIGlmIChyZW5k
ZXJlciAmJiAhcmVuZGVyZXItPnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgU3RyaW5nIHRleHQgPSBub2RlLT5kYXRhKCk7Cisg
ICAgCisgICAgc3RhcnQgPSBvZmZzZXQ7CisgICAgZW5kID0gb2Zmc2V0OworICAgIGlmIChvZmZz
ZXQgPT0gdGV4dC5sZW5ndGgoKSB8fCAhaXNXaGl0ZXNwYWNlKHRleHRbb2Zmc2V0XSkpIHsKKyAg
ICAgICAgaWYgKG9mZnNldCA9PSAwIHx8ICFpc1doaXRlc3BhY2UodGV4dFtvZmZzZXQgLSAxXSkp
CisgICAgICAgICAgICAvLyBJZiBuZWl0aGVyIHRleHRbb2Zmc2V0XSBub3IgdGV4dFtvZmZzZXQg
LSAxXSBhcmUgc29tZSBmb3JtIG9mIHdoaXRlc3BhY2UsIG5vIHJlYmFsYW5jaW5nIGlzIG5lY2Vz
c2FyeS4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICAv
LyB0ZXh0W29mZnNldF0gaXMgbm90IHdoaXRlc3BhY2UsIGJ1dCB0ZXh0W29mZnNldCAtIDFdIGlz
LCBhZGp1c3Qgc3RhcnQgYW5kIGVuZCBvZmZzZXRzLgorICAgICAgICBzdGFydCA9IG9mZnNldCAt
IDE7CisgICAgICAgIGVuZCA9IG9mZnNldDsKKyAgICB9CisgICAgCisgICAgd2hpbGUgKHN0YXJ0
ID4gMCAmJiBpc1doaXRlc3BhY2UodGV4dFtzdGFydCAtIDFdKSkKKyAgICAgICAgc3RhcnQtLTsK
KyAgICAgICAgCisgICAgd2hpbGUgKGVuZCA8IHRleHQubGVuZ3RoKCkgJiYgaXNXaGl0ZXNwYWNl
KHRleHRbZW5kXSkpCisgICAgICAgIGVuZCsrOworICAgIAorICAgIHJldHVybiB0cnVlOworfQor
CiBib29sIGlzVGFibGVTdHJ1Y3R1cmVOb2RlKGNvbnN0IE5vZGUgKm5vZGUpCiB7CiAgICAgUmVu
ZGVyT2JqZWN0ICpyID0gbm9kZS0+cmVuZGVyZXIoKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9o
dG1sZWRpdGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5o
CShyZXZpc2lvbiA1NTIxMSkKKysrIFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBQb3NpdGlvbjsK
IGNsYXNzIFJhbmdlOwogY2xhc3MgU3RyaW5nOworY2xhc3MgVGV4dDsKIGNsYXNzIFZpc2libGVQ
b3NpdGlvbjsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAKQEAgLTIyOSw2ICsyMzAsNyBAQCBW
aXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbkZvclBhcmFncmFwaEl0CiAvLyBNaXNjZWxsYW5lb3Vz
IGZ1bmN0aW9ucyBvbiBTdHJpbmcKICAgICAKIFN0cmluZyBzdHJpbmdXaXRoUmViYWxhbmNlZFdo
aXRlc3BhY2UoY29uc3QgU3RyaW5nJiwgYm9vbCwgYm9vbCk7Citib29sIGV4dGVudE9mV2hpdGVz
cGFjZUZvclJlYmFsYW5jaW5nQXQoUGFzc1JlZlB0cjxUZXh0PiBub2RlLCB1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkJiBzdGFydCwgdW5zaWduZWQmIGVuZCk7CiBjb25zdCBTdHJpbmcmIG5vbkJy
ZWFraW5nU3BhY2VTdHJpbmcoKTsKIGJvb2wgdmFsaWRCbG9ja1RhZyhjb25zdCBBdG9taWNTdHJp
bmcmKTsKICAgICAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU1MjQxKQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTAtMDItMjUgIEVucmlj
YSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFeHRyYSBsYXlvdXQgb24ga2V5cHJlc3MgYWZ0ZXIgYSBz
cGFjZSAocHJvYmxlbSB3aXRoIHJlYmFsYW5jZVdoaXRlc3BhY2VBdCBpbiBJbnNlcnRUZXh0Q29t
bWFuZCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MDk0NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzYzOTE4ND4KKworICAgICAgICBUaGVyZSBh
cmUgbm93IHJlZ3VsYXIgc3BhY2VzIHdoZXJlIG5ic3BzIHdlcmUgdXNlZCB1bm5lY2Vzc2FyaWx5
IGJlZm9yZS4gIEFsc28sCisgICAgICAgIG11bHRpLWNoYXJhY3RlciBpbnNlcnRpb25zIG5vdyBo
YXZlIHRoZWlyIHdoaXRlc3BhY2UgcmViYWxhbmNlZCwgYW5kIHRoaXMgaXMKKyAgICAgICAgcmVm
bGVjdGVkIGluIGEgZmV3IHRlc3RzLgorCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC81
MTQyMDEyLTMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL3JlYmFs
YW5jZS13aGl0ZXNwYWNlLTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L2luc2VydGluZy9yZWJhbGFuY2Utd2hpdGVzcGFjZS0xLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvcGFzdGVib2FyZC81NTIxMjM3LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC81NDgyMDIzLWV4cGVjdGVkLmNoZWNrc3VtOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU0ODIwMjMtZXhwZWN0
ZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21t
YW5kLzU0ODIwMjMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5n
L2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLTItZXhwZWN0ZWQuY2hlY2tzdW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmct
Mi1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcv
ZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctZXhwZWN0ZWQuY2hlY2tzdW06CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctZXhw
ZWN0ZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWND
b21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvZWRpdGluZy9pbnNlcnRpbmcvZWRpdGFibGUtaHRtbC1lbGVtZW50LWV4cGVjdGVkLmNo
ZWNrc3VtOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2luc2VydGluZy9lZGl0YWJs
ZS1odG1sLWVsZW1lbnQtZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9lZGl0aW5nL2luc2VydGluZy9lZGl0YWJsZS1odG1sLWVsZW1lbnQtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvNDk4OTc3NC1leHBl
Y3RlZC5jaGVja3N1bToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJk
LzQ5ODk3NzQtZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvNDk4OTc3NC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzQ5ODM4NTgtZXhwZWN0ZWQuY2hlY2tzdW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzQ5ODM4NTgtZXhwZWN0ZWQucG5n
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi80OTgz
ODU4LWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wMi0yNSAgQmVuIE11cmRvY2ggIDxiZW5tQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4u
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUxNDIwMTItMy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC81MTQy
MDEyLTMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1NTIxMSkKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvZXhlY0NvbW1hbmQvNTE0MjAxMi0zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIFRoaXMgdGVzdHMgZm9yIGEgYnVnIHdoZW4gaW5zZXJ0aW5nIGFmdGVyIGEg
bGluayBhdCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudC4gTGlrZSBUZXh0RWRpdCwgd2UgaW5zZXJ0
IGNvbnRlbnQgb3V0c2lkZSBvZiB0aGUgbGluaywgYnV0IGluc2VydGluZyBvdXRzaWRlIG9mIHRo
ZSBsaW5rIHNob3VsZG4ndCBjYXVzZSB0aGUgY29udGVudCB0byBiZSBpbnNlcnRlZCBpbiB0aGUg
d3JvbmcgcGFyYWdyYXBoLgogCiBUaGlzIHBhcmFncmFwaCBzaG91bGQgbm90IGNvbnRhaW5zIGxp
bmtzLgotVGhpcyBzZW50ZW5jZSBzaG91bGQgYmUgYSBsaW5rLsKgVGhpcyBzZW50ZW5jZSBzaG91
bGQgbm90LgotPGEgaHJlZj0iIyI+VGhpcyBzZW50ZW5jZSBzaG91bGQgYmUgYSBsaW5rLjwvYT4m
bmJzcDtUaGlzIHNlbnRlbmNlIHNob3VsZCBub3QuCitUaGlzIHNlbnRlbmNlIHNob3VsZCBiZSBh
IGxpbmsuIFRoaXMgc2VudGVuY2Ugc2hvdWxkIG5vdC4KKzxhIGhyZWY9IiMiPlRoaXMgc2VudGVu
Y2Ugc2hvdWxkIGJlIGEgbGluay48L2E+IFRoaXMgc2VudGVuY2Ugc2hvdWxkIG5vdC4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3JlYmFsYW5jZS13aGl0ZXNwYWNlLTEtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3Jl
YmFsYW5jZS13aGl0ZXNwYWNlLTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmViYWxhbmNlLXdoaXRlc3BhY2UtMS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdHMgd2hpdGVzcGFjZSBy
ZWJhbGFuY2luZyB3aGVuIGluc2VydGluZyBjaGFyYWN0ZXJzIGluIGFuZCBhcm91bmQgYWxyZWFk
eSBiYWxhbmNlZCBzZXF1ZW5jZXMuIEluIGVhY2ggZGl2IGJlbG93LCAyIG9yIG1vcmUgYWRqYWNl
bnQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHNob3VsZCBiZSBhbHRlcm5hdGUgYmV0d2VlbiByZWd1
bGFyIHdoaXRlc3BhY2UgYW5kIG5vbi1icmVha2luZyBzcGFjZXMgKG5vdGUgdGhhdCBlZGl0YWJs
ZSByZWdpb25zIHVzZSAtd2Via2l0LW5ic3AtbW9kZTpzcGFjZSkuCisKK2hlbGxveCB3b3JsZAor
aGVsbG94IMKgd29ybGQKK2hlbGxveCDCoCB3b3JsZAoraGVsbG8geCB3b3JsZAoraGVsbG8gwqB4
IHdvcmxkCitoZWxsbyDCoHggwqB3b3JsZAoraGVsbG8gwqB4IMKgIHdvcmxkCitoZWxsbyDCoCB4
IMKgd29ybGQKK2hlbGxvIMKgIHggwqAgd29ybGQKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGlu
Zy9pbnNlcnRpbmcvcmViYWxhbmNlLXdoaXRlc3BhY2UtMS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3JlYmFsYW5jZS13aGl0ZXNwYWNlLTEuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3JlYmFsYW5jZS13
aGl0ZXNwYWNlLTEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjMgQEAKKzxzY3JpcHQ+
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKworPGRpdiBjb250ZW50RWRpdGFi
bGU9InRydWUiIGlkPSJ0ZXN0MSI+aGVsbG8gd29ybGQ8L2Rpdj4KKzxzY3JpcHQ+CisvLyBUZXN0
IHJlYmFsYW5jaW5nIGEgc2luZ2xlIHNwYWNlIG9uIG9uZSBzaWRlLgordGVzdCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MSIpOwordGV4dCA9IHRlc3QuZmlyc3RDaGlsZDsKK3dpbmRv
dy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXh0LCA1KTsKK2RvY3VtZW50LmV4ZWNDb21t
YW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ4Iik7Cis8L3NjcmlwdD4KKworPGRpdiBjb250ZW50
RWRpdGFibGU9InRydWUiIGlkPSJ0ZXN0MiI+aGVsbG8gd29ybGQ8L2Rpdj4KKzxzY3JpcHQ+Cisv
LyBUZXN0IHJlYmFsYW5jaW5nIHR3byBzcGFjZXMgb24gb25lIHNpZGUuCit0ZXN0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QyIik7Cit0ZXh0ID0gdGVzdC5maXJzdENoaWxkOword2lu
ZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHRleHQsIDUpOworZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIiAiKTsKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5z
ZXRQb3NpdGlvbih0ZXh0LCA1KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0Iiwg
ZmFsc2UsICJ4Iik7Cis8L3NjcmlwdD4KKworPGRpdiBjb250ZW50RWRpdGFibGU9InRydWUiIGlk
PSJ0ZXN0MyI+aGVsbG8gd29ybGQ8L2Rpdj4KKzxzY3JpcHQ+CisvLyBUZXN0IHJlYmFsYW5jaW5n
IHRocmVlIHNwYWNlcyBvbiBvbmUgc2lkZS4KK3Rlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGVzdDMiKTsKK3RleHQgPSB0ZXN0LmZpcnN0Q2hpbGQ7Cit3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuc2V0UG9zaXRpb24odGV4dCwgNSk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4
dCIsIGZhbHNlLCAiICIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxz
ZSwgIiAiKTsKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXh0LCA1KTsKK2Rv
Y3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ4Iik7Cis8L3NjcmlwdD4K
KworPGRpdiBjb250ZW50RWRpdGFibGU9InRydWUiIGlkPSJ0ZXN0NCI+aGVsbG8gd29ybGQ8L2Rp
dj4KKzxzY3JpcHQ+CisvLyBUZXN0IHJlYmFsYW5jaW5nIG9uZSBzcGFjZSBvbiBlaXRoZXIgc2lk
ZSBvZiB0aGUgaW5zZXJ0aW9uLgordGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0
NCIpOwordGV4dCA9IHRlc3QuZmlyc3RDaGlsZDsKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQ
b3NpdGlvbih0ZXh0LCA1KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFs
c2UsICIgIik7Cit3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGV4dCwgNik7Citk
b2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAieCIpOworPC9zY3JpcHQ+
CisKKzxkaXYgY29udGVudEVkaXRhYmxlPSJ0cnVlIiBpZD0idGVzdDUiPmhlbGxvIHdvcmxkPC9k
aXY+Cis8c2NyaXB0PgorLy8gVGVzdCByZWJhbGFuY2luZyB0d28gc3BhY2VzIG9uIG9uZSBzaWRl
IGFuZCBvbmUgc3BhY2Ugb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIGluc2VydGlvbi4KK3Rlc3Qg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDUiKTsKK3RleHQgPSB0ZXN0LmZpcnN0Q2hp
bGQ7Cit3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGV4dCwgNSk7Citkb2N1bWVu
dC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiICIpOworZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIiAiKTsKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5z
ZXRQb3NpdGlvbih0ZXh0LCA3KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0Iiwg
ZmFsc2UsICJ4Iik7Cis8L3NjcmlwdD4KKworPGRpdiBjb250ZW50RWRpdGFibGU9InRydWUiIGlk
PSJ0ZXN0NiI+aGVsbG8gd29ybGQ8L2Rpdj4KKzxzY3JpcHQ+CisvLyBUZXN0IHJlYmFsYW5jaW5n
IHR3byBzcGFjZXMgb24gZWl0aGVyIHNpZGUgb2YgdGhlIGluc2VydGlvbi4KK3Rlc3QgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDYiKTsKK3RleHQgPSB0ZXN0LmZpcnN0Q2hpbGQ7Cit3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGV4dCwgNSk7Citkb2N1bWVudC5leGVj
Q29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiICIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQo
Ikluc2VydFRleHQiLCBmYWxzZSwgIiAiKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRU
ZXh0IiwgZmFsc2UsICIgIik7Cit3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGV4
dCwgNyk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAieCIpOwor
PC9zY3JpcHQ+CisKKzxkaXYgY29udGVudEVkaXRhYmxlPSJ0cnVlIiBpZD0idGVzdDciPmhlbGxv
IHdvcmxkPC9kaXY+Cis8c2NyaXB0PgorLy8gVGVzdCByZWJhbGFuY2luZyB0d28gc3BhY2VzIG9u
IGVpdGhlciBzaWRlIG9mIHRoZSBpbnNlcnRpb24uCit0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3Q3Iik7Cit0ZXh0ID0gdGVzdC5maXJzdENoaWxkOword2luZG93LmdldFNlbGVj
dGlvbigpLnNldFBvc2l0aW9uKHRleHQsIDUpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2Vy
dFRleHQiLCBmYWxzZSwgIiAiKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0Iiwg
ZmFsc2UsICIgIik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAi
ICIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIiAiKTsKK3dp
bmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXh0LCA3KTsKK2RvY3VtZW50LmV4ZWND
b21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ4Iik7Cis8L3NjcmlwdD4KKworPGRpdiBjb250
ZW50RWRpdGFibGU9InRydWUiIGlkPSJ0ZXN0OCI+aGVsbG8gd29ybGQ8L2Rpdj4KKzxzY3JpcHQ+
CisvLyBUZXN0IHJlYmFsYW5jaW5nIHRocmVlIHNwYWNlcyBvbiBvbmUgc2lkZSBhbmQgdHdvIG9u
IHRoZSBvdGhlciBzaWRlIG9mIHRoZSBpbnNlcnRpb24uCit0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3Q4Iik7Cit0ZXh0ID0gdGVzdC5maXJzdENoaWxkOword2luZG93LmdldFNl
bGVjdGlvbigpLnNldFBvc2l0aW9uKHRleHQsIDUpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIklu
c2VydFRleHQiLCBmYWxzZSwgIiAiKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0
IiwgZmFsc2UsICIgIik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNl
LCAiICIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIiAiKTsK
K3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXh0LCA4KTsKK2RvY3VtZW50LmV4
ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ4Iik7Cis8L3NjcmlwdD4KKworPGRpdiBj
b250ZW50RWRpdGFibGU9InRydWUiIGlkPSJ0ZXN0OSI+aGVsbG8gd29ybGQ8L2Rpdj4KKzxzY3Jp
cHQ+CisvLyBUZXN0IHJlYmFsYW5jaW5nIHRocmVlIHNwYWNlcyBvbiBlaXRoZXIgc2lkZSBvZiB0
aGUgaW5zZXJ0aW9uLgordGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0OSIpOwor
dGV4dCA9IHRlc3QuZmlyc3RDaGlsZDsKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlv
bih0ZXh0LCA1KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICIg
Iik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiICIpOworZG9j
dW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIiAiKTsKK2RvY3VtZW50LmV4
ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICIgIik7Citkb2N1bWVudC5leGVjQ29tbWFu
ZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiICIpOword2luZG93LmdldFNlbGVjdGlvbigpLnNldFBv
c2l0aW9uKHRleHQsIDgpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxz
ZSwgIngiKTsKKzwvc2NyaXB0PgorCis8c2NyaXB0PgorZGl2cyA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJkaXYiKTsKK3ZhciBvdXRwdXQgPSAiVGhpcyB0ZXN0cyB3aGl0ZXNwYWNl
IHJlYmFsYW5jaW5nIHdoZW4gaW5zZXJ0aW5nIGNoYXJhY3RlcnMgaW4gYW5kIGFyb3VuZCBhbHJl
YWR5IGJhbGFuY2VkIHNlcXVlbmNlcy4gSW4gZWFjaCBkaXYgYmVsb3csIDIgb3IgbW9yZSBhZGph
Y2VudCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgc2hvdWxkIGJlIGFsdGVybmF0ZSBiZXR3ZWVuIHJl
Z3VsYXIgd2hpdGVzcGFjZSBhbmQgbm9uLWJyZWFraW5nIHNwYWNlcyAobm90ZSB0aGF0IGVkaXRh
YmxlIHJlZ2lvbnMgdXNlIC13ZWJraXQtbmJzcC1tb2RlOnNwYWNlKS5cblxuIjsKK2ZvciAoaSA9
IDA7IGkgPCBkaXZzLmxlbmd0aDsgaSsrKQorICAgIG91dHB1dCArPSBkaXZzW2ldLmlubmVyVGV4
dCArICJcbiI7Citkb2N1bWVudC5ib2R5LmlubmVyVGV4dCA9IG91dHB1dDsKKzwvc2NyaXB0PgpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkLzU1MjEyMzctZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC81NTIxMjM3LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNTUyMTEpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvNTUyMTIzNy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBA
CiBUaGlzIHRlc3RzIGZvciBhIGJ1ZyB3aGVuIHBhc3RpbmcgYSB3b3JkIGNvcGllZCBmcm9tIFRl
eHRFZGl0IGFmdGVyIGEgcmVndWxhciwgYnJlYWtpbmcgc3BhY2UuCiAKLUV2ZXJ5dGhpbmfCoGlu
IHRoaXMgZWRpdGFibGUgcmVnaW9uIHNob3VsZCBiZSBpbiBvbmUgcGFyYWdyYXBoLgorRXZlcnl0
aGluZyBpbiB0aGlzIGVkaXRhYmxlIHJlZ2lvbiBzaG91bGQgYmUgaW4gb25lIHBhcmFncmFwaC4K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU0ODIw
MjMtZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTQ4MjAyMy1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNp
b24gNTUyMTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFu
ZC81NDgyMDIzLWV4cGVjdGVkLmNoZWNrc3VtCSh3b3JraW5nIGNvcHkpCkBAIC0xICsxIEBACi1l
NjczNTdlNTU1MmU1Y2YyZjA2MjQxNmUyZjM1N2ZhNwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKKzcyNzUyMjM2Mjk3YTk5NDgyMDUzZDFiZjA3MzJmYmZlClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1h
bmQvNTQ4MjAyMy1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBt
YXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTQ4MjAyMy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
ZXhlY0NvbW1hbmQvNTQ4MjAyMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDU1MjExKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTQ4MjAyMy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsMTEgKzQsMTAgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCiAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAg
ICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzEKICAgICAgIFJlbmRlckJs
b2NrIHtIMX0gYXQgKDAsMCkgc2l6ZSA3ODR4MTExCi0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDc3OXgxMTEKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgNzg0eDExMQogICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDcyMTog
IlRoaXMgdGVzdHMgZm9yIGEgYnVnIHdoZW4gcGVyZm9ybWluZyBhIEZvcm1hdEJsb2NrIgogICAg
ICAgICAgIHRleHQgcnVuIGF0ICg3MjEsMCkgd2lkdGggODogIiAiCi0gICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMzcpIHdpZHRoIDUxMjogImluc2lkZSBhIGJvZHkgd2l0aCBubyB2aXNpYmxlIGNv
bnRlbnQuICIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNTEyLDM3KSB3aWR0aCAyNTk6ICJUaGlz
IHRleHQgc2hvdWxkIGJlIgotICAgICAgICAgIHRleHQgcnVuIGF0ICg3NzEsMzcpIHdpZHRoIDg6
ICIgIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM3KSB3aWR0aCA3Nzk6ICJpbnNpZGUgYSBi
b2R5IHdpdGggbm8gdmlzaWJsZSBjb250ZW50LiAgVGhpcyB0ZXh0IHNob3VsZCBiZSIKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoNzc5LDM3KSB3aWR0aCA1OiAiICIKICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCw3NCkgd2lkdGggMjg3OiAiaW5zaWRlIGFuIGgxIGVsZW1lbnQuIgogY2FyZXQ6IHBv
c2l0aW9uIDEzMiBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMCB7SDF9IG9mIGNoaWxkIDEg
e0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0dGluZy0yLWV4cGVj
dGVkLmNoZWNrc3VtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLTItZXhwZWN0ZWQuY2hlY2tzdW0JKHJl
dmlzaW9uIDU1MjExKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctMi1leHBlY3RlZC5jaGVja3N1bQkod29ya2luZyBjb3B5
KQpAQCAtMSArMSBAQAotMTNjOTdkYWU1YWUyMGVhNGZiZjM4YjU4NTVmMzg2YjAKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCisxZjMwZTljZjM2MWMyMzRiMTY5MDBhMDQ1OTQ3NDU0NApcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLTItZXhwZWN0ZWQucG5nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjpt
aW1lLXR5cGUgPSBpbWFnZS9wbmcKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLWV4cGVjdGVkLmNoZWNrc3VtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kL3Jl
bW92ZS1mb3JtYXR0aW5nLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiA1NTIxMSkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0
aW5nLWV4cGVjdGVkLmNoZWNrc3VtCSh3b3JraW5nIGNvcHkpCkBAIC0xICsxIEBACi1hMGU1M2Jk
MDNjZWNiOTM5MmMxM2YwZjE2ZTE4Y2IxNQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2Nk
NmEzNTZlMjY0YmJkYmMyM2Q2ODI2ZDMxNGFlMjU5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVt
b3ZlLWZvcm1hdHRpbmctZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZp
bGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1m
b3JtYXR0aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0dGluZy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDU1MjExKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw3ICsyNCw3IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDYzOiAiZm9vYmFyYmF6IgogICAgICAgICBSZW5kZXJCUiB7
QlJ9IGF0ICg2MywxNCkgc2l6ZSAweDAKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDE4KSBzaXplIDcxeDE4Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDcxOiAi
Zm9vXHh7OX1iYXJceHs5fWJheiIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGgg
NzE6ICJmb28gYmFyIGJheiIKICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoNzEsMzIpIHNpemUg
MHgwCiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwzNikgc2l6ZSA2M3gxOAogICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDM2KSB3aWR0aCA2MzogImZvb2JhcmJheiIKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2luc2VydGluZy9lZGl0YWJsZS1odG1sLWVs
ZW1lbnQtZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2VkaXRhYmxlLWh0bWwtZWxlbWVudC1leHBlY3RlZC5j
aGVja3N1bQkocmV2aXNpb24gNTUyMTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRp
dGluZy9pbnNlcnRpbmcvZWRpdGFibGUtaHRtbC1lbGVtZW50LWV4cGVjdGVkLmNoZWNrc3VtCSh3
b3JraW5nIGNvcHkpCkBAIC0xICsxIEBACi1mMTdkODAwMzM0YTU3OTQwNzJhYmJmYzMwOTE2YTI4
YwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzY4NjkwYzk2N2Y3ZjZhODMwMGZmNzg2MjFl
ZjI5ZTVmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2VkaXRhYmxlLWh0bWwtZWxlbWVudC1leHBlY3Rl
ZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkg
dHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2VkaXRhYmxlLWh0bWwtZWxlbWVudC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0
aW5nL2VkaXRhYmxlLWh0bWwtZWxlbWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDU1MjExKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2VkaXRhYmxlLWh0
bWwtZWxlbWVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3LDEwICsxNyw5IEBA
IGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCiAgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4
NTg0CiAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4NHg1NAot
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3ODN4NTQKLSAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3MTQ6ICJUaGlzIHRlc3RzIHRvIG1ha2Ugc3VyZSB0
aGF0IHdoZW4gdGhlIGVuY2xvc2luZyBibG9jayBpcyB0aGUgYm9keSBlbGVtZW50LCBhbmQgd2hl
biB0aGUgaHRtbCBlbGVtZW50IGlzIGVkaXRhYmxlLCAiCi0gICAgICAgICAgdGV4dCBydW4gYXQg
KDcxNCwwKSB3aWR0aCA2NTogImluc2VydGluZyBhIgotICAgICAgICAgIHRleHQgcnVuIGF0ICg3
NzksMCkgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDc4NHg1NAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc4MzogIlRoaXMg
dGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgd2hlbiB0aGUgZW5jbG9zaW5nIGJsb2NrIGlzIHRoZSBi
b2R5IGVsZW1lbnQsIGFuZCB3aGVuIHRoZSBodG1sIGVsZW1lbnQgaXMgZWRpdGFibGUsICBpbnNl
cnRpbmcgYSIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNzgzLDApIHdpZHRoIDE6ICIgIgogICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA3NTE6ICJwYXJhZ3JhcGggc2VwYXJhdG9y
IGRvZXNuJ3Qgc3BsaXQgdGhlIGJvZHkgKGluc2VydGluZyBhIHBhcmFncmFwaCBzZXBhcmF0b3Ig
dXN1YWxseSBzcGxpdHMvY2xvbmVzIHRoZSBlbmNsb3NpbmcgYmxvY2sgZmxvdyIKICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoNzUxLDE4KSB3aWR0aCA0OiAiICIKICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwzNikgd2lkdGggNTg6ICJlbGVtZW50KS4iCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkLzQ5ODk3NzQtZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC80OTg5
Nzc0LWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiA1NTIxMSkKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvNDk4OTc3NC1leHBlY3RlZC5jaGVja3N1bQko
d29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAotMmI4MjAzMzUyZjg3NTQ0MjVlYmYwNGFmZGY5ZmMx
ZGQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisyYWY1MTg0MGRmZDBlNTc1MzE0ZGE3YzZi
ZWZmZjJkNgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvNDk4OTc3NC1leHBlY3RlZC5wbmcKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1p
bWUtdHlwZSA9IGltYWdlL3BuZwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvcGFzdGVib2FyZC80OTg5Nzc0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkLzQ5ODk3NzQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA1NTIxMSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bh
c3RlYm9hcmQvNDk4OTc3NC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcsMTEgKzcs
MTAgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICBSZW5kZXJJbWFnZSB7SU1H
fSBhdCAoNzYsMCkgc2l6ZSA3NngxMDMKICAgICAgIFJlbmRlckltYWdlIHtJTUd9IGF0ICgxNTIs
MCkgc2l6ZSA3NngxMDMKICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDIyOCwxMDMpIHNpemUgMHgw
Ci0gICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMTAzKSBzaXplIDc4NHgzNgotICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwxMDMpIHdpZHRoIDYyOTogIlRoaXMgdGVzdHMgZm9yIGEgYnVnIHdo
ZXJlIGFuIGltYWdlcyBwYXN0ZWQgb24gdGhlIHNhbWUgbGluZSB3b3VsZCBhcHBlYXIgb24gZGlm
ZmVyZW50IGxpbmVzLiAiCi0gICAgICAgIHRleHQgcnVuIGF0ICg2MjksMTAzKSB3aWR0aCAxNTM6
ICJZb3Ugc2hvdWxkIHNlZSBzZXZlcmFsIgotICAgICAgICB0ZXh0IHJ1biBhdCAoNzgyLDEwMykg
d2lkdGggMjogIiAiCi0gICAgICAgIHRleHQgcnVuIGF0ICgwLDEyMSkgd2lkdGggMzA3OiAicGlj
dHVyZXMgYWJvdmUgYWxsIGluIHRoZSBzYW1lIGxpbmUvcGFyYWdyYXBoLiIKKyAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwxMDMpIHNpemUgNzM5eDM2CisgICAgICAgIHRleHQgcnVuIGF0
ICgwLDEwMykgd2lkdGggNzM1OiAiVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgYW4gaW1hZ2Vz
IHBhc3RlZCBvbiB0aGUgc2FtZSBsaW5lIHdvdWxkIGFwcGVhciBvbiBkaWZmZXJlbnQgbGluZXMu
ICBZb3Ugc2hvdWxkIHNlZSIKKyAgICAgICAgdGV4dCBydW4gYXQgKDczNSwxMDMpIHdpZHRoIDQ6
ICIgIgorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxMjEpIHdpZHRoIDM1ODogInNldmVyYWwgcGlj
dHVyZXMgYWJvdmUgYWxsIGluIHRoZSBzYW1lIGxpbmUvcGFyYWdyYXBoLiIKICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgMHgwCiBjYXJldDogcG9zaXRpb24gMTY0IG9mIGNoaWxkIDQgeyN0ZXh0
fSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudApJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzQ5ODM4NTgtZXhwZWN0
ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvc2VsZWN0aW9uLzQ5ODM4NTgtZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDU1MjExKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzQ5ODM4NTgtZXhw
ZWN0ZWQuY2hlY2tzdW0JKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTFlYTc2YmVkM2QxNzdl
N2RlYTYzNGRjMGEzNjU4YzZmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZTIzYjQ3NTdh
MjM1NTkzOGFjYWUxZmZmY2ZiMDczNjIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vNDk4Mzg1OC1leHBl
Y3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5h
cnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzQ5ODM4NTgtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi80OTgzODU4
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTUyMTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9zZWxlY3Rpb24vNDk4Mzg1OC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQsMTEgKzQsOSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgUmVuZGVyQmxv
Y2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAogICAgIFJlbmRlckJvZHkge0JPRFl9IGF0
ICg4LDgpIHNpemUgNzg0eDU4NAogICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAs
MCkgc2l6ZSA3ODR4MzYKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
NzcyeDM2Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTcwOiAiVGhpcyB0ZXN0
cyBmb3IgYSBidWcgd2hlcmUgc2VsZWN0aW5nIGEgd29yZCB3b3VsZCBzZWxlY3QgdGhlIGxpbmUg
YnJlYWsgYW5kIHdvcmQgYmVmb3JlIGl0LiAiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDU3MCww
KSB3aWR0aCAxMzU6ICJPbmx5IHRoZSB3b3JkIGluIHRoZSAiCi0gICAgICAgICAgdGV4dCBydW4g
YXQgKDcwNSwwKSB3aWR0aCA2MzogInBhcmFncmFwaCIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAo
NzY4LDApIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSA3ODB4MzYKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NzY6ICJUaGlz
IHRlc3RzIGZvciBhIGJ1ZyB3aGVyZSBzZWxlY3RpbmcgYSB3b3JkIHdvdWxkIHNlbGVjdCB0aGUg
bGluZSBicmVhayBhbmQgd29yZCBiZWZvcmUgaXQuICBPbmx5IHRoZSB3b3JkIGluIHRoZSAgcGFy
YWdyYXBoIgorICAgICAgICAgIHRleHQgcnVuIGF0ICg3NzYsMCkgd2lkdGggNDogIiAiCiAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDE2MjogImJlbG93IHNob3VsZCBiZSBzZWxl
Y3RlZDoiCiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAogICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzYpIHNpemUgNzg0eDE4Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49510</attachid>
            <date>2010-02-25 10:27:36 -0800</date>
            <delta_ts>2011-06-18 11:26:09 -0700</delta_ts>
            <desc>Patch3</desc>
            <filename>bug7639184.txt</filename>
            <type>text/plain</type>
            <size>29508</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTI0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDItMjUgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
eHRyYSBsYXlvdXQgb24ga2V5cHJlc3MgYWZ0ZXIgYSBzcGFjZSAocHJvYmxlbSB3aXRoIHJlYmFs
YW5jZVdoaXRlc3BhY2VBdCBpbiBJbnNlcnRUZXh0Q29tbWFuZCkuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDk0NgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNzYzOTE4ND4KKworICAgICAgICBEbyB0ZXh0IGluc2VydGlvbiBhbmQgd2hpdGVzcGFj
ZSByZWJhbGFuY2luZyBhcm91bmQgdGhlIGluc2VydGlvbiBpbiBvbmUgc3RlcCBzbyB0aGF0IHRo
ZXJlJ3Mgb25seSBvbmUgbGF5b3V0LgorICAgICAgICBUaGlzIHBhdGNoIHdhcyBvcmlnaW5hbGx5
IG1hZGUgYnkgSnVzdGluIEdhcmNpYS4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6IGVkaXRpbmcv
aW5zZXJ0aW5nL3JlYmFsYW5jZS13aGl0ZXNwYWNlLTEuaHRtbAorCisgICAgICAgICogZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdGVzcGFjZUF0KTogTm8gYmVoYXZpb3IgY2hhbmdlcyBo
ZXJlLAorICAgICAgICBqdXN0IHB1c2hlZCB0aGUgY29kZSB0aGF0IGRldGVybWluZWQgdGhlIGV4
dGVudCBvZiB3aGl0ZXNwYWNlIHN1cnJvdW5kaW5nIGEgcG9zaXRpb24KKyAgICAgICAgdG8gaXRz
IG93biBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgICogZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRUZXh0Q29tbWFuZDo6aW5zZXJ0VGV4dElu
dG9Ob2RlQW5kUmViYWxhbmNlV2hpdGVzcGFjZSk6IEFkZGVkLiAgRmluZCAKKyAgICAgICAgd2hp
dGVzcGFjZSBzdXJyb3VuZGluZyB0aGUgaW5zZXJ0aW9uIHBvc2l0aW9uLCBhZGQgdGhlIHRleHQg
dG8gaW5zZXJ0LCByZWJhbGFuY2UgdGhhdCBlbnRpcmUKKyAgICAgICAgc3RyaW5nLCB0aGVuIGlu
c2VydCBpdCBpbnRvIHRoZSBkb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRleHRD
b21tYW5kOjppbnB1dCk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5oOgor
ICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNX
aGl0ZXNwYWNlKTogTW92ZWQgZnJvbSBDb21wb3NpdGVFZGl0Q29tbWFuZC5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpleHRlbnRPZldoaXRlc3BhY2VGb3JSZWJhbGFuY2luZ0F0KTogTW92ZWQgY29k
ZSBmcm9tIHJlYmFsYW5jZVdoaXRlc3BhY2VBdCBpbnRvIHRoaXMgaGVscGVyCisgICAgICAgIGZ1
bmN0aW9uLiAgT2J0YWlucyB0aGUgb2Zmc2V0IG9mIHRoZSBzdGFydCBhbmQgZW5kIG9mIHdoaXRl
c3BhY2UgYXJvdW5kIGEgcGFydGljdWxhciBwb3NpdGlvbi4KKyAgICAgICAgKiBlZGl0aW5nL2h0
bWxlZGl0aW5nLmg6CisKIDIwMTAtMDItMjUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDog
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiA1NTIxMSkK
KysrIFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4NSwxMSArMzg1LDYgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c2V0Tm9k
ZUF0dHJpYgogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFNldE5vZGVBdHRyaWJ1dGVDb21t
YW5kOjpjcmVhdGUoZWxlbWVudCwgYXR0cmlidXRlLCB2YWx1ZSkpOwogfQogCi1zdGF0aWMgaW5s
aW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIGMgPT0gbm9CcmVh
a1NwYWNlIHx8IGMgPT0gJyAnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcdCc7Ci19Ci0KIC8vIEZJ
WE1FOiBEb2Vzbid0IGdvIGludG8gdGV4dCBub2RlcyB0aGF0IGNvbnRyaWJ1dGUgYWRqYWNlbnQg
dGV4dCAoc2libGluZ3MsIGNvdXNpbnMsIGV0YykuCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5k
OjpyZWJhbGFuY2VXaGl0ZXNwYWNlQXQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogewpAQCAt
Mzk4LDM0ICszOTMsMTQgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hp
dAogICAgICAgICByZXR1cm47CiAgICAgVGV4dCogdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0
Kj4obm9kZSk7CiAgICAgCi0gICAgaWYgKHRleHROb2RlLT5sZW5ndGgoKSA9PSAwKQotICAgICAg
ICByZXR1cm47Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRleHROb2RlLT5yZW5kZXJl
cigpOwotICAgIGlmIChyZW5kZXJlciAmJiAhcmVuZGVyZXItPnN0eWxlKCktPmNvbGxhcHNlV2hp
dGVTcGFjZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgICAgIAogICAgIFN0cmluZyB0ZXh0ID0g
dGV4dE5vZGUtPmRhdGEoKTsKLSAgICBBU1NFUlQoIXRleHQuaXNFbXB0eSgpKTsKLQotICAgIGlu
dCBvZmZzZXQgPSBwb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwotICAgIC8vIElm
IG5laXRoZXIgdGV4dFtvZmZzZXRdIG5vciB0ZXh0W29mZnNldCAtIDFdIGFyZSBzb21lIGZvcm0g
b2Ygd2hpdGVzcGFjZSwgZG8gbm90aGluZy4KLSAgICBpZiAoIWlzV2hpdGVzcGFjZSh0ZXh0W29m
ZnNldF0pKSB7Ci0gICAgICAgIG9mZnNldC0tOwotICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCAh
aXNXaGl0ZXNwYWNlKHRleHRbb2Zmc2V0XSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIAotICAgIC8vIFNldCB1cHN0cmVhbSBhbmQgZG93bnN0cmVhbSB0byBkZWZpbmUgdGhlIGV4
dGVudCBvZiB0aGUgd2hpdGVzcGFjZSBzdXJyb3VuZGluZyB0ZXh0W29mZnNldF0uCi0gICAgaW50
IHVwc3RyZWFtID0gb2Zmc2V0OwotICAgIHdoaWxlICh1cHN0cmVhbSA+IDAgJiYgaXNXaGl0ZXNw
YWNlKHRleHRbdXBzdHJlYW0gLSAxXSkpCi0gICAgICAgIHVwc3RyZWFtLS07Ci0gICAgCi0gICAg
aW50IGRvd25zdHJlYW0gPSBvZmZzZXQ7Ci0gICAgd2hpbGUgKCh1bnNpZ25lZClkb3duc3RyZWFt
ICsgMSA8IHRleHQubGVuZ3RoKCkgJiYgaXNXaGl0ZXNwYWNlKHRleHRbZG93bnN0cmVhbSArIDFd
KSkKLSAgICAgICAgZG93bnN0cmVhbSsrOwogICAgIAotICAgIGludCBsZW5ndGggPSBkb3duc3Ry
ZWFtIC0gdXBzdHJlYW0gKyAxOwotICAgIEFTU0VSVChsZW5ndGggPiAwKTsKKyAgICB1bnNpZ25l
ZCB1cHN0cmVhbSwgZG93bnN0cmVhbTsKKyAgICBpZiAoIWV4dGVudE9mV2hpdGVzcGFjZUZvclJl
YmFsYW5jaW5nQXQodGV4dE5vZGUsIHBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCks
IHVwc3RyZWFtLCBkb3duc3RyZWFtKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEFTU0VS
VChkb3duc3RyZWFtID4gdXBzdHJlYW0pOworICAgIGludCBsZW5ndGggPSBkb3duc3RyZWFtIC0g
dXBzdHJlYW07CiAgICAgCiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVVcHN0cmVhbVBvcyhQ
b3NpdGlvbihwb3NpdGlvbi5ub2RlKCksIHVwc3RyZWFtKSk7CiAgICAgVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVEb3duc3RyZWFtUG9zKFBvc2l0aW9uKHBvc2l0aW9uLm5vZGUoKSwgZG93bnN0cmVh
bSArIDEpKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAkocmV2aXNp
b24gNTUyMTEpCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDYsOSArMTA2LDMzIEBAIGJvb2wgSW5zZXJ0VGV4dENvbW1hbmQ6OnBl
cmZvcm1Ucml2aWFsUmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbnNlcnRUZXh0Q29t
bWFuZDo6aW5wdXQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkVGV4dCkK
K3ZvaWQgSW5zZXJ0VGV4dENvbW1hbmQ6Omluc2VydFRleHRJbnRvTm9kZUFuZFJlYmFsYW5jZVdo
aXRlc3BhY2UoY29uc3QgU3RyaW5nJiB0ZXh0VG9JbnNlcnQsIFRleHQqIG5vZGUsIHVuc2lnbmVk
IG9mZnNldCkKIHsKKyAgICB1bnNpZ25lZCB3aGl0ZXNwYWNlU3RhcnQsIHdoaXRlc3BhY2VFbmQ7
CisgICAgaWYgKCFleHRlbnRPZldoaXRlc3BhY2VGb3JSZWJhbGFuY2luZ0F0KG5vZGUsIG9mZnNl
dCwgd2hpdGVzcGFjZVN0YXJ0LCB3aGl0ZXNwYWNlRW5kKSkgeworICAgICAgICBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKG5vZGUsIG9mZnNldCkpOworICAgICAgICBT
dHJpbmcgcmViYWxhbmNlZFRleHQgPSBzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2UodGV4
dFRvSW5zZXJ0LCBpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZVBvc2l0aW9uKSwgaXNFbmRPZlBh
cmFncmFwaCh2aXNpYmxlUG9zaXRpb24pKTsKKyAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKG5v
ZGUsIG9mZnNldCwgcmViYWxhbmNlZFRleHQpOworICAgICAgICByZXR1cm47CisgICAgfQogICAg
IAorICAgIEFTU0VSVCh3aGl0ZXNwYWNlRW5kID4gd2hpdGVzcGFjZVN0YXJ0KTsKKyAgICB1bnNp
Z25lZCBsZW5ndGggPSB3aGl0ZXNwYWNlRW5kIC0gd2hpdGVzcGFjZVN0YXJ0OworICAgIFN0cmlu
ZyBzdHJpbmcgPSBub2RlLT5kYXRhKCkuc3Vic3RyaW5nKHdoaXRlc3BhY2VTdGFydCwgbGVuZ3Ro
KTsKKyAgICAKKyAgICAvLyBJbnNlcnQgdGV4dFRvSW5zZXJ0IGludG8gdGhlIHdoaXRlc3BhY2Ug
d2UgZm91bmQuCisgICAgc3RyaW5nLmluc2VydCh0ZXh0VG9JbnNlcnQsIG9mZnNldCAtIHdoaXRl
c3BhY2VTdGFydCk7CisgICAgCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVTdGFydChQb3Np
dGlvbihub2RlLCB3aGl0ZXNwYWNlU3RhcnQpKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZUVuZChQb3NpdGlvbihub2RlLCB3aGl0ZXNwYWNlRW5kICsgdGV4dFRvSW5zZXJ0Lmxlbmd0aCgp
KSk7CisgICAgCisgICAgU3RyaW5nIHJlYmFsYW5jZWRTdHJpbmcgPSBzdHJpbmdXaXRoUmViYWxh
bmNlZFdoaXRlc3BhY2Uoc3RyaW5nLCBpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZVN0YXJ0KSwg
aXNFbmRPZlBhcmFncmFwaCh2aXNpYmxlRW5kKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgcmVwbGFjZVRleHRJbk5v
ZGUobm9kZSwgd2hpdGVzcGFjZVN0YXJ0LCBsZW5ndGgsIHJlYmFsYW5jZWRTdHJpbmcpOworfQor
Cit2b2lkIEluc2VydFRleHRDb21tYW5kOjppbnB1dChjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wg
c2VsZWN0SW5zZXJ0ZWRUZXh0KQorewogICAgIEFTU0VSVCh0ZXh0LmZpbmQoJ1xuJykgPT0gLTEp
OwogCiAgICAgaWYgKGVuZGluZ1NlbGVjdGlvbigpLmlzTm9uZSgpKQpAQCAtMTcwLDE0ICsxOTQs
OSBAQCB2b2lkIEluc2VydFRleHRDb21tYW5kOjppbnB1dChjb25zdCBTdHJpCiAgICAgICAgIFRl
eHQgKnRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCAqPihzdGFydFBvc2l0aW9uLm5vZGUoKSk7
CiAgICAgICAgIGludCBvZmZzZXQgPSBzdGFydFBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCk7CiAKLSAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRleHROb2RlLCBvZmZzZXQsIHRl
eHQpOworICAgICAgICBpbnNlcnRUZXh0SW50b05vZGVBbmRSZWJhbGFuY2VXaGl0ZXNwYWNlKHRl
eHQsIHRleHROb2RlLCBvZmZzZXQpOworICAgICAgICAKICAgICAgICAgZW5kUG9zaXRpb24gPSBQ
b3NpdGlvbih0ZXh0Tm9kZSwgb2Zmc2V0ICsgdGV4dC5sZW5ndGgoKSk7Ci0KLSAgICAgICAgLy8g
VGhlIGluc2VydGlvbiBtYXkgcmVxdWlyZSBhZGp1c3RpbmcgYWRqYWNlbnQgd2hpdGVzcGFjZSwg
aWYgaXQgaXMgcHJlc2VudC4KLSAgICAgICAgcmViYWxhbmNlV2hpdGVzcGFjZUF0KGVuZFBvc2l0
aW9uKTsKLSAgICAgICAgLy8gUmViYWxhbmNpbmcgb24gYm90aCBzaWRlcyBpc24ndCBuZWNlc3Nh
cnkgaWYgd2UndmUgaW5zZXJ0ZWQgYSBzcGFjZS4KLSAgICAgICAgaWYgKHRleHQgIT0gIiAiKSAK
LSAgICAgICAgICAgIHJlYmFsYW5jZVdoaXRlc3BhY2VBdChzdGFydFBvc2l0aW9uKTsKICAgICAg
ICAgICAgIAogICAgICAgICBtX2NoYXJhY3RlcnNBZGRlZCArPSB0ZXh0Lmxlbmd0aCgpOwogICAg
IH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5oCShyZXZpc2lvbiA1NTIxMSkK
KysrIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Miw2ICs1Miw4IEBAIHByaXZhdGU6CiAgICAgUG9zaXRpb24gaW5zZXJ0VGFiKGNvbnN0IFBv
c2l0aW9uJik7CiAgICAgCiAgICAgYm9vbCBwZXJmb3JtVHJpdmlhbFJlcGxhY2UoY29uc3QgU3Ry
aW5nJiwgYm9vbCBzZWxlY3RJbnNlcnRlZFRleHQpOworICAgIAorICAgIHZvaWQgaW5zZXJ0VGV4
dEludG9Ob2RlQW5kUmViYWxhbmNlV2hpdGVzcGFjZShjb25zdCBTdHJpbmcmIHRleHQsIFRleHQq
IG5vZGUsIHVuc2lnbmVkIG9mZnNldCk7CiAKICAgICB1bnNpZ25lZCBtX2NoYXJhY3RlcnNBZGRl
ZDsKIH07CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHJldmlzaW9uIDU1MjExKQorKysg
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI1LDYg
KzQyNSw0MyBAQCBTdHJpbmcgc3RyaW5nV2l0aFJlYmFsYW5jZWRXaGl0ZXNwYWNlKGNvCiAgICAg
cmV0dXJuIHJlYmFsYW5jZWRTdHJpbmc7CiB9CiAKKy8vIEZJWE1FOiBNb3ZlIHRoaXMgaW50byBQ
bGF0Zm9ybVN0cmluZy5oIG9yIFN0cmluZ0ltcGwuaCBhbmQgcmVuYW1lIGl0IHRvIGRpc3Rpbmd1
aXNoIGl0IGZyb20gc2ltaWxhciBmdW5jdGlvbnMuCitzdGF0aWMgaW5saW5lIGJvb2wgaXNXaGl0
ZXNwYWNlKFVDaGFyIGMpCit7CisgICAgcmV0dXJuIGMgPT0gbm9CcmVha1NwYWNlIHx8IGMgPT0g
JyAnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcdCc7Cit9CisKKy8vIEZpbmQgdGhlIGV4dGVudCBv
ZiB3aGl0ZXNwYWNlIGFyb3VuZCBhIHBhcnRpY3VsYXIgb2Zmc2V0LiAgSWYgd2hpdGVzcGFjZSBj
aGFyYWN0ZXJzICgnICcpIGFyZSBwcmVzZXJ2ZWQsIHRoZW4gd2UgZG9uJ3QKKy8vIGRvIHdoaXRl
c3BhY2UgcmViYWxhbmNpbmcgYW5kIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBmYWxzZS4KK2Jvb2wg
ZXh0ZW50T2ZXaGl0ZXNwYWNlRm9yUmViYWxhbmNpbmdBdChQYXNzUmVmUHRyPFRleHQ+IG5vZGUs
IHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQmIHN0YXJ0LCB1bnNpZ25lZCYgZW5kKQoreworICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIGlmIChyZW5k
ZXJlciAmJiAhcmVuZGVyZXItPnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgU3RyaW5nIHRleHQgPSBub2RlLT5kYXRhKCk7Cisg
ICAgCisgICAgc3RhcnQgPSBvZmZzZXQ7CisgICAgZW5kID0gb2Zmc2V0OworICAgIGlmIChvZmZz
ZXQgPT0gdGV4dC5sZW5ndGgoKSB8fCAhaXNXaGl0ZXNwYWNlKHRleHRbb2Zmc2V0XSkpIHsKKyAg
ICAgICAgaWYgKCFvZmZzZXQgfHwgIWlzV2hpdGVzcGFjZSh0ZXh0W29mZnNldCAtIDFdKSkKKyAg
ICAgICAgICAgIC8vIElmIG5laXRoZXIgdGV4dFtvZmZzZXRdIG5vciB0ZXh0W29mZnNldCAtIDFd
IGFyZSBzb21lIGZvcm0gb2Ygd2hpdGVzcGFjZSwgbm8gcmViYWxhbmNpbmcgaXMgbmVjZXNzYXJ5
LgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgCisgICAgICAgIC8vIHRl
eHRbb2Zmc2V0XSBpcyBub3Qgd2hpdGVzcGFjZSwgYnV0IHRleHRbb2Zmc2V0IC0gMV0gaXMsIGFk
anVzdCBzdGFydCBhbmQgZW5kIG9mZnNldHMuCisgICAgICAgIHN0YXJ0ID0gb2Zmc2V0IC0gMTsK
KyAgICAgICAgZW5kID0gb2Zmc2V0OworICAgIH0KKyAgICAKKyAgICB3aGlsZSAoc3RhcnQgPiAw
ICYmIGlzV2hpdGVzcGFjZSh0ZXh0W3N0YXJ0IC0gMV0pKQorICAgICAgICBzdGFydC0tOworICAg
ICAgICAKKyAgICB3aGlsZSAoZW5kIDwgdGV4dC5sZW5ndGgoKSAmJiBpc1doaXRlc3BhY2UodGV4
dFtlbmRdKSkKKyAgICAgICAgZW5kKys7CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJv
b2wgaXNUYWJsZVN0cnVjdHVyZU5vZGUoY29uc3QgTm9kZSAqbm9kZSkKIHsKICAgICBSZW5kZXJP
YmplY3QgKnIgPSBub2RlLT5yZW5kZXJlcigpOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL2h0bWxl
ZGl0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHJl
dmlzaW9uIDU1MjExKQorKysgV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFBvc2l0aW9uOwogY2xh
c3MgUmFuZ2U7CiBjbGFzcyBTdHJpbmc7CitjbGFzcyBUZXh0OwogY2xhc3MgVmlzaWJsZVBvc2l0
aW9uOwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIApAQCAtMjI5LDYgKzIzMCw3IEBAIFZpc2li
bGVTZWxlY3Rpb24gc2VsZWN0aW9uRm9yUGFyYWdyYXBoSXQKIC8vIE1pc2NlbGxhbmVvdXMgZnVu
Y3Rpb25zIG9uIFN0cmluZwogICAgIAogU3RyaW5nIHN0cmluZ1dpdGhSZWJhbGFuY2VkV2hpdGVz
cGFjZShjb25zdCBTdHJpbmcmLCBib29sLCBib29sKTsKK2Jvb2wgZXh0ZW50T2ZXaGl0ZXNwYWNl
Rm9yUmViYWxhbmNpbmdBdChQYXNzUmVmUHRyPFRleHQ+IG5vZGUsIHVuc2lnbmVkIG9mZnNldCwg
dW5zaWduZWQmIHN0YXJ0LCB1bnNpZ25lZCYgZW5kKTsKIGNvbnN0IFN0cmluZyYgbm9uQnJlYWtp
bmdTcGFjZVN0cmluZygpOwogYm9vbCB2YWxpZEJsb2NrVGFnKGNvbnN0IEF0b21pY1N0cmluZyYp
OwogICAgIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTUyNDEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0wMi0yNSAgRW5yaWNhIENh
c3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEV4dHJhIGxheW91dCBvbiBrZXlwcmVzcyBhZnRlciBhIHNwYWNl
IChwcm9ibGVtIHdpdGggcmViYWxhbmNlV2hpdGVzcGFjZUF0IGluIEluc2VydFRleHRDb21tYW5k
KS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwOTQ2
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjM5MTg0PgorCisgICAgICAgIFRoZXJlIGFyZSBu
b3cgcmVndWxhciBzcGFjZXMgd2hlcmUgbmJzcHMgd2VyZSB1c2VkIHVubmVjZXNzYXJpbHkgYmVm
b3JlLiAgQWxzbywKKyAgICAgICAgbXVsdGktY2hhcmFjdGVyIGluc2VydGlvbnMgbm93IGhhdmUg
dGhlaXIgd2hpdGVzcGFjZSByZWJhbGFuY2VkLCBhbmQgdGhpcyBpcworICAgICAgICByZWZsZWN0
ZWQgaW4gYSBmZXcgdGVzdHMuCisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kLzUxNDIw
MTItMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9pbnNlcnRpbmcvcmViYWxhbmNl
LXdoaXRlc3BhY2UtMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW5z
ZXJ0aW5nL3JlYmFsYW5jZS13aGl0ZXNwYWNlLTEuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy9wYXN0ZWJvYXJkLzU1MjEyMzctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU0ODIwMjMtZXhwZWN0ZWQuY2hlY2tzdW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTQ4MjAyMy1leHBlY3RlZC5w
bmc6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQv
NTQ4MjAyMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctMi1leHBlY3RlZC5jaGVja3N1bToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0dGluZy0yLWV4
cGVjdGVkLnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVj
Q29tbWFuZC9yZW1vdmUtZm9ybWF0dGluZy1leHBlY3RlZC5jaGVja3N1bToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0dGluZy1leHBlY3Rl
ZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1h
bmQvcmVtb3ZlLWZvcm1hdHRpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9lZGl0aW5nL2luc2VydGluZy9lZGl0YWJsZS1odG1sLWVsZW1lbnQtZXhwZWN0ZWQuY2hlY2tz
dW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2VkaXRhYmxlLWh0
bWwtZWxlbWVudC1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2VkaXRpbmcvaW5zZXJ0aW5nL2VkaXRhYmxlLWh0bWwtZWxlbWVudC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC80OTg5Nzc0LWV4cGVjdGVk
LmNoZWNrc3VtOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvNDk4
OTc3NC1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRp
bmcvcGFzdGVib2FyZC80OTg5Nzc0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvZWRpdGluZy9zZWxlY3Rpb24vNDk4Mzg1OC1leHBlY3RlZC5jaGVja3N1bToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vNDk4Mzg1OC1leHBlY3RlZC5wbmc6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzQ5ODM4NTgt
ZXhwZWN0ZWQudHh0OgorCiAyMDEwLTAyLTI1ICBCZW4gTXVyZG9jaCAgPGJlbm1AZ29vZ2xlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5k
ZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTE0MjAxMi0zLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUxNDIwMTIt
My1leHBlY3RlZC50eHQJKHJldmlzaW9uIDU1MjExKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC81MTQyMDEyLTMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlbiBpbnNlcnRpbmcgYWZ0ZXIgYSBsaW5r
IGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50LiBMaWtlIFRleHRFZGl0LCB3ZSBpbnNlcnQgY29u
dGVudCBvdXRzaWRlIG9mIHRoZSBsaW5rLCBidXQgaW5zZXJ0aW5nIG91dHNpZGUgb2YgdGhlIGxp
bmsgc2hvdWxkbid0IGNhdXNlIHRoZSBjb250ZW50IHRvIGJlIGluc2VydGVkIGluIHRoZSB3cm9u
ZyBwYXJhZ3JhcGguCiAKIFRoaXMgcGFyYWdyYXBoIHNob3VsZCBub3QgY29udGFpbnMgbGlua3Mu
Ci1UaGlzIHNlbnRlbmNlIHNob3VsZCBiZSBhIGxpbmsuwqBUaGlzIHNlbnRlbmNlIHNob3VsZCBu
b3QuCi08YSBocmVmPSIjIj5UaGlzIHNlbnRlbmNlIHNob3VsZCBiZSBhIGxpbmsuPC9hPiZuYnNw
O1RoaXMgc2VudGVuY2Ugc2hvdWxkIG5vdC4KK1RoaXMgc2VudGVuY2Ugc2hvdWxkIGJlIGEgbGlu
ay4gVGhpcyBzZW50ZW5jZSBzaG91bGQgbm90LgorPGEgaHJlZj0iIyI+VGhpcyBzZW50ZW5jZSBz
aG91bGQgYmUgYSBsaW5rLjwvYT4gVGhpcyBzZW50ZW5jZSBzaG91bGQgbm90LgpJbmRleDogTGF5
b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmViYWxhbmNlLXdoaXRlc3BhY2UtMS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmViYWxh
bmNlLXdoaXRlc3BhY2UtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL2luc2VydGluZy9yZWJhbGFuY2Utd2hpdGVzcGFjZS0xLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0cyB3aGl0ZXNwYWNlIHJlYmFs
YW5jaW5nIHdoZW4gaW5zZXJ0aW5nIGNoYXJhY3RlcnMgaW4gYW5kIGFyb3VuZCBhbHJlYWR5IGJh
bGFuY2VkIHNlcXVlbmNlcy4gSW4gZWFjaCBkaXYgYmVsb3csIDIgb3IgbW9yZSBhZGphY2VudCB3
aGl0ZXNwYWNlIGNoYXJhY3RlcnMgc2hvdWxkIGJlIGFsdGVybmF0ZSBiZXR3ZWVuIHJlZ3VsYXIg
d2hpdGVzcGFjZSBhbmQgbm9uLWJyZWFraW5nIHNwYWNlcyAobm90ZSB0aGF0IGVkaXRhYmxlIHJl
Z2lvbnMgdXNlIC13ZWJraXQtbmJzcC1tb2RlOnNwYWNlKS4KKworaGVsbG94IHdvcmxkCitoZWxs
b3ggwqB3b3JsZAoraGVsbG94IMKgIHdvcmxkCitoZWxsbyB4IHdvcmxkCitoZWxsbyDCoHggd29y
bGQKK2hlbGxvIMKgeCDCoHdvcmxkCitoZWxsbyDCoHggwqAgd29ybGQKK2hlbGxvIMKgIHggwqB3
b3JsZAoraGVsbG8gwqAgeCDCoCB3b3JsZAorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2lu
c2VydGluZy9yZWJhbGFuY2Utd2hpdGVzcGFjZS0xLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmViYWxhbmNlLXdoaXRlc3BhY2UtMS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcmViYWxhbmNlLXdoaXRl
c3BhY2UtMS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMyBAQAorPHNjcmlwdD4KK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorCis8ZGl2IGNvbnRlbnRFZGl0YWJsZT0i
dHJ1ZSIgaWQ9InRlc3QxIj5oZWxsbyB3b3JsZDwvZGl2PgorPHNjcmlwdD4KKy8vIFRlc3QgcmVi
YWxhbmNpbmcgYSBzaW5nbGUgc3BhY2Ugb24gb25lIHNpZGUuCit0ZXN0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRlc3QxIik7Cit0ZXh0ID0gdGVzdC5maXJzdENoaWxkOword2luZG93Lmdl
dFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHRleHQsIDUpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQo
Ikluc2VydFRleHQiLCBmYWxzZSwgIngiKTsKKzwvc2NyaXB0PgorCis8ZGl2IGNvbnRlbnRFZGl0
YWJsZT0idHJ1ZSIgaWQ9InRlc3QyIj5oZWxsbyB3b3JsZDwvZGl2PgorPHNjcmlwdD4KKy8vIFRl
c3QgcmViYWxhbmNpbmcgdHdvIHNwYWNlcyBvbiBvbmUgc2lkZS4KK3Rlc3QgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdDIiKTsKK3RleHQgPSB0ZXN0LmZpcnN0Q2hpbGQ7Cit3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGV4dCwgNSk7Citkb2N1bWVudC5leGVjQ29tbWFu
ZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiICIpOword2luZG93LmdldFNlbGVjdGlvbigpLnNldFBv
c2l0aW9uKHRleHQsIDUpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxz
ZSwgIngiKTsKKzwvc2NyaXB0PgorCis8ZGl2IGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSIgaWQ9InRl
c3QzIj5oZWxsbyB3b3JsZDwvZGl2PgorPHNjcmlwdD4KKy8vIFRlc3QgcmViYWxhbmNpbmcgdGhy
ZWUgc3BhY2VzIG9uIG9uZSBzaWRlLgordGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXN0MyIpOwordGV4dCA9IHRlc3QuZmlyc3RDaGlsZDsKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5z
ZXRQb3NpdGlvbih0ZXh0LCA1KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0Iiwg
ZmFsc2UsICIgIik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAi
ICIpOword2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHRleHQsIDUpOworZG9jdW1l
bnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIngiKTsKKzwvc2NyaXB0PgorCis8
ZGl2IGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSIgaWQ9InRlc3Q0Ij5oZWxsbyB3b3JsZDwvZGl2Pgor
PHNjcmlwdD4KKy8vIFRlc3QgcmViYWxhbmNpbmcgb25lIHNwYWNlIG9uIGVpdGhlciBzaWRlIG9m
IHRoZSBpbnNlcnRpb24uCit0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Q0Iik7
Cit0ZXh0ID0gdGVzdC5maXJzdENoaWxkOword2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0
aW9uKHRleHQsIDUpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwg
IiAiKTsKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXh0LCA2KTsKK2RvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ4Iik7Cis8L3NjcmlwdD4KKwor
PGRpdiBjb250ZW50RWRpdGFibGU9InRydWUiIGlkPSJ0ZXN0NSI+aGVsbG8gd29ybGQ8L2Rpdj4K
KzxzY3JpcHQ+CisvLyBUZXN0IHJlYmFsYW5jaW5nIHR3byBzcGFjZXMgb24gb25lIHNpZGUgYW5k
IG9uZSBzcGFjZSBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgaW5zZXJ0aW9uLgordGVzdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0NSIpOwordGV4dCA9IHRlc3QuZmlyc3RDaGlsZDsK
K3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXh0LCA1KTsKK2RvY3VtZW50LmV4
ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICIgIik7Citkb2N1bWVudC5leGVjQ29tbWFu
ZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiICIpOword2luZG93LmdldFNlbGVjdGlvbigpLnNldFBv
c2l0aW9uKHRleHQsIDcpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxz
ZSwgIngiKTsKKzwvc2NyaXB0PgorCis8ZGl2IGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSIgaWQ9InRl
c3Q2Ij5oZWxsbyB3b3JsZDwvZGl2PgorPHNjcmlwdD4KKy8vIFRlc3QgcmViYWxhbmNpbmcgdHdv
IHNwYWNlcyBvbiBlaXRoZXIgc2lkZSBvZiB0aGUgaW5zZXJ0aW9uLgordGVzdCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0NiIpOwordGV4dCA9IHRlc3QuZmlyc3RDaGlsZDsKK3dpbmRv
dy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXh0LCA1KTsKK2RvY3VtZW50LmV4ZWNDb21t
YW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICIgIik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5z
ZXJ0VGV4dCIsIGZhbHNlLCAiICIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQi
LCBmYWxzZSwgIiAiKTsKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXh0LCA3
KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJ4Iik7Cis8L3Nj
cmlwdD4KKworPGRpdiBjb250ZW50RWRpdGFibGU9InRydWUiIGlkPSJ0ZXN0NyI+aGVsbG8gd29y
bGQ8L2Rpdj4KKzxzY3JpcHQ+CisvLyBUZXN0IHJlYmFsYW5jaW5nIHR3byBzcGFjZXMgb24gZWl0
aGVyIHNpZGUgb2YgdGhlIGluc2VydGlvbi4KK3Rlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGVzdDciKTsKK3RleHQgPSB0ZXN0LmZpcnN0Q2hpbGQ7Cit3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuc2V0UG9zaXRpb24odGV4dCwgNSk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4
dCIsIGZhbHNlLCAiICIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxz
ZSwgIiAiKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICIgIik7
Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiICIpOword2luZG93
LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHRleHQsIDcpOworZG9jdW1lbnQuZXhlY0NvbW1h
bmQoIkluc2VydFRleHQiLCBmYWxzZSwgIngiKTsKKzwvc2NyaXB0PgorCis8ZGl2IGNvbnRlbnRF
ZGl0YWJsZT0idHJ1ZSIgaWQ9InRlc3Q4Ij5oZWxsbyB3b3JsZDwvZGl2PgorPHNjcmlwdD4KKy8v
IFRlc3QgcmViYWxhbmNpbmcgdGhyZWUgc3BhY2VzIG9uIG9uZSBzaWRlIGFuZCB0d28gb24gdGhl
IG90aGVyIHNpZGUgb2YgdGhlIGluc2VydGlvbi4KK3Rlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdDgiKTsKK3RleHQgPSB0ZXN0LmZpcnN0Q2hpbGQ7Cit3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuc2V0UG9zaXRpb24odGV4dCwgNSk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0
VGV4dCIsIGZhbHNlLCAiICIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBm
YWxzZSwgIiAiKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICIg
Iik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiICIpOword2lu
ZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHRleHQsIDgpOworZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIngiKTsKKzwvc2NyaXB0PgorCis8ZGl2IGNvbnRl
bnRFZGl0YWJsZT0idHJ1ZSIgaWQ9InRlc3Q5Ij5oZWxsbyB3b3JsZDwvZGl2PgorPHNjcmlwdD4K
Ky8vIFRlc3QgcmViYWxhbmNpbmcgdGhyZWUgc3BhY2VzIG9uIGVpdGhlciBzaWRlIG9mIHRoZSBp
bnNlcnRpb24uCit0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Q5Iik7Cit0ZXh0
ID0gdGVzdC5maXJzdENoaWxkOword2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHRl
eHQsIDUpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIiAiKTsK
K2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICIgIik7Citkb2N1bWVu
dC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiICIpOworZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIiAiKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJ
bnNlcnRUZXh0IiwgZmFsc2UsICIgIik7Cit3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRp
b24odGV4dCwgOCk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAi
eCIpOworPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitkaXZzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImRpdiIpOwordmFyIG91dHB1dCA9ICJUaGlzIHRlc3RzIHdoaXRlc3BhY2UgcmVi
YWxhbmNpbmcgd2hlbiBpbnNlcnRpbmcgY2hhcmFjdGVycyBpbiBhbmQgYXJvdW5kIGFscmVhZHkg
YmFsYW5jZWQgc2VxdWVuY2VzLiBJbiBlYWNoIGRpdiBiZWxvdywgMiBvciBtb3JlIGFkamFjZW50
IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBzaG91bGQgYmUgYWx0ZXJuYXRlIGJldHdlZW4gcmVndWxh
ciB3aGl0ZXNwYWNlIGFuZCBub24tYnJlYWtpbmcgc3BhY2VzIChub3RlIHRoYXQgZWRpdGFibGUg
cmVnaW9ucyB1c2UgLXdlYmtpdC1uYnNwLW1vZGU6c3BhY2UpLlxuXG4iOworZm9yIChpID0gMDsg
aSA8IGRpdnMubGVuZ3RoOyBpKyspCisgICAgb3V0cHV0ICs9IGRpdnNbaV0uaW5uZXJUZXh0ICsg
IlxuIjsKK2RvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gb3V0cHV0OworPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvNTUyMTIzNy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkLzU1MjEyMzctZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA1NTIxMSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC81NTIxMjM3LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMgQEAKIFRo
aXMgdGVzdHMgZm9yIGEgYnVnIHdoZW4gcGFzdGluZyBhIHdvcmQgY29waWVkIGZyb20gVGV4dEVk
aXQgYWZ0ZXIgYSByZWd1bGFyLCBicmVha2luZyBzcGFjZS4KIAotRXZlcnl0aGluZ8KgaW4gdGhp
cyBlZGl0YWJsZSByZWdpb24gc2hvdWxkIGJlIGluIG9uZSBwYXJhZ3JhcGguCitFdmVyeXRoaW5n
IGluIHRoaXMgZWRpdGFibGUgcmVnaW9uIHNob3VsZCBiZSBpbiBvbmUgcGFyYWdyYXBoLgpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTQ4MjAyMy1l
eHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9leGVjQ29tbWFuZC81NDgyMDIzLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiA1
NTIxMSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU0
ODIwMjMtZXhwZWN0ZWQuY2hlY2tzdW0JKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLWU2NzM1
N2U1NTUyZTVjZjJmMDYyNDE2ZTJmMzU3ZmE3ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor
NzI3NTIyMzYyOTdhOTk0ODIwNTNkMWJmMDczMmZiZmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC81
NDgyMDIzLWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtl
ZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC81NDgyMDIzLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVj
Q29tbWFuZC81NDgyMDIzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTUyMTEpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC81NDgyMDIzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNCwxMSArNCwxMCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAogICAgIFJl
bmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3MQogICAgICAgUmVuZGVyQmxvY2sg
e0gxfSBhdCAoMCwwKSBzaXplIDc4NHgxMTEKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgNzc5eDExMQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSA3ODR4MTExCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzIxOiAiVGhp
cyB0ZXN0cyBmb3IgYSBidWcgd2hlbiBwZXJmb3JtaW5nIGEgRm9ybWF0QmxvY2siCiAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDcyMSwwKSB3aWR0aCA4OiAiICIKLSAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwzNykgd2lkdGggNTEyOiAiaW5zaWRlIGEgYm9keSB3aXRoIG5vIHZpc2libGUgY29udGVu
dC4gIgotICAgICAgICAgIHRleHQgcnVuIGF0ICg1MTIsMzcpIHdpZHRoIDI1OTogIlRoaXMgdGV4
dCBzaG91bGQgYmUiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDc3MSwzNykgd2lkdGggODogIiAi
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzcpIHdpZHRoIDc3OTogImluc2lkZSBhIGJvZHkg
d2l0aCBubyB2aXNpYmxlIGNvbnRlbnQuICBUaGlzIHRleHQgc2hvdWxkIGJlIgorICAgICAgICAg
IHRleHQgcnVuIGF0ICg3NzksMzcpIHdpZHRoIDU6ICIgIgogICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDc0KSB3aWR0aCAyODc6ICJpbnNpZGUgYW4gaDEgZWxlbWVudC4iCiBjYXJldDogcG9zaXRp
b24gMTMyIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtIMX0gb2YgY2hpbGQgMSB7Qk9E
WX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLTItZXhwZWN0ZWQu
Y2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
ZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctMi1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNp
b24gNTUyMTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFu
ZC9yZW1vdmUtZm9ybWF0dGluZy0yLWV4cGVjdGVkLmNoZWNrc3VtCSh3b3JraW5nIGNvcHkpCkBA
IC0xICsxIEBACi0xM2M5N2RhZTVhZTIwZWE0ZmJmMzhiNTg1NWYzODZiMApcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKKzFmMzBlOWNmMzYxYzIzNGIxNjkwMGEwNDU5NDc0NTQ0ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctMi1leHBlY3RlZC5wbmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUt
dHlwZSA9IGltYWdlL3BuZwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
ZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3Zl
LWZvcm1hdHRpbmctZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDU1MjExKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmct
ZXhwZWN0ZWQuY2hlY2tzdW0JKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLWEwZTUzYmQwM2Nl
Y2I5MzkyYzEzZjBmMTZlMThjYjE1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorY2Q2YTM1
NmUyNjRiYmRiYzIzZDY4MjZkMzE0YWUyNTkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUt
Zm9ybWF0dGluZy1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBt
YXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1h
dHRpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gNTUyMTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29t
bWFuZC9yZW1vdmUtZm9ybWF0dGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggNjM6ICJmb29iYXJiYXoiCiAgICAgICAgIFJlbmRlckJSIHtCUn0g
YXQgKDYzLDE0KSBzaXplIDB4MAogICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMTgp
IHNpemUgNzF4MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggNzE6ICJmb29c
eHs5fWJhclx4ezl9YmF6IgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA3MTog
ImZvbyBiYXIgYmF6IgogICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg3MSwzMikgc2l6ZSAweDAK
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDM2KSBzaXplIDYzeDE4CiAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMzYpIHdpZHRoIDYzOiAiZm9vYmFyYmF6IgpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2VkaXRhYmxlLWh0bWwtZWxlbWVu
dC1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9pbnNlcnRpbmcvZWRpdGFibGUtaHRtbC1lbGVtZW50LWV4cGVjdGVkLmNoZWNr
c3VtCShyZXZpc2lvbiA1NTIxMSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L2luc2VydGluZy9lZGl0YWJsZS1odG1sLWVsZW1lbnQtZXhwZWN0ZWQuY2hlY2tzdW0JKHdvcmtp
bmcgY29weSkKQEAgLTEgKzEgQEAKLWYxN2Q4MDAzMzRhNTc5NDA3MmFiYmZjMzA5MTZhMjhjClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorNjg2OTBjOTY3ZjdmNmE4MzAwZmY3ODYyMWVmMjll
NWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9pbnNlcnRpbmcvZWRpdGFibGUtaHRtbC1lbGVtZW50LWV4cGVjdGVkLnBu
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBl
Lgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9pbnNlcnRpbmcvZWRpdGFibGUtaHRtbC1lbGVtZW50LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnNlcnRpbmcv
ZWRpdGFibGUtaHRtbC1lbGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTUyMTEpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnNlcnRpbmcvZWRpdGFibGUtaHRtbC1l
bGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTcsMTAgKzE3LDkgQEAgbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKICAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQK
ICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgNzg0eDU0Ci0gICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc4M3g1NAotICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDcxNDogIlRoaXMgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQg
d2hlbiB0aGUgZW5jbG9zaW5nIGJsb2NrIGlzIHRoZSBib2R5IGVsZW1lbnQsIGFuZCB3aGVuIHRo
ZSBodG1sIGVsZW1lbnQgaXMgZWRpdGFibGUsICIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNzE0
LDApIHdpZHRoIDY1OiAiaW5zZXJ0aW5nIGEiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDc3OSww
KSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
Nzg0eDU0CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzgzOiAiVGhpcyB0ZXN0
cyB0byBtYWtlIHN1cmUgdGhhdCB3aGVuIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgdGhlIGJvZHkg
ZWxlbWVudCwgYW5kIHdoZW4gdGhlIGh0bWwgZWxlbWVudCBpcyBlZGl0YWJsZSwgIGluc2VydGlu
ZyBhIgorICAgICAgICAgIHRleHQgcnVuIGF0ICg3ODMsMCkgd2lkdGggMTogIiAiCiAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDc1MTogInBhcmFncmFwaCBzZXBhcmF0b3IgZG9l
c24ndCBzcGxpdCB0aGUgYm9keSAoaW5zZXJ0aW5nIGEgcGFyYWdyYXBoIHNlcGFyYXRvciB1c3Vh
bGx5IHNwbGl0cy9jbG9uZXMgdGhlIGVuY2xvc2luZyBibG9jayBmbG93IgogICAgICAgICAgIHRl
eHQgcnVuIGF0ICg3NTEsMTgpIHdpZHRoIDQ6ICIgIgogICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDM2KSB3aWR0aCA1ODogImVsZW1lbnQpLiIKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL3Bhc3RlYm9hcmQvNDk4OTc3NC1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkLzQ5ODk3NzQt
ZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDU1MjExKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC80OTg5Nzc0LWV4cGVjdGVkLmNoZWNrc3VtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xICsxIEBACi0yYjgyMDMzNTJmODc1NDQyNWViZjA0YWZkZjlmYzFkZApc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzJhZjUxODQwZGZkMGU1NzUzMTRkYTdjNmJlZmZm
MmQ2ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC80OTg5Nzc0LWV4cGVjdGVkLnBuZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10
eXBlID0gaW1hZ2UvcG5nCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9w
YXN0ZWJvYXJkLzQ5ODk3NzQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvNDk4OTc3NC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDU1MjExKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVi
b2FyZC80OTg5Nzc0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNywxMSArNywxMCBA
QCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgIFJlbmRlckltYWdlIHtJTUd9IGF0
ICg3NiwwKSBzaXplIDc2eDEwMwogICAgICAgUmVuZGVySW1hZ2Uge0lNR30gYXQgKDE1MiwwKSBz
aXplIDc2eDEwMwogICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMjI4LDEwMykgc2l6ZSAweDAKLSAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxMDMpIHNpemUgNzg0eDM2Ci0gICAgICAgIHRl
eHQgcnVuIGF0ICgwLDEwMykgd2lkdGggNjI5OiAiVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUg
YW4gaW1hZ2VzIHBhc3RlZCBvbiB0aGUgc2FtZSBsaW5lIHdvdWxkIGFwcGVhciBvbiBkaWZmZXJl
bnQgbGluZXMuICIKLSAgICAgICAgdGV4dCBydW4gYXQgKDYyOSwxMDMpIHdpZHRoIDE1MzogIllv
dSBzaG91bGQgc2VlIHNldmVyYWwiCi0gICAgICAgIHRleHQgcnVuIGF0ICg3ODIsMTAzKSB3aWR0
aCAyOiAiICIKLSAgICAgICAgdGV4dCBydW4gYXQgKDAsMTIxKSB3aWR0aCAzMDc6ICJwaWN0dXJl
cyBhYm92ZSBhbGwgaW4gdGhlIHNhbWUgbGluZS9wYXJhZ3JhcGguIgorICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDEwMykgc2l6ZSA3Mzl4MzYKKyAgICAgICAgdGV4dCBydW4gYXQgKDAs
MTAzKSB3aWR0aCA3MzU6ICJUaGlzIHRlc3RzIGZvciBhIGJ1ZyB3aGVyZSBhbiBpbWFnZXMgcGFz
dGVkIG9uIHRoZSBzYW1lIGxpbmUgd291bGQgYXBwZWFyIG9uIGRpZmZlcmVudCBsaW5lcy4gIFlv
dSBzaG91bGQgc2VlIgorICAgICAgICB0ZXh0IHJ1biBhdCAoNzM1LDEwMykgd2lkdGggNDogIiAi
CisgICAgICAgIHRleHQgcnVuIGF0ICgwLDEyMSkgd2lkdGggMzU4OiAic2V2ZXJhbCBwaWN0dXJl
cyBhYm92ZSBhbGwgaW4gdGhlIHNhbWUgbGluZS9wYXJhZ3JhcGguIgogICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCiAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAweDAKIGNhcmV0OiBwb3NpdGlvbiAxNjQgb2YgY2hpbGQgNCB7I3RleHR9IG9m
IGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vNDk4Mzg1OC1leHBlY3RlZC5j
aGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9z
ZWxlY3Rpb24vNDk4Mzg1OC1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gNTUyMTEpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vNDk4Mzg1OC1leHBlY3Rl
ZC5jaGVja3N1bQkod29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAotMWVhNzZiZWQzZDE3N2U3ZGVh
NjM0ZGMwYTM2NThjNmYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitlMjNiNDc1N2EyMzU1
OTM4YWNhZTFmZmZjZmIwNzM2MgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi80OTgzODU4LWV4cGVjdGVk
LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0
eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vNDk4Mzg1OC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uLzQ5ODM4NTgtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA1NTIxMSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL3NlbGVjdGlvbi80OTgzODU4LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NCwxMSArNCw5IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICBSZW5kZXJCbG9jayB7
SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgs
OCkgc2l6ZSA3ODR4NTg0CiAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBz
aXplIDc4NHgzNgotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NzJ4
MzYKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1NzA6ICJUaGlzIHRlc3RzIGZv
ciBhIGJ1ZyB3aGVyZSBzZWxlY3RpbmcgYSB3b3JkIHdvdWxkIHNlbGVjdCB0aGUgbGluZSBicmVh
ayBhbmQgd29yZCBiZWZvcmUgaXQuICIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNTcwLDApIHdp
ZHRoIDEzNTogIk9ubHkgdGhlIHdvcmQgaW4gdGhlICIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAo
NzA1LDApIHdpZHRoIDYzOiAicGFyYWdyYXBoIgotICAgICAgICAgIHRleHQgcnVuIGF0ICg3Njgs
MCkgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDc4MHgzNgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc3NjogIlRoaXMgdGVz
dHMgZm9yIGEgYnVnIHdoZXJlIHNlbGVjdGluZyBhIHdvcmQgd291bGQgc2VsZWN0IHRoZSBsaW5l
IGJyZWFrIGFuZCB3b3JkIGJlZm9yZSBpdC4gIE9ubHkgdGhlIHdvcmQgaW4gdGhlICBwYXJhZ3Jh
cGgiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDc3NiwwKSB3aWR0aCA0OiAiICIKICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMTYyOiAiYmVsb3cgc2hvdWxkIGJlIHNlbGVjdGVk
OiIKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCiAgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzNikgc2l6ZSA3ODR4MTgK
</data>

          </attachment>
      

    </bug>

</bugzilla>