<?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>9630</bug_id>
          
          <creation_ts>2006-06-28 04:36:41 -0700</creation_ts>
          <short_desc>REGRESSION: many spaces typed in &lt;textarea&gt; are posted as non-breaking spaces</short_desc>
          <delta_ts>2006-07-24 21:34:22 -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>Forms</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://landfill.bugzilla.org/bugzilla-2.20-branch/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>adele</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>ian</cc>
    
    <cc>jon</cc>
    
    <cc>joost</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>47437</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-28 04:36:41 -0700</bug_when>
    <thetext>I&apos;ve now noticed three times that Bugzilla has failed to create bug links for &quot;Bug NNNN&quot; text since the new textareas were activated, and it&apos;s driving me nuts!  This is more of a tracking bug since the real bug is probably in Bugzilla itself.  It&apos;d be nice to figure out what&apos;s causing the problem in Bugzilla, though, and fix it.

Bug 9579 Comment #0
Bug 9605 Comment #0
Bug 9611 Comment #2

Joost, can you query the Bugzilla database directly to find out exactly what the textareas are sending to the server?

This will require a bug to be opened on http://bugzilla.mozilla.org/ for the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47448</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-06-28 06:19:54 -0700</bug_when>
    <thetext>Would probably be useful to do a tcpdump capture here, but I couldn&apos;t reproduce the problem on landfill.bugzilla.org on purpose.

Shouldn&apos;t this be P1 (regression), rather than P3/minor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47646</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-28 08:07:42 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Would probably be useful to do a tcpdump capture here, but I couldn&apos;t reproduce
&gt; the problem on landfill.bugzilla.org on purpose.

The thing about Bugzilla is that it adds the bug links when you view the page--it does NOT process the form input before storing it in the database.  That makes it &quot;easy&quot; to fix this bug in Bugzilla so that the bug links appear again, but it also means that the essense of the difference in what the native textareas are sending may be stored in the Bugzilla database.

&gt; Shouldn&apos;t this be P1 (regression), rather than P3/minor?

Maybe.  I didn&apos;t want to jump the gun and blame WebKit right away for a change in behavior, although I guess that&apos;s the only possible explanation.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47647</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-28 08:09:34 -0700</bug_when>
    <thetext>BTW, all of my experience with this bug was done with Mac OS X 10.4.6 (8I127/PowerPC) with Safari 2.0.3 (417.9.3) and a local debug build of WebKit r150xx.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47653</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-06-28 08:34:36 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; The thing about Bugzilla is that it adds the bug links when you view the
&gt; page--it does NOT process the form input before storing it in the database. 

Oh, but I can see the problem even in the processed output! Some of the spaces end up as unbreakable (0xA0). Perhaps Bugzilla could support that one, too, but I wouldn&apos;t say that they have a bug.

Upgrading to P1, but we need to find out when this happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47663</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-28 10:29:03 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Oh, but I can see the problem even in the processed output! Some of the spaces
&gt; end up as unbreakable (0xA0). Perhaps Bugzilla could support that one, too, but
&gt; I wouldn&apos;t say that they have a bug.

Darin, how are you determining that the spaces are unbreakable?  I was looking at view source, but they didn&apos;t jump out at me.

I&apos;ll file a bug on http://bugzilla.mozilla.org/ about fixing this on the Bugzilla side unless someone beats me to it.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47664</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-06-28 10:57:33 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Darin, how are you determining that the spaces are unbreakable?  I was looking
&gt; at view source, but they didn&apos;t jump out at me.

Alexey determined that -- see comment #4.

&gt; I&apos;ll file a bug on http://bugzilla.mozilla.org/ about fixing this on the
&gt; Bugzilla side unless someone beats me to it.

Please don&apos;t. So far it looks like this is a WebKit bug, not a Bugzilla bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47666</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-28 11:28:15 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Darin, how are you determining that the spaces are unbreakable?  I was looking
&gt; at view source, but they didn&apos;t jump out at me.

Sorry, Alexey, I kept seeing Darin change the bug and thought he posted this comment.  How did you spot the 0xA0 character?  Using Ethereal or a similar network tracing tool?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47667</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-06-28 11:36:54 -0700</bug_when>
    <thetext>I just saved the page and looked at it in TextWrangler (with Show Invisibles on). Also, I&apos;ve been getting these in some bugmail (pine displays them as question marks).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47682</commentid>
    <comment_count>9</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-06-28 14:23:27 -0700</bug_when>
    <thetext>We insert nbsps while editing.  We&apos;d need to change nbsps to regular spaces when we serialize.  But, we wouldn&apos;t want to convert nbsps that were added intentionally by the user, so we&apos;d need to wrap those spaces in a span with a special class on it so that we&apos;d know which nbsps to convert and which to retain.  
Alternatively, since white-space is pre-wrap in textareas, we could fix this by bailing in RebalanceWhitespace if we&apos;re in white-space: pre text.  Some might not like this because this would mean that edited whitespace would collapse if the white-space mode were toggled. 
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>47697</commentid>
    <comment_count>10</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-06-28 23:35:29 -0700</bug_when>
    <thetext>&gt; Alternatively, since white-space is pre-wrap in textareas, we could fix this by
&gt; bailing in RebalanceWhitespace if we&apos;re in white-space: pre text.  Some might
&gt; not like this because this would mean that edited whitespace would collapse if
&gt; the white-space mode were toggled. 

I think we should do this.  It will create the problem mentioned above, but we want to fix this bug for textareas asap.  
What do we do when we create fragments?  The functions that create fragments  should be given a context (like Range::createContextualFragment) so that they&apos;ll know what to do with whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48335</commentid>
    <comment_count>11</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2006-07-05 10:02:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/4613616&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50023</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-16 04:44:24 -0700</bug_when>
    <thetext>I&apos;ve done most of what Justin recommends here. Just working to get the patch to 100%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50078</commentid>
    <comment_count>13</comment_count>
      <attachid>9502</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-16 12:24:10 -0700</bug_when>
    <thetext>Created attachment 9502
patch that almost works -- two known issues and no layout tests yet

This patch passes all the existing layout tests (at least the editing and forms ones) but there are at least two outstanding issues:

    1) Since there&apos;s no line box for the second line of a &lt;pre&gt; with &quot;\n&quot; as its text (or &lt;textarea&gt; equivalent), the caret draws in the wrong place (end of the first line) even though the height is computed correctly. This affects any &lt;textarea&gt; when the last character is a newline.

    2) The editing code makes new text nodes for the \n characters rather than merging with surrounding text; I think we want a &lt;textarea&gt; to be a single text node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50126</commentid>
    <comment_count>14</comment_count>
      <attachid>9518</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-16 21:32:35 -0700</bug_when>
    <thetext>Created attachment 9518
a simple test file I&apos;ve been using</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50311</commentid>
    <comment_count>15</comment_count>
      <attachid>9557</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-18 17:26:54 -0700</bug_when>
    <thetext>Created attachment 9557
patch that&apos;s closer to done, but still some known problems</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50353</commentid>
    <comment_count>16</comment_count>
      <attachid>9568</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-19 08:36:34 -0700</bug_when>
    <thetext>Created attachment 9568
still-newer patch (work in progress)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50354</commentid>
    <comment_count>17</comment_count>
      <attachid>9569</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-19 08:36:56 -0700</bug_when>
    <thetext>Created attachment 9569
newer version of test file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50516</commentid>
    <comment_count>18</comment_count>
      <attachid>9607</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-21 17:53:23 -0700</bug_when>
    <thetext>Created attachment 9607
newer patch -- almost there!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50577</commentid>
    <comment_count>19</comment_count>
      <attachid>9615</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-22 11:49:59 -0700</bug_when>
    <thetext>Created attachment 9615
patch, including change log and layout tests (&amp; all existing layout tests pass)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50582</commentid>
    <comment_count>20</comment_count>
      <attachid>9615</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2006-07-22 21:50:10 -0700</bug_when>
    <thetext>Comment on attachment 9615
patch, including change log and layout tests (&amp; all existing layout tests pass)

I looked through this, and it looks good, but I&apos;d like Justin to review also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50674</commentid>
    <comment_count>21</comment_count>
    <who name="Jonathan del Strother">jon</who>
    <bug_when>2006-07-24 10:11:53 -0700</bug_when>
    <thetext>Is this responsible for r15993 sending 0xF0 instead of a space if it occurs at the end of a text field, or is that a separate problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50677</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-24 10:40:55 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Is this responsible for r15993 sending 0xF0 instead of a space if it occurs at
&gt; the end of a text field, or is that a separate problem?

I don&apos;t know. Maybe. Could you file a separate bug about that problem with steps to reproduce?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50724</commentid>
    <comment_count>23</comment_count>
      <attachid>9615</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-07-24 19:05:39 -0700</bug_when>
    <thetext>Comment on attachment 9615
patch, including change log and layout tests (&amp; all existing layout tests pass)

         // Insert an extra br if the inserted one will collapsed because of quirks mode.
-        if (!document()-&gt;inStrictMode() &amp;&amp; !(pos.downstream().node()-&gt;hasTagName(brTag) &amp;&amp; pos.downstream().offset() == 0)) {
-            insertNodeAt(nodeToInsert, pos.node(), pos.offset());
-            insertNodeAfter(createBreakElement(document()).get(), nodeToInsert);
-        } else
-            insertNodeAt(nodeToInsert, pos.node(), pos.offset());
+        bool haveBreak = pos.downstream().node()-&gt;hasTagName(brTag) &amp;&amp; pos.downstream().offset() == 0;
+        insertNodeAt(nodeToInsert.get(), pos.node(), pos.offset());
+        if (!haveBreak)
+            insertNodeAfter(createBreakElement(document()).get(), nodeToInsert.get());

I guess you found that a br at the end of a block will collapse even in strict mode.  You should fix the comment (it has a spelling error too).


@@ -156,6 +157,8 @@ void RenderTextControl::updateFromElemen
         if (value != oldText || !m_div-&gt;hasChildNodes()) {
             ExceptionCode ec = 0;
             m_div-&gt;setInnerText(value, ec);
+            if (value.endsWith(&quot;\n&quot;) || value.endsWith(&quot;\r&quot;))
+                m_div-&gt;appendChild(new HTMLBRElement(document()), ec);
             if (document()-&gt;frame())
                 document()-&gt;frame()-&gt;clearUndoRedoOperations();
             setEdited(false);

Why doesn&apos;t setInnerText add the extra br?


+        Node* node = downstreamEnd.node();
+        int offset = downstreamEnd.offset();
+        if (node &amp;&amp; node == upstreamOnePastEnd.node() &amp;&amp; offset + 1 == upstreamOnePastEnd.offset() &amp;&amp; node-&gt;isTextNode()) {
+            // Special case for removing a newline character.
+            Text* textNode = static_cast&lt;Text*&gt;(node);
+            if (textNode-&gt;length() == 1)
+                removeNodeAndPruneAncestors(textNode);
+            else
+                deleteTextFromNode(textNode, offset, 1);
+        } else {
+            // Merging two paragraphs will destroy the moved one&apos;s block styles.  Always move forward to preserve

Is this special case just an optimization or is it necessary because moveParagraph will fail?  If it&apos;s the latter we should file a bug to fix moveParagraph.

None of these are deal breakers.  Looks good.  r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50730</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-24 21:00:45 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; I guess you found that a br at the end of a block will collapse even in strict
&gt; mode.  You should fix the comment (it has a spelling error too).

I see your point.

The issue is not so much that a br element at the end of a block will &quot;collapse&quot; in strict mode, but rather than HTML&apos;s model is that the last line in a block can have a terminator like a br element or a newline character (in the appropriate whitespace mode) and that doesn&apos;t create an additional line. Whereas in text editors, if the last character is a line terminator, then there&apos;s a position after that terminator. To get that effect with HTML we need an extra terminator.
 
&gt; @@ -156,6 +157,8 @@ void RenderTextControl::updateFromElemen
&gt;          if (value != oldText || !m_div-&gt;hasChildNodes()) {
&gt;              ExceptionCode ec = 0;
&gt;              m_div-&gt;setInnerText(value, ec);
&gt; +            if (value.endsWith(&quot;\n&quot;) || value.endsWith(&quot;\r&quot;))
&gt; +                m_div-&gt;appendChild(new HTMLBRElement(document()), ec);
&gt;              if (document()-&gt;frame())
&gt;                  document()-&gt;frame()-&gt;clearUndoRedoOperations();
&gt;              setEdited(false);
&gt; 
&gt; Why doesn&apos;t setInnerText add the extra br?

Hyatt convinced me that setInnerText needs behavior that matches what other web browsers do. This concept that you need an extra br element comes from the needs of editing and matching standard editing behavior, but there&apos;s no reason for setInnerText to have editing-specific behavior of this type. But I could imagine going another way in the future -- need to do some additional testing I guess.

One special trick here is that since the last thing is a br element and not a newline, it makes the text() function particularly simple. If setInnerText took care of this, I could imagine it using newline characters instead of br elements.

&gt; +        Node* node = downstreamEnd.node();
&gt; +        int offset = downstreamEnd.offset();
&gt; +        if (node &amp;&amp; node == upstreamOnePastEnd.node() &amp;&amp; offset + 1 ==
&gt; upstreamOnePastEnd.offset() &amp;&amp; node-&gt;isTextNode()) {
&gt; +            // Special case for removing a newline character.
&gt; +            Text* textNode = static_cast&lt;Text*&gt;(node);
&gt; +            if (textNode-&gt;length() == 1)
&gt; +                removeNodeAndPruneAncestors(textNode);
&gt; +            else
&gt; +                deleteTextFromNode(textNode, offset, 1);
&gt; +        } else {
&gt; +            // Merging two paragraphs will destroy the moved one&apos;s block
&gt; styles.  Always move forward to preserve
&gt; 
&gt; Is this special case just an optimization or is it necessary because
&gt; moveParagraph will fail?  If it&apos;s the latter we should file a bug to fix
&gt; moveParagraph.

The moveParagraph function will fail. I&apos;m just not sure how to write a bug report about that. I&apos;ll think it over.

&gt; None of these are deal breakers.  Looks good.  r=me.

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50738</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-07-24 21:34:22 -0700</bug_when>
    <thetext>Committed revision 15617.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9502</attachid>
            <date>2006-07-16 12:24:10 -0700</date>
            <delta_ts>2006-07-18 17:26:54 -0700</delta_ts>
            <desc>patch that almost works -- two known issues and no layout tests yet</desc>
            <filename>PreWrapPatch.txt</filename>
            <type>text/plain</type>
            <size>51716</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCShyZXZpc2lvbiAxNTQ2MSkKKysrIFdlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyMiArMjYs
MjMgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRE9NSFRNTC5oIgogCisjaW1wb3J0
ICJET01FeHRlbnNpb25zLmgiCiAjaW1wb3J0ICJET01IVE1MSW50ZXJuYWwuaCIKICNpbXBvcnQg
IkRPTUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Qcml2YXRlLmgiCi0jaW1wb3J0ICJET01FeHRl
bnNpb25zLmgiCiAjaW1wb3J0ICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW1wb3J0ICJGb3VuZGF0
aW9uRXh0cmFzLmgiCisjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgIkhUTUxBcHBsZXRF
bGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MQXJlYUVsZW1lbnQuaCIKKyNpbXBvcnQgIkhUTUxCUkVs
ZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxCYXNlRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEJhc2VG
b250RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEJvZHlFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1M
QlJFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MQnV0dG9uRWxlbWVudC5oIgorI2ltcG9ydCAiSFRN
TERMaXN0RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTERpcmVjdG9yeUVsZW1lbnQuaCIKICNpbXBv
cnQgIkhUTUxEaXZFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MRExpc3RFbGVtZW50LmgiCiAjaW1w
b3J0ICJIVE1MRG9jdW1lbnQuaCIKICNpbXBvcnQgIkhUTUxFbWJlZEVsZW1lbnQuaCIKICNpbXBv
cnQgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKQEAgLTQ5LDQ3ICs1MCw0NyBAQAogI2ltcG9ydCAi
SFRNTEZvcm1Db2xsZWN0aW9uLmgiCiAjaW1wb3J0ICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbXBv
cnQgIkhUTUxGcmFtZVNldEVsZW1lbnQuaCIKKyNpbXBvcnQgIkhUTUxIUkVsZW1lbnQuaCIKICNp
bXBvcnQgIkhUTUxIZWFkRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEhlYWRpbmdFbGVtZW50Lmgi
Ci0jaW1wb3J0ICJIVE1MSFJFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MSHRtbEVsZW1lbnQuaCIK
ICNpbXBvcnQgIkhUTUxJRnJhbWVFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MSW1hZ2VFbGVtZW50
LmgiCiAjaW1wb3J0ICJIVE1MSXNJbmRleEVsZW1lbnQuaCIKKyNpbXBvcnQgIkhUTUxMSUVsZW1l
bnQuaCIKICNpbXBvcnQgIkhUTUxMYWJlbEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxMZWdlbmRF
bGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MTElFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTGlua0Vs
ZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxNYXBFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTWVudUVs
ZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxNZXRhRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE5hbWVz
LmgiCi0jaW1wb3J0ICJIVE1MT2JqZWN0RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE9MaXN0RWxl
bWVudC5oIgorI2ltcG9ydCAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxPcHRH
cm91cEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW1wb3J0ICJI
VE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKLSNpbXBvcnQgIkhUTUxQYXJhbUVsZW1lbnQuaCIKICNp
bXBvcnQgIkhUTUxQYXJhZ3JhcGhFbGVtZW50LmgiCisjaW1wb3J0ICJIVE1MUGFyYW1FbGVtZW50
LmgiCiAjaW1wb3J0ICJIVE1MUHJlRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTFNjcmlwdEVsZW1l
bnQuaCIKICNpbXBvcnQgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MU3R5bGVF
bGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MVGFi
bGVDYXB0aW9uRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIKICNp
bXBvcnQgIkhUTUxUYWJsZUNvbEVsZW1lbnQuaCIKKyNpbXBvcnQgIkhUTUxUYWJsZUVsZW1lbnQu
aCIKICNpbXBvcnQgIkhUTUxUYWJsZVJvd0VsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW1wb3J0
ICJIVE1MVGl0bGVFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MVUxpc3RFbGVtZW50LmgiCisjaW1w
b3J0ICJLVVJMLmgiCiAjaW1wb3J0ICJOYW1lTm9kZUxpc3QuaCIKLSNpbXBvcnQgIm1hcmt1cC5o
IgorI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJlbmRlclRleHRDb250cm9sLmgiCi0jaW1w
b3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgImNzc2hlbHBlci5oIgotI2ltcG9ydCAiS1VSTC5o
IgorI2ltcG9ydCAibWFya3VwLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTYwNSw3ICs2MDYsOCBAQCB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogCiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFn
bWVudFdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQKIHsKLSAgICByZXR1cm4gW0RPTURvY3VtZW50
RnJhZ21lbnQgX2RvY3VtZW50RnJhZ21lbnRXaXRoOmNyZWF0ZUZyYWdtZW50RnJvbVRleHQoW3Nl
bGYgX2RvY3VtZW50XSwgRGVwcmVjYXRlZFN0cmluZzo6ZnJvbU5TU3RyaW5nKHRleHQpKS5nZXQo
KV07CisgICAgLy8gRklYTUU6IFNpbmNlIHRoaXMgaXMgbm90IGEgY29udGV4dHVhbCBmcmFnbWVu
dCwgaXQgd29uJ3QgaGFuZGxlIHdoaXRlc3BhY2UgcHJvcGVybHkuCisgICAgcmV0dXJuIFtET01E
b2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpjcmVhdGVGcmFnbWVudEZyb21U
ZXh0KFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVJhbmdlKCkuZ2V0KCksIHRleHQpLmdldCgpXTsK
IH0KIAogQGVuZApJbmRleDogV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAko
cmV2aXNpb24gMTU0NjEpCisrKyBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxOCw3ICs0MTgsNyBAQCB0eXBlZGVmIGVudW0gewogLSAo
TlNSYW5nZSljb252ZXJ0RE9NUmFuZ2VUb05TUmFuZ2U6KERPTVJhbmdlICopcmFuZ2U7CiAKIC0g
KERPTURvY3VtZW50RnJhZ21lbnQgKilkb2N1bWVudEZyYWdtZW50V2l0aE1hcmt1cFN0cmluZzoo
TlNTdHJpbmcgKiltYXJrdXBTdHJpbmcgYmFzZVVSTFN0cmluZzooTlNTdHJpbmcgKiliYXNlVVJM
U3RyaW5nOwotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWRvY3VtZW50RnJhZ21lbnRXaXRoVGV4
dDooTlNTdHJpbmcgKil0ZXh0OworLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWRvY3VtZW50RnJh
Z21lbnRXaXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0IGluQ29udGV4dDooRE9NUmFuZ2UgKiljb250
ZXh0OwogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWRvY3VtZW50RnJhZ21lbnRXaXRoTm9kZXNB
c1BhcmFncmFwaHM6KE5TQXJyYXkgKilub2RlczsKIAogLSAodm9pZClyZXBsYWNlU2VsZWN0aW9u
V2l0aEZyYWdtZW50OihET01Eb2N1bWVudEZyYWdtZW50ICopZnJhZ21lbnQgc2VsZWN0UmVwbGFj
ZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVw
bGFjZSBtYXRjaFN0eWxlOihCT09MKW1hdGNoU3R5bGU7CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9t
YWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL21h
Yy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHJldmlzaW9uIDE1NDYxKQorKysgV2ViQ29yZS9icmlk
Z2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzcxLDE5ICs3
NzEsMTkgQEAgc3RhdGljIGlubGluZSBXZWJDb3JlRnJhbWVCcmlkZ2UgKmJyaWRnZQogICAgIHJl
dHVybiBtX2ZyYW1lLT5kb2N1bWVudFR5cGVTdHJpbmcoKSArIG1hcmt1cFN0cmluZzsKIH0KIAot
LSAoTlNBcnJheSAqKW5vZGVzRnJvbUxpc3Q6KERlcHJlY2F0ZWRQdHJMaXN0PE5vZGU+ICopbm9k
ZUxpc3QKKy0gKE5TQXJyYXkgKilub2Rlc0Zyb21MaXN0OihWZWN0b3I8Tm9kZSo+ICopbm9kZXNW
ZWN0b3IKIHsKLSAgICBOU011dGFibGVBcnJheSAqbm9kZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJy
YXlXaXRoQ2FwYWNpdHk6bm9kZUxpc3QtPmNvdW50KCldOwotICAgIGZvciAoRGVwcmVjYXRlZFB0
ckxpc3RJdGVyYXRvcjxOb2RlPiBpKCpub2RlTGlzdCk7IGkuY3VycmVudCgpOyArK2kpCi0gICAg
ICAgIFtub2RlcyBhZGRPYmplY3Q6W0RPTU5vZGUgX25vZGVXaXRoOmkuY3VycmVudCgpXV07Ci0K
KyAgICBzaXplX3Qgc2l6ZSA9IG5vZGVzVmVjdG9yLT5zaXplKCk7CisgICAgTlNNdXRhYmxlQXJy
YXkgKm5vZGVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNpemVdOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBbbm9kZXMgYWRkT2Jq
ZWN0OltET01Ob2RlIF9ub2RlV2l0aDooKm5vZGVzVmVjdG9yKVtpXV1dOwogICAgIHJldHVybiBu
b2RlczsKIH0KIAogLSAoTlNTdHJpbmcgKiltYXJrdXBTdHJpbmdGcm9tTm9kZTooRE9NTm9kZSAq
KW5vZGUgbm9kZXM6KE5TQXJyYXkgKiopbm9kZXMKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBu
ZXZlciAiZm9yIGludGVyY2hhbmdlIi4gSXMgdGhhdCByaWdodD8gU2VlIHRoZSBuZXh0IG1ldGhv
ZC4KLSAgICBEZXByZWNhdGVkUHRyTGlzdDxOb2RlPiBub2RlTGlzdDsKKyAgICBWZWN0b3I8Tm9k
ZSo+IG5vZGVMaXN0OwogICAgIE5TU3RyaW5nICptYXJrdXBTdHJpbmcgPSBjcmVhdGVNYXJrdXAo
W25vZGUgX25vZGVdLCBJbmNsdWRlTm9kZSwgbm9kZXMgPyAmbm9kZUxpc3QgOiAwKS5nZXROU1N0
cmluZygpOwogICAgIGlmIChub2RlcykKICAgICAgICAgKm5vZGVzID0gW3NlbGYgbm9kZXNGcm9t
TGlzdDombm9kZUxpc3RdOwpAQCAtNzk0LDcgKzc5NCw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViQ29y
ZUZyYW1lQnJpZGdlICpicmlkZ2UKIC0gKE5TU3RyaW5nICopbWFya3VwU3RyaW5nRnJvbVJhbmdl
OihET01SYW5nZSAqKXJhbmdlIG5vZGVzOihOU0FycmF5ICoqKW5vZGVzCiB7CiAgICAgLy8gRklY
TUU6IFRoaXMgaXMgYWx3YXlzICJmb3IgaW50ZXJjaGFuZ2UiLiBJcyB0aGF0IHJpZ2h0PyBTZWUg
dGhlIHByZXZpb3VzIG1ldGhvZC4KLSAgICBEZXByZWNhdGVkUHRyTGlzdDxOb2RlPiBub2RlTGlz
dDsKKyAgICBWZWN0b3I8Tm9kZSo+IG5vZGVMaXN0OwogICAgIE5TU3RyaW5nICptYXJrdXBTdHJp
bmcgPSBjcmVhdGVNYXJrdXAoW3JhbmdlIF9yYW5nZV0sIG5vZGVzID8gJm5vZGVMaXN0IDogMCwg
QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSkuZ2V0TlNTdHJpbmcoKTsKICAgICBpZiAobm9kZXMpCiAg
ICAgICAgICpub2RlcyA9IFtzZWxmIG5vZGVzRnJvbUxpc3Q6Jm5vZGVMaXN0XTsKQEAgLTE5NDEs
MjggKzE5NDEsMjMgQEAgc3RhdGljIEhUTUxGb3JtRWxlbWVudCAqZm9ybUVsZW1lbnRGcm9tRAog
ICAgICAgICBEZXByZWNhdGVkU3RyaW5nOjpmcm9tTlNTdHJpbmcobWFya3VwU3RyaW5nKSwgRGVw
cmVjYXRlZFN0cmluZzo6ZnJvbU5TU3RyaW5nKGJhc2VVUkxTdHJpbmcpKS5nZXQoKV07CiB9CiAK
LS0gKERPTURvY3VtZW50RnJhZ21lbnQgKilkb2N1bWVudEZyYWdtZW50V2l0aFRleHQ6KE5TU3Ry
aW5nICopdGV4dAorLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWRvY3VtZW50RnJhZ21lbnRXaXRo
VGV4dDooTlNTdHJpbmcgKil0ZXh0IGluQ29udGV4dDooRE9NUmFuZ2UgKiljb250ZXh0CiB7Ci0g
ICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpIHx8ICF0ZXh0KQotICAgICAg
ICByZXR1cm4gMDsKLSAgICAKLSAgICByZXR1cm4gW0RPTURvY3VtZW50RnJhZ21lbnQgX2RvY3Vt
ZW50RnJhZ21lbnRXaXRoOmNyZWF0ZUZyYWdtZW50RnJvbVRleHQobV9mcmFtZS0+ZG9jdW1lbnQo
KSwgRGVwcmVjYXRlZFN0cmluZzo6ZnJvbU5TU3RyaW5nKHRleHQpKS5nZXQoKV07CisgICAgcmV0
dXJuIFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpjcmVhdGVGcmFn
bWVudEZyb21UZXh0KFtjb250ZXh0IF9yYW5nZV0sIERlcHJlY2F0ZWRTdHJpbmc6OmZyb21OU1N0
cmluZyh0ZXh0KSkuZ2V0KCldOwogfQogCiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopZG9jdW1l
bnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdyYXBoczooTlNBcnJheSAqKW5vZGVzCiB7Ci0gICAg
TlNFbnVtZXJhdG9yICpub2RlRW51bSA9IFtub2RlcyBvYmplY3RFbnVtZXJhdG9yXTsKLSAgICBE
T01Ob2RlICpub2RlOwotICAgIERlcHJlY2F0ZWRQdHJMaXN0PE5vZGU+IG5vZGVMaXN0OwotICAg
IAogICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgCi0gICAgd2hpbGUgKChub2RlID0gW25vZGVFbnVtIG5leHRPYmplY3RdKSkg
ewotICAgICAgICBub2RlTGlzdC5hcHBlbmQoW25vZGUgX25vZGVdKTsKLSAgICB9CisgICAgTlNF
bnVtZXJhdG9yICpub2RlRW51bSA9IFtub2RlcyBvYmplY3RFbnVtZXJhdG9yXTsKKyAgICBWZWN0
b3I8Tm9kZSo+IG5vZGVzVmVjdG9yOworICAgIERPTU5vZGUgKm5vZGU7CisgICAgd2hpbGUgKChu
b2RlID0gW25vZGVFbnVtIG5leHRPYmplY3RdKSkKKyAgICAgICAgbm9kZXNWZWN0b3IuYXBwZW5k
KFtub2RlIF9ub2RlXSk7CiAgICAgCi0gICAgcmV0dXJuIFtET01Eb2N1bWVudEZyYWdtZW50IF9k
b2N1bWVudEZyYWdtZW50V2l0aDpjcmVhdGVGcmFnbWVudEZyb21Ob2RlTGlzdChtX2ZyYW1lLT5k
b2N1bWVudCgpLCBub2RlTGlzdCkuZ2V0KCldOworICAgIHJldHVybiBbRE9NRG9jdW1lbnRGcmFn
bWVudCBfZG9jdW1lbnRGcmFnbWVudFdpdGg6Y3JlYXRlRnJhZ21lbnRGcm9tTm9kZXMobV9mcmFt
ZS0+ZG9jdW1lbnQoKSwgbm9kZXNWZWN0b3IpLmdldCgpXTsKIH0KIAogLSAodm9pZClyZXBsYWNl
U2VsZWN0aW9uV2l0aEZyYWdtZW50OihET01Eb2N1bWVudEZyYWdtZW50ICopZnJhZ21lbnQgc2Vs
ZWN0UmVwbGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOihCT09M
KXNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOihCT09MKW1hdGNoU3R5bGUKQEAgLTE5ODksNyArMTk4
NCw5IEBAIHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQgKmZvcm1FbGVtZW50RnJvbUQKIAogLSAodm9p
ZClyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dCBzZWxlY3RSZXBsYWNl
bWVudDooQk9PTClzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRSZXBs
YWNlCiB7Ci0gICAgW3NlbGYgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudDpbc2VsZiBkb2N1
bWVudEZyYWdtZW50V2l0aFRleHQ6dGV4dF0gc2VsZWN0UmVwbGFjZW1lbnQ6c2VsZWN0UmVwbGFj
ZW1lbnQgc21hcnRSZXBsYWNlOnNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOllFU107CisgICAgW3Nl
bGYgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudDpbc2VsZiBkb2N1bWVudEZyYWdtZW50V2l0
aFRleHQ6dGV4dAorICAgICAgICBpbkNvbnRleHQ6W0RPTVJhbmdlIF9yYW5nZVdpdGg6bV9mcmFt
ZS0+c2VsZWN0aW9uKCkudG9SYW5nZSgpLmdldCgpXV0KKyAgICAgICAgc2VsZWN0UmVwbGFjZW1l
bnQ6c2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOnNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxl
OllFU107CiB9CiAKIC0gKGJvb2wpY2FuSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwKSW5kZXg6
IFdlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDE1
NDYxKQorKysgV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTUsMTEgKzM5NSwxMyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQ6OmZpeHVwV2hpdGVzCiAgICAgdXBkYXRlTGF5b3V0KCk7CiAgICAgLy8gRklYTUU6IGlzUmVu
ZGVyZWRDaGFyYWN0ZXIgc2hvdWxkIGJlIHJlbW92ZWQsIGFuZCB3ZSBzaG91bGQgdXNlIFZpc2li
bGVQb3NpdGlvbjo6Y2hhcmFjdGVyQWZ0ZXIgYW5kIFZpc2libGVQb3NpdGlvbjo6Y2hhcmFjdGVy
QmVmb3JlCiAgICAgaWYgKG1fbGVhZGluZ1doaXRlc3BhY2UuaXNOb3ROdWxsKCkgJiYgIW1fbGVh
ZGluZ1doaXRlc3BhY2UuaXNSZW5kZXJlZENoYXJhY3RlcigpKSB7Ci0gICAgICAgIFRleHQgKnRl
eHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCAqPihtX2xlYWRpbmdXaGl0ZXNwYWNlLm5vZGUoKSk7
CisgICAgICAgIFRleHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KG1fbGVhZGluZ1do
aXRlc3BhY2Uubm9kZSgpKTsKKyAgICAgICAgQVNTRVJUKCF0ZXh0Tm9kZS0+cmVuZGVyZXIoKSB8
fCB0ZXh0Tm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpOwog
ICAgICAgICByZXBsYWNlVGV4dEluTm9kZSh0ZXh0Tm9kZSwgbV9sZWFkaW5nV2hpdGVzcGFjZS5v
ZmZzZXQoKSwgMSwgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKICAgICB9CiAgICAgaWYgKG1f
dHJhaWxpbmdXaGl0ZXNwYWNlLmlzTm90TnVsbCgpICYmICFtX3RyYWlsaW5nV2hpdGVzcGFjZS5p
c1JlbmRlcmVkQ2hhcmFjdGVyKCkpIHsKLSAgICAgICAgVGV4dCAqdGV4dE5vZGUgPSBzdGF0aWNf
Y2FzdDxUZXh0ICo+KG1fdHJhaWxpbmdXaGl0ZXNwYWNlLm5vZGUoKSk7CisgICAgICAgIFRleHQq
IHRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KG1fdHJhaWxpbmdXaGl0ZXNwYWNlLm5vZGUo
KSk7CisgICAgICAgIEFTU0VSVCghdGV4dE5vZGUtPnJlbmRlcmVyKCkgfHx0ZXh0Tm9kZS0+cmVu
ZGVyZXIoKS0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpOwogICAgICAgICByZXBsYWNl
VGV4dEluTm9kZSh0ZXh0Tm9kZSwgbV90cmFpbGluZ1doaXRlc3BhY2Uub2Zmc2V0KCksIDEsIG5v
bkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5n
L0hUTUxJbnRlcmNoYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0hUTUxJ
bnRlcmNoYW5nZS5jcHAJKHJldmlzaW9uIDE1NDYxKQorKysgV2ViQ29yZS9lZGl0aW5nL0hUTUxJ
bnRlcmNoYW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgRGVwcmVjYXRl
ZFN0cmluZyBjb252ZXJ0ZWRTcGFjZVN0cmluZygpIAogCiB9IC8vIGVuZCBhbm9ueW1vdXMgbmFt
ZXNwYWNlCiAKLS8vIEZJWE1FOiBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0IHNo
b3VsZCBwcm9iYWJseSBiZSBpbiB0aGUga2h0bWwgbmFtZXNwYWNlLgogLy8gRklYTUU6IENhbid0
IHJlYWxseSBkbyB0aGlzIHdvcmsgd2l0aG91dCB0YWtpbmcgd2hpdGVzcGFjZSBtb2RlIGludG8g
YWNjb3VudC4KIC8vIFRoaXMgbWVhbnMgdGhhdCBldmVudHVhbGx5IHRoaXMgZnVuY3Rpb24gbmVl
ZHMgdG8gYmUgZWxpbWluYXRlZCBvciBhdCBsZWFzdCBoYXZlCiAvLyBpdHMgcGFyYW1ldGVycyBj
aGFuZ2VkIGJlY2F1c2UgaXQgY2FuJ3QgZG8gaXRzIHdvcmsgb24gdGhlIHN0cmluZyB3aXRob3V0
IGtub3dpbmcKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5j
cHAJKHJldmlzaW9uIDE1NDYxKQorKysgV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0Nv
bW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSwyNiArODUsMzYgQEAgdm9pZCBJbnNlcnRM
aW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KCkKICAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RWxlbWVudD4gYnJlYWtOb2RlID0gY3JlYXRl
QnJlYWtFbGVtZW50KGRvY3VtZW50KCkpOwotICAgIE5vZGUqIG5vZGVUb0luc2VydCA9IGJyZWFr
Tm9kZS5nZXQoKTsKLSAgICAKICAgICBQb3NpdGlvbiBwb3Moc2VsZWN0aW9uLnN0YXJ0KCkudXBz
dHJlYW0oKSk7CiAKICAgICBwb3MgPSBwb3NpdGlvbkF2b2lkaW5nU3BlY2lhbEVsZW1lbnRCb3Vu
ZGFyeShwb3MpOwogCi0gICAgaWYgKGlzVGFiU3BhblRleHROb2RlKHBvcy5ub2RlKCkpKSB7Ci0g
ICAgICAgIGluc2VydE5vZGVBdFRhYlNwYW5Qb3NpdGlvbihub2RlVG9JbnNlcnQsIHBvcyk7Cisg
ICAgTm9kZSogc3R5bGVOb2RlID0gcG9zLm5vZGUoKTsKKyAgICBib29sIGlzVGFiU3BhbiA9IGlz
VGFiU3BhblRleHROb2RlKHN0eWxlTm9kZSk7CisgICAgaWYgKGlzVGFiU3BhbikKKyAgICAgICAg
c3R5bGVOb2RlID0gc3R5bGVOb2RlLT5wYXJlbnROb2RlKCktPnBhcmVudE5vZGUoKTsKKyAgICBS
ZW5kZXJPYmplY3QqIHN0eWxlUmVuZGVyZXIgPSBzdHlsZU5vZGUtPnJlbmRlcmVyKCk7CisgICAg
Ym9vbCB1c2VCcmVha0VsZW1lbnQgPSAhc3R5bGVSZW5kZXJlciB8fCAhc3R5bGVSZW5kZXJlci0+
c3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCk7CisKKyAgICBSZWZQdHI8Tm9kZT4gbm9kZVRvSW5z
ZXJ0OworICAgIGlmICh1c2VCcmVha0VsZW1lbnQpCisgICAgICAgIG5vZGVUb0luc2VydCA9IGNy
ZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKTsKKyAgICBlbHNlCisgICAgICAgIG5vZGVUb0lu
c2VydCA9IGRvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKCJcbiIpOworICAgICAgICAvLyBGSVhN
RTogTmVlZCB0byBtZXJnZSB0ZXh0IG5vZGVzIHdoZW4gaW5zZXJ0aW5nIGp1c3QgYWZ0ZXIgb3Ig
YmVmb3JlIHRleHQuCisgICAgCisgICAgaWYgKGlzVGFiU3BhbikgeworICAgICAgICBpbnNlcnRO
b2RlQXRUYWJTcGFuUG9zaXRpb24obm9kZVRvSW5zZXJ0LmdldCgpLCBwb3MpOwogICAgICAgICBz
ZXRFbmRpbmdTZWxlY3Rpb24oUG9zaXRpb24obm9kZVRvSW5zZXJ0LT50cmF2ZXJzZU5leHROb2Rl
KCksIDApLCBET1dOU1RSRUFNKTsKICAgICB9IGVsc2UgaWYgKGlzRW5kT2ZCbG9jayhWaXNpYmxl
UG9zaXRpb24ocG9zLCBzZWxlY3Rpb24uYWZmaW5pdHkoKSkpKSB7Ci0gICAgICAgIAogICAgICAg
ICBOb2RlKiBibG9jayA9IHBvcy5ub2RlKCktPmVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIEluc2VydCBhbiBleHRyYSBiciBpZiB0aGUgaW5zZXJ0ZWQg
b25lIHdpbGwgY29sbGFwc2VkIGJlY2F1c2Ugb2YgcXVpcmtzIG1vZGUuCi0gICAgICAgIGlmICgh
ZG9jdW1lbnQoKS0+aW5TdHJpY3RNb2RlKCkgJiYgIShwb3MuZG93bnN0cmVhbSgpLm5vZGUoKS0+
aGFzVGFnTmFtZShiclRhZykgJiYgcG9zLmRvd25zdHJlYW0oKS5vZmZzZXQoKSA9PSAwKSkgewot
ICAgICAgICAgICAgaW5zZXJ0Tm9kZUF0KG5vZGVUb0luc2VydCwgcG9zLm5vZGUoKSwgcG9zLm9m
ZnNldCgpKTsKLSAgICAgICAgICAgIGluc2VydE5vZGVBZnRlcihjcmVhdGVCcmVha0VsZW1lbnQo
ZG9jdW1lbnQoKSkuZ2V0KCksIG5vZGVUb0luc2VydCk7CisgICAgICAgIGlmICh1c2VCcmVha0Vs
ZW1lbnQgJiYgIWRvY3VtZW50KCktPmluU3RyaWN0TW9kZSgpICYmICEocG9zLmRvd25zdHJlYW0o
KS5ub2RlKCktPmhhc1RhZ05hbWUoYnJUYWcpICYmIHBvcy5kb3duc3RyZWFtKCkub2Zmc2V0KCkg
PT0gMCkpIHsKKyAgICAgICAgICAgIGluc2VydE5vZGVBdChub2RlVG9JbnNlcnQuZ2V0KCksIHBv
cy5ub2RlKCksIHBvcy5vZmZzZXQoKSk7CisgICAgICAgICAgICBpbnNlcnROb2RlQWZ0ZXIoY3Jl
YXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpLmdldCgpLCBub2RlVG9JbnNlcnQuZ2V0KCkpOwog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGluc2VydE5vZGVBdChub2RlVG9JbnNlcnQsIHBv
cy5ub2RlKCksIHBvcy5vZmZzZXQoKSk7CisgICAgICAgICAgICBpbnNlcnROb2RlQXQobm9kZVRv
SW5zZXJ0LmdldCgpLCBwb3Mubm9kZSgpLCBwb3Mub2Zmc2V0KCkpOwogICAgICAgICAgICAgCiAg
ICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihQb3NpdGlvbihibG9jaywgbWF4RGVlcE9mZnNldChi
bG9jaykpLCBET1dOU1RSRUFNKTsKICAgICB9CkBAIC0xMTIsMTQgKzEyMiwxNCBAQCB2b2lkIElu
c2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICBMT0coRWRpdGluZywgImlu
cHV0IG5ld2xpbmUgY2FzZSAyIik7CiAgICAgICAgIC8vIEluc2VydCBub2RlIGJlZm9yZSBkb3du
c3RyZWFtIHBvc2l0aW9uLCBhbmQgcGxhY2UgY2FyZXQgdGhlcmUgYXMgd2VsbC4gCiAgICAgICAg
IFBvc2l0aW9uIGVuZGluZ1Bvc2l0aW9uID0gcG9zLmRvd25zdHJlYW0oKTsKLSAgICAgICAgaW5z
ZXJ0Tm9kZUJlZm9yZVBvc2l0aW9uKG5vZGVUb0luc2VydCwgZW5kaW5nUG9zaXRpb24pOworICAg
ICAgICBpbnNlcnROb2RlQmVmb3JlUG9zaXRpb24obm9kZVRvSW5zZXJ0LmdldCgpLCBlbmRpbmdQ
b3NpdGlvbik7CiAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihlbmRpbmdQb3NpdGlvbiwgRE9X
TlNUUkVBTSk7CiAgICAgfSBlbHNlIGlmIChwb3Mub2Zmc2V0KCkgPj0gcG9zLm5vZGUoKS0+Y2Fy
ZXRNYXhPZmZzZXQoKSkgewogICAgICAgICBMT0coRWRpdGluZywgImlucHV0IG5ld2xpbmUgY2Fz
ZSAzIik7CiAgICAgICAgIC8vIEluc2VydCBCUiBhZnRlciB0aGlzIG5vZGUuIFBsYWNlIGNhcmV0
IGluIHRoZSBwb3NpdGlvbiB0aGF0IGlzIGRvd25zdHJlYW0KICAgICAgICAgLy8gb2YgdGhlIGN1
cnJlbnQgcG9zaXRpb24sIHJlY2tvbmVkIGJlZm9yZSBpbnNlcnRpbmcgdGhlIEJSIGluIGJldHdl
ZW4uCiAgICAgICAgIFBvc2l0aW9uIGVuZGluZ1Bvc2l0aW9uID0gcG9zLmRvd25zdHJlYW0oKTsK
LSAgICAgICAgaW5zZXJ0Tm9kZUFmdGVyUG9zaXRpb24obm9kZVRvSW5zZXJ0LCBwb3MpOworICAg
ICAgICBpbnNlcnROb2RlQWZ0ZXJQb3NpdGlvbihub2RlVG9JbnNlcnQuZ2V0KCksIHBvcyk7CiAg
ICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihlbmRpbmdQb3NpdGlvbiwgRE9XTlNUUkVBTSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgLy8gU3BsaXQgYSB0ZXh0IG5vZGUKQEAgLTEzMiw3ICsxNDIs
NyBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICBSZWZQ
dHI8VGV4dD4gdGV4dEJlZm9yZU5vZGUgPSBkb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZSh0ZXh0
Tm9kZS0+c3Vic3RyaW5nRGF0YSgwLCBzZWxlY3Rpb24uc3RhcnQoKS5vZmZzZXQoKSwgZWMpKTsK
ICAgICAgICAgZGVsZXRlVGV4dEZyb21Ob2RlKHRleHROb2RlLCAwLCBwb3Mub2Zmc2V0KCkpOwog
ICAgICAgICBpbnNlcnROb2RlQmVmb3JlKHRleHRCZWZvcmVOb2RlLmdldCgpLCB0ZXh0Tm9kZSk7
Ci0gICAgICAgIGluc2VydE5vZGVCZWZvcmUobm9kZVRvSW5zZXJ0LCB0ZXh0Tm9kZSk7CisgICAg
ICAgIGluc2VydE5vZGVCZWZvcmUobm9kZVRvSW5zZXJ0LmdldCgpLCB0ZXh0Tm9kZSk7CiAgICAg
ICAgIFBvc2l0aW9uIGVuZGluZ1Bvc2l0aW9uID0gUG9zaXRpb24odGV4dE5vZGUsIDApOwogICAg
ICAgICAKICAgICAgICAgLy8gSGFuZGxlIHdoaXRlc3BhY2UgdGhhdCBvY2N1cnMgYWZ0ZXIgdGhl
IHNwbGl0CkBAIC0xNDAsNiArMTUwLDcgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpk
b0FwcGx5KCkKICAgICAgICAgaWYgKCFlbmRpbmdQb3NpdGlvbi5pc1JlbmRlcmVkQ2hhcmFjdGVy
KCkpIHsKICAgICAgICAgICAgIC8vIENsZWFyIG91dCBhbGwgd2hpdGVzcGFjZSBhbmQgaW5zZXJ0
IG9uZSBub24tYnJlYWtpbmcgc3BhY2UKICAgICAgICAgICAgIGRlbGV0ZUluc2lnbmlmaWNhbnRU
ZXh0RG93bnN0cmVhbShlbmRpbmdQb3NpdGlvbik7CisgICAgICAgICAgICBBU1NFUlQoIXRleHRO
b2RlLT5yZW5kZXJlcigpIHx8IHRleHROb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5jb2xsYXBz
ZVdoaXRlU3BhY2UoKSk7CiAgICAgICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUodGV4dE5vZGUs
IDAsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0x
NTQsNyArMTY1LDggQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KCkKICAg
ICAKICAgICBpZiAodHlwaW5nU3R5bGUgJiYgdHlwaW5nU3R5bGUtPmxlbmd0aCgpID4gMCkgewog
ICAgICAgICBTZWxlY3Rpb24gc2VsZWN0aW9uQmVmb3JlU3R5bGUgPSBlbmRpbmdTZWxlY3Rpb24o
KTsKLSAgICAgICAgYXBwbHlTdHlsZSh0eXBpbmdTdHlsZSwgUG9zaXRpb24obm9kZVRvSW5zZXJ0
LCAwKSwgUG9zaXRpb24obm9kZVRvSW5zZXJ0LCBtYXhEZWVwT2Zmc2V0KG5vZGVUb0luc2VydCkp
KTsKKyAgICAgICAgYXBwbHlTdHlsZSh0eXBpbmdTdHlsZSwgUG9zaXRpb24obm9kZVRvSW5zZXJ0
LmdldCgpLCAwKSwKKyAgICAgICAgICAgIFBvc2l0aW9uKG5vZGVUb0luc2VydC5nZXQoKSwgbWF4
RGVlcE9mZnNldChub2RlVG9JbnNlcnQuZ2V0KCkpKSk7CiAgICAgICAgIHNldEVuZGluZ1NlbGVj
dGlvbihzZWxlY3Rpb25CZWZvcmVTdHlsZSk7CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCShyZXZpc2lv
biAxNTQ2MSkKKysrIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21t
YW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjczLDcgKzI3Myw4IEBAIHZvaWQgSW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG8KICAgICAvLyBGSVhNRTogbGVhZGluZ1doaXRlc3Bh
Y2VQb3NpdGlvbiBpcyByZXR1cm5pbmcgdGhlIHBvc2l0aW9uIGJlZm9yZSBwcmVzZXJ2ZWQgbmV3
bGluZXMgZm9yIHBvc2l0aW9ucwogICAgIC8vIGFmdGVyIHRoZSBwcmVzZXJ2ZWQgbmV3bGluZSwg
Y2F1c2luZyB0aGUgbmV3bGluZSB0byBiZSB0dXJuZWQgaW50byBhIG5ic3AuCiAgICAgaWYgKGxl
YWRpbmdXaGl0ZXNwYWNlLmlzTm90TnVsbCgpKSB7Ci0gICAgICAgIFRleHQgKnRleHROb2RlID0g
c3RhdGljX2Nhc3Q8VGV4dCAqPihsZWFkaW5nV2hpdGVzcGFjZS5ub2RlKCkpOworICAgICAgICBU
ZXh0KiB0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQqPihsZWFkaW5nV2hpdGVzcGFjZS5ub2Rl
KCkpOworICAgICAgICBBU1NFUlQoIXRleHROb2RlLT5yZW5kZXJlcigpIHx8IHRleHROb2RlLT5y
ZW5kZXJlcigpLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSk7CiAgICAgICAgIHJlcGxh
Y2VUZXh0SW5Ob2RlKHRleHROb2RlLCBsZWFkaW5nV2hpdGVzcGFjZS5vZmZzZXQoKSwgMSwgbm9u
QnJlYWtpbmdTcGFjZVN0cmluZygpKTsKICAgICB9CiAgICAgCkBAIC0zNDQsOSArMzQ1LDExIEBA
IHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG8KICAgICAgICAgcG9zID0g
UG9zaXRpb24oc3RhcnROb2RlLCAwKTsKICAgICAgICAgaWYgKCFwb3MuaXNSZW5kZXJlZENoYXJh
Y3RlcigpKSB7CiAgICAgICAgICAgICAvLyBDbGVhciBvdXQgYWxsIHdoaXRlc3BhY2UgYW5kIGlu
c2VydCBvbmUgbm9uLWJyZWFraW5nIHNwYWNlCi0gICAgICAgICAgICBBU1NFUlQoc3RhcnROb2Rl
ICYmIHN0YXJ0Tm9kZS0+aXNUZXh0Tm9kZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChzdGFydE5v
ZGUpOworICAgICAgICAgICAgQVNTRVJUKHN0YXJ0Tm9kZS0+aXNUZXh0Tm9kZSgpKTsKKyAgICAg
ICAgICAgIEFTU0VSVCghc3RhcnROb2RlLT5yZW5kZXJlcigpIHx8IHN0YXJ0Tm9kZS0+cmVuZGVy
ZXIoKS0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpOwogICAgICAgICAgICAgZGVsZXRl
SW5zaWduaWZpY2FudFRleHREb3duc3RyZWFtKHBvcyk7Ci0gICAgICAgICAgICBpbnNlcnRUZXh0
SW50b05vZGUoc3RhdGljX2Nhc3Q8VGV4dCAqPihzdGFydE5vZGUpLCAwLCBub25CcmVha2luZ1Nw
YWNlU3RyaW5nKCkpOworICAgICAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHN0YXRpY19jYXN0
PFRleHQqPihzdGFydE5vZGUpLCAwLCBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOwogICAgICAg
ICB9CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvSlNFZGl0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9KU0VkaXRvci5jcHAJKHJldmlzaW9uIDE1NDYxKQorKysg
V2ViQ29yZS9lZGl0aW5nL0pTRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE1LDcgKzQx
NSw3IEBAIGJvb2wgZXhlY1JlZG8oRnJhbWUgKmZyYW1lLCBib29sIHVzZXJJbnQKIAogYm9vbCBl
eGVjUmVtb3ZlRm9ybWF0KEZyYW1lKiBmcmFtZSwgYm9vbCB1c2VySW50ZXJmYWNlLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogewotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9
IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoZnJhbWUtPmRvY3VtZW50KCksIGZyYW1lLT5zZWxlY3Rp
b24oKS50b1N0cmluZygpLmRlcHJlY2F0ZWRTdHJpbmcoKSk7CisgICAgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChmcmFtZS0+c2VsZWN0
aW9uKCkudG9SYW5nZSgpLmdldCgpLCBmcmFtZS0+c2VsZWN0aW9uKCkudG9TdHJpbmcoKSk7CiAg
ICAgRWRpdENvbW1hbmRQdHIobmV3IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKGZyYW1lLT5kb2N1
bWVudCgpLCBmcmFnbWVudC5nZXQoKSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIEVkaXRB
Y3Rpb25VbnNwZWNpZmllZCkpLmFwcGx5KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBX
ZWJDb3JlL2VkaXRpbmcvUmViYWxhbmNlV2hpdGVzcGFjZUNvbW1hbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9SZWJhbGFuY2VXaGl0ZXNwYWNlQ29tbWFuZC5jcHAJKHJldmlz
aW9uIDE1NDYxKQorKysgV2ViQ29yZS9lZGl0aW5nL1JlYmFsYW5jZVdoaXRlc3BhY2VDb21tYW5k
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMTIgKzQ5LDE2IEBAIHZvaWQgUmViYWxhbmNlV2hp
dGVzcGFjZUNvbW1hbmQ6OmRvQXBwbHkKIHsKICAgICBpZiAobV9wb3NpdGlvbi5pc051bGwoKSB8
fCAhbV9wb3NpdGlvbi5ub2RlKCktPmlzVGV4dE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKLSAgICBUZXh0ICp0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQgKj4obV9wb3NpdGlv
bi5ub2RlKCkpOworCisgICAgVGV4dCogdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0Kj4obV9w
b3NpdGlvbi5ub2RlKCkpOwogICAgIFN0cmluZyB0ZXh0ID0gdGV4dE5vZGUtPmRhdGEoKTsKICAg
ICBpZiAodGV4dC5sZW5ndGgoKSA9PSAwKQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGV4dE5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKHJl
bmRlcmVyICYmICFyZW5kZXJlci0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpCisgICAg
ICAgIHJldHVybjsKKwogICAgIGludCBvZmZzZXQgPSBtX3Bvc2l0aW9uLm9mZnNldCgpOwogICAg
IC8vIElmIG5laXRoZXIgdGV4dFtvZmZzZXRdIG5vciB0ZXh0W29mZnNldCAtIDFdIGFyZSBzb21l
IGZvcm0gb2Ygd2hpdGVzcGFjZSwgZG8gbm90aGluZy4KICAgICBpZiAoIWlzV2hpdGVzcGFjZSh0
ZXh0W29mZnNldF0pKSB7CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAJKHJldmlzaW9uIDE1NDYxKQorKysgV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNTggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZXBsYWNl
bWVudEZyYWdtZW50OjpSZXBsYWNlbWVudEZyYWdtZW50KERvY3VtZW50ICpkb2N1bWVudCwgRG9j
dW1lbnRGcmFnbWVudCAqZnJhZ21lbnQsIGJvb2wgbWF0Y2hTdHlsZSwgRWxlbWVudCogZWRpdGFi
bGVSb290KQorZW51bSBFRnJhZ21lbnRUeXBlIHsgRW1wdHlGcmFnbWVudCwgU2luZ2xlVGV4dE5v
ZGVGcmFnbWVudCwgVHJlZUZyYWdtZW50IH07CisKK2NsYXNzIFJlcGxhY2VtZW50RnJhZ21lbnQg
OiBOb25jb3B5YWJsZQoreworcHVibGljOgorICAgIFJlcGxhY2VtZW50RnJhZ21lbnQoRG9jdW1l
bnQqLCBEb2N1bWVudEZyYWdtZW50KiwgYm9vbCwgY29uc3QgU2VsZWN0aW9uJiBzZWxlY3Rpb24p
OworCisgICAgTm9kZSogZmlyc3RDaGlsZCgpIGNvbnN0OworICAgIE5vZGUqIGxhc3RDaGlsZCgp
IGNvbnN0OworCisgICAgTm9kZSogbWVyZ2VTdGFydE5vZGUoKSBjb25zdDsKKworICAgIGNvbnN0
IFJlbmRlcmluZ0luZm9NYXAmIHJlbmRlcmluZ0luZm8oKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
cmluZ0luZm87IH0KKyAgICBjb25zdCBOb2RlVmVjdG9yJiBub2RlcygpIGNvbnN0IHsgcmV0dXJu
IG1fbm9kZXM7IH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICghbV9mcmFn
bWVudCB8fCAhbV9mcmFnbWVudC0+Zmlyc3RDaGlsZCgpKSAmJiAhbV9oYXNJbnRlcmNoYW5nZU5l
d2xpbmVBdFN0YXJ0ICYmICFtX2hhc0ludGVyY2hhbmdlTmV3bGluZUF0RW5kOyB9CisKKyAgICBi
b29sIGhhc01vcmVUaGFuT25lQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2hhc01vcmVUaGFuT25l
QmxvY2s7IH0KKyAgICBib29sIGhhc0ludGVyY2hhbmdlTmV3bGluZUF0U3RhcnQoKSBjb25zdCB7
IHJldHVybiBtX2hhc0ludGVyY2hhbmdlTmV3bGluZUF0U3RhcnQ7IH0KKyAgICBib29sIGhhc0lu
dGVyY2hhbmdlTmV3bGluZUF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV9oYXNJbnRlcmNoYW5nZU5l
d2xpbmVBdEVuZDsgfQorICAgIAorICAgIGJvb2wgaXNCbG9ja0Zsb3coTm9kZSopIGNvbnN0Owor
ICAgIAorICAgIHZvaWQgcmVtb3ZlTm9kZShQYXNzUmVmUHRyPE5vZGU+KTsKKworcHJpdmF0ZTog
ICAgCisgICAgc3RhdGljIGJvb2wgaXNJbnRlcmNoYW5nZU5ld2xpbmVOb2RlKGNvbnN0IE5vZGUq
KTsKKyAgICBzdGF0aWMgYm9vbCBpc0ludGVyY2hhbmdlQ29udmVydGVkU3BhY2VTcGFuKGNvbnN0
IE5vZGUqKTsKKyAgICAKKyAgICBQYXNzUmVmUHRyPE5vZGU+IGluc2VydEZyYWdtZW50Rm9yVGVz
dFJlbmRlcmluZyhOb2RlKiBjb250ZXh0KTsKKyAgICB2b2lkIHNhdmVSZW5kZXJpbmdJbmZvKE5v
ZGUqKTsKKyAgICB2b2lkIGNvbXB1dGVTdHlsZXNVc2luZ1Rlc3RSZW5kZXJpbmcoTm9kZSopOwor
ICAgIHZvaWQgcmVtb3ZlVW5yZW5kZXJlZE5vZGVzKE5vZGUqKTsKKyAgICB2b2lkIHJlc3RvcmVU
ZXN0UmVuZGVyaW5nTm9kZXNUb0ZyYWdtZW50KE5vZGUqKTsKKyAgICBpbnQgcmVuZGVyZWRCbG9j
a3MoTm9kZSopOworICAgIHZvaWQgcmVtb3ZlU3R5bGVOb2RlcygpOworCisgICAgTm9kZSogZW5j
bG9zaW5nQmxvY2soTm9kZSopIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlTm9kZVByZXNlcnZpbmdD
aGlsZHJlbihOb2RlKik7CisgICAgdm9pZCBpbnNlcnROb2RlQmVmb3JlKE5vZGUqIG5vZGUsIE5v
ZGUqIHJlZk5vZGUpOworCisgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OworICAgIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBtX2ZyYWdtZW50OworICAgIFJlbmRlcmluZ0luZm9NYXAg
bV9yZW5kZXJpbmdJbmZvOworICAgIE5vZGVWZWN0b3IgbV9ub2RlczsKKyAgICBib29sIG1fbWF0
Y2hTdHlsZTsKKyAgICBib29sIG1faGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRTdGFydDsKKyAgICBi
b29sIG1faGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRFbmQ7CisgICAgYm9vbCBtX2hhc01vcmVUaGFu
T25lQmxvY2s7Cit9OworCitSZXBsYWNlbWVudEZyYWdtZW50OjpSZXBsYWNlbWVudEZyYWdtZW50
KERvY3VtZW50KiBkb2N1bWVudCwgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIGJvb2wgbWF0
Y2hTdHlsZSwgY29uc3QgU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiAgICAgOiBtX2RvY3VtZW50KGRv
Y3VtZW50KSwKICAgICAgIG1fZnJhZ21lbnQoZnJhZ21lbnQpLAogICAgICAgbV9tYXRjaFN0eWxl
KG1hdGNoU3R5bGUpLCAKQEAgLTU4LDI3ICsxMDksMTkgQEAgUmVwbGFjZW1lbnRGcmFnbWVudDo6
UmVwbGFjZW1lbnRGcmFnbWVudAogewogICAgIGlmICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKCFtX2ZyYWdtZW50KSB7Ci0gICAgICAgIG1fdHlwZSA9IEVtcHR5RnJh
Z21lbnQ7CisgICAgaWYgKCFtX2ZyYWdtZW50KQogICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgTm9kZSogZmlyc3RDaGlsZCA9IG1fZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKTsKLSAgICBOb2Rl
KiBsYXN0Q2hpbGQgPSBtX2ZyYWdtZW50LT5sYXN0Q2hpbGQoKTsKLQotICAgIGlmICghZmlyc3RD
aGlsZCkgewotICAgICAgICBtX3R5cGUgPSBFbXB0eUZyYWdtZW50OworICAgIGlmICghZmlyc3RD
aGlsZCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBtX3R5cGUgPSBmaXJzdENo
aWxkID09IGxhc3RDaGlsZCAmJiBmaXJzdENoaWxkLT5pc1RleHROb2RlKCkgPyBTaW5nbGVUZXh0
Tm9kZUZyYWdtZW50IDogVHJlZUZyYWdtZW50OwogICAgIAorICAgIEVsZW1lbnQqIGVkaXRhYmxl
Um9vdCA9IHNlbGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgQVNTRVJUKGVkaXRh
YmxlUm9vdCk7CiAgICAgaWYgKCFlZGl0YWJsZVJvb3QpCiAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIAotICAgIFJlZlB0cjxOb2RlPiBob2xkZXIgPSBpbnNlcnRGcmFnbWVudEZvclRlc3RS
ZW5kZXJpbmcoKTsKKworICAgIE5vZGUqIHN0eWxlTm9kZSA9IHNlbGVjdGlvbi5iYXNlKCkubm9k
ZSgpOworICAgIFJlZlB0cjxOb2RlPiBob2xkZXIgPSBpbnNlcnRGcmFnbWVudEZvclRlc3RSZW5k
ZXJpbmcoc3R5bGVOb2RlKTsKICAgICAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gU2VsZWN0
aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUoaG9sZGVyLmdldCgpKS50b1JhbmdlKCk7
CiAgICAgU3RyaW5nIHRleHQgPSBwbGFpblRleHQocmFuZ2UuZ2V0KCkpOwpAQCAtODgsMjEgKzEz
MSwxNiBAQCBSZXBsYWNlbWVudEZyYWdtZW50OjpSZXBsYWNlbWVudEZyYWdtZW50CiAgICAgZWRp
dGFibGVSb290LT5kaXNwYXRjaEV2ZW50KGV2dCwgZWMsIHRydWUpOwogICAgIEFTU0VSVChlYyA9
PSAwKTsKICAgICBpZiAodGV4dCAhPSBldnQtPnRleHQoKSB8fCAhZWRpdGFibGVSb290LT5pc0Nv
bnRlbnRSaWNobHlFZGl0YWJsZSgpKSB7Ci0gICAgICAgIC8vIElmIHRoZSByb290IGlzIGluIHBs
YWluLXRleHQgbW9kZSwgYW5kIHdoaXRlLXNwYWNlIHNob3VsZG4ndCBiZSBjb2xsYXBzZWQsIHRo
ZW4gY29udHJ1Y3QgYSBmcmFnbWVudCB0aGF0IGNvbnRhaW5zIG9uZSB0ZXh0IG5vZGUKLSAgICAg
ICAgaWYgKCFlZGl0YWJsZVJvb3QtPmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgJiYgZWRpdGFi
bGVSb290LT5yZW5kZXJlcigpICYmICFlZGl0YWJsZVJvb3QtPnJlbmRlcmVyKCktPnN0eWxlKCkt
PmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAg
ICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50LT5jcmVhdGVUZXh0Tm9kZShl
dnQtPnRleHQoKSksIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKLSAgICAgICAg
ICAgIG1fZnJhZ21lbnQgPSBmcmFnbWVudDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBt
X2ZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChkb2N1bWVudCwgZXZ0LT50ZXh0KCku
ZGVwcmVjYXRlZFN0cmluZygpKTsKLSAgICAgICAgZmlyc3RDaGlsZCA9IG1fZnJhZ21lbnQtPmZp
cnN0Q2hpbGQoKTsKLSAgICAgICAgbGFzdENoaWxkID0gbV9mcmFnbWVudC0+Zmlyc3RDaGlsZCgp
OwotICAgICAgICAKKyAgICAgICAgcmVzdG9yZVRlc3RSZW5kZXJpbmdOb2Rlc1RvRnJhZ21lbnQo
aG9sZGVyLmdldCgpKTsKICAgICAgICAgcmVtb3ZlTm9kZShob2xkZXIpOwotICAgICAgICBob2xk
ZXIgPSBpbnNlcnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmcoKTsKKworICAgICAgICBtX2ZyYWdt
ZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChzZWxlY3Rpb24udG9SYW5nZSgpLmdldCgpLCBl
dnQtPnRleHQoKSk7CisgICAgICAgIGZpcnN0Q2hpbGQgPSBtX2ZyYWdtZW50LT5maXJzdENoaWxk
KCk7CisgICAgICAgIGlmICghZmlyc3RDaGlsZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgaG9sZGVyID0gaW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKHN0eWxlTm9kZSk7CiAg
ICAgfQotICAgIAorCiAgICAgTm9kZSAqbm9kZSA9IGZpcnN0Q2hpbGQ7CiAgICAgTm9kZSAqbmV3
bGluZUF0U3RhcnROb2RlID0gMDsKICAgICBOb2RlICpuZXdsaW5lQXRFbmROb2RlID0gMDsKQEAg
LTE0NCwxMCArMTgyLDYgQEAgUmVwbGFjZW1lbnRGcmFnbWVudDo6UmVwbGFjZW1lbnRGcmFnbWVu
dAogICAgIHJlbW92ZVN0eWxlTm9kZXMoKTsKIH0KIAotUmVwbGFjZW1lbnRGcmFnbWVudDo6flJl
cGxhY2VtZW50RnJhZ21lbnQoKQotewotfQotCiBOb2RlICpSZXBsYWNlbWVudEZyYWdtZW50Ojpm
aXJzdENoaWxkKCkgY29uc3QgCiB7IAogICAgIHJldHVybiBtX2ZyYWdtZW50LT5maXJzdENoaWxk
KCk7IApAQCAtMjMyLDE1ICsyNjYsMjcgQEAgdm9pZCBSZXBsYWNlbWVudEZyYWdtZW50OjppbnNl
cnROb2RlQmVmbwogICAgIEFTU0VSVChlYyA9PSAwKTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBS
ZXBsYWNlbWVudEZyYWdtZW50OjppbnNlcnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmcoKQorUGFz
c1JlZlB0cjxOb2RlPiBSZXBsYWNlbWVudEZyYWdtZW50OjppbnNlcnRGcmFnbWVudEZvclRlc3RS
ZW5kZXJpbmcoTm9kZSogY29udGV4dCkKIHsKLSAgICBOb2RlICpib2R5ID0gbV9kb2N1bWVudC0+
Ym9keSgpOworICAgIE5vZGUqIGJvZHkgPSBtX2RvY3VtZW50LT5ib2R5KCk7CiAgICAgaWYgKCFi
b2R5KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxOb2RlPiBob2xkZXIgPSBjcmVh
dGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChtX2RvY3VtZW50LmdldCgpKTsKKyAgICBSZWZQdHI8
U3R5bGVkRWxlbWVudD4gaG9sZGVyID0gc3RhdGljX3BvaW50ZXJfY2FzdDxTdHlsZWRFbGVtZW50
PihjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChtX2RvY3VtZW50LmdldCgpKSk7CiAgICAg
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisKKyAgICAvLyBDb3B5IHRoZSB3aGl0ZXNwYWNl
IHN0eWxlIGZyb20gdGhlIGNvbnRleHQgb250byB0aGlzIGVsZW1lbnQuCisgICAgTm9kZSogbiA9
IGNvbnRleHQ7CisgICAgd2hpbGUgKG4gJiYgIW4tPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAg
biA9IG4tPnBhcmVudE5vZGUoKTsKKyAgICBpZiAobikgeworICAgICAgICBSZWZQdHI8Q1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb250ZXh0U3R5bGUgPSBuZXcgQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uKHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKSk7CisgICAgICAgIENTU1N0eWxl
RGVjbGFyYXRpb24qIHN0eWxlID0gaG9sZGVyLT5zdHlsZSgpOworICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTX1BST1BfV0hJVEVfU1BBQ0UsIGNvbnRleHRTdHlsZS0+Z2V0UHJvcGVydHlW
YWx1ZShDU1NfUFJPUF9XSElURV9TUEFDRSksIGZhbHNlLCBlYyk7CisgICAgICAgIEFTU0VSVChl
YyA9PSAwKTsKKyAgICB9CisgICAgCiAgICAgaG9sZGVyLT5hcHBlbmRDaGlsZChtX2ZyYWdtZW50
LCBlYyk7CiAgICAgQVNTRVJUKGVjID09IDApOwogICAgIApAQCAtNTMyLDkgKzU3OCw5IEBAIHZv
aWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICBtX21hdGNoU3R5
bGUgPSB0cnVlOwogICAgIAogICAgIEVsZW1lbnQqIGN1cnJlbnRSb290ID0gc2VsZWN0aW9uLnJv
b3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBSZXBsYWNlbWVudEZyYWdtZW50IGZyYWdtZW50KGRv
Y3VtZW50KCksIG1fZG9jdW1lbnRGcmFnbWVudC5nZXQoKSwgbV9tYXRjaFN0eWxlLCBjdXJyZW50
Um9vdCk7CisgICAgUmVwbGFjZW1lbnRGcmFnbWVudCBmcmFnbWVudChkb2N1bWVudCgpLCBtX2Rv
Y3VtZW50RnJhZ21lbnQuZ2V0KCksIG1fbWF0Y2hTdHlsZSwgc2VsZWN0aW9uKTsKICAgICAKLSAg
ICBpZiAoZnJhZ21lbnQudHlwZSgpID09IEVtcHR5RnJhZ21lbnQpCisgICAgaWYgKGZyYWdtZW50
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChtX21hdGNoU3R5bGUp
CkBAIC03NzksMTIgKzgyNSwxNCBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0Fw
cGx5KCkKICAgICAgICAgYm9vbCBuZWVkc1RyYWlsaW5nU3BhY2UgPSAhaXNFbmRPZlBhcmFncmFw
aChlbmRPZkluc2VydGVkQ29udGVudCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAhZnJhbWUtPmlzQ2hhcmFjdGVyU21hcnRSZXBsYWNlRXhlbXB0KGVuZE9mSW5zZXJ0ZWRD
b250ZW50LmNoYXJhY3RlckFmdGVyKCksIGZhbHNlKTsKICAgICAgICAgaWYgKG5lZWRzVHJhaWxp
bmdTcGFjZSkgeworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fbGFzdE5v
ZGVJbnNlcnRlZC0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNw
YWNlID0gIXJlbmRlcmVyIHx8IHJlbmRlcmVyLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2Uo
KTsKICAgICAgICAgICAgIGlmIChtX2xhc3ROb2RlSW5zZXJ0ZWQtPmlzVGV4dE5vZGUoKSkgewot
ICAgICAgICAgICAgICAgIFRleHQgKnRleHQgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KG1fbGFzdE5v
ZGVJbnNlcnRlZC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRl
eHQsIHRleHQtPmxlbmd0aCgpLCBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOworICAgICAgICAg
ICAgICAgIFRleHQqIHRleHQgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KG1fbGFzdE5vZGVJbnNlcnRl
ZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRleHQsIHRleHQt
Pmxlbmd0aCgpLCBjb2xsYXBzZVdoaXRlU3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkg
OiAiICIpOwogICAgICAgICAgICAgICAgIGluc2VydGlvblBvcyA9IFBvc2l0aW9uKHRleHQsIHRl
eHQtPmxlbmd0aCgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgUmVm
UHRyPE5vZGU+IG5vZGUgPSBkb2N1bWVudCgpLT5jcmVhdGVFZGl0aW5nVGV4dE5vZGUobm9uQnJl
YWtpbmdTcGFjZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9
IGRvY3VtZW50KCktPmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3BhY2UgPyBu
b25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICIpOwogICAgICAgICAgICAgICAgIGluc2VydE5v
ZGVBZnRlckFuZFVwZGF0ZU5vZGVzSW5zZXJ0ZWQobm9kZS5nZXQoKSwgbV9sYXN0Tm9kZUluc2Vy
dGVkLmdldCgpKTsKICAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb3MgPSBQb3NpdGlvbihub2Rl
LmdldCgpLCAxKTsKICAgICAgICAgICAgIH0KQEAgLTc5MywxMSArODQxLDEzIEBAIHZvaWQgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICBib29sIG5lZWRzTGVhZGlu
Z1NwYWNlID0gIWlzU3RhcnRPZlBhcmFncmFwaChzdGFydE9mSW5zZXJ0ZWRDb250ZW50KSAmJgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWZyYW1lLT5pc0NoYXJhY3RlclNtYXJ0
UmVwbGFjZUV4ZW1wdChzdGFydE9mSW5zZXJ0ZWRDb250ZW50LnByZXZpb3VzKCkuY2hhcmFjdGVy
QWZ0ZXIoKSwgdHJ1ZSk7CiAgICAgICAgIGlmIChuZWVkc0xlYWRpbmdTcGFjZSkgeworICAgICAg
ICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fbGFzdE5vZGVJbnNlcnRlZC0+cmVuZGVy
ZXIoKTsKKyAgICAgICAgICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlID0gIXJlbmRlcmVyIHx8
IG1fbGFzdE5vZGVJbnNlcnRlZC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNw
YWNlKCk7CiAgICAgICAgICAgICBpZiAobV9maXJzdE5vZGVJbnNlcnRlZC0+aXNUZXh0Tm9kZSgp
KSB7CiAgICAgICAgICAgICAgICAgVGV4dCAqdGV4dCA9IHN0YXRpY19jYXN0PFRleHQgKj4obV9m
aXJzdE5vZGVJbnNlcnRlZC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0VGV4dEludG9O
b2RlKHRleHQsIDAsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAg
aW5zZXJ0VGV4dEludG9Ob2RlKHRleHQsIDAsIGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFr
aW5nU3BhY2VTdHJpbmcoKSA6ICIgIik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIFJlZlB0cjxOb2RlPiBub2RlID0gZG9jdW1lbnQoKS0+Y3JlYXRlRWRpdGluZ1RleHRO
b2RlKG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgUmVmUHRyPE5v
ZGU+IG5vZGUgPSBkb2N1bWVudCgpLT5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoY29sbGFwc2VXaGl0
ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIDogIiAiKTsKICAgICAgICAgICAgICAg
ICAvLyBEb24ndCB1cGRhdGVOb2Rlc0luc2VydGVkLiAgRG9pbmcgc28gd291bGQgc2V0IG1fbGFz
dE5vZGVJbnNlcnRlZCB0byBiZSB0aGUgbm9kZSBjb250YWluaW5nIHRoZSAKICAgICAgICAgICAg
ICAgICAvLyBsZWFkaW5nIHNwYWNlLCBidXQgbV9sYXN0Tm9kZUluc2VydGVkIGlzIHN1cHBvc2Vk
IHRvIG1hcmsgdGhlIGVuZCBvZiBwYXN0ZWQgY29udGVudC4KICAgICAgICAgICAgICAgICBpbnNl
cnROb2RlQmVmb3JlKG5vZGUuZ2V0KCksIG1fZmlyc3ROb2RlSW5zZXJ0ZWQuZ2V0KCkpOwpJbmRl
eDogV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgJKHJldmlzaW9uIDE1
NDYxKQorKysgV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDggKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RG9jdW1lbnRGcmFnbWVudDsKLQotZW51bSBFRnJhZ21lbnRUeXBlIHsgRW1wdHlGcmFnbWVudCwg
U2luZ2xlVGV4dE5vZGVGcmFnbWVudCwgVHJlZUZyYWdtZW50IH07CitjbGFzcyBSZXBsYWNlbWVu
dEZyYWdtZW50OwogCiBjbGFzcyBSZW5kZXJpbmdJbmZvIDogcHVibGljIFNoYXJlZDxSZW5kZXJp
bmdJbmZvPiB7CiBwdWJsaWM6CkBAIC01MCw2NiArNDksNiBAQCBwcml2YXRlOgogdHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPE5vZGU+ID4gTm9kZVZlY3RvcjsKIHR5cGVkZWYgSGFzaE1hcDxOb2RlKiwg
UmVmUHRyPFJlbmRlcmluZ0luZm8+ID4gUmVuZGVyaW5nSW5mb01hcDsKIAotLy8gLS0tIFJlcGxh
Y2VtZW50RnJhZ21lbnQgaGVscGVyIGNsYXNzCi0KLWNsYXNzIFJlcGxhY2VtZW50RnJhZ21lbnQK
LXsKLXB1YmxpYzoKLSAgICBSZXBsYWNlbWVudEZyYWdtZW50KERvY3VtZW50KiwgRG9jdW1lbnRG
cmFnbWVudCosIGJvb2wsIEVsZW1lbnQqKTsKLSAgICB+UmVwbGFjZW1lbnRGcmFnbWVudCgpOwot
Ci0gICAgTm9kZSAqZmlyc3RDaGlsZCgpIGNvbnN0OwotICAgIE5vZGUgKmxhc3RDaGlsZCgpIGNv
bnN0OwotCi0gICAgTm9kZSAqbWVyZ2VTdGFydE5vZGUoKSBjb25zdDsKLQotICAgIGNvbnN0IFJl
bmRlcmluZ0luZm9NYXAmIHJlbmRlcmluZ0luZm8oKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmlu
Z0luZm87IH0KLSAgICBjb25zdCBOb2RlVmVjdG9yJiBub2RlcygpIGNvbnN0IHsgcmV0dXJuIG1f
bm9kZXM7IH0KLQotICAgIEVGcmFnbWVudFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBFbXB0eUZy
YWdtZW50OyB9Ci0gICAgYm9vbCBpc1NpbmdsZVRleHROb2RlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlID09IFNpbmdsZVRleHROb2RlRnJhZ21lbnQ7IH0KLSAgICBib29sIGlzVHJlZUZyYWdtZW50
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFRyZWVGcmFnbWVudDsgfQotCi0gICAgYm9vbCBo
YXNNb3JlVGhhbk9uZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNb3JlVGhhbk9uZUJsb2Nr
OyB9Ci0gICAgYm9vbCBoYXNJbnRlcmNoYW5nZU5ld2xpbmVBdFN0YXJ0KCkgY29uc3QgeyByZXR1
cm4gbV9oYXNJbnRlcmNoYW5nZU5ld2xpbmVBdFN0YXJ0OyB9Ci0gICAgYm9vbCBoYXNJbnRlcmNo
YW5nZU5ld2xpbmVBdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzSW50ZXJjaGFuZ2VOZXdsaW5l
QXRFbmQ7IH0KLSAgICAKLSAgICBib29sIGlzQmxvY2tGbG93KE5vZGUqKSBjb25zdDsKLSAgICAK
LSAgICB2b2lkIHJlbW92ZU5vZGUoUGFzc1JlZlB0cjxOb2RlPik7Ci0KLXByaXZhdGU6Ci0gICAg
Ly8gbm8gY29weSBjb25zdHJ1Y3Rpb24gb3IgYXNzaWdubWVudAotICAgIFJlcGxhY2VtZW50RnJh
Z21lbnQoY29uc3QgUmVwbGFjZW1lbnRGcmFnbWVudCAmKTsKLSAgICBSZXBsYWNlbWVudEZyYWdt
ZW50ICZvcGVyYXRvcj0oY29uc3QgUmVwbGFjZW1lbnRGcmFnbWVudCAmKTsKLSAgICAKLSAgICBz
dGF0aWMgYm9vbCBpc0ludGVyY2hhbmdlTmV3bGluZU5vZGUoY29uc3QgTm9kZSAqKTsKLSAgICBz
dGF0aWMgYm9vbCBpc0ludGVyY2hhbmdlQ29udmVydGVkU3BhY2VTcGFuKGNvbnN0IE5vZGUgKik7
Ci0gICAgCi0gICAgUGFzc1JlZlB0cjxOb2RlPiBpbnNlcnRGcmFnbWVudEZvclRlc3RSZW5kZXJp
bmcoKTsKLSAgICB2b2lkIHNhdmVSZW5kZXJpbmdJbmZvKE5vZGUqKTsKLSAgICB2b2lkIGNvbXB1
dGVTdHlsZXNVc2luZ1Rlc3RSZW5kZXJpbmcoTm9kZSopOwotICAgIHZvaWQgcmVtb3ZlVW5yZW5k
ZXJlZE5vZGVzKE5vZGUqKTsKLSAgICB2b2lkIHJlc3RvcmVUZXN0UmVuZGVyaW5nTm9kZXNUb0Zy
YWdtZW50KE5vZGUqKTsKLSAgICBpbnQgcmVuZGVyZWRCbG9ja3MoTm9kZSopOwotICAgIHZvaWQg
cmVtb3ZlU3R5bGVOb2RlcygpOwotCi0gICAgTm9kZSAqZW5jbG9zaW5nQmxvY2soTm9kZSAqKSBj
b25zdDsKLSAgICB2b2lkIHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4oTm9kZSAqKTsKLSAg
ICB2b2lkIGluc2VydE5vZGVCZWZvcmUoTm9kZSAqbm9kZSwgTm9kZSAqcmVmTm9kZSk7Ci0KLSAg
ICBFRnJhZ21lbnRUeXBlIG1fdHlwZTsKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7
Ci0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IG1fZnJhZ21lbnQ7Ci0gICAgUmVuZGVyaW5n
SW5mb01hcCBtX3JlbmRlcmluZ0luZm87Ci0gICAgTm9kZVZlY3RvciBtX25vZGVzOwotICAgIGJv
b2wgbV9tYXRjaFN0eWxlOwotICAgIGJvb2wgbV9oYXNJbnRlcmNoYW5nZU5ld2xpbmVBdFN0YXJ0
OwotICAgIGJvb2wgbV9oYXNJbnRlcmNoYW5nZU5ld2xpbmVBdEVuZDsKLSAgICBib29sIG1faGFz
TW9yZVRoYW5PbmVCbG9jazsKLX07Ci0KIGNsYXNzIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kIDog
cHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kCiB7CiBwdWJsaWM6CkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAkocmV2aXNpb24gMTU0NjEpCisrKyBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQyLDEyICsyNDIsMTIgQEAgc3RhdGljIERlcHJlY2F0ZWRTdHJpbmcgZW5k
TWFya3VwKGNvbnN0IAogICAgIHJldHVybiAiIjsKIH0KIAotc3RhdGljIERlcHJlY2F0ZWRTdHJp
bmcgbWFya3VwKGNvbnN0IE5vZGUgKnN0YXJ0Tm9kZSwgYm9vbCBvbmx5SW5jbHVkZUNoaWxkcmVu
LCBib29sIGluY2x1ZGVTaWJsaW5ncywgRGVwcmVjYXRlZFB0ckxpc3Q8Tm9kZT4gKm5vZGVzKQor
c3RhdGljIERlcHJlY2F0ZWRTdHJpbmcgbWFya3VwKE5vZGUqIHN0YXJ0Tm9kZSwgYm9vbCBvbmx5
SW5jbHVkZUNoaWxkcmVuLCBib29sIGluY2x1ZGVTaWJsaW5ncywgVmVjdG9yPE5vZGUqPiAqbm9k
ZXMpCiB7CiAgICAgLy8gRG9lc24ndCBtYWtlIHNlbnNlIHRvIG9ubHkgaW5jbHVkZSBjaGlsZHJl
biBhbmQgaW5jbHVkZSBzaWJsaW5ncy4KICAgICBBU1NFUlQoIShvbmx5SW5jbHVkZUNoaWxkcmVu
ICYmIGluY2x1ZGVTaWJsaW5ncykpOwogICAgIERlcHJlY2F0ZWRTdHJpbmcgbWUgPSAiIjsKLSAg
ICBmb3IgKGNvbnN0IE5vZGUgKmN1cnJlbnQgPSBzdGFydE5vZGU7IGN1cnJlbnQgIT0gTlVMTDsg
Y3VycmVudCA9IGluY2x1ZGVTaWJsaW5ncyA/IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkgOiBOVUxM
KSB7CisgICAgZm9yIChOb2RlKiBjdXJyZW50ID0gc3RhcnROb2RlOyBjdXJyZW50ICE9IE5VTEw7
IGN1cnJlbnQgPSBpbmNsdWRlU2libGluZ3MgPyBjdXJyZW50LT5uZXh0U2libGluZygpIDogTlVM
TCkgewogICAgICAgICBpZiAoIW9ubHlJbmNsdWRlQ2hpbGRyZW4pIHsKICAgICAgICAgICAgIGlm
IChub2RlcykKICAgICAgICAgICAgICAgICBub2Rlcy0+YXBwZW5kKGN1cnJlbnQpOwpAQCAtMjgy
LDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlVVJMcyhOb2RlICpub2RlLCBjb24KICAg
ICB9CiB9CiAKLURlcHJlY2F0ZWRTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlICpyYW5n
ZSwgRGVwcmVjYXRlZFB0ckxpc3Q8Tm9kZT4gKm5vZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5n
ZSBhbm5vdGF0ZSkKK0RlcHJlY2F0ZWRTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlICpy
YW5nZSwgVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlIGFubm90
YXRlKQogewogICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UtPmlzRGV0YWNoZWQoKSkKICAgICAgICAg
cmV0dXJuIERlcHJlY2F0ZWRTdHJpbmcoKTsKQEAgLTMwOCw3ICszMDgsNyBAQCBEZXByZWNhdGVk
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nCiAgICAgRGVwcmVjYXRlZFN0cmluZ0xpc3Qg
bWFya3VwczsKICAgICBOb2RlICpwYXN0RW5kID0gcmFuZ2UtPnBhc3RFbmROb2RlKCk7CiAgICAg
Tm9kZSAqbGFzdENsb3NlZCA9IDA7Ci0gICAgRGVwcmVjYXRlZFB0ckxpc3Q8Tm9kZT4gYW5jZXN0
b3JzVG9DbG9zZTsKKyAgICBWZWN0b3I8Tm9kZSo+IGFuY2VzdG9yc1RvQ2xvc2U7CiAKICAgICAv
LyBjYWxjdWxhdGUgdGhlICJkZWZhdWx0IHN0eWxlIiBmb3IgdGhpcyBtYXJrdXAKICAgICBQb3Np
dGlvbiBwb3MoZG9jLT5kb2N1bWVudEVsZW1lbnQoKSwgMCk7CkBAIC0zNTIsMTQgKzM1MiwxNSBA
QCBEZXByZWNhdGVkU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nCiAgICAgICAgICAgICBp
ZiAobi0+bmV4dFNpYmxpbmcoKSA9PSAwIHx8IG5leHQgPT0gcGFzdEVuZCkgewogICAgICAgICAg
ICAgICAgIGlmICghYW5jZXN0b3JzVG9DbG9zZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gQ2xvc2UgdXAgdGhlIGFuY2VzdG9ycy4KLSAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKE5vZGUgKmFuY2VzdG9yID0gYW5jZXN0b3JzVG9DbG9zZS5sYXN0KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSAqYW5jZXN0b3Ig
PSBhbmNlc3RvcnNUb0Nsb3NlLmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChu
ZXh0ICE9IHBhc3RFbmQgJiYgYW5jZXN0b3IgPT0gbmV4dC0+cGFyZW50Tm9kZSgpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Tm90IGF0IHRoZSBlbmQgb2YgdGhlIHJhbmdlLCBjbG9zZSBhbmNlc3RvcnMgdXAgdG8gc2libGlu
ZyBvZiBuZXh0IG5vZGUuCiAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrdXBzLmFwcGVuZChl
bmRNYXJrdXAoYW5jZXN0b3IpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RDbG9zZWQg
PSBhbmNlc3RvcjsKICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2VzdG9yc1RvQ2xvc2UucmVt
b3ZlTGFzdCgpOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0g
d2hpbGUgKCFhbmNlc3RvcnNUb0Nsb3NlLmlzRW1wdHkoKSk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgLy8gTm8gYW5jZXN0b3JzIHRvIGNsb3NlLCBidXQg
bmVlZCB0byBhZGQgYW5jZXN0b3JzIG5vdCBpbiByYW5nZSBzaW5jZSBuZXh0IG5vZGUgaXMgaW4g
YW5vdGhlciB0cmVlLiAKICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQgIT0gcGFzdEVuZCkg
ewpAQCAtNDUyLDE2ICs0NTMsMTggQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVh
dGVGcmFnbQogICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiB9CiAKLURlcHJlY2F0ZWRT
dHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUgKm5vZGUsIEVDaGlsZHJlbk9ubHkgaW5jbHVk
ZUNoaWxkcmVuLAotICAgIERlcHJlY2F0ZWRQdHJMaXN0PE5vZGU+ICpub2RlcywgRUFubm90YXRl
Rm9ySW50ZXJjaGFuZ2UgYW5ub3RhdGUpCitEZXByZWNhdGVkU3RyaW5nIGNyZWF0ZU1hcmt1cChj
b25zdCBOb2RlKiBub2RlLCBFQ2hpbGRyZW5Pbmx5IGluY2x1ZGVDaGlsZHJlbiwKKyAgICBWZWN0
b3I8Tm9kZSo+KiBub2RlcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgYW5ub3RhdGUpCiB7CiAg
ICAgQVNTRVJUKGFubm90YXRlID09IERvTm90QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSk7IC8vIGFu
bm90YXRpb24gbm90IHlldCBpbXBsZW1lbnRlZCBmb3IgdGhpcyBjb2RlIHBhdGgKICAgICBub2Rl
LT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLSAg
ICByZXR1cm4gbWFya3VwKG5vZGUsIGluY2x1ZGVDaGlsZHJlbiwgZmFsc2UsIG5vZGVzKTsKKyAg
ICByZXR1cm4gbWFya3VwKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpLCBpbmNsdWRlQ2hpbGRyZW4s
IGZhbHNlLCBub2Rlcyk7CiB9CiAKLXN0YXRpYyB2b2lkIGNyZWF0ZVBhcmFncmFwaENvbnRlbnRz
RnJvbVN0cmluZyhEb2N1bWVudCAqZG9jdW1lbnQsIEVsZW1lbnQgKnBhcmFncmFwaCwgY29uc3Qg
RGVwcmVjYXRlZFN0cmluZyAmc3RyaW5nKQorc3RhdGljIHZvaWQgY3JlYXRlUGFyYWdyYXBoQ29u
dGVudHNGcm9tU3RyaW5nKEVsZW1lbnQqIHBhcmFncmFwaCwgY29uc3QgRGVwcmVjYXRlZFN0cmlu
ZyYgc3RyaW5nKQogeworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHBhcmFncmFwaC0+ZG9jdW1l
bnQoKTsKKwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChzdHJpbmcuaXNFbXB0
eSgpKSB7CiAgICAgICAgIHBhcmFncmFwaC0+YXBwZW5kQ2hpbGQoY3JlYXRlQmxvY2tQbGFjZWhv
bGRlckVsZW1lbnQoZG9jdW1lbnQpLCBlYyk7CkBAIC00NzksNyArNDgyLDcgQEAgc3RhdGljIHZv
aWQgY3JlYXRlUGFyYWdyYXBoQ29udGVudHNGcm9tUwogCiAgICAgICAgIC8vIGFwcGVuZCB0aGUg
bm9uLXRhYiB0ZXh0dWFsIHBhcnQKICAgICAgICAgaWYgKCFzLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgaWYgKHRhYlRleHQgIT0gIiIpIHsKKyAgICAgICAgICAgIGlmICghdGFiVGV4dC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0ZVRh
YlNwYW5FbGVtZW50KGRvY3VtZW50LCB0YWJUZXh0KSwgZWMpOwogICAgICAgICAgICAgICAgIEFT
U0VSVChlYyA9PSAwKTsKICAgICAgICAgICAgICAgICB0YWJUZXh0ID0gIiI7CkBAIC00OTIsNTIg
KzQ5NSw2NyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVQYXJhZ3JhcGhDb250ZW50c0Zyb21TCiAKICAg
ICAgICAgLy8gdGhlcmUgaXMgYSB0YWIgYWZ0ZXIgZXZlcnkgZW50cnksIGV4Y2VwdCB0aGUgbGFz
dCBlbnRyeQogICAgICAgICAvLyAoaWYgdGhlIGxhc3QgY2hhcmFjdGVyIGlzIGEgdGFiLCB0aGUg
bGlzdCBnZXRzIGFuIGV4dHJhIGVtcHR5IGVudHJ5KQotICAgICAgICBpZiAoIXRhYkxpc3QuaXNF
bXB0eSgpKSB7CisgICAgICAgIGlmICghdGFiTGlzdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICB0
YWJUZXh0ICs9ICdcdCc7Ci0gICAgICAgIH0gZWxzZSBpZiAodGFiVGV4dCAhPSAiIikgeworICAg
ICAgICBlbHNlIGlmICghdGFiVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHBhcmFncmFw
aC0+YXBwZW5kQ2hpbGQoY3JlYXRlVGFiU3BhbkVsZW1lbnQoZG9jdW1lbnQsIHRhYlRleHQpLCBl
Yyk7CiAgICAgICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAK
LVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChEb2N1
bWVudCAqZG9jdW1lbnQsIGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcgJnRleHQpCitQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoUmFuZ2UqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBpZiAoIWRvY3VtZW50KQorICAgIGlmICghY29u
dGV4dCkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBOb2RlKiBzdHlsZU5vZGUgPSBjb250ZXh0
LT5zdGFydE5vZGUoKTsKKyAgICBpZiAoIXN0eWxlTm9kZSkgeworICAgICAgICBzdHlsZU5vZGUg
PSBjb250ZXh0LT5zdGFydFBvc2l0aW9uKCkubm9kZSgpOworICAgICAgICBpZiAoIXN0eWxlTm9k
ZSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHN0eWxlTm9kZS0+ZG9jdW1lbnQoKTsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgIAotICAg
IGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBzdHJpbmcg
PSB0ZXh0OworICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZyYWdtZW50
LnJlbGVhc2UoKTsKIAotICAgICAgICAvLyBCcmVhayBzdHJpbmcgaW50byBwYXJhZ3JhcGhzLiBF
eHRyYSBsaW5lIGJyZWFrcyB0dXJuIGludG8gZW1wdHkgcGFyYWdyYXBocy4KLSAgICAgICAgc3Ry
aW5nLnJlcGxhY2UoIlxyXG4iLCAiXG4iKTsKLSAgICAgICAgc3RyaW5nLnJlcGxhY2UoJ1xyJywg
J1xuJyk7Ci0gICAgICAgIERlcHJlY2F0ZWRTdHJpbmdMaXN0IGxpc3QgPSBEZXByZWNhdGVkU3Ry
aW5nTGlzdDo6c3BsaXQoJ1xuJywgc3RyaW5nLCB0cnVlKTsgLy8gdHJ1ZSBnZXRzIHVzIGVtcHR5
IHN0cmluZ3MgaW4gdGhlIGxpc3QKLSAgICAgICAgd2hpbGUgKCFsaXN0LmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBzID0gbGlzdC5maXJzdCgpOwotICAgICAgICAg
ICAgbGlzdC5wb3BfZnJvbnQoKTsKLQotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudDsKLSAgICAgICAgICAgIGlmIChz
LmlzRW1wdHkoKSAmJiBsaXN0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIC8vIEZvciBs
YXN0IGxpbmUsIHVzZSB0aGUgIm1hZ2ljIEJSIiByYXRoZXIgdGhhbiBhIFAuCi0gICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50TlMoeGh0bWxOYW1lc3BhY2VV
UkksICJiciIsIGVjKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoZWMgPT0gMCk7Ci0gICAgICAg
ICAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNoYW5n
ZU5ld2xpbmUpOyAgICAgICAgICAgIAotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoZG9jdW1lbnQpOwot
ICAgICAgICAgICAgICAgIGNyZWF0ZVBhcmFncmFwaENvbnRlbnRzRnJvbVN0cmluZyhkb2N1bWVu
dCwgZWxlbWVudC5nZXQoKSwgcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmcmFnbWVu
dC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5nZXQoKSwgZWMpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdHlsZU5vZGUtPnJlbmRlcmVyKCk7
CisgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUo
KSkgeworICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQtPmNyZWF0ZVRleHRO
b2RlKHRleHQpLCBlYyk7CisgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAgcmV0dXJu
IGZyYWdtZW50LnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICAvLyBCcmVhayBzdHJpbmcgaW50byBw
YXJhZ3JhcGhzLiBFeHRyYSBsaW5lIGJyZWFrcyB0dXJuIGludG8gZW1wdHkgcGFyYWdyYXBocy4K
KyAgICBEZXByZWNhdGVkU3RyaW5nIHN0cmluZyA9IHRleHQuZGVwcmVjYXRlZFN0cmluZygpOwor
ICAgIHN0cmluZy5yZXBsYWNlKCJcclxuIiwgIlxuIik7CisgICAgc3RyaW5nLnJlcGxhY2UoJ1xy
JywgJ1xuJyk7CisgICAgRGVwcmVjYXRlZFN0cmluZ0xpc3QgbGlzdCA9IERlcHJlY2F0ZWRTdHJp
bmdMaXN0OjpzcGxpdCgnXG4nLCBzdHJpbmcsIHRydWUpOyAvLyB0cnVlIGdldHMgdXMgZW1wdHkg
c3RyaW5ncyBpbiB0aGUgbGlzdAorICAgIHdoaWxlICghbGlzdC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgRGVwcmVjYXRlZFN0cmluZyBzID0gbGlzdC5maXJzdCgpOworICAgICAgICBsaXN0LnBvcF9m
cm9udCgpOworCisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50OworICAgICAgICBpZiAo
cy5pc0VtcHR5KCkgJiYgbGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIEZvciBsYXN0
IGxpbmUsIHVzZSB0aGUgIm1hZ2ljIEJSIiByYXRoZXIgdGhhbiBhIFAuCisgICAgICAgICAgICBl
bGVtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgImJy
IiwgZWMpOwogICAgICAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAgICAgICAgZWxlbWVu
dC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpOyAgICAg
ICAgICAgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZWxlbWVudCA9IGNyZWF0ZURl
ZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KTsKKyAgICAgICAgICAgIGNyZWF0ZVBhcmFn
cmFwaENvbnRlbnRzRnJvbVN0cmluZyhlbGVtZW50LmdldCgpLCBzKTsKICAgICAgICAgfQorICAg
ICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5nZXQoKSwgZWMpOworICAgICAgICBB
U1NFUlQoZWMgPT0gMCk7CiAgICAgfQogICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiB9
CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTm9kZUxp
c3QoRG9jdW1lbnQgKmRvY3VtZW50LCBjb25zdCBEZXByZWNhdGVkUHRyTGlzdDxOb2RlPiAmbm9k
ZUxpc3QpCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU5v
ZGVzKERvY3VtZW50ICpkb2N1bWVudCwgY29uc3QgVmVjdG9yPE5vZGUqPiYgbm9kZXMpCiB7CiAg
ICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC01NDUsOSArNTYzLDEwIEBA
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ20KICAgICBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCgpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZm9yIChEZXByZWNhdGVkUHRy
TGlzdEl0ZXJhdG9yPE5vZGU+IGkobm9kZUxpc3QpOyBpLmN1cnJlbnQoKTsgKytpKSB7CisgICAg
c2l6ZV90IHNpemUgPSBub2Rlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVEZWZh
dWx0UGFyYWdyYXBoRWxlbWVudChkb2N1bWVudCk7Ci0gICAgICAgIGVsZW1lbnQtPmFwcGVuZENo
aWxkKGkuY3VycmVudCgpLCBlYyk7CisgICAgICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKG5vZGVz
W2ldLCBlYyk7CiAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKICAgICAgICAgZnJhZ21lbnQtPmFw
cGVuZENoaWxkKGVsZW1lbnQucmVsZWFzZSgpLCBlYyk7CiAgICAgICAgIEFTU0VSVChlYyA9PSAw
KTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmgJKHJldmlzaW9uIDE1NDYxKQorKysgV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJIVE1M
SW50ZXJjaGFuZ2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNywxOCArMzgsMTYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJhbmdlOwogICAgIGNsYXNzIFN0cmluZzsKIAot
ICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBEZXByZWNhdGVkUHRyTGlzdDsKLQogICAgIGVu
dW0gRUNoaWxkcmVuT25seSB7IEluY2x1ZGVOb2RlLCBDaGlsZHJlbk9ubHkgfTsKIAotICAgIFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChEb2N1bWVu
dCosIGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcgJnRleHQpOwotICAgIFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKERvY3VtZW50KiwgY29uc3QgU3Ry
aW5nICZtYXJrdXAsIGNvbnN0IFN0cmluZyAmYmFzZVVSTCk7Ci0gICAgUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Ob2RlTGlzdChEb2N1bWVudCosIGNvbnN0
IERlcHJlY2F0ZWRQdHJMaXN0PE5vZGU+ICZub2RlTGlzdCk7Ci0KLSAgICBEZXByZWNhdGVkU3Ry
aW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSAqcmFuZ2UsCi0gICAgICAgIERlcHJlY2F0ZWRQ
dHJMaXN0PE5vZGU+ICpub2RlcyA9IDAsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlID0gRG9Ob3RB
bm5vdGF0ZUZvckludGVyY2hhbmdlKTsKLSAgICBEZXByZWNhdGVkU3RyaW5nIGNyZWF0ZU1hcmt1
cChjb25zdCBOb2RlICpub2RlLCBFQ2hpbGRyZW5Pbmx5ID0gSW5jbHVkZU5vZGUsCi0gICAgICAg
IERlcHJlY2F0ZWRQdHJMaXN0PE5vZGU+ICpub2RlcyA9IDAsIEVBbm5vdGF0ZUZvckludGVyY2hh
bmdlID0gRG9Ob3RBbm5vdGF0ZUZvckludGVyY2hhbmdlKTsKKyAgICBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoUmFuZ2UqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgdGV4dCk7CisgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXAoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMKTsKKyAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0
ZUZyYWdtZW50RnJvbU5vZGVzKERvY3VtZW50KiwgY29uc3QgVmVjdG9yPE5vZGUqPiYpOworCisg
ICAgRGVwcmVjYXRlZFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqLAorICAgICAgICBW
ZWN0b3I8Tm9kZSo+KiA9IDAsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlID0gRG9Ob3RBbm5vdGF0
ZUZvckludGVyY2hhbmdlKTsKKyAgICBEZXByZWNhdGVkU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25z
dCBOb2RlKiwgRUNoaWxkcmVuT25seSA9IEluY2x1ZGVOb2RlLAorICAgICAgICBWZWN0b3I8Tm9k
ZSo+KiA9IDAsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlID0gRG9Ob3RBbm5vdGF0ZUZvckludGVy
Y2hhbmdlKTsKIAogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NDYxKQor
KysgV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYg
KzMwMCw5IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnNldElubmVySFRNTChjb25zdCBTdHIKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBBZGQgc3BlY2lhbCBjYXNlIGZvciB3
aGVuIHdlIGhhZCBvbmUgdGV4dCBjaGlsZCBhbmQgd2UganVzdCB3YW50IHRvIHNldCBpdHMgdGV4
dD8KKyAgICAvLyBGSVhNRTogQWRkIHNwZWNpYWwgY2FzZSBmb3IgY2FzZXMgd2hlcmUgd2UgY2Fu
IHVzZSByZXBsYWNlQ2hpbGQ/CisKICAgICByZW1vdmVDaGlsZHJlbigpOwogICAgIGFwcGVuZENo
aWxkKGZyYWdtZW50LnJlbGVhc2UoKSwgZWMpOwogfQpAQCAtMzE5LDggKzMyMiw4IEBAIHZvaWQg
SFRNTEVsZW1lbnQ6OnNldE91dGVySFRNTChjb25zdCBTdHIKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIC8vIEZJWE1FOiBXaHkgZG9lc24ndCB0aGlzIGhhdmUgY29kZSB0byBtZXJnZSBu
ZWlnaGJvcmluZyB0ZXh0IG5vZGVzIHRoZQotICAgIC8vIHdheSBzZXRPdXRlclRleHQgZG9lcz8K
KyAgICAvLyBGSVhNRTogQWRkIHNwZWNpYWwgY2FzZSBmb3Igd2hlbiB3ZSBoYWQgb25lIHRleHQg
Y2hpbGQgYW5kIHdlIGp1c3Qgd2FudCB0byBzZXQgaXRzIHRleHQ/CisgICAgLy8gRklYTUU6IFdo
eSBkb2Vzbid0IHRoaXMgaGF2ZSBjb2RlIHRvIG1lcmdlIG5laWdoYm9yaW5nIHRleHQgbm9kZXMg
dGhlIHdheSBzZXRPdXRlclRleHQgZG9lcz8KICAgICBwYXJlbnQtPnJlcGxhY2VDaGlsZChmcmFn
bWVudC5yZWxlYXNlKCksIHRoaXMsIGVjKTsKIH0KIApAQCAtMzM5LDM2ICszNDIsNTggQEAgdm9p
ZCBIVE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0KGNvbnN0IFN0cgogICAgICAgICByZXR1cm47CiAg
ICAgfQogCisgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB0YWtlIHdoaXRlc3BhY2UgY29sbGFw
c2luZyBpbnRvIGFjY291bnQgYXQgYWxsLgorICAgIC8vIEZJWE1FOiBBZGQgc3BlY2lhbCBjYXNl
IGZvciB3aGVuIHdlIGhhZCBvbmUgdGV4dCBjaGlsZCBhbmQgd2UganVzdCB3YW50IHRvIHNldCBp
dHMgdGV4dD8KKyAgICAvLyBGSVhNRTogQWRkIHNwZWNpYWwgY2FzZSBmb3IgY2FzZXMgd2hlcmUg
d2UgY2FuIHVzZSByZXBsYWNlQ2hpbGQ/CisKICAgICByZW1vdmVDaGlsZHJlbigpOwogCiAgICAg
Ly8gQWRkIHRleHQgbm9kZXMgYW5kIDxicj4gZWxlbWVudHMuCiAgICAgaW50IGxlbmd0aCA9IHRl
eHQubGVuZ3RoKCk7Ci0gICAgaWYgKCF0ZXh0LmNvbnRhaW5zKCdcbicpICYmICF0ZXh0LmNvbnRh
aW5zKCdccicpICYmIGxlbmd0aCkKKyAgICBpZiAoIXRleHQuY29udGFpbnMoJ1xuJykgJiYgIXRl
eHQuY29udGFpbnMoJ1xyJykgJiYgbGVuZ3RoKSB7CiAgICAgICAgIGFwcGVuZENoaWxkKG5ldyBU
ZXh0KGRvY3VtZW50KCksIHRleHQpLCBlYyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGVjID0gMDsK
LSAgICAgICAgaW50IGxpbmVTdGFydCA9IDA7Ci0gICAgICAgIFVDaGFyIHByZXYgPSAwOwotICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBVQ2hh
ciBjID0gdGV4dFtpXTsKLSAgICAgICAgICAgIGlmIChjID09ICdcbicgfHwgYyA9PSAnXHInKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGkgPiBsaW5lU3RhcnQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kQ2hpbGQobmV3IFRleHQoZG9jdW1lbnQoKSwgdGV4dC5zdWJzdHJpbmcobGluZVN0
YXJ0LCBpIC0gbGluZVN0YXJ0KSksIGVjKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVjKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBpZiAoIShjID09ICdcbicgJiYgaSAhPSAwICYmIHByZXYgPT0gJ1xyJykpIHsK
LSAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQobmV3IEhUTUxCUkVsZW1lbnQoZG9jdW1l
bnQoKSksIGVjKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVjKQotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBsaW5l
U3RhcnQgPSBpICsgMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBE
byB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gZGV0ZWN0IHRoaXMgZXZlbiB3aGVuIHRoZXJlJ3Mgbm8g
cmVuZGVyZXI/CisgICAgLy8gRklYTUU6IENhbiB0aGUgcmVuZGVyZXIgYmUgb3V0IG9mIGRhdGUg
aGVyZT8gRG8gd2UgbmVlZCB0byBjYWxsIHVwZGF0ZVJlbmRlcmluZz8KKyAgICAvLyBGb3IgZXhh
bXBsZSwgZm9yIHRoZSBjb250ZW50cyBvZiB0ZXh0YXJlYSBlbGVtZW50cyB0aGF0IGFyZSBkaXNw
bGF5Om5vbmU/CisgICAgUmVuZGVyT2JqZWN0KiByID0gcmVuZGVyZXIoKTsKKyAgICBpZiAociAm
JiByLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgeworICAgICAgICBpZiAoIXRleHQuY29u
dGFpbnMoJ1xyJykpIHsKKyAgICAgICAgICAgIGFwcGVuZENoaWxkKG5ldyBUZXh0KGRvY3VtZW50
KCksIHRleHQpLCBlYyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
Ly8gRklYTUU6IFN0aWNrIHdpdGggU3RyaW5nIG9uY2UgaXQgaGFzIGEgcmVwbGFjZSB0aGF0IGNh
biBkbyB0aGlzLgorICAgICAgICBEZXByZWNhdGVkU3RyaW5nIHRleHRXaXRoQ29uc2lzdGVudExp
bmVCcmVha3MgPSB0ZXh0LmRlcHJlY2F0ZWRTdHJpbmcoKTsKKyAgICAgICAgdGV4dFdpdGhDb25z
aXN0ZW50TGluZUJyZWFrcy5yZXBsYWNlKCJcclxuIiwgIlxuIik7CisgICAgICAgIHRleHRXaXRo
Q29uc2lzdGVudExpbmVCcmVha3MucmVwbGFjZSgnXHInLCAnXG4nKTsKKyAgICAgICAgYXBwZW5k
Q2hpbGQobmV3IFRleHQoZG9jdW1lbnQoKSwgdGV4dFdpdGhDb25zaXN0ZW50TGluZUJyZWFrcyks
IGVjKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGVjID0gMDsKKyAgICBpbnQgbGlu
ZVN0YXJ0ID0gMDsKKyAgICBVQ2hhciBwcmV2ID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgIFVDaGFyIGMgPSB0ZXh0W2ldOworICAgICAgICBpZiAo
YyA9PSAnXG4nIHx8IGMgPT0gJ1xyJykgeworICAgICAgICAgICAgaWYgKGkgPiBsaW5lU3RhcnQp
IHsKKyAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZChuZXcgVGV4dChkb2N1bWVudCgpLCB0ZXh0
LnN1YnN0cmluZyhsaW5lU3RhcnQsIGkgLSBsaW5lU3RhcnQpKSwgZWMpOworICAgICAgICAgICAg
ICAgIGlmIChlYykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKCEoYyA9PSAnXG4nICYmIGkgIT0gMCAmJiBwcmV2ID09ICdccicpKSB7
CisgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQobmV3IEhUTUxCUkVsZW1lbnQoZG9jdW1lbnQo
KSksIGVjKTsKKyAgICAgICAgICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHByZXYgPSBjOworICAgICAgICAgICAg
bGluZVN0YXJ0ID0gaSArIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGxlbmd0aCA+IGxpbmVT
dGFydCkKLSAgICAgICAgICAgIGFwcGVuZENoaWxkKG5ldyBUZXh0KGRvY3VtZW50KCksIHRleHQu
c3Vic3RyaW5nKGxpbmVTdGFydCwgbGVuZ3RoIC0gbGluZVN0YXJ0KSksIGVjKTsKKyAgICAgICAg
cHJldiA9IGM7CiAgICAgfQorICAgIGlmIChsZW5ndGggPiBsaW5lU3RhcnQpCisgICAgICAgIGFw
cGVuZENoaWxkKG5ldyBUZXh0KGRvY3VtZW50KCksIHRleHQuc3Vic3RyaW5nKGxpbmVTdGFydCwg
bGVuZ3RoIC0gbGluZVN0YXJ0KSksIGVjKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6c2V0T3V0
ZXJUZXh0KGNvbnN0IFN0cmluZyAmdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCkluZGV4OiBXZWJD
b3JlL2xvYWRlci9DYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmgJ
KHJldmlzaW9uIDE1NDYxKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNyArMjgsNiBAQAogI2RlZmluZSBDYWNoZV9oCiAKICNpbmNsdWRlICJDYWNoZVBv
bGljeS5oIgotI2luY2x1ZGUgIkRlcHJlY2F0ZWRQdHJMaXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcAkocmV2aXNpb24gMTU0NjEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyBSZW5k
ZXJPYmplY3QgKmxhc3RSZW5kZXJlck9uUHJldkwKIGJvb2wgUmVuZGVyVGV4dDo6YXRMaW5lV3Jh
cChJbmxpbmVUZXh0Qm94ICpib3gsIGludCBvZmZzZXQpCiB7CiAgICAgaWYgKGJveC0+bmV4dFRl
eHRCb3goKSAmJiAhYm94LT5uZXh0T25MaW5lKCkgJiYgb2Zmc2V0ID09IGJveC0+bV9zdGFydCAr
IGJveC0+bV9sZW4pIHsKLSAgICAgICAgaWYgKCFzdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSB8
fCAhYm94LT5pc0xpbmVCcmVhaygpKQorICAgICAgICBpZiAoc3R5bGUoKS0+cHJlc2VydmVOZXds
aW5lKCkgfHwgIWJveC0+aXNMaW5lQnJlYWsoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJ
KHJldmlzaW9uIDE1NDYxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29u
dHJvbDo6c3VidHJlZUhhc0NoYW5nZQogU3RyaW5nIFJlbmRlclRleHRDb250cm9sOjp0ZXh0KCkK
IHsKICAgICBpZiAobV9kaXYpCi0gICAgICAgIHJldHVybiBtX2Rpdi0+dGV4dENvbnRlbnQodHJ1
ZSkucmVwbGFjZSgnXFwnLCBiYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sKCkpOworICAgICAgICBy
ZXR1cm4gbV9kaXYtPnRleHRDb250ZW50KCkucmVwbGFjZSgnXFwnLCBiYWNrc2xhc2hBc0N1cnJl
bmN5U3ltYm9sKCkpOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIApJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvYmlkaS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5j
cHAJKHJldmlzaW9uIDE1NDYxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0NzYsNyArMjQ3Niw3IEBAIEJpZGlJdGVyYXRvciBSZW5kZXJCbG9jazo6
ZmluZE5leHRMaW5lQnIKIAogICAgIGlmIChsQnJlYWsgPT0gc3RhcnQgJiYgIWxCcmVhay5vYmot
PmlzQlIoKSkgewogICAgICAgICAvLyB3ZSBqdXN0IGFkZCBhcyBtdWNoIGFzIHBvc3NpYmxlCi0g
ICAgICAgIGlmIChzdHlsZSgpLT53aGl0ZVNwYWNlKCkgPT0gUFJFKSB7CisgICAgICAgIGlmIChz
dHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IERvbid0
IHJlYWxseSB1bmRlcnN0YW5kIHRoaXMgY2FzZS4KICAgICAgICAgICAgIGlmIChwb3MgIT0gMCkg
ewogICAgICAgICAgICAgICAgIGxCcmVhay5vYmogPSBvOwpJbmRleDogV2ViS2l0L1dlYlZpZXcv
V2ViSFRNTFZpZXcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9XZWJIVE1MVmlldy5t
CShyZXZpc2lvbiAxNTQ2MSkKKysrIFdlYktpdC9XZWJWaWV3L1dlYkhUTUxWaWV3Lm0JKHdvcmtp
bmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkICpfTlNTb2Z0TGlua2luZ0dldEZyYW1l
d29ya0Z1bmNQdHIoCiAKIEBpbnRlcmZhY2UgV2ViSFRNTFZpZXcgKFdlYkhUTUxWaWV3RmlsZUlu
dGVybmFsKQogLSAoQk9PTClfaW1hZ2VFeGlzdHNBdFBhdGhzOihOU0FycmF5ICopcGF0aHM7Ci0t
IChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDoo
TlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCBhbGxvd1BsYWluVGV4dDooQk9PTClhbGxvd1BsYWlu
VGV4dCBjaG9zZVBsYWluVGV4dDooQk9PTCAqKWNob3NlUGxhaW5UZXh0OworLSAoRE9NRG9jdW1l
bnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6KE5TUGFzdGVib2Fy
ZCAqKXBhc3RlYm9hcmQgaW5Db250ZXh0OihET01SYW5nZSAqKWNvbnRleHQgYWxsb3dQbGFpblRl
eHQ6KEJPT0wpYWxsb3dQbGFpblRleHQgY2hvc2VQbGFpblRleHQ6KEJPT0wgKiljaG9zZVBsYWlu
VGV4dDsKIC0gKE5TU3RyaW5nICopX3BsYWluVGV4dEZyb21QYXN0ZWJvYXJkOihOU1Bhc3RlYm9h
cmQgKilwYXN0ZWJvYXJkOwogLSAodm9pZClfcGFzdGVXaXRoUGFzdGVib2FyZDooTlNQYXN0ZWJv
YXJkICopcGFzdGVib2FyZCBhbGxvd1BsYWluVGV4dDooQk9PTClhbGxvd1BsYWluVGV4dDsKIC0g
KHZvaWQpX3Bhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFz
dGVib2FyZDsKQEAgLTM2Miw3ICszNjIsMTAgQEAgdm9pZCAqX05TU29mdExpbmtpbmdHZXRGcmFt
ZXdvcmtGdW5jUHRyKAogICAgIHJldHVybiBlbGVtZW50czsKIH0KIAotLSAoRE9NRG9jdW1lbnRG
cmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAq
KXBhc3RlYm9hcmQgYWxsb3dQbGFpblRleHQ6KEJPT0wpYWxsb3dQbGFpblRleHQgY2hvc2VQbGFp
blRleHQ6KEJPT0wgKiljaG9zZVBsYWluVGV4dAorLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9k
b2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5Db250ZXh0
OihET01SYW5nZSAqKWNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFsbG93UGxhaW5UZXh0OihCT09MKWFsbG93UGxhaW5UZXh0CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9zZVBsYWluVGV4dDooQk9PTCAqKWNob3Nl
UGxhaW5UZXh0CiB7CiAgICAgTlNBcnJheSAqdHlwZXMgPSBbcGFzdGVib2FyZCB0eXBlc107CiAg
ICAgKmNob3NlUGxhaW5UZXh0ID0gTk87CkBAIC00NjMsNyArNDY2LDggQEAgdm9pZCAqX05TU29m
dExpbmtpbmdHZXRGcmFtZXdvcmtGdW5jUHRyKAogICAgIAogICAgIGlmIChhbGxvd1BsYWluVGV4
dCAmJiBbdHlwZXMgY29udGFpbnNPYmplY3Q6TlNTdHJpbmdQYm9hcmRUeXBlXSkgewogICAgICAg
ICAqY2hvc2VQbGFpblRleHQgPSBZRVM7Ci0gICAgICAgIHJldHVybiBbW3NlbGYgX2JyaWRnZV0g
ZG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0OltwYXN0ZWJvYXJkIHN0cmluZ0ZvclR5cGU6TlNTdHJp
bmdQYm9hcmRUeXBlXV07CisgICAgICAgIHJldHVybiBbW3NlbGYgX2JyaWRnZV0gZG9jdW1lbnRG
cmFnbWVudFdpdGhUZXh0OltwYXN0ZWJvYXJkIHN0cmluZ0ZvclR5cGU6TlNTdHJpbmdQYm9hcmRU
eXBlXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluQ29u
dGV4dDpjb250ZXh0XTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIG5pbDsKQEAgLTUwOCw4ICs1
MTIsMTAgQEAgdm9pZCAqX05TU29mdExpbmtpbmdHZXRGcmFtZXdvcmtGdW5jUHRyKAogCiAtICh2
b2lkKV9wYXN0ZVdpdGhQYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkIGFsbG93
UGxhaW5UZXh0OihCT09MKWFsbG93UGxhaW5UZXh0CiB7CisgICAgRE9NUmFuZ2UgKnJhbmdlID0g
W3NlbGYgX3NlbGVjdGVkUmFuZ2VdOwogICAgIEJPT0wgY2hvc2VQbGFpblRleHQ7Ci0gICAgRE9N
RG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbc2VsZiBfZG9jdW1lbnRGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkOnBhc3RlYm9hcmQgYWxsb3dQbGFpblRleHQ6YWxsb3dQbGFpblRleHQgY2hvc2VQ
bGFpblRleHQ6JmNob3NlUGxhaW5UZXh0XTsKKyAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFn
bWVudCA9IFtzZWxmIF9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZAor
ICAgICAgICBpbkNvbnRleHQ6cmFuZ2UgYWxsb3dQbGFpblRleHQ6YWxsb3dQbGFpblRleHQgY2hv
c2VQbGFpblRleHQ6JmNob3NlUGxhaW5UZXh0XTsKICAgICBXZWJGcmFtZUJyaWRnZSAqYnJpZGdl
ID0gW3NlbGYgX2JyaWRnZV07CiAgICAgaWYgKGZyYWdtZW50ICYmIFtzZWxmIF9zaG91bGRJbnNl
cnRGcmFnbWVudDpmcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpbc2VsZiBfc2VsZWN0ZWRSYW5n
ZV0gZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZF0pIHsKICAgICAgICAgW2Jy
aWRnZSByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50OmZyYWdtZW50IHNlbGVjdFJlcGxhY2Vt
ZW50Ok5PIHNtYXJ0UmVwbGFjZTpbc2VsZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6
cGFzdGVib2FyZF0gbWF0Y2hTdHlsZTpjaG9zZVBsYWluVGV4dF07CkBAIC01NzM1LDkgKzU3NDEs
MTEgQEAgc3RhdGljIERPTVJhbmdlICp1bmlvbkRPTVJhbmdlcyhET01SYW5nZQogICAgIGlmIChb
c2VsZiBfY2FuUHJvY2Vzc0RyYWdXaXRoRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pIHsKICAg
ICAgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1Bh
c3RlYm9hcmRdOwogICAgICAgICBpZiAoW3NlbGYgX2lzTW92ZURyYWddIHx8IFtpbm5lckJyaWRn
ZSBpc0RyYWdDYXJldFJpY2hseUVkaXRhYmxlXSkgeyAKKyAgICAgICAgICAgIERPTVJhbmdlICpy
YW5nZSA9IFtpbm5lckJyaWRnZSBkcmFnQ2FyZXRET01SYW5nZV07CiAgICAgICAgICAgICBCT09M
IGNob3NlUGxhaW5UZXh0OwotICAgICAgICAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21l
bnQgPSBbc2VsZiBfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmQgYWxs
b3dQbGFpblRleHQ6WUVTIGNob3NlUGxhaW5UZXh0OiZjaG9zZVBsYWluVGV4dF07Ci0gICAgICAg
ICAgICBpZiAoZnJhZ21lbnQgJiYgW3NlbGYgX3Nob3VsZEluc2VydEZyYWdtZW50OmZyYWdtZW50
IHJlcGxhY2luZ0RPTVJhbmdlOltpbm5lckJyaWRnZSBkcmFnQ2FyZXRET01SYW5nZV0gZ2l2ZW5B
Y3Rpb246V2ViVmlld0luc2VydEFjdGlvbkRyb3BwZWRdKSB7CisgICAgICAgICAgICBET01Eb2N1
bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtzZWxmIF9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3Rl
Ym9hcmQ6cGFzdGVib2FyZAorICAgICAgICAgICAgICAgIGluQ29udGV4dDpyYW5nZSBhbGxvd1Bs
YWluVGV4dDpZRVMgY2hvc2VQbGFpblRleHQ6JmNob3NlUGxhaW5UZXh0XTsKKyAgICAgICAgICAg
IGlmIChmcmFnbWVudCAmJiBbc2VsZiBfc2hvdWxkSW5zZXJ0RnJhZ21lbnQ6ZnJhZ21lbnQgcmVw
bGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvbkRyb3Bw
ZWRdKSB7CiAgICAgICAgICAgICAgICAgW1t3ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3
ZWJWaWV3OndlYlZpZXcgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb246V2ViRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uRWRpdCBmb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXTsKICAgICAg
ICAgICAgICAgICBpZiAoW3NlbGYgX2lzTW92ZURyYWddKSB7CiAgICAgICAgICAgICAgICAgICAg
IEJPT0wgc21hcnRNb3ZlID0gW2lubmVyQnJpZGdlIHNlbGVjdGlvbkdyYW51bGFyaXR5XSA9PSBX
ZWJCcmlkZ2VTZWxlY3RCeVdvcmQgJiYgW3NlbGYgX2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJv
YXJkOnBhc3RlYm9hcmRdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>9518</attachid>
            <date>2006-07-16 21:32:35 -0700</date>
            <delta_ts>2006-07-19 08:36:56 -0700</delta_ts>
            <desc>a simple test file I&apos;ve been using</desc>
            <filename>textarea-spaces.html</filename>
            <type>text/html</type>
            <size>345</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KZnVuY3Rpb24gY2hlY2soKQp7CiAgICB2YXIgYXJlYSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJhcmVhIik7CiAgICB2YXIgdmFsdWUgPSBhcmVhLnZhbHVlOwogICAgdmFsdWUg
PSB2YWx1ZS5yZXBsYWNlKC8gL2csICcnKTsKICAgIGlmICh2YWx1ZS5sZW5ndGggIT0gMCkKICAg
ICAgICBhbGVydCh2YWx1ZS5sZW5ndGggKyAiIG5vbiBzcGFjZSBjaGFyYWN0ZXJzOiAiICsgdmFs
dWUpOwp9Cjwvc2NyaXB0Pgo8dGV4dGFyZWEgaWQ9ImFyZWEiPjwvdGV4dGFyZWE+CjxpbnB1dCB0
eXBlPSJidXR0b24iIHZhbHVlPSJsb29rIGZvciBub24tc3BhY2VzIiBvbmNsaWNrPSJjaGVjaygp
Ij4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9557</attachid>
            <date>2006-07-18 17:26:54 -0700</date>
            <delta_ts>2006-07-19 08:36:34 -0700</delta_ts>
            <desc>patch that&apos;s closer to done, but still some known problems</desc>
            <filename>PreWrapPatch.txt</filename>
            <type>text/plain</type>
            <size>62910</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNTUwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA4IEBACisyMDA2LTA3LTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXQVJO
SU5HOiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworICAgICAgICAtIHJlbW92ZWQg
c29tZSB1c2VzIG9mIERlcHJlY2F0ZWRQdHJMaXN0IGluIHRoZSBtYXJrdXAgY29kZQorCisgICAg
ICAgICogYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tOiAoLVtET01IVE1MRG9jdW1lbnQgY3JlYXRl
RG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0Ol0pOgorICAgICAgICBVcGRhdGVkIGNhbGwgdG8gcGFz
cyBhIHJhbmdlIC0tIGluIHRoaXMgY2FzZSBpdCBpcyB0aGUgcmFuZ2Ugb2YgdGhlIGVudGlyZSBk
b2N1bWVudCwKKyAgICAgICAgc28gdGhpcyB3aWxsIG5vdCBoYW5kbGUgdGhlIHdoaXRlc3BhY2Ug
cHJvcGVybHkuCisKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oOiBB
ZGRlZCByYW5nZSBjb250ZXh0IHBhcmFtZXRlciB0byB0aGUKKyAgICAgICAgZG9jdW1lbnRGcmFn
bWVudFdpdGhUZXh0OiBtZXRob2QsIHNvIHdlIGNhbiBoYW5kbGUgd2hpdGVzcGFjZSBwcm9wZXJs
eS4KKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbToKKyAgICAgICAg
KC1bV2ViQ29yZUZyYW1lQnJpZGdlIG5vZGVzRnJvbUxpc3Q6XSk6IENoYW5nZWQgZnJvbSBEZXBy
ZWNhdGVkUHRyTGlzdCB0byBWZWN0b3IuCisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRnZSBt
YXJrdXBTdHJpbmdGcm9tTm9kZTpub2RlczpdKTogRGl0dG8uCisgICAgICAgICgtW1dlYkNvcmVG
cmFtZUJyaWRnZSBtYXJrdXBTdHJpbmdGcm9tUmFuZ2U6bm9kZXM6XSk6IERpdHRvLgorICAgICAg
ICAoLVtXZWJDb3JlRnJhbWVCcmlkZ2UgZG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0OmluQ29udGV4
dDpdKTogQWRkZWQgcmFuZ2UgY29udGV4dAorICAgICAgICBwYXJhbWV0ZXIgLS0gcGFzcyBpdCBv
biB0byBjcmVhdGVGcmFnbWVudEZyb21UZXh0LgorICAgICAgICAoLVtXZWJDb3JlRnJhbWVCcmlk
Z2UgZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdyYXBoczpdKTogQ2hhbmdlZCBmcm9t
CisgICAgICAgIERlcHJlY2F0ZWRQdHJMaXN0IHRvIFZlY3Rvci4KKyAgICAgICAgKC1bV2ViQ29y
ZUZyYW1lQnJpZGdlIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dDpzZWxlY3RSZXBsYWNlbWVudDpz
bWFydFJlcGxhY2U6XSk6CisgICAgICAgIFBhc3MgdGhlIHJhbmdlIG9mIHRoZSBjdXJyZW50IHNl
bGVjdGlvbiBhcyBjb250ZXh0IHdoZW4gY3JlYXRpbmcgdGhlIGZyYWdtZW50LgorCisgICAgICAg
ICogZG9tL1Bvc2l0aW9uLmNwcDogKFdlYkNvcmU6OlBvc2l0aW9uOjppblJlbmRlcmVkVGV4dCk6
IFJlcGxhY2UgcmFuZ2UgY2hlY2sgd2l0aAorICAgICAgICBhIGNhbGwgdG8gdGhlIG5ldyBjb250
YWluc0NhcmV0T2Zmc2V0IGZ1bmN0aW9uIC0tIGhlbHBzIG1ha2UgdGhlIGNhcmV0IHdvcmsgcmln
aHQgd2hlbgorICAgICAgICBpdCBpc3MgcGFzdCB0aGUgZW5kIG9mIHRoZSBsYXN0IGxpbmUgaW4g
YSB0ZXh0YXJlYS4KKworICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5j
cHA6IChXZWJDb3JlOjpJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAg
VXNlIGEgdGV4dCBub2RlIGluc3RlYWQgb2YgYSBicmVhayBlbGVtZW50IHdoZW4gaW5zZXJ0aW5n
IGFuZCB0aGUgc3R5bGUgaXMgcHJlc2VydmVOZXdsaW5lLgorCisgICAgICAgICogZWRpdGluZy9K
U0VkaXRvci5jcHA6IChXZWJDb3JlOjpleGVjUmVtb3ZlRm9ybWF0KTogUGFzcyB0aGUgc2VsZWN0
aW9uIHJhbmdlCisgICAgICAgIHRvIGNyZWF0ZUZyYWdtZW50RnJvbVRleHQuCisKKyAgICAgICAg
KiBlZGl0aW5nL1JlYmFsYW5jZVdoaXRlc3BhY2VDb21tYW5kLmNwcDogKFdlYkNvcmU6OlJlYmFs
YW5jZVdoaXRlc3BhY2VDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgRG8gbm90aGluZyBpZiB0
aGUgbW9kZSBpcyBub3Qgb25lIHRoYXQgY29sbGFwc2VzIHdoaXRlc3BhY2UuCisKKyAgICAgICAg
KiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmg6IFJlbW92ZWQgdW51c2VkIGRlc3Ry
dWN0b3IsIHR5cGUsIGlzU2luZ2xlVGV4dE5vZGUsCisgICAgICAgIGlzVHJlZUZyYWdtZW50LCBt
X3R5cGUsIGFuZCBhZGRlZCBhIGNvbnRleHQgcGFyYW1ldGVyIHRvIGluZXJ0RnJhZ21lbnRGb3JU
ZXN0UmVuZGVyaW5nLgorICAgICAgICBBbHNvIGNoYW5nZWQgdGhlIGNvbnN0cnVjdG9yIHRvIHRh
a2UgYSBzZWxlY3Rpb24gcmF0aGVyIHRoYW4gYSBwb2ludGVyIHRvIHRoZSByb290CisgICAgICAg
IGVkaXRhYmxlIGVsZW1lbnQuCisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlbWVudEZyYWdtZW50OjpSZXBsYWNl
bWVudEZyYWdtZW50KTogUmVtb3ZlZCBjb2RlIHRvIHNldCB1cCBtX3R5cGUuCisgICAgICAgIENv
bXB1dGUgcm9vdCBlZGl0YWJsZSBlbGVtZW50IGZyb20gcGFzc2VkLWluIHNlbGVjdGlvbi4gVXNl
ZCB0aGUgc3RhcnQgb2YgdGhlIHNlbGVjdGlvbgorICAgICAgICBhcyBhIGJhc2Ugbm9kZSBmb3Ig
c3R5bGUgcHVycG9zZXMgZm9yIHRoZSB0ZXN0IHJlbmRlcmluZy4gUmVtb3ZlZCB0aGUgc3BlY2lh
bCBjYXNlCisgICAgICAgICJzaW5nbGUgdGV4dCBub2RlIiBhbHRlcm5hdGl2ZSB0byBjcmVhdGVG
cmFnbWVudEZyb21UZXh0IGluIHRoZSBwbGFpbiB0ZXh0IGNhc2UsIHNpbmNlCisgICAgICAgIGNy
ZWF0ZUZyYWdtZW50RnJvbVRleHQgbm93IGhhbmRsZXMgdGhhdCBjb3JyZWN0bHkuCisgICAgICAg
IChXZWJDb3JlOjpSZXBsYWNlbWVudEZyYWdtZW50OjppbnNlcnRGcmFnbWVudEZvclRlc3RSZW5k
ZXJpbmcpOiBDb3B5IHRoZSB3aGl0ZXNwYWNlCisgICAgICAgIHByb3BlcnR5IGZyb20gdGhlIHNv
dXJjZSBsb2NhdGlvbiB3aGVuIGNyZWF0aW5nIGEgdGVtcG9yYXJ5IGVsZW1lbnQgZm9yIHRlc3Qg
cmVuZGVyaW5nLgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRv
QXBwbHkpOiBVcGRhdGUgZm9yIFJlcGxhY2VtZW50RnJhZ21lbnQgY2hhbmdlcywKKyAgICAgICAg
YW5kIGFsc28gdXNlIHNwYWNlcyBpbnN0ZWFkIG9mIG5vbi1icmVha2luZyBzcGFjZXMgd2hlbiBk
b2luZyBzbWFydCBwYXN0ZSBpZiB0aGUKKyAgICAgICAgY29udGV4dCBpcyBvbmUgd2hlcmUgd2Ug
ZG8gbm90IGNvbGxhcHNlIHdoaXRlIHNwYWNlLgorCisgICAgICAgICogZWRpdGluZy9tYXJrdXAu
aDogVXNlIFZlY3RvciBpbnN0ZWFkIG9mIERlcHJlY2F0ZWRQdHJMaXN0LiBDaGFuZ2UgdGhlCisg
ICAgICAgIGNyZWF0ZUZyYWdtZW50RnJvbVRleHQgZnVuY3Rpb24gdG8gdGFrZSBhIHJhbmdlIGZv
ciBjb250ZXh0IGluc3RlYWQgb2YgYSBkb2N1bWVudC4KKyAgICAgICAgKiBlZGl0aW5nL21hcmt1
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJrdXApOiBVc2UgVmVjdG9yIGluc3RlYWQgb2Yg
RGVwcmVjYXRlZFB0ckxpc3QuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXJrdXApOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhcmFncmFwaENvbnRlbnRzRnJvbVN0cmluZyk6
IFJlbW92ZSB1bm5lZWRlZCBkb2N1bWVudCBwYXJhbWV0ZXIKKyAgICAgICAgYW5kIGNoYW5nZWQg
YSBjb3VwbGUgcGxhY2VzIHRvIHVzZSBpc0VtcHR5IGluc3RlYWQgb2YgY29tcGFyaW5nIHdpdGgg
IiIuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21UZXh0KTogR2l2ZW4gdGhl
IG5ldyBjb250ZXh0IHBhcmFtZXRlciwgaWYgdGhlIGNvbnRleHQKKyAgICAgICAgaXMgb25lIHRo
YXQgcHJlc2VydmVzIG5ld2xpbmVzLCB0aGVuIHVzZSAiXG4iIGluc3RlYWQgb2YgPGJyPiBlbGVt
ZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbU5vZGVzKTogVXNlIFZl
Y3RvciBpbnN0ZWFkIG9mIERlcHJlY2F0ZWRQdHJMaXN0LgorCisgICAgICAgICogaHRtbC9IVE1M
RWxlbWVudC5jcHA6IChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0KTogRG8gbm90
IHVzZSA8YnI+CisgICAgICAgIGVsZW1lbnRzIGlmIHRoZSBjb250ZXh0IG9mIHRoaXMgbm9kZSBp
cyBvbmUgd2hlcmUgd2UgcHJlc2VydmUgbmV3bGluZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDog
KFdlYkNvcmU6OklubGluZVRleHRCb3g6OmNvbnRhaW5zQ2FyZXRPZmZzZXQpOgorICAgICAgICBB
ZGRlZC4gSW1wbGVtZW50cyB0aGUgYXBwcm9wcmlhdGUgcnVsZSBmb3IgZGV0ZXJtaW5pbmcgaWYg
YSBjYXJldCBwb3NpdGlvbiBpcworICAgICAgICBpbiB0aGlzIGxpbmUgb3Igbm90LiBSZXR1cm5z
IHRydWUgZm9yIGJvdGggb25lIGxpbmUgYW5kIHRoZSBuZXh0IGluIGNhc2VzIHdoZXJlCisgICAg
ICAgIGFmZmluaXR5IG11c3QgYmUgY29uc2lkZXJlZCB0byBkZXRlcm1pbmUgd2hpY2ggbGluZSB0
aGUgY2FyZXQgaXMgb24uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOiBNYWtl
IGF0TGluZVdyYXAgbm8gbG9uZ2VyIGJlIGEgbWVtYmVyIGZ1bmN0aW9uLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmF0TGluZVdyYXApOiBS
ZW1vdmUgc3BlY2lhbCBydWxlIGFib3V0IHByZXNlcnZlTmV3bGluZSBhbmQgaXNMaW5lQnJlYWss
CisgICAgICAgIHdoaWNoIHdpbGwgbm8gbG9uZ2VyIGFwcGx5IGR1ZSB0byB0aGUgbmV3IGNvbnRh
aW5zQ2FyZXRPZmZzZXQgZnVuY3Rpb24gbG9naWMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0OjpjYXJldFJlY3QpOiBVc2UgY29udGFpbnNDYXJldE9mZnNldC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHQ6OmlubGluZUJveCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250
cm9sOjp1cGRhdGVGcm9tRWxlbWVudCk6IEFkZCBhIDxicj4gYWZ0ZXIgc2V0dGluZyB0aGUKKyAg
ICAgICAgdGV4dCB0byBwcmV2ZW50IHRoZSAiXG4iIGEgdGhlIGVuZCBvZiB0aGUgdGV4dCBmcm9t
IGNvbGxhcHNpbmcuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6dGV4dCk6
IENhbGwgdGV4dENvbnRlbnQgd2l0aCB0aGUgcGFyYW1ldGVyIGZhbHNlCisgICAgICAgIHNvIGl0
IHdpbGwgbm90IGluY2x1ZGUgbmV3bGluZXMgZm9yIDxicj4gZWxlbWVudHMuIE5vdyB0aGUgb25s
eSA8YnI+IGVsZW1lbnQKKyAgICAgICAgdGhhdCB3aWxsIGV2ZXIgYmUgaW4gdGhlIHNoYWRvdyBE
T00gdHJlZSBpcyB0aGUgb25lIHRvIHByZXZlbnQgY29sbGFwc2luZywgYW5kCisgICAgICAgIHRo
YXQgb25lIHNob3VsZCBub3Qgc2hvdyB1cCBpbiB0aGUgdGV4dCB2YWx1ZS4KKworICAgICAgICAq
IHJlbmRlcmluZy9iaWRpLmNwcDogKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpmaW5kTmV4dExpbmVC
cmVhayk6IFRvb2sgYSBydWxlCisgICAgICAgIHRoYXQgc3BlY2lmaWNhbGx5IGNhbGxlZCBvdXQg
dGhlIHByZSB3aGl0ZXNwYWNlIG1vZGUgYW5kIG1hZGUgaXQgd29yayBmb3IgYWxsCisgICAgICAg
IHRoZSBtb2RlcyB0aGF0IHByZXNlcnZlIG5ld2xpbmVzLiBUaGlzIG1ha2VzIHN1cmUgd2UgZ2V0
IGEgbGFzdCBsaW5lIGJveCBmb3IKKyAgICAgICAgdGV4dCBhZnRlciB0aGUgbGFzdCAiXG4iIGV2
ZW4gaW4gY2FzZXMgd2hlcmUgdGhlcmUgaXMgbm8gPGJyPiBhZnRlcndhcmQuCisKKyAgICAgICAg
KiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6Zml4dXBXaGl0ZXNwYWNlKToKKyAgICAgICAgKiBlZGl0
aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgIEFk
ZGVkIGFzc2VydGlvbnMgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGRvIGFueXRoaW5nIHdoZW4gd2Un
cmUgbm90IGNvbGxhcHNpbmcKKyAgICAgICAgd2hpdGVzcGFjZS4KKworICAgICAgICAqIGVkaXRp
bmcvSFRNTEludGVyY2hhbmdlLmNwcDogUmVtb3ZlZCBvYnNvbGV0ZSBjb21tZW50LgorCisgICAg
ICAgICogbG9hZGVyL0NhY2hlLmg6IFJlbW92ZWQgYSBzdHJheSBpbmNsdWRlLgorCiAyMDA2LTA3
LTE4ICBNaXR6IFBldHRlbCAgPG9wZW5kYXJ3aW4ub3JnQG1pdHpwZXR0ZWwuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEp1c3Rpbi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTUwMikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NDI1LDYgKzY0MjUsNyBA
QAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQz
MDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2pl
Y3QgIldlYkNvcmUiICovOworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsK
IAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0gKAogCQkJ
CUVuZ2xpc2gsCkBAIC02NDM4LDYgKzY0MzksNyBAQAogCQkJbWFpbkdyb3VwID0gMDg2N0Q2OTFG
RTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdCAqLzsKIAkJCXByb2R1Y3RSZWZHcm91cCA9IDAzNDc2
OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLzsKIAkJCXByb2plY3REaXJQYXRoID0g
IiI7CisJCQlzaG91bGRDaGVja0NvbXBhdGliaWxpdHkgPSAxOwogCQkJdGFyZ2V0cyA9ICgKIAkJ
CQk5M0YxOThBNTA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZSAqLywKIAkJCQlERDA0MUZCRTA5
RDlEREJFMDAxMEFGMkEgLyogRGVyaXZlZCBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTUhUTUwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTUhUTUwubW0JKHJldmlzaW9uIDE1NTAyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TUhUTUwubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDIyICsyNiwyMyBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJET01IVE1MLmgiCiAKKyNpbXBvcnQgIkRPTUV4dGVuc2lvbnMuaCIK
ICNpbXBvcnQgIkRPTUhUTUxJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKICNp
bXBvcnQgIkRPTVByaXZhdGUuaCIKLSNpbXBvcnQgIkRPTUV4dGVuc2lvbnMuaCIKICNpbXBvcnQg
IkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKKyNpbXBv
cnQgIkZyYW1lVmlldy5oIgogI2ltcG9ydCAiSFRNTEFwcGxldEVsZW1lbnQuaCIKICNpbXBvcnQg
IkhUTUxBcmVhRWxlbWVudC5oIgorI2ltcG9ydCAiSFRNTEJSRWxlbWVudC5oIgogI2ltcG9ydCAi
SFRNTEJhc2VFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MQmFzZUZvbnRFbGVtZW50LmgiCiAjaW1w
b3J0ICJIVE1MQm9keUVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxCUkVsZW1lbnQuaCIKICNpbXBv
cnQgIkhUTUxCdXR0b25FbGVtZW50LmgiCisjaW1wb3J0ICJIVE1MRExpc3RFbGVtZW50LmgiCiAj
aW1wb3J0ICJIVE1MRGlyZWN0b3J5RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTERpdkVsZW1lbnQu
aCIKLSNpbXBvcnQgIkhUTUxETGlzdEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxEb2N1bWVudC5o
IgogI2ltcG9ydCAiSFRNTEVtYmVkRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEZpZWxkU2V0RWxl
bWVudC5oIgpAQCAtNDksNDcgKzUwLDQ3IEBACiAjaW1wb3J0ICJIVE1MRm9ybUNvbGxlY3Rpb24u
aCIKICNpbXBvcnQgIkhUTUxGb3JtRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEZyYW1lU2V0RWxl
bWVudC5oIgorI2ltcG9ydCAiSFRNTEhSRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEhlYWRFbGVt
ZW50LmgiCiAjaW1wb3J0ICJIVE1MSGVhZGluZ0VsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxIUkVs
ZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxIdG1sRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTElGcmFt
ZUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxJ
c0luZGV4RWxlbWVudC5oIgorI2ltcG9ydCAiSFRNTExJRWxlbWVudC5oIgogI2ltcG9ydCAiSFRN
TExhYmVsRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTExlZ2VuZEVsZW1lbnQuaCIKLSNpbXBvcnQg
IkhUTUxMSUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxMaW5rRWxlbWVudC5oIgogI2ltcG9ydCAi
SFRNTE1hcEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxNZW51RWxlbWVudC5oIgogI2ltcG9ydCAi
SFRNTE1ldGFFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKLSNpbXBvcnQgIkhUTUxP
YmplY3RFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MT0xpc3RFbGVtZW50LmgiCisjaW1wb3J0ICJI
VE1MT2JqZWN0RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE9wdEdyb3VwRWxlbWVudC5oIgogI2lt
cG9ydCAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxPcHRpb25zQ29sbGVjdGlv
bi5oIgotI2ltcG9ydCAiSFRNTFBhcmFtRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTFBhcmFncmFw
aEVsZW1lbnQuaCIKKyNpbXBvcnQgIkhUTUxQYXJhbUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxQ
cmVFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MU2NyaXB0RWxlbWVudC5oIgogI2ltcG9ydCAiSFRN
TFNlbGVjdEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxTdHlsZUVsZW1lbnQuaCIKLSNpbXBvcnQg
IkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUYWJsZUNhcHRpb25FbGVtZW50Lmgi
CiAjaW1wb3J0ICJIVE1MVGFibGVDZWxsRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTFRhYmxlQ29s
RWxlbWVudC5oIgorI2ltcG9ydCAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTFRh
YmxlUm93RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaCIKICNp
bXBvcnQgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUaXRsZUVsZW1lbnQu
aCIKICNpbXBvcnQgIkhUTUxVTGlzdEVsZW1lbnQuaCIKKyNpbXBvcnQgIktVUkwuaCIKICNpbXBv
cnQgIk5hbWVOb2RlTGlzdC5oIgotI2ltcG9ydCAibWFya3VwLmgiCisjaW1wb3J0ICJSYW5nZS5o
IgogI2ltcG9ydCAiUmVuZGVyVGV4dENvbnRyb2wuaCIKLSNpbXBvcnQgIkZyYW1lVmlldy5oIgog
I2ltcG9ydCAiY3NzaGVscGVyLmgiCi0jaW1wb3J0ICJLVVJMLmgiCisjaW1wb3J0ICJtYXJrdXAu
aCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwpAQCAtNjA1LDcgKzYwNiw4IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIC0gKERP
TURvY3VtZW50RnJhZ21lbnQgKiljcmVhdGVEb2N1bWVudEZyYWdtZW50V2l0aFRleHQ6KE5TU3Ry
aW5nICopdGV4dAogewotICAgIHJldHVybiBbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRG
cmFnbWVudFdpdGg6Y3JlYXRlRnJhZ21lbnRGcm9tVGV4dChbc2VsZiBfZG9jdW1lbnRdLCBEZXBy
ZWNhdGVkU3RyaW5nOjpmcm9tTlNTdHJpbmcodGV4dCkpLmdldCgpXTsKKyAgICAvLyBGSVhNRTog
U2luY2UgdGhpcyBpcyBub3QgYSBjb250ZXh0dWFsIGZyYWdtZW50LCBpdCB3b24ndCBoYW5kbGUg
d2hpdGVzcGFjZSBwcm9wZXJseS4KKyAgICByZXR1cm4gW0RPTURvY3VtZW50RnJhZ21lbnQgX2Rv
Y3VtZW50RnJhZ21lbnRXaXRoOmNyZWF0ZUZyYWdtZW50RnJvbVRleHQoW3NlbGYgX2RvY3VtZW50
XS0+Y3JlYXRlUmFuZ2UoKS5nZXQoKSwgdGV4dCkuZ2V0KCldOwogfQogCiBAZW5kCkluZGV4OiBX
ZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oCShyZXZpc2lvbiAxNTUwMikKKysr
IFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNDE4LDcgKzQxOCw3IEBAIHR5cGVkZWYgZW51bSB7CiAtIChOU1JhbmdlKWNvbnZlcnRET01S
YW5nZVRvTlNSYW5nZTooRE9NUmFuZ2UgKilyYW5nZTsKIAogLSAoRE9NRG9jdW1lbnRGcmFnbWVu
dCAqKWRvY3VtZW50RnJhZ21lbnRXaXRoTWFya3VwU3RyaW5nOihOU1N0cmluZyAqKW1hcmt1cFN0
cmluZyBiYXNlVVJMU3RyaW5nOihOU1N0cmluZyAqKWJhc2VVUkxTdHJpbmc7Ci0tIChET01Eb2N1
bWVudEZyYWdtZW50ICopZG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQ7
CistIChET01Eb2N1bWVudEZyYWdtZW50ICopZG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0OihOU1N0
cmluZyAqKXRleHQgaW5Db250ZXh0OihET01SYW5nZSAqKWNvbnRleHQ7CiAtIChET01Eb2N1bWVu
dEZyYWdtZW50ICopZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdyYXBoczooTlNBcnJh
eSAqKW5vZGVzOwogCiAtICh2b2lkKXJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQ6KERPTURv
Y3VtZW50RnJhZ21lbnQgKilmcmFnbWVudCBzZWxlY3RSZXBsYWNlbWVudDooQk9PTClzZWxlY3RS
ZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlIG1hdGNoU3R5bGU6KEJP
T0wpbWF0Y2hTdHlsZTsKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlk
Z2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRn
ZS5tbQkocmV2aXNpb24gMTU1MDIpCisrKyBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1l
QnJpZGdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NzEsMTkgKzc3MSwxOSBAQCBzdGF0aWMgaW5s
aW5lIFdlYkNvcmVGcmFtZUJyaWRnZSAqYnJpZGdlCiAgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3Vt
ZW50VHlwZVN0cmluZygpICsgbWFya3VwU3RyaW5nOwogfQogCi0tIChOU0FycmF5ICopbm9kZXNG
cm9tTGlzdDooRGVwcmVjYXRlZFB0ckxpc3Q8Tm9kZT4gKilub2RlTGlzdAorLSAoTlNBcnJheSAq
KW5vZGVzRnJvbUxpc3Q6KFZlY3RvcjxOb2RlKj4gKilub2Rlc1ZlY3RvcgogewotICAgIE5TTXV0
YWJsZUFycmF5ICpub2RlcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpub2Rl
TGlzdC0+Y291bnQoKV07Ci0gICAgZm9yIChEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPE5vZGU+
IGkoKm5vZGVMaXN0KTsgaS5jdXJyZW50KCk7ICsraSkKLSAgICAgICAgW25vZGVzIGFkZE9iamVj
dDpbRE9NTm9kZSBfbm9kZVdpdGg6aS5jdXJyZW50KCldXTsKLQorICAgIHNpemVfdCBzaXplID0g
bm9kZXNWZWN0b3ItPnNpemUoKTsKKyAgICBOU011dGFibGVBcnJheSAqbm9kZXMgPSBbTlNNdXRh
YmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2l6ZV07CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpCisgICAgICAgIFtub2RlcyBhZGRPYmplY3Q6W0RPTU5vZGUgX25vZGVX
aXRoOigqbm9kZXNWZWN0b3IpW2ldXV07CiAgICAgcmV0dXJuIG5vZGVzOwogfQogCiAtIChOU1N0
cmluZyAqKW1hcmt1cFN0cmluZ0Zyb21Ob2RlOihET01Ob2RlICopbm9kZSBub2RlczooTlNBcnJh
eSAqKilub2RlcwogewogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5ldmVyICJmb3IgaW50ZXJjaGFu
Z2UiLiBJcyB0aGF0IHJpZ2h0PyBTZWUgdGhlIG5leHQgbWV0aG9kLgotICAgIERlcHJlY2F0ZWRQ
dHJMaXN0PE5vZGU+IG5vZGVMaXN0OworICAgIFZlY3RvcjxOb2RlKj4gbm9kZUxpc3Q7CiAgICAg
TlNTdHJpbmcgKm1hcmt1cFN0cmluZyA9IGNyZWF0ZU1hcmt1cChbbm9kZSBfbm9kZV0sIEluY2x1
ZGVOb2RlLCBub2RlcyA/ICZub2RlTGlzdCA6IDApLmdldE5TU3RyaW5nKCk7CiAgICAgaWYgKG5v
ZGVzKQogICAgICAgICAqbm9kZXMgPSBbc2VsZiBub2Rlc0Zyb21MaXN0OiZub2RlTGlzdF07CkBA
IC03OTQsNyArNzk0LDcgQEAgc3RhdGljIGlubGluZSBXZWJDb3JlRnJhbWVCcmlkZ2UgKmJyaWRn
ZQogLSAoTlNTdHJpbmcgKiltYXJrdXBTdHJpbmdGcm9tUmFuZ2U6KERPTVJhbmdlICopcmFuZ2Ug
bm9kZXM6KE5TQXJyYXkgKiopbm9kZXMKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhbHdheXMg
ImZvciBpbnRlcmNoYW5nZSIuIElzIHRoYXQgcmlnaHQ/IFNlZSB0aGUgcHJldmlvdXMgbWV0aG9k
LgotICAgIERlcHJlY2F0ZWRQdHJMaXN0PE5vZGU+IG5vZGVMaXN0OworICAgIFZlY3RvcjxOb2Rl
Kj4gbm9kZUxpc3Q7CiAgICAgTlNTdHJpbmcgKm1hcmt1cFN0cmluZyA9IGNyZWF0ZU1hcmt1cChb
cmFuZ2UgX3JhbmdlXSwgbm9kZXMgPyAmbm9kZUxpc3QgOiAwLCBBbm5vdGF0ZUZvckludGVyY2hh
bmdlKS5nZXROU1N0cmluZygpOwogICAgIGlmIChub2RlcykKICAgICAgICAgKm5vZGVzID0gW3Nl
bGYgbm9kZXNGcm9tTGlzdDombm9kZUxpc3RdOwpAQCAtMTk0MSwyOCArMTk0MSwyMyBAQCBzdGF0
aWMgSFRNTEZvcm1FbGVtZW50ICpmb3JtRWxlbWVudEZyb21ECiAgICAgICAgIERlcHJlY2F0ZWRT
dHJpbmc6OmZyb21OU1N0cmluZyhtYXJrdXBTdHJpbmcpLCBEZXByZWNhdGVkU3RyaW5nOjpmcm9t
TlNTdHJpbmcoYmFzZVVSTFN0cmluZykpLmdldCgpXTsKIH0KIAotLSAoRE9NRG9jdW1lbnRGcmFn
bWVudCAqKWRvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0CistIChET01E
b2N1bWVudEZyYWdtZW50ICopZG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0OihOU1N0cmluZyAqKXRl
eHQgaW5Db250ZXh0OihET01SYW5nZSAqKWNvbnRleHQKIHsKLSAgICBpZiAoIW1fZnJhbWUgfHwg
IW1fZnJhbWUtPmRvY3VtZW50KCkgfHwgIXRleHQpCi0gICAgICAgIHJldHVybiAwOwotICAgIAot
ICAgIHJldHVybiBbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRGcmFnbWVudFdpdGg6Y3Jl
YXRlRnJhZ21lbnRGcm9tVGV4dChtX2ZyYW1lLT5kb2N1bWVudCgpLCBEZXByZWNhdGVkU3RyaW5n
Ojpmcm9tTlNTdHJpbmcodGV4dCkpLmdldCgpXTsKKyAgICByZXR1cm4gW0RPTURvY3VtZW50RnJh
Z21lbnQgX2RvY3VtZW50RnJhZ21lbnRXaXRoOmNyZWF0ZUZyYWdtZW50RnJvbVRleHQoW2NvbnRl
eHQgX3JhbmdlXSwgRGVwcmVjYXRlZFN0cmluZzo6ZnJvbU5TU3RyaW5nKHRleHQpKS5nZXQoKV07
CiB9CiAKIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilkb2N1bWVudEZyYWdtZW50V2l0aE5vZGVz
QXNQYXJhZ3JhcGhzOihOU0FycmF5ICopbm9kZXMKIHsKLSAgICBOU0VudW1lcmF0b3IgKm5vZGVF
bnVtID0gW25vZGVzIG9iamVjdEVudW1lcmF0b3JdOwotICAgIERPTU5vZGUgKm5vZGU7Ci0gICAg
RGVwcmVjYXRlZFB0ckxpc3Q8Tm9kZT4gbm9kZUxpc3Q7Ci0gICAgCiAgICAgaWYgKCFtX2ZyYW1l
IHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICB3
aGlsZSAoKG5vZGUgPSBbbm9kZUVudW0gbmV4dE9iamVjdF0pKSB7Ci0gICAgICAgIG5vZGVMaXN0
LmFwcGVuZChbbm9kZSBfbm9kZV0pOwotICAgIH0KKyAgICBOU0VudW1lcmF0b3IgKm5vZGVFbnVt
ID0gW25vZGVzIG9iamVjdEVudW1lcmF0b3JdOworICAgIFZlY3RvcjxOb2RlKj4gbm9kZXNWZWN0
b3I7CisgICAgRE9NTm9kZSAqbm9kZTsKKyAgICB3aGlsZSAoKG5vZGUgPSBbbm9kZUVudW0gbmV4
dE9iamVjdF0pKQorICAgICAgICBub2Rlc1ZlY3Rvci5hcHBlbmQoW25vZGUgX25vZGVdKTsKICAg
ICAKLSAgICByZXR1cm4gW0RPTURvY3VtZW50RnJhZ21lbnQgX2RvY3VtZW50RnJhZ21lbnRXaXRo
OmNyZWF0ZUZyYWdtZW50RnJvbU5vZGVMaXN0KG1fZnJhbWUtPmRvY3VtZW50KCksIG5vZGVMaXN0
KS5nZXQoKV07CisgICAgcmV0dXJuIFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdt
ZW50V2l0aDpjcmVhdGVGcmFnbWVudEZyb21Ob2RlcyhtX2ZyYW1lLT5kb2N1bWVudCgpLCBub2Rl
c1ZlY3RvcikuZ2V0KCldOwogfQogCiAtICh2b2lkKXJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21l
bnQ6KERPTURvY3VtZW50RnJhZ21lbnQgKilmcmFnbWVudCBzZWxlY3RSZXBsYWNlbWVudDooQk9P
TClzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlIG1hdGNo
U3R5bGU6KEJPT0wpbWF0Y2hTdHlsZQpAQCAtMTk4OSw3ICsxOTg0LDkgQEAgc3RhdGljIEhUTUxG
b3JtRWxlbWVudCAqZm9ybUVsZW1lbnRGcm9tRAogCiAtICh2b2lkKXJlcGxhY2VTZWxlY3Rpb25X
aXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0IHNlbGVjdFJlcGxhY2VtZW50OihCT09MKXNlbGVjdFJl
cGxhY2VtZW50IHNtYXJ0UmVwbGFjZTooQk9PTClzbWFydFJlcGxhY2UKIHsKLSAgICBbc2VsZiBy
ZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50OltzZWxmIGRvY3VtZW50RnJhZ21lbnRXaXRoVGV4
dDp0ZXh0XSBzZWxlY3RSZXBsYWNlbWVudDpzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6
c21hcnRSZXBsYWNlIG1hdGNoU3R5bGU6WUVTXTsKKyAgICBbc2VsZiByZXBsYWNlU2VsZWN0aW9u
V2l0aEZyYWdtZW50OltzZWxmIGRvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDp0ZXh0CisgICAgICAg
IGluQ29udGV4dDpbRE9NUmFuZ2UgX3JhbmdlV2l0aDptX2ZyYW1lLT5zZWxlY3Rpb24oKS50b1Jh
bmdlKCkuZ2V0KCldXQorICAgICAgICBzZWxlY3RSZXBsYWNlbWVudDpzZWxlY3RSZXBsYWNlbWVu
dCBzbWFydFJlcGxhY2U6c21hcnRSZXBsYWNlIG1hdGNoU3R5bGU6WUVTXTsKIH0KIAogLSAoYm9v
bCljYW5JbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbApJbmRleDogV2ViQ29yZS9kb20vUG9zaXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkocmV2aXNpb24g
MTU1MDIpCisrKyBXZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
Miw3ICs0ODIsNyBAQCBib29sIFBvc2l0aW9uOjppblJlbmRlcmVkVGV4dCgpIGNvbnN0CiAgICAg
ICAgICAgICAvLyBub3QgcmVuZGVyZWQuIFJldHVybiBmYWxzZS4KICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBpZiAob2Zmc2V0KCkgPj0gYm94LT5tX3N0YXJ0
ICYmIG9mZnNldCgpIDw9IGJveC0+bV9zdGFydCArIGJveC0+bV9sZW4pCisgICAgICAgIGlmIChi
b3gtPmNvbnRhaW5zQ2FyZXRPZmZzZXQob2Zmc2V0KCkpKQogICAgICAgICAgICAgLy8gUmV0dXJu
IGZhbHNlIGZvciBvZmZzZXRzIGluc2lkZSBjb21wb3NlZCBjaGFyYWN0ZXJzLgogICAgICAgICAg
ICAgcmV0dXJuIG9mZnNldCgpID09IDAgfHwgb2Zmc2V0KCkgPT0gdGV4dFJlbmRlcmVyLT5uZXh0
T2Zmc2V0KHRleHRSZW5kZXJlci0+cHJldmlvdXNPZmZzZXQob2Zmc2V0KCkpKTsKICAgICB9Cklu
ZGV4OiBXZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lv
biAxNTUwMikKKysrIFdlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzk1LDExICszOTUsMTMgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25D
b21tYW5kOjpmaXh1cFdoaXRlcwogICAgIHVwZGF0ZUxheW91dCgpOwogICAgIC8vIEZJWE1FOiBp
c1JlbmRlcmVkQ2hhcmFjdGVyIHNob3VsZCBiZSByZW1vdmVkLCBhbmQgd2Ugc2hvdWxkIHVzZSBW
aXNpYmxlUG9zaXRpb246OmNoYXJhY3RlckFmdGVyIGFuZCBWaXNpYmxlUG9zaXRpb246OmNoYXJh
Y3RlckJlZm9yZQogICAgIGlmIChtX2xlYWRpbmdXaGl0ZXNwYWNlLmlzTm90TnVsbCgpICYmICFt
X2xlYWRpbmdXaGl0ZXNwYWNlLmlzUmVuZGVyZWRDaGFyYWN0ZXIoKSkgewotICAgICAgICBUZXh0
ICp0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQgKj4obV9sZWFkaW5nV2hpdGVzcGFjZS5ub2Rl
KCkpOworICAgICAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQqPihtX2xlYWRp
bmdXaGl0ZXNwYWNlLm5vZGUoKSk7CisgICAgICAgIEFTU0VSVCghdGV4dE5vZGUtPnJlbmRlcmVy
KCkgfHwgdGV4dE5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgp
KTsKICAgICAgICAgcmVwbGFjZVRleHRJbk5vZGUodGV4dE5vZGUsIG1fbGVhZGluZ1doaXRlc3Bh
Y2Uub2Zmc2V0KCksIDEsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CiAgICAgfQogICAgIGlm
IChtX3RyYWlsaW5nV2hpdGVzcGFjZS5pc05vdE51bGwoKSAmJiAhbV90cmFpbGluZ1doaXRlc3Bh
Y2UuaXNSZW5kZXJlZENoYXJhY3RlcigpKSB7Ci0gICAgICAgIFRleHQgKnRleHROb2RlID0gc3Rh
dGljX2Nhc3Q8VGV4dCAqPihtX3RyYWlsaW5nV2hpdGVzcGFjZS5ub2RlKCkpOworICAgICAgICBU
ZXh0KiB0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQqPihtX3RyYWlsaW5nV2hpdGVzcGFjZS5u
b2RlKCkpOworICAgICAgICBBU1NFUlQoIXRleHROb2RlLT5yZW5kZXJlcigpIHx8dGV4dE5vZGUt
PnJlbmRlcmVyKCktPnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKTsKICAgICAgICAgcmVw
bGFjZVRleHRJbk5vZGUodGV4dE5vZGUsIG1fdHJhaWxpbmdXaGl0ZXNwYWNlLm9mZnNldCgpLCAx
LCBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOwogICAgIH0KIH0KSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9I
VE1MSW50ZXJjaGFuZ2UuY3BwCShyZXZpc2lvbiAxNTUwMikKKysrIFdlYkNvcmUvZWRpdGluZy9I
VE1MSW50ZXJjaGFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBAIERlcHJl
Y2F0ZWRTdHJpbmcgY29udmVydGVkU3BhY2VTdHJpbmcoKSAKIAogfSAvLyBlbmQgYW5vbnltb3Vz
IG5hbWVzcGFjZQogCi0vLyBGSVhNRTogY29udmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1h
dCBzaG91bGQgcHJvYmFibHkgYmUgaW4gdGhlIGtodG1sIG5hbWVzcGFjZS4KIC8vIEZJWE1FOiBD
YW4ndCByZWFsbHkgZG8gdGhpcyB3b3JrIHdpdGhvdXQgdGFraW5nIHdoaXRlc3BhY2UgbW9kZSBp
bnRvIGFjY291bnQuCiAvLyBUaGlzIG1lYW5zIHRoYXQgZXZlbnR1YWxseSB0aGlzIGZ1bmN0aW9u
IG5lZWRzIHRvIGJlIGVsaW1pbmF0ZWQgb3IgYXQgbGVhc3QgaGF2ZQogLy8gaXRzIHBhcmFtZXRl
cnMgY2hhbmdlZCBiZWNhdXNlIGl0IGNhbid0IGRvIGl0cyB3b3JrIG9uIHRoZSBzdHJpbmcgd2l0
aG91dCBrbm93aW5nCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFu
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1h
bmQuY3BwCShyZXZpc2lvbiAxNTUwMikKKysrIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJl
YWtDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNDEgKzg1LDQ5IEBAIHZvaWQgSW5z
ZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgaWYgKHNlbGVjdGlvbi5pc05vbmUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEVsZW1lbnQ+IGJyZWFrTm9kZSA9IGNy
ZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKTsKLSAgICBOb2RlKiBub2RlVG9JbnNlcnQgPSBi
cmVha05vZGUuZ2V0KCk7Ci0gICAgCiAgICAgUG9zaXRpb24gcG9zKHNlbGVjdGlvbi5zdGFydCgp
LnVwc3RyZWFtKCkpOwogCiAgICAgcG9zID0gcG9zaXRpb25Bdm9pZGluZ1NwZWNpYWxFbGVtZW50
Qm91bmRhcnkocG9zKTsKIAotICAgIGlmIChpc1RhYlNwYW5UZXh0Tm9kZShwb3Mubm9kZSgpKSkg
ewotICAgICAgICBpbnNlcnROb2RlQXRUYWJTcGFuUG9zaXRpb24obm9kZVRvSW5zZXJ0LCBwb3Mp
OworICAgIE5vZGUqIHN0eWxlTm9kZSA9IHBvcy5ub2RlKCk7CisgICAgYm9vbCBpc1RhYlNwYW4g
PSBpc1RhYlNwYW5UZXh0Tm9kZShzdHlsZU5vZGUpOworICAgIGlmIChpc1RhYlNwYW4pCisgICAg
ICAgIHN0eWxlTm9kZSA9IHN0eWxlTm9kZS0+cGFyZW50Tm9kZSgpLT5wYXJlbnROb2RlKCk7Cisg
ICAgUmVuZGVyT2JqZWN0KiBzdHlsZVJlbmRlcmVyID0gc3R5bGVOb2RlLT5yZW5kZXJlcigpOwor
ICAgIGJvb2wgdXNlQnJlYWtFbGVtZW50ID0gIXN0eWxlUmVuZGVyZXIgfHwgIXN0eWxlUmVuZGVy
ZXItPnN0eWxlKCktPnByZXNlcnZlTmV3bGluZSgpOworCisgICAgUmVmUHRyPE5vZGU+IG5vZGVU
b0luc2VydDsKKyAgICBpZiAodXNlQnJlYWtFbGVtZW50KQorICAgICAgICBub2RlVG9JbnNlcnQg
PSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSk7CisgICAgZWxzZQorICAgICAgICBub2Rl
VG9JbnNlcnQgPSBkb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZSgiXG4iKTsKKyAgICAgICAgLy8g
RklYTUU6IE5lZWQgdG8gbWVyZ2UgdGV4dCBub2RlcyB3aGVuIGluc2VydGluZyBqdXN0IGFmdGVy
IG9yIGJlZm9yZSB0ZXh0LgorICAgIAorICAgIGlmIChpc1RhYlNwYW4pIHsKKyAgICAgICAgaW5z
ZXJ0Tm9kZUF0VGFiU3BhblBvc2l0aW9uKG5vZGVUb0luc2VydC5nZXQoKSwgcG9zKTsKICAgICAg
ICAgc2V0RW5kaW5nU2VsZWN0aW9uKFBvc2l0aW9uKG5vZGVUb0luc2VydC0+dHJhdmVyc2VOZXh0
Tm9kZSgpLCAwKSwgRE9XTlNUUkVBTSk7CiAgICAgfSBlbHNlIGlmIChpc0VuZE9mQmxvY2soVmlz
aWJsZVBvc2l0aW9uKHBvcywgc2VsZWN0aW9uLmFmZmluaXR5KCkpKSkgewotICAgICAgICAKICAg
ICAgICAgTm9kZSogYmxvY2sgPSBwb3Mubm9kZSgpLT5lbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50
KCk7CiAgICAgICAgIAogICAgICAgICAvLyBJbnNlcnQgYW4gZXh0cmEgYnIgaWYgdGhlIGluc2Vy
dGVkIG9uZSB3aWxsIGNvbGxhcHNlZCBiZWNhdXNlIG9mIHF1aXJrcyBtb2RlLgotICAgICAgICBp
ZiAoIWRvY3VtZW50KCktPmluU3RyaWN0TW9kZSgpICYmICEocG9zLmRvd25zdHJlYW0oKS5ub2Rl
KCktPmhhc1RhZ05hbWUoYnJUYWcpICYmIHBvcy5kb3duc3RyZWFtKCkub2Zmc2V0KCkgPT0gMCkp
IHsKLSAgICAgICAgICAgIGluc2VydE5vZGVBdChub2RlVG9JbnNlcnQsIHBvcy5ub2RlKCksIHBv
cy5vZmZzZXQoKSk7Ci0gICAgICAgICAgICBpbnNlcnROb2RlQWZ0ZXIoY3JlYXRlQnJlYWtFbGVt
ZW50KGRvY3VtZW50KCkpLmdldCgpLCBub2RlVG9JbnNlcnQpOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIGluc2VydE5vZGVBdChub2RlVG9JbnNlcnQsIHBvcy5ub2RlKCksIHBvcy5vZmZz
ZXQoKSk7CisgICAgICAgIGJvb2wgaGF2ZUJyZWFrID0gcG9zLmRvd25zdHJlYW0oKS5ub2RlKCkt
Pmhhc1RhZ05hbWUoYnJUYWcpICYmIHBvcy5kb3duc3RyZWFtKCkub2Zmc2V0KCkgPT0gMDsKKyAg
ICAgICAgaW5zZXJ0Tm9kZUF0KG5vZGVUb0luc2VydC5nZXQoKSwgcG9zLm5vZGUoKSwgcG9zLm9m
ZnNldCgpKTsKKyAgICAgICAgaWYgKCFoYXZlQnJlYWspCisgICAgICAgICAgICBpbnNlcnROb2Rl
QWZ0ZXIoY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpLmdldCgpLCBub2RlVG9JbnNlcnQu
Z2V0KCkpOwogICAgICAgICAgICAgCiAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihQb3NpdGlv
bihibG9jaywgbWF4RGVlcE9mZnNldChibG9jaykpLCBET1dOU1RSRUFNKTsKLSAgICB9Ci0gICAg
ZWxzZSBpZiAocG9zLm9mZnNldCgpIDw9IHBvcy5ub2RlKCktPmNhcmV0TWluT2Zmc2V0KCkpIHsK
KyAgICB9IGVsc2UgaWYgKHBvcy5vZmZzZXQoKSA8PSBwb3Mubm9kZSgpLT5jYXJldE1pbk9mZnNl
dCgpKSB7CiAgICAgICAgIExPRyhFZGl0aW5nLCAiaW5wdXQgbmV3bGluZSBjYXNlIDIiKTsKICAg
ICAgICAgLy8gSW5zZXJ0IG5vZGUgYmVmb3JlIGRvd25zdHJlYW0gcG9zaXRpb24sIGFuZCBwbGFj
ZSBjYXJldCB0aGVyZSBhcyB3ZWxsLiAKICAgICAgICAgUG9zaXRpb24gZW5kaW5nUG9zaXRpb24g
PSBwb3MuZG93bnN0cmVhbSgpOwotICAgICAgICBpbnNlcnROb2RlQmVmb3JlUG9zaXRpb24obm9k
ZVRvSW5zZXJ0LCBlbmRpbmdQb3NpdGlvbik7CisgICAgICAgIGluc2VydE5vZGVCZWZvcmVQb3Np
dGlvbihub2RlVG9JbnNlcnQuZ2V0KCksIGVuZGluZ1Bvc2l0aW9uKTsKICAgICAgICAgc2V0RW5k
aW5nU2VsZWN0aW9uKGVuZGluZ1Bvc2l0aW9uLCBET1dOU1RSRUFNKTsKICAgICB9IGVsc2UgaWYg
KHBvcy5vZmZzZXQoKSA+PSBwb3Mubm9kZSgpLT5jYXJldE1heE9mZnNldCgpKSB7CiAgICAgICAg
IExPRyhFZGl0aW5nLCAiaW5wdXQgbmV3bGluZSBjYXNlIDMiKTsKICAgICAgICAgLy8gSW5zZXJ0
IEJSIGFmdGVyIHRoaXMgbm9kZS4gUGxhY2UgY2FyZXQgaW4gdGhlIHBvc2l0aW9uIHRoYXQgaXMg
ZG93bnN0cmVhbQogICAgICAgICAvLyBvZiB0aGUgY3VycmVudCBwb3NpdGlvbiwgcmVja29uZWQg
YmVmb3JlIGluc2VydGluZyB0aGUgQlIgaW4gYmV0d2Vlbi4KICAgICAgICAgUG9zaXRpb24gZW5k
aW5nUG9zaXRpb24gPSBwb3MuZG93bnN0cmVhbSgpOwotICAgICAgICBpbnNlcnROb2RlQWZ0ZXJQ
b3NpdGlvbihub2RlVG9JbnNlcnQsIHBvcyk7CisgICAgICAgIGluc2VydE5vZGVBZnRlclBvc2l0
aW9uKG5vZGVUb0luc2VydC5nZXQoKSwgcG9zKTsKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9u
KGVuZGluZ1Bvc2l0aW9uLCBET1dOU1RSRUFNKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBT
cGxpdCBhIHRleHQgbm9kZQpAQCAtMTMyLDcgKzE0MCw3IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFr
Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIFJlZlB0cjxUZXh0PiB0ZXh0QmVmb3JlTm9kZSA9
IGRvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKHRleHROb2RlLT5zdWJzdHJpbmdEYXRhKDAsIHNl
bGVjdGlvbi5zdGFydCgpLm9mZnNldCgpLCBlYykpOwogICAgICAgICBkZWxldGVUZXh0RnJvbU5v
ZGUodGV4dE5vZGUsIDAsIHBvcy5vZmZzZXQoKSk7CiAgICAgICAgIGluc2VydE5vZGVCZWZvcmUo
dGV4dEJlZm9yZU5vZGUuZ2V0KCksIHRleHROb2RlKTsKLSAgICAgICAgaW5zZXJ0Tm9kZUJlZm9y
ZShub2RlVG9JbnNlcnQsIHRleHROb2RlKTsKKyAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShub2Rl
VG9JbnNlcnQuZ2V0KCksIHRleHROb2RlKTsKICAgICAgICAgUG9zaXRpb24gZW5kaW5nUG9zaXRp
b24gPSBQb3NpdGlvbih0ZXh0Tm9kZSwgMCk7CiAgICAgICAgIAogICAgICAgICAvLyBIYW5kbGUg
d2hpdGVzcGFjZSB0aGF0IG9jY3VycyBhZnRlciB0aGUgc3BsaXQKQEAgLTE0MCw2ICsxNDgsNyBA
QCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICBpZiAoIWVu
ZGluZ1Bvc2l0aW9uLmlzUmVuZGVyZWRDaGFyYWN0ZXIoKSkgewogICAgICAgICAgICAgLy8gQ2xl
YXIgb3V0IGFsbCB3aGl0ZXNwYWNlIGFuZCBpbnNlcnQgb25lIG5vbi1icmVha2luZyBzcGFjZQog
ICAgICAgICAgICAgZGVsZXRlSW5zaWduaWZpY2FudFRleHREb3duc3RyZWFtKGVuZGluZ1Bvc2l0
aW9uKTsKKyAgICAgICAgICAgIEFTU0VSVCghdGV4dE5vZGUtPnJlbmRlcmVyKCkgfHwgdGV4dE5v
ZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKTsKICAgICAgICAg
ICAgIGluc2VydFRleHRJbnRvTm9kZSh0ZXh0Tm9kZSwgMCwgbm9uQnJlYWtpbmdTcGFjZVN0cmlu
ZygpKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTE1NCw3ICsxNjMsOCBAQCB2b2lkIEluc2Vy
dExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIAogICAgIGlmICh0eXBpbmdTdHlsZSAm
JiB0eXBpbmdTdHlsZS0+bGVuZ3RoKCkgPiAwKSB7CiAgICAgICAgIFNlbGVjdGlvbiBzZWxlY3Rp
b25CZWZvcmVTdHlsZSA9IGVuZGluZ1NlbGVjdGlvbigpOwotICAgICAgICBhcHBseVN0eWxlKHR5
cGluZ1N0eWxlLCBQb3NpdGlvbihub2RlVG9JbnNlcnQsIDApLCBQb3NpdGlvbihub2RlVG9JbnNl
cnQsIG1heERlZXBPZmZzZXQobm9kZVRvSW5zZXJ0KSkpOworICAgICAgICBhcHBseVN0eWxlKHR5
cGluZ1N0eWxlLCBQb3NpdGlvbihub2RlVG9JbnNlcnQuZ2V0KCksIDApLAorICAgICAgICAgICAg
UG9zaXRpb24obm9kZVRvSW5zZXJ0LmdldCgpLCBtYXhEZWVwT2Zmc2V0KG5vZGVUb0luc2VydC5n
ZXQoKSkpKTsKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKHNlbGVjdGlvbkJlZm9yZVN0eWxl
KTsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3JDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDE1NTAyKQorKysgV2ViQ29yZS9lZGl0
aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzMsNyArMjczLDggQEAgdm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpk
bwogICAgIC8vIEZJWE1FOiBsZWFkaW5nV2hpdGVzcGFjZVBvc2l0aW9uIGlzIHJldHVybmluZyB0
aGUgcG9zaXRpb24gYmVmb3JlIHByZXNlcnZlZCBuZXdsaW5lcyBmb3IgcG9zaXRpb25zCiAgICAg
Ly8gYWZ0ZXIgdGhlIHByZXNlcnZlZCBuZXdsaW5lLCBjYXVzaW5nIHRoZSBuZXdsaW5lIHRvIGJl
IHR1cm5lZCBpbnRvIGEgbmJzcC4KICAgICBpZiAobGVhZGluZ1doaXRlc3BhY2UuaXNOb3ROdWxs
KCkpIHsKLSAgICAgICAgVGV4dCAqdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KGxlYWRp
bmdXaGl0ZXNwYWNlLm5vZGUoKSk7CisgICAgICAgIFRleHQqIHRleHROb2RlID0gc3RhdGljX2Nh
c3Q8VGV4dCo+KGxlYWRpbmdXaGl0ZXNwYWNlLm5vZGUoKSk7CisgICAgICAgIEFTU0VSVCghdGV4
dE5vZGUtPnJlbmRlcmVyKCkgfHwgdGV4dE5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmNvbGxh
cHNlV2hpdGVTcGFjZSgpKTsKICAgICAgICAgcmVwbGFjZVRleHRJbk5vZGUodGV4dE5vZGUsIGxl
YWRpbmdXaGl0ZXNwYWNlLm9mZnNldCgpLCAxLCBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOwog
ICAgIH0KICAgICAKQEAgLTM0NCw5ICszNDUsMTEgQEAgdm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBh
cmF0b3JDb21tYW5kOjpkbwogICAgICAgICBwb3MgPSBQb3NpdGlvbihzdGFydE5vZGUsIDApOwog
ICAgICAgICBpZiAoIXBvcy5pc1JlbmRlcmVkQ2hhcmFjdGVyKCkpIHsKICAgICAgICAgICAgIC8v
IENsZWFyIG91dCBhbGwgd2hpdGVzcGFjZSBhbmQgaW5zZXJ0IG9uZSBub24tYnJlYWtpbmcgc3Bh
Y2UKLSAgICAgICAgICAgIEFTU0VSVChzdGFydE5vZGUgJiYgc3RhcnROb2RlLT5pc1RleHROb2Rl
KCkpOworICAgICAgICAgICAgQVNTRVJUKHN0YXJ0Tm9kZSk7CisgICAgICAgICAgICBBU1NFUlQo
c3RhcnROb2RlLT5pc1RleHROb2RlKCkpOworICAgICAgICAgICAgQVNTRVJUKCFzdGFydE5vZGUt
PnJlbmRlcmVyKCkgfHwgc3RhcnROb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5jb2xsYXBzZVdo
aXRlU3BhY2UoKSk7CiAgICAgICAgICAgICBkZWxldGVJbnNpZ25pZmljYW50VGV4dERvd25zdHJl
YW0ocG9zKTsKLSAgICAgICAgICAgIGluc2VydFRleHRJbnRvTm9kZShzdGF0aWNfY2FzdDxUZXh0
ICo+KHN0YXJ0Tm9kZSksIDAsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CisgICAgICAgICAg
ICBpbnNlcnRUZXh0SW50b05vZGUoc3RhdGljX2Nhc3Q8VGV4dCo+KHN0YXJ0Tm9kZSksIDAsIG5v
bkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFdlYkNv
cmUvZWRpdGluZy9KU0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0pT
RWRpdG9yLmNwcAkocmV2aXNpb24gMTU1MDIpCisrKyBXZWJDb3JlL2VkaXRpbmcvSlNFZGl0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTUsNyArNDE1LDcgQEAgYm9vbCBleGVjUmVkbyhGcmFt
ZSAqZnJhbWUsIGJvb2wgdXNlckludAogCiBib29sIGV4ZWNSZW1vdmVGb3JtYXQoRnJhbWUqIGZy
YW1lLCBib29sIHVzZXJJbnRlcmZhY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChm
cmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPnNlbGVjdGlvbigpLnRvU3RyaW5nKCkuZGVwcmVjYXRl
ZFN0cmluZygpKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVh
dGVGcmFnbWVudEZyb21UZXh0KGZyYW1lLT5zZWxlY3Rpb24oKS50b1JhbmdlKCkuZ2V0KCksIGZy
YW1lLT5zZWxlY3Rpb24oKS50b1N0cmluZygpKTsKICAgICBFZGl0Q29tbWFuZFB0cihuZXcgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQoZnJhbWUtPmRvY3VtZW50KCksIGZyYWdtZW50LmdldCgpLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgRWRpdEFjdGlvblVuc3BlY2lmaWVkKSkuYXBwbHko
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZWJhbGFuY2VX
aGl0ZXNwYWNlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlYmFs
YW5jZVdoaXRlc3BhY2VDb21tYW5kLmNwcAkocmV2aXNpb24gMTU1MDIpCisrKyBXZWJDb3JlL2Vk
aXRpbmcvUmViYWxhbmNlV2hpdGVzcGFjZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OSwxMiArNDksMTYgQEAgdm9pZCBSZWJhbGFuY2VXaGl0ZXNwYWNlQ29tbWFuZDo6ZG9BcHBseQog
ewogICAgIGlmIChtX3Bvc2l0aW9uLmlzTnVsbCgpIHx8ICFtX3Bvc2l0aW9uLm5vZGUoKS0+aXNU
ZXh0Tm9kZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIFRleHQgKnRleHROb2Rl
ID0gc3RhdGljX2Nhc3Q8VGV4dCAqPihtX3Bvc2l0aW9uLm5vZGUoKSk7CisKKyAgICBUZXh0KiB0
ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQqPihtX3Bvc2l0aW9uLm5vZGUoKSk7CiAgICAgU3Ry
aW5nIHRleHQgPSB0ZXh0Tm9kZS0+ZGF0YSgpOwogICAgIGlmICh0ZXh0Lmxlbmd0aCgpID09IDAp
CiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0
ZXh0Tm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAocmVuZGVyZXIgJiYgIXJlbmRlcmVyLT5zdHls
ZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaW50IG9m
ZnNldCA9IG1fcG9zaXRpb24ub2Zmc2V0KCk7CiAgICAgLy8gSWYgbmVpdGhlciB0ZXh0W29mZnNl
dF0gbm9yIHRleHRbb2Zmc2V0IC0gMV0gYXJlIHNvbWUgZm9ybSBvZiB3aGl0ZXNwYWNlLCBkbyBu
b3RoaW5nLgogICAgIGlmICghaXNXaGl0ZXNwYWNlKHRleHRbb2Zmc2V0XSkpIHsKSW5kZXg6IFdl
YkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24gMTU1
MDIpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVwbGFjZW1lbnRGcmFnbWVudDo6UmVwbGFjZW1lbnRG
cmFnbWVudChEb2N1bWVudCAqZG9jdW1lbnQsIERvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50LCBi
b29sIG1hdGNoU3R5bGUsIEVsZW1lbnQqIGVkaXRhYmxlUm9vdCkKK1JlcGxhY2VtZW50RnJhZ21l
bnQ6OlJlcGxhY2VtZW50RnJhZ21lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBEb2N1bWVudEZyYWdt
ZW50KiBmcmFnbWVudCwgYm9vbCBtYXRjaFN0eWxlLCBjb25zdCBTZWxlY3Rpb24mIHNlbGVjdGlv
bikKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpLAogICAgICAgbV9mcmFnbWVudChmcmFnbWVu
dCksCiAgICAgICBtX21hdGNoU3R5bGUobWF0Y2hTdHlsZSksIApAQCAtNTgsMjcgKzU4LDE5IEBA
IFJlcGxhY2VtZW50RnJhZ21lbnQ6OlJlcGxhY2VtZW50RnJhZ21lbnQKIHsKICAgICBpZiAoIW1f
ZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9mcmFnbWVudCkgewotICAg
ICAgICBtX3R5cGUgPSBFbXB0eUZyYWdtZW50OworICAgIGlmICghbV9mcmFnbWVudCkKICAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQogICAgIE5vZGUqIGZpcnN0Q2hpbGQgPSBtX2ZyYWdtZW50LT5m
aXJzdENoaWxkKCk7Ci0gICAgTm9kZSogbGFzdENoaWxkID0gbV9mcmFnbWVudC0+bGFzdENoaWxk
KCk7Ci0KLSAgICBpZiAoIWZpcnN0Q2hpbGQpIHsKLSAgICAgICAgbV90eXBlID0gRW1wdHlGcmFn
bWVudDsKKyAgICBpZiAoIWZpcnN0Q2hpbGQpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Ci0gICAgbV90eXBlID0gZmlyc3RDaGlsZCA9PSBsYXN0Q2hpbGQgJiYgZmlyc3RDaGlsZC0+aXNU
ZXh0Tm9kZSgpID8gU2luZ2xlVGV4dE5vZGVGcmFnbWVudCA6IFRyZWVGcmFnbWVudDsKICAgICAK
KyAgICBFbGVtZW50KiBlZGl0YWJsZVJvb3QgPSBzZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVu
dCgpOwogICAgIEFTU0VSVChlZGl0YWJsZVJvb3QpOwogICAgIGlmICghZWRpdGFibGVSb290KQog
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICBSZWZQdHI8Tm9kZT4gaG9sZGVyID0g
aW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKCk7CisKKyAgICBOb2RlKiBzdHlsZU5vZGUg
PSBzZWxlY3Rpb24uYmFzZSgpLm5vZGUoKTsKKyAgICBSZWZQdHI8Tm9kZT4gaG9sZGVyID0gaW5z
ZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKHN0eWxlTm9kZSk7CiAgICAgCiAgICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IFNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKGhv
bGRlci5nZXQoKSkudG9SYW5nZSgpOwogICAgIFN0cmluZyB0ZXh0ID0gcGxhaW5UZXh0KHJhbmdl
LmdldCgpKTsKQEAgLTg4LDIxICs4MCwxNiBAQCBSZXBsYWNlbWVudEZyYWdtZW50OjpSZXBsYWNl
bWVudEZyYWdtZW50CiAgICAgZWRpdGFibGVSb290LT5kaXNwYXRjaEV2ZW50KGV2dCwgZWMsIHRy
dWUpOwogICAgIEFTU0VSVChlYyA9PSAwKTsKICAgICBpZiAodGV4dCAhPSBldnQtPnRleHQoKSB8
fCAhZWRpdGFibGVSb290LT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKSB7Ci0gICAgICAgIC8v
IElmIHRoZSByb290IGlzIGluIHBsYWluLXRleHQgbW9kZSwgYW5kIHdoaXRlLXNwYWNlIHNob3Vs
ZG4ndCBiZSBjb2xsYXBzZWQsIHRoZW4gY29udHJ1Y3QgYSBmcmFnbWVudCB0aGF0IGNvbnRhaW5z
IG9uZSB0ZXh0IG5vZGUKLSAgICAgICAgaWYgKCFlZGl0YWJsZVJvb3QtPmlzQ29udGVudFJpY2hs
eUVkaXRhYmxlKCkgJiYgZWRpdGFibGVSb290LT5yZW5kZXJlcigpICYmICFlZGl0YWJsZVJvb3Qt
PnJlbmRlcmVyKCktPnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7Ci0gICAgICAgICAg
ICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpOwotICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGRvY3Vt
ZW50LT5jcmVhdGVUZXh0Tm9kZShldnQtPnRleHQoKSksIGVjKTsKLSAgICAgICAgICAgIEFTU0VS
VChlYyA9PSAwKTsKLSAgICAgICAgICAgIG1fZnJhZ21lbnQgPSBmcmFnbWVudDsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBtX2ZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChk
b2N1bWVudCwgZXZ0LT50ZXh0KCkuZGVwcmVjYXRlZFN0cmluZygpKTsKLSAgICAgICAgZmlyc3RD
aGlsZCA9IG1fZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKTsKLSAgICAgICAgbGFzdENoaWxkID0gbV9m
cmFnbWVudC0+Zmlyc3RDaGlsZCgpOwotICAgICAgICAKKyAgICAgICAgcmVzdG9yZVRlc3RSZW5k
ZXJpbmdOb2Rlc1RvRnJhZ21lbnQoaG9sZGVyLmdldCgpKTsKICAgICAgICAgcmVtb3ZlTm9kZSho
b2xkZXIpOwotICAgICAgICBob2xkZXIgPSBpbnNlcnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmco
KTsKKworICAgICAgICBtX2ZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChzZWxlY3Rp
b24udG9SYW5nZSgpLmdldCgpLCBldnQtPnRleHQoKSk7CisgICAgICAgIGZpcnN0Q2hpbGQgPSBt
X2ZyYWdtZW50LT5maXJzdENoaWxkKCk7CisgICAgICAgIGlmICghZmlyc3RDaGlsZCkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgaG9sZGVyID0gaW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVu
ZGVyaW5nKHN0eWxlTm9kZSk7CiAgICAgfQotICAgIAorCiAgICAgTm9kZSAqbm9kZSA9IGZpcnN0
Q2hpbGQ7CiAgICAgTm9kZSAqbmV3bGluZUF0U3RhcnROb2RlID0gMDsKICAgICBOb2RlICpuZXds
aW5lQXRFbmROb2RlID0gMDsKQEAgLTE0NCw4ICsxMzEsOSBAQCBSZXBsYWNlbWVudEZyYWdtZW50
OjpSZXBsYWNlbWVudEZyYWdtZW50CiAgICAgcmVtb3ZlU3R5bGVOb2RlcygpOwogfQogCi1SZXBs
YWNlbWVudEZyYWdtZW50Ojp+UmVwbGFjZW1lbnRGcmFnbWVudCgpCitib29sIFJlcGxhY2VtZW50
RnJhZ21lbnQ6OmlzRW1wdHkoKSBjb25zdAogeworICAgIHJldHVybiAoIW1fZnJhZ21lbnQgfHwg
IW1fZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKSkgJiYgIW1faGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRT
dGFydCAmJiAhbV9oYXNJbnRlcmNoYW5nZU5ld2xpbmVBdEVuZDsKIH0KIAogTm9kZSAqUmVwbGFj
ZW1lbnRGcmFnbWVudDo6Zmlyc3RDaGlsZCgpIGNvbnN0IApAQCAtMjMyLDE1ICsyMjAsMjcgQEAg
dm9pZCBSZXBsYWNlbWVudEZyYWdtZW50OjppbnNlcnROb2RlQmVmbwogICAgIEFTU0VSVChlYyA9
PSAwKTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBSZXBsYWNlbWVudEZyYWdtZW50OjppbnNlcnRG
cmFnbWVudEZvclRlc3RSZW5kZXJpbmcoKQorUGFzc1JlZlB0cjxOb2RlPiBSZXBsYWNlbWVudEZy
YWdtZW50OjppbnNlcnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmcoTm9kZSogY29udGV4dCkKIHsK
LSAgICBOb2RlICpib2R5ID0gbV9kb2N1bWVudC0+Ym9keSgpOworICAgIE5vZGUqIGJvZHkgPSBt
X2RvY3VtZW50LT5ib2R5KCk7CiAgICAgaWYgKCFib2R5KQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIFJlZlB0cjxOb2RlPiBob2xkZXIgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudCht
X2RvY3VtZW50LmdldCgpKTsKKyAgICBSZWZQdHI8U3R5bGVkRWxlbWVudD4gaG9sZGVyID0gc3Rh
dGljX3BvaW50ZXJfY2FzdDxTdHlsZWRFbGVtZW50PihjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxl
bWVudChtX2RvY3VtZW50LmdldCgpKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisKKyAgICAvLyBDb3B5IHRoZSB3aGl0ZXNwYWNlIHN0eWxlIGZyb20gdGhlIGNvbnRleHQgb250
byB0aGlzIGVsZW1lbnQuCisgICAgTm9kZSogbiA9IGNvbnRleHQ7CisgICAgd2hpbGUgKG4gJiYg
IW4tPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgbiA9IG4tPnBhcmVudE5vZGUoKTsKKyAgICBp
ZiAobikgeworICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb250
ZXh0U3R5bGUgPSBuZXcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihuKSk7CisgICAgICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlID0gaG9sZGVy
LT5zdHlsZSgpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTX1BST1BfV0hJVEVfU1BB
Q0UsIGNvbnRleHRTdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShDU1NfUFJPUF9XSElURV9TUEFDRSks
IGZhbHNlLCBlYyk7CisgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICB9CisgICAgCiAgICAg
aG9sZGVyLT5hcHBlbmRDaGlsZChtX2ZyYWdtZW50LCBlYyk7CiAgICAgQVNTRVJUKGVjID09IDAp
OwogICAgIApAQCAtNTMyLDkgKzUzMiw5IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkoKQogICAgICAgICBtX21hdGNoU3R5bGUgPSB0cnVlOwogICAgIAogICAgIEVsZW1l
bnQqIGN1cnJlbnRSb290ID0gc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBS
ZXBsYWNlbWVudEZyYWdtZW50IGZyYWdtZW50KGRvY3VtZW50KCksIG1fZG9jdW1lbnRGcmFnbWVu
dC5nZXQoKSwgbV9tYXRjaFN0eWxlLCBjdXJyZW50Um9vdCk7CisgICAgUmVwbGFjZW1lbnRGcmFn
bWVudCBmcmFnbWVudChkb2N1bWVudCgpLCBtX2RvY3VtZW50RnJhZ21lbnQuZ2V0KCksIG1fbWF0
Y2hTdHlsZSwgc2VsZWN0aW9uKTsKICAgICAKLSAgICBpZiAoZnJhZ21lbnQudHlwZSgpID09IEVt
cHR5RnJhZ21lbnQpCisgICAgaWYgKGZyYWdtZW50LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIGlmIChtX21hdGNoU3R5bGUpCkBAIC03NzksMTIgKzc3OSwxNCBAQCB2b2lk
IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgYm9vbCBuZWVkc1Ry
YWlsaW5nU3BhY2UgPSAhaXNFbmRPZlBhcmFncmFwaChlbmRPZkluc2VydGVkQ29udGVudCkgJiYK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhZnJhbWUtPmlzQ2hhcmFjdGVyU21h
cnRSZXBsYWNlRXhlbXB0KGVuZE9mSW5zZXJ0ZWRDb250ZW50LmNoYXJhY3RlckFmdGVyKCksIGZh
bHNlKTsKICAgICAgICAgaWYgKG5lZWRzVHJhaWxpbmdTcGFjZSkgeworICAgICAgICAgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fbGFzdE5vZGVJbnNlcnRlZC0+cmVuZGVyZXIoKTsKKyAg
ICAgICAgICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlID0gIXJlbmRlcmVyIHx8IHJlbmRlcmVy
LT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKTsKICAgICAgICAgICAgIGlmIChtX2xhc3RO
b2RlSW5zZXJ0ZWQtPmlzVGV4dE5vZGUoKSkgewotICAgICAgICAgICAgICAgIFRleHQgKnRleHQg
PSBzdGF0aWNfY2FzdDxUZXh0ICo+KG1fbGFzdE5vZGVJbnNlcnRlZC5nZXQoKSk7Ci0gICAgICAg
ICAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRleHQsIHRleHQtPmxlbmd0aCgpLCBub25CcmVh
a2luZ1NwYWNlU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIFRleHQqIHRleHQgPSBzdGF0aWNf
Y2FzdDxUZXh0ICo+KG1fbGFzdE5vZGVJbnNlcnRlZC5nZXQoKSk7CisgICAgICAgICAgICAgICAg
aW5zZXJ0VGV4dEludG9Ob2RlKHRleHQsIHRleHQtPmxlbmd0aCgpLCBjb2xsYXBzZVdoaXRlU3Bh
Y2UgPyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICIpOwogICAgICAgICAgICAgICAgIGlu
c2VydGlvblBvcyA9IFBvc2l0aW9uKHRleHQsIHRleHQtPmxlbmd0aCgpKTsKICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBkb2N1bWVudCgp
LT5jcmVhdGVFZGl0aW5nVGV4dE5vZGUobm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKKyAgICAg
ICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IGRvY3VtZW50KCktPmNyZWF0ZUVkaXRpbmdU
ZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAi
ICIpOwogICAgICAgICAgICAgICAgIGluc2VydE5vZGVBZnRlckFuZFVwZGF0ZU5vZGVzSW5zZXJ0
ZWQobm9kZS5nZXQoKSwgbV9sYXN0Tm9kZUluc2VydGVkLmdldCgpKTsKICAgICAgICAgICAgICAg
ICBpbnNlcnRpb25Qb3MgPSBQb3NpdGlvbihub2RlLmdldCgpLCAxKTsKICAgICAgICAgICAgIH0K
QEAgLTc5MywxMSArNzk1LDEzIEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBw
bHkoKQogICAgICAgICBib29sIG5lZWRzTGVhZGluZ1NwYWNlID0gIWlzU3RhcnRPZlBhcmFncmFw
aChzdGFydE9mSW5zZXJ0ZWRDb250ZW50KSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIWZyYW1lLT5pc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4ZW1wdChzdGFydE9mSW5zZXJ0
ZWRDb250ZW50LnByZXZpb3VzKCkuY2hhcmFjdGVyQWZ0ZXIoKSwgdHJ1ZSk7CiAgICAgICAgIGlm
IChuZWVkc0xlYWRpbmdTcGFjZSkgeworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IG1fbGFzdE5vZGVJbnNlcnRlZC0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGJvb2wgY29s
bGFwc2VXaGl0ZVNwYWNlID0gIXJlbmRlcmVyIHx8IG1fbGFzdE5vZGVJbnNlcnRlZC0+cmVuZGVy
ZXIoKS0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCk7CiAgICAgICAgICAgICBpZiAobV9m
aXJzdE5vZGVJbnNlcnRlZC0+aXNUZXh0Tm9kZSgpKSB7CiAgICAgICAgICAgICAgICAgVGV4dCAq
dGV4dCA9IHN0YXRpY19jYXN0PFRleHQgKj4obV9maXJzdE5vZGVJbnNlcnRlZC5nZXQoKSk7Ci0g
ICAgICAgICAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRleHQsIDAsIG5vbkJyZWFraW5nU3Bh
Y2VTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRleHQsIDAs
IGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIgIik7CiAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBub2RlID0g
ZG9jdW1lbnQoKS0+Y3JlYXRlRWRpdGluZ1RleHROb2RlKG5vbkJyZWFraW5nU3BhY2VTdHJpbmco
KSk7CisgICAgICAgICAgICAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBkb2N1bWVudCgpLT5jcmVh
dGVFZGl0aW5nVGV4dE5vZGUoY29sbGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0
cmluZygpIDogIiAiKTsKICAgICAgICAgICAgICAgICAvLyBEb24ndCB1cGRhdGVOb2Rlc0luc2Vy
dGVkLiAgRG9pbmcgc28gd291bGQgc2V0IG1fbGFzdE5vZGVJbnNlcnRlZCB0byBiZSB0aGUgbm9k
ZSBjb250YWluaW5nIHRoZSAKICAgICAgICAgICAgICAgICAvLyBsZWFkaW5nIHNwYWNlLCBidXQg
bV9sYXN0Tm9kZUluc2VydGVkIGlzIHN1cHBvc2VkIHRvIG1hcmsgdGhlIGVuZCBvZiBwYXN0ZWQg
Y29udGVudC4KICAgICAgICAgICAgICAgICBpbnNlcnROb2RlQmVmb3JlKG5vZGUuZ2V0KCksIG1f
Zmlyc3ROb2RlSW5zZXJ0ZWQuZ2V0KCkpOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmgJKHJldmlzaW9uIDE1NTAyKQorKysgV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDI0ICs1MiwyMCBA
QCB0eXBlZGVmIEhhc2hNYXA8Tm9kZSosIFJlZlB0cjxSZW5kZXJpbmdJCiAKIC8vIC0tLSBSZXBs
YWNlbWVudEZyYWdtZW50IGhlbHBlciBjbGFzcwogCi1jbGFzcyBSZXBsYWNlbWVudEZyYWdtZW50
CitjbGFzcyBSZXBsYWNlbWVudEZyYWdtZW50IDogTm9uY29weWFibGUKIHsKIHB1YmxpYzoKLSAg
ICBSZXBsYWNlbWVudEZyYWdtZW50KERvY3VtZW50KiwgRG9jdW1lbnRGcmFnbWVudCosIGJvb2ws
IEVsZW1lbnQqKTsKLSAgICB+UmVwbGFjZW1lbnRGcmFnbWVudCgpOworICAgIFJlcGxhY2VtZW50
RnJhZ21lbnQoRG9jdW1lbnQqLCBEb2N1bWVudEZyYWdtZW50KiwgYm9vbCBtYXRjaFN0eWxlLCBj
b25zdCBTZWxlY3Rpb24mKTsKIAotICAgIE5vZGUgKmZpcnN0Q2hpbGQoKSBjb25zdDsKLSAgICBO
b2RlICpsYXN0Q2hpbGQoKSBjb25zdDsKKyAgICBOb2RlKiBmaXJzdENoaWxkKCkgY29uc3Q7Cisg
ICAgTm9kZSogbGFzdENoaWxkKCkgY29uc3Q7CiAKLSAgICBOb2RlICptZXJnZVN0YXJ0Tm9kZSgp
IGNvbnN0OworICAgIE5vZGUqIG1lcmdlU3RhcnROb2RlKCkgY29uc3Q7CiAKICAgICBjb25zdCBS
ZW5kZXJpbmdJbmZvTWFwJiByZW5kZXJpbmdJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJp
bmdJbmZvOyB9CiAgICAgY29uc3QgTm9kZVZlY3RvciYgbm9kZXMoKSBjb25zdCB7IHJldHVybiBt
X25vZGVzOyB9CiAKLSAgICBFRnJhZ21lbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRW1wdHlG
cmFnbWVudDsgfQotICAgIGJvb2wgaXNTaW5nbGVUZXh0Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZSA9PSBTaW5nbGVUZXh0Tm9kZUZyYWdtZW50OyB9Ci0gICAgYm9vbCBpc1RyZWVGcmFnbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUcmVlRnJhZ21lbnQ7IH0KKyAgICBib29sIGlz
RW1wdHkoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzTW9yZVRoYW5PbmVCbG9jaygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzTW9yZVRoYW5PbmVCbG9jazsgfQogICAgIGJvb2wgaGFzSW50ZXJjaGFuZ2VO
ZXdsaW5lQXRTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRT
dGFydDsgfQpAQCAtNzksMTUgKzc1LDExIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJlbW92
ZU5vZGUoUGFzc1JlZlB0cjxOb2RlPik7CiAKLXByaXZhdGU6Ci0gICAgLy8gbm8gY29weSBjb25z
dHJ1Y3Rpb24gb3IgYXNzaWdubWVudAotICAgIFJlcGxhY2VtZW50RnJhZ21lbnQoY29uc3QgUmVw
bGFjZW1lbnRGcmFnbWVudCAmKTsKLSAgICBSZXBsYWNlbWVudEZyYWdtZW50ICZvcGVyYXRvcj0o
Y29uc3QgUmVwbGFjZW1lbnRGcmFnbWVudCAmKTsKLSAgICAKLSAgICBzdGF0aWMgYm9vbCBpc0lu
dGVyY2hhbmdlTmV3bGluZU5vZGUoY29uc3QgTm9kZSAqKTsKLSAgICBzdGF0aWMgYm9vbCBpc0lu
dGVyY2hhbmdlQ29udmVydGVkU3BhY2VTcGFuKGNvbnN0IE5vZGUgKik7Citwcml2YXRlOiAgICAK
KyAgICBzdGF0aWMgYm9vbCBpc0ludGVyY2hhbmdlTmV3bGluZU5vZGUoY29uc3QgTm9kZSopOwor
ICAgIHN0YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VDb252ZXJ0ZWRTcGFjZVNwYW4oY29uc3QgTm9k
ZSopOwogICAgIAotICAgIFBhc3NSZWZQdHI8Tm9kZT4gaW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVu
ZGVyaW5nKCk7CisgICAgUGFzc1JlZlB0cjxOb2RlPiBpbnNlcnRGcmFnbWVudEZvclRlc3RSZW5k
ZXJpbmcoTm9kZSogY29udGV4dCk7CiAgICAgdm9pZCBzYXZlUmVuZGVyaW5nSW5mbyhOb2RlKik7
CiAgICAgdm9pZCBjb21wdXRlU3R5bGVzVXNpbmdUZXN0UmVuZGVyaW5nKE5vZGUqKTsKICAgICB2
b2lkIHJlbW92ZVVucmVuZGVyZWROb2RlcyhOb2RlKik7CkBAIC05NSwxMSArODcsMTAgQEAgcHJp
dmF0ZToKICAgICBpbnQgcmVuZGVyZWRCbG9ja3MoTm9kZSopOwogICAgIHZvaWQgcmVtb3ZlU3R5
bGVOb2RlcygpOwogCi0gICAgTm9kZSAqZW5jbG9zaW5nQmxvY2soTm9kZSAqKSBjb25zdDsKLSAg
ICB2b2lkIHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4oTm9kZSAqKTsKLSAgICB2b2lkIGlu
c2VydE5vZGVCZWZvcmUoTm9kZSAqbm9kZSwgTm9kZSAqcmVmTm9kZSk7CisgICAgTm9kZSogZW5j
bG9zaW5nQmxvY2soTm9kZSopIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlTm9kZVByZXNlcnZpbmdD
aGlsZHJlbihOb2RlKik7CisgICAgdm9pZCBpbnNlcnROb2RlQmVmb3JlKE5vZGUqIG5vZGUsIE5v
ZGUqIHJlZk5vZGUpOwogCi0gICAgRUZyYWdtZW50VHlwZSBtX3R5cGU7CiAgICAgUmVmUHRyPERv
Y3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBtX2ZyYWdt
ZW50OwogICAgIFJlbmRlcmluZ0luZm9NYXAgbV9yZW5kZXJpbmdJbmZvOwpJbmRleDogV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAJKHJldmlzaW9uIDE1NTAyKQorKysgV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0MiwxMiArMjQyLDEyIEBAIHN0YXRpYyBEZXByZWNhdGVkU3RyaW5n
IGVuZE1hcmt1cChjb25zdCAKICAgICByZXR1cm4gIiI7CiB9CiAKLXN0YXRpYyBEZXByZWNhdGVk
U3RyaW5nIG1hcmt1cChjb25zdCBOb2RlICpzdGFydE5vZGUsIGJvb2wgb25seUluY2x1ZGVDaGls
ZHJlbiwgYm9vbCBpbmNsdWRlU2libGluZ3MsIERlcHJlY2F0ZWRQdHJMaXN0PE5vZGU+ICpub2Rl
cykKK3N0YXRpYyBEZXByZWNhdGVkU3RyaW5nIG1hcmt1cChOb2RlKiBzdGFydE5vZGUsIGJvb2wg
b25seUluY2x1ZGVDaGlsZHJlbiwgYm9vbCBpbmNsdWRlU2libGluZ3MsIFZlY3RvcjxOb2RlKj4g
Km5vZGVzKQogewogICAgIC8vIERvZXNuJ3QgbWFrZSBzZW5zZSB0byBvbmx5IGluY2x1ZGUgY2hp
bGRyZW4gYW5kIGluY2x1ZGUgc2libGluZ3MuCiAgICAgQVNTRVJUKCEob25seUluY2x1ZGVDaGls
ZHJlbiAmJiBpbmNsdWRlU2libGluZ3MpKTsKICAgICBEZXByZWNhdGVkU3RyaW5nIG1lID0gIiI7
Ci0gICAgZm9yIChjb25zdCBOb2RlICpjdXJyZW50ID0gc3RhcnROb2RlOyBjdXJyZW50ICE9IE5V
TEw7IGN1cnJlbnQgPSBpbmNsdWRlU2libGluZ3MgPyBjdXJyZW50LT5uZXh0U2libGluZygpIDog
TlVMTCkgeworICAgIGZvciAoTm9kZSogY3VycmVudCA9IHN0YXJ0Tm9kZTsgY3VycmVudCAhPSBO
VUxMOyBjdXJyZW50ID0gaW5jbHVkZVNpYmxpbmdzID8gY3VycmVudC0+bmV4dFNpYmxpbmcoKSA6
IE5VTEwpIHsKICAgICAgICAgaWYgKCFvbmx5SW5jbHVkZUNoaWxkcmVuKSB7CiAgICAgICAgICAg
ICBpZiAobm9kZXMpCiAgICAgICAgICAgICAgICAgbm9kZXMtPmFwcGVuZChjdXJyZW50KTsKQEAg
LTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZVVSTHMoTm9kZSAqbm9kZSwgY29u
CiAgICAgfQogfQogCi1EZXByZWNhdGVkU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSAq
cmFuZ2UsIERlcHJlY2F0ZWRQdHJMaXN0PE5vZGU+ICpub2RlcywgRUFubm90YXRlRm9ySW50ZXJj
aGFuZ2UgYW5ub3RhdGUpCitEZXByZWNhdGVkU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5n
ZSAqcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBh
bm5vdGF0ZSkKIHsKICAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLT5pc0RldGFjaGVkKCkpCiAgICAg
ICAgIHJldHVybiBEZXByZWNhdGVkU3RyaW5nKCk7CkBAIC0zMDgsNyArMzA4LDcgQEAgRGVwcmVj
YXRlZFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZwogICAgIERlcHJlY2F0ZWRTdHJpbmdM
aXN0IG1hcmt1cHM7CiAgICAgTm9kZSAqcGFzdEVuZCA9IHJhbmdlLT5wYXN0RW5kTm9kZSgpOwog
ICAgIE5vZGUgKmxhc3RDbG9zZWQgPSAwOwotICAgIERlcHJlY2F0ZWRQdHJMaXN0PE5vZGU+IGFu
Y2VzdG9yc1RvQ2xvc2U7CisgICAgVmVjdG9yPE5vZGUqPiBhbmNlc3RvcnNUb0Nsb3NlOwogCiAg
ICAgLy8gY2FsY3VsYXRlIHRoZSAiZGVmYXVsdCBzdHlsZSIgZm9yIHRoaXMgbWFya3VwCiAgICAg
UG9zaXRpb24gcG9zKGRvYy0+ZG9jdW1lbnRFbGVtZW50KCksIDApOwpAQCAtMzUyLDE0ICszNTIs
MTUgQEAgRGVwcmVjYXRlZFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZwogICAgICAgICAg
ICAgaWYgKG4tPm5leHRTaWJsaW5nKCkgPT0gMCB8fCBuZXh0ID09IHBhc3RFbmQpIHsKICAgICAg
ICAgICAgICAgICBpZiAoIWFuY2VzdG9yc1RvQ2xvc2UuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIENsb3NlIHVwIHRoZSBhbmNlc3RvcnMuCi0gICAgICAgICAgICAgICAgICAg
IHdoaWxlIChOb2RlICphbmNlc3RvciA9IGFuY2VzdG9yc1RvQ2xvc2UubGFzdCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUgKmFuY2Vz
dG9yID0gYW5jZXN0b3JzVG9DbG9zZS5sYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobmV4dCAhPSBwYXN0RW5kICYmIGFuY2VzdG9yID09IG5leHQtPnBhcmVudE5vZGUoKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIE5vdCBhdCB0aGUgZW5kIG9mIHRoZSByYW5nZSwgY2xvc2UgYW5jZXN0b3JzIHVwIHRvIHNp
Ymxpbmcgb2YgbmV4dCBub2RlLgogICAgICAgICAgICAgICAgICAgICAgICAgbWFya3Vwcy5hcHBl
bmQoZW5kTWFya3VwKGFuY2VzdG9yKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0Q2xv
c2VkID0gYW5jZXN0b3I7CiAgICAgICAgICAgICAgICAgICAgICAgICBhbmNlc3RvcnNUb0Nsb3Nl
LnJlbW92ZUxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9IHdoaWxlICghYW5jZXN0b3JzVG9DbG9zZS5pc0VtcHR5KCkpOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIE5vIGFuY2VzdG9ycyB0byBjbG9zZSwg
YnV0IG5lZWQgdG8gYWRkIGFuY2VzdG9ycyBub3QgaW4gcmFuZ2Ugc2luY2UgbmV4dCBub2RlIGlz
IGluIGFub3RoZXIgdHJlZS4gCiAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0ICE9IHBhc3RF
bmQpIHsKQEAgLTQ1MiwxNiArNDUzLDE4IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
Y3JlYXRlRnJhZ20KICAgICByZXR1cm4gZnJhZ21lbnQucmVsZWFzZSgpOwogfQogCi1EZXByZWNh
dGVkU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBOb2RlICpub2RlLCBFQ2hpbGRyZW5Pbmx5IGlu
Y2x1ZGVDaGlsZHJlbiwKLSAgICBEZXByZWNhdGVkUHRyTGlzdDxOb2RlPiAqbm9kZXMsIEVBbm5v
dGF0ZUZvckludGVyY2hhbmdlIGFubm90YXRlKQorRGVwcmVjYXRlZFN0cmluZyBjcmVhdGVNYXJr
dXAoY29uc3QgTm9kZSogbm9kZSwgRUNoaWxkcmVuT25seSBpbmNsdWRlQ2hpbGRyZW4sCisgICAg
VmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlIGFubm90YXRlKQog
ewogICAgIEFTU0VSVChhbm5vdGF0ZSA9PSBEb05vdEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpOyAv
LyBhbm5vdGF0aW9uIG5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIHRoaXMgY29kZSBwYXRoCiAgICAg
bm9kZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7
Ci0gICAgcmV0dXJuIG1hcmt1cChub2RlLCBpbmNsdWRlQ2hpbGRyZW4sIGZhbHNlLCBub2Rlcyk7
CisgICAgcmV0dXJuIG1hcmt1cChjb25zdF9jYXN0PE5vZGUqPihub2RlKSwgaW5jbHVkZUNoaWxk
cmVuLCBmYWxzZSwgbm9kZXMpOwogfQogCi1zdGF0aWMgdm9pZCBjcmVhdGVQYXJhZ3JhcGhDb250
ZW50c0Zyb21TdHJpbmcoRG9jdW1lbnQgKmRvY3VtZW50LCBFbGVtZW50ICpwYXJhZ3JhcGgsIGNv
bnN0IERlcHJlY2F0ZWRTdHJpbmcgJnN0cmluZykKK3N0YXRpYyB2b2lkIGNyZWF0ZVBhcmFncmFw
aENvbnRlbnRzRnJvbVN0cmluZyhFbGVtZW50KiBwYXJhZ3JhcGgsIGNvbnN0IERlcHJlY2F0ZWRT
dHJpbmcmIHN0cmluZykKIHsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBwYXJhZ3JhcGgtPmRv
Y3VtZW50KCk7CisKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoc3RyaW5nLmlz
RW1wdHkoKSkgewogICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0ZUJsb2NrUGxh
Y2Vob2xkZXJFbGVtZW50KGRvY3VtZW50KSwgZWMpOwpAQCAtNDc5LDcgKzQ4Miw3IEBAIHN0YXRp
YyB2b2lkIGNyZWF0ZVBhcmFncmFwaENvbnRlbnRzRnJvbVMKIAogICAgICAgICAvLyBhcHBlbmQg
dGhlIG5vbi10YWIgdGV4dHVhbCBwYXJ0CiAgICAgICAgIGlmICghcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIGlmICh0YWJUZXh0ICE9ICIiKSB7CisgICAgICAgICAgICBpZiAoIXRhYlRleHQu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChjcmVh
dGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgdGFiVGV4dCksIGVjKTsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoZWMgPT0gMCk7CiAgICAgICAgICAgICAgICAgdGFiVGV4dCA9ICIiOwpAQCAtNDky
LDUyICs0OTUsNjggQEAgc3RhdGljIHZvaWQgY3JlYXRlUGFyYWdyYXBoQ29udGVudHNGcm9tUwog
CiAgICAgICAgIC8vIHRoZXJlIGlzIGEgdGFiIGFmdGVyIGV2ZXJ5IGVudHJ5LCBleGNlcHQgdGhl
IGxhc3QgZW50cnkKICAgICAgICAgLy8gKGlmIHRoZSBsYXN0IGNoYXJhY3RlciBpcyBhIHRhYiwg
dGhlIGxpc3QgZ2V0cyBhbiBleHRyYSBlbXB0eSBlbnRyeSkKLSAgICAgICAgaWYgKCF0YWJMaXN0
LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIXRhYkxpc3QuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgdGFiVGV4dCArPSAnXHQnOwotICAgICAgICB9IGVsc2UgaWYgKHRhYlRleHQgIT0gIiIpIHsK
KyAgICAgICAgZWxzZSBpZiAoIXRhYlRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBwYXJh
Z3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5FbGVtZW50KGRvY3VtZW50LCB0YWJUZXh0
KSwgZWMpOwogICAgICAgICAgICAgQVNTRVJUKGVjID09IDApOwogICAgICAgICB9CiAgICAgfQog
fQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQo
RG9jdW1lbnQgKmRvY3VtZW50LCBjb25zdCBEZXByZWNhdGVkU3RyaW5nICZ0ZXh0KQorUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KFJhbmdlKiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgaWYgKCFkb2N1bWVudCkKKyAgICBpZiAo
IWNvbnRleHQpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgTm9kZSogc3R5bGVOb2RlID0gY29u
dGV4dC0+c3RhcnROb2RlKCk7CisgICAgaWYgKCFzdHlsZU5vZGUpIHsKKyAgICAgICAgc3R5bGVO
b2RlID0gY29udGV4dC0+c3RhcnRQb3NpdGlvbigpLm5vZGUoKTsKKyAgICAgICAgaWYgKCFzdHls
ZU5vZGUpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBzdHlsZU5vZGUtPmRvY3VtZW50KCk7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAK
LSAgICBpZiAoIXRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgc3Ry
aW5nID0gdGV4dDsKKyAgICBpZiAodGV4dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmcmFn
bWVudC5yZWxlYXNlKCk7CiAKLSAgICAgICAgLy8gQnJlYWsgc3RyaW5nIGludG8gcGFyYWdyYXBo
cy4gRXh0cmEgbGluZSBicmVha3MgdHVybiBpbnRvIGVtcHR5IHBhcmFncmFwaHMuCi0gICAgICAg
IHN0cmluZy5yZXBsYWNlKCJcclxuIiwgIlxuIik7Ci0gICAgICAgIHN0cmluZy5yZXBsYWNlKCdc
cicsICdcbicpOwotICAgICAgICBEZXByZWNhdGVkU3RyaW5nTGlzdCBsaXN0ID0gRGVwcmVjYXRl
ZFN0cmluZ0xpc3Q6OnNwbGl0KCdcbicsIHN0cmluZywgdHJ1ZSk7IC8vIHRydWUgZ2V0cyB1cyBl
bXB0eSBzdHJpbmdzIGluIHRoZSBsaXN0Ci0gICAgICAgIHdoaWxlICghbGlzdC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgcyA9IGxpc3QuZmlyc3QoKTsKLSAgICAg
ICAgICAgIGxpc3QucG9wX2Zyb250KCk7Ci0KLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7Ci0gICAgICAgICAgICBp
ZiAocy5pc0VtcHR5KCkgJiYgbGlzdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBG
b3IgbGFzdCBsaW5lLCB1c2UgdGhlICJtYWdpYyBCUiIgcmF0aGVyIHRoYW4gYSBQLgotICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudE5TKHhodG1sTmFtZXNw
YWNlVVJJLCAiYnIiLCBlYyk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGVjID09IDApOwotICAg
ICAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEFwcGxlSW50ZXJj
aGFuZ2VOZXdsaW5lKTsgICAgICAgICAgICAKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50
KTsKLSAgICAgICAgICAgICAgICBjcmVhdGVQYXJhZ3JhcGhDb250ZW50c0Zyb21TdHJpbmcoZG9j
dW1lbnQsIGVsZW1lbnQuZ2V0KCksIHMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZnJh
Z21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQuZ2V0KCksIGVjKTsKKyAgICBEZXByZWNhdGVkU3Ry
aW5nIHN0cmluZyA9IHRleHQuZGVwcmVjYXRlZFN0cmluZygpOworICAgIHN0cmluZy5yZXBsYWNl
KCJcclxuIiwgIlxuIik7CisgICAgc3RyaW5nLnJlcGxhY2UoJ1xyJywgJ1xuJyk7CisKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc3R5bGVO
b2RlLT5yZW5kZXJlcigpOworICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+c3R5bGUoKS0+
cHJlc2VydmVOZXdsaW5lKCkpIHsKKyAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGRvY3Vt
ZW50LT5jcmVhdGVUZXh0Tm9kZShzdHJpbmcpLCBlYyk7CisgICAgICAgIEFTU0VSVChlYyA9PSAw
KTsKKyAgICAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICAvLyBC
cmVhayBzdHJpbmcgaW50byBwYXJhZ3JhcGhzLiBFeHRyYSBsaW5lIGJyZWFrcyB0dXJuIGludG8g
ZW1wdHkgcGFyYWdyYXBocy4KKyAgICBEZXByZWNhdGVkU3RyaW5nTGlzdCBsaXN0ID0gRGVwcmVj
YXRlZFN0cmluZ0xpc3Q6OnNwbGl0KCdcbicsIHN0cmluZywgdHJ1ZSk7IC8vIHRydWUgZ2V0cyB1
cyBlbXB0eSBzdHJpbmdzIGluIHRoZSBsaXN0CisgICAgd2hpbGUgKCFsaXN0LmlzRW1wdHkoKSkg
eworICAgICAgICBEZXByZWNhdGVkU3RyaW5nIHMgPSBsaXN0LmZpcnN0KCk7CisgICAgICAgIGxp
c3QucG9wX2Zyb250KCk7CisKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7CisgICAg
ICAgIGlmIChzLmlzRW1wdHkoKSAmJiBsaXN0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8g
Rm9yIGxhc3QgbGluZSwgdXNlIHRoZSAibWFnaWMgQlIiIHJhdGhlciB0aGFuIGEgUC4KKyAgICAg
ICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudE5TKHhodG1sTmFtZXNwYWNl
VVJJLCAiYnIiLCBlYyk7CiAgICAgICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgICAgICAg
ICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBcHBsZUludGVyY2hhbmdlTmV3bGlu
ZSk7ICAgICAgICAgICAgCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbGVtZW50ID0g
Y3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoZG9jdW1lbnQpOworICAgICAgICAgICAgY3Jl
YXRlUGFyYWdyYXBoQ29udGVudHNGcm9tU3RyaW5nKGVsZW1lbnQuZ2V0KCksIHMpOwogICAgICAg
ICB9CisgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50LmdldCgpLCBlYyk7Cisg
ICAgICAgIEFTU0VSVChlYyA9PSAwKTsKICAgICB9CiAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVh
c2UoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZy
b21Ob2RlTGlzdChEb2N1bWVudCAqZG9jdW1lbnQsIGNvbnN0IERlcHJlY2F0ZWRQdHJMaXN0PE5v
ZGU+ICZub2RlTGlzdCkKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21l
bnRGcm9tTm9kZXMoRG9jdW1lbnQgKmRvY3VtZW50LCBjb25zdCBWZWN0b3I8Tm9kZSo+JiBub2Rl
cykKIHsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gMDsKQEAgLTU0NSw5ICs1
NjQsMTAgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbQogICAgIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRvY3VtZW50LT5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBmb3IgKERlcHJl
Y2F0ZWRQdHJMaXN0SXRlcmF0b3I8Tm9kZT4gaShub2RlTGlzdCk7IGkuY3VycmVudCgpOyArK2kp
IHsKKyAgICBzaXplX3Qgc2l6ZSA9IG5vZGVzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNy
ZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KTsKLSAgICAgICAgZWxlbWVudC0+
YXBwZW5kQ2hpbGQoaS5jdXJyZW50KCksIGVjKTsKKyAgICAgICAgZWxlbWVudC0+YXBwZW5kQ2hp
bGQobm9kZXNbaV0sIGVjKTsKICAgICAgICAgQVNTRVJUKGVjID09IDApOwogICAgICAgICBmcmFn
bWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5yZWxlYXNlKCksIGVjKTsKICAgICAgICAgQVNTRVJU
KGVjID09IDApOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAkocmV2aXNpb24gMTU1MDIpCisrKyBXZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIkhUTUxJbnRlcmNoYW5nZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDE4ICszOCwx
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmFuZ2U7CiAgICAgY2xhc3MgU3Ry
aW5nOwogCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIERlcHJlY2F0ZWRQdHJMaXN0Owot
CiAgICAgZW51bSBFQ2hpbGRyZW5Pbmx5IHsgSW5jbHVkZU5vZGUsIENoaWxkcmVuT25seSB9Owog
Ci0gICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21UZXh0
KERvY3VtZW50KiwgY29uc3QgRGVwcmVjYXRlZFN0cmluZyAmdGV4dCk7Ci0gICAgUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoRG9jdW1lbnQqLCBj
b25zdCBTdHJpbmcgJm1hcmt1cCwgY29uc3QgU3RyaW5nICZiYXNlVVJMKTsKLSAgICBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU5vZGVMaXN0KERvY3VtZW50
KiwgY29uc3QgRGVwcmVjYXRlZFB0ckxpc3Q8Tm9kZT4gJm5vZGVMaXN0KTsKLQotICAgIERlcHJl
Y2F0ZWRTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlICpyYW5nZSwKLSAgICAgICAgRGVw
cmVjYXRlZFB0ckxpc3Q8Tm9kZT4gKm5vZGVzID0gMCwgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ug
PSBEb05vdEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpOwotICAgIERlcHJlY2F0ZWRTdHJpbmcgY3Jl
YXRlTWFya3VwKGNvbnN0IE5vZGUgKm5vZGUsIEVDaGlsZHJlbk9ubHkgPSBJbmNsdWRlTm9kZSwK
LSAgICAgICAgRGVwcmVjYXRlZFB0ckxpc3Q8Tm9kZT4gKm5vZGVzID0gMCwgRUFubm90YXRlRm9y
SW50ZXJjaGFuZ2UgPSBEb05vdEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpOworICAgIFBhc3NSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChSYW5nZSogY29udGV4
dCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgbWFya3Vw
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwpOworICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlRnJhZ21lbnRGcm9tTm9kZXMoRG9jdW1lbnQqLCBjb25zdCBWZWN0b3I8Tm9kZSo+
Jik7CisKKyAgICBEZXByZWNhdGVkU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSosCisg
ICAgICAgIFZlY3RvcjxOb2RlKj4qID0gMCwgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgPSBEb05v
dEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpOworICAgIERlcHJlY2F0ZWRTdHJpbmcgY3JlYXRlTWFy
a3VwKGNvbnN0IE5vZGUqLCBFQ2hpbGRyZW5Pbmx5ID0gSW5jbHVkZU5vZGUsCisgICAgICAgIFZl
Y3RvcjxOb2RlKj4qID0gMCwgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgPSBEb05vdEFubm90YXRl
Rm9ySW50ZXJjaGFuZ2UpOwogCiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24g
MTU1MDIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMDAsNiArMzAwLDkgQEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKGNvbnN0IFN0
cgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gRklYTUU6IEFkZCBzcGVjaWFsIGNh
c2UgZm9yIHdoZW4gd2UgaGFkIG9uZSB0ZXh0IGNoaWxkIGFuZCB3ZSBqdXN0IHdhbnQgdG8gc2V0
IGl0cyB0ZXh0PworICAgIC8vIEZJWE1FOiBBZGQgc3BlY2lhbCBjYXNlIGZvciBjYXNlcyB3aGVy
ZSB3ZSBjYW4gdXNlIHJlcGxhY2VDaGlsZD8KKwogICAgIHJlbW92ZUNoaWxkcmVuKCk7CiAgICAg
YXBwZW5kQ2hpbGQoZnJhZ21lbnQucmVsZWFzZSgpLCBlYyk7CiB9CkBAIC0zMTksOCArMzIyLDgg
QEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0IFN0cgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFdoeSBkb2Vzbid0IHRoaXMgaGF2ZSBjb2RlIHRv
IG1lcmdlIG5laWdoYm9yaW5nIHRleHQgbm9kZXMgdGhlCi0gICAgLy8gd2F5IHNldE91dGVyVGV4
dCBkb2VzPworICAgIC8vIEZJWE1FOiBBZGQgc3BlY2lhbCBjYXNlIGZvciB3aGVuIHdlIGhhZCBv
bmUgdGV4dCBjaGlsZCBhbmQgd2UganVzdCB3YW50IHRvIHNldCBpdHMgdGV4dD8KKyAgICAvLyBG
SVhNRTogV2h5IGRvZXNuJ3QgdGhpcyBoYXZlIGNvZGUgdG8gbWVyZ2UgbmVpZ2hib3JpbmcgdGV4
dCBub2RlcyB0aGUgd2F5IHNldE91dGVyVGV4dCBkb2VzPwogICAgIHBhcmVudC0+cmVwbGFjZUNo
aWxkKGZyYWdtZW50LnJlbGVhc2UoKSwgdGhpcywgZWMpOwogfQogCkBAIC0zMzksMzYgKzM0Miw1
OCBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRJbm5lclRleHQoY29uc3QgU3RyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHRha2Ugd2hpdGVzcGFj
ZSBjb2xsYXBzaW5nIGludG8gYWNjb3VudCBhdCBhbGwuCisgICAgLy8gRklYTUU6IEFkZCBzcGVj
aWFsIGNhc2UgZm9yIHdoZW4gd2UgaGFkIG9uZSB0ZXh0IGNoaWxkIGFuZCB3ZSBqdXN0IHdhbnQg
dG8gc2V0IGl0cyB0ZXh0PworICAgIC8vIEZJWE1FOiBBZGQgc3BlY2lhbCBjYXNlIGZvciBjYXNl
cyB3aGVyZSB3ZSBjYW4gdXNlIHJlcGxhY2VDaGlsZD8KKwogICAgIHJlbW92ZUNoaWxkcmVuKCk7
CiAKLSAgICAvLyBBZGQgdGV4dCBub2RlcyBhbmQgPGJyPiBlbGVtZW50cy4KICAgICBpbnQgbGVu
Z3RoID0gdGV4dC5sZW5ndGgoKTsKLSAgICBpZiAoIXRleHQuY29udGFpbnMoJ1xuJykgJiYgIXRl
eHQuY29udGFpbnMoJ1xyJykgJiYgbGVuZ3RoKQorICAgIGlmICghdGV4dC5jb250YWlucygnXG4n
KSAmJiAhdGV4dC5jb250YWlucygnXHInKSAmJiBsZW5ndGgpIHsKICAgICAgICAgYXBwZW5kQ2hp
bGQobmV3IFRleHQoZG9jdW1lbnQoKSwgdGV4dCksIGVjKTsKLSAgICBlbHNlIHsKLSAgICAgICAg
ZWMgPSAwOwotICAgICAgICBpbnQgbGluZVN0YXJ0ID0gMDsKLSAgICAgICAgVUNoYXIgcHJldiA9
IDA7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgIFVDaGFyIGMgPSB0ZXh0W2ldOwotICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJyB8fCBjID09
ICdccicpIHsKLSAgICAgICAgICAgICAgICBpZiAoaSA+IGxpbmVTdGFydCkgewotICAgICAgICAg
ICAgICAgICAgICBhcHBlbmRDaGlsZChuZXcgVGV4dChkb2N1bWVudCgpLCB0ZXh0LnN1YnN0cmlu
ZyhsaW5lU3RhcnQsIGkgLSBsaW5lU3RhcnQpKSwgZWMpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoZWMpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGlmICghKGMgPT0gJ1xuJyAmJiBpICE9IDAgJiYgcHJldiA9PSAn
XHInKSkgewotICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZChuZXcgSFRNTEJSRWxlbWVu
dChkb2N1bWVudCgpKSwgZWMpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZWMpCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGxpbmVTdGFydCA9IGkgKyAxOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
RklYTUU6IERvIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBkZXRlY3QgdGhpcyBldmVuIHdoZW4gdGhl
cmUncyBubyByZW5kZXJlcj8KKyAgICAvLyBGSVhNRTogQ2FuIHRoZSByZW5kZXJlciBiZSBvdXQg
b2YgZGF0ZSBoZXJlPyBEbyB3ZSBuZWVkIHRvIGNhbGwgdXBkYXRlUmVuZGVyaW5nPworICAgIC8v
IEZvciBleGFtcGxlLCBmb3IgdGhlIGNvbnRlbnRzIG9mIHRleHRhcmVhIGVsZW1lbnRzIHRoYXQg
YXJlIGRpc3BsYXk6bm9uZT8KKyAgICBSZW5kZXJPYmplY3QqIHIgPSByZW5kZXJlcigpOworICAg
IGlmIChyICYmIHItPnN0eWxlKCktPnByZXNlcnZlTmV3bGluZSgpKSB7CisgICAgICAgIGlmICgh
dGV4dC5jb250YWlucygnXHInKSkgeworICAgICAgICAgICAgYXBwZW5kQ2hpbGQobmV3IFRleHQo
ZG9jdW1lbnQoKSwgdGV4dCksIGVjKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICAvLyBGSVhNRTogU3RpY2sgd2l0aCBTdHJpbmcgb25jZSBpdCBoYXMgYSByZXBsYWNl
IHRoYXQgY2FuIGRvIHRoaXMuCisgICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgdGV4dFdpdGhDb25z
aXN0ZW50TGluZUJyZWFrcyA9IHRleHQuZGVwcmVjYXRlZFN0cmluZygpOworICAgICAgICB0ZXh0
V2l0aENvbnNpc3RlbnRMaW5lQnJlYWtzLnJlcGxhY2UoIlxyXG4iLCAiXG4iKTsKKyAgICAgICAg
dGV4dFdpdGhDb25zaXN0ZW50TGluZUJyZWFrcy5yZXBsYWNlKCdccicsICdcbicpOworICAgICAg
ICBhcHBlbmRDaGlsZChuZXcgVGV4dChkb2N1bWVudCgpLCB0ZXh0V2l0aENvbnNpc3RlbnRMaW5l
QnJlYWtzKSwgZWMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQWRkIHRleHQg
bm9kZXMgYW5kIDxicj4gZWxlbWVudHMuCisgICAgZWMgPSAwOworICAgIGludCBsaW5lU3RhcnQg
PSAwOworICAgIFVDaGFyIHByZXYgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgVUNoYXIgYyA9IHRleHRbaV07CisgICAgICAgIGlmIChjID09ICdc
bicgfHwgYyA9PSAnXHInKSB7CisgICAgICAgICAgICBpZiAoaSA+IGxpbmVTdGFydCkgeworICAg
ICAgICAgICAgICAgIGFwcGVuZENoaWxkKG5ldyBUZXh0KGRvY3VtZW50KCksIHRleHQuc3Vic3Ry
aW5nKGxpbmVTdGFydCwgaSAtIGxpbmVTdGFydCkpLCBlYyk7CisgICAgICAgICAgICAgICAgaWYg
KGVjKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoIShjID09ICdcbicgJiYgaSAhPSAwICYmIHByZXYgPT0gJ1xyJykpIHsKKyAgICAg
ICAgICAgICAgICBhcHBlbmRDaGlsZChuZXcgSFRNTEJSRWxlbWVudChkb2N1bWVudCgpKSwgZWMp
OworICAgICAgICAgICAgICAgIGlmIChlYykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcHJldiA9IGM7CisgICAgICAgICAgICBsaW5lU3Rh
cnQgPSBpICsgMTsKICAgICAgICAgfQotICAgICAgICBpZiAobGVuZ3RoID4gbGluZVN0YXJ0KQot
ICAgICAgICAgICAgYXBwZW5kQ2hpbGQobmV3IFRleHQoZG9jdW1lbnQoKSwgdGV4dC5zdWJzdHJp
bmcobGluZVN0YXJ0LCBsZW5ndGggLSBsaW5lU3RhcnQpKSwgZWMpOworICAgICAgICBwcmV2ID0g
YzsKICAgICB9CisgICAgaWYgKGxlbmd0aCA+IGxpbmVTdGFydCkKKyAgICAgICAgYXBwZW5kQ2hp
bGQobmV3IFRleHQoZG9jdW1lbnQoKSwgdGV4dC5zdWJzdHJpbmcobGluZVN0YXJ0LCBsZW5ndGgg
LSBsaW5lU3RhcnQpKSwgZWMpOwogfQogCiB2b2lkIEhUTUxFbGVtZW50OjpzZXRPdXRlclRleHQo
Y29uc3QgU3RyaW5nICZ0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL0NhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaAkocmV2aXNp
b24gMTU1MDIpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw3ICsyOCw2IEBACiAjZGVmaW5lIENhY2hlX2gKIAogI2luY2x1ZGUgIkNhY2hlUG9saWN5Lmgi
Ci0jaW5jbHVkZSAiRGVwcmVjYXRlZFB0ckxpc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwCShyZXZpc2lvbiAxNTUwMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzUsNCArNzM1LDI4IEBAIGludCBJbmxp
bmVUZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldChpbnQKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChtX3gsIDApLCAwKSkucmlnaHQo
KTsKIH0KIAorYm9vbCBJbmxpbmVUZXh0Qm94Ojpjb250YWluc0NhcmV0T2Zmc2V0KGludCBvZmZz
ZXQpIGNvbnN0Cit7CisgICAgLy8gT2Zmc2V0cyBiZWZvcmUgdGhlIGJveCBhcmUgbmV2ZXIgImlu
Ii4KKyAgICBpZiAob2Zmc2V0IDwgbV9zdGFydCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaW50IHBhc3RFbmQgPSBtX3N0YXJ0ICsgbV9sZW47CisKKyAgICAvLyBPZmZzZXRzIGluc2lk
ZSB0aGUgYm94IChub3QgYXQgZWl0aGVyIGVkZ2UpIGFyZSBhbHdheXMgImluIi4KKyAgICBpZiAo
b2Zmc2V0IDwgcGFzdEVuZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBPZmZzZXRz
IG91dHNpZGUgdGhlIGJveCBhcmUgYWx3YXlzICJvdXQiLgorICAgIGlmIChvZmZzZXQgPiBwYXN0
RW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBPZmZzZXRzIGF0IHRoZSBlbmQg
YXJlICJvdXQiIGZvciBsaW5lIGJyZWFrcyAodGhleSBhcmUgb24gdGhlIG5leHQgbGluZSkuCisg
ICAgaWYgKGlzTGluZUJyZWFrKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE9m
ZnNldHMgYXQgdGhlIGVuZCBhcmUgImluIiBmb3Igbm9ybWFsIGJveGVzIChidXQgdGhlIGNhbGxl
ciBoYXMgdG8gY2hlY2sgYWZmaW5pdHkpLgorICAgIHJldHVybiB0cnVlOworfQorCiB9CkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCShyZXZpc2lvbiAxNTUwMikKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw4
IEBAIHB1YmxpYzoKICAgICBpbnQgdGV4dFBvcygpIGNvbnN0OwogICAgIGludCBvZmZzZXRGb3JQ
b3NpdGlvbihpbnQgX3gsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMgPSB0cnVlKSBjb25zdDsK
ICAgICBpbnQgcG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3Q7CisKKyAgICBib29s
IGNvbnRhaW5zQ2FyZXRPZmZzZXQoaW50IG9mZnNldCkgY29uc3Q7IC8vIGZhbHNlIGZvciBvZmZz
ZXQgYWZ0ZXIgbGluZSBicmVhawogICAgIAogICAgIGludCBtX3N0YXJ0OwogICAgIHVuc2lnbmVk
IHNob3J0IG1fbGVuOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHJldmlzaW9uIDE1
NTAyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1NCwxNCArMzU0LDkgQEAgc3RhdGljIFJlbmRlck9iamVjdCAqbGFzdFJlbmRlcmVyT25Q
cmV2TAogICAgIHJldHVybiBsYXN0Q2hpbGQtPm9iamVjdCgpOwogfQogCi1ib29sIFJlbmRlclRl
eHQ6OmF0TGluZVdyYXAoSW5saW5lVGV4dEJveCAqYm94LCBpbnQgb2Zmc2V0KQorc3RhdGljIGlu
bGluZSBib29sIGF0TGluZVdyYXAoSW5saW5lVGV4dEJveCogYm94LCBpbnQgb2Zmc2V0KQogewot
ICAgIGlmIChib3gtPm5leHRUZXh0Qm94KCkgJiYgIWJveC0+bmV4dE9uTGluZSgpICYmIG9mZnNl
dCA9PSBib3gtPm1fc3RhcnQgKyBib3gtPm1fbGVuKSB7Ci0gICAgICAgIGlmICghc3R5bGUoKS0+
cHJlc2VydmVOZXdsaW5lKCkgfHwgIWJveC0+aXNMaW5lQnJlYWsoKSkKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGJv
eC0+bmV4dFRleHRCb3goKSAmJiAhYm94LT5uZXh0T25MaW5lKCkgJiYgb2Zmc2V0ID09IGJveC0+
bV9zdGFydCArIGJveC0+bV9sZW47CiB9CiAKIEludFJlY3QgUmVuZGVyVGV4dDo6Y2FyZXRSZWN0
KGludCBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbml0eSwgaW50ICpleHRyYVdpZHRoVG9FbmRPZkxp
bmUpCkBAIC0zNzIsNyArMzY3LDcgQEAgSW50UmVjdCBSZW5kZXJUZXh0OjpjYXJldFJlY3QoaW50
IG9mZnNldAogICAgIC8vIEZpbmQgdGhlIHRleHQgYm94IGZvciB0aGUgZ2l2ZW4gb2Zmc2V0CiAg
ICAgSW5saW5lVGV4dEJveCAqYm94ID0gMDsKICAgICBmb3IgKGJveCA9IGZpcnN0VGV4dEJveCgp
OyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewotICAgICAgICBpZiAoKG9mZnNldCA+
PSBib3gtPm1fc3RhcnQpICYmIChvZmZzZXQgPD0gYm94LT5tX3N0YXJ0ICsgYm94LT5tX2xlbikp
IHsKKyAgICAgICAgaWYgKGJveC0+Y29udGFpbnNDYXJldE9mZnNldChvZmZzZXQpKSB7CiAgICAg
ICAgICAgICAvLyBDaGVjayBpZiBkb3duc3RyZWFtIGFmZmluaXR5IHdvdWxkIG1ha2UgdXMgbW92
ZSB0byB0aGUgbmV4dCBsaW5lLgogICAgICAgICAgICAgaWYgKGF0TGluZVdyYXAoYm94LCBvZmZz
ZXQpICYmIGFmZmluaXR5ID09IERPV05TVFJFQU0pIHsKICAgICAgICAgICAgICAgICAvLyBVc2Ug
dGhlIG5leHQgdGV4dCBib3gKQEAgLTExMDksMjEgKzExMDQsMTkgQEAgdW5zaWduZWQgUmVuZGVy
VGV4dDo6Y2FyZXRNYXhSZW5kZXJlZE9mZgogICAgIHJldHVybiBsOwogfQogCi1JbmxpbmVCb3gg
KlJlbmRlclRleHQ6OmlubGluZUJveChpbnQgb2Zmc2V0LCBFQWZmaW5pdHkgYWZmaW5pdHkpCitJ
bmxpbmVCb3gqIFJlbmRlclRleHQ6OmlubGluZUJveChpbnQgb2Zmc2V0LCBFQWZmaW5pdHkgYWZm
aW5pdHkpCiB7Ci0gICAgZm9yIChJbmxpbmVUZXh0Qm94ICpib3ggPSBmaXJzdFRleHRCb3goKTsg
Ym94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKLSAgICAgICAgaWYgKG9mZnNldCA+PSBi
b3gtPm1fc3RhcnQgJiYgb2Zmc2V0IDw9IGJveC0+bV9zdGFydCArIGJveC0+bV9sZW4pIHsKKyAg
ICBmb3IgKElubGluZVRleHRCb3gqIGJveCA9IGZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJv
eC0+bmV4dFRleHRCb3goKSkgeworICAgICAgICBpZiAoYm94LT5jb250YWluc0NhcmV0T2Zmc2V0
KG9mZnNldCkpIHsKICAgICAgICAgICAgIGlmIChhdExpbmVXcmFwKGJveCwgb2Zmc2V0KSAmJiBh
ZmZpbml0eSA9PSBET1dOU1RSRUFNKQogICAgICAgICAgICAgICAgIHJldHVybiBib3gtPm5leHRU
ZXh0Qm94KCk7CiAgICAgICAgICAgICByZXR1cm4gYm94OwogICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBpZiAob2Zmc2V0IDwgYm94LT5tX3N0YXJ0KSB7CisgICAgICAgIGlmIChvZmZzZXQg
PCBib3gtPm1fc3RhcnQpCiAgICAgICAgICAgICAvLyBUaGUgb2Zmc2V0IHdlJ3JlIGxvb2tpbmcg
Zm9yIGlzIGJlZm9yZSB0aGlzIG5vZGUKICAgICAgICAgICAgIC8vIHRoaXMgbWVhbnMgdGhlIG9m
ZnNldCBtdXN0IGJlIGluIGNvbnRlbnQgdGhhdCBpcwogICAgICAgICAgICAgLy8gbm90IHJlbmRl
cmVkLgogICAgICAgICAgICAgcmV0dXJuIGJveC0+cHJldlRleHRCb3goKSA/IGJveC0+cHJldlRl
eHRCb3goKSA6IGZpcnN0VGV4dEJveCgpOwotICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHJl
dHVybiAwOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAkocmV2aXNpb24gMTU1MDIpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSwxMSAr
MTQ5LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBjYXJldE1heE9mZnNldCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgdW5zaWduZWQgY2FyZXRNYXhSZW5kZXJlZE9mZnNldCgpIGNvbnN0Owog
Ci0gICAgdmlydHVhbCBpbnQgcHJldmlvdXNPZmZzZXQgKGludCBjdXJyZW50KSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGludCBuZXh0T2Zmc2V0IChpbnQgY3VycmVudCkgY29uc3Q7CisgICAgdmlydHVh
bCBpbnQgcHJldmlvdXNPZmZzZXQoaW50IGN1cnJlbnQpIGNvbnN0OworICAgIHZpcnR1YWwgaW50
IG5leHRPZmZzZXQoaW50IGN1cnJlbnQpIGNvbnN0OwogICAgIAotICAgIGJvb2wgYXRMaW5lV3Jh
cChJbmxpbmVUZXh0Qm94ICpib3gsIGludCBvZmZzZXQpOwotICAgIGJvb2wgY29udGFpbnNSZXZl
cnNlZFRleHQoKSB7IHJldHVybiBtX2NvbnRhaW5zUmV2ZXJzZWRUZXh0OyB9CisgICAgYm9vbCBj
b250YWluc1JldmVyc2VkVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNSZXZlcnNlZFRl
eHQ7IH0KICAgICAKIHB1YmxpYzoKICAgICBJbmxpbmVUZXh0Qm94ICogZmluZE5leHRJbmxpbmVU
ZXh0Qm94KCBpbnQgb2Zmc2V0LCBpbnQgJnBvcyApIGNvbnN0OwpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmNwcAkocmV2aXNpb24gMTU1MDIpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1
LDcgQEAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRl
eHRBcmVhRWxlbWVudC5oIgpAQCAtMTU2LDYgKzE1Nyw4IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRy
b2w6OnVwZGF0ZUZyb21FbGVtZW4KICAgICAgICAgaWYgKHZhbHVlICE9IG9sZFRleHQgfHwgIW1f
ZGl2LT5oYXNDaGlsZE5vZGVzKCkpIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgICAgICAgICAgbV9kaXYtPnNldElubmVyVGV4dCh2YWx1ZSwgZWMpOworICAgICAgICAg
ICAgaWYgKHZhbHVlLmVuZHNXaXRoKCJcbiIpIHx8IHZhbHVlLmVuZHNXaXRoKCJcciIpKQorICAg
ICAgICAgICAgICAgIG1fZGl2LT5hcHBlbmRDaGlsZChuZXcgSFRNTEJSRWxlbWVudChkb2N1bWVu
dCgpKSwgZWMpOwogICAgICAgICAgICAgc2V0RWRpdGVkKGZhbHNlKTsKICAgICAgICAgfQogICAg
ICAgICBlbGVtZW50LT5zZXRWYWx1ZU1hdGNoZXNSZW5kZXJlcigpOwpAQCAtMjYwLDcgKzI2Myw3
IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OnN1YnRyZWVIYXNDaGFuZ2UKIFN0cmluZyBSZW5k
ZXJUZXh0Q29udHJvbDo6dGV4dCgpCiB7CiAgICAgaWYgKG1fZGl2KQotICAgICAgICByZXR1cm4g
bV9kaXYtPnRleHRDb250ZW50KHRydWUpLnJlcGxhY2UoJ1xcJywgYmFja3NsYXNoQXNDdXJyZW5j
eVN5bWJvbCgpKTsKKyAgICAgICAgcmV0dXJuIG1fZGl2LT50ZXh0Q29udGVudCgpLnJlcGxhY2Uo
J1xcJywgYmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbCgpKTsKICAgICByZXR1cm4gU3RyaW5nKCk7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwCShyZXZpc2lvbiAxNTUwMikKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL2JpZGkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDc2LDcgKzI0NzYsNyBAQCBCaWRp
SXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZUJyCiAKICAgICBpZiAobEJyZWFrID09
IHN0YXJ0ICYmICFsQnJlYWsub2JqLT5pc0JSKCkpIHsKICAgICAgICAgLy8gd2UganVzdCBhZGQg
YXMgbXVjaCBhcyBwb3NzaWJsZQotICAgICAgICBpZiAoc3R5bGUoKS0+d2hpdGVTcGFjZSgpID09
IFBSRSkgeworICAgICAgICBpZiAoc3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBEb24ndCByZWFsbHkgdW5kZXJzdGFuZCB0aGlzIGNhc2UuCiAgICAg
ICAgICAgICBpZiAocG9zICE9IDApIHsKICAgICAgICAgICAgICAgICBsQnJlYWsub2JqID0gbzsK
SW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkhUTUxWaWV3Lm0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L1dlYlZpZXcvV2ViSFRNTFZpZXcubQkocmV2aXNpb24gMTU1MDIpCisrKyBXZWJLaXQvV2ViVmll
dy9XZWJIVE1MVmlldy5tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCAq
X05TU29mdExpbmtpbmdHZXRGcmFtZXdvcmtGdW5jUHRyKAogCiBAaW50ZXJmYWNlIFdlYkhUTUxW
aWV3IChXZWJIVE1MVmlld0ZpbGVJbnRlcm5hbCkKIC0gKEJPT0wpX2ltYWdlRXhpc3RzQXRQYXRo
czooTlNBcnJheSAqKXBhdGhzOwotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZy
YWdtZW50RnJvbVBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgYWxsb3dQbGFp
blRleHQ6KEJPT0wpYWxsb3dQbGFpblRleHQgY2hvc2VQbGFpblRleHQ6KEJPT0wgKiljaG9zZVBs
YWluVGV4dDsKKy0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkIGluQ29udGV4dDooRE9NUmFuZ2Ug
Kiljb250ZXh0IGFsbG93UGxhaW5UZXh0OihCT09MKWFsbG93UGxhaW5UZXh0IGNob3NlUGxhaW5U
ZXh0OihCT09MICopY2hvc2VQbGFpblRleHQ7CiAtIChOU1N0cmluZyAqKV9wbGFpblRleHRGcm9t
UGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZDsKIC0gKHZvaWQpX3Bhc3RlV2l0
aFBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgYWxsb3dQbGFpblRleHQ6KEJP
T0wpYWxsb3dQbGFpblRleHQ7CiAtICh2b2lkKV9wYXN0ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9h
cmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQ7CkBAIC0zNjIsNyArMzYyLDEwIEBAIHZvaWQg
Kl9OU1NvZnRMaW5raW5nR2V0RnJhbWV3b3JrRnVuY1B0cigKICAgICByZXR1cm4gZWxlbWVudHM7
CiB9CiAKLS0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0
ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkIGFsbG93UGxhaW5UZXh0OihCT09MKWFs
bG93UGxhaW5UZXh0IGNob3NlUGxhaW5UZXh0OihCT09MICopY2hvc2VQbGFpblRleHQKKy0gKERP
TURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOihOU1Bh
c3RlYm9hcmQgKilwYXN0ZWJvYXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluQ29udGV4dDooRE9NUmFuZ2UgKiljb250ZXh0CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd1BsYWluVGV4dDooQk9PTClhbGxvd1Bs
YWluVGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hvc2VQ
bGFpblRleHQ6KEJPT0wgKiljaG9zZVBsYWluVGV4dAogewogICAgIE5TQXJyYXkgKnR5cGVzID0g
W3Bhc3RlYm9hcmQgdHlwZXNdOwogICAgICpjaG9zZVBsYWluVGV4dCA9IE5POwpAQCAtNDYzLDcg
KzQ2Niw4IEBAIHZvaWQgKl9OU1NvZnRMaW5raW5nR2V0RnJhbWV3b3JrRnVuY1B0cigKICAgICAK
ICAgICBpZiAoYWxsb3dQbGFpblRleHQgJiYgW3R5cGVzIGNvbnRhaW5zT2JqZWN0Ok5TU3RyaW5n
UGJvYXJkVHlwZV0pIHsKICAgICAgICAgKmNob3NlUGxhaW5UZXh0ID0gWUVTOwotICAgICAgICBy
ZXR1cm4gW1tzZWxmIF9icmlkZ2VdIGRvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDpbcGFzdGVib2Fy
ZCBzdHJpbmdGb3JUeXBlOk5TU3RyaW5nUGJvYXJkVHlwZV1dOworICAgICAgICByZXR1cm4gW1tz
ZWxmIF9icmlkZ2VdIGRvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDpbcGFzdGVib2FyZCBzdHJpbmdG
b3JUeXBlOk5TU3RyaW5nUGJvYXJkVHlwZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbkNvbnRleHQ6Y29udGV4dF07CiAgICAgfQogICAgIAogICAgIHJl
dHVybiBuaWw7CkBAIC01MDgsOCArNTEyLDEwIEBAIHZvaWQgKl9OU1NvZnRMaW5raW5nR2V0RnJh
bWV3b3JrRnVuY1B0cigKIAogLSAodm9pZClfcGFzdGVXaXRoUGFzdGVib2FyZDooTlNQYXN0ZWJv
YXJkICopcGFzdGVib2FyZCBhbGxvd1BsYWluVGV4dDooQk9PTClhbGxvd1BsYWluVGV4dAogewor
ICAgIERPTVJhbmdlICpyYW5nZSA9IFtzZWxmIF9zZWxlY3RlZFJhbmdlXTsKICAgICBCT09MIGNo
b3NlUGxhaW5UZXh0OwotICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW3NlbGYg
X2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJkIGFsbG93UGxhaW5UZXh0
OmFsbG93UGxhaW5UZXh0IGNob3NlUGxhaW5UZXh0OiZjaG9zZVBsYWluVGV4dF07CisgICAgRE9N
RG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbc2VsZiBfZG9jdW1lbnRGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkOnBhc3RlYm9hcmQKKyAgICAgICAgaW5Db250ZXh0OnJhbmdlIGFsbG93UGxhaW5U
ZXh0OmFsbG93UGxhaW5UZXh0IGNob3NlUGxhaW5UZXh0OiZjaG9zZVBsYWluVGV4dF07CiAgICAg
V2ViRnJhbWVCcmlkZ2UgKmJyaWRnZSA9IFtzZWxmIF9icmlkZ2VdOwogICAgIGlmIChmcmFnbWVu
dCAmJiBbc2VsZiBfc2hvdWxkSW5zZXJ0RnJhZ21lbnQ6ZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFu
Z2U6W3NlbGYgX3NlbGVjdGVkUmFuZ2VdIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25Q
YXN0ZWRdKSB7CiAgICAgICAgIFticmlkZ2UgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudDpm
cmFnbWVudCBzZWxlY3RSZXBsYWNlbWVudDpOTyBzbWFydFJlcGxhY2U6W3NlbGYgX2NhblNtYXJ0
UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRdIG1hdGNoU3R5bGU6Y2hvc2VQbGFpblRl
eHRdOwpAQCAtNTcxOSw5ICs1NzI1LDExIEBAIHN0YXRpYyBET01SYW5nZSAqdW5pb25ET01SYW5n
ZXMoRE9NUmFuZ2UKICAgICBpZiAoW3NlbGYgX2NhblByb2Nlc3NEcmFnV2l0aERyYWdnaW5nSW5m
bzpkcmFnZ2luZ0luZm9dKSB7CiAgICAgICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtk
cmFnZ2luZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXTsKICAgICAgICAgaWYgKFtzZWxmIF9pc01v
dmVEcmFnXSB8fCBbaW5uZXJCcmlkZ2UgaXNEcmFnQ2FyZXRSaWNobHlFZGl0YWJsZV0pIHsgCisg
ICAgICAgICAgICBET01SYW5nZSAqcmFuZ2UgPSBbaW5uZXJCcmlkZ2UgZHJhZ0NhcmV0RE9NUmFu
Z2VdOwogICAgICAgICAgICAgQk9PTCBjaG9zZVBsYWluVGV4dDsKLSAgICAgICAgICAgIERPTURv
Y3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW3NlbGYgX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFz
dGVib2FyZDpwYXN0ZWJvYXJkIGFsbG93UGxhaW5UZXh0OllFUyBjaG9zZVBsYWluVGV4dDomY2hv
c2VQbGFpblRleHRdOwotICAgICAgICAgICAgaWYgKGZyYWdtZW50ICYmIFtzZWxmIF9zaG91bGRJ
bnNlcnRGcmFnbWVudDpmcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpbaW5uZXJCcmlkZ2UgZHJh
Z0NhcmV0RE9NUmFuZ2VdIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25Ecm9wcGVkXSkg
eworICAgICAgICAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbc2VsZiBfZG9j
dW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmQKKyAgICAgICAgICAgICAgICBp
bkNvbnRleHQ6cmFuZ2UgYWxsb3dQbGFpblRleHQ6WUVTIGNob3NlUGxhaW5UZXh0OiZjaG9zZVBs
YWluVGV4dF07CisgICAgICAgICAgICBpZiAoZnJhZ21lbnQgJiYgW3NlbGYgX3Nob3VsZEluc2Vy
dEZyYWdtZW50OmZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGdpdmVuQWN0aW9uOldl
YlZpZXdJbnNlcnRBY3Rpb25Ecm9wcGVkXSkgewogICAgICAgICAgICAgICAgIFtbd2ViVmlldyBf
VUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uOldlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQgZm9yRHJhZ2dpbmdJbmZv
OmRyYWdnaW5nSW5mb107CiAgICAgICAgICAgICAgICAgaWYgKFtzZWxmIF9pc01vdmVEcmFnXSkg
ewogICAgICAgICAgICAgICAgICAgICBCT09MIHNtYXJ0TW92ZSA9IFtpbm5lckJyaWRnZSBzZWxl
Y3Rpb25HcmFudWxhcml0eV0gPT0gV2ViQnJpZGdlU2VsZWN0QnlXb3JkICYmIFtzZWxmIF9jYW5T
bWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9568</attachid>
            <date>2006-07-19 08:36:34 -0700</date>
            <delta_ts>2006-07-21 17:53:23 -0700</delta_ts>
            <desc>still-newer patch (work in progress)</desc>
            <filename>PreWrapPatch.txt</filename>
            <type>text/plain</type>
            <size>67076</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNTUyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA4IEBACisyMDA2LTA3LTE5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXQVJO
SU5HOiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworICAgICAgICAtIHJlbW92ZWQg
c29tZSB1c2VzIG9mIERlcHJlY2F0ZWRQdHJMaXN0IGluIHRoZSBtYXJrdXAgY29kZQorCisgICAg
ICAgICogYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tOiAoLVtET01IVE1MRG9jdW1lbnQgY3JlYXRl
RG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0Ol0pOgorICAgICAgICBVcGRhdGVkIGNhbGwgdG8gcGFz
cyBhIHJhbmdlIC0tIGluIHRoaXMgY2FzZSBpdCBpcyB0aGUgcmFuZ2Ugb2YgdGhlIGVudGlyZSBk
b2N1bWVudCwKKyAgICAgICAgc28gdGhpcyB3aWxsIG5vdCBoYW5kbGUgdGhlIHdoaXRlc3BhY2Ug
cHJvcGVybHkuCisKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oOiBB
ZGRlZCByYW5nZSBjb250ZXh0IHBhcmFtZXRlciB0byB0aGUKKyAgICAgICAgZG9jdW1lbnRGcmFn
bWVudFdpdGhUZXh0OiBtZXRob2QsIHNvIHdlIGNhbiBoYW5kbGUgd2hpdGVzcGFjZSBwcm9wZXJs
eS4KKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbToKKyAgICAgICAg
KC1bV2ViQ29yZUZyYW1lQnJpZGdlIG5vZGVzRnJvbUxpc3Q6XSk6IENoYW5nZWQgZnJvbSBEZXBy
ZWNhdGVkUHRyTGlzdCB0byBWZWN0b3IuCisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRnZSBt
YXJrdXBTdHJpbmdGcm9tTm9kZTpub2RlczpdKTogRGl0dG8uCisgICAgICAgICgtW1dlYkNvcmVG
cmFtZUJyaWRnZSBtYXJrdXBTdHJpbmdGcm9tUmFuZ2U6bm9kZXM6XSk6IERpdHRvLgorICAgICAg
ICAoLVtXZWJDb3JlRnJhbWVCcmlkZ2UgZG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0OmluQ29udGV4
dDpdKTogQWRkZWQgcmFuZ2UgY29udGV4dAorICAgICAgICBwYXJhbWV0ZXIgLS0gcGFzcyBpdCBv
biB0byBjcmVhdGVGcmFnbWVudEZyb21UZXh0LgorICAgICAgICAoLVtXZWJDb3JlRnJhbWVCcmlk
Z2UgZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdyYXBoczpdKTogQ2hhbmdlZCBmcm9t
CisgICAgICAgIERlcHJlY2F0ZWRQdHJMaXN0IHRvIFZlY3Rvci4KKyAgICAgICAgKC1bV2ViQ29y
ZUZyYW1lQnJpZGdlIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dDpzZWxlY3RSZXBsYWNlbWVudDpz
bWFydFJlcGxhY2U6XSk6CisgICAgICAgIFBhc3MgdGhlIHJhbmdlIG9mIHRoZSBjdXJyZW50IHNl
bGVjdGlvbiBhcyBjb250ZXh0IHdoZW4gY3JlYXRpbmcgdGhlIGZyYWdtZW50LgorCisgICAgICAg
ICogZG9tL1Bvc2l0aW9uLmNwcDogKFdlYkNvcmU6OlBvc2l0aW9uOjppblJlbmRlcmVkVGV4dCk6
IFJlcGxhY2UgcmFuZ2UgY2hlY2sgd2l0aAorICAgICAgICBhIGNhbGwgdG8gdGhlIG5ldyBjb250
YWluc0NhcmV0T2Zmc2V0IGZ1bmN0aW9uIC0tIGhlbHBzIG1ha2UgdGhlIGNhcmV0IHdvcmsgcmln
aHQgd2hlbgorICAgICAgICBpdCBpcyBwYXN0IHRoZSBlbmQgb2YgdGhlIGxhc3QgbGluZSBpbiBh
IHRleHRhcmVhLgorCisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNw
cDogKFdlYkNvcmU6Okluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICBV
c2UgYSB0ZXh0IG5vZGUgaW5zdGVhZCBvZiBhIGJyZWFrIGVsZW1lbnQgd2hlbiBpbnNlcnRpbmcg
YW5kIHRoZSBzdHlsZSBpcyBwcmVzZXJ2ZU5ld2xpbmUuCisKKyAgICAgICAgKiBlZGl0aW5nL0pT
RWRpdG9yLmNwcDogKFdlYkNvcmU6OmV4ZWNSZW1vdmVGb3JtYXQpOiBQYXNzIHRoZSBzZWxlY3Rp
b24gcmFuZ2UKKyAgICAgICAgdG8gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dC4KKworICAgICAgICAq
IGVkaXRpbmcvUmViYWxhbmNlV2hpdGVzcGFjZUNvbW1hbmQuY3BwOiAoV2ViQ29yZTo6UmViYWxh
bmNlV2hpdGVzcGFjZUNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICBEbyBub3RoaW5nIGlmIHRo
ZSBtb2RlIGlzIG5vdCBvbmUgdGhhdCBjb2xsYXBzZXMgd2hpdGVzcGFjZS4KKworICAgICAgICAq
IGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaDogUmVtb3ZlZCB1bnVzZWQgZGVzdHJ1
Y3RvciwgdHlwZSwgaXNTaW5nbGVUZXh0Tm9kZSwKKyAgICAgICAgaXNUcmVlRnJhZ21lbnQsIG1f
dHlwZSwgYW5kIGFkZGVkIGEgY29udGV4dCBwYXJhbWV0ZXIgdG8gaW5lcnRGcmFnbWVudEZvclRl
c3RSZW5kZXJpbmcuCisgICAgICAgIEFsc28gY2hhbmdlZCB0aGUgY29uc3RydWN0b3IgdG8gdGFr
ZSBhIHNlbGVjdGlvbiByYXRoZXIgdGhhbiBhIHBvaW50ZXIgdG8gdGhlIHJvb3QKKyAgICAgICAg
ZWRpdGFibGUgZWxlbWVudC4KKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VtZW50RnJhZ21lbnQ6OlJlcGxhY2Vt
ZW50RnJhZ21lbnQpOiBSZW1vdmVkIGNvZGUgdG8gc2V0IHVwIG1fdHlwZS4KKyAgICAgICAgQ29t
cHV0ZSByb290IGVkaXRhYmxlIGVsZW1lbnQgZnJvbSBwYXNzZWQtaW4gc2VsZWN0aW9uLiBVc2Vk
IHRoZSBzdGFydCBvZiB0aGUgc2VsZWN0aW9uCisgICAgICAgIGFzIGEgYmFzZSBub2RlIGZvciBz
dHlsZSBwdXJwb3NlcyBmb3IgdGhlIHRlc3QgcmVuZGVyaW5nLiBSZW1vdmVkIHRoZSBzcGVjaWFs
IGNhc2UKKyAgICAgICAgInNpbmdsZSB0ZXh0IG5vZGUiIGFsdGVybmF0aXZlIHRvIGNyZWF0ZUZy
YWdtZW50RnJvbVRleHQgaW4gdGhlIHBsYWluIHRleHQgY2FzZSwgc2luY2UKKyAgICAgICAgY3Jl
YXRlRnJhZ21lbnRGcm9tVGV4dCBub3cgaGFuZGxlcyB0aGF0IGNvcnJlY3RseS4KKyAgICAgICAg
KFdlYkNvcmU6OlJlcGxhY2VtZW50RnJhZ21lbnQ6Omluc2VydEZyYWdtZW50Rm9yVGVzdFJlbmRl
cmluZyk6IENvcHkgdGhlIHdoaXRlc3BhY2UKKyAgICAgICAgcHJvcGVydHkgZnJvbSB0aGUgc291
cmNlIGxvY2F0aW9uIHdoZW4gY3JlYXRpbmcgYSB0ZW1wb3JhcnkgZWxlbWVudCBmb3IgdGVzdCBy
ZW5kZXJpbmcuCisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9B
cHBseSk6IFVwZGF0ZSBmb3IgUmVwbGFjZW1lbnRGcmFnbWVudCBjaGFuZ2VzLAorICAgICAgICBh
bmQgYWxzbyB1c2Ugc3BhY2VzIGluc3RlYWQgb2Ygbm9uLWJyZWFraW5nIHNwYWNlcyB3aGVuIGRv
aW5nIHNtYXJ0IHBhc3RlIGlmIHRoZQorICAgICAgICBjb250ZXh0IGlzIG9uZSB3aGVyZSB3ZSBk
byBub3QgY29sbGFwc2Ugd2hpdGUgc3BhY2UuCisKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5o
OiBVc2UgVmVjdG9yIGluc3RlYWQgb2YgRGVwcmVjYXRlZFB0ckxpc3QuIENoYW5nZSB0aGUKKyAg
ICAgICAgY3JlYXRlRnJhZ21lbnRGcm9tVGV4dCBmdW5jdGlvbiB0byB0YWtlIGEgcmFuZ2UgZm9y
IGNvbnRleHQgaW5zdGVhZCBvZiBhIGRvY3VtZW50LgorICAgICAgICAqIGVkaXRpbmcvbWFya3Vw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cCk6IFVzZSBWZWN0b3IgaW5zdGVhZCBvZiBE
ZXByZWNhdGVkUHRyTGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFyYWdyYXBoQ29udGVudHNGcm9tU3RyaW5nKTog
UmVtb3ZlIHVubmVlZGVkIGRvY3VtZW50IHBhcmFtZXRlcgorICAgICAgICBhbmQgY2hhbmdlZCBh
IGNvdXBsZSBwbGFjZXMgdG8gdXNlIGlzRW1wdHkgaW5zdGVhZCBvZiBjb21wYXJpbmcgd2l0aCAi
Ii4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbVRleHQpOiBHaXZlbiB0aGUg
bmV3IGNvbnRleHQgcGFyYW1ldGVyLCBpZiB0aGUgY29udGV4dAorICAgICAgICBpcyBvbmUgdGhh
dCBwcmVzZXJ2ZXMgbmV3bGluZXMsIHRoZW4gdXNlICJcbiIgaW5zdGVhZCBvZiA8YnI+IGVsZW1l
bnRzLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGcm9tTm9kZXMpOiBVc2UgVmVj
dG9yIGluc3RlYWQgb2YgRGVwcmVjYXRlZFB0ckxpc3QuCisKKyAgICAgICAgKiBodG1sL0hUTUxF
bGVtZW50LmNwcDogKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRJbm5lclRleHQpOiBEbyBub3Qg
dXNlIDxicj4KKyAgICAgICAgZWxlbWVudHMgaWYgdGhlIGNvbnRleHQgb2YgdGhpcyBub2RlIGlz
IG9uZSB3aGVyZSB3ZSBwcmVzZXJ2ZSBuZXdsaW5lcy4KKworICAgICAgICAqIHJlbmRlcmluZy9J
bmxpbmVUZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOiAo
V2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29udGFpbnNDYXJldE9mZnNldCk6CisgICAgICAgIEFk
ZGVkLiBJbXBsZW1lbnRzIHRoZSBhcHByb3ByaWF0ZSBydWxlIGZvciBkZXRlcm1pbmluZyBpZiBh
IGNhcmV0IHBvc2l0aW9uIGlzCisgICAgICAgIGluIHRoaXMgbGluZSBvciBub3QuIFJldHVybnMg
dHJ1ZSBmb3IgYm90aCBvbmUgbGluZSBhbmQgdGhlIG5leHQgaW4gY2FzZXMgd2hlcmUKKyAgICAg
ICAgYWZmaW5pdHkgbXVzdCBiZSBjb25zaWRlcmVkIHRvIGRldGVybWluZSB3aGljaCBsaW5lIHRo
ZSBjYXJldCBpcyBvbi4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6IE1ha2Ug
YXRMaW5lV3JhcCBubyBsb25nZXIgYmUgYSBtZW1iZXIgZnVuY3Rpb24uCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXRMaW5lV3JhcCk6IFJl
bW92ZSBzcGVjaWFsIHJ1bGUgYWJvdXQgcHJlc2VydmVOZXdsaW5lIGFuZCBpc0xpbmVCcmVhaywK
KyAgICAgICAgd2hpY2ggd2lsbCBubyBsb25nZXIgYXBwbHkgZHVlIHRvIHRoZSBuZXcgY29udGFp
bnNDYXJldE9mZnNldCBmdW5jdGlvbiBsb2dpYy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OmNhcmV0UmVjdCk6IFVzZSBjb250YWluc0NhcmV0T2Zmc2V0LgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dDo6aW5saW5lQm94KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRy
b2w6OnVwZGF0ZUZyb21FbGVtZW50KTogQWRkIGEgPGJyPiBhZnRlciBzZXR0aW5nIHRoZQorICAg
ICAgICB0ZXh0IHRvIHByZXZlbnQgdGhlICJcbiIgYSB0aGUgZW5kIG9mIHRoZSB0ZXh0IGZyb20g
Y29sbGFwc2luZy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjp0ZXh0KTog
Q2FsbCB0ZXh0Q29udGVudCB3aXRoIHRoZSBwYXJhbWV0ZXIgZmFsc2UKKyAgICAgICAgc28gaXQg
d2lsbCBub3QgaW5jbHVkZSBuZXdsaW5lcyBmb3IgPGJyPiBlbGVtZW50cy4gTm93IHRoZSBvbmx5
IDxicj4gZWxlbWVudAorICAgICAgICB0aGF0IHdpbGwgZXZlciBiZSBpbiB0aGUgc2hhZG93IERP
TSB0cmVlIGlzIHRoZSBvbmUgdG8gcHJldmVudCBjb2xsYXBzaW5nLCBhbmQKKyAgICAgICAgdGhh
dCBvbmUgc2hvdWxkIG5vdCBzaG93IHVwIGluIHRoZSB0ZXh0IHZhbHVlLgorCisgICAgICAgICog
cmVuZGVyaW5nL2JpZGkuY3BwOiAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZUJy
ZWFrKTogVG9vayBhIHJ1bGUKKyAgICAgICAgdGhhdCBzcGVjaWZpY2FsbHkgY2FsbGVkIG91dCB0
aGUgcHJlIHdoaXRlc3BhY2UgbW9kZSBhbmQgbWFkZSBpdCB3b3JrIGZvciBhbGwKKyAgICAgICAg
dGhlIG1vZGVzIHRoYXQgcHJlc2VydmUgbmV3bGluZXMuIFRoaXMgbWFrZXMgc3VyZSB3ZSBnZXQg
YSBsYXN0IGxpbmUgYm94IGZvcgorICAgICAgICB0ZXh0IGFmdGVyIHRoZSBsYXN0ICJcbiIgZXZl
biBpbiBjYXNlcyB3aGVyZSB0aGVyZSBpcyBubyA8YnI+IGFmdGVyd2FyZC4KKworICAgICAgICAq
IGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZWxldGVTZWxlY3Rpb25Db21tYW5kOjpmaXh1cFdoaXRlc3BhY2UpOgorICAgICAgICAqIGVkaXRp
bmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgQWRk
ZWQgYXNzZXJ0aW9ucyB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgZG8gYW55dGhpbmcgd2hlbiB3ZSdy
ZSBub3QgY29sbGFwc2luZworICAgICAgICB3aGl0ZXNwYWNlLgorCisgICAgICAgICogZWRpdGlu
Zy9IVE1MSW50ZXJjaGFuZ2UuY3BwOiBSZW1vdmVkIG9ic29sZXRlIGNvbW1lbnQuCisKKyAgICAg
ICAgKiBsb2FkZXIvQ2FjaGUuaDogUmVtb3ZlZCBhIHN0cmF5IGluY2x1ZGUuCisKIDIwMDYtMDct
MTkgIERhdmlkIEhhcnJpc29uICA8aGFycmlzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFRpbSBIYXRjaGVyLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0JKHJldmlz
aW9uIDE1NTIzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDIyICsyNiwyMyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJE
T01IVE1MLmgiCiAKKyNpbXBvcnQgIkRPTUV4dGVuc2lvbnMuaCIKICNpbXBvcnQgIkRPTUhUTUxJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVByaXZhdGUu
aCIKLSNpbXBvcnQgIkRPTUV4dGVuc2lvbnMuaCIKICNpbXBvcnQgIkRvY3VtZW50RnJhZ21lbnQu
aCIKICNpbXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKKyNpbXBvcnQgIkZyYW1lVmlldy5oIgog
I2ltcG9ydCAiSFRNTEFwcGxldEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxBcmVhRWxlbWVudC5o
IgorI2ltcG9ydCAiSFRNTEJSRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEJhc2VFbGVtZW50Lmgi
CiAjaW1wb3J0ICJIVE1MQmFzZUZvbnRFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MQm9keUVsZW1l
bnQuaCIKLSNpbXBvcnQgIkhUTUxCUkVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxCdXR0b25FbGVt
ZW50LmgiCisjaW1wb3J0ICJIVE1MRExpc3RFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MRGlyZWN0
b3J5RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTERpdkVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxE
TGlzdEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxEb2N1bWVudC5oIgogI2ltcG9ydCAiSFRNTEVt
YmVkRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgpAQCAtNDksNDcg
KzUwLDQ3IEBACiAjaW1wb3J0ICJIVE1MRm9ybUNvbGxlY3Rpb24uaCIKICNpbXBvcnQgIkhUTUxG
b3JtRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgorI2ltcG9ydCAi
SFRNTEhSRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEhlYWRFbGVtZW50LmgiCiAjaW1wb3J0ICJI
VE1MSGVhZGluZ0VsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxIUkVsZW1lbnQuaCIKICNpbXBvcnQg
IkhUTUxIdG1sRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbXBv
cnQgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxJc0luZGV4RWxlbWVudC5oIgor
I2ltcG9ydCAiSFRNTExJRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTExhYmVsRWxlbWVudC5oIgog
I2ltcG9ydCAiSFRNTExlZ2VuZEVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxMSUVsZW1lbnQuaCIK
ICNpbXBvcnQgIkhUTUxMaW5rRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE1hcEVsZW1lbnQuaCIK
ICNpbXBvcnQgIkhUTUxNZW51RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE1ldGFFbGVtZW50Lmgi
CiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKLSNpbXBvcnQgIkhUTUxPYmplY3RFbGVtZW50LmgiCiAj
aW1wb3J0ICJIVE1MT0xpc3RFbGVtZW50LmgiCisjaW1wb3J0ICJIVE1MT2JqZWN0RWxlbWVudC5o
IgogI2ltcG9ydCAiSFRNTE9wdEdyb3VwRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE9wdGlvbkVs
ZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgotI2ltcG9ydCAiSFRN
TFBhcmFtRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTFBhcmFncmFwaEVsZW1lbnQuaCIKKyNpbXBv
cnQgIkhUTUxQYXJhbUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxQcmVFbGVtZW50LmgiCiAjaW1w
b3J0ICJIVE1MU2NyaXB0RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTFNlbGVjdEVsZW1lbnQuaCIK
ICNpbXBvcnQgIkhUTUxTdHlsZUVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxUYWJsZUVsZW1lbnQu
aCIKICNpbXBvcnQgIkhUTUxUYWJsZUNhcHRpb25FbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MVGFi
bGVDZWxsRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTFRhYmxlQ29sRWxlbWVudC5oIgorI2ltcG9y
dCAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTFRhYmxlUm93RWxlbWVudC5oIgog
I2ltcG9ydCAiSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUZXh0QXJl
YUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUaXRsZUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxV
TGlzdEVsZW1lbnQuaCIKKyNpbXBvcnQgIktVUkwuaCIKICNpbXBvcnQgIk5hbWVOb2RlTGlzdC5o
IgotI2ltcG9ydCAibWFya3VwLmgiCisjaW1wb3J0ICJSYW5nZS5oIgogI2ltcG9ydCAiUmVuZGVy
VGV4dENvbnRyb2wuaCIKLSNpbXBvcnQgIkZyYW1lVmlldy5oIgogI2ltcG9ydCAiY3NzaGVscGVy
LmgiCi0jaW1wb3J0ICJLVVJMLmgiCisjaW1wb3J0ICJtYXJrdXAuaCIKIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtNjA1LDcgKzYwNiw4
IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIC0gKERPTURvY3VtZW50RnJhZ21lbnQg
KiljcmVhdGVEb2N1bWVudEZyYWdtZW50V2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dAogewotICAg
IHJldHVybiBbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRGcmFnbWVudFdpdGg6Y3JlYXRl
RnJhZ21lbnRGcm9tVGV4dChbc2VsZiBfZG9jdW1lbnRdLCBEZXByZWNhdGVkU3RyaW5nOjpmcm9t
TlNTdHJpbmcodGV4dCkpLmdldCgpXTsKKyAgICAvLyBGSVhNRTogU2luY2UgdGhpcyBpcyBub3Qg
YSBjb250ZXh0dWFsIGZyYWdtZW50LCBpdCB3b24ndCBoYW5kbGUgd2hpdGVzcGFjZSBwcm9wZXJs
eS4KKyAgICByZXR1cm4gW0RPTURvY3VtZW50RnJhZ21lbnQgX2RvY3VtZW50RnJhZ21lbnRXaXRo
OmNyZWF0ZUZyYWdtZW50RnJvbVRleHQoW3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlUmFuZ2UoKS5n
ZXQoKSwgdGV4dCkuZ2V0KCldOwogfQogCiBAZW5kCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMv
V2ViQ29yZUZyYW1lQnJpZGdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dl
YkNvcmVGcmFtZUJyaWRnZS5oCShyZXZpc2lvbiAxNTUyMykKKysrIFdlYkNvcmUvYnJpZGdlL21h
Yy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDE4LDcgKzQxOCw3IEBA
IHR5cGVkZWYgZW51bSB7CiAtIChOU1JhbmdlKWNvbnZlcnRET01SYW5nZVRvTlNSYW5nZTooRE9N
UmFuZ2UgKilyYW5nZTsKIAogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWRvY3VtZW50RnJhZ21l
bnRXaXRoTWFya3VwU3RyaW5nOihOU1N0cmluZyAqKW1hcmt1cFN0cmluZyBiYXNlVVJMU3RyaW5n
OihOU1N0cmluZyAqKWJhc2VVUkxTdHJpbmc7Ci0tIChET01Eb2N1bWVudEZyYWdtZW50ICopZG9j
dW1lbnRGcmFnbWVudFdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQ7CistIChET01Eb2N1bWVudEZy
YWdtZW50ICopZG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQgaW5Db250
ZXh0OihET01SYW5nZSAqKWNvbnRleHQ7CiAtIChET01Eb2N1bWVudEZyYWdtZW50ICopZG9jdW1l
bnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdyYXBoczooTlNBcnJheSAqKW5vZGVzOwogCiAtICh2
b2lkKXJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQ6KERPTURvY3VtZW50RnJhZ21lbnQgKilm
cmFnbWVudCBzZWxlY3RSZXBsYWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJl
cGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlIG1hdGNoU3R5bGU6KEJPT0wpbWF0Y2hTdHlsZTsKSW5k
ZXg6IFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQkocmV2aXNpb24gMTU1
MjMpCisrKyBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC03NzEsMTkgKzc3MSwxOSBAQCBzdGF0aWMgaW5saW5lIFdlYkNvcmVGcmFtZUJy
aWRnZSAqYnJpZGdlCiAgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50VHlwZVN0cmluZygpICsg
bWFya3VwU3RyaW5nOwogfQogCi0tIChOU0FycmF5ICopbm9kZXNGcm9tTGlzdDooRGVwcmVjYXRl
ZFB0ckxpc3Q8Tm9kZT4gKilub2RlTGlzdAorLSAoTlNBcnJheSAqKW5vZGVzRnJvbUxpc3Q6KFZl
Y3RvcjxOb2RlKj4gKilub2Rlc1ZlY3RvcgogewotICAgIE5TTXV0YWJsZUFycmF5ICpub2RlcyA9
IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpub2RlTGlzdC0+Y291bnQoKV07Ci0g
ICAgZm9yIChEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPE5vZGU+IGkoKm5vZGVMaXN0KTsgaS5j
dXJyZW50KCk7ICsraSkKLSAgICAgICAgW25vZGVzIGFkZE9iamVjdDpbRE9NTm9kZSBfbm9kZVdp
dGg6aS5jdXJyZW50KCldXTsKLQorICAgIHNpemVfdCBzaXplID0gbm9kZXNWZWN0b3ItPnNpemUo
KTsKKyAgICBOU011dGFibGVBcnJheSAqbm9kZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRo
Q2FwYWNpdHk6c2l6ZV07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisg
ICAgICAgIFtub2RlcyBhZGRPYmplY3Q6W0RPTU5vZGUgX25vZGVXaXRoOigqbm9kZXNWZWN0b3Ip
W2ldXV07CiAgICAgcmV0dXJuIG5vZGVzOwogfQogCiAtIChOU1N0cmluZyAqKW1hcmt1cFN0cmlu
Z0Zyb21Ob2RlOihET01Ob2RlICopbm9kZSBub2RlczooTlNBcnJheSAqKilub2RlcwogewogICAg
IC8vIEZJWE1FOiBUaGlzIGlzIG5ldmVyICJmb3IgaW50ZXJjaGFuZ2UiLiBJcyB0aGF0IHJpZ2h0
PyBTZWUgdGhlIG5leHQgbWV0aG9kLgotICAgIERlcHJlY2F0ZWRQdHJMaXN0PE5vZGU+IG5vZGVM
aXN0OworICAgIFZlY3RvcjxOb2RlKj4gbm9kZUxpc3Q7CiAgICAgTlNTdHJpbmcgKm1hcmt1cFN0
cmluZyA9IGNyZWF0ZU1hcmt1cChbbm9kZSBfbm9kZV0sIEluY2x1ZGVOb2RlLCBub2RlcyA/ICZu
b2RlTGlzdCA6IDApLmdldE5TU3RyaW5nKCk7CiAgICAgaWYgKG5vZGVzKQogICAgICAgICAqbm9k
ZXMgPSBbc2VsZiBub2Rlc0Zyb21MaXN0OiZub2RlTGlzdF07CkBAIC03OTQsNyArNzk0LDcgQEAg
c3RhdGljIGlubGluZSBXZWJDb3JlRnJhbWVCcmlkZ2UgKmJyaWRnZQogLSAoTlNTdHJpbmcgKilt
YXJrdXBTdHJpbmdGcm9tUmFuZ2U6KERPTVJhbmdlICopcmFuZ2Ugbm9kZXM6KE5TQXJyYXkgKiop
bm9kZXMKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhbHdheXMgImZvciBpbnRlcmNoYW5nZSIu
IElzIHRoYXQgcmlnaHQ/IFNlZSB0aGUgcHJldmlvdXMgbWV0aG9kLgotICAgIERlcHJlY2F0ZWRQ
dHJMaXN0PE5vZGU+IG5vZGVMaXN0OworICAgIFZlY3RvcjxOb2RlKj4gbm9kZUxpc3Q7CiAgICAg
TlNTdHJpbmcgKm1hcmt1cFN0cmluZyA9IGNyZWF0ZU1hcmt1cChbcmFuZ2UgX3JhbmdlXSwgbm9k
ZXMgPyAmbm9kZUxpc3QgOiAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKS5nZXROU1N0cmluZygp
OwogICAgIGlmIChub2RlcykKICAgICAgICAgKm5vZGVzID0gW3NlbGYgbm9kZXNGcm9tTGlzdDom
bm9kZUxpc3RdOwpAQCAtMTk0MSwyOCArMTk0MSwyMyBAQCBzdGF0aWMgSFRNTEZvcm1FbGVtZW50
ICpmb3JtRWxlbWVudEZyb21ECiAgICAgICAgIERlcHJlY2F0ZWRTdHJpbmc6OmZyb21OU1N0cmlu
ZyhtYXJrdXBTdHJpbmcpLCBEZXByZWNhdGVkU3RyaW5nOjpmcm9tTlNTdHJpbmcoYmFzZVVSTFN0
cmluZykpLmdldCgpXTsKIH0KIAotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWRvY3VtZW50RnJh
Z21lbnRXaXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0CistIChET01Eb2N1bWVudEZyYWdtZW50ICop
ZG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQgaW5Db250ZXh0OihET01S
YW5nZSAqKWNvbnRleHQKIHsKLSAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPmRvY3VtZW50
KCkgfHwgIXRleHQpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHJldHVybiBbRE9NRG9j
dW1lbnRGcmFnbWVudCBfZG9jdW1lbnRGcmFnbWVudFdpdGg6Y3JlYXRlRnJhZ21lbnRGcm9tVGV4
dChtX2ZyYW1lLT5kb2N1bWVudCgpLCBEZXByZWNhdGVkU3RyaW5nOjpmcm9tTlNTdHJpbmcodGV4
dCkpLmdldCgpXTsKKyAgICByZXR1cm4gW0RPTURvY3VtZW50RnJhZ21lbnQgX2RvY3VtZW50RnJh
Z21lbnRXaXRoOmNyZWF0ZUZyYWdtZW50RnJvbVRleHQoW2NvbnRleHQgX3JhbmdlXSwgRGVwcmVj
YXRlZFN0cmluZzo6ZnJvbU5TU3RyaW5nKHRleHQpKS5nZXQoKV07CiB9CiAKIC0gKERPTURvY3Vt
ZW50RnJhZ21lbnQgKilkb2N1bWVudEZyYWdtZW50V2l0aE5vZGVzQXNQYXJhZ3JhcGhzOihOU0Fy
cmF5ICopbm9kZXMKIHsKLSAgICBOU0VudW1lcmF0b3IgKm5vZGVFbnVtID0gW25vZGVzIG9iamVj
dEVudW1lcmF0b3JdOwotICAgIERPTU5vZGUgKm5vZGU7Ci0gICAgRGVwcmVjYXRlZFB0ckxpc3Q8
Tm9kZT4gbm9kZUxpc3Q7Ci0gICAgCiAgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5kb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICB3aGlsZSAoKG5vZGUgPSBbbm9k
ZUVudW0gbmV4dE9iamVjdF0pKSB7Ci0gICAgICAgIG5vZGVMaXN0LmFwcGVuZChbbm9kZSBfbm9k
ZV0pOwotICAgIH0KKyAgICBOU0VudW1lcmF0b3IgKm5vZGVFbnVtID0gW25vZGVzIG9iamVjdEVu
dW1lcmF0b3JdOworICAgIFZlY3RvcjxOb2RlKj4gbm9kZXNWZWN0b3I7CisgICAgRE9NTm9kZSAq
bm9kZTsKKyAgICB3aGlsZSAoKG5vZGUgPSBbbm9kZUVudW0gbmV4dE9iamVjdF0pKQorICAgICAg
ICBub2Rlc1ZlY3Rvci5hcHBlbmQoW25vZGUgX25vZGVdKTsKICAgICAKLSAgICByZXR1cm4gW0RP
TURvY3VtZW50RnJhZ21lbnQgX2RvY3VtZW50RnJhZ21lbnRXaXRoOmNyZWF0ZUZyYWdtZW50RnJv
bU5vZGVMaXN0KG1fZnJhbWUtPmRvY3VtZW50KCksIG5vZGVMaXN0KS5nZXQoKV07CisgICAgcmV0
dXJuIFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpjcmVhdGVGcmFn
bWVudEZyb21Ob2RlcyhtX2ZyYW1lLT5kb2N1bWVudCgpLCBub2Rlc1ZlY3RvcikuZ2V0KCldOwog
fQogCiAtICh2b2lkKXJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQ6KERPTURvY3VtZW50RnJh
Z21lbnQgKilmcmFnbWVudCBzZWxlY3RSZXBsYWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNlbWVu
dCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlIG1hdGNoU3R5bGU6KEJPT0wpbWF0Y2hT
dHlsZQpAQCAtMTk4OSw3ICsxOTg0LDkgQEAgc3RhdGljIEhUTUxGb3JtRWxlbWVudCAqZm9ybUVs
ZW1lbnRGcm9tRAogCiAtICh2b2lkKXJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dDooTlNTdHJpbmcg
Kil0ZXh0IHNlbGVjdFJlcGxhY2VtZW50OihCT09MKXNlbGVjdFJlcGxhY2VtZW50IHNtYXJ0UmVw
bGFjZTooQk9PTClzbWFydFJlcGxhY2UKIHsKLSAgICBbc2VsZiByZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50OltzZWxmIGRvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDp0ZXh0XSBzZWxlY3RSZXBs
YWNlbWVudDpzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6c21hcnRSZXBsYWNlIG1hdGNo
U3R5bGU6WUVTXTsKKyAgICBbc2VsZiByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50OltzZWxm
IGRvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDp0ZXh0CisgICAgICAgIGluQ29udGV4dDpbRE9NUmFu
Z2UgX3JhbmdlV2l0aDptX2ZyYW1lLT5zZWxlY3Rpb24oKS50b1JhbmdlKCkuZ2V0KCldXQorICAg
ICAgICBzZWxlY3RSZXBsYWNlbWVudDpzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6c21h
cnRSZXBsYWNlIG1hdGNoU3R5bGU6WUVTXTsKIH0KIAogLSAoYm9vbCljYW5JbmNyZWFzZVNlbGVj
dGlvbkxpc3RMZXZlbApJbmRleDogV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkocmV2aXNpb24gMTU1MjMpCisrKyBXZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBib29s
IFBvc2l0aW9uOjppblJlbmRlcmVkVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICAvLyBub3QgcmVu
ZGVyZWQuIFJldHVybiBmYWxzZS4KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQotICAgICAgICBpZiAob2Zmc2V0KCkgPj0gYm94LT5tX3N0YXJ0ICYmIG9mZnNldCgpIDw9IGJv
eC0+bV9zdGFydCArIGJveC0+bV9sZW4pCisgICAgICAgIGlmIChib3gtPmNvbnRhaW5zQ2FyZXRP
ZmZzZXQob2Zmc2V0KCkpKQogICAgICAgICAgICAgLy8gUmV0dXJuIGZhbHNlIGZvciBvZmZzZXRz
IGluc2lkZSBjb21wb3NlZCBjaGFyYWN0ZXJzLgogICAgICAgICAgICAgcmV0dXJuIG9mZnNldCgp
ID09IDAgfHwgb2Zmc2V0KCkgPT0gdGV4dFJlbmRlcmVyLT5uZXh0T2Zmc2V0KHRleHRSZW5kZXJl
ci0+cHJldmlvdXNPZmZzZXQob2Zmc2V0KCkpKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2VkaXRp
bmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDE1NTIzKQorKysgV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcwLDgg
KzM3MCwxNiBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpzZXROb2RlQXR0cmliCiAgICAg
YXBwbHlDb21tYW5kVG9Db21wb3NpdGUoY21kKTsKIH0KIAotdm9pZCBDb21wb3NpdGVFZGl0Q29t
bWFuZDo6cmViYWxhbmNlV2hpdGVzcGFjZUF0KGNvbnN0IFBvc2l0aW9uICZwb3NpdGlvbikKK3Zv
aWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlYmFsYW5jZVdoaXRlc3BhY2VBdChjb25zdCBQb3Np
dGlvbiYgcG9zaXRpb24pCiB7CisgICAgTm9kZSogdGV4dE5vZGUgPSBtX3Bvc2l0aW9uLm5vZGUo
KTsKKyAgICBpZiAoIXRleHROb2RlIHx8ICF0ZXh0Tm9kZS0+aXNUZXh0Tm9kZSgpKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKHN0YXRpY19jYXN0PFRleHQqPih0ZXh0Tm9kZSktPmxlbmd0aCgp
ID09IDApCisgICAgICAgIHJldHVybjsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGV4
dE5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKHJlbmRlcmVyICYmICFyZW5kZXJlci0+c3R5bGUo
KS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpCisgICAgICAgIHJldHVybjsKICAgICBFZGl0Q29tbWFu
ZFB0ciBjbWQobmV3IFJlYmFsYW5jZVdoaXRlc3BhY2VDb21tYW5kKGRvY3VtZW50KCksIHBvc2l0
aW9uKSk7CiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoY21kKTsgICAgCiB9CkBAIC0zODAs
MTIgKzM4OCw5IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlYmFsYW5jZVdoaXQKIHsK
ICAgICBTZWxlY3Rpb24gc2VsZWN0aW9uID0gZW5kaW5nU2VsZWN0aW9uKCk7CiAgICAgaWYgKHNl
bGVjdGlvbi5pc0NhcmV0T3JSYW5nZSgpKSB7Ci0gICAgICAgIEVkaXRDb21tYW5kUHRyIHN0YXJ0
Q21kKG5ldyBSZWJhbGFuY2VXaGl0ZXNwYWNlQ29tbWFuZChkb2N1bWVudCgpLCBlbmRpbmdTZWxl
Y3Rpb24oKS5zdGFydCgpKSk7Ci0gICAgICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKHN0YXJ0
Q21kKTsKLSAgICAgICAgaWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkpIHsKLSAgICAgICAgICAgIEVk
aXRDb21tYW5kUHRyIGVuZENtZChuZXcgUmViYWxhbmNlV2hpdGVzcGFjZUNvbW1hbmQoZG9jdW1l
bnQoKSwgZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCkpKTsKLSAgICAgICAgICAgIGFwcGx5Q29tbWFu
ZFRvQ29tcG9zaXRlKGVuZENtZCk7Ci0gICAgICAgIH0KKyAgICAgICAgcmViYWxhbmNlV2hpdGVz
cGFjZUF0KGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpOworICAgICAgICBpZiAoc2VsZWN0aW9u
LmlzUmFuZ2UoKSkKKyAgICAgICAgICAgIHJlYmFsYW5jZVdoaXRlc3BhY2VBdChlbmRpbmdTZWxl
Y3Rpb24oKS5lbmQoKSk7CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiAxNTUyMykKKysrIFdlYkNvcmUvZWRpdGlu
Zy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk1LDExICsz
OTUsMTMgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpmaXh1cFdoaXRlcwogICAgIHVw
ZGF0ZUxheW91dCgpOwogICAgIC8vIEZJWE1FOiBpc1JlbmRlcmVkQ2hhcmFjdGVyIHNob3VsZCBi
ZSByZW1vdmVkLCBhbmQgd2Ugc2hvdWxkIHVzZSBWaXNpYmxlUG9zaXRpb246OmNoYXJhY3RlckFm
dGVyIGFuZCBWaXNpYmxlUG9zaXRpb246OmNoYXJhY3RlckJlZm9yZQogICAgIGlmIChtX2xlYWRp
bmdXaGl0ZXNwYWNlLmlzTm90TnVsbCgpICYmICFtX2xlYWRpbmdXaGl0ZXNwYWNlLmlzUmVuZGVy
ZWRDaGFyYWN0ZXIoKSkgewotICAgICAgICBUZXh0ICp0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRl
eHQgKj4obV9sZWFkaW5nV2hpdGVzcGFjZS5ub2RlKCkpOworICAgICAgICBUZXh0KiB0ZXh0Tm9k
ZSA9IHN0YXRpY19jYXN0PFRleHQqPihtX2xlYWRpbmdXaGl0ZXNwYWNlLm5vZGUoKSk7CisgICAg
ICAgIEFTU0VSVCghdGV4dE5vZGUtPnJlbmRlcmVyKCkgfHwgdGV4dE5vZGUtPnJlbmRlcmVyKCkt
PnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKTsKICAgICAgICAgcmVwbGFjZVRleHRJbk5v
ZGUodGV4dE5vZGUsIG1fbGVhZGluZ1doaXRlc3BhY2Uub2Zmc2V0KCksIDEsIG5vbkJyZWFraW5n
U3BhY2VTdHJpbmcoKSk7CiAgICAgfQogICAgIGlmIChtX3RyYWlsaW5nV2hpdGVzcGFjZS5pc05v
dE51bGwoKSAmJiAhbV90cmFpbGluZ1doaXRlc3BhY2UuaXNSZW5kZXJlZENoYXJhY3RlcigpKSB7
Ci0gICAgICAgIFRleHQgKnRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCAqPihtX3RyYWlsaW5n
V2hpdGVzcGFjZS5ub2RlKCkpOworICAgICAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0
PFRleHQqPihtX3RyYWlsaW5nV2hpdGVzcGFjZS5ub2RlKCkpOworICAgICAgICBBU1NFUlQoIXRl
eHROb2RlLT5yZW5kZXJlcigpIHx8dGV4dE5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmNvbGxh
cHNlV2hpdGVTcGFjZSgpKTsKICAgICAgICAgcmVwbGFjZVRleHRJbk5vZGUodGV4dE5vZGUsIG1f
dHJhaWxpbmdXaGl0ZXNwYWNlLm9mZnNldCgpLCAxLCBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkp
OwogICAgIH0KIH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwCShyZXZpc2lv
biAxNTUyMykKKysrIFdlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw2IEBAIERlcHJlY2F0ZWRTdHJpbmcgY29udmVydGVkU3BhY2VT
dHJpbmcoKSAKIAogfSAvLyBlbmQgYW5vbnltb3VzIG5hbWVzcGFjZQogCi0vLyBGSVhNRTogY29u
dmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hdCBzaG91bGQgcHJvYmFibHkgYmUgaW4gdGhl
IGtodG1sIG5hbWVzcGFjZS4KIC8vIEZJWE1FOiBDYW4ndCByZWFsbHkgZG8gdGhpcyB3b3JrIHdp
dGhvdXQgdGFraW5nIHdoaXRlc3BhY2UgbW9kZSBpbnRvIGFjY291bnQuCiAvLyBUaGlzIG1lYW5z
IHRoYXQgZXZlbnR1YWxseSB0aGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGVsaW1pbmF0ZWQgb3Ig
YXQgbGVhc3QgaGF2ZQogLy8gaXRzIHBhcmFtZXRlcnMgY2hhbmdlZCBiZWNhdXNlIGl0IGNhbid0
IGRvIGl0cyB3b3JrIG9uIHRoZSBzdHJpbmcgd2l0aG91dCBrbm93aW5nCkluZGV4OiBXZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCShyZXZpc2lvbiAxNTUyMykKKysr
IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODUsNDEgKzg1LDQ5IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBs
eSgpCiAgICAgaWYgKHNlbGVjdGlvbi5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UmVmUHRyPEVsZW1lbnQ+IGJyZWFrTm9kZSA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgp
KTsKLSAgICBOb2RlKiBub2RlVG9JbnNlcnQgPSBicmVha05vZGUuZ2V0KCk7Ci0gICAgCiAgICAg
UG9zaXRpb24gcG9zKHNlbGVjdGlvbi5zdGFydCgpLnVwc3RyZWFtKCkpOwogCiAgICAgcG9zID0g
cG9zaXRpb25Bdm9pZGluZ1NwZWNpYWxFbGVtZW50Qm91bmRhcnkocG9zKTsKIAotICAgIGlmIChp
c1RhYlNwYW5UZXh0Tm9kZShwb3Mubm9kZSgpKSkgewotICAgICAgICBpbnNlcnROb2RlQXRUYWJT
cGFuUG9zaXRpb24obm9kZVRvSW5zZXJ0LCBwb3MpOworICAgIE5vZGUqIHN0eWxlTm9kZSA9IHBv
cy5ub2RlKCk7CisgICAgYm9vbCBpc1RhYlNwYW4gPSBpc1RhYlNwYW5UZXh0Tm9kZShzdHlsZU5v
ZGUpOworICAgIGlmIChpc1RhYlNwYW4pCisgICAgICAgIHN0eWxlTm9kZSA9IHN0eWxlTm9kZS0+
cGFyZW50Tm9kZSgpLT5wYXJlbnROb2RlKCk7CisgICAgUmVuZGVyT2JqZWN0KiBzdHlsZVJlbmRl
cmVyID0gc3R5bGVOb2RlLT5yZW5kZXJlcigpOworICAgIGJvb2wgdXNlQnJlYWtFbGVtZW50ID0g
IXN0eWxlUmVuZGVyZXIgfHwgIXN0eWxlUmVuZGVyZXItPnN0eWxlKCktPnByZXNlcnZlTmV3bGlu
ZSgpOworCisgICAgUmVmUHRyPE5vZGU+IG5vZGVUb0luc2VydDsKKyAgICBpZiAodXNlQnJlYWtF
bGVtZW50KQorICAgICAgICBub2RlVG9JbnNlcnQgPSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1l
bnQoKSk7CisgICAgZWxzZQorICAgICAgICBub2RlVG9JbnNlcnQgPSBkb2N1bWVudCgpLT5jcmVh
dGVUZXh0Tm9kZSgiXG4iKTsKKyAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWVyZ2UgdGV4dCBu
b2RlcyB3aGVuIGluc2VydGluZyBqdXN0IGFmdGVyIG9yIGJlZm9yZSB0ZXh0LgorICAgIAorICAg
IGlmIChpc1RhYlNwYW4pIHsKKyAgICAgICAgaW5zZXJ0Tm9kZUF0VGFiU3BhblBvc2l0aW9uKG5v
ZGVUb0luc2VydC5nZXQoKSwgcG9zKTsKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFBvc2l0
aW9uKG5vZGVUb0luc2VydC0+dHJhdmVyc2VOZXh0Tm9kZSgpLCAwKSwgRE9XTlNUUkVBTSk7CiAg
ICAgfSBlbHNlIGlmIChpc0VuZE9mQmxvY2soVmlzaWJsZVBvc2l0aW9uKHBvcywgc2VsZWN0aW9u
LmFmZmluaXR5KCkpKSkgewotICAgICAgICAKICAgICAgICAgTm9kZSogYmxvY2sgPSBwb3Mubm9k
ZSgpLT5lbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KCk7CiAgICAgICAgIAogICAgICAgICAvLyBJ
bnNlcnQgYW4gZXh0cmEgYnIgaWYgdGhlIGluc2VydGVkIG9uZSB3aWxsIGNvbGxhcHNlZCBiZWNh
dXNlIG9mIHF1aXJrcyBtb2RlLgotICAgICAgICBpZiAoIWRvY3VtZW50KCktPmluU3RyaWN0TW9k
ZSgpICYmICEocG9zLmRvd25zdHJlYW0oKS5ub2RlKCktPmhhc1RhZ05hbWUoYnJUYWcpICYmIHBv
cy5kb3duc3RyZWFtKCkub2Zmc2V0KCkgPT0gMCkpIHsKLSAgICAgICAgICAgIGluc2VydE5vZGVB
dChub2RlVG9JbnNlcnQsIHBvcy5ub2RlKCksIHBvcy5vZmZzZXQoKSk7Ci0gICAgICAgICAgICBp
bnNlcnROb2RlQWZ0ZXIoY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpLmdldCgpLCBub2Rl
VG9JbnNlcnQpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGluc2VydE5vZGVBdChub2Rl
VG9JbnNlcnQsIHBvcy5ub2RlKCksIHBvcy5vZmZzZXQoKSk7CisgICAgICAgIGJvb2wgaGF2ZUJy
ZWFrID0gcG9zLmRvd25zdHJlYW0oKS5ub2RlKCktPmhhc1RhZ05hbWUoYnJUYWcpICYmIHBvcy5k
b3duc3RyZWFtKCkub2Zmc2V0KCkgPT0gMDsKKyAgICAgICAgaW5zZXJ0Tm9kZUF0KG5vZGVUb0lu
c2VydC5nZXQoKSwgcG9zLm5vZGUoKSwgcG9zLm9mZnNldCgpKTsKKyAgICAgICAgaWYgKCFoYXZl
QnJlYWspCisgICAgICAgICAgICBpbnNlcnROb2RlQWZ0ZXIoY3JlYXRlQnJlYWtFbGVtZW50KGRv
Y3VtZW50KCkpLmdldCgpLCBub2RlVG9JbnNlcnQuZ2V0KCkpOwogICAgICAgICAgICAgCiAgICAg
ICAgIHNldEVuZGluZ1NlbGVjdGlvbihQb3NpdGlvbihibG9jaywgbWF4RGVlcE9mZnNldChibG9j
aykpLCBET1dOU1RSRUFNKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAocG9zLm9mZnNldCgpIDw9IHBv
cy5ub2RlKCktPmNhcmV0TWluT2Zmc2V0KCkpIHsKKyAgICB9IGVsc2UgaWYgKHBvcy5vZmZzZXQo
KSA8PSBwb3Mubm9kZSgpLT5jYXJldE1pbk9mZnNldCgpKSB7CiAgICAgICAgIExPRyhFZGl0aW5n
LCAiaW5wdXQgbmV3bGluZSBjYXNlIDIiKTsKICAgICAgICAgLy8gSW5zZXJ0IG5vZGUgYmVmb3Jl
IGRvd25zdHJlYW0gcG9zaXRpb24sIGFuZCBwbGFjZSBjYXJldCB0aGVyZSBhcyB3ZWxsLiAKICAg
ICAgICAgUG9zaXRpb24gZW5kaW5nUG9zaXRpb24gPSBwb3MuZG93bnN0cmVhbSgpOwotICAgICAg
ICBpbnNlcnROb2RlQmVmb3JlUG9zaXRpb24obm9kZVRvSW5zZXJ0LCBlbmRpbmdQb3NpdGlvbik7
CisgICAgICAgIGluc2VydE5vZGVCZWZvcmVQb3NpdGlvbihub2RlVG9JbnNlcnQuZ2V0KCksIGVu
ZGluZ1Bvc2l0aW9uKTsKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKGVuZGluZ1Bvc2l0aW9u
LCBET1dOU1RSRUFNKTsKICAgICB9IGVsc2UgaWYgKHBvcy5vZmZzZXQoKSA+PSBwb3Mubm9kZSgp
LT5jYXJldE1heE9mZnNldCgpKSB7CiAgICAgICAgIExPRyhFZGl0aW5nLCAiaW5wdXQgbmV3bGlu
ZSBjYXNlIDMiKTsKICAgICAgICAgLy8gSW5zZXJ0IEJSIGFmdGVyIHRoaXMgbm9kZS4gUGxhY2Ug
Y2FyZXQgaW4gdGhlIHBvc2l0aW9uIHRoYXQgaXMgZG93bnN0cmVhbQogICAgICAgICAvLyBvZiB0
aGUgY3VycmVudCBwb3NpdGlvbiwgcmVja29uZWQgYmVmb3JlIGluc2VydGluZyB0aGUgQlIgaW4g
YmV0d2Vlbi4KICAgICAgICAgUG9zaXRpb24gZW5kaW5nUG9zaXRpb24gPSBwb3MuZG93bnN0cmVh
bSgpOwotICAgICAgICBpbnNlcnROb2RlQWZ0ZXJQb3NpdGlvbihub2RlVG9JbnNlcnQsIHBvcyk7
CisgICAgICAgIGluc2VydE5vZGVBZnRlclBvc2l0aW9uKG5vZGVUb0luc2VydC5nZXQoKSwgcG9z
KTsKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKGVuZGluZ1Bvc2l0aW9uLCBET1dOU1RSRUFN
KTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBTcGxpdCBhIHRleHQgbm9kZQpAQCAtMTMyLDcg
KzE0MCw3IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAg
IFJlZlB0cjxUZXh0PiB0ZXh0QmVmb3JlTm9kZSA9IGRvY3VtZW50KCktPmNyZWF0ZVRleHROb2Rl
KHRleHROb2RlLT5zdWJzdHJpbmdEYXRhKDAsIHNlbGVjdGlvbi5zdGFydCgpLm9mZnNldCgpLCBl
YykpOwogICAgICAgICBkZWxldGVUZXh0RnJvbU5vZGUodGV4dE5vZGUsIDAsIHBvcy5vZmZzZXQo
KSk7CiAgICAgICAgIGluc2VydE5vZGVCZWZvcmUodGV4dEJlZm9yZU5vZGUuZ2V0KCksIHRleHRO
b2RlKTsKLSAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShub2RlVG9JbnNlcnQsIHRleHROb2RlKTsK
KyAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShub2RlVG9JbnNlcnQuZ2V0KCksIHRleHROb2RlKTsK
ICAgICAgICAgUG9zaXRpb24gZW5kaW5nUG9zaXRpb24gPSBQb3NpdGlvbih0ZXh0Tm9kZSwgMCk7
CiAgICAgICAgIAogICAgICAgICAvLyBIYW5kbGUgd2hpdGVzcGFjZSB0aGF0IG9jY3VycyBhZnRl
ciB0aGUgc3BsaXQKQEAgLTE0MCw2ICsxNDgsNyBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1h
bmQ6OmRvQXBwbHkoKQogICAgICAgICBpZiAoIWVuZGluZ1Bvc2l0aW9uLmlzUmVuZGVyZWRDaGFy
YWN0ZXIoKSkgewogICAgICAgICAgICAgLy8gQ2xlYXIgb3V0IGFsbCB3aGl0ZXNwYWNlIGFuZCBp
bnNlcnQgb25lIG5vbi1icmVha2luZyBzcGFjZQogICAgICAgICAgICAgZGVsZXRlSW5zaWduaWZp
Y2FudFRleHREb3duc3RyZWFtKGVuZGluZ1Bvc2l0aW9uKTsKKyAgICAgICAgICAgIEFTU0VSVCgh
dGV4dE5vZGUtPnJlbmRlcmVyKCkgfHwgdGV4dE5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmNv
bGxhcHNlV2hpdGVTcGFjZSgpKTsKICAgICAgICAgICAgIGluc2VydFRleHRJbnRvTm9kZSh0ZXh0
Tm9kZSwgMCwgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKICAgICAgICAgfQogICAgICAgICAK
QEAgLTE1NCw3ICsxNjMsOCBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHko
KQogICAgIAogICAgIGlmICh0eXBpbmdTdHlsZSAmJiB0eXBpbmdTdHlsZS0+bGVuZ3RoKCkgPiAw
KSB7CiAgICAgICAgIFNlbGVjdGlvbiBzZWxlY3Rpb25CZWZvcmVTdHlsZSA9IGVuZGluZ1NlbGVj
dGlvbigpOwotICAgICAgICBhcHBseVN0eWxlKHR5cGluZ1N0eWxlLCBQb3NpdGlvbihub2RlVG9J
bnNlcnQsIDApLCBQb3NpdGlvbihub2RlVG9JbnNlcnQsIG1heERlZXBPZmZzZXQobm9kZVRvSW5z
ZXJ0KSkpOworICAgICAgICBhcHBseVN0eWxlKHR5cGluZ1N0eWxlLCBQb3NpdGlvbihub2RlVG9J
bnNlcnQuZ2V0KCksIDApLAorICAgICAgICAgICAgUG9zaXRpb24obm9kZVRvSW5zZXJ0LmdldCgp
LCBtYXhEZWVwT2Zmc2V0KG5vZGVUb0luc2VydC5nZXQoKSkpKTsKICAgICAgICAgc2V0RW5kaW5n
U2VsZWN0aW9uKHNlbGVjdGlvbkJlZm9yZVN0eWxlKTsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUv
ZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAJKHJl
dmlzaW9uIDE1NTIzKQorKysgV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRv
ckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzMsNyArMjczLDggQEAgdm9pZCBJbnNl
cnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkbwogICAgIC8vIEZJWE1FOiBsZWFkaW5nV2hp
dGVzcGFjZVBvc2l0aW9uIGlzIHJldHVybmluZyB0aGUgcG9zaXRpb24gYmVmb3JlIHByZXNlcnZl
ZCBuZXdsaW5lcyBmb3IgcG9zaXRpb25zCiAgICAgLy8gYWZ0ZXIgdGhlIHByZXNlcnZlZCBuZXds
aW5lLCBjYXVzaW5nIHRoZSBuZXdsaW5lIHRvIGJlIHR1cm5lZCBpbnRvIGEgbmJzcC4KICAgICBp
ZiAobGVhZGluZ1doaXRlc3BhY2UuaXNOb3ROdWxsKCkpIHsKLSAgICAgICAgVGV4dCAqdGV4dE5v
ZGUgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KGxlYWRpbmdXaGl0ZXNwYWNlLm5vZGUoKSk7CisgICAg
ICAgIFRleHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KGxlYWRpbmdXaGl0ZXNwYWNl
Lm5vZGUoKSk7CisgICAgICAgIEFTU0VSVCghdGV4dE5vZGUtPnJlbmRlcmVyKCkgfHwgdGV4dE5v
ZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKTsKICAgICAgICAg
cmVwbGFjZVRleHRJbk5vZGUodGV4dE5vZGUsIGxlYWRpbmdXaGl0ZXNwYWNlLm9mZnNldCgpLCAx
LCBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOwogICAgIH0KICAgICAKQEAgLTM0NCw5ICszNDUs
MTEgQEAgdm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkbwogICAgICAgICBw
b3MgPSBQb3NpdGlvbihzdGFydE5vZGUsIDApOwogICAgICAgICBpZiAoIXBvcy5pc1JlbmRlcmVk
Q2hhcmFjdGVyKCkpIHsKICAgICAgICAgICAgIC8vIENsZWFyIG91dCBhbGwgd2hpdGVzcGFjZSBh
bmQgaW5zZXJ0IG9uZSBub24tYnJlYWtpbmcgc3BhY2UKLSAgICAgICAgICAgIEFTU0VSVChzdGFy
dE5vZGUgJiYgc3RhcnROb2RlLT5pc1RleHROb2RlKCkpOworICAgICAgICAgICAgQVNTRVJUKHN0
YXJ0Tm9kZSk7CisgICAgICAgICAgICBBU1NFUlQoc3RhcnROb2RlLT5pc1RleHROb2RlKCkpOwor
ICAgICAgICAgICAgQVNTRVJUKCFzdGFydE5vZGUtPnJlbmRlcmVyKCkgfHwgc3RhcnROb2RlLT5y
ZW5kZXJlcigpLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSk7CiAgICAgICAgICAgICBk
ZWxldGVJbnNpZ25pZmljYW50VGV4dERvd25zdHJlYW0ocG9zKTsKLSAgICAgICAgICAgIGluc2Vy
dFRleHRJbnRvTm9kZShzdGF0aWNfY2FzdDxUZXh0ICo+KHN0YXJ0Tm9kZSksIDAsIG5vbkJyZWFr
aW5nU3BhY2VTdHJpbmcoKSk7CisgICAgICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUoc3RhdGlj
X2Nhc3Q8VGV4dCo+KHN0YXJ0Tm9kZSksIDAsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9KU0VkaXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0pTRWRpdG9yLmNwcAkocmV2aXNpb24gMTU1MjMp
CisrKyBXZWJDb3JlL2VkaXRpbmcvSlNFZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTUs
NyArNDE1LDcgQEAgYm9vbCBleGVjUmVkbyhGcmFtZSAqZnJhbWUsIGJvb2wgdXNlckludAogCiBi
b29sIGV4ZWNSZW1vdmVGb3JtYXQoRnJhbWUqIGZyYW1lLCBib29sIHVzZXJJbnRlcmZhY2UsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdt
ZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPnNl
bGVjdGlvbigpLnRvU3RyaW5nKCkuZGVwcmVjYXRlZFN0cmluZygpKTsKKyAgICBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21UZXh0KGZyYW1lLT5z
ZWxlY3Rpb24oKS50b1JhbmdlKCkuZ2V0KCksIGZyYW1lLT5zZWxlY3Rpb24oKS50b1N0cmluZygp
KTsKICAgICBFZGl0Q29tbWFuZFB0cihuZXcgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQoZnJhbWUt
PmRvY3VtZW50KCksIGZyYWdtZW50LmdldCgpLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
RWRpdEFjdGlvblVuc3BlY2lmaWVkKSkuYXBwbHkoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9SZWJhbGFuY2VXaGl0ZXNwYWNlQ29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlYmFsYW5jZVdoaXRlc3BhY2VDb21tYW5kLmNwcAko
cmV2aXNpb24gMTU1MjMpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmViYWxhbmNlV2hpdGVzcGFjZUNv
bW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMiArNDksMTIgQEAgdm9pZCBSZWJhbGFu
Y2VXaGl0ZXNwYWNlQ29tbWFuZDo6ZG9BcHBseQogewogICAgIGlmIChtX3Bvc2l0aW9uLmlzTnVs
bCgpIHx8ICFtX3Bvc2l0aW9uLm5vZGUoKS0+aXNUZXh0Tm9kZSgpKQogICAgICAgICByZXR1cm47
Ci0gICAgICAgIAotICAgIFRleHQgKnRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCAqPihtX3Bv
c2l0aW9uLm5vZGUoKSk7CisKKyAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQq
PihtX3Bvc2l0aW9uLm5vZGUoKSk7CiAgICAgU3RyaW5nIHRleHQgPSB0ZXh0Tm9kZS0+ZGF0YSgp
OwotICAgIGlmICh0ZXh0Lmxlbmd0aCgpID09IDApCi0gICAgICAgIHJldHVybjsKLSAgICAKKyAg
ICBBU1NFUlQoIXRleHQuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIXRleHROb2RlLT5yZW5kZXJl
cigpIHx8IHRleHROb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2Uo
KSk7CisKICAgICBpbnQgb2Zmc2V0ID0gbV9wb3NpdGlvbi5vZmZzZXQoKTsKICAgICAvLyBJZiBu
ZWl0aGVyIHRleHRbb2Zmc2V0XSBub3IgdGV4dFtvZmZzZXQgLSAxXSBhcmUgc29tZSBmb3JtIG9m
IHdoaXRlc3BhY2UsIGRvIG5vdGhpbmcuCiAgICAgaWYgKCFpc1doaXRlc3BhY2UodGV4dFtvZmZz
ZXRdKSkgewpAQCAtMTAyLDQgKzEwMiwzIEBAIGJvb2wgUmViYWxhbmNlV2hpdGVzcGFjZUNvbW1h
bmQ6OnByZXNlcnYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCkluZGV4OiBXZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDE1NTIzKQor
KysgV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLVJlcGxhY2VtZW50RnJhZ21lbnQ6OlJlcGxhY2VtZW50RnJhZ21l
bnQoRG9jdW1lbnQgKmRvY3VtZW50LCBEb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCwgYm9vbCBt
YXRjaFN0eWxlLCBFbGVtZW50KiBlZGl0YWJsZVJvb3QpCitSZXBsYWNlbWVudEZyYWdtZW50OjpS
ZXBsYWNlbWVudEZyYWdtZW50KERvY3VtZW50KiBkb2N1bWVudCwgRG9jdW1lbnRGcmFnbWVudCog
ZnJhZ21lbnQsIGJvb2wgbWF0Y2hTdHlsZSwgY29uc3QgU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiAg
ICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KSwKICAgICAgIG1fZnJhZ21lbnQoZnJhZ21lbnQpLAog
ICAgICAgbV9tYXRjaFN0eWxlKG1hdGNoU3R5bGUpLCAKQEAgLTU4LDI3ICs1OCwxOSBAQCBSZXBs
YWNlbWVudEZyYWdtZW50OjpSZXBsYWNlbWVudEZyYWdtZW50CiB7CiAgICAgaWYgKCFtX2RvY3Vt
ZW50KQogICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fZnJhZ21lbnQpIHsKLSAgICAgICAg
bV90eXBlID0gRW1wdHlGcmFnbWVudDsKKyAgICBpZiAoIW1fZnJhZ21lbnQpCiAgICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KICAgICBOb2RlKiBmaXJzdENoaWxkID0gbV9mcmFnbWVudC0+Zmlyc3RD
aGlsZCgpOwotICAgIE5vZGUqIGxhc3RDaGlsZCA9IG1fZnJhZ21lbnQtPmxhc3RDaGlsZCgpOwot
Ci0gICAgaWYgKCFmaXJzdENoaWxkKSB7Ci0gICAgICAgIG1fdHlwZSA9IEVtcHR5RnJhZ21lbnQ7
CisgICAgaWYgKCFmaXJzdENoaWxkKQogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAg
IG1fdHlwZSA9IGZpcnN0Q2hpbGQgPT0gbGFzdENoaWxkICYmIGZpcnN0Q2hpbGQtPmlzVGV4dE5v
ZGUoKSA/IFNpbmdsZVRleHROb2RlRnJhZ21lbnQgOiBUcmVlRnJhZ21lbnQ7CiAgICAgCisgICAg
RWxlbWVudCogZWRpdGFibGVSb290ID0gc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsK
ICAgICBBU1NFUlQoZWRpdGFibGVSb290KTsKICAgICBpZiAoIWVkaXRhYmxlUm9vdCkKICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgUmVmUHRyPE5vZGU+IGhvbGRlciA9IGluc2Vy
dEZyYWdtZW50Rm9yVGVzdFJlbmRlcmluZygpOworCisgICAgTm9kZSogc3R5bGVOb2RlID0gc2Vs
ZWN0aW9uLmJhc2UoKS5ub2RlKCk7CisgICAgUmVmUHRyPE5vZGU+IGhvbGRlciA9IGluc2VydEZy
YWdtZW50Rm9yVGVzdFJlbmRlcmluZyhzdHlsZU5vZGUpOwogICAgIAogICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBTZWxlY3Rpb246OnNlbGVjdGlvbkZyb21Db250ZW50c09mTm9kZShob2xkZXIu
Z2V0KCkpLnRvUmFuZ2UoKTsKICAgICBTdHJpbmcgdGV4dCA9IHBsYWluVGV4dChyYW5nZS5nZXQo
KSk7CkBAIC04OCwyMSArODAsMTYgQEAgUmVwbGFjZW1lbnRGcmFnbWVudDo6UmVwbGFjZW1lbnRG
cmFnbWVudAogICAgIGVkaXRhYmxlUm9vdC0+ZGlzcGF0Y2hFdmVudChldnQsIGVjLCB0cnVlKTsK
ICAgICBBU1NFUlQoZWMgPT0gMCk7CiAgICAgaWYgKHRleHQgIT0gZXZ0LT50ZXh0KCkgfHwgIWVk
aXRhYmxlUm9vdC0+aXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkgewotICAgICAgICAvLyBJZiB0
aGUgcm9vdCBpcyBpbiBwbGFpbi10ZXh0IG1vZGUsIGFuZCB3aGl0ZS1zcGFjZSBzaG91bGRuJ3Qg
YmUgY29sbGFwc2VkLCB0aGVuIGNvbnRydWN0IGEgZnJhZ21lbnQgdGhhdCBjb250YWlucyBvbmUg
dGV4dCBub2RlCi0gICAgICAgIGlmICghZWRpdGFibGVSb290LT5pc0NvbnRlbnRSaWNobHlFZGl0
YWJsZSgpICYmIGVkaXRhYmxlUm9vdC0+cmVuZGVyZXIoKSAmJiAhZWRpdGFibGVSb290LT5yZW5k
ZXJlcigpLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSkgewotICAgICAgICAgICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZURvY3VtZW50
RnJhZ21lbnQoKTsKLSAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC0+
Y3JlYXRlVGV4dE5vZGUoZXZ0LT50ZXh0KCkpLCBlYyk7Ci0gICAgICAgICAgICBBU1NFUlQoZWMg
PT0gMCk7Ci0gICAgICAgICAgICBtX2ZyYWdtZW50ID0gZnJhZ21lbnQ7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgbV9mcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoZG9jdW1l
bnQsIGV2dC0+dGV4dCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSk7Ci0gICAgICAgIGZpcnN0Q2hpbGQg
PSBtX2ZyYWdtZW50LT5maXJzdENoaWxkKCk7Ci0gICAgICAgIGxhc3RDaGlsZCA9IG1fZnJhZ21l
bnQtPmZpcnN0Q2hpbGQoKTsKLSAgICAgICAgCisgICAgICAgIHJlc3RvcmVUZXN0UmVuZGVyaW5n
Tm9kZXNUb0ZyYWdtZW50KGhvbGRlci5nZXQoKSk7CiAgICAgICAgIHJlbW92ZU5vZGUoaG9sZGVy
KTsKLSAgICAgICAgaG9sZGVyID0gaW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKCk7CisK
KyAgICAgICAgbV9mcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoc2VsZWN0aW9uLnRv
UmFuZ2UoKS5nZXQoKSwgZXZ0LT50ZXh0KCkpOworICAgICAgICBmaXJzdENoaWxkID0gbV9mcmFn
bWVudC0+Zmlyc3RDaGlsZCgpOworICAgICAgICBpZiAoIWZpcnN0Q2hpbGQpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGhvbGRlciA9IGluc2VydEZyYWdtZW50Rm9yVGVzdFJlbmRlcmlu
ZyhzdHlsZU5vZGUpOwogICAgIH0KLSAgICAKKwogICAgIE5vZGUgKm5vZGUgPSBmaXJzdENoaWxk
OwogICAgIE5vZGUgKm5ld2xpbmVBdFN0YXJ0Tm9kZSA9IDA7CiAgICAgTm9kZSAqbmV3bGluZUF0
RW5kTm9kZSA9IDA7CkBAIC0xNDQsOCArMTMxLDkgQEAgUmVwbGFjZW1lbnRGcmFnbWVudDo6UmVw
bGFjZW1lbnRGcmFnbWVudAogICAgIHJlbW92ZVN0eWxlTm9kZXMoKTsKIH0KIAotUmVwbGFjZW1l
bnRGcmFnbWVudDo6flJlcGxhY2VtZW50RnJhZ21lbnQoKQorYm9vbCBSZXBsYWNlbWVudEZyYWdt
ZW50Ojppc0VtcHR5KCkgY29uc3QKIHsKKyAgICByZXR1cm4gKCFtX2ZyYWdtZW50IHx8ICFtX2Zy
YWdtZW50LT5maXJzdENoaWxkKCkpICYmICFtX2hhc0ludGVyY2hhbmdlTmV3bGluZUF0U3RhcnQg
JiYgIW1faGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRFbmQ7CiB9CiAKIE5vZGUgKlJlcGxhY2VtZW50
RnJhZ21lbnQ6OmZpcnN0Q2hpbGQoKSBjb25zdCAKQEAgLTIzMiwxNSArMjIwLDI3IEBAIHZvaWQg
UmVwbGFjZW1lbnRGcmFnbWVudDo6aW5zZXJ0Tm9kZUJlZm8KICAgICBBU1NFUlQoZWMgPT0gMCk7
CiB9CiAKLVBhc3NSZWZQdHI8Tm9kZT4gUmVwbGFjZW1lbnRGcmFnbWVudDo6aW5zZXJ0RnJhZ21l
bnRGb3JUZXN0UmVuZGVyaW5nKCkKK1Bhc3NSZWZQdHI8Tm9kZT4gUmVwbGFjZW1lbnRGcmFnbWVu
dDo6aW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKE5vZGUqIGNvbnRleHQpCiB7Ci0gICAg
Tm9kZSAqYm9keSA9IG1fZG9jdW1lbnQtPmJvZHkoKTsKKyAgICBOb2RlKiBib2R5ID0gbV9kb2N1
bWVudC0+Ym9keSgpOwogICAgIGlmICghYm9keSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBS
ZWZQdHI8Tm9kZT4gaG9sZGVyID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQobV9kb2N1
bWVudC5nZXQoKSk7CisgICAgUmVmUHRyPFN0eWxlZEVsZW1lbnQ+IGhvbGRlciA9IHN0YXRpY19w
b2ludGVyX2Nhc3Q8U3R5bGVkRWxlbWVudD4oY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQo
bV9kb2N1bWVudC5nZXQoKSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworCisg
ICAgLy8gQ29weSB0aGUgd2hpdGVzcGFjZSBzdHlsZSBmcm9tIHRoZSBjb250ZXh0IG9udG8gdGhp
cyBlbGVtZW50LgorICAgIE5vZGUqIG4gPSBjb250ZXh0OworICAgIHdoaWxlIChuICYmICFuLT5p
c0VsZW1lbnROb2RlKCkpCisgICAgICAgIG4gPSBuLT5wYXJlbnROb2RlKCk7CisgICAgaWYgKG4p
IHsKKyAgICAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29udGV4dFN0
eWxlID0gbmV3IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbihzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obikpOworICAgICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSA9IGhvbGRlci0+c3R5
bGUoKTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU19QUk9QX1dISVRFX1NQQUNFLCBj
b250ZXh0U3R5bGUtPmdldFByb3BlcnR5VmFsdWUoQ1NTX1BST1BfV0hJVEVfU1BBQ0UpLCBmYWxz
ZSwgZWMpOworICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgfQorICAgIAogICAgIGhvbGRl
ci0+YXBwZW5kQ2hpbGQobV9mcmFnbWVudCwgZWMpOwogICAgIEFTU0VSVChlYyA9PSAwKTsKICAg
ICAKQEAgLTUzMiw5ICs1MzIsOSBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0Fw
cGx5KCkKICAgICAgICAgbV9tYXRjaFN0eWxlID0gdHJ1ZTsKICAgICAKICAgICBFbGVtZW50KiBj
dXJyZW50Um9vdCA9IHNlbGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCk7Ci0gICAgUmVwbGFj
ZW1lbnRGcmFnbWVudCBmcmFnbWVudChkb2N1bWVudCgpLCBtX2RvY3VtZW50RnJhZ21lbnQuZ2V0
KCksIG1fbWF0Y2hTdHlsZSwgY3VycmVudFJvb3QpOworICAgIFJlcGxhY2VtZW50RnJhZ21lbnQg
ZnJhZ21lbnQoZG9jdW1lbnQoKSwgbV9kb2N1bWVudEZyYWdtZW50LmdldCgpLCBtX21hdGNoU3R5
bGUsIHNlbGVjdGlvbik7CiAgICAgCi0gICAgaWYgKGZyYWdtZW50LnR5cGUoKSA9PSBFbXB0eUZy
YWdtZW50KQorICAgIGlmIChmcmFnbWVudC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBpZiAobV9tYXRjaFN0eWxlKQpAQCAtNzc5LDEyICs3NzksMTQgQEAgdm9pZCBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIGJvb2wgbmVlZHNUcmFpbGlu
Z1NwYWNlID0gIWlzRW5kT2ZQYXJhZ3JhcGgoZW5kT2ZJbnNlcnRlZENvbnRlbnQpICYmCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWZyYW1lLT5pc0NoYXJhY3RlclNtYXJ0UmVw
bGFjZUV4ZW1wdChlbmRPZkluc2VydGVkQ29udGVudC5jaGFyYWN0ZXJBZnRlcigpLCBmYWxzZSk7
CiAgICAgICAgIGlmIChuZWVkc1RyYWlsaW5nU3BhY2UpIHsKKyAgICAgICAgICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSBtX2xhc3ROb2RlSW5zZXJ0ZWQtPnJlbmRlcmVyKCk7CisgICAgICAg
ICAgICBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSA9ICFyZW5kZXJlciB8fCByZW5kZXJlci0+c3R5
bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCk7CiAgICAgICAgICAgICBpZiAobV9sYXN0Tm9kZUlu
c2VydGVkLT5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBUZXh0ICp0ZXh0ID0gc3Rh
dGljX2Nhc3Q8VGV4dCAqPihtX2xhc3ROb2RlSW5zZXJ0ZWQuZ2V0KCkpOwotICAgICAgICAgICAg
ICAgIGluc2VydFRleHRJbnRvTm9kZSh0ZXh0LCB0ZXh0LT5sZW5ndGgoKSwgbm9uQnJlYWtpbmdT
cGFjZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBUZXh0KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8
VGV4dCAqPihtX2xhc3ROb2RlSW5zZXJ0ZWQuZ2V0KCkpOworICAgICAgICAgICAgICAgIGluc2Vy
dFRleHRJbnRvTm9kZSh0ZXh0LCB0ZXh0LT5sZW5ndGgoKSwgY29sbGFwc2VXaGl0ZVNwYWNlID8g
bm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIDogIiAiKTsKICAgICAgICAgICAgICAgICBpbnNlcnRp
b25Qb3MgPSBQb3NpdGlvbih0ZXh0LCB0ZXh0LT5sZW5ndGgoKSk7CiAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBub2RlID0gZG9jdW1lbnQoKS0+Y3Jl
YXRlRWRpdGluZ1RleHROb2RlKG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CisgICAgICAgICAg
ICAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBkb2N1bWVudCgpLT5jcmVhdGVFZGl0aW5nVGV4dE5v
ZGUoY29sbGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIDogIiAiKTsK
ICAgICAgICAgICAgICAgICBpbnNlcnROb2RlQWZ0ZXJBbmRVcGRhdGVOb2Rlc0luc2VydGVkKG5v
ZGUuZ2V0KCksIG1fbGFzdE5vZGVJbnNlcnRlZC5nZXQoKSk7CiAgICAgICAgICAgICAgICAgaW5z
ZXJ0aW9uUG9zID0gUG9zaXRpb24obm9kZS5nZXQoKSwgMSk7CiAgICAgICAgICAgICB9CkBAIC03
OTMsMTEgKzc5NSwxMyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkK
ICAgICAgICAgYm9vbCBuZWVkc0xlYWRpbmdTcGFjZSA9ICFpc1N0YXJ0T2ZQYXJhZ3JhcGgoc3Rh
cnRPZkluc2VydGVkQ29udGVudCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICFmcmFtZS0+aXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVtcHQoc3RhcnRPZkluc2VydGVkQ29u
dGVudC5wcmV2aW91cygpLmNoYXJhY3RlckFmdGVyKCksIHRydWUpOwogICAgICAgICBpZiAobmVl
ZHNMZWFkaW5nU3BhY2UpIHsKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBt
X2xhc3ROb2RlSW5zZXJ0ZWQtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBib29sIGNvbGxhcHNl
V2hpdGVTcGFjZSA9ICFyZW5kZXJlciB8fCBtX2xhc3ROb2RlSW5zZXJ0ZWQtPnJlbmRlcmVyKCkt
PnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpOwogICAgICAgICAgICAgaWYgKG1fZmlyc3RO
b2RlSW5zZXJ0ZWQtPmlzVGV4dE5vZGUoKSkgewogICAgICAgICAgICAgICAgIFRleHQgKnRleHQg
PSBzdGF0aWNfY2FzdDxUZXh0ICo+KG1fZmlyc3ROb2RlSW5zZXJ0ZWQuZ2V0KCkpOwotICAgICAg
ICAgICAgICAgIGluc2VydFRleHRJbnRvTm9kZSh0ZXh0LCAwLCBub25CcmVha2luZ1NwYWNlU3Ry
aW5nKCkpOworICAgICAgICAgICAgICAgIGluc2VydFRleHRJbnRvTm9kZSh0ZXh0LCAwLCBjb2xs
YXBzZVdoaXRlU3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICIpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IGRvY3Vt
ZW50KCktPmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOwor
ICAgICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBub2RlID0gZG9jdW1lbnQoKS0+Y3JlYXRlRWRp
dGluZ1RleHROb2RlKGNvbGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmco
KSA6ICIgIik7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgdXBkYXRlTm9kZXNJbnNlcnRlZC4g
IERvaW5nIHNvIHdvdWxkIHNldCBtX2xhc3ROb2RlSW5zZXJ0ZWQgdG8gYmUgdGhlIG5vZGUgY29u
dGFpbmluZyB0aGUgCiAgICAgICAgICAgICAgICAgLy8gbGVhZGluZyBzcGFjZSwgYnV0IG1fbGFz
dE5vZGVJbnNlcnRlZCBpcyBzdXBwb3NlZCB0byBtYXJrIHRoZSBlbmQgb2YgcGFzdGVkIGNvbnRl
bnQuCiAgICAgICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShub2RlLmdldCgpLCBtX2ZpcnN0
Tm9kZUluc2VydGVkLmdldCgpKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZC5oCShyZXZpc2lvbiAxNTUyMykKKysrIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MiwyNCArNTIsMjAgQEAgdHlw
ZWRlZiBIYXNoTWFwPE5vZGUqLCBSZWZQdHI8UmVuZGVyaW5nSQogCiAvLyAtLS0gUmVwbGFjZW1l
bnRGcmFnbWVudCBoZWxwZXIgY2xhc3MKIAotY2xhc3MgUmVwbGFjZW1lbnRGcmFnbWVudAorY2xh
c3MgUmVwbGFjZW1lbnRGcmFnbWVudCA6IE5vbmNvcHlhYmxlCiB7CiBwdWJsaWM6Ci0gICAgUmVw
bGFjZW1lbnRGcmFnbWVudChEb2N1bWVudCosIERvY3VtZW50RnJhZ21lbnQqLCBib29sLCBFbGVt
ZW50Kik7Ci0gICAgflJlcGxhY2VtZW50RnJhZ21lbnQoKTsKKyAgICBSZXBsYWNlbWVudEZyYWdt
ZW50KERvY3VtZW50KiwgRG9jdW1lbnRGcmFnbWVudCosIGJvb2wgbWF0Y2hTdHlsZSwgY29uc3Qg
U2VsZWN0aW9uJik7CiAKLSAgICBOb2RlICpmaXJzdENoaWxkKCkgY29uc3Q7Ci0gICAgTm9kZSAq
bGFzdENoaWxkKCkgY29uc3Q7CisgICAgTm9kZSogZmlyc3RDaGlsZCgpIGNvbnN0OworICAgIE5v
ZGUqIGxhc3RDaGlsZCgpIGNvbnN0OwogCi0gICAgTm9kZSAqbWVyZ2VTdGFydE5vZGUoKSBjb25z
dDsKKyAgICBOb2RlKiBtZXJnZVN0YXJ0Tm9kZSgpIGNvbnN0OwogCiAgICAgY29uc3QgUmVuZGVy
aW5nSW5mb01hcCYgcmVuZGVyaW5nSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nSW5m
bzsgfQogICAgIGNvbnN0IE5vZGVWZWN0b3ImIG5vZGVzKCkgY29uc3QgeyByZXR1cm4gbV9ub2Rl
czsgfQogCi0gICAgRUZyYWdtZW50VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEVtcHR5RnJhZ21l
bnQ7IH0KLSAgICBib29sIGlzU2luZ2xlVGV4dE5vZGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUg
PT0gU2luZ2xlVGV4dE5vZGVGcmFnbWVudDsgfQotICAgIGJvb2wgaXNUcmVlRnJhZ21lbnQoKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHJlZUZyYWdtZW50OyB9CisgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3Q7CiAKICAgICBib29sIGhhc01vcmVUaGFuT25lQmxvY2soKSBjb25zdCB7IHJldHVy
biBtX2hhc01vcmVUaGFuT25lQmxvY2s7IH0KICAgICBib29sIGhhc0ludGVyY2hhbmdlTmV3bGlu
ZUF0U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX2hhc0ludGVyY2hhbmdlTmV3bGluZUF0U3RhcnQ7
IH0KQEAgLTc5LDE1ICs3NSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZW1vdmVOb2Rl
KFBhc3NSZWZQdHI8Tm9kZT4pOwogCi1wcml2YXRlOgotICAgIC8vIG5vIGNvcHkgY29uc3RydWN0
aW9uIG9yIGFzc2lnbm1lbnQKLSAgICBSZXBsYWNlbWVudEZyYWdtZW50KGNvbnN0IFJlcGxhY2Vt
ZW50RnJhZ21lbnQgJik7Ci0gICAgUmVwbGFjZW1lbnRGcmFnbWVudCAmb3BlcmF0b3I9KGNvbnN0
IFJlcGxhY2VtZW50RnJhZ21lbnQgJik7Ci0gICAgCi0gICAgc3RhdGljIGJvb2wgaXNJbnRlcmNo
YW5nZU5ld2xpbmVOb2RlKGNvbnN0IE5vZGUgKik7Ci0gICAgc3RhdGljIGJvb2wgaXNJbnRlcmNo
YW5nZUNvbnZlcnRlZFNwYWNlU3Bhbihjb25zdCBOb2RlICopOworcHJpdmF0ZTogICAgCisgICAg
c3RhdGljIGJvb2wgaXNJbnRlcmNoYW5nZU5ld2xpbmVOb2RlKGNvbnN0IE5vZGUqKTsKKyAgICBz
dGF0aWMgYm9vbCBpc0ludGVyY2hhbmdlQ29udmVydGVkU3BhY2VTcGFuKGNvbnN0IE5vZGUqKTsK
ICAgICAKLSAgICBQYXNzUmVmUHRyPE5vZGU+IGluc2VydEZyYWdtZW50Rm9yVGVzdFJlbmRlcmlu
ZygpOworICAgIFBhc3NSZWZQdHI8Tm9kZT4gaW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5n
KE5vZGUqIGNvbnRleHQpOwogICAgIHZvaWQgc2F2ZVJlbmRlcmluZ0luZm8oTm9kZSopOwogICAg
IHZvaWQgY29tcHV0ZVN0eWxlc1VzaW5nVGVzdFJlbmRlcmluZyhOb2RlKik7CiAgICAgdm9pZCBy
ZW1vdmVVbnJlbmRlcmVkTm9kZXMoTm9kZSopOwpAQCAtOTUsMTEgKzg3LDEwIEBAIHByaXZhdGU6
CiAgICAgaW50IHJlbmRlcmVkQmxvY2tzKE5vZGUqKTsKICAgICB2b2lkIHJlbW92ZVN0eWxlTm9k
ZXMoKTsKIAotICAgIE5vZGUgKmVuY2xvc2luZ0Jsb2NrKE5vZGUgKikgY29uc3Q7Ci0gICAgdm9p
ZCByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKE5vZGUgKik7Ci0gICAgdm9pZCBpbnNlcnRO
b2RlQmVmb3JlKE5vZGUgKm5vZGUsIE5vZGUgKnJlZk5vZGUpOworICAgIE5vZGUqIGVuY2xvc2lu
Z0Jsb2NrKE5vZGUqKSBjb25zdDsKKyAgICB2b2lkIHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRy
ZW4oTm9kZSopOworICAgIHZvaWQgaW5zZXJ0Tm9kZUJlZm9yZShOb2RlKiBub2RlLCBOb2RlKiBy
ZWZOb2RlKTsKIAotICAgIEVGcmFnbWVudFR5cGUgbV90eXBlOwogICAgIFJlZlB0cjxEb2N1bWVu
dD4gbV9kb2N1bWVudDsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbV9mcmFnbWVudDsK
ICAgICBSZW5kZXJpbmdJbmZvTWFwIG1fcmVuZGVyaW5nSW5mbzsKSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CShyZXZpc2lvbiAxNTUyMykKKysrIFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDIsMTIgKzI0MiwxMiBAQCBzdGF0aWMgRGVwcmVjYXRlZFN0cmluZyBlbmRN
YXJrdXAoY29uc3QgCiAgICAgcmV0dXJuICIiOwogfQogCi1zdGF0aWMgRGVwcmVjYXRlZFN0cmlu
ZyBtYXJrdXAoY29uc3QgTm9kZSAqc3RhcnROb2RlLCBib29sIG9ubHlJbmNsdWRlQ2hpbGRyZW4s
IGJvb2wgaW5jbHVkZVNpYmxpbmdzLCBEZXByZWNhdGVkUHRyTGlzdDxOb2RlPiAqbm9kZXMpCitz
dGF0aWMgRGVwcmVjYXRlZFN0cmluZyBtYXJrdXAoTm9kZSogc3RhcnROb2RlLCBib29sIG9ubHlJ
bmNsdWRlQ2hpbGRyZW4sIGJvb2wgaW5jbHVkZVNpYmxpbmdzLCBWZWN0b3I8Tm9kZSo+ICpub2Rl
cykKIHsKICAgICAvLyBEb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gb25seSBpbmNsdWRlIGNoaWxkcmVu
IGFuZCBpbmNsdWRlIHNpYmxpbmdzLgogICAgIEFTU0VSVCghKG9ubHlJbmNsdWRlQ2hpbGRyZW4g
JiYgaW5jbHVkZVNpYmxpbmdzKSk7CiAgICAgRGVwcmVjYXRlZFN0cmluZyBtZSA9ICIiOwotICAg
IGZvciAoY29uc3QgTm9kZSAqY3VycmVudCA9IHN0YXJ0Tm9kZTsgY3VycmVudCAhPSBOVUxMOyBj
dXJyZW50ID0gaW5jbHVkZVNpYmxpbmdzID8gY3VycmVudC0+bmV4dFNpYmxpbmcoKSA6IE5VTEwp
IHsKKyAgICBmb3IgKE5vZGUqIGN1cnJlbnQgPSBzdGFydE5vZGU7IGN1cnJlbnQgIT0gTlVMTDsg
Y3VycmVudCA9IGluY2x1ZGVTaWJsaW5ncyA/IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkgOiBOVUxM
KSB7CiAgICAgICAgIGlmICghb25seUluY2x1ZGVDaGlsZHJlbikgewogICAgICAgICAgICAgaWYg
KG5vZGVzKQogICAgICAgICAgICAgICAgIG5vZGVzLT5hcHBlbmQoY3VycmVudCk7CkBAIC0yODQs
NyArMjg0LDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVVUkxzKE5vZGUgKm5vZGUsIGNvbgogCiAv
LyBGSVhNRTogU2hvdWxkbid0IHdlIG9taXQgc3R5bGUgaW5mbyB3aGVuIGFubm90YXRlID09IERv
Tm90QW5ub3RhdGVGb3JJbnRlcmNoYW5nZT8gCiAvLyBGSVhNRTogQXQgbGVhc3QsIGFubm90YXRp
b24gYW5kIHN0eWxlIGluZm8gc2hvdWxkIHByb2JhYmx5IG5vdCBiZSBpbmNsdWRlZCBpbiByYW5n
ZS5tYXJrdXBTdHJpbmcoKQotRGVwcmVjYXRlZFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFu
Z2UgKnJhbmdlLCBEZXByZWNhdGVkUHRyTGlzdDxOb2RlPiAqbm9kZXMsIEVBbm5vdGF0ZUZvcklu
dGVyY2hhbmdlIGFubm90YXRlKQorRGVwcmVjYXRlZFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3Qg
UmFuZ2UgKnJhbmdlLCBWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFubm90YXRlRm9ySW50ZXJjaGFu
Z2UgYW5ub3RhdGUpCiB7CiAgICAgaWYgKCFyYW5nZSB8fCByYW5nZS0+aXNEZXRhY2hlZCgpKQog
ICAgICAgICByZXR1cm4gRGVwcmVjYXRlZFN0cmluZygpOwpAQCAtMzEwLDcgKzMxMCw3IEBAIERl
cHJlY2F0ZWRTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmcKICAgICBEZXByZWNhdGVkU3Ry
aW5nTGlzdCBtYXJrdXBzOwogICAgIE5vZGUgKnBhc3RFbmQgPSByYW5nZS0+cGFzdEVuZE5vZGUo
KTsKICAgICBOb2RlICpsYXN0Q2xvc2VkID0gMDsKLSAgICBEZXByZWNhdGVkUHRyTGlzdDxOb2Rl
PiBhbmNlc3RvcnNUb0Nsb3NlOworICAgIFZlY3RvcjxOb2RlKj4gYW5jZXN0b3JzVG9DbG9zZTsK
ICAgICBib29sIHByZXBlbmROZXdsaW5lID0gZmFsc2U7CiAKICAgICAvLyBjYWxjdWxhdGUgdGhl
ICJkZWZhdWx0IHN0eWxlIiBmb3IgdGhpcyBtYXJrdXAKQEAgLTM2MiwxNCArMzYyLDE1IEBAIERl
cHJlY2F0ZWRTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmcKICAgICAgICAgICAgIGlmIChu
LT5uZXh0U2libGluZygpID09IDAgfHwgbmV4dCA9PSBwYXN0RW5kKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFhbmNlc3RvcnNUb0Nsb3NlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAg
ICAvLyBDbG9zZSB1cCB0aGUgYW5jZXN0b3JzLgotICAgICAgICAgICAgICAgICAgICB3aGlsZSAo
Tm9kZSAqYW5jZXN0b3IgPSBhbmNlc3RvcnNUb0Nsb3NlLmxhc3QoKSkgeworICAgICAgICAgICAg
ICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICBOb2RlICphbmNlc3RvciA9IGFu
Y2VzdG9yc1RvQ2xvc2UubGFzdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQg
IT0gcGFzdEVuZCAmJiBhbmNlc3RvciA9PSBuZXh0LT5wYXJlbnROb2RlKCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3Qg
YXQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UsIGNsb3NlIGFuY2VzdG9ycyB1cCB0byBzaWJsaW5nIG9m
IG5leHQgbm9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmt1cHMuYXBwZW5kKGVuZE1h
cmt1cChhbmNlc3RvcikpOwogICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENsb3NlZCA9IGFu
Y2VzdG9yOwogICAgICAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3JzVG9DbG9zZS5yZW1vdmVM
YXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSB3aGls
ZSAoIWFuY2VzdG9yc1RvQ2xvc2UuaXNFbXB0eSgpKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAvLyBObyBhbmNlc3RvcnMgdG8gY2xvc2UsIGJ1dCBuZWVk
IHRvIGFkZCBhbmNlc3RvcnMgbm90IGluIHJhbmdlIHNpbmNlIG5leHQgbm9kZSBpcyBpbiBhbm90
aGVyIHRyZWUuIAogICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCAhPSBwYXN0RW5kKSB7CkBA
IC00NjAsMTYgKzQ2MSwxOCBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtCiAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKIH0KIAotRGVwcmVjYXRlZFN0cmlu
ZyBjcmVhdGVNYXJrdXAoY29uc3QgTm9kZSAqbm9kZSwgRUNoaWxkcmVuT25seSBpbmNsdWRlQ2hp
bGRyZW4sCi0gICAgRGVwcmVjYXRlZFB0ckxpc3Q8Tm9kZT4gKm5vZGVzLCBFQW5ub3RhdGVGb3JJ
bnRlcmNoYW5nZSBhbm5vdGF0ZSkKK0RlcHJlY2F0ZWRTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0
IE5vZGUqIG5vZGUsIEVDaGlsZHJlbk9ubHkgaW5jbHVkZUNoaWxkcmVuLAorICAgIFZlY3RvcjxO
b2RlKj4qIG5vZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBhbm5vdGF0ZSkKIHsKICAgICBB
U1NFUlQoYW5ub3RhdGUgPT0gRG9Ob3RBbm5vdGF0ZUZvckludGVyY2hhbmdlKTsgLy8gYW5ub3Rh
dGlvbiBub3QgeWV0IGltcGxlbWVudGVkIGZvciB0aGlzIGNvZGUgcGF0aAogICAgIG5vZGUtPmRv
Y3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotICAgIHJl
dHVybiBtYXJrdXAobm9kZSwgaW5jbHVkZUNoaWxkcmVuLCBmYWxzZSwgbm9kZXMpOworICAgIHJl
dHVybiBtYXJrdXAoY29uc3RfY2FzdDxOb2RlKj4obm9kZSksIGluY2x1ZGVDaGlsZHJlbiwgZmFs
c2UsIG5vZGVzKTsKIH0KIAotc3RhdGljIHZvaWQgY3JlYXRlUGFyYWdyYXBoQ29udGVudHNGcm9t
U3RyaW5nKERvY3VtZW50ICpkb2N1bWVudCwgRWxlbWVudCAqcGFyYWdyYXBoLCBjb25zdCBEZXBy
ZWNhdGVkU3RyaW5nICZzdHJpbmcpCitzdGF0aWMgdm9pZCBjcmVhdGVQYXJhZ3JhcGhDb250ZW50
c0Zyb21TdHJpbmcoRWxlbWVudCogcGFyYWdyYXBoLCBjb25zdCBEZXByZWNhdGVkU3RyaW5nJiBz
dHJpbmcpCiB7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcGFyYWdyYXBoLT5kb2N1bWVudCgp
OworCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkp
IHsKICAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChjcmVhdGVCbG9ja1BsYWNlaG9sZGVy
RWxlbWVudChkb2N1bWVudCksIGVjKTsKQEAgLTQ4Nyw3ICs0OTAsNyBAQCBzdGF0aWMgdm9pZCBj
cmVhdGVQYXJhZ3JhcGhDb250ZW50c0Zyb21TCiAKICAgICAgICAgLy8gYXBwZW5kIHRoZSBub24t
dGFiIHRleHR1YWwgcGFydAogICAgICAgICBpZiAoIXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBpZiAodGFiVGV4dCAhPSAiIikgeworICAgICAgICAgICAgaWYgKCF0YWJUZXh0LmlzRW1wdHko
KSkgewogICAgICAgICAgICAgICAgIHBhcmFncmFwaC0+YXBwZW5kQ2hpbGQoY3JlYXRlVGFiU3Bh
bkVsZW1lbnQoZG9jdW1lbnQsIHRhYlRleHQpLCBlYyk7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KGVjID09IDApOwogICAgICAgICAgICAgICAgIHRhYlRleHQgPSAiIjsKQEAgLTUwMCw1MiArNTAz
LDc2IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVBhcmFncmFwaENvbnRlbnRzRnJvbVMKIAogICAgICAg
ICAvLyB0aGVyZSBpcyBhIHRhYiBhZnRlciBldmVyeSBlbnRyeSwgZXhjZXB0IHRoZSBsYXN0IGVu
dHJ5CiAgICAgICAgIC8vIChpZiB0aGUgbGFzdCBjaGFyYWN0ZXIgaXMgYSB0YWIsIHRoZSBsaXN0
IGdldHMgYW4gZXh0cmEgZW1wdHkgZW50cnkpCi0gICAgICAgIGlmICghdGFiTGlzdC5pc0VtcHR5
KCkpIHsKKyAgICAgICAgaWYgKCF0YWJMaXN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHRhYlRl
eHQgKz0gJ1x0JzsKLSAgICAgICAgfSBlbHNlIGlmICh0YWJUZXh0ICE9ICIiKSB7CisgICAgICAg
IGVsc2UgaWYgKCF0YWJUZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgcGFyYWdyYXBoLT5h
cHBlbmRDaGlsZChjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgdGFiVGV4dCksIGVjKTsK
ICAgICAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KERvY3VtZW50
ICpkb2N1bWVudCwgY29uc3QgRGVwcmVjYXRlZFN0cmluZyAmdGV4dCkKK1Bhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChSYW5nZSogY29udGV4dCwgY29u
c3QgU3RyaW5nJiB0ZXh0KQogewotICAgIGlmICghZG9jdW1lbnQpCisgICAgaWYgKCFjb250ZXh0
KQogICAgICAgICByZXR1cm4gMDsKIAorICAgIE5vZGUqIHN0eWxlTm9kZSA9IGNvbnRleHQtPnN0
YXJ0Tm9kZSgpOworICAgIGlmICghc3R5bGVOb2RlKSB7CisgICAgICAgIHN0eWxlTm9kZSA9IGNv
bnRleHQtPnN0YXJ0UG9zaXRpb24oKS5ub2RlKCk7CisgICAgICAgIGlmICghc3R5bGVOb2RlKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
c3R5bGVOb2RlLT5kb2N1bWVudCgpOwogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFn
bWVudCA9IGRvY3VtZW50LT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgCi0gICAgaWYg
KCF0ZXh0LmlzRW1wdHkoKSkgewotICAgICAgICBEZXByZWNhdGVkU3RyaW5nIHN0cmluZyA9IHRl
eHQ7CisgICAgaWYgKHRleHQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZnJhZ21lbnQucmVs
ZWFzZSgpOwogCi0gICAgICAgIC8vIEJyZWFrIHN0cmluZyBpbnRvIHBhcmFncmFwaHMuIEV4dHJh
IGxpbmUgYnJlYWtzIHR1cm4gaW50byBlbXB0eSBwYXJhZ3JhcGhzLgotICAgICAgICBzdHJpbmcu
cmVwbGFjZSgiXHJcbiIsICJcbiIpOwotICAgICAgICBzdHJpbmcucmVwbGFjZSgnXHInLCAnXG4n
KTsKLSAgICAgICAgRGVwcmVjYXRlZFN0cmluZ0xpc3QgbGlzdCA9IERlcHJlY2F0ZWRTdHJpbmdM
aXN0OjpzcGxpdCgnXG4nLCBzdHJpbmcsIHRydWUpOyAvLyB0cnVlIGdldHMgdXMgZW1wdHkgc3Ry
aW5ncyBpbiB0aGUgbGlzdAotICAgICAgICB3aGlsZSAoIWxpc3QuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICBEZXByZWNhdGVkU3RyaW5nIHMgPSBsaXN0LmZpcnN0KCk7Ci0gICAgICAgICAgICBs
aXN0LnBvcF9mcm9udCgpOworICAgIERlcHJlY2F0ZWRTdHJpbmcgc3RyaW5nID0gdGV4dC5kZXBy
ZWNhdGVkU3RyaW5nKCk7CisgICAgc3RyaW5nLnJlcGxhY2UoIlxyXG4iLCAiXG4iKTsKKyAgICBz
dHJpbmcucmVwbGFjZSgnXHInLCAnXG4nKTsKIAotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IHN0eWxlTm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVy
ZXItPnN0eWxlKCktPnByZXNlcnZlTmV3bGluZSgpKSB7CisgICAgICAgIGZyYWdtZW50LT5hcHBl
bmRDaGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUoc3RyaW5nKSwgZWMpOworICAgICAgICBB
U1NFUlQoZWMgPT0gMCk7CisgICAgICAgIGlmIChzdHJpbmcuZW5kc1dpdGgoIlxuIikpIHsKICAg
ICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50OwotICAgICAgICAgICAgaWYgKHMuaXNF
bXB0eSgpICYmIGxpc3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gRm9yIGxhc3Qg
bGluZSwgdXNlIHRoZSAibWFnaWMgQlIiIHJhdGhlciB0aGFuIGEgUC4KLSAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwg
ImJyIiwgZWMpOwotICAgICAgICAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKLSAgICAgICAgICAg
ICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBcHBsZUludGVyY2hhbmdlTmV3
bGluZSk7ICAgICAgICAgICAgCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChkb2N1bWVudCk7Ci0gICAg
ICAgICAgICAgICAgY3JlYXRlUGFyYWdyYXBoQ29udGVudHNGcm9tU3RyaW5nKGRvY3VtZW50LCBl
bGVtZW50LmdldCgpLCBzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZyYWdtZW50LT5h
cHBlbmRDaGlsZChlbGVtZW50LmdldCgpLCBlYyk7CisgICAgICAgICAgICBlbGVtZW50ID0gZG9j
dW1lbnQtPmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgImJyIiwgZWMpOworICAg
ICAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAgICAgICAgZWxlbWVudC0+c2V0QXR0cmli
dXRlKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpOyAgICAgICAgICAgIAorICAg
ICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQucmVsZWFzZSgpLCBlYyk7Cisg
ICAgICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZy
YWdtZW50LnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICAvLyBCcmVhayBzdHJpbmcgaW50byBwYXJh
Z3JhcGhzLiBFeHRyYSBsaW5lIGJyZWFrcyB0dXJuIGludG8gZW1wdHkgcGFyYWdyYXBocy4KKyAg
ICBEZXByZWNhdGVkU3RyaW5nTGlzdCBsaXN0ID0gRGVwcmVjYXRlZFN0cmluZ0xpc3Q6OnNwbGl0
KCdcbicsIHN0cmluZywgdHJ1ZSk7IC8vIHRydWUgZ2V0cyB1cyBlbXB0eSBzdHJpbmdzIGluIHRo
ZSBsaXN0CisgICAgd2hpbGUgKCFsaXN0LmlzRW1wdHkoKSkgeworICAgICAgICBEZXByZWNhdGVk
U3RyaW5nIHMgPSBsaXN0LmZpcnN0KCk7CisgICAgICAgIGxpc3QucG9wX2Zyb250KCk7CisKKyAg
ICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7CisgICAgICAgIGlmIChzLmlzRW1wdHkoKSAm
JiBsaXN0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gRm9yIGxhc3QgbGluZSwgdXNlIHRo
ZSAibWFnaWMgQlIiIHJhdGhlciB0aGFuIGEgUC4KKyAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1
bWVudC0+Y3JlYXRlRWxlbWVudE5TKHhodG1sTmFtZXNwYWNlVVJJLCAiYnIiLCBlYyk7CiAgICAg
ICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1
dGUoY2xhc3NBdHRyLCBBcHBsZUludGVyY2hhbmdlTmV3bGluZSk7ICAgICAgICAgICAgCisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbGVtZW50ID0gY3JlYXRlRGVmYXVsdFBhcmFncmFw
aEVsZW1lbnQoZG9jdW1lbnQpOworICAgICAgICAgICAgY3JlYXRlUGFyYWdyYXBoQ29udGVudHNG
cm9tU3RyaW5nKGVsZW1lbnQuZ2V0KCksIHMpOwogICAgICAgICB9CisgICAgICAgIGZyYWdtZW50
LT5hcHBlbmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgZWMpOworICAgICAgICBBU1NFUlQoZWMg
PT0gMCk7CiAgICAgfQogICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTm9kZUxpc3QoRG9jdW1l
bnQgKmRvY3VtZW50LCBjb25zdCBEZXByZWNhdGVkUHRyTGlzdDxOb2RlPiAmbm9kZUxpc3QpCitQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU5vZGVzKERvY3Vt
ZW50ICpkb2N1bWVudCwgY29uc3QgVmVjdG9yPE5vZGUqPiYgbm9kZXMpCiB7CiAgICAgaWYgKCFk
b2N1bWVudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC01NTMsOSArNTgwLDEwIEBAIFBhc3NSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ20KICAgICBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogCiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZm9yIChEZXByZWNhdGVkUHRyTGlzdEl0ZXJh
dG9yPE5vZGU+IGkobm9kZUxpc3QpOyBpLmN1cnJlbnQoKTsgKytpKSB7CisgICAgc2l6ZV90IHNp
emUgPSBub2Rlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVEZWZhdWx0UGFyYWdy
YXBoRWxlbWVudChkb2N1bWVudCk7Ci0gICAgICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKGkuY3Vy
cmVudCgpLCBlYyk7CisgICAgICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKG5vZGVzW2ldLCBlYyk7
CiAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxk
KGVsZW1lbnQucmVsZWFzZSgpLCBlYyk7CiAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKSW5kZXg6
IFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmgJKHJldmlzaW9uIDE1NTIzKQorKysgV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJIVE1MSW50ZXJjaGFu
Z2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNywxOCArMzgsMTYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIFJhbmdlOwogICAgIGNsYXNzIFN0cmluZzsKIAotICAgIHRlbXBs
YXRlIDxjbGFzcyBUPiBjbGFzcyBEZXByZWNhdGVkUHRyTGlzdDsKLQogICAgIGVudW0gRUNoaWxk
cmVuT25seSB7IEluY2x1ZGVOb2RlLCBDaGlsZHJlbk9ubHkgfTsKIAotICAgIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChEb2N1bWVudCosIGNvbnN0
IERlcHJlY2F0ZWRTdHJpbmcgJnRleHQpOwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKERvY3VtZW50KiwgY29uc3QgU3RyaW5nICZtYXJr
dXAsIGNvbnN0IFN0cmluZyAmYmFzZVVSTCk7Ci0gICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21Ob2RlTGlzdChEb2N1bWVudCosIGNvbnN0IERlcHJlY2F0
ZWRQdHJMaXN0PE5vZGU+ICZub2RlTGlzdCk7Ci0KLSAgICBEZXByZWNhdGVkU3RyaW5nIGNyZWF0
ZU1hcmt1cChjb25zdCBSYW5nZSAqcmFuZ2UsCi0gICAgICAgIERlcHJlY2F0ZWRQdHJMaXN0PE5v
ZGU+ICpub2RlcyA9IDAsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlID0gRG9Ob3RBbm5vdGF0ZUZv
ckludGVyY2hhbmdlKTsKLSAgICBEZXByZWNhdGVkU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBO
b2RlICpub2RlLCBFQ2hpbGRyZW5Pbmx5ID0gSW5jbHVkZU5vZGUsCi0gICAgICAgIERlcHJlY2F0
ZWRQdHJMaXN0PE5vZGU+ICpub2RlcyA9IDAsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlID0gRG9O
b3RBbm5vdGF0ZUZvckludGVyY2hhbmdlKTsKKyAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoUmFuZ2UqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
dGV4dCk7CisgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZy
b21NYXJrdXAoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgY29uc3QgU3RyaW5nJiBi
YXNlVVJMKTsKKyAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50
RnJvbU5vZGVzKERvY3VtZW50KiwgY29uc3QgVmVjdG9yPE5vZGUqPiYpOworCisgICAgRGVwcmVj
YXRlZFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqLAorICAgICAgICBWZWN0b3I8Tm9k
ZSo+KiA9IDAsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlID0gRG9Ob3RBbm5vdGF0ZUZvckludGVy
Y2hhbmdlKTsKKyAgICBEZXByZWNhdGVkU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBOb2RlKiwg
RUNoaWxkcmVuT25seSA9IEluY2x1ZGVOb2RlLAorICAgICAgICBWZWN0b3I8Tm9kZSo+KiA9IDAs
IEVBbm5vdGF0ZUZvckludGVyY2hhbmdlID0gRG9Ob3RBbm5vdGF0ZUZvckludGVyY2hhbmdlKTsK
IAogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NTIzKQorKysgV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCw5IEBA
IHZvaWQgSFRNTEVsZW1lbnQ6OnNldElubmVySFRNTChjb25zdCBTdHIKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBBZGQgc3BlY2lhbCBjYXNlIGZvciB3aGVuIHdlIGhh
ZCBvbmUgdGV4dCBjaGlsZCBhbmQgd2UganVzdCB3YW50IHRvIHNldCBpdHMgdGV4dD8KKyAgICAv
LyBGSVhNRTogQWRkIHNwZWNpYWwgY2FzZSBmb3IgY2FzZXMgd2hlcmUgd2UgY2FuIHVzZSByZXBs
YWNlQ2hpbGQ/CisKICAgICByZW1vdmVDaGlsZHJlbigpOwogICAgIGFwcGVuZENoaWxkKGZyYWdt
ZW50LnJlbGVhc2UoKSwgZWMpOwogfQpAQCAtMzE5LDggKzMyMiw4IEBAIHZvaWQgSFRNTEVsZW1l
bnQ6OnNldE91dGVySFRNTChjb25zdCBTdHIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IC8vIEZJWE1FOiBXaHkgZG9lc24ndCB0aGlzIGhhdmUgY29kZSB0byBtZXJnZSBuZWlnaGJvcmlu
ZyB0ZXh0IG5vZGVzIHRoZQotICAgIC8vIHdheSBzZXRPdXRlclRleHQgZG9lcz8KKyAgICAvLyBG
SVhNRTogQWRkIHNwZWNpYWwgY2FzZSBmb3Igd2hlbiB3ZSBoYWQgb25lIHRleHQgY2hpbGQgYW5k
IHdlIGp1c3Qgd2FudCB0byBzZXQgaXRzIHRleHQ/CisgICAgLy8gRklYTUU6IFdoeSBkb2Vzbid0
IHRoaXMgaGF2ZSBjb2RlIHRvIG1lcmdlIG5laWdoYm9yaW5nIHRleHQgbm9kZXMgdGhlIHdheSBz
ZXRPdXRlclRleHQgZG9lcz8KICAgICBwYXJlbnQtPnJlcGxhY2VDaGlsZChmcmFnbWVudC5yZWxl
YXNlKCksIHRoaXMsIGVjKTsKIH0KIApAQCAtMzM5LDM2ICszNDIsNjAgQEAgdm9pZCBIVE1MRWxl
bWVudDo6c2V0SW5uZXJUZXh0KGNvbnN0IFN0cgogICAgICAgICByZXR1cm47CiAgICAgfQogCisg
ICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB0YWtlIHdoaXRlc3BhY2UgY29sbGFwc2luZyBpbnRv
IGFjY291bnQgYXQgYWxsLgorICAgIC8vIEZJWE1FOiBBZGQgc3BlY2lhbCBjYXNlIGZvciB3aGVu
IHdlIGhhZCBvbmUgdGV4dCBjaGlsZCBhbmQgd2UganVzdCB3YW50IHRvIHNldCBpdHMgdGV4dD8K
KyAgICAvLyBGSVhNRTogQWRkIHNwZWNpYWwgY2FzZSBmb3IgY2FzZXMgd2hlcmUgd2UgY2FuIHVz
ZSByZXBsYWNlQ2hpbGQ/CisKICAgICByZW1vdmVDaGlsZHJlbigpOwogCisgICAgaWYgKCF0ZXh0
LmNvbnRhaW5zKCdcbicpICYmICF0ZXh0LmNvbnRhaW5zKCdccicpKSB7CisgICAgICAgIGlmICh0
ZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXBwZW5kQ2hpbGQo
bmV3IFRleHQoZG9jdW1lbnQoKSwgdGV4dCksIGVjKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gZGV0ZWN0IHByZXNlcnZl
TmV3bGluZSBzdHlsZSBldmVuIHdoZW4gdGhlcmUncyBubyByZW5kZXJlcj8KKyAgICAvLyBGSVhN
RTogQ2FuIHRoZSByZW5kZXJlciBiZSBvdXQgb2YgZGF0ZSBoZXJlPyBEbyB3ZSBuZWVkIHRvIGNh
bGwgdXBkYXRlUmVuZGVyaW5nPworICAgIC8vIEZvciBleGFtcGxlLCBmb3IgdGhlIGNvbnRlbnRz
IG9mIHRleHRhcmVhIGVsZW1lbnRzIHRoYXQgYXJlIGRpc3BsYXk6bm9uZT8KKyAgICBSZW5kZXJP
YmplY3QqIHIgPSByZW5kZXJlcigpOworICAgIGlmIChyICYmIHItPnN0eWxlKCktPnByZXNlcnZl
TmV3bGluZSgpKSB7CisgICAgICAgIGlmICghdGV4dC5jb250YWlucygnXHInKSkgeworICAgICAg
ICAgICAgYXBwZW5kQ2hpbGQobmV3IFRleHQoZG9jdW1lbnQoKSwgdGV4dCksIGVjKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogU3RpY2sgd2l0aCBT
dHJpbmcgb25jZSBpdCBoYXMgYSByZXBsYWNlIHRoYXQgY2FuIGRvIHRoaXMuCisgICAgICAgIERl
cHJlY2F0ZWRTdHJpbmcgdGV4dFdpdGhDb25zaXN0ZW50TGluZUJyZWFrcyA9IHRleHQuZGVwcmVj
YXRlZFN0cmluZygpOworICAgICAgICB0ZXh0V2l0aENvbnNpc3RlbnRMaW5lQnJlYWtzLnJlcGxh
Y2UoIlxyXG4iLCAiXG4iKTsKKyAgICAgICAgdGV4dFdpdGhDb25zaXN0ZW50TGluZUJyZWFrcy5y
ZXBsYWNlKCdccicsICdcbicpOworICAgICAgICBhcHBlbmRDaGlsZChuZXcgVGV4dChkb2N1bWVu
dCgpLCB0ZXh0V2l0aENvbnNpc3RlbnRMaW5lQnJlYWtzKSwgZWMpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgLy8gQWRkIHRleHQgbm9kZXMgYW5kIDxicj4gZWxlbWVudHMuCisgICAg
ZWMgPSAwOworICAgIGludCBsaW5lU3RhcnQgPSAwOworICAgIFVDaGFyIHByZXYgPSAwOwogICAg
IGludCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOwotICAgIGlmICghdGV4dC5jb250YWlucygnXG4n
KSAmJiAhdGV4dC5jb250YWlucygnXHInKSAmJiBsZW5ndGgpCi0gICAgICAgIGFwcGVuZENoaWxk
KG5ldyBUZXh0KGRvY3VtZW50KCksIHRleHQpLCBlYyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGVj
ID0gMDsKLSAgICAgICAgaW50IGxpbmVTdGFydCA9IDA7Ci0gICAgICAgIFVDaGFyIHByZXYgPSAw
OwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAg
ICBVQ2hhciBjID0gdGV4dFtpXTsKLSAgICAgICAgICAgIGlmIChjID09ICdcbicgfHwgYyA9PSAn
XHInKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGkgPiBsaW5lU3RhcnQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kQ2hpbGQobmV3IFRleHQoZG9jdW1lbnQoKSwgdGV4dC5zdWJzdHJpbmco
bGluZVN0YXJ0LCBpIC0gbGluZVN0YXJ0KSksIGVjKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGVjKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBpZiAoIShjID09ICdcbicgJiYgaSAhPSAwICYmIHByZXYgPT0gJ1xy
JykpIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQobmV3IEhUTUxCUkVsZW1lbnQo
ZG9jdW1lbnQoKSksIGVjKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVjKQotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBsaW5lU3RhcnQgPSBpICsgMTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytp
KSB7CisgICAgICAgIFVDaGFyIGMgPSB0ZXh0W2ldOworICAgICAgICBpZiAoYyA9PSAnXG4nIHx8
IGMgPT0gJ1xyJykgeworICAgICAgICAgICAgaWYgKGkgPiBsaW5lU3RhcnQpIHsKKyAgICAgICAg
ICAgICAgICBhcHBlbmRDaGlsZChuZXcgVGV4dChkb2N1bWVudCgpLCB0ZXh0LnN1YnN0cmluZyhs
aW5lU3RhcnQsIGkgLSBsaW5lU3RhcnQpKSwgZWMpOworICAgICAgICAgICAgICAgIGlmIChlYykK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKCEoYyA9PSAnXG4nICYmIGkgIT0gMCAmJiBwcmV2ID09ICdccicpKSB7CisgICAgICAgICAg
ICAgICAgYXBwZW5kQ2hpbGQobmV3IEhUTUxCUkVsZW1lbnQoZG9jdW1lbnQoKSksIGVjKTsKKyAg
ICAgICAgICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHByZXYgPSBjOworICAgICAgICAgICAgbGluZVN0YXJ0ID0g
aSArIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGxlbmd0aCA+IGxpbmVTdGFydCkKLSAgICAg
ICAgICAgIGFwcGVuZENoaWxkKG5ldyBUZXh0KGRvY3VtZW50KCksIHRleHQuc3Vic3RyaW5nKGxp
bmVTdGFydCwgbGVuZ3RoIC0gbGluZVN0YXJ0KSksIGVjKTsKKyAgICAgICAgcHJldiA9IGM7CiAg
ICAgfQorICAgIGlmIChsZW5ndGggPiBsaW5lU3RhcnQpCisgICAgICAgIGFwcGVuZENoaWxkKG5l
dyBUZXh0KGRvY3VtZW50KCksIHRleHQuc3Vic3RyaW5nKGxpbmVTdGFydCwgbGVuZ3RoIC0gbGlu
ZVN0YXJ0KSksIGVjKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6c2V0T3V0ZXJUZXh0KGNvbnN0
IFN0cmluZyAmdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTUyMykKKysrIFdlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDEzICsyNTMsMTMgQEAgU3Ry
aW5nIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlKCkgY29ucwogCiB2b2lkIEhUTUxUZXh0QXJl
YUVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgRGVwcmVjYXRl
ZFN0cmluZyBzdHJpbmcgPSB2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCk7CiAgICAgLy8gV2ViQ29y
ZVRleHRBcmVhIG5vcm1hbGl6ZXMgbGluZSBlbmRpbmdzIGFkZGVkIGJ5IHRoZSB1c2VyIHZpYSB0
aGUga2V5Ym9hcmQgb3IgcGFzdGluZy4KICAgICAvLyBXZSBtdXN0IG5vcm1hbGl6ZSBsaW5lIGVu
ZGluZ3MgY29taW5nIGZyb20gSlMuCi0gICAgc3RyaW5nLnJlcGxhY2UoIlxyXG4iLCAiXG4iKTsK
LSAgICBzdHJpbmcucmVwbGFjZSgiXHIiLCAiXG4iKTsKKyAgICBEZXByZWNhdGVkU3RyaW5nIHZh
bHVlV2l0aE5vcm1hbGl6ZWRMaW5lRW5kaW5ncyA9IHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKTsK
KyAgICB2YWx1ZVdpdGhOb3JtYWxpemVkTGluZUVuZGluZ3MucmVwbGFjZSgiXHJcbiIsICJcbiIp
OworICAgIHZhbHVlV2l0aE5vcm1hbGl6ZWRMaW5lRW5kaW5ncy5yZXBsYWNlKCJcciIsICJcbiIp
OwogICAgIAotICAgIG1fdmFsdWUgPSBTdHJpbmcoc3RyaW5nKTsKKyAgICBtX3ZhbHVlID0gdmFs
dWVXaXRoTm9ybWFsaXplZExpbmVFbmRpbmdzOwogICAgIHNldFZhbHVlTWF0Y2hlc1JlbmRlcmVy
KCk7CiAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21F
bGVtZW50KCk7CkBAIC0yNzcsMTMgKzI3NywxNCBAQCBTdHJpbmcgSFRNTFRleHRBcmVhRWxlbWVu
dDo6ZGVmYXVsdFZhbHVlCiB7CiAgICAgU3RyaW5nIHZhbCA9ICIiOwogCi0gICAgLy8gdGhlcmUg
bWF5IGJlIGNvbW1lbnRzIC0ganVzdCBncmFiIHRoZSB0ZXh0IG5vZGVzCisgICAgLy8gU2luY2Ug
dGhlcmUgbWF5IGJlIGNvbW1lbnRzLCBpZ25vcmUgbm9kZXMgb3RoZXIgdGhhbiB0ZXh0IG5vZGVz
LgogICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5n
KCkpCiAgICAgICAgIGlmIChuLT5pc1RleHROb2RlKCkpCiAgICAgICAgICAgICB2YWwgKz0gc3Rh
dGljX2Nhc3Q8VGV4dCo+KG4pLT5kYXRhKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG9u
bHkgZHJvcCB0aGUgZmlyc3QgY2FycmlhZ2UgcmV0dXJuIGZvciB0aGUgZGVmYXVsdAotICAgIC8v
IHZhbHVlIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG5vdCBkZWZhdWx0VmFsdWVzIHNldCBmcm9t
IEpTLgorICAgIC8vIHZhbHVlIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG5vdCBkZWZhdWx0VmFs
dWVzIHNldCBmcm9tIEpTLiBUaGlzIGNvZGUKKyAgICAvLyB3aWxsIGRvIGJvdGguCiAgICAgaWYg
KHZhbC5sZW5ndGgoKSA+PSAyICYmIHZhbFswXSA9PSAnXHInICYmIHZhbFsxXSA9PSAnXG4nKQog
ICAgICAgICB2YWwucmVtb3ZlKDAsIDIpOwogICAgIGVsc2UgaWYgKHZhbC5sZW5ndGgoKSA+PSAx
ICYmICh2YWxbMF0gPT0gJ1xyJyB8fCB2YWxbMF0gPT0gJ1xuJykpCkBAIC0yOTQsMTggKzI5NSwx
NSBAQCBTdHJpbmcgSFRNTFRleHRBcmVhRWxlbWVudDo6ZGVmYXVsdFZhbHVlCiAKIHZvaWQgSFRN
TFRleHRBcmVhRWxlbWVudDo6c2V0RGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyYgZGVmYXVsdFZh
bHVlKQogewotICAgIC8vIHRoZXJlIG1heSBiZSBjb21tZW50cyAtIHJlbW92ZSBhbGwgdGhlIHRl
eHQgbm9kZXMgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIG9uZQotICAgIERlcHJlY2F0ZWRQdHJMaXN0
PE5vZGU+IHRvUmVtb3ZlOwotICAgIE5vZGUgKm47Ci0gICAgZm9yIChuID0gZmlyc3RDaGlsZCgp
OyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkKKyAgICAvLyBUbyBwcmVzZXJ2ZSBjb21tZW50cywg
cmVtb3ZlIGFsbCB0aGUgdGV4dCBub2RlcywgdGhlbiBhZGQgYSBzaW5nbGUgb25lLgorICAgIFZl
Y3RvcjxSZWZQdHI8Tm9kZT4gPiB0ZXh0Tm9kZXM7CisgICAgZm9yIChOb2RlKiBuID0gZmlyc3RD
aGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgaWYgKG4tPmlzVGV4dE5v
ZGUoKSkKLSAgICAgICAgICAgIHRvUmVtb3ZlLmFwcGVuZChuKTsKLSAgICBEZXByZWNhdGVkUHRy
TGlzdEl0ZXJhdG9yPE5vZGU+IGl0KHRvUmVtb3ZlKTsKKyAgICAgICAgICAgIHRleHROb2Rlcy5h
cHBlbmQobik7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZm9yICg7IGl0LmN1cnJl
bnQoKTsgKytpdCkgewotICAgICAgICBSZWZQdHI8Tm9kZT4gbiA9IGl0LmN1cnJlbnQoKTsKLSAg
ICAgICAgcmVtb3ZlQ2hpbGQobi5nZXQoKSwgZWMpOwotICAgIH0KKyAgICBzaXplX3Qgc2l6ZSA9
IHRleHROb2Rlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
CisgICAgICAgIHJlbW92ZUNoaWxkKHRleHROb2Rlc1tpXS5nZXQoKSwgZWMpOwogICAgIGluc2Vy
dEJlZm9yZShkb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZShkZWZhdWx0VmFsdWUpLCBmaXJzdENo
aWxkKCksIGVjKTsKICAgICBzZXRWYWx1ZShkZWZhdWx0VmFsdWUpOwogfQpJbmRleDogV2ViQ29y
ZS9sb2FkZXIvQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZS5oCShy
ZXZpc2lvbiAxNTUyMykKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDYgQEAKICNkZWZpbmUgQ2FjaGVfaAogCiAjaW5jbHVkZSAiQ2FjaGVQb2xp
Y3kuaCIKLSNpbmNsdWRlICJEZXByZWNhdGVkUHRyTGlzdC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIApJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDE1NTIzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczNSw0ICs3MzUsMjggQEAgaW50
IElubGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0KGludAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KG1feCwgMCksIDApKS5y
aWdodCgpOwogfQogCitib29sIElubGluZVRleHRCb3g6OmNvbnRhaW5zQ2FyZXRPZmZzZXQoaW50
IG9mZnNldCkgY29uc3QKK3sKKyAgICAvLyBPZmZzZXRzIGJlZm9yZSB0aGUgYm94IGFyZSBuZXZl
ciAiaW4iLgorICAgIGlmIChvZmZzZXQgPCBtX3N0YXJ0KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpbnQgcGFzdEVuZCA9IG1fc3RhcnQgKyBtX2xlbjsKKworICAgIC8vIE9mZnNldHMg
aW5zaWRlIHRoZSBib3ggKG5vdCBhdCBlaXRoZXIgZWRnZSkgYXJlIGFsd2F5cyAiaW4iLgorICAg
IGlmIChvZmZzZXQgPCBwYXN0RW5kKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIE9m
ZnNldHMgb3V0c2lkZSB0aGUgYm94IGFyZSBhbHdheXMgIm91dCIuCisgICAgaWYgKG9mZnNldCA+
IHBhc3RFbmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE9mZnNldHMgYXQgdGhl
IGVuZCBhcmUgIm91dCIgZm9yIGxpbmUgYnJlYWtzICh0aGV5IGFyZSBvbiB0aGUgbmV4dCBsaW5l
KS4KKyAgICBpZiAoaXNMaW5lQnJlYWsoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gT2Zmc2V0cyBhdCB0aGUgZW5kIGFyZSAiaW4iIGZvciBub3JtYWwgYm94ZXMgKGJ1dCB0aGUg
Y2FsbGVyIGhhcyB0byBjaGVjayBhZmZpbml0eSkuCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0K
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgJKHJldmlzaW9uIDE1NTIzKQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiAr
MTIzLDggQEAgcHVibGljOgogICAgIGludCB0ZXh0UG9zKCkgY29uc3Q7CiAgICAgaW50IG9mZnNl
dEZvclBvc2l0aW9uKGludCBfeCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocyA9IHRydWUpIGNv
bnN0OwogICAgIGludCBwb3NpdGlvbkZvck9mZnNldChpbnQgb2Zmc2V0KSBjb25zdDsKKworICAg
IGJvb2wgY29udGFpbnNDYXJldE9mZnNldChpbnQgb2Zmc2V0KSBjb25zdDsgLy8gZmFsc2UgZm9y
IG9mZnNldCBhZnRlciBsaW5lIGJyZWFrCiAgICAgCiAgICAgaW50IG1fc3RhcnQ7CiAgICAgdW5z
aWduZWQgc2hvcnQgbV9sZW47CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkocmV2aXNp
b24gMTU1MjMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzU0LDE0ICszNTQsOSBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0ICpsYXN0UmVuZGVy
ZXJPblByZXZMCiAgICAgcmV0dXJuIGxhc3RDaGlsZC0+b2JqZWN0KCk7CiB9CiAKLWJvb2wgUmVu
ZGVyVGV4dDo6YXRMaW5lV3JhcChJbmxpbmVUZXh0Qm94ICpib3gsIGludCBvZmZzZXQpCitzdGF0
aWMgaW5saW5lIGJvb2wgYXRMaW5lV3JhcChJbmxpbmVUZXh0Qm94KiBib3gsIGludCBvZmZzZXQp
CiB7Ci0gICAgaWYgKGJveC0+bmV4dFRleHRCb3goKSAmJiAhYm94LT5uZXh0T25MaW5lKCkgJiYg
b2Zmc2V0ID09IGJveC0+bV9zdGFydCArIGJveC0+bV9sZW4pIHsKLSAgICAgICAgaWYgKCFzdHls
ZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSB8fCAhYm94LT5pc0xpbmVCcmVhaygpKQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gYm94LT5uZXh0VGV4dEJveCgpICYmICFib3gtPm5leHRPbkxpbmUoKSAmJiBvZmZzZXQgPT0g
Ym94LT5tX3N0YXJ0ICsgYm94LT5tX2xlbjsKIH0KIAogSW50UmVjdCBSZW5kZXJUZXh0OjpjYXJl
dFJlY3QoaW50IG9mZnNldCwgRUFmZmluaXR5IGFmZmluaXR5LCBpbnQgKmV4dHJhV2lkdGhUb0Vu
ZE9mTGluZSkKQEAgLTM3Miw3ICszNjcsNyBAQCBJbnRSZWN0IFJlbmRlclRleHQ6OmNhcmV0UmVj
dChpbnQgb2Zmc2V0CiAgICAgLy8gRmluZCB0aGUgdGV4dCBib3ggZm9yIHRoZSBnaXZlbiBvZmZz
ZXQKICAgICBJbmxpbmVUZXh0Qm94ICpib3ggPSAwOwogICAgIGZvciAoYm94ID0gZmlyc3RUZXh0
Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7Ci0gICAgICAgIGlmICgob2Zm
c2V0ID49IGJveC0+bV9zdGFydCkgJiYgKG9mZnNldCA8PSBib3gtPm1fc3RhcnQgKyBib3gtPm1f
bGVuKSkgeworICAgICAgICBpZiAoYm94LT5jb250YWluc0NhcmV0T2Zmc2V0KG9mZnNldCkpIHsK
ICAgICAgICAgICAgIC8vIENoZWNrIGlmIGRvd25zdHJlYW0gYWZmaW5pdHkgd291bGQgbWFrZSB1
cyBtb3ZlIHRvIHRoZSBuZXh0IGxpbmUuCiAgICAgICAgICAgICBpZiAoYXRMaW5lV3JhcChib3gs
IG9mZnNldCkgJiYgYWZmaW5pdHkgPT0gRE9XTlNUUkVBTSkgewogICAgICAgICAgICAgICAgIC8v
IFVzZSB0aGUgbmV4dCB0ZXh0IGJveApAQCAtMTEwOSwyMSArMTEwNCwxOSBAQCB1bnNpZ25lZCBS
ZW5kZXJUZXh0OjpjYXJldE1heFJlbmRlcmVkT2ZmCiAgICAgcmV0dXJuIGw7CiB9CiAKLUlubGlu
ZUJveCAqUmVuZGVyVGV4dDo6aW5saW5lQm94KGludCBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbml0
eSkKK0lubGluZUJveCogUmVuZGVyVGV4dDo6aW5saW5lQm94KGludCBvZmZzZXQsIEVBZmZpbml0
eSBhZmZpbml0eSkKIHsKLSAgICBmb3IgKElubGluZVRleHRCb3ggKmJveCA9IGZpcnN0VGV4dEJv
eCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewotICAgICAgICBpZiAob2Zmc2V0
ID49IGJveC0+bV9zdGFydCAmJiBvZmZzZXQgPD0gYm94LT5tX3N0YXJ0ICsgYm94LT5tX2xlbikg
eworICAgIGZvciAoSW5saW5lVGV4dEJveCogYm94ID0gZmlyc3RUZXh0Qm94KCk7IGJveDsgYm94
ID0gYm94LT5uZXh0VGV4dEJveCgpKSB7CisgICAgICAgIGlmIChib3gtPmNvbnRhaW5zQ2FyZXRP
ZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAgaWYgKGF0TGluZVdyYXAoYm94LCBvZmZzZXQp
ICYmIGFmZmluaXR5ID09IERPV05TVFJFQU0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGJveC0+
bmV4dFRleHRCb3goKTsKICAgICAgICAgICAgIHJldHVybiBib3g7CiAgICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGlmIChvZmZzZXQgPCBib3gtPm1fc3RhcnQpIHsKKyAgICAgICAgaWYgKG9m
ZnNldCA8IGJveC0+bV9zdGFydCkKICAgICAgICAgICAgIC8vIFRoZSBvZmZzZXQgd2UncmUgbG9v
a2luZyBmb3IgaXMgYmVmb3JlIHRoaXMgbm9kZQogICAgICAgICAgICAgLy8gdGhpcyBtZWFucyB0
aGUgb2Zmc2V0IG11c3QgYmUgaW4gY29udGVudCB0aGF0IGlzCiAgICAgICAgICAgICAvLyBub3Qg
cmVuZGVyZWQuCiAgICAgICAgICAgICByZXR1cm4gYm94LT5wcmV2VGV4dEJveCgpID8gYm94LT5w
cmV2VGV4dEJveCgpIDogZmlyc3RUZXh0Qm94KCk7Ci0gICAgICAgIH0KICAgICB9CiAgICAgCiAg
ICAgcmV0dXJuIDA7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCShyZXZpc2lvbiAxNTUyMykK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5
LDExICsxNDksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IGNhcmV0TWF4T2Zmc2V0KCkg
Y29uc3Q7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBjYXJldE1heFJlbmRlcmVkT2Zmc2V0KCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIGludCBwcmV2aW91c09mZnNldCAoaW50IGN1cnJlbnQpIGNvbnN0
OwotICAgIHZpcnR1YWwgaW50IG5leHRPZmZzZXQgKGludCBjdXJyZW50KSBjb25zdDsKKyAgICB2
aXJ0dWFsIGludCBwcmV2aW91c09mZnNldChpbnQgY3VycmVudCkgY29uc3Q7CisgICAgdmlydHVh
bCBpbnQgbmV4dE9mZnNldChpbnQgY3VycmVudCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBhdExp
bmVXcmFwKElubGluZVRleHRCb3ggKmJveCwgaW50IG9mZnNldCk7Ci0gICAgYm9vbCBjb250YWlu
c1JldmVyc2VkVGV4dCgpIHsgcmV0dXJuIG1fY29udGFpbnNSZXZlcnNlZFRleHQ7IH0KKyAgICBi
b29sIGNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250YWluc1JldmVy
c2VkVGV4dDsgfQogICAgIAogcHVibGljOgogICAgIElubGluZVRleHRCb3ggKiBmaW5kTmV4dElu
bGluZVRleHRCb3goIGludCBvZmZzZXQsIGludCAmcG9zICkgY29uc3Q7CkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCShyZXZpc2lvbiAxNTUyMykKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NiArMjUsNyBAQAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRNTEJSRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJI
VE1MVGV4dEFyZWFFbGVtZW50LmgiCkBAIC0xNTYsNiArMTU3LDggQEAgdm9pZCBSZW5kZXJUZXh0
Q29udHJvbDo6dXBkYXRlRnJvbUVsZW1lbgogICAgICAgICBpZiAodmFsdWUgIT0gb2xkVGV4dCB8
fCAhbV9kaXYtPmhhc0NoaWxkTm9kZXMoKSkgewogICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgICAgICAgICBtX2Rpdi0+c2V0SW5uZXJUZXh0KHZhbHVlLCBlYyk7CisgICAg
ICAgICAgICBpZiAodmFsdWUuZW5kc1dpdGgoIlxuIikgfHwgdmFsdWUuZW5kc1dpdGgoIlxyIikp
CisgICAgICAgICAgICAgICAgbV9kaXYtPmFwcGVuZENoaWxkKG5ldyBIVE1MQlJFbGVtZW50KGRv
Y3VtZW50KCkpLCBlYyk7CiAgICAgICAgICAgICBzZXRFZGl0ZWQoZmFsc2UpOwogICAgICAgICB9
CiAgICAgICAgIGVsZW1lbnQtPnNldFZhbHVlTWF0Y2hlc1JlbmRlcmVyKCk7CkBAIC0yNjAsNyAr
MjYzLDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6c3VidHJlZUhhc0NoYW5nZQogU3RyaW5n
IFJlbmRlclRleHRDb250cm9sOjp0ZXh0KCkKIHsKICAgICBpZiAobV9kaXYpCi0gICAgICAgIHJl
dHVybiBtX2Rpdi0+dGV4dENvbnRlbnQodHJ1ZSkucmVwbGFjZSgnXFwnLCBiYWNrc2xhc2hBc0N1
cnJlbmN5U3ltYm9sKCkpOworICAgICAgICByZXR1cm4gbV9kaXYtPnRleHRDb250ZW50KCkucmVw
bGFjZSgnXFwnLCBiYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sKCkpOwogICAgIHJldHVybiBTdHJp
bmcoKTsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAJKHJldmlzaW9uIDE1NTIzKQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvYmlkaS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NzYsNyArMjQ3Niw3IEBA
IEJpZGlJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lQnIKIAogICAgIGlmIChsQnJl
YWsgPT0gc3RhcnQgJiYgIWxCcmVhay5vYmotPmlzQlIoKSkgewogICAgICAgICAvLyB3ZSBqdXN0
IGFkZCBhcyBtdWNoIGFzIHBvc3NpYmxlCi0gICAgICAgIGlmIChzdHlsZSgpLT53aGl0ZVNwYWNl
KCkgPT0gUFJFKSB7CisgICAgICAgIGlmIChzdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgewog
ICAgICAgICAgICAgLy8gRklYTUU6IERvbid0IHJlYWxseSB1bmRlcnN0YW5kIHRoaXMgY2FzZS4K
ICAgICAgICAgICAgIGlmIChwb3MgIT0gMCkgewogICAgICAgICAgICAgICAgIGxCcmVhay5vYmog
PSBvOwpJbmRleDogV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvV2ViVmlldy9XZWJIVE1MVmlldy5tCShyZXZpc2lvbiAxNTUyMykKKysrIFdlYktpdC9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm0JKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCB2
b2lkICpfTlNTb2Z0TGlua2luZ0dldEZyYW1ld29ya0Z1bmNQdHIoCiAKIEBpbnRlcmZhY2UgV2Vi
SFRNTFZpZXcgKFdlYkhUTUxWaWV3RmlsZUludGVybmFsKQogLSAoQk9PTClfaW1hZ2VFeGlzdHNB
dFBhdGhzOihOU0FycmF5ICopcGF0aHM7Ci0tIChET01Eb2N1bWVudEZyYWdtZW50ICopX2RvY3Vt
ZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCBhbGxv
d1BsYWluVGV4dDooQk9PTClhbGxvd1BsYWluVGV4dCBjaG9zZVBsYWluVGV4dDooQk9PTCAqKWNo
b3NlUGxhaW5UZXh0OworLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50
RnJvbVBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgaW5Db250ZXh0OihET01S
YW5nZSAqKWNvbnRleHQgYWxsb3dQbGFpblRleHQ6KEJPT0wpYWxsb3dQbGFpblRleHQgY2hvc2VQ
bGFpblRleHQ6KEJPT0wgKiljaG9zZVBsYWluVGV4dDsKIC0gKE5TU3RyaW5nICopX3BsYWluVGV4
dEZyb21QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkOwogLSAodm9pZClfcGFz
dGVXaXRoUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCBhbGxvd1BsYWluVGV4
dDooQk9PTClhbGxvd1BsYWluVGV4dDsKIC0gKHZvaWQpX3Bhc3RlQXNQbGFpblRleHRXaXRoUGFz
dGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZDsKQEAgLTM2Miw3ICszNjIsMTAgQEAg
dm9pZCAqX05TU29mdExpbmtpbmdHZXRGcmFtZXdvcmtGdW5jUHRyKAogICAgIHJldHVybiBlbGVt
ZW50czsKIH0KIAotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50RnJv
bVBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgYWxsb3dQbGFpblRleHQ6KEJP
T0wpYWxsb3dQbGFpblRleHQgY2hvc2VQbGFpblRleHQ6KEJPT0wgKiljaG9zZVBsYWluVGV4dAor
LSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6
KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5Db250ZXh0OihET01SYW5nZSAqKWNvbnRleHQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93UGxhaW5UZXh0OihCT09MKWFs
bG93UGxhaW5UZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aG9zZVBsYWluVGV4dDooQk9PTCAqKWNob3NlUGxhaW5UZXh0CiB7CiAgICAgTlNBcnJheSAqdHlw
ZXMgPSBbcGFzdGVib2FyZCB0eXBlc107CiAgICAgKmNob3NlUGxhaW5UZXh0ID0gTk87CkBAIC00
NjMsNyArNDY2LDggQEAgdm9pZCAqX05TU29mdExpbmtpbmdHZXRGcmFtZXdvcmtGdW5jUHRyKAog
ICAgIAogICAgIGlmIChhbGxvd1BsYWluVGV4dCAmJiBbdHlwZXMgY29udGFpbnNPYmplY3Q6TlNT
dHJpbmdQYm9hcmRUeXBlXSkgewogICAgICAgICAqY2hvc2VQbGFpblRleHQgPSBZRVM7Ci0gICAg
ICAgIHJldHVybiBbW3NlbGYgX2JyaWRnZV0gZG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0OltwYXN0
ZWJvYXJkIHN0cmluZ0ZvclR5cGU6TlNTdHJpbmdQYm9hcmRUeXBlXV07CisgICAgICAgIHJldHVy
biBbW3NlbGYgX2JyaWRnZV0gZG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0OltwYXN0ZWJvYXJkIHN0
cmluZ0ZvclR5cGU6TlNTdHJpbmdQYm9hcmRUeXBlXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluQ29udGV4dDpjb250ZXh0XTsKICAgICB9CiAgICAgCiAg
ICAgcmV0dXJuIG5pbDsKQEAgLTUwOCw4ICs1MTIsMTAgQEAgdm9pZCAqX05TU29mdExpbmtpbmdH
ZXRGcmFtZXdvcmtGdW5jUHRyKAogCiAtICh2b2lkKV9wYXN0ZVdpdGhQYXN0ZWJvYXJkOihOU1Bh
c3RlYm9hcmQgKilwYXN0ZWJvYXJkIGFsbG93UGxhaW5UZXh0OihCT09MKWFsbG93UGxhaW5UZXh0
CiB7CisgICAgRE9NUmFuZ2UgKnJhbmdlID0gW3NlbGYgX3NlbGVjdGVkUmFuZ2VdOwogICAgIEJP
T0wgY2hvc2VQbGFpblRleHQ7Ci0gICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBb
c2VsZiBfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmQgYWxsb3dQbGFp
blRleHQ6YWxsb3dQbGFpblRleHQgY2hvc2VQbGFpblRleHQ6JmNob3NlUGxhaW5UZXh0XTsKKyAg
ICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtzZWxmIF9kb2N1bWVudEZyYWdtZW50
RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZAorICAgICAgICBpbkNvbnRleHQ6cmFuZ2UgYWxsb3dQ
bGFpblRleHQ6YWxsb3dQbGFpblRleHQgY2hvc2VQbGFpblRleHQ6JmNob3NlUGxhaW5UZXh0XTsK
ICAgICBXZWJGcmFtZUJyaWRnZSAqYnJpZGdlID0gW3NlbGYgX2JyaWRnZV07CiAgICAgaWYgKGZy
YWdtZW50ICYmIFtzZWxmIF9zaG91bGRJbnNlcnRGcmFnbWVudDpmcmFnbWVudCByZXBsYWNpbmdE
T01SYW5nZTpbc2VsZiBfc2VsZWN0ZWRSYW5nZV0gZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFj
dGlvblBhc3RlZF0pIHsKICAgICAgICAgW2JyaWRnZSByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdt
ZW50OmZyYWdtZW50IHNlbGVjdFJlcGxhY2VtZW50Ok5PIHNtYXJ0UmVwbGFjZTpbc2VsZiBfY2Fu
U21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0gbWF0Y2hTdHlsZTpjaG9zZVBs
YWluVGV4dF07CkBAIC01NzE5LDkgKzU3MjUsMTEgQEAgc3RhdGljIERPTVJhbmdlICp1bmlvbkRP
TVJhbmdlcyhET01SYW5nZQogICAgIGlmIChbc2VsZiBfY2FuUHJvY2Vzc0RyYWdXaXRoRHJhZ2dp
bmdJbmZvOmRyYWdnaW5nSW5mb10pIHsKICAgICAgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJk
ID0gW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1Bhc3RlYm9hcmRdOwogICAgICAgICBpZiAoW3NlbGYg
X2lzTW92ZURyYWddIHx8IFtpbm5lckJyaWRnZSBpc0RyYWdDYXJldFJpY2hseUVkaXRhYmxlXSkg
eyAKKyAgICAgICAgICAgIERPTVJhbmdlICpyYW5nZSA9IFtpbm5lckJyaWRnZSBkcmFnQ2FyZXRE
T01SYW5nZV07CiAgICAgICAgICAgICBCT09MIGNob3NlUGxhaW5UZXh0OwotICAgICAgICAgICAg
RE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbc2VsZiBfZG9jdW1lbnRGcmFnbWVudEZy
b21QYXN0ZWJvYXJkOnBhc3RlYm9hcmQgYWxsb3dQbGFpblRleHQ6WUVTIGNob3NlUGxhaW5UZXh0
OiZjaG9zZVBsYWluVGV4dF07Ci0gICAgICAgICAgICBpZiAoZnJhZ21lbnQgJiYgW3NlbGYgX3No
b3VsZEluc2VydEZyYWdtZW50OmZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOltpbm5lckJyaWRn
ZSBkcmFnQ2FyZXRET01SYW5nZV0gZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvbkRyb3Bw
ZWRdKSB7CisgICAgICAgICAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtzZWxm
IF9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZAorICAgICAgICAgICAg
ICAgIGluQ29udGV4dDpyYW5nZSBhbGxvd1BsYWluVGV4dDpZRVMgY2hvc2VQbGFpblRleHQ6JmNo
b3NlUGxhaW5UZXh0XTsKKyAgICAgICAgICAgIGlmIChmcmFnbWVudCAmJiBbc2VsZiBfc2hvdWxk
SW5zZXJ0RnJhZ21lbnQ6ZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZ2l2ZW5BY3Rp
b246V2ViVmlld0luc2VydEFjdGlvbkRyb3BwZWRdKSB7CiAgICAgICAgICAgICAgICAgW1t3ZWJW
aWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcgd2lsbFBlcmZvcm1EcmFn
RGVzdGluYXRpb25BY3Rpb246V2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCBmb3JEcmFnZ2lu
Z0luZm86ZHJhZ2dpbmdJbmZvXTsKICAgICAgICAgICAgICAgICBpZiAoW3NlbGYgX2lzTW92ZURy
YWddKSB7CiAgICAgICAgICAgICAgICAgICAgIEJPT0wgc21hcnRNb3ZlID0gW2lubmVyQnJpZGdl
IHNlbGVjdGlvbkdyYW51bGFyaXR5XSA9PSBXZWJCcmlkZ2VTZWxlY3RCeVdvcmQgJiYgW3NlbGYg
X2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>9569</attachid>
            <date>2006-07-19 08:36:56 -0700</date>
            <delta_ts>2006-07-19 08:36:56 -0700</delta_ts>
            <desc>newer version of test file</desc>
            <filename>textarea-spaces.html</filename>
            <type>text/html</type>
            <size>431</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KZnVuY3Rpb24gY2hlY2soKQp7CiAgICB2YXIgYXJlYSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJhcmVhIik7CiAgICB2YXIgbWVzc2FnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJtZXNzYWdlIik7CiAgICBtZXNzYWdlLmlubmVyVGV4dCA9IGFyZWEudmFsdWUucmVwbGFj
ZSgvIC9nLCAnJykubGVuZ3RoICsgIiBub24gc3BhY2UgY2hhcmFjdGVyc1xuXG5jb250ZW50cyBv
ZiB0ZXh0IGZpZWxkIGlzXG5cbiIgKyBhcmVhLnZhbHVlLnJlcGxhY2UoL1xuL2csICJcXG4iKTsK
fQo8L3NjcmlwdD4KPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9ImNoZWNrIiBvbmNsaWNrPSJj
aGVjaygpIj4KPHA+PHRleHRhcmVhIGlkPSJhcmVhIiByb3dzPSI0Ij48L3RleHRhcmVhPjwvcD4K
PHA+PHByZSBpZD0ibWVzc2FnZSI+PC9wcmU+PC9wPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9607</attachid>
            <date>2006-07-21 17:53:23 -0700</date>
            <delta_ts>2006-07-22 11:49:59 -0700</delta_ts>
            <desc>newer patch -- almost there!</desc>
            <filename>PreWrapPatch.txt</filename>
            <type>text/plain</type>
            <size>72168</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNTU2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA4IEBACisyMDA2LTA3LXh4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXQVJO
SU5HOiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworICAgICAgICAtIHJlbW92ZWQg
c29tZSB1c2VzIG9mIERlcHJlY2F0ZWRQdHJMaXN0IGluIHRoZSBtYXJrdXAgY29kZQorCisgICAg
ICAgICogYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tOiAoLVtET01IVE1MRG9jdW1lbnQgY3JlYXRl
RG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0Ol0pOgorICAgICAgICBVcGRhdGVkIGNhbGwgdG8gcGFz
cyBhIHJhbmdlIC0tIGluIHRoaXMgY2FzZSBpdCBpcyB0aGUgcmFuZ2Ugb2YgdGhlIGVudGlyZSBk
b2N1bWVudCwKKyAgICAgICAgc28gdGhpcyB3aWxsIG5vdCBoYW5kbGUgdGhlIHdoaXRlc3BhY2Ug
cHJvcGVybHkuCisKKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oOiBB
ZGRlZCByYW5nZSBjb250ZXh0IHBhcmFtZXRlciB0byB0aGUKKyAgICAgICAgZG9jdW1lbnRGcmFn
bWVudFdpdGhUZXh0OiBtZXRob2QsIHNvIHdlIGNhbiBoYW5kbGUgd2hpdGVzcGFjZSBwcm9wZXJs
eS4KKyAgICAgICAgKiBicmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbToKKyAgICAgICAg
KC1bV2ViQ29yZUZyYW1lQnJpZGdlIG5vZGVzRnJvbUxpc3Q6XSk6IENoYW5nZWQgZnJvbSBEZXBy
ZWNhdGVkUHRyTGlzdCB0byBWZWN0b3IuCisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRnZSBt
YXJrdXBTdHJpbmdGcm9tTm9kZTpub2RlczpdKTogRGl0dG8uCisgICAgICAgICgtW1dlYkNvcmVG
cmFtZUJyaWRnZSBtYXJrdXBTdHJpbmdGcm9tUmFuZ2U6bm9kZXM6XSk6IERpdHRvLgorICAgICAg
ICAoLVtXZWJDb3JlRnJhbWVCcmlkZ2UgZG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0OmluQ29udGV4
dDpdKTogQWRkZWQgcmFuZ2UgY29udGV4dAorICAgICAgICBwYXJhbWV0ZXIgLS0gcGFzcyBpdCBv
biB0byBjcmVhdGVGcmFnbWVudEZyb21UZXh0LgorICAgICAgICAoLVtXZWJDb3JlRnJhbWVCcmlk
Z2UgZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdyYXBoczpdKTogQ2hhbmdlZCBmcm9t
CisgICAgICAgIERlcHJlY2F0ZWRQdHJMaXN0IHRvIFZlY3Rvci4KKyAgICAgICAgKC1bV2ViQ29y
ZUZyYW1lQnJpZGdlIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dDpzZWxlY3RSZXBsYWNlbWVudDpz
bWFydFJlcGxhY2U6XSk6CisgICAgICAgIFBhc3MgdGhlIHJhbmdlIG9mIHRoZSBjdXJyZW50IHNl
bGVjdGlvbiBhcyBjb250ZXh0IHdoZW4gY3JlYXRpbmcgdGhlIGZyYWdtZW50LgorCisgICAgICAg
ICogZG9tL1Bvc2l0aW9uLmNwcDogKFdlYkNvcmU6OlBvc2l0aW9uOjppblJlbmRlcmVkVGV4dCk6
IFJlcGxhY2UgcmFuZ2UgY2hlY2sgd2l0aAorICAgICAgICBhIGNhbGwgdG8gdGhlIG5ldyBjb250
YWluc0NhcmV0T2Zmc2V0IGZ1bmN0aW9uIC0tIGhlbHBzIG1ha2UgdGhlIGNhcmV0IHdvcmsgcmln
aHQgd2hlbgorICAgICAgICBpdCBpcyBwYXN0IHRoZSBlbmQgb2YgdGhlIGxhc3QgbGluZSBpbiBh
IHRleHRhcmVhLgorCisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNw
cDogKFdlYkNvcmU6Okluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICBV
c2UgYSB0ZXh0IG5vZGUgaW5zdGVhZCBvZiBhIGJyZWFrIGVsZW1lbnQgd2hlbiBpbnNlcnRpbmcg
YW5kIHRoZSBzdHlsZSBpcyBwcmVzZXJ2ZU5ld2xpbmUuCisKKyAgICAgICAgKiBlZGl0aW5nL0pT
RWRpdG9yLmNwcDogKFdlYkNvcmU6OmV4ZWNSZW1vdmVGb3JtYXQpOiBQYXNzIHRoZSBzZWxlY3Rp
b24gcmFuZ2UKKyAgICAgICAgdG8gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dC4KKworICAgICAgICAq
IGVkaXRpbmcvUmViYWxhbmNlV2hpdGVzcGFjZUNvbW1hbmQuY3BwOiAoV2ViQ29yZTo6UmViYWxh
bmNlV2hpdGVzcGFjZUNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICBEbyBub3RoaW5nIGlmIHRo
ZSBtb2RlIGlzIG5vdCBvbmUgdGhhdCBjb2xsYXBzZXMgd2hpdGVzcGFjZS4KKworICAgICAgICAq
IGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaDogUmVtb3ZlZCB1bnVzZWQgZGVzdHJ1
Y3RvciwgdHlwZSwgaXNTaW5nbGVUZXh0Tm9kZSwKKyAgICAgICAgaXNUcmVlRnJhZ21lbnQsIG1f
dHlwZSwgYW5kIGFkZGVkIGEgY29udGV4dCBwYXJhbWV0ZXIgdG8gaW5lcnRGcmFnbWVudEZvclRl
c3RSZW5kZXJpbmcuCisgICAgICAgIEFsc28gY2hhbmdlZCB0aGUgY29uc3RydWN0b3IgdG8gdGFr
ZSBhIHNlbGVjdGlvbiByYXRoZXIgdGhhbiBhIHBvaW50ZXIgdG8gdGhlIHJvb3QKKyAgICAgICAg
ZWRpdGFibGUgZWxlbWVudC4KKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VtZW50RnJhZ21lbnQ6OlJlcGxhY2Vt
ZW50RnJhZ21lbnQpOiBSZW1vdmVkIGNvZGUgdG8gc2V0IHVwIG1fdHlwZS4KKyAgICAgICAgQ29t
cHV0ZSByb290IGVkaXRhYmxlIGVsZW1lbnQgZnJvbSBwYXNzZWQtaW4gc2VsZWN0aW9uLiBVc2Vk
IHRoZSBzdGFydCBvZiB0aGUgc2VsZWN0aW9uCisgICAgICAgIGFzIGEgYmFzZSBub2RlIGZvciBz
dHlsZSBwdXJwb3NlcyBmb3IgdGhlIHRlc3QgcmVuZGVyaW5nLiBSZW1vdmVkIHRoZSBzcGVjaWFs
IGNhc2UKKyAgICAgICAgInNpbmdsZSB0ZXh0IG5vZGUiIGFsdGVybmF0aXZlIHRvIGNyZWF0ZUZy
YWdtZW50RnJvbVRleHQgaW4gdGhlIHBsYWluIHRleHQgY2FzZSwgc2luY2UKKyAgICAgICAgY3Jl
YXRlRnJhZ21lbnRGcm9tVGV4dCBub3cgaGFuZGxlcyB0aGF0IGNvcnJlY3RseS4KKyAgICAgICAg
KFdlYkNvcmU6OlJlcGxhY2VtZW50RnJhZ21lbnQ6Omluc2VydEZyYWdtZW50Rm9yVGVzdFJlbmRl
cmluZyk6IENvcHkgdGhlIHdoaXRlc3BhY2UKKyAgICAgICAgcHJvcGVydHkgZnJvbSB0aGUgc291
cmNlIGxvY2F0aW9uIHdoZW4gY3JlYXRpbmcgYSB0ZW1wb3JhcnkgZWxlbWVudCBmb3IgdGVzdCBy
ZW5kZXJpbmcuCisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9B
cHBseSk6IFVwZGF0ZSBmb3IgUmVwbGFjZW1lbnRGcmFnbWVudCBjaGFuZ2VzLAorICAgICAgICBh
bmQgYWxzbyB1c2Ugc3BhY2VzIGluc3RlYWQgb2Ygbm9uLWJyZWFraW5nIHNwYWNlcyB3aGVuIGRv
aW5nIHNtYXJ0IHBhc3RlIGlmIHRoZQorICAgICAgICBjb250ZXh0IGlzIG9uZSB3aGVyZSB3ZSBk
byBub3QgY29sbGFwc2Ugd2hpdGUgc3BhY2UuCisKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5o
OiBVc2UgVmVjdG9yIGluc3RlYWQgb2YgRGVwcmVjYXRlZFB0ckxpc3QuIENoYW5nZSB0aGUKKyAg
ICAgICAgY3JlYXRlRnJhZ21lbnRGcm9tVGV4dCBmdW5jdGlvbiB0byB0YWtlIGEgcmFuZ2UgZm9y
IGNvbnRleHQgaW5zdGVhZCBvZiBhIGRvY3VtZW50LgorICAgICAgICAqIGVkaXRpbmcvbWFya3Vw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cCk6IFVzZSBWZWN0b3IgaW5zdGVhZCBvZiBE
ZXByZWNhdGVkUHRyTGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFyYWdyYXBoQ29udGVudHNGcm9tU3RyaW5nKTog
UmVtb3ZlIHVubmVlZGVkIGRvY3VtZW50IHBhcmFtZXRlcgorICAgICAgICBhbmQgY2hhbmdlZCBh
IGNvdXBsZSBwbGFjZXMgdG8gdXNlIGlzRW1wdHkgaW5zdGVhZCBvZiBjb21wYXJpbmcgd2l0aCAi
Ii4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbVRleHQpOiBHaXZlbiB0aGUg
bmV3IGNvbnRleHQgcGFyYW1ldGVyLCBpZiB0aGUgY29udGV4dAorICAgICAgICBpcyBvbmUgdGhh
dCBwcmVzZXJ2ZXMgbmV3bGluZXMsIHRoZW4gdXNlICJcbiIgaW5zdGVhZCBvZiA8YnI+IGVsZW1l
bnRzLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGcm9tTm9kZXMpOiBVc2UgVmVj
dG9yIGluc3RlYWQgb2YgRGVwcmVjYXRlZFB0ckxpc3QuCisKKyAgICAgICAgKiBodG1sL0hUTUxF
bGVtZW50LmNwcDogKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRJbm5lclRleHQpOiBEbyBub3Qg
dXNlIDxicj4KKyAgICAgICAgZWxlbWVudHMgaWYgdGhlIGNvbnRleHQgb2YgdGhpcyBub2RlIGlz
IG9uZSB3aGVyZSB3ZSBwcmVzZXJ2ZSBuZXdsaW5lcy4KKworICAgICAgICAqIHJlbmRlcmluZy9J
bmxpbmVUZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOiAo
V2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29udGFpbnNDYXJldE9mZnNldCk6CisgICAgICAgIEFk
ZGVkLiBJbXBsZW1lbnRzIHRoZSBhcHByb3ByaWF0ZSBydWxlIGZvciBkZXRlcm1pbmluZyBpZiBh
IGNhcmV0IHBvc2l0aW9uIGlzCisgICAgICAgIGluIHRoaXMgbGluZSBvciBub3QuIFJldHVybnMg
dHJ1ZSBmb3IgYm90aCBvbmUgbGluZSBhbmQgdGhlIG5leHQgaW4gY2FzZXMgd2hlcmUKKyAgICAg
ICAgYWZmaW5pdHkgbXVzdCBiZSBjb25zaWRlcmVkIHRvIGRldGVybWluZSB3aGljaCBsaW5lIHRo
ZSBjYXJldCBpcyBvbi4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6IE1ha2Ug
YXRMaW5lV3JhcCBubyBsb25nZXIgYmUgYSBtZW1iZXIgZnVuY3Rpb24uCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXRMaW5lV3JhcCk6IFJl
bW92ZSBzcGVjaWFsIHJ1bGUgYWJvdXQgcHJlc2VydmVOZXdsaW5lIGFuZCBpc0xpbmVCcmVhaywK
KyAgICAgICAgd2hpY2ggd2lsbCBubyBsb25nZXIgYXBwbHkgZHVlIHRvIHRoZSBuZXcgY29udGFp
bnNDYXJldE9mZnNldCBmdW5jdGlvbiBsb2dpYy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OmNhcmV0UmVjdCk6IFVzZSBjb250YWluc0NhcmV0T2Zmc2V0LgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dDo6aW5saW5lQm94KTogRGl0dG8uCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRy
b2w6OnVwZGF0ZUZyb21FbGVtZW50KTogQWRkIGEgPGJyPiBhZnRlciBzZXR0aW5nIHRoZQorICAg
ICAgICB0ZXh0IHRvIHByZXZlbnQgdGhlICJcbiIgYSB0aGUgZW5kIG9mIHRoZSB0ZXh0IGZyb20g
Y29sbGFwc2luZy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjp0ZXh0KTog
Q2FsbCB0ZXh0Q29udGVudCB3aXRoIHRoZSBwYXJhbWV0ZXIgZmFsc2UKKyAgICAgICAgc28gaXQg
d2lsbCBub3QgaW5jbHVkZSBuZXdsaW5lcyBmb3IgPGJyPiBlbGVtZW50cy4gTm93IHRoZSBvbmx5
IDxicj4gZWxlbWVudAorICAgICAgICB0aGF0IHdpbGwgZXZlciBiZSBpbiB0aGUgc2hhZG93IERP
TSB0cmVlIGlzIHRoZSBvbmUgdG8gcHJldmVudCBjb2xsYXBzaW5nLCBhbmQKKyAgICAgICAgdGhh
dCBvbmUgc2hvdWxkIG5vdCBzaG93IHVwIGluIHRoZSB0ZXh0IHZhbHVlLgorCisgICAgICAgICog
cmVuZGVyaW5nL2JpZGkuY3BwOiAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZUJy
ZWFrKTogVG9vayBhIHJ1bGUKKyAgICAgICAgdGhhdCBzcGVjaWZpY2FsbHkgY2FsbGVkIG91dCB0
aGUgcHJlIHdoaXRlc3BhY2UgbW9kZSBhbmQgbWFkZSBpdCB3b3JrIGZvciBhbGwKKyAgICAgICAg
dGhlIG1vZGVzIHRoYXQgcHJlc2VydmUgbmV3bGluZXMuIFRoaXMgbWFrZXMgc3VyZSB3ZSBnZXQg
YSBsYXN0IGxpbmUgYm94IGZvcgorICAgICAgICB0ZXh0IGFmdGVyIHRoZSBsYXN0ICJcbiIgZXZl
biBpbiBjYXNlcyB3aGVyZSB0aGVyZSBpcyBubyA8YnI+IGFmdGVyd2FyZC4KKworICAgICAgICAq
IGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZWxldGVTZWxlY3Rpb25Db21tYW5kOjpmaXh1cFdoaXRlc3BhY2UpOgorICAgICAgICAqIGVkaXRp
bmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgQWRk
ZWQgYXNzZXJ0aW9ucyB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgZG8gYW55dGhpbmcgd2hlbiB3ZSdy
ZSBub3QgY29sbGFwc2luZworICAgICAgICB3aGl0ZXNwYWNlLgorCisgICAgICAgICogZWRpdGlu
Zy9IVE1MSW50ZXJjaGFuZ2UuY3BwOiBSZW1vdmVkIG9ic29sZXRlIGNvbW1lbnQuCisKKyAgICAg
ICAgKiBsb2FkZXIvQ2FjaGUuaDogUmVtb3ZlZCBhIHN0cmF5IGluY2x1ZGUuCisKIDIwMDYtMDct
MjEgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogICAgICAgICAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTU1NjQpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjQyOSw2ICs2NDI5LDcgQEAKIAkJMDg2
N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0g
UEJYUHJvamVjdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjg0MzA4OTAyQjEx
MDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJD
b3JlIiAqLzsKKwkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDIuNCI7CiAJCQloYXNT
Y2FubmVkRm9yRW5jb2RpbmdzID0gMTsKIAkJCWtub3duUmVnaW9ucyA9ICgKIAkJCQlFbmdsaXNo
LApAQCAtNjQ0Miw2ICs2NDQzLDcgQEAKIAkJCW1haW5Hcm91cCA9IDA4NjdENjkxRkU4NDAyOEZD
MDJBQUMwNyAvKiBXZWJLaXQgKi87CiAJCQlwcm9kdWN0UmVmR3JvdXAgPSAwMzQ3NjhERkZGMzhB
NTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi87CiAJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJ
c2hvdWxkQ2hlY2tDb21wYXRpYmlsaXR5ID0gMTsKIAkJCXRhcmdldHMgPSAoCiAJCQkJOTNGMTk4
QTUwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmUgKi8sCiAJCQkJREQwNDFGQkUwOUQ5RERCRTAw
MTBBRjJBIC8qIERlcml2ZWQgU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01IVE1MLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1M
Lm1tCShyZXZpc2lvbiAxNTU2NCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyMiArMjYsMjMgQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiRE9NSFRNTC5oIgogCisjaW1wb3J0ICJET01FeHRlbnNpb25zLmgiCiAjaW1wb3J0
ICJET01IVE1MSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCiAjaW1wb3J0ICJE
T01Qcml2YXRlLmgiCi0jaW1wb3J0ICJET01FeHRlbnNpb25zLmgiCiAjaW1wb3J0ICJEb2N1bWVu
dEZyYWdtZW50LmgiCiAjaW1wb3J0ICJGb3VuZGF0aW9uRXh0cmFzLmgiCisjaW1wb3J0ICJGcmFt
ZVZpZXcuaCIKICNpbXBvcnQgIkhUTUxBcHBsZXRFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MQXJl
YUVsZW1lbnQuaCIKKyNpbXBvcnQgIkhUTUxCUkVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxCYXNl
RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEJhc2VGb250RWxlbWVudC5oIgogI2ltcG9ydCAiSFRN
TEJvZHlFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MQlJFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1M
QnV0dG9uRWxlbWVudC5oIgorI2ltcG9ydCAiSFRNTERMaXN0RWxlbWVudC5oIgogI2ltcG9ydCAi
SFRNTERpcmVjdG9yeUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxEaXZFbGVtZW50LmgiCi0jaW1w
b3J0ICJIVE1MRExpc3RFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MRG9jdW1lbnQuaCIKICNpbXBv
cnQgIkhUTUxFbWJlZEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIK
QEAgLTQ5LDQ3ICs1MCw0NyBAQAogI2ltcG9ydCAiSFRNTEZvcm1Db2xsZWN0aW9uLmgiCiAjaW1w
b3J0ICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxGcmFtZVNldEVsZW1lbnQuaCIK
KyNpbXBvcnQgIkhUTUxIUkVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxIZWFkRWxlbWVudC5oIgog
I2ltcG9ydCAiSFRNTEhlYWRpbmdFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MSFJFbGVtZW50Lmgi
CiAjaW1wb3J0ICJIVE1MSHRtbEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxJRnJhbWVFbGVtZW50
LmgiCiAjaW1wb3J0ICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MSXNJbmRleEVs
ZW1lbnQuaCIKKyNpbXBvcnQgIkhUTUxMSUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxMYWJlbEVs
ZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxMZWdlbmRFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MTElF
bGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTGlua0VsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxNYXBF
bGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTWVudUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxNZXRh
RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCi0jaW1wb3J0ICJIVE1MT2JqZWN0RWxl
bWVudC5oIgogI2ltcG9ydCAiSFRNTE9MaXN0RWxlbWVudC5oIgorI2ltcG9ydCAiSFRNTE9iamVj
dEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxPcHRHcm91cEVsZW1lbnQuaCIKICNpbXBvcnQgIkhU
TUxPcHRpb25FbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKLSNp
bXBvcnQgIkhUTUxQYXJhbUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxQYXJhZ3JhcGhFbGVtZW50
LmgiCisjaW1wb3J0ICJIVE1MUGFyYW1FbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MUHJlRWxlbWVu
dC5oIgogI2ltcG9ydCAiSFRNTFNjcmlwdEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxTZWxlY3RF
bGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MU3R5bGVFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MVGFi
bGVFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIgogI2ltcG9y
dCAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUYWJsZUNvbEVsZW1lbnQu
aCIKKyNpbXBvcnQgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUYWJsZVJvd0Vs
ZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCiAjaW1wb3J0ICJI
VE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MVGl0bGVFbGVtZW50LmgiCiAjaW1w
b3J0ICJIVE1MVUxpc3RFbGVtZW50LmgiCisjaW1wb3J0ICJLVVJMLmgiCiAjaW1wb3J0ICJOYW1l
Tm9kZUxpc3QuaCIKLSNpbXBvcnQgIm1hcmt1cC5oIgorI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBv
cnQgIlJlbmRlclRleHRDb250cm9sLmgiCi0jaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQg
ImNzc2hlbHBlci5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAibWFya3VwLmgiCiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTYw
NSw3ICs2MDYsOCBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiAtIChET01Eb2N1bWVu
dEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0OihOU1N0cmluZyAqKXRl
eHQKIHsKLSAgICByZXR1cm4gW0RPTURvY3VtZW50RnJhZ21lbnQgX2RvY3VtZW50RnJhZ21lbnRX
aXRoOmNyZWF0ZUZyYWdtZW50RnJvbVRleHQoW3NlbGYgX2RvY3VtZW50XSwgRGVwcmVjYXRlZFN0
cmluZzo6ZnJvbU5TU3RyaW5nKHRleHQpKS5nZXQoKV07CisgICAgLy8gRklYTUU6IFNpbmNlIHRo
aXMgaXMgbm90IGEgY29udGV4dHVhbCBmcmFnbWVudCwgaXQgd29uJ3QgaGFuZGxlIHdoaXRlc3Bh
Y2UgcHJvcGVybHkuCisgICAgcmV0dXJuIFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZy
YWdtZW50V2l0aDpjcmVhdGVGcmFnbWVudEZyb21UZXh0KFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0
ZVJhbmdlKCkuZ2V0KCksIHRleHQpLmdldCgpXTsKIH0KIAogQGVuZApJbmRleDogV2ViQ29yZS9i
cmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJp
ZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAkocmV2aXNpb24gMTU1NjQpCisrKyBXZWJDb3Jl
L2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxOCw3
ICs0MTgsNyBAQCB0eXBlZGVmIGVudW0gewogLSAoTlNSYW5nZSljb252ZXJ0RE9NUmFuZ2VUb05T
UmFuZ2U6KERPTVJhbmdlICopcmFuZ2U7CiAKIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilkb2N1
bWVudEZyYWdtZW50V2l0aE1hcmt1cFN0cmluZzooTlNTdHJpbmcgKiltYXJrdXBTdHJpbmcgYmFz
ZVVSTFN0cmluZzooTlNTdHJpbmcgKiliYXNlVVJMU3RyaW5nOwotLSAoRE9NRG9jdW1lbnRGcmFn
bWVudCAqKWRvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0OworLSAoRE9N
RG9jdW1lbnRGcmFnbWVudCAqKWRvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDooTlNTdHJpbmcgKil0
ZXh0IGluQ29udGV4dDooRE9NUmFuZ2UgKiljb250ZXh0OwogLSAoRE9NRG9jdW1lbnRGcmFnbWVu
dCAqKWRvY3VtZW50RnJhZ21lbnRXaXRoTm9kZXNBc1BhcmFncmFwaHM6KE5TQXJyYXkgKilub2Rl
czsKIAogLSAodm9pZClyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50OihET01Eb2N1bWVudEZy
YWdtZW50ICopZnJhZ21lbnQgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1l
bnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOihCT09MKW1hdGNo
U3R5bGU7CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHJl
dmlzaW9uIDE1NTY0KQorKysgV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzcxLDE5ICs3NzEsMTkgQEAgc3RhdGljIGlubGluZSBXZWJD
b3JlRnJhbWVCcmlkZ2UgKmJyaWRnZQogICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudFR5cGVT
dHJpbmcoKSArIG1hcmt1cFN0cmluZzsKIH0KIAotLSAoTlNBcnJheSAqKW5vZGVzRnJvbUxpc3Q6
KERlcHJlY2F0ZWRQdHJMaXN0PE5vZGU+ICopbm9kZUxpc3QKKy0gKE5TQXJyYXkgKilub2Rlc0Zy
b21MaXN0OihWZWN0b3I8Tm9kZSo+ICopbm9kZXNWZWN0b3IKIHsKLSAgICBOU011dGFibGVBcnJh
eSAqbm9kZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6bm9kZUxpc3QtPmNv
dW50KCldOwotICAgIGZvciAoRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxOb2RlPiBpKCpub2Rl
TGlzdCk7IGkuY3VycmVudCgpOyArK2kpCi0gICAgICAgIFtub2RlcyBhZGRPYmplY3Q6W0RPTU5v
ZGUgX25vZGVXaXRoOmkuY3VycmVudCgpXV07Ci0KKyAgICBzaXplX3Qgc2l6ZSA9IG5vZGVzVmVj
dG9yLT5zaXplKCk7CisgICAgTlNNdXRhYmxlQXJyYXkgKm5vZGVzID0gW05TTXV0YWJsZUFycmF5
IGFycmF5V2l0aENhcGFjaXR5OnNpemVdOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQorICAgICAgICBbbm9kZXMgYWRkT2JqZWN0OltET01Ob2RlIF9ub2RlV2l0aDooKm5v
ZGVzVmVjdG9yKVtpXV1dOwogICAgIHJldHVybiBub2RlczsKIH0KIAogLSAoTlNTdHJpbmcgKilt
YXJrdXBTdHJpbmdGcm9tTm9kZTooRE9NTm9kZSAqKW5vZGUgbm9kZXM6KE5TQXJyYXkgKiopbm9k
ZXMKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBuZXZlciAiZm9yIGludGVyY2hhbmdlIi4gSXMg
dGhhdCByaWdodD8gU2VlIHRoZSBuZXh0IG1ldGhvZC4KLSAgICBEZXByZWNhdGVkUHRyTGlzdDxO
b2RlPiBub2RlTGlzdDsKKyAgICBWZWN0b3I8Tm9kZSo+IG5vZGVMaXN0OwogICAgIE5TU3RyaW5n
ICptYXJrdXBTdHJpbmcgPSBjcmVhdGVNYXJrdXAoW25vZGUgX25vZGVdLCBJbmNsdWRlTm9kZSwg
bm9kZXMgPyAmbm9kZUxpc3QgOiAwKS5nZXROU1N0cmluZygpOwogICAgIGlmIChub2RlcykKICAg
ICAgICAgKm5vZGVzID0gW3NlbGYgbm9kZXNGcm9tTGlzdDombm9kZUxpc3RdOwpAQCAtNzk0LDcg
Kzc5NCw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViQ29yZUZyYW1lQnJpZGdlICpicmlkZ2UKIC0gKE5T
U3RyaW5nICopbWFya3VwU3RyaW5nRnJvbVJhbmdlOihET01SYW5nZSAqKXJhbmdlIG5vZGVzOihO
U0FycmF5ICoqKW5vZGVzCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYWx3YXlzICJmb3IgaW50
ZXJjaGFuZ2UiLiBJcyB0aGF0IHJpZ2h0PyBTZWUgdGhlIHByZXZpb3VzIG1ldGhvZC4KLSAgICBE
ZXByZWNhdGVkUHRyTGlzdDxOb2RlPiBub2RlTGlzdDsKKyAgICBWZWN0b3I8Tm9kZSo+IG5vZGVM
aXN0OwogICAgIE5TU3RyaW5nICptYXJrdXBTdHJpbmcgPSBjcmVhdGVNYXJrdXAoW3JhbmdlIF9y
YW5nZV0sIG5vZGVzID8gJm5vZGVMaXN0IDogMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSkuZ2V0
TlNTdHJpbmcoKTsKICAgICBpZiAobm9kZXMpCiAgICAgICAgICpub2RlcyA9IFtzZWxmIG5vZGVz
RnJvbUxpc3Q6Jm5vZGVMaXN0XTsKQEAgLTE5NDMsMjggKzE5NDMsMjMgQEAgc3RhdGljIEhUTUxG
b3JtRWxlbWVudCAqZm9ybUVsZW1lbnRGcm9tRAogICAgICAgICBEZXByZWNhdGVkU3RyaW5nOjpm
cm9tTlNTdHJpbmcobWFya3VwU3RyaW5nKSwgRGVwcmVjYXRlZFN0cmluZzo6ZnJvbU5TU3RyaW5n
KGJhc2VVUkxTdHJpbmcpKS5nZXQoKV07CiB9CiAKLS0gKERPTURvY3VtZW50RnJhZ21lbnQgKilk
b2N1bWVudEZyYWdtZW50V2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dAorLSAoRE9NRG9jdW1lbnRG
cmFnbWVudCAqKWRvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0IGluQ29u
dGV4dDooRE9NUmFuZ2UgKiljb250ZXh0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1l
LT5kb2N1bWVudCgpIHx8ICF0ZXh0KQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICByZXR1
cm4gW0RPTURvY3VtZW50RnJhZ21lbnQgX2RvY3VtZW50RnJhZ21lbnRXaXRoOmNyZWF0ZUZyYWdt
ZW50RnJvbVRleHQobV9mcmFtZS0+ZG9jdW1lbnQoKSwgRGVwcmVjYXRlZFN0cmluZzo6ZnJvbU5T
U3RyaW5nKHRleHQpKS5nZXQoKV07CisgICAgcmV0dXJuIFtET01Eb2N1bWVudEZyYWdtZW50IF9k
b2N1bWVudEZyYWdtZW50V2l0aDpjcmVhdGVGcmFnbWVudEZyb21UZXh0KFtjb250ZXh0IF9yYW5n
ZV0sIERlcHJlY2F0ZWRTdHJpbmc6OmZyb21OU1N0cmluZyh0ZXh0KSkuZ2V0KCldOwogfQogCiAt
IChET01Eb2N1bWVudEZyYWdtZW50ICopZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdy
YXBoczooTlNBcnJheSAqKW5vZGVzCiB7Ci0gICAgTlNFbnVtZXJhdG9yICpub2RlRW51bSA9IFtu
b2RlcyBvYmplY3RFbnVtZXJhdG9yXTsKLSAgICBET01Ob2RlICpub2RlOwotICAgIERlcHJlY2F0
ZWRQdHJMaXN0PE5vZGU+IG5vZGVMaXN0OwotICAgIAogICAgIGlmICghbV9mcmFtZSB8fCAhbV9m
cmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgd2hpbGUgKChu
b2RlID0gW25vZGVFbnVtIG5leHRPYmplY3RdKSkgewotICAgICAgICBub2RlTGlzdC5hcHBlbmQo
W25vZGUgX25vZGVdKTsKLSAgICB9CisgICAgTlNFbnVtZXJhdG9yICpub2RlRW51bSA9IFtub2Rl
cyBvYmplY3RFbnVtZXJhdG9yXTsKKyAgICBWZWN0b3I8Tm9kZSo+IG5vZGVzVmVjdG9yOworICAg
IERPTU5vZGUgKm5vZGU7CisgICAgd2hpbGUgKChub2RlID0gW25vZGVFbnVtIG5leHRPYmplY3Rd
KSkKKyAgICAgICAgbm9kZXNWZWN0b3IuYXBwZW5kKFtub2RlIF9ub2RlXSk7CiAgICAgCi0gICAg
cmV0dXJuIFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpjcmVhdGVG
cmFnbWVudEZyb21Ob2RlTGlzdChtX2ZyYW1lLT5kb2N1bWVudCgpLCBub2RlTGlzdCkuZ2V0KCld
OworICAgIHJldHVybiBbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRGcmFnbWVudFdpdGg6
Y3JlYXRlRnJhZ21lbnRGcm9tTm9kZXMobV9mcmFtZS0+ZG9jdW1lbnQoKSwgbm9kZXNWZWN0b3Ip
LmdldCgpXTsKIH0KIAogLSAodm9pZClyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50OihET01E
b2N1bWVudEZyYWdtZW50ICopZnJhZ21lbnQgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wpc2VsZWN0
UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOihC
T09MKW1hdGNoU3R5bGUKQEAgLTE5OTEsNyArMTk4Niw5IEBAIHN0YXRpYyBIVE1MRm9ybUVsZW1l
bnQgKmZvcm1FbGVtZW50RnJvbUQKIAogLSAodm9pZClyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQ6
KE5TU3RyaW5nICopdGV4dCBzZWxlY3RSZXBsYWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNlbWVu
dCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlCiB7Ci0gICAgW3NlbGYgcmVwbGFjZVNl
bGVjdGlvbldpdGhGcmFnbWVudDpbc2VsZiBkb2N1bWVudEZyYWdtZW50V2l0aFRleHQ6dGV4dF0g
c2VsZWN0UmVwbGFjZW1lbnQ6c2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOnNtYXJ0UmVw
bGFjZSBtYXRjaFN0eWxlOllFU107CisgICAgW3NlbGYgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFn
bWVudDpbc2VsZiBkb2N1bWVudEZyYWdtZW50V2l0aFRleHQ6dGV4dAorICAgICAgICBpbkNvbnRl
eHQ6W0RPTVJhbmdlIF9yYW5nZVdpdGg6bV9mcmFtZS0+c2VsZWN0aW9uKCkudG9SYW5nZSgpLmdl
dCgpXV0KKyAgICAgICAgc2VsZWN0UmVwbGFjZW1lbnQ6c2VsZWN0UmVwbGFjZW1lbnQgc21hcnRS
ZXBsYWNlOnNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOllFU107CiB9CiAKIC0gKGJvb2wpY2FuSW5j
cmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwKSW5kZXg6IFdlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHJldmlzaW9uIDE1NTY0KQor
KysgV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODIsNyArNDgy
LDcgQEAgYm9vbCBQb3NpdGlvbjo6aW5SZW5kZXJlZFRleHQoKSBjb25zdAogICAgICAgICAgICAg
Ly8gbm90IHJlbmRlcmVkLiBSZXR1cm4gZmFsc2UuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG9mZnNldCgpID49IGJveC0+bV9zdGFydCAmJiBvZmZz
ZXQoKSA8PSBib3gtPm1fc3RhcnQgKyBib3gtPm1fbGVuKQorICAgICAgICBpZiAoYm94LT5jb250
YWluc0NhcmV0T2Zmc2V0KG9mZnNldCgpKSkKICAgICAgICAgICAgIC8vIFJldHVybiBmYWxzZSBm
b3Igb2Zmc2V0cyBpbnNpZGUgY29tcG9zZWQgY2hhcmFjdGVycy4KICAgICAgICAgICAgIHJldHVy
biBvZmZzZXQoKSA9PSAwIHx8IG9mZnNldCgpID09IHRleHRSZW5kZXJlci0+bmV4dE9mZnNldCh0
ZXh0UmVuZGVyZXItPnByZXZpb3VzT2Zmc2V0KG9mZnNldCgpKSk7CiAgICAgfQpJbmRleDogV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiAxNTU2NCkKKysr
IFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3Miw4ICszNzIsMTYgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c2V0Tm9kZUF0
dHJpYgogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKGNtZCk7CiB9CiAKLXZvaWQgQ29tcG9z
aXRlRWRpdENvbW1hbmQ6OnJlYmFsYW5jZVdoaXRlc3BhY2VBdChjb25zdCBQb3NpdGlvbiAmcG9z
aXRpb24pCit2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZWJhbGFuY2VXaGl0ZXNwYWNlQXQo
Y29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogeworICAgIE5vZGUqIHRleHROb2RlID0gcG9zaXRp
b24ubm9kZSgpOworICAgIGlmICghdGV4dE5vZGUgfHwgIXRleHROb2RlLT5pc1RleHROb2RlKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8VGV4dCo+KHRleHROb2RlKS0+
bGVuZ3RoKCkgPT0gMCkKKyAgICAgICAgcmV0dXJuOworICAgIFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSB0ZXh0Tm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAocmVuZGVyZXIgJiYgIXJlbmRlcmVy
LT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIEVk
aXRDb21tYW5kUHRyIGNtZChuZXcgUmViYWxhbmNlV2hpdGVzcGFjZUNvbW1hbmQoZG9jdW1lbnQo
KSwgcG9zaXRpb24pKTsKICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShjbWQpOyAgICAKIH0K
QEAgLTM4MiwxMiArMzkwLDkgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNl
V2hpdAogewogICAgIFNlbGVjdGlvbiBzZWxlY3Rpb24gPSBlbmRpbmdTZWxlY3Rpb24oKTsKICAg
ICBpZiAoc2VsZWN0aW9uLmlzQ2FyZXRPclJhbmdlKCkpIHsKLSAgICAgICAgRWRpdENvbW1hbmRQ
dHIgc3RhcnRDbWQobmV3IFJlYmFsYW5jZVdoaXRlc3BhY2VDb21tYW5kKGRvY3VtZW50KCksIGVu
ZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpKTsKLSAgICAgICAgYXBwbHlDb21tYW5kVG9Db21wb3Np
dGUoc3RhcnRDbWQpOwotICAgICAgICBpZiAoc2VsZWN0aW9uLmlzUmFuZ2UoKSkgewotICAgICAg
ICAgICAgRWRpdENvbW1hbmRQdHIgZW5kQ21kKG5ldyBSZWJhbGFuY2VXaGl0ZXNwYWNlQ29tbWFu
ZChkb2N1bWVudCgpLCBlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKSkpOwotICAgICAgICAgICAgYXBw
bHlDb21tYW5kVG9Db21wb3NpdGUoZW5kQ21kKTsKLSAgICAgICAgfQorICAgICAgICByZWJhbGFu
Y2VXaGl0ZXNwYWNlQXQoZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgICAgIGlmIChz
ZWxlY3Rpb24uaXNSYW5nZSgpKQorICAgICAgICAgICAgcmViYWxhbmNlV2hpdGVzcGFjZUF0KGVu
ZGluZ1NlbGVjdGlvbigpLmVuZCgpKTsKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvZWRpdGlu
Zy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRp
bmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDE1NTY0KQorKysgV2ViQ29y
ZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTUsMTEgKzM5NSwxMyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmZpeHVwV2hpdGVz
CiAgICAgdXBkYXRlTGF5b3V0KCk7CiAgICAgLy8gRklYTUU6IGlzUmVuZGVyZWRDaGFyYWN0ZXIg
c2hvdWxkIGJlIHJlbW92ZWQsIGFuZCB3ZSBzaG91bGQgdXNlIFZpc2libGVQb3NpdGlvbjo6Y2hh
cmFjdGVyQWZ0ZXIgYW5kIFZpc2libGVQb3NpdGlvbjo6Y2hhcmFjdGVyQmVmb3JlCiAgICAgaWYg
KG1fbGVhZGluZ1doaXRlc3BhY2UuaXNOb3ROdWxsKCkgJiYgIW1fbGVhZGluZ1doaXRlc3BhY2Uu
aXNSZW5kZXJlZENoYXJhY3RlcigpKSB7Ci0gICAgICAgIFRleHQgKnRleHROb2RlID0gc3RhdGlj
X2Nhc3Q8VGV4dCAqPihtX2xlYWRpbmdXaGl0ZXNwYWNlLm5vZGUoKSk7CisgICAgICAgIFRleHQq
IHRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KG1fbGVhZGluZ1doaXRlc3BhY2Uubm9kZSgp
KTsKKyAgICAgICAgQVNTRVJUKCF0ZXh0Tm9kZS0+cmVuZGVyZXIoKSB8fCB0ZXh0Tm9kZS0+cmVu
ZGVyZXIoKS0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpOwogICAgICAgICByZXBsYWNl
VGV4dEluTm9kZSh0ZXh0Tm9kZSwgbV9sZWFkaW5nV2hpdGVzcGFjZS5vZmZzZXQoKSwgMSwgbm9u
QnJlYWtpbmdTcGFjZVN0cmluZygpKTsKICAgICB9CiAgICAgaWYgKG1fdHJhaWxpbmdXaGl0ZXNw
YWNlLmlzTm90TnVsbCgpICYmICFtX3RyYWlsaW5nV2hpdGVzcGFjZS5pc1JlbmRlcmVkQ2hhcmFj
dGVyKCkpIHsKLSAgICAgICAgVGV4dCAqdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KG1f
dHJhaWxpbmdXaGl0ZXNwYWNlLm5vZGUoKSk7CisgICAgICAgIFRleHQqIHRleHROb2RlID0gc3Rh
dGljX2Nhc3Q8VGV4dCo+KG1fdHJhaWxpbmdXaGl0ZXNwYWNlLm5vZGUoKSk7CisgICAgICAgIEFT
U0VSVCghdGV4dE5vZGUtPnJlbmRlcmVyKCkgfHx0ZXh0Tm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUo
KS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpOwogICAgICAgICByZXBsYWNlVGV4dEluTm9kZSh0ZXh0
Tm9kZSwgbV90cmFpbGluZ1doaXRlc3BhY2Uub2Zmc2V0KCksIDEsIG5vbkJyZWFraW5nU3BhY2VT
dHJpbmcoKSk7CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5n
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAJ
KHJldmlzaW9uIDE1NTY0KQorKysgV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgRGVwcmVjYXRlZFN0cmluZyBjb252ZXJ0
ZWRTcGFjZVN0cmluZygpIAogCiB9IC8vIGVuZCBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLS8vIEZJ
WE1FOiBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0IHNob3VsZCBwcm9iYWJseSBi
ZSBpbiB0aGUga2h0bWwgbmFtZXNwYWNlLgogLy8gRklYTUU6IENhbid0IHJlYWxseSBkbyB0aGlz
IHdvcmsgd2l0aG91dCB0YWtpbmcgd2hpdGVzcGFjZSBtb2RlIGludG8gYWNjb3VudC4KIC8vIFRo
aXMgbWVhbnMgdGhhdCBldmVudHVhbGx5IHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgZWxpbWlu
YXRlZCBvciBhdCBsZWFzdCBoYXZlCiAvLyBpdHMgcGFyYW1ldGVycyBjaGFuZ2VkIGJlY2F1c2Ug
aXQgY2FuJ3QgZG8gaXRzIHdvcmsgb24gdGhlIHN0cmluZyB3aXRob3V0IGtub3dpbmcKSW5kZXg6
IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAJKHJldmlzaW9uIDE1
NTY0KQorKysgV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSw0MSArODUsNDkgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5k
Ojpkb0FwcGx5KCkKICAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSZWZQdHI8RWxlbWVudD4gYnJlYWtOb2RlID0gY3JlYXRlQnJlYWtFbGVtZW50KGRv
Y3VtZW50KCkpOwotICAgIE5vZGUqIG5vZGVUb0luc2VydCA9IGJyZWFrTm9kZS5nZXQoKTsKLSAg
ICAKICAgICBQb3NpdGlvbiBwb3Moc2VsZWN0aW9uLnN0YXJ0KCkudXBzdHJlYW0oKSk7CiAKICAg
ICBwb3MgPSBwb3NpdGlvbkF2b2lkaW5nU3BlY2lhbEVsZW1lbnRCb3VuZGFyeShwb3MpOwogCi0g
ICAgaWYgKGlzVGFiU3BhblRleHROb2RlKHBvcy5ub2RlKCkpKSB7Ci0gICAgICAgIGluc2VydE5v
ZGVBdFRhYlNwYW5Qb3NpdGlvbihub2RlVG9JbnNlcnQsIHBvcyk7CisgICAgTm9kZSogc3R5bGVO
b2RlID0gcG9zLm5vZGUoKTsKKyAgICBib29sIGlzVGFiU3BhbiA9IGlzVGFiU3BhblRleHROb2Rl
KHN0eWxlTm9kZSk7CisgICAgaWYgKGlzVGFiU3BhbikKKyAgICAgICAgc3R5bGVOb2RlID0gc3R5
bGVOb2RlLT5wYXJlbnROb2RlKCktPnBhcmVudE5vZGUoKTsKKyAgICBSZW5kZXJPYmplY3QqIHN0
eWxlUmVuZGVyZXIgPSBzdHlsZU5vZGUtPnJlbmRlcmVyKCk7CisgICAgYm9vbCB1c2VCcmVha0Vs
ZW1lbnQgPSAhc3R5bGVSZW5kZXJlciB8fCAhc3R5bGVSZW5kZXJlci0+c3R5bGUoKS0+cHJlc2Vy
dmVOZXdsaW5lKCk7CisKKyAgICBSZWZQdHI8Tm9kZT4gbm9kZVRvSW5zZXJ0OworICAgIGlmICh1
c2VCcmVha0VsZW1lbnQpCisgICAgICAgIG5vZGVUb0luc2VydCA9IGNyZWF0ZUJyZWFrRWxlbWVu
dChkb2N1bWVudCgpKTsKKyAgICBlbHNlCisgICAgICAgIG5vZGVUb0luc2VydCA9IGRvY3VtZW50
KCktPmNyZWF0ZVRleHROb2RlKCJcbiIpOworICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBtZXJn
ZSB0ZXh0IG5vZGVzIHdoZW4gaW5zZXJ0aW5nIGp1c3QgYWZ0ZXIgb3IgYmVmb3JlIHRleHQuCisg
ICAgCisgICAgaWYgKGlzVGFiU3BhbikgeworICAgICAgICBpbnNlcnROb2RlQXRUYWJTcGFuUG9z
aXRpb24obm9kZVRvSW5zZXJ0LmdldCgpLCBwb3MpOwogICAgICAgICBzZXRFbmRpbmdTZWxlY3Rp
b24oUG9zaXRpb24obm9kZVRvSW5zZXJ0LT50cmF2ZXJzZU5leHROb2RlKCksIDApLCBET1dOU1RS
RUFNKTsKICAgICB9IGVsc2UgaWYgKGlzRW5kT2ZCbG9jayhWaXNpYmxlUG9zaXRpb24ocG9zLCBz
ZWxlY3Rpb24uYWZmaW5pdHkoKSkpKSB7Ci0gICAgICAgIAogICAgICAgICBOb2RlKiBibG9jayA9
IHBvcy5ub2RlKCktPmVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIEluc2VydCBhbiBleHRyYSBiciBpZiB0aGUgaW5zZXJ0ZWQgb25lIHdpbGwgY29sbGFw
c2VkIGJlY2F1c2Ugb2YgcXVpcmtzIG1vZGUuCi0gICAgICAgIGlmICghZG9jdW1lbnQoKS0+aW5T
dHJpY3RNb2RlKCkgJiYgIShwb3MuZG93bnN0cmVhbSgpLm5vZGUoKS0+aGFzVGFnTmFtZShiclRh
ZykgJiYgcG9zLmRvd25zdHJlYW0oKS5vZmZzZXQoKSA9PSAwKSkgewotICAgICAgICAgICAgaW5z
ZXJ0Tm9kZUF0KG5vZGVUb0luc2VydCwgcG9zLm5vZGUoKSwgcG9zLm9mZnNldCgpKTsKLSAgICAg
ICAgICAgIGluc2VydE5vZGVBZnRlcihjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSkuZ2V0
KCksIG5vZGVUb0luc2VydCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaW5zZXJ0Tm9k
ZUF0KG5vZGVUb0luc2VydCwgcG9zLm5vZGUoKSwgcG9zLm9mZnNldCgpKTsKKyAgICAgICAgYm9v
bCBoYXZlQnJlYWsgPSBwb3MuZG93bnN0cmVhbSgpLm5vZGUoKS0+aGFzVGFnTmFtZShiclRhZykg
JiYgcG9zLmRvd25zdHJlYW0oKS5vZmZzZXQoKSA9PSAwOworICAgICAgICBpbnNlcnROb2RlQXQo
bm9kZVRvSW5zZXJ0LmdldCgpLCBwb3Mubm9kZSgpLCBwb3Mub2Zmc2V0KCkpOworICAgICAgICBp
ZiAoIWhhdmVCcmVhaykKKyAgICAgICAgICAgIGluc2VydE5vZGVBZnRlcihjcmVhdGVCcmVha0Vs
ZW1lbnQoZG9jdW1lbnQoKSkuZ2V0KCksIG5vZGVUb0luc2VydC5nZXQoKSk7CiAgICAgICAgICAg
ICAKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFBvc2l0aW9uKGJsb2NrLCBtYXhEZWVwT2Zm
c2V0KGJsb2NrKSksIERPV05TVFJFQU0pOwotICAgIH0KLSAgICBlbHNlIGlmIChwb3Mub2Zmc2V0
KCkgPD0gcG9zLm5vZGUoKS0+Y2FyZXRNaW5PZmZzZXQoKSkgeworICAgIH0gZWxzZSBpZiAocG9z
Lm9mZnNldCgpIDw9IHBvcy5ub2RlKCktPmNhcmV0TWluT2Zmc2V0KCkpIHsKICAgICAgICAgTE9H
KEVkaXRpbmcsICJpbnB1dCBuZXdsaW5lIGNhc2UgMiIpOwogICAgICAgICAvLyBJbnNlcnQgbm9k
ZSBiZWZvcmUgZG93bnN0cmVhbSBwb3NpdGlvbiwgYW5kIHBsYWNlIGNhcmV0IHRoZXJlIGFzIHdl
bGwuIAogICAgICAgICBQb3NpdGlvbiBlbmRpbmdQb3NpdGlvbiA9IHBvcy5kb3duc3RyZWFtKCk7
Ci0gICAgICAgIGluc2VydE5vZGVCZWZvcmVQb3NpdGlvbihub2RlVG9JbnNlcnQsIGVuZGluZ1Bv
c2l0aW9uKTsKKyAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZVBvc2l0aW9uKG5vZGVUb0luc2VydC5n
ZXQoKSwgZW5kaW5nUG9zaXRpb24pOwogICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oZW5kaW5n
UG9zaXRpb24sIERPV05TVFJFQU0pOwogICAgIH0gZWxzZSBpZiAocG9zLm9mZnNldCgpID49IHBv
cy5ub2RlKCktPmNhcmV0TWF4T2Zmc2V0KCkpIHsKICAgICAgICAgTE9HKEVkaXRpbmcsICJpbnB1
dCBuZXdsaW5lIGNhc2UgMyIpOwogICAgICAgICAvLyBJbnNlcnQgQlIgYWZ0ZXIgdGhpcyBub2Rl
LiBQbGFjZSBjYXJldCBpbiB0aGUgcG9zaXRpb24gdGhhdCBpcyBkb3duc3RyZWFtCiAgICAgICAg
IC8vIG9mIHRoZSBjdXJyZW50IHBvc2l0aW9uLCByZWNrb25lZCBiZWZvcmUgaW5zZXJ0aW5nIHRo
ZSBCUiBpbiBiZXR3ZWVuLgogICAgICAgICBQb3NpdGlvbiBlbmRpbmdQb3NpdGlvbiA9IHBvcy5k
b3duc3RyZWFtKCk7Ci0gICAgICAgIGluc2VydE5vZGVBZnRlclBvc2l0aW9uKG5vZGVUb0luc2Vy
dCwgcG9zKTsKKyAgICAgICAgaW5zZXJ0Tm9kZUFmdGVyUG9zaXRpb24obm9kZVRvSW5zZXJ0Lmdl
dCgpLCBwb3MpOwogICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oZW5kaW5nUG9zaXRpb24sIERP
V05TVFJFQU0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFNwbGl0IGEgdGV4dCBub2RlCkBA
IC0xMzIsNyArMTQwLDcgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KCkK
ICAgICAgICAgUmVmUHRyPFRleHQ+IHRleHRCZWZvcmVOb2RlID0gZG9jdW1lbnQoKS0+Y3JlYXRl
VGV4dE5vZGUodGV4dE5vZGUtPnN1YnN0cmluZ0RhdGEoMCwgc2VsZWN0aW9uLnN0YXJ0KCkub2Zm
c2V0KCksIGVjKSk7CiAgICAgICAgIGRlbGV0ZVRleHRGcm9tTm9kZSh0ZXh0Tm9kZSwgMCwgcG9z
Lm9mZnNldCgpKTsKICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZSh0ZXh0QmVmb3JlTm9kZS5nZXQo
KSwgdGV4dE5vZGUpOwotICAgICAgICBpbnNlcnROb2RlQmVmb3JlKG5vZGVUb0luc2VydCwgdGV4
dE5vZGUpOworICAgICAgICBpbnNlcnROb2RlQmVmb3JlKG5vZGVUb0luc2VydC5nZXQoKSwgdGV4
dE5vZGUpOwogICAgICAgICBQb3NpdGlvbiBlbmRpbmdQb3NpdGlvbiA9IFBvc2l0aW9uKHRleHRO
b2RlLCAwKTsKICAgICAgICAgCiAgICAgICAgIC8vIEhhbmRsZSB3aGl0ZXNwYWNlIHRoYXQgb2Nj
dXJzIGFmdGVyIHRoZSBzcGxpdApAQCAtMTQwLDYgKzE0OCw3IEBAIHZvaWQgSW5zZXJ0TGluZUJy
ZWFrQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIGlmICghZW5kaW5nUG9zaXRpb24uaXNSZW5k
ZXJlZENoYXJhY3RlcigpKSB7CiAgICAgICAgICAgICAvLyBDbGVhciBvdXQgYWxsIHdoaXRlc3Bh
Y2UgYW5kIGluc2VydCBvbmUgbm9uLWJyZWFraW5nIHNwYWNlCiAgICAgICAgICAgICBkZWxldGVJ
bnNpZ25pZmljYW50VGV4dERvd25zdHJlYW0oZW5kaW5nUG9zaXRpb24pOworICAgICAgICAgICAg
QVNTRVJUKCF0ZXh0Tm9kZS0+cmVuZGVyZXIoKSB8fCB0ZXh0Tm9kZS0+cmVuZGVyZXIoKS0+c3R5
bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpOwogICAgICAgICAgICAgaW5zZXJ0VGV4dEludG9O
b2RlKHRleHROb2RlLCAwLCBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtMTU0LDcgKzE2Myw4IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6
ZG9BcHBseSgpCiAgICAgCiAgICAgaWYgKHR5cGluZ1N0eWxlICYmIHR5cGluZ1N0eWxlLT5sZW5n
dGgoKSA+IDApIHsKICAgICAgICAgU2VsZWN0aW9uIHNlbGVjdGlvbkJlZm9yZVN0eWxlID0gZW5k
aW5nU2VsZWN0aW9uKCk7Ci0gICAgICAgIGFwcGx5U3R5bGUodHlwaW5nU3R5bGUsIFBvc2l0aW9u
KG5vZGVUb0luc2VydCwgMCksIFBvc2l0aW9uKG5vZGVUb0luc2VydCwgbWF4RGVlcE9mZnNldChu
b2RlVG9JbnNlcnQpKSk7CisgICAgICAgIGFwcGx5U3R5bGUodHlwaW5nU3R5bGUsIFBvc2l0aW9u
KG5vZGVUb0luc2VydC5nZXQoKSwgMCksCisgICAgICAgICAgICBQb3NpdGlvbihub2RlVG9JbnNl
cnQuZ2V0KCksIG1heERlZXBPZmZzZXQobm9kZVRvSW5zZXJ0LmdldCgpKSkpOwogICAgICAgICBz
ZXRFbmRpbmdTZWxlY3Rpb24oc2VsZWN0aW9uQmVmb3JlU3R5bGUpOwogICAgIH0KIApJbmRleDog
V2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5k
LmNwcAkocmV2aXNpb24gMTU1NjQpCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMsOCBAQCB2
b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvCiAgICAgLy8gRklYTUU6IGxl
YWRpbmdXaGl0ZXNwYWNlUG9zaXRpb24gaXMgcmV0dXJuaW5nIHRoZSBwb3NpdGlvbiBiZWZvcmUg
cHJlc2VydmVkIG5ld2xpbmVzIGZvciBwb3NpdGlvbnMKICAgICAvLyBhZnRlciB0aGUgcHJlc2Vy
dmVkIG5ld2xpbmUsIGNhdXNpbmcgdGhlIG5ld2xpbmUgdG8gYmUgdHVybmVkIGludG8gYSBuYnNw
LgogICAgIGlmIChsZWFkaW5nV2hpdGVzcGFjZS5pc05vdE51bGwoKSkgewotICAgICAgICBUZXh0
ICp0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQgKj4obGVhZGluZ1doaXRlc3BhY2Uubm9kZSgp
KTsKKyAgICAgICAgVGV4dCogdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0Kj4obGVhZGluZ1do
aXRlc3BhY2Uubm9kZSgpKTsKKyAgICAgICAgQVNTRVJUKCF0ZXh0Tm9kZS0+cmVuZGVyZXIoKSB8
fCB0ZXh0Tm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpOwog
ICAgICAgICByZXBsYWNlVGV4dEluTm9kZSh0ZXh0Tm9kZSwgbGVhZGluZ1doaXRlc3BhY2Uub2Zm
c2V0KCksIDEsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CiAgICAgfQogICAgIApAQCAtMjg0
LDkgKzI4NSwxMSBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvCiAg
ICAgICAgIHBvcyA9IFBvc2l0aW9uKHN0YXJ0Tm9kZSwgMCk7CiAgICAgICAgIGlmICghcG9zLmlz
UmVuZGVyZWRDaGFyYWN0ZXIoKSkgewogICAgICAgICAgICAgLy8gQ2xlYXIgb3V0IGFsbCB3aGl0
ZXNwYWNlIGFuZCBpbnNlcnQgb25lIG5vbi1icmVha2luZyBzcGFjZQotICAgICAgICAgICAgQVNT
RVJUKHN0YXJ0Tm9kZSAmJiBzdGFydE5vZGUtPmlzVGV4dE5vZGUoKSk7CisgICAgICAgICAgICBB
U1NFUlQoc3RhcnROb2RlKTsKKyAgICAgICAgICAgIEFTU0VSVChzdGFydE5vZGUtPmlzVGV4dE5v
ZGUoKSk7CisgICAgICAgICAgICBBU1NFUlQoIXN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSB8fCBzdGFy
dE5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKTsKICAgICAg
ICAgICAgIGRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0RG93bnN0cmVhbShwb3MpOwotICAgICAgICAg
ICAgaW5zZXJ0VGV4dEludG9Ob2RlKHN0YXRpY19jYXN0PFRleHQgKj4oc3RhcnROb2RlKSwgMCwg
bm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKKyAgICAgICAgICAgIGluc2VydFRleHRJbnRvTm9k
ZShzdGF0aWNfY2FzdDxUZXh0Kj4oc3RhcnROb2RlKSwgMCwgbm9uQnJlYWtpbmdTcGFjZVN0cmlu
ZygpKTsKICAgICAgICAgfQogICAgIH0KIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0pTRWRpdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSlNFZGl0b3IuY3BwCShyZXZpc2lv
biAxNTU2NCkKKysrIFdlYkNvcmUvZWRpdGluZy9KU0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxNSw3ICs0MTUsNyBAQCBib29sIGV4ZWNSZWRvKEZyYW1lICpmcmFtZSwgYm9vbCB1c2Vy
SW50CiAKIGJvb2wgZXhlY1JlbW92ZUZvcm1hdChGcmFtZSogZnJhbWUsIGJvb2wgdXNlckludGVy
ZmFjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21UZXh0KGZyYW1lLT5kb2N1bWVudCgpLCBm
cmFtZS0+c2VsZWN0aW9uKCkudG9TdHJpbmcoKS5kZXByZWNhdGVkU3RyaW5nKCkpOworICAgIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQo
ZnJhbWUtPnNlbGVjdGlvbigpLnRvUmFuZ2UoKS5nZXQoKSwgZnJhbWUtPnNlbGVjdGlvbigpLnRv
U3RyaW5nKCkpOwogICAgIEVkaXRDb21tYW5kUHRyKG5ldyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZChmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhZ21lbnQuZ2V0KCksIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBFZGl0QWN0aW9uVW5zcGVjaWZpZWQpKS5hcHBseSgpOwogICAgIHJldHVybiB0cnVl
OwogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1JlYmFsYW5jZVdoaXRlc3BhY2VDb21tYW5kLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvUmViYWxhbmNlV2hpdGVzcGFjZUNvbW1h
bmQuY3BwCShyZXZpc2lvbiAxNTU2NCkKKysrIFdlYkNvcmUvZWRpdGluZy9SZWJhbGFuY2VXaGl0
ZXNwYWNlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEyICs0OSwxMiBAQCB2b2lk
IFJlYmFsYW5jZVdoaXRlc3BhY2VDb21tYW5kOjpkb0FwcGx5CiB7CiAgICAgaWYgKG1fcG9zaXRp
b24uaXNOdWxsKCkgfHwgIW1fcG9zaXRpb24ubm9kZSgpLT5pc1RleHROb2RlKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICAgICAgCi0gICAgVGV4dCAqdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0
ICo+KG1fcG9zaXRpb24ubm9kZSgpKTsKKworICAgIFRleHQqIHRleHROb2RlID0gc3RhdGljX2Nh
c3Q8VGV4dCo+KG1fcG9zaXRpb24ubm9kZSgpKTsKICAgICBTdHJpbmcgdGV4dCA9IHRleHROb2Rl
LT5kYXRhKCk7Ci0gICAgaWYgKHRleHQubGVuZ3RoKCkgPT0gMCkKLSAgICAgICAgcmV0dXJuOwot
ICAgIAorICAgIEFTU0VSVCghdGV4dC5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghdGV4dE5vZGUt
PnJlbmRlcmVyKCkgfHwgdGV4dE5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmNvbGxhcHNlV2hp
dGVTcGFjZSgpKTsKKwogICAgIGludCBvZmZzZXQgPSBtX3Bvc2l0aW9uLm9mZnNldCgpOwogICAg
IC8vIElmIG5laXRoZXIgdGV4dFtvZmZzZXRdIG5vciB0ZXh0W29mZnNldCAtIDFdIGFyZSBzb21l
IGZvcm0gb2Ygd2hpdGVzcGFjZSwgZG8gbm90aGluZy4KICAgICBpZiAoIWlzV2hpdGVzcGFjZSh0
ZXh0W29mZnNldF0pKSB7CkBAIC0xMDIsNCArMTAyLDMgQEAgYm9vbCBSZWJhbGFuY2VXaGl0ZXNw
YWNlQ29tbWFuZDo6cHJlc2VydgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KSW5kZXg6
IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24g
MTU1NjQpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUmVwbGFjZW1lbnRGcmFnbWVudDo6UmVwbGFjZW1l
bnRGcmFnbWVudChEb2N1bWVudCAqZG9jdW1lbnQsIERvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50
LCBib29sIG1hdGNoU3R5bGUsIEVsZW1lbnQqIGVkaXRhYmxlUm9vdCkKK1JlcGxhY2VtZW50RnJh
Z21lbnQ6OlJlcGxhY2VtZW50RnJhZ21lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBEb2N1bWVudEZy
YWdtZW50KiBmcmFnbWVudCwgYm9vbCBtYXRjaFN0eWxlLCBjb25zdCBTZWxlY3Rpb24mIHNlbGVj
dGlvbikKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpLAogICAgICAgbV9mcmFnbWVudChmcmFn
bWVudCksCiAgICAgICBtX21hdGNoU3R5bGUobWF0Y2hTdHlsZSksIApAQCAtNTgsMjcgKzU4LDE5
IEBAIFJlcGxhY2VtZW50RnJhZ21lbnQ6OlJlcGxhY2VtZW50RnJhZ21lbnQKIHsKICAgICBpZiAo
IW1fZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9mcmFnbWVudCkgewot
ICAgICAgICBtX3R5cGUgPSBFbXB0eUZyYWdtZW50OworICAgIGlmICghbV9mcmFnbWVudCkKICAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIE5vZGUqIGZpcnN0Q2hpbGQgPSBtX2ZyYWdtZW50
LT5maXJzdENoaWxkKCk7Ci0gICAgTm9kZSogbGFzdENoaWxkID0gbV9mcmFnbWVudC0+bGFzdENo
aWxkKCk7Ci0KLSAgICBpZiAoIWZpcnN0Q2hpbGQpIHsKLSAgICAgICAgbV90eXBlID0gRW1wdHlG
cmFnbWVudDsKKyAgICBpZiAoIWZpcnN0Q2hpbGQpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgCi0gICAgbV90eXBlID0gZmlyc3RDaGlsZCA9PSBsYXN0Q2hpbGQgJiYgZmlyc3RDaGlsZC0+
aXNUZXh0Tm9kZSgpID8gU2luZ2xlVGV4dE5vZGVGcmFnbWVudCA6IFRyZWVGcmFnbWVudDsKICAg
ICAKKyAgICBFbGVtZW50KiBlZGl0YWJsZVJvb3QgPSBzZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxl
bWVudCgpOwogICAgIEFTU0VSVChlZGl0YWJsZVJvb3QpOwogICAgIGlmICghZWRpdGFibGVSb290
KQogICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICBSZWZQdHI8Tm9kZT4gaG9sZGVy
ID0gaW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKCk7CisKKyAgICBOb2RlKiBzdHlsZU5v
ZGUgPSBzZWxlY3Rpb24uYmFzZSgpLm5vZGUoKTsKKyAgICBSZWZQdHI8Tm9kZT4gaG9sZGVyID0g
aW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKHN0eWxlTm9kZSk7CiAgICAgCiAgICAgUmVm
UHRyPFJhbmdlPiByYW5nZSA9IFNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2Rl
KGhvbGRlci5nZXQoKSkudG9SYW5nZSgpOwogICAgIFN0cmluZyB0ZXh0ID0gcGxhaW5UZXh0KHJh
bmdlLmdldCgpKTsKQEAgLTg4LDIxICs4MCwxNiBAQCBSZXBsYWNlbWVudEZyYWdtZW50OjpSZXBs
YWNlbWVudEZyYWdtZW50CiAgICAgZWRpdGFibGVSb290LT5kaXNwYXRjaEV2ZW50KGV2dCwgZWMs
IHRydWUpOwogICAgIEFTU0VSVChlYyA9PSAwKTsKICAgICBpZiAodGV4dCAhPSBldnQtPnRleHQo
KSB8fCAhZWRpdGFibGVSb290LT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKSB7Ci0gICAgICAg
IC8vIElmIHRoZSByb290IGlzIGluIHBsYWluLXRleHQgbW9kZSwgYW5kIHdoaXRlLXNwYWNlIHNo
b3VsZG4ndCBiZSBjb2xsYXBzZWQsIHRoZW4gY29udHJ1Y3QgYSBmcmFnbWVudCB0aGF0IGNvbnRh
aW5zIG9uZSB0ZXh0IG5vZGUKLSAgICAgICAgaWYgKCFlZGl0YWJsZVJvb3QtPmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlKCkgJiYgZWRpdGFibGVSb290LT5yZW5kZXJlcigpICYmICFlZGl0YWJsZVJv
b3QtPnJlbmRlcmVyKCktPnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7Ci0gICAgICAg
ICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudC0+Y3JlYXRl
RG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGRv
Y3VtZW50LT5jcmVhdGVUZXh0Tm9kZShldnQtPnRleHQoKSksIGVjKTsKLSAgICAgICAgICAgIEFT
U0VSVChlYyA9PSAwKTsKLSAgICAgICAgICAgIG1fZnJhZ21lbnQgPSBmcmFnbWVudDsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBtX2ZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4
dChkb2N1bWVudCwgZXZ0LT50ZXh0KCkuZGVwcmVjYXRlZFN0cmluZygpKTsKLSAgICAgICAgZmly
c3RDaGlsZCA9IG1fZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKTsKLSAgICAgICAgbGFzdENoaWxkID0g
bV9mcmFnbWVudC0+Zmlyc3RDaGlsZCgpOwotICAgICAgICAKKyAgICAgICAgcmVzdG9yZVRlc3RS
ZW5kZXJpbmdOb2Rlc1RvRnJhZ21lbnQoaG9sZGVyLmdldCgpKTsKICAgICAgICAgcmVtb3ZlTm9k
ZShob2xkZXIpOwotICAgICAgICBob2xkZXIgPSBpbnNlcnRGcmFnbWVudEZvclRlc3RSZW5kZXJp
bmcoKTsKKworICAgICAgICBtX2ZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChzZWxl
Y3Rpb24udG9SYW5nZSgpLmdldCgpLCBldnQtPnRleHQoKSk7CisgICAgICAgIGZpcnN0Q2hpbGQg
PSBtX2ZyYWdtZW50LT5maXJzdENoaWxkKCk7CisgICAgICAgIGlmICghZmlyc3RDaGlsZCkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaG9sZGVyID0gaW5zZXJ0RnJhZ21lbnRGb3JUZXN0
UmVuZGVyaW5nKHN0eWxlTm9kZSk7CiAgICAgfQotICAgIAorCiAgICAgTm9kZSAqbm9kZSA9IGZp
cnN0Q2hpbGQ7CiAgICAgTm9kZSAqbmV3bGluZUF0U3RhcnROb2RlID0gMDsKICAgICBOb2RlICpu
ZXdsaW5lQXRFbmROb2RlID0gMDsKQEAgLTE0NCw4ICsxMzEsOSBAQCBSZXBsYWNlbWVudEZyYWdt
ZW50OjpSZXBsYWNlbWVudEZyYWdtZW50CiAgICAgcmVtb3ZlU3R5bGVOb2RlcygpOwogfQogCi1S
ZXBsYWNlbWVudEZyYWdtZW50Ojp+UmVwbGFjZW1lbnRGcmFnbWVudCgpCitib29sIFJlcGxhY2Vt
ZW50RnJhZ21lbnQ6OmlzRW1wdHkoKSBjb25zdAogeworICAgIHJldHVybiAoIW1fZnJhZ21lbnQg
fHwgIW1fZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKSkgJiYgIW1faGFzSW50ZXJjaGFuZ2VOZXdsaW5l
QXRTdGFydCAmJiAhbV9oYXNJbnRlcmNoYW5nZU5ld2xpbmVBdEVuZDsKIH0KIAogTm9kZSAqUmVw
bGFjZW1lbnRGcmFnbWVudDo6Zmlyc3RDaGlsZCgpIGNvbnN0IApAQCAtMjMyLDE1ICsyMjAsMjcg
QEAgdm9pZCBSZXBsYWNlbWVudEZyYWdtZW50OjppbnNlcnROb2RlQmVmbwogICAgIEFTU0VSVChl
YyA9PSAwKTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBSZXBsYWNlbWVudEZyYWdtZW50OjppbnNl
cnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmcoKQorUGFzc1JlZlB0cjxOb2RlPiBSZXBsYWNlbWVu
dEZyYWdtZW50OjppbnNlcnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmcoTm9kZSogY29udGV4dCkK
IHsKLSAgICBOb2RlICpib2R5ID0gbV9kb2N1bWVudC0+Ym9keSgpOworICAgIE5vZGUqIGJvZHkg
PSBtX2RvY3VtZW50LT5ib2R5KCk7CiAgICAgaWYgKCFib2R5KQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIFJlZlB0cjxOb2RlPiBob2xkZXIgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVu
dChtX2RvY3VtZW50LmdldCgpKTsKKyAgICBSZWZQdHI8U3R5bGVkRWxlbWVudD4gaG9sZGVyID0g
c3RhdGljX3BvaW50ZXJfY2FzdDxTdHlsZWRFbGVtZW50PihjcmVhdGVEZWZhdWx0UGFyYWdyYXBo
RWxlbWVudChtX2RvY3VtZW50LmdldCgpKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisKKyAgICAvLyBDb3B5IHRoZSB3aGl0ZXNwYWNlIHN0eWxlIGZyb20gdGhlIGNvbnRleHQg
b250byB0aGlzIGVsZW1lbnQuCisgICAgTm9kZSogbiA9IGNvbnRleHQ7CisgICAgd2hpbGUgKG4g
JiYgIW4tPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgbiA9IG4tPnBhcmVudE5vZGUoKTsKKyAg
ICBpZiAobikgeworICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBj
b250ZXh0U3R5bGUgPSBuZXcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKHN0YXRpY19jYXN0
PEVsZW1lbnQqPihuKSk7CisgICAgICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlID0gaG9s
ZGVyLT5zdHlsZSgpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTX1BST1BfV0hJVEVf
U1BBQ0UsIGNvbnRleHRTdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShDU1NfUFJPUF9XSElURV9TUEFD
RSksIGZhbHNlLCBlYyk7CisgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICB9CisgICAgCiAg
ICAgaG9sZGVyLT5hcHBlbmRDaGlsZChtX2ZyYWdtZW50LCBlYyk7CiAgICAgQVNTRVJUKGVjID09
IDApOwogICAgIApAQCAtNTMyLDkgKzUzMiw5IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6OmRvQXBwbHkoKQogICAgICAgICBtX21hdGNoU3R5bGUgPSB0cnVlOwogICAgIAogICAgIEVs
ZW1lbnQqIGN1cnJlbnRSb290ID0gc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAg
ICBSZXBsYWNlbWVudEZyYWdtZW50IGZyYWdtZW50KGRvY3VtZW50KCksIG1fZG9jdW1lbnRGcmFn
bWVudC5nZXQoKSwgbV9tYXRjaFN0eWxlLCBjdXJyZW50Um9vdCk7CisgICAgUmVwbGFjZW1lbnRG
cmFnbWVudCBmcmFnbWVudChkb2N1bWVudCgpLCBtX2RvY3VtZW50RnJhZ21lbnQuZ2V0KCksIG1f
bWF0Y2hTdHlsZSwgc2VsZWN0aW9uKTsKICAgICAKLSAgICBpZiAoZnJhZ21lbnQudHlwZSgpID09
IEVtcHR5RnJhZ21lbnQpCisgICAgaWYgKGZyYWdtZW50LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIGlmIChtX21hdGNoU3R5bGUpCkBAIC02NjEsNyArNjYxLDcgQEAgdm9p
ZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIC8vIHVwZGF0ZSBp
bnNlcnRpb24gcG9pbnQgdG8gYmUgYXQgdGhlIGVuZCBvZiB0aGUgbGFzdCBibG9jayBpbnNlcnRl
ZAogICAgICAgICBpZiAobV9sYXN0Tm9kZUluc2VydGVkKSB7CiAgICAgICAgICAgICB1cGRhdGVM
YXlvdXQoKTsKLSAgICAgICAgICAgIGluc2VydGlvblBvcyA9IFBvc2l0aW9uKG1fbGFzdE5vZGVJ
bnNlcnRlZC5nZXQoKSwgbV9sYXN0Tm9kZUluc2VydGVkLT5jYXJldE1heE9mZnNldCgpKTsKKyAg
ICAgICAgICAgIGluc2VydGlvblBvcyA9IFBvc2l0aW9uKG1fbGFzdE5vZGVJbnNlcnRlZC5nZXQo
KSwgbWF4RGVlcE9mZnNldChtX2xhc3ROb2RlSW5zZXJ0ZWQuZ2V0KCkpKTsKICAgICAgICAgfQog
ICAgIH0KICAgICAKQEAgLTcxMiwxMCArNzEyLDIwIEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAgICAgbm9kZSA9IG5leHQ7CiAgICAgICAgIH0KICAg
ICAgICAgdXBkYXRlTGF5b3V0KCk7Ci0gICAgICAgIGluc2VydGlvblBvcyA9IFBvc2l0aW9uKG1f
bGFzdE5vZGVJbnNlcnRlZC5nZXQoKSwgbV9sYXN0Tm9kZUluc2VydGVkLT5jYXJldE1heE9mZnNl
dCgpKTsKKyAgICAgICAgaW5zZXJ0aW9uUG9zID0gUG9zaXRpb24obV9sYXN0Tm9kZUluc2VydGVk
LmdldCgpLCBtYXhEZWVwT2Zmc2V0KG1fbGFzdE5vZGVJbnNlcnRlZC5nZXQoKSkpOworICAgIH0K
KworICAgIGJvb2wgaW50ZXJjaGFuZ2VOZXdsaW5lQXRFbmQgPSBmcmFnbWVudC5oYXNJbnRlcmNo
YW5nZU5ld2xpbmVBdEVuZCgpOworICAgIGJvb2wgbGFzdE5vZGVJbnNlcnRlZFdhc0JSID0gbV9s
YXN0Tm9kZUluc2VydGVkLT5oYXNUYWdOYW1lKGJyVGFnKTsKKworICAgIGlmIChzaG91bGRSZW1v
dmVFbmRCUihlbmRCUikpIHsKKyAgICAgICAgaWYgKGludGVyY2hhbmdlTmV3bGluZUF0RW5kIHx8
IGxhc3ROb2RlSW5zZXJ0ZWRXYXNCUikgeworICAgICAgICAgICAgaW50ZXJjaGFuZ2VOZXdsaW5l
QXRFbmQgPSBmYWxzZTsKKyAgICAgICAgICAgIGxhc3ROb2RlSW5zZXJ0ZWRXYXNCUiA9IGZhbHNl
OworICAgICAgICAgICAgbV9sYXN0Tm9kZUluc2VydGVkID0gZW5kQlI7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgcmVtb3ZlTm9kZUFuZFBydW5lQW5jZXN0b3JzKGVuZEJSKTsKICAgICB9
Ci0gICAgCi0gICAgcmVtb3ZlRW5kQlJJZk5lZWRlZChlbmRCUik7CiAgICAgCiAgICAgLy8gU3R5
bGVzIHdlcmUgcmVtb3ZlZCBkdXJpbmcgdGhlIHRlc3QgaW5zZXJ0aW9uLiAgUmVzdG9yZSB0aGVt
LgogICAgIGlmICghbV9tYXRjaFN0eWxlKQpAQCAtNzI2LDcgKzczNiw3IEBAIHZvaWQgUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIAogICAgIFBvc2l0aW9uIGxhc3RQb3Np
dGlvblRvU2VsZWN0OwogICAgIAotICAgIGlmIChmcmFnbWVudC5oYXNJbnRlcmNoYW5nZU5ld2xp
bmVBdEVuZCgpKSB7CisgICAgaWYgKGludGVyY2hhbmdlTmV3bGluZUF0RW5kKSB7CiAgICAgICAg
IFZpc2libGVQb3NpdGlvbiBwb3MoaW5zZXJ0aW9uUG9zKTsKICAgICAgICAgVmlzaWJsZVBvc2l0
aW9uIG5leHQgPSBwb3MubmV4dCgpOwogICAgICAgICAgICAgCkBAIC03NDMsNyArNzUzLDcgQEAg
dm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgICAgICBsYXN0
UG9zaXRpb25Ub1NlbGVjdCA9IG5leHQuZGVlcEVxdWl2YWxlbnQoKS5kb3duc3RyZWFtKCk7CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgfSBlbHNlIGlmIChtX2xhc3ROb2RlSW5zZXJ0ZWQtPmhh
c1RhZ05hbWUoYnJUYWcpKSB7CisgICAgfSBlbHNlIGlmIChsYXN0Tm9kZUluc2VydGVkV2FzQlIp
IHsKICAgICAgICAgLy8gV2Ugd2FudCB0byBob25vciB0aGUgbGFzdCBpbmNvbWluZyBsaW5lIGJy
ZWFrLCBzbywgaWYgaXQgd2lsbCBjb2xsYXBzZSBhd2F5IGJlY2F1c2Ugb2YgcXVpcmtzIG1vZGUs
IAogICAgICAgICAvLyBhZGQgYW4gZXh0cmEgb25lLgogICAgICAgICAvLyBGSVhNRTogVGhpcyB3
aWxsIGV4cGFuZCBhIGJyIGluc2lkZSBhIGJsb2NrOiA8ZGl2Pjxicj48L2Rpdj4KQEAgLTc1MSw3
ICs3NjEsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAg
ICAgaWYgKCFkb2N1bWVudCgpLT5pblN0cmljdE1vZGUoKSAmJiBpc0VuZE9mQmxvY2soVmlzaWJs
ZVBvc2l0aW9uKFBvc2l0aW9uKG1fbGFzdE5vZGVJbnNlcnRlZC5nZXQoKSwgMCkpKSkKICAgICAg
ICAgICAgIGluc2VydE5vZGVCZWZvcmVBbmRVcGRhdGVOb2Rlc0luc2VydGVkKGNyZWF0ZUJyZWFr
RWxlbWVudChkb2N1bWVudCgpKS5nZXQoKSwgbV9sYXN0Tm9kZUluc2VydGVkLmdldCgpKTsKICAg
ICAgICAgICAgIAotICAgIH0gZWxzZSBpZiAoc2hvdWxkTWVyZ2VFbmQoZW5kT2ZJbnNlcnRlZENv
bnRlbnQsIGZyYWdtZW50Lmhhc0ludGVyY2hhbmdlTmV3bGluZUF0RW5kKCksIGVuZFdhc0VuZE9m
UGFyYWdyYXBoKSkgeworICAgIH0gZWxzZSBpZiAoc2hvdWxkTWVyZ2VFbmQoZW5kT2ZJbnNlcnRl
ZENvbnRlbnQsIGludGVyY2hhbmdlTmV3bGluZUF0RW5kLCBlbmRXYXNFbmRPZlBhcmFncmFwaCkp
IHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgY29udGVudCBhZnRlciB0aGUgZW5kIG9mIHRo
ZSBzZWxlY3Rpb24gYmVpbmcgcGFzdGVkIGludG8gaXMgaW4gdGhlIHNhbWUgcGFyYWdyYXBoIGFz
IHRoZSAKICAgICAgICAgLy8gbGFzdCBiaXQgb2YgY29udGVudCB0aGF0IHdhcyBpbnNlcnRlZC4K
ICAgICAgICAgCkBAIC03NzksMjUgKzc4OSwyNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpkb0FwcGx5KCkKICAgICAgICAgYm9vbCBuZWVkc1RyYWlsaW5nU3BhY2UgPSAhaXNFbmRP
ZlBhcmFncmFwaChlbmRPZkluc2VydGVkQ29udGVudCkgJiYKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAhZnJhbWUtPmlzQ2hhcmFjdGVyU21hcnRSZXBsYWNlRXhlbXB0KGVuZE9m
SW5zZXJ0ZWRDb250ZW50LmNoYXJhY3RlckFmdGVyKCksIGZhbHNlKTsKICAgICAgICAgaWYgKG5l
ZWRzVHJhaWxpbmdTcGFjZSkgeworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG1fbGFzdE5vZGVJbnNlcnRlZC0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGJvb2wgY29sbGFw
c2VXaGl0ZVNwYWNlID0gIXJlbmRlcmVyIHx8IHJlbmRlcmVyLT5zdHlsZSgpLT5jb2xsYXBzZVdo
aXRlU3BhY2UoKTsKICAgICAgICAgICAgIGlmIChtX2xhc3ROb2RlSW5zZXJ0ZWQtPmlzVGV4dE5v
ZGUoKSkgewotICAgICAgICAgICAgICAgIFRleHQgKnRleHQgPSBzdGF0aWNfY2FzdDxUZXh0ICo+
KG1fbGFzdE5vZGVJbnNlcnRlZC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0VGV4dElu
dG9Ob2RlKHRleHQsIHRleHQtPmxlbmd0aCgpLCBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOwot
ICAgICAgICAgICAgICAgIGluc2VydGlvblBvcyA9IFBvc2l0aW9uKHRleHQsIHRleHQtPmxlbmd0
aCgpKTsKKyAgICAgICAgICAgICAgICBUZXh0KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8VGV4dCAqPiht
X2xhc3ROb2RlSW5zZXJ0ZWQuZ2V0KCkpOworICAgICAgICAgICAgICAgIGluc2VydFRleHRJbnRv
Tm9kZSh0ZXh0LCB0ZXh0LT5sZW5ndGgoKSwgY29sbGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtp
bmdTcGFjZVN0cmluZygpIDogIiAiKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBkb2N1bWVudCgpLT5jcmVhdGVFZGl0aW5nVGV4dE5v
ZGUobm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Tm9k
ZT4gbm9kZSA9IGRvY3VtZW50KCktPmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBzZVdoaXRl
U3BhY2UgPyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICIpOwogICAgICAgICAgICAgICAg
IGluc2VydE5vZGVBZnRlckFuZFVwZGF0ZU5vZGVzSW5zZXJ0ZWQobm9kZS5nZXQoKSwgbV9sYXN0
Tm9kZUluc2VydGVkLmdldCgpKTsKLSAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb3MgPSBQb3Np
dGlvbihub2RlLmdldCgpLCAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIAogICAg
ICAgICBib29sIG5lZWRzTGVhZGluZ1NwYWNlID0gIWlzU3RhcnRPZlBhcmFncmFwaChzdGFydE9m
SW5zZXJ0ZWRDb250ZW50KSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWZy
YW1lLT5pc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4ZW1wdChzdGFydE9mSW5zZXJ0ZWRDb250ZW50
LnByZXZpb3VzKCkuY2hhcmFjdGVyQWZ0ZXIoKSwgdHJ1ZSk7CiAgICAgICAgIGlmIChuZWVkc0xl
YWRpbmdTcGFjZSkgeworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fbGFz
dE5vZGVJbnNlcnRlZC0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGJvb2wgY29sbGFwc2VXaGl0
ZVNwYWNlID0gIXJlbmRlcmVyIHx8IG1fbGFzdE5vZGVJbnNlcnRlZC0+cmVuZGVyZXIoKS0+c3R5
bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCk7CiAgICAgICAgICAgICBpZiAobV9maXJzdE5vZGVJ
bnNlcnRlZC0+aXNUZXh0Tm9kZSgpKSB7CiAgICAgICAgICAgICAgICAgVGV4dCAqdGV4dCA9IHN0
YXRpY19jYXN0PFRleHQgKj4obV9maXJzdE5vZGVJbnNlcnRlZC5nZXQoKSk7Ci0gICAgICAgICAg
ICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRleHQsIDAsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmco
KSk7CisgICAgICAgICAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRleHQsIDAsIGNvbGxhcHNl
V2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIgIik7CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBub2RlID0gZG9jdW1lbnQo
KS0+Y3JlYXRlRWRpdGluZ1RleHROb2RlKG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CisgICAg
ICAgICAgICAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBkb2N1bWVudCgpLT5jcmVhdGVFZGl0aW5n
VGV4dE5vZGUoY29sbGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpIDog
IiAiKTsKICAgICAgICAgICAgICAgICAvLyBEb24ndCB1cGRhdGVOb2Rlc0luc2VydGVkLiAgRG9p
bmcgc28gd291bGQgc2V0IG1fbGFzdE5vZGVJbnNlcnRlZCB0byBiZSB0aGUgbm9kZSBjb250YWlu
aW5nIHRoZSAKICAgICAgICAgICAgICAgICAvLyBsZWFkaW5nIHNwYWNlLCBidXQgbV9sYXN0Tm9k
ZUluc2VydGVkIGlzIHN1cHBvc2VkIHRvIG1hcmsgdGhlIGVuZCBvZiBwYXN0ZWQgY29udGVudC4K
ICAgICAgICAgICAgICAgICBpbnNlcnROb2RlQmVmb3JlKG5vZGUuZ2V0KCksIG1fZmlyc3ROb2Rl
SW5zZXJ0ZWQuZ2V0KCkpOwpAQCAtODEwLDE5ICs4MjIsMTkgQEAgdm9pZCBSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgY29tcGxldGVIVE1MUmVwbGFjZW1lbnQobGFzdFBv
c2l0aW9uVG9TZWxlY3QpOwogfQogCi12b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1v
dmVFbmRCUklmTmVlZGVkKE5vZGUqIGVuZEJSKQorYm9vbCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6c2hvdWxkUmVtb3ZlRW5kQlIoTm9kZSogZW5kQlIpCiB7CiAgICAgaWYgKCFlbmRCUiB8fCAh
ZW5kQlItPmluRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIAogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zKFBvc2l0aW9uKGVu
ZEJSLCAwKSk7CiAgICAgCi0gICAgaWYgKC8vIFRoZSBiciBpcyBjb2xsYXBzZWQgYXdheSBhbmQg
c28gaXMgdW5uZWNlc3NhcnkuCisgICAgcmV0dXJuCisgICAgICAgIC8vIFRoZSBiciBpcyBjb2xs
YXBzZWQgYXdheSBhbmQgc28gaXMgdW5uZWNlc3NhcnkuCiAgICAgICAgICFkb2N1bWVudCgpLT5p
blN0cmljdE1vZGUoKSAmJiBpc0VuZE9mQmxvY2sodmlzaWJsZVBvcykgJiYgIWlzU3RhcnRPZlBh
cmFncmFwaCh2aXNpYmxlUG9zKSB8fAogICAgICAgICAvLyBBIGJyIHRoYXQgd2FzIG9yaWdpbmFs
bHkgaG9sZGluZyBhIGxpbmUgb3BlbiBzaG91bGQgYmUgZGlzcGxhY2VkIGJ5IGluc2VydGVkIGNv
bnRlbnQuCiAgICAgICAgIC8vIEEgYnIgdGhhdCB3YXMgb3JpZ2luYWxseSBhY3RpbmcgYXMgYSBs
aW5lIGJyZWFrIHNob3VsZCBzdGlsbCBiZSBhY3RpbmcgYXMgYSBsaW5lIGJyZWFrLCBub3QgYXMg
YSBwbGFjZWhvbGRlci4KLSAgICAgICAgaXNTdGFydE9mUGFyYWdyYXBoKHZpc2libGVQb3MpICYm
IGlzRW5kT2ZQYXJhZ3JhcGgodmlzaWJsZVBvcykpCi0gICAgICAgIHJlbW92ZU5vZGVBbmRQcnVu
ZUFuY2VzdG9ycyhlbmRCUik7CisgICAgICAgIGlzU3RhcnRPZlBhcmFncmFwaCh2aXNpYmxlUG9z
KSAmJiBpc0VuZE9mUGFyYWdyYXBoKHZpc2libGVQb3MpOwogfQogCiB2b2lkIFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjpjb21wbGV0ZUhUTUxSZXBsYWNlbWVudChjb25zdCBQb3NpdGlvbiAmbGFz
dFBvc2l0aW9uVG9TZWxlY3QpCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuaAkocmV2aXNpb24gMTU1NjQpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsMjQgKzUyLDIwIEBAIHR5cGVk
ZWYgSGFzaE1hcDxOb2RlKiwgUmVmUHRyPFJlbmRlcmluZ0kKIAogLy8gLS0tIFJlcGxhY2VtZW50
RnJhZ21lbnQgaGVscGVyIGNsYXNzCiAKLWNsYXNzIFJlcGxhY2VtZW50RnJhZ21lbnQKK2NsYXNz
IFJlcGxhY2VtZW50RnJhZ21lbnQgOiBOb25jb3B5YWJsZQogewogcHVibGljOgotICAgIFJlcGxh
Y2VtZW50RnJhZ21lbnQoRG9jdW1lbnQqLCBEb2N1bWVudEZyYWdtZW50KiwgYm9vbCwgRWxlbWVu
dCopOwotICAgIH5SZXBsYWNlbWVudEZyYWdtZW50KCk7CisgICAgUmVwbGFjZW1lbnRGcmFnbWVu
dChEb2N1bWVudCosIERvY3VtZW50RnJhZ21lbnQqLCBib29sIG1hdGNoU3R5bGUsIGNvbnN0IFNl
bGVjdGlvbiYpOwogCi0gICAgTm9kZSAqZmlyc3RDaGlsZCgpIGNvbnN0OwotICAgIE5vZGUgKmxh
c3RDaGlsZCgpIGNvbnN0OworICAgIE5vZGUqIGZpcnN0Q2hpbGQoKSBjb25zdDsKKyAgICBOb2Rl
KiBsYXN0Q2hpbGQoKSBjb25zdDsKIAotICAgIE5vZGUgKm1lcmdlU3RhcnROb2RlKCkgY29uc3Q7
CisgICAgTm9kZSogbWVyZ2VTdGFydE5vZGUoKSBjb25zdDsKIAogICAgIGNvbnN0IFJlbmRlcmlu
Z0luZm9NYXAmIHJlbmRlcmluZ0luZm8oKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0luZm87
IH0KICAgICBjb25zdCBOb2RlVmVjdG9yJiBub2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZXM7
IH0KIAotICAgIEVGcmFnbWVudFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQot
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBFbXB0eUZyYWdtZW50
OyB9Ci0gICAgYm9vbCBpc1NpbmdsZVRleHROb2RlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09
IFNpbmdsZVRleHROb2RlRnJhZ21lbnQ7IH0KLSAgICBib29sIGlzVHJlZUZyYWdtZW50KCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IFRyZWVGcmFnbWVudDsgfQorICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0OwogCiAgICAgYm9vbCBoYXNNb3JlVGhhbk9uZUJsb2NrKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNNb3JlVGhhbk9uZUJsb2NrOyB9CiAgICAgYm9vbCBoYXNJbnRlcmNoYW5nZU5ld2xpbmVB
dFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNJbnRlcmNoYW5nZU5ld2xpbmVBdFN0YXJ0OyB9
CkBAIC03OSwxNSArNzUsMTEgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcmVtb3ZlTm9kZShQ
YXNzUmVmUHRyPE5vZGU+KTsKIAotcHJpdmF0ZToKLSAgICAvLyBubyBjb3B5IGNvbnN0cnVjdGlv
biBvciBhc3NpZ25tZW50Ci0gICAgUmVwbGFjZW1lbnRGcmFnbWVudChjb25zdCBSZXBsYWNlbWVu
dEZyYWdtZW50ICYpOwotICAgIFJlcGxhY2VtZW50RnJhZ21lbnQgJm9wZXJhdG9yPShjb25zdCBS
ZXBsYWNlbWVudEZyYWdtZW50ICYpOwotICAgIAotICAgIHN0YXRpYyBib29sIGlzSW50ZXJjaGFu
Z2VOZXdsaW5lTm9kZShjb25zdCBOb2RlICopOwotICAgIHN0YXRpYyBib29sIGlzSW50ZXJjaGFu
Z2VDb252ZXJ0ZWRTcGFjZVNwYW4oY29uc3QgTm9kZSAqKTsKK3ByaXZhdGU6ICAgIAorICAgIHN0
YXRpYyBib29sIGlzSW50ZXJjaGFuZ2VOZXdsaW5lTm9kZShjb25zdCBOb2RlKik7CisgICAgc3Rh
dGljIGJvb2wgaXNJbnRlcmNoYW5nZUNvbnZlcnRlZFNwYWNlU3Bhbihjb25zdCBOb2RlKik7CiAg
ICAgCi0gICAgUGFzc1JlZlB0cjxOb2RlPiBpbnNlcnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmco
KTsKKyAgICBQYXNzUmVmUHRyPE5vZGU+IGluc2VydEZyYWdtZW50Rm9yVGVzdFJlbmRlcmluZyhO
b2RlKiBjb250ZXh0KTsKICAgICB2b2lkIHNhdmVSZW5kZXJpbmdJbmZvKE5vZGUqKTsKICAgICB2
b2lkIGNvbXB1dGVTdHlsZXNVc2luZ1Rlc3RSZW5kZXJpbmcoTm9kZSopOwogICAgIHZvaWQgcmVt
b3ZlVW5yZW5kZXJlZE5vZGVzKE5vZGUqKTsKQEAgLTk1LDExICs4NywxMCBAQCBwcml2YXRlOgog
ICAgIGludCByZW5kZXJlZEJsb2NrcyhOb2RlKik7CiAgICAgdm9pZCByZW1vdmVTdHlsZU5vZGVz
KCk7CiAKLSAgICBOb2RlICplbmNsb3NpbmdCbG9jayhOb2RlICopIGNvbnN0OwotICAgIHZvaWQg
cmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbihOb2RlICopOwotICAgIHZvaWQgaW5zZXJ0Tm9k
ZUJlZm9yZShOb2RlICpub2RlLCBOb2RlICpyZWZOb2RlKTsKKyAgICBOb2RlKiBlbmNsb3NpbmdC
bG9jayhOb2RlKikgY29uc3Q7CisgICAgdm9pZCByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVu
KE5vZGUqKTsKKyAgICB2b2lkIGluc2VydE5vZGVCZWZvcmUoTm9kZSogbm9kZSwgTm9kZSogcmVm
Tm9kZSk7CiAKLSAgICBFRnJhZ21lbnRUeXBlIG1fdHlwZTsKICAgICBSZWZQdHI8RG9jdW1lbnQ+
IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IG1fZnJhZ21lbnQ7CiAg
ICAgUmVuZGVyaW5nSW5mb01hcCBtX3JlbmRlcmluZ0luZm87CkBAIC0xMjgsNyArMTE5LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlTm9kZXNJbnNlcnRlZChOb2RlICopOwogICAgIHZv
aWQgZml4dXBOb2RlU3R5bGVzKGNvbnN0IE5vZGVWZWN0b3ImLCBjb25zdCBSZW5kZXJpbmdJbmZv
TWFwJik7Ci0gICAgdm9pZCByZW1vdmVFbmRCUklmTmVlZGVkKE5vZGUqKTsKKyAgICBib29sIHNo
b3VsZFJlbW92ZUVuZEJSKE5vZGUqKTsKICAgICAKICAgICBib29sIHNob3VsZE1lcmdlU3RhcnQo
Y29uc3QgUmVwbGFjZW1lbnRGcmFnbWVudCYsIGNvbnN0IFNlbGVjdGlvbiYpOwogICAgIGJvb2wg
c2hvdWxkTWVyZ2VFbmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCwgYm9vbCk7CkluZGV4
OiBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAkocmV2aXNpb24gMTU1NjQpCisrKyBXZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDEyICsyNDIsMTIgQEAgc3RhdGljIERlcHJlY2F0
ZWRTdHJpbmcgZW5kTWFya3VwKGNvbnN0IAogICAgIHJldHVybiAiIjsKIH0KIAotc3RhdGljIERl
cHJlY2F0ZWRTdHJpbmcgbWFya3VwKGNvbnN0IE5vZGUgKnN0YXJ0Tm9kZSwgYm9vbCBvbmx5SW5j
bHVkZUNoaWxkcmVuLCBib29sIGluY2x1ZGVTaWJsaW5ncywgRGVwcmVjYXRlZFB0ckxpc3Q8Tm9k
ZT4gKm5vZGVzKQorc3RhdGljIERlcHJlY2F0ZWRTdHJpbmcgbWFya3VwKE5vZGUqIHN0YXJ0Tm9k
ZSwgYm9vbCBvbmx5SW5jbHVkZUNoaWxkcmVuLCBib29sIGluY2x1ZGVTaWJsaW5ncywgVmVjdG9y
PE5vZGUqPiAqbm9kZXMpCiB7CiAgICAgLy8gRG9lc24ndCBtYWtlIHNlbnNlIHRvIG9ubHkgaW5j
bHVkZSBjaGlsZHJlbiBhbmQgaW5jbHVkZSBzaWJsaW5ncy4KICAgICBBU1NFUlQoIShvbmx5SW5j
bHVkZUNoaWxkcmVuICYmIGluY2x1ZGVTaWJsaW5ncykpOwogICAgIERlcHJlY2F0ZWRTdHJpbmcg
bWUgPSAiIjsKLSAgICBmb3IgKGNvbnN0IE5vZGUgKmN1cnJlbnQgPSBzdGFydE5vZGU7IGN1cnJl
bnQgIT0gTlVMTDsgY3VycmVudCA9IGluY2x1ZGVTaWJsaW5ncyA/IGN1cnJlbnQtPm5leHRTaWJs
aW5nKCkgOiBOVUxMKSB7CisgICAgZm9yIChOb2RlKiBjdXJyZW50ID0gc3RhcnROb2RlOyBjdXJy
ZW50ICE9IE5VTEw7IGN1cnJlbnQgPSBpbmNsdWRlU2libGluZ3MgPyBjdXJyZW50LT5uZXh0U2li
bGluZygpIDogTlVMTCkgewogICAgICAgICBpZiAoIW9ubHlJbmNsdWRlQ2hpbGRyZW4pIHsKICAg
ICAgICAgICAgIGlmIChub2RlcykKICAgICAgICAgICAgICAgICBub2Rlcy0+YXBwZW5kKGN1cnJl
bnQpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlVVJMcyhOb2RlICpu
b2RlLCBjb24KIAogLy8gRklYTUU6IFNob3VsZG4ndCB3ZSBvbWl0IHN0eWxlIGluZm8gd2hlbiBh
bm5vdGF0ZSA9PSBEb05vdEFubm90YXRlRm9ySW50ZXJjaGFuZ2U/IAogLy8gRklYTUU6IEF0IGxl
YXN0LCBhbm5vdGF0aW9uIGFuZCBzdHlsZSBpbmZvIHNob3VsZCBwcm9iYWJseSBub3QgYmUgaW5j
bHVkZWQgaW4gcmFuZ2UubWFya3VwU3RyaW5nKCkKLURlcHJlY2F0ZWRTdHJpbmcgY3JlYXRlTWFy
a3VwKGNvbnN0IFJhbmdlICpyYW5nZSwgRGVwcmVjYXRlZFB0ckxpc3Q8Tm9kZT4gKm5vZGVzLCBF
QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBhbm5vdGF0ZSkKK0RlcHJlY2F0ZWRTdHJpbmcgY3JlYXRl
TWFya3VwKGNvbnN0IFJhbmdlICpyYW5nZSwgVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBbm5vdGF0
ZUZvckludGVyY2hhbmdlIGFubm90YXRlKQogewogICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UtPmlz
RGV0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWRTdHJpbmcoKTsKQEAgLTMxMCw3
ICszMTAsNyBAQCBEZXByZWNhdGVkU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nCiAgICAg
RGVwcmVjYXRlZFN0cmluZ0xpc3QgbWFya3VwczsKICAgICBOb2RlICpwYXN0RW5kID0gcmFuZ2Ut
PnBhc3RFbmROb2RlKCk7CiAgICAgTm9kZSAqbGFzdENsb3NlZCA9IDA7Ci0gICAgRGVwcmVjYXRl
ZFB0ckxpc3Q8Tm9kZT4gYW5jZXN0b3JzVG9DbG9zZTsKKyAgICBWZWN0b3I8Tm9kZSo+IGFuY2Vz
dG9yc1RvQ2xvc2U7CiAKICAgICAvLyBjYWxjdWxhdGUgdGhlICJkZWZhdWx0IHN0eWxlIiBmb3Ig
dGhpcyBtYXJrdXAKICAgICBQb3NpdGlvbiBwb3MoZG9jLT5kb2N1bWVudEVsZW1lbnQoKSwgMCk7
CkBAIC0zNzAsMTQgKzM3MCwxNSBAQCBEZXByZWNhdGVkU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25z
dCBSYW5nCiAgICAgICAgICAgICBpZiAobi0+bmV4dFNpYmxpbmcoKSA9PSAwIHx8IG5leHQgPT0g
cGFzdEVuZCkgewogICAgICAgICAgICAgICAgIGlmICghYW5jZXN0b3JzVG9DbG9zZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvc2UgdXAgdGhlIGFuY2VzdG9ycy4KLSAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKE5vZGUgKmFuY2VzdG9yID0gYW5jZXN0b3JzVG9DbG9z
ZS5sYXN0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAg
ICAgICAgTm9kZSAqYW5jZXN0b3IgPSBhbmNlc3RvcnNUb0Nsb3NlLmxhc3QoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChuZXh0ICE9IHBhc3RFbmQgJiYgbmV4dC0+aXNBbmNlc3Rvcihh
bmNlc3RvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBOb3QgYXQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UsIGNsb3NlIGFuY2Vz
dG9ycyB1cCB0byBzaWJsaW5nIG9mIG5leHQgbm9kZS4KICAgICAgICAgICAgICAgICAgICAgICAg
IG1hcmt1cHMuYXBwZW5kKGVuZE1hcmt1cChhbmNlc3RvcikpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgbGFzdENsb3NlZCA9IGFuY2VzdG9yOwogICAgICAgICAgICAgICAgICAgICAgICAgYW5j
ZXN0b3JzVG9DbG9zZS5yZW1vdmVMYXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfSB3aGlsZSAoIWFuY2VzdG9yc1RvQ2xvc2UuaXNFbXB0eSgpKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCAhPSBw
YXN0RW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlICpuZXh0UGFyZW50ID0gbmV4
dC0+cGFyZW50Tm9kZSgpOwpAQCAtNDc0LDE2ICs0NzUsMTggQEAgUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBjcmVhdGVGcmFnbQogICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiB9
CiAKLURlcHJlY2F0ZWRTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUgKm5vZGUsIEVDaGls
ZHJlbk9ubHkgaW5jbHVkZUNoaWxkcmVuLAotICAgIERlcHJlY2F0ZWRQdHJMaXN0PE5vZGU+ICpu
b2RlcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgYW5ub3RhdGUpCitEZXByZWNhdGVkU3RyaW5n
IGNyZWF0ZU1hcmt1cChjb25zdCBOb2RlKiBub2RlLCBFQ2hpbGRyZW5Pbmx5IGluY2x1ZGVDaGls
ZHJlbiwKKyAgICBWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ug
YW5ub3RhdGUpCiB7CiAgICAgQVNTRVJUKGFubm90YXRlID09IERvTm90QW5ub3RhdGVGb3JJbnRl
cmNoYW5nZSk7IC8vIGFubm90YXRpb24gbm90IHlldCBpbXBsZW1lbnRlZCBmb3IgdGhpcyBjb2Rl
IHBhdGgKICAgICBub2RlLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKLSAgICByZXR1cm4gbWFya3VwKG5vZGUsIGluY2x1ZGVDaGlsZHJlbiwgZmFs
c2UsIG5vZGVzKTsKKyAgICByZXR1cm4gbWFya3VwKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpLCBp
bmNsdWRlQ2hpbGRyZW4sIGZhbHNlLCBub2Rlcyk7CiB9CiAKLXN0YXRpYyB2b2lkIGNyZWF0ZVBh
cmFncmFwaENvbnRlbnRzRnJvbVN0cmluZyhEb2N1bWVudCAqZG9jdW1lbnQsIEVsZW1lbnQgKnBh
cmFncmFwaCwgY29uc3QgRGVwcmVjYXRlZFN0cmluZyAmc3RyaW5nKQorc3RhdGljIHZvaWQgY3Jl
YXRlUGFyYWdyYXBoQ29udGVudHNGcm9tU3RyaW5nKEVsZW1lbnQqIHBhcmFncmFwaCwgY29uc3Qg
RGVwcmVjYXRlZFN0cmluZyYgc3RyaW5nKQogeworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHBh
cmFncmFwaC0+ZG9jdW1lbnQoKTsKKwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlm
IChzdHJpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAgIHBhcmFncmFwaC0+YXBwZW5kQ2hpbGQoY3Jl
YXRlQmxvY2tQbGFjZWhvbGRlckVsZW1lbnQoZG9jdW1lbnQpLCBlYyk7CkBAIC01MDEsNyArNTA0
LDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlUGFyYWdyYXBoQ29udGVudHNGcm9tUwogCiAgICAgICAg
IC8vIGFwcGVuZCB0aGUgbm9uLXRhYiB0ZXh0dWFsIHBhcnQKICAgICAgICAgaWYgKCFzLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgaWYgKHRhYlRleHQgIT0gIiIpIHsKKyAgICAgICAgICAgIGlm
ICghdGFiVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBwYXJhZ3JhcGgtPmFwcGVu
ZENoaWxkKGNyZWF0ZVRhYlNwYW5FbGVtZW50KGRvY3VtZW50LCB0YWJUZXh0KSwgZWMpOwogICAg
ICAgICAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKICAgICAgICAgICAgICAgICB0YWJUZXh0ID0g
IiI7CkBAIC01MTQsNTIgKzUxNyw3NiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVQYXJhZ3JhcGhDb250
ZW50c0Zyb21TCiAKICAgICAgICAgLy8gdGhlcmUgaXMgYSB0YWIgYWZ0ZXIgZXZlcnkgZW50cnks
IGV4Y2VwdCB0aGUgbGFzdCBlbnRyeQogICAgICAgICAvLyAoaWYgdGhlIGxhc3QgY2hhcmFjdGVy
IGlzIGEgdGFiLCB0aGUgbGlzdCBnZXRzIGFuIGV4dHJhIGVtcHR5IGVudHJ5KQotICAgICAgICBp
ZiAoIXRhYkxpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghdGFiTGlzdC5pc0VtcHR5KCkp
CiAgICAgICAgICAgICB0YWJUZXh0ICs9ICdcdCc7Ci0gICAgICAgIH0gZWxzZSBpZiAodGFiVGV4
dCAhPSAiIikgeworICAgICAgICBlbHNlIGlmICghdGFiVGV4dC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIHBhcmFncmFwaC0+YXBwZW5kQ2hpbGQoY3JlYXRlVGFiU3BhbkVsZW1lbnQoZG9jdW1l
bnQsIHRhYlRleHQpLCBlYyk7CiAgICAgICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CiAgICAgICAg
IH0KICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChEb2N1bWVudCAqZG9jdW1lbnQsIGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcgJnRl
eHQpCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQo
UmFuZ2UqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBpZiAoIWRvY3VtZW50
KQorICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBOb2RlKiBzdHls
ZU5vZGUgPSBjb250ZXh0LT5zdGFydE5vZGUoKTsKKyAgICBpZiAoIXN0eWxlTm9kZSkgeworICAg
ICAgICBzdHlsZU5vZGUgPSBjb250ZXh0LT5zdGFydFBvc2l0aW9uKCkubm9kZSgpOworICAgICAg
ICBpZiAoIXN0eWxlTm9kZSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IHN0eWxlTm9kZS0+ZG9jdW1lbnQoKTsKICAgICBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCgpOwogICAgIAotICAgIGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgRGVwcmVjYXRl
ZFN0cmluZyBzdHJpbmcgPSB0ZXh0OworICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKIAotICAgICAgICAvLyBCcmVhayBzdHJpbmcgaW50
byBwYXJhZ3JhcGhzLiBFeHRyYSBsaW5lIGJyZWFrcyB0dXJuIGludG8gZW1wdHkgcGFyYWdyYXBo
cy4KLSAgICAgICAgc3RyaW5nLnJlcGxhY2UoIlxyXG4iLCAiXG4iKTsKLSAgICAgICAgc3RyaW5n
LnJlcGxhY2UoJ1xyJywgJ1xuJyk7Ci0gICAgICAgIERlcHJlY2F0ZWRTdHJpbmdMaXN0IGxpc3Qg
PSBEZXByZWNhdGVkU3RyaW5nTGlzdDo6c3BsaXQoJ1xuJywgc3RyaW5nLCB0cnVlKTsgLy8gdHJ1
ZSBnZXRzIHVzIGVtcHR5IHN0cmluZ3MgaW4gdGhlIGxpc3QKLSAgICAgICAgd2hpbGUgKCFsaXN0
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBzID0gbGlzdC5maXJz
dCgpOwotICAgICAgICAgICAgbGlzdC5wb3BfZnJvbnQoKTsKKyAgICBEZXByZWNhdGVkU3RyaW5n
IHN0cmluZyA9IHRleHQuZGVwcmVjYXRlZFN0cmluZygpOworICAgIHN0cmluZy5yZXBsYWNlKCJc
clxuIiwgIlxuIik7CisgICAgc3RyaW5nLnJlcGxhY2UoJ1xyJywgJ1xuJyk7CiAKLSAgICAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdHlsZU5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYg
KHJlbmRlcmVyICYmIHJlbmRlcmVyLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgeworICAg
ICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKHN0cmlu
ZyksIGVjKTsKKyAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAgICBpZiAoc3RyaW5nLmVu
ZHNXaXRoKCJcbiIpKSB7CiAgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudDsKLSAg
ICAgICAgICAgIGlmIChzLmlzRW1wdHkoKSAmJiBsaXN0LmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgICAgIC8vIEZvciBsYXN0IGxpbmUsIHVzZSB0aGUgIm1hZ2ljIEJSIiByYXRoZXIgdGhhbiBh
IFAuCi0gICAgICAgICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50TlMo
eGh0bWxOYW1lc3BhY2VVUkksICJiciIsIGVjKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoZWMg
PT0gMCk7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwg
QXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpOyAgICAgICAgICAgIAotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBlbGVtZW50ID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1l
bnQoZG9jdW1lbnQpOwotICAgICAgICAgICAgICAgIGNyZWF0ZVBhcmFncmFwaENvbnRlbnRzRnJv
bVN0cmluZyhkb2N1bWVudCwgZWxlbWVudC5nZXQoKSwgcyk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5nZXQoKSwgZWMpOworICAgICAg
ICAgICAgZWxlbWVudCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50TlMoeGh0bWxOYW1lc3BhY2VV
UkksICJiciIsIGVjKTsKKyAgICAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAgICAg
IGVsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5l
KTsgICAgICAgICAgICAKKyAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50
LnJlbGVhc2UoKSwgZWMpOworICAgICAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CisgICAgfQorCisgICAgLy8gQnJl
YWsgc3RyaW5nIGludG8gcGFyYWdyYXBocy4gRXh0cmEgbGluZSBicmVha3MgdHVybiBpbnRvIGVt
cHR5IHBhcmFncmFwaHMuCisgICAgRGVwcmVjYXRlZFN0cmluZ0xpc3QgbGlzdCA9IERlcHJlY2F0
ZWRTdHJpbmdMaXN0OjpzcGxpdCgnXG4nLCBzdHJpbmcsIHRydWUpOyAvLyB0cnVlIGdldHMgdXMg
ZW1wdHkgc3RyaW5ncyBpbiB0aGUgbGlzdAorICAgIHdoaWxlICghbGlzdC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBzID0gbGlzdC5maXJzdCgpOworICAgICAgICBsaXN0
LnBvcF9mcm9udCgpOworCisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50OworICAgICAg
ICBpZiAocy5pc0VtcHR5KCkgJiYgbGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIEZv
ciBsYXN0IGxpbmUsIHVzZSB0aGUgIm1hZ2ljIEJSIiByYXRoZXIgdGhhbiBhIFAuCisgICAgICAg
ICAgICBlbGVtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVS
SSwgImJyIiwgZWMpOwogICAgICAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAgICAgICAg
ZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUp
OyAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZWxlbWVudCA9IGNy
ZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KTsKKyAgICAgICAgICAgIGNyZWF0
ZVBhcmFncmFwaENvbnRlbnRzRnJvbVN0cmluZyhlbGVtZW50LmdldCgpLCBzKTsKICAgICAgICAg
fQorICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5yZWxlYXNlKCksIGVjKTsK
KyAgICAgICAgQVNTRVJUKGVjID09IDApOwogICAgIH0KICAgICByZXR1cm4gZnJhZ21lbnQucmVs
ZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50
RnJvbU5vZGVMaXN0KERvY3VtZW50ICpkb2N1bWVudCwgY29uc3QgRGVwcmVjYXRlZFB0ckxpc3Q8
Tm9kZT4gJm5vZGVMaXN0KQorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZyb21Ob2RlcyhEb2N1bWVudCAqZG9jdW1lbnQsIGNvbnN0IFZlY3RvcjxOb2RlKj4mIG5v
ZGVzKQogewogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNTY3LDkg
KzU5NCwxMCBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtCiAgICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZURvY3Vt
ZW50RnJhZ21lbnQoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGZvciAoRGVw
cmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxOb2RlPiBpKG5vZGVMaXN0KTsgaS5jdXJyZW50KCk7ICsr
aSkgeworICAgIHNpemVfdCBzaXplID0gbm9kZXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0g
Y3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoZG9jdW1lbnQpOwotICAgICAgICBlbGVtZW50
LT5hcHBlbmRDaGlsZChpLmN1cnJlbnQoKSwgZWMpOworICAgICAgICBlbGVtZW50LT5hcHBlbmRD
aGlsZChub2Rlc1tpXSwgZWMpOwogICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CiAgICAgICAgIGZy
YWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgZWMpOwogICAgICAgICBBU1NF
UlQoZWMgPT0gMCk7CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCShyZXZpc2lvbiAxNTU2NCkKKysrIFdlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiSFRNTEludGVyY2hhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsMTggKzM4
LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSYW5nZTsKICAgICBjbGFzcyBT
dHJpbmc7CiAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgRGVwcmVjYXRlZFB0ckxpc3Q7
Ci0KICAgICBlbnVtIEVDaGlsZHJlbk9ubHkgeyBJbmNsdWRlTm9kZSwgQ2hpbGRyZW5Pbmx5IH07
CiAKLSAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRl
eHQoRG9jdW1lbnQqLCBjb25zdCBEZXByZWNhdGVkU3RyaW5nICZ0ZXh0KTsKLSAgICBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCos
IGNvbnN0IFN0cmluZyAmbWFya3VwLCBjb25zdCBTdHJpbmcgJmJhc2VVUkwpOwotICAgIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTm9kZUxpc3QoRG9jdW1l
bnQqLCBjb25zdCBEZXByZWNhdGVkUHRyTGlzdDxOb2RlPiAmbm9kZUxpc3QpOwotCi0gICAgRGVw
cmVjYXRlZFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UgKnJhbmdlLAotICAgICAgICBE
ZXByZWNhdGVkUHRyTGlzdDxOb2RlPiAqbm9kZXMgPSAwLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5n
ZSA9IERvTm90QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSk7Ci0gICAgRGVwcmVjYXRlZFN0cmluZyBj
cmVhdGVNYXJrdXAoY29uc3QgTm9kZSAqbm9kZSwgRUNoaWxkcmVuT25seSA9IEluY2x1ZGVOb2Rl
LAotICAgICAgICBEZXByZWNhdGVkUHRyTGlzdDxOb2RlPiAqbm9kZXMgPSAwLCBFQW5ub3RhdGVG
b3JJbnRlcmNoYW5nZSA9IERvTm90QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSk7CisgICAgUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KFJhbmdlKiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpOworICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBtYXJr
dXAsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCk7CisgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21Ob2RlcyhEb2N1bWVudCosIGNvbnN0IFZlY3RvcjxOb2Rl
Kj4mKTsKKworICAgIERlcHJlY2F0ZWRTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiwK
KyAgICAgICAgVmVjdG9yPE5vZGUqPiogPSAwLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSA9IERv
Tm90QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSk7CisgICAgRGVwcmVjYXRlZFN0cmluZyBjcmVhdGVN
YXJrdXAoY29uc3QgTm9kZSosIEVDaGlsZHJlbk9ubHkgPSBJbmNsdWRlTm9kZSwKKyAgICAgICAg
VmVjdG9yPE5vZGUqPiogPSAwLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSA9IERvTm90QW5ub3Rh
dGVGb3JJbnRlcmNoYW5nZSk7CiAKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNTU2NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwMCw2ICszMDAsOSBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRJbm5lckhUTUwoY29uc3Qg
U3RyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogQWRkIHNwZWNpYWwg
Y2FzZSBmb3Igd2hlbiB3ZSBoYWQgb25lIHRleHQgY2hpbGQgYW5kIHdlIGp1c3Qgd2FudCB0byBz
ZXQgaXRzIHRleHQ/CisgICAgLy8gRklYTUU6IEFkZCBzcGVjaWFsIGNhc2UgZm9yIGNhc2VzIHdo
ZXJlIHdlIGNhbiB1c2UgcmVwbGFjZUNoaWxkPworCiAgICAgcmVtb3ZlQ2hpbGRyZW4oKTsKICAg
ICBhcHBlbmRDaGlsZChmcmFnbWVudC5yZWxlYXNlKCksIGVjKTsKIH0KQEAgLTMxOSw4ICszMjIs
OCBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRPdXRlckhUTUwoY29uc3QgU3RyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogV2h5IGRvZXNuJ3QgdGhpcyBoYXZlIGNvZGUg
dG8gbWVyZ2UgbmVpZ2hib3JpbmcgdGV4dCBub2RlcyB0aGUKLSAgICAvLyB3YXkgc2V0T3V0ZXJU
ZXh0IGRvZXM/CisgICAgLy8gRklYTUU6IEFkZCBzcGVjaWFsIGNhc2UgZm9yIHdoZW4gd2UgaGFk
IG9uZSB0ZXh0IGNoaWxkIGFuZCB3ZSBqdXN0IHdhbnQgdG8gc2V0IGl0cyB0ZXh0PworICAgIC8v
IEZJWE1FOiBXaHkgZG9lc24ndCB0aGlzIGhhdmUgY29kZSB0byBtZXJnZSBuZWlnaGJvcmluZyB0
ZXh0IG5vZGVzIHRoZSB3YXkgc2V0T3V0ZXJUZXh0IGRvZXM/CiAgICAgcGFyZW50LT5yZXBsYWNl
Q2hpbGQoZnJhZ21lbnQucmVsZWFzZSgpLCB0aGlzLCBlYyk7CiB9CiAKQEAgLTMzOSwzNiArMzQy
LDYwIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnNldElubmVyVGV4dChjb25zdCBTdHIKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgdGFrZSB3aGl0ZXNw
YWNlIGNvbGxhcHNpbmcgaW50byBhY2NvdW50IGF0IGFsbC4KKyAgICAvLyBGSVhNRTogQWRkIHNw
ZWNpYWwgY2FzZSBmb3Igd2hlbiB3ZSBoYWQgb25lIHRleHQgY2hpbGQgYW5kIHdlIGp1c3Qgd2Fu
dCB0byBzZXQgaXRzIHRleHQ/CisgICAgLy8gRklYTUU6IEFkZCBzcGVjaWFsIGNhc2UgZm9yIGNh
c2VzIHdoZXJlIHdlIGNhbiB1c2UgcmVwbGFjZUNoaWxkPworCiAgICAgcmVtb3ZlQ2hpbGRyZW4o
KTsKIAorICAgIGlmICghdGV4dC5jb250YWlucygnXG4nKSAmJiAhdGV4dC5jb250YWlucygnXHIn
KSkgeworICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGFwcGVuZENoaWxkKG5ldyBUZXh0KGRvY3VtZW50KCksIHRleHQpLCBlYyk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBiZSBhYmxl
IHRvIGRldGVjdCBwcmVzZXJ2ZU5ld2xpbmUgc3R5bGUgZXZlbiB3aGVuIHRoZXJlJ3Mgbm8gcmVu
ZGVyZXI/CisgICAgLy8gRklYTUU6IENhbiB0aGUgcmVuZGVyZXIgYmUgb3V0IG9mIGRhdGUgaGVy
ZT8gRG8gd2UgbmVlZCB0byBjYWxsIHVwZGF0ZVJlbmRlcmluZz8KKyAgICAvLyBGb3IgZXhhbXBs
ZSwgZm9yIHRoZSBjb250ZW50cyBvZiB0ZXh0YXJlYSBlbGVtZW50cyB0aGF0IGFyZSBkaXNwbGF5
Om5vbmU/CisgICAgUmVuZGVyT2JqZWN0KiByID0gcmVuZGVyZXIoKTsKKyAgICBpZiAociAmJiBy
LT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgeworICAgICAgICBpZiAoIXRleHQuY29udGFp
bnMoJ1xyJykpIHsKKyAgICAgICAgICAgIGFwcGVuZENoaWxkKG5ldyBUZXh0KGRvY3VtZW50KCks
IHRleHQpLCBlYyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8g
RklYTUU6IFN0aWNrIHdpdGggU3RyaW5nIG9uY2UgaXQgaGFzIGEgcmVwbGFjZSB0aGF0IGNhbiBk
byB0aGlzLgorICAgICAgICBEZXByZWNhdGVkU3RyaW5nIHRleHRXaXRoQ29uc2lzdGVudExpbmVC
cmVha3MgPSB0ZXh0LmRlcHJlY2F0ZWRTdHJpbmcoKTsKKyAgICAgICAgdGV4dFdpdGhDb25zaXN0
ZW50TGluZUJyZWFrcy5yZXBsYWNlKCJcclxuIiwgIlxuIik7CisgICAgICAgIHRleHRXaXRoQ29u
c2lzdGVudExpbmVCcmVha3MucmVwbGFjZSgnXHInLCAnXG4nKTsKKyAgICAgICAgYXBwZW5kQ2hp
bGQobmV3IFRleHQoZG9jdW1lbnQoKSwgdGV4dFdpdGhDb25zaXN0ZW50TGluZUJyZWFrcyksIGVj
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8vIEFkZCB0ZXh0IG5vZGVzIGFuZCA8
YnI+IGVsZW1lbnRzLgorICAgIGVjID0gMDsKKyAgICBpbnQgbGluZVN0YXJ0ID0gMDsKKyAgICBV
Q2hhciBwcmV2ID0gMDsKICAgICBpbnQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKLSAgICBpZiAo
IXRleHQuY29udGFpbnMoJ1xuJykgJiYgIXRleHQuY29udGFpbnMoJ1xyJykgJiYgbGVuZ3RoKQot
ICAgICAgICBhcHBlbmRDaGlsZChuZXcgVGV4dChkb2N1bWVudCgpLCB0ZXh0KSwgZWMpOwotICAg
IGVsc2UgewotICAgICAgICBlYyA9IDA7Ci0gICAgICAgIGludCBsaW5lU3RhcnQgPSAwOwotICAg
ICAgICBVQ2hhciBwcmV2ID0gMDsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgVUNoYXIgYyA9IHRleHRbaV07Ci0gICAgICAgICAgICBpZiAo
YyA9PSAnXG4nIHx8IGMgPT0gJ1xyJykgewotICAgICAgICAgICAgICAgIGlmIChpID4gbGluZVN0
YXJ0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkKG5ldyBUZXh0KGRvY3VtZW50
KCksIHRleHQuc3Vic3RyaW5nKGxpbmVTdGFydCwgaSAtIGxpbmVTdGFydCkpLCBlYyk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChlYykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCEoYyA9PSAnXG4nICYmIGkg
IT0gMCAmJiBwcmV2ID09ICdccicpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxk
KG5ldyBIVE1MQlJFbGVtZW50KGRvY3VtZW50KCkpLCBlYyk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChlYykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gaSArIDE7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBVQ2hhciBjID0gdGV4dFtpXTsKKyAgICAg
ICAgaWYgKGMgPT0gJ1xuJyB8fCBjID09ICdccicpIHsKKyAgICAgICAgICAgIGlmIChpID4gbGlu
ZVN0YXJ0KSB7CisgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQobmV3IFRleHQoZG9jdW1lbnQo
KSwgdGV4dC5zdWJzdHJpbmcobGluZVN0YXJ0LCBpIC0gbGluZVN0YXJ0KSksIGVjKTsKKyAgICAg
ICAgICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICghKGMgPT0gJ1xuJyAmJiBpICE9IDAgJiYgcHJldiA9PSAn
XHInKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkKG5ldyBIVE1MQlJFbGVtZW50KGRv
Y3VtZW50KCkpLCBlYyk7CisgICAgICAgICAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcmV2ID0gYzsKKyAgICAg
ICAgICAgIGxpbmVTdGFydCA9IGkgKyAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChsZW5ndGgg
PiBsaW5lU3RhcnQpCi0gICAgICAgICAgICBhcHBlbmRDaGlsZChuZXcgVGV4dChkb2N1bWVudCgp
LCB0ZXh0LnN1YnN0cmluZyhsaW5lU3RhcnQsIGxlbmd0aCAtIGxpbmVTdGFydCkpLCBlYyk7Cisg
ICAgICAgIHByZXYgPSBjOwogICAgIH0KKyAgICBpZiAobGVuZ3RoID4gbGluZVN0YXJ0KQorICAg
ICAgICBhcHBlbmRDaGlsZChuZXcgVGV4dChkb2N1bWVudCgpLCB0ZXh0LnN1YnN0cmluZyhsaW5l
U3RhcnQsIGxlbmd0aCAtIGxpbmVTdGFydCkpLCBlYyk7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnQ6
OnNldE91dGVyVGV4dChjb25zdCBTdHJpbmcgJnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTU1NjQpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
OSwxMyArMjU5LDEzIEBAIFN0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWx1ZSgpIGNvbnMK
IAogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVl
KQogewotICAgIERlcHJlY2F0ZWRTdHJpbmcgc3RyaW5nID0gdmFsdWUuZGVwcmVjYXRlZFN0cmlu
ZygpOwogICAgIC8vIFdlYkNvcmVUZXh0QXJlYSBub3JtYWxpemVzIGxpbmUgZW5kaW5ncyBhZGRl
ZCBieSB0aGUgdXNlciB2aWEgdGhlIGtleWJvYXJkIG9yIHBhc3RpbmcuCiAgICAgLy8gV2UgbXVz
dCBub3JtYWxpemUgbGluZSBlbmRpbmdzIGNvbWluZyBmcm9tIEpTLgotICAgIHN0cmluZy5yZXBs
YWNlKCJcclxuIiwgIlxuIik7Ci0gICAgc3RyaW5nLnJlcGxhY2UoIlxyIiwgIlxuIik7CisgICAg
RGVwcmVjYXRlZFN0cmluZyB2YWx1ZVdpdGhOb3JtYWxpemVkTGluZUVuZGluZ3MgPSB2YWx1ZS5k
ZXByZWNhdGVkU3RyaW5nKCk7CisgICAgdmFsdWVXaXRoTm9ybWFsaXplZExpbmVFbmRpbmdzLnJl
cGxhY2UoIlxyXG4iLCAiXG4iKTsKKyAgICB2YWx1ZVdpdGhOb3JtYWxpemVkTGluZUVuZGluZ3Mu
cmVwbGFjZSgiXHIiLCAiXG4iKTsKICAgICAKLSAgICBtX3ZhbHVlID0gU3RyaW5nKHN0cmluZyk7
CisgICAgbV92YWx1ZSA9IHZhbHVlV2l0aE5vcm1hbGl6ZWRMaW5lRW5kaW5nczsKICAgICBzZXRW
YWx1ZU1hdGNoZXNSZW5kZXJlcigpOwogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5k
ZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwpAQCAtMjgzLDEzICsyODMsMTQgQEAgU3RyaW5n
IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRlZmF1bHRWYWx1ZQogewogICAgIFN0cmluZyB2YWwgPSAi
IjsKIAotICAgIC8vIHRoZXJlIG1heSBiZSBjb21tZW50cyAtIGp1c3QgZ3JhYiB0aGUgdGV4dCBu
b2RlcworICAgIC8vIFNpbmNlIHRoZXJlIG1heSBiZSBjb21tZW50cywgaWdub3JlIG5vZGVzIG90
aGVyIHRoYW4gdGV4dCBub2Rlcy4KICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47
IG4gPSBuLT5uZXh0U2libGluZygpKQogICAgICAgICBpZiAobi0+aXNUZXh0Tm9kZSgpKQogICAg
ICAgICAgICAgdmFsICs9IHN0YXRpY19jYXN0PFRleHQqPihuKS0+ZGF0YSgpOwogCiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBvbmx5IGRyb3AgdGhlIGZpcnN0IGNhcnJpYWdlIHJldHVybiBmb3Ig
dGhlIGRlZmF1bHQKLSAgICAvLyB2YWx1ZSBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBub3QgZGVm
YXVsdFZhbHVlcyBzZXQgZnJvbSBKUy4KKyAgICAvLyB2YWx1ZSBpbiB0aGUgb3JpZ2luYWwgc291
cmNlLCBub3QgZGVmYXVsdFZhbHVlcyBzZXQgZnJvbSBKUy4gVGhpcyBjb2RlCisgICAgLy8gd2ls
bCBkbyBib3RoLgogICAgIGlmICh2YWwubGVuZ3RoKCkgPj0gMiAmJiB2YWxbMF0gPT0gJ1xyJyAm
JiB2YWxbMV0gPT0gJ1xuJykKICAgICAgICAgdmFsLnJlbW92ZSgwLCAyKTsKICAgICBlbHNlIGlm
ICh2YWwubGVuZ3RoKCkgPj0gMSAmJiAodmFsWzBdID09ICdccicgfHwgdmFsWzBdID09ICdcbicp
KQpAQCAtMzAwLDE4ICszMDEsMTUgQEAgU3RyaW5nIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRlZmF1
bHRWYWx1ZQogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShjb25z
dCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSkKIHsKLSAgICAvLyB0aGVyZSBtYXkgYmUgY29tbWVudHMg
LSByZW1vdmUgYWxsIHRoZSB0ZXh0IG5vZGVzIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBvbmUKLSAg
ICBEZXByZWNhdGVkUHRyTGlzdDxOb2RlPiB0b1JlbW92ZTsKLSAgICBOb2RlICpuOwotICAgIGZv
ciAobiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpCisgICAgLy8gVG8g
cHJlc2VydmUgY29tbWVudHMsIHJlbW92ZSBhbGwgdGhlIHRleHQgbm9kZXMsIHRoZW4gYWRkIGEg
c2luZ2xlIG9uZS4KKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gdGV4dE5vZGVzOworICAgIGZv
ciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpCiAgICAg
ICAgIGlmIChuLT5pc1RleHROb2RlKCkpCi0gICAgICAgICAgICB0b1JlbW92ZS5hcHBlbmQobik7
Ci0gICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxOb2RlPiBpdCh0b1JlbW92ZSk7CisgICAg
ICAgICAgICB0ZXh0Tm9kZXMuYXBwZW5kKG4pOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIGZvciAoOyBpdC5jdXJyZW50KCk7ICsraXQpIHsKLSAgICAgICAgUmVmUHRyPE5vZGU+IG4g
PSBpdC5jdXJyZW50KCk7Ci0gICAgICAgIHJlbW92ZUNoaWxkKG4uZ2V0KCksIGVjKTsKLSAgICB9
CisgICAgc2l6ZV90IHNpemUgPSB0ZXh0Tm9kZXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICByZW1vdmVDaGlsZCh0ZXh0Tm9kZXNbaV0uZ2V0
KCksIGVjKTsKICAgICBpbnNlcnRCZWZvcmUoZG9jdW1lbnQoKS0+Y3JlYXRlVGV4dE5vZGUoZGVm
YXVsdFZhbHVlKSwgZmlyc3RDaGlsZCgpLCBlYyk7CiAgICAgc2V0VmFsdWUoZGVmYXVsdFZhbHVl
KTsKIH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvQ2FjaGUuaAkocmV2aXNpb24gMTU1NjQpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNo
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAjZGVmaW5lIENhY2hlX2gKIAog
I2luY2x1ZGUgIkNhY2hlUG9saWN5LmgiCi0jaW5jbHVkZSAiRGVwcmVjYXRlZFB0ckxpc3QuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAK
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCShyZXZpc2lvbiAxNTU2NCkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MzUsNCArNzM1LDI4IEBAIGludCBJbmxpbmVUZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldChpbnQK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQ
b2ludChtX3gsIDApLCAwKSkucmlnaHQoKTsKIH0KIAorYm9vbCBJbmxpbmVUZXh0Qm94Ojpjb250
YWluc0NhcmV0T2Zmc2V0KGludCBvZmZzZXQpIGNvbnN0Cit7CisgICAgLy8gT2Zmc2V0cyBiZWZv
cmUgdGhlIGJveCBhcmUgbmV2ZXIgImluIi4KKyAgICBpZiAob2Zmc2V0IDwgbV9zdGFydCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IHBhc3RFbmQgPSBtX3N0YXJ0ICsgbV9sZW47
CisKKyAgICAvLyBPZmZzZXRzIGluc2lkZSB0aGUgYm94IChub3QgYXQgZWl0aGVyIGVkZ2UpIGFy
ZSBhbHdheXMgImluIi4KKyAgICBpZiAob2Zmc2V0IDwgcGFzdEVuZCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAvLyBPZmZzZXRzIG91dHNpZGUgdGhlIGJveCBhcmUgYWx3YXlzICJvdXQi
LgorICAgIGlmIChvZmZzZXQgPiBwYXN0RW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyBPZmZzZXRzIGF0IHRoZSBlbmQgYXJlICJvdXQiIGZvciBsaW5lIGJyZWFrcyAodGhleSBh
cmUgb24gdGhlIG5leHQgbGluZSkuCisgICAgaWYgKGlzTGluZUJyZWFrKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIE9mZnNldHMgYXQgdGhlIGVuZCBhcmUgImluIiBmb3Igbm9y
bWFsIGJveGVzIChidXQgdGhlIGNhbGxlciBoYXMgdG8gY2hlY2sgYWZmaW5pdHkpLgorICAgIHJl
dHVybiB0cnVlOworfQorCiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCShyZXZp
c2lvbiAxNTU2NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw4IEBAIHB1YmxpYzoKICAgICBpbnQgdGV4dFBvcygpIGNv
bnN0OwogICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbihpbnQgX3gsIGJvb2wgaW5jbHVkZVBhcnRp
YWxHbHlwaHMgPSB0cnVlKSBjb25zdDsKICAgICBpbnQgcG9zaXRpb25Gb3JPZmZzZXQoaW50IG9m
ZnNldCkgY29uc3Q7CisKKyAgICBib29sIGNvbnRhaW5zQ2FyZXRPZmZzZXQoaW50IG9mZnNldCkg
Y29uc3Q7IC8vIGZhbHNlIGZvciBvZmZzZXQgYWZ0ZXIgbGluZSBicmVhawogICAgIAogICAgIGlu
dCBtX3N0YXJ0OwogICAgIHVuc2lnbmVkIHNob3J0IG1fbGVuOwpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAJKHJldmlzaW9uIDE1NTY0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1OCwxNCArMzU4LDkgQEAgc3RhdGljIFJlbmRl
ck9iamVjdCAqbGFzdFJlbmRlcmVyT25QcmV2TAogICAgIHJldHVybiBsYXN0Q2hpbGQtPm9iamVj
dCgpOwogfQogCi1ib29sIFJlbmRlclRleHQ6OmF0TGluZVdyYXAoSW5saW5lVGV4dEJveCAqYm94
LCBpbnQgb2Zmc2V0KQorc3RhdGljIGlubGluZSBib29sIGF0TGluZVdyYXAoSW5saW5lVGV4dEJv
eCogYm94LCBpbnQgb2Zmc2V0KQogewotICAgIGlmIChib3gtPm5leHRUZXh0Qm94KCkgJiYgIWJv
eC0+bmV4dE9uTGluZSgpICYmIG9mZnNldCA9PSBib3gtPm1fc3RhcnQgKyBib3gtPm1fbGVuKSB7
Ci0gICAgICAgIGlmICghc3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkgfHwgIWJveC0+aXNMaW5l
QnJlYWsoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIGJveC0+bmV4dFRleHRCb3goKSAmJiAhYm94LT5uZXh0T25M
aW5lKCkgJiYgb2Zmc2V0ID09IGJveC0+bV9zdGFydCArIGJveC0+bV9sZW47CiB9CiAKIEludFJl
Y3QgUmVuZGVyVGV4dDo6Y2FyZXRSZWN0KGludCBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbml0eSwg
aW50ICpleHRyYVdpZHRoVG9FbmRPZkxpbmUpCkBAIC0zNzYsNyArMzcxLDcgQEAgSW50UmVjdCBS
ZW5kZXJUZXh0OjpjYXJldFJlY3QoaW50IG9mZnNldAogICAgIC8vIEZpbmQgdGhlIHRleHQgYm94
IGZvciB0aGUgZ2l2ZW4gb2Zmc2V0CiAgICAgSW5saW5lVGV4dEJveCAqYm94ID0gMDsKICAgICBm
b3IgKGJveCA9IGZpcnN0VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkg
ewotICAgICAgICBpZiAoKG9mZnNldCA+PSBib3gtPm1fc3RhcnQpICYmIChvZmZzZXQgPD0gYm94
LT5tX3N0YXJ0ICsgYm94LT5tX2xlbikpIHsKKyAgICAgICAgaWYgKGJveC0+Y29udGFpbnNDYXJl
dE9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgICAgICAvLyBDaGVjayBpZiBkb3duc3RyZWFtIGFm
ZmluaXR5IHdvdWxkIG1ha2UgdXMgbW92ZSB0byB0aGUgbmV4dCBsaW5lLgogICAgICAgICAgICAg
aWYgKGF0TGluZVdyYXAoYm94LCBvZmZzZXQpICYmIGFmZmluaXR5ID09IERPV05TVFJFQU0pIHsK
ICAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIG5leHQgdGV4dCBib3gKQEAgLTExMTMsMjEgKzEx
MDgsMTkgQEAgdW5zaWduZWQgUmVuZGVyVGV4dDo6Y2FyZXRNYXhSZW5kZXJlZE9mZgogICAgIHJl
dHVybiBsOwogfQogCi1JbmxpbmVCb3ggKlJlbmRlclRleHQ6OmlubGluZUJveChpbnQgb2Zmc2V0
LCBFQWZmaW5pdHkgYWZmaW5pdHkpCitJbmxpbmVCb3gqIFJlbmRlclRleHQ6OmlubGluZUJveChp
bnQgb2Zmc2V0LCBFQWZmaW5pdHkgYWZmaW5pdHkpCiB7Ci0gICAgZm9yIChJbmxpbmVUZXh0Qm94
ICpib3ggPSBmaXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsK
LSAgICAgICAgaWYgKG9mZnNldCA+PSBib3gtPm1fc3RhcnQgJiYgb2Zmc2V0IDw9IGJveC0+bV9z
dGFydCArIGJveC0+bV9sZW4pIHsKKyAgICBmb3IgKElubGluZVRleHRCb3gqIGJveCA9IGZpcnN0
VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgeworICAgICAgICBpZiAo
Ym94LT5jb250YWluc0NhcmV0T2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgICAgIGlmIChhdExp
bmVXcmFwKGJveCwgb2Zmc2V0KSAmJiBhZmZpbml0eSA9PSBET1dOU1RSRUFNKQogICAgICAgICAg
ICAgICAgIHJldHVybiBib3gtPm5leHRUZXh0Qm94KCk7CiAgICAgICAgICAgICByZXR1cm4gYm94
OwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAob2Zmc2V0IDwgYm94LT5tX3N0YXJ0
KSB7CisgICAgICAgIGlmIChvZmZzZXQgPCBib3gtPm1fc3RhcnQpCiAgICAgICAgICAgICAvLyBU
aGUgb2Zmc2V0IHdlJ3JlIGxvb2tpbmcgZm9yIGlzIGJlZm9yZSB0aGlzIG5vZGUKICAgICAgICAg
ICAgIC8vIHRoaXMgbWVhbnMgdGhlIG9mZnNldCBtdXN0IGJlIGluIGNvbnRlbnQgdGhhdCBpcwog
ICAgICAgICAgICAgLy8gbm90IHJlbmRlcmVkLgogICAgICAgICAgICAgcmV0dXJuIGJveC0+cHJl
dlRleHRCb3goKSA/IGJveC0+cHJldlRleHRCb3goKSA6IGZpcnN0VGV4dEJveCgpOwotICAgICAg
ICB9CiAgICAgfQogICAgIAogICAgIHJldHVybiAwOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
aAkocmV2aXNpb24gMTU1NjQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTE0OSwxMSArMTQ5LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGlu
dCBjYXJldE1heE9mZnNldCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdW5zaWduZWQgY2FyZXRNYXhS
ZW5kZXJlZE9mZnNldCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBpbnQgcHJldmlvdXNPZmZzZXQg
KGludCBjdXJyZW50KSBjb25zdDsKLSAgICB2aXJ0dWFsIGludCBuZXh0T2Zmc2V0IChpbnQgY3Vy
cmVudCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgcHJldmlvdXNPZmZzZXQoaW50IGN1cnJlbnQp
IGNvbnN0OworICAgIHZpcnR1YWwgaW50IG5leHRPZmZzZXQoaW50IGN1cnJlbnQpIGNvbnN0Owog
ICAgIAotICAgIGJvb2wgYXRMaW5lV3JhcChJbmxpbmVUZXh0Qm94ICpib3gsIGludCBvZmZzZXQp
OwotICAgIGJvb2wgY29udGFpbnNSZXZlcnNlZFRleHQoKSB7IHJldHVybiBtX2NvbnRhaW5zUmV2
ZXJzZWRUZXh0OyB9CisgICAgYm9vbCBjb250YWluc1JldmVyc2VkVGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGFpbnNSZXZlcnNlZFRleHQ7IH0KICAgICAKIHB1YmxpYzoKICAgICBJbmxpbmVU
ZXh0Qm94ICogZmluZE5leHRJbmxpbmVUZXh0Qm94KCBpbnQgb2Zmc2V0LCBpbnQgJnBvcyApIGNv
bnN0OwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAkocmV2aXNp
b24gMTU1NjQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxCUkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgpAQCAtMTU2LDYgKzE1Nyw4
IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW4KICAgICAgICAgaWYg
KHZhbHVlICE9IG9sZFRleHQgfHwgIW1fZGl2LT5oYXNDaGlsZE5vZGVzKCkpIHsKICAgICAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICAgICAgbV9kaXYtPnNldElubmVyVGV4
dCh2YWx1ZSwgZWMpOworICAgICAgICAgICAgaWYgKHZhbHVlLmVuZHNXaXRoKCJcbiIpIHx8IHZh
bHVlLmVuZHNXaXRoKCJcciIpKQorICAgICAgICAgICAgICAgIG1fZGl2LT5hcHBlbmRDaGlsZChu
ZXcgSFRNTEJSRWxlbWVudChkb2N1bWVudCgpKSwgZWMpOwogICAgICAgICAgICAgc2V0RWRpdGVk
KGZhbHNlKTsKICAgICAgICAgfQogICAgICAgICBlbGVtZW50LT5zZXRWYWx1ZU1hdGNoZXNSZW5k
ZXJlcigpOwpAQCAtMjYwLDcgKzI2Myw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OnN1YnRy
ZWVIYXNDaGFuZ2UKIFN0cmluZyBSZW5kZXJUZXh0Q29udHJvbDo6dGV4dCgpCiB7CiAgICAgaWYg
KG1fZGl2KQotICAgICAgICByZXR1cm4gbV9kaXYtPnRleHRDb250ZW50KHRydWUpLnJlcGxhY2Uo
J1xcJywgYmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbCgpKTsKKyAgICAgICAgcmV0dXJuIG1fZGl2
LT50ZXh0Q29udGVudCgpLnJlcGxhY2UoJ1xcJywgYmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbCgp
KTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL2Jp
ZGkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwCShyZXZpc2lv
biAxNTU2NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDc2LDcgKzI0NzYsNyBAQCBCaWRpSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGlu
ZUJyCiAKICAgICBpZiAobEJyZWFrID09IHN0YXJ0ICYmICFsQnJlYWsub2JqLT5pc0JSKCkpIHsK
ICAgICAgICAgLy8gd2UganVzdCBhZGQgYXMgbXVjaCBhcyBwb3NzaWJsZQotICAgICAgICBpZiAo
c3R5bGUoKS0+d2hpdGVTcGFjZSgpID09IFBSRSkgeworICAgICAgICBpZiAoc3R5bGUoKS0+cHJl
c2VydmVOZXdsaW5lKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBEb24ndCByZWFsbHkgdW5k
ZXJzdGFuZCB0aGlzIGNhc2UuCiAgICAgICAgICAgICBpZiAocG9zICE9IDApIHsKICAgICAgICAg
ICAgICAgICBsQnJlYWsub2JqID0gbzsKSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubQkocmV2aXNpb24g
MTU1NjQpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJIVE1MVmlldy5tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzYsNyArMTc2LDcgQEAgdm9pZCAqX05TU29mdExpbmtpbmdHZXRGcmFtZXdvcmtGdW5jUHRy
KAogCiBAaW50ZXJmYWNlIFdlYkhUTUxWaWV3IChXZWJIVE1MVmlld0ZpbGVJbnRlcm5hbCkKIC0g
KEJPT0wpX2ltYWdlRXhpc3RzQXRQYXRoczooTlNBcnJheSAqKXBhdGhzOwotLSAoRE9NRG9jdW1l
bnRGcmFnbWVudCAqKV9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6KE5TUGFzdGVib2Fy
ZCAqKXBhc3RlYm9hcmQgYWxsb3dQbGFpblRleHQ6KEJPT0wpYWxsb3dQbGFpblRleHQgY2hvc2VQ
bGFpblRleHQ6KEJPT0wgKiljaG9zZVBsYWluVGV4dDsKKy0gKERPTURvY3VtZW50RnJhZ21lbnQg
KilfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJv
YXJkIGluQ29udGV4dDooRE9NUmFuZ2UgKiljb250ZXh0IGFsbG93UGxhaW5UZXh0OihCT09MKWFs
bG93UGxhaW5UZXh0IGNob3NlUGxhaW5UZXh0OihCT09MICopY2hvc2VQbGFpblRleHQ7CiAtIChO
U1N0cmluZyAqKV9wbGFpblRleHRGcm9tUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVi
b2FyZDsKIC0gKHZvaWQpX3Bhc3RlV2l0aFBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3Rl
Ym9hcmQgYWxsb3dQbGFpblRleHQ6KEJPT0wpYWxsb3dQbGFpblRleHQ7CiAtICh2b2lkKV9wYXN0
ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQ7CkBA
IC0zNjIsNyArMzYyLDEwIEBAIHZvaWQgKl9OU1NvZnRMaW5raW5nR2V0RnJhbWV3b3JrRnVuY1B0
cigKICAgICByZXR1cm4gZWxlbWVudHM7CiB9CiAKLS0gKERPTURvY3VtZW50RnJhZ21lbnQgKilf
ZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJk
IGFsbG93UGxhaW5UZXh0OihCT09MKWFsbG93UGxhaW5UZXh0IGNob3NlUGxhaW5UZXh0OihCT09M
ICopY2hvc2VQbGFpblRleHQKKy0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFn
bWVudEZyb21QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluQ29udGV4dDooRE9NUmFuZ2Ug
Kiljb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxv
d1BsYWluVGV4dDooQk9PTClhbGxvd1BsYWluVGV4dAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hvc2VQbGFpblRleHQ6KEJPT0wgKiljaG9zZVBsYWluVGV4dAog
ewogICAgIE5TQXJyYXkgKnR5cGVzID0gW3Bhc3RlYm9hcmQgdHlwZXNdOwogICAgICpjaG9zZVBs
YWluVGV4dCA9IE5POwpAQCAtNDYzLDcgKzQ2Niw4IEBAIHZvaWQgKl9OU1NvZnRMaW5raW5nR2V0
RnJhbWV3b3JrRnVuY1B0cigKICAgICAKICAgICBpZiAoYWxsb3dQbGFpblRleHQgJiYgW3R5cGVz
IGNvbnRhaW5zT2JqZWN0Ok5TU3RyaW5nUGJvYXJkVHlwZV0pIHsKICAgICAgICAgKmNob3NlUGxh
aW5UZXh0ID0gWUVTOwotICAgICAgICByZXR1cm4gW1tzZWxmIF9icmlkZ2VdIGRvY3VtZW50RnJh
Z21lbnRXaXRoVGV4dDpbcGFzdGVib2FyZCBzdHJpbmdGb3JUeXBlOk5TU3RyaW5nUGJvYXJkVHlw
ZV1dOworICAgICAgICByZXR1cm4gW1tzZWxmIF9icmlkZ2VdIGRvY3VtZW50RnJhZ21lbnRXaXRo
VGV4dDpbcGFzdGVib2FyZCBzdHJpbmdGb3JUeXBlOk5TU3RyaW5nUGJvYXJkVHlwZV0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbkNvbnRleHQ6Y29udGV4
dF07CiAgICAgfQogICAgIAogICAgIHJldHVybiBuaWw7CkBAIC01MDgsOCArNTEyLDEwIEBAIHZv
aWQgKl9OU1NvZnRMaW5raW5nR2V0RnJhbWV3b3JrRnVuY1B0cigKIAogLSAodm9pZClfcGFzdGVX
aXRoUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCBhbGxvd1BsYWluVGV4dDoo
Qk9PTClhbGxvd1BsYWluVGV4dAogeworICAgIERPTVJhbmdlICpyYW5nZSA9IFtzZWxmIF9zZWxl
Y3RlZFJhbmdlXTsKICAgICBCT09MIGNob3NlUGxhaW5UZXh0OwotICAgIERPTURvY3VtZW50RnJh
Z21lbnQgKmZyYWdtZW50ID0gW3NlbGYgX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpw
YXN0ZWJvYXJkIGFsbG93UGxhaW5UZXh0OmFsbG93UGxhaW5UZXh0IGNob3NlUGxhaW5UZXh0OiZj
aG9zZVBsYWluVGV4dF07CisgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbc2Vs
ZiBfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmQKKyAgICAgICAgaW5D
b250ZXh0OnJhbmdlIGFsbG93UGxhaW5UZXh0OmFsbG93UGxhaW5UZXh0IGNob3NlUGxhaW5UZXh0
OiZjaG9zZVBsYWluVGV4dF07CiAgICAgV2ViRnJhbWVCcmlkZ2UgKmJyaWRnZSA9IFtzZWxmIF9i
cmlkZ2VdOwogICAgIGlmIChmcmFnbWVudCAmJiBbc2VsZiBfc2hvdWxkSW5zZXJ0RnJhZ21lbnQ6
ZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6W3NlbGYgX3NlbGVjdGVkUmFuZ2VdIGdpdmVuQWN0
aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWRdKSB7CiAgICAgICAgIFticmlkZ2UgcmVwbGFj
ZVNlbGVjdGlvbldpdGhGcmFnbWVudDpmcmFnbWVudCBzZWxlY3RSZXBsYWNlbWVudDpOTyBzbWFy
dFJlcGxhY2U6W3NlbGYgX2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRd
IG1hdGNoU3R5bGU6Y2hvc2VQbGFpblRleHRdOwpAQCAtNTcyOCw5ICs1NzM0LDExIEBAIHN0YXRp
YyBET01SYW5nZSAqdW5pb25ET01SYW5nZXMoRE9NUmFuZ2UKICAgICBpZiAoW3NlbGYgX2NhblBy
b2Nlc3NEcmFnV2l0aERyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKSB7CiAgICAgICAgIE5TUGFz
dGVib2FyZCAqcGFzdGVib2FyZCA9IFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXTsK
ICAgICAgICAgaWYgKFtzZWxmIF9pc01vdmVEcmFnXSB8fCBbaW5uZXJCcmlkZ2UgaXNEcmFnQ2Fy
ZXRSaWNobHlFZGl0YWJsZV0pIHsgCisgICAgICAgICAgICBET01SYW5nZSAqcmFuZ2UgPSBbaW5u
ZXJCcmlkZ2UgZHJhZ0NhcmV0RE9NUmFuZ2VdOwogICAgICAgICAgICAgQk9PTCBjaG9zZVBsYWlu
VGV4dDsKLSAgICAgICAgICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW3NlbGYg
X2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJkIGFsbG93UGxhaW5UZXh0
OllFUyBjaG9zZVBsYWluVGV4dDomY2hvc2VQbGFpblRleHRdOwotICAgICAgICAgICAgaWYgKGZy
YWdtZW50ICYmIFtzZWxmIF9zaG91bGRJbnNlcnRGcmFnbWVudDpmcmFnbWVudCByZXBsYWNpbmdE
T01SYW5nZTpbaW5uZXJCcmlkZ2UgZHJhZ0NhcmV0RE9NUmFuZ2VdIGdpdmVuQWN0aW9uOldlYlZp
ZXdJbnNlcnRBY3Rpb25Ecm9wcGVkXSkgeworICAgICAgICAgICAgRE9NRG9jdW1lbnRGcmFnbWVu
dCAqZnJhZ21lbnQgPSBbc2VsZiBfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3Rl
Ym9hcmQKKyAgICAgICAgICAgICAgICBpbkNvbnRleHQ6cmFuZ2UgYWxsb3dQbGFpblRleHQ6WUVT
IGNob3NlUGxhaW5UZXh0OiZjaG9zZVBsYWluVGV4dF07CisgICAgICAgICAgICBpZiAoZnJhZ21l
bnQgJiYgW3NlbGYgX3Nob3VsZEluc2VydEZyYWdtZW50OmZyYWdtZW50IHJlcGxhY2luZ0RPTVJh
bmdlOnJhbmdlIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25Ecm9wcGVkXSkgewogICAg
ICAgICAgICAgICAgIFtbd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJW
aWV3IHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOldlYkRyYWdEZXN0aW5hdGlvbkFj
dGlvbkVkaXQgZm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb107CiAgICAgICAgICAgICAgICAg
aWYgKFtzZWxmIF9pc01vdmVEcmFnXSkgewogICAgICAgICAgICAgICAgICAgICBCT09MIHNtYXJ0
TW92ZSA9IFtpbm5lckJyaWRnZSBzZWxlY3Rpb25HcmFudWxhcml0eV0gPT0gV2ViQnJpZGdlU2Vs
ZWN0QnlXb3JkICYmIFtzZWxmIF9jYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJv
YXJkXTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9615</attachid>
            <date>2006-07-22 11:49:59 -0700</date>
            <delta_ts>2006-07-24 19:06:12 -0700</delta_ts>
            <desc>patch, including change log and layout tests (&amp; all existing layout tests pass)</desc>
            <filename>SpaceBreakPatch.txt</filename>
            <type>text/plain</type>
            <size>225103</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE1NTc1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNjIgQEAKKzIwMDYtMDctMjIgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIC0gdGVzdCBmb3IgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVn
LmNnaT9pZD05NjMwCisgICAgICAgICAgUkVHUkVTU0lPTjogc29tZSBzcGFjZXMgdHlwZWQgaW4g
PHRleHRhcmVhPiBhcmUgcG9zdGVkIGFzIG5vbi1icmVha2luZyBzcGFjZXMKKworICAgICAgICAq
IGZhc3QvZm9ybXMvdGV4dGFyZWEtdHlwZS1zcGFjZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLXR5cGUtc3BhY2VzLmh0bWw6IEFkZGVkLgorCisg
ICAgICAgIC0gdGVzdCBmb3IgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVn
LmNnaT9pZD05OTM5CisgICAgICAgICAgUkVHUkVTU0lPTjogUGFzdGluZyB0ZXh0IGludG8gbmF0
aXZlIHRleHQgYXJlYSB3aXRoIG5ld2xpbmUgYXQgZW5kIGRvZXMgbm90IHByZXNlcnZlIG5ld2xp
bmUKKworICAgICAgICAqIGZhc3QvZm9ybXMvdGV4dGFyZWEtcGFzdGUtbmV3bGluZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdGV4dGFyZWEtcGFzdGUtbmV3bGlu
ZS5odG1sOiBBZGRlZC4KKworICAgICAgICAtIHVwZGF0ZWQgdGVzdHMgYWZmZWN0ZWQgYnkgYWJv
dmUgY2hhbmdlcywgcmVzdWx0cyBhcmUgZXF1aXZhbGVudCBvciBiZXR0ZXIKKworICAgICAgICAq
IGVkaXRpbmcvcGFzdGVib2FyZC80NjQxMDMzLWV4cGVjdGVkLmNoZWNrc3VtOgorICAgICAgICAq
IGVkaXRpbmcvcGFzdGVib2FyZC80NjQxMDMzLWV4cGVjdGVkLnBuZzoKKyAgICAgICAgKiBlZGl0
aW5nL3Bhc3RlYm9hcmQvNDY0MTAzMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9w
YXN0ZWJvYXJkL3Bhc3RlLXRhYmxlLTAwMy1leHBlY3RlZC5jaGVja3N1bToKKyAgICAgICAgKiBl
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGFibGUtMDAzLWV4cGVjdGVkLnBuZzoKKyAgICAgICAg
KiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGFibGUtMDAzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTYtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9xdWlya3MtbW9kZS1ici0xLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcXVpcmtzLW1vZGUtYnItMi1leHBlY3RlZC50
eHQ6CisKKyAgICAgICAgLSBjaGFuZ2VkIGEgdGVzdCB0byBiZSBhICJkdW1wIGFzIHRleHQiIHRl
c3QKKworICAgICAgICAqIGZhc3QvZm9ybXMvcGFzdGUtaW50by10ZXh0YXJlYS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9mb3Jtcy9wYXN0ZS1pbnRvLXRleHRhcmVhLmh0bWw6CisgICAg
ICAgICogZmFzdC9mb3Jtcy9wYXN0ZS1pbnRvLXRleHRhcmVhLWV4cGVjdGVkLmNoZWNrc3VtOiBS
ZW1vdmVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcGFzdGUtaW50by10ZXh0YXJlYS1leHBlY3Rl
ZC5wbmc6IFJlbW92ZWQuCisKKyAgICAgICAgLSBjaGFuZ2VkIGEgdGVzdCB0byBiZSBhICJkdW1w
IGFzIHRleHQiIHRlc3QsIGltcHJvdmVkIHRlc3QgYSBiaXQgYW5kIGFsc28gY2hlY2tlZCBpbiBu
ZXcgcmVzdWx0cworCisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0YXJlYS1zY3JvbGxlZC1lbmRs
aW5lLWNhcmV0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLXNj
cm9sbGVkLWVuZGxpbmUtY2FyZXQuaHRtbDoKKworICAgICAgICAtIGZpeGVkIGEgdGVzdCB0aGF0
IHdhcyByYWlzaW5nIGFuIGV4Y2VwdGlvbiBldmVyeSB0aW1lIGl0IHJhbgorCisgICAgICAgICog
ZmFzdC9mb3Jtcy9hdHRyaWJ1dGVkLXN0cmluZ3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZm9ybXMvYXR0cmlidXRlZC1zdHJpbmdzLmh0bWw6CisKKyAgICAgICAgLSBjb3JyZWN0ZWQg
Y2hlY2tzdW1zIG9uIGEgYnVuY2ggb2YgdGVzdHMgKHBuZ3Mgd2VyZSByaWdodCwgYnV0IGNoZWNr
c3VtcyB3cm9uZywgYXBwYXJlbnRseSkKKworICAgICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvZGVs
ZXRlLXRvLXNlbGVjdC10YWJsZS1leHBlY3RlZC5jaGVja3N1bToKKyAgICAgICAgKiBlZGl0aW5n
L3NlbGVjdGlvbi8zNjkwNzE5LWV4cGVjdGVkLmNoZWNrc3VtOgorICAgICAgICAqIGVkaXRpbmcv
c2VsZWN0aW9uL2NsZWFyLXNlbGVjdGlvbi1leHBlY3RlZC5jaGVja3N1bToKKyAgICAgICAgKiBl
ZGl0aW5nL3VuZG8vdW5kby1taXNzcGVsbGluZ3MtZXhwZWN0ZWQuY2hlY2tzdW06CisKKyAgICAg
ICAgLSBhZGRlZCBzb21lIG1pc3NpbmcgcGl4ZWwgdGVzdCByZXN1bHRzCisKKyAgICAgICAgKiBl
ZGl0aW5nL3Bhc3RlYm9hcmQvbmVzdGVkLWJsb2Nrcy13aXRoLXRleHQtYXJlYS1leHBlY3RlZC5j
aGVja3N1bTogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL25lc3RlZC1ibG9j
a3Mtd2l0aC10ZXh0LWFyZWEtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3Bhc3RlYm9hcmQvbmVzdGVkLWJsb2Nrcy13aXRoLXRleHQtZmllbGQtZXhwZWN0ZWQuY2hlY2tz
dW06IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9uZXN0ZWQtYmxvY2tzLXdp
dGgtdGV4dC1maWVsZC1leHBlY3RlZC5wbmc6IEFkZGVkLgorCiAyMDA2LTA3LTIyICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAbnlwb3AuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
LgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9kZWxldGUtdG8tc2VsZWN0LXRh
YmxlLWV4cGVjdGVkLmNoZWNrc3VtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcv
ZGVsZXRpbmcvZGVsZXRlLXRvLXNlbGVjdC10YWJsZS1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNp
b24gMTU1NjkpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS10by1zZWxl
Y3QtdGFibGUtZXhwZWN0ZWQuY2hlY2tzdW0JKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTRm
M2M0YmIwODgzNThkYmI3ZGQ3OWY5NzFhNGE0MWI4ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQorNmFjMTIxMzg1ZTg1Njg5MjAxNDkzZjA2NGQwMDE0ZjIKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvNDY0MTAzMy1leHBl
Y3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvNDY0MTAzMy1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gMTU1NjkpCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvNDY0MTAzMy1leHBlY3RlZC5jaGVja3N1bQkod29ya2lu
ZyBjb3B5KQpAQCAtMSArMSBAQAotODI3ZWVkMzI0OWE4NDMxMzM4ZTdjNmVhOTZkYzkwZDgKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis5YTk1ODgxYmEzMmI1YjI1ZmE0MGJkOGNmMzBmYTFk
NApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC80NjQxMDMzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvNDY0MTAzMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NTY5
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkLzQ2NDEwMzMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQCBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRC
ZWdpbkVkaXRpbmdJbkRPCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5n
OldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNh
dGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21l
bnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rp
b246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZAotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hh
bmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdl
OnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAw
IG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvIDMgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxl
Y3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3
RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKQEAgLTI3
LDE1ICsyNywxMiBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgyNTEsMCkgd2lkdGggMzg0OiAiIENvcHkvcGFzdGUgb2YgYSBzZWxlY3QgZWxl
bWVudCBmYWlscyB0byBpbmNsdWRlIHRoZSBvcHRpb25zIgogICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoNjM1LDApIHNpemUgNHgxOAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDYz
NSwwKSB3aWR0aCA0OiAiLiIKLSAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDg2KSBzaXpl
IDc4NHgxMjgKLSAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA3
ODR4MTEwCi0gICAgICAgICAgUmVuZGVySW1hZ2Uge0lNR30gYXQgKDAsMCkgc2l6ZSA3NngxMDMK
LSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDc2LDg5KSBzaXplIDR4MTgKLSAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICg3Niw4OSkgd2lkdGggNDogIiAiCi0gICAgICAgICAgUmVuZGVy
TWVudUxpc3Qge1NFTEVDVH0gYXQgKDgyLDkwKSBzaXplIDM2eDE4Ci0gICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgwLDExMCkgc2l6ZSA3ODR4MTgKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9
IGF0ICgwLDApIHNpemUgMHgxOAotICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAs
MjE0KSBzaXplIDc4NHgxMTAKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDg2KSBzaXpl
IDc4NHgxMTAKKyAgICAgICAgUmVuZGVySW1hZ2Uge0lNR30gYXQgKDAsMCkgc2l6ZSA3NngxMDMK
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg3Niw4OSkgc2l6ZSA0eDE4CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDc2LDg5KSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyTWVudUxp
c3Qge1NFTEVDVH0gYXQgKDgyLDkwKSBzaXplIDM2eDE4CisgICAgICBSZW5kZXJCbG9jayAoYW5v
bnltb3VzKSBhdCAoMCwxOTYpIHNpemUgNzg0eDExMAogICAgICAgICBSZW5kZXJJbWFnZSB7SU1H
fSBhdCAoMCwwKSBzaXplIDc2eDEwMwogICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDc2
LDg5KSBzaXplIDR4MTgKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNzYsODkpIHdpZHRoIDQ6ICIg
IgpAQCAtNDUsNCArNDIsNCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTk6ICIgICAgMSIKICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDB4MAotY2FyZXQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7QlJ9IG9m
IGNoaWxkIDMge0RJVn0gb2YgY2hpbGQgNCB7RElWfSBvZiBjaGlsZCAwIHtCT0RZfSBvZiBjaGls
ZCAwIHtIVE1MfSBvZiBkb2N1bWVudAorY2FyZXQ6IHBvc2l0aW9uIDEgb2YgY2hpbGQgMiB7U0VM
RUNUfSBvZiBjaGlsZCA0IHtESVZ9IG9mIGNoaWxkIDAge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9
IG9mIGRvY3VtZW50CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvbmVzdGVk
LWJsb2Nrcy13aXRoLXRleHQtYXJlYS1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvbmVzdGVkLWJsb2Nrcy13aXRoLXRleHQtYXJl
YS1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9uZXN0ZWQtYmxvY2tzLXdpdGgtdGV4dC1hcmVhLWV4cGVjdGVkLmNoZWNrc3Vt
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitmZDMwY2FhNzM5ZmVkNmIwYTg0MWM4ZmMyMTEx
NTQzNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9uZXN0ZWQtYmxvY2tzLXdpdGgtdGV4dC1maWVsZC1leHBlY3RlZC5jaGVj
a3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvbmVzdGVk
LWJsb2Nrcy13aXRoLXRleHQtZmllbGQtZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvbmVzdGVkLWJsb2Nrcy13aXRoLXRleHQt
ZmllbGQtZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKzgxMTkx
YjZhZmJiMGQ1NzI0NWM4OTA5MGI0MjI4Mjg3ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRhYmxlLTAwMy1leHBl
Y3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtdGFibGUtMDAzLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAxNTU2OSkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10YWJsZS0wMDMtZXhwZWN0ZWQu
Y2hlY2tzdW0JKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTAwZWIyNDhkY2E2ODgyMTZmMTM0
MTM5OTI4NGU0ZDY2ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorOTY5N2U1YWE2YWZmMmJl
MGE2ZDljMWUyMDk4ZDNjODkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGFibGUtMDAzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGFibGUt
MDAzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU1NjkpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtdGFibGUtMDAzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNCw3ICs0LDcgQEAgRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdAog
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJ
TkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxhY2lu
Z0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDkgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZl
bkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCi1FRElUSU5HIERFTEVHQVRFOiBzaG91
bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMiBv
ZiBURCA+IFRSID4gVEJPRFkgPiBUQUJMRSA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDIgb2YgVEQgPiBUUiA+IFRCT0RZID4gVEFCTEUgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVj
dGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpO
U1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldl
YlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMApA
QCAtMjEsMTggKzIxLDE4IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAg
ICAgUmVuZGVyVGFibGVDZWxsIHtURH0gYXQgKDI5LDIpIHNpemUgMjZ4MjAgW3I9MCBjPTEgcnM9
MSBjcz0xXQogICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMSkgc2l6ZSAy
NHgxOAogICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDEpIHdpZHRoIDI0OiAidHdvIgot
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMjQpIHNpemUgNzg0eDYwCi0gICAgICAgIFJl
bmRlclRhYmxlIHtUQUJMRX0gYXQgKDAsMCkgc2l6ZSA1N3g0MgotICAgICAgICAgIFJlbmRlclRh
YmxlU2VjdGlvbiB7VEJPRFl9IGF0ICgwLDApIHNpemUgNTd4NDIKLSAgICAgICAgICAgIFJlbmRl
clRhYmxlUm93IHtUUn0gYXQgKDAsMikgc2l6ZSA1N3gzOAotICAgICAgICAgICAgICBSZW5kZXJU
YWJsZUNlbGwge1REfSBhdCAoMiwxMSkgc2l6ZSAyNXgyMCBbcj0wIGM9MCBycz0xIGNzPTFdCisg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwyNCkgc2l6ZSA3ODR4NDIKKyAgICAgICAgUmVu
ZGVyVGFibGUge1RBQkxFfSBhdCAoMCwwKSBzaXplIDU3eDI0CisgICAgICAgICAgUmVuZGVyVGFi
bGVTZWN0aW9uIHtUQk9EWX0gYXQgKDAsMCkgc2l6ZSA1N3gyNAorICAgICAgICAgICAgUmVuZGVy
VGFibGVSb3cge1RSfSBhdCAoMCwyKSBzaXplIDU3eDIwCisgICAgICAgICAgICAgIFJlbmRlclRh
YmxlQ2VsbCB7VER9IGF0ICgyLDIpIHNpemUgMjV4MjAgW3I9MCBjPTAgcnM9MSBjcz0xXQogICAg
ICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwxKSBzaXplIDIzeDE4CiAgICAg
ICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwxKSB3aWR0aCAyMzogIm9uZSIKLSAgICAgICAg
ICAgICAgUmVuZGVyVGFibGVDZWxsIHtURH0gYXQgKDI5LDIpIHNpemUgMjZ4MzggW3I9MCBjPTEg
cnM9MSBjcz0xXQorICAgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwge1REfSBhdCAoMjksMikg
c2l6ZSAyNngyMCBbcj0wIGM9MSBycz0xIGNzPTFdCiAgICAgICAgICAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgxLDEpIHNpemUgMjR4MTgKICAgICAgICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgxLDEpIHdpZHRoIDI0OiAidHdvIgotICAgICAgICAgICAgICAgIFJlbmRlckJSIHtCUn0g
YXQgKDI1LDE1KSBzaXplIDB4MAotICAgICAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDEs
MTkpIHNpemUgMHgxOAotICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw0Mikg
c2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMjQpIHNp
emUgNzg0eDE4CiAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MTgKLWNh
cmV0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDIge0JSfSBvZiBjaGlsZCAxIHtURH0gb2YgY2hpbGQg
MCB7VFJ9IG9mIGNoaWxkIDAge1RCT0RZfSBvZiBjaGlsZCAwIHtUQUJMRX0gb2YgY2hpbGQgMiB7
RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAorICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNjYpIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRl
ckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDE4CitjYXJldDogcG9zaXRpb24gMCBvZiBjaGlsZCAw
IHtCUn0gb2YgY2hpbGQgMyB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1M
fSBvZiBkb2N1bWVudApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3Rl
LXRleHQtMDE2LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTU2OSkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxNi1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4LDggKzE4LDcgQEAgRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6I2Rv
Y3VtZW50LWZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGZyb20gMiBvZiBQID4gRElW
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMiBvZiBQID4gRElWID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBh
c3RlZAotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVs
bCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgUCA+IFAgPiBESVYgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIFAgPiBQID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxT
ZWxlY3Rpbmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FU
RTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgUCA+IERJViA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgUCA+IERJViA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mIFAgPiBESVYg
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mIFAgPiBESVYgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0
cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKICAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKQEAgLTQ4LDExICs0Nywx
MCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICAgIFJlbmRlckJsb2Nr
IHtQfSBhdCAoMCwyOCkgc2l6ZSA3NTZ4MjgKICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgMTMweDI4CiAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMTMwOiAiKioqVEVTVCoqKiIKLSAgICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBh
dCAoMCw1Nikgc2l6ZSA3NTZ4MjgKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMp
IGF0ICgwLDU2KSBzaXplIDc1Nng1NgogICAgICAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgw
LDApIHNpemUgMHgyOAotICAgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAs
ODQpIHNpemUgNzU2eDI4Ci0gICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDEyOHgyOAotICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEy
ODogIkFub3RoZXIgbGluZS4iCisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwyOCkgc2l6ZSAxMjh4MjgKKyAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyOCkgd2lk
dGggMTI4OiAiQW5vdGhlciBsaW5lLiIKICAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDE0
LDEyNikgc2l6ZSA3NTZ4MAogICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgx
NCwxMjYpIHNpemUgNzU2eDI4CiAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA2eDI4CkBAIC02Myw0ICs2MSw0IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAogICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA2OiAiICIKICAgICAgICAg
ICBSZW5kZXJCbG9jayB7UH0gYXQgKDE0LDE4Mikgc2l6ZSA3NTZ4MjgKICAgICAgICAgICAgIFJl
bmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDI4Ci1jYXJldDogcG9zaXRpb24gMCBvZiBjaGls
ZCAwIHtCUn0gb2YgY2hpbGQgMyB7UH0gb2YgY2hpbGQgMCB7UH0gb2YgY2hpbGQgMSB7RElWfSBv
ZiBjaGlsZCA3IHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRv
Y3VtZW50CitjYXJldDogcG9zaXRpb24gMCBvZiBjaGlsZCAzIHtCUn0gb2YgY2hpbGQgMCB7UH0g
b2YgY2hpbGQgMSB7RElWfSBvZiBjaGlsZCA3IHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNo
aWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvcXVpcmtzLW1vZGUtYnItMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3F1aXJrcy1tb2RlLWJyLTEtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxNTU2OSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9xdWlya3Mt
bW9kZS1ici0xLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNiBAQCBs
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSAzNzB4MTgKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDM3MDogIlRoZSB0ZXN0IHNob3VsZCBhZGQgYSBzaW5nbGUgYmxhbmsgbGluZSBhZnRlciB0aGlz
IHBhcmFncmFwaC4iCiAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMzcwLDE0KSBzaXplIDB4
MAotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMTgpIHNpemUgMHgxOAogICAgICAgICAg
IFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLWNhcmV0OiBwb3NpdGlvbiAw
IG9mIGNoaWxkIDIge0JSfSBvZiBjaGlsZCAwIHtESVZ9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hp
bGQgMCB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKKyAgICAgICAgICBSZW5k
ZXJCUiB7QlJ9IGF0ICgwLDE4KSBzaXplIDB4MTgKK2NhcmV0OiBwb3NpdGlvbiAwIG9mIGNoaWxk
IDMge0JSfSBvZiBjaGlsZCAwIHtESVZ9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMCB7Qk9E
WX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKSW5kZXg6IExheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9xdWlya3MtbW9kZS1ici0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcXVpcmtzLW1vZGUtYnItMi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDE1NTY5KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L3F1aXJrcy1tb2RlLWJyLTItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEs
NyBAQAogRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0aW5nSW5ET01SYW5nZTpyYW5n
ZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEJlZ2lu
RWRpdGluZzpXZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFu
Z2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mIERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDEgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6
TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKLUVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMSBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZy
b20gMSBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mIERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFt
IHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
OldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAogICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMApJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vMzY5MDcxOS1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi8zNjkwNzE5LWV4cGVjdGVkLmNoZWNrc3Vt
CShyZXZpc2lvbiAxNTU2OSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uLzM2OTA3
MTktZXhwZWN0ZWQuY2hlY2tzdW0JKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTI3NjJhMjE3
MTI1MDBjNTEzMjg4YTQ3OTZlN2M2ZjBkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZTkz
ZDg1OTJmNjIyOWQzYzA2ODFjNjAwNjE3YzlmNGQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGVhci1zZWxlY3Rpb24tZXhw
ZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vY2xlYXItc2VsZWN0aW9uLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAxNTU2OSkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsZWFyLXNlbGVjdGlvbi1leHBlY3RlZC5j
aGVja3N1bQkod29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAotNjc1OTU4Y2ExNzYwZTY3ZDU2NTc2
ODczNzcyNGE3ZWQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitiNjQzMGI2MzMzMzVhMmU1
YTQwYzViYWU3ZDc5MTU0NgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvdW5kby91bmRvLW1pc3NwZWxsaW5ncy1leHBlY3RlZC5jaGVja3N1bQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG8vdW5kby1taXNzcGVsbGluZ3Mt
ZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDE1NTY5KQorKysgTGF5b3V0VGVzdHMvZWRpdGlu
Zy91bmRvL3VuZG8tbWlzc3BlbGxpbmdzLWV4cGVjdGVkLmNoZWNrc3VtCSh3b3JraW5nIGNvcHkp
CkBAIC0xICsxIEBACi0yYTI1MWNhNzVhNGVlMjgyMDZmYmM5ZjIwM2E5MjFlMwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKKzhhOWIzZTQ2MjQyYjM2NTAwMjc2MTM1YmExYzI5ZDYyClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdHRy
aWJ1dGVkLXN0cmluZ3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvYXR0cmlidXRlZC1zdHJpbmdzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU1Njkp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F0dHJpYnV0ZWQtc3RyaW5ncy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3LDcgKzE3LDYgQEAgTlNGb3JlZ3JvdW5kQ29sb3IsTlNU
b29sVGlwLE5TRm9udCxOU09ibAogTlNUb29sVGlwLE5TRm9yZWdyb3VuZENvbG9yLE5TRm9udAog
MC41CiB1bmRlZmluZWQKLXVuZGVmaW5lZAogTlNEZXZpY2VSR0JDb2xvclNwYWNlIDEgMC41IDEg
MC41CiAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hdHRyaWJ1dGVkLXN0cmluZ3Mu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2F0dHJpYnV0ZWQtc3Ry
aW5ncy5odG1sCShyZXZpc2lvbiAxNTU2OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYXR0
cmlidXRlZC1zdHJpbmdzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDYgQEAgYm9k
eSB7IG1hcmdpbjogMDsgcGFkZGluZzogMCB9CiAKIAkJCWxvZyhhdHRyU3RyaW5nLmdldEF0dHJp
YnV0ZVZhbHVlQXRJbmRleCgiTlNPYmxpcXVlbmVzcyIsIDApKTsKIAkJCWxvZyhhdHRyU3RyaW5n
LmdldEF0dHJpYnV0ZVZhbHVlQXRJbmRleCgiTlNPYmxpcXVlbmVzcyIsIDMpKTsKLQkJCWxvZyhh
dHRyU3RyaW5nLmdldEF0dHJpYnV0ZVZhbHVlQXRJbmRleCgiTlNPYmxpcXVlbmVzcyIsIDEwKSk7
CiAKIAkJCWxvZyhhdHRyU3RyaW5nLmdldEF0dHJpYnV0ZVZhbHVlQXRJbmRleCgiTlNGb3JlZ3Jv
dW5kQ29sb3IiLCAxKSk7CiAJCQkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcGFzdGUt
aW50by10ZXh0YXJlYS1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3Bhc3RlLWludG8tdGV4dGFyZWEtZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlz
aW9uIDE1NTY5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXN0ZS1pbnRvLXRleHRhcmVh
LWV4cGVjdGVkLmNoZWNrc3VtCSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAKLTJkZDI2NTM4
M2QxYzU2ODc4NWMxYzdhZTg0ZGZkYWY2ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9wYXN0ZS1pbnRvLXRleHRhcmVhLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Bhc3RlLWludG8tdGV4dGFy
ZWEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTU2OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvcGFzdGUtaW50by10ZXh0YXJlYS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
MjYgKzEsOSBAQAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpX
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20g
NTcgb2YgI3RleHQgPiBESVYgdG8gNTcgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rp
b25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdB
VEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4g
RElWIHRvIDEgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDU3IG9mICN0ZXh0
ID4gRElWIHRvIDU3IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
IEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlm
aWNhdGlvbgotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyQmxv
Y2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAotICAgIFJlbmRlckJvZHkge0JPRFl9IGF0
ICg4LDgpIHNpemUgNzg0eDU4NAotICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUg
Nzg0eDE4Ci0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc1N3gxOAot
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc1NzogIlRoaXMgdGVzdHMgZm9yIGEg
YnVnIHdoZXJlIHRleHQgcGFzdGVkIGludG8gYSB0ZXh0YXJlYSB3b3VsZCBhcHBlYXIgb25lIGNo
YXJhY3RlciBiZWZvcmUgdGhlIHBvc2l0aW9uIHdoZXJlIGl0IHdhcyBwYXN0ZWQuIgotICAgICAg
UmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMzQpIHNpemUgNzg0eDcxCi0gICAgICAgIFJl
bmRlclRleHRGaWVsZCB7VEVYVEFSRUF9IGF0ICgyLDIpIHNpemUgMTYzeDY3IFtiZ2NvbG9yPSNG
RkZGRkZdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCi0gICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAotbGF5ZXIgYXQgKDExLDQ1KSBzaXplIDE2MXg2NQot
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMSwxKSBzaXplIDE2MXg2NQotICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMywwKSBzaXplIDd4MTMKLSAgICAgIHRleHQgcnVuIGF0ICgzLDApIHdpZHRo
IDc6ICJ4IgotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTAsMCkgc2l6ZSAxNDB4MzkKLSAg
ICAgIHRleHQgcnVuIGF0ICgxMCwwKSB3aWR0aCAxMzM6ICIoVGhlcmUgc2hvdWxkIGJlIG9uZSAn
eCcgIgotICAgICAgdGV4dCBydW4gYXQgKDMsMTMpIHdpZHRoIDExMjogImJlZm9yZSBhbmQgYWZ0
ZXIgdGhpcyAiCi0gICAgICB0ZXh0IHJ1biBhdCAoMywyNikgd2lkdGggNTU6ICJzZW50ZW5jZS4p
IgotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNTgsMjYpIHNpemUgN3gxMwotICAgICAgdGV4
dCBydW4gYXQgKDU4LDI2KSB3aWR0aCA3OiAieCIKLWNhcmV0OiBwb3NpdGlvbiA1NyBvZiBjaGls
ZCAxIHsjdGV4dH0gb2YgY2hpbGQgMCB7RElWfSBvZiBjaGlsZCAyIHtURVhUQVJFQX0gb2YgY2hp
bGQgMCB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQKK1RoaXMgdGVzdHMgZm9y
IGEgYnVnIHdoZXJlIHRleHQgcGFzdGVkIGludG8gYSB0ZXh0YXJlYSB3b3VsZCBhcHBlYXIgb25l
IGNoYXJhY3RlciBiZWZvcmUgdGhlIHBvc2l0aW9uIHdoZXJlIGl0IHdhcyBwYXN0ZWQuCisKK0hv
b3JheSwgdGVzdCBzdWNjZWVkZWQuCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9w
YXN0ZS1pbnRvLXRleHRhcmVhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9wYXN0ZS1pbnRvLXRleHRhcmVhLmh0bWwJKHJldmlzaW9uIDE1NTY5KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9wYXN0ZS1pbnRvLXRleHRhcmVhLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsOSArMSwxMyBAQAogPHA+VGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgdGV4dCBwYXN0
ZWQgaW50byBhIHRleHRhcmVhIHdvdWxkIGFwcGVhciBvbmUgY2hhcmFjdGVyIGJlZm9yZSB0aGUg
cG9zaXRpb24gd2hlcmUgaXQgd2FzIHBhc3RlZC48L3A+CiA8dGV4dGFyZWEgcm93cz01IGlkPSJ0
ZXN0Ij54eDwvdGV4dGFyZWE+Ci0KIDxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKIHZhciBlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKIGUuc2V0U2VsZWN0aW9uUmFuZ2UoMSwg
MSk7Ci0KIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRIVE1MIiwgZmFsc2UsICIoVGhlcmUg
c2hvdWxkIGJlIG9uZSAneCcgYmVmb3JlIGFuZCBhZnRlciB0aGlzIHNlbnRlbmNlLikiKTsKLTwv
c2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2lmIChlLnZhbHVlID09ICJ4KFRo
ZXJlIHNob3VsZCBiZSBvbmUgJ3gnIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBzZW50ZW5jZS4peCIp
CisgICAgZG9jdW1lbnQud3JpdGUoIjxwPkhvb3JheSwgdGVzdCBzdWNjZWVkZWQuPC9wPiIpOwor
ZWxzZQorICAgIGRvY3VtZW50LndyaXRlKCI8cD5UZXN0IGZhaWxlZCwgdmFsdWUgaXMgJyIgKyBl
LnZhbHVlICsgIicuPC9wPiIpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3RleHRhcmVhLXBhc3RlLW5ld2xpbmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGFzdGUtbmV3bGluZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBhc3RlLW5l
d2xpbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACitFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxF
R0FURTogc2hvdWxkRGVsZXRlRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWIHRv
IDQgb2YgI3RleHQgPiBESVYKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViB0byAwIG9mIERJ
ViBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpG
QUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6
IHNob3VsZEluc2VydFRleHQ6YWJjCisgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9m
IERJViB0byAwIG9mIERJViBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCitF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20g
NCBvZiAjdGV4dCA+IERJViB0byA0IG9mICN0ZXh0ID4gRElWIHRvRE9NUmFuZ2U6cmFuZ2UgZnJv
bSA0IG9mICN0ZXh0ID4gRElWIHRvIDQgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNTZWxlY3Rp
b25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnRUZXh0OmFi
YworIHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViB0byAwIG9m
ICN0ZXh0ID4gRElWIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWQKK0VESVRJ
TkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9m
ICN0ZXh0ID4gRElWIHRvIDQgb2YgI3RleHQgPiBESVYgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDQg
b2YgI3RleHQgPiBESVYgdG8gNCBvZiAjdGV4dCA+IERJViBhZmZpbml0eTpOU1NlbGVjdGlvbkFm
ZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCitIb29yYXksIHRo
ZSB0ZXN0IHdhcyBzdWNjZXNzZnVsIQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90ZXh0YXJlYS1wYXN0ZS1uZXdsaW5lLWV4cGVjdGVkLnR4dApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3RleHRhcmVhLXBhc3RlLW5ld2xpbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXBhc3RlLW5ld2xpbmUuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtcGFzdGUtbmV3bGluZS5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHZhciB0YSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0YSIpOworICAgIHRhLnZhbHVlID0gImFiY1xuIjsKKyAgICB0YS5mb2N1cygpOwor
ICAgIHRhLnNldFNlbGVjdGlvblJhbmdlKDAsIDQpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5k
KCJjdXQiKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgicGFzdGUiKTsKKyAgICB2YXIgcmVz
dWx0MSA9IHRhLnZhbHVlOworICAgIHRhLnNldFNlbGVjdGlvblJhbmdlKDAsIDApOworICAgIGRv
Y3VtZW50LmV4ZWNDb21tYW5kKCJwYXN0ZSIpOworICAgIHZhciByZXN1bHQyID0gdGEudmFsdWU7
CisKKyAgICBpZiAocmVzdWx0MSA9PSAiYWJjXG4iICYmIHJlc3VsdDIgPT0gImFiY1xuYWJjXG4i
KQorICAgICAgICBkb2N1bWVudC53cml0ZSgiPHA+SG9vcmF5LCB0aGUgdGVzdCB3YXMgc3VjY2Vz
c2Z1bCE8L3A+Iik7CisgICAgZWxzZSBpZiAocmVzdWx0MSA9PSAiIikKKyAgICAgICAgZG9jdW1l
bnQud3JpdGUoIjxwPlRoZSB0ZXN0IGZhaWxlZDsgZG9lc24ndCB3b3JrIGluIHJlbGVhc2UgYnVp
bGRzIG9mIFNhZmFyaSBiZWNhdXNlIHBhc3RlIGlzIG5vdCBhbGxvd2VkLjwvcD4iKTsKKyAgICBl
bHNlCisgICAgICAgIGRvY3VtZW50LndyaXRlKCI8cD5UaGUgdGVzdCBmYWlsZWQsIHJlc3VsdCAx
IHdhcyAnIiArIHJlc3VsdDEucmVwbGFjZSgiXG4iLCAiXFxuIikgKyAiJyBhbmQgcmVzdWx0IDIg
d2FzICciICsgcmVzdWx0Mi5yZXBsYWNlKCJcbiIsICJcXG4iKSArICInLjwvcD4iKTsKK30KKzwv
c2NyaXB0PgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+PHRleHRhcmVhIGlkPSJ0YSI+PC90
ZXh0YXJlYT48L3A+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3RleHRhcmVhLXBhc3RlLW5ld2xpbmUuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5
cGUKICAgKyB0ZXh0L2h0bWwKTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtc2Nyb2xsZWQtZW5kbGluZS1jYXJldC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJl
YS1zY3JvbGxlZC1lbmRsaW5lLWNhcmV0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU1NjkpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXNjcm9sbGVkLWVuZGxpbmUtY2FyZXQt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBAQAogRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
Tm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJh
bmdlOnJhbmdlIGZyb20gMiBvZiAjdGV4dCA+IERJViB0byAyIG9mICN0ZXh0ID4gRElWIHRvRE9N
UmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gRElWIHRvIDEgb2YgI3RleHQgPiBESVYgYWZm
aW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UK
K0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAyMCBvZiAjdGV4dCA+IERJViB0byAyMCBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJhbmdl
IGZyb20gMTcgb2YgI3RleHQgPiBESVYgdG8gMTcgb2YgI3RleHQgPiBESVYgYWZmaW5pdHk6TlNT
ZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgogVGVzdCBTdWNjZWVkZWQKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy90ZXh0YXJlYS1zY3JvbGxlZC1lbmRsaW5lLWNhcmV0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1zY3JvbGxlZC1lbmRsaW5lLWNhcmV0
Lmh0bWwJKHJldmlzaW9uIDE1NTY5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJl
YS1zY3JvbGxlZC1lbmRsaW5lLWNhcmV0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMjAgKzIs
MjQgQEAKIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkKIHsKKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CiAgICAgdmFyIHRhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhJykKKyAgICB2YXIg
cmVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlcycpOwogICAgIHRhLmZvY3VzKCk7CiAg
ICAgLy8gY2xpY2sKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CiAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDkwLCAyMCk7CiAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwogICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7CisgICAgICAgIGlmICh0YS5zZWxlY3Rpb25FbmQgPT0gMTcpCisgICAgICAgICAgICBy
ZXMuaW5uZXJIVE1MID0gIlRlc3QgU3VjY2VlZGVkIjsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmVzLmlubmVySFRNTCA9ICJUZXN0IEZhaWxlZDogY2FyZXQgaXMgYXQgIiArIHRhLnNlbGVj
dGlvbkVuZDsKKyAgICB9IGVsc2UgeworICAgICAgICByZXMuaW5uZXJIVE1MID0gIlRlc3QgY2Fu
J3QgcnVuIHdpdGhvdXQgZXZlbnQgc2VuZGVyIChwYXJ0IG9mIER1bXBSZW5kZXJUcmVlKS4gIgor
ICAgICAgICAgICAgKyAiVG8gdGVzdCBtYW51YWxseSwgY2xpY2sgYXQgdGhlIG1pZGRsZSBvZiB0
aGUgbGluZSBtYXJrZWQgOSBhbmQgY2hlY2sgdGhhdCB0aGUgY2FyZXQgYXBwZWFycyBhZnRlciB0
aGUgOS4iOwogICAgIH0KLSAgICB2YXIgcmVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
cycpOwotICAgIGlmICh0YS5zZWxlY3Rpb25FbmQgPT0gMTcpCi0gICAgICAgIHJlcy5pbm5lckhU
TUwgPSAiVGVzdCBTdWNjZWVkZWQiOwotICAgIGVsc2UKLSAgICAgICAgcmVzLmlubmVySFRNTCA9
ICJUZXN0IEZhaWxlZDogY2FyZXQgaXMgYXQgIiArIHRhLnNlbGVjdGlvbkVuZDsKIH0KIDwvc2Ny
aXB0PgogPC9oZWFkPgpAQCAtMzAsNiArMzQsNiBAQCBmdW5jdGlvbiB0ZXN0KCkKIDcKIDgKIDkK
LTEwCi08L3RleHRhcmVhPgotPGRpdiBpZD0icmVzIj48L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCisxMDwvdGV4dGFyZWE+Cis8ZGl2IGlkPSJyZXMiPjwvZGl2PgorPC9ib2R5PgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS10eXBlLXNwYWNlcy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS10eXBl
LXNwYWNlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3RleHRhcmVhLXR5cGUtc3BhY2VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyMCBAQAorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpX
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiBz
aG91bGRJbnNlcnRUZXh0OiAgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViB0
byAwIG9mIERJViBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uVHlwZWQKK0VESVRJTkcg
REVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJ
ViB0byAwIG9mIERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IERJViB0byAx
IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0
aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJ
VElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0VGV4dDogIHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdl
IGZyb20gMSBvZiAjdGV4dCA+IERJViB0byAxIG9mICN0ZXh0ID4gRElWIGdpdmVuQWN0aW9uOldl
YlZpZXdJbnNlcnRBY3Rpb25UeXBlZAorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBESVYgdG8gMSBvZiAjdGV4dCA+
IERJViB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMiBvZiAjdGV4dCA+IERJViB0byAyIG9mICN0ZXh0
ID4gRElWIGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxF
R0FURTogc2hvdWxkSW5zZXJ0VGV4dDogIHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGZyb20gMiBv
ZiAjdGV4dCA+IERJViB0byAyIG9mICN0ZXh0ID4gRElWIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNl
cnRBY3Rpb25UeXBlZAorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01S
YW5nZTpyYW5nZSBmcm9tIDIgb2YgI3RleHQgPiBESVYgdG8gMiBvZiAjdGV4dCA+IERJViB0b0RP
TVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IERJViB0byAzIG9mICN0ZXh0ID4gRElWIGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hv
dWxkSW5zZXJ0VGV4dDogIHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+
IERJViB0byAzIG9mICN0ZXh0ID4gRElWIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25U
eXBlZAorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5n
ZSBmcm9tIDMgb2YgI3RleHQgPiBESVYgdG8gMyBvZiAjdGV4dCA+IERJViB0b0RPTVJhbmdlOnJh
bmdlIGZyb20gNCBvZiAjdGV4dCA+IERJViB0byA0IG9mICN0ZXh0ID4gRElWIGFmZmluaXR5Ok5T
U2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2Vi
Vmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorSG9vcmF5LCB0ZXN0IHdvcmtlZCEKKworCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXR5cGUtc3Bh
Y2VzLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRp
dmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLXR5cGUtc3BhY2VzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS10eXBlLXNw
YWNlcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJl
YS10eXBlLXNwYWNlcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACis8cD48dGV4
dGFyZWEgaWQ9InRhIj48L3RleHRhcmVhPjwvcD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K3ZhciB0YSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YSIpOwordGEuZm9jdXMoKTsKK2lm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBldmVudFNlbmRlci5rZXlEb3duKCcgJywgbmV3
IEFycmF5KCkpOworICAgIGV2ZW50U2VuZGVyLmtleURvd24oJyAnLCBuZXcgQXJyYXkoKSk7Cisg
ICAgZXZlbnRTZW5kZXIua2V5RG93bignICcsIG5ldyBBcnJheSgpKTsKKyAgICBldmVudFNlbmRl
ci5rZXlEb3duKCcgJywgbmV3IEFycmF5KCkpOworICAgIHZhciByZXN1bHQgPSB0YS52YWx1ZTsK
KyAgICBpZiAocmVzdWx0ID09ICIgICAgIikKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxwPkhv
b3JheSwgdGVzdCB3b3JrZWQhPC9wPiIpOworICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQud3Jp
dGUoIjxwcmU+VGVzdCBmYWlsZWQsIHJlc3VsdCB3YXMgJyIgKyByZXN1bHQgKyAiJy48L3ByZT4i
KTsKK30gZWxzZSB7CisgICAgZG9jdW1lbnQud3JpdGUoIjxwPlRlc3QgY2FuJ3QgcnVuIHdpdGhv
dXQgZXZlbnQgc2VuZGVyLCBwYXJ0IG9mIER1bXBSZW5kZXJUcmVlLjwvcD4iKTsKK30KKzwvc2Ny
aXB0PgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJl
YS10eXBlLXNwYWNlcy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRl
eHQvaHRtbApOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTc1
KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMzYgQEAK
KzIwMDYtMDctMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gZml4IDxyZGFyOi8vcHJvYmxl
bS80NjEzNjE2PiBSRUdSRVNTSU9OOiBzb21lIHNwYWNlcyB0eXBlZCBpbiA8dGV4dGFyZWE+IGFy
ZSBwb3N0ZWQgYXMgbm9uLWJyZWFraW5nIHNwYWNlcyAoOTYzMCkKKyAgICAgICAgICBodHRwOi8v
YnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTk2MzAKKyAgICAgICAgLSBh
bHNvIGZpeGVzIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTkzOQorICAgICAgICAgIFJFR1JFU1NJT046IFBhc3RpbmcgdGV4dCBpbnRvIG5hdGl2ZSB0ZXh0
IGFyZWEgd2l0aCBuZXdsaW5lIGF0IGVuZCBkb2VzIG5vdCBwcmVzZXJ2ZSBuZXdsaW5lCisgICAg
ICAgIC0gcmVtb3ZlZCBzb21lIHVzZXMgb2YgRGVwcmVjYXRlZFB0ckxpc3QgaW4gdGhlIG1hcmt1
cCBjb2RlCisKKyAgICAgICAgVGVzdDogZmFzdC9mb3Jtcy90ZXh0YXJlYS10eXBlLXNwYWNlcy5o
dG1sCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvdGV4dGFyZWEtcGFzdGUtbmV3bGluZS5odG1s
CisKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUhUTUwubW06ICgtW0RPTUhUTUxEb2N1bWVu
dCBjcmVhdGVEb2N1bWVudEZyYWdtZW50V2l0aFRleHQ6XSk6CisgICAgICAgIFVwZGF0ZWQgY2Fs
bCB0byBwYXNzIGEgcmFuZ2UgLS0gaW4gdGhpcyBjYXNlIGl0IGlzIHRoZSByYW5nZSBvZiB0aGUg
ZW50aXJlIGRvY3VtZW50LAorICAgICAgICBzbyB0aGlzIHdpbGwgbm90IGhhbmRsZSB0aGUgd2hp
dGVzcGFjZSBwcm9wZXJseS4KKworICAgICAgICAqIGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJp
ZGdlLmg6IEFkZGVkIHJhbmdlIGNvbnRleHQgcGFyYW1ldGVyIHRvIHRoZQorICAgICAgICBkb2N1
bWVudEZyYWdtZW50V2l0aFRleHQ6IG1ldGhvZCwgc28gd2UgY2FuIGhhbmRsZSB3aGl0ZXNwYWNl
IHByb3Blcmx5LgorICAgICAgICAqIGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlRnJhbWVCcmlkZ2Ugbm9kZXNGcm9tTGlzdDpdKTogQ2hhbmdlZCBm
cm9tIERlcHJlY2F0ZWRQdHJMaXN0IHRvIFZlY3Rvci4KKyAgICAgICAgKC1bV2ViQ29yZUZyYW1l
QnJpZGdlIG1hcmt1cFN0cmluZ0Zyb21Ob2RlOm5vZGVzOl0pOiBEaXR0by4KKyAgICAgICAgKC1b
V2ViQ29yZUZyYW1lQnJpZGdlIG1hcmt1cFN0cmluZ0Zyb21SYW5nZTpub2RlczpdKTogRGl0dG8u
CisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRnZSBkb2N1bWVudEZyYWdtZW50V2l0aFRleHQ6
aW5Db250ZXh0Ol0pOiBBZGRlZCByYW5nZSBjb250ZXh0CisgICAgICAgIHBhcmFtZXRlciAtLSBw
YXNzIGl0IG9uIHRvIGNyZWF0ZUZyYWdtZW50RnJvbVRleHQuCisgICAgICAgICgtW1dlYkNvcmVG
cmFtZUJyaWRnZSBkb2N1bWVudEZyYWdtZW50V2l0aE5vZGVzQXNQYXJhZ3JhcGhzOl0pOiBDaGFu
Z2VkIGZyb20KKyAgICAgICAgRGVwcmVjYXRlZFB0ckxpc3QgdG8gVmVjdG9yLgorICAgICAgICAo
LVtXZWJDb3JlRnJhbWVCcmlkZ2UgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0OnNlbGVjdFJlcGxh
Y2VtZW50OnNtYXJ0UmVwbGFjZTpdKToKKyAgICAgICAgUGFzcyB0aGUgcmFuZ2Ugb2YgdGhlIGN1
cnJlbnQgc2VsZWN0aW9uIGFzIGNvbnRleHQgd2hlbiBjcmVhdGluZyB0aGUgZnJhZ21lbnQuCisK
KyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOiAoV2ViQ29yZTo6UG9zaXRpb246OmluUmVuZGVy
ZWRUZXh0KTogUmVwbGFjZSByYW5nZSBjaGVjayB3aXRoCisgICAgICAgIGEgY2FsbCB0byB0aGUg
bmV3IGNvbnRhaW5zQ2FyZXRPZmZzZXQgZnVuY3Rpb24gLS0gaGVscHMgbWFrZSB0aGUgY2FyZXQg
d29yayByaWdodCB3aGVuCisgICAgICAgIGl0IGlzIHBhc3QgdGhlIGVuZCBvZiB0aGUgbGFzdCBs
aW5lIGluIGEgdGV4dGFyZWEuCisKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZWJhbGFu
Y2VXaGl0ZXNwYWNlQXQpOiBEb24ndCBkbyBhbnl0aGluZyBpZiB0aGUKKyAgICAgICAgc3R5bGUg
ZG9lcyBub3QgY2FsbCBmb3IgY29sbGFwc2luZyB3aGl0ZXNwYWNlLgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlYmFsYW5jZVdoaXRlc3BhY2UpOiBDYWxsIHJlcGxh
Y2VXaGl0ZXNwYWNlQXQKKyAgICAgICAgdG8gc2hhcmUgY29kZSwgaW5jbHVkaW5nIHRoZSBuZXcg
bG9naWMgbWVudGlvbmVkIGFib3ZlLgorCisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaW5lQnJl
YWtDb21tYW5kLmNwcDogKFdlYkNvcmU6Okluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkp
OgorICAgICAgICBVc2UgYSB0ZXh0IG5vZGUgaW5zdGVhZCBvZiBhIGJyZWFrIGVsZW1lbnQgd2hl
biBpbnNlcnRpbmcgYW5kIHRoZSBzdHlsZSBpcyBwcmVzZXJ2ZU5ld2xpbmUuCisKKyAgICAgICAg
KiBlZGl0aW5nL0pTRWRpdG9yLmNwcDogKFdlYkNvcmU6OmV4ZWNSZW1vdmVGb3JtYXQpOiBQYXNz
IHRoZSBzZWxlY3Rpb24gcmFuZ2UKKyAgICAgICAgdG8gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dC4K
KworICAgICAgICAqIGVkaXRpbmcvUmViYWxhbmNlV2hpdGVzcGFjZUNvbW1hbmQuY3BwOiAoV2Vi
Q29yZTo6UmViYWxhbmNlV2hpdGVzcGFjZUNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICBBc3Nl
cnQgdGhhdCB3ZSdyZSBpbiBhIHN0eWxlIHRoYXQgY29sbGFwc2VzIHdoaXRlc3BhY2UuIEl0J3Mg
dGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5CisgICAgICAgIG5vdCB0byBjYWxsIG90aGVyd2lz
ZS4KKworICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaDogUmVtb3Zl
ZCB1bnVzZWQgZGVzdHJ1Y3RvciwgdHlwZSwgaXNTaW5nbGVUZXh0Tm9kZSwKKyAgICAgICAgaXNU
cmVlRnJhZ21lbnQsIG1fdHlwZSwgYW5kIGFkZGVkIGEgY29udGV4dCBwYXJhbWV0ZXIgdG8gaW5l
cnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmcuCisgICAgICAgIEFsc28gY2hhbmdlZCB0aGUgY29u
c3RydWN0b3IgdG8gdGFrZSBhIHNlbGVjdGlvbiByYXRoZXIgdGhhbiBhIHBvaW50ZXIgdG8gdGhl
IHJvb3QKKyAgICAgICAgZWRpdGFibGUgZWxlbWVudCwgcmVwbGFjZWQgcmVtb3ZlRW5kQlJJZk5l
ZWRlZCB3aXRoIHNob3VsZFJlbW92ZUVuZEJSIGFuZCByZW1vdmVkIGFuCisgICAgICAgIHVudXNl
ZCBwYXJhbWV0ZXIgZnJvbSBzaG91bGRNZXJnZUVuZC4KKyAgICAgICAgKiBlZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VtZW50RnJh
Z21lbnQ6OlJlcGxhY2VtZW50RnJhZ21lbnQpOiBSZW1vdmVkIGNvZGUgdG8gc2V0IHVwIG1fdHlw
ZS4KKyAgICAgICAgQ29tcHV0ZSByb290IGVkaXRhYmxlIGVsZW1lbnQgZnJvbSBwYXNzZWQtaW4g
c2VsZWN0aW9uLiBVc2VkIHRoZSBzdGFydCBvZiB0aGUgc2VsZWN0aW9uCisgICAgICAgIGFzIGEg
YmFzZSBub2RlIGZvciBzdHlsZSBwdXJwb3NlcyBmb3IgdGhlIHRlc3QgcmVuZGVyaW5nLiBSZW1v
dmVkIHRoZSBzcGVjaWFsIGNhc2UKKyAgICAgICAgInNpbmdsZSB0ZXh0IG5vZGUiIGFsdGVybmF0
aXZlIHRvIGNyZWF0ZUZyYWdtZW50RnJvbVRleHQgaW4gdGhlIHBsYWluIHRleHQgY2FzZSwgc2lu
Y2UKKyAgICAgICAgY3JlYXRlRnJhZ21lbnRGcm9tVGV4dCBub3cgaGFuZGxlcyB0aGF0IGNvcnJl
Y3RseS4KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VtZW50RnJhZ21lbnQ6Omluc2VydEZyYWdt
ZW50Rm9yVGVzdFJlbmRlcmluZyk6IENvcHkgdGhlIHdoaXRlc3BhY2UKKyAgICAgICAgcHJvcGVy
dHkgZnJvbSB0aGUgc291cmNlIGxvY2F0aW9uIHdoZW4gY3JlYXRpbmcgYSB0ZW1wb3JhcnkgZWxl
bWVudCBmb3IgdGVzdCByZW5kZXJpbmcuCisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlbWVudEZy
YWdtZW50OjpzaG91bGRNZXJnZUVuZCk6IFJlbW92ZWQgdW5uZWVkZWQgYm9vbGVhbgorICAgICAg
ICBwYXJhbWV0ZXIgZnJhZ21lbnRIYWRJbnRlcmNoYW5nZU5ld2xpbmVBdEVuZCwgd2hpY2ggaXMg
YWx3YXlzIGZhbHNlLgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkpOiBVcGRhdGUgZm9yIFJlcGxhY2VtZW50RnJhZ21lbnQgY2hhbmdlcywKKyAgICAg
ICAgY2hhbmdlIGNvZGUgdG8gbm90IHJlbW92ZSBlbmQgQlIgd2hlbiBpdCBjYW4gYmUgcmUtdXNl
ZCBpbnN0ZWFkLCBkb24ndCBjYWxsIHRoZQorICAgICAgICBwYXJhZ3JhcGggc2VwYXJhdG9yIGlu
c2VydGlvbiB3aGVuIHRoZSBwb3NpdGlvbiBpcyBhdCB0aGUgc3RhcnQgb2YgYSBwYXJhZ3JhcGgg
YWxyZWFkeSwKKyAgICAgICAgcmVtb3ZlZCByZWR1bmRhbnQgY29tcHV0YXRpb24gb2YgaWRlbnRp
Y2FsICJuZXh0IiB2YWx1ZSwgcmVtb3ZlZCB1bm5lZWRlZCBib29sZWFuCisgICAgICAgIHBhcmFt
ZXRlciB0byBzaG91bGRNZXJnZUVuZCwgYWRkIGNhc2UgZm9yIG1lcmdpbmcgd2hlbiBhbGwgd2Ug
bmVlZCB0byBkbyBpcyB0byBkZWxldGUKKyAgICAgICAgYSBuZXdsaW5lIGNoYXJhY3RlciwgcmVt
b3ZlZCB1bm5lZWRlZCBjb2RlIHRvIHNldCBpbnNlcnRpb25Qb3MgYWZ0ZXIgYWxsIGNvZGUgdGhh
dCB1c2VzCisgICAgICAgIGl0LCBhbmQgIHVzZSBzcGFjZXMgaW5zdGVhZCBvZiBub24tYnJlYWtp
bmcgc3BhY2VzIHdoZW4gZG9pbmcgc21hcnQgcGFzdGUgaWYgdGhlCisgICAgICAgIGNvbnRleHQg
aXMgb25lIHdoZXJlIHdlIGRvIG5vdCBjb2xsYXBzZSB3aGl0ZSBzcGFjZS4KKyAgICAgICAgKFdl
YkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpzaG91bGRSZW1vdmVFbmRCUik6IFJlbmFt
ZWQgYW5kIGNoYW5nZWQgdG8gcmV0dXJuCisgICAgICAgIGEgYm9vbGVhbiBpbnN0ZWFkIG9mIGRv
aW5nIHRoZSByZW1vdmFsLgorCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDogVXNlIFZlY3Rv
ciBpbnN0ZWFkIG9mIERlcHJlY2F0ZWRQdHJMaXN0LiBDaGFuZ2UgdGhlCisgICAgICAgIGNyZWF0
ZUZyYWdtZW50RnJvbVRleHQgZnVuY3Rpb24gdG8gdGFrZSBhIHJhbmdlIGZvciBjb250ZXh0IGlu
c3RlYWQgb2YgYSBkb2N1bWVudC4KKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptYXJrdXApOiBVc2UgVmVjdG9yIGluc3RlYWQgb2YgRGVwcmVjYXRlZFB0
ckxpc3QuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXJrdXApOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVBhcmFncmFwaENvbnRlbnRzRnJvbVN0cmluZyk6IFJlbW92ZSB1bm5l
ZWRlZCBkb2N1bWVudCBwYXJhbWV0ZXIKKyAgICAgICAgYW5kIGNoYW5nZWQgYSBjb3VwbGUgcGxh
Y2VzIHRvIHVzZSBpc0VtcHR5IGluc3RlYWQgb2YgY29tcGFyaW5nIHdpdGggIiIuCisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21UZXh0KTogR2l2ZW4gdGhlIG5ldyBjb250ZXh0
IHBhcmFtZXRlciwgaWYgdGhlIGNvbnRleHQKKyAgICAgICAgaXMgb25lIHRoYXQgcHJlc2VydmVz
IG5ld2xpbmVzLCB0aGVuIHVzZSAiXG4iIGluc3RlYWQgb2YgPGJyPiBlbGVtZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbU5vZGVzKTogVXNlIFZlY3RvciBpbnN0ZWFk
IG9mIERlcHJlY2F0ZWRQdHJMaXN0LgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6
IChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0KTogRG8gbm90IHVzZSA8YnI+Cisg
ICAgICAgIGVsZW1lbnRzIGlmIHRoZSBjb250ZXh0IG9mIHRoaXMgbm9kZSBpcyBvbmUgd2hlcmUg
d2UgcHJlc2VydmUgbmV3bGluZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5oOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDogKFdlYkNvcmU6Oklu
bGluZVRleHRCb3g6OmNvbnRhaW5zQ2FyZXRPZmZzZXQpOgorICAgICAgICBBZGRlZC4gSW1wbGVt
ZW50cyB0aGUgYXBwcm9wcmlhdGUgcnVsZSBmb3IgZGV0ZXJtaW5pbmcgaWYgYSBjYXJldCBwb3Np
dGlvbiBpcworICAgICAgICBpbiB0aGlzIGxpbmUgb3Igbm90LiBSZXR1cm5zIHRydWUgZm9yIGJv
dGggb25lIGxpbmUgYW5kIHRoZSBuZXh0IGluIGNhc2VzIHdoZXJlCisgICAgICAgIGFmZmluaXR5
IG11c3QgYmUgY29uc2lkZXJlZCB0byBkZXRlcm1pbmUgd2hpY2ggbGluZSB0aGUgY2FyZXQgaXMg
b24uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOiBNYWtlIGF0TGluZVdyYXAg
bm8gbG9uZ2VyIGJlIGEgbWVtYmVyIGZ1bmN0aW9uLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmF0TGluZVdyYXApOiBSZW1vdmUgc3BlY2lh
bCBydWxlIGFib3V0IHByZXNlcnZlTmV3bGluZSBhbmQgaXNMaW5lQnJlYWssCisgICAgICAgIHdo
aWNoIHdpbGwgbm8gbG9uZ2VyIGFwcGx5IGR1ZSB0byB0aGUgbmV3IGNvbnRhaW5zQ2FyZXRPZmZz
ZXQgZnVuY3Rpb24gbG9naWMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjYXJldFJl
Y3QpOiBVc2UgY29udGFpbnNDYXJldE9mZnNldC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OmlubGluZUJveCk6IERpdHRvLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjp1cGRhdGVG
cm9tRWxlbWVudCk6IE1ha2UgYSBwbGFjZWhvbGRlciA8YnI+IGVsZW1lbnQKKyAgICAgICAgYWZ0
ZXIgY2FsbGluZyBzZXRJbm5lclRleHQgc28gdGhhdCB0aGUgbGFzdCBuZXdsaW5lIGluIHRoZSBz
dHJpbmcgaGFzIHRoZSBlZmZlY3QKKyAgICAgICAgd2UgZXhwZWN0IG91dHNpZGUgdGhlIEhUTUwg
d29ybGQgKGFuIGFkZGl0aW9uYWwgbGluZSkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
Q29udHJvbDo6c2V0U2VsZWN0aW9uUmFuZ2UpOiBTZXQgZ3JhbnVsYXJpdHkgb2YgdGhlIHNlbGVj
dGlvbgorICAgICAgICB0b28uIFRoZSBsYXlvdXQgdGVzdHMgY2F1Z2h0IHRoaXMgcHJvYmxlbSwg
d2hpY2ggbmVlZHMgYSBiZXR0ZXIgc29sdXRpb24gbG9uZyB0ZXJtLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dENvbnRyb2w6OnRleHQpOiBDYWxsIHRleHRDb250ZW50IHdpdGggdGhlIHBh
cmFtZXRlciBmYWxzZQorICAgICAgICBzbyBpdCB3aWxsIG5vdCBpbmNsdWRlIG5ld2xpbmVzIGZv
ciA8YnI+IGVsZW1lbnRzLiBOb3cgdGhlIG9ubHkgPGJyPiBlbGVtZW50CisgICAgICAgIHRoYXQg
d2lsbCBldmVyIGJlIGluIHRoZSBzaGFkb3cgRE9NIHRyZWUgaXMgdGhlIG9uZSB0byBwcmV2ZW50
IGNvbGxhcHNpbmcsIGFuZAorICAgICAgICB0aGF0IG9uZSBzaG91bGQgbm90IHNob3cgdXAgaW4g
dGhlIHRleHQgdmFsdWUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvYmlkaS5jcHA6IChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lQnJlYWspOiBUb29rIGEgcnVsZQorICAgICAgICB0
aGF0IHNwZWNpZmljYWxseSBjYWxsZWQgb3V0IHRoZSBwcmUgd2hpdGVzcGFjZSBtb2RlIGFuZCBt
YWRlIGl0IHdvcmsgZm9yIGFsbAorICAgICAgICB0aGUgbW9kZXMgdGhhdCBwcmVzZXJ2ZSBuZXds
aW5lcy4gVGhpcyBtYWtlcyBzdXJlIHdlIGdldCBhIGxhc3QgbGluZSBib3ggZm9yCisgICAgICAg
IHRleHQgYWZ0ZXIgdGhlIGxhc3QgIlxuIiBldmVuIGluIGNhc2VzIHdoZXJlIHRoZXJlIGlzIG5v
IDxicj4gYWZ0ZXJ3YXJkLgorCisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmZpeHVw
V2hpdGVzcGFjZSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvckNv
bW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICBBZGRlZCBhc3NlcnRpb25zIHRvIG1ha2Ugc3VyZSB3
ZSBkb24ndCBkbyBhbnl0aGluZyB3aGVuIHdlJ3JlIG5vdCBjb2xsYXBzaW5nCisgICAgICAgIHdo
aXRlc3BhY2UuCisKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOiAoV2Vi
Q29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6c2V0RGVmYXVsdFZhbHVlKToKKyAgICAgICAgQ2hh
bmdlZCB0byB1c2UgVmVjdG9yIGluc3RlYWQgb2YgRGVwcmVjYXRlZFB0ckxpc3QuCisKKyAgICAg
ICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHA6IFJlbW92ZWQgb2Jzb2xldGUgY29tbWVu
dC4KKworICAgICAgICAqIGxvYWRlci9DYWNoZS5oOiBSZW1vdmVkIGEgc3RyYXkgaW5jbHVkZS4K
KwogMjAwNi0wNy0yMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQG55cG9wLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01I
VE1MLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCShy
ZXZpc2lvbiAxNTU2OSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiwyMiArMjYsMjMgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiRE9NSFRNTC5oIgogCisjaW1wb3J0ICJET01FeHRlbnNpb25zLmgiCiAjaW1wb3J0ICJET01I
VE1MSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Qcml2
YXRlLmgiCi0jaW1wb3J0ICJET01FeHRlbnNpb25zLmgiCiAjaW1wb3J0ICJEb2N1bWVudEZyYWdt
ZW50LmgiCiAjaW1wb3J0ICJGb3VuZGF0aW9uRXh0cmFzLmgiCisjaW1wb3J0ICJGcmFtZVZpZXcu
aCIKICNpbXBvcnQgIkhUTUxBcHBsZXRFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MQXJlYUVsZW1l
bnQuaCIKKyNpbXBvcnQgIkhUTUxCUkVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxCYXNlRWxlbWVu
dC5oIgogI2ltcG9ydCAiSFRNTEJhc2VGb250RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTEJvZHlF
bGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MQlJFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MQnV0dG9u
RWxlbWVudC5oIgorI2ltcG9ydCAiSFRNTERMaXN0RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTERp
cmVjdG9yeUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxEaXZFbGVtZW50LmgiCi0jaW1wb3J0ICJI
VE1MRExpc3RFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MRG9jdW1lbnQuaCIKICNpbXBvcnQgIkhU
TUxFbWJlZEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKQEAgLTQ5
LDQ3ICs1MCw0NyBAQAogI2ltcG9ydCAiSFRNTEZvcm1Db2xsZWN0aW9uLmgiCiAjaW1wb3J0ICJI
VE1MRm9ybUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxGcmFtZVNldEVsZW1lbnQuaCIKKyNpbXBv
cnQgIkhUTUxIUkVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxIZWFkRWxlbWVudC5oIgogI2ltcG9y
dCAiSFRNTEhlYWRpbmdFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MSFJFbGVtZW50LmgiCiAjaW1w
b3J0ICJIVE1MSHRtbEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxJRnJhbWVFbGVtZW50LmgiCiAj
aW1wb3J0ICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MSXNJbmRleEVsZW1lbnQu
aCIKKyNpbXBvcnQgIkhUTUxMSUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxMYWJlbEVsZW1lbnQu
aCIKICNpbXBvcnQgIkhUTUxMZWdlbmRFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MTElFbGVtZW50
LmgiCiAjaW1wb3J0ICJIVE1MTGlua0VsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxNYXBFbGVtZW50
LmgiCiAjaW1wb3J0ICJIVE1MTWVudUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxNZXRhRWxlbWVu
dC5oIgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCi0jaW1wb3J0ICJIVE1MT2JqZWN0RWxlbWVudC5o
IgogI2ltcG9ydCAiSFRNTE9MaXN0RWxlbWVudC5oIgorI2ltcG9ydCAiSFRNTE9iamVjdEVsZW1l
bnQuaCIKICNpbXBvcnQgIkhUTUxPcHRHcm91cEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxPcHRp
b25FbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKLSNpbXBvcnQg
IkhUTUxQYXJhbUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxQYXJhZ3JhcGhFbGVtZW50LmgiCisj
aW1wb3J0ICJIVE1MUGFyYW1FbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MUHJlRWxlbWVudC5oIgog
I2ltcG9ydCAiSFRNTFNjcmlwdEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxTZWxlY3RFbGVtZW50
LmgiCiAjaW1wb3J0ICJIVE1MU3R5bGVFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MVGFibGVFbGVt
ZW50LmgiCiAjaW1wb3J0ICJIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIgogI2ltcG9ydCAiSFRN
TFRhYmxlQ2VsbEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUYWJsZUNvbEVsZW1lbnQuaCIKKyNp
bXBvcnQgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUYWJsZVJvd0VsZW1lbnQu
aCIKICNpbXBvcnQgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MVGV4
dEFyZWFFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MVGl0bGVFbGVtZW50LmgiCiAjaW1wb3J0ICJI
VE1MVUxpc3RFbGVtZW50LmgiCisjaW1wb3J0ICJLVVJMLmgiCiAjaW1wb3J0ICJOYW1lTm9kZUxp
c3QuaCIKLSNpbXBvcnQgIm1hcmt1cC5oIgorI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJl
bmRlclRleHRDb250cm9sLmgiCi0jaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgImNzc2hl
bHBlci5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAibWFya3VwLmgiCiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTYwNSw3ICs2
MDYsOCBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiAtIChET01Eb2N1bWVudEZyYWdt
ZW50ICopY3JlYXRlRG9jdW1lbnRGcmFnbWVudFdpdGhUZXh0OihOU1N0cmluZyAqKXRleHQKIHsK
LSAgICByZXR1cm4gW0RPTURvY3VtZW50RnJhZ21lbnQgX2RvY3VtZW50RnJhZ21lbnRXaXRoOmNy
ZWF0ZUZyYWdtZW50RnJvbVRleHQoW3NlbGYgX2RvY3VtZW50XSwgRGVwcmVjYXRlZFN0cmluZzo6
ZnJvbU5TU3RyaW5nKHRleHQpKS5nZXQoKV07CisgICAgLy8gRklYTUU6IFNpbmNlIHRoaXMgaXMg
bm90IGEgY29udGV4dHVhbCBmcmFnbWVudCwgaXQgd29uJ3QgaGFuZGxlIHdoaXRlc3BhY2UgcHJv
cGVybHkuCisgICAgcmV0dXJuIFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50
V2l0aDpjcmVhdGVGcmFnbWVudEZyb21UZXh0KFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZVJhbmdl
KCkuZ2V0KCksIHRleHQpLmdldCgpXTsKIH0KIAogQGVuZApJbmRleDogV2ViQ29yZS9icmlkZ2Uv
bWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL21h
Yy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAkocmV2aXNpb24gMTU1NjkpCisrKyBXZWJDb3JlL2JyaWRn
ZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxOCw3ICs0MTgs
NyBAQCB0eXBlZGVmIGVudW0gewogLSAoTlNSYW5nZSljb252ZXJ0RE9NUmFuZ2VUb05TUmFuZ2U6
KERPTVJhbmdlICopcmFuZ2U7CiAKIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKilkb2N1bWVudEZy
YWdtZW50V2l0aE1hcmt1cFN0cmluZzooTlNTdHJpbmcgKiltYXJrdXBTdHJpbmcgYmFzZVVSTFN0
cmluZzooTlNTdHJpbmcgKiliYXNlVVJMU3RyaW5nOwotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAq
KWRvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0OworLSAoRE9NRG9jdW1l
bnRGcmFnbWVudCAqKWRvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0IGlu
Q29udGV4dDooRE9NUmFuZ2UgKiljb250ZXh0OwogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKWRv
Y3VtZW50RnJhZ21lbnRXaXRoTm9kZXNBc1BhcmFncmFwaHM6KE5TQXJyYXkgKilub2RlczsKIAog
LSAodm9pZClyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50OihET01Eb2N1bWVudEZyYWdtZW50
ICopZnJhZ21lbnQgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1lbnQgc21h
cnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOihCT09MKW1hdGNoU3R5bGU7
CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHJldmlzaW9u
IDE1NTY5KQorKysgV2ViQ29yZS9icmlkZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNzcxLDE5ICs3NzEsMTkgQEAgc3RhdGljIGlubGluZSBXZWJDb3JlRnJh
bWVCcmlkZ2UgKmJyaWRnZQogICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudFR5cGVTdHJpbmco
KSArIG1hcmt1cFN0cmluZzsKIH0KIAotLSAoTlNBcnJheSAqKW5vZGVzRnJvbUxpc3Q6KERlcHJl
Y2F0ZWRQdHJMaXN0PE5vZGU+ICopbm9kZUxpc3QKKy0gKE5TQXJyYXkgKilub2Rlc0Zyb21MaXN0
OihWZWN0b3I8Tm9kZSo+ICopbm9kZXNWZWN0b3IKIHsKLSAgICBOU011dGFibGVBcnJheSAqbm9k
ZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6bm9kZUxpc3QtPmNvdW50KCld
OwotICAgIGZvciAoRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxOb2RlPiBpKCpub2RlTGlzdCk7
IGkuY3VycmVudCgpOyArK2kpCi0gICAgICAgIFtub2RlcyBhZGRPYmplY3Q6W0RPTU5vZGUgX25v
ZGVXaXRoOmkuY3VycmVudCgpXV07Ci0KKyAgICBzaXplX3Qgc2l6ZSA9IG5vZGVzVmVjdG9yLT5z
aXplKCk7CisgICAgTlNNdXRhYmxlQXJyYXkgKm5vZGVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5
V2l0aENhcGFjaXR5OnNpemVdOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQorICAgICAgICBbbm9kZXMgYWRkT2JqZWN0OltET01Ob2RlIF9ub2RlV2l0aDooKm5vZGVzVmVj
dG9yKVtpXV1dOwogICAgIHJldHVybiBub2RlczsKIH0KIAogLSAoTlNTdHJpbmcgKiltYXJrdXBT
dHJpbmdGcm9tTm9kZTooRE9NTm9kZSAqKW5vZGUgbm9kZXM6KE5TQXJyYXkgKiopbm9kZXMKIHsK
ICAgICAvLyBGSVhNRTogVGhpcyBpcyBuZXZlciAiZm9yIGludGVyY2hhbmdlIi4gSXMgdGhhdCBy
aWdodD8gU2VlIHRoZSBuZXh0IG1ldGhvZC4KLSAgICBEZXByZWNhdGVkUHRyTGlzdDxOb2RlPiBu
b2RlTGlzdDsKKyAgICBWZWN0b3I8Tm9kZSo+IG5vZGVMaXN0OwogICAgIE5TU3RyaW5nICptYXJr
dXBTdHJpbmcgPSBjcmVhdGVNYXJrdXAoW25vZGUgX25vZGVdLCBJbmNsdWRlTm9kZSwgbm9kZXMg
PyAmbm9kZUxpc3QgOiAwKS5nZXROU1N0cmluZygpOwogICAgIGlmIChub2RlcykKICAgICAgICAg
Km5vZGVzID0gW3NlbGYgbm9kZXNGcm9tTGlzdDombm9kZUxpc3RdOwpAQCAtNzk0LDcgKzc5NCw3
IEBAIHN0YXRpYyBpbmxpbmUgV2ViQ29yZUZyYW1lQnJpZGdlICpicmlkZ2UKIC0gKE5TU3RyaW5n
ICopbWFya3VwU3RyaW5nRnJvbVJhbmdlOihET01SYW5nZSAqKXJhbmdlIG5vZGVzOihOU0FycmF5
ICoqKW5vZGVzCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYWx3YXlzICJmb3IgaW50ZXJjaGFu
Z2UiLiBJcyB0aGF0IHJpZ2h0PyBTZWUgdGhlIHByZXZpb3VzIG1ldGhvZC4KLSAgICBEZXByZWNh
dGVkUHRyTGlzdDxOb2RlPiBub2RlTGlzdDsKKyAgICBWZWN0b3I8Tm9kZSo+IG5vZGVMaXN0Owog
ICAgIE5TU3RyaW5nICptYXJrdXBTdHJpbmcgPSBjcmVhdGVNYXJrdXAoW3JhbmdlIF9yYW5nZV0s
IG5vZGVzID8gJm5vZGVMaXN0IDogMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSkuZ2V0TlNTdHJp
bmcoKTsKICAgICBpZiAobm9kZXMpCiAgICAgICAgICpub2RlcyA9IFtzZWxmIG5vZGVzRnJvbUxp
c3Q6Jm5vZGVMaXN0XTsKQEAgLTE5NDMsMjggKzE5NDMsMjMgQEAgc3RhdGljIEhUTUxGb3JtRWxl
bWVudCAqZm9ybUVsZW1lbnRGcm9tRAogICAgICAgICBEZXByZWNhdGVkU3RyaW5nOjpmcm9tTlNT
dHJpbmcobWFya3VwU3RyaW5nKSwgRGVwcmVjYXRlZFN0cmluZzo6ZnJvbU5TU3RyaW5nKGJhc2VV
UkxTdHJpbmcpKS5nZXQoKV07CiB9CiAKLS0gKERPTURvY3VtZW50RnJhZ21lbnQgKilkb2N1bWVu
dEZyYWdtZW50V2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dAorLSAoRE9NRG9jdW1lbnRGcmFnbWVu
dCAqKWRvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0IGluQ29udGV4dDoo
RE9NUmFuZ2UgKiljb250ZXh0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5kb2N1
bWVudCgpIHx8ICF0ZXh0KQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICByZXR1cm4gW0RP
TURvY3VtZW50RnJhZ21lbnQgX2RvY3VtZW50RnJhZ21lbnRXaXRoOmNyZWF0ZUZyYWdtZW50RnJv
bVRleHQobV9mcmFtZS0+ZG9jdW1lbnQoKSwgRGVwcmVjYXRlZFN0cmluZzo6ZnJvbU5TU3RyaW5n
KHRleHQpKS5nZXQoKV07CisgICAgcmV0dXJuIFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVu
dEZyYWdtZW50V2l0aDpjcmVhdGVGcmFnbWVudEZyb21UZXh0KFtjb250ZXh0IF9yYW5nZV0sIERl
cHJlY2F0ZWRTdHJpbmc6OmZyb21OU1N0cmluZyh0ZXh0KSkuZ2V0KCldOwogfQogCiAtIChET01E
b2N1bWVudEZyYWdtZW50ICopZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdyYXBoczoo
TlNBcnJheSAqKW5vZGVzCiB7Ci0gICAgTlNFbnVtZXJhdG9yICpub2RlRW51bSA9IFtub2RlcyBv
YmplY3RFbnVtZXJhdG9yXTsKLSAgICBET01Ob2RlICpub2RlOwotICAgIERlcHJlY2F0ZWRQdHJM
aXN0PE5vZGU+IG5vZGVMaXN0OwotICAgIAogICAgIGlmICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+
ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgd2hpbGUgKChub2RlID0g
W25vZGVFbnVtIG5leHRPYmplY3RdKSkgewotICAgICAgICBub2RlTGlzdC5hcHBlbmQoW25vZGUg
X25vZGVdKTsKLSAgICB9CisgICAgTlNFbnVtZXJhdG9yICpub2RlRW51bSA9IFtub2RlcyBvYmpl
Y3RFbnVtZXJhdG9yXTsKKyAgICBWZWN0b3I8Tm9kZSo+IG5vZGVzVmVjdG9yOworICAgIERPTU5v
ZGUgKm5vZGU7CisgICAgd2hpbGUgKChub2RlID0gW25vZGVFbnVtIG5leHRPYmplY3RdKSkKKyAg
ICAgICAgbm9kZXNWZWN0b3IuYXBwZW5kKFtub2RlIF9ub2RlXSk7CiAgICAgCi0gICAgcmV0dXJu
IFtET01Eb2N1bWVudEZyYWdtZW50IF9kb2N1bWVudEZyYWdtZW50V2l0aDpjcmVhdGVGcmFnbWVu
dEZyb21Ob2RlTGlzdChtX2ZyYW1lLT5kb2N1bWVudCgpLCBub2RlTGlzdCkuZ2V0KCldOworICAg
IHJldHVybiBbRE9NRG9jdW1lbnRGcmFnbWVudCBfZG9jdW1lbnRGcmFnbWVudFdpdGg6Y3JlYXRl
RnJhZ21lbnRGcm9tTm9kZXMobV9mcmFtZS0+ZG9jdW1lbnQoKSwgbm9kZXNWZWN0b3IpLmdldCgp
XTsKIH0KIAogLSAodm9pZClyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50OihET01Eb2N1bWVu
dEZyYWdtZW50ICopZnJhZ21lbnQgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFj
ZW1lbnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOihCT09MKW1h
dGNoU3R5bGUKQEAgLTE5OTEsNyArMTk4Niw5IEBAIHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQgKmZv
cm1FbGVtZW50RnJvbUQKIAogLSAodm9pZClyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQ6KE5TU3Ry
aW5nICopdGV4dCBzZWxlY3RSZXBsYWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNlbWVudCBzbWFy
dFJlcGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlCiB7Ci0gICAgW3NlbGYgcmVwbGFjZVNlbGVjdGlv
bldpdGhGcmFnbWVudDpbc2VsZiBkb2N1bWVudEZyYWdtZW50V2l0aFRleHQ6dGV4dF0gc2VsZWN0
UmVwbGFjZW1lbnQ6c2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOnNtYXJ0UmVwbGFjZSBt
YXRjaFN0eWxlOllFU107CisgICAgW3NlbGYgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudDpb
c2VsZiBkb2N1bWVudEZyYWdtZW50V2l0aFRleHQ6dGV4dAorICAgICAgICBpbkNvbnRleHQ6W0RP
TVJhbmdlIF9yYW5nZVdpdGg6bV9mcmFtZS0+c2VsZWN0aW9uKCkudG9SYW5nZSgpLmdldCgpXV0K
KyAgICAgICAgc2VsZWN0UmVwbGFjZW1lbnQ6c2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNl
OnNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOllFU107CiB9CiAKIC0gKGJvb2wpY2FuSW5jcmVhc2VT
ZWxlY3Rpb25MaXN0TGV2ZWwKSW5kZXg6IFdlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHJldmlzaW9uIDE1NTY5KQorKysgV2Vi
Q29yZS9kb20vUG9zaXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODIsNyArNDgyLDcgQEAg
Ym9vbCBQb3NpdGlvbjo6aW5SZW5kZXJlZFRleHQoKSBjb25zdAogICAgICAgICAgICAgLy8gbm90
IHJlbmRlcmVkLiBSZXR1cm4gZmFsc2UuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKG9mZnNldCgpID49IGJveC0+bV9zdGFydCAmJiBvZmZzZXQoKSA8
PSBib3gtPm1fc3RhcnQgKyBib3gtPm1fbGVuKQorICAgICAgICBpZiAoYm94LT5jb250YWluc0Nh
cmV0T2Zmc2V0KG9mZnNldCgpKSkKICAgICAgICAgICAgIC8vIFJldHVybiBmYWxzZSBmb3Igb2Zm
c2V0cyBpbnNpZGUgY29tcG9zZWQgY2hhcmFjdGVycy4KICAgICAgICAgICAgIHJldHVybiBvZmZz
ZXQoKSA9PSAwIHx8IG9mZnNldCgpID09IHRleHRSZW5kZXJlci0+bmV4dE9mZnNldCh0ZXh0UmVu
ZGVyZXItPnByZXZpb3VzT2Zmc2V0KG9mZnNldCgpKSk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiAxNTU2OSkKKysrIFdlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
Miw4ICszNzIsMTYgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c2V0Tm9kZUF0dHJpYgog
ICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKGNtZCk7CiB9CiAKLXZvaWQgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6OnJlYmFsYW5jZVdoaXRlc3BhY2VBdChjb25zdCBQb3NpdGlvbiAmcG9zaXRpb24p
Cit2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZWJhbGFuY2VXaGl0ZXNwYWNlQXQoY29uc3Qg
UG9zaXRpb24mIHBvc2l0aW9uKQogeworICAgIE5vZGUqIHRleHROb2RlID0gcG9zaXRpb24ubm9k
ZSgpOworICAgIGlmICghdGV4dE5vZGUgfHwgIXRleHROb2RlLT5pc1RleHROb2RlKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8VGV4dCo+KHRleHROb2RlKS0+bGVuZ3Ro
KCkgPT0gMCkKKyAgICAgICAgcmV0dXJuOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0
ZXh0Tm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAocmVuZGVyZXIgJiYgIXJlbmRlcmVyLT5zdHls
ZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIEVkaXRDb21t
YW5kUHRyIGNtZChuZXcgUmViYWxhbmNlV2hpdGVzcGFjZUNvbW1hbmQoZG9jdW1lbnQoKSwgcG9z
aXRpb24pKTsKICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShjbWQpOyAgICAKIH0KQEAgLTM4
MiwxMiArMzkwLDkgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdAog
ewogICAgIFNlbGVjdGlvbiBzZWxlY3Rpb24gPSBlbmRpbmdTZWxlY3Rpb24oKTsKICAgICBpZiAo
c2VsZWN0aW9uLmlzQ2FyZXRPclJhbmdlKCkpIHsKLSAgICAgICAgRWRpdENvbW1hbmRQdHIgc3Rh
cnRDbWQobmV3IFJlYmFsYW5jZVdoaXRlc3BhY2VDb21tYW5kKGRvY3VtZW50KCksIGVuZGluZ1Nl
bGVjdGlvbigpLnN0YXJ0KCkpKTsKLSAgICAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoc3Rh
cnRDbWQpOwotICAgICAgICBpZiAoc2VsZWN0aW9uLmlzUmFuZ2UoKSkgewotICAgICAgICAgICAg
RWRpdENvbW1hbmRQdHIgZW5kQ21kKG5ldyBSZWJhbGFuY2VXaGl0ZXNwYWNlQ29tbWFuZChkb2N1
bWVudCgpLCBlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKSkpOwotICAgICAgICAgICAgYXBwbHlDb21t
YW5kVG9Db21wb3NpdGUoZW5kQ21kKTsKLSAgICAgICAgfQorICAgICAgICByZWJhbGFuY2VXaGl0
ZXNwYWNlQXQoZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7CisgICAgICAgIGlmIChzZWxlY3Rp
b24uaXNSYW5nZSgpKQorICAgICAgICAgICAgcmViYWxhbmNlV2hpdGVzcGFjZUF0KGVuZGluZ1Nl
bGVjdGlvbigpLmVuZCgpKTsKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxl
dGVTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDE1NTY5KQorKysgV2ViQ29yZS9lZGl0
aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTUsMTEg
KzM5NSwxMyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmZpeHVwV2hpdGVzCiAgICAg
dXBkYXRlTGF5b3V0KCk7CiAgICAgLy8gRklYTUU6IGlzUmVuZGVyZWRDaGFyYWN0ZXIgc2hvdWxk
IGJlIHJlbW92ZWQsIGFuZCB3ZSBzaG91bGQgdXNlIFZpc2libGVQb3NpdGlvbjo6Y2hhcmFjdGVy
QWZ0ZXIgYW5kIFZpc2libGVQb3NpdGlvbjo6Y2hhcmFjdGVyQmVmb3JlCiAgICAgaWYgKG1fbGVh
ZGluZ1doaXRlc3BhY2UuaXNOb3ROdWxsKCkgJiYgIW1fbGVhZGluZ1doaXRlc3BhY2UuaXNSZW5k
ZXJlZENoYXJhY3RlcigpKSB7Ci0gICAgICAgIFRleHQgKnRleHROb2RlID0gc3RhdGljX2Nhc3Q8
VGV4dCAqPihtX2xlYWRpbmdXaGl0ZXNwYWNlLm5vZGUoKSk7CisgICAgICAgIFRleHQqIHRleHRO
b2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KG1fbGVhZGluZ1doaXRlc3BhY2Uubm9kZSgpKTsKKyAg
ICAgICAgQVNTRVJUKCF0ZXh0Tm9kZS0+cmVuZGVyZXIoKSB8fCB0ZXh0Tm9kZS0+cmVuZGVyZXIo
KS0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpOwogICAgICAgICByZXBsYWNlVGV4dElu
Tm9kZSh0ZXh0Tm9kZSwgbV9sZWFkaW5nV2hpdGVzcGFjZS5vZmZzZXQoKSwgMSwgbm9uQnJlYWtp
bmdTcGFjZVN0cmluZygpKTsKICAgICB9CiAgICAgaWYgKG1fdHJhaWxpbmdXaGl0ZXNwYWNlLmlz
Tm90TnVsbCgpICYmICFtX3RyYWlsaW5nV2hpdGVzcGFjZS5pc1JlbmRlcmVkQ2hhcmFjdGVyKCkp
IHsKLSAgICAgICAgVGV4dCAqdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KG1fdHJhaWxp
bmdXaGl0ZXNwYWNlLm5vZGUoKSk7CisgICAgICAgIFRleHQqIHRleHROb2RlID0gc3RhdGljX2Nh
c3Q8VGV4dCo+KG1fdHJhaWxpbmdXaGl0ZXNwYWNlLm5vZGUoKSk7CisgICAgICAgIEFTU0VSVCgh
dGV4dE5vZGUtPnJlbmRlcmVyKCkgfHx0ZXh0Tm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Y29s
bGFwc2VXaGl0ZVNwYWNlKCkpOwogICAgICAgICByZXBsYWNlVGV4dEluTm9kZSh0ZXh0Tm9kZSwg
bV90cmFpbGluZ1doaXRlc3BhY2Uub2Zmc2V0KCksIDEsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmco
KSk7CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAJKHJldmlz
aW9uIDE1NTY5KQorKysgV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgRGVwcmVjYXRlZFN0cmluZyBjb252ZXJ0ZWRTcGFj
ZVN0cmluZygpIAogCiB9IC8vIGVuZCBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLS8vIEZJWE1FOiBj
b252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0IHNob3VsZCBwcm9iYWJseSBiZSBpbiB0
aGUga2h0bWwgbmFtZXNwYWNlLgogLy8gRklYTUU6IENhbid0IHJlYWxseSBkbyB0aGlzIHdvcmsg
d2l0aG91dCB0YWtpbmcgd2hpdGVzcGFjZSBtb2RlIGludG8gYWNjb3VudC4KIC8vIFRoaXMgbWVh
bnMgdGhhdCBldmVudHVhbGx5IHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgZWxpbWluYXRlZCBv
ciBhdCBsZWFzdCBoYXZlCiAvLyBpdHMgcGFyYW1ldGVycyBjaGFuZ2VkIGJlY2F1c2UgaXQgY2Fu
J3QgZG8gaXRzIHdvcmsgb24gdGhlIHN0cmluZyB3aXRob3V0IGtub3dpbmcKSW5kZXg6IFdlYkNv
cmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAJKHJldmlzaW9uIDE1NTY5KQor
KysgV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw0MSArODUsNDkgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0Fw
cGx5KCkKICAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZWZQdHI8RWxlbWVudD4gYnJlYWtOb2RlID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50
KCkpOwotICAgIE5vZGUqIG5vZGVUb0luc2VydCA9IGJyZWFrTm9kZS5nZXQoKTsKLSAgICAKICAg
ICBQb3NpdGlvbiBwb3Moc2VsZWN0aW9uLnN0YXJ0KCkudXBzdHJlYW0oKSk7CiAKICAgICBwb3Mg
PSBwb3NpdGlvbkF2b2lkaW5nU3BlY2lhbEVsZW1lbnRCb3VuZGFyeShwb3MpOwogCi0gICAgaWYg
KGlzVGFiU3BhblRleHROb2RlKHBvcy5ub2RlKCkpKSB7Ci0gICAgICAgIGluc2VydE5vZGVBdFRh
YlNwYW5Qb3NpdGlvbihub2RlVG9JbnNlcnQsIHBvcyk7CisgICAgTm9kZSogc3R5bGVOb2RlID0g
cG9zLm5vZGUoKTsKKyAgICBib29sIGlzVGFiU3BhbiA9IGlzVGFiU3BhblRleHROb2RlKHN0eWxl
Tm9kZSk7CisgICAgaWYgKGlzVGFiU3BhbikKKyAgICAgICAgc3R5bGVOb2RlID0gc3R5bGVOb2Rl
LT5wYXJlbnROb2RlKCktPnBhcmVudE5vZGUoKTsKKyAgICBSZW5kZXJPYmplY3QqIHN0eWxlUmVu
ZGVyZXIgPSBzdHlsZU5vZGUtPnJlbmRlcmVyKCk7CisgICAgYm9vbCB1c2VCcmVha0VsZW1lbnQg
PSAhc3R5bGVSZW5kZXJlciB8fCAhc3R5bGVSZW5kZXJlci0+c3R5bGUoKS0+cHJlc2VydmVOZXds
aW5lKCk7CisKKyAgICBSZWZQdHI8Tm9kZT4gbm9kZVRvSW5zZXJ0OworICAgIGlmICh1c2VCcmVh
a0VsZW1lbnQpCisgICAgICAgIG5vZGVUb0luc2VydCA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1
bWVudCgpKTsKKyAgICBlbHNlCisgICAgICAgIG5vZGVUb0luc2VydCA9IGRvY3VtZW50KCktPmNy
ZWF0ZVRleHROb2RlKCJcbiIpOworICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBtZXJnZSB0ZXh0
IG5vZGVzIHdoZW4gaW5zZXJ0aW5nIGp1c3QgYWZ0ZXIgb3IgYmVmb3JlIHRleHQuCisgICAgCisg
ICAgaWYgKGlzVGFiU3BhbikgeworICAgICAgICBpbnNlcnROb2RlQXRUYWJTcGFuUG9zaXRpb24o
bm9kZVRvSW5zZXJ0LmdldCgpLCBwb3MpOwogICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oUG9z
aXRpb24obm9kZVRvSW5zZXJ0LT50cmF2ZXJzZU5leHROb2RlKCksIDApLCBET1dOU1RSRUFNKTsK
ICAgICB9IGVsc2UgaWYgKGlzRW5kT2ZCbG9jayhWaXNpYmxlUG9zaXRpb24ocG9zLCBzZWxlY3Rp
b24uYWZmaW5pdHkoKSkpKSB7Ci0gICAgICAgIAogICAgICAgICBOb2RlKiBibG9jayA9IHBvcy5u
b2RlKCktPmVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoKTsKICAgICAgICAgCiAgICAgICAgIC8v
IEluc2VydCBhbiBleHRyYSBiciBpZiB0aGUgaW5zZXJ0ZWQgb25lIHdpbGwgY29sbGFwc2VkIGJl
Y2F1c2Ugb2YgcXVpcmtzIG1vZGUuCi0gICAgICAgIGlmICghZG9jdW1lbnQoKS0+aW5TdHJpY3RN
b2RlKCkgJiYgIShwb3MuZG93bnN0cmVhbSgpLm5vZGUoKS0+aGFzVGFnTmFtZShiclRhZykgJiYg
cG9zLmRvd25zdHJlYW0oKS5vZmZzZXQoKSA9PSAwKSkgewotICAgICAgICAgICAgaW5zZXJ0Tm9k
ZUF0KG5vZGVUb0luc2VydCwgcG9zLm5vZGUoKSwgcG9zLm9mZnNldCgpKTsKLSAgICAgICAgICAg
IGluc2VydE5vZGVBZnRlcihjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSkuZ2V0KCksIG5v
ZGVUb0luc2VydCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaW5zZXJ0Tm9kZUF0KG5v
ZGVUb0luc2VydCwgcG9zLm5vZGUoKSwgcG9zLm9mZnNldCgpKTsKKyAgICAgICAgYm9vbCBoYXZl
QnJlYWsgPSBwb3MuZG93bnN0cmVhbSgpLm5vZGUoKS0+aGFzVGFnTmFtZShiclRhZykgJiYgcG9z
LmRvd25zdHJlYW0oKS5vZmZzZXQoKSA9PSAwOworICAgICAgICBpbnNlcnROb2RlQXQobm9kZVRv
SW5zZXJ0LmdldCgpLCBwb3Mubm9kZSgpLCBwb3Mub2Zmc2V0KCkpOworICAgICAgICBpZiAoIWhh
dmVCcmVhaykKKyAgICAgICAgICAgIGluc2VydE5vZGVBZnRlcihjcmVhdGVCcmVha0VsZW1lbnQo
ZG9jdW1lbnQoKSkuZ2V0KCksIG5vZGVUb0luc2VydC5nZXQoKSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFBvc2l0aW9uKGJsb2NrLCBtYXhEZWVwT2Zmc2V0KGJs
b2NrKSksIERPV05TVFJFQU0pOwotICAgIH0KLSAgICBlbHNlIGlmIChwb3Mub2Zmc2V0KCkgPD0g
cG9zLm5vZGUoKS0+Y2FyZXRNaW5PZmZzZXQoKSkgeworICAgIH0gZWxzZSBpZiAocG9zLm9mZnNl
dCgpIDw9IHBvcy5ub2RlKCktPmNhcmV0TWluT2Zmc2V0KCkpIHsKICAgICAgICAgTE9HKEVkaXRp
bmcsICJpbnB1dCBuZXdsaW5lIGNhc2UgMiIpOwogICAgICAgICAvLyBJbnNlcnQgbm9kZSBiZWZv
cmUgZG93bnN0cmVhbSBwb3NpdGlvbiwgYW5kIHBsYWNlIGNhcmV0IHRoZXJlIGFzIHdlbGwuIAog
ICAgICAgICBQb3NpdGlvbiBlbmRpbmdQb3NpdGlvbiA9IHBvcy5kb3duc3RyZWFtKCk7Ci0gICAg
ICAgIGluc2VydE5vZGVCZWZvcmVQb3NpdGlvbihub2RlVG9JbnNlcnQsIGVuZGluZ1Bvc2l0aW9u
KTsKKyAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZVBvc2l0aW9uKG5vZGVUb0luc2VydC5nZXQoKSwg
ZW5kaW5nUG9zaXRpb24pOwogICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oZW5kaW5nUG9zaXRp
b24sIERPV05TVFJFQU0pOwogICAgIH0gZWxzZSBpZiAocG9zLm9mZnNldCgpID49IHBvcy5ub2Rl
KCktPmNhcmV0TWF4T2Zmc2V0KCkpIHsKICAgICAgICAgTE9HKEVkaXRpbmcsICJpbnB1dCBuZXds
aW5lIGNhc2UgMyIpOwogICAgICAgICAvLyBJbnNlcnQgQlIgYWZ0ZXIgdGhpcyBub2RlLiBQbGFj
ZSBjYXJldCBpbiB0aGUgcG9zaXRpb24gdGhhdCBpcyBkb3duc3RyZWFtCiAgICAgICAgIC8vIG9m
IHRoZSBjdXJyZW50IHBvc2l0aW9uLCByZWNrb25lZCBiZWZvcmUgaW5zZXJ0aW5nIHRoZSBCUiBp
biBiZXR3ZWVuLgogICAgICAgICBQb3NpdGlvbiBlbmRpbmdQb3NpdGlvbiA9IHBvcy5kb3duc3Ry
ZWFtKCk7Ci0gICAgICAgIGluc2VydE5vZGVBZnRlclBvc2l0aW9uKG5vZGVUb0luc2VydCwgcG9z
KTsKKyAgICAgICAgaW5zZXJ0Tm9kZUFmdGVyUG9zaXRpb24obm9kZVRvSW5zZXJ0LmdldCgpLCBw
b3MpOwogICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oZW5kaW5nUG9zaXRpb24sIERPV05TVFJF
QU0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFNwbGl0IGEgdGV4dCBub2RlCkBAIC0xMzIs
NyArMTQwLDcgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KCkKICAgICAg
ICAgUmVmUHRyPFRleHQ+IHRleHRCZWZvcmVOb2RlID0gZG9jdW1lbnQoKS0+Y3JlYXRlVGV4dE5v
ZGUodGV4dE5vZGUtPnN1YnN0cmluZ0RhdGEoMCwgc2VsZWN0aW9uLnN0YXJ0KCkub2Zmc2V0KCks
IGVjKSk7CiAgICAgICAgIGRlbGV0ZVRleHRGcm9tTm9kZSh0ZXh0Tm9kZSwgMCwgcG9zLm9mZnNl
dCgpKTsKICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZSh0ZXh0QmVmb3JlTm9kZS5nZXQoKSwgdGV4
dE5vZGUpOwotICAgICAgICBpbnNlcnROb2RlQmVmb3JlKG5vZGVUb0luc2VydCwgdGV4dE5vZGUp
OworICAgICAgICBpbnNlcnROb2RlQmVmb3JlKG5vZGVUb0luc2VydC5nZXQoKSwgdGV4dE5vZGUp
OwogICAgICAgICBQb3NpdGlvbiBlbmRpbmdQb3NpdGlvbiA9IFBvc2l0aW9uKHRleHROb2RlLCAw
KTsKICAgICAgICAgCiAgICAgICAgIC8vIEhhbmRsZSB3aGl0ZXNwYWNlIHRoYXQgb2NjdXJzIGFm
dGVyIHRoZSBzcGxpdApAQCAtMTQwLDYgKzE0OCw3IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29t
bWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIGlmICghZW5kaW5nUG9zaXRpb24uaXNSZW5kZXJlZENo
YXJhY3RlcigpKSB7CiAgICAgICAgICAgICAvLyBDbGVhciBvdXQgYWxsIHdoaXRlc3BhY2UgYW5k
IGluc2VydCBvbmUgbm9uLWJyZWFraW5nIHNwYWNlCiAgICAgICAgICAgICBkZWxldGVJbnNpZ25p
ZmljYW50VGV4dERvd25zdHJlYW0oZW5kaW5nUG9zaXRpb24pOworICAgICAgICAgICAgQVNTRVJU
KCF0ZXh0Tm9kZS0+cmVuZGVyZXIoKSB8fCB0ZXh0Tm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+
Y29sbGFwc2VXaGl0ZVNwYWNlKCkpOwogICAgICAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRl
eHROb2RlLCAwLCBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgICAg
IApAQCAtMTU0LDcgKzE2Myw4IEBAIHZvaWQgSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBs
eSgpCiAgICAgCiAgICAgaWYgKHR5cGluZ1N0eWxlICYmIHR5cGluZ1N0eWxlLT5sZW5ndGgoKSA+
IDApIHsKICAgICAgICAgU2VsZWN0aW9uIHNlbGVjdGlvbkJlZm9yZVN0eWxlID0gZW5kaW5nU2Vs
ZWN0aW9uKCk7Ci0gICAgICAgIGFwcGx5U3R5bGUodHlwaW5nU3R5bGUsIFBvc2l0aW9uKG5vZGVU
b0luc2VydCwgMCksIFBvc2l0aW9uKG5vZGVUb0luc2VydCwgbWF4RGVlcE9mZnNldChub2RlVG9J
bnNlcnQpKSk7CisgICAgICAgIGFwcGx5U3R5bGUodHlwaW5nU3R5bGUsIFBvc2l0aW9uKG5vZGVU
b0luc2VydC5nZXQoKSwgMCksCisgICAgICAgICAgICBQb3NpdGlvbihub2RlVG9JbnNlcnQuZ2V0
KCksIG1heERlZXBPZmZzZXQobm9kZVRvSW5zZXJ0LmdldCgpKSkpOwogICAgICAgICBzZXRFbmRp
bmdTZWxlY3Rpb24oc2VsZWN0aW9uQmVmb3JlU3R5bGUpOwogICAgIH0KIApJbmRleDogV2ViQ29y
ZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAko
cmV2aXNpb24gMTU1NjkpCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9yQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMsOCBAQCB2b2lkIElu
c2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvCiAgICAgLy8gRklYTUU6IGxlYWRpbmdX
aGl0ZXNwYWNlUG9zaXRpb24gaXMgcmV0dXJuaW5nIHRoZSBwb3NpdGlvbiBiZWZvcmUgcHJlc2Vy
dmVkIG5ld2xpbmVzIGZvciBwb3NpdGlvbnMKICAgICAvLyBhZnRlciB0aGUgcHJlc2VydmVkIG5l
d2xpbmUsIGNhdXNpbmcgdGhlIG5ld2xpbmUgdG8gYmUgdHVybmVkIGludG8gYSBuYnNwLgogICAg
IGlmIChsZWFkaW5nV2hpdGVzcGFjZS5pc05vdE51bGwoKSkgewotICAgICAgICBUZXh0ICp0ZXh0
Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQgKj4obGVhZGluZ1doaXRlc3BhY2Uubm9kZSgpKTsKKyAg
ICAgICAgVGV4dCogdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0Kj4obGVhZGluZ1doaXRlc3Bh
Y2Uubm9kZSgpKTsKKyAgICAgICAgQVNTRVJUKCF0ZXh0Tm9kZS0+cmVuZGVyZXIoKSB8fCB0ZXh0
Tm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpOwogICAgICAg
ICByZXBsYWNlVGV4dEluTm9kZSh0ZXh0Tm9kZSwgbGVhZGluZ1doaXRlc3BhY2Uub2Zmc2V0KCks
IDEsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CiAgICAgfQogICAgIApAQCAtMjg0LDkgKzI4
NSwxMSBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvCiAgICAgICAg
IHBvcyA9IFBvc2l0aW9uKHN0YXJ0Tm9kZSwgMCk7CiAgICAgICAgIGlmICghcG9zLmlzUmVuZGVy
ZWRDaGFyYWN0ZXIoKSkgewogICAgICAgICAgICAgLy8gQ2xlYXIgb3V0IGFsbCB3aGl0ZXNwYWNl
IGFuZCBpbnNlcnQgb25lIG5vbi1icmVha2luZyBzcGFjZQotICAgICAgICAgICAgQVNTRVJUKHN0
YXJ0Tm9kZSAmJiBzdGFydE5vZGUtPmlzVGV4dE5vZGUoKSk7CisgICAgICAgICAgICBBU1NFUlQo
c3RhcnROb2RlKTsKKyAgICAgICAgICAgIEFTU0VSVChzdGFydE5vZGUtPmlzVGV4dE5vZGUoKSk7
CisgICAgICAgICAgICBBU1NFUlQoIXN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSB8fCBzdGFydE5vZGUt
PnJlbmRlcmVyKCktPnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKTsKICAgICAgICAgICAg
IGRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0RG93bnN0cmVhbShwb3MpOwotICAgICAgICAgICAgaW5z
ZXJ0VGV4dEludG9Ob2RlKHN0YXRpY19jYXN0PFRleHQgKj4oc3RhcnROb2RlKSwgMCwgbm9uQnJl
YWtpbmdTcGFjZVN0cmluZygpKTsKKyAgICAgICAgICAgIGluc2VydFRleHRJbnRvTm9kZShzdGF0
aWNfY2FzdDxUZXh0Kj4oc3RhcnROb2RlKSwgMCwgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsK
ICAgICAgICAgfQogICAgIH0KIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0pTRWRpdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSlNFZGl0b3IuY3BwCShyZXZpc2lvbiAxNTU2
OSkKKysrIFdlYkNvcmUvZWRpdGluZy9KU0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
NSw3ICs0MTUsNyBAQCBib29sIGV4ZWNSZWRvKEZyYW1lICpmcmFtZSwgYm9vbCB1c2VySW50CiAK
IGJvb2wgZXhlY1JlbW92ZUZvcm1hdChGcmFtZSogZnJhbWUsIGJvb2wgdXNlckludGVyZmFjZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJh
Z21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21UZXh0KGZyYW1lLT5kb2N1bWVudCgpLCBmcmFtZS0+
c2VsZWN0aW9uKCkudG9TdHJpbmcoKS5kZXByZWNhdGVkU3RyaW5nKCkpOworICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoZnJhbWUt
PnNlbGVjdGlvbigpLnRvUmFuZ2UoKS5nZXQoKSwgZnJhbWUtPnNlbGVjdGlvbigpLnRvU3RyaW5n
KCkpOwogICAgIEVkaXRDb21tYW5kUHRyKG5ldyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZChmcmFt
ZS0+ZG9jdW1lbnQoKSwgZnJhZ21lbnQuZ2V0KCksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBFZGl0QWN0aW9uVW5zcGVjaWZpZWQpKS5hcHBseSgpOwogICAgIHJldHVybiB0cnVlOwogfQpJ
bmRleDogV2ViQ29yZS9lZGl0aW5nL1JlYmFsYW5jZVdoaXRlc3BhY2VDb21tYW5kLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvUmViYWxhbmNlV2hpdGVzcGFjZUNvbW1hbmQuY3Bw
CShyZXZpc2lvbiAxNTU2OSkKKysrIFdlYkNvcmUvZWRpdGluZy9SZWJhbGFuY2VXaGl0ZXNwYWNl
Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEyICs0OSwxMiBAQCB2b2lkIFJlYmFs
YW5jZVdoaXRlc3BhY2VDb21tYW5kOjpkb0FwcGx5CiB7CiAgICAgaWYgKG1fcG9zaXRpb24uaXNO
dWxsKCkgfHwgIW1fcG9zaXRpb24ubm9kZSgpLT5pc1RleHROb2RlKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgCi0gICAgVGV4dCAqdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KG1f
cG9zaXRpb24ubm9kZSgpKTsKKworICAgIFRleHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4
dCo+KG1fcG9zaXRpb24ubm9kZSgpKTsKICAgICBTdHJpbmcgdGV4dCA9IHRleHROb2RlLT5kYXRh
KCk7Ci0gICAgaWYgKHRleHQubGVuZ3RoKCkgPT0gMCkKLSAgICAgICAgcmV0dXJuOwotICAgIAor
ICAgIEFTU0VSVCghdGV4dC5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghdGV4dE5vZGUtPnJlbmRl
cmVyKCkgfHwgdGV4dE5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFj
ZSgpKTsKKwogICAgIGludCBvZmZzZXQgPSBtX3Bvc2l0aW9uLm9mZnNldCgpOwogICAgIC8vIElm
IG5laXRoZXIgdGV4dFtvZmZzZXRdIG5vciB0ZXh0W29mZnNldCAtIDFdIGFyZSBzb21lIGZvcm0g
b2Ygd2hpdGVzcGFjZSwgZG8gbm90aGluZy4KICAgICBpZiAoIWlzV2hpdGVzcGFjZSh0ZXh0W29m
ZnNldF0pKSB7CkBAIC0xMDIsNCArMTAyLDMgQEAgYm9vbCBSZWJhbGFuY2VXaGl0ZXNwYWNlQ29t
bWFuZDo6cHJlc2VydgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KSW5kZXg6IFdlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24gMTU1Njkp
CisrKyBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAotUmVwbGFjZW1lbnRGcmFnbWVudDo6UmVwbGFjZW1lbnRGcmFn
bWVudChEb2N1bWVudCAqZG9jdW1lbnQsIERvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50LCBib29s
IG1hdGNoU3R5bGUsIEVsZW1lbnQqIGVkaXRhYmxlUm9vdCkKK1JlcGxhY2VtZW50RnJhZ21lbnQ6
OlJlcGxhY2VtZW50RnJhZ21lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBEb2N1bWVudEZyYWdtZW50
KiBmcmFnbWVudCwgYm9vbCBtYXRjaFN0eWxlLCBjb25zdCBTZWxlY3Rpb24mIHNlbGVjdGlvbikK
ICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpLAogICAgICAgbV9mcmFnbWVudChmcmFnbWVudCks
CiAgICAgICBtX21hdGNoU3R5bGUobWF0Y2hTdHlsZSksIApAQCAtNTgsMjcgKzU4LDE5IEBAIFJl
cGxhY2VtZW50RnJhZ21lbnQ6OlJlcGxhY2VtZW50RnJhZ21lbnQKIHsKICAgICBpZiAoIW1fZG9j
dW1lbnQpCiAgICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9mcmFnbWVudCkgewotICAgICAg
ICBtX3R5cGUgPSBFbXB0eUZyYWdtZW50OworICAgIGlmICghbV9mcmFnbWVudCkKICAgICAgICAg
cmV0dXJuOwotICAgIH0KLQogICAgIE5vZGUqIGZpcnN0Q2hpbGQgPSBtX2ZyYWdtZW50LT5maXJz
dENoaWxkKCk7Ci0gICAgTm9kZSogbGFzdENoaWxkID0gbV9mcmFnbWVudC0+bGFzdENoaWxkKCk7
Ci0KLSAgICBpZiAoIWZpcnN0Q2hpbGQpIHsKLSAgICAgICAgbV90eXBlID0gRW1wdHlGcmFnbWVu
dDsKKyAgICBpZiAoIWZpcnN0Q2hpbGQpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0g
ICAgbV90eXBlID0gZmlyc3RDaGlsZCA9PSBsYXN0Q2hpbGQgJiYgZmlyc3RDaGlsZC0+aXNUZXh0
Tm9kZSgpID8gU2luZ2xlVGV4dE5vZGVGcmFnbWVudCA6IFRyZWVGcmFnbWVudDsKICAgICAKKyAg
ICBFbGVtZW50KiBlZGl0YWJsZVJvb3QgPSBzZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudCgp
OwogICAgIEFTU0VSVChlZGl0YWJsZVJvb3QpOwogICAgIGlmICghZWRpdGFibGVSb290KQogICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICBSZWZQdHI8Tm9kZT4gaG9sZGVyID0gaW5z
ZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKCk7CisKKyAgICBOb2RlKiBzdHlsZU5vZGUgPSBz
ZWxlY3Rpb24uYmFzZSgpLm5vZGUoKTsKKyAgICBSZWZQdHI8Tm9kZT4gaG9sZGVyID0gaW5zZXJ0
RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKHN0eWxlTm9kZSk7CiAgICAgCiAgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IFNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKGhvbGRl
ci5nZXQoKSkudG9SYW5nZSgpOwogICAgIFN0cmluZyB0ZXh0ID0gcGxhaW5UZXh0KHJhbmdlLmdl
dCgpKTsKQEAgLTg4LDIxICs4MCwxNiBAQCBSZXBsYWNlbWVudEZyYWdtZW50OjpSZXBsYWNlbWVu
dEZyYWdtZW50CiAgICAgZWRpdGFibGVSb290LT5kaXNwYXRjaEV2ZW50KGV2dCwgZWMsIHRydWUp
OwogICAgIEFTU0VSVChlYyA9PSAwKTsKICAgICBpZiAodGV4dCAhPSBldnQtPnRleHQoKSB8fCAh
ZWRpdGFibGVSb290LT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKSB7Ci0gICAgICAgIC8vIElm
IHRoZSByb290IGlzIGluIHBsYWluLXRleHQgbW9kZSwgYW5kIHdoaXRlLXNwYWNlIHNob3VsZG4n
dCBiZSBjb2xsYXBzZWQsIHRoZW4gY29udHJ1Y3QgYSBmcmFnbWVudCB0aGF0IGNvbnRhaW5zIG9u
ZSB0ZXh0IG5vZGUKLSAgICAgICAgaWYgKCFlZGl0YWJsZVJvb3QtPmlzQ29udGVudFJpY2hseUVk
aXRhYmxlKCkgJiYgZWRpdGFibGVSb290LT5yZW5kZXJlcigpICYmICFlZGl0YWJsZVJvb3QtPnJl
bmRlcmVyKCktPnN0eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7Ci0gICAgICAgICAgICBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpOwotICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50
LT5jcmVhdGVUZXh0Tm9kZShldnQtPnRleHQoKSksIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVChl
YyA9PSAwKTsKLSAgICAgICAgICAgIG1fZnJhZ21lbnQgPSBmcmFnbWVudDsKLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBtX2ZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChkb2N1
bWVudCwgZXZ0LT50ZXh0KCkuZGVwcmVjYXRlZFN0cmluZygpKTsKLSAgICAgICAgZmlyc3RDaGls
ZCA9IG1fZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKTsKLSAgICAgICAgbGFzdENoaWxkID0gbV9mcmFn
bWVudC0+Zmlyc3RDaGlsZCgpOwotICAgICAgICAKKyAgICAgICAgcmVzdG9yZVRlc3RSZW5kZXJp
bmdOb2Rlc1RvRnJhZ21lbnQoaG9sZGVyLmdldCgpKTsKICAgICAgICAgcmVtb3ZlTm9kZShob2xk
ZXIpOwotICAgICAgICBob2xkZXIgPSBpbnNlcnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmcoKTsK
KworICAgICAgICBtX2ZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChzZWxlY3Rpb24u
dG9SYW5nZSgpLmdldCgpLCBldnQtPnRleHQoKSk7CisgICAgICAgIGZpcnN0Q2hpbGQgPSBtX2Zy
YWdtZW50LT5maXJzdENoaWxkKCk7CisgICAgICAgIGlmICghZmlyc3RDaGlsZCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgaG9sZGVyID0gaW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVy
aW5nKHN0eWxlTm9kZSk7CiAgICAgfQotICAgIAorCiAgICAgTm9kZSAqbm9kZSA9IGZpcnN0Q2hp
bGQ7CiAgICAgTm9kZSAqbmV3bGluZUF0U3RhcnROb2RlID0gMDsKICAgICBOb2RlICpuZXdsaW5l
QXRFbmROb2RlID0gMDsKQEAgLTE0NCw4ICsxMzEsOSBAQCBSZXBsYWNlbWVudEZyYWdtZW50OjpS
ZXBsYWNlbWVudEZyYWdtZW50CiAgICAgcmVtb3ZlU3R5bGVOb2RlcygpOwogfQogCi1SZXBsYWNl
bWVudEZyYWdtZW50Ojp+UmVwbGFjZW1lbnRGcmFnbWVudCgpCitib29sIFJlcGxhY2VtZW50RnJh
Z21lbnQ6OmlzRW1wdHkoKSBjb25zdAogeworICAgIHJldHVybiAoIW1fZnJhZ21lbnQgfHwgIW1f
ZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKSkgJiYgIW1faGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRTdGFy
dCAmJiAhbV9oYXNJbnRlcmNoYW5nZU5ld2xpbmVBdEVuZDsKIH0KIAogTm9kZSAqUmVwbGFjZW1l
bnRGcmFnbWVudDo6Zmlyc3RDaGlsZCgpIGNvbnN0IApAQCAtMjMyLDE1ICsyMjAsMjcgQEAgdm9p
ZCBSZXBsYWNlbWVudEZyYWdtZW50OjppbnNlcnROb2RlQmVmbwogICAgIEFTU0VSVChlYyA9PSAw
KTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBSZXBsYWNlbWVudEZyYWdtZW50OjppbnNlcnRGcmFn
bWVudEZvclRlc3RSZW5kZXJpbmcoKQorUGFzc1JlZlB0cjxOb2RlPiBSZXBsYWNlbWVudEZyYWdt
ZW50OjppbnNlcnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmcoTm9kZSogY29udGV4dCkKIHsKLSAg
ICBOb2RlICpib2R5ID0gbV9kb2N1bWVudC0+Ym9keSgpOworICAgIE5vZGUqIGJvZHkgPSBtX2Rv
Y3VtZW50LT5ib2R5KCk7CiAgICAgaWYgKCFib2R5KQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IFJlZlB0cjxOb2RlPiBob2xkZXIgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChtX2Rv
Y3VtZW50LmdldCgpKTsKKyAgICBSZWZQdHI8U3R5bGVkRWxlbWVudD4gaG9sZGVyID0gc3RhdGlj
X3BvaW50ZXJfY2FzdDxTdHlsZWRFbGVtZW50PihjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVu
dChtX2RvY3VtZW50LmdldCgpKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisK
KyAgICAvLyBDb3B5IHRoZSB3aGl0ZXNwYWNlIHN0eWxlIGZyb20gdGhlIGNvbnRleHQgb250byB0
aGlzIGVsZW1lbnQuCisgICAgTm9kZSogbiA9IGNvbnRleHQ7CisgICAgd2hpbGUgKG4gJiYgIW4t
PmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgbiA9IG4tPnBhcmVudE5vZGUoKTsKKyAgICBpZiAo
bikgeworICAgICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb250ZXh0
U3R5bGUgPSBuZXcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKHN0YXRpY19jYXN0PEVsZW1l
bnQqPihuKSk7CisgICAgICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlID0gaG9sZGVyLT5z
dHlsZSgpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTX1BST1BfV0hJVEVfU1BBQ0Us
IGNvbnRleHRTdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShDU1NfUFJPUF9XSElURV9TUEFDRSksIGZh
bHNlLCBlYyk7CisgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICB9CisgICAgCiAgICAgaG9s
ZGVyLT5hcHBlbmRDaGlsZChtX2ZyYWdtZW50LCBlYyk7CiAgICAgQVNTRVJUKGVjID09IDApOwog
ICAgIApAQCAtNTA1LDEzICs1MDUsMTIgQEAgYm9vbCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
c2hvdWxkTWVyZwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6c2hvdWxkTWVyZ2VFbmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlbmRPZkluc2Vy
dGVkQ29udGVudCwgYm9vbCBmcmFnbWVudEhhZEludGVyY2hhbmdlTmV3bGluZUF0RW5kLCBib29s
IHNlbGVjdGlvbkVuZFdhc0VuZE9mUGFyYWdyYXBoKQorYm9vbCBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6c2hvdWxkTWVyZ2VFbmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBlbmRPZkluc2VydGVk
Q29udGVudCwgYm9vbCBzZWxlY3Rpb25FbmRXYXNFbmRPZlBhcmFncmFwaCkKIHsKICAgICBOb2Rl
KiBlbmROb2RlID0gZW5kT2ZJbnNlcnRlZENvbnRlbnQuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCk7
CiAgICAgTm9kZSogbmV4dE5vZGUgPSBlbmRPZkluc2VydGVkQ29udGVudC5uZXh0KCkuZGVlcEVx
dWl2YWxlbnQoKS5ub2RlKCk7CiAgICAgLy8gRklYTUU6IFVuaWZ5IHRoZSBuYW1pbmcgc2NoZW1l
IGZvciB0aGVzZSBlbmNsb3NpbmcgZWxlbWVudCBnZXR0ZXJzLgogICAgIHJldHVybiAhc2VsZWN0
aW9uRW5kV2FzRW5kT2ZQYXJhZ3JhcGggJiYKLSAgICAgICAgICAgIWZyYWdtZW50SGFkSW50ZXJj
aGFuZ2VOZXdsaW5lQXRFbmQgJiYgCiAgICAgICAgICAgIGlzRW5kT2ZQYXJhZ3JhcGgoZW5kT2ZJ
bnNlcnRlZENvbnRlbnQpICYmIAogICAgICAgICAgICBuZWFyZXN0TWFpbEJsb2NrcXVvdGUoZW5k
Tm9kZSkgPT0gbmVhcmVzdE1haWxCbG9ja3F1b3RlKG5leHROb2RlKSAmJgogICAgICAgICAgICBl
bmNsb3NpbmdMaXN0Q2hpbGQoZW5kTm9kZSkgPT0gZW5jbG9zaW5nTGlzdENoaWxkKG5leHROb2Rl
KSAmJgpAQCAtNTMyLDkgKzUzMSw5IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRv
QXBwbHkoKQogICAgICAgICBtX21hdGNoU3R5bGUgPSB0cnVlOwogICAgIAogICAgIEVsZW1lbnQq
IGN1cnJlbnRSb290ID0gc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBSZXBs
YWNlbWVudEZyYWdtZW50IGZyYWdtZW50KGRvY3VtZW50KCksIG1fZG9jdW1lbnRGcmFnbWVudC5n
ZXQoKSwgbV9tYXRjaFN0eWxlLCBjdXJyZW50Um9vdCk7CisgICAgUmVwbGFjZW1lbnRGcmFnbWVu
dCBmcmFnbWVudChkb2N1bWVudCgpLCBtX2RvY3VtZW50RnJhZ21lbnQuZ2V0KCksIG1fbWF0Y2hT
dHlsZSwgc2VsZWN0aW9uKTsKICAgICAKLSAgICBpZiAoZnJhZ21lbnQudHlwZSgpID09IEVtcHR5
RnJhZ21lbnQpCisgICAgaWYgKGZyYWdtZW50LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIGlmIChtX21hdGNoU3R5bGUpCkBAIC03MTQsOCArNzEzLDIxIEBAIHZvaWQgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICB1cGRhdGVMYXlvdXQoKTsK
ICAgICAgICAgaW5zZXJ0aW9uUG9zID0gUG9zaXRpb24obV9sYXN0Tm9kZUluc2VydGVkLmdldCgp
LCBtX2xhc3ROb2RlSW5zZXJ0ZWQtPmNhcmV0TWF4T2Zmc2V0KCkpOwogICAgIH0KKworICAgIFBv
c2l0aW9uIGxhc3RQb3NpdGlvblRvU2VsZWN0OwogICAgIAotICAgIHJlbW92ZUVuZEJSSWZOZWVk
ZWQoZW5kQlIpOworICAgIGJvb2wgaW50ZXJjaGFuZ2VOZXdsaW5lQXRFbmQgPSBmcmFnbWVudC5o
YXNJbnRlcmNoYW5nZU5ld2xpbmVBdEVuZCgpOworICAgIGJvb2wgbGFzdE5vZGVJbnNlcnRlZFdh
c0JSID0gbV9sYXN0Tm9kZUluc2VydGVkLT5oYXNUYWdOYW1lKGJyVGFnKTsKKworICAgIGlmIChz
aG91bGRSZW1vdmVFbmRCUihlbmRCUikpIHsKKyAgICAgICAgaWYgKGludGVyY2hhbmdlTmV3bGlu
ZUF0RW5kIHx8IGxhc3ROb2RlSW5zZXJ0ZWRXYXNCUikgeworICAgICAgICAgICAgaW50ZXJjaGFu
Z2VOZXdsaW5lQXRFbmQgPSBmYWxzZTsKKyAgICAgICAgICAgIGxhc3ROb2RlSW5zZXJ0ZWRXYXNC
UiA9IGZhbHNlOworICAgICAgICAgICAgbV9sYXN0Tm9kZUluc2VydGVkID0gZW5kQlI7CisgICAg
ICAgICAgICBsYXN0UG9zaXRpb25Ub1NlbGVjdCA9IFZpc2libGVQb3NpdGlvbihQb3NpdGlvbiht
X2xhc3ROb2RlSW5zZXJ0ZWQuZ2V0KCksIDApKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyhlbmRCUik7Cisg
ICAgfQogICAgIAogICAgIC8vIFN0eWxlcyB3ZXJlIHJlbW92ZWQgZHVyaW5nIHRoZSB0ZXN0IGlu
c2VydGlvbi4gIFJlc3RvcmUgdGhlbS4KICAgICBpZiAoIW1fbWF0Y2hTdHlsZSkKQEAgLTcyNCwy
NiArNzM2LDI1IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAg
IFZpc2libGVQb3NpdGlvbiBlbmRPZkluc2VydGVkQ29udGVudChQb3NpdGlvbihtX2xhc3ROb2Rl
SW5zZXJ0ZWQuZ2V0KCksIG1heERlZXBPZmZzZXQobV9sYXN0Tm9kZUluc2VydGVkLmdldCgpKSkp
OwogICAgIFZpc2libGVQb3NpdGlvbiBzdGFydE9mSW5zZXJ0ZWRDb250ZW50KFBvc2l0aW9uKG1f
Zmlyc3ROb2RlSW5zZXJ0ZWQuZ2V0KCksIDApKTsgICAgCiAgICAgCi0gICAgUG9zaXRpb24gbGFz
dFBvc2l0aW9uVG9TZWxlY3Q7Ci0gICAgCi0gICAgaWYgKGZyYWdtZW50Lmhhc0ludGVyY2hhbmdl
TmV3bGluZUF0RW5kKCkpIHsKKyAgICBpZiAoaW50ZXJjaGFuZ2VOZXdsaW5lQXRFbmQpIHsKICAg
ICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhpbnNlcnRpb25Qb3MpOwogICAgICAgICBWaXNpYmxl
UG9zaXRpb24gbmV4dCA9IHBvcy5uZXh0KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgaWYgKGVu
ZFdhc0VuZE9mUGFyYWdyYXBoIHx8ICFpc0VuZE9mUGFyYWdyYXBoKHBvcykgfHwgbmV4dC5pc051
bGwoKSB8fCBuZXh0LnJvb3RFZGl0YWJsZUVsZW1lbnQoKSAhPSBjdXJyZW50Um9vdCkgewotICAg
ICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKGluc2VydGlvblBvcywgRE9XTlNUUkVBTSk7Ci0g
ICAgICAgICAgICBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IoKTsKIAotICAgICAgICAgICAgLy8g
U2VsZWN0IHVwIHRvIHRoZSBwYXJhZ3JhcGggc2VwYXJhdG9yIHRoYXQgd2FzIGFkZGVkLgotICAg
ICAgICAgICAgbGFzdFBvc2l0aW9uVG9TZWxlY3QgPSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxl
U3RhcnQoKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgdXBkYXRlTm9kZXNJbnNlcnRl
ZChsYXN0UG9zaXRpb25Ub1NlbGVjdC5ub2RlKCkpOworICAgICAgICBpZiAoZW5kV2FzRW5kT2ZQ
YXJhZ3JhcGggfHwgIWlzRW5kT2ZQYXJhZ3JhcGgocG9zKSB8fCBuZXh0LnJvb3RFZGl0YWJsZUVs
ZW1lbnQoKSAhPSBjdXJyZW50Um9vdCkgeworICAgICAgICAgICAgaWYgKCFpc1N0YXJ0T2ZQYXJh
Z3JhcGgocG9zKSkgeworICAgICAgICAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihwb3MuZGVl
cEVxdWl2YWxlbnQoKS5kb3duc3RyZWFtKCksIERPV05TVFJFQU0pOworICAgICAgICAgICAgICAg
IGluc2VydFBhcmFncmFwaFNlcGFyYXRvcigpOworCisgICAgICAgICAgICAgICAgLy8gU2VsZWN0
IHVwIHRvIHRoZSBwYXJhZ3JhcGggc2VwYXJhdG9yIHRoYXQgd2FzIGFkZGVkLgorICAgICAgICAg
ICAgICAgIGxhc3RQb3NpdGlvblRvU2VsZWN0ID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0
YXJ0KCkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVOb2Rlc0luc2Vy
dGVkKGxhc3RQb3NpdGlvblRvU2VsZWN0Lm5vZGUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBTZWxlY3QgdXAgdG8gdGhlIGJlZ2lubmluZyBvZiB0
aGUgbmV4dCBwYXJhZ3JhcGguCi0gICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gbmV4dCA9IHBv
cy5uZXh0KCk7CiAgICAgICAgICAgICBsYXN0UG9zaXRpb25Ub1NlbGVjdCA9IG5leHQuZGVlcEVx
dWl2YWxlbnQoKS5kb3duc3RyZWFtKCk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgfSBlbHNl
IGlmIChtX2xhc3ROb2RlSW5zZXJ0ZWQtPmhhc1RhZ05hbWUoYnJUYWcpKSB7CisKKyAgICB9IGVs
c2UgaWYgKGxhc3ROb2RlSW5zZXJ0ZWRXYXNCUikgewogICAgICAgICAvLyBXZSB3YW50IHRvIGhv
bm9yIHRoZSBsYXN0IGluY29taW5nIGxpbmUgYnJlYWssIHNvLCBpZiBpdCB3aWxsIGNvbGxhcHNl
IGF3YXkgYmVjYXVzZSBvZiBxdWlya3MgbW9kZSwgCiAgICAgICAgIC8vIGFkZCBhbiBleHRyYSBv
bmUuCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgZXhwYW5kIGEgYnIgaW5zaWRlIGEgYmxv
Y2s6IDxkaXY+PGJyPjwvZGl2PgpAQCAtNzUxLDI0ICs3NjIsMzcgQEAgdm9pZCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIGlmICghZG9jdW1lbnQoKS0+aW5TdHJp
Y3RNb2RlKCkgJiYgaXNFbmRPZkJsb2NrKFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihtX2xhc3RO
b2RlSW5zZXJ0ZWQuZ2V0KCksIDApKSkpCiAgICAgICAgICAgICBpbnNlcnROb2RlQmVmb3JlQW5k
VXBkYXRlTm9kZXNJbnNlcnRlZChjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSkuZ2V0KCks
IG1fbGFzdE5vZGVJbnNlcnRlZC5nZXQoKSk7CiAgICAgICAgICAgICAKLSAgICB9IGVsc2UgaWYg
KHNob3VsZE1lcmdlRW5kKGVuZE9mSW5zZXJ0ZWRDb250ZW50LCBmcmFnbWVudC5oYXNJbnRlcmNo
YW5nZU5ld2xpbmVBdEVuZCgpLCBlbmRXYXNFbmRPZlBhcmFncmFwaCkpIHsKKyAgICB9IGVsc2Ug
aWYgKHNob3VsZE1lcmdlRW5kKGVuZE9mSW5zZXJ0ZWRDb250ZW50LCBlbmRXYXNFbmRPZlBhcmFn
cmFwaCkpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgY29udGVudCBhZnRlciB0aGUgZW5k
IG9mIHRoZSBzZWxlY3Rpb24gYmVpbmcgcGFzdGVkIGludG8gaXMgaW4gdGhlIHNhbWUgcGFyYWdy
YXBoIGFzIHRoZSAKICAgICAgICAgLy8gbGFzdCBiaXQgb2YgY29udGVudCB0aGF0IHdhcyBpbnNl
cnRlZC4KICAgICAgICAgCi0gICAgICAgIC8vIE1lcmdpbmcgdHdvIHBhcmFncmFwaHMgd2lsbCBk
ZXN0cm95IHRoZSBtb3ZlZCBvbmUncyBibG9jayBzdHlsZXMuICBBbHdheXMgbW92ZSBmb3J3YXJk
IHRvIHByZXNlcnZlCi0gICAgICAgIC8vIHRoZSBibG9jayBzdHlsZSBvZiB0aGUgcGFyYWdyYXBo
IGFscmVhZHkgaW4gdGhlIGRvY3VtZW50LCB1bmxlc3MgdGhlIHBhcmFncmFwaCB0byBtb3ZlIHdv
dWxkIGluY2x1ZGUgdGhlCi0gICAgICAgIC8vIHdoYXQgd2FzIHRoZSBzdGFydCBvZiB0aGUgc2Vs
ZWN0aW9uIHRoYXQgd2FzIHBhc3RlZCBpbnRvLgotICAgICAgICBib29sIG1lcmdlRm9yd2FyZCA9
ICFpblNhbWVQYXJhZ3JhcGgoc3RhcnRPZkluc2VydGVkQ29udGVudCwgZW5kT2ZJbnNlcnRlZENv
bnRlbnQpOwotICAgICAgICAKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGRlc3RpbmF0aW9uID0g
bWVyZ2VGb3J3YXJkID8gZW5kT2ZJbnNlcnRlZENvbnRlbnQubmV4dCgpIDogZW5kT2ZJbnNlcnRl
ZENvbnRlbnQ7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFydE9mUGFyYWdyYXBoVG9Nb3Zl
ID0gbWVyZ2VGb3J3YXJkID8gc3RhcnRPZlBhcmFncmFwaChlbmRPZkluc2VydGVkQ29udGVudCkg
OiBlbmRPZkluc2VydGVkQ29udGVudC5uZXh0KCk7Ci0KLSAgICAgICAgbW92ZVBhcmFncmFwaChz
dGFydE9mUGFyYWdyYXBoVG9Nb3ZlLCBlbmRPZlBhcmFncmFwaChzdGFydE9mUGFyYWdyYXBoVG9N
b3ZlKSwgZGVzdGluYXRpb24pOwotICAgICAgICAvLyBNZXJnaW5nIGZvcndhcmQgd2lsbCByZW1v
dmUgbV9sYXN0Tm9kZUluc2VydGVkIGZyb20gdGhlIGRvY3VtZW50LgotICAgICAgICAvLyBGSVhN
RTogTWFpbnRhaW4gcG9zaXRpb25zIGZvciB0aGUgc3RhcnQgYW5kIGVuZCBvZiBpbnNlcnRlZCBj
b250ZW50IGluc3RlYWQgb2Yga2VlcGluZyBub2Rlcy4gIFRoZSBub2RlcyBhcmUKLSAgICAgICAg
Ly8gb25seSBldmVyIHVzZWQgdG8gY3JlYXRlIHBvc2l0aW9ucyB3aGVyZSBpbnNlcnRlZCBjb250
ZW50IHN0YXJ0cy9lbmRzLgotICAgICAgICBpZiAobWVyZ2VGb3J3YXJkKQotICAgICAgICAgICAg
bV9sYXN0Tm9kZUluc2VydGVkID0gZGVzdGluYXRpb24ucHJldmlvdXMoKS5kZWVwRXF1aXZhbGVu
dCgpLm5vZGUoKTsKKyAgICAgICAgUG9zaXRpb24gZG93bnN0cmVhbUVuZCA9IGVuZE9mSW5zZXJ0
ZWRDb250ZW50LmRlZXBFcXVpdmFsZW50KCkuZG93bnN0cmVhbSgpOworICAgICAgICBQb3NpdGlv
biB1cHN0cmVhbU9uZVBhc3RFbmQgPSBlbmRPZkluc2VydGVkQ29udGVudC5uZXh0KCkuZGVlcEVx
dWl2YWxlbnQoKS51cHN0cmVhbSgpOworICAgICAgICBOb2RlKiBub2RlID0gZG93bnN0cmVhbUVu
ZC5ub2RlKCk7CisgICAgICAgIGludCBvZmZzZXQgPSBkb3duc3RyZWFtRW5kLm9mZnNldCgpOwor
ICAgICAgICBpZiAobm9kZSAmJiBub2RlID09IHVwc3RyZWFtT25lUGFzdEVuZC5ub2RlKCkgJiYg
b2Zmc2V0ICsgMSA9PSB1cHN0cmVhbU9uZVBhc3RFbmQub2Zmc2V0KCkgJiYgbm9kZS0+aXNUZXh0
Tm9kZSgpKSB7CisgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHJlbW92aW5nIGEgbmV3
bGluZSBjaGFyYWN0ZXIuCisgICAgICAgICAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0
PFRleHQqPihub2RlKTsKKyAgICAgICAgICAgIGlmICh0ZXh0Tm9kZS0+bGVuZ3RoKCkgPT0gMSkK
KyAgICAgICAgICAgICAgICByZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnModGV4dE5vZGUpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRlbGV0ZVRleHRGcm9tTm9kZSh0ZXh0
Tm9kZSwgb2Zmc2V0LCAxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIE1lcmdp
bmcgdHdvIHBhcmFncmFwaHMgd2lsbCBkZXN0cm95IHRoZSBtb3ZlZCBvbmUncyBibG9jayBzdHls
ZXMuICBBbHdheXMgbW92ZSBmb3J3YXJkIHRvIHByZXNlcnZlCisgICAgICAgICAgICAvLyB0aGUg
YmxvY2sgc3R5bGUgb2YgdGhlIHBhcmFncmFwaCBhbHJlYWR5IGluIHRoZSBkb2N1bWVudCwgdW5s
ZXNzIHRoZSBwYXJhZ3JhcGggdG8gbW92ZSB3b3VsZCBpbmNsdWRlIHRoZQorICAgICAgICAgICAg
Ly8gd2hhdCB3YXMgdGhlIHN0YXJ0IG9mIHRoZSBzZWxlY3Rpb24gdGhhdCB3YXMgcGFzdGVkIGlu
dG8uCisgICAgICAgICAgICBib29sIG1lcmdlRm9yd2FyZCA9ICFpblNhbWVQYXJhZ3JhcGgoc3Rh
cnRPZkluc2VydGVkQ29udGVudCwgZW5kT2ZJbnNlcnRlZENvbnRlbnQpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gZGVzdGluYXRpb24gPSBtZXJnZUZvcndhcmQg
PyBlbmRPZkluc2VydGVkQ29udGVudC5uZXh0KCkgOiBlbmRPZkluc2VydGVkQ29udGVudDsKKyAg
ICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlID0gbWVyZ2VG
b3J3YXJkID8gc3RhcnRPZlBhcmFncmFwaChlbmRPZkluc2VydGVkQ29udGVudCkgOiBlbmRPZklu
c2VydGVkQ29udGVudC5uZXh0KCk7CisKKyAgICAgICAgICAgIG1vdmVQYXJhZ3JhcGgoc3RhcnRP
ZlBhcmFncmFwaFRvTW92ZSwgZW5kT2ZQYXJhZ3JhcGgoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSks
IGRlc3RpbmF0aW9uKTsKKyAgICAgICAgICAgIC8vIE1lcmdpbmcgZm9yd2FyZCB3aWxsIHJlbW92
ZSBtX2xhc3ROb2RlSW5zZXJ0ZWQgZnJvbSB0aGUgZG9jdW1lbnQuCisgICAgICAgICAgICAvLyBG
SVhNRTogTWFpbnRhaW4gcG9zaXRpb25zIGZvciB0aGUgc3RhcnQgYW5kIGVuZCBvZiBpbnNlcnRl
ZCBjb250ZW50IGluc3RlYWQgb2Yga2VlcGluZyBub2Rlcy4gIFRoZSBub2RlcyBhcmUKKyAgICAg
ICAgICAgIC8vIG9ubHkgZXZlciB1c2VkIHRvIGNyZWF0ZSBwb3NpdGlvbnMgd2hlcmUgaW5zZXJ0
ZWQgY29udGVudCBzdGFydHMvZW5kcy4KKyAgICAgICAgICAgIGlmIChtZXJnZUZvcndhcmQpCisg
ICAgICAgICAgICAgICAgbV9sYXN0Tm9kZUluc2VydGVkID0gZGVzdGluYXRpb24ucHJldmlvdXMo
KS5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICBl
bmRPZkluc2VydGVkQ29udGVudCA9IFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihtX2xhc3ROb2Rl
SW5zZXJ0ZWQuZ2V0KCksIG1heERlZXBPZmZzZXQobV9sYXN0Tm9kZUluc2VydGVkLmdldCgpKSkp
OwpAQCAtNzc5LDI1ICs4MDMsMjcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9B
cHBseSgpCiAgICAgICAgIGJvb2wgbmVlZHNUcmFpbGluZ1NwYWNlID0gIWlzRW5kT2ZQYXJhZ3Jh
cGgoZW5kT2ZJbnNlcnRlZENvbnRlbnQpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIWZyYW1lLT5pc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4ZW1wdChlbmRPZkluc2VydGVk
Q29udGVudC5jaGFyYWN0ZXJBZnRlcigpLCBmYWxzZSk7CiAgICAgICAgIGlmIChuZWVkc1RyYWls
aW5nU3BhY2UpIHsKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2xhc3RO
b2RlSW5zZXJ0ZWQtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBib29sIGNvbGxhcHNlV2hpdGVT
cGFjZSA9ICFyZW5kZXJlciB8fCByZW5kZXJlci0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNl
KCk7CiAgICAgICAgICAgICBpZiAobV9sYXN0Tm9kZUluc2VydGVkLT5pc1RleHROb2RlKCkpIHsK
LSAgICAgICAgICAgICAgICBUZXh0ICp0ZXh0ID0gc3RhdGljX2Nhc3Q8VGV4dCAqPihtX2xhc3RO
b2RlSW5zZXJ0ZWQuZ2V0KCkpOwotICAgICAgICAgICAgICAgIGluc2VydFRleHRJbnRvTm9kZSh0
ZXh0LCB0ZXh0LT5sZW5ndGgoKSwgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKLSAgICAgICAg
ICAgICAgICBpbnNlcnRpb25Qb3MgPSBQb3NpdGlvbih0ZXh0LCB0ZXh0LT5sZW5ndGgoKSk7Cisg
ICAgICAgICAgICAgICAgVGV4dCogdGV4dCA9IHN0YXRpY19jYXN0PFRleHQqPihtX2xhc3ROb2Rl
SW5zZXJ0ZWQuZ2V0KCkpOworICAgICAgICAgICAgICAgIGluc2VydFRleHRJbnRvTm9kZSh0ZXh0
LCB0ZXh0LT5sZW5ndGgoKSwgY29sbGFwc2VXaGl0ZVNwYWNlID8gbm9uQnJlYWtpbmdTcGFjZVN0
cmluZygpIDogIiAiKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgUmVm
UHRyPE5vZGU+IG5vZGUgPSBkb2N1bWVudCgpLT5jcmVhdGVFZGl0aW5nVGV4dE5vZGUobm9uQnJl
YWtpbmdTcGFjZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9
IGRvY3VtZW50KCktPmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb2xsYXBzZVdoaXRlU3BhY2UgPyBu
b25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICIpOwogICAgICAgICAgICAgICAgIGluc2VydE5v
ZGVBZnRlckFuZFVwZGF0ZU5vZGVzSW5zZXJ0ZWQobm9kZS5nZXQoKSwgbV9sYXN0Tm9kZUluc2Vy
dGVkLmdldCgpKTsKLSAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb3MgPSBQb3NpdGlvbihub2Rl
LmdldCgpLCAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIAogICAgICAgICBib29s
IG5lZWRzTGVhZGluZ1NwYWNlID0gIWlzU3RhcnRPZlBhcmFncmFwaChzdGFydE9mSW5zZXJ0ZWRD
b250ZW50KSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWZyYW1lLT5pc0No
YXJhY3RlclNtYXJ0UmVwbGFjZUV4ZW1wdChzdGFydE9mSW5zZXJ0ZWRDb250ZW50LnByZXZpb3Vz
KCkuY2hhcmFjdGVyQWZ0ZXIoKSwgdHJ1ZSk7CiAgICAgICAgIGlmIChuZWVkc0xlYWRpbmdTcGFj
ZSkgeworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fbGFzdE5vZGVJbnNl
cnRlZC0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGJvb2wgY29sbGFwc2VXaGl0ZVNwYWNlID0g
IXJlbmRlcmVyIHx8IHJlbmRlcmVyLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKTsKICAg
ICAgICAgICAgIGlmIChtX2ZpcnN0Tm9kZUluc2VydGVkLT5pc1RleHROb2RlKCkpIHsKLSAgICAg
ICAgICAgICAgICBUZXh0ICp0ZXh0ID0gc3RhdGljX2Nhc3Q8VGV4dCAqPihtX2ZpcnN0Tm9kZUlu
c2VydGVkLmdldCgpKTsKLSAgICAgICAgICAgICAgICBpbnNlcnRUZXh0SW50b05vZGUodGV4dCwg
MCwgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBUZXh0KiB0ZXh0
ID0gc3RhdGljX2Nhc3Q8VGV4dCo+KG1fZmlyc3ROb2RlSW5zZXJ0ZWQuZ2V0KCkpOworICAgICAg
ICAgICAgICAgIGluc2VydFRleHRJbnRvTm9kZSh0ZXh0LCAwLCBjb2xsYXBzZVdoaXRlU3BhY2Ug
PyBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkgOiAiICIpOwogICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IGRvY3VtZW50KCktPmNyZWF0ZUVk
aXRpbmdUZXh0Tm9kZShub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOworICAgICAgICAgICAgICAg
IFJlZlB0cjxOb2RlPiBub2RlID0gZG9jdW1lbnQoKS0+Y3JlYXRlRWRpdGluZ1RleHROb2RlKGNv
bGxhcHNlV2hpdGVTcGFjZSA/IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSA6ICIgIik7CiAgICAg
ICAgICAgICAgICAgLy8gRG9uJ3QgdXBkYXRlTm9kZXNJbnNlcnRlZC4gIERvaW5nIHNvIHdvdWxk
IHNldCBtX2xhc3ROb2RlSW5zZXJ0ZWQgdG8gYmUgdGhlIG5vZGUgY29udGFpbmluZyB0aGUgCiAg
ICAgICAgICAgICAgICAgLy8gbGVhZGluZyBzcGFjZSwgYnV0IG1fbGFzdE5vZGVJbnNlcnRlZCBp
cyBzdXBwb3NlZCB0byBtYXJrIHRoZSBlbmQgb2YgcGFzdGVkIGNvbnRlbnQuCiAgICAgICAgICAg
ICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShub2RlLmdldCgpLCBtX2ZpcnN0Tm9kZUluc2VydGVkLmdl
dCgpKTsKQEAgLTgxMCwxOSArODM2LDE5IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkoKQogICAgIGNvbXBsZXRlSFRNTFJlcGxhY2VtZW50KGxhc3RQb3NpdGlvblRvU2Vs
ZWN0KTsKIH0KIAotdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlRW5kQlJJZk5l
ZWRlZChOb2RlKiBlbmRCUikKK2Jvb2wgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnNob3VsZFJl
bW92ZUVuZEJSKE5vZGUqIGVuZEJSKQogewogICAgIGlmICghZW5kQlIgfHwgIWVuZEJSLT5pbkRv
Y3VtZW50KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyhQb3NpdGlvbihlbmRCUiwgMCkpOwog
ICAgIAotICAgIGlmICgvLyBUaGUgYnIgaXMgY29sbGFwc2VkIGF3YXkgYW5kIHNvIGlzIHVubmVj
ZXNzYXJ5LgorICAgIHJldHVybgorICAgICAgICAvLyBUaGUgYnIgaXMgY29sbGFwc2VkIGF3YXkg
YW5kIHNvIGlzIHVubmVjZXNzYXJ5LgogICAgICAgICAhZG9jdW1lbnQoKS0+aW5TdHJpY3RNb2Rl
KCkgJiYgaXNFbmRPZkJsb2NrKHZpc2libGVQb3MpICYmICFpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlz
aWJsZVBvcykgfHwKICAgICAgICAgLy8gQSBiciB0aGF0IHdhcyBvcmlnaW5hbGx5IGhvbGRpbmcg
YSBsaW5lIG9wZW4gc2hvdWxkIGJlIGRpc3BsYWNlZCBieSBpbnNlcnRlZCBjb250ZW50LgogICAg
ICAgICAvLyBBIGJyIHRoYXQgd2FzIG9yaWdpbmFsbHkgYWN0aW5nIGFzIGEgbGluZSBicmVhayBz
aG91bGQgc3RpbGwgYmUgYWN0aW5nIGFzIGEgbGluZSBicmVhaywgbm90IGFzIGEgcGxhY2Vob2xk
ZXIuCi0gICAgICAgIGlzU3RhcnRPZlBhcmFncmFwaCh2aXNpYmxlUG9zKSAmJiBpc0VuZE9mUGFy
YWdyYXBoKHZpc2libGVQb3MpKQotICAgICAgICByZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnMo
ZW5kQlIpOworICAgICAgICBpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZVBvcykgJiYgaXNFbmRP
ZlBhcmFncmFwaCh2aXNpYmxlUG9zKTsKIH0KIAogdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6Y29tcGxldGVIVE1MUmVwbGFjZW1lbnQoY29uc3QgUG9zaXRpb24gJmxhc3RQb3NpdGlvblRv
U2VsZWN0KQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgJ
KHJldmlzaW9uIDE1NTY5KQorKysgV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDI0ICs1MiwyMCBAQCB0eXBlZGVmIEhhc2hNYXA8
Tm9kZSosIFJlZlB0cjxSZW5kZXJpbmdJCiAKIC8vIC0tLSBSZXBsYWNlbWVudEZyYWdtZW50IGhl
bHBlciBjbGFzcwogCi1jbGFzcyBSZXBsYWNlbWVudEZyYWdtZW50CitjbGFzcyBSZXBsYWNlbWVu
dEZyYWdtZW50IDogTm9uY29weWFibGUKIHsKIHB1YmxpYzoKLSAgICBSZXBsYWNlbWVudEZyYWdt
ZW50KERvY3VtZW50KiwgRG9jdW1lbnRGcmFnbWVudCosIGJvb2wsIEVsZW1lbnQqKTsKLSAgICB+
UmVwbGFjZW1lbnRGcmFnbWVudCgpOworICAgIFJlcGxhY2VtZW50RnJhZ21lbnQoRG9jdW1lbnQq
LCBEb2N1bWVudEZyYWdtZW50KiwgYm9vbCBtYXRjaFN0eWxlLCBjb25zdCBTZWxlY3Rpb24mKTsK
IAotICAgIE5vZGUgKmZpcnN0Q2hpbGQoKSBjb25zdDsKLSAgICBOb2RlICpsYXN0Q2hpbGQoKSBj
b25zdDsKKyAgICBOb2RlKiBmaXJzdENoaWxkKCkgY29uc3Q7CisgICAgTm9kZSogbGFzdENoaWxk
KCkgY29uc3Q7CiAKLSAgICBOb2RlICptZXJnZVN0YXJ0Tm9kZSgpIGNvbnN0OworICAgIE5vZGUq
IG1lcmdlU3RhcnROb2RlKCkgY29uc3Q7CiAKICAgICBjb25zdCBSZW5kZXJpbmdJbmZvTWFwJiBy
ZW5kZXJpbmdJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdJbmZvOyB9CiAgICAgY29u
c3QgTm9kZVZlY3RvciYgbm9kZXMoKSBjb25zdCB7IHJldHVybiBtX25vZGVzOyB9CiAKLSAgICBF
RnJhZ21lbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRW1wdHlGcmFnbWVudDsgfQotICAgIGJv
b2wgaXNTaW5nbGVUZXh0Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBTaW5nbGVUZXh0
Tm9kZUZyYWdtZW50OyB9Ci0gICAgYm9vbCBpc1RyZWVGcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSA9PSBUcmVlRnJhZ21lbnQ7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKIAog
ICAgIGJvb2wgaGFzTW9yZVRoYW5PbmVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTW9yZVRo
YW5PbmVCbG9jazsgfQogICAgIGJvb2wgaGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRTdGFydCgpIGNv
bnN0IHsgcmV0dXJuIG1faGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRTdGFydDsgfQpAQCAtNzksMTUg
Kzc1LDExIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHJlbW92ZU5vZGUoUGFzc1JlZlB0cjxO
b2RlPik7CiAKLXByaXZhdGU6Ci0gICAgLy8gbm8gY29weSBjb25zdHJ1Y3Rpb24gb3IgYXNzaWdu
bWVudAotICAgIFJlcGxhY2VtZW50RnJhZ21lbnQoY29uc3QgUmVwbGFjZW1lbnRGcmFnbWVudCAm
KTsKLSAgICBSZXBsYWNlbWVudEZyYWdtZW50ICZvcGVyYXRvcj0oY29uc3QgUmVwbGFjZW1lbnRG
cmFnbWVudCAmKTsKLSAgICAKLSAgICBzdGF0aWMgYm9vbCBpc0ludGVyY2hhbmdlTmV3bGluZU5v
ZGUoY29uc3QgTm9kZSAqKTsKLSAgICBzdGF0aWMgYm9vbCBpc0ludGVyY2hhbmdlQ29udmVydGVk
U3BhY2VTcGFuKGNvbnN0IE5vZGUgKik7Citwcml2YXRlOiAgICAKKyAgICBzdGF0aWMgYm9vbCBp
c0ludGVyY2hhbmdlTmV3bGluZU5vZGUoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBib29sIGlz
SW50ZXJjaGFuZ2VDb252ZXJ0ZWRTcGFjZVNwYW4oY29uc3QgTm9kZSopOwogICAgIAotICAgIFBh
c3NSZWZQdHI8Tm9kZT4gaW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKCk7CisgICAgUGFz
c1JlZlB0cjxOb2RlPiBpbnNlcnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmcoTm9kZSogY29udGV4
dCk7CiAgICAgdm9pZCBzYXZlUmVuZGVyaW5nSW5mbyhOb2RlKik7CiAgICAgdm9pZCBjb21wdXRl
U3R5bGVzVXNpbmdUZXN0UmVuZGVyaW5nKE5vZGUqKTsKICAgICB2b2lkIHJlbW92ZVVucmVuZGVy
ZWROb2RlcyhOb2RlKik7CkBAIC05NSwxMSArODcsMTAgQEAgcHJpdmF0ZToKICAgICBpbnQgcmVu
ZGVyZWRCbG9ja3MoTm9kZSopOwogICAgIHZvaWQgcmVtb3ZlU3R5bGVOb2RlcygpOwogCi0gICAg
Tm9kZSAqZW5jbG9zaW5nQmxvY2soTm9kZSAqKSBjb25zdDsKLSAgICB2b2lkIHJlbW92ZU5vZGVQ
cmVzZXJ2aW5nQ2hpbGRyZW4oTm9kZSAqKTsKLSAgICB2b2lkIGluc2VydE5vZGVCZWZvcmUoTm9k
ZSAqbm9kZSwgTm9kZSAqcmVmTm9kZSk7CisgICAgTm9kZSogZW5jbG9zaW5nQmxvY2soTm9kZSop
IGNvbnN0OworICAgIHZvaWQgcmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbihOb2RlKik7Cisg
ICAgdm9pZCBpbnNlcnROb2RlQmVmb3JlKE5vZGUqIG5vZGUsIE5vZGUqIHJlZk5vZGUpOwogCi0g
ICAgRUZyYWdtZW50VHlwZSBtX3R5cGU7CiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50
OwogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBtX2ZyYWdtZW50OwogICAgIFJlbmRlcmlu
Z0luZm9NYXAgbV9yZW5kZXJpbmdJbmZvOwpAQCAtMTI4LDEwICsxMTksMTAgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgdXBkYXRlTm9kZXNJbnNlcnRlZChOb2RlICopOwogICAgIHZvaWQgZml4dXBO
b2RlU3R5bGVzKGNvbnN0IE5vZGVWZWN0b3ImLCBjb25zdCBSZW5kZXJpbmdJbmZvTWFwJik7Ci0g
ICAgdm9pZCByZW1vdmVFbmRCUklmTmVlZGVkKE5vZGUqKTsKKyAgICBib29sIHNob3VsZFJlbW92
ZUVuZEJSKE5vZGUqKTsKICAgICAKICAgICBib29sIHNob3VsZE1lcmdlU3RhcnQoY29uc3QgUmVw
bGFjZW1lbnRGcmFnbWVudCYsIGNvbnN0IFNlbGVjdGlvbiYpOwotICAgIGJvb2wgc2hvdWxkTWVy
Z2VFbmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCwgYm9vbCk7CisgICAgYm9vbCBzaG91
bGRNZXJnZUVuZChjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBib29sIHNlbGVjdGlvbkVuZFdhc0Vu
ZE9mUGFyYWdyYXBoKTsKIAogICAgIFJlZlB0cjxOb2RlPiBtX2ZpcnN0Tm9kZUluc2VydGVkOwog
ICAgIFJlZlB0cjxOb2RlPiBtX2xhc3ROb2RlSW5zZXJ0ZWQ7CkluZGV4OiBXZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAko
cmV2aXNpb24gMTU1NjkpCisrKyBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQyLDEyICsyNDIsMTIgQEAgc3RhdGljIERlcHJlY2F0ZWRTdHJpbmcgZW5kTWFy
a3VwKGNvbnN0IAogICAgIHJldHVybiAiIjsKIH0KIAotc3RhdGljIERlcHJlY2F0ZWRTdHJpbmcg
bWFya3VwKGNvbnN0IE5vZGUgKnN0YXJ0Tm9kZSwgYm9vbCBvbmx5SW5jbHVkZUNoaWxkcmVuLCBi
b29sIGluY2x1ZGVTaWJsaW5ncywgRGVwcmVjYXRlZFB0ckxpc3Q8Tm9kZT4gKm5vZGVzKQorc3Rh
dGljIERlcHJlY2F0ZWRTdHJpbmcgbWFya3VwKE5vZGUqIHN0YXJ0Tm9kZSwgYm9vbCBvbmx5SW5j
bHVkZUNoaWxkcmVuLCBib29sIGluY2x1ZGVTaWJsaW5ncywgVmVjdG9yPE5vZGUqPiAqbm9kZXMp
CiB7CiAgICAgLy8gRG9lc24ndCBtYWtlIHNlbnNlIHRvIG9ubHkgaW5jbHVkZSBjaGlsZHJlbiBh
bmQgaW5jbHVkZSBzaWJsaW5ncy4KICAgICBBU1NFUlQoIShvbmx5SW5jbHVkZUNoaWxkcmVuICYm
IGluY2x1ZGVTaWJsaW5ncykpOwogICAgIERlcHJlY2F0ZWRTdHJpbmcgbWUgPSAiIjsKLSAgICBm
b3IgKGNvbnN0IE5vZGUgKmN1cnJlbnQgPSBzdGFydE5vZGU7IGN1cnJlbnQgIT0gTlVMTDsgY3Vy
cmVudCA9IGluY2x1ZGVTaWJsaW5ncyA/IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkgOiBOVUxMKSB7
CisgICAgZm9yIChOb2RlKiBjdXJyZW50ID0gc3RhcnROb2RlOyBjdXJyZW50ICE9IE5VTEw7IGN1
cnJlbnQgPSBpbmNsdWRlU2libGluZ3MgPyBjdXJyZW50LT5uZXh0U2libGluZygpIDogTlVMTCkg
ewogICAgICAgICBpZiAoIW9ubHlJbmNsdWRlQ2hpbGRyZW4pIHsKICAgICAgICAgICAgIGlmIChu
b2RlcykKICAgICAgICAgICAgICAgICBub2Rlcy0+YXBwZW5kKGN1cnJlbnQpOwpAQCAtMjg0LDcg
KzI4NCw3IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlVVJMcyhOb2RlICpub2RlLCBjb24KIAogLy8g
RklYTUU6IFNob3VsZG4ndCB3ZSBvbWl0IHN0eWxlIGluZm8gd2hlbiBhbm5vdGF0ZSA9PSBEb05v
dEFubm90YXRlRm9ySW50ZXJjaGFuZ2U/IAogLy8gRklYTUU6IEF0IGxlYXN0LCBhbm5vdGF0aW9u
IGFuZCBzdHlsZSBpbmZvIHNob3VsZCBwcm9iYWJseSBub3QgYmUgaW5jbHVkZWQgaW4gcmFuZ2Uu
bWFya3VwU3RyaW5nKCkKLURlcHJlY2F0ZWRTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdl
ICpyYW5nZSwgRGVwcmVjYXRlZFB0ckxpc3Q8Tm9kZT4gKm5vZGVzLCBFQW5ub3RhdGVGb3JJbnRl
cmNoYW5nZSBhbm5vdGF0ZSkKK0RlcHJlY2F0ZWRTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJh
bmdlICpyYW5nZSwgVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdl
IGFubm90YXRlKQogewogICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UtPmlzRGV0YWNoZWQoKSkKICAg
ICAgICAgcmV0dXJuIERlcHJlY2F0ZWRTdHJpbmcoKTsKQEAgLTMxMCw3ICszMTAsNyBAQCBEZXBy
ZWNhdGVkU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nCiAgICAgRGVwcmVjYXRlZFN0cmlu
Z0xpc3QgbWFya3VwczsKICAgICBOb2RlICpwYXN0RW5kID0gcmFuZ2UtPnBhc3RFbmROb2RlKCk7
CiAgICAgTm9kZSAqbGFzdENsb3NlZCA9IDA7Ci0gICAgRGVwcmVjYXRlZFB0ckxpc3Q8Tm9kZT4g
YW5jZXN0b3JzVG9DbG9zZTsKKyAgICBWZWN0b3I8Tm9kZSo+IGFuY2VzdG9yc1RvQ2xvc2U7CiAK
ICAgICAvLyBjYWxjdWxhdGUgdGhlICJkZWZhdWx0IHN0eWxlIiBmb3IgdGhpcyBtYXJrdXAKICAg
ICBQb3NpdGlvbiBwb3MoZG9jLT5kb2N1bWVudEVsZW1lbnQoKSwgMCk7CkBAIC0zNzAsMTQgKzM3
MCwxNSBAQCBEZXByZWNhdGVkU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nCiAgICAgICAg
ICAgICBpZiAobi0+bmV4dFNpYmxpbmcoKSA9PSAwIHx8IG5leHQgPT0gcGFzdEVuZCkgewogICAg
ICAgICAgICAgICAgIGlmICghYW5jZXN0b3JzVG9DbG9zZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gQ2xvc2UgdXAgdGhlIGFuY2VzdG9ycy4KLSAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKE5vZGUgKmFuY2VzdG9yID0gYW5jZXN0b3JzVG9DbG9zZS5sYXN0KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSAqYW5j
ZXN0b3IgPSBhbmNlc3RvcnNUb0Nsb3NlLmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChuZXh0ICE9IHBhc3RFbmQgJiYgbmV4dC0+aXNBbmNlc3RvcihhbmNlc3RvcikpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBOb3QgYXQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UsIGNsb3NlIGFuY2VzdG9ycyB1cCB0byBzaWJs
aW5nIG9mIG5leHQgbm9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmt1cHMuYXBwZW5k
KGVuZE1hcmt1cChhbmNlc3RvcikpOwogICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENsb3Nl
ZCA9IGFuY2VzdG9yOwogICAgICAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3JzVG9DbG9zZS5y
ZW1vdmVMYXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fSB3aGlsZSAoIWFuY2VzdG9yc1RvQ2xvc2UuaXNFbXB0eSgpKTsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCAhPSBwYXN0RW5kKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBOb2RlICpuZXh0UGFyZW50ID0gbmV4dC0+cGFyZW50Tm9kZSgp
OwpAQCAtNDc0LDE2ICs0NzUsMTggQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVh
dGVGcmFnbQogICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiB9CiAKLURlcHJlY2F0ZWRT
dHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUgKm5vZGUsIEVDaGlsZHJlbk9ubHkgaW5jbHVk
ZUNoaWxkcmVuLAotICAgIERlcHJlY2F0ZWRQdHJMaXN0PE5vZGU+ICpub2RlcywgRUFubm90YXRl
Rm9ySW50ZXJjaGFuZ2UgYW5ub3RhdGUpCitEZXByZWNhdGVkU3RyaW5nIGNyZWF0ZU1hcmt1cChj
b25zdCBOb2RlKiBub2RlLCBFQ2hpbGRyZW5Pbmx5IGluY2x1ZGVDaGlsZHJlbiwKKyAgICBWZWN0
b3I8Tm9kZSo+KiBub2RlcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgYW5ub3RhdGUpCiB7CiAg
ICAgQVNTRVJUKGFubm90YXRlID09IERvTm90QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSk7IC8vIGFu
bm90YXRpb24gbm90IHlldCBpbXBsZW1lbnRlZCBmb3IgdGhpcyBjb2RlIHBhdGgKICAgICBub2Rl
LT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLSAg
ICByZXR1cm4gbWFya3VwKG5vZGUsIGluY2x1ZGVDaGlsZHJlbiwgZmFsc2UsIG5vZGVzKTsKKyAg
ICByZXR1cm4gbWFya3VwKGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpLCBpbmNsdWRlQ2hpbGRyZW4s
IGZhbHNlLCBub2Rlcyk7CiB9CiAKLXN0YXRpYyB2b2lkIGNyZWF0ZVBhcmFncmFwaENvbnRlbnRz
RnJvbVN0cmluZyhEb2N1bWVudCAqZG9jdW1lbnQsIEVsZW1lbnQgKnBhcmFncmFwaCwgY29uc3Qg
RGVwcmVjYXRlZFN0cmluZyAmc3RyaW5nKQorc3RhdGljIHZvaWQgY3JlYXRlUGFyYWdyYXBoQ29u
dGVudHNGcm9tU3RyaW5nKEVsZW1lbnQqIHBhcmFncmFwaCwgY29uc3QgRGVwcmVjYXRlZFN0cmlu
ZyYgc3RyaW5nKQogeworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHBhcmFncmFwaC0+ZG9jdW1l
bnQoKTsKKwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChzdHJpbmcuaXNFbXB0
eSgpKSB7CiAgICAgICAgIHBhcmFncmFwaC0+YXBwZW5kQ2hpbGQoY3JlYXRlQmxvY2tQbGFjZWhv
bGRlckVsZW1lbnQoZG9jdW1lbnQpLCBlYyk7CkBAIC01MDEsNyArNTA0LDcgQEAgc3RhdGljIHZv
aWQgY3JlYXRlUGFyYWdyYXBoQ29udGVudHNGcm9tUwogCiAgICAgICAgIC8vIGFwcGVuZCB0aGUg
bm9uLXRhYiB0ZXh0dWFsIHBhcnQKICAgICAgICAgaWYgKCFzLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgaWYgKHRhYlRleHQgIT0gIiIpIHsKKyAgICAgICAgICAgIGlmICghdGFiVGV4dC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0ZVRh
YlNwYW5FbGVtZW50KGRvY3VtZW50LCB0YWJUZXh0KSwgZWMpOwogICAgICAgICAgICAgICAgIEFT
U0VSVChlYyA9PSAwKTsKICAgICAgICAgICAgICAgICB0YWJUZXh0ID0gIiI7CkBAIC01MTQsNTIg
KzUxNyw3NiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVQYXJhZ3JhcGhDb250ZW50c0Zyb21TCiAKICAg
ICAgICAgLy8gdGhlcmUgaXMgYSB0YWIgYWZ0ZXIgZXZlcnkgZW50cnksIGV4Y2VwdCB0aGUgbGFz
dCBlbnRyeQogICAgICAgICAvLyAoaWYgdGhlIGxhc3QgY2hhcmFjdGVyIGlzIGEgdGFiLCB0aGUg
bGlzdCBnZXRzIGFuIGV4dHJhIGVtcHR5IGVudHJ5KQotICAgICAgICBpZiAoIXRhYkxpc3QuaXNF
bXB0eSgpKSB7CisgICAgICAgIGlmICghdGFiTGlzdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICB0
YWJUZXh0ICs9ICdcdCc7Ci0gICAgICAgIH0gZWxzZSBpZiAodGFiVGV4dCAhPSAiIikgeworICAg
ICAgICBlbHNlIGlmICghdGFiVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHBhcmFncmFw
aC0+YXBwZW5kQ2hpbGQoY3JlYXRlVGFiU3BhbkVsZW1lbnQoZG9jdW1lbnQsIHRhYlRleHQpLCBl
Yyk7CiAgICAgICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAK
LVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChEb2N1
bWVudCAqZG9jdW1lbnQsIGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcgJnRleHQpCitQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoUmFuZ2UqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBpZiAoIWRvY3VtZW50KQorICAgIGlmICghY29u
dGV4dCkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBOb2RlKiBzdHlsZU5vZGUgPSBjb250ZXh0
LT5zdGFydE5vZGUoKTsKKyAgICBpZiAoIXN0eWxlTm9kZSkgeworICAgICAgICBzdHlsZU5vZGUg
PSBjb250ZXh0LT5zdGFydFBvc2l0aW9uKCkubm9kZSgpOworICAgICAgICBpZiAoIXN0eWxlTm9k
ZSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHN0eWxlTm9kZS0+ZG9jdW1lbnQoKTsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgIAotICAg
IGlmICghdGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBzdHJpbmcg
PSB0ZXh0OworICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZyYWdtZW50
LnJlbGVhc2UoKTsKIAotICAgICAgICAvLyBCcmVhayBzdHJpbmcgaW50byBwYXJhZ3JhcGhzLiBF
eHRyYSBsaW5lIGJyZWFrcyB0dXJuIGludG8gZW1wdHkgcGFyYWdyYXBocy4KLSAgICAgICAgc3Ry
aW5nLnJlcGxhY2UoIlxyXG4iLCAiXG4iKTsKLSAgICAgICAgc3RyaW5nLnJlcGxhY2UoJ1xyJywg
J1xuJyk7Ci0gICAgICAgIERlcHJlY2F0ZWRTdHJpbmdMaXN0IGxpc3QgPSBEZXByZWNhdGVkU3Ry
aW5nTGlzdDo6c3BsaXQoJ1xuJywgc3RyaW5nLCB0cnVlKTsgLy8gdHJ1ZSBnZXRzIHVzIGVtcHR5
IHN0cmluZ3MgaW4gdGhlIGxpc3QKLSAgICAgICAgd2hpbGUgKCFsaXN0LmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBzID0gbGlzdC5maXJzdCgpOwotICAgICAgICAg
ICAgbGlzdC5wb3BfZnJvbnQoKTsKKyAgICBEZXByZWNhdGVkU3RyaW5nIHN0cmluZyA9IHRleHQu
ZGVwcmVjYXRlZFN0cmluZygpOworICAgIHN0cmluZy5yZXBsYWNlKCJcclxuIiwgIlxuIik7Cisg
ICAgc3RyaW5nLnJlcGxhY2UoJ1xyJywgJ1xuJyk7CiAKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBzdHlsZU5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKHJlbmRlcmVyICYmIHJl
bmRlcmVyLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgeworICAgICAgICBmcmFnbWVudC0+
YXBwZW5kQ2hpbGQoZG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKHN0cmluZyksIGVjKTsKKyAgICAg
ICAgQVNTRVJUKGVjID09IDApOworICAgICAgICBpZiAoc3RyaW5nLmVuZHNXaXRoKCJcbiIpKSB7
CiAgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudDsKLSAgICAgICAgICAgIGlmIChz
LmlzRW1wdHkoKSAmJiBsaXN0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIC8vIEZvciBs
YXN0IGxpbmUsIHVzZSB0aGUgIm1hZ2ljIEJSIiByYXRoZXIgdGhhbiBhIFAuCi0gICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50TlMoeGh0bWxOYW1lc3BhY2VV
UkksICJiciIsIGVjKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoZWMgPT0gMCk7Ci0gICAgICAg
ICAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNoYW5n
ZU5ld2xpbmUpOyAgICAgICAgICAgIAotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoZG9jdW1lbnQpOwot
ICAgICAgICAgICAgICAgIGNyZWF0ZVBhcmFncmFwaENvbnRlbnRzRnJvbVN0cmluZyhkb2N1bWVu
dCwgZWxlbWVudC5nZXQoKSwgcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmcmFnbWVu
dC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5nZXQoKSwgZWMpOworICAgICAgICAgICAgZWxlbWVudCA9
IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50TlMoeGh0bWxOYW1lc3BhY2VVUkksICJiciIsIGVjKTsK
KyAgICAgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0
dHJpYnV0ZShjbGFzc0F0dHIsIEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsgICAgICAgICAgICAK
KyAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgZWMp
OworICAgICAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBmcmFnbWVudC5yZWxlYXNlKCk7CisgICAgfQorCisgICAgLy8gQnJlYWsgc3RyaW5nIGludG8g
cGFyYWdyYXBocy4gRXh0cmEgbGluZSBicmVha3MgdHVybiBpbnRvIGVtcHR5IHBhcmFncmFwaHMu
CisgICAgRGVwcmVjYXRlZFN0cmluZ0xpc3QgbGlzdCA9IERlcHJlY2F0ZWRTdHJpbmdMaXN0Ojpz
cGxpdCgnXG4nLCBzdHJpbmcsIHRydWUpOyAvLyB0cnVlIGdldHMgdXMgZW1wdHkgc3RyaW5ncyBp
biB0aGUgbGlzdAorICAgIHdoaWxlICghbGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgRGVwcmVj
YXRlZFN0cmluZyBzID0gbGlzdC5maXJzdCgpOworICAgICAgICBsaXN0LnBvcF9mcm9udCgpOwor
CisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50OworICAgICAgICBpZiAocy5pc0VtcHR5
KCkgJiYgbGlzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIEZvciBsYXN0IGxpbmUsIHVz
ZSB0aGUgIm1hZ2ljIEJSIiByYXRoZXIgdGhhbiBhIFAuCisgICAgICAgICAgICBlbGVtZW50ID0g
ZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnROUyh4aHRtbE5hbWVzcGFjZVVSSSwgImJyIiwgZWMpOwog
ICAgICAgICAgICAgQVNTRVJUKGVjID09IDApOworICAgICAgICAgICAgZWxlbWVudC0+c2V0QXR0
cmlidXRlKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpOyAgICAgICAgICAgIAor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZWxlbWVudCA9IGNyZWF0ZURlZmF1bHRQYXJh
Z3JhcGhFbGVtZW50KGRvY3VtZW50KTsKKyAgICAgICAgICAgIGNyZWF0ZVBhcmFncmFwaENvbnRl
bnRzRnJvbVN0cmluZyhlbGVtZW50LmdldCgpLCBzKTsKICAgICAgICAgfQorICAgICAgICBmcmFn
bWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5yZWxlYXNlKCksIGVjKTsKKyAgICAgICAgQVNTRVJU
KGVjID09IDApOwogICAgIH0KICAgICByZXR1cm4gZnJhZ21lbnQucmVsZWFzZSgpOwogfQogCi1Q
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU5vZGVMaXN0KERv
Y3VtZW50ICpkb2N1bWVudCwgY29uc3QgRGVwcmVjYXRlZFB0ckxpc3Q8Tm9kZT4gJm5vZGVMaXN0
KQorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Ob2RlcyhE
b2N1bWVudCAqZG9jdW1lbnQsIGNvbnN0IFZlY3RvcjxOb2RlKj4mIG5vZGVzKQogewogICAgIGlm
ICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNTY3LDkgKzU5NCwxMCBAQCBQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtCiAgICAgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsK
IAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGZvciAoRGVwcmVjYXRlZFB0ckxpc3RJ
dGVyYXRvcjxOb2RlPiBpKG5vZGVMaXN0KTsgaS5jdXJyZW50KCk7ICsraSkgeworICAgIHNpemVf
dCBzaXplID0gbm9kZXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlRGVmYXVsdFBh
cmFncmFwaEVsZW1lbnQoZG9jdW1lbnQpOwotICAgICAgICBlbGVtZW50LT5hcHBlbmRDaGlsZChp
LmN1cnJlbnQoKSwgZWMpOworICAgICAgICBlbGVtZW50LT5hcHBlbmRDaGlsZChub2Rlc1tpXSwg
ZWMpOwogICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CiAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRD
aGlsZChlbGVtZW50LnJlbGVhc2UoKSwgZWMpOwogICAgICAgICBBU1NFUlQoZWMgPT0gMCk7Cklu
ZGV4OiBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5oCShyZXZpc2lvbiAxNTU2OSkKKysrIFdlYkNvcmUvZWRpdGluZy9tYXJrdXAu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSFRNTEludGVy
Y2hhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsMTggKzM4LDE2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSYW5nZTsKICAgICBjbGFzcyBTdHJpbmc7CiAKLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgRGVwcmVjYXRlZFB0ckxpc3Q7Ci0KICAgICBlbnVtIEVD
aGlsZHJlbk9ubHkgeyBJbmNsdWRlTm9kZSwgQ2hpbGRyZW5Pbmx5IH07CiAKLSAgICBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoRG9jdW1lbnQqLCBj
b25zdCBEZXByZWNhdGVkU3RyaW5nICZ0ZXh0KTsKLSAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChEb2N1bWVudCosIGNvbnN0IFN0cmluZyAm
bWFya3VwLCBjb25zdCBTdHJpbmcgJmJhc2VVUkwpOwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTm9kZUxpc3QoRG9jdW1lbnQqLCBjb25zdCBEZXBy
ZWNhdGVkUHRyTGlzdDxOb2RlPiAmbm9kZUxpc3QpOwotCi0gICAgRGVwcmVjYXRlZFN0cmluZyBj
cmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UgKnJhbmdlLAotICAgICAgICBEZXByZWNhdGVkUHRyTGlz
dDxOb2RlPiAqbm9kZXMgPSAwLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSA9IERvTm90QW5ub3Rh
dGVGb3JJbnRlcmNoYW5nZSk7Ci0gICAgRGVwcmVjYXRlZFN0cmluZyBjcmVhdGVNYXJrdXAoY29u
c3QgTm9kZSAqbm9kZSwgRUNoaWxkcmVuT25seSA9IEluY2x1ZGVOb2RlLAotICAgICAgICBEZXBy
ZWNhdGVkUHRyTGlzdDxOb2RlPiAqbm9kZXMgPSAwLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSA9
IERvTm90QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSk7CisgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KFJhbmdlKiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIHRleHQpOworICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTCk7CisgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZyb21Ob2RlcyhEb2N1bWVudCosIGNvbnN0IFZlY3RvcjxOb2RlKj4mKTsKKworICAgIERl
cHJlY2F0ZWRTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiwKKyAgICAgICAgVmVjdG9y
PE5vZGUqPiogPSAwLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSA9IERvTm90QW5ub3RhdGVGb3JJ
bnRlcmNoYW5nZSk7CisgICAgRGVwcmVjYXRlZFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgTm9k
ZSosIEVDaGlsZHJlbk9ubHkgPSBJbmNsdWRlTm9kZSwKKyAgICAgICAgVmVjdG9yPE5vZGUqPiog
PSAwLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSA9IERvTm90QW5ub3RhdGVGb3JJbnRlcmNoYW5n
ZSk7CiAKIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU2OSkKKysrIFdl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMCw2ICszMDAs
OSBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogQWRkIHNwZWNpYWwgY2FzZSBmb3Igd2hlbiB3
ZSBoYWQgb25lIHRleHQgY2hpbGQgYW5kIHdlIGp1c3Qgd2FudCB0byBzZXQgaXRzIHRleHQ/Cisg
ICAgLy8gRklYTUU6IEFkZCBzcGVjaWFsIGNhc2UgZm9yIGNhc2VzIHdoZXJlIHdlIGNhbiB1c2Ug
cmVwbGFjZUNoaWxkPworCiAgICAgcmVtb3ZlQ2hpbGRyZW4oKTsKICAgICBhcHBlbmRDaGlsZChm
cmFnbWVudC5yZWxlYXNlKCksIGVjKTsKIH0KQEAgLTMxOSw4ICszMjIsOCBAQCB2b2lkIEhUTUxF
bGVtZW50OjpzZXRPdXRlckhUTUwoY29uc3QgU3RyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICAvLyBGSVhNRTogV2h5IGRvZXNuJ3QgdGhpcyBoYXZlIGNvZGUgdG8gbWVyZ2UgbmVpZ2hi
b3JpbmcgdGV4dCBub2RlcyB0aGUKLSAgICAvLyB3YXkgc2V0T3V0ZXJUZXh0IGRvZXM/CisgICAg
Ly8gRklYTUU6IEFkZCBzcGVjaWFsIGNhc2UgZm9yIHdoZW4gd2UgaGFkIG9uZSB0ZXh0IGNoaWxk
IGFuZCB3ZSBqdXN0IHdhbnQgdG8gc2V0IGl0cyB0ZXh0PworICAgIC8vIEZJWE1FOiBXaHkgZG9l
c24ndCB0aGlzIGhhdmUgY29kZSB0byBtZXJnZSBuZWlnaGJvcmluZyB0ZXh0IG5vZGVzIHRoZSB3
YXkgc2V0T3V0ZXJUZXh0IGRvZXM/CiAgICAgcGFyZW50LT5yZXBsYWNlQ2hpbGQoZnJhZ21lbnQu
cmVsZWFzZSgpLCB0aGlzLCBlYyk7CiB9CiAKQEAgLTMzOSwzNiArMzQyLDYwIEBAIHZvaWQgSFRN
TEVsZW1lbnQ6OnNldElubmVyVGV4dChjb25zdCBTdHIKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgdGFrZSB3aGl0ZXNwYWNlIGNvbGxhcHNpbmcg
aW50byBhY2NvdW50IGF0IGFsbC4KKyAgICAvLyBGSVhNRTogQWRkIHNwZWNpYWwgY2FzZSBmb3Ig
d2hlbiB3ZSBoYWQgb25lIHRleHQgY2hpbGQgYW5kIHdlIGp1c3Qgd2FudCB0byBzZXQgaXRzIHRl
eHQ/CisgICAgLy8gRklYTUU6IEFkZCBzcGVjaWFsIGNhc2UgZm9yIGNhc2VzIHdoZXJlIHdlIGNh
biB1c2UgcmVwbGFjZUNoaWxkPworCiAgICAgcmVtb3ZlQ2hpbGRyZW4oKTsKIAorICAgIGlmICgh
dGV4dC5jb250YWlucygnXG4nKSAmJiAhdGV4dC5jb250YWlucygnXHInKSkgeworICAgICAgICBp
ZiAodGV4dC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGFwcGVuZENo
aWxkKG5ldyBUZXh0KGRvY3VtZW50KCksIHRleHQpLCBlYyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBiZSBhYmxlIHRvIGRldGVjdCBwcmVz
ZXJ2ZU5ld2xpbmUgc3R5bGUgZXZlbiB3aGVuIHRoZXJlJ3Mgbm8gcmVuZGVyZXI/CisgICAgLy8g
RklYTUU6IENhbiB0aGUgcmVuZGVyZXIgYmUgb3V0IG9mIGRhdGUgaGVyZT8gRG8gd2UgbmVlZCB0
byBjYWxsIHVwZGF0ZVJlbmRlcmluZz8KKyAgICAvLyBGb3IgZXhhbXBsZSwgZm9yIHRoZSBjb250
ZW50cyBvZiB0ZXh0YXJlYSBlbGVtZW50cyB0aGF0IGFyZSBkaXNwbGF5Om5vbmU/CisgICAgUmVu
ZGVyT2JqZWN0KiByID0gcmVuZGVyZXIoKTsKKyAgICBpZiAociAmJiByLT5zdHlsZSgpLT5wcmVz
ZXJ2ZU5ld2xpbmUoKSkgeworICAgICAgICBpZiAoIXRleHQuY29udGFpbnMoJ1xyJykpIHsKKyAg
ICAgICAgICAgIGFwcGVuZENoaWxkKG5ldyBUZXh0KGRvY3VtZW50KCksIHRleHQpLCBlYyk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IFN0aWNrIHdp
dGggU3RyaW5nIG9uY2UgaXQgaGFzIGEgcmVwbGFjZSB0aGF0IGNhbiBkbyB0aGlzLgorICAgICAg
ICBEZXByZWNhdGVkU3RyaW5nIHRleHRXaXRoQ29uc2lzdGVudExpbmVCcmVha3MgPSB0ZXh0LmRl
cHJlY2F0ZWRTdHJpbmcoKTsKKyAgICAgICAgdGV4dFdpdGhDb25zaXN0ZW50TGluZUJyZWFrcy5y
ZXBsYWNlKCJcclxuIiwgIlxuIik7CisgICAgICAgIHRleHRXaXRoQ29uc2lzdGVudExpbmVCcmVh
a3MucmVwbGFjZSgnXHInLCAnXG4nKTsKKyAgICAgICAgYXBwZW5kQ2hpbGQobmV3IFRleHQoZG9j
dW1lbnQoKSwgdGV4dFdpdGhDb25zaXN0ZW50TGluZUJyZWFrcyksIGVjKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIC8vIEFkZCB0ZXh0IG5vZGVzIGFuZCA8YnI+IGVsZW1lbnRzLgor
ICAgIGVjID0gMDsKKyAgICBpbnQgbGluZVN0YXJ0ID0gMDsKKyAgICBVQ2hhciBwcmV2ID0gMDsK
ICAgICBpbnQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKLSAgICBpZiAoIXRleHQuY29udGFpbnMo
J1xuJykgJiYgIXRleHQuY29udGFpbnMoJ1xyJykgJiYgbGVuZ3RoKQotICAgICAgICBhcHBlbmRD
aGlsZChuZXcgVGV4dChkb2N1bWVudCgpLCB0ZXh0KSwgZWMpOwotICAgIGVsc2UgewotICAgICAg
ICBlYyA9IDA7Ci0gICAgICAgIGludCBsaW5lU3RhcnQgPSAwOwotICAgICAgICBVQ2hhciBwcmV2
ID0gMDsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgVUNoYXIgYyA9IHRleHRbaV07Ci0gICAgICAgICAgICBpZiAoYyA9PSAnXG4nIHx8IGMg
PT0gJ1xyJykgewotICAgICAgICAgICAgICAgIGlmIChpID4gbGluZVN0YXJ0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGFwcGVuZENoaWxkKG5ldyBUZXh0KGRvY3VtZW50KCksIHRleHQuc3Vic3Ry
aW5nKGxpbmVTdGFydCwgaSAtIGxpbmVTdGFydCkpLCBlYyk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChlYykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKCEoYyA9PSAnXG4nICYmIGkgIT0gMCAmJiBwcmV2ID09
ICdccicpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkKG5ldyBIVE1MQlJFbGVt
ZW50KGRvY3VtZW50KCkpLCBlYyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlYykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgbGluZVN0YXJ0ID0gaSArIDE7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgICAgICBVQ2hhciBjID0gdGV4dFtpXTsKKyAgICAgICAgaWYgKGMgPT0gJ1xu
JyB8fCBjID09ICdccicpIHsKKyAgICAgICAgICAgIGlmIChpID4gbGluZVN0YXJ0KSB7CisgICAg
ICAgICAgICAgICAgYXBwZW5kQ2hpbGQobmV3IFRleHQoZG9jdW1lbnQoKSwgdGV4dC5zdWJzdHJp
bmcobGluZVN0YXJ0LCBpIC0gbGluZVN0YXJ0KSksIGVjKTsKKyAgICAgICAgICAgICAgICBpZiAo
ZWMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICghKGMgPT0gJ1xuJyAmJiBpICE9IDAgJiYgcHJldiA9PSAnXHInKSkgeworICAgICAg
ICAgICAgICAgIGFwcGVuZENoaWxkKG5ldyBIVE1MQlJFbGVtZW50KGRvY3VtZW50KCkpLCBlYyk7
CisgICAgICAgICAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcmV2ID0gYzsKKyAgICAgICAgICAgIGxpbmVTdGFy
dCA9IGkgKyAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChsZW5ndGggPiBsaW5lU3RhcnQpCi0g
ICAgICAgICAgICBhcHBlbmRDaGlsZChuZXcgVGV4dChkb2N1bWVudCgpLCB0ZXh0LnN1YnN0cmlu
ZyhsaW5lU3RhcnQsIGxlbmd0aCAtIGxpbmVTdGFydCkpLCBlYyk7CisgICAgICAgIHByZXYgPSBj
OwogICAgIH0KKyAgICBpZiAobGVuZ3RoID4gbGluZVN0YXJ0KQorICAgICAgICBhcHBlbmRDaGls
ZChuZXcgVGV4dChkb2N1bWVudCgpLCB0ZXh0LnN1YnN0cmluZyhsaW5lU3RhcnQsIGxlbmd0aCAt
IGxpbmVTdGFydCkpLCBlYyk7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldE91dGVyVGV4dChj
b25zdCBTdHJpbmcgJnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTU1NjkpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OSwxMyArMjU5LDEzIEBA
IFN0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWx1ZSgpIGNvbnMKIAogdm9pZCBIVE1MVGV4
dEFyZWFFbGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIERlcHJl
Y2F0ZWRTdHJpbmcgc3RyaW5nID0gdmFsdWUuZGVwcmVjYXRlZFN0cmluZygpOwogICAgIC8vIFdl
YkNvcmVUZXh0QXJlYSBub3JtYWxpemVzIGxpbmUgZW5kaW5ncyBhZGRlZCBieSB0aGUgdXNlciB2
aWEgdGhlIGtleWJvYXJkIG9yIHBhc3RpbmcuCiAgICAgLy8gV2UgbXVzdCBub3JtYWxpemUgbGlu
ZSBlbmRpbmdzIGNvbWluZyBmcm9tIEpTLgotICAgIHN0cmluZy5yZXBsYWNlKCJcclxuIiwgIlxu
Iik7Ci0gICAgc3RyaW5nLnJlcGxhY2UoIlxyIiwgIlxuIik7CisgICAgRGVwcmVjYXRlZFN0cmlu
ZyB2YWx1ZVdpdGhOb3JtYWxpemVkTGluZUVuZGluZ3MgPSB2YWx1ZS5kZXByZWNhdGVkU3RyaW5n
KCk7CisgICAgdmFsdWVXaXRoTm9ybWFsaXplZExpbmVFbmRpbmdzLnJlcGxhY2UoIlxyXG4iLCAi
XG4iKTsKKyAgICB2YWx1ZVdpdGhOb3JtYWxpemVkTGluZUVuZGluZ3MucmVwbGFjZSgiXHIiLCAi
XG4iKTsKICAgICAKLSAgICBtX3ZhbHVlID0gU3RyaW5nKHN0cmluZyk7CisgICAgbV92YWx1ZSA9
IHZhbHVlV2l0aE5vcm1hbGl6ZWRMaW5lRW5kaW5nczsKICAgICBzZXRWYWx1ZU1hdGNoZXNSZW5k
ZXJlcigpOwogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT51cGRhdGVG
cm9tRWxlbWVudCgpOwpAQCAtMjgzLDEzICsyODMsMTQgQEAgU3RyaW5nIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OmRlZmF1bHRWYWx1ZQogewogICAgIFN0cmluZyB2YWwgPSAiIjsKIAotICAgIC8vIHRo
ZXJlIG1heSBiZSBjb21tZW50cyAtIGp1c3QgZ3JhYiB0aGUgdGV4dCBub2RlcworICAgIC8vIFNp
bmNlIHRoZXJlIG1heSBiZSBjb21tZW50cywgaWdub3JlIG5vZGVzIG90aGVyIHRoYW4gdGV4dCBu
b2Rlcy4KICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2li
bGluZygpKQogICAgICAgICBpZiAobi0+aXNUZXh0Tm9kZSgpKQogICAgICAgICAgICAgdmFsICs9
IHN0YXRpY19jYXN0PFRleHQqPihuKS0+ZGF0YSgpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBvbmx5IGRyb3AgdGhlIGZpcnN0IGNhcnJpYWdlIHJldHVybiBmb3IgdGhlIGRlZmF1bHQKLSAg
ICAvLyB2YWx1ZSBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBub3QgZGVmYXVsdFZhbHVlcyBzZXQg
ZnJvbSBKUy4KKyAgICAvLyB2YWx1ZSBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBub3QgZGVmYXVs
dFZhbHVlcyBzZXQgZnJvbSBKUy4gVGhpcyBjb2RlCisgICAgLy8gd2lsbCBkbyBib3RoLgogICAg
IGlmICh2YWwubGVuZ3RoKCkgPj0gMiAmJiB2YWxbMF0gPT0gJ1xyJyAmJiB2YWxbMV0gPT0gJ1xu
JykKICAgICAgICAgdmFsLnJlbW92ZSgwLCAyKTsKICAgICBlbHNlIGlmICh2YWwubGVuZ3RoKCkg
Pj0gMSAmJiAodmFsWzBdID09ICdccicgfHwgdmFsWzBdID09ICdcbicpKQpAQCAtMzAwLDE4ICsz
MDEsMTUgQEAgU3RyaW5nIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRlZmF1bHRWYWx1ZQogCiB2b2lk
IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmIGRlZmF1
bHRWYWx1ZSkKIHsKLSAgICAvLyB0aGVyZSBtYXkgYmUgY29tbWVudHMgLSByZW1vdmUgYWxsIHRo
ZSB0ZXh0IG5vZGVzIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBvbmUKLSAgICBEZXByZWNhdGVkUHRy
TGlzdDxOb2RlPiB0b1JlbW92ZTsKLSAgICBOb2RlICpuOwotICAgIGZvciAobiA9IGZpcnN0Q2hp
bGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpCisgICAgLy8gVG8gcHJlc2VydmUgY29tbWVu
dHMsIHJlbW92ZSBhbGwgdGhlIHRleHQgbm9kZXMsIHRoZW4gYWRkIGEgc2luZ2xlIG9uZS4KKyAg
ICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gdGV4dE5vZGVzOworICAgIGZvciAoTm9kZSogbiA9IGZp
cnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGlmIChuLT5pc1Rl
eHROb2RlKCkpCi0gICAgICAgICAgICB0b1JlbW92ZS5hcHBlbmQobik7Ci0gICAgRGVwcmVjYXRl
ZFB0ckxpc3RJdGVyYXRvcjxOb2RlPiBpdCh0b1JlbW92ZSk7CisgICAgICAgICAgICB0ZXh0Tm9k
ZXMuYXBwZW5kKG4pOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGZvciAoOyBpdC5j
dXJyZW50KCk7ICsraXQpIHsKLSAgICAgICAgUmVmUHRyPE5vZGU+IG4gPSBpdC5jdXJyZW50KCk7
Ci0gICAgICAgIHJlbW92ZUNoaWxkKG4uZ2V0KCksIGVjKTsKLSAgICB9CisgICAgc2l6ZV90IHNp
emUgPSB0ZXh0Tm9kZXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKQorICAgICAgICByZW1vdmVDaGlsZCh0ZXh0Tm9kZXNbaV0uZ2V0KCksIGVjKTsKICAgICBp
bnNlcnRCZWZvcmUoZG9jdW1lbnQoKS0+Y3JlYXRlVGV4dE5vZGUoZGVmYXVsdFZhbHVlKSwgZmly
c3RDaGlsZCgpLCBlYyk7CiAgICAgc2V0VmFsdWUoZGVmYXVsdFZhbHVlKTsKIH0KSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL0NhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGUu
aAkocmV2aXNpb24gMTU1NjkpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw3ICsyOCw2IEBACiAjZGVmaW5lIENhY2hlX2gKIAogI2luY2x1ZGUgIkNhY2hl
UG9saWN5LmgiCi0jaW5jbHVkZSAiRGVwcmVjYXRlZFB0ckxpc3QuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCShyZXZpc2lvbiAxNTU2OSkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzUsNCArNzM1LDI4IEBA
IGludCBJbmxpbmVUZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldChpbnQKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChtX3gsIDApLCAw
KSkucmlnaHQoKTsKIH0KIAorYm9vbCBJbmxpbmVUZXh0Qm94Ojpjb250YWluc0NhcmV0T2Zmc2V0
KGludCBvZmZzZXQpIGNvbnN0Cit7CisgICAgLy8gT2Zmc2V0cyBiZWZvcmUgdGhlIGJveCBhcmUg
bmV2ZXIgImluIi4KKyAgICBpZiAob2Zmc2V0IDwgbV9zdGFydCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaW50IHBhc3RFbmQgPSBtX3N0YXJ0ICsgbV9sZW47CisKKyAgICAvLyBPZmZz
ZXRzIGluc2lkZSB0aGUgYm94IChub3QgYXQgZWl0aGVyIGVkZ2UpIGFyZSBhbHdheXMgImluIi4K
KyAgICBpZiAob2Zmc2V0IDwgcGFzdEVuZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAv
LyBPZmZzZXRzIG91dHNpZGUgdGhlIGJveCBhcmUgYWx3YXlzICJvdXQiLgorICAgIGlmIChvZmZz
ZXQgPiBwYXN0RW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBPZmZzZXRzIGF0
IHRoZSBlbmQgYXJlICJvdXQiIGZvciBsaW5lIGJyZWFrcyAodGhleSBhcmUgb24gdGhlIG5leHQg
bGluZSkuCisgICAgaWYgKGlzTGluZUJyZWFrKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIE9mZnNldHMgYXQgdGhlIGVuZCBhcmUgImluIiBmb3Igbm9ybWFsIGJveGVzIChidXQg
dGhlIGNhbGxlciBoYXMgdG8gY2hlY2sgYWZmaW5pdHkpLgorICAgIHJldHVybiB0cnVlOworfQor
CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCShyZXZpc2lvbiAxNTU2OSkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMTIz
LDYgKzEyMyw4IEBAIHB1YmxpYzoKICAgICBpbnQgdGV4dFBvcygpIGNvbnN0OwogICAgIGludCBv
ZmZzZXRGb3JQb3NpdGlvbihpbnQgX3gsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMgPSB0cnVl
KSBjb25zdDsKICAgICBpbnQgcG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3Q7CisK
KyAgICBib29sIGNvbnRhaW5zQ2FyZXRPZmZzZXQoaW50IG9mZnNldCkgY29uc3Q7IC8vIGZhbHNl
IGZvciBvZmZzZXQgYWZ0ZXIgbGluZSBicmVhawogICAgIAogICAgIGludCBtX3N0YXJ0OwogICAg
IHVuc2lnbmVkIHNob3J0IG1fbGVuOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHJl
dmlzaW9uIDE1NTY5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1OCwxNCArMzU4LDkgQEAgc3RhdGljIFJlbmRlck9iamVjdCAqbGFzdFJl
bmRlcmVyT25QcmV2TAogICAgIHJldHVybiBsYXN0Q2hpbGQtPm9iamVjdCgpOwogfQogCi1ib29s
IFJlbmRlclRleHQ6OmF0TGluZVdyYXAoSW5saW5lVGV4dEJveCAqYm94LCBpbnQgb2Zmc2V0KQor
c3RhdGljIGlubGluZSBib29sIGF0TGluZVdyYXAoSW5saW5lVGV4dEJveCogYm94LCBpbnQgb2Zm
c2V0KQogewotICAgIGlmIChib3gtPm5leHRUZXh0Qm94KCkgJiYgIWJveC0+bmV4dE9uTGluZSgp
ICYmIG9mZnNldCA9PSBib3gtPm1fc3RhcnQgKyBib3gtPm1fbGVuKSB7Ci0gICAgICAgIGlmICgh
c3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkgfHwgIWJveC0+aXNMaW5lQnJlYWsoKSkKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIGJveC0+bmV4dFRleHRCb3goKSAmJiAhYm94LT5uZXh0T25MaW5lKCkgJiYgb2Zmc2V0
ID09IGJveC0+bV9zdGFydCArIGJveC0+bV9sZW47CiB9CiAKIEludFJlY3QgUmVuZGVyVGV4dDo6
Y2FyZXRSZWN0KGludCBvZmZzZXQsIEVBZmZpbml0eSBhZmZpbml0eSwgaW50ICpleHRyYVdpZHRo
VG9FbmRPZkxpbmUpCkBAIC0zNzYsNyArMzcxLDcgQEAgSW50UmVjdCBSZW5kZXJUZXh0OjpjYXJl
dFJlY3QoaW50IG9mZnNldAogICAgIC8vIEZpbmQgdGhlIHRleHQgYm94IGZvciB0aGUgZ2l2ZW4g
b2Zmc2V0CiAgICAgSW5saW5lVGV4dEJveCAqYm94ID0gMDsKICAgICBmb3IgKGJveCA9IGZpcnN0
VGV4dEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgewotICAgICAgICBpZiAo
KG9mZnNldCA+PSBib3gtPm1fc3RhcnQpICYmIChvZmZzZXQgPD0gYm94LT5tX3N0YXJ0ICsgYm94
LT5tX2xlbikpIHsKKyAgICAgICAgaWYgKGJveC0+Y29udGFpbnNDYXJldE9mZnNldChvZmZzZXQp
KSB7CiAgICAgICAgICAgICAvLyBDaGVjayBpZiBkb3duc3RyZWFtIGFmZmluaXR5IHdvdWxkIG1h
a2UgdXMgbW92ZSB0byB0aGUgbmV4dCBsaW5lLgogICAgICAgICAgICAgaWYgKGF0TGluZVdyYXAo
Ym94LCBvZmZzZXQpICYmIGFmZmluaXR5ID09IERPV05TVFJFQU0pIHsKICAgICAgICAgICAgICAg
ICAvLyBVc2UgdGhlIG5leHQgdGV4dCBib3gKQEAgLTExMTMsMjEgKzExMDgsMTkgQEAgdW5zaWdu
ZWQgUmVuZGVyVGV4dDo6Y2FyZXRNYXhSZW5kZXJlZE9mZgogICAgIHJldHVybiBsOwogfQogCi1J
bmxpbmVCb3ggKlJlbmRlclRleHQ6OmlubGluZUJveChpbnQgb2Zmc2V0LCBFQWZmaW5pdHkgYWZm
aW5pdHkpCitJbmxpbmVCb3gqIFJlbmRlclRleHQ6OmlubGluZUJveChpbnQgb2Zmc2V0LCBFQWZm
aW5pdHkgYWZmaW5pdHkpCiB7Ci0gICAgZm9yIChJbmxpbmVUZXh0Qm94ICpib3ggPSBmaXJzdFRl
eHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKLSAgICAgICAgaWYgKG9m
ZnNldCA+PSBib3gtPm1fc3RhcnQgJiYgb2Zmc2V0IDw9IGJveC0+bV9zdGFydCArIGJveC0+bV9s
ZW4pIHsKKyAgICBmb3IgKElubGluZVRleHRCb3gqIGJveCA9IGZpcnN0VGV4dEJveCgpOyBib3g7
IGJveCA9IGJveC0+bmV4dFRleHRCb3goKSkgeworICAgICAgICBpZiAoYm94LT5jb250YWluc0Nh
cmV0T2Zmc2V0KG9mZnNldCkpIHsKICAgICAgICAgICAgIGlmIChhdExpbmVXcmFwKGJveCwgb2Zm
c2V0KSAmJiBhZmZpbml0eSA9PSBET1dOU1RSRUFNKQogICAgICAgICAgICAgICAgIHJldHVybiBi
b3gtPm5leHRUZXh0Qm94KCk7CiAgICAgICAgICAgICByZXR1cm4gYm94OwogICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBpZiAob2Zmc2V0IDwgYm94LT5tX3N0YXJ0KSB7CisgICAgICAgIGlm
IChvZmZzZXQgPCBib3gtPm1fc3RhcnQpCiAgICAgICAgICAgICAvLyBUaGUgb2Zmc2V0IHdlJ3Jl
IGxvb2tpbmcgZm9yIGlzIGJlZm9yZSB0aGlzIG5vZGUKICAgICAgICAgICAgIC8vIHRoaXMgbWVh
bnMgdGhlIG9mZnNldCBtdXN0IGJlIGluIGNvbnRlbnQgdGhhdCBpcwogICAgICAgICAgICAgLy8g
bm90IHJlbmRlcmVkLgogICAgICAgICAgICAgcmV0dXJuIGJveC0+cHJldlRleHRCb3goKSA/IGJv
eC0+cHJldlRleHRCb3goKSA6IGZpcnN0VGV4dEJveCgpOwotICAgICAgICB9CiAgICAgfQogICAg
IAogICAgIHJldHVybiAwOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAkocmV2aXNpb24gMTU1
NjkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0OSwxMSArMTQ5LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBjYXJldE1heE9mZnNl
dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdW5zaWduZWQgY2FyZXRNYXhSZW5kZXJlZE9mZnNldCgp
IGNvbnN0OwogCi0gICAgdmlydHVhbCBpbnQgcHJldmlvdXNPZmZzZXQgKGludCBjdXJyZW50KSBj
b25zdDsKLSAgICB2aXJ0dWFsIGludCBuZXh0T2Zmc2V0IChpbnQgY3VycmVudCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBpbnQgcHJldmlvdXNPZmZzZXQoaW50IGN1cnJlbnQpIGNvbnN0OworICAgIHZp
cnR1YWwgaW50IG5leHRPZmZzZXQoaW50IGN1cnJlbnQpIGNvbnN0OwogICAgIAotICAgIGJvb2wg
YXRMaW5lV3JhcChJbmxpbmVUZXh0Qm94ICpib3gsIGludCBvZmZzZXQpOwotICAgIGJvb2wgY29u
dGFpbnNSZXZlcnNlZFRleHQoKSB7IHJldHVybiBtX2NvbnRhaW5zUmV2ZXJzZWRUZXh0OyB9Cisg
ICAgYm9vbCBjb250YWluc1JldmVyc2VkVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNS
ZXZlcnNlZFRleHQ7IH0KICAgICAKIHB1YmxpYzoKICAgICBJbmxpbmVUZXh0Qm94ICogZmluZE5l
eHRJbmxpbmVUZXh0Qm94KCBpbnQgb2Zmc2V0LCBpbnQgJnBvcyApIGNvbnN0OwpJbmRleDogV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAkocmV2aXNpb24gMTU1NjkpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgpAQCAtMTU2LDYgKzE1Nyw4IEBAIHZvaWQgUmVuZGVy
VGV4dENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW4KICAgICAgICAgaWYgKHZhbHVlICE9IG9sZFRl
eHQgfHwgIW1fZGl2LT5oYXNDaGlsZE5vZGVzKCkpIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgICAgICAgICAgbV9kaXYtPnNldElubmVyVGV4dCh2YWx1ZSwgZWMpOwor
ICAgICAgICAgICAgaWYgKHZhbHVlLmVuZHNXaXRoKCJcbiIpIHx8IHZhbHVlLmVuZHNXaXRoKCJc
ciIpKQorICAgICAgICAgICAgICAgIG1fZGl2LT5hcHBlbmRDaGlsZChuZXcgSFRNTEJSRWxlbWVu
dChkb2N1bWVudCgpKSwgZWMpOwogICAgICAgICAgICAgaWYgKGRvY3VtZW50KCktPmZyYW1lKCkp
CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+Y2xlYXJVbmRvUmVkb09wZXJh
dGlvbnMoKTsKICAgICAgICAgICAgIHNldEVkaXRlZChmYWxzZSk7CkBAIC0yMTUsNiArMjE4LDkg
QEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6c2V0U2VsZWN0aW9uUmFuZwogCiAgICAgU2VsZWN0
aW9uQ29udHJvbGxlciBzZWwgPSBTZWxlY3Rpb25Db250cm9sbGVyKHN0YXJ0UG9zaXRpb24sIGVu
ZFBvc2l0aW9uKTsKICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5zZXRTZWxlY3Rpb24oc2VsKTsK
KyAgICAvLyBGSVhNRTogR3JhbnVsYXJpdHkgaXMgc3RvcmVkIHNlcGFyYXRlbHkgb24gdGhlIGZy
YW1lLCBidXQgYWxzbyBpbiB0aGUgc2VsZWN0aW9uIGNvbnRyb2xsZXIuCisgICAgLy8gVGhlIGdy
YW51bGFyaXR5IGluIHRoZSBzZWxlY3Rpb24gY29udHJvbGxlciBzaG91bGQgYmUgdXNlZCwgYW5k
IHRoZW4gdGhpcyBsaW5lIG9mIGNvZGUgd291bGQgbm90IGJlIG5lZWRlZC4KKyAgICBkb2N1bWVu
dCgpLT5mcmFtZSgpLT5zZXRTZWxlY3Rpb25HcmFudWxhcml0eShDaGFyYWN0ZXJHcmFudWxhcml0
eSk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0Q29udHJvbDo6dmlzaWJsZVBvc2l0
aW9uRm9ySW5kZXgoaW50IGluZGV4KQpAQCAtMjYyLDcgKzI2OCw3IEBAIHZvaWQgUmVuZGVyVGV4
dENvbnRyb2w6OnN1YnRyZWVIYXNDaGFuZ2UKIFN0cmluZyBSZW5kZXJUZXh0Q29udHJvbDo6dGV4
dCgpCiB7CiAgICAgaWYgKG1fZGl2KQotICAgICAgICByZXR1cm4gbV9kaXYtPnRleHRDb250ZW50
KHRydWUpLnJlcGxhY2UoJ1xcJywgYmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbCgpKTsKKyAgICAg
ICAgcmV0dXJuIG1fZGl2LT50ZXh0Q29udGVudCgpLnJlcGxhY2UoJ1xcJywgYmFja3NsYXNoQXND
dXJyZW5jeVN5bWJvbCgpKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL2JpZGkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL2Jp
ZGkuY3BwCShyZXZpc2lvbiAxNTU2OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDc2LDcgKzI0NzYsNyBAQCBCaWRpSXRlcmF0b3IgUmVuZGVyQmxv
Y2s6OmZpbmROZXh0TGluZUJyCiAKICAgICBpZiAobEJyZWFrID09IHN0YXJ0ICYmICFsQnJlYWsu
b2JqLT5pc0JSKCkpIHsKICAgICAgICAgLy8gd2UganVzdCBhZGQgYXMgbXVjaCBhcyBwb3NzaWJs
ZQotICAgICAgICBpZiAoc3R5bGUoKS0+d2hpdGVTcGFjZSgpID09IFBSRSkgeworICAgICAgICBp
ZiAoc3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBE
b24ndCByZWFsbHkgdW5kZXJzdGFuZCB0aGlzIGNhc2UuCiAgICAgICAgICAgICBpZiAocG9zICE9
IDApIHsKICAgICAgICAgICAgICAgICBsQnJlYWsub2JqID0gbzsKSW5kZXg6IFdlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTU1NzUpCisr
KyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDYt
MDctMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gdXBkYXRlIGZvciBjaGFuZ2UgdG8gcmVx
dWlyZSBjb250ZXh0IHdoZW4gY3JlYXRpbmcgZnJhZ21lbnRzIGZyb20gdGV4dAorICAgICAgICAg
IChuZWVkZWQgdG8gaGFuZGxlIHdoaXRlc3BhY2UgcHJvcGVybHkpCisKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkhUTUxWaWV3Lm06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9kb2N1bWVudEZyYWdt
ZW50RnJvbVBhc3RlYm9hcmQ6aW5Db250ZXh0OmFsbG93UGxhaW5UZXh0OmNob3NlUGxhaW5UZXh0
Ol0pOgorICAgICAgICBBZGRlZCBjb250ZXh0IHBhcmFtZXRlciwgcGFzcyB0aHJvdWdoIHRvIGJy
aWRnZS4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3Bhc3RlV2l0aFBhc3RlYm9hcmQ6YWxsb3dQ
bGFpblRleHQ6XSk6IFBhc3Mgc2VsZWN0aW9uIHJhbmdlIGFzIGNvbnRleHQKKyAgICAgICAgd2hl
biBjYWxsaW5nIGFib3ZlIG1ldGhvZC4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgY29uY2x1ZGVE
cmFnRm9yRHJhZ2dpbmdJbmZvOmFjdGlvbk1hc2s6XSk6IFBhc3MgZHJhZyBjYXJldCBhcyBjb250
ZXh0IHdoZW4KKyAgICAgICAgY2FsbGluZyBhYm92ZSBtZXRob2QuCisKIDIwMDYtMDctMjEgIFRp
bW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE1hY2llai4KSW5kZXg6IFdlYktpdC9XZWJWaWV3L1dlYkhUTUxWaWV3Lm0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubQkocmV2aXNpb24gMTU1NjkpCisrKyBXZWJL
aXQvV2ViVmlldy9XZWJIVE1MVmlldy5tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDcg
QEAgdm9pZCAqX05TU29mdExpbmtpbmdHZXRGcmFtZXdvcmtGdW5jUHRyKAogCiBAaW50ZXJmYWNl
IFdlYkhUTUxWaWV3IChXZWJIVE1MVmlld0ZpbGVJbnRlcm5hbCkKIC0gKEJPT0wpX2ltYWdlRXhp
c3RzQXRQYXRoczooTlNBcnJheSAqKXBhdGhzOwotLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9k
b2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQg
YWxsb3dQbGFpblRleHQ6KEJPT0wpYWxsb3dQbGFpblRleHQgY2hvc2VQbGFpblRleHQ6KEJPT0wg
KiljaG9zZVBsYWluVGV4dDsKKy0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFn
bWVudEZyb21QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkIGluQ29udGV4dDoo
RE9NUmFuZ2UgKiljb250ZXh0IGFsbG93UGxhaW5UZXh0OihCT09MKWFsbG93UGxhaW5UZXh0IGNo
b3NlUGxhaW5UZXh0OihCT09MICopY2hvc2VQbGFpblRleHQ7CiAtIChOU1N0cmluZyAqKV9wbGFp
blRleHRGcm9tUGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZDsKIC0gKHZvaWQp
X3Bhc3RlV2l0aFBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgYWxsb3dQbGFp
blRleHQ6KEJPT0wpYWxsb3dQbGFpblRleHQ7CiAtICh2b2lkKV9wYXN0ZUFzUGxhaW5UZXh0V2l0
aFBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQ7CkBAIC0zNjIsNyArMzYyLDEw
IEBAIHZvaWQgKl9OU1NvZnRMaW5raW5nR2V0RnJhbWV3b3JrRnVuY1B0cigKICAgICByZXR1cm4g
ZWxlbWVudHM7CiB9CiAKLS0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVu
dEZyb21QYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkIGFsbG93UGxhaW5UZXh0
OihCT09MKWFsbG93UGxhaW5UZXh0IGNob3NlUGxhaW5UZXh0OihCT09MICopY2hvc2VQbGFpblRl
eHQKKy0gKERPTURvY3VtZW50RnJhZ21lbnQgKilfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJv
YXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0ZWJvYXJkCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluQ29udGV4dDooRE9NUmFuZ2UgKiljb250ZXh0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd1BsYWluVGV4dDooQk9P
TClhbGxvd1BsYWluVGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hvc2VQbGFpblRleHQ6KEJPT0wgKiljaG9zZVBsYWluVGV4dAogewogICAgIE5TQXJyYXkg
KnR5cGVzID0gW3Bhc3RlYm9hcmQgdHlwZXNdOwogICAgICpjaG9zZVBsYWluVGV4dCA9IE5POwpA
QCAtNDYzLDcgKzQ2Niw4IEBAIHZvaWQgKl9OU1NvZnRMaW5raW5nR2V0RnJhbWV3b3JrRnVuY1B0
cigKICAgICAKICAgICBpZiAoYWxsb3dQbGFpblRleHQgJiYgW3R5cGVzIGNvbnRhaW5zT2JqZWN0
Ok5TU3RyaW5nUGJvYXJkVHlwZV0pIHsKICAgICAgICAgKmNob3NlUGxhaW5UZXh0ID0gWUVTOwot
ICAgICAgICByZXR1cm4gW1tzZWxmIF9icmlkZ2VdIGRvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDpb
cGFzdGVib2FyZCBzdHJpbmdGb3JUeXBlOk5TU3RyaW5nUGJvYXJkVHlwZV1dOworICAgICAgICBy
ZXR1cm4gW1tzZWxmIF9icmlkZ2VdIGRvY3VtZW50RnJhZ21lbnRXaXRoVGV4dDpbcGFzdGVib2Fy
ZCBzdHJpbmdGb3JUeXBlOk5TU3RyaW5nUGJvYXJkVHlwZV0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbkNvbnRleHQ6Y29udGV4dF07CiAgICAgfQogICAg
IAogICAgIHJldHVybiBuaWw7CkBAIC01MDgsOCArNTEyLDEwIEBAIHZvaWQgKl9OU1NvZnRMaW5r
aW5nR2V0RnJhbWV3b3JrRnVuY1B0cigKIAogLSAodm9pZClfcGFzdGVXaXRoUGFzdGVib2FyZDoo
TlNQYXN0ZWJvYXJkICopcGFzdGVib2FyZCBhbGxvd1BsYWluVGV4dDooQk9PTClhbGxvd1BsYWlu
VGV4dAogeworICAgIERPTVJhbmdlICpyYW5nZSA9IFtzZWxmIF9zZWxlY3RlZFJhbmdlXTsKICAg
ICBCT09MIGNob3NlUGxhaW5UZXh0OwotICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50
ID0gW3NlbGYgX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJkIGFsbG93
UGxhaW5UZXh0OmFsbG93UGxhaW5UZXh0IGNob3NlUGxhaW5UZXh0OiZjaG9zZVBsYWluVGV4dF07
CisgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbc2VsZiBfZG9jdW1lbnRGcmFn
bWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmQKKyAgICAgICAgaW5Db250ZXh0OnJhbmdlIGFs
bG93UGxhaW5UZXh0OmFsbG93UGxhaW5UZXh0IGNob3NlUGxhaW5UZXh0OiZjaG9zZVBsYWluVGV4
dF07CiAgICAgV2ViRnJhbWVCcmlkZ2UgKmJyaWRnZSA9IFtzZWxmIF9icmlkZ2VdOwogICAgIGlm
IChmcmFnbWVudCAmJiBbc2VsZiBfc2hvdWxkSW5zZXJ0RnJhZ21lbnQ6ZnJhZ21lbnQgcmVwbGFj
aW5nRE9NUmFuZ2U6W3NlbGYgX3NlbGVjdGVkUmFuZ2VdIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNl
cnRBY3Rpb25QYXN0ZWRdKSB7CiAgICAgICAgIFticmlkZ2UgcmVwbGFjZVNlbGVjdGlvbldpdGhG
cmFnbWVudDpmcmFnbWVudCBzZWxlY3RSZXBsYWNlbWVudDpOTyBzbWFydFJlcGxhY2U6W3NlbGYg
X2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRdIG1hdGNoU3R5bGU6Y2hv
c2VQbGFpblRleHRdOwpAQCAtNTcyOCw5ICs1NzM0LDExIEBAIHN0YXRpYyBET01SYW5nZSAqdW5p
b25ET01SYW5nZXMoRE9NUmFuZ2UKICAgICBpZiAoW3NlbGYgX2NhblByb2Nlc3NEcmFnV2l0aERy
YWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKSB7CiAgICAgICAgIE5TUGFzdGVib2FyZCAqcGFzdGVi
b2FyZCA9IFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXTsKICAgICAgICAgaWYgKFtz
ZWxmIF9pc01vdmVEcmFnXSB8fCBbaW5uZXJCcmlkZ2UgaXNEcmFnQ2FyZXRSaWNobHlFZGl0YWJs
ZV0pIHsgCisgICAgICAgICAgICBET01SYW5nZSAqcmFuZ2UgPSBbaW5uZXJCcmlkZ2UgZHJhZ0Nh
cmV0RE9NUmFuZ2VdOwogICAgICAgICAgICAgQk9PTCBjaG9zZVBsYWluVGV4dDsKLSAgICAgICAg
ICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW3NlbGYgX2RvY3VtZW50RnJhZ21l
bnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJkIGFsbG93UGxhaW5UZXh0OllFUyBjaG9zZVBsYWlu
VGV4dDomY2hvc2VQbGFpblRleHRdOwotICAgICAgICAgICAgaWYgKGZyYWdtZW50ICYmIFtzZWxm
IF9zaG91bGRJbnNlcnRGcmFnbWVudDpmcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpbaW5uZXJC
cmlkZ2UgZHJhZ0NhcmV0RE9NUmFuZ2VdIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25E
cm9wcGVkXSkgeworICAgICAgICAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBb
c2VsZiBfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmQKKyAgICAgICAg
ICAgICAgICBpbkNvbnRleHQ6cmFuZ2UgYWxsb3dQbGFpblRleHQ6WUVTIGNob3NlUGxhaW5UZXh0
OiZjaG9zZVBsYWluVGV4dF07CisgICAgICAgICAgICBpZiAoZnJhZ21lbnQgJiYgW3NlbGYgX3No
b3VsZEluc2VydEZyYWdtZW50OmZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGdpdmVu
QWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25Ecm9wcGVkXSkgewogICAgICAgICAgICAgICAgIFtb
d2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3IHdpbGxQZXJmb3Jt
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOldlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQgZm9yRHJh
Z2dpbmdJbmZvOmRyYWdnaW5nSW5mb107CiAgICAgICAgICAgICAgICAgaWYgKFtzZWxmIF9pc01v
dmVEcmFnXSkgewogICAgICAgICAgICAgICAgICAgICBCT09MIHNtYXJ0TW92ZSA9IFtpbm5lckJy
aWRnZSBzZWxlY3Rpb25HcmFudWxhcml0eV0gPT0gV2ViQnJpZGdlU2VsZWN0QnlXb3JkICYmIFtz
ZWxmIF9jYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXTsKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC80NjQxMDMzLWV4cGVjdGVkLnBuZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWlt
ZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgppVkJPUncwS0dnb0FBQUFOU1VoRVVn
QUFBeUFBQUFKWUNBWUFBQUNhZG9Kd0FBQWdBRWxFUVZSNG5PeWRkM3hVVmZyL1AxTXpreDZTCkVC
SktRcFBRcEV0UlFLV29DSWdnQXJwTEV3UUIyVlhSbit1SzdTc3FMZ0tydXdvb3V1aWlJQ29pU2xt
NnNJWW96UVVKVWtJdjZXMlMKNmZQOC9zamU2OHhrNXBaa01rSDNlYjlldk1pZGUrNDV6M25PYzhw
elQ3a2FJaUl3RE1Nd0RNTXdETU9FQVcxREM4QXdETU13RE1Ndwp6UDhPN0lBd0RNTXdETU13REJN
MjJBRmhHSVpoR0laaEdDWnNzQVBDTUF6RE1BekRNRXpZWUFlRVlSaUdZUmlHWVppd3dRNEl3ekFN
Cnd6QU13ekJoZ3gwUWhtRVlobUVZaG1IQ0Jqc2dETU13RE1Nd0RNT0VEWFpBR0laaEdJWmhHSVlK
R3lGMVFDd1dDeTVldkJqMGZsRlIKRVU2ZE9oWEtKTU5HZm40K2R1N2NpZUxpNHJDbmJiRlljUG55
NWJDbnF4UzVjdjh0OEd1MlhRQ3dXcTA0ZCs1YzJOTnR5SHBURyt4MgpPNzc3N3J1UXh4dHUrK0U2
V1RmY2JqZE9uRGhSTDNHSGczREtIMjVkWFE5bEkyZDdvYXgvYXNkVmNtM1k5YUMvNjVINmJqTzVY
R29pCjY0QU1IejRjQ1FrSnVQUE9PM0gvL2ZkRHA5T2haY3VXdU8rKyszRExMYmRBcDlQaHd3OC94
TWNmZjR5VWxCUjg5TkZIUWVONjdybm4KTUdyVXFKQm1JQnlzV0xFQ2E5YXN3WjQ5ZTlDeFkwZlk3
ZmF3cGIxOCtYSWtKaVppM2JwMVlVdFREVXJLL2JmQXI5VjJBV0R0MnJWSQpTMHZENHNXTHc1cHVR
OWFiMnBDZG5ZMmVQWHRpOU9qUklZODduUGJEZGJKdS9QREREK2phdFNzZWZ2amhrTWNkRHNJcGY3
aDFkYjJVCmpaVHRoYkwrcVIxWHliVmhEYTIvelpzM0l6TXpFeHFOQnVucDZkaTZkYXQ0cjZDZ0FF
ODk5UlEwR2cwZWVlUVJGQllXaGsydSttNHoKci9keWFUQklocUZEaDFKdWJxNTRiVEtaYVBMa3ll
TDFHMis4UWN1WEx5Y2lvdmJ0MjlPQ0JRdUN4bFZZV0VnblQ1NlVTN0lHTnB1TgpkdTdjcWZxNVVN
UmhzVmdvS2lxSzNHNDNFUkg5KzkvL3JwTWN0U0VsSllXV0xGa1M5blNWSWxmdXYwYjg3YVcydG51
OWNQUE5OOU9qCmp6NGF0dlN1aDNwVEd4WXRXa1FwS1NsMWppZmM5dU9mWGwzcVpDamEyOXFpSnUz
NjFPbWNPWFBvOXR0dnI1ZTR3MEU0NVErM3JxNkgKc3ZHM3ZWRFdQMy9VanF2azJyQ0cxbDllWGg2
bHA2ZFRVbElTRlJVVitkeGJzbVFKUGYzMDB3MGlWMzJQWTY3M2Nta0laR2RBSG4vOApjYlJzMlRM
by9Sa3pacUJqeDQ0QUFJUEJBSTFHRXpSc1ltSWkyclp0RzhnSkN2cU0wK25FNzMvL2UremR1MWRP
MUtCeFNzVWhsVFlBCkhEMTZGQTZIQTFwdHRhcjY5ZXVuU2c0NVhDNlhiQmc1dlNwRkxxKzFKVlR5
TlJUK1pSRElYb0xacmh6MXBYTUJKZllEQUJFUkVTRXIKSXlWNXVoN3FqWUNhTWpBYWpYWFdVeWp0
cDdicEthMlRTbXcvWEVpbEhhaTg2ME9uSG84SEFLRFg2MFhiL1RVUlR2bkRyYXU2cEJmcQpkdGpi
OXVwUy81U2dkbHdWckEyN1hteTdjZVBHK09LTEwxQmVYbzQ1YythSXYxKzRjQUc3ZCsvR3E2KytH
aFk1L0cyaXZzY3hvU3FYCjYyVk1FUXBrYzN2SEhYZEkzbytLaXNMTk45OHNYbnM4SGp6MzNITm8w
YUlGT25YcWhMTm56d0lBcmw2OWl0ZGZmeDE5Ky9ZVnc2NWQKdXhidnZQTU9Ybi85OWFBRGxLVkxs
K0tycjc3Q2wxOStpVW1USnFHeXNoSjVlWGw0L1BISE1YRGdRUFRvMFFQNzkrK1hqRE5RSEVyUwpm
dSs5OS9EQ0N5L0E1WEpoOXV6Wm1EZHZIb0RxdFlKejVzekJFMDg4Z1ZHalJtSHUzTG13V3EwQWdF
T0hEbUhHakJsNDl0bG5zV0RCCkFpUW5KK1A3NzcrdkVmZU9IVHV3Y09GQ0xGNjhHRGZmZkRPT0hU
c21xZWVxcWlyTW16Y1BLU2twNk5HakIzSnljc1Q4Tm0zYUZHKzkKOVJZQVlNMmFOV2pYcmgxbXpw
enA4K3ljT1hQd2YvLzNmeGc2ZENqR2p4K1BoUXNYQnV6b3YvamlDeVFuSitQZWUrOUZhV2twL3ZH
UApmeUE1T1JsRGhnekI2ZE9uQVFDTEZ5OUcvLzc5WWJQWnhPZUNsVHVBb09XMWE5Y3VqQjgvSHZQ
bXpjUEtsU3ZSdW5WclpHWm0ranpyCmo5VnF4Wi8vL0djc1hMZ1E0OGFOdzZKRml5VDFMbVVyd2Ny
QTMxN09uRG5qWTd0SzVGYWo4OU9uVCtPcHA1N0M0NDgvam8wYk42SmIKdDI3bzJiTW5zckt5Y1BU
b1VkeDMzMzFJVFUzRks2KzhJaXU3RXZzN2ZQZ3dldlhxaFNlZWVBSkhqaHlSdGFIdDI3ZGp3b1FK
bUQ5LwpQcDUrK21ta3BxYWlSWXNXMkw1OWU4QXl1bDdxVGJBNkxtVVQva2lGRFdhTGN2WWpwd3Ux
OVNKUSt3WkkxMG1sdGkvRTVVMndmTmMxClg0SFNEaWFuZjMraVJHZFNaVmxWVllWWnMyYmg1WmRm
eHN5Wk0zSGd3SUdnTmlGWFgrUmtVZHRXS1cxdnBPUVBGbmR0MmswMXVsSWkKdTVUTjFDVnZRbG5K
OWZOcSt6eC8yNnROL2ZOSHFrNUp4UlZvWE9XUGxQN3F3eGFWMEwxN2QveS8vL2YvOE1rbm4rRHp6
ejhIQUR6MgoyR00xOGcxSTI0ZVM4WTgvVWpZaFZXYWhsa05OUFpLU1c4cisxZlIxYXNla0lVSHRs
SW4vRWl4dmJyenhSdXJTcFF0dDM3NmRMbDY4ClNKbVptVFJ0MmpRaUlzclB6NmVaTTJkU1VsSVNF
UkU1blU3cTJiT24rT3hqanowbUx0ZndKeU1qZzE1NTVSVWlJbks1WEhUWFhYZFIKZVhrNXVkMXVt
akZqQmlVbkoxTkpTWWxrbk41eHFFbjcwMDgvSmExVzYvUGJnQUVENk1NUFB5UWlJb2ZEUVRmZGRC
TU5IejZjaUlpeQpzcklvSVNHQnVuYnRTcDk5OWhuTm1ER2p4aklCdTkxT1RaczJGYWRzWDNqaEJS
b3paa3pBOUltSW1qVnJSaDA3ZHFTdnZ2cUtkdTdjClNSa1pHZFNxVlN0eU9wMUVSTlMwYVZPZnFj
T2hRNGZTMkxGanhldTMzbnFMbm5qaUNTSWlPbnIwS0FHZ2hRc1gwcmx6NXdLbTE3MTcKZDVvNmRh
cDRmZXV0dDlLVUtWUEU2MisrK1lZKytPQUQ4VnFxM0tYSzY5cTFhM1RERFRkUVptWW1iZHk0a2M2
ZE8wZnQycldqNmRPbgpCOVhGblhmZVNWbFpXVVJFZE9EQUFRSkFCdzhlREtqM25KeWNvR25MbFlH
M3ZmamJyaEs1MWVqODlPblQxSzFiTjJyWnNpVjk5dGxuClZGVlZSV1BIanFVMmJkclFLNis4UW9X
RmhmVDg4OCtUUnFPaDR1SmlTZG1EMmQvdHQ5OU9jK2ZPSlNLaVpjdVcwYXBWcTN4a2tMS2gKczJm
UFV1UEdqYWxseTVhMGQrOWUyck5uRDNYcDBvV2FOMjhldEp3YXV0NEVxK05TOWtoRTlPYWJiMUtU
SmsySVNOcDJpWUxiSXBHMAovY2pwb2piMXdqczlJdWs2cWNiMkF5R1Y3N3JteXp0dEtUblYxa201
c3J6NzdydHB6Wm8xUkVUa2Ryc3BMUzJOaGd3WkVsUUhVdlZGClRoYTFiWlVTdlVuSkw1VjN0Yktv
MVpVUzJhVnNwaTU1VTlQUHErbnpBdFZuTmZVdkVGSjFTczI0aXNpM0RaUFRYMzNZb2xKc05odTEK
YTllT2twT1Q2WTAzM3FCWFgzMDFZRGc1KzVBYi8zZ2paUk55WlZaWE9kU1VpMUs1cGV4ZnJzM3pS
dTJZTkZTRWZCNXUrUERoR0RSbwpFSm8xYTRiYmJydE4zTldmbkp5TXpwMDdpOU5IcGFXbE9ITGtD
RFp0MmdRQW1ENTl1dVRVa2pCMTllbW5uNEtJc0hmdlhtelpzZ1dwCnFha29LQ2pBdDk5K0t4dW5F
SWZhdEwzWnNtVUw5dTNiaC9Ianh3T29ucmFiT25VcXZ2NzZhMlJsWmFGUG56N0l6TXhFKy9idE1X
Yk0KR0N4YnRxekdNZ0dEd1lEUm8wZWpTNWN1QUtxblVJVVpqV0JNbkRnUkkwYU13RzIzM1liWFhu
c051Ym01NGh0b3M5bnNNN1VYR1JucApjLzNSUng4aE1URVJBTkNwVXlja0p5Y0RBTkxUMHdPbU5X
WEtGR3pkdWxXY0dodzhlREEyYnR3b1RzMXQzNzRkWThlTzlYa21XTGxMCmxWZEtTZ3BhdDI2Tnpw
MDdZL2p3NFVoUFQ4ZnR0OStPbjMvK09hQmNPM2Z1eE9IRGg5RzdkMjhBUUk4ZVBiQnMyVEtrcDZj
SDFQdmgKdzRlRHBxMmtEQVFkK3R1dUVyblY2THgxNjlibzJyVXJPbmJzaURGanhzQnNObVBVcUZF
NGYvNDgvdlNuUHlFeE1SRi8vT01mUVVRNApmLzY4cE94eTlyZHMyVElrSmlaaTRzU0pQakpJMlZC
R1JnYWFOMitPa1NOSDRwWmJic0dBQVFPd1pzMGFYTHg0VWRadUJjSmRiNExWCmNTbDc5RWNxckpR
dENnU3pIemxkcUswWC91a0pCS3VUYW16Zkg2bDhoeXBmUXRwU2NxcXRrMUpsdVgvL2ZtemF0RW1j
N2RkcXRSZzIKYkppa3JxWHFpNXdzYXRzcXVmams1SmZLdTFwWjFPcEtUblk1bTZsTDN0VDA4MnI2
UEgvYkUxQmEvL3hSMHBZb0hWZjVJNmUvVU51aQpHaUlpSXJCOCtYSVVGQlJnNWNxVjRreTVOM0wy
QWNpUGY3eVJzNGxnZWc2MUhHcnJVVzM2TXpWOVhXM0dwS0VnNUE2SXQ4SVRFaEpnCnNWaDg3Z24z
azVLU01IcjBhSXdZTVFLelo4OUdSa1lHZERxZGJMeFpXVmxJVEV5RTBXaUUwV2pFelRmZmpHM2J0
cUZIang2eWNkWTIKYlcrKy8vNTdKQ2NudzJBd2lML2RkTk5OQUtxWHRnRFZoaWdNT0lQbDVjMDMz
MFJwYVNrV0xseUlQWHYyb0tLaVFqTGR1TGc0OGU4KwpmZm9BZ09JaktHTmlZc1JLQWdCTm1qUVJH
N3RBVEpnd0FRVUZCZUp5b1dQSGpvbkxJV3cyR3p3ZUQ2S2lvbXJrU2NDNzNLWEtTM2pPCis5bVlt
QmlmcFYzZWZQdnR0K2pYcjU5UCtCa3pab2dEZlgrOVM2V3RwQXk4MC9HWFUwNXV0VHIzYjZoaVlt
SjhybU5qWXdGVW54UWkKSjNzdys5dTBhUk1XTEZnZ3U2d3ltSHplZFNRek14TUpDUWxCbDJINUUr
NTZFNnlPeTltak4xSmg1V3hSa05mN2IrRmFpUzdVMUl0QQo2ZmxmZTlkSnRiYnZqVlMrUTVVdjRi
NmNuR3JxcEZSWjd0NjlHNW1abVlpUGp4ZWZqWTZPcnRONmNMbDhxbW1yNU9LVGsxOHViald5CjFF
WlhVckxMMlV4ZDhxYW1uMWZiNS9ublNmZ3QyTFgvV01nYnRXMkoxTGpLSHlYbEZVcGJWTXZBZ1FO
aE1wblFxVk1uNlBYNkd2ZVYKdENscVVEcEdCSHoxSEdvNTFOYWoydlJuYXZxNjJveEpRMEhORWc4
akgzLzhNZExTMHZEWHYvNFZodzRkd3RhdFc4V0JWakFLQ3d1aAoxK3N4ZVBEZ09zVlptN1NCNm5W
N2hZV0ZzRmdzaUk2T0JnQjA3dHdaZXIwKzRIcnBZQ3hmdmh6Nzl1M0QrKysvai9mZWV5L2dldmRn
CnBLZW5JeVltcHNZZ05SaVBQZllZSmsrZWpLTkhqeUlpSWdLUmtaRVlPSEJnMFBDSmlZa1lQbnc0
VnE5ZWpmajRlUFRzMlJOYXJSWnIKMXF4QldWbVpxcU12NWNwTERYbDVlYXJXSmNxbFhaY3lrRU90
enYzUmFyVTFCbGQxbGIxLy8vN1lzMmNQL3ZqSFAyTGx5cFhLTXlNaApZNkJPSXhBTlVXOEMxWEUx
OWlnVlZxMHRlaE1xWGRTRjJ0cStWTDdySTEraHFxTlNaWG5wMHFXQVIzNkc4MkNOdXJTVGN2S3Jq
VHVjCnVwS3ptYnJtVFdrL0g4bytUeTExYVV2a3FFMTVoYkxQcml2MTBhYlVadXdYYWpscVV5NXEr
ek8xNVZpZjQ2RmdOTmhSQ05ldVhVTisKZmo2V0xGbUNMVnUyNE9qUm8xaXpaazNROEVMQnRHelpF
dHUyYmZQeHVJa0l1M2Z2bG8xVGlFTnQydDVrWm1iQzdYYmpoeDkrRUgvTAp6OCtIeStWQysvYnRG
Y1Z4L1BoeHpKbzFDNHNXTGZMeHFKVnk1Y29WVkZSVW9GdTNidUp2d3RSeElJWU5HNGJwMDZkank1
WXRPSERnCkFIYnQyaVdieHVUSms3RnUzVHE4Kys2N21EWnRHcVpNbVlMMTY5ZGorL2J0cWdiU1V1
V2xsdlQwZEp3NmRRcG56cHp4aVN2WUd3aXAKdEpXVVFWMEdJTFhSdVZKcWF6OHhNVEg0NktPUHNH
clZLbkhqbnpkU051VFB5Wk1uVVZSVWhPN2R1eXNLSCs1NkU2eU9xN0ZIcWJCSwpiREdZL1lSQ0Y0
RlFhcTkxc1gycGZJY3FYMExhZFcwbnZaRXF5N1MwTkJRVUZPRGt5Wk9xNGxSVFgrb2lueHh5OHF1
TnV6NTBGUXc1Cm02bEwzdFQyODNYdDgycmJYNmp0MTlSUW0vSUtaWjlkVjVTMktVcnJZbTNIZnFH
V1EyMjUxS1kvVTFPT29XeHIxYURLQWZGNFBIQTQKSEVHL2FseFZWWVdxcWlyeDJtcTExampOd21x
MWdvaFFWRlNFdFd2WEFnQ0dEaDJLZSs2NVIvUXMvWW1QajhlbFM1Y0FWSy9SeTh2TAp3NHdaTTFC
U1VvTDgvSHk4OU5KTGFOdTJyV1NjM25IazV1WXFUcnU4dkJ3ZWowZk0xOWl4WTlHc1dUTnMyN1pO
REhQZ3dBRmtabWJpCnpqdnZCRkI5akpsM3Z2M0p5Y21CeCtQQjhlUEg0WGE3c1dmUEh0aHNOaEJS
MExXY2JyZGIvSHZuenAwWU5XcVV1RjZ2YytmT3lNN08KaHNQaHdKVXJWM0RtekJrVUZSV0o0Vjk4
OFVYY2NNTU5tRHQzTGg1NDRBR1l6ZWFnc2duY2RkZGRpSWlJZ0U2blExeGNIRzYvL1hiRQp4c1lp
TlRXMVJrTXJWZTRQUHZoZzBQSUNBSWZENFZOcHE2cXFmUExxemJoeDQyQXltVEJseWhUazVPUWdK
eWNIVHozMUZKbzNidzZnCnB0NmwwcFlyQTI5N0tTa3A4YkZkSlhLcjFiblQ2ZlI1M202M3crMTJ3
K2wwaW5rRHF1dWduT3lCN00vbGNvR0kwSzlmUHp6OTlOTjQKNktHSGZOWWt5OWtRQUovclhidDJv
WC8vL2tHWGxUVjB2UW5XRmlpeFIwSG5VbUhsYkZIS2ZwVG9RazI5Q0paZXNEcXAxdmE5a2NwMwpL
UExsbmZZUFAvd2dLYWVhT2lsWGxucTlIc3VXTFJPZlBYSGlCQW9MQzRQcVhLNit5T1ZUVFZzbEY1
K2MvSEp4cTVHbE5ycVNrbDNPClp1cVNOelZqREVCOW4rZHRlMnJxbno5eWJZbWFjWldnYjZFTlUx
SmVvYlJGb0xydmV1V1ZWMFI5U09GMnUrRndPR3IwTlFKSzJoUWwKZlplQWxFMUk2VGtVY3FndEZ5
VnlTNVdWWERsNlU1c3hhVWhRdWx2OTJMRmpOR1BHREFKQWNYRng5TVliYjFCWldabDQvN1BQUGlP
dApWa3NkT25TZ3c0Y1AwNkZEaDZoOSsvYWsxK3ZwcTYrK291enNiT3JidHk4Qm9DVkxsdERodzRl
cGRldld0SHo1Y3Rxd1lRUE5talZMClBOWEpuMmVlZVlZMEdnMU5uVHFWOHZMeTZKMTMzcUdJaUFq
U2FEU1VuSnhNNjlldkYyVU1GcWQzSEh2MjdGR1U5djc5KzZsLy8vNEUKZ09iTm0wZG56cHdoSXFK
RGh3NVJodzRkNkM5LytRdHQyclNKeG84ZlR6azVPVVJFdEhyMWFvcUtpcUxVMUZSYXUzWnR3UHhV
VmxaUwoxNjVkS1RvNm1xWk1tVUxmZlBNTlJVWkcwdTkrOXp1eTIrMDF3ai8vL1BQVXVYTm5ldTIx
MStqVlYxK2xQL3poRDFSZVhpN2UzN0ZqCkJ5VW1KbEtyVnEzb3lTZWZwSmt6WjlLZ1FZUEVFdzMr
K01jL0VnQUNRRHFkamxKU1VtaldyRmtCMC9KbTNyeDVkUHIwYWZGNi92ejUKUHRkRTh1Vk9SRUhM
YTgrZVBSUWZIMDlwYVdtVWxaVkZSNDRjb1RadDJsQkVSQVQ5NjEvL0NpalQrdlhyS1RrNW1RQlFl
bm82N2R1MwpUMUx2d2RLV0t3TnZlOW04ZWJPUDdXN2Z2bDFXYmpVNno4cktvclMwTkVwSlNhRmR1
M2JSMmJObmFmanc0UVNBbm4vK2VTb3RMYVdYClgzNlpBTkQ5OTk5UHAwNmRDaXI3cWxXcmF1aGgz
YnAxRkIwZFRhMWJ0NmJ2dnZ1T3pwdzVRNUdSa1pTYW1rcC8rOXZmRk5sUXo1NDkKcVd2WHJqUi8v
bng2OGNVWGFlalFvWFR0MnJXQVpYUTkxQnVwdGlDWVRXUm5aMU9QSGowSUFMMzk5dHRrdDl1RGhw
V3lSU0tTdEIrNwozUzZwaTlyVUMrLzBWcTVjS1ZrbjFkaCtYbDVlamJTazhsM1hmSG1uZmZiczJh
Qnk3dHUzVDNXZGxDckwxYXRYVTB4TURMVnYzNTd1CnYvOStHakZpQlBYcjE0OVdyMTRkVU45UzlV
VXVuMnJiS2lWNms1TS9XTnhxWlZHckt5V3lTOWxNWGZJbTFRWUVRMG1mNXorVzhhOHoKY3ZVdkVN
SHFsTnB4MWI1OSsycTBZVkw2cXc5YlBINzhPR2swbWhvbkxmcHorUEJoZXZ6eHh3a0FtYzFtV3Jo
d0lWMjVjcVZHT0RuNwprT3U3dkFsbUUwckdNWFdSSTFEZm9xWWUxYVkvazd2bmpkb3hhYWpRRU5Y
elYwMkM0UEY0b05WcVVWcGFDb1BCVUdOVHN6K0ZoWVZJClNrb1NyeDBPQnk1ZXZJajA5SFJ4SGJw
Y25FSWNhdE1PQkJIaDlPblQwR3ExYU4yNnRlcm5nV29QVzNnejduUTZGUzByU1VwS0NyanUKM3VG
d3dPMTJ3MncyMTRqcjFWZGZ4WDMzM1FlYnpZYUtpZ3FVbHBiaTAwOC94ZTkrOXp2SjlZRjJ1eDBS
RVJGQnI5VVFxTHhxQ3hFaApQejhmS1NrcGRVNWJxZ3o4YlU0TnRkVzVHdFRhanh4U050U3JWeThN
R0RBQUw3MzBFcXFxcWlRM2kwc1Jybm9qVjhmVjJLTlVXQ2xiCmxMT2ZVT2hDVFhyKzFNWDJwZkpk
MTN6NXB4MUtPNWNxUzdmYmpaS1NFaVFsSmNGbXM4RmtNc25HRmF5KzFJZDhjc2pKcnpidVVPcEsK
RGptYnFVM2VhdFBQMTZYUHEwdC9BYWp2MTlSUW0vS3FpeTBXRkJUVXVvOEloSng5S0syTGRSMzdo
VW9PQWFYbFVwZitURTA1aG5wTQpJVWVET1NCTWVGaXhZZ1UrL2ZUVEdxY1ZiZDI2RmExYnQwYWJO
bTBhU0xMZkxyOUZuUXNPeUJ0dnZOSFFvakFNd3pBTTh5dW5RVS9CCll1cWZ2bjM3WXU3Y3VSZzdk
aXg2OU9nQnE5V0t2THc4REI4Ky9GYzVFUDQxOEZ2VHVjZmpFZGUwTWd6RE1BekQxQldlQWZrZm9L
eXMKRE45Kyt5MnVYYnVHMjI2NzdWYzVDUDYxOFZ2UythcFZxOFFOaGExYXRjS0VDUk1hV0NLR1lS
aUdZWDdOc0FQQ01BekRNQXpETUV6WQphTER2Z0RBTXd6QU13ekFNODc5SFNCeVFvcUlpbkRwMUto
UlJOUmo1K2ZuWXVYTm4wRytjQk1OaXNlRHk1Y3NOSm92ZGJzZDMzMzBYCjlMb2hjYnZkUHQrYThL
YytkRmVmaEV1M3Z6YTlNQXpETUF6RHFDRWtEc2h6enoySFVhTkdoU0txQm1IRmloVllzMllOOXV6
Wmc0NGQKTzhKdXR5dDZidm55NVVoTVRNUzZkZXNhUkpiczdHejA3TmtUbzBlUERuamRrUHp3d3cv
bzJyVXJIbjc0NFlEMzYwTjM5VW00ZFB0cgowd3ZETUF6RE1JeGFRdUtBdlBUU1Mvanl5eThWaGJY
YjdkaTFhMWNva2cwSmxaV1ZlUHp4eHpGbnpoeTgrT0tMK1B6enp4V2YrejFqCnhnd2tKQ1EwbUN5
OWUvZkc1TW1UZzE0M0pMMTY5Y0t0dDk0YTlCenBVT3V1dmdtbGJxWHF3SzlOTHd6RE1BekRNR3BS
N1lBRTJyT2UKbUpnWThQUHUvamlkVHZ6Kzk3L0gzcjE3MVNaYmJ4dzllaFFPaHdOYWJiVXErdlhy
RnpTc3krV3E4WnZCWUlCR293bTdMQUpHbzlFbgpmZi9yaHNEajhRQUE5SHE5bUpkQWhGSjMzZ1Fx
cDJDb09ZTWhGTHBWVWdmcVN5OE13ekFNd3pEWEE3SU95UGJ0MnpGaHdnVE1uejhmClR6LzlORkpU
VTlHaVJRdnhJMnRYcjE3RjY2Ky9qcjU5KzRyUFdLMVcvUG5QZjhiQ2hRc3hidHc0TEZxMENBQ3dk
T2xTZlBYVlYvankKeXk4eGFkSWtyRnExQ2syYk5zVmJiNzBGQUZpelpnM2F0V3VIbVRObkFnQU9I
VHFFR1RObTRObG5uOFdDQlF1UW5KeU03Ny8vSG5sNQplWGo4OGNjeGNPQkE5T2pSQS92Mzd3OHF2
OFZpd1p3NWMvREVFMDlnMUtoUm1EdDNMcXhXS3dEZ3ZmZmV3d3N2dkFDWHk0WFpzMmRqCjNyeDVB
ZVBZc1dNSEZpNWNpTVdMRitQbW0yL0dzV1BIZk81WFZWVmgzcng1U0VsSlFZOGVQWkNUa3lQZVV5
cHJNRm1rNUZlQzFQTmYKZlBFRmtwT1RjZSs5OTZLMHRCVC8rTWMva0p5Y2pDRkRodUQwNmRNQWdN
V0xGNk4vLy82dzJXeXkrYW1xcXNLc1diUHc4c3N2WStiTQptVGh3NElDc2ZNRjA5L0hISDZOang0
NjQrKzY3eFgwa1I0OGVSZCsrZllQT0hzaVZremRyMTY3Rk8rKzhnOWRmZjkzSDBWTmpXMUpoCmxk
YUJ5c3BLVlhvQnBNdjA0TUdER0RwMEtEcDI3SWpkdTNmajRNR0Q2TktsQzFhdFdoVTBId3pETUF6
RE1HR0ZaRGg3OWl3MWJ0eVkKV3Jac1NYdjM3cVU5ZS9aUWx5NWRxSG56NWtSRWxKK2ZUek5uenFT
a3BDVHhtVHZ2dkpPeXNyS0lpT2pBZ1FNRWdBNGVQRWhFUkJrWgpHZlRLSzYrSVlaczJiVW9MRml3
UXI0Y09IVXBqeDQ0bElxS3NyQ3hLU0VpZ3JsMjcwbWVmZlVZelpzeWduSndjdXV1dXU2aTh2Snpj
CmJqZk5tREdEa3BPVHFhU2tKS0Q4QXdZTW9BOC8vSkNJaUJ3T0I5MTAwMDAwZlBodzhmNm5uMzVL
V3EwMmFQN3RkanMxYmRxVWR1N2MKU1VSRUw3endBbzBaTTBhODM2eFpNK3JZc1NOOTlkVlh0SFBu
VHNySXlLQldyVnFSMCtra2w4dWxTdFpBc3NqSi8rYWJiMUtUSmsyQwpYc3M5MzcxN2Q1bzZkYXA0
ZmV1dHQ5S1VLVlBFNjIrKytZWSsrT0FESWlMWi9OeDk5OTIwWnMwYUlpSnl1OTJVbHBaR1E0WU1D
YXBiCktkMEpzZzhlUEZnTTczSzVmSFR2alZ3NWVlTjBPcWxuejU3aTlXT1BQVVp1dDFzMmY5NjZs
UXVycGc3VVJpOVNaYnA5KzNZQ1FKczMKYjZaTm16YlI0c1dMZzZiRk1BekRNQXdUYm1SblFESXlN
dEM4ZVhPTUhEa1N0OXh5Q3dZTUdJQTFhOWJnNHNXTHlNbkpRWEp5TWpwMwo3aXd1WmRtNWN5Y09I
ejZNM3IxN0F3QjY5T2lCWmN1V0lUMDlYWXpUZTNtSjJXejJ1WTZNakJTdisvVHBnOHpNVExSdjN4
NWp4b3pCCnNtWExjUGp3WVJBUjl1N2RpeTFidGlBMU5SVUZCUVg0OXR0dmE4aStaY3NXN051M0Qr
UEhqd2RRdmJSbDZ0U3ArUHJycjVHVmxhWEkKUVRNWURCZzllalM2ZE9rQ29IcTVtZmZiYUFDWU9I
RWlSb3dZZ2R0dXV3MnZ2ZllhY25OenNYMzdkbno2NmFlS1pRMUVYZVZYOHZ5VQpLVk93ZGV0V2Nk
blU0TUdEc1hIalJuRVowL2J0MnpGMjdGZ0FrTXpQL3YzN3NXblRKdHh4eHgwQUFLMVdpMkhEaHNu
S0dFeDNBUERZClk0OWh4NDRkT0h2MkxBQmczNzU5dU91dXV3TEdvNlNjQkVwTFMzSGt5QkZzMnJR
SkFEQjkrblFRa2FyeWtncXJ0ZzZvMFl1U01oMDAKYUJER2pSdUhaNTU1Qmg5OTlCSG16cDBybVJi
RE1BekRNRXc0VWJRSFJLUFJRS2ZUaWRlWm1abElTRWdRQjRvYWpVWWNVSDM3N2JmbwoxNitmendC
cnhvd1pTRXhNOUlsUEtXYXpHY25KeWVKMVZsWVdFaE1UWVRRYVlUUWFjZlBOTjJQYnRtM28wYU5I
aldlLy8vNTdKQ2NuCisyeUV2dW1tbXdBQWh3OGZWcFMrUnFQQm0yKytpZExTVWl4Y3VCQjc5dXhC
UlVXRlQ1aTR1RGp4N3o1OStnQUFUcDA2cFVyV1FOUlYKZmlYUFQ1Z3dBUVVGQmVLZWhHUEhqcUd5
c2hJN2R1eUF6V2FEeCtOQlZGUVVBR25kNzk2OUc1bVptWWlQanhmVGlvNk9saTNyWUxvRApnQkVq
UnFCNTgrWllzV0lGQU9EcnI3L0dtREZqQXNhanBKd0VrcEtTTUhyMGFJd1lNUUt6Wjg5R1JrWUdk
RHFkcXZLU0NodUtPaEJNCkwwcHRZdEdpUlRoNThpUjY5T2poVTNjWmhtRVlobUVhR24xdEg5UnF0
ZERyYXo2ZWw1Y251ZmErcmhRV0ZrS3YxMlB3NE1HeVlhdXEKcWxCWVdBaUx4WUxvNkdnQVFPZk9u
YUhYNjRPdXZRL0U4dVhMc1cvZlByei8vdnQ0NzczMzhQMzMzd2NObTU2ZWpwaVlHTVRFeEtpUwp0
VDdrVi9KOFltSWloZzhmanRXclZ5TStQaDQ5ZS9hRVZxdkZtalZyVUZaVzVuTzhzbFIrTGwyNmhN
TEN3aHEvcTNFMnZYVUhBRHFkCkRvODg4Z2lXTGwyS0YxOThFVmFyMWNmQjhVZE5PWDM4OGNkSVMw
dkRYLy82Vnh3NmRBaGJ0MjVWVlY1U1lVTmRCN3oxY3ZueVpVVTIKWVRBWWtKeWNqTmRmZngwUFBm
U1FwTjRZaG1FWWhtSENTYTJPNFQxNThpU0tpb3JRdlh2M0d2ZlMwOU54NnRRcG5EbHpSdnlOaUh6
ZQp6dm9QU29YbFAwcG8yYklsdG0zYkptNktGdUxmdlh0M2piQ1ptWmx3dTkzNDRZY2Z4Ti95OC9Q
aGNyblF2bjE3UmVrZFAzNGNzMmJOCndxSkZpNEllS2V2TmxTdFhVRkZSZ1c3ZHVxbVNOUkIxbFYv
cDg1TW5UOGE2ZGV2dzdydnZZdHEwYVpneVpRcldyMStQN2R1M1krREEKZ1dJNHFmeWtwYVdob0tB
QUowK2VWSlMzUUhqclRtRGF0R2tvTFMzRk04ODhnLzc5K3dkOVZrMDVYYnQyRGZuNStWaXlaQW0y
Yk5tQwpvMGVQWXMyYU5hcktTeXBzYmVxQUZONTZVVnFtOCtmUHg2Wk5tNkRSYURCLy9uekZhVEVN
d3pBTXc5UTNpaDJRb3FJaThlOWR1M2FoCmYvLys0aHIzcXFvcVdLMVdFQkhHalJzSGs4bUVLVk9t
SUNjbkJ6azVPWGpxcWFmUXZIbHpBRUI4ZkR3dVhib0VBQ2dwS1VIbnpwMlIKblowTmg4T0JLMWV1
NE15Wk16NXB1Vnd1bjFPZkhuendRZVRsNVdIR2pCa29LU2xCZm40K1hucnBwWURIQUk4ZE94Yk5t
alhEdG0zYgp4TjhPSERpQXpNeE0zSG5ublFDQTh2SnllRHdlVkZWVkJTYkhOWndBQUNBQVNVUkJW
TXgzVGs0T1BCNFBqaDgvRHJmYmpUMTc5c0JtCnM0R0l4SDB2YnJkYkRMOXo1MDZNR2pVS1hicDBV
U1ZySUZtVXlPOXdPT0IwT3NYNzN0ZEtuZ2VBdSs2NkN4RVJFZERwZElpTGk4UHQKdDkrTzJOaFlw
S2FtK2d5VXBmSXpidHc0NlBWNkxGdTJUQXgvNHNRSkZCWVcrdWpIbjJDNkUwaEtTc0w0OGVPeFlz
VUtqQmd4SW1nOApTc3BKb0tpb0NHdlhyZ1VBREIwNkZQZmNjdytpbzZObHk4dGJ0M0s2VUZNSDFP
aEZTWmx1MmJJRmJkdTJSZnYyN2JGdzRVSzg4ODQ3ClBzNlAzVzdISzYrOElzckFNQXpETUF3VFZw
VHNWTy9ac3lkMTdkcVY1cytmVHkrKytDSU5IVHFVcmwyN1JrUkUyZG5aMUxkdlh3SkEKUzVZc0li
dmRUdXZYcjZmazVHUUNRT25wNmJSdjN6NHhybWVlZVlZMEdnMU5uVHFWOHZMeWFNZU9IWlNZbUVp
dFdyV2lKNTk4a21iTwpuRW1EQmcyaW5UdDMwdXJWcXlrcUtvcFNVMU5wN2RxMVloenZ2UE1PUlVS
RWtFYWpvZVRrWkZxL2ZuMVEyUThkT2tRZE9uU2d2L3psCkw3UnAweVlhUDM0ODVlVGtFQkhSL3Yz
N3FYLy8vZ1NBNXMyYlIyZk9uS254ZkdWbEpYWHQycFdpbzZOcHlwUXA5TTAzMzFCa1pDVDkKN25l
L0k3dmRUczgvL3p4MTd0eVpYbnZ0TlhyMTFWZnBEMy80QTVXWGw2dVdOWmdzVXZKbloyZFRqeDQ5
Q0FDOS9mYmJ0Ry9mUHA5cgp1OTB1K2J3MzgrYk5vOU9uVDR2WDgrZlA5N2xXa3AvVnExZFRURXdN
dFcvZm51Ni8vMzRhTVdJRTlldlhqMWF2WGgwd3ozSzZFOWl6Clp3ODk4TUFEQWVNUWtDc25iNDRk
TzBhdFc3ZW01Y3VYMDRZTkcyaldyRm5pQ1ZQQjh1ZXZhN3ZkTHFrTE5YVkFyVjZreW5UbnpwM1UK
cEVrVE9uTGtDQkVSSFQ5K25IUTZIYlZzMlpLeXM3UEYzelFhRGExYXRVcFNwd3pETUF6RE1QV0Jo
a2orUzJ5OWV2WENnQUVEOE5KTApMNkdxcXNwblU3aUVZNFA4L0h5a3BLVFV1RmRZV0lpa3BDVHgy
dUZ3d08xMncydzJ3K2wwS2xycTVIQTRjUEhpUmFTbnB3ZmNpK0l2CnkrblRwNkhWYXRHNmRXdlp1
QU5odFZwaE5wc0JJS0NNMTY1ZFExSlNVa0JaMU1oYUgvSXJlZDV1dC90OGRkMy8yaHVwL0xqZGJw
U1UKbENBcEtRazJtdzBtazBsV1BpbmRBY0NLRlN1UWtaR0JvVU9IeXNZbFYwNUE5WkkvclZhTDB0
SlNHQXdHY1pPOWt2ejVJeFZXVFIwSQpoSlJlNm1vVEJRVUZpdW94d3pBTXd6Qk1xRkhsZ0x6eHho
dmhrSWxoQUFBVkZSV0lpSWpBZ3c4K2lFOC8vWlMvRHM0d0RNTXdEUE1iClFIWVBpTWZqRWZkbU1F
eTRlUHZ0dHhFWEY0ZldyVnRqK3ZUcDdId3dETU13RE1QOFJwQ2RBVm0xYXBXNFdiVlZxMWFZTUdG
Q1dBUmoKL3JjcExpN0cyclZyY2M4OTl5QXRMYTJoeFdFWWhtRVlobUZDaEtJbFdBekRNQXpETUF6
RE1LR2dWdDhCWVJpR1lSaUdZUmlHcVEzcwpnREFNd3pBTXd6QU1FemJZQVdFWWhtRVlobUVZSm15
d0E4SXdETU13RE1Nd1ROaGdCNFJoR0laaEdJWmhtTERCRGdqRE1BekRNQXpECk1HR0RIUkNHWVJp
R1lSaUdZY0lHT3lBTXd6QU13ekFNdzRRTmRrQVlobUVZaG1FWWhna2I3SUF3RE1Nd0RNTXdEQk0y
MkFGaEdJWmgKR0laaEdDWnNzQVBDTUF6RE1BekRNRXpZWUFlRVlSaUdZUmlHWVppd3dRNEl3ekFN
d3pBTXd6QmhneDBRaG1FWWhtRVlobUhDQmpzZwpETU13RE1Nd0RNT0VEWFpBR0laaEdJWmhHSVlK
R3czaWdOanRkbHkrZkxraGttYVlrSExtakFlWEw1TmtHSThIS0MwTkhFYnFlYnM5CitIUEZ4WVR5
OHVCcFdxMUFVVkZ3dWVUdUI2T29xQWk1dWJrZyt1WFovUHg4MWZHRWd0emNYSnc0Y2FKQjBnNDFG
eTllUkZGUlVVT0wKd1lRUU5XVjZQZldKMTVNc0RKY0g4OXRGMWdHWk0yY09OQm9OT25YcWhJa1RK
MEtqMFVDajBhQlhyMTY0NDQ0N0VCTVRBNDFHZy9MeQpjcXhZc1VLOC84a25ud1NOczNmdjNtalJv
Z1d5c3JKQ21wbnJtZkx5Y3JFeit1dGYveXJxYWZQbXpYV09lK1hLbFVoSlNZRkdvOEgwCjZkUHJI
RjlENGEyajZ6RStmL2J1ZFNFenN4d0xGbGhyM1BONGdPWExIUmcweUlKeDR5cHg0WUpIOGZOWHJ4
S2VlODZHRmkzS3NHbVQKMCtlZXpRWTgrR0FsSG42NENoTW5WbUxLbENxNFhML2N2M0tGY08rOWxZ
aU9Ma1hqeG1VWU9OQ0NpeGRKOGYxQXVGd3VMRnk0RUczYgp0c1dDQlF1d2ZmdDJQUHJvbzdqcnJy
c3dZOFlNdlBubW0wclVGWEptenB5SkhUdDIxSHM2OVdsSGhZV0Y2TnExSzZaT25ZcDU4K1poCi9Q
ang5WktPRktGdWoycXJyMURMVVYvSTVhODJaZXJkSjlaVkQzVzExMUQyejZFbzAxRDFiOTU2VVRw
V2FRajh5KzkvY2J6RS9JOUEKTWp6eXlDUDAxRk5QRVJGUlZWVVZBU0FBOU95enp4SVJVVTVPRGlV
bUpsSkpTUWtSRVRWcDBvUUEwT3JWcTRQRzJhdFhMeklhamJSLwovMzY1NUg4VE9KMU9Hang0TUgz
enpUZEVST1R4ZU1oZ01CQUE4YmU2OHNBRER4QUFldWloaDBJU1g3angxOUgxRnA4LzU4NjVLVG01
CmxJQmlldVNSU3A5N0J3KzZxRnUzY3VyVXFZeSsvOTZsNnZsMzNySFRxRkVXQW9vSktLYlZxKzAr
ejgyYVZVVmFiUW1WbFJGZHUrWWgKb0pqbXpxMGlJcUtLQ3FJLy9LR0tkdTF5MHRxMURrcE1ySTcv
Z1Fjc2l1NEh3bXExVXUvZXZRa0FmZlhWVno3M3Z2NzZheklhamZUbgpQLzladWVKQ1JGRlJFUm1O
UnJweTVVcTlwbFBmZGpScjFpd0NRTysrK3k1Tm5qeVpBTkRWcTFmckphMWdoTEk5cW91KzZxTmRE
RFZLCjhsZWJNdlh1RSt1aWgxRFlheWo3NTFDVmFWMzd0MEI2VVRKV0NUZUI1UHhmR3k4eC96dkl6
b0NZVENZOCsreXpRZTluWm1aaTBxUkoKNHBJTXZWNFBBTkJvTkVHZjJiOS9Qd29LQ3RDN2QyKzU1
SC8xT0oxT1RKMDZGZHUzYnhkLzAyZzAwT2wwNHQraFFJbmVyMWNDNmVoNgppcytmeWtyZ2lTZXNh
TmV1WnZXNWNNR0RPKyswNE1nUk4xYXVqRUt2WGpwVno4K2NhY1JISDBVRlREYzMxNE4zMzdVaklV
R0QyRmdnCkpVV0RpQWdObGkyejQ4b1ZRbVVsNGZYWHpiajFWajN1djkrQSsrODNBS2hlYmxXZHJ2
VDlRRHp4eEJQSXpzNUd4NDRkTVdMRUNKOTcKZDk5OU4xNTg4Y1hnRDljakd6WnNRSzlldlpDYW1s
cHZhZFMzSFFGQWRuWTJBTUJvTk9LdHQ5N0NtVE5uMEtSSmszcExMeENoYW8vcQpxcS82YUJkRGlk
TDgxYVpNdmZ2RTJ1b2hWUFlheXY0NVZHVmFsLzR0bUY2dXR6NHptSnovUytNbDVuOE1OZDVLb0Jr
UWY1bzFhMFlBCjZMMzMzcU1wVTZaUWFtb3FQZkRBQTNUcDBpVWlJbHE2ZENuMTd0MmJldmZ1VFR0
MzdpUWlvcmZlZW92dXYvOStHamR1SEEwZlBwemUKZnZ2dG9PblBtVE9IcGs2ZFNzT0dEYU5ISDMy
VVhDNlhUNXpaMmRtMFk4Y09Hang0TVBYdTNWdDhPN3RpeFFveHpMLys5UythUFhzMgpOV3ZXakZh
dlhpMTVqNGpveXBVck5IcjBhQm81Y2lRTkd6YU05dTNiSjhvdFBMZHQyemFhTkdrU3BhYW0wb1FK
RStqOCtmTkVSRFJ6CjVreFJaNTA2ZFJMZjRKaE1KZ0pBbXpadDhwRi93b1FKZFBIaVJmcm9vNCtv
VDU4KzlQNzc3d2ZVeFpVclYyallzR0hVdUhGam1qUnAKRW8wWk00WUEwTFJwMDN6Q0JKTDdiMy83
bTVqZWxpMWJhUGJzMmRTMGFWTWFPWElrNWVibTB2cjE2K21tbTI2aUxsMjYwUHIxNjhYNAp5c3ZM
NmFHSEhxSXhZOGJRbURGamFPN2N1V1N6MlJUcklsaFpCOUtSWEpsczJiS0YvdlNuUDlHamp6NUtn
d1lOb2llZmZGS2NoUXVtCjgyRDZVR09EUkVTVEoxZFNWcGFMaGcycklLQ1laczJxbm9Gd3VZaDY5
Q2dub0pnbVQ2NmtraElQZVR6S254ZHdPRWljQWZuNFk0ZjQKKzd2djJna29wdWJOUzhYZkVoS3Fa
ekhlZjk5M3BzUm1JMnJhdEpUYXRpMmpxMWRyQ2lGM240aW91TGhZMU9Pamp6NGFNSXpiN2FhZgpm
dnBKdkpheWtWV3JWbEdmUG4yb2QrL2V0SExsU2hvelpnd2xKQ1RRa0NGRDZNS0ZDMFJFaXV2QzNY
ZmZUWXNYTDFZVUo1RzB2UkFwCnQwc2lhVHZ5UjBvZnp6enpERVZIUnhNQXV1bW1tK2k1NTU0TEdJ
ZWM3UDRFczJVcHViM2JJN213d2RyaFlQcnlKeFJ5MUxZTnE0KzIKM0p0Z1pTcFZob0g2Ukg4OUtH
bWZnc2tuWllQKytNdWl0RjBQWmhQK2VWSFNWd3ZsVk52K1RhbGU1TVlxYXRLUTA3T1NkaXFRbklG
cwpvNzc2WVlZSk4vWG1nUFRwMDRlKytPSUw2dEtsaTg4QXh1VnlrZGxzSmdDMGJ0MDYycjkvUHdH
ZzNOeGNJaUw2MDUvK1JFdVdMQWtZCjkyMjMzVWJKeWNsa3Q5dnAzWGZmRmFlNW5VNG5HWTFHQWtC
YnQyNGxJcUk1YytZUUFCbzdkcXo0dkREbDJxMWJON3J6empzSkFJMGUKUFZyeW5zUGhvTFp0MjFM
Nzl1M0o3WGJUMHFWTEtTRWhRWlEzUGo2ZUFOQ3R0OTVLR3pac0VQTTdlL1pzTWQzR2pSdjdkQ1pF
dm8yeQp3K0dnakl3TUFrQlBQLzIwR0diUW9FSGtDVENDOVhnODFMbHpad0pBcTFhdG9oOS8vRkhV
dTlCQXk4bWRsSlFreXYzbGwxL1NMYmZjClFnQ29RNGNPOU9xcnI5S1NKVXNJQUdWa1pKREg0eUdQ
eDBOOSsvYWx1TGc0c2xnc1ZGeGNURHFkamthTUdDSEtKYWNMcWJJT3BLTmcKWlhMMjdGblM2L1gw
ekRQUEVCSFJHMis4UVFCbzBxUkpRWFV1cFE4MU5yaHhvNFBtejdjU0VkVndJSTRlZFl1T3c2MjNW
cEJlWDBLSgppYVgwajMvWUZUMHZFTXdCK2ZPZnJVRWRrQmRlc0lxLzdkdFh2UVFNS0thSWlCSmFz
OGJoRTcvY2ZZRTllL2FJOWYybGwxNEtHTVliCkpUYlNzbVZMc1gwNGNlSUV2ZkRDQ3dTQWV2WHE5
ZCs4eTllRnNySXlpb2lJb0hQbnppbUtVODVlMU5pbFhMMVNvNC9pNG1JeHIyKzkKOVJZVkZ4Zlhp
RU9KclhzVExDOXljdnUzUjFKaGc3WERnZlRsVHlqbFVOdUcxVmRiN2syZ01wVXJRLzgrMFY4UGF0
b25mL21VMUVsdgpBc21pUkM5U051R2RGeVY5ZFNqNk56bTlFTW1QVlVKWjE0bmsyNmxBY3ZxWFIz
MzN3d3dUVHVydEZLeVpNMmZpM252dnhUMzMzQU1BCk9IWHFGQUJBcDlQQmJEWURxSjc2M0xwMUt3
Qmcvdno1c0Znc2VQcnBwM0hUVFRmVmlHL2p4bzNZdFdzWE9uWHFCS1BSaUNGRGhxQnAKMDZaSVRr
NkdYcStIeVdRUzR3U0EyTmhZbjJzQWlJNk9CZ0RjY3NzdDJMeDVNNzc0NGd1OCt1cXJrdmMrK2VR
VG5EcDFDdTNhdFlOVwpxMFdyVnExUVVsS0NkZXZXK1R3M2FkSWtqQnc1VXN4dmJtNnVZbDBaREFi
TW5qMGJBTEJtelJvUUViS3pzekZxMUtpQTA4T2JObTNDCjBhTkhrWlNVaElrVEorTEdHMi9FYmJm
ZEJnRGlVamlsY2srYk5nMzMzSE1QUm80Y0NRQXdtODE0K3VtbjhjZ2pqd0FBenAwN2grUEgKajJQ
OSt2WEl5c3BDaHc0ZEVCVVZoWVNFQktTbnAyUGp4bzNZdTNldklsMG9MV3VCWUdWaXM5bmdjcm53
bi8vOEJ3Qnd3dzAzQVBobAo2VU1ncFBTaFZLNnlNc0o3N3pudzNIT21nR2tjT3ZUTGJ2RE5tNk94
ZVhNMGlvbzhlT2loS3Z6blAyN1o1K1hJeTZ1NWtWMmdvb0xFCnY5dTEwMkxRSUQzTVpnM3Nkc0tF
Q1pVNGY5NmorTDdBdVhQbnhMK0ZPaXVGRWh1SmlZa0JBRXlZTUFIdDJyWEQyTEZqQVFBLy9QQUQK
ZnZ6eFIwVjE0ZXV2djBibnpwMlJucDZ1S0U0NWUxRmpsM0wxU28wK0VoSVN4R1VnY1hGeFNFaElx
QkdIV2xzUGxoYzFja3VGbFdxSApsUkFxT1FEMWJWZzQydkpBWlNwWGh2NTlvajlxMjAxdmxOUkpi
d0xKSXFjWE5UYWhwSzhPUmYrbWhtQmpsVkRXZFVDK25RcUVmM2swClJEL01NUFZGdlRrZ1dtMTEx
RWFqRVVEMVNUcUJHREJnQUFCZzllclZhTldxRlRaczJJQisvZnJWQ1BmdHQ5OENBRkpTVWdBQTZl
bnAKdUhUcGtsaTUxTkNoUXdjQXdMMzMzaXQyQnNIdUhUMTZGQUJ3N05neFRKdzRFZSs4OHc0YU4y
Nk0wNmRQK3p3bnJITVY4dXQwK3A1ZQpKTWVrU1pOZ01CaHc3dHc1N04yN0YxOSsrU1hHalJzWE1P
eVJJMGNBd0dmOXU5QjRDLzhybFZzb0o2RlRFUElSRVJFaGhySFpiTmkvCmZ6K0FYeHBSb0xxREJW
RGpkSTVndWxCYTF2NzRsMGxtWmlhT0hUdUdmL3pqSDlpMWF4ZmVmLzk5QUVCVlZWWFFPS1Qwb1ZT
dTU1KzMKNFk0NzlQajN2MTNZczhjbEhtTjcrYklIcDA1NThQUFAxWVA0aUFnTlRDWmcwQ0E5WW1N
MWNMc0ptemU3WkorWEl5RWgrRnJscGsxLwpxY3BKU1JyODVTOW03TjhmZzZnb0RZZ0l1M2E1Rk44
WGFOMjZ0ZmozaFFzWFpPV3JqWTAwYmRwVS9FM29JT1hxd3VlZmY0NHhZOGJVClNEOVluSEwyb3NZ
dWxkWXJ0Zm9JaGxwYkQ1WVhOWEpMaGExck94d3FPYnhSMm9hRnF5MzNwemJ0bFRlMWJUZUIwTmln
UURDOWhMSnYKQmtMYnZ5a2gyRmlsdnVxNlZOc25SMFAyd3d3VGF2UU5MY0N0dDk2S2YvN3puM2o0
NFlkUlVGQ0FpUk1ud213MjQ3Nzc3dk1KVjFCUQpBQUJCM3hTb1FXclRtZjg5aThVQ0FHalpzaVUr
L1BERE9xY2RqT1RrWkl3Y09SS2ZmLzQ1UHZ6d1EwUkVSQVI5cTFoWVdBakF0NFAxCko5UnlsLy8z
b3hOQ28rYjlkMFZGaGFJNGxKYTFQNEhLS3pjM0YvZmRkeC91dU9NT2pCdzVFdXZYcjVlTVEwNGZT
dVE2ZGNxTnYvN1YKVnVQWkRSc2NhTnBVaTh6TTZvNU0rRVNHUmdNMGFxUkZlYmtiaFlVZTJlZi8v
bmZwV1liTXpHcDllN3g4RmJlN09ySG16V3UrUzdqeApSaDFtem96QUcyL1k4TjgrU05YOVRwMDZp
WCtmUFh0V1VqYWdkallpdkswRGZubTdLVlVYcXFxcXNHWExGcnoyMm10QjVRZ1VwNVM5CnFMRkxO
ZlVxRkhWR1RuWi9ndVZGamR4U1lTZFBuZ3lnOXUxd3FPU283N1JEamRyMnlwdmF0cHRBNkd4UWls
RDJ6VUREOUc5MVRTTlUKYlo4Y0Rka1BNMHlvYWZBdm9lL1lzUU1USmt6QXFWT254TTd0bzQ4K3Fo
R3ViZHUyQUlBVEowNmd0TFEwYlBLMWF0VUtRSFhqNm5hNwo2eld0YWRPbUFRQSsrT0FEM0h6enpV
SEROVy9lSEFBa3ozb1B0ZHp0MjdjSFVQMG1VY0Q2MytPVGhIdHlLQzFySmZHTUdqVUtMcGNMClM1
Y3VGZDhBU1NHbEQ2Vnk5ZSt2eC8zM0c4Vi9LU25WMWFkMWF4MjZkOWZoeGh1ck93S0hneUM4TkJY
NjBOYXRkYkxQeXpGOHVBRmEKclFZV1MzVm41ZkVBRlJWQVZKUUdnd2JwUVFUazVmbDJaTzNhNmFE
WGE5Q3ZuL3g5ZitMaTRqQjE2bFFBd09IRGg4WHk5c2JwZE9MZgovLzQzZ05yWmlERFlBSDZwNDBE
d3VyQjU4MmEwYnQzYUo2eGNuSEwyb3NZdTFkU3JVTlVaTmJZZUxDOXE1SllLVzlkMk9GUnkxSVp3
CnR1WGUxS2E5OG4rK3R1MW1LR3hRamxEM3pRM1J2OVUxalZDMmZhRk94eDhwZXlvdExjWGYvLzUz
Y1JrYXc5UW5xaHdRNzY5eFhybHkKSldBWVlacFBxTERDLzk3VDJONWhQdnZzTTN6ODhjZElTMHZE
Qng5OGdQVDBkSEhKalRlVEowOUdWRlFVaUFndnYvd3lQQjRQeXN2TApzV0hEQmdCQXo1NDlBVlN2
OTNXNzNmajU1NThCK0w0VkVLWldBNzBwQ0hadjlPalJNSmxNeU0vUHgwc3Z2UVNyMVlxdFc3ZGk5
ZXJWCmt2bjFickNFS2REejU4L2o4ODgvUjFsWm1YamZlMm5hMEtGRDBieDVjNWpOWnNucDY1RWpS
OEpnTU9EU3BVdTRmUGt5N0hhN09HMHQKeUM4bnQ4UGhrSlRiNC9XYTNlMTJZK0xFaVVoS1NoTDNC
UkFSTGx5NGdJeU1ESXdlUFZxUkxxVEsybDlINWVYbFFjdGt6NTQ5OEhnOApjRGdjc0ZxdE9IejRj
QTJaL2VNYk1tUklVSDBvdGNHbm56Wmg3ZG9vOFYrWEx0Vk93eDEzR1BEUVEwWU1IS2pITGJkVUQr
UnpjNnRsCnFhb2lKQ1JvTVdxVVFmWjVnVE5uZnNuSDFhdS8vTjI0c1FZelpoaFJYbDY5SCtYYU5R
SVJZZHEwQ0NRa2FEQnpaaFdhTkNuRnpKbFYKRUZaMzdOM3J3Z3N2bUpDUm9aVzlINGlsUzVlaVpj
dVd1SHo1TXViUG4rOXpyNnlzREJNblRoVExWNG1OQ0FoTERnVG5wVy9mdnVqYwp1Yk40UDFoZCtP
eXp6NEsrcVFzV3A1eTlxTEZMS1R2eVIwMmRDZmIyVW9tdGV4TXNMMUx0QVJINXRFZFNZZVhhNFVE
MTJKdFF5UUdvCmI4UHFveTMzejErZ01sVlNodDVwKyt0QmFmc1VTTDVSbzBZcHJwT0JaRkdpRnlt
YjhNOExJTjlYaDZKL2s5TkxlWG01N0ZoRlRScWgKYXZ2azVLenZmdmk1NTU3RG5EbHpBaTV4Wlpp
UW8zUzMrdWJObStuMjIyOFhUOFZKU0VpZ2VmUG1rY1h5eTBmTWxpOWZMdDRmTUdBQQpuVHAxaW02
ODhVWUNRTkhSMGJSOSszYjYyOS8rSm9ZWlBIZ3dQZnp3dzlTblR4OTY1cGxuYU9IQ2hUUnMyRER4
ZEp0QU1pUW5KeE1BCmlvK1BwK25UcDR2SHozM3h4UmNVR1JsSkdvMkdCZzRjU1BmY2N3L0Z4c1pT
Nzk2OWFkT21UZlRoaHgrU1JxTWhBTlMrZlh2eFNEc2kKa3J4SFJMUnUzVHBxMUtnUkFTQ0R3VUFM
Rml5UXpXOXNiQ3p0MnJXTGlJZ2VlK3d4QWtBcEtTbjA5Ny8vWFR5ZEJRQU5HalRJNTBqRQorZlBu
MDRNUFBpaGJIdSsrK3k0WmpVWnExcXdaRFI0OG1JWU9IVW94TVRIVXQyOWZVZjVnY3E5WXNVSk0v
N2JiYnFOejU4NVJyMTY5CkNBQ1p6V2Jhc1dNSExWcTBTQXd6YnR3NDhuZzhsSldWUlJrWkdUUi8v
bndhT1hJa1pXWm0wdEdqUnhYcjRwRkhIZ2xhMXY0NmtpcVQKNDhlUGkwZGRkdTdjbVZhdVhFbVJr
WkdrMVdycHZmZmVDeGlmbEQ2azVKSmk2TkNhcDFoZHVlS2hXMit0b0xGakxmVENDMVpxMmJLTQpk
dTUwS243KzNYZnRkTWNkRmVJcFdPM2FsZEhTcFRheS8vY2dMYnVkYU94WUMwMmFWRW5UcDFmU2Zm
ZFp5UHJmQTdDKytzcEJabk1KCkFjV1VubDVHbzBkYjZNTVBmem1CUys1K01JcUtpbWpXckZtazEr
dXBlL2Z1OU9TVFQ5S2dRWVBvbGx0dW9ZTUhEL3FFbGJJUkloSnQKNG80NzdxQWhRNFpRVEV3TXRX
M2JsazZlUEZralhmKzZZTFBaS0NZbWhvNGRPK1lUVGk1T09YdFJZNWRFd2Uwb0VFcnJ6STAzM2tn
YgpObXlvOGJ3U1cvZEdLaS9CNUE3VUhrbmxVYW9kRHFRdmYwSWhSMjNic0ZDMzVmNEVLbE81TXZU
dkUvL3lsNy80NkVGTkh4bElQcms2CjZZMi9MTjdYVW5vSlpoT0J5bFN1cnlhcVcvK21SQzlLeGlw
cTB3aEYyK2N2cDM5NTJHeTJldTJIRnk5ZVRBRG9ubnZ1Q1pwUGhna1YKcW83aHJROHVYNzVNUkVU
bno1LzNPYmMvR0U2bms0NGVQZXB6cHJWQVpXV2xlTFJjUVVHQmVBNTVLTERiN1hUMDZGR3FxS2lv
MWZQbgp6cDBMZXZhNk4vLzg1ejlwMjdadGl1SXNMeStubjMvK21ZaUk4dkx5QXVhM3JuTDc0L0Y0
Nk9lZmY2WXpaODZvZmxhdXJKWHFpS2o2ClNPaWZmdnFKbk03cXdYMXBhU21kUFh0V05yNUErbEJy
ZzBxNGV0VkRQLy9zSnJjN0pOSFZvS2pJUTlldTFUeWkyZUVnT25MRVJaY3YKQi82Mmg5eDlLYXhX
S3gwNWNvUzJiTmtTMEdFUWtMSVJvVE44NjYyM3lHYXowWWtUSndJZU5VMVVzeTVVVkZUVWVEbWdO
RTRwZTZtTgpYYXFwVjNXcE0zS3kreU9YRnpWeVM0V1Zhb2VWMU9OUXlWRWJ3dFdXZTZPbURQMVIy
ejRGa3ErdU5xZ0VLWnZ3UjBsZkhlcityVGJsCnBqYU5VTFI5U3VTc3ozNzQvUG56UWR0a2hna2xH
aUtGdTUrWWVtUFJva1ZZdkhneERoMDZoT2VmZng3TGxpMjdicjdPeXZ5Q1JsUFMKMENMVUswUTFq
NEVOTlYyNmRNRi8vdk1mTEYyNkZILzR3eDlxM0s5TlhaQ0xrMkVZcHFIaGRvcGhmR253VGVoTTlX
YTBxMWV2WXV6WQpzUmc1Y2lRN0g5Y3BSQW0vNlgvMXphbFRwOFMxeXhzM2JrUitmbjZOTUdycmdw
STRHWVpoR2hKdXB4aW1KandEY3AzdzQ0OC9vazJiCk5vaUtpbXBvVVJpbVh2amhoeDk4T3Q3VTFG
UjA3OTY5UmpnMWRVRnBuQXpETUEwRnQxTU1VeE4yUUJpR1lSaUdZUmlHQ1J1OEJJdGgKR0laaEdJ
WmhtTERCRGdqRE1BekRNQXpETUdHREhSQ0dZUmlHWVJpR1ljSUdPeUFNd3pBTXd6QU13NFFOZGtB
WWhtRVlobUVZaGdrYgo3SUF3RE1Nd0RNTXdEQk0yMkFGaEdJWmhHSVpoR0Nac3NBUENNQXpETUF6
RE1FellZQWVFWVJpR1lSaUdZWml3d1E0SXd6QU13ekFNCnd6QmhRKy8vZzh0TnNMczhzTmhjc0xz
SVRyZW5JZVJpR0laaEdJWmhHT1pYaUVHblJZUmVnMmlUSGhGNkxmUTZqYzk5SHdmRTVTWlkKN0M0
VVdad29zamhoc2JuZzlsQllCV1lZaG1FWWhtRVk1dGVMVGx2dGZDUkdHNUFZYlVCMGhON0hDZkZ4
UU93dUQ0b3NUdVRtVitGYQptUjJWZG5mWUJXWVlobUVZaG1FWTV0ZE5WSVFPVGVJaUFFVENvTk5D
cjlPSjkzd2NFSXV0ZXZialdwa2RBSkFZYlVSOFpJMVZXZ3pECk1BekRNQXpETUFFcHJYTEI1blRq
V3BrZGNaRUdSRWZvRUJVUnhBR3h1d2dXbXd1VmRqY1NvNDFvRWgrQnRQaUlzQXZOTUF6RE1BekQK
TU15dmt5dWxkbHdydGFQSTRoRDNsWHZqNDRBNDNSNXh6MGQ4cEI1cDhSRzRlUHg3bUV3bVJFWkdR
cS9YZzRqZ2NybmdkcnRCUklpTQpqSVJXcTRWV3E0VkdVNzIyUzZQUmlMKzUzVzRZREFhNDNXNVly
VlpvdFZwRVJVWEI3WGJEWXJIQVpyTkJwOU5CbzlIQTZYVEM2WFRDCjQvRkFvOUZBbzlIQTRYREFZ
RENBaUdDejJlQnl1YURUNmFEVmF1SHhlT0J5dVJBZEhRMkR3UUNyMVFxWHl3V1R5UVN6MlF5dFZn
dWQKVGdlZFRpZktMY1R0OFhqZ2REcGh0OXVoMSt0aE5CcGhNQmpFdUlVOFdLMVc4VzhoTHVHZklM
UEg0d0VSd2VQeG9HUEhqbUVxV29aaApHSVpoR0lhNVByRTUzQ2l5T09EMjFEelVTblo5bFY2dmgx
WmJmVm92RWNIdGRvdk9Cd0FZREFiUjhSRENDUGVFNTRVQnYwNm5nOWxzCmhzbGtRbmw1T1VwTFN4
RVhGd2UzdTNxdlNVUkVCTFJhTFNvcksrRjBPcUhWYWhFUkVTSGVqNHlNQkFDNDNXNW9OQnJvOVhw
VVZWWEIKNlhUQzRYQkFwOU1oSmlZR0pwTUpSQVNId3dFaWdrYWpnVTZuRXgwWklRNlB4eU9tS1Rn
VUFIeWNGQUhCSVJLY0VlRi93U2tUbkJDRwpZUmlHWVJpR1lZSWo2NEFJZzIzdnQvekM3OExBWFVB
STR6MFQ0blE2b2RQcFlES1pSQWZBNlhUQ1pES2hkZXZXcUtpb1FGVlZGVnd1CkY3UmFMWWhJbklV
d0dvM2l6SVZHb3hHZEhidmRMb2FMalkwVlp6NkU1NFJaQ1VFbWIza0Z1Vnd1RjRoSWpOTjdCa2R3
dElTOGVEc2UKM3ZrV2ZoZWNMblpBR0laaEdJWmhHRVlhV1FkRWNEcUVXUUVBNHV5RHNMVEpPNXoz
b0YycjFhSlJvMGFvckt3RUFIRlpWRmxaR1d3MgpHN1JhTGFLam8yRTBHbEZWVllYS3lrcTRYQzR4
YmlFZVlSWkdXSFpsTkJyRjJRZWowUWlqMFNqSzUzSzU0SEE0RUJFUmdaaVlHRmdzCmxocnhlYzkw
Q0U2UGY1NkZmOTZ6SGQ3THNMeVhtSG5QQURFTXd6QU13ekFNRXh4WkI4Ujd3QzI4N2ZmRzVYS0pm
M3ZmRXdiNkJRVUYKU0V0TFEyUmtKSzVldllyYzNGeFVWVlVoT2pvYXNiR3h5TXZMUTBKQ0Frd21r
empURVJFUkFZL0hBNHZGQXExV0M1UEpCTDFlTDg1SwpDTE1wQU9Cd09PQjJ1NkhWYXNVOUhJTGNR
TFhUSXpnd3dteUk5NUlzQUQ3THA3eG5TYnozb25nN0hkNy9oT1Zod2pNTXd6QU13ekFNCnd3Ukgw
UklzblU3bnM1ZEQrQWVneHF5Qy8zVjhmRHlJQ05uWjJWaTFhaFcyYjk4T0lrTGp4bzFoTkJyUnZu
MTd0Ry9mSG0zYnRoVTMKa3d1T1JFUkVoTGd4SFlEUFJuSGdsNWtLUVI1aFNSWUEyR3cyMk8xMlJF
Wkdpck1mZ3JQZ1Blc2gvQzg0Rzk0YjZvWFpEZS9aRCtHZQpWSjRaaG1FWWhtRVloZ21NckFNaWJB
WTNHbzAxTmx3SDJwZ053R2RmUkZ4Y0hOYXRXNGRseTViaDRNR0RpSXFLUWxwYUdxeFdLL0x5Cjhu
RCsvSG1jT25VS0hUcDBRSk1tVFdBMEdtRXltWkNjbkl6R2pSdkRack9oc0xBUVJJUW1UWm9nS2lv
S3BhV2xLQ2twZ2NmalFXeHMKckRnTEV4a1ppZVRrWkNRbEpZbXpHOEpTTGVGLzRUZkJ1UkJtVllU
OENNNkc4SnZndkhqUGVuZzdHNEdXZGpFTXd6QU13ekFNRXhoWgpCOFJtczRuTG9yd0g1d0RFQWJ6
M0JtOEJ3Vkc1dU41bmZ3QUFJQUJKUkVGVWV2VXFzckt5a0pPVGc3aTRPRFJxMUFqNStmbXcyV3hJ
ClRFeUV3V0JBZm40K1hDNFh6cHc1QTR2RkFxZlRpVFp0MnFCYnQyNjRkT2tTZnZycEo5aHNOdHh3
d3cySWlZbkJ5Wk1uY2Zic1dYZzgKSGpScDBnUm1zeGxHb3hGbXN4bHBhV25vMEtFRFdyZHVqZmo0
ZURScTFFaDBQdnhuTFlSWkhFRldiMGRDQ0Jkb3hzTWIvejBpRE1NdwpETU13RE1NRVI5RW1kSmZM
QmF2VkNvL0hJeTZCRXQ3OGV5K1RFcFlvQ2VoME9wU1hsMlBUcGswd21VeW9yS3lFMVdwRmJHd3My
clJwCmc0U0VCTmhzTnJSbzBRSnQyclJCWEZ3Y3lzcktrSnViaTl6Y1hCdzllaFFaR1Jrd204M1E2
WFE0ZHV3WUNnb0tVRlpXSnA1NmRmSGkKUlRSdDJoUmR1M1pGMjdadG9kVnFjZVRJRWZ6NDQ0OW8x
S2dSakVZam1qWnRpdGpZV0pqTlpqUnQyaFJObWpRUjgyR3oyVkJaV1ltWQptQmg0UEI1VVZGUWdN
akpTM09nTytKNmdKVGdxd2g0UzcvMGpmQW9Xd3pBTXd6QU13MGlqYUErSTl3WjA3K050aGFWTXd0
NktRUHRDCkxsKytqSXFLQ25nOEhqZ2NEbFJWVllrekVpNlhDMjNidGtWQlFRRXVYcnlJK1BoNHBL
ZW5vMVdyVm1qUm9nVXFLaXB3L3Z4NTVPZm4KNCtMRml5Z3NMQlQzZzNnOEhqSHRzckl5NU9YbElU
bzZHaDZQQnhjdVhFQmhZU0U4SGc5TUpoTjBPcDNvL01USHg2Tmp4NDRZTkdnUQpCZzRjQ0xQWmpO
allXTkc1YXRTb2tlaElPQndPY2NiSDM5SHczcEF2NkVoWTRzVXdETU13RE1Nd1RHQVVmd2NFOFAw
UW9mYzNNUHozClRSZ01CbkhHb0tDZ1FJeEwrTEs1TUdOU1ZsYUc0OGVQSXpJeUVnYURRYndYSFIy
TmpJd01OR3ZXVEp3VjhYZzhzTnZ0NGt3TDhJc1QKVkZ4Y2pHUEhqdUhhdFd2UTZYUW9LU2tSWjBt
TVJpTWlJaUlRRVJFQnZWNlBTNWN1aWJNcldWbFplUERCQjVHWm1RbTczUzdLV0Y1ZQpEcFBKVk9N
TDc0SU9oTFNGL1NQQ2pCQTdJQXpETUF6RE1Bd2pqYUlsV043Ly9MOE83blE2eGYwaDNpZEpDZC9r
S0Nnb0VPOEp5NTZFClpWMU9wOVBuUytxQ0UxTmFXb3FmZnZvSnAwNmRRcGN1WFZCWldTbk9WSlNY
bDR0T1NFUkVCQUNncXFvS1JVVkZLQzR1RnI4MW90VnEKWVRhYjRmRjR4STMwVVZGUk1Kdk5LQ2dv
UUc1dUxpb3JLOUc1YzJka1ptYUtNa1pIUjhQdGRpTW1Ka2I4d0tFMy9wdnVoUmtad1RsagpHSVpo
R0laaEdDWTRxajVFNlArVmMvOXZaWGc3SUc2M0cxYXJGV2ZPbklIVmFvWFQ2WVRSYVBUNXpvZkQ0
WUROWmtONWVibjRBVUxCCnFSQitLeTh2RjAreEVtWk9oSmtISVIxaHRrWFlhQTVVejFBSU15QU9o
d1BsNWVVb0tpcENYRnljdUllanFxb0t1Ym01c05sczBPbDAKNHBJcjRUamdrcElTVVI3Z2w2Vlcv
ck5DUXQ0Rlo0UmhHSVpoR0laaG1NQW9XalBrZnpwVW9POWdBUEE1SGN0bXM2R2twQVJuejU2Rgp5
K1VTblJOaHNDOE0yRzAyRzZLam94RVZGUVczMncyTHhTSit5VHcyTmhiRnhjVStzZ2l6S0lJRDQv
RjRSQWNGcVA0d29qQ2I0ZjNoClFzSEJzTmxzQUtxUEY3WllMQ2dwS1FFQXBLYW1vckt5RW5hN0ha
V1ZsZUt4dzhLc2pPQlkrVyswTnhnTW9wUEdNeUFNd3pBTXd6QU0KSTQyaUw2RUgrd1lHOEl0ejRy
MVIyK1B4d0dxMW9xaW9DQmN1WElCR28wRmtaQ1FpSXlOaHNWamdkcnVoMCtsZ01wblF1SEZqY1la
RgpxOVVpTmpZV1RxY1RkcnNkNWVYbGlJdUxFL2VHYURRYWNjbVcwK2tVdjV3dUhBY3NPQUJHbzFG
YzZtVzMyOFdaRW1IMkJLaDJIS0tqCm8zSDE2bFVjTzNZTUtTa3BNSmxNNHRJeEFHalNwQW5LeTh2
RlpXZUNBK0tkWHlFZHdVRmhHSVpoR0laaEdDWTRpaHdRL3krQUMzZ3YKeWZKMlFJU0JmMFZGQlM1
ZHVnU24wNG5ZMkZqRXhzYUtTNllpSXlOaE5wdkZXUkM3M1E2YnpTYk9XbWcwR2hpTlJsUlVWUGdz
ZWJMYgo3VDU3VWJ5UHhCV1dRR20xV2pnY0RyamRidkU0WGExV0M1UEpCSVBCSUtZREFObloyVmkr
ZkRuT25UdUhMbDI2b0VPSERraElTRUJ4CmNURXFLeXQ5anRvVjBnSUNuL2pGTUF6RE1BekRNSXcw
aWh3UVlZK0Q5eHQvNFZvNDZ0WnF0WXBMbHZMeThoQVhGNGZTMGxJWURBYkUKeGNYQmJyY2pQejhm
RVJFUk1CZ01zRnF0S0M0dTlwbk5BSDQ1ZGN2dGRzUGxjc0ZnTUlnblZFVkdSb3I3UU9MaTR0Q2lS
UXYwNzk4ZgpjWEZ4aUlpSVFGNWVIdjd6bi8vZ3hJa1Q0dEl0blU0SHA5TXBMc095Mld3d0dvMklp
WWtSTjZhZlBYc1dmLy83MzlHaVJRczgrK3l6CjZOeTVNMkpqWTFGWldla3pxeUhvUVhCb2hPVlgv
c2Z5TWd6RE1BekRNQXdUR01YSDhIclBRbmkvOWRkcXRhaW9xQkNQb05WcXRVaEkKU0lEVmFzWFBQ
LzhNaThVQ2c4SGdjd0pXVlZVVnFxcXFSR2ZBKzNzYWdPODNQb0JmbkNDcjFRb0FhTk9tRGU2OTkx
N2NmZmZkU0V4TQpSSFIwTlBSNlBjckt5bkR1M0RrY09IQUFtemR2Um5aMk5yUmFyWmlHeFdJQkVT
RXFLZ29landlbHBhWGlLVjRhalFZWExsekFGMTk4CmdaU1VGSmpOWmtSRlJmazRGZDU1OXY0MkNu
K0lrR0VZaG1FWWhtR1VJZXVBQ0cvOC9ZL2hGWllsYWJWYVZGWldJaTR1RGs2blV6d0cKOS9UcDAv
anV1Ky9FYjRKNHo2SUlwMU9aVENaeGI0ZHdOSy9kYmhmVE5CcU40akt0Um8wYW9WZXZYaGcwYUJD
NmR1MktwS1FrOGRzYgp3dDZOcEtRa3BLV2xvVk9uVG1qVHBnMDZkZXFFVFpzMndXS3hBQURpNCtO
UldWbUovUHg4UkVaR29ubno1aWd2THhmVHJLaW93RGZmCmZJTng0OGFoY2VQRzRtWjNBYmxOK0F6
RE1BekRNQXpEU0NQcmdBaXpFTjVMakx6ZjlIdlBCQWduV2wyNmRBazdkdXhBVGs0T29xT2oKNFhR
NlJhZENRUGlPaDkxdUY1MFVZYkFmRVJHQnBLUWtOR3JVQ04yN2QwZUhEaDNRdFd0WE5HblNSTnlQ
WWpLWllEYWJ4WThUQ21sRQpSVVdoVWFOR0dESmtDTHAyN1lxT0hUdGk4K2JOMkx0M0wreDJPMkpq
WXdGVW41WlZXbHFLcUtnb3VGd3VjYjlIWGw0ZXJseTVnclMwCk5GRTIveStnQy9uMWQwRFlFV0VZ
aG1FWWhtRVlhVlI5dXR2N2c0VENRTnpsY3NGc05vdExwcHhPSnc0ZVBJamR1M2VMam9GdzlHMWsK
WktTNDNBbW9IckNucDZjalBqNGVjWEZ4NGxLcnVMZzR0R3paRXMyYk44ZmRkOS90NC93WURBYm85
WHJZYkRhVWxwWWlNVEVSUklUSQp5RWdBRUkveTFldjFhTjY4T2FaTW1ZSnUzYnJoazA4K3daWXRX
MUJXVmdhVHlRUzMydzI3M1M3dUg3RllMREFhamJEYjdjakt5a0tuClRwMThQcElZYUNrV0FIRlR1
djhYMHhtR1lSaUdZUmlHcVltaVBTRENTVmpBTHpNaXdqNEl0OXNOdlY0UGg4TUJnOEVBaThXQ0kw
ZU8KNFBMbHkrSmVDK0VvWEtQUmlJU0VCSmpOWmlRa0pDQXhNUkZwYVdsSVNrcENTa29LWW1KaVlE
UWFFUnNiaTlUVVZEUnUzQmlscGFVdwptVXd3R28zaXhuUWh6WVNFQlBGWVgyRmp1Y0ZnUUZWVkZW
d3VGM1E2SGR4dU4zcjI3SWxHalJxaGZmdjIyTDE3Tnc0Y09BQ2J6WWFXCkxWdmkvN04zcDhHUm5l
ZGg3Ly9kcDgvU3AvZEdZd2NHc3c5bk9BdUhGR1ZxaHBSSWNUTWwwa29zeTFZcEVlMzRnK043NDNM
a2ZGQnUKYmxJdXAxeFpLcmVjVXFxU3FyZ1NPNkhrRzlteExxVTRvaWhUa1VZS0pRNFhjWm5CTEpn
TjRBQXoyQnRvOUhxNnorblQ5d1A0dm14ZwpGb3dVV1U3aTUxZUZBdERkNlBYTCsrRFppc1VpUFQw
OXRGb3RBRnF0RmovNHdROTBCa1ZsWmJwN1BlRDliRWQzaVpvRUlFSUlJWVFRClF0emVsZ0ZJZDc5
RGR3WkVYV2RabGk1L2NsMlhxYWtwSmljbjlmaGFXTTk4OVBUMHNHL2ZQclp0MjBZMm0yVjRlSmpS
MFZGTTA4UjEKWFpMSkpLN3JZbG1XN2c5UkRlT0FEajZhelNidGRodkhjWEJkVis4TjZYUTZPakJS
R1JuMVBOZlcxb2pINDN6ODR4L253SUVEL0lmLwo4Qjg0Y2VJRXBWSkpaMHNTaVFTMVdvMHdERmxZ
V09DTk45NWdiR3lNWEM2M0lmRFkzR2l1ZW1HQURTVm1RZ2doaEJCQ2lCdmRVUk82CjJtTGV2ZXRE
VFlOeUhJZHl1YXgvWGxwYVltVmxoV1F5eWV6c0xKWmxrYy9uT1h6NE1BOCsrQ0RidG0zVGUwQUto
UUs5dmIxNlU3cHEKS0kvRllvUmhTTDFleDdadFdxMldYbWFvQWc3MU43N3Y2ejROdGZzakhvOWpH
QWJOWmhQSGNVZ2tFbnBQU0M2WG8xQW9FSVloMDlQVApSS05SblRIeFBFOW5ORTZmUHEweko2cUJI
cmloLzBORzhBb2hoQkJDQ0hIbnR2eVh2Y284cUVPL21ud1ZpOFYwdVZNeW1TU2RUak0vClA0OXBt
dlQwOUZBdWwwa21rOVJxTlk0ZVBjcFRUejNGdmZmZVN5YVRJWlZLTVR3OHJMTW4zWUdIT3NpckNW
ZHFCMGdrRXFIVmF0Rm8KTlBUT0VCVXN0TnR0SFNTMTIyMXF0UnFOUmtQL2pScjNtMDZueVdhejdO
NjltNTA3ZDlMcGRNaGtNa3hQVC9PeGozMU1aMDJtcDZkNQo5OTEzR1I4ZloyRmhnWHE5cnArYjUz
bDZCNGg2RFBYOEpBZ1JRZ2doaEJEaTl1NG9BT2t1TTlxOENUMGVqK3ZTS051MjZldnJZM2g0Cm1I
UTZqV1ZaN04rL24vdnZ2NStCZ1FGaXNSajkvZjE2aEs3cTJZakZZcm9CWFpWU3FhQm44d1oybFlW
UlRlL2R6MjJ6VHFlRFpWbkEKK2daMWxWRTVjT0FBUjQ4ZVpYQndVUGR2UktOUlB2dlp6NUpPcDNY
ZmlncUtWQ0FUaHFIZUtkSnNOb25GWXJvblJYMFhRZ2doaEJCQwozTnFXQVlnNldHOCs1S3RlRUhW
QWowUWlPSTVET3AxbVlHQkE3d1BadG0wYnUzZnZ4blZkUE0vRHRtM2k4VGlkVGdmRE1IVFBoMjNi
CnVxOURaVlF5bWN5R0pZYWJnNS91a2pCZ1E2K0tDbElVd3pCMEJtZkhqaDA4OE1BREhEaHdBTi8z
MmJseko1VktoZVBIajNQczJER0cKaG9hWW5KelUyOVFkeDlIOUhmRjRuRmdzcHZ0UU5tK0ZGMElJ
SVlRUVF0emFIUWNnTjhzMGRHY0NiTnZXaC9GQ29VQThIdGVONmFwZgpKQXhEdmMxY2xWODFtODBi
dmxxdGxoN2gyNTBoVVR0QWJ0WVlEeHNiNXJ1Zlg2ZlRJWmxNWXRzMm51Y1JpVVFZR1JuaHdJRURG
QW9GCklwRUlFeE1UVkt0Vjl1L2Z6NzU5KytqdjcrZkNoUXNVaTBXOXM2UTd5RkM5SCtwNWRVOEtF
MElJSVlRUVF0emNsZ0dJeWlSMC81ZS8KZXhxV21rQVZCQUdOUm9OWUxNYmV2WHZwNitzakdvM3Fw
bkhidGttbFV0VHJkZHJ0TnE3cjBtZzBkRkRSL1ZpcS9FcHRTZDljZm5XegprYmczRzRIYnZXRmRs
V09wN2VhdTZ6SXlNc0tUVHo3SmxTdFhHQjhmNTRjLy9DRXJLeXVZcHNuSFB2WXg2dlU2RXhNVGxN
dGxQZExYCjh6emRnNkpHL1hZSFJrSUlJWVFRUW9oYnUrTzVzZDBCU0hjZ0VvbEU4RHlQU3FWQ3U5
MG1rOG13Yjk4K0NvV0MzczJoQWdxMUpMQmMKTHROb05DaVh5OVRyZFJxTkJzMW1Vd2NLaG1GZ21p
YTJiZXRlais2ZWorNVNwNXNkL0ZWQUVvMUdkV2FtVnF2UmJyZEpwVklrazBsTQoweVNkVHZQa2sw
OXk2TkFoU3FVU0w3NzRJaXNySzh6UHo5Tm9OTWpsY2t4TVREQTlQVTJyMWNKeEhIMi9sbVZ0ZUd3
VkhBa2hoQkJDCkNDRnViY3NBNUZiTjM5MVpFRFVtTjVsTTZpYnRScU9oQTRCWUxNYkt5Z3BMUzBz
QWVsS1ZiZHVVeTJYSzVUS1ZTb1ZxdGFvRGtsYXIKcFpjRGJuakNYWXNSVlduV3pZSVF0U2dSMEZ2
U1BjOGpGb3ZwNE1GeEhQcjcrL21WWC9rVkJnY0h1WHo1c2c2V1hucnBKYTVmdjg3VQoxQlJuenB4
aGNYRVJ4M0YwMzRkNi9GdGxYNFFRUWdnaGhCQTN1cU5GaExEeFAvemRJMmRWMWlLUlNKQk1KcW5Y
NjF5L2ZwM1oyVm5DCk1NUnhIRktwRkpWS2hUQU1HUjRlMXRPbCt2cjZObXdTYjdmYmVzU3RZUmg2
T2xYMzNoRkYvWHl6eVZQcXR0Rm9sRmFyUlM2WHd6QU0KM1graStsRXN5NkxaYkxKLy8zNTI3TmhC
bzlGZ2RYV1ZRcUhBdVhQbldGeGM1T2pSbzB4TVRMQnYzejRHQmdhQTlVQkdOZENyOGJ5Ygp5OEtF
RUVJSUlZUVFOOW95QUdtMVdwaW1xYk1NM1prUXd6Qm90VnFrMDJrcWxRcUdZZERiMjh2Smt5ZDFC
aU1XaXpFOVBVMnhXQ1FJCkFyTFpMSGZkZFJlQXpwS29KWUZCRUpCSUpLaFVLa1NqVVFxRkF0Rm9s
SEs1cktkc3FleUxDb3hjMTJWMWRWV1hiS20ra2xnc2h1ZDUKMU90MW5mRndYWmZaMlZrQVROT2sx
V3F4dHJiR3FWT25PSGZ1SEtacE1qczdTMDlQRDdadEEzRGh3Z1Zpc1JqSlpKTEJ3VUZjMTlYdgpS
elFhSlFnQy9iTnNRaGRDQ0NHRUVPTDJ0Z3hBVkZaQ0hiVGgvUVdBUVJEb2ticXFGK1RDaFF1ODg4
NDdMQ3dzRUlZaHM3T3pldlN1CnlocW9odkI0UEU0aWtkRDNyUnJHVmQvRzJ0b2E4WGdjMTNWeEhB
ZmY5MmswR3BpbVNTS1IwQTNsbVV4R1B5K1ZPV20xV2dSQlFLRlEKb05GbzZKSEJ4V0tScWFrcHhz
Ykd1TysrKzJnMEdreFBUMU1xbFFqRFVDOVVqTVZpTkJvTmFyVWE1OCtmcDlQcGNQRGdRZTYvLzM3
NgorL3Z4UEkrVmxSVVNpWVJrUUlRUVFnZ2hoTGhEV3dZZ0t0dWhBZ1JZTDNGU2s2Qk0wNlRaYkJL
SlJLaFdxN3o1NXB1OCt1cXJMQ3dzCmtNMW1XVnBhWXRldVhlelpzNGRjTHNmSXlBaXBWSW93RERG
TmszYTdUYlBaMUhzK0twVUttVXlHV0N5bXk3WjgzOWRONy9GNG5Fd20KZzJFWXJLNnU0bm1lWG9i
byt6N3hlRndITUdvWGlSb1ZySjdyMjIrL3pkTFNFdmZkZHg4VEV4T01qNC9UMDlORHE5VmkyN1p0
Tkp0TgordnI2dUg3OU90VnFsU0FJS0JhTHJLNnVFZ1FCMVdxVmRydU5iZHU2QjBVeUlFSUlJWVFR
UW16dFIrNEJVVTNYS2pDcFZxczZvMUVzCkZqbHo1Z3hYcjE3ViswTWFqWWJldmFFQ0FKVkJVZmZo
dXE3dUx3bUNRUDl0TXBuVVBSNnU2NUpJSlBBOGo1bVpHYzZjT2NQcDA2Y3AKbFVvY08zYU0vZnYz
azh2bGNCeUhJQWdvbFVxNk4wVUZUcDduNmVjd01USEIzTndjcnV2cTZWcXJxNnZFNDNHZWZQSko5
dXpaUTdsYwo1b3RmL0NMWHIxL1gvUjZPNDdDMnRrWXNGdE5CUy9mVUxTR0VFRUlJSWNTdGJSbUFk
Ty9wdU5taVA3V3JJd2dDWm1abXVIcjFLczFtClU0L1F2WFRwRW8xR2d6Tm56dWhTckhRNlRVOVBE
L2w4bnJHeE1RNGVQRWdrRXNHeUxEMWxTcFZ1bGN0bGxwYVdxRlFxcks2dWN2YnMKV1U2ZlBxM0xw
clp2MzY2ZjI5alltQTZHMU1RcXovTjBnN3ZuZVRpT2cyVlpldnJXOHZJeTFXcVZkRHBOYjI4dlI0
OGVaZGV1WGJ6KwordXY4OEljLzFKa2UzL2NwbFVwNmM3c3E4MnEzMnpjc1JCUkNDQ0dFRUVMYzNJ
K1VBVkVIN082RmdPcjZXcTFHcVZRaUNBSzkvVHdNClE1YVdsbGhkWFNVV2krbS9jUnlIZERxTjY3
cHMyN2FOaHg1NmlIUTZUWDkvUC9GNG5KR1JFU1ltSm5qMzNYZEpwVks4L2ZiYlhMaHcKZ2VYbFpX
Wm5aeW1YeTdveGZHcHFpcTk5N1d1Y1BuMmFEM3pnQTN6MG94L2w3cnZ2eGpSTktwVUtrVWlFZHJ0
TlBCN0hzaXd5bVF5MQpXbzNGeFVVQWxwYVdDTU9RYkRaTFBCN25yYmZlWW41K251OS8vL3RjdjM2
ZGJEWkxMcGVqVUNqZ2VSNk5SZ1BYZFlsR28xU3JWZDNnCkxpVllRZ2doaEJCQ2JPMk9la0FVZGNq
dS9rOS85dzZPVENiRDJOZ1lLeXNyek16TTRQcyt1VndPMy9mMXpnN2Y5Mm0xV2l3dkwrUDcKUG1m
UG51WFNwVXNrazBtMmJkdEdYMThmeno3N0xKN244Yld2ZlkzbDVXVm1abVpvdFZvNmlFaW4wd1JC
UUtWU0lSNlBjLzM2ZFFBRwpCZ2E0ZHUwYWc0T0RGQW9GM2R3ZWk4V0l4K08wMjIwY3g2SFpiTEs4
dkl6bmVTd3NMSkJLcGJqLy92dXAxV3E4L2ZiYnhPTnhubmppCkNWelg1Y1NKRXhRS0JmTDVQTWxr
a2xnc3BuZVlkTzhoa1FCRUNDR0VFRUtJcmQzUkZDeGw4N1FuVmRwa21pYW1hVEkwTkVTMVd1WGEK
dFd2TXpNd1FocUhlZG00WUJ2RjRmUDFCMzJzSVZ6MGExNjVkdy9kOTV1Zm5HUmdZNE5kLy9kY1pI
UjFsWm1aR2ovZE5KcE1BVkt0VgpJcEVJdG0xam1pWkJFTkJzTnBtYm0rT0ZGMTdnTzkvNURnOCsr
Q0NmL2V4bk9YYnNHSzFXU3plNHI2NnUwbXcyOVdTdHRiVTEvZHozCjdObkR4TVNFYnA3L3hDYytR
UkFFUkNJUnJsKy9UcVBSd0xJc2VudDdLWmZMK240MkwyVVVRZ2doaEJCQzNOb2Q3UUdKUkNMRVl1
czMKRFlKQVQ3QlNlem5VbENuRE1OaTdkeThMQ3d1Y09uVUt5N0lJZ2tDUDNBMkNnSHE5cmplbTEr
dDFFb21FdmwyNzNlYjQ4ZU40bmtlNwozZVpUbi9vVVgvN3lsMWxiVzlPN1BkcnROdGxzbGxLcHhJ
NGRPN2pycnJ0d0hJZkp5VW5HeDhkeEhJZlhYbnNOeDNIWXMyY1B5V1NTCk1Bd0pnb0IwT3EzSEFj
L056UkdKUlBCOW4xMjdkckcwdE1UMDlEUURBd1AwOVBUbzBiLzMzMzgvdnUvVDE5ZkhCejd3QVNx
Vml0NWIKSW9HSEVFSUlJWVFRUDVvdEF4QVZlS2hTSzFWdXBhaUpWcW8wUzJVcjR2RTQ1WElaV0c5
azl6d1B5N0lvRkFyNjBENHdNTURzN0N5cApWQXJIY1FqRGtGcXR4dlQwTlAzOS9UeisrT00wR2cz
T25Udkg2NisvVHJWYXhUQU1naURBY1J6ZWZmZGRnaURnc2NjZTQvSEhINmZUCjZYRDY5R2ttSnlj
WkdocGlZbUtDZSsrOVZ3Yy9uVTVIOTQ4WWhvSGpPSXlNak5Cc05ubnJyYmRZWEZ5azNXNVRMQlpw
TkJya2Nqa08KSHo3TTJOZ1lqdU9RU0NUMEFrWjFuNlpwYnRpOExvUVFRZ2doaExpMUxRTVFGVmlv
eG5NMU9sZGxEMXF0RnRGb1ZKZHEyYlpOTHBjagptODF5N2RvMUhNY2hIby9qZWQ2R01iaU5SZ1Bm
OTBtbjAvaStUN1ZhSlpWS2NlREFBUTRmUGt3dWwyTnVibzVISDMyVVVxbEV1OTBtCms4bVF5V1NZ
bnA3R3RtMFNpUVRMeTh0ODhZdGZKSmZMa1U2bjJiZHZINTduc2JhMnhqZSs4UTEyNzk2dFIvT3Fr
cW5kdTNlemI5OCsKK3ZyNk9IRGdBSys5OWhvdnYvd3lnTjdxcmhyWGE3VWF3OFBEQUhvZkNVQWlr
ZEJiMXlVQUVVSUlJWVFRNHM1c0dZQUFHeVpldGR0dAp2VGNEMWcvbHFvUXFFb25ndWk3NWZKN2g0
V0V1WGJxa1M2dGlzUmkrNytQN1BzbGtrbFFxUlJBRWxNdGxUTlBVRGVwcXc3azYwQThOCkRmSFlZ
NDlScTlYNDFyZStCY0RRMEJEOS9mMWN1WEtGblR0MzhzRVBmcENISG5vSTMvY3BGb3M0anJQKzR0
N2JacTZXR1NhVFNXemIKNXA1NzdtRmxaWVh0MjdkejVNZ1JnaURndGRkZW8xd3U2eXlINmxGSnBW
Sllsb1huZWJpdWkyRVlOSnROV3EyV2Z1MFNnQWdoaEJCQwpDSEZuN2lnQVVjM21hclN1Q2o1VUEz
WTBHc1gzZlF6REFOYW5ZZTNldlp2SnlVbFdWbFpZV1ZuUk8wQWFqUWFkVG9ka01vbnYrNlJTCktU
elB3N1p0aG9hR0dCd2NwTlBwVUtsVUNJSkFUOVo2OXRsbktSUUtYTDU4bWJtNU9ScU5CbmZmZlRj
ckt5dTgrZWFiREE0Tzh2amoKajVQTlpxbFdxOVJxTlRLWkRLN3I2aklwdFF4eGRIU1VrWkVSZHV6
WXdlam9LUGZkZHg4N2QrN2tCei80QWRGb0ZNdXljRjJYSUFoSQpKcE82RDZZNzA2T1dNcXJTdE81
cFlFSUlJWVFRUW9pYnUrTUFaUFBvWGZVVmhxRXVRMUxmWGRkbDE2NWQzSFhYWGN6TXpOQnNOZ0hJ
ClpyUFl0azJsVXFIWmJKSktwZlRoZm14c2pLZWVlb3FmK1ptZklScU5zcnE2cXJlUDc5eTVrMkt4
aUczYkZBb0ZIbmpnQVNxVkN2UHoKOHp6ODhNUHMzYnVYKys2N2owNm5RNlBSWUdCZ0FNTXc5Tmpk
V0N5R1pWbkFlb21ZMmdkU0tCU3diWnRkdTNaeCtQQmgzbm5uSFd6YgpablIwbEh3K2oyM2JlSjVI
c1Zpa3I2K1Back5KdFZvbG04MFNpOFZ1eUhoSUFDS0VFRUlJSWNUdDNkRVkzbmE3clhkcXFFTzJ5
aWlvCjBpeTFiME5sQ0hwN2U5bTJiUnVHWWJCdDJ6Ym01dVpvdFZwczI3YU5hclZLdFZxbHY3K2ZO
OTU0ZzBPSER2SGtrMC95NFE5L1dCL3kKMWRRcXRiMjh0N2VYbi8zWm4rV3JYLzBxNzd6ekR2djM3
K2Z2L0oyL1F6YWJwZDF1azBna2lNZmpHM3BVeHNiR1dGMWRwZFBwNk0zcwpBSjduNlVsZVlSaVNU
cWM1ZE9nUUJ3OGVKSkZJY09qUUlaTEpKSkZJaEVxbHdodHZ2TUhSbzBjWkhoN1cwNytxMWFvdTB4
SkNDQ0dFCkVFTGNHZU4zZnVkM2ZrZjlzbHJ6OVZjK1laSkxtRXhmUG9mdis3cmNTbEZCUjZ2Vndy
WnRQVzYzMCtub2ZwRFYxVlY2ZTN2NTZFYy8KU2hBRVhMeDRFZGQxOFgyZml4Y3Zzckt5d2hOUFBN
R0hQL3hoRGg4K3JETUxmWDE5MkxiTjZ1cXF6bURVNjNVKzlLRVBNVFkyUmhBRQpYTHQyalpNblQr
cGdSUVVmYXN1NmFwQlg1VmRxRWxlOVhtZHBhWWtMRnk1UUtCUklwVks2NUt0WUxESTJOc2F4WThm
STUvTUVRY0MzCnYvMXQvdFcvK2xlRVljalkyQmpaYkpaVUtzWGEycHIrMis3M1EvcEFoQkJDQ0NI
RVgyVTNpeW55Q1ZOZnYyVUdwRjZ2NjJ4SDl5SGIKTUF3OWRuZDFkWlY0UEk3dis3b0VxMWFyNmYw
WkFJOCsraWl4V0l3elo4NXcxMTEzOGNnamo1Qk1KamwrL0RoWHJseGhhbXFLdlh2Mwo2c1dBMDlQ
VDVISTVQTS9UZlJrek16TnMzNzZkSjU5OGtrOSs4cE1VaTBYbTUrZnA2K3ZUR1F1VkFWR043Q29Z
aWtRaXRGb3RybHk1Cnd2ejhQTi81em5jNGRPZ1F0VnBObDIzOTFtLzlGcTFXaTNhN3JaY252dlBP
Ty9UMjlnTG9hVnJYcmwwam04M1NiRGIxZTZLb1BoZ2gKaEJCQ0NDSEVqZTU0RDRpaUd0QzdTNi9V
QVZ3MXBLdkZoYTdyOHNZYmJ4Q1B4OW0zYng5SGpoeGg5KzdkRkFvRm90RW9wbWx5OGVKRgpscGVY
ZWVTUlIvUUJQeEtKa012bGRCWmpkSFNVSzFldWtFZ2tLSmZMdXJja2s4a3dQRHlNYmR0RUloRWRF
S2lkSDJFWTZpQ21XQ3h5CjhlSkZ2dnZkNy9McXE2K1NUQ1l4VFpOU3FVUXVsOVBUcmdCZFduYjE2
bFVLaFFKUFBQRUVIL3pnQjhsa01yb2t6SEVjeXVXeW5vSWwKaEJCQ0NDR0UyTnFQVlMvVXZRSGNN
QXlkRFZIQkNhd0hMaXBMTURjM3grcnFLdmw4bnFHaElXQjlvM3AvZnorN2QrL0c5MzE2ZTN0MQo0
TEMwdEFTZ0Z3Vys4ODQ3T0k2RGJkczZ3RGx3NEFCOWZYMTZNYUdhcnFXZWo1cCt0YkN3UUJBRXpN
N09jdkhpUlY1NTVSV3VYcjNLCjd0MjdxVlFxMkxaTlBwOG5sVXJwdit2cDZjRnhIQnFOQnJ0Mzcr
YWhoeDdpMEtGRHVoeXNlNlR3clJZMENpR0VFRUlJSVc2MFpRQ2kKZG42bzRLSzc0VHdXaStuZlZl
a1R2TDhkUFp2TjB1bDB1SDc5T3VWeUdkdTJNUXlEZkQ3UDJOZ1lxVlNLUC91elAyTnVibzVhclVZ
OApIbWRnWUVCbkdBekQwSm1PU3FYQ043LzVUY0l3SkFnQ3BxYW05RzZQZUR5T2JkdWswMm05azZS
V3EzSHQyalhXMXRZb2w4dDRub2Z2Cis4ek56WkZNSmhrZUh0YmIwR0c5TWIzVDZlZytsakFNY1Yy
WHUrKyttNzYrUG56ZkI5WW5lVVdqVVdxMUdwWmw2UXlRQkNCQ0NDR0UKRUVKc2Jjc0FSUFZTZEM4
SDNQeGZmNVVCNlY1VzJPbDBTQ1FTaEdISTFhdFhLUmFMUkNJUkxNdWl2NytmTUF6NTJ0ZSt4c3N2
djh3SApQL2hCQmdjSDlaNlFJQWp3ZlorbHBTVktwWklPVm9yRklyLy8rNytQNTNuMDkvZVRUcWN4
REdQRG5vOW1zOG5hMmhxcnE2dGN1blNKCnMyZlA4c29ycnhDR0lZdUxpN2l1UzM5L1A3dDI3ZUxB
Z1FNNmc2S1dEc2JqY2VyMXV0N01QakF3UURLWjFOUEFUTlBVNzBFcWxkTHYKazJSQmhCQkNDQ0dF
Mk5xV1BTQzJiUVBjTUFGTFhhWW1US25SdCtwbnRZUGo3cnZ2NWt0ZitoS2RUb2Q0UEk3ak9FeE1U
REErUHM1TApMNzNFd1lNSDZlM3RaWHA2bXRIUlVWelgxWStwU3JEVTF2Syt2ajUrOTNkL2w4bkpT
ZjdaUC90bjVISTUzVXNDNjJWZDFXcVZScU5CCkpCSmhaV1dGaXhjdmtzMW0yYlp0RzVjdlgrYmd3
WVBzMzcrZmJEYkxpUk1uK01oSFBrSWlrYURUNmVCNUh1MTJtNVdWRmNJdzFKT3cKMHVrMFlSalNh
RFFvbFVvWWhxSDdSUlQxWGdnaGhCQkNDQ0Z1YmNzeHZBdlRsemRrUGpaL0dZYWhHOVZqc1JqeGVK
d2dDUFJvM0VLaAp3SGUvKzEzT256OVBxOVZpZVhtWkgvN2l0dXZxQUFBZ0FFbEVRVlR3aDd6MTFs
djR2ays5WHVmTW1UT2NPblZLWjFIcTlUcVZTa1h2CjNHZzJtelFhRFh6ZloyeHNqSzk5N1d0TVRr
NHlORFNrbThkVmlWV3hXTlFUdU41KysyMWlzUmk3ZCs5bVlHQ0FoWVVGRGg0OHlNR0QKQjNuampU
ZjR2ZC83UFhwN2Uwa21rMVFxRmFhbXBpZ1dpNFJocU1mdCtyNlBiZHVZcHFtYjRtT3htUDY5ZXk4
S3lCUXNJWVFRUWdqeApWOXYvOEJqZXpabVA3c2xYYWxxVVdrQ29Hc0RWNWRGb2xQNytmaDUrK0dH
Ky92V3Y4OUpMTDVISlpJakZZcFRMWmRMcE5QbDhudkh4CmNRQysvZTF2WTlzMk8zZnVaR2hvaVA3
K2ZwYVdsdkE4ajJhenlXLy85bS96MmM5K2xpdFhydkRsTDMrWlM1Y3U4ZWxQZjVxUmtSRUEKWE5l
bFhDN3JDVnh6YzNQczNyMmJlRHpPek13TXp6enpETDd2RTR2RmVPdXR0MmkxV3Z6amYveVArYzNm
L0UzR3hzWW9Gb3YwOXZaeQo0TUFCWE5jbENBS3kyYXpPaktqc2pIb1AxSEpHOVQ1SkJrUUlJWVFR
UW9qYjJ6SUFVZjBSc1ZnTXk3SXdERU0zcEt0Z0l3eEQzWkRlCmJEWXhUVk1mMUNPUkNBOC8vRERQ
UC84OHZiMjlMQzB0a2MvbkFjamxjaHc1Y29SNnZjN1ZxMWN4RElPMXRUVmVmLzExNHZFNEFKWmwK
a1V3bStlUW5QMGtpa1NBV2kvRTMvc2Jmd0RSTi91aVAvb2gvL2EvL05kdTNiK2Z3NGNPOC92cnI3
TnExaThjZWV3ekhjYmp2dnZ0SQpKQkxzM0xsVDk2UjBPaDJtcDZlSnhXSWtrMG1HaG9hbzErdmtj
am4yNzkrUDR6aGtNaG5kV3hLR29TNEpVNjliZlZjTjY3S0FVQWdoCmhCQkNpRHV6WlFDaUdzeTdz
eDdxc0IyTlJqY3MvZXNlejZ0Nk0xcXRGbjE5ZmR4Nzc3MmNQSG1TZUR5T1lSajA5ZlZ4OE9CQmZi
Z0gKTUUyVFpESkpvOUdnMld5U3pXYTU5OTU3ZWVTUlIzajQ0WWRKcDlNRVFjQzk5OTVMR0laVUto
WCs2My85cjBTalVVWkhSL21GWC9nRgovc2svK1NkTVRFenc3Ly85djZlM3QxZFA1bEpqZWxWZ2Mr
REFBVVpIUnhrYUdtTG56cDJNalkyUlRxZDE4S1FtZTZuTVJ2ZVgwdjIrClNBQWloQkJDQ0NIRTF1
NW9FYUVhcTl0OUFGZUJpQXBBWXJFWW5VNUhONk9yZzN5ajBTQ1ZTbkhQUGZkdzRzUUpVcWtVN1ha
YmovTHQKNys4bm44OHpPenZMOHZJeXRtMFRoaUdtYVhMNDhHRSsrY2xQY3VUSUVVWkhSMmsybS9x
eCsvdjdlZlRSUjNub29ZZDQ3cm5uK1BNLwovM1AyNzkvUHJsMjdtSnFhNHVUSmt4dzRjSUJNSmtN
MEdpV1R5ZWpTc0ZxdHh0NjllOW0yYlJ2WmJCYkxzdlNlRWRYRG9jYnVxc2I2Cjd0ZXZnaXgxL2My
Q0V5R0VFRUlJSWNTTjdpZ0RBdHowUC94cXJHNzNBVDBXaXhHTlJyRXNTd2NodFZxTjdkdTNrMHFs
OVAyc3JLd3cKUGo3TzR1SWlZUmh5OE9CQnJsMjdScjFlcDlGb1VDZ1VlT1NSUjdqcnJydXdMSXUx
dFRYOVdLVlNpVlFxeFRQUFBNUHAwNmY1M09jKwp4K3pzTEYvLyt0ZXAxV3I4MGkvOUVqMDlQVXhO
VFhIbzBDR2kwU2k1WEU2WFUrWHplVnpYWldSa2hGZ3NodWQ1Ry9hY0JFR2dnNlRiCkJSamQvVEUz
KzEwSUlZUVFRZ2l4MFIyWFlNSEdEZWpxUUs0eUZxb2NTUVVlcWlRcmtVaFFLcFhZdm4wN0R6MzBF
RysrK1NhR1lWQ3QKVnBtZW5xWmNMcE5NSmdtQ2dOWFZWZnI2K3VqdDdRWGcyclZyRkl0RlBaR3FV
cW13dkx6TTdPd3MxNjVkWTNWMUZZRDUrWGwrNFJkKwpnV2cweWgvKzRSL1M2WFQwQ0YvMVBEelBv
MTZ2VXlnVUdCa1owY0ZRZHorTGFabzY0NlA2WG9JZzBCa2dkWG4zZTlDOS9WMHlJRUlJCklZUVFR
dHplSFFjZ1lSaHVPR0NyQUNRV2krSDd2ajZJcTlHOHNONnNYYS9YaVVRaURBd01jUERnUWQ1NTV4
MEFFb2tFc042SW5zdmwKbUptWm9kRm9zTFMwUkxsY3B0MXVzN3k4ekVzdnZZVHJ1bnJ2aGdwdTV1
Zm5tWnljWlAvKy9keDc3NzIwV2kzMjdkdUg3L3NNRHcrVAp5K1gwOWNsa2tsYXJ4ZVRrSkJjdVhH
QndjSkE5ZS9ib0puTVZlS2g5SXNBTnI3azc4T2pPZE56cWNpR0VFRUlJSWNTTjdxZ0haSE8vCkE2
QWJyOVhXYzlVYjBXNjNDWUpBLzE2djEzRmRsMGdrUXIxZXA5MXU0L3MreVdRUzB6VEo1L004K3Vp
akpCSUo0dkU0eFdLUnQ5OSsKbTNRNnpkallHUDM5L1VRaUVVWkhSeGtlSHFiZGJyTzB0TVQ1OCtk
NTY2MjM2SFE2L1BXLy90Y1pHaHJpOHVYTGhHSEl3c0lDTXpNegpXSlpGR0lZRVFjRDgvRHp2dnZz
dWk0dUxtS2JKeU1nSWxtVnRLTE5xdFZyQSt5TjEyKzIybnU1MXMwQ2p1L0ZlQ0NHRUVFSUlzYlV0
CkF4QVZhTnhzR3BUYWhRSHZseDkxaisxVmplYlpiSmFscFNXbXA2Y0JhTGZidWxUcjh1WEwxR28x
UE0valU1LzZGRTgvL1RSUFAvMDAKUTBOREJFR2dSKythcHNuRml4Y1pIeDhubTgzeXNZOTlqSi85
MlovVlN3dXIxU29URXhPc3JLenczZTkrRjh1eWVPS0pKN0J0bStYbApaY2JIeDFsWVdNQ3lMTFp2
MzA0Nm5kYkJrWHBPYXErSGFab2JHdXE3c3lEZDVXYmQ3NGtRUWdnaGhCQmlhMXNHSUdySGh5cDky
andKClM1VmhxVVowMk5oUG9ZS05UQ1pEYjI4dnJWWUwxM1dwMSt1TWpvNWlXUllURXhQRTQzRysr
TVV2Y3VMRUNYYnMyS0Z2WnhnR3c4UEQKZk85NzM4TzJiWjU5OWxrKzlLRVBzYmk0U0x2ZHBsZ3NN
ak16UTI5dkx5ZE9uQ0NielZJb0ZKaWRuYVhWYXVIN1B0UFQwN1RiYldabQpaaGdiRzlQVHVRekQw
RDBvaVVRQ3ovTm9OQnJFNDNFNm5RNUJFT2l5ck0zQlJ2ZlN4YzNiMElVUVFnZ2hoQkEzdDJVQTBw
MEZVUC81Cjd6NXdkNWRvZFpkaXFhOW1zMG05WHFlbnA0ZTV1VG42Ky90WldGaWczVzV6L2ZwMXl1
VXlRME5EVkNvVmxwYVdhRGFiWEw1OG1YSzUKVEsxV1kyaG9pR0t4eU9IRGgvbU4zL2dOOXUzYng5
cmFHczFtazJhenllVGtKTmV1WGVPZGQ5N2g2dFdyTkp0TmZOOG5uODh6UFQyTgo1M2w0bnNmcDA2
ZTVldlVxUjQ4ZVpYQndFTk0wbVptWjBjM29qVVlEMy9mSjVYSkVvMUZXVmxhSXgrTjZqNGg2UGFv
djVHYWxWMUtLCkpZUVFRZ2doeE8xdEdZRGM3TC83Tjh1Q2JLWU82L2w4bnBXVkZhNWZ2ODdVMUJS
QkVHQlpGcDduMGVsMDZPL3ZaM3A2bWxhcnhkMTMKMzAycFZHSmxaWVdQZk9RakRBOFBzMjNiTm16
YjV2RGh3K3pmdjUvcDZXbFNxUlNsVW9uWFhudU5FeWRPMEdxMVdGNWVwdEZva0U2bgpzVzJiNGVG
aFptWm1PSHYyTE9WeW1WZGVlWVdkTzNkeThPQkJYVHFXU3FVb0ZvdFlsa1U4SHFkU3FlZzlKYTFX
aTFRcXBmdENOZ2NkCjB2c2hoQkJDQ0NIRWoyN0xBTVEwelJ2NlBtNzJmZk50QUYzR1pGa1dmL3pI
Zjh6czdDelZhcFh0MjdmVGFyVjBRM291bHlPUlNQRFUKVTA4eE1qTEN5eSsvek1qSUNMLzJhNy9H
NE9BZ3RWcE5CekJYcmx6aDFLbFQvUGYvL3QrSngrT2NQMzllYnpkWFc5WlZacVpjTHZPOQo3MzFQ
UDhhRER6N0lybDI3aU1WaU5KdE44dms4SjArZXhQTThqaDQ5aW1tYXJLMnRZWm9tanVNQTNOQUhj
anRTZ2lXRUVFSUlJY1R0CmJSbUFxUEczeXViQW8zdFBTUGZsZ0o2Q1pkczJGeTVjd0RSTlhOZWx0
N2RYWng4cWxRcjFlcDNISG51TXUrNjZpMnExeXVIRGg0bkgKNDd6OTl0c1VpMFVtSmlaNDlkVlg5
ZDZSOGZGeHpwMDd4Nk9QUGtvcWxkS1BvVXF6VE5QazBxVkx6TS9QczdpNFNEYWI1ZWQrN3VjNApm
dnk0em5aWWxrVzFXbVYxZFpYejU4K1R5K1hvNysrbjFXcnBoWVdlNStuWGZiTXQ4TjNCbGpTakN5
R0VFRUlJc2JVNzNnTnlzejRQCllNT0N2bTZxQkVzMWRQZjE5UkdHSWRsc2xtYXp5ZWpvS0dFWWN1
M2FOVVpHUmxoZFhlWFAvL3pQNmUvdnA5UHBjTzNhTmU2NjZ5NSsKOElNZlVDd1dXVmxab2RGbzRM
b3VlL2Z1M2RENFhxdlZkTENqQW9zMzMzeFRqOXdOZ29DaG9TRkdSMGYxamhMZjk0bEVJaFFLQlo1
Nwo3am1TeVNRZi8vakhHUmtab2RGb0VJWWh6V1lUeTdJMkJCcHdZNmJqVnB2U2hSQkNDQ0dFRUJ2
ZDBSNlFNQXoxRjdBaDQ2RiszN3lvClVGMFdCQUcxV28xNzdybUhQL3V6UDJOdGJZMXl1UXpBMnRv
YXZiMjlySzJ0TVQ4L3ovRHdNS2RQbjJaMWRaVjJ1ODJWSzFmd1BJOXEKdGNyWTJCZzlQVDNVYWpW
bVoyYzVlL1lzbnVmaCs3N3UwNGpGWWlRU0NjcmxNcXVycXl3dkx6TTRPRWcrbjlkYjJWT3BGTFZh
alNBSQppTWZqREE4UGMvMzZkYjd4alc4UUJBSFBQUE1NK1h3ZXd6QjA4TkdkK2VodXNOLzhtb1VR
UWdnaGhCQzNkMGNaa00yN01EYi9mcXNBCnBOMXVFNFlobG1YeDBFTVBjZmp3WVU2ZE9rVzczV1p5
Y2xJdkxNeG1zMHhOVFZFcWxZaEVJaXd2TDVQTDVZakZZc3pPenVLNjdvWXAKV1lWQ2dXS3hTQ2FU
d2ZkOTB1azBqVWFEU0NTQzcvc3NMQ3lReldhSngrTzBXaTJPSFR2RzJOaVlEaXFpMFNqeGVKeDZ2
VTRpa2NCeApIQzVjdUtCSEF4ODdkb3gwT28zak9OVHI5WnMybnF2WDI1MFpFVUlJSVlRUVF0emVs
cWRudFFsY1pVQlUzNGZhRFdKWmx0NkpvWllQCnFzYnRSQ0pCSXBFQUlKMU84NnUvK3FzODhNQUR0
Rm90RW9rRXRtMlR5K1dvVkNvMG0wMldsNWVablozVlMvNVUvMFlrRXVINjllc3MKTGk1U0twVzRj
dVdLRGk3VXRuT0FScVBCNHVJaXlXU1NkcnROTkJwbDM3NTk3TnUzVHplNnI2eXM2UDBnc0o2RlVV
SEo5UFEwZi9BSApmOER6enovUCtQZzRsVXFGUnFPaEZ5dDJCMk1xMkZKQlZuZUdTQWdoaEJCQ0NI
RnpkelNHMXpBTUhYeHNialJ2TnB0Nit6bThYM29GCjYxdlJQYzhqQ0FJTXcrRG8wYU40bnNmMTY5
ZVptSmpRdlNPR1llQTRqdTduOEgxZkx3cnM3aS9aL0IyZzFXcnB6SVJsV1RpT1E3dmQKeGpSTmVu
cDZ5T1Z5REF3TTZMSXEwelF4RElOMnU0M25lYXl0cmVGNUhvN2pZQmdHTXpNei9LZi85SjhZSHgv
bjhjY2Y1OEVISDlUOQpJRUVRNkFiMWVEeXVkNkJzZmsrRUVFSUlJWVFRTjdkbEFLSU8zWnNEak81
ZUNPQ0dCWVhxWjFYbXBNYnhQdmJZWThSaU1WNTg4VVhPCm56L1AxTlFVZ0E1YXdqQ2szVzVUcVZS
MEppUUlBb0lnMEVzQkZYVmRLcFhTNVZjcVk1SEpaTmkxYXhmRHc4TU1EQXlRVENaMWtLTHUKMXpB
TUZoY1hkVStLNjdxMFdpM201K2YxQksyelo4K3ljK2RPRGgwNnhQYnQyOG5sY25RNkhhclZLclZh
aldReXFZTzA3dkc5UWdnaApoQkJDaUJ0dEdZQ29ZT05tZlIrcTFFb2R2cnYzZjBTalVWMnlaRmtX
eldhVFJxUEI0T0Fnenp6ekRMdDM3K2ExMTE3algvN0xmMG1sClVzSHpQRnF0Rm83ajREZ090VnBO
Mzc4cWM3clZJa0MxT0xEVDZSQ1B4L1VlRUpWMUdSd2N4TElzbllscE5wdEVJaEZNMDJScWFrbzMK
MmxlclZSekhJWmZMMFdnMGVPV1ZWM2pycmJjWUhoNW16NTQ5N04yN2x6MTc5ckJueng1R1IwY3BG
QXE2N0V3OUR5R0VFRUlJSWNTdAozZEVVTEVVRklXcTZsZG9vcnZwQnVzZnpxaEc1cXRuYnNpeHl1
UnlsVW9sME9rMHVsMk53Y0ZBdkQwd2tFcXl1cnRKb05MQnRHOS8zCmRlOUZOQnJWV1F0RjlWekVZ
akhxOVRxdzNtZVNTcVdvVnF2WXRrMWZYeC9IangrbnQ3ZFhCMHltYVZLcjFUQk5rekFNdVhqeEl1
bDAKbW1ReXljTENBcTFXU3orZWVtM1hyMTluY25LU2IzN3ptL1QzOTNQUFBmZHcvLzMzczJQSERv
YUdoc2puOHhRS0JiMFFVUWdoaEJCQwpDSEZ6ZDVRQmdSc1g4WFgvM2gwZ3FPeUgrZ0owSUpGSUpI
U21ZM3g4bkM5OTZVdXNyYTB4TWpMQ3NXUEhlUGZkZC9WbWNuaC9CUEROCk1qRHF1d3B3VE5Na2tV
aFFMQllKZ29BalI0N3d5Ny84eXd3TkRXMG9Hek1NQTl1MnNTeUwyZGxaNXVmbmFUUWFPSTVETEJi
RDkzMXEKdFJxMmJaTktwYkJ0RzhkeDlINlIyZGxaaXNVaXI3NzZLbzdqY096WU1YYnYzczJSSTBm
WXVYTW5lL2Z1L1FsL1JFSUlJWVFRUXZ6dgo0NDU2UU9EOTdkL2RRWVc2WEUzQlVzM28zVTNablU2
SFZDcUY3L3U2a1h0K2ZwN3ZmT2M3dlBqaWl5U1RTZkw1UE1lUEh5ZVpUUEx5Cnl5L3JqTW5tdlNQ
cThWU2ZpQ3E5c20yYmREcXR0NWdmUDM2Y3ozem1Neno0NElONjZwVnQyL3IrWE5jbERFUE9uajFM
cFZLaFdxM3EKK3pKTlUyZDBBRXFsRW83allKcm1oc2J6UnFOQnZWN25qLzdvaitqdjcyZHNiSXlC
Z1FIKzVFLys1Q2Y0OFFnaGhCQkNDUEcvbHkzSAo4S3Fnb3pzQWlVYWp4R0l4M1dlaHZqYmZ6akFN
WE5mRk5FMTgzeWNXaTFFdWwvbm1ONy9KdDc3MUxlTHhPSTdqa01sazJMWnRteTZWCkFuUkEwNTF0
Nlg1OGRWbWxVcUhUNmVnRzlMdnZ2cHZQZmU1elBQMzAwMXk5ZWxXL0J0VWNybnBGeXVVeWI3enhC
dlY2SGR1MmRkbVgKNTNrNlU5SnV0M1gyUTJWNHV2dFIxQ2IxSUFpNGZQa3kzLy8rOS84Q1B5b2ho
QkJDQ0NIKzE3ZGxBTks5MzBOTm80TDN0NEtyN0lDNgpuV1ZaV0phbG05SlYrWk5sV1p3L2Y1NlhY
bnFKbDE1NmliVzFOVXpUcE5sc2N2RGdRV0t4R0R0MzdtVDM3dDA2ZUlsR296b2pvUnJkClZhOEpv
TWZ1OXZUMDRIa2VPM2Z1NU8vLy9iL1BrMDgrU2ExVzAwc0cxVGpmbnA0ZTR2RTRudWZoZVo0T0dO
VGVFTnUyZGFtWWFwNjMKYlZzL25tbWEyTFpOTkJyZHNPWGQ5MzJkQ1JKQ0NDR0VFRUxjMnBZbFdM
WnQwK2wwYUxWYXROdHRIWUNvcklmcnVnUkJvTXVZVkVBUwpqVVpwdFZvVWkwV21wcVk0Zi80OEZ5
OWU1Tnk1YzF5NWNvVkdvNkhIM3NiamNTekxZbUJnZ1AzNzkzUGh3Z1ZLcFJKOWZYMHNMaTZTCnkr
VW9sOHUwMjIyeTJhenUxVWlsVWl3dUxqSTNOOGVIUC94aGZ1TTNmb05ISG5tRVNxVkNFQVRrODNr
cWxRckpaQkxQOC9COW4zYTcKVFQ2ZjU0VVhYbUI1ZVpscXRhb0RLTlZFcnNiN05wdE5QWWxMZmFu
Slhxb0ozcklzblEyU3JlaENDQ0dFRUVMYzNwWUJpTm9vcmpJYwpxcUZjWlNKVVVLSjJiTmkyVGJQ
WlpHbHBpWVdGQlU2ZE9zV0ZDeGM0Zi80OHk4dkwxT3QxUFFaWEhlQWR4eUVJQXZyNit2akVKejVC
CnM5bmtoUmRlWUhGeGtYUTZ6ZXJxS283ajZJQkNqZXRkVzF2ajA1LytOSlpsOGRmKzJsL2ptV2Vl
d2ZkOUtwVUttVXhHYjBvSGlNZmoKTkJvTkVva0VhMnRyZk90YjM2TFJhT2kra081cFg5ME42OTA3
VUxyTHpsUVBTbmQvaWhCQ0NDR0VFT0wyN3FnSlhaVkJxYUJCbFNDcAo4aXFWUFRBTWcycTF5dVRr
SkcrOTlSYVhMbDNpekprekxDOHZVeTZYZGJBUmk4WDBZc0ZZTEthYnUyT3hHUGZjY3c4OVBUMzA5
dlp5CjRzUUpMbHk0b0RNWXhXS1JWQ3BGcDlQaDdydnY1bS8vN2IvTjhlUEhNUXlENGVGaGZOOW5m
bjZlZkQ1UElwRmdjWEdSbnA0ZVNxVVMKUFQwOXVtL2orZWVmNTh5Wk05aTJyUU1yRlV5cHdDTWVq
MlBiTnExV0M5LzNkZmFrdTlTcWV4OEtJSnZRaFJCQ0NDR0UyTUlkN1FIcAo3bTNvSG9Xck1oaEJF
RkFxbFZoYVd1TEtsU3VjT25XSzA2ZFBjKzNhTmNJd3BObHM2cEt0N2pJdVZVcGxHQWE1WEk1WUxF
YTFXdVcrCisrNWo1ODZkUFByb283eisrdXVjT0hHQ2MrZk9FUVFCbVV5R3YvazMveWJQUHZzc1I0
NGNBZFlieTV2TkpnRDVmSjVvTkVxdFZzTjEKWFgzL0traDQ5ZFZYK2ZLWHYweXBWTnF3eGJ3N29P
cGVaS2hlcndxWU5wZGpkYjh2RW9BSUlZUVFRZ2h4ZTFzR0lOMk41S3I4eW5FYwpuUVdwVkNwY3Yz
NmRpWWtKenA0OXk0VUxGNWllbnRZOUcrcGdyaVpKQlVHQTcvdDZrcGJxTVRGTmsyUXlxWHN5ZHV6
WVFhRlE0TWtuCm4rU1hmdW1YZU82NTU1aWNuT1FYZi9FWGVmcnBwekVNZzFLcFJEUWFKWlZLNmVl
YVNDUm90VnBVS2hWU3FSVDFlcDFzTnN2cTZpcTIKYlhQeTVFbXVYcjJxQXd3MWFVdE4xMUs5SGQy
TEVGV3cwVjF1cFRJbkttdlN2WmxkQ0NHRUVFSUljWE5iQmlEZGgydlZDOUp1dDZuWAo2OVRyZFU2
ZE9zWEZpeGQ1KysyM21aeWMxSHMzRE1QQXNpd2FqY2FHOGJuZEIvbDJ1MDFQVHcrNVhBNVlQOVQz
OWZYcDRDSU1ReHpICjRjaVJJL3pUZi9wUFdWcGFBaUNielJLTlJ2WGtLc2R4Y0J5SFJxT2hTOGFT
eWFRT2JBQmRPbFlvRk1qbGN0UnFOUjBnZFkvMlZUMGgKaXJwT05kYkQreFBBMU4rcUlFUXlJRUlJ
SVlRUVF0emVsZ0ZJZDhtUm1vWlZMcGVabloxbFlXR0JWMTU1aFN0WHJuRGx5aFc5UURDUgpTT2hN
UWo2ZnA5bHMwbXExYUxWYUd3NzdBSTdqTURZMlJpS1IwRTNpc1ZnTXovUElack82NGR3d0RES1pq
TjRsWXBvbStYd2VnSHE5CnJvTU5OU3BZWlZ4VUFLSytIenQyakQvOTB6OWxaV1ZGQnpncWs2RytW
QW1XQ2pqVVNHQlZQdFpkcnFXeVFhckVTd2doaEJCQ0NIRnIKV3dZZzhIN2ZoK2Q1ek03T2N1Yk1H
ZDUrKzIybXBxYVltcHJTaDNiWGRXbTMyOVJxTmFMUnFHN2lCdWpyNjJOdWJvNWtNa2tRQkhwcgp1
VHJzcXlXQVo4NmM0ZC85dTMvSHVYUG5hRFFhMkxiTm5qMTdHQjRlWm1WbGhZbUpDWnJOSmdjT0hP
RElrU1BzMzcrZjN0NWV0bS9mCnp2RHdzRzRtVjMwbmxtWHh4aHR2MEdnME9IcjBLQys4OElJZXNa
dlA1M1VtSkpGSTBHdzJ5V2F6MUdvMUxNdWkyV3pxc2l5MUgwVHQKL2xEWkY5VURvd0kwSVlRUVFn
Z2h4SzNkVVJPNjUza3NMaTV5NmRJbHhzZkhPWGZ1SE5ldlg2ZFNxZWhNQjdCaE9wYktFSFJuRFF6
RApvRmFyRVlsRU1FMlQxZFZWMXRiV09ILytQS09qb3l3dExmRVAvc0UvNE5TcFUrVHplUllXRmtn
a0VreFBUd1BvTGVTUlNJVFoyVm0rCjk3M3ZzYkt5d3NEQUFJT0RnK3pkdTVkang0NXgvLzMzczJQ
SERucDZlbmp4eFJkNTdybm5HQjhmWjJob1NEZW9wMUlwRmhZVzlBNFEKMjdiMWMyKzMyL2krVDdQ
WkpKVks2UjZRN25JczFhQ3VTdE5VcjhqdHFES3RJQWgwZHVWSERWcGsyYUVRUWdnaGhQaGYyWllC
eU1MQwpBck96czV3OWU1WjMzbm1IQ3hjdXNMUzBSQkFFK2xDdXFNTjA5L1FvMVdTdUR2TnJhMnQ2
cTNrMm0rV3puLzBzaHc4ZnB0MXVNejQrCnpwdHZ2cWtYRzhiamNUMyt0bnNFYmlRU29WS3AwRzYz
Y1YyWFNxWEN0V3ZYZVAzMTEva3YvK1cvRUkvSGRZbVc3L3ZNemMzaHVpNEwKQ3d1TWpJeXd2THlz
RzlmVm5oTmd3d1oyRlloNG5xZDNpYWhBU3UxRGFiZmJ1c2RscXlsWVlSalNhclg0eWxlK1FyRlkx
SmtoNWZPZgovenovNGwvOGl5MC9zTTkvL3F5NngvZStPb0Q1M21WTjFwZmJxeUFsQUF4NmUwMSs1
bWQ2K2NRbkR2SHNzNytvWDQ4UVFnZ2hoQkEvCmJWc0dJSys4OGdwVFUxT01qNDl6OWVwVkdvMkdE
aUJVcHFQNzRLMGFzOVYzMHpUMTFDdFZFcVg2TVo1KyttbisxdC82V3d3T0RySzAKdE1UbHk1Zko1
WEk2UzJIYk52VjZIZGQxOWVQNXZnK3NMeGFNeCtONG5xZExvWHpmMTZOODQvRTR5V1NTY3JuTXlN
Z0lsbVV4TnplbgpwMlM1cm92ak9McGgzalJOVE5QVXUwcFVLWmU2SHRhREZaVXRpVVFpdEZvdHZT
TmxxOHhFczlua0QvL3dEOW0zYngrUFAvNjRIaGVzCmZQN3puK2Z2L2IyL3QrVUg5cUdQekRFOG1J
TU9oTys5OS9vemlIUWdqQkNKUmxnUFRLQVRkbWg2QVF0ek5aNS8vb2Y4dzMvNCsvenoKZi81L1Np
WkZDQ0dFRUVMOHBkZ3lBUG4ydDcvTjh2SXlDd3NMMUdxMURRM1p2dTlqV1pZK0JIZFBobEtYMVdv
MTNVaGVxVlQwSVQ4UwppZkRMdi96TDlQYjI0bmtldVZ3T3ovTjBvM3N1bDZOVUttR2FKczFtazJx
MVNpUVN3WEVjWE5mRnRtMTlnRmRCUUtWU3dYRWNYWkkxCk1qTEN6TXdNMFdpVVVxbUU2N3AwT2gz
ZDcrRzZyajZJcTh5S0dnMnNOcjAzbTAzOVdDb0FjVjFYQjFlV1pla2xpcmZLZ0FSQndGZSsKOGhY
MjdkdkhQZmZjb3pNN3NIRjU0ZWFzeU0xTWxBSmFyci8xSjd0SkpPZHc5K0g5L0wvL1g0emYrWjMv
aDMvMGozNEwyN1ovNVBzUgpRZ2doaEJEaWY4U1dBY2lwVTZmMEVzRmtNb252KzdvVVNSM0tWYkNo
TG92RjF1ODJETU1OZXphcTFTcUpSSUoydTgzSXlBZ0hEaHpBCnNpeHMyK2JLbFN1ODhjWWJ1a2Np
Q0FMOWVPcCsxUGZ1cFlCcUwwbW4wMkZsWllWSUpLTDdQeFlXRmpoNThxVE9nUFQwOU9pSlhKVksK
aFdReXFmdFdWSm1YZWcybWFlb1J2Mm84cjNvZjFHdUxSQ0xFNDNIOW1yc3pHa29ZaHF5dXJsS3Ix
UmdjSE1TeXJGdU83VlZCeWUxTQpGaHVrczBsUVNZNzN2cXNmdi9YOGYrVHhuLzhWM3U4c1diOUJH
SUdna0dRaVRCR2VzUG5OM3l6VDA5TnowK2NzaEJCQ0NDSEVYNVF0CkE1RHU4aWw0ZnkrSU9veXJE
ZVRxdXU2bGZlMTJlMFBEdGlxamFyZmIzSHZ2dlRyYmNmcjBhZjdnRC82QTczM3Zld3dNREdDYUpz
VmkKa1d3MnE2ZFp4ZU54dmZIYzkzMmRWV2sybTlUcmRWMkcxV3ExV0YxZHBkbHNjdTdjT1Z6WHBW
d3U2MEFtbFVycERlamQvU1hkK3p5NgptYVpKcTlYU2plUHFPYXZYbWtna051eEp1Um0xbGQyMjdk
dU82NzJUVWI3RldzaWFkL1BHOWZGWHY4MHIzMzZCZUg2RVF3ODhxajRWCk9rRFlnV3RCR3diVG5I
NXgvVDNwNmVuWjh2R0VFRUlJSVlUNFNkb3lBQ2tVQ25xSFIzZUdRMjBMNzk0ZzNyMnNFTmIvKzk5
c05uVmcKa0VnazlGYjBoeDU2U0djdC9zMi8rVGY4NS8vOG4wbWxVcnFmd25FY3l1VXlqdVBvSUVH
Vk9uVTZIWUlnb0Z3dWs4dmxXRnhjSkpQSgpFSS9IV1ZoWTROU3BVMlN6V1ZaV1ZzaGtNamlPUTA5
UEQ0bEVRdmVLQUhycnVwcmtwWUlQbFpsUVFZWjZmRlYrcHY3ZU5FMUtwWkxPCkN0MXFvbFdyMWRK
bFhMZWJlblduRTdGYXdZMlhsWmJtZU9GTFgyRHl6R3Q0WG9QK3NRTmtld2YxOWUxd1BRdGlaMHlX
TWhrYWpjWWQKUFpZUVFnZ2hoQkEvU1ZzR0lHclVyam9jcSs5cTlLN0tkcWdNaHlxaFVyZXpMSXRx
dFlyak9OUnFOZUx4T0tsVWludnZ2UmZUTkZsZQpYdWJreVpPazAybWRBYWhVS3FUVGFWS3BGSzdy
Nmg0UXRXeXcxV3JoKzc0ZTY1dE9wNEgxaFlTcVpLclQ2VEE0T0VoUFR3K1RrNU1NCkRnNFNCQUd4
V0V6dklsbGJXMk4xZFZVL2htRVlPdE1SQkFIWmJKWktwYkloOEZHUHJTWmdyYTJ0VWEvWDlSYjJ6
VlJwbXBvRzFsMTYKdFRuZ3VKTUFwTloyYUlVMzlwcThlL2tNazJkZUEyRHl6R3U4ZS9rTUIzcUc5
UFZCMktFZFJvbTVGZ3k1dHcyWWhCQkNDQ0dFK0l1eQpaUUNpZWk4VVZXYWtzZ2ErNzIvSUhHenVh
ekFNUS9kdXFNeko0T0Nnem5aY3VYSUZ6L1AwdnBIbDVXVjgzeWVYeStsbGdKN24wV2cwCjlHSkEx
M1YxTDRuNjIzUTZ6ZGpZR0tPam8vVDI5dXBBcEZhcnNYUG5UaTVjdUVCdmI2OWVIRmd1bC9XMHJI
Zzh2bUZ2aWVkNStuc3kKbWR6d1dxdlZLbXRyYTNyaVZpd1cwNEdINHpnM2ZRL0RNTVEwVGQxam9q
SkVtOStycmZhSUFEUXhxTFZ1dk4zWTBTZjUzUmVXTjF4VwoyOURUYnRCcUIyU3RCcVR0RForcEVF
SUlJWVFRUHkxM0ZJQW9tM3NjVk1uVjVqRzhtNytyL2dySGNmQThqNzE3OTVKT3B3bkRrTm5aCldj
cmxzdTZyaU1maldKWkZvOUZnY1hHUi92NStHbzJHbms0VmhpR3U2OUxiMjBzeW1TU2Z6L1BBQXcv
dzFGTlBjZVRJRVIxZ3FJbFMKalVhRGlZa0ovdTdmL2J2WXRrMmxVcUhSYU5CcXRmVHpVZzN0bTEr
Yk9xUjNPaDFpc1JpV1pXMjRQSmxNa2txbGREWkJOZC9mVERRYQpwZFZxVWEvWGJ4bG9WS3ZWclQ0
T1huNjNSVGI3bysveGFIY2lWS29kTE52RVRMdnJsNzFYVmlhRUVFSUlJY1JQeTVZQnlPWkFZdlBp
ClFWVjJkYlAvNXF1ZUI1VUJzU3dMei9QWXQyOGZwbW5TYURUNHdROStRS3ZWMGxtTFNxWEMydG9h
bG1YcDdFTWtFdUhBZ1FQODNNLzkKSEE4ODhBQWpJeU42a1dBMm05V1AwV3cyYVRhYkc1NVBOcHVs
WEM3cjRFWTFvNnZ4dnQyTENJRU5FNjBjeDlIOUhiWnRrMHdtY1YyWApaREtKYVpwa01oa013OER6
UERXeXZ2a0FBQ0FBU1VSQlZEelB1MjFXUVUzclVwTzdiallGNjNZQmpGTElwckNkclc5M1V4R0gx
SnBECk1pSGpkNFVRUWdnaHhGK09PejdKcXY2RjdvT3ptaVRWSFppb2NpejF1NXFLcGNieE9vN0Ry
bDI3ZERPM2FsSmZYbDdHZFYxZDFoU04KUnNsa010VHJkWjU4OGtrKzg1blBjUHo0Y1RLWmpINU83
WFo3dzBqZTdyRzVRUkRvM3BIdmYvLzdlbHFWYVpxazAya1NpUVRWYWxYdgorVkNUdFZUVHVYcnVx
c1JLWlVyVWVGNzFHR29mQ25EYmJJS2FCcVplMzAwL2pEc0lRSksyeVdCUG5OYW1XT2ZpeVJmNDQv
L3JhZjM3CnAvLzUxOW43b1krLzl6b2dES0ZkOGttbEhESVpFK2hJOWtNSUlZUVFRdnpVM1ZFR1JB
VWUzZnNyMUdXcUdieDc4aFc4ZnhqdkhpMGIKQkFINWZKNnhzVEc5YStQWGZ1M1h5R2F6UFAvODg2
eXVydExYMTBjK245Zk4zc1BEdzN6bU01L2g1My8rNTJtMzI4elB6K3RHY3JVRQpVQVZFUVJCUXFW
UjBvT0E0RHJadHM3UzB4TURBQUd0cmEvcjVxWklxUUg5WDJSWjFmNDdqYk5qY3JpWjhHWWFoQXcv
MVB0aTJUVHdlCnYrMzdxTElyYWl6eERSL0duUVFnbVJqSkpBU2JBcEE5Uis1aCt6MFA4dTQ3MzJm
N1BRK3k1OGc5cEpQdlBUYlFEQ0RaTkxGTWs2UmoKRVkzKzZNc01oUkJDQ0NHRStCKzE1WWxYTlk2
clhoQVZnSFFmMU5YaFdsMnZMbFBsU2FacDZuNkxRcUZBb1ZDZzArbGdXUllQUC93dwpPM2JzSUps
TThwV3ZmSVZHbzBFWWhqaU93N1p0MjNqNjZhZjU0QWMvU0tmVFlXNXVqblE2VFRxZHB0VnE2ZjBh
dFZvTnovT3diWnRzCk5xdkhBdGZyZFU2ZlBzM3M3S3crOU9keU9TcVZDc1Zpa1hxOXJyZXlkeThn
VksvUmRWM0NNTlFMQzlXa0x4V3crTDdQeXNxS2ZzMjMKQ2lCVWhzZ3dEUDFlL0xnQnlHQWUzQ1Jz
SHJqbGJoL200Ly9ILzgxM3Z2Z0ZQdnJzNXhqY1B2eitsUjJJK0pDTWcrbm1TTWF1RW92WgpkOVQw
TG9RUVFnZ2h4RS9TbGlmZXBhV2x2L0Fuc1dmUEhyN3doUy93aFM5ODRiYTNHeGtaMFQ5YmxuVkRC
cU5iTkJvbG1VeHk3Tmd4CnZ2NzFyLzlrbi9DUFFBVm5yVlpyUXhrVzNEaDI5MDVLb3ZJOUlZNEp3
VTArdWZ1ZWVJcnkwbFh1ZStLcERaZDNRdWgwd0xRZzlHdTQKdGV2WTl2NGYvMFVKSVlRUVFnanhZ
L294dTVuRmo4STBUVDM5cXJ0YzdjY0pRRnczeExXaGZZc1ZIay8vNnE5ditMMERSS0lRTTZIYQpo
cldGR2JZNUszcDNpaEJDQ0NHRUVEOU5Fb0Q4RkxpdXkrenNMSlZLaFhnOGZzdFNLOVZyY2p2Wkho
OHpDVnZmY3FPV0NRdG5yMkZlCit5cWYrdmpESkJLSkc4WXFDeUdFRUVJSThSZE5BcEMvWU5Gb2xF
S2h3TzdkdS9ucVY3L0s0Y09IT1hMa0NQMzkvVGZjOWs0eUlBblYKQThLZGYzaHo4L09jZXZtSFhI
L3pIQjgvTU1DUi9UdHdYZmRIZXlGQ0NDR0VFRUw4QkVnQThsTmdHQVlIRHg0RTRQVHAwM3pqRzkr
ZwpWQ3JoZWQ2RzIzMzYwNS9lOHI1S3BSSS9Ta2VMNHpoa3MxbDI3TmpCWngvNkFQZmNjdy85L2Yy
Uy9SQkNDQ0dFRUg4cEpBRDVLZW50CjdlVkRIL29RaHc0ZG9sNnYwMnExTm15Wi81TS8rUk4rKzdk
L2U4djdVUnZlNzVUYUlLKzJ0cnV1SzhHSEVFSUlJWVQ0U3lNQnlFOUoKTkJyRmRWMGN4OUdYYlc1
QzM3ZHYzNWIzcy9sdjd1UnhiL2F6RUVJSUlZUVFmeGsyQkNDbUVjV0lydStHS05VRFprdE5UcDA2
cFpmNgpHWWFoRnhLR1lhZ1g4S205RnQxN1FkVDQyVEFNTVF5RE1BeHBOcHRFbzFFY3h5RU1ReHFO
QnExV1MvKzkyaXpldlJEUTkzMWlzUmlkClRvZFdxMFc3M2RZN1BkUnppY2ZqR0lhaHIxY2pldFgr
aldnMGVzTWlSYlhiUkMxU1ZDTnkxWDJyTDVWeDZMNHZ0ZE1EMlBCZWREb2QKdG0vZi9tTjlFRHNP
SCtQZFl2UEgvUnlGRUVJSUlZVDRuOEpzcVVtcHZsN3BZMFFqbU1iR2Y0SnZDRURzV0lTa0V5TmhH
M2grbS9sUwprMm83am9HQkVVYUpSaU9FWVljd2pBRHJCM0M3YzdNa1NvZElCQ0lSRlVoMGFMZER3
bkI5QjBhc0hhSFZhbE90dHJCdHUydDVZVXh2CkdGZEJpR0c0ZEpycWVodGk3MlVCT3V0QmdkLzJx
VGJRMThkaU1WckU2RFE3NzkwSEdFYUVTQ1FLR1BxeDFnTVNnMDdISXRLT0VBa2oKTjFrUTJDRU0x
MTluZDVBVmphNi9wdlVnS0VxbkU5SDNHeTdXZjZ3UGF0ZVI0MHorbUg4cmhCQkNDQ0hFL3l4SzlR
RFBiNU93RFpKTwpERHUyY2ZsMXBOTlYwMU5ydHBsZmF6SzVXR2QrclVtdDJhWmFyVzdJYm15MmVY
SlQ5eVowbGFYby9yMzdkcEZJWkVNR1FkMisrMitBCkRSbVJ6WStoZnUvZTBMN1p6VGFQZHo5Tzkz
MXRmaDNkMTIvTzhOenN0clp0MytSZEVrSUlJWVFRNHErT2hHMHdrTEhaMmVjeWtMRkoKMk8vSERK
c3lJRkY2a2liZ2tuRk5xbDdBMWVrVlhYYlVmZWhXdjhkaUc0TUFlSC83ZHpRYXhUUk5mTjlmdjMv
YkpoS0owR3cyQ1lMZwp2ZXlFUmJ2ZEpnZ0NXcTNXRFlHRUNrcldNeXJyajZNQ0VsVUt0UjdBckQr
dk1HenJzaS9Mc21pMVdzUmkwZmYrL3YzN0RNT1FNT3gwCkJVa2JBNDd1b0dqOUM2TFJ5QTN2eGVa
QUpaMlc4YlpDQ0NHRUVPS3ZMaU82WGxYVmt6VHBTWnJZc2R1VVlNV01DRWs3aG1sRVNkb0cKemFC
RGJURjRyemNDdWpNYWhzRjdBVUNvLzE1ZEY0MUdpTVhXZ3dQUHE5TXoxSU50MjZ5c3JEQTNOMGZU
ODRqSDR5UVNDVHpQSTU5SwpZUmd4UEcrOUo4TTBUVHFkRG8xR2cwZ2tnbVZaN3dVYTZ6MGNobUhv
Wlg2cWIwUUZJNTFPRk45dll4Z2RiQnZDTUxhaFp3UlVJR0xRCmJxOC83ekRzZEQzMzZIdVhSZDRM
VU9nS1BpSVlSbFRmWHpRYTNUREpLaEtKME5zckFZZ1FRZ2doaFBpcnl6U2l1clhEamtXSkdSc3IK
alc1bzRJZ1pFV0tHb2RNazgyNklhUnFZWnJRcmN4QUNBZEZvbEZqc3h2SWt3NGhpbXVzTjNXWWhT
enh1Y2ViTU9NODk5eHovN2IvOQpOenFkRG4xOWZWaVd4Zjc5KzltL2Z6OTc5dXdobVV5U01FMFM4
ZmVDRnpQNlhwTjRCOU0wc1N4TE40dkRlc0RqK3gyYXpZQk9KOEIxCkxSS0pCQUNlNTlGc05uRmRW
d2NNN2ZjaUR0V1VIZ1Nxa1owTldaVm9ORXE3M2FiZDNwak5VVTNxaG1Ib3kxcXQ3aXhKaEtFK0NV
Q0UKRUVJSUlZUzRsUzNIOFBxK1R6UWF4YklzUFkzcXh2S2tqUTNjM2IwY21VeUdQLzNUUCtYZi90
dC95NXR2dmtraWtXQm9hSWhHbzhIQwp3Z0pYcjE3bDBxVkxIRGh3Z0lHQkFTekx3bkVjZW50NzZl
dnJ3L004bHBlWDZYUTZEQXdNa0Vna0tKVktySzZ1RW9ZaDZYUmFaeUZjCjE2VzN0NWRDb1lCcG1n
RHZCVWt4L1YxZDFtNjNkVkRTM1VQU1BUVkxaVnU2TDk4ODhXdnoxQ3doaEJCQ0NDSEVyVzBaZ0hp
ZVJ5UVMKMGVOMjFlRWMwQWQ0ZFhrM0Zhak16YzF4OHVSSnpwOC9UeWFUSVovUHM3aTRpT2Q1OVBU
MFlKb21pNHVMQkVIQWxTdi9QM3QzR2h6WgplUjcyL3QvTDJYcnZSbVBmWnNGc21IMG95dFNRbEVn
UEtab1NhY1ZYdHVXS0k4citrcVJ1WEk3OUphbFVYQ21tWEZtcWJpVjFVeFZYClNwWFl1Wko4b3l5
K2l1S1lJazJGR2lxME9OdzVNNWdGc3dFYzdGc0RqVjdQNlhPNiszNFl2UzhiNE14Z2xNaE9KWGwr
VlNnQWpVYWYKN3A3NThENTR0bHRVS2hWODMyZHNiSXlUSjA4eU56Zkg1Y3VYY1YyWC9mdjNrMHdt
dVg3OU90UFQwN1JhTGZyNituQWNCOU0wY1J5SApnWUVCeHNmSDJidDNMNWxNaGx3dXA0T1A3Wm1h
TzVtY3JYMGwyNE9Kem9EamZnM3VkM3NQaEJCQ0NDR0VFRnR0bVlKMU4vL2x2L3dYCm5aV3dMR3ZM
dmd4Vmx1VDd2dDdQb1E3aHFnRjlZMk9ENTU5L25rYWpRYlZhSlp2TlloZ0dQVDA5WkxOWlhOZGxa
R1NFc2JFeDB1azAKbTV1YlRFMU5NVFUxUmFGUTBIczFHbzBHR3hzYnJLNnVzcm01U1JBRVArNHhj
UmtjSE9URWlSTWNPSENBY0RoTW9WQWdGQXFSeStVdwpUWlBCd1VGU3FSU080ekE0T0VoZlh4K0dZ
ZEJxdFhCZGwxS3BSREtacE5WcVVTNlhkZG1XeXF4MEJoY3FLNkxLd1ZRMlNQMHNuOC8vCmVmMWJD
U0dFRUVJSThUKzlIVE1nbldWSEtsTUFkM29tUHU2VmFPcmJnQzBaZy9uNWVjcmxNcTFXaTBhalFh
MVcweG1KSUFqWXQyOGYKcTZ1cnpNN09rc2xrR0IwZFpjK2VQWXlNakZBdWw3bDkrellyS3l2TXpz
Nnl0cmFtSjJxMVdpMTk3YzNOVFphWGwwa2tFclJhTFdabQpabGhiVzZQVmF1a0ZpdFZxbFhxOVRp
YVQ0ZkRodzV3NWM0YlBmZTV6T0k1REtwV2kxV3BoR0FhNVhFNEhGR3BKWW1mWkdYdzhRcml6CmNi
Mnp4RXNJSVlRUVFnaHhkdzhVZ0hTT25GV0gvczQ5SDl2N0pnekQwQm1EMWRWVi9WaHFzN2p2Ky9p
K3orYm1KbGV1WENFV2kyRVkKaHY1WklwRmcxNjVkREEwTjZheUkycVN1TnBmRHgwSFErdm82bHk1
ZFltbHBpVWdrd3NiR2hzNlNtS2FKWlZsWTFwMGxoWE56YzB4TgpUVEV4TWNHNWMrZjQxVi85VlE0
ZVBJam5lZm81bGtvbGJOdSs2L2hodlhEd3h3R1F5b2gwVHVZU1FnZ2hoQkJDM04yT0oyWVZWS2dQ
CmxlV0FPNGQxMy9kMWYwam5KS2xRS0VRUUJLeXVydXFmcWZLdE94T29QaDY1MjlsdjBXNjNLUmFM
WEw1OG1SczNibkQ4K0hHcTFhck8KVkpSS0pSMkVxS1YvdFZxTlFxSEErdm82anVQb3dNRnhIRnF0
bG02a2o4ZmpPSTdENnVvcVUxTlRWS3RWamg0OXlzR0RCL1Z6VENRUwpOSnROa3NrazlYcDl5NWhk
OVpvN1g2UEt5S2pnVEFnaGhCQkNDSEZ2RHhTQXFORzdxdlFJUGo2SWR6WnZkd1lneldhVGVyM09y
VnUzCnFOZnIrTDZQYVpxNm9WMlZaS2tlakNBSWlFYWpPcWhRdDVWS0pUM0ZTbVZPVk9aQlhVZGxX
MVNqT2R6SlVLZ01TS1BSb0ZRcVVTZ1UKU0tmVFB4NFZIS0ZXcXpFMU5ZWHJ1a1FpRVYxeWxVZ2tk
UDlLNTJiejdaT3cxUHVqWHJzS1JvUVFRZ2doaEJCMzkwQTFROXVuUTIyZgpDclY5SzNnb0ZNSjFY
VFkyTnBpZW5pWUlBaDJjcU1PK09yQzdybnRuLzBjOFRyUFpwRktwMEdnMHNDeUxWQ3JGK3ZyNmx1
ZWlzaWdxCmdHbTFXanBBZ1R1TENWVTJRd1VxcWc5RUJUeHdaN3h3cFZKaFkyTURnUDcrZnFyVktw
N25VYTFXOWRoaGxaWHAzTHplT2UxS0xVMVUKMXhOQ0NDR0VFRUxjMjQ0QlNPZlN2ZTA3TU9EajRL
U3pVYnZWYWxHdjF5a1VDc3pNekJBS2hZakZZc1JpTVNxVmlwNllaZHMyUFQwOQpPc01TRG9kSnBW
TDR2by9uZVpSS0pkTHB0TzROQ1lWQ3VtVEw5MzJDSU5EWDcyeUdWNXZUMiswMm51ZnBUSW5LbnND
ZHdDR1JTTEM0CnVNaWxTNWZvN2UzRnRtMWRPZ2JRMTlkSHFWVFNaV2NxQU9sOHZlbzZLa0FSUWdn
aGhCQkMzTnNEQlNBcUNOa2VmSFNXWkhVR0lPcmcKWHk2WG1adWJ3L2Q5VXFrVXFWUktsMHpGWWpF
Y3g5RlpFTS96Y0YxWFp5MUNvUkNtYVZJdWw3ZVVQSG1ldDZVWFJaVlRHWWFoUzZEdQpiQ2h2MEd3
Mk1VMVRCMCsyYldNWWhyNE93TnR2djgzWHYvNTFQdnJvSTQ0ZlA4NzQrRGpaYkpiMTlYV3ExZXFX
VWJ2cVduRDNpVjlDCkNDR0VFRUtJKzN1Z0FFVDFPSFQreFY5OXIwYmQxdXQxWGJLMHZMeE1PcDJt
V0N4aUdBYnBkQnJQODFoWldkRzdST3IxT3V2cjYxdXkKR2ZEeDFLMW1zMGtRQkJpR29TZFV4V0l4
M1FlU1RxY1pHUm5oOGNjZko1MU9ZMWtXeTh2TFhMeDRrY25KU1YyNnBmYVVxRElzMTNVeApUWk5r
TXFrYjA2ZW5wL205My9zOVJrWkcrSjNmK1IyT0hqMUtLcFdpV3ExdXlXcW85MEVGTktyOGF2dFlY
aUdFRUVJSUljVGRQZkFZCjNzNHNST2RmL2NQaE1PVnlXWStnRFlmRFpMTlo2dlU2MTY1ZG8xS3BZ
QmpHbGdsWXRWcU5XcTJtZzRIT2ZScXdkY2NIZkJ3RTFldDEKQU1iR3h2aUZYL2dGdnZqRkw5TFYx
VVVpa1NBYWpiSzV1Y2xISDMzRWUrKzl4OHN2djh6YmI3OU5PQnpXMTZoVUtyVGJiZUx4T0sxVwpp
Mkt4cUtkNGhVSWhabVptK001M3ZrTnZieStPNHhDUHg3Y0VGWjJ2dVhNM1N1ZCtFQ0dFRUVJSUlj
Uzk3UmlBcUwvNGJ4L0RxOHFTCnd1RXcxV3FWZERxTjcvdDZETzdObXpkNTg4MDM5VTZReml5S21r
NWwyN2J1N1ZDamVUM1AwOWMwVFZPWGFlVnlPUjUrK0dIT25EbkQKaVJNbnlPZnpldmVHNnQzSTUv
TU1EQXh3NU1nUnhzYkdPSExrQ04vNzN2ZW9WQ29BWkRJWnF0VXFLeXNyeEdJeGhvZUhLWlZLK3By
bApjcG1YWG5xSnIzemxLL1QwOU9obWQyV25KbndoaEJCQ0NDSEUvZTBZZ0tnc1JHZUpVZWRmK2pz
ekFXcWkxZHpjSEsrOTlocFhyMTRsCmtVamcrNzRPS2hTMXg4UHpQQjJrcU1PK1pWbms4M2x5dVJ5
blRwMWlmSHljRXlkTzBOZlhwL3RSYk52R2NSeTluRkJkSXg2UGs4dmwKZVBycHB6bHg0Z1NIRHgv
bTVaZGY1bzAzM3NEelBGS3BGSEJuV2xheFdDUWVqeE1FZ2U3M1dGNWVabUZoZ1lHQkFmM2N0bTlB
VjY5Mwpld0FpZ1lnUVFnZ2hoQkQzOXhPdDd1NWNTS2dPNGtFUTREaU9McG55ZlovMzMzK2YxMTkv
WFFjR2F2UnRMQmJUNVU1dzU4QStPanBLCkpwTWhuVTdyVXF0ME9zM3UzYnNaSGg3bWkxLzg0cGJn
eHpBTW90RW9ydXRTTEJicDZ1cWkzVzRUaThVQTlDamZhRFRLOFBBd3YvN3IKdjg3Smt5ZjU5cmUv
elN1dnZNTG01aWEyYmROc052RThUL2VQVkNvVlROUEU4enpPblR2SGtTTkh0aXhKdkZzcEZxQ2Iw
cmR2VEJkQwpDQ0dFRUVKODBnUDFnS2hKV1BCeFJrVDFRVFNiVGFMUktJMUdBOE13cUZRcW5EOS9u
dm41ZWQxcm9VYmhtcVpKTnB2RmNSeXkyU3hkClhWME1EQXlReitmcDdlMGxtVXhpbWlhcFZJcisv
bjU2ZW5vb0Zvdll0bzFwbXJveFhWMHptODNxc2I2cXNkd3dER3ExR2tFUUVJbEUKYURhYmZPcFRu
eUtYeTNIbzBDRmVmLzExM252dlBWelhaZmZ1M1JRS0JicTZ1bWcwR2dBMEdnMSs5S01mNlF5S3lz
cDA5bnJBeDltTwp6aEkxQ1VDRUVFSUlJWVM0dngwRGtNNStoODRNaVBxWmFacTYvQ2tXaXpFOVBj
M1UxSlFlWHd0M01oOWRYVjBjT0hDQWtaRVJNcGtNCmc0T0REQThQWXhnR3NWaU1SQ0pCTEJiRE5F
M2RINklheGdFZGZIaWVSN1BaeExadFlyR1kzaHZTYnJkMVlLSXlNdXA1Ym01dTRqZ08KWC96aUZ4
a2ZIK2RmLyt0L3pkbXpaeWtXaXpwYkVvL0hxVmFydEZvdGxwZVhlZmZkZHhrZEhTV2J6VzRKUExZ
M21xdGVHR0JMaVprUQpRZ2doaEJEaWt4Nm9DVjF0TWUvYzlhR21RZG0yVGFsVTBsK3ZycTZ5dnI1
T0lwRmdZV0VCMHpUSjVYSWNPM2FNeHg1N2pKR1JFYjBICkpKL1AwOTNkclRlbHE0YnlhRFJLcTlX
aVZxdGhXUmFOUmtNdk0xUUJoL29kMy9kMW40YmEvZUU0RHBGSUJNL3pzRzJiZUR5dTk0UmsKczFu
eStUeXRWb3VabVJuQzRiRE9tTGl1cXpNYUZ5OWUxSmtUMVVBUGZLTC9RMGJ3Q2lHRUVFSUk4ZUIy
L0pPOXlqeW9RNythZkJXTgpSblc1VXlLUklKVktzYlMwaEdFWWRIVjFVU3FWU0NRU1ZLdFZUcDQ4
eWJQUFBzdXBVNmRJcDlNa2swa0dCd2QxOXFRejhGQUhlVFhoClN1MEFDWVZDTkJvTjZ2VzYzaG1p
Z29WbXM2bURwR2F6U2JWYXBWNnY2OTlSNDM1VHFSU1pUSWF4c1RIMjdObER1OTBtblU0ek16UEQK
Rjc3d0JaMDFtWm1aNGFPUFBtSmlZb0xsNVdWcXRacCticTdyNmgwZzZocnErVWtRSW9RUVFnZ2h4
UDA5VUFEU1dXYTBmUk82NHppNgpOTXF5TEhwNmVoZ2NIQ1NWU21HYUpvY09IZUxoaHgrbXI2K1Bh
RFJLYjIrdkhxR3JlamFpMGFodVFGZWxWQ3JvMmI2QlhXVmhWTk43CjUzUGJydDF1WTVvbWNHZUR1
c3FvakkrUGMvTGtTZnI3KzNYL1JqZ2M1cXRmL1NxcFZFcjNyYWlnU0FVeXJWWkw3eFR4UEk5b05L
cDcKVXRSbklZUVFRZ2doeEwzdEdJQ29nL1gyUTc3cUJWRUg5RkFvaEczYnBGSXArdnI2OUQ2UWta
RVJ4c2JHaU1WaXVLNkxaVms0amtPNwozU1lTaWVpZUQ4dXlkRitIeXFpazAra3RTd3kzQnorZEpX
SEFsbDRWRmFRb2tVaEVaM0IyNzk3Tkk0ODh3dmo0T0w3dnMyZlBIc3JsCk1vOCsraWluVDU5bVlH
Q0FxYWtwdlUzZHRtM2QzK0U0RHRGb1ZQZWhiTjhLTDRRUVFnZ2hoTGkzQnc1QTdwWnA2TXdFV0ph
bEQrUDUKZkI3SGNYUmp1dW9YYWJWYWVwdTVLci95UE84VEg0MUdRNC93N2N5UXFCMGdkMnVNaDYw
Tjg1M1ByOTF1azBna3NDd0wxM1VKaFVJTQpEUTB4UGo1T1BwOG5GQW94T1RsSnBWTGgwS0ZESERo
d2dON2VYcTVkdTBhaFVOQTdTenFERE5YN29aNVg1NlF3SVlRUVFnZ2h4TjN0CkdJQ29URUxuWC9r
N3AyR3BDVlJCRUZDdjE0bEdvK3pmdjUrZW5oN0M0YkJ1R3Jjc2kyUXlTYTFXbzlsc0VvdkZxTmZy
T3Fqb3ZKWXEKdjFKYjByZVhYOTF0Sk83ZFJ1QjJibGhYNVZocXUza3NGbU5vYUlobm5ubUdXN2R1
TVRFeHdYdnZ2Y2Y2K2pxR1lmQ0ZMM3lCV3EzRwo1T1FrcFZKSmovUjFYVmYzb0toUnY1MkJrUkJD
Q0NHRUVPTGVIbmh1YkdjQTBobUloRUloWE5lbFhDN1RiRFpKcDlNY09IQ0FmRDZ2CmQzT29nRUl0
Q1N5VlN0VHJkVXFsRXJWYWpYcTlqdWQ1T2xDSVJDSVlob0ZsV2JyWG83UG5vN1BVNlc0SGZ4V1Fo
TU5oblptcFZxczAKbTAyU3lTU0pSQUxETUVpbFVqenp6RE1jUFhxVVlySEl5eSsvelByNk9rdExT
OVRyZGJMWkxKT1RrOHpNek5Cb05MQnRXeit1YVpwYgpycTJDSXlHRUVFSUlJY1M5N1JpQTNLdjV1
ek1Mb3Nia0poSUozYVJkcjlkMUFCQ05SbGxmWDJkMWRSVkFUNnF5TEl0U3FVU3BWS0pjCkxsT3BW
SFJBMG1nMDlITEFMVSs0WXpHaUtzMjZXeENpRmlVQ2VrdTY2N3BFbzFFZFBOaTJUVzl2TDcvMmE3
OUdmMzgvTjIvZTFNSFMKcTYrK3l2ejhQTlBUMDF5NmRJbVZsUlZzMjlaOUgrcjY5OHErQ0NHRUVF
SUlJVDdwZ1JZUnd0YS84SGVPbkZWWmkzZzhUaUtSb0ZhcgpNVDgvejhMQ0FxMVdDOXUyU1NhVGxN
dGxXcTBXZzRPRGVycFVUMC9QbGszaXpXWlRqN2lOUkNKNk9sWG4zaEZGZlgyM3lWUHF2dUZ3Cm1F
YWpRVGFiSlJLSjZQNFQxWTlpbWlhZTUzSG8wQ0YyNzk1TnZWNW5ZMk9EZkQ3UGxTdFhXRmxaNGVU
SmsweE9Ubkxnd0FINit2cUEKTzRHTWFxQlg0M20zbDRVSklZUVFRZ2doUG1uSEFLVFJhR0FZaHM0
eWRHWkNJcEVJalVhRFZDcEZ1VndtRW9uUTNkM051WFBuZEFZagpHbzB5TXpORG9WQWdDQUl5bVF3
SER4NEUwRmtTdFNRd0NBTGk4VGpsY3Bsd09FdytueWNjRGxNcWxmU1VMWlY5VVlGUkxCWmpZMk5E
CmwyeXB2cEpvTklycnV0UnFOWjN4aU1WaUxDd3NBR0FZQm8xR2c4M05UUzVjdU1DVksxY3dESU9G
aFFXNnVycXdMQXVBYTlldUVZMUcKU1NRUzlQZjNFNHZGOVBzUkRvY0pna0IvTFp2UWhSQkNDQ0dF
dUw4ZEF4Q1ZsVkFIYmZoNEFXQVFCSHFrcnVvRnVYYnRHdWZQbjJkNQplWmxXcThYQ3dvSWV2YXV5
QnFvaDNIRWM0dkc0Zm16Vk1LNzZOalkzTjNFY2gxZ3NobTNiK0w1UHZWN0hNQXppOGJodUtFK24w
L3A1CnFjeEpvOUVnQ0FMeStUejFlbDJQREM0VUNreFBUek02T3NwRER6MUV2VjVuWm1hR1lyRklx
OVhTQ3hXajBTajFlcDFxdGNyVnExZHAKdDlzY09YS0VoeDkrbU43ZVhselhaWDE5blhnOExoa1FJ
WVFRUWdnaEh0Q09BWWpLZHFnQUFlNlVPS2xKVUlaaDRIa2VvVkNJU3FYQworKysvejF0dnZjWHk4
aktaVEliVjFWWDI3dDNMdm4zN3lHYXpEQTBOa1V3bWFiVmFHSVpCczluRTh6eTk1Nk5jTHBOT3A0
bEdvN3BzCnkvZDkzZlR1T0E3cGRKcElKTUxHeGdhdTYrcGxpTDd2NHppT0RtRFVMaEkxS2xnOTF3
OC8vSkRWMVZVZWV1Z2hKaWNubVppWW9LdXIKaTBhandjaklDSjduMGRQVHcvejhQSlZLaFNBSUtC
UUtiR3hzRUFRQmxVcUZack9KWlZtNkIwVXlJRUlJSVlRUVF1enNKKzRCVVUzWApLakNwVkNvNm8x
RW9GTGgwNlJLM2I5L1crMFBxOWJyZXZhRUNBSlZCVVk4Umk4VjBmMGtRQlBwM0U0bUU3dkdJeFdM
RTQzRmMxMlYyCmRwWkxseTV4OGVKRmlzVWlwMCtmNXRDaFEyU3pXV3piSmdnQ2lzV2k3azFSZ1pQ
cnV2bzVURTVPc3JpNFNDd1cwOU8xTmpZMmNCeUgKWjU1NWhuMzc5bEVxbGZqbU43L0ovUHk4N3Zl
d2Jadk56VTJpMGFnT1dqcW5iZ2toaEJCQ0NDSHViY2NBcEhOUHg5MFcvYWxkSFVFUQpNRHM3eSsz
YnQvRThUNC9RdlhIakJ2VjZuVXVYTHVsU3JGUXFSVmRYRjdsY2p0SFJVWTRjT1VJb0ZNSTBUVDFs
U3BWdWxVb2xWbGRYCktaZkxiR3hzY1BueVpTNWV2S2pMcG5idDJxV2YyK2pvcUE2RzFNUXExM1Yx
Zzd2cnV0aTJqV21hZXZyVzJ0b2FsVXFGVkNwRmQzYzMKSjArZVpPL2V2Ynp6emp1ODk5NTdPdFBq
K3o3RllsRnZibGRsWHMxbTh4TUxFWVVRUWdnaGhCQjM5eE5sUU5RQnUzTWhvUHA1dFZxbApXQ3dT
QklIZWZ0NXF0VmhkWFdWalk0Tm9OS3AveDdadFVxa1VzVmlNa1pFUkhuLzhjVktwRkwyOXZUaU93
OURRRUpPVGszejAwVWNrCmswaysvUEJEcmwyN3h0cmFHZ3NMQzVSS0pkMFlQajA5elhlLysxMHVY
cnpJcHo3MUtYNzJaMytXdzRjUFl4Z0c1WEtaVUNoRXM5bkUKY1J4TTB5U2RUbE90VmxsWldRRmdk
WFdWVnF0RkpwUEJjUncrK09BRGxwYVcrTE0vK3pQbTUrZkpaREprczFueStUeXU2MUt2MTRuRgpZ
b1REWVNxVmltNXdseElzSVlRUVFnZ2hkdlpBUFNDS09tUjMvcVcvY3dkSE9wMW1kSFNVOWZWMVpt
ZG44WDJmYkRhTDcvdDZaNGZ2Cit6UWFEZGJXMXZCOW44dVhMM1BqeGcwU2lRUWpJeVAwOVBUd3dn
c3Y0TG91My8zdWQxbGJXMk4yZHBaR282R0RpRlFxUlJBRWxNdGwKSE1kaGZuNGVnTDYrUHVibTV1
anY3eWVmeit2bTltZzBpdU00Tkp0TmJOdkc4enpXMXRad1haZmw1V1dTeVNRUFAvd3cxV3FWRHov
OApFTWR4K1B6blAwOHNGdVBzMmJQazgzbHl1UnlKUklKb05LcDNtSFR1SVpFQVJBZ2hoQkJDaUow
OTBCUXNaZnUwSjFYYVpCZ0dobUV3Ck1EQkFwVkpoYm02TzJkbFpXcTJXM25ZZWlVUndIT2ZPUlgv
Y0VLNTZOT2JtNXZCOW42V2xKZnI2K3ZqcmYvMnZNenc4ek96c3JCN3YKbTBna0FLaFVLb1JDSVN6
THdqQU1naURBOHp3V0Z4ZDU2YVdYK01FUGZzQmpqejNHVjcvNlZVNmZQazJqMGRBTjdoc2JHM2ll
cHlkcgpiVzV1NnVlK2I5OCtKaWNuZGZQOGw3NzBKWUlnSUJRS01UOC9UNzFleHpSTnVydTdLWlZL
K25HMkwyVVVRZ2doaEJCQzNOc0Q3UUVKCmhVSkVvM2Z1R2dTQm5tQ2w5bktvS1ZPUlNJVDkrL2V6
dkx6TWhRc1hNRTJUSUFqMHlOMGdDS2pWYW5wamVxMVdJeDZQNi9zMW0wMGUKZmZSUlhOZWwyV3p5
UzcvMFMzejcyOTltYzNOVDcvWm9OcHRrTWhtS3hTSzdkKy9tNE1HRDJMYk4xTlFVRXhNVDJMYk4y
MisvalczYgo3TnUzajBRaVFhdlZJZ2dDVXFtVUhnZTh1TGhJS0JUQzkzMzI3dDNMNnVvcU16TXo5
UFgxMGRYVnBVZi9Qdnp3dy9pK1QwOVBENS82CjFLY29sOHQ2YjRrRUhrSUlJWVFRUXZ4a2RneEFW
T0NoU3ExVXVaV2lKbHFwMGl5VnJYQWNoMUtwQk54cFpIZGRGOU0weWVmeit0RGUKMTlmSHdzSUN5
V1FTMjdacHRWcFVxMVZtWm1ibzdlM2w2YWVmcGw2dmMrWEtGZDU1NXgwcWxRcVJTSVFnQ0xCdG00
OCsrb2dnQ0hqcQpxYWQ0K3VtbmFiZmJYTHg0a2FtcEtRWUdCcGljbk9UVXFWTTYrR20zMjdwL0pC
S0pZTnMyUTBORGVKN0hCeDk4d01yS0NzMW1rMEtoClFMMWVKNXZOY3V6WU1VWkhSN0Z0bTNnOHJo
Y3dxc2MwREdQTDVuVWhoQkJDQ0NIRXZlMFlnS2pBUWpXZXE5RzVLbnZRYURRSWg4TzYKVk11eUxM
TFpMSmxNaHJtNU9XemJ4bkVjWE5mZE1nYTNYcS9qK3o2cFZBcmY5NmxVS2lTVFNjYkh4emwyN0Jq
WmJKYkZ4VVhPbkRsRApzVmlrMld5U1RxZEpKdlNYQWdBQUlBQkpSRUZVcDlQTXpNeGdXUmJ4ZUp5
MXRUVysrYzF2a3MxbVNhVlNIRGh3QU5kMTJkemM1SHZmCit4NWpZMk42Tks4cW1Sb2JHK1BBZ1FQ
MDlQUXdQajdPMjIrL3pSdHZ2QUdndDdxcnh2VnF0Y3JnNENDQTNrY0NFSS9IOWRaMUNVQ0UKRUVJ
SUlZUjRNRHNHSU1DV2lWZk5abFB2ellBN2gzSlZRaFVLaFlqRll1UnlPUVlIQjdseDQ0WXVyWXBH
by9pK2orLzdKQklKa3NrawpRUkJRS3BVd0RFTTNxS3NONStwQVB6QXd3Rk5QUFVXMVd1WDczLzgr
QUFNREEvVDI5bkxyMWkzMjdObkRwei85YVI1Ly9IRjgzNmRRCktHRGI5cDBYOStOdDVtcVpZU0tS
d0xJc1RwdzR3ZnI2T3J0MjdlTDQ4ZU1FUWNEYmI3OU5xVlRTV1E3Vm81Sk1KakZORTlkMWljVmkK
UkNJUlBNK2owV2pvMXk0QmlCQkNDQ0dFRUEvbWdRSVExV3l1UnV1cTRFTTFZSWZEWVh6Zkp4S0pB
SGVtWVkyTmpURTFOY1g2K2pycgo2K3Q2QjBpOVhxZmRicE5JSlBCOW4yUXlpZXU2V0piRndNQUEv
ZjM5dE50dHl1VXlRUkRveVZvdnZQQUMrWHllbXpkdnNyaTRTTDFlCjUvRGh3Nnl2ci9QKysrL1Qz
OS9QMDA4L1RTYVRvVktwVUsxV1NhZlR4R0l4WFNhbGxpRU9Edzh6TkRURTd0MjdHUjRlNXFHSEht
TFAKbmozODZFYy9JaHdPWTVvbXNWaU1JQWhJSkJLNkQ2WXowNk9XTXFyU3RNNXBZRUlJSVlRUVFv
aTdlK0FBWlB2b1hmWFJhclYwR1pMNgpISXZGMkx0M0x3Y1BIbVIyZGhiUDh3RElaREpZbGtXNVhN
YnpQSkxKcEQ3Y2o0Nk84dXl6ei9JelAvTXpoTU5oTmpZMjlQYnhQWHYyClVDZ1VzQ3lMZkQ3UEk0
ODhRcmxjWm1scGlTZWVlSUw5Ky9mejBFTVAwVzYzcWRmcjlQWDFFWWxFOU5qZGFEU0thWnJBblJJ
eHRROGsKbjg5aldSWjc5KzdsMkxGam5EOS9Ic3V5R0I0ZUpwZkxZVmtXcnV0U0tCVG82ZW5COHp3
cWxRcVpUSVpvTlBxSmpJY0VJRUlJSVlRUQpRdHpmQTQzaGJUYWJlcWVHT21TcmpJSXF6Vkw3TmxT
R29MdTdtNUdSRVNLUkNDTWpJeXd1THRKb05CZ1pHYUZTcVZDcFZPanQ3ZVhkCmQ5L2w2TkdqUFBQ
TU0zejJzNS9WaDN3MXRVcHRMKy91N3VibmZ1N24rSS8vOFQ5eS92eDVEaDA2eE4vNEczK0RUQ1pE
czlra0hvL2oKT002V0hwWFIwVkUyTmpab3Q5dDZNenVBNjdwNmtsZXIxU0tWU25IMDZGR09IRGxD
UEI3bjZOR2pKQklKUXFFUTVYS1pkOTk5bDVNbgpUekk0T0tpbmYxVXFGVjJtSllRUVFnZ2hoSGd3
a1JkZmZQSEYrOTNod29VTCtMNnZ5NjBVRlhRMEdnMHN5OUxqZHR2dHR1NEgyZGpZCm9MdTdtNS85
Mlo4bENBS3VYNzlPTEJiRDkzMnVYNy9PK3ZvNm4vLzg1L25zWnovTHNXUEhkR2FocDZjSHk3TFky
TmpRR1l4YXJjWm4KUHZNWlJrZEhDWUtBdWJrNXpwMDdwNE1WRlh5b0xldXFRVjZWWDZsSlhMVmFq
ZFhWVmE1ZHUwWStueWVaVE9xU3IwS2h3T2pvS0tkUApueWFYeXhFRUFhKzk5aHIvN0ovOU0xcXRG
cU9qbzJReUdaTEpKSnVibS9wM085OFA2UU1SUWdnaGhCRGkzbmJNZ05ScU5aM3Q2RHhrClJ5SVJQ
WFozWTJNRHgzSHdmVitYWUZXclZiMC9BK0RNbVRORW8xRXVYYnJFd1lNSGVmTEpKMGtrRWp6NjZL
UGN1bldMNmVscDl1L2YKcnhjRHpzek1rTTFtY1YxWDkyWE16czZ5YTljdW5ubm1HYjc4NVM5VEtC
UllXbHFpcDZkSFp5eFVCa1Exc3F0Z0tCUUswV2cwdUhYcgpGa3RMUy96Z0J6L2c2TkdqVkt0Vlhi
YjEyNy85MnpRYURack5wbDZlZVA3OGVicTd1d0gwTksyNXVUa3ltUXllNStuM1JGRjlNRUlJCklZ
UVFRb2hQZXVBOUlJcHFRTzhzdlZJSGNOV1FyaFlYeG1JeDNuMzNYUnpINGNDQkF4dy9mcHl4c1RI
eStUemhjQmpETUxoKy9UcHIKYTJzOCtlU1Qrb0FmQ29YSVpyTTZpekU4UE15dFc3ZUl4K09VU2lY
ZFc1Sk9weGtjSE1TeUxFS2hrQTRJMU02UFZxdWxnNWhDb2NEMQo2OWQ1L2ZYWGVldXR0MGdrRWhp
R1FiRllKSnZONm1sWGdDNHR1MzM3TnZsOG5zOS8vdk44K3RPZkpwMU82NUl3MjdZcGxVcDZDcFlR
ClFnZ2hoQkJpWi85TjlVS2RHOEFqa1lqT2hxamdCTzRFTGlwTHNMaTR5TWJHQnJsY2pvR0JBZURP
UnZYZTNsN0d4c2J3ZlovdTdtNGQKT0t5dXJnTG9SWUhuejUvSHRtMHN5OUlCenZqNE9EMDlQWG94
b1pxdXBaNlBtbjYxdkx4TUVBUXNMQ3h3L2ZwMTNuenpUVzdmdnMzWQoyQmpsY2huTHNzamxjaVNU
U2YxN1hWMWQyTFpOdlY1bmJHeU14eDkvbktOSGorcHlzTTZSd3ZkYTBDaUVFRUlJSVlUNHBCMERF
TFh6ClF3VVhuUTNuMFdoVWY2OUtuK0RqN2VpWlRJWjJ1ODM4L0R5bFVnbkxzb2hFSXVSeU9VWkhS
MGttay96eEgvOHhpNHVMVkt0VkhNZWgKcjY5UFp4Z2lrWWpPZEpUTFpWNTU1UlZhclJaQkVEQTlQ
YTEzZXppT2cyVlpwRklwdlpPa1dxMHlOemZINXVZbXBWSUoxM1h4ZlovRgp4VVVTaVFTRGc0TjZH
enJjYVV4dnQ5dTZqNlhWYWhHTHhUaDgrREE5UFQzNHZnL2NtZVFWRG9lcFZxdVlwcWt6UUJLQUND
R0VFRUlJCnNiTWRBeERWUzlHNUhIRDdYLzFWQnFSeldXRzczU1llajlOcXRiaDkremFGUW9GUUtJ
UnBtdlQyOXRKcXRmanVkNy9MRzIrOHdhYy8KL1duNisvdjFucEFnQ1BCOW45WFZWWXJGb2c1V0Nv
VUNYLy82MTNGZGw5N2VYbEtwRkpGSVpNdWVEOC96Mk56Y1pHTmpneHMzYm5ENQo4bVhlZlBOTldx
MFdLeXNyeEdJeGVudDcyYnQzTCtQajR6cURvcFlPT281RHJWYlRtOW43K3ZwSUpCSjZHcGhoR1Bv
OVNDYVQrbjJTCkxJZ1FRZ2doaEJBNzI3RUh4TElzZ0U5TXdGSzNxUWxUYXZTdCtscnQ0RGg4K0RE
Zit0YTNhTGZiT0k2RGJkdE1UazR5TVRIQnE2KysKeXBFalIranU3bVptWm9iaDRXRmlzWmkrcGly
QlVsdkxlM3A2K04zZi9WMm1wcWI0Ui8vb0g1SE5ablV2Q2R3cDY2cFVLdFRyZFVLaApFT3ZyNjF5
L2ZwMU1Kc1BJeUFnM2I5N2t5SkVqSERwMGlFd213OW16Wi9uYzV6NUhQQjZuM1c3anVpN05acFAx
OVhWYXJaYWVoSlZLCnBXaTFXdFRyZFlyRklwRklSUGVMS09xOUVFSUlJWVFRUXR6YmptTjRyMTY5
dWlYenNmMGpFb25vUnZWb05JcmpPQVJCb0VmajV2TjUKWG4vOWRhNWV2VXFqMFdCdGJZMzMzbnVQ
RHo3NEFOLzNxZFZxWExwMGlRc1hMdWdzU3ExV28xd3U2NTBibnVkUnI5ZnhmWi9SMFZHKworOTN2
TWpVMXhjREFnRzRlVnlWV2hVSkJUK0Q2OE1NUGlVYWpqSTJOMGRmWHgvTHlNa2VPSE9ISWtTTzgr
KzY3L0pOLzhrL283dTRtCmtVaFFMcGVabnA2bVVDalFhclgwdUYzZjk3RXNDOE13ZEZOOE5CclYz
M2Z1UlFHWmdpV0VFRUlJSWNUOTdKZ0IyWjc1Nkp4OHBhWkYKcVFXRXFnRmMzUjRPaCtudDdlV0pK
NTdnVC83a1QzajExVmRKcDlORW8xRktwUktwVklwY0xzZkV4QVFBcjczMkdwWmxzV2ZQSGdZRwpC
dWp0N1dWMWRSWFhkZkU4ajcvMzkvNGVYLzNxVjdsMTZ4YmYvdmEzdVhIakJyL3lLNy9DME5BUUFM
RllqRktwcENkd0xTNHVNalkyCmh1TTR6TTdPOHZ6enorUDdQdEZvbEE4KytJQkdvOEhmLy90L245
Lzh6ZDlrZEhTVVFxRkFkM2MzNCtQanhHSXhnaUFnazhub3pJaksKenFqM1FDMW5WTytUWkVDRUVF
SUlJWVM0dngwREVOVWZFWTFHTVUyVFNDU2lHOUpWc05GcXRYUkR1dWQ1R0lhaEQrcWhVSWdubm5p
Qwo3M3puTzNSM2Q3TzZ1a291bHdNZ204MXkvUGh4YXJVYXQyL2ZKaEtKc0xtNXlUdnZ2SVBqT0FD
WXBra2lrZURMWC80eThYaWNhRFRLCnIvN3FyMklZQm4vNGgzL0lQLy9uLzV4ZHUzWng3Tmd4M25u
bkhmYnUzY3RUVHoyRmJkczg5TkJEeE9OeDl1elpvM3RTMnUwMk16TXoKUktOUkVva0VBd01EMUdv
MXN0a3NodzRkd3JadDB1bTA3aTFwdFZxNkpFeTlidlZaTmF6TEFrSWhoQkJDQ0NFZXpJNEJpR293
Nzh4NgpxTU4yT0J6ZXN2U3Zjenl2NnMxb05CcjA5UFJ3NnRRcHpwMDdoK000UkNJUmVucDZPSExr
aUQ3Y0F4aUdRU0tSb0Y2djQza2VtVXlHClU2ZE84ZVNUVC9MRUUwK1FTcVVJZ29CVHAwN1JhclVv
bDh2ODUvLzhud21Id3d3UEQvT0x2L2lML0lOLzhBK1luSnprWC8ycmYwVjMKZDdlZXpLWEc5S3JB
Wm54OG5PSGhZUVlHQnRpelp3K2pvNk9rVWlrZFBLbkpYaXF6MGZtaGRMNHZFb0FJSVlRUVFnaXhz
d2RhUktqRwo2bllld0ZVZ29nS1FhRFJLdTkzV3planFJRit2MTBrbWs1dzRjWUt6WjgrU1RDWnBO
cHQ2bEc5dmJ5KzVYSTZGaFFYVzF0YXdMSXRXCnE0VmhHQnc3ZG93dmYvbkxIRDkrbk9IaFlUelAw
OWZ1N2UzbHpKa3pQUDc0NDN6akc5L2dULy8wVHpsMDZCQjc5KzVsZW5xYWMrZk8KTVQ0K1RqcWRK
aHdPazA2bmRXbFl0VnBsLy83OWpJeU1rTWxrTUUxVDd4bFJQUnhxN0s1cXJPOTgvU3JJVWorL1cz
QWloQkJDQ0NHRQorS1FIeW9BQWQvMEx2eHFyMjNsQWowYWpoTU5oVE5QVVFVaTFXbVhYcmwwa2sw
bjlPT3ZyNjB4TVRMQ3lza0tyMWVMSWtTUE16YzFSCnE5V28xK3ZrODNtZWZQSkpEaDQ4aUdtYWJH
NXU2bXNWaTBXU3lTVFBQLzg4Rnk5ZTVMZCs2N2RZV0ZqZ1QvN2tUNmhXcTN6bEsxK2gKcTZ1TDZl
bHBqaDQ5U2pnY0pwdk42bktxWEM1SExCWmphR2lJYURTSzY3cGI5cHdFUWFDRHBQc0ZHSjM5TVhm
N1hnZ2hoQkJDQ0xIVgpBNWRnd2RZTjZPcEFyaklXcWh4SkJSNnFKQ3NlajFNc0Z0bTFheGVQUC80
NDc3Ly9QcEZJaEVxbHdzek1ES1ZTaVVRaVFSQUViR3hzCjBOUFRRM2QzTndCemMzTVVDZ1U5a2Fw
Y0xyTzJ0c2JDd2dKemMzTnNiR3dBc0xTMHhDLys0aThTRG9mNWd6LzRBOXJ0dGg3aHE1NkgKNjdy
VWFqWHkrVHhEUTBNNkdPcnNaekVNUTJkOFZOOUxFQVE2QTZSdTczd1BPcmUvU3daRUNDR0VFRUtJ
KzN2Z0FLVFZhbTA1WUtzQQpKQnFONHZ1K1BvaXIwYnh3cDFtN1Zxc1JDb1hvNit2anlKRWpuRDkv
SG9CNFBBN2NhVVRQWnJQTXpzNVNyOWRaWFYybFZDclJiRFpaClcxdmoxVmRmSlJhTDZiMGJLcmha
V2xwaWFtcUtRNGNPY2VyVUtScU5CZ2NPSE1EM2ZRWUhCOGxtcy9ybmlVU0NScVBCMU5RVTE2NWQK
bzcrL24zMzc5dWttY3hWNHFIMGl3Q2RlYzJmZzBabnB1TmZ0UWdnaGhCQkNpRTk2b0I2UTdmME9n
RzY4Vmx2UFZXOUVzOWtrQ0FMOQpmYTFXSXhhTEVRcUZxTlZxTkp0TmZOOG5rVWhnR0FhNVhJNHpa
ODRRajhkeEhJZENvY0NISDM1SUtwVmlkSFNVM3Q1ZVFxRVF3OFBECkRBNE8wbXcyV1YxZDVlclZx
M3p3d1FlMDIyMSs0UmQrZ1lHQkFXN2V2RW1yMVdKNWVabloyVmxNMDZUVmFoRUVBVXRMUzN6MDBV
ZXMKckt4Z0dBWkRRME9ZcHJtbHpLclJhQUFmajlSdE5wdDZ1dGZkQW8zT3huc2hoQkJDQ0NIRXpu
WU1RRlNnY2JkcFVHb1hCbnhjZnRRNQp0bGMxbW1jeUdWWlhWNW1abVFHZzJXenFVcTJiTjI5U3JW
WnhYWmRmK3FWZjRybm5udU81NTU1allHQ0FJQWowNkYzRE1MaCsvVG9UCkV4TmtNaG0rOElVdjhI
TS85M042YVdHbFVtRnljcEwxOVhWZWYvMTFUTlBrODUvL1BKWmxzYmEyeHNURUJNdkx5NWlteWE1
ZHUwaWwKVWpvNFVzOUo3ZlV3REdOTFEzMW5GcVN6M0t6elBSRkNDQ0dFRUVMc2JNY0FSTzM0VUtW
UDJ5ZGhxVElzMVlnT1cvc3BWTENSVHFmcAo3dTZtMFdnUWk4V28xV29NRHc5am1pYVRrNU00anNN
M3YvbE56cDQ5eSs3ZHUvWDlJcEVJZzRPRC9QQ0hQOFN5TEY1NDRRVSs4NW5QCnNMS3lRclBacEZB
b01EczdTM2QzTjJmUG5pV1R5WkRQNTFsWVdLRFJhT0Q3UGpNek16U2JUV1puWnhrZEhkWFR1U0tS
aU81QmljZmoKdUs1THZWN0hjUnphN1RaQkVPaXlyTzNCUnVmU3hlM2IwSVVRUWdnaGhCQjN0Mk1B
MHBrRlVILzU3enh3ZDVab2RaWmlxUS9QODZqVgphblIxZGJHNHVFaHZieS9MeThzMG0wM201K2Nw
bFVvTURBeFFMcGRaWFYzRjh6eHUzcnhKcVZTaVdxMHlNREJBb1ZEZzJMRmovTVp2Ci9BWUhEaHhn
YzNNVHovUHdQSStwcVNubTV1WTRmLzQ4dDIvZnh2TThmTjhubDhzeE16T0Q2N3E0cnN2Rml4ZTVm
ZnMySjArZXBMKy8KSDhNd21KMmQxYzNvOVhvZDMvZkpack9FdzJIVzE5ZHhIRWZ2RVZHdlIvV0Yz
SzMwU2txeGhCQkNDQ0dFdUw4ZEE1QzcvWFgvYmxtUQo3ZFJoUFpmTHNiNit6dno4UE5QVDB3UkJn
R21hdUs1THU5Mm10N2VYbVprWkdvMEdodzhmcGxnc3NyNit6dWMrOXprR0J3Y1pHUm5CCnNpeU9I
VHZHb1VPSG1KbVpJWmxNVWl3V2VmdnR0emw3OWl5TlJvTzF0VFhxOVRxcFZBckxzaGdjSEdSMmRw
YkxseTlUS3BWNDg4MDMKMmJObkQwZU9ITkdsWThsa2trS2hnR21hT0k1RHVWeldlMG9halFiSlpG
TDNoV3dQT3FUM1F3Z2hoQkJDaUovY2pnR0lZUmlmNlB1NAoyK2Z0OXdGMEdaTnBtdnpiZi90dldW
aFlvRktwc0d2WExocU5obTVJejJhenhPTnhubjMyV1lhR2huampqVGNZR2hyaXIvN1Z2MHAvCmZ6
L1ZhbFVITUxkdTNlTENoUXY4MS8vNlgzRWNoNnRYcitydDVtckx1c3JNbEVvbGZ2akRIK3ByUFBi
WVkremR1NWRvTklybmVlUnkKT2M2ZE80ZnJ1cHc4ZVJMRE1OamMzTVF3REd6YkJ2aEVIOGo5U0Ft
V0VFSUlJWVFROTdkakFLTEczeXJiQTQvT1BTR2R0d042Q3BabApXVnk3ZGczRE1JakZZblIzZCt2
c1E3bGNwbGFyOGRSVFQzSHc0RUVxbFFySGpoM0RjUncrL1BCRENvVUNrNU9UdlBYV1czcnZ5TVRF
CkJGZXVYT0hNbVRNa2swbDlEVldhWlJnR04yN2NZR2xwaVpXVkZUS1pERC8vOHovUG80OCtxck1k
cG1sU3FWVFkyTmpnNnRXclpMTloKZW50N2FUUWFlbUdoNjdyNmRkOXRDM3huc0NYTjZFSUlJWVFR
UXV6c2dmZUEzSzNQQTlpeW9LK1RLc0ZTRGQwOVBUMjBXaTB5bVF5ZQo1ekU4UEV5cjFXSnVibzZo
b1NFMk5qYjQwei85VTNwN2UybTMyOHpOelhIdzRFRis5S01mVVNnVVdGOWZwMTZ2RTR2RjJMOS8v
NWJHCjkycTFxb01kRlZpOC8vNzdldVJ1RUFRTURBd3dQRHlzZDVUNHZrOG9GQ0tmei9PTmIzeURS
Q0xCRjcvNFJZYUdocWpYNjdSYUxUelAKd3pUTkxZRUdmRExUY2E5TjZVSUlJWVFRUW9pdEhtZ1BT
S3ZWMGgvQWxveUgrbjc3b2tKMVd4QUVWS3RWVHB3NHdSLy84Uit6dWJsSgpxVlFDWUhOemsrN3Vi
alkzTjFsYVdtSndjSkNMRnkreXNiRkJzOW5rMXExYnVLNUxwVkpoZEhTVXJxNHVxdFVxQ3dzTFhM
NThHZGQxCjhYMWY5MmxFbzFIaThUaWxVb21OalEzVzF0Ym83KzhubDh2cHJlekpaSkpxdFVvUUJE
aU93K0RnSVBQejgzenZlOThqQ0FLZWYvNTUKY3JrY2tVaEVCeCtkbVkvT0J2dnRyMWtJSVlRUVFn
aHhmdytVQWRtK0MyUDc5L2NLUUpyTkpxMVdDOU0wZWZ6eHh6bDI3QmdYTGx5ZwoyV3d5TlRXbEZ4
Wm1NaG1tcDZjcEZvdUVRaUhXMXRiSVpyTkVvMUVXRmhhSXhXSmJwbVRsODNrS2hRTHBkQnJmOTBt
bFV0VHJkVUtoCkVMN3ZzN3k4VENhVHdYRWNHbzBHcDArZlpuUjBWQWNWNFhBWXgzR28xV3JFNDNG
czIrYmF0V3Q2TlBEcDA2ZEpwVkxZdGsydFZydHIKNDdsNnZaMlpFU0dFRUVJSUljVDlSVjU4OGNV
WDczZUhsWlVWV3EyV0RpYkM0YkRlZ1JHTlJqRk5VeC9LVmJEU2JEYjFJVDhlaitONQpudDREVWl3
V3VYWHJGcWxVQ29CVUtrVzVYS2JSYU9DNnJtNEN0eXlMUXFGQUtwV2kxV3BSTEJhcFZDcTRyc3ZH
eGdhR1lkQnNOakVNClF6OC85Uml4V0V3L3A4T0hEL1BFRTA4d05qYkd3TUFBbTV1YlJLTjM0cTVX
cThYTXpBeXZ2UElLalVhRFlySEk3T3dzeldhVFNDUkMKSXBIUVBTVXFHM0szQUt5VDJoc2loQkJD
Q0NHRStLUUhHc01iaVVUMFgveTNONXA3bnFlM244UEhwVmR3Wnl1NjY3b0VRVUFrRXVIawp5Wk80
cnN2OC9EeVRrNU82ZHlRU2lXRGJ0dTduOEgxZkx3cnM3Qy9aL2htZzBXam96SVJwbXRpMnJRT1Ry
cTR1c3Rrc2ZYMTl1cXpLCk1Bd2lrUWpOWmxNSFBLN3JZdHMya1VpRTJkbFovczIvK1RkTVRFenc5
Tk5QODloamorbCtrQ0FJZElPNjR6aDZCOHIyOTBRSUlZUVEKUWdoeGR6c0dJT3JRdlQzQTZPeUZB
RDZ4b0ZCOXJjcWMxRGplcDU1NmltZzB5c3N2djh6VnExZVpucDRHMEVHTHltYVV5MlhDNGJBZQo1
UnNFZ1Y0S3FLaWZKWk5KWFg1VnI5ZHB0OXVrMDJuMjd0M0w0T0FnZlgxOUpCSUpIYVNveDQxRUlx
eXNyT2llbEZnc1JxUFJZR2xwClNVL1F1bno1TW52MjdPSG8wYVBzMnJXTGJEWkx1OTJtVXFsUXJW
WkpKQkk2U09zYzN5dUVFRUlJSVlUNHBCMERFQlZzM0szdlErM0kKVUlmdnp2MGZxbFFyRkFwaG1p
YWU1MUd2MStudjcrZjU1NTluYkd5TXQ5OSttMy82VC84cDVYSVoxM1ZwTkJyWXRvMXQyMVNyVmYz
NApxdnpyWG9zQVZmbFZ1OTNHY1J5OUIwUmxYZnI3K3pGTlUyZGlQTThqRkFwaEdBYlQwOU82MGI1
U3FXRGJOdGxzbG5xOXpwdHZ2c2tICkgzekE0T0FnKy9idFkvLysvZXpidDQ5OSsvWXhQRHhNUHA4
bkdvM3ExNzA5UUJKQ0NDR0VFRUpzOVVCVHNCUVZoS2pwVm1xamVEUWEKMVFzTE8vdEJPcHU5VGRN
a204MVNMQlpKcFZKa3MxbjYrL3YxOHNCNFBNN0d4Z2IxZWgzTHN2QjluM2E3clEvNEttdWhxS2xj
MFdpVQpXcTBHM09rblNTYVRWQ29WTE11aXA2ZUhSeDk5bE83dWJoMHdHWVpCdFZyVnZTUFhyMThu
bFVxUlNDUllYbDZtMFdqbzY2blhOajgvCno5VFVGSys4OGdxOXZiMmNPSEdDaHg5K21OMjdkek13
TUVBdWx5T2Z6K3VGaUVJSUlZUVFRb2k3ZTZBTUNIeHlFVi9uOTUwQmdzcCsKcUE5QUJ4THhlRnhu
T2lZbUp2ald0NzdGNXVZbVEwTkRuRDU5bW84KytraHZKb2VQUndEZnEvRmJaVHhxdFJxR1lSQ1B4
eWtVQ2dSQgp3UEhqeC9uYTE3N0d3TURBbHJLeFNDU0NaVm1ZcHNuQ3dnSkxTMHZVNjNWczJ5WWFq
ZUw3UHRWcUZjdXlTQ2FUV0phRmJkdDZ2OGpDCndnS0ZRb0czM25vTDI3WTVmZm8wWTJOakhEOStu
RDE3OXJCLy8vNmY4aitSRUVJSUlZUVEvK3Q0b0I0UStIajdkMmRRb1c1WFU3RlUKTTNwblUzYTcz
U2FaVE9MN3ZtN2tYbHBhNGdjLytBRXZ2L3d5aVVTQ1hDN0hvNDgrU2lLUjRJMDMzdEFaaysxN1I5
VDFWSitJS3IyeQpMSXRVS3FXM21ELzY2S1A4NWIvOGwzbnNzY2RZWDEvWDkxR1BGNHZGYUxWYVhM
NThtWEs1VEtWUzBZOWxHSWJPNkFBVWkwVnMyOFl3CmpDMk41L1Y2blZxdHhoLys0Ui9TMjl2TDZP
Z29mWDE5L0x0LzkrOStpdjg4UWdnaGhCQkMvSzlseHlVV0t1am9ERURDNFREUmFGVDMKV2FpUDdm
ZUxSQ0xFWWpFTXc4RDNmYUxSS0tWU2lWZGVlWVh2Zi8vN09JNkRiZHVrMDJsR1JrWjBxUlNnQTVy
T2JFdm45ZFZ0NVhLWgpkcnV0RzlBUEh6N01iLzNXYi9IY2M4OXgrL1p0L1JwVWM3anFGU21WU3J6
NzdydlVhalVzeTlKbFg2N3I2a3hKczluVTJRK1Y0ZW5zClIxR2IxSU1nNE9iTm0velpuLzNabitN
L2xSQkNDQ0dFRVAvejJ6RUFVZnMrVkU5RVowYWszVzdyN0VEblhoRFROSFZUdWlwL01rMlQKcTFl
djh1cXJyL0xxcTYvcWZSK2U1M0hreUJHaTBTaDc5dXhoYkd4TUJ5L2hjRmhuSkZTanUrbzFBZlRZ
M2E2dUxselhaYytlUGZ6dAp2LzIzZWVhWlo2aFdxM3JKb0JybjI5WFZoZU00dUs2TDY3bzZZRWdr
RWpTYlRTekwwcVZpcW5uZXNpeDlQYldmSkJ3T2I5bnk3dnUrCnpnUUpJWVFRUWdnaDdtM0hFaXpM
c21pMzJ6UWFEWnJOcGc1QVZOWWpGb3NSQklFdVkxSUJTVGdjcHRGb1VDZ1VtSjZlNXVyVnExeS8K
ZnAwclY2NXc2OVl0NnZXNkhudnJPQTZtYWRMWDE4ZWhRNGU0ZHUwYXhXS1JucDRlVmxaV3lHYXps
RW9sbXMwbW1VeEc5Mm9razBsVwpWbFpZWEZ6a3M1LzlMTC94RzcvQmswOCtTYmxjSmdnQ2Nya2M1
WEtaUkNLQjY3cjR2ayt6MlNTWHkvSFNTeSt4dHJaR3BWTFJBWlJxCklsZmpmVDNQMDVPNDFJZWE3
S1dhNEUzVDFOa2cyWW91aEJCQ0NDSEUvZTBZZ0tpdDVpckRvUnJLVlNaQ0JTVnF4NFpsV1hpZXgr
cnEKS3N2THkxeTRjSUZyMTY1eDllcFYxdGJXcU5WcWVneXVPc0RidGswUUJQVDA5UENsTDMwSnov
TjQ2YVdYV0ZsWklaVktzYkd4Z1czYgpPcUJRNDNvM056ZjVsVi81RlV6VDVDLzlwYi9FODg4L2or
LzdsTXRsMHVrMGpVWUQwelFCY0J5SGVyMU9QQjVuYzNPVDczLy8rOVRyCmRkMFgwam50cTdOaHZY
TUhTbWZabWVwQjJiNEpYUWdoaEJCQ0NIRnZEOVNFcnNxZ1ZOQ2dTcEJVZVpYS0hrUWlFU3FWQ2xO
VFUzencKd1FmY3VIR0RTNWN1c2JhMlJxbFUwc0ZHTkJyVml3V2owYWh1N281R281dzRjWUt1cmk2
NnU3czVlL1lzMTY1ZDB4bU1RcUZBTXBtawozVzV6K1BCaC90cGYrMnM4K3VpalJDSVJCZ2NIOFgy
ZnBhVWxjcmtjOFhpY2xaVVZ1cnE2S0JhTGRIVjE2YjZONzN6bk8xeTZkQW5MCnNuUmdwWUlwRlhn
NGpvTmxXVFFhRFh6ZjE5bVR6bEtyem4wb2dHeENGMElJSVlRUVlnY1B0QWVrczdlaGN4U3V5bUFF
UVVDeFdHUjEKZFpWYnQyNXg0Y0lGTGw2OHlOemNISzFXQzgvemRNbFdaeG1YS3FXS1JDSmtzMW1p
MFNpVlNvV0hIbnFJUFh2MmNPYk1HZDU1NXgzTwpuajNMbFN0WENJS0FkRHJOWC9rcmY0VVhYbmlC
NDhlUEEzY2F5ejNQQXlDWHl4RU9oNmxXcThSaU1mMzRLa2g0NjYyMytQYTN2MDJ4CldOeXl4Ynd6
b09wY1pLaGVyd3FZdHBkamRiNHZFb0FJSVlRUVFnaHhmenNHSUoyTjVLcjh5clp0blFVcGw4dk16
ODh6T1RuSjVjdVgKdVhidEdqTXpNN3BuUXgzTTFTU3BJQWp3ZlY5UDBsSTlKb1poa0Vna2RFL0c3
dDI3eWVmelBQUE1NM3psSzEvaEc5LzRCbE5UVS96eQpMLzh5enozM0hKRkloR0t4U0RnY0pwbE02
dWNhajhkcE5CcVV5MldTeVNTMVdvMU1Kc1BHeGdhV1pYSHUzRGx1Mzc2dEF3dzFhVXROCjExSzlI
WjJMRUZXdzBWbHVwVEluS212U3VabGRDQ0dFRUVJSWNYYzdCaUNkaDJ2VkM5SnNOcW5WYXRScU5T
NWN1TUQxNjlmNThNTVAKbVpxYTBuczNJcEVJcG1sU3I5ZTNqTS90UE1nM20wMjZ1cnJJWnJQQW5V
TjlUMCtQRGk1YXJSYTJiWFA4K0hIKzRULzhoNnl1cmdLUQp5V1FJaDhONmNwVnQyOWkyVGIxZTF5
VmppVVJDQnphQUxoM0w1L05rczFtcTFhb09rRHBIKzZxZUVFWDlURFhXdzhjVHdOVHZxaUJFCk1p
QkNDQ0dFRUVMYzM0NEJTR2ZKa1pxR1ZTcVZXRmhZWUhsNW1UZmZmSk5idDI1eDY5WXR2VUF3SG8v
clRFSXVsOFB6UEJxTkJvMUcKWTh0aEg4QzJiVVpIUjRuSDQ3cEpQQnFONHJvdW1VeEdONXhISWhI
UzZiVGVKV0lZQnJsY0RvQmFyYWFERFRVcVdHVmNWQUNpUHA4KwpmWnIvOEIvK0ErdnI2enJBVVpr
TTlhRktzRlRBb1VZQ3EvS3h6bkl0bFExU0pWNUNDQ0dFRUVLSWU5c3hBSUdQK3o1YzEyVmhZWUZM
Cmx5N3g0WWNmTWowOXpmVDB0RDYweDJJeG1zMG0xV3FWY0Rpc203Z0JlbnA2V0Z4Y0pKRklFQVNC
M2xxdUR2dHFDZUNsUzVmNGwvL3kKWDNMbHloWHE5VHFXWmJGdjN6NEdCd2RaWDE5bmNuSVN6L01Z
SHgvbitQSGpIRHAwaU83dWJuYnQyc1hnNEtCdUpsZDlKNlpwOHU2Nwo3MUt2MXpsNThpUXZ2ZlNT
SHJHYnkrVjBKaVFlaitONUhwbE1obXExaW1tYWVKNm55N0xVZmhDMSswTmxYMVFQakFyUWhCQkND
Q0dFCkVQZjJRRTNvcnV1eXNyTENqUnMzbUppWTRNcVZLOHpQejFNdWwzV21BOWd5SFV0bENEcXpC
cEZJaEdxMVNpZ1V3akFNTmpZMjJOemMKNU9yVnF3d1BEN082dXNyZitUdC9od3NYTHBETDVWaGVY
aVllanpNek13T2d0NUNIUWlFV0ZoYjQ0UTkveVByNk9uMTlmZlQzOTdOLwovMzVPbno2R0hXTG9B
QUFUWmtsRVFWVE53dzgvek83ZHUrbnE2dUxsbDEvbUc5LzRCaE1URXd3TURPZ0c5V1F5eWZMeXN0
NEJZbG1XCmZ1N05aaFBmOS9FOGoyUXlxWHRBT3N1eFZJTzZLazFUdlNMM284cTBnaURRMlpXLzZL
QkZsaVVLSVlRUVFvai9rWFlNUUphWGwxbFkKV09EeTVjdWNQMytlYTlldXNicTZTaEFFK2xDdXFN
TjA1L1FvMVdTdUR2T2JtNXQ2cTNrbWsrR3JYLzBxeDQ0ZG85bHNNakV4d2Z2dgp2NjhYR3pxT284
ZmZkbzdBRFlWQ2xNdGxtczBtc1ZpTWNybk0zTndjNzd6ekR2L3BQLzBuSE1mUkpWcSs3N080dUVn
c0ZtTjVlWm1oCm9TSFcxdFowNDdyYWN3SnMyY0N1QWhIWGRmVXVFUlZJcVgwb3pXWlQ5N2pzTkFX
cjFXclJhRFQ0b3ovNkl3cUZnczRNL1VYN1czL3IKc25wR1AvNW9BOGFQYi9PQU1LQ0NsQUNJME4x
dDhETS8wODJYdm5TVUYxNzRaZjErQ0NHRUVFSUk4WlBhTVFCNTg4MDNtWjZlWm1KaQpndHUzYjFP
djEzVUFvVElkblFkdjFaaXRQaHVHb2FkZXFaSW8xWS94M0hQUDhldS8vdXYwOS9lenVyckt6WnMz
eVdhek9rdGhXUmExCldvMVlMS2F2NS9zK2NHZXhvT000dUs2clM2RjgzOWVqZkIzSElaRklVQ3FW
R0JvYXdqUk5GaGNYOVpTc1dDeUdiZHU2WWQ0d0RBekQKMEx0S1ZDbVgram5jQ1ZaVXRpUVVDdEZv
TlBTT2xKMHlDNTduOFFkLzhBY2NPSENBcDU5K1dvOEwvb3YybWM4dE10aWZoVGEwZnZ4dgpwLzhO
UTIxb2hRaUZROXdKVEtEZGF1TzVBY3VMVmI3em5mZjR1My8zNi96amYveC9TaVpGQ0NHRUVFTDhO
OWt4QUhudHRkZFlXMXRqCmVYbVphclc2cFNIYjkzMU0wOVNIMk03SlVPcTJhcldxRzhuTDViSSs1
SWRDSWI3MnRhL1IzZDJONjdwa3MxbGMxOVdON3Rsc2xtS3gKaUdFWWVKNUhwVkloRkFwaDJ6YXhX
QXpMc3ZRQlhnVUI1WElaMjdaMVNkYlEwQkN6czdPRXcyR0t4U0t4V0l4MnU2MzdQV0t4bUQ1SQpx
OHlLR2cyc05yMTducWV2cFFLUVdDeW1neXZUTlBVU3hYdGxRSUlnNEkvKzZJODRjT0FBSjA2YzBK
a2QrSXRmWGpoWkRHakUvSi80CjkwSlptOFBIRHZILy9uOVJYbnp4LytKM2Z1ZTNzU3pyeitFWkNp
R0VFRUtJLzVYdEdJQmN1SEJCTHhGTUpCTDR2cTlMa2RTaFhBVWIKNnJabzlNN0R0bHF0TFhzMktw
VUs4WGljWnJQSjBOQVE0K1BqbUthSlpWbmN1bldMZDk5OVYvZElCRUdncjZjZVIzM3VYQXFvOXBL
MAoyMjNXMTljSmhVSzYvMk41ZVpsejU4N3BERWhYVjVlZXlGVXVsMGtrRXJwdlJaVjVxZGRnR0lZ
ZThhdkc4NnIzUWIyMlVDaUU0emo2Ck5kOHRvOUZxdGRqWTJLQmFyZExmMzQ5cG12OUR4L1pPRmVx
a01nbFFTWTRmZjFaZmZ2ODcvdzlQL3grL3hzZWRLWGZ1MEFwQmtFOHcKMlVyU09tdnhtNzlab3F1
cjYzOUlGa2NJSVlRUVF2elBhOGNBcExOOENqN2VDNklPNDJvRHVmcFo1OUsrWnJPNXBXRmJsVkUx
bTAxTwpuVHFsc3gwWEwxN2s5My8vOS9uaEQzOUlYMThmaG1GUUtCVElaREo2bXBYak9Icmp1ZS83
T3F2aWVSNjFXazJYWVRVYURUWTJOdkE4Cmp5dFhyaENMeFNpVlNqcVFTU2FUZWdONlozOUo1ejZQ
VG9aaDBHZzBkT080ZXM3cXRjYmo4UzE3VXU1R2JXVzNMT3ZQWlZ5dmVrOFMKaWNTTzl5MVVXMnk2
ZDI5OG4zanJOZDU4N1NXYzNCQkhIem56NDF2YnRJRldHK2FDSnZTbnVQanluZmUwcTZ2cnAvY2lo
QkJDQ0NIRQoveFoyREVEeStiemU0ZEdaNFZEYndqczNpSGN1SzRRN2YvMzNQRThIQnZGNFhHOUZm
L3p4eDNYVzR2ZCs3L2Y0OS8vKzM1Tk1KblUvCmhXM2JsRW9sYk52V1FZSXFkV3EzMndSQlFLbFVJ
cHZOc3JLeVFqcWR4bkVjbHBlWHVYRGhBcGxNaHZYMWRkTHBOTFp0MDlYVlJUd2UKMTcwaWdONjZy
aVo1cWVCRFpTWlVrS0d1cjhyUDFPOGJoa0d4V05SWm9YdE50R28wR3JxTTY2YzU5ZXI4K2ZPOCtP
S0xuRDkvbm4veApMLzRGeno3NzdBUDlYaVA0NUczRjFVVmUrdGIvemRTbHQzSGRPcjJqNDJTNisv
WFBtNjA3V1JBcmJiQ2FUbE92MTM5YUwwTUlJWVFRClF2eHZaTWNBUkkzYVZRZG45Vm1OM2xYWkRw
WGhVQ1ZVNm42bWFWS3BWTEJ0bTJxMWl1TTRKSk5KVHAwNmhXRVlySzJ0Y2U3Y09WS3AKbE00T2xN
dGxVcWtVeVdTU1dDeW1lMERVc3NGR280SHYrM3FzYnlxVkF1NHNKRlFsVSsxMm0vNytmcnE2dXBp
YW1xSy92NThnQ0loRwpvM29YeWVibUpoc2JHL29ha1VoRVp6cUNJQ0NUeVZBdWw3Y0VQdXJhYWdM
VzV1WW10VnBOYjJIZlRwV21xV2xnbmFWWC83M0J5T0RnCklMLy8rNy9QMTc3Mk5mM1lPNmsyYlJx
dFQ1WitmWFR6RWxPWDNnWmc2dExiZkhUekV1TmRBL3JuUWF0TnN4VW1Hak5oSUhiZmdFc0kKSVlR
UVFvaDcyVEVBVWIwWGlpb3pVbGtEMy9lM1pBNjI5elZFSWhIZHU2RXlKLzM5L1RyYmNldldMVnpY
MWZ0RzF0Ylc4SDJmYkRhcgpsd0c2cmt1OVh0ZUxBV094bU80bFViK2JTcVVZSFIxbGVIaVk3dTV1
SFloVXExWDI3Tm5EdFd2WDZPN3Uxb3NEUzZXU25wYmxPTTZXCnZTV3U2K3JQaVVSaXkydXRWQ3Bz
Ym03cWlWdlJhRlFISHJadDMvVTliTFZhR0lhaGUweFVodWkvdHdla3U3dGJmNzNUR0dERkkwSzEK
OGNuN2paNThodDk5YVczTGJkVXRrNElqTkpvQkdiTU9LV3ZML3draGhCQkNDQ0VlMUFNRklNcjJI
Z2RWY3JWOURPLzJ6NnEvd3JadApYTmRsLy83OXBGSXBXcTBXQ3dzTGxFb2wzVmZoT0E2bWFWS3Yx
MWxaV2FHM3Q1ZDZ2YTZuVTdWYUxXS3hHTjNkM1NRU0NYSzVISTg4CjhnalBQdnNzeDQ4ZjF3R0cy
ck5ScjllWm5KemtiLzdOdjRsbFdaVExaZXIxT28xR1F6OHYxZEMrL2JXcFEzYTczU1lhaldLYTVw
YmIKRTRrRXlXUlNad05VOC8zZGhNTmhHbzBHdFZydHA5NThyb0tsU3FXeTQzM2YrS2hCSnZPVDcv
Rm90a09VSzIxTXk4Qkl4ZlIxWlJ5dgpFRUlJSVlUNFNld1lnR3dQSkxZdkhsUmxWOXNQMWVyKzZz
QWVCQUdtYWVLNkxnY09ITUF3RE9yMU9qLzYwWTlvTkJvNmExRXVsOW5jCjNNUTBUWjE5Q0lWQ2pJ
K1A4L00vLy9NODhzZ2pEQTBONlVXQ21VeEdYOFB6UER6UDIvSjhNcGtNcFZKSkJ6ZXFHVjJOOSsx
Y1JBaHMKbVdobDI3YnU3N0FzaTBRaVFTd1dJNUZJWUJnRzZYU2FTQ1NDNjdxNHJudmZySUNhMXFV
bWQvMDBwMkNwOS9wK0FaQ1N6eVN4N0ozdgpkL2NMMlNRM2JSSnhHYjhyL3YvMjdpYTJxcnlPNC9D
UHdxVzN0NlV0bllhWEVJRUd4bVRNQkxvZ0pJWlpvQnNXc0NJeE1aaTRNSWJvCmJwWm1GbXpZdUhR
NVMySmk0b0tYalM1UkUwbmNhRlJFRjhoQ3dzaExlQ3NXU3FlMHQyN21uQ2xFa0k3d2JjWTh6NGIw
bHQ1N2V0aWMKRCtmOC96OEFnQy9tdGE5RW16VUdLeStjbTUya1ZvWko4emhXODNXeksxYXpIVysz
MjYwOWUvYTBpN21iUmVyMzd0MnJYcS9YUHRZMApNREJRWTJOak5UYzNWMGVPSEtrVEowN1VvVU9I
YW14c3JEMm1wYVdsNTdia1hibHQ3dUxpWXJ0MjVOS2xTKzF1VloxT3AwWkhSMnQ0CmVMZ2VQMzdj
enZsb2R0WnFGcDAzeDk0OFl0WGNLV20yNTIwK281bUhVbFd2dkJ2UTdBYlcvSDV2VW5PT1grZDlS
d1k3dGYyZG9WcDQKb1pXdS91Nlg5Zk1mSFd1Ly92YVBmMUZmL2ZyUno5Ni9xdCt2V3BwNVZwczJk
V3RzckZOVnkrNStBQUN3YXE5MUI2UUpqNVh6SzVyWAptc1hnSzNlK3F2cjhZbnpsdHJPTGk0czFN
VEZSdTNidGFtZHRuRHg1c3NiSHgrdjgrZlAxOE9IRDJySmxTMDFNVExTTHZYZnMyRkVuClRweW80
OGVQMTlMU1V0MitmYnRkU040TUFXeUNhSEZ4c1dablo5dFE2SGE3TlRnNFdIZnYzcTF0MjdiVm8w
ZVAydU5ySHFtcXF2YlAKNW01TDgzN2RidmU1eWUzTkRsL3IxNjl2dzZNNUQ0T0RnelUwTlBUSzg5
amNwV2kySlg1VFZoVWdZeHRxWktScThZVUFlWGYvZE8yZQovcUQrOGFkTHRYdjZnM3AzLzNTTmZy
YXI3N3FxK25TeGF1VFRUbTNzZEdxa3U3RUdCbFkvekJBQUFQN3JGV3V6Y0x4WkM5SUV5TW9MCjll
Yml1dmwrODFyemVGS24wMm5YVzB4T1R0Yms1R1F0THkvWHhvMGI2L0Rod3pVMU5WVWpJeU4xOXV6
WmV2cjBhZlg3L2VwMnU3VnoKNTg0NmR1eFlIVHg0c0phWGwrdldyVnMxT2pwYW82T2p0YkN3ME03
WGVQTGtTYzNQejlmZzRHQ05qNCszMndMUHpjM1Y1Y3VYNitiTgptKzFGLytiTm0ydDJkcmJ1Mzc5
ZmMzTno3VlQybFFNSW05K3gxK3RWdjk5dkJ4WTJPMzAxd2ZMczJiTjY4T0JCK3p1L0xBQ2FPMFRy
CjE2OXZ6OFdiQ0pDTEZ5L1c2ZE9uNityVnEzWHExS2s2YytaTW5UdDM3cFUvczMyaXFqZFM5ZUtH
WGIzZE8rcm9EeitxWC8zMEovWE4KNzM1WTIzZnYrUHlieTFYcm5sV05ERlYxZXB0clpNUDEyckJo
Y0UwR0tRSUE4T1cyYnRsZXFtOVZ2OSt2YTlldTFZMGJOK3I5OTkrdgpvYUdoTmxUVzR0Ui85TWQr
SGZqS3BscDh5VWYvK21jZjF6ZSs4NFBuWGx2dVY4M1BWODNNVmwzNSs3L3F6bDkrVXg5Ly83MzJV
VG9BCkFIaGRiM1l4QXY5UnA5TnBkNzlhK2JqYVdnUklyOWV2M21EVjBrcysrdGozWG9pUHFsbzNV
TFdoVS9WNHFlclJuUnUxcy91Z25iMEMKQUFDcklVQUNlcjFlM2J4NXMyWm5aNSs3QTdJV3h0OTVW
cDJScXM0cWYyNmhVM1hucjU5VTU1TUw5YTJqaDJ0NGVOamREd0FBVmsyQQp2R1VEQXdNMU9UbFpl
L2Z1clFzWEx0UytmZnRxLy83OXRYWHIxalU1bnVGbURVaTkvai8rcmR1MzY4Ky8vWDM5OHc5L3E2
TmYyMWI3CjM1dXFYcS8zTmc4VEFJRC9VOWFBaE55NWM2ZXVYTGxTbHk5ZnJ1dlhyOWZNekV6Tno4
L0hqMk5tWm1aVmY3L2I3ZGI0K0hoTlRVM1YKZ1FNSGFucDZ1clp1M2JxbWQzRUFBUGp5RWlBaC9Y
Ni9uVlkrTnpkWEN3c0x6MDJaVDJrbXhMK3VaZ0o5TS9XOTErdDU5QW9BZ0M5TQpnSVN0bkphK0Zx
ZCt0Wi81NHBSNEFBRDRYd2dRQUFBZ3huOXBBd0FBTVFJRUFBQ0lFU0FBQUVDTUFBRUFBR0lFQ0FB
QUVDTkFBQUNBCkdBRUNBQURFQ0JBQUFDQkdnQUFBQURFQ0JBQUFpQkVnQUFCQWpBQUJBQUJpQkFn
QUFCQWpRQUFBZ0JnQkFnQUF4QWdRQUFBZ1JvQUEKQUFBeEFnUUFBSWdSSUFBQVFJd0FBUUFBWWdR
SUFBQVFJMEFBQUlBWUFRSUFBTVFJRUFBQUlFYUFBQUFBTVFJRUFBQ0lFU0FBQUVDTQpBQUVBQUdJ
RUNBQUFFQ05BQUFDQUdBRUNBQURFQ0JBQUFDQkdnQUFBQURFQ0JBQUFpQkVnQUFCQWpBQUJBQUJp
QkFnQUFCQWpRQUFBCmdCZ0JBZ0FBeEFnUUFBQWdSb0FBQUFBeEFnUUFBSWdSSUFBQVFJd0FBUUFB
WWdRSUFBQVFJMEFBQUlBWUFRSUFBTVFJRUFBQUlFYUEKQUFBQU1RSUVBQUNJRVNBQUFFQ01BQUVB
QUdJRUNBQUFFQ05BQUFDQUdBRUNBQURFQ0JBQUFDQkdnQUFBQURFQ0JBQUFpQkVnQUFCQQpqQUFC
QUFCaUJBZ0FBQkFqUUFBQWdCZ0JBZ0FBeEFnUUFBQWdSb0FBQUFBeEFnUUFBSWdSSUFBQVFJd0FB
UUFBWWdRSUFBQVFJMEFBCkFJQVlBUUlBQU1RSUVBQUFJRWFBQUFBQU1RSUVBQUNJRVNBQUFFQ01B
QUVBQUdJRUNBQUFFQ05BQUFDQUdBRUNBQURFQ0JBQUFDQkcKZ0FBQUFERUNCQUFBaUJFZ0FBQkFq
QUFCQUFCaUJBZ0FBQkFqUUFBQWdCZ0JBZ0FBeEFnUUFBQWdSb0FBQUFBeEFnUUFBSWdSSUFBQQpR
SXdBQVFBQVlnUUlBQUFRSTBBQUFJQVlBUUlBQU1RSUVBQUFJRWFBQUFBQU1RSUVBQUNJRVNBQUFF
Q01BQUVBQUdJRUNBQUFFQ05BCkFBQ0FHQUVDQUFERUNCQUFBQ0JHZ0FBQUFERUNCQUFBaUJFZ0FB
QkFqQUFCQUFCaUJBZ0FBQkFqUUFBQWdCZ0JBZ0FBeEFnUUFBQWcKUm9BQUFBQXhBZ1FBQUlnUklB
QUFRSXdBQVFBQVlnUUlBQUFRSTBBQUFJQVlBUUlBQU1RSUVBQUFJRWFBQUFBQU1RSUVBQUNJRVNB
QQpBRUNNQUFFQUFHSUVDQUFBRUNOQUFBQ0FHQUVDQUFERUNCQUFBQ0JHZ0FBQUFERUNCQUFBaUJF
Z0FBQkFqQUFCQUFCaUJBZ0FBQkFqClFBQUFnQmdCQWdBQXhBZ1FBQUFnUm9BQUFBQXhBZ1FBQUln
UklBQUFRSXdBQVFBQVlnUUlBQUFRSTBBQUFJQVlBUUlBQU1RSUVBQUEKSUVhQUFBQUFNUUlFQUFD
SUVTQUFBRUNNQUFFQUFHSUVDQUFBRUNOQUFBQ0FHQUVDQUFERUNCQUFBQ0JHZ0FBQUFERUNCQUFB
aUJFZwpBQUJBakFBQkFBQmlCQWdBQUJBalFBQUFnQmdCQWdBQXhBZ1FBQUFnUm9BQUFBQXhBZ1FB
QUlnUklBQUFRSXdBQVFBQVlnUUlBQUFRCkkwQUFBSUFZQVFJQUFNUUlFQUFBSUVhQUFBQUFNUUlF
QUFDSUVTQUFBRUNNQUFFQUFHSUVDQUFBRUNOQUFBQ0FHQUVDQUFERUNCQUEKQUNCR2dBQUFBREVD
QkFBQWlCRWdBQUJBakFBQkFBQmlCQWdBQUJBalFBQUFnQmdCQWdBQXhBZ1FBQUFnUm9BQUFBQXhB
Z1FBQUlnUgpJQUFBUUl3QUFRQUFZZ1FJQUFBUUkwQUFBSUFZQVFJQUFNUUlFQUFBSUVhQUFBQUFN
UUlFQUFDSUVTQUFBRUNNQUFFQUFHSUVDQUFBCkVDTkFBQUNBR0FFQ0FBREVDQkFBQUNCR2dBQUFB
REVDQkFBQWlCRWdBQUJBakFBQkFBQmlCQWdBQUJBalFBQUFnQmdCQWdBQXhBZ1EKQUFBZ1JvQUFB
QUF4QWdRQUFJZ1JJQUFBUUl3QUFRQUFZZ1FJQUFBUUkwQUFBSUFZQVFJQUFNUUlFQUFBSUVhQUFB
QUFNUUlFQUFDSQpFU0FBQUVDTUFBRUFBR0lFQ0FBQUVDTkFBQUNBR0FFQ0FBREVDQkFBQUNCR2dB
QUFBREVDQkFBQWlCRWdBQUJBakFBQkFBQmlCQWdBCkFCQWpRQUFBZ0JnQkFnQUF4QWdRQUFBZ1Jv
QUFBQUF4QWdRQUFJZ1JJQUFBUUl3QUFRQUFZZ1FJQUFBUUkwQUFBSUFZQVFJQUFNUUkKRUFBQUlF
YUFBQUFBTVFJRUFBQ0lFU0FBQUVDTUFBRUFBR0lFQ0FBQUVDTkFBQUNBR0FFQ0FBREVDQkFBQUNC
R2dBQUFBREVDQkFBQQppQkVnQUFCQWpBQUJBQUJpQkFnQUFCQWpRQUFBZ0JnQkFnQUF4QWdRQUFB
Z1JvQUFBQUF4QWdRQUFJZ1JJQUFBUUl3QUFRQUFZZ1FJCkFBQVFJMEFBQUlBWUFRSUFBTVFJRUFB
QUlFYUFBQUFBTVFJRUFBQ0lFU0FBQUVDTUFBRUFBR0lFQ0FBQUVDTkFBQUNBR0FFQ0FBREUKQ0JB
QUFDQkdnQUFBQURFQ0JBQUFpQkVnQUFCQWpBQUJBQUJpQkFnQUFCQWpRQUFBZ0JnQkFnQUF4QWdR
QUFBZ1JvQUFBQUF4QWdRQQpBSWdSSUFBQVFJd0FBUUFBWWdRSUFBQVE4Mi9HemhYbFNJdk9rZ0FB
QUFCSlJVNUVya0pnZ2c9PQoKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9u
ZXN0ZWQtYmxvY2tzLXdpdGgtdGV4dC1hcmVhLWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5v
dCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0g
aW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvbmVzdGVkLWJsb2Nrcy13aXRoLXRleHQtYXJlYS1leHBlY3RlZC5wbmcKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgaW1hZ2UvcG5nCgoKaVZCT1J3MEtHZ29BQUFBTlNV
aEVVZ0FBQXlBQUFBSllDQVlBQUFDYWRvSndBQUFnQUVsRVFWUjRuTzNkZlpqVmRaMzQveGQzRWdx
bQp3WVFTaG9TNm9MSmltSmwzRzlhYUdacVhodHFtSnBheGwyMnVsYlhsTnpXN1NxT2w3RTRUdGp0
amRiMWQxanZFaFZDVXhKUWI5OUtWClF0QzZ0Slk3aFJTNWgvZnZEeS9tTnh4bXpwa3pNN3hHN1BI
NHk1bHo1bjNlbjd2M09VL09tYkZMS2FVRUFBQkFncTZkUFFFQUFPQ3YKaHdBQkFBRFNDQkFBQUND
TkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0ROTGg4Z2E5YXNpUmRl
ZUtIRgoyMTk2NmFWNDl0bG5FMmZVTVdwdFYxdXRXN2N1L3ZDSFAzVDR1RHRydmp2THpqNHZkdFh6
cnBZMWE5YkVuLzcwcHhadjM1bmIvVWJaCnA4dVhMNCtaTTJmR3l5Ky8zTmxUcVduTGxpM3h1OS85
cnNYYmF4M1BEUnMyeEtPUFB0b2hjOWxaYTA4dHU5cmE5TmVxMXZYOVpqdU8KVGRlUmV0YTJXdGRr
cld1K3ZmZmZHVjU4OGNWT2ZmeEtuWG11dGZiNXBmS2M2Y2kxT3NzYk1rQkdqeDRkZSsrOWQ1eDAw
a2x4NXBsbgpScmR1M1dMdzRNSHhzWTk5TEk0OTl0am8xcTFiL09wWHY0cWJiNzQ1K3Zmdkg1TW5U
MjV4ckN1dXVDSk9PKzIweE5tM1gydTJxeTF1CnZmWFdHREJnUUh6dmU5L3IwSEYzMW54M3BwMTlY
dXlLNTEwdEV5ZE9qTDU5KzhidHQ5L2U0bjEyNW5hL0VmYnBwRW1UNHBaYmJvbFoKczJiRklZY2NF
aHMyYk9qVStWVHp4Qk5QeElnUkkrSXpuL2xNczdmWE9wNi8vZTF2NDRnampvalRUeis5M1hQWldX
dFBMYnZpMnZUWApxdHIxL1dZN2pwWHJ5UC83Zi8rdlZXdGJyV3V5MWpYZjN2dnZEQXNYTG94RER6
MjAweDYvVW1lZWEvVTh2elM5WGpweXJVNVYzb0JPClBQSEU4dHh6enpWKy9aYTN2S1djZi83NWpW
OS85N3ZmTFJNblRpeWxsREpzMkxEeXJXOTlxOFd4VnE1Y1dSWXRXbFQzSE5hdlgxOW0KenB4Wjk4
OTExQmkxdHF1dGpqbm1tUEs1ejMydTNlTlVibHQ3NXRzUis3cGViVDB2M2lqamQ1YisvZnVYYTYr
OXRzWGJPM0s3SzgrTAp6dDZuYTlhc0tYdnNzVWZac21WTEthV1UzL3ptTnltUDI1N3I0NS8rNlov
S0NTZWMwT0x0dFk3bmhBa1RTdi8rL2R2MDJKVTZhdTJwCjE4NWFTM2NWN1YxZnM5Ym55dXU3STU5
amF1bkliYXcxVm5QclNEMXJXNjFyc3RZMTM5NzdkN1NsUzVlVy9mZmZ2L0hyem5nOVVLa3oKMW94
Nm4xOHF6NW1PWEt1enZDSGZBZm5DRjc0UWd3Y1BidkgyY2VQR3hTR0hIQklSRVQxNjlJZ3VYYnEw
ZU4rK2ZmdkdnUWNldU1QMwpTeWt0L3N5bVRadmkzSFBQalVjZWVhU09XVzgvWmx2SDJLYldkclZW
ejU0OVd6VnV2ZnVudGZQZHZIbHp6YkhhT3EvS3NhdjlYRXZuClJYc2V2eVBHcjFSdG16cERXNisz
V2xwelhuVFVQbTJycDU1NktqWnUzQmhkdTc2K2JCNTk5TkU3NVhFNlloM1p1blZyUkVSMDc5NjkK
Y2I3TnFYVThkOXR0dHc1Ymh6cGk3V21MbmJXV3ZsRzE5dnhwemRwUzdlYzcramcxdmI3Yjh4eFRx
ZFoydHZlNXV0NnhtbHRINmxuYgpXcm9tVzN2TnQvWCs5YWpuM09qZnYzOE1IVG8wSWpyMldGU3E1
L1ZCWjZ3WjFaNWZtcHQ3NVRuVGtXdDFsdTZkUFlIbWZPaERINnA2Cit4NTc3QkhISEhOTTQ5ZGJ0
MjZOSzY2NEluNzV5MS9Hbm52dUdmZmNjMDhNSGp3NC91Ly8vaThtVDU0Y1U2Wk1pVGx6NWtURTZ4
OEYKZVBubGwrT1ZWMTZKdSs2NnE5blB6SDMvKzkrUHUrKytPeFl2WGh4TGxpeUo2NisvUHRhc1dS
UGp4NCtQZWZQbXhabzFhK0s2NjY2TApvNDQ2cXNVeG14dGpqejMyMk81eDFxMWJGOS84NWpkanp6
MzNqUG56NThkNzN2T2V1UFRTUzJ0dVYwVEVzbVhMV3B4UHJYRzNXYkJnClFYem1NNStKNDQ4L1Bz
NDk5OXdZTVdKRW0vZFByZm4rK3RlL2pybHo1MGFYTGwzaXJydnVpb2tUSjhhaGh4NWFjei9ObURF
amZ2YXoKbjhVQkJ4d1Ftelp0aWwvKzhwZXgyMjY3eGM5Ly92UDQ0QWMvV0hYc2xvNU41WG54NElN
UHhzU0pFMlBnd0lFeGJOaXd1UHJxcTZOSApqeDV4Ly8zM044NS83ZHExOGVVdmZ6bmUvdmEzeCt6
WnMrTnRiM3RiSEg3NDRYSDAwVWZIY2NjZHQ5MythY3Y0bGFwdFU2VnF4M3ZOCm1qWHhsYTk4Slhy
MjdCbExsaXlKZDc3em5URisvUGpvMWF0WExGNjhPQ1pObWhTYk4yK09VYU5HeFJWWFhCSGR1bldM
SC8zb1I5RzcKZCsrNDZxcXI0amUvK1UxODduT2ZpOHN1dTZ6eDhkYXVYUnVYWG5wcFRKNDhPUVlP
SEJqLy91Ly9Ic09HRFd2VGRyZjJ2TGppaWl2aQp6anZ2M081YXJyWnRiZG5uMWNiNzZVOS9HbmZj
Y1VkczNydzVQdnZaejBhdlhyMWl3b1FKMi8xOGF4NnoyblhiMm5XazJscTA3ZGpzCnM4OCs4ZWMv
L3puKzkzLy9OOTd5bHJjMHU3MjFqbWU5KzZqV3VkaFVXOWVlLy96UC80eHg0OGJGc2NjZUc3LzR4
Uy9pdi83cnYrSkwKWC9wU2pCZ3hJbjd5azUvRUFRY2NFTi83M3ZkaXlwUXBNWDM2OU1adGI4dGFP
bi8rL0pnNGNXSTBORFJFcjE2OTR2dmYvMzdjZDk5OQpNV2pRb0JiM2Z6MzdxNzNuUzZYV25qK1BQ
ZlpZczlkY2M5dDc5dGxuNy9Eejk5NTdiNGNmcDFXclZtMjNkclRsT2FaU2E5ZlFlcTZ4CmVmUG14
VmUvK3RYNDA1LytGTmRkZDEzMDZkTW5McmpnZ3ZqQ0Y3NFFuL3prSjJzK256VzNqbnp4aTEvYzRY
VktQY2U5M211KzF2MXIKWGVQMXJtR3RPYy8vN3UvK3JzVmowZHJYVFMxZHI2KysrbXBkcncrMnFl
ZGNxN2JQV3ByWGtVY2VXZlc4bURCaFFvdm5jSE92YlhkSgpuZlBHUzMwcVA0TFYxTi8rN2QrV3d3
NDdyTXlZTWFPODhNSUxaZWpRb2VYVG4vNTBLYVdVNWN1WGwzLzh4MzhzL2ZyMUs2V1VzbW5UCnBu
TEVFVWMwL3V6blAvLzV4cmU3S3UyLy8vN2w2cXV2THFXVXNubno1dkxoRDMrNHZQTEtLMlhMbGkx
bDNMaHhwYUdob2F4YXRhcnEKbUUzSGFNNUpKNTFVNXN5WlUwb3BaZTdjdVNVaXlyeDU4MnB1VjdY
NTFCcjNoQk5PS0JkZmZIRXBwWlFiYnJpaDNIampqWTN6YWV2KwpxVFhmRFJzMmxIZTg0eDJOYjZ0
Ky9ldGZMMmVjY1VhTFl6WDEvUFBQbDdlLy9lMWw4T0RCNVpGSEhpbXpaczBxaHgxMldObHZ2LzFx
Cmp0M1M5bFNlRjB1WExpMEhIWFJRR1RwMGFMbm5ubnZLSC83d2gvSTNmL00zNWNJTEwyejgyUi85
NkVmbGkxLzhZaW1sbEtlZWVxcEUKUkJrL2ZuejV3eC8rc01PYzJ6SitVN1gyVjZWcXgvdjQ0NDh2
di9yVnIwb3BwV3pjdUxFY2VlU1JaZlRvMGFXVVVoWXZYbHdPUC96dwpNbmp3NEhMSEhYZVV0V3ZY
bGpGanhwUUREamlnWEgzMTFXWGx5cFhseWl1dkxGMjZkQ2t2di94eUthV1VnUU1IbGtNT09hVGNm
ZmZkClplYk1tV1gvL2Zjdjczclh1OHFtVFp2cTN1NTZ6b3ZLc1d0dFc3Mzd2Tlo0cFpSeTIyMjNs
YTVkdTdiNDg3VWVzeVBXa1ZyWC9rYysKOHBGeXl5MjNsRkpLMmJKbFN4a3dZRUQ1KzcvLyt4Ym5Y
TzE0bGxMS0QzLzR3N0xQUHZ1MGVoOWxyRDN2ZnZlN3l3VVhYTkQ0OWZ2ZgovLzR5ZHV6WXhxL3Z1
KysrOG90Zi9LTHg2N2F1cFhQbXpDbDc3NzEzR1RGaVJMbmpqanZLdUhIanlzS0ZDNnZ1LzBydE9V
ZHJIZXVtClduditWTHZtbXR2ZVJZc1diZmZ6TytzNE5YZDkxL01jVTZuZU5iU2VhMnpHakJrbElz
cjk5OTlmcGs2ZFdyNzN2ZSsxT0Zaekt0ZVIKeW0ydjlmaVYxMlM5MTN5dCsxYzdaOXV5aHJWbUxW
NnhZa1dyOTE5TGEweHo1Ky9UVHo5ZDkrdURVdW83MTJydHM1YXVxMHFWNTBXMQpjN2k1NjZYeXZO
Z1Z2Q0UvZ2xXdjBhTkh4d2MrOElFWU9IQmdqQm8xcXZFdk9qUTBOTVR3NGNNYjMxNWJ2WHAxUFBu
a2t6RjE2dFNJCmlMand3Z3VydmxXNDdlMnMyMjY3TFVvcDhjZ2pqOFMwYWROaTMzMzNqUlVyVnNU
RER6OWNjOHlXM2hLYk9YTm1MRml3SU43NzN2ZEcKUk1USWtTUGpoaHR1aUVHREJ0WGNybXJ6YWMy
NEVSRTMzSEJEOU8zYk44NDc3N3pHNzdWMS85U2FiNDhlUGVMMDAwK1B3dzQ3TENKZQpmK3R3NGNL
RlZjZmFadi85OTQvOTl0c3ZUajMxMURqMjJHUGorT09QajF0dXVTVmVlT0dGV0xod1lkV3hXOXFl
eXZPaWYvLytNV1RJCmtCZytmSGlNSGowNkJnMGFGQ2VjY0VMOC92ZS9iNXpINU1tVG8yL2Z2aEVS
Y2VpaGgwWkRRME5FeEE3N05XTEg4NjQxNHpmVm12MjEKVGJYalBXM2F0Smc5ZTNhY2ZmYlpqZU5l
Y01FRmNlKzk5OGFjT1hOaXlKQWhNV0xFaURqa2tFUGlqRFBPaUY2OWVzVnBwNTBXZi96agpIK09y
WC8xcTlPM2JOeTY1NUpJb3BjUWYvL2pIeHNjODc3eno0cFJUVG9sUm8wYkZ0Ny85N1hqdXVlZGl4
b3daZFc5M1BlZEY1ZGkxCnRxM2VmVjVydk5hbzlaZ2RzWTVVRytPeHh4NkxxVk9uTnI2RDNMVnIx
emo1NUpOcnpydWw0MW52UHNwYWU4YU9IUnNQUFBCQTQwZEkKUHZqQkQ4WTk5OXpUK0RHRkdUTm14
Smd4WTdiN21iYXNwVWNkZFZRTUhUbzBoZzBiRm1lY2NVYmNjTU1Oc1dEQmdoYnZYKy8rYXMvNQpV
cW0xNTArMWE2NjU3ZDMyRVk5dFA3K3pqbFBsOVYwNTcxckhzVkk5YTJqbFk5WGE3eC80d0FmaXJM
UE9pc3N1dXl3bVQ1NGNGMTk4CmNZdGp0VWJsdHRkejNPdTk1bXZkdjlZNTI1WTFyRFZyY2I5Ky9W
cTEvNnF0TWMyZHZ3Y2ZmSERkcncrMmFlMjVWbXVmVmJ1dXFxbDIKRHJkMHZleHEzaFFCMHZSazNY
dnZ2V1BObWpYYjNiYnQ5bjc5K3NYcHA1OGVwNXh5U256MnM1K04vZmZmUDdwMTYxWnozRGx6NWtU
Zgp2bjFqdDkxMmk5MTIyeTJPT2VhWW1ENTllb3djT2JMbW1DMWRTQTgvL0hBY2ZmVFIyOTArYnR5
NHhoZTUxYmFyMm54YU0rN1VxVlBqClc5LzYxZzRmZFd2ci9xazEzeTVkdXNRUGYvakRXTDE2ZFl3
ZlB6NW16Wm9Wcjc3NmF0V3hLbTlyT28raFE0ZkczbnZ2SFRObXpLZzYKZHJYdGFYcGVOUGQxbno1
OVl2MzY5ZHQ5M2ZTRjZENzc3Tk80Q0xZMDUzckdyL3paV3Z0cm0yckgrL0hISDQrR2hvYm8wYU5I
NDIzYgozdlpkc0dCQjQyTTExYWRQbisyKzNuUFBQU01pWXNXS0ZZM2ZlK3RiMzlyNDM5dmVldC8y
NXdEcjJlNTZ6NHVtWTdWMjIxcTd6MXN6ClhtdFVlOHlPV0VlcWpmSFFRdy9GMEtGRFk2Kzk5bXI4
dWQ2OWU5ZDhNVlR0ZU5hemo3TFdubzkvL09PeFlzV0t4cytKUC8zMDAvSGEKYTYvRnIzLzk2MWkv
Zm4xczNicDFoNDl0dEdVdGpZam8xYXRYNHo4MnRPYis5ZXl2YmZOcXkvbFNxYlhuVDYxcnJuSjdL
MzkrWng2bgp5bjNSOUhHYis3cnl1Yjd5ZnExZFF5dkhiczErbnpCaFFpeGF0Q2hHamh6WjdQYlgr
MW44cHR0ZXozR3Y5NXF2ZGY5YTUyeGIxN0I2CjF1SnQ5MjlPclRXbTh2eHQ2K3VEeWpsVU85ZGFj
NTIzZEYxVlUrc2NidTU2MmRXOElYOEhaR2U2K2VhYlk4Q0FBZkdESC93ZzVzK2YKSHc4ODhFRGpp
NnlXckZ5NU1ycDM3OTc0T3djZE1lYXlaY3ZpNmFlZmJ0TTJWSnRQYThZOTdyampZdGFzV1hISkpa
ZkV6MzcycysxdQphOHUydE1iRWlSTmo5dXpaOGZPZi96eCsrdE9meHVPUFA5NnU4YnAyN1JyZHUz
ZXZPWFpIYmMvblAvLzVPUC84OCtPcHA1NktuajE3Cnh1Njc3OTc0dWRXZG9iWDdxOXJ4WHJ0MmJh
eGN1VExXckZrVHZYdjNqb2lJNGNPSFIvZnUzZU8xMTE1cjltZTZkdTI2dzR2K2FnWU4KR2hSOSt2
VFpJVnhhcTYzblJWdTJMWE84NW5URU9sSnRqQmRmZkRGV3JseTV3L2ZyZVpLcWRqeHI3YU9zdGFk
djM3NHhldlRvdU9tbQptMkt2dmZhS0k0NDRJcnAyN1JxMzNISkwvT1V2ZjZuclR6WFhPaWJ0dVg5
N3o2bDY1OWJhL2RmZXRiZ3pqbE5idEhVN1c3UGZlL1RvCkVRME5EZkdkNzN3blB2V3BUMjMzZ3I2
OTZqbnU5Vjd6dGU1ZjY1emRHYStGNnRHVzEwMDcrL1hCem56dTZPalhUVzgwYjRwM1FGcHIKNmRL
bHNYejU4cmoyMm10ajJyUnA4ZFJUVDhVdHQ5elM0djIzWFpTREJ3K082ZE9uYjFmc3BaUjQ2S0dI
YW83WjBrSXdhTkNnZVBiWgpaMlBKa2lYYmpkbWFmMjJ0TnAvV2pOdW5UNStZUEhseTNIampqWEhu
blhlMmUvL1U4c3d6ejhSRkYxMFVFeVpNMk81ZkNkb3lWa1RFCm9rV0w0cVdYWG9wM3YvdmRWY2V1
ZDN1cU9mbmtrK1BDQ3krTWFkT214ZHk1YytQQkJ4OXMweml0MFpyOXRVMjE0ejEwNk5EWXNtVkwK
UFBIRUU0MjNMVisrUERadjN0emlMeG5YNjg5Ly9uTzgrdXFyY2ZqaGg5ZjlzKzA1THpwNjJ6TDJW
VWVzSTlYR0dEQmdRS3hZc1NJVwpMVnJVNWpsV081NjE5bEhtMm5QKytlZkg3YmZmSHYvMmIvOFdu
LzcwcDJQczJMRXhaY3FVbURGalJsMy9NRkJ0ZjdiMy91MDlwK3A1CnJOYWVQL1dzTFUxdCsvbnM0
OVRXZitGdHkzYTI1aHJiNXZMTEw0K3BVNmRHbHk1ZDR2TExMKyt3ZWJmMjhiZXA5NXF2ZGY5YTUy
eDcKMXJCNmROVHJwb3pYQnp2cnVhT3QxK3F1NUEwZklGdTNibzJOR3plMitIK0ZYTHQyYmF4ZHU3
Yng2M1hyMXNXNmRldTJ1MzNkdW5WUgpTb21YWG5vcGJyMzExb2lJT1BIRUUrT2pILzFvWTdGVzJt
dXZ2UnIvNzV5alI0K09aY3VXeGJoeDQyTFZxbFd4ZlBueStNWTN2aEVICkhuaGcxVEdianJGcTFh
cnR4ai9yckxQaUxXOTVTNHdkT3pZV0xsd1lDeGN1akM5LytjdXgzMzc3MWR5dVQzemlFeTNPcDlh
NG16ZHYKamxKS0hIMzAwZkdWcjN3bFB2V3BUelYrdHJHdCsyZlZxbFZWNTd0dzRjTFl1blZyUFBQ
TU03Rmx5NWFZTld0V3JGKy9Qa29wVVVxcAp1cCsyZWVtbGx4ci8rOEVISDR6ampqc3UzdnZlOTFZ
ZGUrWEtsUzF1VDlQeklpSmk0OGFOalo5VjNuYjdsaTFiR3IrKzZxcXI0cUNECkRvcUxMNzQ0L3VF
Zi9xSHhMNEswcE43eG02cTF2NXFxZHJ6SGpCa1RBd2NPak9uVHB6ZmVmKzdjdVRGMDZOQTQ2YVNU
SXVMMVAzdlkKZEI0Yk5teUlMVnUyeEtaTm15TGkvLy96ZjAzbjN2VCtNMmZPak5OT082M3hjNnIx
YkhlOTUwWFRzVnV6YmZYczg5YU05OG9ycjhUVwpyVnUzTzg4clZYdk1hdGR0YTllUmFtdlJXV2Vk
RmQyN2Q0OGJicmloOGZGLzk3dmZ4Y3FWSzF2YzdvanF4M1BqeG8yTjUwS3RmWlMxCjlrUkVmUGpE
SDQ2ZVBYdEd0MjdkNHExdmZXdWNjTUlKc2VlZWU4YSsrKzY3dzR1WHRxNmwyK2JjOVBtazF2MmJh
dTg1V3M5anRmYjgKZWVLSko2cGVjNVhiVy9uenp6MzMzRTQ5VGszWGpucWVZeXJWczRaV1BsYTFh
eXppOWMvOEgzamdnVEZzMkxBWVAzNTgvT1FuUDludQpCWEN0NTdQbTFwR20yMTdydURlOUp1dTk1
bXZkdjlZNTI5WTFySjYxdUQydm15clAzL2E4UG1qdHVkYWE2N3k1NjZwUzVYbFI2eHh1CjdybDIy
M214eTJqZjc3RHZYRTgvL1hRWk4yNWNpWWp5MXJlK3RYejN1OTh0Zi9uTFh4cHZ2K09PTzByWHJs
M0x3UWNmWEJZc1dGRG0KejU5ZmhnMGJWcnAzNzE3dXZ2dnU4dHZmL3JhODczM3ZLeEZScnIzMjJy
Smd3WUl5Wk1pUU1uSGl4SExYWFhlVml5NjZxUEd2dlZTNgo3TExMU3BjdVhjb0ZGMXhRbGkxYlZu
N3lrNStVbmoxN2xpNWR1cFNHaG9ZeVpjcVV4am0yTkdibEdKV21USmxTR2hvYVNrU1VRWU1HCmxk
bXpaN2RxdTBvcExjNm4ycmkzMzM1NzZkMjdkeGt5WkVoNTlORkh5NUlsUzhydXUrOWU5dDEzMy9M
akgvKzQ2clpVMno4Lys5blAKcXM3M3RkZGVLeU5HakNpOWUvY3VZOGVPTGZmZGQxL1pmZmZkeXpu
bm5GTTJiTmhRY3o4ZGNjUVJaY1NJRWVYeXl5OHZWMTExVlRueAp4QlBMMHFWTFN5bWw2dGd0SGUv
SzgyTEdqQmxscjczMktnTUdEQ2h6NXN3cFR6NzVaRG5nZ0FOS3o1NDl5My8vOTMrWFVrcTU1SkpM
ClNrU1VpQ2pkdW5Vci9mdjNMeGRkZEZIWnNHSEREdk50eS9oTjFkcGZyVDJQU2lsbC92ejU1ZUNE
RHk3LytxLy9XcVpPblZyT1B2dnMKc25EaHdsTEs2MytkWThDQUFhVi8vLzdsd1FjZkxNOC8vM3da
UFhwMGlZaHk1WlZYbHRXclY1ZHZmdk9iSlNMS21XZWVXVjU4OGNWeQo1WlZYbHVIRGg1ZHZmL3Zi
NVpwcnJpbi8vTS8vWEY1NTVaVTJiWGM5NThYOTk5Ky8zZGdiTm15b3VtMnpaczJxYTUvWDJsZVBQ
ZlpZCk9lNjQ0MHBFbEVzdnZiUXNXYkpraDU5dnpXTjJ4RHBTN2RxLzZhYWJTcDgrZmNxd1ljUEtt
V2VlV1U0NTVaUnk5TkZIbDV0dXVxbloKYmE1MVBFZU9IRmtpb2x4Ly9mVTE5M20xYzdFajE1NXRM
cjMwMHJKNDhlTEdyeSsvL1BMdHZpNmxmV3ZwVFRmZFZQYllZNCt5Nzc3NwpsbHR2dmJWeHpHcjd2
MUo3ejlIV1BsWnJ6NS9ubjMrK3hXdnV4aHR2YkhaN20vNzhyRm16ZHNweHFsdzdLcS8vV3M4eGxl
cGRRMXQ3CmpjMmNPYlBzczg4KzVja25ueXlsbFBMTU04K1VidDI2bGNHREI1ZmYvdmEzelk3VlZI
UHJTSFBiM3RMak4zZE4xbnZOMTdwL3JXdTgKM2pXczNyVzRyYStibXJ0ZTIvTDZvRFZyUnFWcSs2
eWxkYVRXZVZGdDdyTm56OTd1bkprOWUvWU81OFd1b0VzcHUvaXYwZGRoNjlhdAowYlZyMTFpOWVu
WDA2TkZqaDE5VXJMUnk1Y3J0L2pyRHhvMGI0NFVYWG9oQmd3WTEvdjVCclRFcng2aFVTb25seTVk
SC8vNzk2OTZlCjV1YlRubkhidTM5cVdiZHVYZU03QjVzMmJkcnViY1ZxWTczblBlK0o0NDgvUHI3
eGpXL0UyclZybS8xbHJ1YkdybmQ3cXJubW1tdmkKWXgvN1dLeGZ2ejVlZmZYVldMMTZkZHgyMjIx
eHpqbm50UG96MnZXcXRyOHFWVHZlcFpSWXZIaHhkTzNhTllZTUdkSWhjMXU2ZEduMAo2OWR2aC9P
dUxkcDZYa1IwL0xidGpIMVZxU1BXa1dyWC9wWXRXMkxWcWxYUnIxKy9XTDkrZmMzL0QwaEVmY2V6
MWo3S1dIc2lYbiszCnJtZlBuaTErWFk5cSs3Tzk5Mi92T2RXYXg2cjMvS2xuYlduNjg5bkhxZDdu
bUVyMWJHYzkxMWd0N1oxM3ZZOWY3elZmNi82MXp0bTIKckdIMTZPalhUVHY3OWNHMk9lMk01NDU2
cjlWZHlWOVZnTEJyMmhZZzMvM3VkenZsOFNkTm1oUzMzWGJiRG4rYTlJRUhIb2doUTRiRQpBUWNj
MENuekFnRFlGZjNWL1JVc2RpMWJ0MjZOUC8vNXo5djkwbG0yOTczdmZYSHh4UmZIbURGall1VElr
YkZ1M2JwWXRteFpqQjQ5Cldud0FBTlRKT3lDOG9kMTQ0NDJOdjVEMnJuZTlLejcrOFk5M3lqeis4
cGUveE1NUFB4eExseTZOVWFOR0NROEFnRFlTSUFBQVFKbzMKL0ovaEJRQUEzandFQ0FEdDl0SkxM
OFd6eno3YjJkTUFZQmNnUUFCb3R5dXV1Q0pPTysyMHpwNEdBTHNBdndNQ1FOMDJiTmdRano3Ngph
SXdhTlNvaVhuOEg1T1dYWDI3Mi85UU5BRTE1QndSZ0Y3ZDU4K1lXYjJ2cDM1amE4MjlQbXpadGlu
UFBQVGNlZWVTUnh1LzE3ZHQzCnA4U0hmeU1EZVBQeC93RUIyRVg5K3RlL2pybHo1MGFYTGwzaXJy
dnVpb2tUSjhhaGh4NGFFUkczM25wcnZQenl5L0hLSzYvRVhYZmQKRlk4KyttalY3eTlidGl6R2p4
OGY4K2JOaXpWcjFzUjExMTBYUngxMVZNeWZQejhtVHB3WURRME4wYXRYci9qKzk3OGZaNTk5ZHR4
OQo5OTJ4ZVBIaVdMSmtTVnh4eFJWeDU1MTN4cFFwVTJMT25Ea1JFYkZtelpyNHlsZStFajE3OW93
bFM1YkVPOS81emhnL2ZuejA2dFVyCkhuend3Wmc0Y1dJTUhEZ3doZzBiRmxkZmZYWDA2TkVqN3Iv
Ly9oZzhlSERWZVFLdzZ4TWdBTHVnalJzM3hpYy8rY21ZUEhseWpCbzEKS3RhdFd4ZGYvL3JYNDQ0
Nzdvak5temZIaEFrVDRva25ub2lJMStOaTY5YXRzWFhyMW1hL1gwcUpzV1BIeHEyMzNocDc3TEZI
WEhUUgpSWEhxcWFmR29rV0xZdVBHalhINzdiZkhvRUdENG10ZisxcWNjY1laY2ZIRkY4ZTk5OTRi
WThhTWlhOSs5YXV4WXNXS2VQNzU1MlB4CjRzV044L3ZJUno0U24vNzBwK1BjYzgrTlRaczJ4YkhI
SGh0bm5ubG0zSFBQUFhId3dRZkhnZ1VMNG4vKzUzL2kvZTkvZjh5Y09UTSsKOUtFUHhUWFhYQk9U
SmsxcWNmNWR1M3JUSHVETndHb09zQXZxMGFOSG5INzY2WEhZWVlkRnhPc2ZnVnE0Y0dGRVJLeGV2
VHFlZlBMSgptRHAxYWtSRVhIamhoVkZLYWZIN3Q5MTJXNVJTNHBGSEhvbHAwNmJGdnZ2dUd5dFdy
SWlISDM0NGpqcnFxQmc2ZEdnTUd6WXN6ampqCmpMamhoaHNhUDJyVnBVdVhpSWhvYUdpSTRjT0hO
MzVjYXRxMGFURjc5dXc0Kyt5ekcrZDZ3UVVYeEwzMzNodHo1c3lKL3YzN3g1QWgKUTJMNDhPRXhl
dlRvR0RSb1VKeHd3Z254KzkvL3Z1cjhBWGh6RUNBQXU2QXVYYnJFRDMvNHcxaTllbldNSHo4K1pz
MmFGYSsrK21wRQpSUFRyMXk5T1AvMzBPT1dVVStLem4vMXM3TC8vL3RHdFc3Y1d2ejluenB6bzI3
ZHY3TGJiYnJIYmJydkZNY2NjRTlPblQ0K1JJMGRHClJFU3ZYcjJpb2FHaDJUazAvZTl0WHovKytP
UFIwTkFRUFhyMGFMejl5Q09QaklpSUJRc1c3SEQvaUlnK2ZmckUrdlhycTg0ZmdEY0gKSDhFQzJF
Vk5uRGd4WnMrZUhULy8rYy9qcHovOWFUeisrT09OdDkxODg4MHhZTUNBK01FUGZoRHo1OCtQQng1
NElQYmNjODltdjc5eQo1Y3JvM3IxN2ZQQ0RIK3lRZWExZHV6WldybHdaYTlhc2lkNjllMGRFeFBE
aHc2Tjc5Kzd4Mm11dnRXcU1sdVlQd0s3UE95QUF1NkJuCm5ua21McnJvb3Bnd1ljSjI3elJFUkN4
ZHVqU1dMMThlMTE1N2JVeWJOaTJlZXVxcHVPV1dXMXI4L3VEQmcyUDY5T21ONzBCRXZQN1gKcHg1
NjZLR3FjMmo2RGtaVFE0Y09qUzFidGpUK0RrZEV4UExseTJQejVzMHhiTml3bXR2VzBqd0JlSE1R
SUFDN29JVUxGOGJXclZ2agptV2VlaVMxYnRzU3NXYk5pL2ZyMVVVcUpsU3RYeHEyMzNob1JFU2Vl
ZUdKODlLTWZqZDY5ZThkTEw3M1U3UGMvOFlsUHhMSmx5MkxjCnVIR3hhdFdxV0w1OGVYempHOTlv
L0YyUHpaczN4N3AxNjdaNy9MMzIyaXRlZlBIRmlJaFl0V3BWckYyN050YXRXeGVsbEJnelprd00K
SERnd3BrK2YzbmovdVhQbnh0Q2hRK09razA2S2lOZC9pWDdyMXEyTnQ2OWR1emEyYk5rU0VkSGlQ
Q05lLy8rUFhIMzExWTJQRGNDdQp4MGV3QUhaQkgvN3doMlBFaUJGeDZxbW54cGd4WStLODg4Nkxl
KzY1Sjg0Nzc3ejQ0aGUvR0QvKzhZOWo5OTEzajMzMjJTZjIybXV2Ck9QUE1NK1Azdi85OXM5L3Yz
cjE3WEgvOTlYSEpKWmZFNU1tVG8xKy9makZwMHFSNHh6dmVFVGZmZkhQTW16Y3ZubjMyMmJqdHR0
dmkKekRQUGpJaUlrMDgrT2E2NTVwcDQ3YlhYWXN5WU1YSG5uWGZHYTYrOUZqLzR3US9pb29zdWly
dnZ2anZPT2VlY2VOdmIzaGFISEhKSQovTWQvL0VkTW1USWx1bmZ2SGc4Ly9IRE1uVHMzZHQ5OTkz
anNzY2VpVjY5ZU1XM2F0SGpoaFJkaSt2VHBNV0RBZ0dibkdSSHgzSFBQCnhkZSs5clVZT0hCZ25I
ZmVlWjE1Q0FCb0kvOG5kSUJkMkxwMTY2SlhyMTRSOGZyL0lMQkhqeDZOZjdKMjllclYwYU5Iajlo
amp6MGkKSWxyOC9qWWJOMjZNRjE1NElRWU5HaFRkdTlmKzk2bVZLMWRHdjM3OVdyeTlsQktMRnkr
T3JsMjd4cEFoUTFxOVRiWG11V0xGaW1aLwpLUjZBWFlNQUFRQUEwdmdkRUFBQUlJMEFBUUFBMGdn
UUFIaURhK2xQSGdQc2lnUUlBQUNReHAvaEJkNTBMcjMwMHM2ZUFrUkV4SVFKCkV6cDdDZ0J2T0FJ
RWVOTTU2S0NENGpPZitVeG5UNE8vY3BNbVRlcnNLUUM4SWZrSUZnQUFrRWFBQUFBQWFRUUlBQUNR
Um9BQUFBQnAKQkFnQUFKQkdnQUFBQUdrRUNBQUFrRWFBQUFBQWFRUUlBQUNRUm9BQUFBQnBCQWdB
QUpCR2dBQUFBR2tFQ0FBQWtFYUFBQUFBYVFRSQpBQUNRUm9BQUFBQnBCQWdBQUpCR2dBQUFBR2tF
Q0FBQWtFYUFBQUFBYVFRSUFDU2JOMjllbkhqaWlYSElJWWZFUXc4OUZQUG16WXZECkRqc3Nicnp4
eHM2ZUdzQk9KMEFBSU5uSWtTUGpYLzdsWCtLWlo1Nko5ZXZYeC9MbHkrUDg4OCtQVDM3eWs1MDlO
WUNkcm50blR3QUEKL2hwOTRBTWZpTFBPT2lzdXUreXlHRHAwYUV5ZVBMbXpwNEc3SGpjQUFBd0tT
VVJCVkFTUXdqc2dBTkJKSmt5WUVJc1dMWXFSSTBkRwp0MjdkT25zNkFDa0VDQUIwa2g0OWVrUkRR
ME44NXp2ZmlkV3JWM2YyZEFCUytBZ1c4S1kwYWRLa3pwNEMxSFQ1NVpmSDFLbFRZOVNvClVYSDU1
WmZIajM3MG84NmVFc0JPMTZXVVVqcDdFZ0R3MTJiYXRHbngxRk5QeFplKzlLVzQ4Y1liNDFPZits
UTg4Y1FUY2ZqaGgrOXcKM3k1ZHVvU25hK0ROd2tld0FDRFpndzgrR0dQSGpvMFRUend4SWlLT1BQ
TElpSWc0NDR3ejR2SEhIKy9NcVFIc2RONEJBWUEzT08rQQpBRzhtM2dFQkFBRFNDQkFBQUNDTkFB
RUFBTklJRUFCNGcvUDdIOENiaVFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBCjBn
Z1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFE
U0NCQUFBQ0NOQUFFQUFOSUkKRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFF
QUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQQpBQ0NOQUFFQUFOSUlFQUFBSUkw
QUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFn
CmpRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFB
QUNDTkFBRUFBTklJRUFBQUlJMEEKQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJ
RUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQQpBTklJRUFBQUlJMEFBUUFB
MGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJB
QURTCkNCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05B
QUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1EKQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJ
STBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQQpJSTBBQVFBQTBnZ1FB
QUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NC
QUFBQ0NOCkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFO
SUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUIKQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFR
QUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQQowZ2dRQUFBZ2pR
QUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUND
TkFBRUFBTklJCkVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFB
QUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUEKQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdn
UUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZwpqUUFCQUFE
U0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVB
QU5JSUVBQUFJSTBBCkFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBB
QVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUEKQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFn
alFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEUwpDQkFB
QUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlF
QUFBSUkwQUFRQUEwZ2dRCkFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEw
Z2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUEKSUkwQUFRQUEwZ2dRQUFBZ2pRQUJB
QURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTgpB
QUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJ
MEFBUUFBMGdnUUFBQWdqUUFCCkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFB
QWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEKMGdnUUFBQWdqUUFCQUFEU0NC
QUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5J
SQpFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFB
QTBnZ1FBQUFnalFBQkFBRFNDQkFBCkFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFB
QkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWcKalFBQkFBRFNDQkFBQUND
TkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFB
SUkwQQpBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dR
QUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBCkFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURT
Q0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFMKQ0JBQUFDQ05BQUVB
QU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFB
UUFBMGdnUQpBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdq
UUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBCklJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFB
Q0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ04KQUFFQUFOSUlF
QUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBn
Z1FBQUFnalFBQgpBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFB
RFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBCjBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFB
RUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUkKRUFBQUlJ
MEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFB
Z2pRQUJBQURTQ0JBQQpBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JB
QUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnCmpRQUJBQURTQ0JBQUFDQ05BQUVBQU5J
SUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEEKQVFB
QTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFC
QUFEU0NCQUFBQ0NOQUFFQQpBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NO
QUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTCkNCQUFBQ0NOQUFFQUFOSUlFQUFB
SUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1EK
QUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFND
QkFBQUNDTkFBRUFBTklJRUFBQQpJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFB
TklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOCkFBRUFBTklJRUFBQUlJMEFB
UUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pR
QUIKQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFD
Q05BQUVBQU5JSUVBQUFJSTBBQVFBQQowZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVB
QUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJCkVBQUFJSTBBQVFBQTBn
Z1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFE
U0NCQUEKQUNDTkFBRUFBTklJRUFBQUlJMEFBUUFBMGdnUUFBQWdqUUFCQUFEU0NCQUFBQ0NOQUFF
QUFOSUlFQUFBSUkwQUFRQUEwZ2dRQUFBZwpqUUFCQUFEU0NCQUFBQ0NOQUFFQUFOSUlFQUFBSUkw
QUFRQUEwZ2dRQUFBZ2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBCkFRQUEwZ2dRQUFB
Z2pRQUJBQURTQ0JBQUFDQ05BQUVBQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFB
QUNDTkFBRUEKQU5JSUVBQUFJSTBBQVFBQTBnZ1FBQUFnalFBQkFBRFNDQkFBQUNDTkFBRUFBTkw4
ZjdzdDRhLyszWC91QUFBQUFFbEZUa1N1UW1DQwoKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9uZXN0ZWQtYmxvY2tzLXdpdGgtdGV4dC1maWVsZC1leHBlY3RlZC5wbmcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3Zu
Om1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL25lc3RlZC1ibG9ja3Mtd2l0aC10ZXh0LWZpZWxkLWV4cGVjdGVk
LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBpbWFnZS9wbmcKCgppVkJP
UncwS0dnb0FBQUFOU1VoRVVnQUFBeUFBQUFKWUNBWUFBQUNhZG9Kd0FBQWdBRWxFUVZSNG5PM2Rh
WlRVMVozNC93KzdLS0FHCk9pakJJRUV6dE1xSXdSampOa0Vkb3dhTlI0S2FpUnRHd3h5Y09DWTZH
ZlVYTlhvU0RSbGNFeGNjTlRHTWpyZ000NFk0SUlvU2NXRngKam81RUJKZWpNYXlDaU0zTy9UL3dV
UCttNks3cTZ1VzJyYS9YSTdxcit0YjlicmZyM1ZYZHRFc3BwUUFBQU1pZ2ZXdFBBQUFBK1B3UQpJ
QUFBUURZQ0JBQUF5RWFBQUFBQTJRZ1FBQUFnR3dFQ0FBQmtJMEFBQUlCc0JBZ0FBSkNOQUFFQUFM
SnA4d0d5ZXZYcWVQZmRkK3U5CmZmbnk1ZkhHRzI5a25GSHpLTGRkamJWbXpacDQrKzIzbTMzY2xw
cHZTMm5wODZLdG5uZmxyRjY5T3Y3eWw3L1VlM3RMYnZlblpaOHUKV2JJa3BrMmJGaDk4OEVGclQ2
V3NUWnMyeFovLy9PZDZieTkzUE5ldFd4ZlBQZmRjczh5bHBkYWVjdHJhMnZSNVZlNzYvcXdkeDly
cgpTQ1ZyVzdscnN0dzEzOVQ3dDRUMzNudXZWUisvV0d1ZWF3MzkvbEo4empUbldwM0xwekpBaGcw
YkZqdnZ2SE1jZmZUUmNkSkpKMFdICkRoMmlmLy8rOGIzdmZTOE9PZVNRNk5DaFEvenhqMytNZSs2
NUozcjM3aDNqeDQrdmQ2ekxMcnNzVGpqaGhJeXpiN3FHYkZkalRKZ3cKSWZyMDZSUFhYbnR0czQ3
YlV2TnRTUzE5WHJURjg2NmNjZVBHUmMrZVBlUCsrKyt2OXo0dHVkMmZobjE2MjIyM3hiMzMzaHZU
cDArUAp2ZmZlTzlhdFc5ZXE4eW5scFpkZWlzR0RCOGVQZnZTak9tOHZkenhmZU9HRjJILy8vZVBF
RTA5czhseGFhdTBwcHkydVRaOVhwYTd2Cno5cHhMRjVIL3QvLyszOE5XdHZLWFpQbHJ2bW0zcjhs
ekpzM0wvYlpaNTlXZS94aXJYbXVWZkw5cGZiMTBweHJkVmJwVStpb280NUsKYjc3NVp1SGo3YmJi
THAxNTVwbUZqNis1NXBvMGJ0eTRsRkpLMWRYVjZWZS8rbFc5WXkxYnRpek5ueisvNGptc1hiczJU
WnMycmVLdgphNjR4eW0xWFl4MTg4TUhweHovK2NaUEhLZDYycHN5M09mWjFwUnA3WG54YXhtOHR2
WHYzVHRkZGQxMjl0emZuZGhlZkY2MjlUMWV2ClhwMTIyR0dIdEduVHBwUlNTbi82MDUreVBHNVRy
bzkvK3FkL1NvY2Zmbmk5dDVjN25tUEhqazI5ZS9kdTFHTVhhNjYxcDFJdHRaYTIKRlUxZFgzT3R6
OFhYZDNOK2p5bW5PYmV4M0ZoMXJTT1ZyRzNscnNseTEzeFQ3OS9jRmkxYWxIYmZmZmZDeDYzeGZL
QllhNndabFg1LwpLVDVubW5PdHp1VlQrUXJJVDMvNjAramZ2Mys5dDQ4YU5TcjIzbnZ2aUlqbzFL
bFR0R3ZYcnQ3Nzl1elpNL2JjYzg5dFBwOVNxdmRyCk5tellFS2VkZGxvOCsreXpGY3g2NnpFYk84
WVc1YmFyc2JwMDZkS2djU3ZkUHcyZDc4YU5HOHVPMWRoNUZZOWQ2dXZxT3krYTh2ak4KTVg2eFV0
dlVHaHA3dlpYVGtQT2l1ZlpwWTczeXlpdXhmdjM2YU4vK2syWHpvSU1PYXBISGFZNTFaUFBtelJF
UjBiRmp4OEo4NjFMdQplSGJ1M0xuWjFxSG1XSHNhbzZYVzBrK3JocDQvRFZsYlNuMTljeCtuMnRk
M1U3N0hGQ3UzblUzOVhsM3BXSFd0STVXc2JmVmRrdzI5CjVodDcvMHBVY203MDd0MDdCZzRjR0JI
TmV5eUtWZkw4b0RYV2pGTGZYK3FhZS9FNTA1eHJkUzRkVzNzQ2RmbjJ0NzlkOHZZZGR0Z2gKRGo3
NDRNTEhtemR2anNzdXV5eis4SWMvUkk4ZVBlS1JSeDZKL3YzN3gxLy8rdGNZUDM1OFRKdzRNV2JP
bkJrUm43d1Y0SU1QUG9oVgpxMWJGUXc4OVZPZDc1cTYvL3ZwNCtPR0hZOEdDQmJGdzRjSzQrZWFi
WS9YcTFURm16SmlZUFh0MnJGNjlPbTY2NmFZNDhNQUQ2eDJ6CnJqRjIyR0dIclI1bnpabzE4Y3Rm
L2pKNjlPZ1JjK2JNaWE5Ly9ldHg0WVVYbHQydWlJakZpeGZYTzU5eTQyNHhkKzdjK05HUGZoU0gK
SFhaWW5IYmFhVEY0OE9CRzc1OXk4MzN5eVNkajFxeFowYTVkdTNqb29ZZGkzTGh4c2M4Kys1VGRU
MU9uVG8wNzdyZ2o5dGhqajlpdwpZVVA4NFE5L2lNNmRPOGVkZDk0WlJ4NTVaTW14NnpzMnhlZkZV
MDg5RmVQR2pZdStmZnRHZFhWMVhIWFZWZEdwVTZkNC9QSEhDL092CnFhbUpuLzNzWi9IRkwzNHha
c3lZRVYvNHdoZGl2LzMyaTRNT09pZ09QZlRRcmZaUFk4WXZWbXFiaXBVNjNxdFhyNDZMTHJvb3Vu
VHAKRWdzWExvd3ZmL25MTVdiTW1PamF0V3NzV0xBZ2JydnR0dGk0Y1dNTUhUbzBMcnZzc3VqUW9V
UDg5cmUvalc3ZHVzVVZWMXdSZi9yVApuK0xIUC81eFhITEpKWVhIcTZtcGlRc3Z2RERHang4ZmZm
djJqZi80ai8rSTZ1cnFSbTEzUTgrTHl5NjdMQjU4OE1HdHJ1VlMyOWFZCmZWNXF2TnR2dnowZWVP
Q0IyTGh4WTV4NzdyblJ0V3ZYR0R0MjdGWmYzNURITEhYZE5uUWRLYlVXYlRrMnUreXlTN3ovL3Z2
eGYvLzMKZjdIZGR0dlZ1YjNsam1lbCs2amN1VmhiWTllZS8vcXYvNHBSbzBiRklZY2NFci8vL2Uv
anYvLzd2K05mL3VWZll2RGd3WEhMTGJmRQpIbnZzRWRkZWUyMU1uRGd4cGt5WlV0ajJ4cXlsYyti
TWlYSGp4a1ZWVlZWMDdkbzFyci8rK25qc3NjZWlYNzkrOWU3L1N2WlhVOCtYCllnMDlmNTUvL3Zr
NnI3bTZ0dmVVVTA3WjV1c2ZmZlRSWmo5T0sxYXMyR3J0YU16M21HSU5YVU1ydWNabXo1NGRGMTk4
Y2Z6bEwzK0oKbTI2NkticDM3eDVublhWVy9QU25QNDB6emppajdQZXp1dGFSQ3k2NFlKdm5LWlVj
OTBxditYTDNMM2VOVjdxR05lUTgvN3UvKzd0NgpqMFZEbnpmVmQ3MSs5TkZIRlQwLzJLS1NjNjNV
UHF0dlhnY2NjRURKODJMczJMSDFuc04xUGJkdGsxcm5oWmZLRkw4RnE3YS8vZHUvClRmdnV1Mith
T25WcWV2ZmRkOVBBZ1FQVDJXZWZuVkpLYWNtU0pla2YvL0VmVTY5ZXZWSktLVzNZc0NIdHYvLyto
YS85eVU5K1VuaTUKcTlqdXUrK2VycnJxcXBSU1NoczNia3pISEhOTVdyVnFWZHEwYVZNYU5XcFVx
cXFxU2l0V3JDZzVadTB4Nm5MMDBVZW5tVE5ucHBSUwptalZyVm9xSU5IdjI3TExiVldvKzVjWTkv
UEREMDNubm5aZFNTdW5XVzI5TmQ5MTFWMkUramQwLzVlYTdidDI2OUtVdmZhbndzdW92CmZ2R0xO
SHo0OEhySHF1MnR0OTVLWC96aUYxUC8vdjNUczg4K202WlBuNTcyM1hmZnROdHV1NVVkdTc3dEtU
NHZGaTFhbEw3NjFhK20KZ1FNSHBrY2VlU1M5L2ZiYjZXLys1bS9TT2VlY1UvamEzLzcydCttQ0N5
NUlLYVgweWl1dnBJaElZOGFNU1crLy9mWTJjMjdNK0xXVgoyMS9GU2gzdnd3NDdMUDN4ajM5TUth
VzBmdjM2ZE1BQkI2Umh3NGFsbEZKYXNHQkIybSsvL1ZMLy92M1RBdzg4a0dwcWF0S0lFU1BTCkhu
dnNrYTY2NnFxMGJObXlkUG5sbDZkMjdkcWxEejc0SUtXVVV0KytmZFBlZSsrZEhuNzQ0VFJ0MnJT
MCsrNjdwNjk4NVN0cHc0WU4KRlc5M0plZEY4ZGpsdHEzU2ZWNXV2SlJTdXUrKysxTDc5dTNyL2Zw
eWo5a2M2MGk1YS84NzMvbE91dmZlZTFOS0tXM2F0Q24xNmRNbgovZjNmLzMyOWN5NTFQRk5LNmNZ
YmIweTc3TEpMZy9kUmpyWG5hMS83V2pycnJMTUtIMy9yVzk5S0kwZU9MSHo4MkdPUHBkLy8vdmVG
Cmp4dTdsczZjT1RQdHZQUE9hZkRnd2VtQkJ4NUlvMGFOU3ZQbXpTdTUvNHMxNVJ3dGQ2eHJhK2o1
VStxYXEydDc1OCtmdjlYWHQ5UngKcXV2NnJ1UjdUTEZLMTlCS3JyR3BVNmVtaUVpUFAvNTRtalJw
VXJyMjJtdnJIYXN1eGV0SThiYVhlL3ppYTdMU2E3N2MvVXVkczQxWgp3eHF5Rmk5ZHVyVEIrNisr
TmFhdTgvZlZWMSt0K1BsQlNwV2RhK1gyV1gzWFZiSGk4NkxVT1Z6WDlWSjhYclFGbjhxM1lGVnEy
TEJoCmNjUVJSMFRmdm4xajZOQ2hoYi9vVUZWVkZZTUdEU3E4dkxaeTVjcDQrZVdYWTlLa1NSRVJj
YzQ1NTVSOHFYREx5MW4zM1hkZnBKVGkKMldlZmpjbVRKOGV1dSs0YVM1Y3VqV2VlZWFic21QVzlK
RFp0MnJTWU8zZHVmT01iMzRpSWlDRkRoc1N0dDk0YS9mcjFLN3RkcGViVAprSEVqSW02OTlkYm8y
Yk5ubkg3NjZZWFBOWGIvbEp0dnAwNmQ0c1FUVDR4OTk5MDNJajU1NlhEZXZIa2x4OXBpOTkxM2o5
MTIyeTJPClAvNzRPT1NRUStLd3d3NkxlKys5Tjk1OTk5MllOMjlleWJIcjI1N2k4NkozNzk0eFlN
Q0FHRFJvVUF3Yk5pejY5ZXNYaHg5K2VMeisKK3V1RmVZd2ZQejU2OXV3WkVSSDc3TE5QVkZWVlJV
UnNzMThqdGozdkdqSitiUTNaWDF1VU90NlRKMCtPR1RObXhDbW5uRklZOTZ5egp6b3BISDMwMFpz
NmNHUU1HRElqQmd3ZkgzbnZ2SGNPSEQ0K3VYYnZHQ1NlY0VPKzg4MDVjZlBIRjBiTm56emovL1BN
anBSVHZ2UE5PCjRURlBQLzMwT082NDQyTG8wS0h4NjEvL090NTg4ODJZT25WcXhkdGR5WGxSUEhh
NWJhdDBuNWNicnlIS1BXWnpyQ09seG5qKytlZGoKMHFSSmhWZVEyN2R2SDhjZWUyelplZGQzUEN2
ZFI3blducEVqUjhZVFR6eFJlQXZKa1VjZUdZODg4a2poYlFwVHAwNk5FU05HYlBVMQpqVmxMRHp6
d3dCZzRjR0JVVjFmSDhPSEQ0OVpiYjQyNWMrZldlLzlLOTFkVHpwZGlEVDEvU2wxemRXM3ZscmQ0
YlBuNmxqcE94ZGQzCjhiekxIY2RpbGF5aHhZOVZicjhmY2NRUmNmTEpKOGNsbDF3UzQ4ZVBqL1BP
TzYvZXNScWllTnNyT2U2Vlh2UGw3bC91bkczTUd0YVEKdGJoWHIxNE4ybitsMXBpNnp0Kzk5dHFy
NHVjSFd6VDBYQ3UzejBwZFY2V1VPb2ZydTE3YW1zOUVnTlErV1hmZWVlZFl2WHIxVnJkdAp1YjFY
cjE1eDRva254bkhISFJmbm5udHU3TDc3N3RHaFE0ZXk0ODZjT1RONjl1d1puVHQzanM2ZE84ZkJC
eDhjVTZaTWlTRkRocFFkCnM3NEw2Wmxubm9tRERqcG9xOXRIalJwVmVKSmJhcnRLemFjaDQwNmFO
Q2wrOWF0ZmJmTld0OGJ1bjNMemJkZXVYZHg0NDQyeGN1WEsKR0RObVRFeWZQajArK3VpamttTVYz
MVo3SGdNSERveWRkOTQ1cGs2ZFduTHNVdHRUKzd5bzYrUHUzYnZIMnJWcnQvcTQ5aFBSWFhiWgpw
YkFJMWpmblNzWXYvdHB5KzJ1TFVzZjd4UmRmaktxcXF1alVxVlBodGkwdis4NmRPN2Z3V0xWMTc5
NTlxNDk3OU9nUkVSRkxseTR0CmZHN0hIWGNzL0h2TFMrOWIvaHhnSmR0ZDZYbFJlNnlHYmx0RDkz
bER4bXVJVW8vWkhPdElxVEdlZnZycEdEaHdZT3kwMDA2RnIrdlcKclZ2WkowT2xqbWNsK3lqWDJ2
UDk3MzgvbGk1ZFduaWYrS3V2dmhvZmYveHhQUG5razdGMjdkcll2SG56Tm0vYmFNeGFHaEhSdFd2
WAp3ZzhiR25ML1N2YlhsbmsxNW53cDF0RHpwOXcxVjd5OXhWL2Zrc2VwZUYvVWZ0eTZQaTcrWGw5
OHY0YXVvY1ZqTjJTL2p4MDdOdWJQCm54OURoZ3lwYy9zcmZTOSs3VzJ2NUxoWGVzMlh1Mys1Yzdh
eGExZ2xhL0dXKzllbDNCcFRmUDQyOXZsQjhSeEtuV3NOdWM3cnU2NUsKS1hjTzEzVzl0RFdmeXQ4
QmFVbjMzSE5QOU9uVEoyNjQ0WWFZTTJkT1BQSEVFNFVuV2ZWWnRteFpkT3pZc2ZBN0I4MHg1dUxG
aStQVgpWMTl0MURhVW1rOUR4ajMwMEVOait2VHBjZjc1NThjZGQ5eXgxVzJOMlphR0dEZHVYTXlZ
TVNQdXZQUE91UDMyMitQRkYxOXMwbmp0CjI3ZVBqaDA3bGgyN3ViYm5Kei81U1p4NTVwbnh5aXV2
UkpjdVhXTDc3YmN2dkcrMUpUUjBmNVU2M2pVMU5iRnMyYkpZdlhwMWRPdlcKTFNJaUJnMGFGQjA3
ZG95UFAvNjR6cTlwMzc3OU5rLzZTK25YcjE5MDc5NTltM0JwcU1hZUY0M1p0cHpqMWFVNTFwRlNZ
N3ozM251eApiTm15YlQ1ZnlUZXBVc2V6M0Q3S3RmYjA3Tmt6aGcwYkZuZmZmWGZzdE5OT3NmLysr
MGY3OXUzajNudnZqUTgvL0xDaVA5VmM3cGcwCjVmNU5QYWNxblZ0RDkxOVQxK0xXT0U2TjBkanRi
TWgrNzlTcFUxUlZWY1Z2ZnZPYitPRVBmN2pWRS9xbXF1UzRWM3JObDd0L3VYTzIKSlo0TFZhSXh6
NXRhK3ZsQlMzN3ZhTzduVFo4Mm40bFhRQnBxMGFKRnNXVEprcmp1dXV0aTh1VEo4Y29ycjhTOTk5
NWI3LzIzWEpUOQorL2VQS1ZPbWJGWHNLYVY0K3Vtbnk0NVozMExRcjErL2VPT05OMkxod29WYmpk
bVFuN2FXbWs5RHh1M2V2WHVNSHo4KzdycnJybmp3CndRZWJ2SC9LZWUyMTEyTDA2TkV4ZHV6WXJY
NUswSml4SWlMbXo1OGZ5NWN2ajY5OTdXc2x4NjUwZTBvNTl0aGo0NXh6em9uSmt5ZkgKckZtejRx
bW5ubXJVT0EzUmtQMjFSYW5qUFhEZ3dOaTBhVk84OU5KTGhkdVdMRmtTR3pkdXJQZVhqQ3YxL3Z2
dngwY2ZmUlQ3N2JkZgp4Vi9ibFBPaXViY3R4NzVxam5XazFCaDkrdlNKcFV1WHh2ejU4eHM5eDFM
SHM5dyt5cm4ybkhubW1YSC8vZmZIdi8vN3Y4ZlpaNThkCkkwZU9qSWtUSjhiVXFWTXIrc0ZBcWYz
WjFQczM5WnlxNUxFYWV2NVVzcmJVdHVYcmN4K254djZFdHpIYjJaQnJiSXRMTDcwMEprMmEKRk8z
YXRZdExMNzIwMmViZDBNZmZvdEpydnR6OXk1MnpUVm5ES3RGY3o1dHlQRDlvcWU4ZGpiMVcyNUpQ
ZllCczNydzUxcTlmWCsvLwpDbGxUVXhNMU5UV0ZqOWVzV1JOcjFxelo2dlkxYTlaRVNpbVdMMThl
RXlaTWlJaUlvNDQ2S3I3NzNlOFdpclhZVGp2dFZQamZPWWNOCkd4YUxGeStPVWFOR3hZb1ZLMkxK
a2lWeDVaVlh4cDU3N2xseXpOcGpyRml4WXF2eFR6NzU1Tmh1dSsxaTVNaVJNVy9ldkpnM2IxNzgK
N0djL2k5MTIyNjNzZHYzZ0J6K29kejdseHQyNGNXT2tsT0tnZ3c2S2l5NjZLSDc0d3g4VzN0dlky
UDJ6WXNXS2t2T2ROMjllYk42OApPVjU3N2JYWXRHbFRUSjgrUGRhdVhSc3BwVWdwbGR4UFd5eGZ2
cnp3NzZlZWVpb09QZlRRK01ZM3ZsRnk3R1hMbHRXN1BiWFBpNGlJCjlldlhGOTZydk9YMlRaczJG
VDYrNG9vcjRxdGYvV3FjZDk1NThRLy84QStGdndoU24wckhyNjNjL3FxdDFQRWVNV0pFOU8zYk42
Wk0KbVZLNC82eFpzMkxnd0lGeDlORkhSOFFuZi9hdzlqeldyVnNYbXpadGlnMGJOa1RFLy8vbi8y
clB2ZmI5cDAyYkZpZWNjRUxoZmFxVgpiSGVsNTBYdHNSdXliWlhzODRhTXQyclZxdGk4ZWZOVzUz
bXhVbzlaNnJwdDZEcFNhaTA2K2VTVG8yUEhqbkhycmJjV0h2L1BmLzV6CkxGdTJyTjd0amloOVBO
ZXZYMTg0RjhydG8xeHJUMFRFTWNjY0UxMjZkSWtPSFRyRWpqdnVHSWNmZm5qMDZORWpkdDExMTIy
ZXZEUjIKTGQweTU5cmZUOHJkdjdhbW5xT1ZQRlpEejUrWFhucXA1RFZYdkwzRlgvL21tMisyNkhH
cXZYWlU4ajJtV0NWcmFQRmpsYnJHSWo1NQp6LytlZSs0WjFkWFZNV2JNbUxqbGxsdTJlZ0pjN3Z0
WlhldEk3VzB2ZDl4clg1T1ZYdlBsN2wvdW5HM3NHbGJKV3R5VTUwM0Y1MjlUCm5oODA5RnhyeUhW
ZTEzVlZyUGk4S0hjTzEvVzlkc3Q1MFdZMDdYZllXOWFycjc2YVJvMGFsU0lpN2Jqamp1bWFhNjVK
SDM3NFllSDIKQng1NElMVnYzejd0dGRkZWFlN2N1V25PbkRtcHVybzZkZXpZTVQzODhNUHBoUmRl
U04vODVqZFRSS1RycnJzdXpaMDdOdzBZTUNDTgpHemN1UGZUUVEybjA2TkdGdi9aUzdKSkxMa250
MnJWTFo1MTFWbHE4ZUhHNjVaWmJVcGN1WFZLN2R1MVNWVlZWbWpoeFltR085WTFaClBFYXhpUk1u
cHFxcXFoUVJxVisvZm1uR2pCa04ycTZVVXIzektUWHUvZmZmbjdwMTY1WUdEQmlRbm52dXViUnc0
Y0swL2ZiYnAxMTMKM1RYOTduZS9LN2t0cGZiUEhYZmNVWEsrSDMvOGNSbzhlSERxMXExYkdqbHla
SHJzc2NmUzl0dHZuMDQ5OWRTMGJ0MjZzdnRwLy8zMwpUNE1IRDA2WFhucHB1dUtLSzlKUlJ4MlZG
aTFhbEZKS0pjZXU3M2dYbnhkVHAwNU5PKzIwVStyVHAwK2FPWE5tZXZubGw5TWVlK3lSCnVuVHBr
djduZi80bnBaVFMrZWVmbnlJaVJVVHEwS0ZENnQyN2R4bzllblJhdDI3ZE52TnR6UGkxbGR0ZkRU
MlBVa3BwenB3NWFhKzkKOWtyLzltLy9saVpObXBST09lV1VORy9ldkpUU0ozK2RvMCtmUHFsMzc5
N3BxYWVlU20rOTlWWWFObXhZaW9oMCtlV1hwNVVyVjZaZgovdktYS1NMU1NTZWRsTjU3NzcxMCtl
V1hwMEdEQnFWZi8vclg2ZXFycjA3Ly9NLy9uRmF0V3RXbzdhN2t2SGo4OGNlM0dudmR1blVsCnQy
MzY5T2tWN2ZOeSsrcjU1NTlQaHg1NmFJcUlkT0dGRjZhRkN4ZHU4L1VOZWN6bVdFZEtYZnQzMzMx
MzZ0NjllNnF1cms0bm5YUlMKT3U2NDQ5SkJCeDJVN3I3NzdqcTN1ZHp4SERKa1NJcUlkUFBOTjVm
ZDU2WE94ZVpjZTdhNDhNSUwwNElGQ3dvZlgzcnBwVnQ5bkZMVAoxdEs3Nzc0NzdiREREbW5YWFhk
TkV5Wk1LSXhaYXY4WGErbzUydERIYXVqNTg5WmJiOVY3emQxMTExMTFibS90cjU4K2ZYcUxIS2Zp
CnRhUDQraS8zUGFaWXBXdG9RNit4YWRPbXBWMTIyU1c5L1BMTEthV1VYbnZ0dGRTaFE0ZlV2My8v
OU1JTEw5UTVWbTExclNOMWJYdDkKajEvWE5WbnBOVi91L3VXdThVclhzRXJYNHNZK2I2cnJlbTNN
ODRPR3JCbkZTdTJ6K3RhUmN1ZEZxYm5QbURGanEzTm14b3daMjV3WApiVUc3bE5yNHI5RlhZUFBt
emRHK2ZmdFl1WEpsZE9yVWFadGZWQ3kyYk5teXJmNDZ3L3IxNitQZGQ5K05mdjM2Rlg3L29OeVl4
V01VClN5bkZraVZMb25mdjNoVnZUMTN6YWNxNFRkMC81YXhaczZid3lzR0dEUnUyZWxteDFGaGYv
L3JYNDdERERvc3JyN3d5YW1wcTZ2eGwKcnJyR3JuUjdTcm42NnF2amU5LzdYcXhkdXpZKyt1aWpX
TGx5WmR4MzMzMXg2cW1uTnZnOTJwVXF0YitLbFRyZUthVllzR0JCdEcvZgpQZ1lNR05Bc2MxdTBh
RkgwNnRWcm0vT3VNUnA3WGtRMC83YTF4TDRxMWh6clNLbHJmOU9tVGJGaXhZcm8xYXRYckYyN3R1
ei9BeEpSCjJmRXN0NDl5ckQwUm43eGExNlZMbDNvL3JrU3AvZG5VK3pmMW5HcklZMVY2L2xTeXR0
VCsrdHpIcWRMdk1jVXEyYzVLcnJGeW1qcnYKU2grLzBtdSszUDNMbmJPTldjTXEwZHpQbTFyNitj
R1dPYlhFOTQ1S3I5VzI1SE1WSUxSTld3TGttbXV1YVpYSHYrMjIyK0srKys3Ygo1aytUUHZIRUV6
Rmd3SURZWTQ4OVdtVmVBQUJ0MGVmdXIyRFJ0bXpldkRuZWYvLzlyWDdwTExkdmZ2T2JjZDU1NThX
SUVTTml5SkFoCnNXYk5tbGk4ZUhFTUd6Wk1mQUFBVk1ncklIeXEzWFhYWFlWZlNQdktWNzRTMy8v
KzkxdGxIaDkrK0dFODg4d3pzV2pSb2hnNmRLancKQUFCb0pBRUNBQUJrODZuL003d0FBTUJuaHdB
Qm9NbVdMMThlYjd6eFJtdFBBNEEyUUlBQTBHU1hYWFpabkhEQ0NhMDlEUURhQUw4RApBa0RGMXEx
YkY4ODk5MXdNSFRvMElqNTVCZVNERHo2bzgzL3FCb0RhdkFJQzBNWnQzTGl4M3R2cSt4bFRVMzcy
dEdIRGhqanR0TlBpCjJXZWZMWHl1WjgrZUxSSWZma1lHOE5uai93RUJhS09lZlBMSm1EVnJWclJy
MXk0ZWV1aWhHRGR1WE95enp6NFJFVEZod29UNDRJTVAKWXRXcVZmSFFRdy9GYzg4OVYvTHppeGN2
ampGanhzVHMyYk5qOWVyVmNkTk5OOFdCQng0WWMrYk1pWEhqeGtWVlZWVjA3ZG8xcnIvKworamps
bEZQaTRZY2ZqZ1VMRnNUQ2hRdmpzc3N1aXdjZmZEQW1UcHdZTTJmT2pJaUkxYXRYeDBVWFhSUmR1
blNKaFFzWHhwZS8vT1VZCk0yWk1kTzNhTlo1NjZxa1lOMjVjOU8zYk42cXJxK09xcTY2S1RwMDZ4
ZU9QUHg3OSsvY3ZPVThBMmo0QkF0QUdyVisvUHM0NDQ0d1kKUDM1OERCMDZOTmFzV1JPLytNVXY0
b0VISG9pTkd6ZkcyTEZqNDZXWFhvcUlUK0ppOCtiTnNYbno1am8vbjFLS2tTTkh4b1FKRTJLSApI
WGFJMGFOSHgvSEhIeC96NTgrUDlldlh4LzMzM3gvOSt2V0xuLy84NXpGOCtQQTQ3N3p6NHRGSEg0
MFJJMGJFeFJkZkhFdVhMbzIzCjNub3JGaXhZVUpqZmQ3N3puVGo3N0xQanROTk9pdzBiTnNRaGh4
d1NKNTEwVWp6eXlDT3gxMTU3eGR5NWMrTi8vL2QvNDF2ZitsWk0KbXpZdHZ2M3RiOGZWVjE4ZHQ5
MTJXNzN6YjkvZWkvWUFud1ZXYzRBMnFGT25UbkhpaVNmR3Z2dnVHeEdmdkFWcTNyeDVFUkd4Y3VY
SwplUG5sbDJQU3BFa1JFWEhPT2VkRVNxbmV6OTkzMzMyUlVvcG5uMzAySmsrZUhMdnV1bXNzWGJv
MG5ubm1tVGp3d0FOajRNQ0JVVjFkCkhjT0hENDliYjcyMThGYXJkdTNhUlVSRVZWVlZEQm8wcVBC
MnFjbVRKOGVNR1RQaWxGTk9LY3oxckxQT2lrY2ZmVFJtenB3WnZYdjMKamdFREJzU2dRWU5pMkxC
aDBhOWZ2emo4OE1QajlkZGZMemwvQUQ0YkJBaEFHOVN1WGJ1NDhjWWJZK1hLbFRGbXpKaVlQbjE2
ZlBUUgpSeEVSMGF0WHJ6anh4QlBqdU9PT2kzUFBQVGQyMzMzMzZOQ2hRNzJmbnpselp2VHMyVE02
ZCs0Y25UdDNqb01QUGppbVRKa1NRNFlNCmlZaUlybDI3UmxWVlZaMXpxUDN2TFIrLytPS0xVVlZW
RlowNmRTcmNmc0FCQjBSRXhOeTVjN2U1ZjBSRTkrN2RZKzNhdFNYbkQ4Qm4KZzdkZ0FiUlI0OGFO
aXhrelpzU2RkOTRadDk5K2U3ejQ0b3VGMis2NTU1N28wNmRQM0hERERURm56cHg0NG9rbm9rZVBI
blYrZnRteQpaZEd4WThjNDhzZ2ptMlZlTlRVMXNXelpzbGk5ZW5WMDY5WXRJaUlHRFJvVUhUdDJq
STgvL3JoQlk5UTNmd0RhUHErQUFMUkJyNzMyCldvd2VQVHJHamgyNzFTc05FUkdMRmkyS0pVdVd4
SFhYWFJlVEowK09WMTU1SmU2OTk5NTZQOSsvZi8rWU1tVks0UldJaUUvKyt0VFQKVHo5ZGNnNjFY
OEdvYmVEQWdiRnAwNmJDNzNCRVJDeFpzaVEyYnR3WTFkWFZaYmV0dm5rQzhOa2dRQURhb0huejVz
WG16WnZqdGRkZQppMDJiTnNYMDZkTmo3ZHExa1ZLS1pjdVd4WVFKRXlJaTRxaWpqb3J2ZnZlNzBh
MWJ0MWkrZkhtZG4vL0JEMzRRaXhjdmpsR2pSc1dLCkZTdGl5WklsY2VXVlZ4WisxMlBqeG8yeFpz
MmFyUjUvcDUxMml2ZmVleThpSWxhc1dCRTFOVFd4WnMyYVNDbkZpQkVqb20vZnZqRmwKeXBUQy9X
Zk5taFVEQnc2TW80OCtPaUkrK1NYNnpaczNGMjZ2cWFtSlRaczJSVVRVTzgrSVQvNy9rYXV1dXFy
dzJBQzBQZDZDQmRBRwpIWFBNTVRGNDhPQTQvdmpqWThTSUVYSDY2YWZISTQ4OEVxZWZmbnBjY01F
RjhidmYvUzYyMzM3NzJHV1hYV0tublhhS2swNDZLVjUvCi9mVTZQOSt4WThlNCtlYWI0L3p6ejQv
eDQ4ZEhyMTY5NHJiYmJvc3ZmZWxMY2M4OTk4VHMyYlBqalRmZWlQdnV1eTlPT3Vta2lJZzQKOXRo
ajQrcXJyNDZQUC80NFJvd1lFUTgrK0dCOC9QSEhjY01OTjhUbzBhUGo0WWNmamxOUFBUVys4SVV2
eE41Nzd4My8rWi8vR1JNbgpUb3lPSFR2R004ODhFN05tellydHQ5OCtubi8rK2VqYXRXdE1uanc1
M24zMzNaZ3laVXIwNmRPbnpubEdSTHo1NXB2eDg1Ly9QUHIyCjdSdW5uMzU2YXg0Q0FCckovNFFP
MElhdFdiTW11bmJ0R2hHZi9BZUJuVHAxS3Z6SjJwVXJWMGFuVHAxaWh4MTJpSWlvOS9OYnJGKy8K
UHQ1OTk5M28xNjlmZE94WS91ZFR5NVl0aTE2OWV0VjdlMG9wRml4WUVPM2J0NDhCQXdZMGVKdkt6
WFBwMHFWMS9sSThBRzJEQUFFQQpBTEx4T3lBQUFFQTJBZ1FBQU1oR2dBREFwMEI5ZjlZWTRMTkdn
QUFBQU5uNE03ekE1ODdvMGFPalI0OGUyL3dIZmxDSkRSczJ4S3BWCnErTG1tMjl1N2FrQXRDa0NC
UGpjMlcrLy9hSmZ2MzZ4L2ZiYnQvWlVhTU5xYW1yaW5YZmVhZTFwQUxRNUFnVDQzS211cm81Qmd3
YkYKamp2dTJOcFRvUTM3OE1NUFJTeEFJL2dkRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUxTQTJi
Tm54MUZISFJWNzc3MTNQUDMwMHpGNwo5dXpZZDk5OTQ2Njc3bXJ0cVFHMEtnRUNBQzFneUpBaDhh
Ly8rcS94Mm11dnhkcTFhMlBKa2lWeDVwbG54aGxubk5IYVV3Tm9WZjRLCkZnQzBrQ09PT0NKT1B2
bmt1T1NTUzJMZ3dJRXhmdno0MXA0U1FLdnpDZ2dBdEtDeFk4ZkcvUG56WThpUUlkR2hRNGZXbmc1
QXF4TWcKQU5DQ09uWHFGRlZWVmZHYjMvd21WcTVjMmRyVEFXaDFBZ1FBV3RDbGwxNGFreVpOaW5i
dDJzV2xsMTdhMnRNQmFIVUNCQUJheU9USgprMlBQUGZlTTZ1cnFHRE5tVE54eXl5MHhkKzdjMXA0
V1FQYmtjQVFBQUF4S1NVUkJWS3NTSUFEUUFwNTY2cWtZT1hKa0hIWFVVUkVSCmNjQUJCMFJFeFBE
aHcrUEZGMTlzemFrQnRDcC9CUXNBV3NEUW9VUGpyMy85YStIajZ1cnEyTGh4WXl2T0NPRFR3U3Nn
QUFCQU5nSUUKQUFESXhsdXdnTSt0bEZKclR3RUFQbmNFQ1BDNVUxTlRFMis5OVZiMDZOR2p0YWRD
RzdacTFhcW9xYWxwN1drQXREbnRraDhCQWdBQQptZmdkRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJ
QUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBClpDTkFBQUNB
YkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFB
QUNBYkFRSUFBQ1EKalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFa
Q05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMgpBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JB
Z0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJCkVBQUFJ
QnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVB
QUFJQnNCQWdBQVpDTkEKQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFO
a0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQgpBQUN5RVNBQUFFQTJBZ1FBQU1oR2dB
QUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBCkFN
aEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdR
QUFNaEdnQUFBQU5rSUVBQUEKSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVB
MkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQQpiQVFJQUFDUWpRQUJBQUN5RVNB
QUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5
CkVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFC
QUFDeUVTQUFBRUEyQWdRQUFNaEcKZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNR
alFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQgpBZ0FBWkNOQUFBQ0FiQVFJ
QUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0Fi
QVFJCkFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFB
QUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUEKQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFa
Q05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQQpBTmtJRUFBQUlCc0JB
Z0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlC
c0JBZ0FBClpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVB
QUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1EKalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFO
a0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMgpBZ1FBQU1oR2dB
QUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1o
R2dBQUFBTmtJCkVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdR
QUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkEKQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVB
MkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQgpBQUN5RVNB
QUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5
RVNBQUFFQTJBZ1FBCkFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFC
QUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUEKSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNR
alFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQQpiQVFJ
QUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0Fi
QVFJQUFDUWpRQUJBQUN5CkVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFB
QUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEcKZ0FBQUFOa0lFQUFBSUJzQkFnQUFa
Q05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQgpB
Z0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlC
c0JBZ0FBWkNOQUFBQ0FiQVFJCkFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVB
QUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUEKQUVBMkFnUUFBTWhHZ0FBQUFO
a0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FB
QQpBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1o
R2dBQUFBTmtJRUFBQUlCc0JBZ0FBClpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdR
QUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1EKalFBQkFBQ3lFU0FBQUVB
MkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FB
QUVBMgpBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5
RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJCkVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFC
QUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkEKQUFDQWJBUUlBQUNR
alFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlB
QUNRalFBQgpBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0Fi
QVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBCkFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFB
QUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUEKSUJzQkFnQUFa
Q05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFn
QUFaQ05BQUFDQQpiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlC
c0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5CkVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVB
QUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEcKZ0FBQUFO
a0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FB
QUFOa0lFQUFBSUJzQgpBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1o
R2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJCkFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdR
QUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUEKQUVB
MkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FB
QUVBMkFnUUFBTWhHZ0FBQQpBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5
RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBClpDTkFBQUNBYkFRSUFBQ1FqUUFC
QUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1EK
alFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlB
QUNRalFBQkFBQ3lFU0FBQUVBMgpBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0Fi
QVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJCkVBQUFJQnNCQWdBQVpDTkFB
QUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpD
TkEKQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFn
QUFaQ05BQUFDQWJBUUlBQUNRalFBQgpBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlC
c0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBCkFNaEdnQUFBQU5rSUVB
QUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyL3g4bWlPL2JqQks0RWdB
QUFBQkoKUlU1RXJrSmdnZz09CgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLXRhYmxlLTAwMy1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTog
ZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbQoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQXlBQUFBSllDQVlBQUFDYWRv
SndBQUFWTlVsRVFWUjRuTzNkeTR2V2RmL0g4WmZUcUpVZApCZytJZEpDWWd1bmd5ZzZMQ0VFVU9r
all3ckNETlZOQkxTS2l3eDlRRzFkRnF4WkZVRVFIY21GWXdjUlloZ1phQ1c3YUJFSUwyNmdECkdq
aWw1amkvUlRCMDh5dHNRbDdkY0Q4ZXErdjZjbjJ1ejN2NzVQUDlYdGU4bVptWm1RQUFBQlFNL05z
REFBQUEvenNFQ0FBQVVDTkEKQUFDQUdnRUNBQURVQ0JBQUFLQkdnQUFBQURVQ0JBQUFxQkVnQUFC
QWpRQUJBQUJxQkFnQUFGQWpRQUFBZ0JvQkFnQUExQWdRQUFDZwpSb0FBQUFBMS85VUJjdXJVcWV6
YXRldmZIZ01BQURoUC9tc0Q1TGZmZnN1V0xWdXlaOCtlZjNzVUFBRGdQSmx6Z0p3NGNTSlBQLzEw
Cm5uLysrV3pjdURIUFBQTk1mdjMxMXlUSnJsMjdzbm56NXJ6d3dndDU2NjIzTWp3OG5KR1JrZno0
NDQrejZ3OGZQcHpubm5zdWE5YXMKeWVyVnE3TnYzNzQvM2VlMTExN0xqaDA3OHZISEgrZlJSeC9O
KysrL24yWExsdVcrKys3TDhlUEg4L2JiYjJmWnNtVlp2MzU5RGg0OAptQ1I1OWRWWGM4Y2RkK1Rr
eVpQbm5CVUFBT2liYzREY2M4ODl1ZTIyMi9MS0s2OWsyN1p0K2VhYmIzTC8vZmNuU1c2NDRZWWNP
SEFnCm4zMzJXWll2WDU0dnYvd3lTYkoxNjlZa3lmVDBkTWJHeHZMU1N5OWwxNjVkdWVXV1czTHZ2
ZmZtK1BIai8yK2ZGMTk4TVN0V3JNaW0KVFp2eXpqdnY1TUVISDh6VlYxK2R4WXNYWjJob0tLT2pv
N25wcHB0eTFWVlg1ZHBycjAyU2pJeU01UEhISDgrRkYxNTR6bGtCQUlDKwpPUVhJK1BoNHZ2NzY2
MnpldkRsSk1uLysvRHoyMkdQNTlOTlBzM2Z2M2l4ZnZqekR3OE5adFdwVk5tellrSlVyVjJidDJy
WDU0WWNmCmtpUWZmZlJSWm1abXNtZlBub3lQajJmRmloVTVldlJvZHUvZS9aZDd6cHMzYi9iMTJO
aFlQdi84ODV3OWV6WkpzbTdkdW56eXlTYzUKYytaTWttVG56cDNadEduVDM1b1ZBQURvbTFPQWZQ
dnR0MW0yYkZubXo1OC9lKzNXVzI5TmtodzRjQ0RKNzhId3gyaTQ5TkpMWjIrSgoycnQzYjVZc1da
SUZDeFprd1lJRnVmMzIyek14TVpIVnExZi81WjUvL0s0SEhuZ2dSNDhlblgwdTVQdnZ2OC9VMUZT
KytPS0xuRHg1Ck1tZlBuczJpUll2Kzlxd0FBRURYNEZ3Ky9Nc3Z2MlJ5Y2pJblRweklKWmRja2lS
WnRXcFZCZ2NITXpVMWRjNzFrNU9UR1J3Y3pMcDEKNi83UnNFdVdMTW1HRFJ2eTNudnZaV2hvS0Rm
ZmZITUdCZ2J5NFljZjV1ZWZmODdHalJ2UDI2d0FBTUQ1TjZjVGtKR1JrVXhQVCtlNwo3NzZidlhi
a3lKR2NPWE1tMTE5Ly9UblhYM1BOTlptWW1KZzlFVW1TbVptWmZQWFZWMys1NW84bklFa3lPanFh
YmR1MjVjMDMzOHdUClR6eVJzYkd4Yk4rK1BUdDM3c3lhTld2TzI2d0FBTUQ1TjZjQTJiUnBVNjY4
OHNwTVRFek1YdHUvZjM5R1JrWnk1NTEzSmtsT256NDkKKzR4Rzh2dEp4UFQwZEpMa29ZY2V5dUhE
aC9Qa2swL20yTEZqT1hMa1NGNSsrZVZjZDkxMWY3cmYwTkJRZnZycHB5VEpzV1BIa2lSMwozWFZY
Rmk1Y21Bc3V1Q0NYWDM1NTFxNWRtOHN1dXl3clZxejRqMWo1TzdNQ0FBQmRjN29GYTlHaVJkbXhZ
MGNlZnZqaExGNjhPRGZlCmVHTSsrT0NEYk4rK1BZT0RnOW05ZTNmMjc5K2ZpeSsrT1B2MjdjdEZG
MTJVOGZIeEhEcDBLQk1URTFtL2ZuMWVmLzMxUFB2c3MzbjMKM1hlemRPblN2UEhHRzduaWlpditk
TCs3Nzc0N1c3ZHV6ZFRVMU93dmFRME9EbWJMbGkxNTZxbW5raVFEQXdNWkhSM05JNDg4TXFkWgpB
UUNBdm5rek16TXpjMTAwTXpPVGd3Y1BabUJnSU1QRHczUGU5UFRwMHpsMDZGQldybHg1emhpWW5K
ek0wcVZMLytQYXFWT25zbkRoCndyOThmejVuQlFBQXpwOS9GQ0FBQUFEL3hKei9pQkFBQU9DZkVp
QUFBRUNOQUFFQUFHb0VDQUFBVUNOQUFBQ0FHZ0VDQUFEVUNCQUEKQUtCR2dBQUFBRFVDQkFBQXFC
RWdBQUJBalFBQkFBQnFCQWdBQUZEelh4MGdwMDZkeXE1ZHUvN3RNUUFBZ1BQa3Z6WkFmdnZ0dDJ6
WgpzaVY3OXV6NXQwY0JBQURPa3prSHlJa1RKL0wwMDAvbitlZWZ6OGFORy9QTU04L2sxMTkvVFpM
czJyVXJtemR2emdzdnZKQzMzbm9yCnc4UERHUmtaeVk4Ly9qaTcvdkRodzNudXVlZXlaczJhckY2
OU92djI3ZnZUZlY1NzdiWHMyTEVqSDMvOGNSNTk5Tkc4Ly83N1diWnMKV2U2Nzc3NGNQMzQ4Yjcv
OWRwWXRXNWIxNjlmbjRNR0RTWkpYWDMwMWQ5eHhSMDZlUEhuT1dRRUFnTDQ1QjhnOTk5eVQyMjY3
TGErOAo4a3EyYmR1V2I3NzVKdmZmZjMrUzVJWWJic2lCQXdmeTJXZWZaZm55NWZueXl5K1RKRnUz
YmsyU1RFOVBaMnhzTEMrOTlGSjI3ZHFWClcyNjVKZmZlZTIrT0h6LysvL1o1OGNVWHMyTEZpbXph
dENudnZQTk9Ibnp3d1Z4OTlkVlp2SGh4aG9hR01qbzZtcHR1dWlsWFhYVlYKcnIzMjJpVEp5TWhJ
SG4vODhWeDQ0WVhubkJVQUFPaWJVNENNajQvbjY2Ky96dWJObTVNazgrZlB6Mk9QUFpaUFAvMDBl
L2Z1emZMbAp5ek04UEp4VnExWmx3NFlOV2JseVpkYXVYWnNmZnZnaFNmTFJSeDlsWm1ZbWUvYnN5
Zmo0ZUZhc1dKR2pSNDltOSs3ZGY3bm52SG56ClpsK1BqWTNsODg4L3o5bXpaNU1rNjlhdHl5ZWZm
Skl6Wjg0a1NYYnUzSmxObXpiOXJWa0JBSUMrT1FYSXQ5OSttMlhMbG1YKy9QbXoKMTI2OTlkWWt5
WUVEQjVMOEhneC9qSVpMTDcxMDlwYW92WHYzWnNtU0pWbXdZRUVXTEZpUTIyKy9QUk1URTFtOWV2
VmY3dm5INzNyZwpnUWR5OU9qUjJlZEN2di8rKzB4TlRlV0xMNzdJeVpNbmMvYnMyU3hhdE9odnp3
b0FBSFFOenVYRHYvenlTeVluSjNQaXhJbGNjc2tsClNaSlZxMVpsY0hBd1UxTlQ1MXcvT1RtWndj
SEJyRnUzN2g4TnUyVEprbXpZc0NIdnZmZGVob2FHY3ZQTk4yZGdZQ0FmZnZoaGZ2NzUKNTJ6Y3VQ
Rzh6UW9BQUp4L2N6b0JHUmtaeWZUMGRMNzc3cnZaYTBlT0hNbVpNMmR5L2ZYWG4zUDlOZGRjazRt
Smlka1RrU1NabVpuSgpWMTk5OVpkci9uZ0NraVNqbzZQWnRtMWIzbnp6elR6eHhCTVpHeHZMOXUz
YnMzUG56cXhacythOHpRb0FBSngvY3dxUVRaczI1Y29yCnI4ekV4TVRzdGYzNzkyZGtaQ1IzM25s
bmt1VDA2ZE96ejJna3Y1OUVURTlQSjBrZWV1aWhIRDU4T0U4KytXU09IVHVXSTBlTzVPV1gKWDg1
MTExMzNwL3NORFEzbHA1OStTcEljTzNZc1NYTFhYWGRsNGNLRnVlQ0NDM0w1NVpkbjdkcTF1ZXl5
eTdKaXhZci9pSlcvTXlzQQpBTkExcDF1d0ZpMWFsQjA3ZHVUaGh4L080c1dMYytPTk4rYUREejdJ
OXUzYk16ZzRtTjI3ZDJmLy92MjUrT0tMczIvZnZseDAwVVVaCkh4L1BvVU9ITWpFeGtmWHIxK2Yx
MTEvUHM4OCttM2ZmZlRkTGx5N05HMis4a1N1dXVPSlA5N3Y3N3J1emRldldURTFOemY2UzF1RGcK
WUxaczJaS25ubm9xU1RJd01KRFIwZEU4OHNnamM1b1ZBQURvbXpjek16TXoxMFV6TXpNNWVQQmdC
Z1lHTWp3OFBPZE5UNTgrblVPSApEbVhseXBYbmpJSEp5Y2tzWGJyMFA2NmRPblVxQ3hjdS9NdjM1
M05XQUFEZy9QbEhBUUlBQVBCUHpQbVBDQUVBQVA0cEFRSUFBTlFJCkVBQUFvRWFBQUFBQU5RSUVB
QUNvRVNBQUFFQ05BQUVBQUdvRUNBQUFVQ05BQUFDQUdnRUNBQURVQ0JBQUFLQkdnQUFBQURVQ0JB
QUEKcUJFZ0FBQkFqUUFCQUFCcUJBZ0FBRkFqUUFBQWdCb0JBZ0FBMUFnUUFBQ2dSb0FBQUFBMUFn
UUFBS2dSSUFBQVFJMEFBUUFBYXM0WgpJUFBteld2TUFRQUEvQTl3QWdJQUFOUUlFQUFBb0VhQUFB
QUFOUUlFQUFDb0VTQUFBRUNOQUFFQUFHb0VDQUFBVUNOQUFBQ0FHZ0VDCkFBRFVDQkFBQUtCR2dB
QUFBRFVDQkFBQXFCRWdBQUJBalFBQkFBQnFCQWdBQUZBalFBQUFnQm9CQWdBQTFKd3pRR1ptWmhw
ekFBQUEKL3dPY2dBQUFBRFVDQkFBQXFCRWdBQUJBalFBQkFBQnFCQWdBQUZBalFBQUFnQm9CQWdB
QTFBZ1FBQUNnUm9BQUFBQTFBZ1FBQUtnUgpJQUFBUUkwQUFRQUFhZ1FJQUFCUUkwQUFBSUFhQVFJ
QUFOUUlFQUFBb0VhQUFBQUFOUUlFQUFDb0VTQUFBRUNOQUFFQUFHb0VDQUFBClVDTkFBQUNBR2dF
Q0FBRFVDQkFBQUtCR2dBQUFBRFVDQkFBQXFCRWdBQUJBalFBQkFBQnFCQWdBQUZBalFBQUFnQm9C
QWdBQTFBZ1EKQUFDZ1JvQUFBQUExQWdRQUFLZ1JJQUFBUUkwQUFRQUFhZ1FJQUFCUUkwQUFBSUFh
QVFJQUFOUUlFQUFBb0VhQUFBQUFOUUlFQUFDbwpFU0FBQUVDTkFBRUFBR29FQ0FBQVVDTkFBQUNB
R2dFQ0FBRFVDQkFBQUtCR2dBQUFBRFVDQkFBQXFCRWdBQUJBalFBQkFBQnFCQWdBCkFGQWpRQUFB
Z0JvQkFnQUExQWdRQUFDZ1JvQUFBQUExQWdRQUFLZ1JJQUFBUUkwQUFRQUFhZ1FJQUFCUUkwQUFB
SUFhQVFJQUFOUUkKRUFBQW9FYUFBQUFBTlFJRUFBQ29FU0FBQUVDTkFBRUFBR29FQ0FBQVVDTkFB
QUNBR2dFQ0FBRFVDQkFBQUtCR2dBQUFBRFVDQkFBQQpxQkVnQUFCQWpRQUJBQUJxQkFnQUFGQWpR
QUFBZ0JvQkFnQUExQWdRQUFDZ1JvQUFBQUExQWdRQUFLZ1JJQUFBUUkwQUFRQUFhZ1FJCkFBQlFJ
MEFBQUlBYUFRSUFBTlFJRUFBQW9FYUFBQUFBTlFJRUFBQ29FU0FBQUVDTkFBRUFBR29FQ0FBQVVD
TkFBQUNBR2dFQ0FBRFUKQ0JBQUFLQkdnQUFBQURVQ0JBQUFxQkVnQUFCQWpRQUJBQUJxQkFnQUFG
QWpRQUFBZ0JvQkFnQUExQWdRQUFDZ1JvQUFBQUExQWdRQQpBS2dSSUFBQVFJMEFBUUFBYWdRSUFB
QlFJMEFBQUlBYUFRSUFBTlFJRUFBQW9FYUFBQUFBTlFJRUFBQ29FU0FBQUVDTkFBRUFBR29FCkNB
QUFVQ05BQUFDQUdnRUNBQURVQ0JBQUFLQkdnQUFBQURVQ0JBQUFxQkVnQUFCQWpRQUJBQUJxQkFn
QUFGQWpRQUFBZ0JvQkFnQUEKMUFnUUFBQ2dSb0FBQUFBMUFnUUFBS2dSSUFBQVFJMEFBUUFBYWdR
SUFBQlFJMEFBQUlBYUFRSUFBTlFJRUFBQW9FYUFBQUFBTlFJRQpBQUNvRVNBQUFFQ05BQUVBQUdv
RUNBQUFVQ05BQUFDQUdnRUNBQURVQ0JBQUFLQkdnQUFBQURVQ0JBQUFxQkVnQUFCQWpRQUJBQUJx
CkJBZ0FBRkFqUUFBQWdCb0JBZ0FBMUFnUUFBQ2dSb0FBQUFBMUFnUUFBS2dSSUFBQVFJMEFBUUFB
YWdRSUFBQlFJMEFBQUlBYUFRSUEKQU5RSUVBQUFvRWFBQUFBQU5RSUVBQUNvRVNBQUFFQ05BQUVB
QUdvRUNBQUFVQ05BQUFDQUdnRUNBQURVQ0JBQUFLQkdnQUFBQURVQwpCQUFBcUJFZ0FBQkFqUUFC
QUFCcUJBZ0FBRkFqUUFBQWdCb0JBZ0FBMUFnUUFBQ2dSb0FBQUFBMUFnUUFBS2dSSUFBQVFJMEFB
UUFBCmFnUUlBQUJRSTBBQUFJQWFBUUlBQU5RSUVBQUFvRWFBQUFBQU5RSUVBQUNvRVNBQUFFQ05B
QUVBQUdvRUNBQUFVQ05BQUFDQUdnRUMKQUFEVUNCQUFBS0JHZ0FBQUFEVUNCQUFBcUJFZ0FBQkFq
UUFCQUFCcUJBZ0FBRkFqUUFBQWdCb0JBZ0FBMUFnUUFBQ2dSb0FBQUFBMQpBZ1FBQUtnUklBQUFR
STBBQVFBQWFnUUlBQUJRSTBBQUFJQWFBUUlBQU5RSUVBQUFvRWFBQUFBQU5RSUVBQUNvRVNBQUFF
Q05BQUVBCkFHb0VDQUFBVUNOQUFBQ0FHZ0VDQUFEVUNCQUFBS0JHZ0FBQUFEVUNCQUFBcUJFZ0FB
QkFqUUFCQUFCcUJBZ0FBRkFqUUFBQWdCb0IKQWdBQTFBZ1FBQUNnUm9BQUFBQTFBZ1FBQUtnUklB
QUFRSTBBQVFBQWFnUUlBQUJRSTBBQUFJQWFBUUlBQU5RSUVBQUFvRWFBQUFBQQpOUUlFQUFDb0VT
QUFBRUNOQUFFQUFHb0VDQUFBVUNOQUFBQ0FHZ0VDQUFEVUNCQUFBS0JHZ0FBQUFEVUNCQUFBcUJF
Z0FBQkFqUUFCCkFBQnFCQWdBQUZBalFBQUFnQm9CQWdBQTFBZ1FBQUNnUm9BQUFBQTFBZ1FBQUtn
UklBQUFRSTBBQVFBQWFnUUlBQUJRSTBBQUFJQWEKQVFJQUFOUUlFQUFBb0VhQUFBQUFOUUlFQUFD
b0VTQUFBRUNOQUFFQUFHb0VDQUFBVUNOQUFBQ0FHZ0VDQUFEVUNCQUFBS0JHZ0FBQQpBRFVDQkFB
QXFCRWdBQUJBalFBQkFBQnFCQWdBQUZBalFBQUFnQm9CQWdBQTFBZ1FBQUNnUm9BQUFBQTFBZ1FB
QUtnUklBQUFRSTBBCkFRQUFhZ1FJQUFCUUkwQUFBSUFhQVFJQUFOUUlFQUFBb0VhQUFBQUFOUUlF
QUFDb0VTQUFBRUNOQUFFQUFHb0VDQUFBVUNOQUFBQ0EKR2dFQ0FBRFVDQkFBQUtCR2dBQUFBRFVD
QkFBQXFCRWdBQUJBalFBQkFBQnFCQWdBQUZBalFBQUFnQm9CQWdBQTFBZ1FBQUNnUm9BQQpBQUEx
QWdRQUFLZ1JJQUFBUUkwQUFRQUFhZ1FJQUFCUUkwQUFBSUFhQVFJQUFOUUlFQUFBb0VhQUFBQUFO
UUlFQUFDb0VTQUFBRUNOCkFBRUFBR29FQ0FBQVVDTkFBQUNBR2dFQ0FBRFVDQkFBQUtCR2dBQUFB
RFVDQkFBQXFCRWdBQUJBalFBQkFBQnFCQWdBQUZBalFBQUEKZ0JvQkFnQUExQWdRQUFDZ1JvQUFB
QUExQWdRQUFLZ1JJQUFBUUkwQUFRQUFhZ1FJQUFCUUkwQUFBSUFhQVFJQUFOUUlFQUFBb0VhQQpB
QUFBTlFJRUFBQ29FU0FBQUVDTkFBRUFBR29FQ0FBQVVDTkFBQUNBR2dFQ0FBRFVDQkFBQUtCR2dB
QUFBRFVDQkFBQXFCRWdBQUJBCmpRQUJBQUJxQkFnQUFGQWpRQUFBZ0JvQkFnQUExQWdRQUFDZ1Jv
QUFBQUExQWdRQUFLZ1JJQUFBUUkwQUFRQUFhZ1FJQUFCUUkwQUEKQUlBYUFRSUFBTlFJRUFBQW9F
YUFBQUFBTlFJRUFBQ29FU0FBQUVDTkFBRUFBR29FQ0FBQVVDTkFBQUNBR2dFQ0FBRFVDQkFBQUtC
RwpnQUFBQURVQ0JBQUFxQkVnQUFCQWpRQUJBQUJxQkFnQUFGQWpRQUFBZ0JvQkFnQUExQWdRQUFD
Z1JvQUFBQUExQWdRQUFLZ1JJQUFBClFJMEFBUUFBYWdRSUFBQlFJMEFBQUlBYUFRSUFBTlFJRUFB
QW9FYUFBQUFBTlFJRUFBQ29FU0FBQUVDTkFBRUFBR29FQ0FBQVVDTkEKQUFDQUdnRUNBQURVQ0JB
QUFLQkdnQUFBQURVQ0JBQUFxQkVnQUFCQWpRQUJBQUJxQkFnQUFGQWpRQUFBZ0JvQkFnQUExQWdR
QUFDZwpSb0FBQUFBMUFnUUFBS2dSSUFBQVFJMEFBUUFBYWdRSUFBQlFJMEFBQUlBYUFRSUFBTlFJ
RUFBQW9FYUFBQUFBTlFJRUFBQ29FU0FBCkFFQ05BQUVBQUdvRUNBQUFVQ05BQUFDQUdnRUNBQURV
Q0JBQUFLQkdnQUFBQURVQ0JBQUFxQkVnQUFCQWpRQUJBQUJxQkFnQUFGQWoKUUFBQWdCb0JBZ0FB
MUFnUUFBQ2dSb0FBQUFBMUFnUUFBS2dSSUFBQVFJMEFBUUFBYWdRSUFBQlFJMEFBQUlBYUFRSUFB
TlFJRUFBQQpvRWFBQUFBQU5RSUVBQUNvRVNBQUFFQ05BQUVBQUdvRUNBQUFVQ05BQUFDQUdnRUNB
QURVQ0JBQUFLQkdnQUFBQURVQ0JBQUFxQkVnCkFBQkFqUUFCQUFCcUJBZ0FBRkFqUUFBQWdCb0JB
Z0FBMUFnUUFBQ2dSb0FBQUFBMUFnUUFBS2dSSUFBQVFJMEFBUUFBYWdRSUFBQlEKSTBBQUFJQWFB
UUlBQU5RSUVBQUFvRWFBQUFBQU5RSUVBQUNvRVNBQUFFQ05BQUVBQUdvRUNBQUFVQ05BQUFDQUdn
RUNBQURVQ0JBQQpBS0JHZ0FBQUFEVUNCQUFBcUJFZ0FBQkFqUUFCQUFCcUJBZ0FBRkFqUUFBQWdC
b0JBZ0FBMUFnUUFBQ2dSb0FBQUFBMUFnUUFBS2dSCklBQUFRSTBBQVFBQWFnUUlBQUJRSTBBQUFJ
QWFBUUlBQU5RSUVBQUFvRWFBQUFBQU5RSUVBQUNvRVNBQUFFQ05BQUVBQUdvRUNBQUEKVUNOQUFB
Q0FHZ0VDQUFEVUNCQUFBS0JHZ0FBQUFEVUNCQUFBcUJFZ0FBQkFqUUFCQUFCcUJBZ0FBRkFqUUFB
QWdCb0JBZ0FBMUFnUQpBQUNnUm9BQUFBQTFBZ1FBQUtnUklBQUFRSTBBQVFBQWFnUUlBQUJRSTBB
QUFJQWFBUUlBQU5RSUVBQUFvRWFBQUFBQU5RSUVBQUNvCkVTQUFBRUNOQUFFQUFHb0VDQUFBVUNO
QUFBQ0FHZ0VDQUFEVUNCQUFBS0JHZ0FBQUFEVUNCQUFBcUJFZ0FBQkF6ZjhCVUo1Mjg4YlgKZUJj
QUFBQUFTVVZPUks1Q1lJST0KCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Bhc3RlLWlu
dG8tdGV4dGFyZWEtZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUg
bWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0KCg==
</data>
<flag name="review"
          id="2925"
          type_id="1"
          status="+"
          setter="justin.garcia"
    />
          </attachment>
      

    </bug>

</bugzilla>