<?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>29697</bug_id>
          
          <creation_ts>2009-09-23 15:20:04 -0700</creation_ts>
          <short_desc>REGRESSION: Copy is copying incorrect background-color</short_desc>
          <delta_ts>2009-10-23 12:01:03 -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>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>GoogleBug, InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julie Parent">jparent</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>adele</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>149520</commentid>
    <comment_count>0</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2009-09-23 15:20:04 -0700</bug_when>
    <thetext>Copy from an element with an ancestor that has background-color, inside an html element with a different background-color is copying the background-color from the html element rather than the ancestor.

Repro steps:
1. Go to http://www.plexode.com/cgi-bin/eval3.py#ht=%3Cstyle%3E%0Ahtml%20%7B%0A%20%20background-color%3A%20purple%3B%0A%7D%0A%3C%2Fstyle%3E%0A%3Cdiv%20style%3D%22background-color%3Agreen%22%3E%3Cdiv%3ECopy%20me%3C%2Fdiv%3E%3C%2Fdiv%3E%0A%0A%3Cdiv%20style%3D&apos;background-color%3Awhite&apos;%20contentEditable%3EPaste%20here%3C%2Fdiv%3E&amp;ohh=1&amp;ohj=1&amp;jt=&amp;ojh=1&amp;ojj=1&amp;ms=100&amp;oth=0&amp;otj=0&amp;cex=1
2. Copy &quot;Copy me&quot;.
3. Paste in &quot;Paste here&quot;

Result: The &quot;Copy me&quot; text has the background color of the html element, not the background color it had in the original source
Expected Result: &quot;Copy me&quot; keeps the background color it had

Verified in Webkit Nightly Mac r48680, Webkit Nightly Windows r48679, and Chrome Windows 4.0.211.4.  Does not reproduce in Safari Windows 4.0.3

You can also observe this in Google Docs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149531</commentid>
    <comment_count>1</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2009-09-23 15:50:37 -0700</bug_when>
    <thetext>Does not repro in Mac nightly at r46969.  Does repro in Mac nightly at r47011.

If I had to guess, I&apos;d guess http://trac.webkit.org/changeset/47008 is the cause.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149535</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-09-23 15:55:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/7248529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149645</commentid>
    <comment_count>3</comment_count>
      <attachid>40041</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-09-23 20:36:45 -0700</bug_when>
    <thetext>Created attachment 40041
Adds a dumpAsText test to reproduce the bug

This patch adds a dumpAsText test that reproduces the bug.  It seems like it&apos;s a bug with createMarkup (not verified yet).  It seems like we&apos;re overriding the style inherited by the ancestor elements by that of the document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149669</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-09-23 22:57:02 -0700</bug_when>
    <thetext>Did some investigation.  The background color is rgba(0,0,0,0) at
http://trac.webkit.org/browser/trunk/WebCore/editing/markup.cpp#L1007

We should change the editingStyleAtPosition so that it returns the actual background color instead of CSS value.

Adele, is there a function in renderer that returns the effective background color?

+adele</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149680</commentid>
    <comment_count>5</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2009-09-23 23:17:45 -0700</bug_when>
    <thetext>No, there isn&apos;t.  Enrica had been looking into a similar issue with applying the right style when inserting paragraphs.  She hit the same problem where the computed style doesn&apos;t include the real backgound color.  Maybe her fix for that will shed light on how to fix this too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149682</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-09-23 23:22:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; No, there isn&apos;t.  Enrica had been looking into a similar issue with applying
&gt; the right style when inserting paragraphs.  She hit the same problem where the
&gt; computed style doesn&apos;t include the real backgound color.  Maybe her fix for
&gt; that will shed light on how to fix this too.

I see.  I considered several options for this over summer, one of which was to traverse the tree backwards to compute the color.  But this is problematic when an element is positioned with absolute positioning (i.e. element overflows the parent), or when the background has an alpha value that&apos;s neither 0 nor 255.

Maybe we should see what Firefox / MSIE do and mimic their behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153774</commentid>
    <comment_count>7</comment_count>
      <attachid>40966</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2009-10-09 15:04:37 -0700</bug_when>
    <thetext>Created attachment 40966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153778</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-10-09 15:13:37 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=40966) [details]
&gt; Patch

This patch looks great but is background color preserved with indentation /
outdentation with your approach?

Also doesn&apos;t your approach imply that we clone b, i, etc... elements even when
styleWithCSS is set to true?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153779</commentid>
    <comment_count>9</comment_count>
      <attachid>40966</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-09 15:14:01 -0700</bug_when>
    <thetext>Comment on attachment 40966
Patch

Rejecting patch 40966 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;]&quot; exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 11411 test cases.
editing/execCommand/indent-with-style.html -&gt; failed

Exiting early after 1 failures. 3719 tests run.
62.46s total testing time

3718 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
1 test case (&lt;1%) had stderr output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153781</commentid>
    <comment_count>10</comment_count>
      <attachid>40966</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-09 15:22:00 -0700</bug_when>
    <thetext>Comment on attachment 40966
Patch

Either this is a real failure, or the bots were simply behind?  bug 30098.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153782</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-09 15:22:45 -0700</bug_when>
    <thetext>If you believe this was incorrectly rejected from the queue, please feel free to add it again. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153813</commentid>
    <comment_count>12</comment_count>
      <attachid>40975</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2009-10-09 17:03:42 -0700</bug_when>
    <thetext>Created attachment 40975
Patch2 

Adding to the queue one more time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153828</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-10-09 18:34:06 -0700</bug_when>
    <thetext>Does WebKit copy the background color when copying text to clipboard with this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153833</commentid>
    <comment_count>14</comment_count>
      <attachid>40966</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-09 19:32:02 -0700</bug_when>
    <thetext>Comment on attachment 40966
Patch

It looks like there is no difference between this and the new &quot;patch2&quot;, so I&apos;m setting cq+ on this one.  cq+ is ignored unless there is also a review+ on the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153945</commentid>
    <comment_count>15</comment_count>
      <attachid>40966</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-11 15:52:02 -0700</bug_when>
    <thetext>Comment on attachment 40966
Patch

Rejecting patch 40966 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;]&quot; exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 11418 test cases.
editing/execCommand/indent-with-style.html -&gt; failed

Exiting early after 1 failures. 3719 tests run.
56.67s total testing time

3718 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
1 test case (&lt;1%) had stderr output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154795</commentid>
    <comment_count>16</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2009-10-15 07:40:11 -0700</bug_when>
    <thetext>This patch is no longer valid. I&apos;m working on a new patch that solves the problem once and for all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155947</commentid>
    <comment_count>17</comment_count>
      <attachid>40966</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-19 15:17:23 -0700</bug_when>
    <thetext>Comment on attachment 40966
Patch

Clearing adele&apos;s r+ and marking this patch as obsolete since Enrica has said it is no longer valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156223</commentid>
    <comment_count>18</comment_count>
      <attachid>41516</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2009-10-20 11:48:15 -0700</bug_when>
    <thetext>Created attachment 41516
Patch3

This patch changes significantly the way Indent is performed, by using an improved version of moveParagraph called moveParagraphWithClones.
The idea behind this is to preserve as much as possible the original markup of the paragraph being indented.
I plan on changing the outdent part of the command in a future patch as well as the implementation of the InsertList command.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156269</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-10-20 13:13:30 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; This patch changes significantly the way Indent is performed, by using an
&gt; improved version of moveParagraph called moveParagraphWithClones.

Very nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156303</commentid>
    <comment_count>20</comment_count>
      <attachid>41516</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-10-20 14:35:07 -0700</bug_when>
    <thetext>Comment on attachment 41516
Patch3

I remember us talking about moving originals, not clones.  Is there any advantage to eventually doing that?  We&apos;d lose the ability to rely on DeleteSelectionCommand for removal.

+        if (item-&gt;isTextNode())
+            child = static_cast&lt;Element*&gt;(((Node *)item)-&gt;cloneNode(true).get());
+        else if (isTableElement(item))
+            child = item-&gt;cloneElementWithChildren();
+        else
+            child = item-&gt;cloneElementWithoutChildren();

Hmm.  What if the DOM is:

&lt;div&gt;&lt;textnode 1&gt;&lt;textnode 2&gt;&lt;/div&gt;

startNode is the textnode 1.  Will textnode 2 be cloned and put in the hierarchy?


&gt; +// the hierarchy with all the children.
&gt; +// If case startNode and outerBlock differ, we clone each none in between individually

Typo: &quot;If case startNode and outerBlock differ&quot;.


&gt; +    for (size_t i = ancestors.size(); i != 0; --i) {
&gt; +        Element* item = ancestors[i - 1];

Little odd that i is not the array index.  Why not loop from i = ancestors.size - 1 while i &gt; 0?


&gt; This tests indenting an empty paragraph with bold already applied to it. The word below should be bold.
&gt;-&lt;blockquote class=&quot;webkit-indent-blockquote&quot; style=&quot;margin: 0 0 0 40px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;Bold&lt;/b&gt;&lt;/blockquote&gt;
&gt;+&lt;blockquote class=&quot;webkit-indent-blockquote&quot; style=&quot;margin: 0 0 0 40px; border: none; padding: 0px;&quot;&gt;&lt;div&gt;&lt;b&gt;Bold&lt;/b&gt;&lt;/div&gt;&lt;/blockquote&gt;

It seems OK that we&apos;re preserving the block that originally contained the paragraph in this case, but is it always?  You may need to parameterize this behavior...I know that at least for deletion we wouldn&apos;t want it.


+    void moveParagraphWithClones(const VisiblePosition&amp;, const VisiblePosition&amp;, Node*, Node*);

I know that elsewhere in this file we&apos;re bad about this, but...I think you should name the parameters here, since they aren&apos;t obvious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156311</commentid>
    <comment_count>21</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2009-10-20 15:25:56 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 41516 [details])
&gt; I remember us talking about moving originals, not clones.  Is there any
&gt; advantage to eventually doing that?  We&apos;d lose the ability to rely on
&gt; DeleteSelectionCommand for removal.

I&apos;m not sure I understand your point here. The new implementation uses DeleteSelectionCommand (otherwise undo won&apos;t work)
but preserves the existing markup, instead of trying to create a new markup to reproduce the style at the position. The computed style does not represent with 100% accuracy the appearance of the element at the position (i.e. when you have a span wth bg color and a font tag with fontcolor).

&gt; 
&gt; +        if (item-&gt;isTextNode())
&gt; +            child = static_cast&lt;Element*&gt;(((Node
&gt; *)item)-&gt;cloneNode(true).get());
&gt; +        else if (isTableElement(item))
&gt; +            child = item-&gt;cloneElementWithChildren();
&gt; +        else
&gt; +            child = item-&gt;cloneElementWithoutChildren();
&gt; 
&gt; Hmm.  What if the DOM is:
&gt; 
&gt; &lt;div&gt;&lt;textnode 1&gt;&lt;textnode 2&gt;&lt;/div&gt;
&gt; 
&gt; startNode is the textnode 1.  Will textnode 2 be cloned and put in the
&gt; hierarchy?
&gt;

No, in this case it clones without children. If you have something like that, we produce
&lt;blockquote class... style=&quot;margin....&quot;&gt;&lt;div&gt;&lt;text node1&gt;&lt;/div&gt;&lt;div&gt;&lt;textnode 2&gt;&lt;/div&gt;&lt;blockquote&gt;.
This is the only case I could find where we create an additional div tag.
The ultimate goal I have is to change the way Indent is implemented, and do something similar to what the align command
does. It will try to find the nearest enclosing block for the selection and simply change the style of the block.
(See  moveParagraphContentsToNewBlockIfNecessary in CompositeEditCommand)
In this case something like

&lt;div&gt;
       Hello
      &lt;br&gt;
      World
      &lt;br&gt;
     Today
&lt;/div&gt;

where the selection is the first two paragraphs, will be changed by the indent command into:

&lt;div style=&quot;margin 0 0 0 40px;&quot;&gt;
       Hello
      &lt;br&gt;
      World
 &lt;/div&gt;
 &lt;div&gt;
      Today
  &lt;/div&gt;


&gt; 
&gt; &gt; +// the hierarchy with all the children.
&gt; &gt; +// If case startNode and outerBlock differ, we clone each none in between individually
&gt; 
&gt; Typo: &quot;If case startNode and outerBlock differ&quot;.
&gt;

Ok.
 
&gt; 
&gt; &gt; +    for (size_t i = ancestors.size(); i != 0; --i) {
&gt; &gt; +        Element* item = ancestors[i - 1];
&gt; 
&gt; Little odd that i is not the array index.  Why not loop from i = ancestors.size
&gt; - 1 while i &gt; 0?
&gt;

I agree. I&apos;ll change it.
 
&gt; 
&gt; &gt; This tests indenting an empty paragraph with bold already applied to it. The word below should be bold.
&gt; &gt;-&lt;blockquote class=&quot;webkit-indent-blockquote&quot; style=&quot;margin: 0 0 0 40px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;Bold&lt;/b&gt;&lt;/blockquote&gt;
&gt; &gt;+&lt;blockquote class=&quot;webkit-indent-blockquote&quot; style=&quot;margin: 0 0 0 40px; border: none; padding: 0px;&quot;&gt;&lt;div&gt;&lt;b&gt;Bold&lt;/b&gt;&lt;/div&gt;&lt;/blockquote&gt;
&gt; 
&gt; It seems OK that we&apos;re preserving the block that originally contained the
&gt; paragraph in this case, but is it always?  You may need to parameterize this
&gt; behavior...I know that at least for deletion we wouldn&apos;t want it.
&gt;

We are not using this method for deletion. The idea is to use it for commands like Indent, InsertList, Align, etc.
moveParagraphWithClones uses internally the deleteSelection command that uses the original moveParagraph.
 
&gt; 
&gt; +    void moveParagraphWithClones(const VisiblePosition&amp;, const
&gt; VisiblePosition&amp;, Node*, Node*);
&gt; 
&gt; I know that elsewhere in this file we&apos;re bad about this, but...I think you
&gt; should name the parameters here, since they aren&apos;t obvious.

I did it on purpose because I thought this is was the coding style. I don&apos;t like it myself and if it is ok with everyone, I&apos;ll add the parameters name back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156499</commentid>
    <comment_count>22</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2009-10-21 09:15:48 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; (From update of attachment 41516 [details] [details])
&gt; &gt; I remember us talking about moving originals, not clones.  Is there any
&gt; &gt; advantage to eventually doing that?  We&apos;d lose the ability to rely on
&gt; &gt; DeleteSelectionCommand for removal.
&gt; 
&gt; I&apos;m not sure I understand your point here. The new implementation uses
&gt; DeleteSelectionCommand (otherwise undo won&apos;t work)
&gt; but preserves the existing markup, instead of trying to create a new markup to
&gt; reproduce the style at the position. The computed style does not represent with
&gt; 100% accuracy the appearance of the element at the position (i.e. when you have
&gt; a span wth bg color and a font tag with fontcolor).
&gt; 
&gt; &gt; 
&gt; &gt; +        if (item-&gt;isTextNode())
&gt; &gt; +            child = static_cast&lt;Element*&gt;(((Node
&gt; &gt; *)item)-&gt;cloneNode(true).get());
&gt; &gt; +        else if (isTableElement(item))
&gt; &gt; +            child = item-&gt;cloneElementWithChildren();
&gt; &gt; +        else
&gt; &gt; +            child = item-&gt;cloneElementWithoutChildren();
&gt; &gt; 
&gt; &gt; Hmm.  What if the DOM is:
&gt; &gt; 
&gt; &gt; &lt;div&gt;&lt;textnode 1&gt;&lt;textnode 2&gt;&lt;/div&gt;
&gt; &gt; 
&gt; &gt; startNode is the textnode 1.  Will textnode 2 be cloned and put in the
&gt; &gt; hierarchy?
&gt; &gt;
&gt; 
&gt; No, in this case it clones without children. If you have something like that,
&gt; we produce
&gt; &lt;blockquote class... style=&quot;margin....&quot;&gt;&lt;div&gt;&lt;text node1&gt;&lt;/div&gt;&lt;div&gt;&lt;textnode
&gt; 2&gt;&lt;/div&gt;&lt;blockquote&gt;.
&gt; This is the only case I could find where we create an additional div tag.
&gt; The ultimate goal I have is to change the way Indent is implemented, and do
&gt; something similar to what the align command
&gt; does. It will try to find the nearest enclosing block for the selection and
&gt; simply change the style of the block.
&gt; (See  moveParagraphContentsToNewBlockIfNecessary in CompositeEditCommand)
&gt; In this case something like
&gt; 
&gt; &lt;div&gt;
&gt;        Hello
&gt;       &lt;br&gt;
&gt;       World
&gt;       &lt;br&gt;
&gt;      Today
&gt; &lt;/div&gt;
&gt; 
&gt; where the selection is the first two paragraphs, will be changed by the indent
&gt; command into:
&gt; 
&gt; &lt;div style=&quot;margin 0 0 0 40px;&quot;&gt;
&gt;        Hello
&gt;       &lt;br&gt;
&gt;       World
&gt;  &lt;/div&gt;
&gt;  &lt;div&gt;
&gt;       Today
&gt;   &lt;/div&gt;
&gt; 
&gt; 
&gt; &gt; 
&gt; &gt; &gt; +// the hierarchy with all the children.
&gt; &gt; &gt; +// If case startNode and outerBlock differ, we clone each none in between individually
&gt; &gt; 
&gt; &gt; Typo: &quot;If case startNode and outerBlock differ&quot;.
&gt; &gt;
&gt; 
&gt; Ok.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; +    for (size_t i = ancestors.size(); i != 0; --i) {
&gt; &gt; &gt; +        Element* item = ancestors[i - 1];
&gt; &gt; 
&gt; &gt; Little odd that i is not the array index.  Why not loop from i = ancestors.size
&gt; &gt; - 1 while i &gt; 0?
&gt; &gt;
&gt; 
&gt; I agree. I&apos;ll change it.

I take it back. This is the correct logic. If ancestors.size() is 1, I still want to execute this loop, with the code you are suggesting I wouldn&apos;t.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; This tests indenting an empty paragraph with bold already applied to it. The word below should be bold.
&gt; &gt; &gt;-&lt;blockquote class=&quot;webkit-indent-blockquote&quot; style=&quot;margin: 0 0 0 40px; border: none; padding: 0px;&quot;&gt;&lt;b&gt;Bold&lt;/b&gt;&lt;/blockquote&gt;
&gt; &gt; &gt;+&lt;blockquote class=&quot;webkit-indent-blockquote&quot; style=&quot;margin: 0 0 0 40px; border: none; padding: 0px;&quot;&gt;&lt;div&gt;&lt;b&gt;Bold&lt;/b&gt;&lt;/div&gt;&lt;/blockquote&gt;
&gt; &gt; 
&gt; &gt; It seems OK that we&apos;re preserving the block that originally contained the
&gt; &gt; paragraph in this case, but is it always?  You may need to parameterize this
&gt; &gt; behavior...I know that at least for deletion we wouldn&apos;t want it.
&gt; &gt;
&gt; 
&gt; We are not using this method for deletion. The idea is to use it for commands
&gt; like Indent, InsertList, Align, etc.
&gt; moveParagraphWithClones uses internally the deleteSelection command that uses
&gt; the original moveParagraph.
&gt; 
&gt; &gt; 
&gt; &gt; +    void moveParagraphWithClones(const VisiblePosition&amp;, const
&gt; &gt; VisiblePosition&amp;, Node*, Node*);
&gt; &gt; 
&gt; &gt; I know that elsewhere in this file we&apos;re bad about this, but...I think you
&gt; &gt; should name the parameters here, since they aren&apos;t obvious.
&gt; 
&gt; I did it on purpose because I thought this is was the coding style. I don&apos;t
&gt; like it myself and if it is ok with everyone, I&apos;ll add the parameters name
&gt; back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156511</commentid>
    <comment_count>23</comment_count>
      <attachid>41572</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2009-10-21 10:03:37 -0700</bug_when>
    <thetext>Created attachment 41572
Patch4

Fixed some typos, removed commented line in ApplyStyleCommand.cpp and added parameter names to moveParagraphWithClones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156587</commentid>
    <comment_count>24</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-10-21 11:56:49 -0700</bug_when>
    <thetext>
&gt; &gt; &gt; &gt; +    for (size_t i = ancestors.size(); i != 0; --i) {
&gt; &gt; &gt; &gt; +        Element* item = ancestors[i - 1];
&gt; &gt; &gt; 
&gt; &gt; &gt; Little odd that i is not the array index.  Why not loop from i = ancestors.size
&gt; &gt; &gt; - 1 while i &gt; 0?
&gt; &gt; &gt;
&gt; &gt; 
&gt; &gt; I agree. I&apos;ll change it.
&gt; 
&gt; I take it back. This is the correct logic. If ancestors.size() is 1, I still
&gt; want to execute this loop, with the code you are suggesting I wouldn&apos;t.

Oops I meant to say while i &gt;= 0.  I guess you need to leave what you&apos;ve done because size_t can&apos;t be negative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156731</commentid>
    <comment_count>25</comment_count>
      <attachid>41572</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-21 17:05:51 -0700</bug_when>
    <thetext>Comment on attachment 41572
Patch4

This looks good.

&gt; +    Vector&lt;Element*&gt; ancestors;

I think you should move this declaration to just before the &quot;for&quot; statement instead of having it at the top of the function.

This needs to be a vector of RefPtr&lt;Element&gt; because there&apos;s no guarantee that the ancestors won&apos;t be deallocated or something like that in JavaScript mutation handlers.

&gt; +    // first we handle the case of the hierarchy with one node only

In WebKit we normally use sentence-style comments, with capital letters and periods.

&gt; +        if (outerBlock-&gt;isTextNode())
&gt; +            return static_cast&lt;Element*&gt;(startNode-&gt;cloneNode(true).get());

How can an Element* be a text node?

&gt; +    // insert each element from startNode to outerBlock (excluded) in a list

Comment format.

&gt; +    for (Element* n = static_cast&lt;Element*&gt;(startNode); n &amp;&amp; n != outerBlock; n = n-&gt;parentElement())

If startNode is guaranteed to be an Element, then it should be an Element*. If it&apos;s not guaranteed to be an Element, then this cast to Element* is not guaranteed to work and this should be coded another way that dose not depend on that.

&gt; +        Element* item = ancestors[i - 1];
&gt; +        RefPtr&lt;Element&gt; child;
&gt; +        if (item-&gt;isTextNode())
&gt; +            child = static_cast&lt;Element*&gt;(((Node *)item)-&gt;cloneNode(true).get());

You should not be casting to Node* here. Instead you should be using cloneElementWithChildren.

But also, if item is an Element, then how can it be a text node?

We should override some of the Node functions with private non-implemented functions in derived classes so these kinds of mistakes can be caught at compile time.

&gt; +// This is a new version of moveParagraph that preserves style by keeping the original markup
&gt; +// It is currently used only by IndentOutdentCommand but it is meant to be used in the near
&gt; +// future by several other commands such as InsertList and the align commands.

Comments should not say things like &quot;new&quot; and &quot;the near future&quot; since they are likely to last a long time.

&gt; +    RefPtr&lt;Element&gt; newParagraph = cloneHierarchyBetween(start.node(), static_cast&lt;Element*&gt;(startNode));    

What guarantees that startNode is an Element*? If it&apos;s known to be an Element*, then it should already have that type. If not, then there needs to be some sort of check. This kind of type cast can easily lead to crashes later.

&gt; +    // Deleting a paragraph will leave a placeholder.  Remove it (and prune
&gt; +    // empty or unrendered parents).

WebKit code uses one space after a period, not two.

&gt; +            // There is a preserved &apos;\n&apos; at caretAfterDelete.
&gt; +            Text* textNode = static_cast&lt;Text*&gt;(node);

What guarantees this is a text node? We can&apos;t do this cast unless we are certain it is one.

&gt; +    if (beforeParagraph.isNotNull() &amp;&amp; !isTableElement(beforeParagraph.deepEquivalent().node()) &amp;&amp; (!isEndOfParagraph(beforeParagraph) || beforeParagraph == afterParagraph)) {
&gt; +        // FIXME: Trim text between beforeParagraph and afterParagraph if they aren&apos;t equal.
&gt; +        insertNodeAt(createBreakElement(document()), beforeParagraph.deepEquivalent());
&gt; +        // Need an updateLayout here in case inserting the br has split a text node.
&gt; +        updateLayout();
&gt; +    }       

I don&apos;t understand that comment about needing an updateLayout. Normally code calls updateLayout before doing work if it&apos;s going to depend on layout. It&apos;s not normal to call updateLayout after doing something.

There are a lot of stray trailing spaces in the source file. It would be best to not have those.

&gt; +    void moveParagraphWithClones(const VisiblePosition&amp; startOfParagraphToMove, const VisiblePosition&amp; endOfParagraphToMove, Node* blockNode, Node* startNode);

I don&apos;t understand what blockNode and startNode are.

&gt; +    PassRefPtr&lt;Element&gt; cloneHierarchyBetween(Node*, Element*);

I&apos;m not sure what it means to be between a Node and an Element. Probably need names for these arguments.

Do test cases cover all the branches in the code?

I think you need to add more test cases. There are a lot of if statements and such in the code and we need to make sure there is a test that covers each one. I am particularly interested in test cases that involve collapsed whitespace as well.

review- because at least some of the comments above will lead to code changes, I think</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156795</commentid>
    <comment_count>26</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-10-21 23:15:58 -0700</bug_when>
    <thetext>&gt; I&apos;m not sure I understand your point here.

I was wondering if there was any advantage to moving the actual nodes, instead of cloning them, but I can&apos;t think of any.  Ignore my comment.

&gt; &gt; Hmm.  What if the DOM is:
&gt; &gt; 
&gt; &gt; &lt;div&gt;&lt;textnode 1&gt;&lt;textnode 2&gt;&lt;/div&gt;
&gt; &gt; 
&gt; &gt; startNode is the textnode 1.  Will textnode 2 be cloned and put in the
&gt; &gt; hierarchy?
&gt; &gt;
&gt; 
&gt; No, in this case it clones without children.

Then in this case indent must be broken, yes?  It will only indent the first text node (and its parents).  Here&apos;s an better test case, indent:

&lt;div&gt;hello&lt;img&gt;world&lt;/div&gt;


&gt; We are not using this method for deletion.

No, but I assumed your new function would eventually be deployed everywhere, in place of the old moveParagraphs.  If that&apos;s not the plan you can ignore what I said.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157048</commentid>
    <comment_count>27</comment_count>
      <attachid>41699</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2009-10-22 17:09:39 -0700</bug_when>
    <thetext>Created attachment 41699
Patch5

This patch addresses all the comments made by Darin and covers the case pointed out by Justin in his comments.
I&apos;ve also added a new test case to cover several indent scenarios not covered by the existing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157180</commentid>
    <comment_count>28</comment_count>
      <attachid>41699</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2009-10-23 10:32:38 -0700</bug_when>
    <thetext>Comment on attachment 41699
Patch5

Looks good!  In some cases where you moved code or reused existing code (like for cleanupAfterDeletion), it would be good to make a note of that in the ChangeLog.  It makes it a little easier to review.  Just something to keep in mind for the future.  I&apos;ll commit this for you...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157229</commentid>
    <comment_count>29</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2009-10-23 12:01:03 -0700</bug_when>
    <thetext>Committed revision 49985.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40041</attachid>
            <date>2009-09-23 20:36:45 -0700</date>
            <delta_ts>2009-09-23 20:36:45 -0700</delta_ts>
            <desc>Adds a dumpAsText test to reproduce the bug</desc>
            <filename>reproduces29697</filename>
            <type>text/plain</type>
            <size>1994</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9iYWNrZ3JvdW5kLWNvbG9yLTI5
Njk3LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvYmFja2dyb3VuZC1jb2xvci0yOTY5Ny1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvYmFja2dyb3VuZC1jb2xvci0yOTY5Ny1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorZmlyc3QgcGFyYWdyYXBo
Zmlyc3QgcGFyYWdyYXBoCitCZWZvcmU6IDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJl
ZDsiPjxkaXYgaWQ9ImNvcHlmcm9tIj5maXJzdCBwYXJhZ3JhcGg8L2Rpdj48L2Rpdj4gPGRpdiBp
ZD0icGFzdGV0byI+PC9kaXY+CitBZnRlcjogPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjog
cmVkOyI+PGRpdiBpZD0iY29weWZyb20iPmZpcnN0IHBhcmFncmFwaDxzcGFuIGNsYXNzPSJBcHBs
ZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDI1NSk7ICI+
Zmlyc3QgcGFyYWdyYXBoPC9zcGFuPjwvZGl2PjwvZGl2PiA8ZGl2IGlkPSJwYXN0ZXRvIj48L2Rp
dj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9iYWNrZ3JvdW5kLWNvbG9y
LTI5Njk3Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L2JhY2tncm91bmQtY29sb3ItMjk2OTcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9iYWNrZ3JvdW5kLWNvbG9yLTI5Njk3Lmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzMgQEAKKzxodG1sIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBibHVl
O2NvbG9yOmJsYWNrOyI+Cis8Ym9keT4KKzxkaXYgaWQ9ImMiIGNvbnRlbnRlZGl0YWJsZT0idHJ1
ZSI+Cis8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Ij48ZGl2IGlkPSJjb3B5ZnJv
bSI+Zmlyc3QgcGFyYWdyYXBoPC9kaXY+PC9kaXY+Cis8ZGl2IGlkPSJwYXN0ZXRvIj48L2Rpdj4K
KzwvZGl2PgorPHVsPgorCTxsaT5CZWZvcmU6IDxzcGFuIGlkPSJiZWZvcmUiPjwvc3Bhbj48L2xp
PgorCTxsaT5BZnRlcjogPHNwYW4gaWQ9ImFmdGVyIj48L3NwYW4+PC9saT4KKzwvdWw+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworcyA9IHdp
bmRvdy5nZXRTZWxlY3Rpb24oKTsKK3IgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworci5zZWxl
Y3ROb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb3B5ZnJvbScpKQorcy5yZW1vdmVBbGxS
YW5nZXMoKQorcy5hZGRSYW5nZShyKQorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVmb3Jl
JykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2MnKS5pbm5lckhUTUwpKQorZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKQorciA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CityLnNlbGVjdE5vZGUoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Bhc3RldG8nKSkKK3MucmVtb3ZlQWxsUmFuZ2VzKCkKK3MuYWRkUmFuZ2UocikKK2Rv
Y3VtZW50LmV4ZWNDb21tYW5kKCJwYXN0ZSIpCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWZ0
ZXInKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYycpLmlubmVySFRNTCkpCisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40966</attachid>
            <date>2009-10-09 15:04:37 -0700</date>
            <delta_ts>2009-10-19 15:17:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug7248529.txt</filename>
            <type>text/plain</type>
            <size>4060</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTQwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMTAtMDkgIEVOUklDQSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
RUdSRVNTSU9OICg0LjAuMy0+IHI0ODY4MCk6IENvcHkgaXMgY29weWluZyBpbmNvcnJlY3QgYmFj
a2dyb3VuZC1jb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjk2OTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyNDg1Mjk+CisgICAgICAgIFRo
aXMgaXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQgYnkgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvNDcwMDguCisgICAgICAgIFRoZSBjb3JyZWN0IHdheSB0byBmaXggdGhlIGJ1ZyBp
cyBub3QgdG8gbWFrZSBiYWNrZ3JvdW5kQ29sb3Igc3R5bGUgaW5oZXJpdGFibGUsCisgICAgICAg
IGJ1dCByYXRoZXIgdGhlIGFwcHJvYWNoIGltcGxlbWVudGVkIGluIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzQ4NzY0LgorICAgICAgICAKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcDogCisgICAgICAgIChXZWJDb3JlOjopOiBSZW1vdmVkIENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yIGZyb20gdGhlCisgICAgICAgIGVkaXRpbmdTdHlsZVByb3BlcnRp
ZXMgYXJyYXkuIAorCiAyMDA5LTEwLTA5ICBKZW5zIEFsZmtlICA8c25lakBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL2VkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9B
cHBseVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDQ5MzkzKQorKysgV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyLDcgKzM1Miw2IEBA
IFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHIKIC8vIGUuZy4gd2hlbiBh
IHVzZXIgaW5zZXJ0cyBhIG5ldyBwYXJhZ3JhcGgsIGFsbCBwcm9wZXJ0aWVzIGxpc3RlZCBoZXJl
IG11c3QgYmUgY29waWVkIHRvIHRoZSBuZXcgcGFyYWdyYXBoLgogLy8gRklYTUU6IFRoZSBjdXJy
ZW50IGVkaXRpbmdTdHlsZVByb3BlcnRpZXMgY29udGFpbnMgYWxsIGluaGVyaXRhYmxlUHJvcGVy
dGllcyBidXQgd2UgbWF5IG5vdCBuZWVkIHRvIHByZXNlcnZlIGFsbCBpbmhlcml0YWJsZSBwcm9w
ZXJ0aWVzCiBzdGF0aWMgY29uc3QgaW50IGVkaXRpbmdTdHlsZVByb3BlcnRpZXNbXSA9IHsKLSAg
ICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwKICAgICAvLyBDU1MgaW5oZXJpdGFibGUgcHJv
cGVydGllcwogICAgIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UsCiAgICAgQ1NTUHJvcGVydHlD
b2xvciwKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ5NDA0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMTAtMDkgIEVOUklDQSBDYXN1
Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OICg0LjAuMy0+IHI0ODY4MCk6IENvcHkgaXMgY29w
eWluZyBpbmNvcnJlY3QgYmFja2dyb3VuZC1jb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk2OTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcy
NDg1Mjk+CisgICAgICAgIFRoaXMgaXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQgYnkgaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNDcwMDguCisgICAgICAgIFRoZSBjb3JyZWN0IHdh
eSB0byBmaXggdGhlIGJ1ZyBpcyBub3QgdG8gbWFrZSBiYWNrZ3JvdW5kQ29sb3Igc3R5bGUgaW5o
ZXJpdGFibGUsCisgICAgICAgIGJ1dCByYXRoZXIgdGhlIGFwcHJvYWNoIGltcGxlbWVudGVkIGlu
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzQ4NzY0LgorCisgICAgICAgICogZWRp
dGluZy9pbnNlcnRpbmcvNTk5NDQ4MC0yLWV4cGVjdGVkLnR4dDogUmUtYmFzZWxpbmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2VsZWN0LWVsZW1lbnQtMS1l
eHBlY3RlZC50eHQ6IFJlLWJhc2VsaW5lZC4KKwogMjAwOS0xMC0wOSAgRGlyayBTY2h1bHplICA8
a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvNTk5NDQ4MC0yLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy81OTk0NDgwLTItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA0OTM5MykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0
aW5nLzU5OTQ0ODAtMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTxm
b250IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBmYWNlPSInTHVjaWRhIEdyYW5kZSciIHNpemU9
IjMiPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xv
cjogcmdiKDI1NSwgMjU1LCAyNTUpOyBmb250LXNpemU6IDExcHg7Ij48YnI+PC9zcGFuPjwvZm9u
dD4KKzxmb250IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBmYWNlPSInTHVjaWRhIEdyYW5kZSci
IHNpemU9IjMiPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1zaXpl
OiAxMXB4OyI+PGJyPjwvc3Bhbj48L2ZvbnQ+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9wYXN0ZWJvYXJkL3NlbGVjdC1lbGVtZW50LTEtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2Vs
ZWN0LWVsZW1lbnQtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ5MzkzKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9zZWxlY3QtZWxlbWVudC0xLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjUzLDApIHdpZHRoIDIyMDogIkFs
bCB0aGUgb3B0aW9ucyBzaG91bGQgYmUgaW5jbHVkZWQuIgogICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDAsMzQpIHNpemUgNzg0eDEzCiAgICAgICAgIFJlbmRlcklubGluZSB7Rk9OVH0gYXQg
KDAsMCkgc2l6ZSAweDE4Ci0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBz
aXplIDB4MTMgW2JnY29sb3I9I0ZGRkZGRl0KKyAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59
IGF0ICgwLDApIHNpemUgMHgxMwogICAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBz
aXplIDB4MTMKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDQ3KSBzaXplIDc4NHgyMgog
ICAgICAgICBSZW5kZXJNZW51TGlzdCB7U0VMRUNUfSBhdCAoMiwyKSBzaXplIDYyeDE4IFtiZ2Nv
bG9yPSNGRkZGRkZdCg==
</data>
<flag name="commit-queue"
          id="22269"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40975</attachid>
            <date>2009-10-09 17:03:42 -0700</date>
            <delta_ts>2009-10-20 11:48:15 -0700</delta_ts>
            <desc>Patch2 </desc>
            <filename>bug7248529.txt</filename>
            <type>text/plain</type>
            <size>4060</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTQwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMTAtMDkgIEVOUklDQSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
RUdSRVNTSU9OICg0LjAuMy0+IHI0ODY4MCk6IENvcHkgaXMgY29weWluZyBpbmNvcnJlY3QgYmFj
a2dyb3VuZC1jb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjk2OTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyNDg1Mjk+CisgICAgICAgIFRo
aXMgaXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQgYnkgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvNDcwMDguCisgICAgICAgIFRoZSBjb3JyZWN0IHdheSB0byBmaXggdGhlIGJ1ZyBp
cyBub3QgdG8gbWFrZSBiYWNrZ3JvdW5kQ29sb3Igc3R5bGUgaW5oZXJpdGFibGUsCisgICAgICAg
IGJ1dCByYXRoZXIgdGhlIGFwcHJvYWNoIGltcGxlbWVudGVkIGluIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzQ4NzY0LgorICAgICAgICAKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcDogCisgICAgICAgIChXZWJDb3JlOjopOiBSZW1vdmVkIENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yIGZyb20gdGhlCisgICAgICAgIGVkaXRpbmdTdHlsZVByb3BlcnRp
ZXMgYXJyYXkuIAorCiAyMDA5LTEwLTA5ICBKZW5zIEFsZmtlICA8c25lakBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL2VkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9B
cHBseVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDQ5MzkzKQorKysgV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyLDcgKzM1Miw2IEBA
IFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHIKIC8vIGUuZy4gd2hlbiBh
IHVzZXIgaW5zZXJ0cyBhIG5ldyBwYXJhZ3JhcGgsIGFsbCBwcm9wZXJ0aWVzIGxpc3RlZCBoZXJl
IG11c3QgYmUgY29waWVkIHRvIHRoZSBuZXcgcGFyYWdyYXBoLgogLy8gRklYTUU6IFRoZSBjdXJy
ZW50IGVkaXRpbmdTdHlsZVByb3BlcnRpZXMgY29udGFpbnMgYWxsIGluaGVyaXRhYmxlUHJvcGVy
dGllcyBidXQgd2UgbWF5IG5vdCBuZWVkIHRvIHByZXNlcnZlIGFsbCBpbmhlcml0YWJsZSBwcm9w
ZXJ0aWVzCiBzdGF0aWMgY29uc3QgaW50IGVkaXRpbmdTdHlsZVByb3BlcnRpZXNbXSA9IHsKLSAg
ICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwKICAgICAvLyBDU1MgaW5oZXJpdGFibGUgcHJv
cGVydGllcwogICAgIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UsCiAgICAgQ1NTUHJvcGVydHlD
b2xvciwKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ5NDA0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMTAtMDkgIEVOUklDQSBDYXN1
Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OICg0LjAuMy0+IHI0ODY4MCk6IENvcHkgaXMgY29w
eWluZyBpbmNvcnJlY3QgYmFja2dyb3VuZC1jb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk2OTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcy
NDg1Mjk+CisgICAgICAgIFRoaXMgaXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQgYnkgaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNDcwMDguCisgICAgICAgIFRoZSBjb3JyZWN0IHdh
eSB0byBmaXggdGhlIGJ1ZyBpcyBub3QgdG8gbWFrZSBiYWNrZ3JvdW5kQ29sb3Igc3R5bGUgaW5o
ZXJpdGFibGUsCisgICAgICAgIGJ1dCByYXRoZXIgdGhlIGFwcHJvYWNoIGltcGxlbWVudGVkIGlu
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzQ4NzY0LgorCisgICAgICAgICogZWRp
dGluZy9pbnNlcnRpbmcvNTk5NDQ4MC0yLWV4cGVjdGVkLnR4dDogUmUtYmFzZWxpbmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2VsZWN0LWVsZW1lbnQtMS1l
eHBlY3RlZC50eHQ6IFJlLWJhc2VsaW5lZC4KKwogMjAwOS0xMC0wOSAgRGlyayBTY2h1bHplICA8
a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvNTk5NDQ4MC0yLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy81OTk0NDgwLTItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA0OTM5MykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0
aW5nLzU5OTQ0ODAtMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTxm
b250IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBmYWNlPSInTHVjaWRhIEdyYW5kZSciIHNpemU9
IjMiPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xv
cjogcmdiKDI1NSwgMjU1LCAyNTUpOyBmb250LXNpemU6IDExcHg7Ij48YnI+PC9zcGFuPjwvZm9u
dD4KKzxmb250IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBmYWNlPSInTHVjaWRhIEdyYW5kZSci
IHNpemU9IjMiPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1zaXpl
OiAxMXB4OyI+PGJyPjwvc3Bhbj48L2ZvbnQ+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9wYXN0ZWJvYXJkL3NlbGVjdC1lbGVtZW50LTEtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2Vs
ZWN0LWVsZW1lbnQtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ5MzkzKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9zZWxlY3QtZWxlbWVudC0xLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjUzLDApIHdpZHRoIDIyMDogIkFs
bCB0aGUgb3B0aW9ucyBzaG91bGQgYmUgaW5jbHVkZWQuIgogICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDAsMzQpIHNpemUgNzg0eDEzCiAgICAgICAgIFJlbmRlcklubGluZSB7Rk9OVH0gYXQg
KDAsMCkgc2l6ZSAweDE4Ci0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBz
aXplIDB4MTMgW2JnY29sb3I9I0ZGRkZGRl0KKyAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59
IGF0ICgwLDApIHNpemUgMHgxMwogICAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBz
aXplIDB4MTMKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDQ3KSBzaXplIDc4NHgyMgog
ICAgICAgICBSZW5kZXJNZW51TGlzdCB7U0VMRUNUfSBhdCAoMiwyKSBzaXplIDYyeDE4IFtiZ2Nv
bG9yPSNGRkZGRkZdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41516</attachid>
            <date>2009-10-20 11:48:15 -0700</date>
            <delta_ts>2009-10-21 10:03:37 -0700</delta_ts>
            <desc>Patch3</desc>
            <filename>bug7248529.txt</filename>
            <type>text/plain</type>
            <size>36630</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTg3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMTAtMjAgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
RUdSRVNTSU9OOiBDb3B5IGlzIGNvcHlpbmcgaW5jb3JyZWN0IGJhY2tncm91bmQtY29sb3IKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyNDg1Mjk+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY5NworCisgICAgICAgIFRoaXMgY2hhbmdlIHJlbW92
ZXMgdGhlIEJhY2tncm91bmRDb2xvciBmcm9tIHRoZSBsaXN0IAorICAgICAgICBvZiBpbmhlcml0
YWJsZSBDU1MgcHJvcGVydGllcyBhbmQgY2hhbmdlcyBzaWduaWZpY2FudGx5CisgICAgICAgIHRo
ZSB3YXkgd2UgcGVyZm9ybSBpbmRlbnRhdGlvbi4KKyAgICAgICAgVGhlIG5ldyBpbXBsZW1lbnRh
dGlvbiBvZiBJbmRlbnRPdXRkZW50Q29tbWFuZCB1c2VzIGEgbmV3IG1ldGhvZAorICAgICAgICBk
ZWZpbmVkIGluIENvbXBvc2l0ZUVkaXRDb21tYW5kIGNhbGxlZCBtb3ZlUGFyYWdyYXBoV2l0aENs
b25lcy4KKyAgICAgICAgVGhpcyBpcyBhbiBpbXByb3ZlZCB2ZXJzaW9uIG9mIHRoZSBvcmlnaW5h
bCBtb3ZlUGFyYWdyYXBoIHRoYXQKKyAgICAgICAgaXMgYWltZWQgYXQgcHJlc2VydmluZyB0aGUg
b3JpZ2luYWwgbWFya3VwIG9mIHRoZSBwYXJhZ3JhcGggYmVpbmcKKyAgICAgICAgbW92ZWQuCisg
ICAgICAgIAorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6KTogcmVtb3ZlZCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciBmcm9tIGVk
aXRpbmdTdHlsZVByb3BlcnRpZXMuCisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xvbmVI
aWVyYXJjaHlCZXR3ZWVuKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0
Q29tbWFuZDo6bW92ZVBhcmFncmFwaFdpdGhDbG9uZXMpOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6IEFkZGVkIGNsb25lSGllcmFyY2h5QmV0d2VlbiBh
bmQgbW92ZVBhcmFncmFwaFdpdGhDbG9uZXMuCisgICAgICAgICogZWRpdGluZy9JbmRlbnRPdXRk
ZW50Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmRlbnRPdXRkZW50Q29tbWFuZDo6
dHJ5SW5kZW50aW5nQXNMaXN0SXRlbSk6IENoYW5nZWQgdG8gdXNlIG1vdmVQYXJhZ3JhcGhXaXRo
Q2xvbmVzLgorICAgICAgICAoV2ViQ29yZTo6SW5kZW50T3V0ZGVudENvbW1hbmQ6OmluZGVudElu
dG9CbG9ja3F1b3RlKTogQ2hhbmdlZCB0byB1c2UgbW92ZVBhcmFncmFwaFdpdGhDbG9uZXMuCisg
ICAgICAgIChXZWJDb3JlOjpJbmRlbnRPdXRkZW50Q29tbWFuZDo6aW5kZW50UmVnaW9uKTogUmVt
b3ZlZCBjb21tZW50LgorICAgICAgICAqIGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuaDog
UmVtb3ZlZCBwcmVwYXJlQmxvY2txdW90ZUxldmVsRm9ySW5zZXJ0aW9uIG1ldGhvZC4KKwogMjAw
OS0xMC0yMCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHAJKHJldmlzaW9uIDQ5ODcxKQorKysgV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21t
YW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyLDcgKzM1Miw3IEBAIFJlZlB0cjxDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHIKIC8vIGUuZy4gd2hlbiBhIHVzZXIgaW5zZXJ0cyBh
IG5ldyBwYXJhZ3JhcGgsIGFsbCBwcm9wZXJ0aWVzIGxpc3RlZCBoZXJlIG11c3QgYmUgY29waWVk
IHRvIHRoZSBuZXcgcGFyYWdyYXBoLgogLy8gRklYTUU6IFRoZSBjdXJyZW50IGVkaXRpbmdTdHls
ZVByb3BlcnRpZXMgY29udGFpbnMgYWxsIGluaGVyaXRhYmxlUHJvcGVydGllcyBidXQgd2UgbWF5
IG5vdCBuZWVkIHRvIHByZXNlcnZlIGFsbCBpbmhlcml0YWJsZSBwcm9wZXJ0aWVzCiBzdGF0aWMg
Y29uc3QgaW50IGVkaXRpbmdTdHlsZVByb3BlcnRpZXNbXSA9IHsKLSAgICBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwKKyAgICAvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwKICAgICAv
LyBDU1MgaW5oZXJpdGFibGUgcHJvcGVydGllcwogICAgIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFw
c2UsCiAgICAgQ1NTUHJvcGVydHlDb2xvciwKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0
ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gNDk4NzEpCisrKyBXZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzksNiArNzM5LDEyMyBA
QCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpwdXNoUGFydGlhbGx5CiAgICAgc2V0RW5kaW5n
U2VsZWN0aW9uKG9yaWdpbmFsU2VsZWN0aW9uKTsKIH0KIAorLy8gQ2xvbmUgYWxsIHRoZSBub2Rl
cyBpbiB0aGUgaGllcmFyY2h5IGJldHdlZW4gc3RhcnROb2RlIGFuZCBvdXRlckJsb2NrIGluY2x1
ZGVkLgorLy8gSXQgaXMgcG9zc2libGUgdGhhdCBzdGFydE5vZGUgYW5kIG91dGVyQmxvY2sgYXJl
IHRoZSBzYW1lIG5vZGU6IGluIHRoaXMgY2FzZSBpZgorLy8gaXQgaXMgYSB0ZXh0IG5vZGUsIHdl
IGNhbGwgdGhlIGNsb25lIG1ldGhvZCBzcGVjaWZpYyBmb3IgdGhlIHRleHQgbm9kZSwgb3RoZXJ3
aXNlIHdlIGNsb25lCisvLyB0aGUgaGllcmFyY2h5IHdpdGggYWxsIHRoZSBjaGlsZHJlbi4KKy8v
IElmIGNhc2Ugc3RhcnROb2RlIGFuZCBvdXRlckJsb2NrIGRpZmZlciwgd2UgY2xvbmUgZWFjaCBu
b25lIGluIGJldHdlZW4gaW5kaXZpZHVhbGx5CisvLyAoaS5lLiB3aXRob3V0IGNoaWxkcmVuKS4K
Ky8vIEluIGFsbCBjYXNlcyB0aGUgcmV0dW5lZCBlbGVtZW50IGlzIHRoZSB0b3Agbm9kZS4KKwor
UGFzc1JlZlB0cjxFbGVtZW50PiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xvbmVIaWVyYXJjaHlC
ZXR3ZWVuKE5vZGUqIHN0YXJ0Tm9kZSwgRWxlbWVudCogb3V0ZXJCbG9jaykKK3sKKyAgICBWZWN0
b3I8RWxlbWVudCo+IGFuY2VzdG9yczsKKworICAgIC8vIGZpcnN0IHdlIGhhbmRsZSB0aGUgY2Fz
ZSBvZiB0aGUgaGllcmFyY2h5IHdpdGggb25lIG5vZGUgb25seQorICAgIGlmIChzdGFydE5vZGUg
PT0gb3V0ZXJCbG9jaykgeworICAgICAgICBpZiAob3V0ZXJCbG9jay0+aXNUZXh0Tm9kZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPihzdGFydE5vZGUtPmNsb25l
Tm9kZSh0cnVlKS5nZXQoKSk7CisgICAgICAgIHJldHVybiBvdXRlckJsb2NrLT5jbG9uZUVsZW1l
bnRXaXRoQ2hpbGRyZW4oKTsKKyAgICB9CisKKyAgICAvLyBpbnNlcnQgZWFjaCBlbGVtZW50IGZy
b20gc3RhcnROb2RlIHRvIG91dGVyQmxvY2sgKGV4Y2x1ZGVkKSBpbiBhIGxpc3QKKyAgICBmb3Ig
KEVsZW1lbnQqIG4gPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oc3RhcnROb2RlKTsgbiAmJiBuICE9
IG91dGVyQmxvY2s7IG4gPSBuLT5wYXJlbnRFbGVtZW50KCkpCisgICAgICAgIGFuY2VzdG9ycy5h
cHBlbmQobik7ICAgIAorICAgIAorICAgIC8vIE1ha2UgY2xvbmVzIG9mIGV2ZXJ5IG5vZGUgYmV0
d2VlbiBzdGFydE5vZGUgYW5kIG91dGVyQmxvY2suCisgICAgLy8gVGhlIHRvcCBlbGVtZW50IHJl
dHVybmVkIGlzIHRoZSBjbG9uZSBvZiBvdXRlckJsb2NrCisgICAgCisgICAgUmVmUHRyPEVsZW1l
bnQ+IHRvcEVsZW1lbnQgPSBvdXRlckJsb2NrLT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4o
KTsKKyAgICBSZWZQdHI8RWxlbWVudD4gcGFyZW50ID0gdG9wRWxlbWVudDsKKyAgICBmb3IgKHNp
emVfdCBpID0gYW5jZXN0b3JzLnNpemUoKTsgaSAhPSAwOyAtLWkpIHsKKyAgICAgICAgRWxlbWVu
dCogaXRlbSA9IGFuY2VzdG9yc1tpIC0gMV07CisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBjaGls
ZDsKKyAgICAgICAgaWYgKGl0ZW0tPmlzVGV4dE5vZGUoKSkKKyAgICAgICAgICAgIGNoaWxkID0g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KCgoTm9kZSAqKWl0ZW0pLT5jbG9uZU5vZGUodHJ1ZSkuZ2V0
KCkpOworICAgICAgICBlbHNlIGlmIChpc1RhYmxlRWxlbWVudChpdGVtKSkKKyAgICAgICAgICAg
IGNoaWxkID0gaXRlbS0+Y2xvbmVFbGVtZW50V2l0aENoaWxkcmVuKCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNoaWxkID0gaXRlbS0+Y2xvbmVFbGVtZW50V2l0aG91dENoaWxkcmVuKCk7
CisKKyAgICAgICAgYXBwZW5kTm9kZShjaGlsZCwgcGFyZW50KTsKKyAgICAgICAgcGFyZW50ID0g
Y2hpbGQucmVsZWFzZSgpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdG9wRWxlbWVudC5yZWxl
YXNlKCk7Cit9CisKKy8vIFRoaXMgaXMgYSBuZXcgdmVyc2lvbiBvZiBtb3ZlUGFyYWdyYXBoIHRo
YXQgcHJlc2VydmVzIHN0eWxlIGJ5IGtlZXBpbmcgdGhlIG9yaWdpbmFsIG1hcmt1cAorLy8gSXQg
aXMgY3VycmVudGx5IHVzZWQgb25seSBieSBJbmRlbnRPdXRkZW50Q29tbWFuZCBidXQgaXQgaXMg
bWVhbnQgdG8gYmUgdXNlZCBpbiB0aGUgbmVhcgorLy8gZnV0dXJlIGJ5IHNldmVyYWwgb3RoZXIg
Y29tbWFuZHMgc3VjaCBhcyBJbnNlcnRMaXN0IGFuZCB0aGUgYWxpZ24gY29tbWFuZHMuCisKK3Zv
aWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhXaXRoQ2xvbmVzKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwaFRvTW92ZSwgY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBlbmRPZlBhcmFncmFwaFRvTW92ZSwgTm9kZSogYmxvY2tOb2RlLCBOb2RlKiBzdGFydE5v
ZGUpCit7CisgICAgQVNTRVJUKHN0YXJ0Tm9kZSk7CisgICAgICAgIAorICAgIFZpc2libGVQb3Np
dGlvbiBiZWZvcmVQYXJhZ3JhcGggPSBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLnByZXZpb3VzKCk7
CisgICAgVmlzaWJsZVBvc2l0aW9uIGFmdGVyUGFyYWdyYXBoKGVuZE9mUGFyYWdyYXBoVG9Nb3Zl
Lm5leHQoKSk7CisgICAgCisgICAgLy8gV2UgdXBzdHJlYW0oKSB0aGUgZW5kIGFuZCBkb3duc3Ry
ZWFtKCkgdGhlIHN0YXJ0IHNvIHRoYXQgd2UgZG9uJ3QgaW5jbHVkZSBjb2xsYXBzZWQgd2hpdGVz
cGFjZSBpbiB0aGUgbW92ZS4KKyAgICAvLyBXaGVuIHdlIHBhc3RlIGEgZnJhZ21lbnQsIHNwYWNl
cyBhZnRlciB0aGUgZW5kIGFuZCBiZWZvcmUgdGhlIHN0YXJ0IGFyZSB0cmVhdGVkIGFzIHRob3Vn
aCB0aGV5IHdlcmUgcmVuZGVyZWQuICAgIAorICAgIFBvc2l0aW9uIHN0YXJ0ID0gc3RhcnRPZlBh
cmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLmRvd25zdHJlYW0oKTsKKyAgICBQb3NpdGlv
biBlbmQgPSBlbmRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnVwc3RyZWFtKCk7
CisKKyAgICBSZWZQdHI8RWxlbWVudD4gbmV3UGFyYWdyYXBoID0gY2xvbmVIaWVyYXJjaHlCZXR3
ZWVuKHN0YXJ0Lm5vZGUoKSwgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHN0YXJ0Tm9kZSkpOyAgICAK
KyAgICAgIAorICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LCBl
bmQsIERPV05TVFJFQU0pKTsKKyAgICBkZWxldGVTZWxlY3Rpb24oZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpOworICAgIAorICAgIC8vIFRoZXJlIGFyZSBidWdzIGluIGRlbGV0aW9uIHdoZW4g
aXQgcmVtb3ZlcyBhIGZ1bGx5IHNlbGVjdGVkIHRhYmxlL2xpc3QuICAKKyAgICAvLyBJdCBleHBh
bmRzIGFuZCByZW1vdmVzIHRoZSBlbnRpcmUgdGFibGUvbGlzdCwgYnV0IHdpbGwgbGV0IGNvbnRl
bnQKKyAgICAvLyBiZWZvcmUgYW5kIGFmdGVyIHRoZSB0YWJsZS9saXN0IGNvbGxhcHNlIG9udG8g
b25lIGxpbmUuCisgICAgCisgICAgLy8gRGVsZXRpbmcgYSBwYXJhZ3JhcGggd2lsbCBsZWF2ZSBh
IHBsYWNlaG9sZGVyLiAgUmVtb3ZlIGl0IChhbmQgcHJ1bmUKKyAgICAvLyBlbXB0eSBvciB1bnJl
bmRlcmVkIHBhcmVudHMpLgorICAgIFZpc2libGVQb3NpdGlvbiBjYXJldEFmdGVyRGVsZXRlID0g
ZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7CisgICAgaWYgKGlzU3RhcnRPZlBhcmFn
cmFwaChjYXJldEFmdGVyRGVsZXRlKSAmJiBpc0VuZE9mUGFyYWdyYXBoKGNhcmV0QWZ0ZXJEZWxl
dGUpKSB7CisgICAgICAgIC8vIE5vdGU6IFdlIHdhbnQgdGhlIHJpZ2h0bW9zdCBjYW5kaWRhdGUu
CisgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gY2FyZXRBZnRlckRlbGV0ZS5kZWVwRXF1aXZh
bGVudCgpLmRvd25zdHJlYW0oKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IHBvc2l0aW9uLm5vZGUo
KTsKKyAgICAgICAgLy8gTm9ybWFsbHkgZGVsZXRpb24gd2lsbCBsZWF2ZSBhIGJyIGFzIGEgcGxh
Y2Vob2xkZXIuCisgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGJyVGFnKSkKKyAgICAgICAg
ICAgIHJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyhub2RlKTsKKyAgICAgICAgLy8gSWYgdGhl
IHNlbGVjdGlvbiB0byBtb3ZlIHdhcyBlbXB0eSBhbmQgaW4gYW4gZW1wdHkgYmxvY2sgdGhhdCAK
KyAgICAgICAgLy8gZG9lc24ndCByZXF1aXJlIGEgcGxhY2Vob2xkZXIgdG8gcHJvcCBpdHNlbGYg
b3BlbiAobGlrZSBhIGJvcmRlcmVkIAorICAgICAgICAvLyBkaXYgb3IgYW4gbGkpLCByZW1vdmUg
aXQgZHVyaW5nIHRoZSBtb3ZlICh0aGUgbGlzdCByZW1vdmFsIGNvZGUgCisgICAgICAgIC8vIGV4
cGVjdHMgdGhpcyBiZWhhdmlvcikuCisgICAgICAgIGVsc2UgaWYgKGlzQmxvY2sobm9kZSkpCisg
ICAgICAgICAgICByZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnMobm9kZSk7CisgICAgICAgIGVs
c2UgaWYgKGxpbmVCcmVha0V4aXN0c0F0VmlzaWJsZVBvc2l0aW9uKGNhcmV0QWZ0ZXJEZWxldGUp
KSB7CisgICAgICAgICAgICAvLyBUaGVyZSBpcyBhIHByZXNlcnZlZCAnXG4nIGF0IGNhcmV0QWZ0
ZXJEZWxldGUuCisgICAgICAgICAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQq
Pihub2RlKTsKKyAgICAgICAgICAgIGlmICh0ZXh0Tm9kZS0+bGVuZ3RoKCkgPT0gMSkKKyAgICAg
ICAgICAgICAgICByZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnMobm9kZSk7CisgICAgICAgICAg
ICBlbHNlIAorICAgICAgICAgICAgICAgIGRlbGV0ZVRleHRGcm9tTm9kZSh0ZXh0Tm9kZSwgcG9z
aXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgMSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAKKyAgICBhcHBlbmROb2RlKG5ld1BhcmFncmFwaCwgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGJs
b2NrTm9kZSkpOworIAorICAgIC8vIEFkZCBhIGJyIGlmIHBydW5pbmcgYW4gZW1wdHkgYmxvY2sg
bGV2ZWwgZWxlbWVudCBjYXVzZWQgYSBjb2xsYXBzZS4gIEZvciBleGFtcGxlOgorICAgIC8vIGZv
b14KKyAgICAvLyA8ZGl2PmJhcjwvZGl2PgorICAgIC8vIGJhegorICAgIC8vIEltYWdpbmUgbW92
aW5nICdiYXInIHRvIF4uICAnYmFyJyB3aWxsIGJlIGRlbGV0ZWQgYW5kIGl0cyBkaXYgcHJ1bmVk
LiAgVGhhdCB3b3VsZAorICAgIC8vIGNhdXNlICdiYXonIHRvIGNvbGxhcHNlIG9udG8gdGhlIGxp
bmUgd2l0aCAnZm9vYmFyJyB1bmxlc3Mgd2UgaW5zZXJ0IGEgYnIuCisgICAgLy8gTXVzdCByZWNv
bm9uaWNhbGl6ZSB0aGVzZSB0d28gVmlzaWJsZVBvc2l0aW9ucyBhZnRlciB0aGUgcHJ1bmluZyBh
Ym92ZS4KKyAgICBiZWZvcmVQYXJhZ3JhcGggPSBWaXNpYmxlUG9zaXRpb24oYmVmb3JlUGFyYWdy
YXBoLmRlZXBFcXVpdmFsZW50KCkpOworICAgIGFmdGVyUGFyYWdyYXBoID0gVmlzaWJsZVBvc2l0
aW9uKGFmdGVyUGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkpOyAgIAorCisgICAgaWYgKGJlZm9y
ZVBhcmFncmFwaC5pc05vdE51bGwoKSAmJiAhaXNUYWJsZUVsZW1lbnQoYmVmb3JlUGFyYWdyYXBo
LmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKSAmJiAoIWlzRW5kT2ZQYXJhZ3JhcGgoYmVmb3JlUGFy
YWdyYXBoKSB8fCBiZWZvcmVQYXJhZ3JhcGggPT0gYWZ0ZXJQYXJhZ3JhcGgpKSB7CisgICAgICAg
IC8vIEZJWE1FOiBUcmltIHRleHQgYmV0d2VlbiBiZWZvcmVQYXJhZ3JhcGggYW5kIGFmdGVyUGFy
YWdyYXBoIGlmIHRoZXkgYXJlbid0IGVxdWFsLgorICAgICAgICBpbnNlcnROb2RlQXQoY3JlYXRl
QnJlYWtFbGVtZW50KGRvY3VtZW50KCkpLCBiZWZvcmVQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQo
KSk7CisgICAgICAgIC8vIE5lZWQgYW4gdXBkYXRlTGF5b3V0IGhlcmUgaW4gY2FzZSBpbnNlcnRp
bmcgdGhlIGJyIGhhcyBzcGxpdCBhIHRleHQgbm9kZS4KKyAgICAgICAgdXBkYXRlTGF5b3V0KCk7
CisgICAgfSAgICAgICAKK30KKyAgICAKKyAgICAKIC8vIFRoaXMgbW92ZXMgYSBwYXJhZ3JhcGgg
cHJlc2VydmluZyBpdHMgc3R5bGUuCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFy
YWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwaFRvTW92ZSwgY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBlbmRPZlBhcmFncmFwaFRvTW92ZSwgY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBkZXN0aW5hdGlvbiwgYm9vbCBwcmVzZXJ2ZVNlbGVjdGlvbiwgYm9vbCBwcmVzZXJ2
ZVN0eWxlKQogewpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJKHJl
dmlzaW9uIDQ5ODcxKQorKysgV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgCiAgICAg
dm9pZCBtb3ZlUGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGJvb2wgcHJlc2VydmVTZWxlY3Rpb24g
PSBmYWxzZSwgYm9vbCBwcmVzZXJ2ZVN0eWxlID0gdHJ1ZSk7CiAgICAgdm9pZCBtb3ZlUGFyYWdy
YXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25z
dCBWaXNpYmxlUG9zaXRpb24mLCBib29sIHByZXNlcnZlU2VsZWN0aW9uID0gZmFsc2UsIGJvb2wg
cHJlc2VydmVTdHlsZSA9IHRydWUpOworICAgIHZvaWQgbW92ZVBhcmFncmFwaFdpdGhDbG9uZXMo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgTm9kZSosIE5v
ZGUqKTsKKyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNsb25lSGllcmFyY2h5QmV0d2VlbihOb2Rl
KiwgRWxlbWVudCopOwogICAgIAogICAgIGJvb2wgYnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKTsK
ICAgICBib29sIGJyZWFrT3V0T2ZFbXB0eU1haWxCbG9ja3F1b3RlZFBhcmFncmFwaCgpOwpJbmRl
eDogV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCShyZXZpc2lvbiA0OTg3
MSkKKysrIFdlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDM3ICs2Nyw2IEBAIEluZGVudE91dGRlbnRDb21tYW5kOjpJbmRlbnRPdXRk
ZW50Q29tbWEKIHsKIH0KIAotLy8gVGhpcyBmdW5jdGlvbiBpcyBhIHdvcmthcm91bmQgZm9yIG1v
dmVQYXJhZ3JhcGgncyB0ZW5kZW5jeSB0byBzdHJpcCBibG9ja3F1b3Rlcy4gSXQgdXBkYXRlcyBs
YXN0QmxvY2txdW90ZSB0byBwb2ludCB0byB0aGUKLS8vIGNvcnJlY3QgbGV2ZWwgZm9yIHRoZSBj
dXJyZW50IHBhcmFncmFwaCwgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGEgcGxhY2Vob2xkZXIg
YnIgd2hlcmUgdGhlIGluc2VydGlvbiBzaG91bGQgYmUgcGVyZm9ybWVkLgotUGFzc1JlZlB0cjxF
bGVtZW50PiBJbmRlbnRPdXRkZW50Q29tbWFuZDo6cHJlcGFyZUJsb2NrcXVvdGVMZXZlbEZvcklu
c2VydGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIGN1cnJlbnRQYXJhZ3JhcGgsIFJlZlB0cjxF
bGVtZW50PiYgbGFzdEJsb2NrcXVvdGUpCi17Ci0gICAgaW50IGN1cnJlbnRCbG9ja3F1b3RlTGV2
ZWwgPSAwOwotICAgIGludCBsYXN0QmxvY2txdW90ZUxldmVsID0gMDsKLSAgICBOb2RlKiBub2Rl
ID0gY3VycmVudFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKTsKLSAgICB3aGlsZSAo
KG5vZGUgPSBlbmNsb3NpbmdOb2RlV2l0aFRhZyhQb3NpdGlvbihub2RlLT5wYXJlbnROb2RlKCks
IDApLCBibG9ja3F1b3RlVGFnKSkpCi0gICAgICAgIGN1cnJlbnRCbG9ja3F1b3RlTGV2ZWwrKzsK
LSAgICBub2RlID0gbGFzdEJsb2NrcXVvdGUuZ2V0KCk7Ci0gICAgd2hpbGUgKChub2RlID0gZW5j
bG9zaW5nTm9kZVdpdGhUYWcoUG9zaXRpb24obm9kZS0+cGFyZW50Tm9kZSgpLCAwKSwgYmxvY2tx
dW90ZVRhZykpKQotICAgICAgICBsYXN0QmxvY2txdW90ZUxldmVsKys7Ci0gICAgd2hpbGUgKGN1
cnJlbnRCbG9ja3F1b3RlTGV2ZWwgPiBsYXN0QmxvY2txdW90ZUxldmVsKSB7Ci0gICAgICAgIFJl
ZlB0cjxFbGVtZW50PiBuZXdCbG9ja3F1b3RlID0gY3JlYXRlSW5kZW50QmxvY2txdW90ZUVsZW1l
bnQoZG9jdW1lbnQoKSk7Ci0gICAgICAgIGFwcGVuZE5vZGUobmV3QmxvY2txdW90ZSwgbGFzdEJs
b2NrcXVvdGUpOwotICAgICAgICBsYXN0QmxvY2txdW90ZSA9IG5ld0Jsb2NrcXVvdGU7Ci0gICAg
ICAgIGxhc3RCbG9ja3F1b3RlTGV2ZWwrKzsKLSAgICB9Ci0gICAgd2hpbGUgKGN1cnJlbnRCbG9j
a3F1b3RlTGV2ZWwgPCBsYXN0QmxvY2txdW90ZUxldmVsKSB7Ci0gICAgICAgIGxhc3RCbG9ja3F1
b3RlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGVuY2xvc2luZ05vZGVXaXRoVGFnKFBvc2l0aW9u
KGxhc3RCbG9ja3F1b3RlLT5wYXJlbnROb2RlKCksIDApLCBibG9ja3F1b3RlVGFnKSk7Ci0gICAg
ICAgIGxhc3RCbG9ja3F1b3RlTGV2ZWwtLTsKLSAgICB9Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IHBs
YWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpOwotICAgIGFwcGVuZE5v
ZGUocGxhY2Vob2xkZXIsIGxhc3RCbG9ja3F1b3RlKTsKLSAgICAvLyBBZGQgYW5vdGhlciBiciBi
ZWZvcmUgdGhlIHBsYWNlaG9sZGVyIGlmIGl0IGNvbGxhcHNlZC4KLSAgICBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvcyhQb3NpdGlvbihwbGFjZWhvbGRlci5nZXQoKSwgMCkpOwotICAgIGlmICgh
aXNTdGFydE9mUGFyYWdyYXBoKHZpc2libGVQb3MpKQotICAgICAgICBpbnNlcnROb2RlQmVmb3Jl
KGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKSwgcGxhY2Vob2xkZXIpOwotICAgIHJldHVy
biBwbGFjZWhvbGRlci5yZWxlYXNlKCk7Ci19Ci0KIGJvb2wgSW5kZW50T3V0ZGVudENvbW1hbmQ6
OnRyeUluZGVudGluZ0FzTGlzdEl0ZW0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlbmRPZkN1cnJl
bnRQYXJhZ3JhcGgpCiB7CiAgICAgLy8gSWYgb3VyIHNlbGVjdGlvbiBpcyBub3QgaW5zaWRlIGEg
bGlzdCwgYmFpbCBvdXQuCkBAIC0xMTcsMTMgKzg2LDkgQEAgYm9vbCBJbmRlbnRPdXRkZW50Q29t
bWFuZDo6dHJ5SW5kZW50aW5nQQogICAgIEVsZW1lbnQqIG5leHRMaXN0ID0gc2VsZWN0ZWRMaXN0
SXRlbS0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7CiAKICAgICBSZWZQdHI8RWxlbWVudD4gbmV3TGlz
dCA9IGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQobGlzdE5vZGUtPnRhZ1FOYW1lKCksIGZhbHNl
KTsKLSAgICBSZWZQdHI8RWxlbWVudD4gbmV3TGlzdEl0ZW0gPSBzZWxlY3RlZExpc3RJdGVtLT5j
bG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKLSAgICBSZWZQdHI8RWxlbWVudD4gcGxhY2Vo
b2xkZXIgPSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgaW5zZXJ0Tm9kZUJl
Zm9yZShuZXdMaXN0LCBzZWxlY3RlZExpc3RJdGVtKTsKLSAgICBhcHBlbmROb2RlKG5ld0xpc3RJ
dGVtLCBuZXdMaXN0KTsKLSAgICBhcHBlbmROb2RlKHBsYWNlaG9sZGVyLCBuZXdMaXN0SXRlbSk7
CiAKLSAgICBtb3ZlUGFyYWdyYXBoKHN0YXJ0T2ZQYXJhZ3JhcGgoZW5kT2ZDdXJyZW50UGFyYWdy
YXBoKSwgZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24ocGxh
Y2Vob2xkZXIsIDApKSwgdHJ1ZSk7CisgICAgbW92ZVBhcmFncmFwaFdpdGhDbG9uZXMoc3RhcnRP
ZlBhcmFncmFwaChlbmRPZkN1cnJlbnRQYXJhZ3JhcGgpLCBlbmRPZkN1cnJlbnRQYXJhZ3JhcGgs
IG5ld0xpc3QuZ2V0KCksIHNlbGVjdGVkTGlzdEl0ZW0pOwogCiAgICAgaWYgKGNhbk1lcmdlTGlz
dHMocHJldmlvdXNMaXN0LCBuZXdMaXN0LmdldCgpKSkKICAgICAgICAgbWVyZ2VJZGVudGljYWxF
bGVtZW50cyhwcmV2aW91c0xpc3QsIG5ld0xpc3QpOwpAQCAtMTM3LDI1ICsxMDIsMzAgQEAgdm9p
ZCBJbmRlbnRPdXRkZW50Q29tbWFuZDo6aW5kZW50SW50b0JsbwogewogICAgIE5vZGUqIGVuY2xv
c2luZ0NlbGwgPSAwOwogCisgICAgUG9zaXRpb24gc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKGVu
ZE9mQ3VycmVudFBhcmFncmFwaCkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICBlbmNsb3NpbmdDZWxs
ID0gZW5jbG9zaW5nTm9kZU9mVHlwZShzdGFydCwgJmlzVGFibGVDZWxsKTsKKyAgICBOb2RlKiBu
b2RlVG9TcGxpdFRvOworICAgIGlmIChlbmNsb3NpbmdDZWxsKQorICAgICAgICBub2RlVG9TcGxp
dFRvID0gZW5jbG9zaW5nQ2VsbDsKKyAgICBlbHNlIGlmIChlbmNsb3NpbmdMaXN0KHN0YXJ0Lm5v
ZGUoKSkpCisgICAgICAgIG5vZGVUb1NwbGl0VG8gPSBlbmNsb3NpbmdCbG9jayhzdGFydC5ub2Rl
KCkpOworICAgIGVsc2UKKyAgICAgICAgbm9kZVRvU3BsaXRUbyA9IGVkaXRhYmxlUm9vdEZvclBv
c2l0aW9uKHN0YXJ0KTsKKyAgICBSZWZQdHI8Tm9kZT4gc3RhcnRPZk5ld0Jsb2NrID0gc3BsaXRU
cmVlVG9Ob2RlKHN0YXJ0Lm5vZGUoKSwgbm9kZVRvU3BsaXRUbyk7CisKICAgICBpZiAoIXRhcmdl
dEJsb2NrcXVvdGUpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGJsb2NrcXVvdGUgYW5kIGlu
c2VydCBpdCBhcyBhIGNoaWxkIG9mIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQuIFdlIGFjY29t
cGxpc2gKICAgICAgICAgLy8gdGhpcyBieSBzcGxpdHRpbmcgYWxsIHBhcmVudHMgb2YgdGhlIGN1
cnJlbnQgcGFyYWdyYXBoIHVwIHRvIHRoYXQgcG9pbnQuCiAgICAgICAgIHRhcmdldEJsb2NrcXVv
dGUgPSBjcmVhdGVJbmRlbnRCbG9ja3F1b3RlRWxlbWVudChkb2N1bWVudCgpKTsKLSAgICAgICAg
UG9zaXRpb24gc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKGVuZE9mQ3VycmVudFBhcmFncmFwaCku
ZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgZW5jbG9zaW5nQ2VsbCA9IGVuY2xvc2luZ05vZGVP
ZlR5cGUoc3RhcnQsICZpc1RhYmxlQ2VsbCk7Ci0gICAgICAgIE5vZGUqIG5vZGVUb1NwbGl0VG8g
PSBlbmNsb3NpbmdDZWxsID8gZW5jbG9zaW5nQ2VsbCA6IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9u
KHN0YXJ0KTsKLSAgICAgICAgUmVmUHRyPE5vZGU+IHN0YXJ0T2ZOZXdCbG9jayA9IHNwbGl0VHJl
ZVRvTm9kZShzdGFydC5ub2RlKCksIG5vZGVUb1NwbGl0VG8pOwogICAgICAgICBpbnNlcnROb2Rl
QmVmb3JlKHRhcmdldEJsb2NrcXVvdGUsIHN0YXJ0T2ZOZXdCbG9jayk7CiAgICAgfQogCi0gICAg
UmVmUHRyPEVsZW1lbnQ+IGluc2VydGlvblBvaW50ID0gcHJlcGFyZUJsb2NrcXVvdGVMZXZlbEZv
ckluc2VydGlvbihlbmRPZkN1cnJlbnRQYXJhZ3JhcGgsIHRhcmdldEJsb2NrcXVvdGUpOwotCisg
ICAgbW92ZVBhcmFncmFwaFdpdGhDbG9uZXMoc3RhcnRPZlBhcmFncmFwaChlbmRPZkN1cnJlbnRQ
YXJhZ3JhcGgpLCBlbmRPZkN1cnJlbnRQYXJhZ3JhcGgsIHRhcmdldEJsb2NrcXVvdGUuZ2V0KCks
IHN0YXJ0T2ZOZXdCbG9jay5nZXQoKSk7CisgICAgCiAgICAgLy8gRG9uJ3QgcHV0IHRoZSBuZXh0
IHBhcmFncmFwaCBpbiB0aGUgYmxvY2txdW90ZSB3ZSBqdXN0IGNyZWF0ZWQgZm9yIHRoaXMgcGFy
YWdyYXBoIHVubGVzcyAKICAgICAvLyB0aGUgbmV4dCBwYXJhZ3JhcGggaXMgaW4gdGhlIHNhbWUg
Y2VsbC4KICAgICBpZiAoZW5jbG9zaW5nQ2VsbCAmJiBlbmNsb3NpbmdDZWxsICE9IGVuY2xvc2lu
Z05vZGVPZlR5cGUoZW5kT2ZOZXh0UGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCksICZpc1RhYmxl
Q2VsbCkpCiAgICAgICAgIHRhcmdldEJsb2NrcXVvdGUgPSAwOwotCi0gICAgbW92ZVBhcmFncmFw
aChzdGFydE9mUGFyYWdyYXBoKGVuZE9mQ3VycmVudFBhcmFncmFwaCksIGVuZE9mQ3VycmVudFBh
cmFncmFwaCwgVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKGluc2VydGlvblBvaW50LCAwKSksIHRy
dWUpOwogfQogCiB2b2lkIEluZGVudE91dGRlbnRDb21tYW5kOjppbmRlbnRSZWdpb24oKQpAQCAt
MTkxLDggKzE2MSw2IEBAIHZvaWQgSW5kZW50T3V0ZGVudENvbW1hbmQ6OmluZGVudFJlZ2lvbigK
ICAgICAgICAgICAgIGJsb2NrcXVvdGVGb3JOZXh0SW5kZW50ID0gMDsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgaW5kZW50SW50b0Jsb2NrcXVvdGUoZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBl
bmRPZk5leHRQYXJhZ3JhcGgsIGJsb2NrcXVvdGVGb3JOZXh0SW5kZW50KTsKLSAgICAgICAgICAg
IC8vIGJsb2NrcXVvdGVGb3JOZXh0SW5kZW50IG1heWJlIHVwZGF0ZWQKLSAgICAgICAgICAgIC8v
IHRoaXMgaXMgZHVlIHRvIHRoZSB3YXkgcHJlcGFyZUJsb2NrcXVvdGVMZXZlbEZvckluc2VydGlv
biB3YXMgZGVzaWduZWQuCiAgICAgICAgIC8vIFNhbml0eSBjaGVjazogTWFrZSBzdXJlIG91ciBt
b3ZlUGFyYWdyYXBoIGNhbGxzIGRpZG4ndCByZW1vdmUgZW5kT2ZOZXh0UGFyYWdyYXBoLmRlZXBF
cXVpdmFsZW50KCkubm9kZSgpCiAgICAgICAgIC8vIElmIHNvbWVob3cgd2UgZGlkLCByZXR1cm4g
dG8gcHJldmVudCBjcmFzaGVzLgogICAgICAgICBpZiAoZW5kT2ZOZXh0UGFyYWdyYXBoLmlzTm90
TnVsbCgpICYmICFlbmRPZk5leHRQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCktPmlu
RG9jdW1lbnQoKSkgewpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5k
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmgJ
KHJldmlzaW9uIDQ5ODcxKQorKysgV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
ZGVudFJlZ2lvbigpOwogICAgIHZvaWQgb3V0ZGVudFJlZ2lvbigpOwogICAgIHZvaWQgb3V0ZGVu
dFBhcmFncmFwaCgpOwotICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gcHJlcGFyZUJsb2NrcXVvdGVM
ZXZlbEZvckluc2VydGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBSZWZQdHI8RWxlbWVudD4m
KTsKICAgICBib29sIHRyeUluZGVudGluZ0FzTGlzdEl0ZW0oY29uc3QgVmlzaWJsZVBvc2l0aW9u
Jik7CiAgICAgdm9pZCBpbmRlbnRJbnRvQmxvY2txdW90ZShjb25zdCBWaXNpYmxlUG9zaXRpb24m
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBSZWZQdHI8RWxlbWVudD4mKTsKIApJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNDk4NzMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyOSBAQAorMjAwOS0xMC0yMCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJFR1JFU1NJT046IENvcHkgaXMgY29weWluZyBpbmNvcnJlY3QgYmFja2dyb3VuZC1jb2xvcgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzI0ODUyOT4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5Njk3CisKKyAgICAgICAgQWxsIHRoZSBmb2xsb3dp
bmcgdGVzdHMgaGF2ZSBiZWVuIHJlLWJhc2VsaW5lZCBiZWNhdXNlCisgICAgICAgIHRoZSBpbmRl
bnQgY29tbWFuZCBub3cgcHJlc2VydmVzIHRoZSBvcmlnaW5hbCBtYXJrdXAuCisgICAgICAgIAor
ICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvMTkwODctZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvMTk2NTMtMS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtZGl2LWluc2lkZS1saXN0LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtYmxvY2txdW90ZXMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3Rl
ZC1kaXYtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50
LXNlY29uZC1wYXJhZ3JhcGgtaW4tYmxvY2txdW90ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtd2l0aC1zdHlsZS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZWRpdGluZy9pbnNlcnRpbmcvNTk5NDQ4MC0yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC80NjQxODgwLTItZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MTY1NDEtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUx
Mzg0NDEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWND
b21tYW5kLzU0ODE1MjMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0
aW5nL2V4ZWNDb21tYW5kL2luZGVudC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2VsZWN0LWVsZW1lbnQtMS1leHBlY3Rl
ZC50eHQ6CisKIDIwMDktMTAtMjAgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIEFub3RoZXIgYmF0Y2ggb2Ygc2tpcHBlZCB0ZXN0cyB3aXRoIGxpbmtzIHRvIHRoZWly
IGJ1Z3MuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzE5MDg3LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzE5
MDg3LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDk4NzEpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kLzE5MDg3LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMywzICsz
LDUgQEAgVGhpcyB0ZXN0cyBmb3IgYSBjcmFzaCB3aGVuIGluZGVudGluZyBhIAogCiAKIAorCisK
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvMTk2NTMtMS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC8xOTY1My0x
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDk4NzEpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kLzE5NjUzLTEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUs
NyBAQCBUaGlzIHRlc3RzIGNyZWF0aW5nIGEgbGlzdCBmcm9tIGFuIGVtcHR5CiA8dWw+PGxpPjxi
PkJvbGQ8L2I+PC9saT48L3VsPgogCiBUaGlzIHRlc3RzIGluZGVudGluZyBhbiBlbXB0eSBwYXJh
Z3JhcGggd2l0aCBib2xkIGFscmVhZHkgYXBwbGllZCB0byBpdC4gVGhlIHdvcmQgYmVsb3cgc2hv
dWxkIGJlIGJvbGQuCi08YmxvY2txdW90ZSBjbGFzcz0id2Via2l0LWluZGVudC1ibG9ja3F1b3Rl
IiBzdHlsZT0ibWFyZ2luOiAwIDAgMCA0MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsi
PjxiPkJvbGQ8L2I+PC9ibG9ja3F1b3RlPgorPGJsb2NrcXVvdGUgY2xhc3M9IndlYmtpdC1pbmRl
bnQtYmxvY2txdW90ZSIgc3R5bGU9Im1hcmdpbjogMCAwIDAgNDBweDsgYm9yZGVyOiBub25lOyBw
YWRkaW5nOiAwcHg7Ij48ZGl2PjxiPkJvbGQ8L2I+PC9kaXY+PC9ibG9ja3F1b3RlPgogCiBUaGlz
IHRlc3RzIGluZGVudGluZyBhbiBlbXB0eSBwYXJhZ3JhcGggd2hlbiB0aGUgdHlwaW5nIHN0eWxl
IHdhcyBCb2xkLiBUaGUgd29yZCBiZWxvdyBzaG91bGQgYmUgYm9sZC4KIDxibG9ja3F1b3RlIGNs
YXNzPSJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiIHN0eWxlPSJtYXJnaW46IDAgMCAwIDQwcHg7
IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMHB4OyI+PGI+Qm9sZDwvYj48L2Jsb2NrcXVvdGU+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1kaXYtaW5zaWRlLWxp
c3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvaW5kZW50LWRpdi1pbnNpZGUtbGlzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ5ODcx
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtZGl2LWluc2lkZS1s
aXN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw0ICs0LDQgQEAgYQogaGVsbG8K
IHdvcmxkCiBiCi1hIDx1bD4gPGxpPmhlbGxvPC9saT48L3VsPjxibG9ja3F1b3RlIGNsYXNzPSJ3
ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiIHN0eWxlPSJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRl
cjogbm9uZTsgcGFkZGluZzogMHB4OyI+d29ybGQ8L2Jsb2NrcXVvdGU+IGIKK2EgPHVsPiA8bGk+
aGVsbG88ZGl2IGlkPSJ0ZXN0Ij48YmxvY2txdW90ZSBjbGFzcz0id2Via2l0LWluZGVudC1ibG9j
a3F1b3RlIiBzdHlsZT0ibWFyZ2luOiAwIDAgMCA0MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6
IDBweDsiPiB3b3JsZCA8L2Jsb2NrcXVvdGU+PC9kaXY+PC9saT48L3VsPiBiCkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtYmxvY2txdW90ZXMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQv
aW5kZW50LW5lc3RlZC1ibG9ja3F1b3Rlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ5ODcxKQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWJsb2NrcXVv
dGVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw0ICs0LDQgQEAgaGVsbG8KIHdv
cmxkCiB3ZWJraXQKIGlzIGdyZWF0Ci08YmxvY2txdW90ZSBpZD0ib3V0ZXIiPiBoZWxsbyA8Ymxv
Y2txdW90ZSBpZD0iaW5uZXIiPiB3b3JsZDxicj48L2Jsb2NrcXVvdGU+PC9ibG9ja3F1b3RlPjxi
bG9ja3F1b3RlIGNsYXNzPSJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiIHN0eWxlPSJtYXJnaW46
IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMHB4OyI+PGJsb2NrcXVvdGUgY2xh
c3M9IndlYmtpdC1pbmRlbnQtYmxvY2txdW90ZSIgc3R5bGU9Im1hcmdpbjogMCAwIDAgNDBweDsg
Ym9yZGVyOiBub25lOyBwYWRkaW5nOiAwcHg7Ij48YmxvY2txdW90ZSBjbGFzcz0id2Via2l0LWlu
ZGVudC1ibG9ja3F1b3RlIiBzdHlsZT0ibWFyZ2luOiAwIDAgMCA0MHB4OyBib3JkZXI6IG5vbmU7
IHBhZGRpbmc6IDBweDsiPndlYmtpdDwvYmxvY2txdW90ZT48L2Jsb2NrcXVvdGU+PC9ibG9ja3F1
b3RlPjxibG9ja3F1b3RlIGlkPSJvdXRlciI+IGlzIGdyZWF0IDwvYmxvY2txdW90ZT4KKzxibG9j
a3F1b3RlIGlkPSJvdXRlciI+IGhlbGxvIDxibG9ja3F1b3RlIGlkPSJpbm5lciI+IHdvcmxkPGJy
PjwvYmxvY2txdW90ZT48L2Jsb2NrcXVvdGU+PGJsb2NrcXVvdGUgY2xhc3M9IndlYmtpdC1pbmRl
bnQtYmxvY2txdW90ZSIgc3R5bGU9Im1hcmdpbjogMCAwIDAgNDBweDsgYm9yZGVyOiBub25lOyBw
YWRkaW5nOiAwcHg7Ij48YmxvY2txdW90ZSBpZD0ib3V0ZXIiPjxibG9ja3F1b3RlIGlkPSJpbm5l
ciI+IHdlYmtpdCA8L2Jsb2NrcXVvdGU+PC9ibG9ja3F1b3RlPjwvYmxvY2txdW90ZT48YmxvY2tx
dW90ZSBpZD0ib3V0ZXIiPiBpcyBncmVhdCA8L2Jsb2NrcXVvdGU+CkluZGV4OiBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtZGl2LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQt
ZGl2LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDk4NzEpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtZGl2LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSw0ICsxLDQgQEAKIFRoaXMgdGVzdHMgaW5kZW50aW5nIG5lc3RlZCBkaXZzLiBCeSBp
bmRlbnRpbmcgImhlbGxvIiwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZW5jbG9zZSBhbGwgdGhyZWUg
YmxvY2tzIDEgdGhyb3VnaCAzIGJ5IGEgYmxvY2txdW90ZQogCiBoZWxsbwotPGJsb2NrcXVvdGUg
Y2xhc3M9IndlYmtpdC1pbmRlbnQtYmxvY2txdW90ZSIgc3R5bGU9Im1hcmdpbjogMCAwIDAgNDBw
eDsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAwcHg7Ij5oZWxsbzwvYmxvY2txdW90ZT4KKzxibG9j
a3F1b3RlIGNsYXNzPSJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiIHN0eWxlPSJtYXJnaW46IDAg
MCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMHB4OyI+PGRpdiBpZD0iYmxvY2sxIj48
ZGl2IGlkPSJibG9jazIiPjxkaXYgaWQ9ImJsb2NrMyI+aGVsbG88L2Rpdj48L2Rpdj48L2Rpdj48
L2Jsb2NrcXVvdGU+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVu
dC1zZWNvbmQtcGFyYWdyYXBoLWluLWJsb2NrcXVvdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXNlY29uZC1wYXJhZ3Jh
cGgtaW4tYmxvY2txdW90ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ5ODcxKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtc2Vjb25kLXBhcmFncmFwaC1pbi1ibG9j
a3F1b3RlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw0ICsyLDQgQEAgVGhpcyB0
ZXN0cyBpbmRlbnRpbmcgdGhlIHNlY29uZCBwYXJhZ3JhcAogCiBoZWxsbwogd29ybGQKLTxibG9j
a3F1b3RlIGlkPSJ0ZXN0Ij4gaGVsbG88YnI+PC9ibG9ja3F1b3RlPjxibG9ja3F1b3RlIGNsYXNz
PSJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiIHN0eWxlPSJtYXJnaW46IDAgMCAwIDQwcHg7IGJv
cmRlcjogbm9uZTsgcGFkZGluZzogMHB4OyI+PGJsb2NrcXVvdGUgY2xhc3M9IndlYmtpdC1pbmRl
bnQtYmxvY2txdW90ZSIgc3R5bGU9Im1hcmdpbjogMCAwIDAgNDBweDsgYm9yZGVyOiBub25lOyBw
YWRkaW5nOiAwcHg7Ij53b3JsZDwvYmxvY2txdW90ZT48L2Jsb2NrcXVvdGU+Cis8YmxvY2txdW90
ZSBpZD0idGVzdCI+IGhlbGxvPGJyPjwvYmxvY2txdW90ZT48YmxvY2txdW90ZSBjbGFzcz0id2Vi
a2l0LWluZGVudC1ibG9ja3F1b3RlIiBzdHlsZT0ibWFyZ2luOiAwIDAgMCA0MHB4OyBib3JkZXI6
IG5vbmU7IHBhZGRpbmc6IDBweDsiPjxibG9ja3F1b3RlIGlkPSJ0ZXN0Ij4gd29ybGQgPC9ibG9j
a3F1b3RlPjwvYmxvY2txdW90ZT4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvaW5kZW50LXdpdGgtc3R5bGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXdpdGgtc3R5bGUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA0OTg3MSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50
LXdpdGgtc3R5bGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQCBF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPCiBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRp
b24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1F
RElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RP
TVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IFNQQU4gPiBCTE9DS1FVT1RFID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IFNQQU4gPiBCTE9DS1FVT1RF
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZp
bml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAw
IG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJMT0NLUVVPVEUgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJMT0NLUVVPVEUgPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93
bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmlj
YXRpb24KIFRoaXMgdGVzdHMgaW5kZW50aW5nIHR3byBhbmQgdGhyZWUuIFlvdSBzaG91bGQgc2Vl
IHR3byBhbmQgdGhyZWUgaW5kZW50ZWQgYW5kIHdpdGggdGhlIHNhbWUgYmFja2dyb3VuZCBjb2xv
ciBhcyBvbmUgYW5kIGZvdXIuCkBAIC0xNCw0ICsxNCw0IEBAIHRocmVlCiBmb3VyCiAKIEJlZm9y
ZSBvcmRlcmVkIGxpc3Q6IDxkaXY+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAwLCAwKTsiPm9uZTwvc3Bhbj48L2Rpdj4gPGRp
diBpZD0idGVzdDEiPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dy
b3VuZC1jb2xvcjogcmdiKDI1NSwgMCwgMCk7Ij50d288L3NwYW4+PC9kaXY+IDxkaXYgaWQ9InRl
c3QyIj48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImJhY2tncm91bmQtY29s
b3I6IHJnYigyNTUsIDAsIDApOyI+dGhyZWU8L3NwYW4+PC9kaXY+IDxkaXY+PHNwYW4gY2xhc3M9
IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAwLCAw
KTsiPmZvdXI8L3NwYW4+PC9kaXY+Ci1BZnRlciBvcmRlcmVkOiA8ZGl2PjxzcGFuIGNsYXNzPSJB
cHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMCwgMCk7
Ij5vbmU8L3NwYW4+PC9kaXY+IDxibG9ja3F1b3RlIGNsYXNzPSJ3ZWJraXQtaW5kZW50LWJsb2Nr
cXVvdGUiIHN0eWxlPSJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFkZGluZzog
MHB4OyI+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJiYWNrZ3JvdW5kLWNv
bG9yOiByZ2IoMjU1LCAwLCAwKTsgIj50d288L3NwYW4+PGJyPjxzcGFuIGNsYXNzPSJBcHBsZS1z
dHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMCwgMCk7ICI+dGhy
ZWU8L3NwYW4+PC9ibG9ja3F1b3RlPiA8ZGl2PjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFu
IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMCwgMCk7Ij5mb3VyPC9zcGFuPjwv
ZGl2PgorQWZ0ZXIgb3JkZXJlZDogPGRpdj48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIg
c3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDAsIDApOyI+b25lPC9zcGFuPjwvZGl2
PiA8YmxvY2txdW90ZSBjbGFzcz0id2Via2l0LWluZGVudC1ibG9ja3F1b3RlIiBzdHlsZT0ibWFy
Z2luOiAwIDAgMCA0MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiPjxkaXYgaWQ9InRl
c3QxIj48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImJhY2tncm91bmQtY29s
b3I6IHJnYigyNTUsIDAsIDApOyI+dHdvPC9zcGFuPjwvZGl2PjxkaXYgaWQ9InRlc3QyIj48c3Bh
biBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigy
NTUsIDAsIDApOyI+dGhyZWU8L3NwYW4+PC9kaXY+PC9ibG9ja3F1b3RlPiA8ZGl2PjxzcGFuIGNs
YXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwg
MCwgMCk7Ij5mb3VyPC9zcGFuPjwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNl
cnRpbmcvNTk5NDQ4MC0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2luc2VydGluZy81OTk0NDgwLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0OTg3MSkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nLzU5OTQ0ODAtMi1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTxmb250IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFu
IiBmYWNlPSInTHVjaWRhIEdyYW5kZSciIHNpemU9IjMiPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHls
ZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyBmb250
LXNpemU6IDExcHg7Ij48YnI+PC9zcGFuPjwvZm9udD4KKzxmb250IGNsYXNzPSJBcHBsZS1zdHls
ZS1zcGFuIiBmYWNlPSInTHVjaWRhIEdyYW5kZSciIHNpemU9IjMiPjxzcGFuIGNsYXNzPSJBcHBs
ZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1zaXplOiAxMXB4OyI+PGJyPjwvc3Bhbj48L2ZvbnQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC80NjQx
ODgwLTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ2NDE4ODAtMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ5
ODcxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvNDY0
MTg4MC0yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAgRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZwogRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgot
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBCTE9DS1FVT1RFID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMzQgb2YgI3RleHQgPiBCTE9DS1FVT1RFID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJl
YW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNl
bGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4g
QkxPQ0tRVU9URSA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDM1IG9mICN0ZXh0
ID4gQkxPQ0tRVU9URSA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5T
U2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2Vi
Vmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCkBA
IC0yNCw1ICsyNCw1IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDI0NngxOAogICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMjQ2OiAiVGhpcyBwYXJhZ3JhcGggc2hvdWxkIG5vdCBiZSBpbmRl
bnRlZC4iCiAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMjQ2LDE0KSBzaXplIDB4MAotc2Vs
ZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtC
TE9DS1FVT1RFfSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAg
e0hUTUx9IG9mIGRvY3VtZW50Ci1zZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDM0IG9mIGNoaWxk
IDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtCTE9DS1FVT1RFfSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNo
aWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CitzZWxlY3Rpb24gc3Rh
cnQ6IHBvc2l0aW9uIDEgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDAge0JMT0NLUVVPVEV9
IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2Yg
ZG9jdW1lbnQKK3NlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gMzUgb2YgY2hpbGQgMCB7I3RleHR9
IG9mIGNoaWxkIDAge0JMT0NLUVVPVEV9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9E
WX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MTY1NDEtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MTY1
NDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0OTg3MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MTY1NDEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xMCwxMSArMTAsMTMgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDMyMDogIidmb28nIGFuZCAnYmFyJyBiZWZv
cmUgYW5kIGFmdGVyIHRoZSBpbmRlbnQgb3BlcmF0aW9uLiIKICAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgwLDUyKSBzaXplIDc4NHgzNgogICAgICAgICBSZW5kZXJCbG9jayB7QkxPQ0tRVU9U
RX0gYXQgKDQwLDApIHNpemUgNzQ0eDM2Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMjF4MTgKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIx
OiAiZm9vIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDIxLDE0KSBzaXplIDB4MAotICAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxOCkgc2l6ZSAyMHgxOAotICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDIwOiAiYmFyIgorICAgICAgICAgIFJlbmRlcklu
bGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAyMXgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgMjF4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMjE6ICJmb28iCisgICAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgyMSwxNCkg
c2l6ZSAweDAKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMjB4
MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxOCkgc2l6ZSAyMHgxOAor
ICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMjA6ICJiYXIiCiAgICAgICAg
IFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDM2KSBzaXplIDc4NHgwCi1zZWxlY3Rpb24g
c3RhcnQ6IHBvc2l0aW9uIDEgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDAge0JMT0NLUVVP
VEV9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0g
b2YgZG9jdW1lbnQKLXNlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gMiBvZiBjaGlsZCAyIHsjdGV4
dH0gb2YgY2hpbGQgMCB7QkxPQ0tRVU9URX0gb2YgY2hpbGQgMiB7RElWfSBvZiBjaGlsZCAxIHtC
T0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAorc2VsZWN0aW9uIHN0YXJ0OiBwb3Np
dGlvbiAxIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtTUEFOfSBvZiBjaGlsZCAwIHtC
TE9DS1FVT1RFfSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAg
e0hUTUx9IG9mIGRvY3VtZW50CitzZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDIgb2YgY2hpbGQg
MCB7I3RleHR9IG9mIGNoaWxkIDEge1NQQU59IG9mIGNoaWxkIDAge0JMT0NLUVVPVEV9IG9mIGNo
aWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1l
bnQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUx
Mzg0NDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUxMzg0NDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0OTg3
MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUxMzg0
NDEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw5ICsxMSwxMCBAQCBsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzNikgd2lkdGgg
MTQ5OiAidG8gaW1wbGVtZW50IGluZGVudGluZy4iCiAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCw3MCkgc2l6ZSA3ODR4NjIKICAgICAgICAgUmVuZGVyQmxvY2sge0JMT0NLUVVPVEV9IGF0
ICg0MCwwKSBzaXplIDc0NHgxOAotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDIzMHgxOAotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjMwOiAi
VGhpcyBzaG91bGQgYmUgaW5kZW50ZWQsIG5vdCBxdW90ZWQuIgorICAgICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzQ0eDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSAyMzB4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMjMwOiAiVGhpcyBzaG91bGQgYmUgaW5kZW50ZWQsIG5vdCBxdW90ZWQuIgogICAg
ICAgICBSZW5kZXJCbG9jayB7QkxPQ0tRVU9URX0gYXQgKDgsMjYpIHNpemUgNzY4eDM2IFtib3Jk
ZXI6ICgxcHggZGFzaGVkICNBQUFBQUEpXQogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoOSw5KSBzaXplIDE3NXgxOAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDksOSkgd2lkdGgg
MTc1OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBRdW90ZWQuIgotY2FyZXQ6IHBvc2l0aW9uIDAgb2Yg
Y2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge0JMT0NLUVVPVEV9IG9mIGNoaWxkIDMge0RJVn0g
b2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKK2NhcmV0OiBw
b3NpdGlvbiAwIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtESVZ9IG9mIGNoaWxkIDEg
e0JMT0NLUVVPVEV9IG9mIGNoaWxkIDMge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQg
MCB7SFRNTH0gb2YgZG9jdW1lbnQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL2V4ZWNDb21tYW5kLzU0ODE1MjMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU0ODE1MjMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA0OTg3MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L2V4ZWNDb21tYW5kLzU0ODE1MjMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw2IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAgICAgICAgICAg
UmVuZGVyVGFibGVDZWxsIHtURH0gYXQgKDQ1LDI2KSBzaXplIDM0eDIyIFtib3JkZXI6ICgxcHgg
aW5zZXQgIzgwODA4MCldIFtyPTEgYz0xIHJzPTEgY3M9MV0KICAgICAgICAgICAgICAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyLDIpIHNpemUgMzB4MTgKICAgICAgICAgICAgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMiwyKSB3aWR0aCAzMDogIkZvdXIiCi0gICAgICAgICAgICBSZW5k
ZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw1Mikgc2l6ZSA3MDR4MAogICAgICAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCw1Mikgc2l6ZSA3ODR4MAogc2VsZWN0aW9uIHN0YXJ0OiBw
b3NpdGlvbiAwIG9mIGNoaWxkIDAge1RBQkxFfSBvZiBjaGlsZCAwIHtCTE9DS1FVT1RFfSBvZiBj
aGlsZCAxIHtCTE9DS1FVT1RFfSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9m
IGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50Ci1zZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDEg
b2YgY2hpbGQgMCB7VEFCTEV9IG9mIGNoaWxkIDAge0JMT0NLUVVPVEV9IG9mIGNoaWxkIDEge0JM
T0NLUVVPVEV9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7
SFRNTH0gb2YgZG9jdW1lbnQKK3NlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gMiBvZiBjaGlsZCAw
IHtUQUJMRX0gb2YgY2hpbGQgMCB7QkxPQ0tRVU9URX0gb2YgY2hpbGQgMSB7QkxPQ0tRVU9URX0g
b2YgY2hpbGQgMiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBk
b2N1bWVudApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1h
bmQvaW5kZW50LXNlbGVjdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXNlbGVjdGlvbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDQ5ODcxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXNlbGVjdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTMsNyArMyw3IEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVk
aXRpbmcKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9u
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5n
ZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0
ID4gQkxPQ0tRVU9URSA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3Rl
eHQgPiBCTE9DS1FVT1RFID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6
TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJ
TkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFu
Z2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gU1BBTiA+IEJMT0NLUVVPVEUgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gU1BBTiA+IEJMT0NLUVVPVEUgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5
RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9u
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3Rp
ZmljYXRpb24KIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMApAQCAtMTksOSArMTksMTAgQEAg
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MCwzNikgc2l6ZSA3ODR4MTk0CiAgICAgICAgIFJlbmRlckJsb2NrIHtCTE9DS1FVT1RFfSBhdCAo
NDAsMCkgc2l6ZSA3NDR4NTQKICAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAo
MCwwKSBzaXplIDc0NHgzNgotICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgNDJ4MTgKLSAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDI6ICJM
b3JlbSIKLSAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDQyLDE0KSBzaXplIDB4MAorICAg
ICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDQyeDE4CisgICAgICAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDQyeDE4CisgICAgICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDI6ICJMb3JlbSIKKyAgICAgICAgICAgICAg
UmVuZGVyQlIge0JSfSBhdCAoNDIsMTQpIHNpemUgMHgwCiAgICAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMTgpIHNpemUgODN4MTgKICAgICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMTgpIHdpZHRoIDgzOiAibW9yZSBMb3JlbSEiCiAgICAgICAgICAgUmVuZGVyQmxvY2sge0JM
T0NLUVVPVEV9IGF0ICg0MCwzNikgc2l6ZSA3MDR4MTgKQEAgLTUxLDggKzUyLDkgQEAgbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAzNHgxOAogICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAz
NDogIlN1bSEiCiAgICAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgzNCwxNCkgc2l6ZSAweDAK
LSAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxOCkgc2l6ZSAzOHgxOAotICAg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMzg6ICJUaGluZyIKKyAgICAgICAg
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAzOHgxOAorICAgICAgICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMTgpIHNpemUgMzh4MTgKKyAgICAgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMzg6ICJUaGluZyIKICAgICAgICAgUmVuZGVyQmxv
Y2sgKGFub255bW91cykgYXQgKDAsMTk0KSBzaXplIDc4NHgwCi1zZWxlY3Rpb24gc3RhcnQ6IHBv
c2l0aW9uIDAgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge0JMT0NLUVVPVEV9IG9mIGNo
aWxkIDQge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1l
bnQKLXNlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gNSBvZiBjaGlsZCAzIHsjdGV4dH0gb2YgY2hp
bGQgMyB7QkxPQ0tRVU9URX0gb2YgY2hpbGQgNCB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBj
aGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAorc2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAwIG9m
IGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtTUEFOfSBvZiBjaGlsZCAxIHtCTE9DS1FVT1RF
fSBvZiBjaGlsZCA0IHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9m
IGRvY3VtZW50CitzZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDUgb2YgY2hpbGQgMCB7I3RleHR9
IG9mIGNoaWxkIDMge1NQQU59IG9mIGNoaWxkIDMge0JMT0NLUVVPVEV9IG9mIGNoaWxkIDQge0RJ
Vn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2VsZWN0LWVsZW1l
bnQtMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvcGFzdGVib2FyZC9zZWxlY3QtZWxlbWVudC0xLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNDk4NzEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJk
L3NlbGVjdC1lbGVtZW50LTEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICsz
MCw3IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAgIHRleHQgcnVuIGF0
ICgyNTMsMCkgd2lkdGggMjIwOiAiQWxsIHRoZSBvcHRpb25zIHNob3VsZCBiZSBpbmNsdWRlZC4i
CiAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzNCkgc2l6ZSA3ODR4MTMKICAgICAgICAg
UmVuZGVySW5saW5lIHtGT05UfSBhdCAoMCwwKSBzaXplIDB4MTgKLSAgICAgICAgICBSZW5kZXJJ
bmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgxMyBbYmdjb2xvcj0jRkZGRkZGXQorICAgICAg
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDEzCiAgICAgICAgICAgICBS
ZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgxMwogICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDAsNDcpIHNpemUgNzg0eDIyCiAgICAgICAgIFJlbmRlck1lbnVMaXN0IHtTRUxFQ1R9IGF0
ICgyLDIpIHNpemUgNjJ4MTggW2JnY29sb3I9I0ZGRkZGRl0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41572</attachid>
            <date>2009-10-21 10:03:37 -0700</date>
            <delta_ts>2009-10-22 17:09:39 -0700</delta_ts>
            <desc>Patch4</desc>
            <filename>bug7248529.txt</filename>
            <type>text/plain</type>
            <size>36654</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTg3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMTAtMjAgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
RUdSRVNTSU9OOiBDb3B5IGlzIGNvcHlpbmcgaW5jb3JyZWN0IGJhY2tncm91bmQtY29sb3IKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyNDg1Mjk+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY5NworCisgICAgICAgIFRoaXMgY2hhbmdlIHJlbW92
ZXMgdGhlIEJhY2tncm91bmRDb2xvciBmcm9tIHRoZSBsaXN0IAorICAgICAgICBvZiBpbmhlcml0
YWJsZSBDU1MgcHJvcGVydGllcyBhbmQgY2hhbmdlcyBzaWduaWZpY2FudGx5CisgICAgICAgIHRo
ZSB3YXkgd2UgcGVyZm9ybSBpbmRlbnRhdGlvbi4KKyAgICAgICAgVGhlIG5ldyBpbXBsZW1lbnRh
dGlvbiBvZiBJbmRlbnRPdXRkZW50Q29tbWFuZCB1c2VzIGEgbmV3IG1ldGhvZAorICAgICAgICBk
ZWZpbmVkIGluIENvbXBvc2l0ZUVkaXRDb21tYW5kIGNhbGxlZCBtb3ZlUGFyYWdyYXBoV2l0aENs
b25lcy4KKyAgICAgICAgVGhpcyBpcyBhbiBpbXByb3ZlZCB2ZXJzaW9uIG9mIHRoZSBvcmlnaW5h
bCBtb3ZlUGFyYWdyYXBoIHRoYXQKKyAgICAgICAgaXMgYWltZWQgYXQgcHJlc2VydmluZyB0aGUg
b3JpZ2luYWwgbWFya3VwIG9mIHRoZSBwYXJhZ3JhcGggYmVpbmcKKyAgICAgICAgbW92ZWQuCisg
ICAgICAgIAorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6KTogcmVtb3ZlZCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciBmcm9tIGVk
aXRpbmdTdHlsZVByb3BlcnRpZXMuCisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xvbmVI
aWVyYXJjaHlCZXR3ZWVuKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0
Q29tbWFuZDo6bW92ZVBhcmFncmFwaFdpdGhDbG9uZXMpOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6IEFkZGVkIGNsb25lSGllcmFyY2h5QmV0d2VlbiBh
bmQgbW92ZVBhcmFncmFwaFdpdGhDbG9uZXMuCisgICAgICAgICogZWRpdGluZy9JbmRlbnRPdXRk
ZW50Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmRlbnRPdXRkZW50Q29tbWFuZDo6
dHJ5SW5kZW50aW5nQXNMaXN0SXRlbSk6IENoYW5nZWQgdG8gdXNlIG1vdmVQYXJhZ3JhcGhXaXRo
Q2xvbmVzLgorICAgICAgICAoV2ViQ29yZTo6SW5kZW50T3V0ZGVudENvbW1hbmQ6OmluZGVudElu
dG9CbG9ja3F1b3RlKTogQ2hhbmdlZCB0byB1c2UgbW92ZVBhcmFncmFwaFdpdGhDbG9uZXMuCisg
ICAgICAgIChXZWJDb3JlOjpJbmRlbnRPdXRkZW50Q29tbWFuZDo6aW5kZW50UmVnaW9uKTogUmVt
b3ZlZCBjb21tZW50LgorICAgICAgICAqIGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuaDog
UmVtb3ZlZCBwcmVwYXJlQmxvY2txdW90ZUxldmVsRm9ySW5zZXJ0aW9uIG1ldGhvZC4KKwogMjAw
OS0xMC0yMCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHAJKHJldmlzaW9uIDQ5ODcxKQorKysgV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21t
YW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyLDcgKzM1Miw2IEBAIFJlZlB0cjxDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHIKIC8vIGUuZy4gd2hlbiBhIHVzZXIgaW5zZXJ0cyBh
IG5ldyBwYXJhZ3JhcGgsIGFsbCBwcm9wZXJ0aWVzIGxpc3RlZCBoZXJlIG11c3QgYmUgY29waWVk
IHRvIHRoZSBuZXcgcGFyYWdyYXBoLgogLy8gRklYTUU6IFRoZSBjdXJyZW50IGVkaXRpbmdTdHls
ZVByb3BlcnRpZXMgY29udGFpbnMgYWxsIGluaGVyaXRhYmxlUHJvcGVydGllcyBidXQgd2UgbWF5
IG5vdCBuZWVkIHRvIHByZXNlcnZlIGFsbCBpbmhlcml0YWJsZSBwcm9wZXJ0aWVzCiBzdGF0aWMg
Y29uc3QgaW50IGVkaXRpbmdTdHlsZVByb3BlcnRpZXNbXSA9IHsKLSAgICBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwKICAgICAvLyBDU1MgaW5oZXJpdGFibGUgcHJvcGVydGllcwogICAgIENT
U1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UsCiAgICAgQ1NTUHJvcGVydHlDb2xvciwKSW5kZXg6IFdl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gNDk4NzEpCisr
KyBXZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MzksNiArNzM5LDEyMyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpwdXNoUGFy
dGlhbGx5CiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKG9yaWdpbmFsU2VsZWN0aW9uKTsKIH0KIAor
Ly8gQ2xvbmUgYWxsIHRoZSBub2RlcyBpbiB0aGUgaGllcmFyY2h5IGJldHdlZW4gc3RhcnROb2Rl
IGFuZCBvdXRlckJsb2NrIGluY2x1ZGVkLgorLy8gSXQgaXMgcG9zc2libGUgdGhhdCBzdGFydE5v
ZGUgYW5kIG91dGVyQmxvY2sgYXJlIHRoZSBzYW1lIG5vZGU6IGluIHRoaXMgY2FzZSBpZgorLy8g
aXQgaXMgYSB0ZXh0IG5vZGUsIHdlIGNhbGwgdGhlIGNsb25lIG1ldGhvZCBzcGVjaWZpYyBmb3Ig
dGhlIHRleHQgbm9kZSwgb3RoZXJ3aXNlIHdlIGNsb25lCisvLyB0aGUgaGllcmFyY2h5IHdpdGgg
YWxsIHRoZSBjaGlsZHJlbi4KKy8vIElmIHN0YXJ0Tm9kZSBhbmQgb3V0ZXJCbG9jayBkaWZmZXIs
IHdlIGNsb25lIGVhY2ggbm9uZSBpbiBiZXR3ZWVuIGluZGl2aWR1YWxseQorLy8gKGkuZS4gd2l0
aG91dCBjaGlsZHJlbikuCisvLyBJbiBhbGwgY2FzZXMgdGhlIHJldHVybmVkIGVsZW1lbnQgaXMg
dGhlIHRvcCBub2RlLgorCitQYXNzUmVmUHRyPEVsZW1lbnQ+IENvbXBvc2l0ZUVkaXRDb21tYW5k
OjpjbG9uZUhpZXJhcmNoeUJldHdlZW4oTm9kZSogc3RhcnROb2RlLCBFbGVtZW50KiBvdXRlckJs
b2NrKQoreworICAgIFZlY3RvcjxFbGVtZW50Kj4gYW5jZXN0b3JzOworCisgICAgLy8gZmlyc3Qg
d2UgaGFuZGxlIHRoZSBjYXNlIG9mIHRoZSBoaWVyYXJjaHkgd2l0aCBvbmUgbm9kZSBvbmx5Cisg
ICAgaWYgKHN0YXJ0Tm9kZSA9PSBvdXRlckJsb2NrKSB7CisgICAgICAgIGlmIChvdXRlckJsb2Nr
LT5pc1RleHROb2RlKCkpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KHN0YXJ0Tm9kZS0+Y2xvbmVOb2RlKHRydWUpLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIG91dGVy
QmxvY2stPmNsb25lRWxlbWVudFdpdGhDaGlsZHJlbigpOworICAgIH0KKworICAgIC8vIGluc2Vy
dCBlYWNoIGVsZW1lbnQgZnJvbSBzdGFydE5vZGUgdG8gb3V0ZXJCbG9jayAoZXhjbHVkZWQpIGlu
IGEgbGlzdAorICAgIGZvciAoRWxlbWVudCogbiA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihzdGFy
dE5vZGUpOyBuICYmIG4gIT0gb3V0ZXJCbG9jazsgbiA9IG4tPnBhcmVudEVsZW1lbnQoKSkKKyAg
ICAgICAgYW5jZXN0b3JzLmFwcGVuZChuKTsgICAgCisgICAgCisgICAgLy8gTWFrZSBjbG9uZXMg
b2YgZXZlcnkgbm9kZSBiZXR3ZWVuIHN0YXJ0Tm9kZSBhbmQgb3V0ZXJCbG9jay4KKyAgICAvLyBU
aGUgdG9wIGVsZW1lbnQgcmV0dXJuZWQgaXMgdGhlIGNsb25lIG9mIG91dGVyQmxvY2sKKyAgICAK
KyAgICBSZWZQdHI8RWxlbWVudD4gdG9wRWxlbWVudCA9IG91dGVyQmxvY2stPmNsb25lRWxlbWVu
dFdpdGhvdXRDaGlsZHJlbigpOworICAgIFJlZlB0cjxFbGVtZW50PiBwYXJlbnQgPSB0b3BFbGVt
ZW50OworICAgIGZvciAoc2l6ZV90IGkgPSBhbmNlc3RvcnMuc2l6ZSgpOyBpICE9IDA7IC0taSkg
eworICAgICAgICBFbGVtZW50KiBpdGVtID0gYW5jZXN0b3JzW2kgLSAxXTsKKyAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IGNoaWxkOworICAgICAgICBpZiAoaXRlbS0+aXNUZXh0Tm9kZSgpKQorICAg
ICAgICAgICAgY2hpbGQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oKChOb2RlICopaXRlbSktPmNs
b25lTm9kZSh0cnVlKS5nZXQoKSk7CisgICAgICAgIGVsc2UgaWYgKGlzVGFibGVFbGVtZW50KGl0
ZW0pKQorICAgICAgICAgICAgY2hpbGQgPSBpdGVtLT5jbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4o
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2hpbGQgPSBpdGVtLT5jbG9uZUVsZW1lbnRX
aXRob3V0Q2hpbGRyZW4oKTsKKworICAgICAgICBhcHBlbmROb2RlKGNoaWxkLCBwYXJlbnQpOwor
ICAgICAgICBwYXJlbnQgPSBjaGlsZC5yZWxlYXNlKCk7CisgICAgfQorICAgIAorICAgIHJldHVy
biB0b3BFbGVtZW50LnJlbGVhc2UoKTsKK30KKworLy8gVGhpcyBpcyBhIG5ldyB2ZXJzaW9uIG9m
IG1vdmVQYXJhZ3JhcGggdGhhdCBwcmVzZXJ2ZXMgc3R5bGUgYnkga2VlcGluZyB0aGUgb3JpZ2lu
YWwgbWFya3VwCisvLyBJdCBpcyBjdXJyZW50bHkgdXNlZCBvbmx5IGJ5IEluZGVudE91dGRlbnRD
b21tYW5kIGJ1dCBpdCBpcyBtZWFudCB0byBiZSB1c2VkIGluIHRoZSBuZWFyCisvLyBmdXR1cmUg
Ynkgc2V2ZXJhbCBvdGhlciBjb21tYW5kcyBzdWNoIGFzIEluc2VydExpc3QgYW5kIHRoZSBhbGln
biBjb21tYW5kcy4KKwordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaFdp
dGhDbG9uZXMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLCBj
b25zdCBWaXNpYmxlUG9zaXRpb24mIGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLCBOb2RlKiBibG9ja05v
ZGUsIE5vZGUqIHN0YXJ0Tm9kZSkKK3sKKyAgICBBU1NFUlQoc3RhcnROb2RlKTsKKyAgICAgICAg
CisgICAgVmlzaWJsZVBvc2l0aW9uIGJlZm9yZVBhcmFncmFwaCA9IHN0YXJ0T2ZQYXJhZ3JhcGhU
b01vdmUucHJldmlvdXMoKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gYWZ0ZXJQYXJhZ3JhcGgoZW5k
T2ZQYXJhZ3JhcGhUb01vdmUubmV4dCgpKTsKKyAgICAKKyAgICAvLyBXZSB1cHN0cmVhbSgpIHRo
ZSBlbmQgYW5kIGRvd25zdHJlYW0oKSB0aGUgc3RhcnQgc28gdGhhdCB3ZSBkb24ndCBpbmNsdWRl
IGNvbGxhcHNlZCB3aGl0ZXNwYWNlIGluIHRoZSBtb3ZlLgorICAgIC8vIFdoZW4gd2UgcGFzdGUg
YSBmcmFnbWVudCwgc3BhY2VzIGFmdGVyIHRoZSBlbmQgYW5kIGJlZm9yZSB0aGUgc3RhcnQgYXJl
IHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZSByZW5kZXJlZC4gICAgCisgICAgUG9zaXRpb24g
c3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkuZG93bnN0cmVh
bSgpOworICAgIFBvc2l0aW9uIGVuZCA9IGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFs
ZW50KCkudXBzdHJlYW0oKTsKKworICAgIFJlZlB0cjxFbGVtZW50PiBuZXdQYXJhZ3JhcGggPSBj
bG9uZUhpZXJhcmNoeUJldHdlZW4oc3RhcnQubm9kZSgpLCBzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
c3RhcnROb2RlKSk7ICAgIAorICAgICAgCisgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVT
ZWxlY3Rpb24oc3RhcnQsIGVuZCwgRE9XTlNUUkVBTSkpOworICAgIGRlbGV0ZVNlbGVjdGlvbihm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgCisgICAgLy8gVGhlcmUgYXJlIGJ1Z3Mg
aW4gZGVsZXRpb24gd2hlbiBpdCByZW1vdmVzIGEgZnVsbHkgc2VsZWN0ZWQgdGFibGUvbGlzdC4g
IAorICAgIC8vIEl0IGV4cGFuZHMgYW5kIHJlbW92ZXMgdGhlIGVudGlyZSB0YWJsZS9saXN0LCBi
dXQgd2lsbCBsZXQgY29udGVudAorICAgIC8vIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHRhYmxlL2xp
c3QgY29sbGFwc2Ugb250byBvbmUgbGluZS4KKyAgICAKKyAgICAvLyBEZWxldGluZyBhIHBhcmFn
cmFwaCB3aWxsIGxlYXZlIGEgcGxhY2Vob2xkZXIuICBSZW1vdmUgaXQgKGFuZCBwcnVuZQorICAg
IC8vIGVtcHR5IG9yIHVucmVuZGVyZWQgcGFyZW50cykuCisgICAgVmlzaWJsZVBvc2l0aW9uIGNh
cmV0QWZ0ZXJEZWxldGUgPSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKKyAgICBp
ZiAoaXNTdGFydE9mUGFyYWdyYXBoKGNhcmV0QWZ0ZXJEZWxldGUpICYmIGlzRW5kT2ZQYXJhZ3Jh
cGgoY2FyZXRBZnRlckRlbGV0ZSkpIHsKKyAgICAgICAgLy8gTm90ZTogV2Ugd2FudCB0aGUgcmln
aHRtb3N0IGNhbmRpZGF0ZS4KKyAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBjYXJldEFmdGVy
RGVsZXRlLmRlZXBFcXVpdmFsZW50KCkuZG93bnN0cmVhbSgpOworICAgICAgICBOb2RlKiBub2Rl
ID0gcG9zaXRpb24ubm9kZSgpOworICAgICAgICAvLyBOb3JtYWxseSBkZWxldGlvbiB3aWxsIGxl
YXZlIGEgYnIgYXMgYSBwbGFjZWhvbGRlci4KKyAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUo
YnJUYWcpKQorICAgICAgICAgICAgcmVtb3ZlTm9kZUFuZFBydW5lQW5jZXN0b3JzKG5vZGUpOwor
ICAgICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIHRvIG1vdmUgd2FzIGVtcHR5IGFuZCBpbiBhbiBl
bXB0eSBibG9jayB0aGF0IAorICAgICAgICAvLyBkb2Vzbid0IHJlcXVpcmUgYSBwbGFjZWhvbGRl
ciB0byBwcm9wIGl0c2VsZiBvcGVuIChsaWtlIGEgYm9yZGVyZWQgCisgICAgICAgIC8vIGRpdiBv
ciBhbiBsaSksIHJlbW92ZSBpdCBkdXJpbmcgdGhlIG1vdmUgKHRoZSBsaXN0IHJlbW92YWwgY29k
ZSAKKyAgICAgICAgLy8gZXhwZWN0cyB0aGlzIGJlaGF2aW9yKS4KKyAgICAgICAgZWxzZSBpZiAo
aXNCbG9jayhub2RlKSkKKyAgICAgICAgICAgIHJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyhu
b2RlKTsKKyAgICAgICAgZWxzZSBpZiAobGluZUJyZWFrRXhpc3RzQXRWaXNpYmxlUG9zaXRpb24o
Y2FyZXRBZnRlckRlbGV0ZSkpIHsKKyAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgcHJlc2VydmVk
ICdcbicgYXQgY2FyZXRBZnRlckRlbGV0ZS4KKyAgICAgICAgICAgIFRleHQqIHRleHROb2RlID0g
c3RhdGljX2Nhc3Q8VGV4dCo+KG5vZGUpOworICAgICAgICAgICAgaWYgKHRleHROb2RlLT5sZW5n
dGgoKSA9PSAxKQorICAgICAgICAgICAgICAgIHJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyhu
b2RlKTsKKyAgICAgICAgICAgIGVsc2UgCisgICAgICAgICAgICAgICAgZGVsZXRlVGV4dEZyb21O
b2RlKHRleHROb2RlLCBwb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCAxKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgIAorICAgIGFwcGVuZE5vZGUobmV3UGFyYWdyYXBoLCBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4oYmxvY2tOb2RlKSk7CisgCisgICAgLy8gQWRkIGEgYnIgaWYgcHJ1bmlu
ZyBhbiBlbXB0eSBibG9jayBsZXZlbCBlbGVtZW50IGNhdXNlZCBhIGNvbGxhcHNlLiAgRm9yIGV4
YW1wbGU6CisgICAgLy8gZm9vXgorICAgIC8vIDxkaXY+YmFyPC9kaXY+CisgICAgLy8gYmF6Cisg
ICAgLy8gSW1hZ2luZSBtb3ZpbmcgJ2JhcicgdG8gXi4gICdiYXInIHdpbGwgYmUgZGVsZXRlZCBh
bmQgaXRzIGRpdiBwcnVuZWQuICBUaGF0IHdvdWxkCisgICAgLy8gY2F1c2UgJ2JheicgdG8gY29s
bGFwc2Ugb250byB0aGUgbGluZSB3aXRoICdmb29iYXInIHVubGVzcyB3ZSBpbnNlcnQgYSBici4K
KyAgICAvLyBNdXN0IHJlY29ub25pY2FsaXplIHRoZXNlIHR3byBWaXNpYmxlUG9zaXRpb25zIGFm
dGVyIHRoZSBwcnVuaW5nIGFib3ZlLgorICAgIGJlZm9yZVBhcmFncmFwaCA9IFZpc2libGVQb3Np
dGlvbihiZWZvcmVQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgYWZ0ZXJQYXJhZ3Jh
cGggPSBWaXNpYmxlUG9zaXRpb24oYWZ0ZXJQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSk7ICAg
CisKKyAgICBpZiAoYmVmb3JlUGFyYWdyYXBoLmlzTm90TnVsbCgpICYmICFpc1RhYmxlRWxlbWVu
dChiZWZvcmVQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpICYmICghaXNFbmRPZlBh
cmFncmFwaChiZWZvcmVQYXJhZ3JhcGgpIHx8IGJlZm9yZVBhcmFncmFwaCA9PSBhZnRlclBhcmFn
cmFwaCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFRyaW0gdGV4dCBiZXR3ZWVuIGJlZm9yZVBhcmFn
cmFwaCBhbmQgYWZ0ZXJQYXJhZ3JhcGggaWYgdGhleSBhcmVuJ3QgZXF1YWwuCisgICAgICAgIGlu
c2VydE5vZGVBdChjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSksIGJlZm9yZVBhcmFncmFw
aC5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICAgICAgLy8gTmVlZCBhbiB1cGRhdGVMYXlvdXQgaGVy
ZSBpbiBjYXNlIGluc2VydGluZyB0aGUgYnIgaGFzIHNwbGl0IGEgdGV4dCBub2RlLgorICAgICAg
ICB1cGRhdGVMYXlvdXQoKTsKKyAgICB9ICAgICAgIAorfQorICAgIAorICAgIAogLy8gVGhpcyBt
b3ZlcyBhIHBhcmFncmFwaCBwcmVzZXJ2aW5nIGl0cyBzdHlsZS4KIHZvaWQgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFy
YWdyYXBoVG9Nb3ZlLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGVuZE9mUGFyYWdyYXBoVG9Nb3Zl
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGRlc3RpbmF0aW9uLCBib29sIHByZXNlcnZlU2VsZWN0
aW9uLCBib29sIHByZXNlcnZlU3R5bGUpCiB7CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuaAkocmV2aXNpb24gNDk4NzEpCisrKyBXZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw4IEBAIHByb3Rl
Y3RlZDoKICAgICAKICAgICB2b2lkIG1vdmVQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBw
cmVzZXJ2ZVNlbGVjdGlvbiA9IGZhbHNlLCBib29sIHByZXNlcnZlU3R5bGUgPSB0cnVlKTsKICAg
ICB2b2lkIG1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGJvb2wgcHJlc2VydmVTZWxlY3Rp
b24gPSBmYWxzZSwgYm9vbCBwcmVzZXJ2ZVN0eWxlID0gdHJ1ZSk7CisgICAgdm9pZCBtb3ZlUGFy
YWdyYXBoV2l0aENsb25lcyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcGhU
b01vdmUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgZW5kT2ZQYXJhZ3JhcGhUb01vdmUsIE5vZGUq
IGJsb2NrTm9kZSwgTm9kZSogc3RhcnROb2RlKTsKKyAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNs
b25lSGllcmFyY2h5QmV0d2VlbihOb2RlKiwgRWxlbWVudCopOwogICAgIAogICAgIGJvb2wgYnJl
YWtPdXRPZkVtcHR5TGlzdEl0ZW0oKTsKICAgICBib29sIGJyZWFrT3V0T2ZFbXB0eU1haWxCbG9j
a3F1b3RlZFBhcmFncmFwaCgpOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRD
b21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENv
bW1hbmQuY3BwCShyZXZpc2lvbiA0OTg3MSkKKysrIFdlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRk
ZW50Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDM3ICs2Nyw2IEBAIEluZGVudE91
dGRlbnRDb21tYW5kOjpJbmRlbnRPdXRkZW50Q29tbWEKIHsKIH0KIAotLy8gVGhpcyBmdW5jdGlv
biBpcyBhIHdvcmthcm91bmQgZm9yIG1vdmVQYXJhZ3JhcGgncyB0ZW5kZW5jeSB0byBzdHJpcCBi
bG9ja3F1b3Rlcy4gSXQgdXBkYXRlcyBsYXN0QmxvY2txdW90ZSB0byBwb2ludCB0byB0aGUKLS8v
IGNvcnJlY3QgbGV2ZWwgZm9yIHRoZSBjdXJyZW50IHBhcmFncmFwaCwgYW5kIHJldHVybnMgYSBw
b2ludGVyIHRvIGEgcGxhY2Vob2xkZXIgYnIgd2hlcmUgdGhlIGluc2VydGlvbiBzaG91bGQgYmUg
cGVyZm9ybWVkLgotUGFzc1JlZlB0cjxFbGVtZW50PiBJbmRlbnRPdXRkZW50Q29tbWFuZDo6cHJl
cGFyZUJsb2NrcXVvdGVMZXZlbEZvckluc2VydGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIGN1
cnJlbnRQYXJhZ3JhcGgsIFJlZlB0cjxFbGVtZW50PiYgbGFzdEJsb2NrcXVvdGUpCi17Ci0gICAg
aW50IGN1cnJlbnRCbG9ja3F1b3RlTGV2ZWwgPSAwOwotICAgIGludCBsYXN0QmxvY2txdW90ZUxl
dmVsID0gMDsKLSAgICBOb2RlKiBub2RlID0gY3VycmVudFBhcmFncmFwaC5kZWVwRXF1aXZhbGVu
dCgpLm5vZGUoKTsKLSAgICB3aGlsZSAoKG5vZGUgPSBlbmNsb3NpbmdOb2RlV2l0aFRhZyhQb3Np
dGlvbihub2RlLT5wYXJlbnROb2RlKCksIDApLCBibG9ja3F1b3RlVGFnKSkpCi0gICAgICAgIGN1
cnJlbnRCbG9ja3F1b3RlTGV2ZWwrKzsKLSAgICBub2RlID0gbGFzdEJsb2NrcXVvdGUuZ2V0KCk7
Ci0gICAgd2hpbGUgKChub2RlID0gZW5jbG9zaW5nTm9kZVdpdGhUYWcoUG9zaXRpb24obm9kZS0+
cGFyZW50Tm9kZSgpLCAwKSwgYmxvY2txdW90ZVRhZykpKQotICAgICAgICBsYXN0QmxvY2txdW90
ZUxldmVsKys7Ci0gICAgd2hpbGUgKGN1cnJlbnRCbG9ja3F1b3RlTGV2ZWwgPiBsYXN0QmxvY2tx
dW90ZUxldmVsKSB7Ci0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBuZXdCbG9ja3F1b3RlID0gY3Jl
YXRlSW5kZW50QmxvY2txdW90ZUVsZW1lbnQoZG9jdW1lbnQoKSk7Ci0gICAgICAgIGFwcGVuZE5v
ZGUobmV3QmxvY2txdW90ZSwgbGFzdEJsb2NrcXVvdGUpOwotICAgICAgICBsYXN0QmxvY2txdW90
ZSA9IG5ld0Jsb2NrcXVvdGU7Ci0gICAgICAgIGxhc3RCbG9ja3F1b3RlTGV2ZWwrKzsKLSAgICB9
Ci0gICAgd2hpbGUgKGN1cnJlbnRCbG9ja3F1b3RlTGV2ZWwgPCBsYXN0QmxvY2txdW90ZUxldmVs
KSB7Ci0gICAgICAgIGxhc3RCbG9ja3F1b3RlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGVuY2xv
c2luZ05vZGVXaXRoVGFnKFBvc2l0aW9uKGxhc3RCbG9ja3F1b3RlLT5wYXJlbnROb2RlKCksIDAp
LCBibG9ja3F1b3RlVGFnKSk7Ci0gICAgICAgIGxhc3RCbG9ja3F1b3RlTGV2ZWwtLTsKLSAgICB9
Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KGRv
Y3VtZW50KCkpOwotICAgIGFwcGVuZE5vZGUocGxhY2Vob2xkZXIsIGxhc3RCbG9ja3F1b3RlKTsK
LSAgICAvLyBBZGQgYW5vdGhlciBiciBiZWZvcmUgdGhlIHBsYWNlaG9sZGVyIGlmIGl0IGNvbGxh
cHNlZC4KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyhQb3NpdGlvbihwbGFjZWhvbGRl
ci5nZXQoKSwgMCkpOwotICAgIGlmICghaXNTdGFydE9mUGFyYWdyYXBoKHZpc2libGVQb3MpKQot
ICAgICAgICBpbnNlcnROb2RlQmVmb3JlKGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKSwg
cGxhY2Vob2xkZXIpOwotICAgIHJldHVybiBwbGFjZWhvbGRlci5yZWxlYXNlKCk7Ci19Ci0KIGJv
b2wgSW5kZW50T3V0ZGVudENvbW1hbmQ6OnRyeUluZGVudGluZ0FzTGlzdEl0ZW0oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBlbmRPZkN1cnJlbnRQYXJhZ3JhcGgpCiB7CiAgICAgLy8gSWYgb3VyIHNl
bGVjdGlvbiBpcyBub3QgaW5zaWRlIGEgbGlzdCwgYmFpbCBvdXQuCkBAIC0xMTcsMTMgKzg2LDkg
QEAgYm9vbCBJbmRlbnRPdXRkZW50Q29tbWFuZDo6dHJ5SW5kZW50aW5nQQogICAgIEVsZW1lbnQq
IG5leHRMaXN0ID0gc2VsZWN0ZWRMaXN0SXRlbS0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7CiAKICAg
ICBSZWZQdHI8RWxlbWVudD4gbmV3TGlzdCA9IGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQobGlz
dE5vZGUtPnRhZ1FOYW1lKCksIGZhbHNlKTsKLSAgICBSZWZQdHI8RWxlbWVudD4gbmV3TGlzdEl0
ZW0gPSBzZWxlY3RlZExpc3RJdGVtLT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKLSAg
ICBSZWZQdHI8RWxlbWVudD4gcGxhY2Vob2xkZXIgPSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1l
bnQoKSk7CiAgICAgaW5zZXJ0Tm9kZUJlZm9yZShuZXdMaXN0LCBzZWxlY3RlZExpc3RJdGVtKTsK
LSAgICBhcHBlbmROb2RlKG5ld0xpc3RJdGVtLCBuZXdMaXN0KTsKLSAgICBhcHBlbmROb2RlKHBs
YWNlaG9sZGVyLCBuZXdMaXN0SXRlbSk7CiAKLSAgICBtb3ZlUGFyYWdyYXBoKHN0YXJ0T2ZQYXJh
Z3JhcGgoZW5kT2ZDdXJyZW50UGFyYWdyYXBoKSwgZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBWaXNp
YmxlUG9zaXRpb24oUG9zaXRpb24ocGxhY2Vob2xkZXIsIDApKSwgdHJ1ZSk7CisgICAgbW92ZVBh
cmFncmFwaFdpdGhDbG9uZXMoc3RhcnRPZlBhcmFncmFwaChlbmRPZkN1cnJlbnRQYXJhZ3JhcGgp
LCBlbmRPZkN1cnJlbnRQYXJhZ3JhcGgsIG5ld0xpc3QuZ2V0KCksIHNlbGVjdGVkTGlzdEl0ZW0p
OwogCiAgICAgaWYgKGNhbk1lcmdlTGlzdHMocHJldmlvdXNMaXN0LCBuZXdMaXN0LmdldCgpKSkK
ICAgICAgICAgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhwcmV2aW91c0xpc3QsIG5ld0xpc3QpOwpA
QCAtMTM3LDI1ICsxMDIsMzAgQEAgdm9pZCBJbmRlbnRPdXRkZW50Q29tbWFuZDo6aW5kZW50SW50
b0JsbwogewogICAgIE5vZGUqIGVuY2xvc2luZ0NlbGwgPSAwOwogCisgICAgUG9zaXRpb24gc3Rh
cnQgPSBzdGFydE9mUGFyYWdyYXBoKGVuZE9mQ3VycmVudFBhcmFncmFwaCkuZGVlcEVxdWl2YWxl
bnQoKTsKKyAgICBlbmNsb3NpbmdDZWxsID0gZW5jbG9zaW5nTm9kZU9mVHlwZShzdGFydCwgJmlz
VGFibGVDZWxsKTsKKyAgICBOb2RlKiBub2RlVG9TcGxpdFRvOworICAgIGlmIChlbmNsb3NpbmdD
ZWxsKQorICAgICAgICBub2RlVG9TcGxpdFRvID0gZW5jbG9zaW5nQ2VsbDsKKyAgICBlbHNlIGlm
IChlbmNsb3NpbmdMaXN0KHN0YXJ0Lm5vZGUoKSkpCisgICAgICAgIG5vZGVUb1NwbGl0VG8gPSBl
bmNsb3NpbmdCbG9jayhzdGFydC5ub2RlKCkpOworICAgIGVsc2UKKyAgICAgICAgbm9kZVRvU3Bs
aXRUbyA9IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9uKHN0YXJ0KTsKKyAgICBSZWZQdHI8Tm9kZT4g
c3RhcnRPZk5ld0Jsb2NrID0gc3BsaXRUcmVlVG9Ob2RlKHN0YXJ0Lm5vZGUoKSwgbm9kZVRvU3Bs
aXRUbyk7CisKICAgICBpZiAoIXRhcmdldEJsb2NrcXVvdGUpIHsKICAgICAgICAgLy8gQ3JlYXRl
IGEgbmV3IGJsb2NrcXVvdGUgYW5kIGluc2VydCBpdCBhcyBhIGNoaWxkIG9mIHRoZSByb290IGVk
aXRhYmxlIGVsZW1lbnQuIFdlIGFjY29tcGxpc2gKICAgICAgICAgLy8gdGhpcyBieSBzcGxpdHRp
bmcgYWxsIHBhcmVudHMgb2YgdGhlIGN1cnJlbnQgcGFyYWdyYXBoIHVwIHRvIHRoYXQgcG9pbnQu
CiAgICAgICAgIHRhcmdldEJsb2NrcXVvdGUgPSBjcmVhdGVJbmRlbnRCbG9ja3F1b3RlRWxlbWVu
dChkb2N1bWVudCgpKTsKLSAgICAgICAgUG9zaXRpb24gc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBo
KGVuZE9mQ3VycmVudFBhcmFncmFwaCkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgZW5jbG9z
aW5nQ2VsbCA9IGVuY2xvc2luZ05vZGVPZlR5cGUoc3RhcnQsICZpc1RhYmxlQ2VsbCk7Ci0gICAg
ICAgIE5vZGUqIG5vZGVUb1NwbGl0VG8gPSBlbmNsb3NpbmdDZWxsID8gZW5jbG9zaW5nQ2VsbCA6
IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9uKHN0YXJ0KTsKLSAgICAgICAgUmVmUHRyPE5vZGU+IHN0
YXJ0T2ZOZXdCbG9jayA9IHNwbGl0VHJlZVRvTm9kZShzdGFydC5ub2RlKCksIG5vZGVUb1NwbGl0
VG8pOwogICAgICAgICBpbnNlcnROb2RlQmVmb3JlKHRhcmdldEJsb2NrcXVvdGUsIHN0YXJ0T2ZO
ZXdCbG9jayk7CiAgICAgfQogCi0gICAgUmVmUHRyPEVsZW1lbnQ+IGluc2VydGlvblBvaW50ID0g
cHJlcGFyZUJsb2NrcXVvdGVMZXZlbEZvckluc2VydGlvbihlbmRPZkN1cnJlbnRQYXJhZ3JhcGgs
IHRhcmdldEJsb2NrcXVvdGUpOwotCisgICAgbW92ZVBhcmFncmFwaFdpdGhDbG9uZXMoc3RhcnRP
ZlBhcmFncmFwaChlbmRPZkN1cnJlbnRQYXJhZ3JhcGgpLCBlbmRPZkN1cnJlbnRQYXJhZ3JhcGgs
IHRhcmdldEJsb2NrcXVvdGUuZ2V0KCksIHN0YXJ0T2ZOZXdCbG9jay5nZXQoKSk7CisgICAgCiAg
ICAgLy8gRG9uJ3QgcHV0IHRoZSBuZXh0IHBhcmFncmFwaCBpbiB0aGUgYmxvY2txdW90ZSB3ZSBq
dXN0IGNyZWF0ZWQgZm9yIHRoaXMgcGFyYWdyYXBoIHVubGVzcyAKICAgICAvLyB0aGUgbmV4dCBw
YXJhZ3JhcGggaXMgaW4gdGhlIHNhbWUgY2VsbC4KICAgICBpZiAoZW5jbG9zaW5nQ2VsbCAmJiBl
bmNsb3NpbmdDZWxsICE9IGVuY2xvc2luZ05vZGVPZlR5cGUoZW5kT2ZOZXh0UGFyYWdyYXBoLmRl
ZXBFcXVpdmFsZW50KCksICZpc1RhYmxlQ2VsbCkpCiAgICAgICAgIHRhcmdldEJsb2NrcXVvdGUg
PSAwOwotCi0gICAgbW92ZVBhcmFncmFwaChzdGFydE9mUGFyYWdyYXBoKGVuZE9mQ3VycmVudFBh
cmFncmFwaCksIGVuZE9mQ3VycmVudFBhcmFncmFwaCwgVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9u
KGluc2VydGlvblBvaW50LCAwKSksIHRydWUpOwogfQogCiB2b2lkIEluZGVudE91dGRlbnRDb21t
YW5kOjppbmRlbnRSZWdpb24oKQpAQCAtMTkxLDggKzE2MSw2IEBAIHZvaWQgSW5kZW50T3V0ZGVu
dENvbW1hbmQ6OmluZGVudFJlZ2lvbigKICAgICAgICAgICAgIGJsb2NrcXVvdGVGb3JOZXh0SW5k
ZW50ID0gMDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW5kZW50SW50b0Jsb2NrcXVvdGUo
ZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBlbmRPZk5leHRQYXJhZ3JhcGgsIGJsb2NrcXVvdGVGb3JO
ZXh0SW5kZW50KTsKLSAgICAgICAgICAgIC8vIGJsb2NrcXVvdGVGb3JOZXh0SW5kZW50IG1heWJl
IHVwZGF0ZWQKLSAgICAgICAgICAgIC8vIHRoaXMgaXMgZHVlIHRvIHRoZSB3YXkgcHJlcGFyZUJs
b2NrcXVvdGVMZXZlbEZvckluc2VydGlvbiB3YXMgZGVzaWduZWQuCiAgICAgICAgIC8vIFNhbml0
eSBjaGVjazogTWFrZSBzdXJlIG91ciBtb3ZlUGFyYWdyYXBoIGNhbGxzIGRpZG4ndCByZW1vdmUg
ZW5kT2ZOZXh0UGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpCiAgICAgICAgIC8vIElm
IHNvbWVob3cgd2UgZGlkLCByZXR1cm4gdG8gcHJldmVudCBjcmFzaGVzLgogICAgICAgICBpZiAo
ZW5kT2ZOZXh0UGFyYWdyYXBoLmlzTm90TnVsbCgpICYmICFlbmRPZk5leHRQYXJhZ3JhcGguZGVl
cEVxdWl2YWxlbnQoKS5ub2RlKCktPmluRG9jdW1lbnQoKSkgewpJbmRleDogV2ViQ29yZS9lZGl0
aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5n
L0luZGVudE91dGRlbnRDb21tYW5kLmgJKHJldmlzaW9uIDQ5ODcxKQorKysgV2ViQ29yZS9lZGl0
aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGluZGVudFJlZ2lvbigpOwogICAgIHZvaWQgb3V0ZGVudFJl
Z2lvbigpOwogICAgIHZvaWQgb3V0ZGVudFBhcmFncmFwaCgpOwotICAgIFBhc3NSZWZQdHI8RWxl
bWVudD4gcHJlcGFyZUJsb2NrcXVvdGVMZXZlbEZvckluc2VydGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mLCBSZWZQdHI8RWxlbWVudD4mKTsKICAgICBib29sIHRyeUluZGVudGluZ0FzTGlzdEl0
ZW0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAgICAgdm9pZCBpbmRlbnRJbnRvQmxvY2txdW90
ZShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBSZWZQdHI8
RWxlbWVudD4mKTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDk4NzMpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAwOS0xMC0yMCAgRW5y
aWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJFR1JFU1NJT046IENvcHkgaXMgY29weWluZyBpbmNv
cnJlY3QgYmFja2dyb3VuZC1jb2xvcgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzI0ODUyOT4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5Njk3CisK
KyAgICAgICAgQWxsIHRoZSBmb2xsb3dpbmcgdGVzdHMgaGF2ZSBiZWVuIHJlLWJhc2VsaW5lZCBi
ZWNhdXNlCisgICAgICAgIHRoZSBpbmRlbnQgY29tbWFuZCBub3cgcHJlc2VydmVzIHRoZSBvcmln
aW5hbCBtYXJrdXAuCisgICAgICAgIAorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvMTkw
ODctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvMTk2NTMtMS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtZGl2LWlu
c2lkZS1saXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2lu
ZGVudC1uZXN0ZWQtYmxvY2txdW90ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcv
ZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1kaXYtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVk
aXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXNlY29uZC1wYXJhZ3JhcGgtaW4tYmxvY2txdW90ZS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtd2l0aC1z
dHlsZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9pbnNlcnRpbmcvNTk5NDQ4MC0y
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFu
ZC80NjQxODgwLTItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5n
L2V4ZWNDb21tYW5kLzQ5MTY1NDEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUxMzg0NDEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU0ODE1MjMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1zZWxlY3Rpb24t
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQv
c2VsZWN0LWVsZW1lbnQtMS1leHBlY3RlZC50eHQ6CisKIDIwMDktMTAtMjAgIFhhbiBMb3BleiAg
PHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFub3RoZXIgYmF0Y2ggb2Ygc2tpcHBlZCB0
ZXN0cyB3aXRoIGxpbmtzIHRvIHRoZWlyIGJ1Z3MuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kLzE5MDg3LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzE5MDg3LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDk4NzEp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzE5MDg3LWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMywzICszLDUgQEAgVGhpcyB0ZXN0cyBmb3IgYSBjcmFzaCB3aGVu
IGluZGVudGluZyBhIAogCiAKIAorCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvMTk2NTMtMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9leGVjQ29tbWFuZC8xOTY1My0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDk4NzEpCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzE5NjUzLTEtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBUaGlzIHRlc3RzIGNyZWF0aW5nIGEgbGlzdCBm
cm9tIGFuIGVtcHR5CiA8dWw+PGxpPjxiPkJvbGQ8L2I+PC9saT48L3VsPgogCiBUaGlzIHRlc3Rz
IGluZGVudGluZyBhbiBlbXB0eSBwYXJhZ3JhcGggd2l0aCBib2xkIGFscmVhZHkgYXBwbGllZCB0
byBpdC4gVGhlIHdvcmQgYmVsb3cgc2hvdWxkIGJlIGJvbGQuCi08YmxvY2txdW90ZSBjbGFzcz0i
d2Via2l0LWluZGVudC1ibG9ja3F1b3RlIiBzdHlsZT0ibWFyZ2luOiAwIDAgMCA0MHB4OyBib3Jk
ZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiPjxiPkJvbGQ8L2I+PC9ibG9ja3F1b3RlPgorPGJsb2Nr
cXVvdGUgY2xhc3M9IndlYmtpdC1pbmRlbnQtYmxvY2txdW90ZSIgc3R5bGU9Im1hcmdpbjogMCAw
IDAgNDBweDsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAwcHg7Ij48ZGl2PjxiPkJvbGQ8L2I+PC9k
aXY+PC9ibG9ja3F1b3RlPgogCiBUaGlzIHRlc3RzIGluZGVudGluZyBhbiBlbXB0eSBwYXJhZ3Jh
cGggd2hlbiB0aGUgdHlwaW5nIHN0eWxlIHdhcyBCb2xkLiBUaGUgd29yZCBiZWxvdyBzaG91bGQg
YmUgYm9sZC4KIDxibG9ja3F1b3RlIGNsYXNzPSJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiIHN0
eWxlPSJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMHB4OyI+PGI+
Qm9sZDwvYj48L2Jsb2NrcXVvdGU+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21t
YW5kL2luZGVudC1kaXYtaW5zaWRlLWxpc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LWRpdi1pbnNpZGUtbGlzdC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDQ5ODcxKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC9pbmRlbnQtZGl2LWluc2lkZS1saXN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNCw0ICs0LDQgQEAgYQogaGVsbG8KIHdvcmxkCiBiCi1hIDx1bD4gPGxpPmhlbGxvPC9saT48
L3VsPjxibG9ja3F1b3RlIGNsYXNzPSJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiIHN0eWxlPSJt
YXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMHB4OyI+d29ybGQ8L2Js
b2NrcXVvdGU+IGIKK2EgPHVsPiA8bGk+aGVsbG88ZGl2IGlkPSJ0ZXN0Ij48YmxvY2txdW90ZSBj
bGFzcz0id2Via2l0LWluZGVudC1ibG9ja3F1b3RlIiBzdHlsZT0ibWFyZ2luOiAwIDAgMCA0MHB4
OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiPiB3b3JsZCA8L2Jsb2NrcXVvdGU+PC9kaXY+
PC9saT48L3VsPiBiCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVu
dC1uZXN0ZWQtYmxvY2txdW90ZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5lc3RlZC1ibG9ja3F1b3Rlcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDQ5ODcxKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFu
ZC9pbmRlbnQtbmVzdGVkLWJsb2NrcXVvdGVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNCw0ICs0LDQgQEAgaGVsbG8KIHdvcmxkCiB3ZWJraXQKIGlzIGdyZWF0Ci08YmxvY2txdW90
ZSBpZD0ib3V0ZXIiPiBoZWxsbyA8YmxvY2txdW90ZSBpZD0iaW5uZXIiPiB3b3JsZDxicj48L2Js
b2NrcXVvdGU+PC9ibG9ja3F1b3RlPjxibG9ja3F1b3RlIGNsYXNzPSJ3ZWJraXQtaW5kZW50LWJs
b2NrcXVvdGUiIHN0eWxlPSJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFkZGlu
ZzogMHB4OyI+PGJsb2NrcXVvdGUgY2xhc3M9IndlYmtpdC1pbmRlbnQtYmxvY2txdW90ZSIgc3R5
bGU9Im1hcmdpbjogMCAwIDAgNDBweDsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAwcHg7Ij48Ymxv
Y2txdW90ZSBjbGFzcz0id2Via2l0LWluZGVudC1ibG9ja3F1b3RlIiBzdHlsZT0ibWFyZ2luOiAw
IDAgMCA0MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiPndlYmtpdDwvYmxvY2txdW90
ZT48L2Jsb2NrcXVvdGU+PC9ibG9ja3F1b3RlPjxibG9ja3F1b3RlIGlkPSJvdXRlciI+IGlzIGdy
ZWF0IDwvYmxvY2txdW90ZT4KKzxibG9ja3F1b3RlIGlkPSJvdXRlciI+IGhlbGxvIDxibG9ja3F1
b3RlIGlkPSJpbm5lciI+IHdvcmxkPGJyPjwvYmxvY2txdW90ZT48L2Jsb2NrcXVvdGU+PGJsb2Nr
cXVvdGUgY2xhc3M9IndlYmtpdC1pbmRlbnQtYmxvY2txdW90ZSIgc3R5bGU9Im1hcmdpbjogMCAw
IDAgNDBweDsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAwcHg7Ij48YmxvY2txdW90ZSBpZD0ib3V0
ZXIiPjxibG9ja3F1b3RlIGlkPSJpbm5lciI+IHdlYmtpdCA8L2Jsb2NrcXVvdGU+PC9ibG9ja3F1
b3RlPjwvYmxvY2txdW90ZT48YmxvY2txdW90ZSBpZD0ib3V0ZXIiPiBpcyBncmVhdCA8L2Jsb2Nr
cXVvdGU+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0
ZWQtZGl2LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtZGl2LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDk4NzEp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtZGl2LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKIFRoaXMgdGVzdHMgaW5k
ZW50aW5nIG5lc3RlZCBkaXZzLiBCeSBpbmRlbnRpbmcgImhlbGxvIiwgd2Ugc2hvdWxkIGJlIGFi
bGUgdG8gZW5jbG9zZSBhbGwgdGhyZWUgYmxvY2tzIDEgdGhyb3VnaCAzIGJ5IGEgYmxvY2txdW90
ZQogCiBoZWxsbwotPGJsb2NrcXVvdGUgY2xhc3M9IndlYmtpdC1pbmRlbnQtYmxvY2txdW90ZSIg
c3R5bGU9Im1hcmdpbjogMCAwIDAgNDBweDsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAwcHg7Ij5o
ZWxsbzwvYmxvY2txdW90ZT4KKzxibG9ja3F1b3RlIGNsYXNzPSJ3ZWJraXQtaW5kZW50LWJsb2Nr
cXVvdGUiIHN0eWxlPSJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFkZGluZzog
MHB4OyI+PGRpdiBpZD0iYmxvY2sxIj48ZGl2IGlkPSJibG9jazIiPjxkaXYgaWQ9ImJsb2NrMyI+
aGVsbG88L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+CkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1zZWNvbmQtcGFyYWdyYXBoLWluLWJsb2NrcXVvdGUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvaW5kZW50LXNlY29uZC1wYXJhZ3JhcGgtaW4tYmxvY2txdW90ZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDQ5ODcxKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQt
c2Vjb25kLXBhcmFncmFwaC1pbi1ibG9ja3F1b3RlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMiw0ICsyLDQgQEAgVGhpcyB0ZXN0cyBpbmRlbnRpbmcgdGhlIHNlY29uZCBwYXJhZ3Jh
cAogCiBoZWxsbwogd29ybGQKLTxibG9ja3F1b3RlIGlkPSJ0ZXN0Ij4gaGVsbG88YnI+PC9ibG9j
a3F1b3RlPjxibG9ja3F1b3RlIGNsYXNzPSJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiIHN0eWxl
PSJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMHB4OyI+PGJsb2Nr
cXVvdGUgY2xhc3M9IndlYmtpdC1pbmRlbnQtYmxvY2txdW90ZSIgc3R5bGU9Im1hcmdpbjogMCAw
IDAgNDBweDsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAwcHg7Ij53b3JsZDwvYmxvY2txdW90ZT48
L2Jsb2NrcXVvdGU+Cis8YmxvY2txdW90ZSBpZD0idGVzdCI+IGhlbGxvPGJyPjwvYmxvY2txdW90
ZT48YmxvY2txdW90ZSBjbGFzcz0id2Via2l0LWluZGVudC1ibG9ja3F1b3RlIiBzdHlsZT0ibWFy
Z2luOiAwIDAgMCA0MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiPjxibG9ja3F1b3Rl
IGlkPSJ0ZXN0Ij4gd29ybGQgPC9ibG9ja3F1b3RlPjwvYmxvY2txdW90ZT4KSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXdpdGgtc3R5bGUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXdp
dGgtc3R5bGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0OTg3MSkKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXdpdGgtc3R5bGUtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yLDcgKzIsNyBAQCBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRp
bmdJbkRPCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdE
aWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IFNQ
QU4gPiBCTE9DS1FVT1RFID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAj
dGV4dCA+IFNQQU4gPiBCTE9DS1FVT1RFID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
YWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFM
U0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwp
IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJMT0NLUVVP
VEUgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gU1BBTiA+
IERJViA+IEJMT0NLUVVPVEUgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0
eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
OldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIFRoaXMgdGVzdHMgaW5kZW50aW5nIHR3byBh
bmQgdGhyZWUuIFlvdSBzaG91bGQgc2VlIHR3byBhbmQgdGhyZWUgaW5kZW50ZWQgYW5kIHdpdGgg
dGhlIHNhbWUgYmFja2dyb3VuZCBjb2xvciBhcyBvbmUgYW5kIGZvdXIuCkBAIC0xNCw0ICsxNCw0
IEBAIHRocmVlCiBmb3VyCiAKIEJlZm9yZSBvcmRlcmVkIGxpc3Q6IDxkaXY+PHNwYW4gY2xhc3M9
IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAwLCAw
KTsiPm9uZTwvc3Bhbj48L2Rpdj4gPGRpdiBpZD0idGVzdDEiPjxzcGFuIGNsYXNzPSJBcHBsZS1z
dHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMCwgMCk7Ij50d288
L3NwYW4+PC9kaXY+IDxkaXYgaWQ9InRlc3QyIj48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3Bh
biIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDAsIDApOyI+dGhyZWU8L3NwYW4+
PC9kaXY+IDxkaXY+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJiYWNrZ3Jv
dW5kLWNvbG9yOiByZ2IoMjU1LCAwLCAwKTsiPmZvdXI8L3NwYW4+PC9kaXY+Ci1BZnRlciBvcmRl
cmVkOiA8ZGl2PjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDI1NSwgMCwgMCk7Ij5vbmU8L3NwYW4+PC9kaXY+IDxibG9ja3F1b3RlIGNs
YXNzPSJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiIHN0eWxlPSJtYXJnaW46IDAgMCAwIDQwcHg7
IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMHB4OyI+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNw
YW4iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAwLCAwKTsgIj50d288L3NwYW4+
PGJyPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xv
cjogcmdiKDI1NSwgMCwgMCk7ICI+dGhyZWU8L3NwYW4+PC9ibG9ja3F1b3RlPiA8ZGl2PjxzcGFu
IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1
NSwgMCwgMCk7Ij5mb3VyPC9zcGFuPjwvZGl2PgorQWZ0ZXIgb3JkZXJlZDogPGRpdj48c3BhbiBj
bGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUs
IDAsIDApOyI+b25lPC9zcGFuPjwvZGl2PiA8YmxvY2txdW90ZSBjbGFzcz0id2Via2l0LWluZGVu
dC1ibG9ja3F1b3RlIiBzdHlsZT0ibWFyZ2luOiAwIDAgMCA0MHB4OyBib3JkZXI6IG5vbmU7IHBh
ZGRpbmc6IDBweDsiPjxkaXYgaWQ9InRlc3QxIj48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3Bh
biIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDAsIDApOyI+dHdvPC9zcGFuPjwv
ZGl2PjxkaXYgaWQ9InRlc3QyIj48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9
ImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDAsIDApOyI+dGhyZWU8L3NwYW4+PC9kaXY+PC9i
bG9ja3F1b3RlPiA8ZGl2PjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFj
a2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMCwgMCk7Ij5mb3VyPC9zcGFuPjwvZGl2PgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvNTk5NDQ4MC0yLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy81OTk0NDgwLTItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA0OTg3MSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5n
LzU5OTQ0ODAtMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTxmb250
IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBmYWNlPSInTHVjaWRhIEdyYW5kZSciIHNpemU9IjMi
PjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjog
cmdiKDI1NSwgMjU1LCAyNTUpOyBmb250LXNpemU6IDExcHg7Ij48YnI+PC9zcGFuPjwvZm9udD4K
Kzxmb250IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBmYWNlPSInTHVjaWRhIEdyYW5kZSciIHNp
emU9IjMiPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1zaXplOiAx
MXB4OyI+PGJyPjwvc3Bhbj48L2ZvbnQ+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9leGVjQ29tbWFuZC80NjQxODgwLTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ2NDE4ODAtMi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDQ5ODcxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvZXhlY0NvbW1hbmQvNDY0MTg4MC0yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMyw3ICszLDcgQEAgRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGlu
ZwogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBC
TE9DS1FVT1RFID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMzQgb2YgI3RleHQg
PiBCTE9DS1FVT1RFID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNT
ZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcg
REVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6
cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gQkxPQ0tRVU9URSA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDM1IG9mICN0ZXh0ID4gQkxPQ0tRVU9URSA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxs
U2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCkBAIC0yNCw1ICsyNCw1IEBAIGxheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDI0
NngxOAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjQ2OiAiVGhpcyBwYXJh
Z3JhcGggc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4iCiAgICAgICAgICAgUmVuZGVyQlIge0JSfSBh
dCAoMjQ2LDE0KSBzaXplIDB4MAotc2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAwIG9mIGNoaWxk
IDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtCTE9DS1FVT1RFfSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNo
aWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50Ci1zZWxlY3Rpb24gZW5k
OiAgIHBvc2l0aW9uIDM0IG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtCTE9DS1FVT1RF
fSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9m
IGRvY3VtZW50CitzZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDEgb2YgY2hpbGQgMCB7I3RleHR9
IG9mIGNoaWxkIDAge0JMT0NLUVVPVEV9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9E
WX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKK3NlbGVjdGlvbiBlbmQ6ICAgcG9zaXRp
b24gMzUgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDAge0JMT0NLUVVPVEV9IG9mIGNoaWxk
IDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MTY1
NDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MTY1NDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0OTg3MSkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MTY1NDEt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMCwxMSArMTAsMTMgQEAgbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDMy
MDogIidmb28nIGFuZCAnYmFyJyBiZWZvcmUgYW5kIGFmdGVyIHRoZSBpbmRlbnQgb3BlcmF0aW9u
LiIKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDUyKSBzaXplIDc4NHgzNgogICAgICAg
ICBSZW5kZXJCbG9jayB7QkxPQ0tRVU9URX0gYXQgKDQwLDApIHNpemUgNzQ0eDM2Ci0gICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjF4MTgKLSAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDIxOiAiZm9vIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0g
YXQgKDIxLDE0KSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwx
OCkgc2l6ZSAyMHgxOAotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDIwOiAi
YmFyIgorICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAyMXgxOAor
ICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjF4MTgKKyAgICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjE6ICJmb28iCisgICAgICAgICAgICBS
ZW5kZXJCUiB7QlJ9IGF0ICgyMSwxNCkgc2l6ZSAweDAKKyAgICAgICAgICBSZW5kZXJJbmxpbmUg
e1NQQU59IGF0ICgwLDApIHNpemUgMjB4MTgKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwxOCkgc2l6ZSAyMHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkg
d2lkdGggMjA6ICJiYXIiCiAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDM2
KSBzaXplIDc4NHgwCi1zZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDEgb2YgY2hpbGQgMCB7I3Rl
eHR9IG9mIGNoaWxkIDAge0JMT0NLUVVPVEV9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7
Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKLXNlbGVjdGlvbiBlbmQ6ICAgcG9z
aXRpb24gMiBvZiBjaGlsZCAyIHsjdGV4dH0gb2YgY2hpbGQgMCB7QkxPQ0tRVU9URX0gb2YgY2hp
bGQgMiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVu
dAorc2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAxIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGls
ZCAwIHtTUEFOfSBvZiBjaGlsZCAwIHtCTE9DS1FVT1RFfSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNo
aWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CitzZWxlY3Rpb24gZW5k
OiAgIHBvc2l0aW9uIDIgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge1NQQU59IG9mIGNo
aWxkIDAge0JMT0NLUVVPVEV9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2Yg
Y2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUxMzg0NDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUxMzg0NDEtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA0OTg3MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL2V4ZWNDb21tYW5kLzUxMzg0NDEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xMSw5ICsxMSwxMCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwzNikgd2lkdGggMTQ5OiAidG8gaW1wbGVtZW50IGluZGVudGluZy4iCiAg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw3MCkgc2l6ZSA3ODR4NjIKICAgICAgICAgUmVu
ZGVyQmxvY2sge0JMT0NLUVVPVEV9IGF0ICg0MCwwKSBzaXplIDc0NHgxOAotICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDIzMHgxOAotICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMjMwOiAiVGhpcyBzaG91bGQgYmUgaW5kZW50ZWQsIG5vdCBxdW90
ZWQuIgorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzQ0eDE4Cisg
ICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMzB4MTgKKyAgICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjMwOiAiVGhpcyBzaG91bGQgYmUgaW5k
ZW50ZWQsIG5vdCBxdW90ZWQuIgogICAgICAgICBSZW5kZXJCbG9jayB7QkxPQ0tRVU9URX0gYXQg
KDgsMjYpIHNpemUgNzY4eDM2IFtib3JkZXI6ICgxcHggZGFzaGVkICNBQUFBQUEpXQogICAgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoOSw5KSBzaXplIDE3NXgxOAogICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDksOSkgd2lkdGggMTc1OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBRdW90ZWQu
IgotY2FyZXQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge0JMT0NL
UVVPVEV9IG9mIGNoaWxkIDMge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRN
TH0gb2YgZG9jdW1lbnQKK2NhcmV0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBj
aGlsZCAwIHtESVZ9IG9mIGNoaWxkIDEge0JMT0NLUVVPVEV9IG9mIGNoaWxkIDMge0RJVn0gb2Yg
Y2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU0ODE1MjMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWND
b21tYW5kLzU0ODE1MjMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0OTg3MSkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU0ODE1MjMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAogICAgICAgICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsIHtURH0gYXQgKDQ1LDI2KSBz
aXplIDM0eDIyIFtib3JkZXI6ICgxcHggaW5zZXQgIzgwODA4MCldIFtyPTEgYz0xIHJzPTEgY3M9
MV0KICAgICAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyLDIpIHNpemUg
MzB4MTgKICAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMiwyKSB3aWR0aCAzMDog
IkZvdXIiCi0gICAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw1Mikgc2l6
ZSA3MDR4MAogICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw1Mikgc2l6ZSA3
ODR4MAogc2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAge1RBQkxFfSBvZiBj
aGlsZCAwIHtCTE9DS1FVT1RFfSBvZiBjaGlsZCAxIHtCTE9DS1FVT1RFfSBvZiBjaGlsZCAyIHtE
SVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50Ci1zZWxl
Y3Rpb24gZW5kOiAgIHBvc2l0aW9uIDEgb2YgY2hpbGQgMCB7VEFCTEV9IG9mIGNoaWxkIDAge0JM
T0NLUVVPVEV9IG9mIGNoaWxkIDEge0JMT0NLUVVPVEV9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hp
bGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKK3NlbGVjdGlvbiBlbmQ6
ICAgcG9zaXRpb24gMiBvZiBjaGlsZCAwIHtUQUJMRX0gb2YgY2hpbGQgMCB7QkxPQ0tRVU9URX0g
b2YgY2hpbGQgMSB7QkxPQ0tRVU9URX0gb2YgY2hpbGQgMiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZ
fSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXNlbGVjdGlvbi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1h
bmQvaW5kZW50LXNlbGVjdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ5ODcxKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXNlbGVjdGlv
bi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBAIEVESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmcKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgog
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJ
TkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFu
Z2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gQkxPQ0tRVU9URSA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBCTE9DS1FVT1RFID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3Rp
bGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gU1BBTiA+
IEJMT0NLUVVPVEUgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0
ID4gU1BBTiA+IEJMT0NLUVVPVEUgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQog
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIGxheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMApAQCAtMTksOSArMTksMTAgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAg
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzNikgc2l6ZSA3ODR4MTk0CiAgICAgICAgIFJlbmRl
ckJsb2NrIHtCTE9DS1FVT1RFfSBhdCAoNDAsMCkgc2l6ZSA3NDR4NTQKICAgICAgICAgICBSZW5k
ZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc0NHgzNgotICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDJ4MTgKLSAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggNDI6ICJMb3JlbSIKLSAgICAgICAgICAgIFJlbmRlckJSIHtCUn0g
YXQgKDQyLDE0KSBzaXplIDB4MAorICAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAo
MCwwKSBzaXplIDQyeDE4CisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDQyeDE4CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDI6
ICJMb3JlbSIKKyAgICAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoNDIsMTQpIHNpemUgMHgw
CiAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMTgpIHNpemUgODN4MTgKICAg
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDgzOiAibW9yZSBMb3JlbSEiCiAg
ICAgICAgICAgUmVuZGVyQmxvY2sge0JMT0NLUVVPVEV9IGF0ICg0MCwzNikgc2l6ZSA3MDR4MTgK
QEAgLTUxLDggKzUyLDkgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNHgxOAogICAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNDogIlN1bSEiCiAgICAgICAgICAgICBSZW5kZXJCUiB7
QlJ9IGF0ICgzNCwxNCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwxOCkgc2l6ZSAzOHgxOAotICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lk
dGggMzg6ICJUaGluZyIKKyAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkg
c2l6ZSAzOHgxOAorICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMTgpIHNp
emUgMzh4MTgKKyAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMzg6ICJU
aGluZyIKICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTk0KSBzaXplIDc4
NHgwCi1zZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNo
aWxkIDEge0JMT0NLUVVPVEV9IG9mIGNoaWxkIDQge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2Yg
Y2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKLXNlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gNSBv
ZiBjaGlsZCAzIHsjdGV4dH0gb2YgY2hpbGQgMyB7QkxPQ0tRVU9URX0gb2YgY2hpbGQgNCB7RElW
fSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAorc2VsZWN0
aW9uIHN0YXJ0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtTUEFO
fSBvZiBjaGlsZCAxIHtCTE9DS1FVT1RFfSBvZiBjaGlsZCA0IHtESVZ9IG9mIGNoaWxkIDEge0JP
RFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CitzZWxlY3Rpb24gZW5kOiAgIHBvc2l0
aW9uIDUgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDMge1NQQU59IG9mIGNoaWxkIDMge0JM
T0NLUVVPVEV9IG9mIGNoaWxkIDQge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7
SFRNTH0gb2YgZG9jdW1lbnQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L3Bhc3RlYm9hcmQvc2VsZWN0LWVsZW1lbnQtMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9zZWxlY3QtZWxlbWVu
dC0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDk4NzEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3NlbGVjdC1lbGVtZW50LTEtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAogICAgICAgICAgIHRleHQgcnVuIGF0ICgyNTMsMCkgd2lkdGggMjIwOiAiQWxsIHRoZSBvcHRp
b25zIHNob3VsZCBiZSBpbmNsdWRlZC4iCiAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwz
NCkgc2l6ZSA3ODR4MTMKICAgICAgICAgUmVuZGVySW5saW5lIHtGT05UfSBhdCAoMCwwKSBzaXpl
IDB4MTgKLSAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgxMyBb
Ymdjb2xvcj0jRkZGRkZGXQorICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkg
c2l6ZSAweDEzCiAgICAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgxMwog
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNDcpIHNpemUgNzg0eDIyCiAgICAgICAgIFJl
bmRlck1lbnVMaXN0IHtTRUxFQ1R9IGF0ICgyLDIpIHNpemUgNjJ4MTggW2JnY29sb3I9I0ZGRkZG
Rl0K
</data>
<flag name="review"
          id="22986"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41699</attachid>
            <date>2009-10-22 17:09:39 -0700</date>
            <delta_ts>2009-10-23 10:32:37 -0700</delta_ts>
            <desc>Patch5</desc>
            <filename>bug7248529.txt</filename>
            <type>text/plain</type>
            <size>51604</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTk1OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMDktMTAtMjIgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
RUdSRVNTSU9OOiBDb3B5IGlzIGNvcHlpbmcgaW5jb3JyZWN0IGJhY2tncm91bmQtY29sb3IKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyNDg1Mjk+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY5NworCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvZXhl
Y0NvbW1hbmQvaW5kZW50LXBhcmFncmFwaHMuaHRtbAorCisgICAgICAgIFRoaXMgY2hhbmdlIHJl
bW92ZXMgdGhlIEJhY2tncm91bmRDb2xvciBmcm9tIHRoZSBsaXN0IAorICAgICAgICBvZiBpbmhl
cml0YWJsZSBDU1MgcHJvcGVydGllcyBhbmQgY2hhbmdlcyBzaWduaWZpY2FudGx5CisgICAgICAg
IHRoZSB3YXkgd2UgcGVyZm9ybSBpbmRlbnRhdGlvbi4KKyAgICAgICAgVGhlIG5ldyBpbXBsZW1l
bnRhdGlvbiBvZiBJbmRlbnRPdXRkZW50Q29tbWFuZCB1c2VzIGEgbmV3IG1ldGhvZAorICAgICAg
ICBkZWZpbmVkIGluIENvbXBvc2l0ZUVkaXRDb21tYW5kIGNhbGxlZCBtb3ZlUGFyYWdyYXBoV2l0
aENsb25lcy4KKyAgICAgICAgVGhpcyBpcyBhbiBpbXByb3ZlZCB2ZXJzaW9uIG9mIHRoZSBvcmln
aW5hbCBtb3ZlUGFyYWdyYXBoIHRoYXQKKyAgICAgICAgaXMgYWltZWQgYXQgcHJlc2VydmluZyB0
aGUgb3JpZ2luYWwgbWFya3VwIG9mIHRoZSBwYXJhZ3JhcGggYmVpbmcKKyAgICAgICAgbW92ZWQu
CisKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Oik6IHJlbW92ZWQgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IgZnJvbSBlZGl0aW5n
U3R5bGVQcm9wZXJ0aWVzLgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OkNvbXBvc2l0ZUVk
aXRDb21tYW5kKTogUmVtb3ZlZCB0cmFpbGluZyBibGFua3MuCisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdGVzcGFjZUF0KTogUmVtb3ZlZCB0cmFp
bGluZyBibGFua3MuCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xv
bmVQYXJhZ3JhcGhVbmRlck5ld0VsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2l0ZUVkaXRDb21tYW5kOjpjbGVhbnVwQWZ0ZXJEZWxldGlvbik6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhXaXRoQ2xvbmVz
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBh
cmFncmFwaHMpOiBNb2RpZmllZCB0byB1c2UgY2xlYW51cEFmdGVyRGVsZXRpb24uCisgICAgICAg
IChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6YnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0p
OiBSZW1vdmVkIHRyYWlsaW5nIGJsYW5rcy4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVk
aXRDb21tYW5kOjpicmVha091dE9mRW1wdHlNYWlsQmxvY2txdW90ZWRQYXJhZ3JhcGgpOiBSZW1v
dmVkIHRyYWlsaW5nIGJsYW5rcy4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21t
YW5kOjpwb3NpdGlvbkF2b2lkaW5nU3BlY2lhbEVsZW1lbnRCb3VuZGFyeSk6IFJlbW92ZWQgdHJh
aWxpbmcgYmxhbmtzLgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDog
QWRkZWQgdGhyZWUgbmV3IG1ldGhvZHMuCisgICAgICAgICogZWRpdGluZy9JbmRlbnRPdXRkZW50
Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmRlbnRPdXRkZW50Q29tbWFuZDo6dHJ5
SW5kZW50aW5nQXNMaXN0SXRlbSk6IENoYW5nZWQgdG8gdXNlIG1vdmVQYXJhZ3JhcGhXaXRoQ2xv
bmVzLgorICAgICAgICAoV2ViQ29yZTo6SW5kZW50T3V0ZGVudENvbW1hbmQ6OmluZGVudEludG9C
bG9ja3F1b3RlKTogQ2hhbmdlZCB0byB1c2UgbW92ZVBhcmFncmFwaFdpdGhDbG9uZXMuCisgICAg
ICAgIChXZWJDb3JlOjpJbmRlbnRPdXRkZW50Q29tbWFuZDo6aW5kZW50UmVnaW9uKTogUmVtb3Zl
ZCBjb21tZW50LgorICAgICAgICAqIGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuaDogUmVt
b3ZlZCBwcmVwYXJlQmxvY2txdW90ZUxldmVsRm9ySW5zZXJ0aW9uIG1ldGhvZC4KKwogMjAwOS0x
MC0yMiAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNw
cAkocmV2aXNpb24gNDk4NzEpCisrKyBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNyArMzUyLDYgQEAgUmVmUHRyPENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uPiBnZXRQcgogLy8gZS5nLiB3aGVuIGEgdXNlciBpbnNlcnRzIGEgbmV3
IHBhcmFncmFwaCwgYWxsIHByb3BlcnRpZXMgbGlzdGVkIGhlcmUgbXVzdCBiZSBjb3BpZWQgdG8g
dGhlIG5ldyBwYXJhZ3JhcGguCiAvLyBGSVhNRTogVGhlIGN1cnJlbnQgZWRpdGluZ1N0eWxlUHJv
cGVydGllcyBjb250YWlucyBhbGwgaW5oZXJpdGFibGVQcm9wZXJ0aWVzIGJ1dCB3ZSBtYXkgbm90
IG5lZWQgdG8gcHJlc2VydmUgYWxsIGluaGVyaXRhYmxlIHByb3BlcnRpZXMKIHN0YXRpYyBjb25z
dCBpbnQgZWRpdGluZ1N0eWxlUHJvcGVydGllc1tdID0gewotICAgIENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yLAogICAgIC8vIENTUyBpbmhlcml0YWJsZSBwcm9wZXJ0aWVzCiAgICAgQ1NTUHJv
cGVydHlCb3JkZXJDb2xsYXBzZSwKICAgICBDU1NQcm9wZXJ0eUNvbG9yLApJbmRleDogV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiA0OTg3MSkKKysrIFdl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgpAQCAtNzEsNyArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKLUNvbXBvc2l0ZUVkaXRDb21tYW5kOjpDb21wb3NpdGVFZGl0Q29tbWFu
ZChEb2N1bWVudCAqZG9jdW1lbnQpIAorQ29tcG9zaXRlRWRpdENvbW1hbmQ6OkNvbXBvc2l0ZUVk
aXRDb21tYW5kKERvY3VtZW50ICpkb2N1bWVudCkKICAgICA6IEVkaXRDb21tYW5kKGRvY3VtZW50
KQogewogfQpAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJl
YmFsYW5jZVdoaXQKICAgICBOb2RlKiBub2RlID0gcG9zaXRpb24ubm9kZSgpOwogICAgIGlmICgh
bm9kZSB8fCAhbm9kZS0+aXNUZXh0Tm9kZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgVGV4dCog
dGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0Kj4obm9kZSk7ICAgIAorICAgIFRleHQqIHRleHRO
b2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KG5vZGUpOwogICAgIAogICAgIGlmICh0ZXh0Tm9kZS0+
bGVuZ3RoKCkgPT0gMCkKICAgICAgICAgcmV0dXJuOwpAQCAtNzM5LDYgKzczOSwxMjkgQEAgdm9p
ZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cHVzaFBhcnRpYWxseQogICAgIHNldEVuZGluZ1NlbGVj
dGlvbihvcmlnaW5hbFNlbGVjdGlvbik7CiB9CiAKKy8vIENsb25lIHRoZSBwYXJhZ3JhcGggYmV0
d2VlbiBzdGFydCBhbmQgZW5kIHVuZGVyIGJsb2NrRWxlbWVudCwKKy8vIHByZXNlcnZpbmcgdGhl
IGhpZXJhcmNoeSB1cCB0byBvdXRlck5vZGUuIAorCit2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5k
OjpjbG9uZVBhcmFncmFwaFVuZGVyTmV3RWxlbWVudChQb3NpdGlvbiYgc3RhcnQsIFBvc2l0aW9u
JiBlbmQsIE5vZGUqIG91dGVyTm9kZSwgRWxlbWVudCogYmxvY2tFbGVtZW50KQoreworICAgIC8v
IEZpcnN0IHdlIGNsb25lIHRoZSBvdXRlck5vZGUKKyAgICAKKyAgICBSZWZQdHI8Tm9kZT4gbGFz
dE5vZGUgPSBvdXRlck5vZGUtPmNsb25lTm9kZShpc1RhYmxlRWxlbWVudChvdXRlck5vZGUpKTsK
KyAgICBhcHBlbmROb2RlKGxhc3ROb2RlLCBibG9ja0VsZW1lbnQpOworCisgICAgaWYgKHN0YXJ0
Lm5vZGUoKSAhPSBvdXRlck5vZGUpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGFu
Y2VzdG9yczsKKyAgICAgICAgCisgICAgICAgIC8vIEluc2VydCBlYWNoIG5vZGUgZnJvbSBpbm5l
ck5vZGUgdG8gb3V0ZXJOb2RlIChleGNsdWRlZCkgaW4gYSBsaXN0LgorICAgICAgICBmb3IgKE5v
ZGUqIG4gPSBzdGFydC5ub2RlKCk7IG4gJiYgbiAhPSBvdXRlck5vZGU7IG4gPSBuLT5wYXJlbnRO
b2RlKCkpCisgICAgICAgICAgICBhbmNlc3RvcnMuYXBwZW5kKG4pOworCisgICAgICAgIC8vIENs
b25lIGV2ZXJ5IG5vZGUgYmV0d2VlbiBzdGFydC5ub2RlKCkgYW5kIG91dGVyQmxvY2suCisKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IGFuY2VzdG9ycy5zaXplKCk7IGkgIT0gMDsgLS1pKSB7Cisg
ICAgICAgICAgICBOb2RlKiBpdGVtID0gYW5jZXN0b3JzW2kgLSAxXS5nZXQoKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxOb2RlPiBjaGlsZCA9IGl0ZW0tPmNsb25lTm9kZShpc1RhYmxlRWxlbWVudChp
dGVtKSk7CisgICAgICAgICAgICBhcHBlbmROb2RlKGNoaWxkLCBzdGF0aWNfY2FzdDxFbGVtZW50
ICo+KGxhc3ROb2RlLmdldCgpKSk7CisgICAgICAgICAgICBsYXN0Tm9kZSA9IGNoaWxkLnJlbGVh
c2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEhhbmRsZSB0aGUgY2FzZSBvZiBwYXJh
Z3JhcGhzIHdpdGggbW9yZSB0aGFuIG9uZSBub2RlLAorICAgIC8vIGNsb25pbmcgYWxsIHRoZSBz
aWJsaW5ncyB1bnRpbCBlbmQubm9kZSgpIGlzIHJlYWNoZWQuCisgICAgCisgICAgaWYgKHN0YXJ0
Lm5vZGUoKSAhPSBlbmQubm9kZSgpKSB7CisgICAgICAgIGZvciAoTm9kZSogbiA9IHN0YXJ0Lm5v
ZGUoKS0+bmV4dFNpYmxpbmcoKTsgbiAhPSBOVUxMOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewor
ICAgICAgICAgICAgUmVmUHRyPE5vZGU+IGNsb25lZE5vZGUgPSBuLT5jbG9uZU5vZGUodHJ1ZSk7
CisgICAgICAgICAgICBpbnNlcnROb2RlQWZ0ZXIoY2xvbmVkTm9kZSwgbGFzdE5vZGUpOworICAg
ICAgICAgICAgbGFzdE5vZGUgPSBjbG9uZWROb2RlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGlm
IChuID09IGVuZC5ub2RlKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKKyAgICAKKy8vIFRoZXJlIGFyZSBidWdzIGluIGRlbGV0aW9uIHdoZW4gaXQgcmVt
b3ZlcyBhIGZ1bGx5IHNlbGVjdGVkIHRhYmxlL2xpc3QuCisvLyBJdCBleHBhbmRzIGFuZCByZW1v
dmVzIHRoZSBlbnRpcmUgdGFibGUvbGlzdCwgYnV0IHdpbGwgbGV0IGNvbnRlbnQKKy8vIGJlZm9y
ZSBhbmQgYWZ0ZXIgdGhlIHRhYmxlL2xpc3QgY29sbGFwc2Ugb250byBvbmUgbGluZS4gICAKKy8v
IERlbGV0aW5nIGEgcGFyYWdyYXBoIHdpbGwgbGVhdmUgYSBwbGFjZWhvbGRlci4gUmVtb3ZlIGl0
IChhbmQgcHJ1bmUKKy8vIGVtcHR5IG9yIHVucmVuZGVyZWQgcGFyZW50cykuCisKK3ZvaWQgQ29t
cG9zaXRlRWRpdENvbW1hbmQ6OmNsZWFudXBBZnRlckRlbGV0aW9uKCkKK3sKKyAgICBWaXNpYmxl
UG9zaXRpb24gY2FyZXRBZnRlckRlbGV0ZSA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFy
dCgpOworICAgIGlmIChpc1N0YXJ0T2ZQYXJhZ3JhcGgoY2FyZXRBZnRlckRlbGV0ZSkgJiYgaXNF
bmRPZlBhcmFncmFwaChjYXJldEFmdGVyRGVsZXRlKSkgeworICAgICAgICAvLyBOb3RlOiBXZSB3
YW50IHRoZSByaWdodG1vc3QgY2FuZGlkYXRlLgorICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9
IGNhcmV0QWZ0ZXJEZWxldGUuZGVlcEVxdWl2YWxlbnQoKS5kb3duc3RyZWFtKCk7CisgICAgICAg
IE5vZGUqIG5vZGUgPSBwb3NpdGlvbi5ub2RlKCk7CisgICAgICAgIC8vIE5vcm1hbGx5IGRlbGV0
aW9uIHdpbGwgbGVhdmUgYSBiciBhcyBhIHBsYWNlaG9sZGVyLgorICAgICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZShiclRhZykpCisgICAgICAgICAgICByZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3Rv
cnMobm9kZSk7CisgICAgICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gdG8gbW92ZSB3YXMgZW1wdHkg
YW5kIGluIGFuIGVtcHR5IGJsb2NrIHRoYXQgCisgICAgICAgIC8vIGRvZXNuJ3QgcmVxdWlyZSBh
IHBsYWNlaG9sZGVyIHRvIHByb3AgaXRzZWxmIG9wZW4gKGxpa2UgYSBib3JkZXJlZAorICAgICAg
ICAvLyBkaXYgb3IgYW4gbGkpLCByZW1vdmUgaXQgZHVyaW5nIHRoZSBtb3ZlICh0aGUgbGlzdCBy
ZW1vdmFsIGNvZGUKKyAgICAgICAgLy8gZXhwZWN0cyB0aGlzIGJlaGF2aW9yKS4KKyAgICAgICAg
ZWxzZSBpZiAoaXNCbG9jayhub2RlKSkKKyAgICAgICAgICAgIHJlbW92ZU5vZGVBbmRQcnVuZUFu
Y2VzdG9ycyhub2RlKTsKKyAgICAgICAgZWxzZSBpZiAobGluZUJyZWFrRXhpc3RzQXRQb3NpdGlv
bihwb3NpdGlvbikpIHsKKyAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgcHJlc2VydmVkICdcbicg
YXQgY2FyZXRBZnRlckRlbGV0ZS4KKyAgICAgICAgICAgIC8vIFdlIGNhbiBzYWZlbHkgYXNzdW1l
IHRoaXMgaXMgYSB0ZXh0IG5vZGUuCisgICAgICAgICAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRp
Y19jYXN0PFRleHQqPihub2RlKTsKKyAgICAgICAgICAgIGlmICh0ZXh0Tm9kZS0+bGVuZ3RoKCkg
PT0gMSkKKyAgICAgICAgICAgICAgICByZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnMobm9kZSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZGVsZXRlVGV4dEZyb21Ob2RlKHRl
eHROb2RlLCBwb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCAxKTsKKyAgICAgICAg
fQorICAgIH0KK30KKyAgICAKKy8vIFRoaXMgaXMgYSB2ZXJzaW9uIG9mIG1vdmVQYXJhZ3JhcGgg
dGhhdCBwcmVzZXJ2ZXMgc3R5bGUgYnkga2VlcGluZyB0aGUgb3JpZ2luYWwgbWFya3VwCisvLyBJ
dCBpcyBjdXJyZW50bHkgdXNlZCBvbmx5IGJ5IEluZGVudE91dGRlbnRDb21tYW5kIGJ1dCBpdCBp
cyBtZWFudCB0byBiZSB1c2VkIGluIHRoZQorLy8gZnV0dXJlIGJ5IHNldmVyYWwgb3RoZXIgY29t
bWFuZHMgc3VjaCBhcyBJbnNlcnRMaXN0IGFuZCB0aGUgYWxpZ24gY29tbWFuZHMuCisvLyBUaGUg
YmxvY2tFbGVtZW50IHBhcmFtZXRlciBpcyB0aGUgZWxlbWVudCB0byBtb3ZlIHRoZSBwYXJhZ3Jh
cGggdG8sCisvLyBvdXRlck5vZGUgaXMgdGhlIHRvcCBlbGVtZW50IG9mIHRoZSBwYXJhZ3JhcGgg
aGllcmFyY2h5LiAKKwordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaFdp
dGhDbG9uZXMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLCBj
b25zdCBWaXNpYmxlUG9zaXRpb24mIGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLCBFbGVtZW50KiBibG9j
a0VsZW1lbnQsIE5vZGUqIG91dGVyTm9kZSkKK3sKKyAgICBBU1NFUlQob3V0ZXJOb2RlKTsKKyAg
ICBBU1NFUlQoYmxvY2tFbGVtZW50KTsKKworICAgIFZpc2libGVQb3NpdGlvbiBiZWZvcmVQYXJh
Z3JhcGggPSBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLnByZXZpb3VzKCk7CisgICAgVmlzaWJsZVBv
c2l0aW9uIGFmdGVyUGFyYWdyYXBoKGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLm5leHQoKSk7CisgICAg
CisgICAgLy8gV2UgdXBzdHJlYW0oKSB0aGUgZW5kIGFuZCBkb3duc3RyZWFtKCkgdGhlIHN0YXJ0
IHNvIHRoYXQgd2UgZG9uJ3QgaW5jbHVkZSBjb2xsYXBzZWQgd2hpdGVzcGFjZSBpbiB0aGUgbW92
ZS4KKyAgICAvLyBXaGVuIHdlIHBhc3RlIGEgZnJhZ21lbnQsIHNwYWNlcyBhZnRlciB0aGUgZW5k
IGFuZCBiZWZvcmUgdGhlIHN0YXJ0IGFyZSB0cmVhdGVkIGFzIHRob3VnaCB0aGV5IHdlcmUgcmVu
ZGVyZWQuCisgICAgUG9zaXRpb24gc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBF
cXVpdmFsZW50KCkuZG93bnN0cmVhbSgpOworICAgIFBvc2l0aW9uIGVuZCA9IGVuZE9mUGFyYWdy
YXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkudXBzdHJlYW0oKTsKKworICAgIGNsb25lUGFyYWdy
YXBoVW5kZXJOZXdFbGVtZW50KHN0YXJ0LCBlbmQsIG91dGVyTm9kZSwgYmxvY2tFbGVtZW50KTsK
KyAgICAgIAorICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LCBl
bmQsIERPV05TVFJFQU0pKTsKKyAgICBkZWxldGVTZWxlY3Rpb24oZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpOworICAgIAorICAgIC8vIFRoZXJlIGFyZSBidWdzIGluIGRlbGV0aW9uIHdoZW4g
aXQgcmVtb3ZlcyBhIGZ1bGx5IHNlbGVjdGVkIHRhYmxlL2xpc3QuCisgICAgLy8gSXQgZXhwYW5k
cyBhbmQgcmVtb3ZlcyB0aGUgZW50aXJlIHRhYmxlL2xpc3QsIGJ1dCB3aWxsIGxldCBjb250ZW50
CisgICAgLy8gYmVmb3JlIGFuZCBhZnRlciB0aGUgdGFibGUvbGlzdCBjb2xsYXBzZSBvbnRvIG9u
ZSBsaW5lLgorICAgICAgIAorICAgIGNsZWFudXBBZnRlckRlbGV0aW9uKCk7CisgICAgCisgICAg
Ly8gQWRkIGEgYnIgaWYgcHJ1bmluZyBhbiBlbXB0eSBibG9jayBsZXZlbCBlbGVtZW50IGNhdXNl
ZCBhIGNvbGxhcHNlLiAgRm9yIGV4YW1wbGU6CisgICAgLy8gZm9vXgorICAgIC8vIDxkaXY+YmFy
PC9kaXY+CisgICAgLy8gYmF6CisgICAgLy8gSW1hZ2luZSBtb3ZpbmcgJ2JhcicgdG8gXi4gICdi
YXInIHdpbGwgYmUgZGVsZXRlZCBhbmQgaXRzIGRpdiBwcnVuZWQuICBUaGF0IHdvdWxkCisgICAg
Ly8gY2F1c2UgJ2JheicgdG8gY29sbGFwc2Ugb250byB0aGUgbGluZSB3aXRoICdmb29iYXInIHVu
bGVzcyB3ZSBpbnNlcnQgYSBici4KKyAgICAvLyBNdXN0IHJlY29ub25pY2FsaXplIHRoZXNlIHR3
byBWaXNpYmxlUG9zaXRpb25zIGFmdGVyIHRoZSBwcnVuaW5nIGFib3ZlLgorICAgIGJlZm9yZVBh
cmFncmFwaCA9IFZpc2libGVQb3NpdGlvbihiZWZvcmVQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQo
KSk7CisgICAgYWZ0ZXJQYXJhZ3JhcGggPSBWaXNpYmxlUG9zaXRpb24oYWZ0ZXJQYXJhZ3JhcGgu
ZGVlcEVxdWl2YWxlbnQoKSk7CisKKyAgICBpZiAoYmVmb3JlUGFyYWdyYXBoLmlzTm90TnVsbCgp
ICYmICFpc1RhYmxlRWxlbWVudChiZWZvcmVQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKS5ub2Rl
KCkpICYmICghaXNFbmRPZlBhcmFncmFwaChiZWZvcmVQYXJhZ3JhcGgpIHx8IGJlZm9yZVBhcmFn
cmFwaCA9PSBhZnRlclBhcmFncmFwaCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFRyaW0gdGV4dCBi
ZXR3ZWVuIGJlZm9yZVBhcmFncmFwaCBhbmQgYWZ0ZXJQYXJhZ3JhcGggaWYgdGhleSBhcmVuJ3Qg
ZXF1YWwuCisgICAgICAgIGluc2VydE5vZGVBdChjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQo
KSksIGJlZm9yZVBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICB9Cit9CisgICAgCisg
ICAgCiAvLyBUaGlzIG1vdmVzIGEgcGFyYWdyYXBoIHByZXNlcnZpbmcgaXRzIHN0eWxlLgogdm9p
ZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgZW5kT2ZQ
YXJhZ3JhcGhUb01vdmUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgZGVzdGluYXRpb24sIGJvb2wg
cHJlc2VydmVTZWxlY3Rpb24sIGJvb2wgcHJlc2VydmVTdHlsZSkKIHsKQEAgLTc4NCw3ICs5MDcs
NyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgVmlzaWJs
ZVBvc2l0aW9uIGFmdGVyUGFyYWdyYXBoKGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLm5leHQoKSk7CiAK
ICAgICAvLyBXZSB1cHN0cmVhbSgpIHRoZSBlbmQgYW5kIGRvd25zdHJlYW0oKSB0aGUgc3RhcnQg
c28gdGhhdCB3ZSBkb24ndCBpbmNsdWRlIGNvbGxhcHNlZCB3aGl0ZXNwYWNlIGluIHRoZSBtb3Zl
LgotICAgIC8vIFdoZW4gd2UgcGFzdGUgYSBmcmFnbWVudCwgc3BhY2VzIGFmdGVyIHRoZSBlbmQg
YW5kIGJlZm9yZSB0aGUgc3RhcnQgYXJlIHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZSByZW5k
ZXJlZC4gICAgCisgICAgLy8gV2hlbiB3ZSBwYXN0ZSBhIGZyYWdtZW50LCBzcGFjZXMgYWZ0ZXIg
dGhlIGVuZCBhbmQgYmVmb3JlIHRoZSBzdGFydCBhcmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3
ZXJlIHJlbmRlcmVkLgogICAgIFBvc2l0aW9uIHN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaFRvTW92
ZS5kZWVwRXF1aXZhbGVudCgpLmRvd25zdHJlYW0oKTsKICAgICBQb3NpdGlvbiBlbmQgPSBlbmRP
ZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnVwc3RyZWFtKCk7CiAgICAgCkBAIC03
OTMsNyArOTE2LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaAog
ICAgIFBvc2l0aW9uIGVuZFJhbmdlQ29tcGxpYW50ID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50
KGVuZCk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQo
KSwgc3RhcnRSYW5nZUNvbXBsaWFudC5ub2RlKCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQuZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmFuZ2VDb21wbGlhbnQubm9kZSgpLCBlbmRSYW5nZUNv
bXBsaWFudC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKIAotICAgIC8vIEZJWE1FOiBUaGlz
IGlzIGFuIGluZWZmaWNpZW50IHdheSB0byBwcmVzZXJ2ZSBzdHlsZSBvbiBub2RlcyBpbiB0aGUg
cGFyYWdyYXBoIHRvIG1vdmUuICBJdCAKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBhbiBpbmVmZmlj
aWVudCB3YXkgdG8gcHJlc2VydmUgc3R5bGUgb24gbm9kZXMgaW4gdGhlIHBhcmFncmFwaCB0byBt
b3ZlLiBJdAogICAgIC8vIHNob3VsZG4ndCBtYXR0ZXIgdGhvdWdoLCBzaW5jZSBtb3ZlZCBwYXJh
Z3JhcGhzIHdpbGwgdXN1YWxseSBiZSBxdWl0ZSBzbWFsbC4KICAgICBSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnQgPSBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlICE9IGVuZE9mUGFyYWdy
YXBoVG9Nb3ZlID8gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGRvY3VtZW50KCksIGNyZWF0ZU1h
cmt1cChyYW5nZS5nZXQoKSwgMCwgRG9Ob3RBbm5vdGF0ZUZvckludGVyY2hhbmdlLCB0cnVlKSwg
IiIpIDogMDsKICAgICAKQEAgLTgxMyw0MiArOTM2LDE0IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICBkZWxldGVTZWxlY3Rpb24oZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpOwogCiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCku
bm9kZSgpLT5pbkRvY3VtZW50KCkpOwotICAgIAotICAgIC8vIFRoZXJlIGFyZSBidWdzIGluIGRl
bGV0aW9uIHdoZW4gaXQgcmVtb3ZlcyBhIGZ1bGx5IHNlbGVjdGVkIHRhYmxlL2xpc3QuICAKLSAg
ICAvLyBJdCBleHBhbmRzIGFuZCByZW1vdmVzIHRoZSBlbnRpcmUgdGFibGUvbGlzdCwgYnV0IHdp
bGwgbGV0IGNvbnRlbnQKLSAgICAvLyBiZWZvcmUgYW5kIGFmdGVyIHRoZSB0YWJsZS9saXN0IGNv
bGxhcHNlIG9udG8gb25lIGxpbmUuCi0gICAgCi0gICAgLy8gRGVsZXRpbmcgYSBwYXJhZ3JhcGgg
d2lsbCBsZWF2ZSBhIHBsYWNlaG9sZGVyLiAgUmVtb3ZlIGl0IChhbmQgcHJ1bmUKLSAgICAvLyBl
bXB0eSBvciB1bnJlbmRlcmVkIHBhcmVudHMpLgotICAgIFZpc2libGVQb3NpdGlvbiBjYXJldEFm
dGVyRGVsZXRlID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7Ci0gICAgaWYgKGlz
U3RhcnRPZlBhcmFncmFwaChjYXJldEFmdGVyRGVsZXRlKSAmJiBpc0VuZE9mUGFyYWdyYXBoKGNh
cmV0QWZ0ZXJEZWxldGUpKSB7Ci0gICAgICAgIC8vIE5vdGU6IFdlIHdhbnQgdGhlIHJpZ2h0bW9z
dCBjYW5kaWRhdGUuCi0gICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gY2FyZXRBZnRlckRlbGV0
ZS5kZWVwRXF1aXZhbGVudCgpLmRvd25zdHJlYW0oKTsKLSAgICAgICAgTm9kZSogbm9kZSA9IHBv
c2l0aW9uLm5vZGUoKTsKLSAgICAgICAgLy8gTm9ybWFsbHkgZGVsZXRpb24gd2lsbCBsZWF2ZSBh
IGJyIGFzIGEgcGxhY2Vob2xkZXIuCi0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGJyVGFn
KSkKLSAgICAgICAgICAgIHJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyhub2RlKTsKLSAgICAg
ICAgLy8gSWYgdGhlIHNlbGVjdGlvbiB0byBtb3ZlIHdhcyBlbXB0eSBhbmQgaW4gYW4gZW1wdHkg
YmxvY2sgdGhhdCAKLSAgICAgICAgLy8gZG9lc24ndCByZXF1aXJlIGEgcGxhY2Vob2xkZXIgdG8g
cHJvcCBpdHNlbGYgb3BlbiAobGlrZSBhIGJvcmRlcmVkIAotICAgICAgICAvLyBkaXYgb3IgYW4g
bGkpLCByZW1vdmUgaXQgZHVyaW5nIHRoZSBtb3ZlICh0aGUgbGlzdCByZW1vdmFsIGNvZGUgCi0g
ICAgICAgIC8vIGV4cGVjdHMgdGhpcyBiZWhhdmlvcikuCi0gICAgICAgIGVsc2UgaWYgKGlzQmxv
Y2sobm9kZSkpCi0gICAgICAgICAgICByZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnMobm9kZSk7
Ci0gICAgICAgIGVsc2UgaWYgKGxpbmVCcmVha0V4aXN0c0F0VmlzaWJsZVBvc2l0aW9uKGNhcmV0
QWZ0ZXJEZWxldGUpKSB7Ci0gICAgICAgICAgICAvLyBUaGVyZSBpcyBhIHByZXNlcnZlZCAnXG4n
IGF0IGNhcmV0QWZ0ZXJEZWxldGUuCi0gICAgICAgICAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRp
Y19jYXN0PFRleHQqPihub2RlKTsKLSAgICAgICAgICAgIGlmICh0ZXh0Tm9kZS0+bGVuZ3RoKCkg
PT0gMSkKLSAgICAgICAgICAgICAgICByZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnMobm9kZSk7
Ci0gICAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgICAgIGRlbGV0ZVRleHRGcm9tTm9kZSh0
ZXh0Tm9kZSwgcG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgMSk7Ci0gICAgICAg
IH0KLSAgICB9CiAKLSAgICAvLyBBZGQgYSBiciBpZiBwcnVuaW5nIGFuIGVtcHR5IGJsb2NrIGxl
dmVsIGVsZW1lbnQgY2F1c2VkIGEgY29sbGFwc2UuICBGb3IgZXhhbXBsZToKKyAgICBjbGVhbnVw
QWZ0ZXJEZWxldGlvbigpOworCisgICAgLy8gQWRkIGEgYnIgaWYgcHJ1bmluZyBhbiBlbXB0eSBi
bG9jayBsZXZlbCBlbGVtZW50IGNhdXNlZCBhIGNvbGxhcHNlLiBGb3IgZXhhbXBsZToKICAgICAv
LyBmb29eCiAgICAgLy8gPGRpdj5iYXI8L2Rpdj4KICAgICAvLyBiYXoKLSAgICAvLyBJbWFnaW5l
IG1vdmluZyAnYmFyJyB0byBeLiAgJ2Jhcicgd2lsbCBiZSBkZWxldGVkIGFuZCBpdHMgZGl2IHBy
dW5lZC4gIFRoYXQgd291bGQKKyAgICAvLyBJbWFnaW5lIG1vdmluZyAnYmFyJyB0byBeLiAnYmFy
JyB3aWxsIGJlIGRlbGV0ZWQgYW5kIGl0cyBkaXYgcHJ1bmVkLiBUaGF0IHdvdWxkCiAgICAgLy8g
Y2F1c2UgJ2JheicgdG8gY29sbGFwc2Ugb250byB0aGUgbGluZSB3aXRoICdmb29iYXInIHVubGVz
cyB3ZSBpbnNlcnQgYSBici4KICAgICAvLyBNdXN0IHJlY29ub25pY2FsaXplIHRoZXNlIHR3byBW
aXNpYmxlUG9zaXRpb25zIGFmdGVyIHRoZSBwcnVuaW5nIGFib3ZlLgogICAgIGJlZm9yZVBhcmFn
cmFwaCA9IFZpc2libGVQb3NpdGlvbihiZWZvcmVQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSk7
CkBAIC05MTIsNyArMTAwNyw3IEBAIGJvb2wgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmJyZWFrT3V0
T2ZFbXAKICAgICAgICAgICAgICAgICByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKGxpc3RO
b2RlLT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIG5ld0Jsb2NrID0gY3JlYXRlTGlz
dEl0ZW1FbGVtZW50KGRvY3VtZW50KCkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8g
SWYgbGlzdE5vZGUgZG9lcyBOT1QgYXBwZWFyIGF0IHRoZSBlbmQgb2YgdGhlIG91dGVyIGxpc3Qg
aXRlbSwgdGhlbiBiZWhhdmUgYXMgaWYgaW4gYSByZWd1bGFyIHBhcmFncmFwaC4gCisgICAgICAg
ICAgICAvLyBJZiBsaXN0Tm9kZSBkb2VzIE5PVCBhcHBlYXIgYXQgdGhlIGVuZCBvZiB0aGUgb3V0
ZXIgbGlzdCBpdGVtLCB0aGVuIGJlaGF2ZSBhcyBpZiBpbiBhIHJlZ3VsYXIgcGFyYWdyYXBoLgog
ICAgICAgICB9IGVsc2UgaWYgKGJsb2NrRW5jbG9zaW5nTGlzdC0+aGFzVGFnTmFtZShvbFRhZykg
fHwgYmxvY2tFbmNsb3NpbmdMaXN0LT5oYXNUYWdOYW1lKHVsVGFnKSkKICAgICAgICAgICAgIG5l
d0Jsb2NrID0gY3JlYXRlTGlzdEl0ZW1FbGVtZW50KGRvY3VtZW50KCkpOwogICAgIH0KQEAgLTk3
MSw3ICsxMDY2LDcgQEAgYm9vbCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YnJlYWtPdXRPZkVtcAog
ICAgIC8vIHRvIGhvbGQgdGhlIGNhcmV0IGJlZm9yZSB0aGUgaGlnaGVzdCBibG9ja3F1b3RlLgog
ICAgIGluc2VydE5vZGVCZWZvcmUoYnIsIGhpZ2hlc3RCbG9ja3F1b3RlKTsKICAgICBWaXNpYmxl
UG9zaXRpb24gYXRCUihQb3NpdGlvbihici5nZXQoKSwgMCkpOwotICAgIC8vIElmIHRoZSBiciB3
ZSBpbnNlcnRlZCBjb2xsYXBzZWQsIGZvciBleGFtcGxlIGZvbzxicj48YmxvY2txdW90ZT4uLi48
L2Jsb2NrcXVvdGU+LCBpbnNlcnQgCisgICAgLy8gSWYgdGhlIGJyIHdlIGluc2VydGVkIGNvbGxh
cHNlZCwgZm9yIGV4YW1wbGUgZm9vPGJyPjxibG9ja3F1b3RlPi4uLjwvYmxvY2txdW90ZT4sIGlu
c2VydAogICAgIC8vIGEgc2Vjb25kIG9uZS4KICAgICBpZiAoIWlzU3RhcnRPZlBhcmFncmFwaChh
dEJSKSkKICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1l
bnQoKSksIGJyKTsKQEAgLTEwMDIsNyArMTA5Nyw3IEBAIGJvb2wgQ29tcG9zaXRlRWRpdENvbW1h
bmQ6OmJyZWFrT3V0T2ZFbXAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gT3BlcmF0aW9ucyB1
c2UgdGhpcyBmdW5jdGlvbiB0byBhdm9pZCBpbnNlcnRpbmcgY29udGVudCBpbnRvIGFuIGFuY2hv
ciB3aGVuIGF0IHRoZSBzdGFydCBvciB0aGUgZW5kIG9mIAorLy8gT3BlcmF0aW9ucyB1c2UgdGhp
cyBmdW5jdGlvbiB0byBhdm9pZCBpbnNlcnRpbmcgY29udGVudCBpbnRvIGFuIGFuY2hvciB3aGVu
IGF0IHRoZSBzdGFydCBvciB0aGUgZW5kIG9mCiAvLyB0aGF0IGFuY2hvciwgYXMgaW4gTlNUZXh0
Vmlldy4KIC8vIEZJWE1FOiBUaGlzIGlzIG9ubHkgYW4gYXBwcm94aW1hdGlvbiBvZiBOU1RleHRW
aWV3cyBpbnNlcnRpb24gYmVoYXZpb3IsIHdoaWNoIHZhcmllcyBkZXBlbmRpbmcgb24gaG93CiAv
LyB0aGUgY2FyZXQgd2FzIG1hZGUuIApAQCAtMTAyMiw3ICsxMTE3LDcgQEAgUG9zaXRpb24gQ29t
cG9zaXRlRWRpdENvbW1hbmQ6OnBvc2l0aW9uQQogICAgIGlmIChlbmNsb3NpbmdBbmNob3IgJiYg
IWlzQmxvY2soZW5jbG9zaW5nQW5jaG9yKSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gZmly
c3RJbkFuY2hvcihmaXJzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKGVuY2xvc2luZ0FuY2hv
cikpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gbGFzdEluQW5jaG9yKGxhc3REZWVwRWRpdGlu
Z1Bvc2l0aW9uRm9yTm9kZShlbmNsb3NpbmdBbmNob3IpKTsKLSAgICAgICAgLy8gSWYgdmlzdWFs
bHkganVzdCBhZnRlciB0aGUgYW5jaG9yLCBpbnNlcnQgKmluc2lkZSogdGhlIGFuY2hvciB1bmxl
c3MgaXQncyB0aGUgbGFzdCAKKyAgICAgICAgLy8gSWYgdmlzdWFsbHkganVzdCBhZnRlciB0aGUg
YW5jaG9yLCBpbnNlcnQgKmluc2lkZSogdGhlIGFuY2hvciB1bmxlc3MgaXQncyB0aGUgbGFzdAog
ICAgICAgICAvLyBWaXNpYmxlUG9zaXRpb24gaW4gdGhlIGRvY3VtZW50LCB0byBtYXRjaCBOU1Rl
eHRWaWV3LgogICAgICAgICBpZiAodmlzaWJsZVBvcyA9PSBsYXN0SW5BbmNob3IpIHsKICAgICAg
ICAgICAgIC8vIE1ha2Ugc3VyZSBhbmNob3JzIGFyZSBwdXNoZWQgZG93biBiZWZvcmUgYXZvaWRp
bmcgdGhlbSBzbyB0aGF0IHdlIGRvbid0CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuaAkocmV2aXNpb24gNDk4NzEpCisrKyBXZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw5IEBAIHByb3RlY3Rl
ZDoKICAgICAKICAgICB2b2lkIG1vdmVQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBwcmVz
ZXJ2ZVNlbGVjdGlvbiA9IGZhbHNlLCBib29sIHByZXNlcnZlU3R5bGUgPSB0cnVlKTsKICAgICB2
b2lkIG1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGJvb2wgcHJlc2VydmVTZWxlY3Rpb24g
PSBmYWxzZSwgYm9vbCBwcmVzZXJ2ZVN0eWxlID0gdHJ1ZSk7CisgICAgdm9pZCBtb3ZlUGFyYWdy
YXBoV2l0aENsb25lcyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcGhUb01v
dmUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgZW5kT2ZQYXJhZ3JhcGhUb01vdmUsIEVsZW1lbnQq
IGJsb2NrRWxlbWVudCwgTm9kZSogb3V0ZXJOb2RlKTsKKyAgICB2b2lkIGNsb25lUGFyYWdyYXBo
VW5kZXJOZXdFbGVtZW50KFBvc2l0aW9uJiBzdGFydCwgUG9zaXRpb24mIGVuZCwgTm9kZSogb3V0
ZXJOb2RlLCBFbGVtZW50KiBibG9ja0VsZW1lbnQpOworICAgIHZvaWQgY2xlYW51cEFmdGVyRGVs
ZXRpb24oKTsKICAgICAKICAgICBib29sIGJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVtKCk7CiAgICAg
Ym9vbCBicmVha091dE9mRW1wdHlNYWlsQmxvY2txdW90ZWRQYXJhZ3JhcGgoKTsKSW5kZXg6IFdl
YkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAkocmV2aXNpb24gNDk4NzEpCisr
KyBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NywzNyArNjcsNiBAQCBJbmRlbnRPdXRkZW50Q29tbWFuZDo6SW5kZW50T3V0ZGVudENv
bW1hCiB7CiB9CiAKLS8vIFRoaXMgZnVuY3Rpb24gaXMgYSB3b3JrYXJvdW5kIGZvciBtb3ZlUGFy
YWdyYXBoJ3MgdGVuZGVuY3kgdG8gc3RyaXAgYmxvY2txdW90ZXMuIEl0IHVwZGF0ZXMgbGFzdEJs
b2NrcXVvdGUgdG8gcG9pbnQgdG8gdGhlCi0vLyBjb3JyZWN0IGxldmVsIGZvciB0aGUgY3VycmVu
dCBwYXJhZ3JhcGgsIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byBhIHBsYWNlaG9sZGVyIGJyIHdo
ZXJlIHRoZSBpbnNlcnRpb24gc2hvdWxkIGJlIHBlcmZvcm1lZC4KLVBhc3NSZWZQdHI8RWxlbWVu
dD4gSW5kZW50T3V0ZGVudENvbW1hbmQ6OnByZXBhcmVCbG9ja3F1b3RlTGV2ZWxGb3JJbnNlcnRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjdXJyZW50UGFyYWdyYXBoLCBSZWZQdHI8RWxlbWVu
dD4mIGxhc3RCbG9ja3F1b3RlKQotewotICAgIGludCBjdXJyZW50QmxvY2txdW90ZUxldmVsID0g
MDsKLSAgICBpbnQgbGFzdEJsb2NrcXVvdGVMZXZlbCA9IDA7Ci0gICAgTm9kZSogbm9kZSA9IGN1
cnJlbnRQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCk7Ci0gICAgd2hpbGUgKChub2Rl
ID0gZW5jbG9zaW5nTm9kZVdpdGhUYWcoUG9zaXRpb24obm9kZS0+cGFyZW50Tm9kZSgpLCAwKSwg
YmxvY2txdW90ZVRhZykpKQotICAgICAgICBjdXJyZW50QmxvY2txdW90ZUxldmVsKys7Ci0gICAg
bm9kZSA9IGxhc3RCbG9ja3F1b3RlLmdldCgpOwotICAgIHdoaWxlICgobm9kZSA9IGVuY2xvc2lu
Z05vZGVXaXRoVGFnKFBvc2l0aW9uKG5vZGUtPnBhcmVudE5vZGUoKSwgMCksIGJsb2NrcXVvdGVU
YWcpKSkKLSAgICAgICAgbGFzdEJsb2NrcXVvdGVMZXZlbCsrOwotICAgIHdoaWxlIChjdXJyZW50
QmxvY2txdW90ZUxldmVsID4gbGFzdEJsb2NrcXVvdGVMZXZlbCkgewotICAgICAgICBSZWZQdHI8
RWxlbWVudD4gbmV3QmxvY2txdW90ZSA9IGNyZWF0ZUluZGVudEJsb2NrcXVvdGVFbGVtZW50KGRv
Y3VtZW50KCkpOwotICAgICAgICBhcHBlbmROb2RlKG5ld0Jsb2NrcXVvdGUsIGxhc3RCbG9ja3F1
b3RlKTsKLSAgICAgICAgbGFzdEJsb2NrcXVvdGUgPSBuZXdCbG9ja3F1b3RlOwotICAgICAgICBs
YXN0QmxvY2txdW90ZUxldmVsKys7Ci0gICAgfQotICAgIHdoaWxlIChjdXJyZW50QmxvY2txdW90
ZUxldmVsIDwgbGFzdEJsb2NrcXVvdGVMZXZlbCkgewotICAgICAgICBsYXN0QmxvY2txdW90ZSA9
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihlbmNsb3NpbmdOb2RlV2l0aFRhZyhQb3NpdGlvbihsYXN0
QmxvY2txdW90ZS0+cGFyZW50Tm9kZSgpLCAwKSwgYmxvY2txdW90ZVRhZykpOwotICAgICAgICBs
YXN0QmxvY2txdW90ZUxldmVsLS07Ci0gICAgfQotICAgIFJlZlB0cjxFbGVtZW50PiBwbGFjZWhv
bGRlciA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKTsKLSAgICBhcHBlbmROb2RlKHBs
YWNlaG9sZGVyLCBsYXN0QmxvY2txdW90ZSk7Ci0gICAgLy8gQWRkIGFub3RoZXIgYnIgYmVmb3Jl
IHRoZSBwbGFjZWhvbGRlciBpZiBpdCBjb2xsYXBzZWQuCi0gICAgVmlzaWJsZVBvc2l0aW9uIHZp
c2libGVQb3MoUG9zaXRpb24ocGxhY2Vob2xkZXIuZ2V0KCksIDApKTsKLSAgICBpZiAoIWlzU3Rh
cnRPZlBhcmFncmFwaCh2aXNpYmxlUG9zKSkKLSAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShjcmVh
dGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSksIHBsYWNlaG9sZGVyKTsKLSAgICByZXR1cm4gcGxh
Y2Vob2xkZXIucmVsZWFzZSgpOwotfQotCiBib29sIEluZGVudE91dGRlbnRDb21tYW5kOjp0cnlJ
bmRlbnRpbmdBc0xpc3RJdGVtKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgZW5kT2ZDdXJyZW50UGFy
YWdyYXBoKQogewogICAgIC8vIElmIG91ciBzZWxlY3Rpb24gaXMgbm90IGluc2lkZSBhIGxpc3Qs
IGJhaWwgb3V0LgpAQCAtMTE3LDEzICs4Niw5IEBAIGJvb2wgSW5kZW50T3V0ZGVudENvbW1hbmQ6
OnRyeUluZGVudGluZ0EKICAgICBFbGVtZW50KiBuZXh0TGlzdCA9IHNlbGVjdGVkTGlzdEl0ZW0t
Pm5leHRFbGVtZW50U2libGluZygpOwogCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0xpc3QgPSBk
b2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KGxpc3ROb2RlLT50YWdRTmFtZSgpLCBmYWxzZSk7Ci0g
ICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0xpc3RJdGVtID0gc2VsZWN0ZWRMaXN0SXRlbS0+Y2xvbmVF
bGVtZW50V2l0aG91dENoaWxkcmVuKCk7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IHBsYWNlaG9sZGVy
ID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpOwogICAgIGluc2VydE5vZGVCZWZvcmUo
bmV3TGlzdCwgc2VsZWN0ZWRMaXN0SXRlbSk7Ci0gICAgYXBwZW5kTm9kZShuZXdMaXN0SXRlbSwg
bmV3TGlzdCk7Ci0gICAgYXBwZW5kTm9kZShwbGFjZWhvbGRlciwgbmV3TGlzdEl0ZW0pOwogCi0g
ICAgbW92ZVBhcmFncmFwaChzdGFydE9mUGFyYWdyYXBoKGVuZE9mQ3VycmVudFBhcmFncmFwaCks
IGVuZE9mQ3VycmVudFBhcmFncmFwaCwgVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKHBsYWNlaG9s
ZGVyLCAwKSksIHRydWUpOworICAgIG1vdmVQYXJhZ3JhcGhXaXRoQ2xvbmVzKHN0YXJ0T2ZQYXJh
Z3JhcGgoZW5kT2ZDdXJyZW50UGFyYWdyYXBoKSwgZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBuZXdM
aXN0LmdldCgpLCBzZWxlY3RlZExpc3RJdGVtKTsKIAogICAgIGlmIChjYW5NZXJnZUxpc3RzKHBy
ZXZpb3VzTGlzdCwgbmV3TGlzdC5nZXQoKSkpCiAgICAgICAgIG1lcmdlSWRlbnRpY2FsRWxlbWVu
dHMocHJldmlvdXNMaXN0LCBuZXdMaXN0KTsKQEAgLTEzNywyNSArMTAyLDMxIEBAIHZvaWQgSW5k
ZW50T3V0ZGVudENvbW1hbmQ6OmluZGVudEludG9CbG8KIHsKICAgICBOb2RlKiBlbmNsb3NpbmdD
ZWxsID0gMDsKIAorICAgIFBvc2l0aW9uIHN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChlbmRPZkN1
cnJlbnRQYXJhZ3JhcGgpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgZW5jbG9zaW5nQ2VsbCA9IGVu
Y2xvc2luZ05vZGVPZlR5cGUoc3RhcnQsICZpc1RhYmxlQ2VsbCk7CisgICAgTm9kZSogbm9kZVRv
U3BsaXRUbzsKKyAgICBpZiAoZW5jbG9zaW5nQ2VsbCkKKyAgICAgICAgbm9kZVRvU3BsaXRUbyA9
IGVuY2xvc2luZ0NlbGw7CisgICAgZWxzZSBpZiAoZW5jbG9zaW5nTGlzdChzdGFydC5ub2RlKCkp
KQorICAgICAgICBub2RlVG9TcGxpdFRvID0gZW5jbG9zaW5nQmxvY2soc3RhcnQubm9kZSgpKTsK
KyAgICBlbHNlCisgICAgICAgIG5vZGVUb1NwbGl0VG8gPSBlZGl0YWJsZVJvb3RGb3JQb3NpdGlv
bihzdGFydCk7CisKKyAgICBSZWZQdHI8Tm9kZT4gb3V0ZXJCbG9jayA9IHNwbGl0VHJlZVRvTm9k
ZShzdGFydC5ub2RlKCksIG5vZGVUb1NwbGl0VG8pOworCiAgICAgaWYgKCF0YXJnZXRCbG9ja3F1
b3RlKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBibG9ja3F1b3RlIGFuZCBpbnNlcnQgaXQg
YXMgYSBjaGlsZCBvZiB0aGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50LiBXZSBhY2NvbXBsaXNoCiAg
ICAgICAgIC8vIHRoaXMgYnkgc3BsaXR0aW5nIGFsbCBwYXJlbnRzIG9mIHRoZSBjdXJyZW50IHBh
cmFncmFwaCB1cCB0byB0aGF0IHBvaW50LgogICAgICAgICB0YXJnZXRCbG9ja3F1b3RlID0gY3Jl
YXRlSW5kZW50QmxvY2txdW90ZUVsZW1lbnQoZG9jdW1lbnQoKSk7Ci0gICAgICAgIFBvc2l0aW9u
IHN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChlbmRPZkN1cnJlbnRQYXJhZ3JhcGgpLmRlZXBFcXVp
dmFsZW50KCk7Ci0gICAgICAgIGVuY2xvc2luZ0NlbGwgPSBlbmNsb3NpbmdOb2RlT2ZUeXBlKHN0
YXJ0LCAmaXNUYWJsZUNlbGwpOwotICAgICAgICBOb2RlKiBub2RlVG9TcGxpdFRvID0gZW5jbG9z
aW5nQ2VsbCA/IGVuY2xvc2luZ0NlbGwgOiBlZGl0YWJsZVJvb3RGb3JQb3NpdGlvbihzdGFydCk7
Ci0gICAgICAgIFJlZlB0cjxOb2RlPiBzdGFydE9mTmV3QmxvY2sgPSBzcGxpdFRyZWVUb05vZGUo
c3RhcnQubm9kZSgpLCBub2RlVG9TcGxpdFRvKTsKLSAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZSh0
YXJnZXRCbG9ja3F1b3RlLCBzdGFydE9mTmV3QmxvY2spOworICAgICAgICBpbnNlcnROb2RlQmVm
b3JlKHRhcmdldEJsb2NrcXVvdGUsIG91dGVyQmxvY2spOwogICAgIH0KIAotICAgIFJlZlB0cjxF
bGVtZW50PiBpbnNlcnRpb25Qb2ludCA9IHByZXBhcmVCbG9ja3F1b3RlTGV2ZWxGb3JJbnNlcnRp
b24oZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCB0YXJnZXRCbG9ja3F1b3RlKTsKLQorICAgIG1vdmVQ
YXJhZ3JhcGhXaXRoQ2xvbmVzKHN0YXJ0T2ZQYXJhZ3JhcGgoZW5kT2ZDdXJyZW50UGFyYWdyYXBo
KSwgZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCB0YXJnZXRCbG9ja3F1b3RlLmdldCgpLCBvdXRlckJs
b2NrLmdldCgpKTsKKyAgICAKICAgICAvLyBEb24ndCBwdXQgdGhlIG5leHQgcGFyYWdyYXBoIGlu
IHRoZSBibG9ja3F1b3RlIHdlIGp1c3QgY3JlYXRlZCBmb3IgdGhpcyBwYXJhZ3JhcGggdW5sZXNz
IAogICAgIC8vIHRoZSBuZXh0IHBhcmFncmFwaCBpcyBpbiB0aGUgc2FtZSBjZWxsLgogICAgIGlm
IChlbmNsb3NpbmdDZWxsICYmIGVuY2xvc2luZ0NlbGwgIT0gZW5jbG9zaW5nTm9kZU9mVHlwZShl
bmRPZk5leHRQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSwgJmlzVGFibGVDZWxsKSkKICAgICAg
ICAgdGFyZ2V0QmxvY2txdW90ZSA9IDA7Ci0KLSAgICBtb3ZlUGFyYWdyYXBoKHN0YXJ0T2ZQYXJh
Z3JhcGgoZW5kT2ZDdXJyZW50UGFyYWdyYXBoKSwgZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBWaXNp
YmxlUG9zaXRpb24oUG9zaXRpb24oaW5zZXJ0aW9uUG9pbnQsIDApKSwgdHJ1ZSk7CiB9CiAKIHZv
aWQgSW5kZW50T3V0ZGVudENvbW1hbmQ6OmluZGVudFJlZ2lvbigpCkBAIC0xOTEsOCArMTYyLDYg
QEAgdm9pZCBJbmRlbnRPdXRkZW50Q29tbWFuZDo6aW5kZW50UmVnaW9uKAogICAgICAgICAgICAg
YmxvY2txdW90ZUZvck5leHRJbmRlbnQgPSAwOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBp
bmRlbnRJbnRvQmxvY2txdW90ZShlbmRPZkN1cnJlbnRQYXJhZ3JhcGgsIGVuZE9mTmV4dFBhcmFn
cmFwaCwgYmxvY2txdW90ZUZvck5leHRJbmRlbnQpOwotICAgICAgICAgICAgLy8gYmxvY2txdW90
ZUZvck5leHRJbmRlbnQgbWF5YmUgdXBkYXRlZAotICAgICAgICAgICAgLy8gdGhpcyBpcyBkdWUg
dG8gdGhlIHdheSBwcmVwYXJlQmxvY2txdW90ZUxldmVsRm9ySW5zZXJ0aW9uIHdhcyBkZXNpZ25l
ZC4KICAgICAgICAgLy8gU2FuaXR5IGNoZWNrOiBNYWtlIHN1cmUgb3VyIG1vdmVQYXJhZ3JhcGgg
Y2FsbHMgZGlkbid0IHJlbW92ZSBlbmRPZk5leHRQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKS5u
b2RlKCkKICAgICAgICAgLy8gSWYgc29tZWhvdyB3ZSBkaWQsIHJldHVybiB0byBwcmV2ZW50IGNy
YXNoZXMuCiAgICAgICAgIGlmIChlbmRPZk5leHRQYXJhZ3JhcGguaXNOb3ROdWxsKCkgJiYgIWVu
ZE9mTmV4dFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKS0+aW5Eb2N1bWVudCgpKSB7
CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuaAkocmV2aXNpb24gNDk4
NzEpCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDksNyArNDksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5kZW50UmVnaW9uKCk7
CiAgICAgdm9pZCBvdXRkZW50UmVnaW9uKCk7CiAgICAgdm9pZCBvdXRkZW50UGFyYWdyYXBoKCk7
Ci0gICAgUGFzc1JlZlB0cjxFbGVtZW50PiBwcmVwYXJlQmxvY2txdW90ZUxldmVsRm9ySW5zZXJ0
aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFJlZlB0cjxFbGVtZW50PiYpOwogICAgIGJvb2wg
dHJ5SW5kZW50aW5nQXNMaXN0SXRlbShjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKICAgICB2b2lk
IGluZGVudEludG9CbG9ja3F1b3RlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYsIFJlZlB0cjxFbGVtZW50PiYpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0OTk1
OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMz
IEBACisyMDA5LTEwLTIyICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTjog
Q29weSBpcyBjb3B5aW5nIGluY29ycmVjdCBiYWNrZ3JvdW5kLWNvbG9yCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83MjQ4NTI5PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mjk2OTcKKworICAgICAgICBBbGwgdGhlIGZvbGxvd2luZyB0ZXN0cyBoYXZl
IGJlZW4gcmUtYmFzZWxpbmVkIGJlY2F1c2UKKyAgICAgICAgdGhlIGluZGVudCBjb21tYW5kIG5v
dyBwcmVzZXJ2ZXMgdGhlIG9yaWdpbmFsIG1hcmt1cC4KKyAgICAgICAgQSBuZXcgdGVzdCAoaW5k
ZW50LXBhcmFncmFwaC5odG1sKSBoYXMgYmVlbiBhZGRlZCB0byB0ZXN0CisgICAgICAgIHNldmVy
YWwgaW5kZW50IGNvbWJpbmF0aW9ucyBub3QgY292ZXJlZCBieSB0aGUgZXhpc3RpbmcgdGVzdHMu
CisgICAgICAgIAorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvMTkwODctZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvMTk2NTMtMS1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtZGl2LWluc2lkZS1saXN0LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQt
YmxvY2txdW90ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQv
aW5kZW50LW5lc3RlZC1kaXYtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvZXhlY0Nv
bW1hbmQvaW5kZW50LXBhcmFncmFwaHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9l
eGVjQ29tbWFuZC9pbmRlbnQtc2Vjb25kLXBhcmFncmFwaC1pbi1ibG9ja3F1b3RlLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC13aXRoLXN0eWxlLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL2luc2VydGluZy81OTk0NDgwLTItZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ2NDE4
ODAtMi1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvNDkxNjU0MS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRp
bmcvZXhlY0NvbW1hbmQvNTEzODQ0MS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTQ4MTUyMy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXBhcmFncmFwaHMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFu
ZC9pbmRlbnQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3NlbGVjdC1lbGVtZW50LTEtZXhwZWN0ZWQudHh0OgorCiAyMDA5
LTEwLTIyICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFu
ZC8xOTA4Ny1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC8xOTA4Ny1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ5ODcxKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC8xOTA4Ny1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTMsMyArMyw1IEBAIFRoaXMgdGVzdHMgZm9yIGEgY3Jhc2ggd2hlbiBpbmRlbnRpbmcg
YSAKIAogCiAKKworCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzE5NjUz
LTEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvMTk2NTMtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ5ODcxKQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9leGVjQ29tbWFuZC8xOTY1My0xLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNSw3ICs1LDcgQEAgVGhpcyB0ZXN0cyBjcmVhdGluZyBhIGxpc3QgZnJvbSBhbiBlbXB0
eQogPHVsPjxsaT48Yj5Cb2xkPC9iPjwvbGk+PC91bD4KIAogVGhpcyB0ZXN0cyBpbmRlbnRpbmcg
YW4gZW1wdHkgcGFyYWdyYXBoIHdpdGggYm9sZCBhbHJlYWR5IGFwcGxpZWQgdG8gaXQuIFRoZSB3
b3JkIGJlbG93IHNob3VsZCBiZSBib2xkLgotPGJsb2NrcXVvdGUgY2xhc3M9IndlYmtpdC1pbmRl
bnQtYmxvY2txdW90ZSIgc3R5bGU9Im1hcmdpbjogMCAwIDAgNDBweDsgYm9yZGVyOiBub25lOyBw
YWRkaW5nOiAwcHg7Ij48Yj5Cb2xkPC9iPjwvYmxvY2txdW90ZT4KKzxibG9ja3F1b3RlIGNsYXNz
PSJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiIHN0eWxlPSJtYXJnaW46IDAgMCAwIDQwcHg7IGJv
cmRlcjogbm9uZTsgcGFkZGluZzogMHB4OyI+PGRpdj48Yj5Cb2xkPC9iPjwvZGl2PjwvYmxvY2tx
dW90ZT4KIAogVGhpcyB0ZXN0cyBpbmRlbnRpbmcgYW4gZW1wdHkgcGFyYWdyYXBoIHdoZW4gdGhl
IHR5cGluZyBzdHlsZSB3YXMgQm9sZC4gVGhlIHdvcmQgYmVsb3cgc2hvdWxkIGJlIGJvbGQuCiA8
YmxvY2txdW90ZSBjbGFzcz0id2Via2l0LWluZGVudC1ibG9ja3F1b3RlIiBzdHlsZT0ibWFyZ2lu
OiAwIDAgMCA0MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiPjxiPkJvbGQ8L2I+PC9i
bG9ja3F1b3RlPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQt
ZGl2LWluc2lkZS1saXN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1kaXYtaW5zaWRlLWxpc3QtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA0OTg3MSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50
LWRpdi1pbnNpZGUtbGlzdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNCArNCw0
IEBAIGEKIGhlbGxvCiB3b3JsZAogYgotYSA8dWw+IDxsaT5oZWxsbzwvbGk+PC91bD48YmxvY2tx
dW90ZSBjbGFzcz0id2Via2l0LWluZGVudC1ibG9ja3F1b3RlIiBzdHlsZT0ibWFyZ2luOiAwIDAg
MCA0MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiPndvcmxkPC9ibG9ja3F1b3RlPiBi
CithIDx1bD4gPGxpPmhlbGxvPGRpdiBpZD0idGVzdCI+PGJsb2NrcXVvdGUgY2xhc3M9IndlYmtp
dC1pbmRlbnQtYmxvY2txdW90ZSIgc3R5bGU9Im1hcmdpbjogMCAwIDAgNDBweDsgYm9yZGVyOiBu
b25lOyBwYWRkaW5nOiAwcHg7Ij4gd29ybGQgPC9ibG9ja3F1b3RlPjwvZGl2PjwvbGk+PC91bD4g
YgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWJs
b2NrcXVvdGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL2luZGVudC1uZXN0ZWQtYmxvY2txdW90ZXMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA0OTg3MSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LW5l
c3RlZC1ibG9ja3F1b3Rlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNCArNCw0
IEBAIGhlbGxvCiB3b3JsZAogd2Via2l0CiBpcyBncmVhdAotPGJsb2NrcXVvdGUgaWQ9Im91dGVy
Ij4gaGVsbG8gPGJsb2NrcXVvdGUgaWQ9ImlubmVyIj4gd29ybGQ8YnI+PC9ibG9ja3F1b3RlPjwv
YmxvY2txdW90ZT48YmxvY2txdW90ZSBjbGFzcz0id2Via2l0LWluZGVudC1ibG9ja3F1b3RlIiBz
dHlsZT0ibWFyZ2luOiAwIDAgMCA0MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiPjxi
bG9ja3F1b3RlIGNsYXNzPSJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiIHN0eWxlPSJtYXJnaW46
IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMHB4OyI+PGJsb2NrcXVvdGUgY2xh
c3M9IndlYmtpdC1pbmRlbnQtYmxvY2txdW90ZSIgc3R5bGU9Im1hcmdpbjogMCAwIDAgNDBweDsg
Ym9yZGVyOiBub25lOyBwYWRkaW5nOiAwcHg7Ij53ZWJraXQ8L2Jsb2NrcXVvdGU+PC9ibG9ja3F1
b3RlPjwvYmxvY2txdW90ZT48YmxvY2txdW90ZSBpZD0ib3V0ZXIiPiBpcyBncmVhdCA8L2Jsb2Nr
cXVvdGU+Cis8YmxvY2txdW90ZSBpZD0ib3V0ZXIiPiBoZWxsbyA8YmxvY2txdW90ZSBpZD0iaW5u
ZXIiPiB3b3JsZDxicj48L2Jsb2NrcXVvdGU+PC9ibG9ja3F1b3RlPjxibG9ja3F1b3RlIGNsYXNz
PSJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiIHN0eWxlPSJtYXJnaW46IDAgMCAwIDQwcHg7IGJv
cmRlcjogbm9uZTsgcGFkZGluZzogMHB4OyI+PGJsb2NrcXVvdGUgaWQ9Im91dGVyIj48YmxvY2tx
dW90ZSBpZD0iaW5uZXIiPiB3ZWJraXQgPC9ibG9ja3F1b3RlPjwvYmxvY2txdW90ZT48L2Jsb2Nr
cXVvdGU+PGJsb2NrcXVvdGUgaWQ9Im91dGVyIj4gaXMgZ3JlYXQgPC9ibG9ja3F1b3RlPgpJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWRpdi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9p
bmRlbnQtbmVzdGVkLWRpdi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ5ODcxKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtbmVzdGVkLWRpdi1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACiBUaGlzIHRlc3RzIGluZGVudGluZyBuZXN0
ZWQgZGl2cy4gQnkgaW5kZW50aW5nICJoZWxsbyIsIHdlIHNob3VsZCBiZSBhYmxlIHRvIGVuY2xv
c2UgYWxsIHRocmVlIGJsb2NrcyAxIHRocm91Z2ggMyBieSBhIGJsb2NrcXVvdGUKIAogaGVsbG8K
LTxibG9ja3F1b3RlIGNsYXNzPSJ3ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiIHN0eWxlPSJtYXJn
aW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMHB4OyI+aGVsbG88L2Jsb2Nr
cXVvdGU+Cis8YmxvY2txdW90ZSBjbGFzcz0id2Via2l0LWluZGVudC1ibG9ja3F1b3RlIiBzdHls
ZT0ibWFyZ2luOiAwIDAgMCA0MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiPjxkaXYg
aWQ9ImJsb2NrMSI+PGRpdiBpZD0iYmxvY2syIj48ZGl2IGlkPSJibG9jazMiPmhlbGxvPC9kaXY+
PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVj
Q29tbWFuZC9pbmRlbnQtcGFyYWdyYXBocy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXBhcmFncmFwaHMuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXBhcmFncmFwaHMuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2Ny
aXB0IHNyYz0uLi9lZGl0aW5nLmpzIGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0ph
dmFTY3JpcHQiID48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0cyBpbmRlbnRp
bmcgdGhyZWUgcGFyYWdyYXBocyB3aXRoIGRpZmZlcmVudCBoaWVyYXJjaGllcy4KKzxkaXYgaWQ9
InJvb3QiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+Cis8ZGl2IGlkPSJ0ZXN0Ij4KKyAgICA8ZGl2
PjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjog
cmdiKDI1NSwgMCwgMCk7Ij5IZWxsbyA8aW1nIHNyYz0iaHR0cDovLyI+IHdvcmxkPC9zcGFuPjwv
ZGl2PgorICAgIDxkaXY+SGVsbG8gPGltZyBzcmM9Imh0dHA6Ly8iPiB3b3JsZDwvc3Bhbj48L2Rp
dj4KKyAgICBIZWxsbyA8aW1nIHNyYz0iaHR0cDovLyI+IHdvcmxkCis8L2Rpdj4KKzwvZGl2Pgor
PGJyPgorPHVsPgorPGxpPkJlZm9yZSBpbmRlbnQ6PHNwYW4gaWQ9ImMxIj48L3NwYW4+PC9saT4K
KzxsaT5BZnRlciBpbmRlbnQ6PHNwYW4gaWQ9ImMyIj48L3NwYW4+PC9saT4KKzwvdWw+CisKKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIGVkaXRpbmdUZXN0KCkKK3sK
KyAgICB2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7CisKKyAgICBkb2N1
bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2MxJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZS5pbm5lckhUTUwp
KTsKKworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbmRlbnQiKTsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYzInKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShl
LmlubmVySFRNTCkpOworfQorCitydW5FZGl0aW5nVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1z
ZWNvbmQtcGFyYWdyYXBoLWluLWJsb2NrcXVvdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXNlY29uZC1wYXJhZ3JhcGgt
aW4tYmxvY2txdW90ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ5ODcxKQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbmRlbnQtc2Vjb25kLXBhcmFncmFwaC1pbi1ibG9ja3F1
b3RlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw0ICsyLDQgQEAgVGhpcyB0ZXN0
cyBpbmRlbnRpbmcgdGhlIHNlY29uZCBwYXJhZ3JhcAogCiBoZWxsbwogd29ybGQKLTxibG9ja3F1
b3RlIGlkPSJ0ZXN0Ij4gaGVsbG88YnI+PC9ibG9ja3F1b3RlPjxibG9ja3F1b3RlIGNsYXNzPSJ3
ZWJraXQtaW5kZW50LWJsb2NrcXVvdGUiIHN0eWxlPSJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRl
cjogbm9uZTsgcGFkZGluZzogMHB4OyI+PGJsb2NrcXVvdGUgY2xhc3M9IndlYmtpdC1pbmRlbnQt
YmxvY2txdW90ZSIgc3R5bGU9Im1hcmdpbjogMCAwIDAgNDBweDsgYm9yZGVyOiBub25lOyBwYWRk
aW5nOiAwcHg7Ij53b3JsZDwvYmxvY2txdW90ZT48L2Jsb2NrcXVvdGU+Cis8YmxvY2txdW90ZSBp
ZD0idGVzdCI+IGhlbGxvPGJyPjwvYmxvY2txdW90ZT48YmxvY2txdW90ZSBjbGFzcz0id2Via2l0
LWluZGVudC1ibG9ja3F1b3RlIiBzdHlsZT0ibWFyZ2luOiAwIDAgMCA0MHB4OyBib3JkZXI6IG5v
bmU7IHBhZGRpbmc6IDBweDsiPjxibG9ja3F1b3RlIGlkPSJ0ZXN0Ij4gd29ybGQgPC9ibG9ja3F1
b3RlPjwvYmxvY2txdW90ZT4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQv
aW5kZW50LXdpdGgtc3R5bGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXdpdGgtc3R5bGUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA0OTg3MSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5kZW50LXdp
dGgtc3R5bGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQCBFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPCiBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24K
IEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJh
bmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IFNQQU4gPiBCTE9DS1FVT1RFID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IFNQQU4gPiBCTE9DS1FVT1RFID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0
eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9m
ICN0ZXh0ID4gU1BBTiA+IERJViA+IEJMT0NLUVVPVEUgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0byA1IG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJMT0NLUVVPVEUgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0
cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRp
b24KIFRoaXMgdGVzdHMgaW5kZW50aW5nIHR3byBhbmQgdGhyZWUuIFlvdSBzaG91bGQgc2VlIHR3
byBhbmQgdGhyZWUgaW5kZW50ZWQgYW5kIHdpdGggdGhlIHNhbWUgYmFja2dyb3VuZCBjb2xvciBh
cyBvbmUgYW5kIGZvdXIuCkBAIC0xNCw0ICsxNCw0IEBAIHRocmVlCiBmb3VyCiAKIEJlZm9yZSBv
cmRlcmVkIGxpc3Q6IDxkaXY+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJi
YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAwLCAwKTsiPm9uZTwvc3Bhbj48L2Rpdj4gPGRpdiBp
ZD0idGVzdDEiPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDI1NSwgMCwgMCk7Ij50d288L3NwYW4+PC9kaXY+IDxkaXYgaWQ9InRlc3Qy
Ij48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
IHJnYigyNTUsIDAsIDApOyI+dGhyZWU8L3NwYW4+PC9kaXY+IDxkaXY+PHNwYW4gY2xhc3M9IkFw
cGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAwLCAwKTsi
PmZvdXI8L3NwYW4+PC9kaXY+Ci1BZnRlciBvcmRlcmVkOiA8ZGl2PjxzcGFuIGNsYXNzPSJBcHBs
ZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMCwgMCk7Ij5v
bmU8L3NwYW4+PC9kaXY+IDxibG9ja3F1b3RlIGNsYXNzPSJ3ZWJraXQtaW5kZW50LWJsb2NrcXVv
dGUiIHN0eWxlPSJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMHB4
OyI+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9y
OiByZ2IoMjU1LCAwLCAwKTsgIj50d288L3NwYW4+PGJyPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHls
ZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMCwgMCk7ICI+dGhyZWU8
L3NwYW4+PC9ibG9ja3F1b3RlPiA8ZGl2PjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBz
dHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMCwgMCk7Ij5mb3VyPC9zcGFuPjwvZGl2
PgorQWZ0ZXIgb3JkZXJlZDogPGRpdj48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDAsIDApOyI+b25lPC9zcGFuPjwvZGl2PiA8
YmxvY2txdW90ZSBjbGFzcz0id2Via2l0LWluZGVudC1ibG9ja3F1b3RlIiBzdHlsZT0ibWFyZ2lu
OiAwIDAgMCA0MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiPjxkaXYgaWQ9InRlc3Qx
Ij48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
IHJnYigyNTUsIDAsIDApOyI+dHdvPC9zcGFuPjwvZGl2PjxkaXYgaWQ9InRlc3QyIj48c3BhbiBj
bGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUs
IDAsIDApOyI+dGhyZWU8L3NwYW4+PC9kaXY+PC9ibG9ja3F1b3RlPiA8ZGl2PjxzcGFuIGNsYXNz
PSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMCwg
MCk7Ij5mb3VyPC9zcGFuPjwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRp
bmcvNTk5NDQ4MC0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL2luc2VydGluZy81OTk0NDgwLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0OTg3MSkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nLzU5OTQ0ODAtMi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTxmb250IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBm
YWNlPSInTHVjaWRhIEdyYW5kZSciIHNpemU9IjMiPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1z
cGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyBmb250LXNp
emU6IDExcHg7Ij48YnI+PC9zcGFuPjwvZm9udD4KKzxmb250IGNsYXNzPSJBcHBsZS1zdHlsZS1z
cGFuIiBmYWNlPSInTHVjaWRhIEdyYW5kZSciIHNpemU9IjMiPjxzcGFuIGNsYXNzPSJBcHBsZS1z
dHlsZS1zcGFuIiBzdHlsZT0iZm9udC1zaXplOiAxMXB4OyI+PGJyPjwvc3Bhbj48L2ZvbnQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9leGVjQ29tbWFuZC80NjQxODgw
LTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL2V4ZWNDb21tYW5kLzQ2NDE4ODAtMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ5ODcx
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQvNDY0MTg4
MC0yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAgRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZEJlZ2luRWRpdGluZwogRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9u
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJ
VElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01S
YW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBCTE9DS1FVT1RFID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gMzQgb2YgI3RleHQgPiBCTE9DS1FVT1RFID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0g
c3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gQkxP
Q0tRVU9URSA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDM1IG9mICN0ZXh0ID4g
QkxPQ0tRVU9URSA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2Vs
ZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmll
d0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCkBAIC0y
NCw1ICsyNCw1IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDI0NngxOAogICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggMjQ2OiAiVGhpcyBwYXJhZ3JhcGggc2hvdWxkIG5vdCBiZSBpbmRlbnRl
ZC4iCiAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMjQ2LDE0KSBzaXplIDB4MAotc2VsZWN0
aW9uIHN0YXJ0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtCTE9D
S1FVT1RFfSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hU
TUx9IG9mIGRvY3VtZW50Ci1zZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDM0IG9mIGNoaWxkIDAg
eyN0ZXh0fSBvZiBjaGlsZCAwIHtCTE9DS1FVT1RFfSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxk
IDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CitzZWxlY3Rpb24gc3RhcnQ6
IHBvc2l0aW9uIDEgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDAge0JMT0NLUVVPVEV9IG9m
IGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9j
dW1lbnQKK3NlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gMzUgb2YgY2hpbGQgMCB7I3RleHR9IG9m
IGNoaWxkIDAge0JMT0NLUVVPVEV9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0g
b2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MTY1NDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MTY1NDEt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0OTg3MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MTY1NDEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xMCwxMSArMTAsMTMgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDMyMDogIidmb28nIGFuZCAnYmFyJyBiZWZvcmUg
YW5kIGFmdGVyIHRoZSBpbmRlbnQgb3BlcmF0aW9uLiIKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDUyKSBzaXplIDc4NHgzNgogICAgICAgICBSZW5kZXJCbG9jayB7QkxPQ0tRVU9URX0g
YXQgKDQwLDApIHNpemUgNzQ0eDM2Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgMjF4MTgKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIxOiAi
Zm9vIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDIxLDE0KSBzaXplIDB4MAotICAgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxOCkgc2l6ZSAyMHgxOAotICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDIwOiAiYmFyIgorICAgICAgICAgIFJlbmRlcklubGlu
ZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAyMXgxOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgMjF4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMjE6ICJmb28iCisgICAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgyMSwxNCkgc2l6
ZSAweDAKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMjB4MTgK
KyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxOCkgc2l6ZSAyMHgxOAorICAg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMjA6ICJiYXIiCiAgICAgICAgIFJl
bmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDM2KSBzaXplIDc4NHgwCi1zZWxlY3Rpb24gc3Rh
cnQ6IHBvc2l0aW9uIDEgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDAge0JMT0NLUVVPVEV9
IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2Yg
ZG9jdW1lbnQKLXNlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gMiBvZiBjaGlsZCAyIHsjdGV4dH0g
b2YgY2hpbGQgMCB7QkxPQ0tRVU9URX0gb2YgY2hpbGQgMiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZ
fSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAorc2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlv
biAxIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtTUEFOfSBvZiBjaGlsZCAwIHtCTE9D
S1FVT1RFfSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hU
TUx9IG9mIGRvY3VtZW50CitzZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDIgb2YgY2hpbGQgMCB7
I3RleHR9IG9mIGNoaWxkIDEge1NQQU59IG9mIGNoaWxkIDAge0JMT0NLUVVPVEV9IG9mIGNoaWxk
IDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUxMzg0
NDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL2V4ZWNDb21tYW5kLzUxMzg0NDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0OTg3MSkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUxMzg0NDEt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw5ICsxMSwxMCBAQCBsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzNikgd2lkdGggMTQ5
OiAidG8gaW1wbGVtZW50IGluZGVudGluZy4iCiAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MCw3MCkgc2l6ZSA3ODR4NjIKICAgICAgICAgUmVuZGVyQmxvY2sge0JMT0NLUVVPVEV9IGF0ICg0
MCwwKSBzaXplIDc0NHgxOAotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDIzMHgxOAotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjMwOiAiVGhp
cyBzaG91bGQgYmUgaW5kZW50ZWQsIG5vdCBxdW90ZWQuIgorICAgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDApIHNpemUgNzQ0eDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAyMzB4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMjMwOiAiVGhpcyBzaG91bGQgYmUgaW5kZW50ZWQsIG5vdCBxdW90ZWQuIgogICAgICAg
ICBSZW5kZXJCbG9jayB7QkxPQ0tRVU9URX0gYXQgKDgsMjYpIHNpemUgNzY4eDM2IFtib3JkZXI6
ICgxcHggZGFzaGVkICNBQUFBQUEpXQogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
OSw5KSBzaXplIDE3NXgxOAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDksOSkgd2lkdGggMTc1
OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBRdW90ZWQuIgotY2FyZXQ6IHBvc2l0aW9uIDAgb2YgY2hp
bGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge0JMT0NLUVVPVEV9IG9mIGNoaWxkIDMge0RJVn0gb2Yg
Y2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKK2NhcmV0OiBwb3Np
dGlvbiAwIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtESVZ9IG9mIGNoaWxkIDEge0JM
T0NLUVVPVEV9IG9mIGNoaWxkIDMge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7
SFRNTH0gb2YgZG9jdW1lbnQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L2V4ZWNDb21tYW5kLzU0ODE1MjMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU0ODE1MjMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA0OTg3MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4
ZWNDb21tYW5kLzU0ODE1MjMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw2IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAgICAgICAgICAgUmVu
ZGVyVGFibGVDZWxsIHtURH0gYXQgKDQ1LDI2KSBzaXplIDM0eDIyIFtib3JkZXI6ICgxcHggaW5z
ZXQgIzgwODA4MCldIFtyPTEgYz0xIHJzPTEgY3M9MV0KICAgICAgICAgICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgyLDIpIHNpemUgMzB4MTgKICAgICAgICAgICAgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMiwyKSB3aWR0aCAzMDogIkZvdXIiCi0gICAgICAgICAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCw1Mikgc2l6ZSA3MDR4MAogICAgICAgICBSZW5kZXJCbG9j
ayAoYW5vbnltb3VzKSBhdCAoMCw1Mikgc2l6ZSA3ODR4MAogc2VsZWN0aW9uIHN0YXJ0OiBwb3Np
dGlvbiAwIG9mIGNoaWxkIDAge1RBQkxFfSBvZiBjaGlsZCAwIHtCTE9DS1FVT1RFfSBvZiBjaGls
ZCAxIHtCTE9DS1FVT1RFfSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNo
aWxkIDAge0hUTUx9IG9mIGRvY3VtZW50Ci1zZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDEgb2Yg
Y2hpbGQgMCB7VEFCTEV9IG9mIGNoaWxkIDAge0JMT0NLUVVPVEV9IG9mIGNoaWxkIDEge0JMT0NL
UVVPVEV9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRN
TH0gb2YgZG9jdW1lbnQKK3NlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gMiBvZiBjaGlsZCAwIHtU
QUJMRX0gb2YgY2hpbGQgMCB7QkxPQ0tRVU9URX0gb2YgY2hpbGQgMSB7QkxPQ0tRVU9URX0gb2Yg
Y2hpbGQgMiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1
bWVudApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvZXhlY0NvbW1hbmQv
aW5kZW50LXBhcmFncmFwaHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1wYXJhZ3JhcGhzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L2V4ZWNDb21tYW5kL2luZGVudC1wYXJhZ3JhcGhzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2OCBAQAorRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5E
T01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
MyBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudAorRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZEJlZ2luRWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCitF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNl
bGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJViA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBTUEFOID4gRElWID4g
RElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNiBvZiAjdGV4dCA+IERJViA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5p
dHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRp
b24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hh
bmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3Rl
eHQgPiBTUEFOID4gRElWID4gRElWID4gQkxPQ0tRVU9URSA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDYgb2YgI3RleHQgPiBESVYgPiBCTE9DS1FVT1RFID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0g
c3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCits
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0g
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6
ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4
NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzOTV4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzOTU6ICJUaGlzIHRlc3RzIGluZGVudGlu
ZyB0aHJlZSBwYXJhZ3JhcGhzIHdpdGggZGlmZmVyZW50IGhpZXJhcmNoaWVzLiIKKyAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgwLDE4KSBzaXplIDc4NHg3MgorICAgICAgICBSZW5kZXJCbG9j
ayB7QkxPQ0tRVU9URX0gYXQgKDQwLDApIHNpemUgNzQ0eDcyCisgICAgICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3NDR4MjQKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgwLDApIHNpemUgNzQ0eDI0CisgICAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BB
Tn0gYXQgKDAsMCkgc2l6ZSAxMDB4MTggW2JnY29sb3I9I0ZGMDAwMF0KKyAgICAgICAgICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsNikgc2l6ZSAzOXgxOAorICAgICAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsNikgd2lkdGggMzk6ICJIZWxsbyAiCisgICAgICAgICAgICAgICAg
UmVuZGVySW1hZ2Uge0lNR30gYXQgKDM5LDApIHNpemUgMjB4MjAKKyAgICAgICAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDU5LDYpIHNpemUgNDF4MTgKKyAgICAgICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICg1OSw2KSB3aWR0aCA0MTogIiB3b3JsZCIKKyAgICAgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMCwyNCkgc2l6ZSA3NDR4MjQKKyAgICAgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDApIHNpemUgNzQ0eDI0CisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCw2KSBzaXplIDM5eDE4CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
Nikgd2lkdGggMzk6ICJIZWxsbyAiCisgICAgICAgICAgICAgIFJlbmRlckltYWdlIHtJTUd9IGF0
ICgzOSwwKSBzaXplIDIweDIwCisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
NTksNikgc2l6ZSA0MXgxOAorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICg1OSw2KSB3aWR0
aCA0MTogIiB3b3JsZCIKKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw0OCkgc2l6
ZSA3NDR4MjQKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCw2KSBzaXplIDM5
eDE4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDYpIHdpZHRoIDM5OiAiSGVsbG8gIgor
ICAgICAgICAgICAgUmVuZGVySW1hZ2Uge0lNR30gYXQgKDM5LDApIHNpemUgMjB4MjAKKyAgICAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNTksNikgc2l6ZSA0MXgxOAorICAgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoNTksNikgd2lkdGggNDE6ICIgd29ybGQiCisgICAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCw5MCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyQlIg
e0JSfSBhdCAoMCwwKSBzaXplIDB4MTgKKyAgICAgIFJlbmRlckJsb2NrIHtVTH0gYXQgKDAsMTI0
KSBzaXplIDc4NHgxMjYKKyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMCkgc2l6
ZSA3NDR4NTQKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgtMTcsMCkgc2l6ZSA3eDE4
OiBidWxsZXQKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5MHgx
OAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTA6ICJCZWZvcmUgaW5kZW50
OiIKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgNjkyeDU0Cisg
ICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDkwLDApIHNpemUgNjkyeDU0CisgICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICg5MCwwKSB3aWR0aCAxMDY6ICIgPGRpdiBpZD1cInRlc3Rc
Ij4gIgorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTk2LDApIHdpZHRoIDQ3OTogIjxkaXY+
PHNwYW4gY2xhc3M9XCJBcHBsZS1zdHlsZS1zcGFuXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9y
OiByZ2IoMjU1LCAwLCIKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDMz
MzogIjApO1wiPkhlbGxvIDxpbWcgc3JjPVwiaHR0cDovL1wiPiB3b3JsZDwvc3Bhbj48L2Rpdj4g
IgorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMzMzLDE4KSB3aWR0aCAyODc6ICI8ZGl2Pkhl
bGxvIDxpbWcgc3JjPVwiaHR0cDovL1wiPiB3b3JsZDwvZGl2PiAiCisgICAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICg2MjAsMTgpIHdpZHRoIDcyOiAiSGVsbG8gPGltZyIKKyAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMzYpIHdpZHRoIDE3MzogInNyYz1cImh0dHA6Ly9cIj4gd29ybGQgPC9k
aXY+IgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCw1NCkgc2l6ZSA3NDR4NzIK
KyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgtMTcsMCkgc2l6ZSA3eDE4OiBidWxsZXQK
KyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA4MHgxOAorICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggODA6ICJBZnRlciBpbmRlbnQ6IgorICAgICAg
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSA3MzB4NzIKKyAgICAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoODAsMCkgc2l6ZSA3MzB4NzIKKyAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDgwLDApIHdpZHRoIDYyMjogIiA8YmxvY2txdW90ZSBjbGFzcz1cIndlYmtp
dC1pbmRlbnQtYmxvY2txdW90ZVwiIHN0eWxlPVwibWFyZ2luOiAwIDAgMCA0MHB4OyBib3JkZXI6
IG5vbmU7IHBhZGRpbmc6IgorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGgg
NzMwOiAiMHB4O1wiPjxkaXYgaWQ9XCJ0ZXN0XCI+PGRpdj48c3BhbiBjbGFzcz1cIkFwcGxlLXN0
eWxlLXNwYW5cIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDAsIDApO1wiPkhl
bGxvIDxpbWciCisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM2KSB3aWR0aCA3MTQ6ICJz
cmM9XCJodHRwOi8vXCI+IHdvcmxkPC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgaWQ9XCJ0ZXN0XCI+
PGRpdj5IZWxsbyA8aW1nIHNyYz1cImh0dHA6Ly9cIj4gd29ybGQ8L2Rpdj48L2Rpdj48ZGl2Igor
ICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw1NCkgd2lkdGggNjk6ICJpZD1cInRlc3RcIj4g
IgorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjksNTQpIHdpZHRoIDM0MTogIkhlbGxvIDxp
bWcgc3JjPVwiaHR0cDovL1wiPiB3b3JsZCA8L2Rpdj48L2Jsb2NrcXVvdGU+Igorc2VsZWN0aW9u
IHN0YXJ0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtTUEFOfSBv
ZiBjaGlsZCAwIHtESVZ9IG9mIGNoaWxkIDAge0RJVn0gb2YgY2hpbGQgMSB7QkxPQ0tRVU9URX0g
b2YgY2hpbGQgMSB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBk
b2N1bWVudAorc2VsZWN0aW9uIGVuZDogICBwb3NpdGlvbiA2IG9mIGNoaWxkIDIgeyN0ZXh0fSBv
ZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxkIDEge0JMT0NLUVVPVEV9IG9mIGNoaWxkIDEge0RJVn0g
b2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1zZWxlY3Rp
b24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL2luZGVudC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA0OTg3MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2V4ZWNDb21tYW5k
L2luZGVudC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMs
NyBAQCBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nCiBFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdl
OihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IEJMT0NLUVVPVEUgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gQkxPQ0tRVU9URSA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5p
dHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91
bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBv
ZiAjdGV4dCA+IFNQQU4gPiBCTE9DS1FVT1RFID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG8gNSBvZiAjdGV4dCA+IFNQQU4gPiBCTE9DS1FVT1RFID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxT
ZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKQEAgLTE5LDkgKzE5LDEwIEBAIGxheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAogICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzYpIHNpemUgNzg0eDE5
NAogICAgICAgICBSZW5kZXJCbG9jayB7QkxPQ0tRVU9URX0gYXQgKDQwLDApIHNpemUgNzQ0eDU0
CiAgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA3NDR4MzYK
LSAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDQyeDE4Ci0gICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQyOiAiTG9yZW0iCi0gICAgICAgICAg
ICBSZW5kZXJCUiB7QlJ9IGF0ICg0MiwxNCkgc2l6ZSAweDAKKyAgICAgICAgICAgIFJlbmRlcklu
bGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSA0MngxOAorICAgICAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0MngxOAorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDQyOiAiTG9yZW0iCisgICAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQg
KDQyLDE0KSBzaXplIDB4MAogICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDE4
KSBzaXplIDgzeDE4CiAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA4Mzog
Im1vcmUgTG9yZW0hIgogICAgICAgICAgIFJlbmRlckJsb2NrIHtCTE9DS1FVT1RFfSBhdCAoNDAs
MzYpIHNpemUgNzA0eDE4CkBAIC01MSw4ICs1Miw5IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAogICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzR4MTgK
ICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzQ6ICJTdW0hIgogICAgICAg
ICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMzQsMTQpIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMTgpIHNpemUgMzh4MTgKLSAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMTgpIHdpZHRoIDM4OiAiVGhpbmciCisgICAgICAgICAgICBSZW5kZXJJbmxpbmUg
e1NQQU59IGF0ICgwLDApIHNpemUgMzh4MTgKKyAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDE4KSBzaXplIDM4eDE4CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MTgpIHdpZHRoIDM4OiAiVGhpbmciCiAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0
ICgwLDE5NCkgc2l6ZSA3ODR4MAotc2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAwIG9mIGNoaWxk
IDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtCTE9DS1FVT1RFfSBvZiBjaGlsZCA0IHtESVZ9IG9mIGNo
aWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50Ci1zZWxlY3Rpb24gZW5k
OiAgIHBvc2l0aW9uIDUgb2YgY2hpbGQgMyB7I3RleHR9IG9mIGNoaWxkIDMge0JMT0NLUVVPVEV9
IG9mIGNoaWxkIDQge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2Yg
ZG9jdW1lbnQKK3NlbGVjdGlvbiBzdGFydDogcG9zaXRpb24gMCBvZiBjaGlsZCAwIHsjdGV4dH0g
b2YgY2hpbGQgMCB7U1BBTn0gb2YgY2hpbGQgMSB7QkxPQ0tRVU9URX0gb2YgY2hpbGQgNCB7RElW
fSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAorc2VsZWN0
aW9uIGVuZDogICBwb3NpdGlvbiA1IG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAzIHtTUEFO
fSBvZiBjaGlsZCAzIHtCTE9DS1FVT1RFfSBvZiBjaGlsZCA0IHtESVZ9IG9mIGNoaWxkIDEge0JP
RFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3NlbGVjdC1lbGVtZW50LTEtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9h
cmQvc2VsZWN0LWVsZW1lbnQtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ5ODcxKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9zZWxlY3QtZWxlbWVudC0x
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjUzLDApIHdpZHRoIDIy
MDogIkFsbCB0aGUgb3B0aW9ucyBzaG91bGQgYmUgaW5jbHVkZWQuIgogICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMzQpIHNpemUgNzg0eDEzCiAgICAgICAgIFJlbmRlcklubGluZSB7Rk9O
VH0gYXQgKDAsMCkgc2l6ZSAweDE4Ci0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAo
MCwwKSBzaXplIDB4MTMgW2JnY29sb3I9I0ZGRkZGRl0KKyAgICAgICAgICBSZW5kZXJJbmxpbmUg
e1NQQU59IGF0ICgwLDApIHNpemUgMHgxMwogICAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAo
MCwwKSBzaXplIDB4MTMKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDQ3KSBzaXplIDc4
NHgyMgogICAgICAgICBSZW5kZXJNZW51TGlzdCB7U0VMRUNUfSBhdCAoMiwyKSBzaXplIDYyeDE4
IFtiZ2NvbG9yPSNGRkZGRkZdCg==
</data>
<flag name="review"
          id="23138"
          type_id="1"
          status="+"
          setter="adele"
    />
          </attachment>
      

    </bug>

</bugzilla>