<?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>24300</bug_id>
          
          <creation_ts>2009-03-02 13:46:55 -0800</creation_ts>
          <short_desc>Keep visited links private so that history info isn&apos;t leaked.</short_desc>
          <delta_ts>2010-05-07 08:00:15 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>37902</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Hogan">robert</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>hyatt</cc>
    
    <cc>jturcotte</cc>
    
    <cc>jwalden+bwo</cc>
    
    <cc>kenneth</cc>
    
    <cc>mike</cc>
    
    <cc>sam</cc>
    
    <cc>tkent</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zecke</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>111896</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-03-02 13:46:55 -0800</bug_when>
    <thetext>http://ha.ckers.org/weird/CSS-history.cgi demonstrates how malicious websites can use the &apos;visited&apos; element in CSS stylesheets to inspect the user&apos;s recent browsing history. 

The attached patch introduces a webcore setting &apos;CSSKeepVisitedLinksPrivate&apos; that allows webkit browsers to disable this behaviour.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111897</commentid>
    <comment_count>1</comment_count>
      <attachid>28196</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-03-02 13:48:28 -0800</bug_when>
    <thetext>Created attachment 28196
CSSKeepVisitedLinksPrivate patch

Tested with Arora.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122067</commentid>
    <comment_count>2</comment_count>
      <attachid>28196</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-19 22:36:01 -0700</bug_when>
    <thetext>Comment on attachment 28196
CSSKeepVisitedLinksPrivate patch

This also disables display of :visited styles, correct?  If so, this needs a better setting name.  Like visitedPseudoStyleEnabled().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127421</commentid>
    <comment_count>3</comment_count>
      <attachid>31664</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-06-22 12:14:53 -0700</bug_when>
    <thetext>Created attachment 31664
Updated patch

Still unsure of what to call the option but have altered it to the more explicit &apos;CSSIgnoreVisitedLinks&apos;.
Revisions include:
 - addition of a manual test-case
 - the original patch wasn&apos;t working properly - this one has been thoroughly tested
 - um, that&apos;s it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127580</commentid>
    <comment_count>4</comment_count>
      <attachid>31664</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-22 23:42:56 -0700</bug_when>
    <thetext>Comment on attachment 31664
Updated patch

&gt; +    Settings* settings = m_document-&gt;settings();
&gt; +    if (!settings || settings-&gt;cssIgnoreVisitedLinks())
&gt; +        m_IgnoreVisitedLinks = true;

This should default to false if we can&apos;t find settings.

&gt; +++ b/WebCore/manual-tests/css-ignore-visited-links.html

This should be a LayoutTest instead of a manual test.  See something like xssAuditor to see how to test non-default settings in LayoutTests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127708</commentid>
    <comment_count>5</comment_count>
      <attachid>31746</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-06-23 15:29:53 -0700</bug_when>
    <thetext>Created attachment 31746
Updated patch with layout test

m_IgnoreVisitedLinks is already set to false by default by the constructor. won&apos;t that do the trick?

i&apos;ve added a layout test - had to add a stub history manager to the qt dumprendertree to support it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127712</commentid>
    <comment_count>6</comment_count>
      <attachid>31746</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-23 15:39:45 -0700</bug_when>
    <thetext>Comment on attachment 31746
Updated patch with layout test

This is looking good!  Below are some minor style issues.  Once we address those, we&apos;re all set.

&gt; +function runTest() {
&gt; +    if (window.layoutTestController) {
&gt; +        layoutTestController.notifyDone();
&gt; +    }
&gt; +}

No braces around one-line if statements.

&gt; +    Settings* settings = m_document-&gt;settings();
&gt; +    if (!settings || settings-&gt;cssIgnoreVisitedLinks())
&gt; +        m_IgnoreVisitedLinks = true;

If |settings| is null, then m_IgnoreVisitedLinks gets set to true, which is isn&apos;t what we want (as I said in my previous review).

&gt; @@ -262,7 +265,6 @@ QString DumpRenderTree::dumpFramesAsText(QWebFrame* frame)
&gt;  
&gt;  QString DumpRenderTree::dumpBackForwardList()
&gt;  {
&gt; -    QString result;
&gt;      result.append(QLatin1String(&quot;\n============== Back Forward List ==============\n&quot;));
&gt;      result.append(QLatin1String(&quot;FIXME: Unimplemented!\n&quot;));
&gt;      result.append(QLatin1String(&quot;===============================================\n&quot;));

I don&apos;t understand why you removed this line.  Is this just unrelated cleanup?

&gt;      QWebPage *m_page;
&gt; +    HistoryManager *historyManager;

These * are misplaced.  I see that you&apos;re matching the style of this file, however.

&gt; +HistoryManager::HistoryManager(QObject *parent)
&gt; +    : QWebHistoryInterface(parent)
&gt; +    ,m_count(0)

Missing a space after the , here.

&gt; +    m_count++;

Prefer pre-increment (e.g, ++m_count).

Will this test fail on other platforms since you only implemented this API for QT?  Maybe you should update the skipped test lists for those platforms to avoid turning the tree red?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127723</commentid>
    <comment_count>7</comment_count>
      <attachid>31753</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-06-23 15:59:25 -0700</bug_when>
    <thetext>Created attachment 31753
Updated patch with suggested changes

oops - couple of clangers in there. thanks!

have ignored 2 items - retained the style in dumprendertree.h (because the rest of the file is like that as you note) and the unit-tests are already in qt&apos;s platform specific folder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127744</commentid>
    <comment_count>8</comment_count>
      <attachid>31753</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-23 17:08:31 -0700</bug_when>
    <thetext>Comment on attachment 31753
Updated patch with suggested changes

Awesome!  Thanks for fixing the nits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127830</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-06-23 23:51:03 -0700</bug_when>
    <thetext>I don&apos;t think the license in patch in (for historymanager.cpp) is one of the ones we accept for patches in WebKit.  I would suggest not landing this change until it has been worked out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127831</commentid>
    <comment_count>10</comment_count>
      <attachid>31753</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-23 23:52:02 -0700</bug_when>
    <thetext>Comment on attachment 31753
Updated patch with suggested changes

This patch is not BSD or LGPL.  Rolling out.  It should never have been r+&apos;d.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127832</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-23 23:52:34 -0700</bug_when>
    <thetext>Oh, nm.  I never landed it. :)  So not rolling it out... but r-ing it. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127833</commentid>
    <comment_count>12</comment_count>
      <attachid>31753</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-06-23 23:52:34 -0700</bug_when>
    <thetext>Comment on attachment 31753
Updated patch with suggested changes

This patch includes GPL-licensed code, so it can&apos;t be licensed as-is. WebKit code has to be LGPL or BSD-style licensed. Changing to r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127951</commentid>
    <comment_count>13</comment_count>
      <attachid>31797</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-06-24 11:40:49 -0700</bug_when>
    <thetext>Created attachment 31797
Patch with Update Copyright Notices

I&apos;ve updated the copyright notice on historymanger.* and also tweaked a few bits. 
Just FYI I started out with http://github.com/Arora/arora/tree/master/src/history/historymanager.cpp and ended up removing everything except the minimum required to support the tests. The contents of the remaining functions are entirely different from the original and their names are defined by qwebhistoryinterface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128113</commentid>
    <comment_count>14</comment_count>
      <attachid>31797</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-25 00:29:09 -0700</bug_when>
    <thetext>Comment on attachment 31797
Patch with Update Copyright Notices

(In reply to comment #13)
&gt; Just FYI I started out with
&gt; http://github.com/Arora/arora/tree/master/src/history/historymanager.cpp

INAL, but it sounds like this patch is a derived work from the above URI and therefore subject to the GPL.  Are you sure you have the legal right to relicense the code?  (I&apos;m pretty sure that&apos;s what you warrant when you click through the patch upload agreement.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128172</commentid>
    <comment_count>15</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-06-25 05:44:12 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 31797 [review])
&gt; (In reply to comment #13)
&gt; &gt; Just FYI I started out with
&gt; &gt; http://github.com/Arora/arora/tree/master/src/history/historymanager.cpp
&gt; INAL, but it sounds like this patch is a derived work from the above URI and
&gt; therefore subject to the GPL.  Are you sure you have the legal right to
&gt; relicense the code?  (I&apos;m pretty sure that&apos;s what you warrant when you click
&gt; through the patch upload agreement.)

I believe I have ended up with a completely different class - in fact it is a minimal class required to support qwebhistoryinterface. I understand that the way I wrote the class has created ambiguity, so you are right to be cautious.

At this point the only common elements between my historymanager.cpp and the one in Arora are:

 - the filenames
 - the name of the class (HistoryManager)

The only function names it shares with arora&apos;s are the ones that it is required to reimplement from qwebhistoryinterface in QtWebKit in order to function - addHistoryEntry and historyContains. The contents of both these functions is different from the arora file.

Can you advise what I need to do dispel the whiff of sulphur here?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128194</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-25 08:49:48 -0700</bug_when>
    <thetext>&gt; Can you advise what I need to do dispel the whiff of sulphur here?

That question is beyond my pay grade...  Hopefully someone with more knowledge of these issues will chime in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128213</commentid>
    <comment_count>17</comment_count>
    <who name="Benjamin Meyer">ben</who>
    <bug_when>2009-06-25 10:44:24 -0700</bug_when>
    <thetext>I reviewed the patch and did not find it to be a derivative of (my) Arora&apos;s history manager.  Any subclass of the history interface will look similar to both this and Arora&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128219</commentid>
    <comment_count>18</comment_count>
      <attachid>31865</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-06-25 11:02:30 -0700</bug_when>
    <thetext>Created attachment 31865
New class DRTHistory replacing HistoryManager

If it helps,  I&apos;ve updated the patch with two completely new files drthistory.cpp and drthistory.h and removed historymanager.cpp and historymanager..  The class they implement is now called DRTHistory.  I&apos;ll also submit a diff between the arora historymanager.cpp/h and drthistory.cpp/h. Hope this isn&apos;t OTT but just documenting that they are demonstrably non-derivative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128221</commentid>
    <comment_count>19</comment_count>
      <attachid>31867</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-06-25 11:09:18 -0700</bug_when>
    <thetext>Created attachment 31867
diff

as mentioned in previous comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129013</commentid>
    <comment_count>20</comment_count>
      <attachid>31865</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-30 03:04:07 -0700</bug_when>
    <thetext>Comment on attachment 31865
New class DRTHistory replacing HistoryManager

Don&apos;t you want to return PseudoAnyLink instead of PseudoLink?  If so, it seems the tests need to be updated to catch that case.

Otherwise this looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129129</commentid>
    <comment_count>21</comment_count>
      <attachid>31865</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-06-30 12:09:56 -0700</bug_when>
    <thetext>Comment on attachment 31865
New class DRTHistory replacing HistoryManager

if (!m_ignoreVisitedLinks &amp;&amp; pseudoState == PseudoVisited)

Why is the above change necessary?  If you hack checkPseudoState to always pretend like you aren&apos;t visited, then why do you need this extra code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129182</commentid>
    <comment_count>22</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-06-30 14:42:19 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 31865 [review])
&gt; if (!m_ignoreVisitedLinks &amp;&amp; pseudoState == PseudoVisited)
&gt; 
&gt; Why is the above change necessary?  If you hack checkPseudoState to always
&gt; pretend like you aren&apos;t visited, then why do you need this extra code?
&gt; 
You&apos;re right - this line is redundant. I&apos;ve tested it without it, and manual and auto tests still pass. I think it was introduced in an earlier stage in the patch, when for some reason I had the check in checkPseudoState in the wrong place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129191</commentid>
    <comment_count>23</comment_count>
      <attachid>32098</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-06-30 15:20:15 -0700</bug_when>
    <thetext>Created attachment 32098
Updated patch

Updated to remove redundant check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137922</commentid>
    <comment_count>24</comment_count>
      <attachid>32098</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 09:26:11 -0700</bug_when>
    <thetext>Comment on attachment 32098
Updated patch

I thought the QWebHistoryInterface interface was deprecated?  I know that WebKit qt has some hacks in place around the WebCore link hashing system just to support this interface.  Seeems we should not be using it from DRT if something better is available.

Style:
 92     DRTHistory *historyManager;

Leaked:
 154     historyManager = new DRTHistory(m_page);

You tests shoudl ideally e dumpAsText, since all they need to do is check the computedStyle, they don&apos;t need to dump the pixels for the page to confirm this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137967</commentid>
    <comment_count>25</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-08-07 10:44:44 -0700</bug_when>
    <thetext>AFAIK, we didn&apos;t deprecate QWebHistoryInterface as we have no other history API in place. If we should do so, now would be the time before our Qt 4.6 release.

CC&apos;ing Simon to see if he has some input.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138474</commentid>
    <comment_count>26</comment_count>
      <attachid>34405</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-08-09 04:41:07 -0700</bug_when>
    <thetext>Created attachment 34405
Updated patch

Thanks Eric - patch updated per your comments. Hopefully this patch will do if it&apos;s decided that moving from the deprecated QWebHistoryInterface API is another day&apos;s work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140394</commentid>
    <comment_count>27</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-14 17:27:18 -0700</bug_when>
    <thetext>It seems from this commit that ripping this bad API out of Qt was slated for 4.5... I guess that never happened?

http://trac.webkit.org/changeset/43052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140409</commentid>
    <comment_count>28</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-08-14 18:36:47 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; It seems from this commit that ripping this bad API out of Qt was slated for
&gt; 4.5... I guess that never happened?

It will not happen. The API needs to stay like this until Qt5.0. What Nokia can and should do (note I&apos;m not with Nokia) is to create a new API that follows the &quot;push&quot; history into WebCore model and deprecate the old one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142275</commentid>
    <comment_count>29</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-23 22:31:38 -0700</bug_when>
    <thetext>FYI: a similar bug entry for Mozilla:
  https://bugzilla.mozilla.org/show_bug.cgi?id=147777
They have discussed this issue for 7 years.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145855</commentid>
    <comment_count>30</comment_count>
      <attachid>34405</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 11:14:56 -0700</bug_when>
    <thetext>Comment on attachment 34405
Updated patch

Does qt have support yet for the layoutTestController.overridePreference stuff?  If so, this test really should use that and not be qt-specific (skipped by all the other platforms if they don&apos;t want to add this preference).

I think this patch is OK.  Just not very excited about it.  Especially with it using qt API which we were hoping to see die some day. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148781</commentid>
    <comment_count>31</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-09-21 13:19:54 -0700</bug_when>
    <thetext>&gt; (From update of attachment 34405 [details])
&gt; Does qt have support yet for the layoutTestController.overridePreference stuff?
&gt;  If so, this test really should use that and not be qt-specific (skipped by all
&gt; the other platforms if they don&apos;t want to add this preference).

Unfortunately qt does not support overridePreference at the moment.

&gt; 
&gt; I think this patch is OK.  Just not very excited about it.  Especially with it
&gt; using qt API which we were hoping to see die some day. ;)

In the patch&apos;s defence, it is adding support for the current qt history API to qt&apos;s DRT in order to permit an autotest. The feature itself doesn&apos;t depend on this API. Does that make a difference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150419</commentid>
    <comment_count>32</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-27 13:55:04 -0700</bug_when>
    <thetext>I admit I feel a certain hesitation of adding a feature to the QtWebKit API that isn&apos;t used by any other port (despite the fact that it appears useful).

So if all this is solved on a different level in the future, then this setting in the API would become obsolete I guess?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150598</commentid>
    <comment_count>33</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-09-28 12:20:10 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; I admit I feel a certain hesitation of adding a feature to the QtWebKit API
&gt; that isn&apos;t used by any other port (despite the fact that it appears useful).

I think there are people from other ports cc&apos;d on the bug so they can chime in if they intend to use the setting. Perhaps there is usually some consensus built with other parts before adding a setting to webcore? It&apos;s there if they want to use it I guess. It might be a natural fit with the &apos;Private Browsing&apos; mode offered by some browsers.

&gt; 
&gt; So if all this is solved on a different level in the future, then this setting
&gt; in the API would become obsolete I guess?

Yes, it would. Solving it without a setting - i.e. allowing the CSS style to display normally without leaking the information remotely - appears to be an intractable problem at this point. But if a solution is ever found, then it would make this setting obsolete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154392</commentid>
    <comment_count>34</comment_count>
      <attachid>34405</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-13 12:55:34 -0700</bug_when>
    <thetext>Comment on attachment 34405
Updated patch

This patch seems fine, but please add Preference APIs for the other platforms so we can have better test coverage of this feature.  Also m_ignoreVisitedLinks isn&apos;t the greatest name.  We&apos;re not ignoring visited links.  We&apos;re ignoring the history for the purpose of computing the :visited pseud-selector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157000</commentid>
    <comment_count>35</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-10-22 13:47:50 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 34405 [details])
&gt; This patch seems fine, but please add Preference APIs for the other platforms
&gt; so we can have better test coverage of this feature.  

I will be able to add and test it for gtk and possibly win and wx, but I don&apos;t have the build environment for mac, so let me know if that&apos;s not enough.

&gt; Also m_ignoreVisitedLinks
&gt; isn&apos;t the greatest name.  We&apos;re not ignoring visited links.  We&apos;re ignoring the
&gt; history for the purpose of computing the :visited pseud-selector.

OK. m_ignoreHistoryForCSS ? (I&apos;m bad at names as you can tell)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168921</commentid>
    <comment_count>36</comment_count>
      <attachid>44334</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-12-04 14:07:22 -0800</bug_when>
    <thetext>Created attachment 44334
Update Patch

Updated patch adding preference and unit tests to gtk, qt, and win ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168966</commentid>
    <comment_count>37</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-12-04 15:47:54 -0800</bug_when>
    <thetext>For the Qt port I would prefer a positive naming of the attribute in QWebSettings, i.e. FooEnabled with a default to true - simply for consistency.

What do the other Qt hackers think? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169092</commentid>
    <comment_count>38</comment_count>
      <attachid>44360</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-12-06 08:35:49 -0800</bug_when>
    <thetext>Created attachment 44360
updated patch

Updated per Simon&apos;s comments - option is now CSSVisitedStyleEnabled and set to true by default for all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169093</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-06 08:38:42 -0800</bug_when>
    <thetext>Attachment 44360 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/gtk/webkit/webkitwebsettings.cpp:101:  css_visited_style_enabled is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/gtk/webkit/webkitwebview.cpp:2548:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Total errors found: 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169111</commentid>
    <comment_count>40</comment_count>
      <attachid>44364</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-12-06 12:05:08 -0800</bug_when>
    <thetext>Created attachment 44364
Update to skip test for Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169348</commentid>
    <comment_count>41</comment_count>
      <attachid>44364</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-07 09:59:43 -0800</bug_when>
    <thetext>Comment on attachment 44364
Update to skip test for Mac

&gt; @@ -873,7 +873,11 @@ CSSStyleSelector::SelectorChecker::SelectorChecker(Document* document, bool stri
&gt;      , m_collectRulesOnly(false)
&gt;      , m_pseudoStyle(NOPSEUDO)
&gt;      , m_documentIsHTML(document-&gt;isHTMLDocument())
&gt; +    , m_cssVisitedStyleEnabled(true)

In a class named CSSStyleSelector, it seems that include &quot;css&quot; in the name of the data member is not helpful. The best boolean data member names are things that complete a phrase &quot;style selector &lt;xxx&gt;&quot; so I would call this m_ignoresVisitedLinks.

I&apos;m also not sure the CSS style selector is the right level for this. The PageGroup class already has a function setShouldTrackVisitedLinks. Do we really need to add something else?

I&apos;m going to say review- for now so you can consider both of those comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169386</commentid>
    <comment_count>42</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-12-07 11:10:25 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 44364 [details])
&gt; &gt; @@ -873,7 +873,11 @@ CSSStyleSelector::SelectorChecker::SelectorChecker(Document* document, bool stri
&gt; &gt;      , m_collectRulesOnly(false)
&gt; &gt;      , m_pseudoStyle(NOPSEUDO)
&gt; &gt;      , m_documentIsHTML(document-&gt;isHTMLDocument())
&gt; &gt; +    , m_cssVisitedStyleEnabled(true)
&gt; 
&gt; In a class named CSSStyleSelector, it seems that include &quot;css&quot; in the name of
&gt; the data member is not helpful. The best boolean data member names are things
&gt; that complete a phrase &quot;style selector &lt;xxx&gt;&quot; so I would call this
&gt; m_ignoresVisitedLinks.
&gt; 
From comment #34:
&gt; Also m_ignoreVisitedLinks
&gt; isn&apos;t the greatest name.  We&apos;re not ignoring visited links.  We&apos;re ignoring the
&gt; history for the purpose of computing the :visited pseud-selector.
:-) I think you read that comment and are disagreeing with Adam - so I&apos;ll change it back again if no one still objects.. or let me know.

&gt; I&apos;m also not sure the CSS style selector is the right level for this. The
&gt; PageGroup class already has a function setShouldTrackVisitedLinks. Do we really
&gt; need to add something else?
&gt; 
I should have mentioned in the original bug report that I decided against this because the purpose of the setting is to conceal visited links from CSS exploits rather than not track visited links at all (and wipe from the hash db any already visited). This seemed the less intrusive way of implementing it, since the user may find it confusing when they switch *out* of the option and find that links which were displayed as visited before they switched are now displayed as not-visited.


&gt; I&apos;m going to say review- for now so you can consider both of those comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175287</commentid>
    <comment_count>43</comment_count>
      <attachid>44364</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-12-28 12:46:45 -0800</bug_when>
    <thetext>Comment on attachment 44364
Update to skip test for Mac

See comment #42</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175472</commentid>
    <comment_count>44</comment_count>
      <attachid>44364</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-29 00:26:21 -0800</bug_when>
    <thetext>Comment on attachment 44364
Update to skip test for Mac

The EWS builders seem to think this patch does not apply.  Meaning it won&apos;t be able to be cq&apos;d even if r+&apos;d.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175475</commentid>
    <comment_count>45</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-29 00:26:47 -0800</bug_when>
    <thetext>http://webkit-commit-queue.appspot.com/patch/44364 is the EWS status link btw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186588</commentid>
    <comment_count>46</comment_count>
      <attachid>44364</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-01 15:19:04 -0800</bug_when>
    <thetext>Comment on attachment 44364
Update to skip test for Mac

This patch does not apply and appears abandoned.  r-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191101</commentid>
    <comment_count>47</comment_count>
      <attachid>48915</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-02-17 11:08:02 -0800</bug_when>
    <thetext>Created attachment 48915
Updated Patch

God loves a trier!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191219</commentid>
    <comment_count>48</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-17 14:32:08 -0800</bug_when>
    <thetext>This  new patch also does not apply, as you can tell by the purple bubbles below the patch.  They should be green (except for Mac) if your patch applies correctly and builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192275</commentid>
    <comment_count>49</comment_count>
      <attachid>49155</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-02-21 11:33:29 -0800</bug_when>
    <thetext>Created attachment 49155
Updated Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192276</commentid>
    <comment_count>50</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-21 11:37:16 -0800</bug_when>
    <thetext>Attachment 49155 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/gtk/webkit/webkitwebsettings.cpp:1200:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Ignoring &quot;WebKit/qt/Api/qwebsettings.cpp&quot;: this file is exempt from the style guide.
Ignoring &quot;WebKit/qt/Api/qwebsettings.h&quot;: this file is exempt from the style guide.
Total errors found: 1 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192278</commentid>
    <comment_count>51</comment_count>
      <attachid>49157</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-02-21 11:50:38 -0800</bug_when>
    <thetext>Created attachment 49157
Updated Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199776</commentid>
    <comment_count>52</comment_count>
      <attachid>49157</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-15 13:04:56 -0700</bug_when>
    <thetext>Comment on attachment 49157
Updated Patch

I haven&apos;t discussed this with other members of the project, but I think we should fix this by default instead of adding an option.

One approach that can work by default is the one outlined here:
http://dbaron.org/mozilla/visited-privacy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206635</commentid>
    <comment_count>53</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-03-31 12:19:19 -0700</bug_when>
    <thetext>I&apos;m going to implement dbaron&apos;s solution to this problem.  It&apos;s great.  That way we don&apos;t need an extra option for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206636</commentid>
    <comment_count>54</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-03-31 12:19:52 -0700</bug_when>
    <thetext>Taking the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207251</commentid>
    <comment_count>55</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-01 10:53:07 -0700</bug_when>
    <thetext>Another consideration on top of what dbaron did is that if we ever allow for the drawing of HTML elements into a canvas, we will need to have a notion that the paint is &quot;untrusted&quot;, and only paint the unvisited styles.  For now I&apos;ll punt on that, but I&apos;ll put a FIXME in the drawing function that will mention this future issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207417</commentid>
    <comment_count>56</comment_count>
      <attachid>52338</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-01 14:43:22 -0700</bug_when>
    <thetext>Created attachment 52338
Work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208004</commentid>
    <comment_count>57</comment_count>
      <attachid>52436</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-02 12:37:29 -0700</bug_when>
    <thetext>Created attachment 52436
This patch gets all the drawing code changed properly (except for SVG fill and stroke).

This patch gets all the drawing code for border, outlines, column rules, etc. patched properly.  SVG fill and stroke still need to be patched.

visitedDependentColor right now still just returns the unvisited style color, so the next step is to patch it to really fetch the visited style.  It will do this for both visited and unvisited links to prevent timing attacks based off slow style computation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208076</commentid>
    <comment_count>58</comment_count>
      <attachid>52451</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-02 14:52:45 -0700</bug_when>
    <thetext>Created attachment 52451
Fix collapsed border drawing to propagate colors from the original elements participating in the collapse

To get collapsed borders in tables working, I had to fix bugs with color propagation in those functions.  Now a CollapsedBorderValue will make sure to bring along the color property from the original element if no border color is explicitly set.  The current code in TOT always uses the cell&apos;s current color when no border color is set on the winning border style, and that&apos;s wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208127</commentid>
    <comment_count>59</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-02 16:10:15 -0700</bug_when>
    <thetext>dhyatt and I chatted about timing attacks on #webkit the other day.  dbaron has a timing testing that you might be interested in testing your patch against:

https://bugzilla.mozilla.org/show_bug.cgi?id=147777#c35</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208613</commentid>
    <comment_count>60</comment_count>
      <attachid>52552</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-05 12:02:30 -0700</bug_when>
    <thetext>Created attachment 52552
This patch gets the feature working!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208701</commentid>
    <comment_count>61</comment_count>
      <attachid>52572</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-05 14:22:20 -0700</bug_when>
    <thetext>Created attachment 52572
Add SVG fill/stroke support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208712</commentid>
    <comment_count>62</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-05 14:36:17 -0700</bug_when>
    <thetext>Some notes:

My biggest worry is performance (and to a lesser extent footprint).  All links and their descendants effectively have two styles.  The time to compute the style information for these objects has doubled, and the style footprint for these objects has doubled.

I&apos;m not actually computing an unvisited and a visited style for each node.  I&apos;m computing an unvisited and real style for each node.  If the real style is also unvisited then you end up with duplicated styles.  It might be better to compute a forced visited style for each node, so that the two styles are actually unvisited and visited.

Doing so means I&apos;d need to know if the link is actually visited at paint time rather than just always using the visited color.

I pretty much have to do this to avoid timing attacks though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208745</commentid>
    <comment_count>63</comment_count>
      <attachid>52582</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-05 15:38:39 -0700</bug_when>
    <thetext>Created attachment 52582
Ready for a first review pass

This patch is ready for someone to take a look at it.

It&apos;s kind of an open question how we want to do tests.  This feature is extremely difficult to test using our layout test system, so I need to think about what the best way to test it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208747</commentid>
    <comment_count>64</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-05 15:40:45 -0700</bug_when>
    <thetext>Isn&apos;t this trivial to test with pixel tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208751</commentid>
    <comment_count>65</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-05 15:44:55 -0700</bug_when>
    <thetext>Attachment 52582 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/rendering/style/RenderStyle.cpp:502:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/rendering/style/RenderStyle.h:178:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/rendering/style/RenderStyle.h:204:  _insideLink is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/rendering/style/RenderStyle.h:249:  _styleType is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/rendering/style/RenderStyle.h:255:  _isLink is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/rendering/RenderObject.cpp:828:  Missing spaces around /  [whitespace/operators] [3]
WebCore/rendering/RenderObject.cpp:834:  Missing spaces around /  [whitespace/operators] [3]
WebCore/rendering/RenderObject.cpp:2302:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/rendering/RenderObject.cpp:2303:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/rendering/InlineFlowBox.cpp:24:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/LinkHash.cpp:194:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 11 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208753</commentid>
    <comment_count>66</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-04-05 15:49:13 -0700</bug_when>
    <thetext>Attachment 52582 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/1651197</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208758</commentid>
    <comment_count>67</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-05 15:55:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/6407151&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209642</commentid>
    <comment_count>68</comment_count>
      <attachid>52738</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-07 08:39:50 -0700</bug_when>
    <thetext>Created attachment 52738
Patch that fixes link hashing for &lt;a href=&quot;&quot;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209645</commentid>
    <comment_count>69</comment_count>
      <attachid>52738</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-04-07 08:41:54 -0700</bug_when>
    <thetext>Comment on attachment 52738
Patch that fixes link hashing for &lt;a href=&quot;&quot;&gt;

The code change looks good. But no regression test makes me sad!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209807</commentid>
    <comment_count>70</comment_count>
      <attachid>52778</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-07 13:26:30 -0700</bug_when>
    <thetext>Created attachment 52778
Patch including ChangeLogs and tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210371</commentid>
    <comment_count>71</comment_count>
      <attachid>52778</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-04-08 14:06:47 -0700</bug_when>
    <thetext>Comment on attachment 52778
Patch including ChangeLogs and tests

r=me, but you need to fix the issues i mentioned on irc: correct bit count, windows drt stuff in particular</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210386</commentid>
    <comment_count>72</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-08 14:30:04 -0700</bug_when>
    <thetext>Fixed in r57292.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28196</attachid>
            <date>2009-03-02 13:48:28 -0800</date>
            <delta_ts>2009-06-22 12:14:53 -0700</delta_ts>
            <desc>CSSKeepVisitedLinksPrivate patch</desc>
            <filename>ConcealVisitedLinks.patch</filename>
            <type>text/plain</type>
            <size>14767</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA0MTM2MikKKysrIFdlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzUsNiArODc1
LDEwIEBAIFBzZXVkb1N0YXRlIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2gKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybiBQc2V1ZG9MaW5rOwogCisgICAgU2V0dGluZ3MqIHNldHRp
bmdzID0gbV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKKyAgICBpZiAoIXNldHRpbmdzIHx8IHNldHRp
bmdzLT5jc3NLZWVwVmlzaXRlZExpbmtzUHJpdmF0ZSgpKQorICAgICAgICByZXR1cm4gUHNldWRv
TGluazsKKwogICAgIG1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRlLmFkZChoYXNoKTsKICAg
ICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gpID8gUHNldWRvVmlzaXRl
ZCA6IFBzZXVkb0xpbms7CiB9CkBAIC01ODQ0LDYgKzU4NDgsMTEgQEAgYm9vbCBDU1NTdHlsZVNl
bGVjdG9yOjphZmZlY3RlZEJ5Vmlld3BvcgogCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVj
dG9yQ2hlY2tlcjo6YWxsVmlzaXRlZFN0YXRlQ2hhbmdlZCgpCiB7CisKKyAgICBTZXR0aW5ncyog
c2V0dGluZ3MgPSBtX2RvY3VtZW50LT5zZXR0aW5ncygpOworICAgIGlmICghc2V0dGluZ3MgfHwg
c2V0dGluZ3MtPmNzc0tlZXBWaXNpdGVkTGlua3NQcml2YXRlKCkpCisgICAgICAgIHJldHVybjsK
KwogICAgIGlmIChtX2xpbmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX2RvY3VtZW50OyBub2RlOyBub2Rl
ID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CkBAIC01ODU0LDYgKzU4NjMsMTEgQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OgogCiB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6dmlzaXRlZFN0YXRlQ2hhbmdlZChMaW5rSGFzaCB2aXNp
dGVkSGFzaCkKIHsKKworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZG9jdW1lbnQtPnNldHRp
bmdzKCk7CisgICAgaWYgKCFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+Y3NzS2VlcFZpc2l0ZWRMaW5r
c1ByaXZhdGUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFtX2xpbmtzQ2hlY2tlZEZv
clZpc2l0ZWRTdGF0ZS5jb250YWlucyh2aXNpdGVkSGFzaCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBmb3IgKE5vZGUqIG5vZGUgPSBtX2RvY3VtZW50OyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVy
c2VOZXh0Tm9kZSgpKSB7CkluZGV4OiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHJldmlzaW9uIDQxMzYyKQorKysgV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBT
ZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1faXNKYXZhRW5hYmxlZChmYWxz
ZSkKICAgICAsIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGZhbHNlKQogICAgICwgbV9wcml2
YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKQorICAgICwgbV9jc3NLZWVwVmlzaXRlZExpbmtzUHJp
dmF0ZShmYWxzZSkKICAgICAsIG1fYXJlUGx1Z2luc0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2Rh
dGFiYXNlc0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2xvY2FsU3RvcmFnZUVuYWJsZWQoZmFsc2Up
CkBAIC0yMjksNiArMjMwLDExIEBAIHZvaWQgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0Vu
YWJsZWQKICAgICBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkOwogfQogCit2b2lkIFNldHRpbmdzOjpzZXRDU1NLZWVwVmlzaXRlZExpbmtzUHJpdmF0ZShi
b29sIGNzc0tlZXBWaXNpdGVkTGlua3NQcml2YXRlKQoreworICAgIG1fY3NzS2VlcFZpc2l0ZWRM
aW5rc1ByaXZhdGUgPSBjc3NLZWVwVmlzaXRlZExpbmtzUHJpdmF0ZTsKK30KKwogdm9pZCBTZXR0
aW5nczo6c2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShib29sIGphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkpCiB7CiAgICAgbV9qYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5ID0gamF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21h
dGljYWxseTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9TZXR0aW5ncy5oCShyZXZpc2lvbiA0MTM2MikKKysrIFdlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCk7CiAg
ICAgICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZDsgfQogICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRDU1NLZWVw
VmlzaXRlZExpbmtzUHJpdmF0ZShib29sKTsKKyAgICAgICAgYm9vbCBjc3NLZWVwVmlzaXRlZExp
bmtzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3NzS2VlcFZpc2l0ZWRMaW5rc1ByaXZhdGU7
IH0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgc2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoY29u
c3QgU3RyaW5nJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgZGVmYXVsdFRleHRFbmNvZGluZ05h
bWUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRUZXh0RW5jb2RpbmdOYW1lOyB9CiAKQEAgLTIz
MCw2ICsyMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9pc0phdmFF
bmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA6IDE7
CiAgICAgICAgIGJvb2wgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkIDogMTsKKyAgICAgICAgYm9v
bCBtX2Nzc0tlZXBWaXNpdGVkTGlua3NQcml2YXRlIDogMTsKICAgICAgICAgYm9vbCBtX2FyZVBs
dWdpbnNFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2RhdGFiYXNlc0VuYWJsZWQgOiAxOwog
ICAgICAgICBib29sIG1fbG9jYWxTdG9yYWdlRW5hYmxlZCA6IDE7CkluZGV4OiBXZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQkocmV2aXNpb24gNDEz
NjIpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50
Ojp1cGRhdGVXaW5kb3dUaXQKICAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW1dl
YlByZWZlcmVuY2VzIGFsbG9jXSBpbml0XTsKICAgICBbcHJlZmVyZW5jZXMgc2V0QXV0b3NhdmVz
Ok5PXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDpZRVNdOwor
ICAgIFtwcmVmZXJlbmNlcyBzZXRDU1NLZWVwVmlzaXRlZExpbmtzUHJpdmF0ZTpOT107CiAgICAg
W3ByZWZlcmVuY2VzIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseTpZRVNdOwogICAgIFtwcmVm
ZXJlbmNlcyBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJl
bmNlcyBzZXRKYXZhU2NyaXB0RW5hYmxlZDpZRVNdOwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkocmV2aXNpb24gNDEzNjIpCisrKyBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDYgKzYwLDcgQEAKICNkZWZpbmUgV2ViS2l0QmFja0ZvcndhcmRDYWNoZUV4cGlyYXRp
b25JbnRlcnZhbEtleSBAIldlYktpdEJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWxL
ZXkiCiAjZGVmaW5lIFdlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5IEAiV2ViS2l0VGFiVG9M
aW5rc1ByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdlYktpdFByaXZhdGVCcm93c2luZ0VuYWJsZWRQ
cmVmZXJlbmNlS2V5IEAiV2ViS2l0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCIKKyNkZWZpbmUgV2Vi
S2l0Q1NTS2VlcFZpc2l0ZWRMaW5rc1ByaXZhdGVQcmVmZXJlbmNlS2V5IEAiV2ViS2l0Q1NTS2Vl
cFZpc2l0ZWRMaW5rc1ByaXZhdGUiCiAjZGVmaW5lIFdlYkNvbnRpbnVvdXNTcGVsbENoZWNraW5n
RW5hYmxlZCBAIldlYkNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCIKICNkZWZpbmUgV2Vi
R3JhbW1hckNoZWNraW5nRW5hYmxlZCBAIldlYkdyYW1tYXJDaGVja2luZ0VuYWJsZWQiCiAjZGVm
aW5lIFdlYktpdERPTVBhc3RlQWxsb3dlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRET01QYXN0ZUFs
bG93ZWRQcmVmZXJlbmNlS2V5IgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLmgJ
KHJldmlzaW9uIDQxMzYyKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2Niw2ICszNjYsMTkgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJQ
cmVmZXJlbmNlc0NoYW5nZWRObwogLSAoQk9PTClwcml2YXRlQnJvd3NpbmdFbmFibGVkOwogCiAv
KiEKKyAgICBAbWV0aG9kIHNldENTU0tlZXBWaXNpdGVkTGlua3NQcml2YXRlOgorICAgIEBwYXJh
bSBmbGFnIAorICAgIEBhYnN0cmFjdCBQcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIHVzaW5nIHRoZSAn
dmlzaXRlZCcgcHJvcGVydHkKKyAgICAgICAgaW4gQ1NTIHN0eWxlc2hlZXRzIHRvIGdhdGhlciBp
bmZvcm1hdGlvbiBvbiB5b3VyIGJyb3dzaW5nIGhpc3RvcnkuLgorICovCistICh2b2lkKXNldENT
U0tlZXBWaXNpdGVkTGlua3NQcml2YXRlOihCT09MKWZsYWc7CisKKy8qIQorICAgIEBtZXRob2Qg
Y3NzS2VlcFZpc2l0ZWRMaW5rc1ByaXZhdGUKKyAqLworLSAoQk9PTCljc3NLZWVwVmlzaXRlZExp
bmtzUHJpdmF0ZTsKKworLyohCiAgICAgQG1ldGhvZCBzZXRUYWJzVG9MaW5rczoKICAgICBAcGFy
YW0gZmxhZyAKICAgICBAYWJzdHJhY3QgSWYgdGFic1RvTGlua3MgaXMgWUVTLCB0aGUgdGFiIGtl
eSB3aWxsIGZvY3VzIGxpbmtzIGFuZCBmb3JtIGNvbnRyb2xzLiAKSW5kZXg6IFdlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDQxMzYyKQorKysgV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDcgQEAg
c3RhdGljIFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbEZvck1haW5CdQogICAgICAgICBAIjE4MDAi
LCAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9u
SW50ZXJ2YWxLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2Vi
S2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpOT10sICAgV2ViS2l0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZFByZWZlcmVuY2VLZXksCisg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0Q1NTS2VlcFZpc2l0
ZWRMaW5rc1ByaXZhdGVQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6Tk9dLCAgIFdlYktpdFJlc3BlY3RTdGFuZGFyZFN0eWxlS2V5RXF1aXZhbGVudHNQcmVm
ZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktp
dFNob3dzVVJMc0luVG9vbFRpcHNQcmVmZXJlbmNlS2V5LAogICAgICAgICBAIjEiLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdFBERkRpc3BsYXlNb2RlUHJlZmVyZW5jZUtleSwKQEAg
LTcyMCw2ICs3MjEsMTYgQEAgc3RhdGljIFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbEZvck1haW5C
dQogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdFByaXZhdGVCcm93c2lu
Z0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKIH0KIAorLSAodm9pZClzZXRDU1NLZWVwVmlzaXRlZExp
bmtzUHJpdmF0ZTooQk9PTClmbGFnCit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZv
cktleTpXZWJLaXRDU1NLZWVwVmlzaXRlZExpbmtzUHJpdmF0ZVByZWZlcmVuY2VLZXldOworfQor
CistIChCT09MKWNzc0tlZXBWaXNpdGVkTGlua3NQcml2YXRlCit7CisgICAgcmV0dXJuIFtzZWxm
IF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0Q1NTS2VlcFZpc2l0ZWRMaW5rc1ByaXZhdGVQcmVmZXJl
bmNlS2V5XTsKK30KKwogLSAodm9pZClzZXRVc2VzUGFnZUNhY2hlOihCT09MKXVzZXNQYWdlQ2Fj
aGUKIHsKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOnVzZXNQYWdlQ2FjaGUgZm9yS2V5OldlYktp
dFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5XTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShy
ZXZpc2lvbiA0MTM2MikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzI1LDYgKzEzMjUsNyBAQCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0aWFsaXpl
QXBwbGljYXRpb25DCiAgICAgc2V0dGluZ3MtPnNldERhdGFiYXNlc0VuYWJsZWQoW3ByZWZlcmVu
Y2VzIGRhdGFiYXNlc0VuYWJsZWRdKTsKICAgICBzZXR0aW5ncy0+c2V0TG9jYWxTdG9yYWdlRW5h
YmxlZChbcHJlZmVyZW5jZXMgbG9jYWxTdG9yYWdlRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5z
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkXSk7CisgICAgc2V0dGluZ3MtPnNldENTU0tlZXBWaXNpdGVkTGlua3NQcml2YXRlKFtwcmVm
ZXJlbmNlcyBjc3NLZWVwVmlzaXRlZExpbmtzUHJpdmF0ZV0pOwogICAgIHNldHRpbmdzLT5zZXRT
YW5zU2VyaWZGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBzYW5zU2VyaWZGb250RmFtaWx5XSk7CiAg
ICAgc2V0dGluZ3MtPnNldFNlcmlmRm9udEZhbWlseShbcHJlZmVyZW5jZXMgc2VyaWZGb250RmFt
aWx5XSk7CiAgICAgc2V0dGluZ3MtPnNldFN0YW5kYXJkRm9udEZhbWlseShbcHJlZmVyZW5jZXMg
c3RhbmRhcmRGb250RmFtaWx5XSk7CkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCShyZXZpc2lv
biA0MTM2MikKKysrIFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUwLDYgKzE1MCwxMCBAQCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVz
LnZhbHVlKFFXZWJTZXR0aW5nczo6UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkpOwogICAgICAgICBz
ZXR0aW5ncy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCh2YWx1ZSk7CiAKKyAgICAgICAgdmFs
dWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NTS2VlcFZpc2l0ZWRMaW5rc1By
aXZhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0
cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU0tlZXBWaXNpdGVkTGlua3NQcml2YXRlKSk7
CisgICAgICAgIHNldHRpbmdzLT5zZXRDU1NLZWVwVmlzaXRlZExpbmtzUHJpdmF0ZSh2YWx1ZSk7
CisgICAgICAgIAogICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdz
OjpKYXZhc2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpKYXZh
c2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRET01QYXN0
ZUFsbG93ZWQodmFsdWUpOwpAQCAtMzExLDYgKzMxNSw4IEBAIFFXZWJTZXR0aW5ncyAqUVdlYlNl
dHRpbmdzOjpnbG9iYWxTZXR0aW4KICAgICAgICAgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIGZlYXR1
cmUgaXMgZW5hYmxlZCBvciBub3QuCiAgICAgXHZhbHVlIExvY2FsU3RvcmFnZURhdGFiYXNlRW5h
YmxlZCBTcGVjaWZpZXMgd2hldGhlciBzdXBwb3J0IGZvciB0aGUgSFRNTCA1CiAgICAgICAgIGxv
Y2FsIHN0b3JhZ2UgZmVhdHVyZSBpcyBlbmFibGVkIG9yIG5vdC4KKyAgICBcdmFsdWUgQ1NTS2Vl
cFZpc2l0ZWRMaW5rc1ByaXZhdGUgUHJldmVudHMgd2Vic2l0ZXMgZnJvbSB1c2luZyB0aGUgJ3Zp
c2l0ZWQnIHByb3BlcnR5CisgICAgICAgIGluIENTUyBzdHlsZXNoZWV0cyB0byBnYXRoZXIgaW5m
b3JtYXRpb24gb24geW91ciBicm93c2luZyBoaXN0b3J5LgogKi8KIAogLyohCkluZGV4OiBXZWJL
aXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdl
YnNldHRpbmdzLmgJKHJldmlzaW9uIDQxMzYyKQorKysgV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGlu
Z3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsOCBAQCBwdWJsaWM6CiAgICAgICAgIFBy
aW50RWxlbWVudEJhY2tncm91bmRzLAogICAgICAgICBPZmZsaW5lU3RvcmFnZURhdGFiYXNlRW5h
YmxlZCwKICAgICAgICAgT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkLAotICAgICAg
ICBMb2NhbFN0b3JhZ2VEYXRhYmFzZUVuYWJsZWQKKyAgICAgICAgTG9jYWxTdG9yYWdlRGF0YWJh
c2VFbmFibGVkLAorICAgICAgICBDU1NLZWVwVmlzaXRlZExpbmtzUHJpdmF0ZQogICAgIH07CiAg
ICAgZW51bSBXZWJHcmFwaGljIHsKICAgICAgICAgTWlzc2luZ0ltYWdlR3JhcGhpYywKSW5kZXg6
IFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkocmV2aXNpb24gNDEzNjIpCisrKyBX
ZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OSw2ICs1OSw3IEBACiAjZGVmaW5lIFdlYktpdEJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50
ZXJ2YWxLZXkgIldlYktpdEJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWxLZXkiCiAj
ZGVmaW5lIFdlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5ICJXZWJLaXRUYWJUb0xpbmtzUHJl
ZmVyZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZFByZWZlcmVu
Y2VLZXkgIldlYktpdFByaXZhdGVCcm93c2luZ0VuYWJsZWQiCisjZGVmaW5lIFdlYktpdENTU0tl
ZXBWaXNpdGVkTGlua3NQcml2YXRlS2V5ICJXZWJLaXRDU1NLZWVwVmlzaXRlZExpbmtzUHJpdmF0
ZSIKICNkZWZpbmUgV2ViS2l0SWNvbkRhdGFiYXNlTG9jYXRpb25LZXkgIldlYktpdEljb25EYXRh
YmFzZUxvY2F0aW9uIgogI2RlZmluZSBXZWJLaXRJY29uRGF0YWJhc2VFbmFibGVkUHJlZmVyZW5j
ZUtleSAiV2ViS2l0SWNvbkRhdGFiYXNlRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0VXNlc1BhZ2VD
YWNoZVByZWZlcmVuY2VLZXkgIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IgpJbmRl
eDogV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9XZWJQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDQxMzYyKQorKysgV2ViS2l0L3dpbi9XZWJQ
cmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNSw2ICsyMTUsNyBAQCB2b2lkIFdl
YlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNlCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2
YWxLZXkpLCBDRlNUUigiMTgwMCIpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2Up
OwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQcml2YXRl
QnJvd3NpbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdENTU0tlZXBWaXNpdGVkTGlu
a3NQcml2YXRlUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFJlc3BlY3RTdGFuZGFyZFN0eWxlS2V5
RXF1aXZhbGVudHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKICAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0U2hvd3NVUkxzSW5Ub29sVGlwc1By
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRQREZEaXNwbGF5TW9kZVByZWZlcmVuY2VLZXkpLCBDRlNU
UigiMSIpKTsKQEAgLTg5Myw2ICs4OTQsMjAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJQcmVmZXJlbmNlcwogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRDU1NLZWVwVmlzaXRlZExpbmtzUHJpdmF0ZSgKKyAg
ICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCkKK3sKKyAgICBzZXRCb29sVmFsdWUoQ0ZTVFIoV2Vi
S2l0Q1NTS2VlcFZpc2l0ZWRMaW5rc1ByaXZhdGVQcmVmZXJlbmNlS2V5KSwgZW5hYmxlZCk7Cisg
ICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVy
ZW5jZXM6OmNzc0tlZXBWaXNpdGVkTGlua3NQcml2YXRlKAorICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCogZW5hYmxlZCkKK3sKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNU
UihXZWJLaXRDU1NLZWVwVmlzaXRlZExpbmtzUHJpdmF0ZVByZWZlcmVuY2VLZXkpKTsKKyAgICBy
ZXR1cm4gU19PSzsKK30KKwogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNl
czo6c2V0VGFic1RvTGlua3MoIAogICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQogewpJbmRl
eDogV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gNDEzNjIpCisrKyBXZWJLaXQvd2luL1dlYlByZWZl
cmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Myw2ICsxOTMsMTIgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcml2YXRlQnJvd3NpbmdFbmFibGVk
KCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKTsKICAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Q1NTS2VlcFZpc2l0ZWRMaW5r
c1ByaXZhdGUoCisgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKTsKKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3NzS2VlcFZpc2l0ZWRMaW5rc1ByaXZh
dGUoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCk7CisgICAgCiAg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRhYnNUb0xpbmtzKCAKICAg
ICAgICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQpOwogICAgIApJbmRleDogV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lv
biA0MTM2MikKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
NzcsNiArNDA3NywxMSBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdl
CiAgICAgICAgIHJldHVybiBocjsKICAgICBzZXR0aW5ncy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCghIWVuYWJsZWQpOwogCisgICAgaHIgPSBwcmVmZXJlbmNlcy0+Y3NzS2VlcFZpc2l0ZWRM
aW5rc1ByaXZhdGUoJmVuYWJsZWQpOworICAgIGlmIChGQUlMRUQoaHIpKQorICAgICAgICByZXR1
cm4gaHI7CisgICAgc2V0dGluZ3MtPnNldENTU0tlZXBWaXNpdGVkTGlua3NQcml2YXRlKCEhZW5h
YmxlZCk7CisKICAgICBociA9IHByZWZlcmVuY2VzLT5zYW5zU2VyaWZGb250RmFtaWx5KCZzdHIp
OwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7CkluZGV4OiBXZWJLaXQv
d2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
d2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzLmlkbAkocmV2aXNpb24gNDEzNjIpCisrKyBX
ZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMTQxLDYgKzE0MSw5IEBAIGludGVyZmFjZSBJV2ViUHJlZmVyZW5jZXMgOiBJVW5rbm93bgog
ICAgIEhSRVNVTFQgc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChbaW5dIEJPT0wgZW5hYmxlZCk7
CiAgICAgSFJFU1VMVCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKFtvdXQsIHJldHZhbF0gQk9PTCog
ZW5hYmxlZCk7CiAKKyAgICBIUkVTVUxUIHNldENTU0tlZXBWaXNpdGVkTGlua3NQcml2YXRlKFtp
bl0gQk9PTCBlbmFibGVkKTsKKyAgICBIUkVTVUxUIGNzc0tlZXBWaXNpdGVkTGlua3NQcml2YXRl
KFtvdXQsIHJldHZhbF0gQk9PTCogZW5hYmxlZCk7CisgICAgCiAgICAgSFJFU1VMVCBzZXRUYWJz
VG9MaW5rcyhbaW5dIEJPT0wgZW5hYmxlZCk7CiAgICAgSFJFU1VMVCB0YWJzVG9MaW5rcyhbb3V0
LCByZXR2YWxdIEJPT0wqIGVuYWJsZWQpOwogCkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCShyZXZpc2lvbiA0MTM2MikKKysrIFdl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ1LDYgKzE0NSw4IEBAIFBhZ2UqIFdlYkluc3BlY3RvckNsaWVudDo6Y3JlYXRl
UGFnZSgpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChGQUlMRUQocHJlZmVyZW5jZXMtPnNl
dFByaXZhdGVCcm93c2luZ0VuYWJsZWQoVFJVRSkpKQogICAgICAgICByZXR1cm4gMDsKKyAgICBp
ZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRDU1NLZWVwVmlzaXRlZExpbmtzUHJpdmF0ZShGQUxT
RSkpKQorICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRM
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoVFJVRSkpKQogICAgICAgICByZXR1cm4gMDsKICAgICBp
ZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChUUlVF
KSkpCg==
</data>
<flag name="review"
          id="13783"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31664</attachid>
            <date>2009-06-22 12:14:53 -0700</date>
            <delta_ts>2009-06-23 15:59:25 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>0001-Add-option-CSSIgnoreVisitedLinks.patch</filename>
            <type>text/plain</type>
            <size>13070</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSAxYzkxNjI2ZDMxNDExMjBiNGRhYTA3ODRlMjM0MTJiNGUzNWY2ODIxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBtd2VuZ2UgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CkRhdGU6
IE1vbiwgMjIgSnVuIDIwMDkgMTk6MDI6NDUgKzAxMDAKU3ViamVjdDogW1BBVENIXSBBZGQgb3B0
aW9uIENTU0lnbm9yZVZpc2l0ZWRMaW5rcwogV2hlbiB1c2VkLCB0aGlzIG9wdGlvbiB3aWxsIGFs
d2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCiBzdHlsZXNo
ZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5
b3VyIGJyb3dzaW5nCiBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBm
b3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIxICsrKwogV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAgICAgICAgICAgICAgICAgICAgfCAgICA5ICstCiBXZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmggICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViQ29yZS9t
YW51YWwtdGVzdHMvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLmh0bWwgfCAgMTQ1ICsrKysrKysr
KysrKysrKysrKysrCiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDYgKwogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICA1ICstCiBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDcgKwogV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaCAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAzICstCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKysrCiA5IGZpbGVzIGNoYW5nZWQsIDIx
MSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNv
cmUvbWFudWFsLXRlc3RzL2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sCgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3YzFhNDEyLi42
ODlmODdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDA5LTA2LTIyICBSb2JlcnQgSG9nYW4gPHJvYmVydEBy
b2JlcnRob2dhbi5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMwMAorCisgICAgICAg
IEFkZCBvcHRpb24gQ1NTSWdub3JlVmlzaXRlZExpbmtzCisgICAgICAgIFdoZW4gdXNlZCwgdGhp
cyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRl
IGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9t
IGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3RvcnkgYnkg
cmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEgSFRN
TCBkb2N1bWVudC4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAg
ICAgIChDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tlcikK
KyAgICAgICAgIChDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrUHNldWRv
U3RhdGUpCisgICAgICAgICAoQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVj
a09uZVNlbGVjdG9yKQorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAg
ICogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFNldHRpbmdzOjpzZXRDU1NJ
Z25vcmVWaXNpdGVkTGlua3MpCisgICAgICAgICogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmg6Cisg
ICAgICAgICogbWFudWFsLXRlc3RzL2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sOgorCiAy
MDA5LTA2LTIyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRl
eCAyYWFkZWI5Li41ZDNiMzhlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtODY2LDcg
Kzg2NiwxMSBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hl
Y2tlcihEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgc3RyaQogICAgICwgbV9jb2xsZWN0UnVsZXNP
bmx5KGZhbHNlKQogICAgICwgbV9wc2V1ZG9TdHlsZShOT1BTRVVETykKICAgICAsIG1fZG9jdW1l
bnRJc0hUTUwoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCisgICAgLCBtX0lnbm9yZVZpc2l0
ZWRMaW5rcyhmYWxzZSkKIHsKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2RvY3VtZW50LT5z
ZXR0aW5ncygpOworICAgIGlmICghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmNzc0lnbm9yZVZpc2l0
ZWRMaW5rcygpKQorICAgICAgICBtX0lnbm9yZVZpc2l0ZWRMaW5rcyA9IHRydWU7CiB9CiAKIFBz
ZXVkb1N0YXRlIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tQc2V1ZG9T
dGF0ZShFbGVtZW50KiBlbGVtZW50LCBib29sIGNoZWNrVmlzaXRlZCkgY29uc3QKQEAgLTg3OCw2
ICs4ODIsOSBAQCBQc2V1ZG9TdGF0ZSBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OmNoZWNrUHNldWRvU3RhdGUoRWxlbWVudCogZWxlbWVudAogICAgIGlmICghY2hlY2tWaXNpdGVk
KQogICAgICAgICByZXR1cm4gUHNldWRvQW55TGluazsKIAorICAgIGlmIChtX0lnbm9yZVZpc2l0
ZWRMaW5rcykKKyAgICAgICAgcmV0dXJuIFBzZXVkb0xpbms7CisKICNpZiBQTEFURk9STShRVCkK
ICAgICBWZWN0b3I8VUNoYXIsIDUxMj4gdXJsOwogICAgIHZpc2l0ZWRVUkwobV9kb2N1bWVudC0+
YmFzZVVSTCgpLCAqYXR0ciwgdXJsKTsKQEAgLTIyNzgsNyArMjI4NSw3IEBAIGJvb2wgQ1NTU3R5
bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9y
KiBzZWwsIEVsZW1lCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVk
OgogICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9Vbmtub3duIHx8IHBz
ZXVkb1N0YXRlID09IFBzZXVkb0FueUxpbmspCiAgICAgICAgICAgICAgICAgICAgIHBzZXVkb1N0
YXRlID0gY2hlY2tQc2V1ZG9TdGF0ZShlKTsKLSAgICAgICAgICAgICAgICBpZiAocHNldWRvU3Rh
dGUgPT0gUHNldWRvVmlzaXRlZCkKKyAgICAgICAgICAgICAgICBpZiAoIW1fSWdub3JlVmlzaXRl
ZExpbmtzICYmIHBzZXVkb1N0YXRlID09IFBzZXVkb1Zpc2l0ZWQpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvRHJhZzogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5oIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCmluZGV4IDhk
ZDM2ZDcuLjJjMWQ3NjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
aAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKQEAgLTIwMCw2ICsyMDAsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBQc2V1ZG9JZCBtX3BzZXVkb1N0eWxlOwogICAgICAgICAg
ICAgYm9vbCBtX2RvY3VtZW50SXNIVE1MOwogICAgICAgICAgICAgbXV0YWJsZSBIYXNoU2V0PExp
bmtIYXNoLCBMaW5rSGFzaEhhc2g+IG1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRlOworICAg
ICAgICAgICAgYm9vbCBtX0lnbm9yZVZpc2l0ZWRMaW5rczsKICAgICAgICAgfTsKIAogICAgIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL21hbnVhbC10ZXN0cy9jc3MtaWdub3JlLXZpc2l0
ZWQtbGlua3MuaHRtbCBiL1dlYkNvcmUvbWFudWFsLXRlc3RzL2Nzcy1pZ25vcmUtdmlzaXRlZC1s
aW5rcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2MWIwNWQKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL21hbnVhbC10ZXN0cy9jc3MtaWdub3JlLXZpc2l0ZWQt
bGlua3MuaHRtbApAQCAtMCwwICsxLDE0NSBAQAorPGh0bWw+CisgIDxoZWFkPgorICAgIDx0aXRs
ZT5UZXN0IENTU0lnbm9yZVZpc2l0ZWRMaW5rcyBTZXR0aW5nIC0gQ29waWVkIGZyb20gaHR0cDov
L2hhLmNrZXJzLm9yZy93ZWlyZC9DU1MtaGlzdG9yeS5jZ2k8L3RpdGxlPgorICA8aGVhZD4KKyAg
PGJvZHk+CisgICAgPHN0eWxlPgorICAgICAgI21lbnUgeworICAgICAgICB3aWR0aDoxNWVtOyAK
KyAgICAgICAgcGFkZGluZzowLjVlbTsgCisgICAgICAgIGJhY2tncm91bmQ6I2NjYzsKKyAgICAg
ICAgbWFyZ2luOjAgYXV0bzsKKyAgICAgIH0KKyAgICAgICNtZW51IGEsICNtZW51IGE6dmlzaXRl
ZCB7CisgICAgICAgIGRpc3BsYXk6YmxvY2s7IAorICAgICAgICB3aWR0aDoxNGVtOyAKKyAgICAg
ICAgcGFkZGluZzowLjI1ZW0gMDsKKyAgICAgICAgY29sb3I6IzAwMDsgCisgICAgICAgIHRleHQt
aW5kZW50OjAuMmVtOworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IAorICAgICAgICB0
ZXh0LWRlY29yYXRpb246bm9uZTsKKyAgICAgICAgbWFyZ2luOjAuNWVtIDA7IAorICAgICAgICBi
b3JkZXItbGVmdDowLjVlbSBzb2xpZCAjOWFiOyAKKyAgICAgIH0KKyAgICAgICNtZW51IGE6dmlz
aXRlZCBzcGFuLnNwYW4wIHsKKyAgICAgICAgZGlzcGxheTpibG9jazsgCisgICAgICAgIHBvc2l0
aW9uOmFic29sdXRlOworICAgICAgICB0b3A6MDsgCisgICAgICAgIGxlZnQ6MThlbTsgCisgICAg
ICAgIHdpZHRoOjVlbTsKKyAgICAgICAgZm9udC1zaXplOjAuOWVtOworICAgICAgICBjb2xvcjoj
YzAwOyAKKyAgICAgICAgYm9yZGVyOjFweCBzb2xpZCAjYzAwOworICAgICAgfQorICAgICAgI21l
bnUgYTp2aXNpdGVkIHNwYW4uc3BhbjEgeworICAgICAgICBkaXNwbGF5OmJsb2NrOyAKKyAgICAg
ICAgcG9zaXRpb246YWJzb2x1dGU7CisgICAgICAgIHRvcDowOyAKKyAgICAgICAgbGVmdDoxOGVt
OyAKKyAgICAgICAgd2lkdGg6NWVtOworICAgICAgICBmb250LXNpemU6MC45ZW07CisgICAgICAg
IGNvbG9yOiNjMDA7IAorICAgICAgICBib3JkZXI6MXB4IHNvbGlkICNjMDA7CisgICAgICB9Cisg
ICAgICAjbWVudSBhOnZpc2l0ZWQgc3Bhbi5zcGFuMiB7CisgICAgICAgIGRpc3BsYXk6YmxvY2s7
IAorICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgICAgICAgdG9wOjA7IAorICAgICAgICBs
ZWZ0OjE4ZW07IAorICAgICAgICB3aWR0aDo1ZW07CisgICAgICAgIGZvbnQtc2l6ZTowLjllbTsK
KyAgICAgICAgY29sb3I6I2MwMDsgCisgICAgICAgIGJvcmRlcjoxcHggc29saWQgI2MwMDsKKyAg
ICAgIH0KKyAgICAgICNtZW51IGE6dmlzaXRlZCBzcGFuLnNwYW4zIHsKKyAgICAgICAgZGlzcGxh
eTpibG9jazsgCisgICAgICAgIHBvc2l0aW9uOmFic29sdXRlOworICAgICAgICB0b3A6MDsgCisg
ICAgICAgIGxlZnQ6MThlbTsgCisgICAgICAgIHdpZHRoOjVlbTsKKyAgICAgICAgZm9udC1zaXpl
OjAuOWVtOworICAgICAgICBjb2xvcjojYzAwOyAKKyAgICAgICAgYm9yZGVyOjFweCBzb2xpZCAj
YzAwOworICAgICAgfQorICAgICAgI21lbnUgYTp2aXNpdGVkIHNwYW4uc3BhbjQgeworICAgICAg
ICBkaXNwbGF5OmJsb2NrOyAKKyAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7CisgICAgICAgIHRv
cDowOyAKKyAgICAgICAgbGVmdDoxOGVtOyAKKyAgICAgICAgd2lkdGg6NWVtOworICAgICAgICBm
b250LXNpemU6MC45ZW07CisgICAgICAgIGNvbG9yOiNjMDA7IAorICAgICAgICBib3JkZXI6MXB4
IHNvbGlkICNjMDA7CisgICAgICB9CisgICAgICAjbWVudSBhOnZpc2l0ZWQgc3Bhbi5zcGFuNSB7
CisgICAgICAgIGRpc3BsYXk6YmxvY2s7IAorICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAg
ICAgICAgdG9wOjA7IAorICAgICAgICBsZWZ0OjE4ZW07IAorICAgICAgICB3aWR0aDo1ZW07Cisg
ICAgICAgIGZvbnQtc2l6ZTowLjllbTsKKyAgICAgICAgY29sb3I6I2MwMDsgCisgICAgICAgIGJv
cmRlcjoxcHggc29saWQgI2MwMDsKKyAgICAgIH0KKyAgICAgICNtZW51IGEgc3BhbiB7CisgICAg
ICAgIGRpc3BsYXk6bm9uZTsKKyAgICAgIH0KKyAgICAgICNtZW51IGE6aG92ZXIgeworICAgICAg
ICBjb2xvcjojZjAwOyAKKyAgICAgICAgYm9yZGVyLWxlZnQ6MC41ZW0gc29saWQgIzAwMDsgCisg
ICAgICB9CisgICAgICAuYm94IHsKKyAgICAgICAgcG9zaXRpb246cmVsYXRpdmU7CisgICAgICB9
CisgICAgICBwLnRleHQgeworICAgICAgICBwYWRkaW5nLWxlZnQ6IDUwcHg7CisgICAgICAgIHBh
ZGRpbmctcmlnaHQ6IDUwcHg7CisgICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8ZGl2IGFsaWdu
PSJjZW50ZXIiPgorICAgICAgPGgyPklmIENTU0lnbm9yZVZpc2l0ZWRMaW5rcyBpcyBlbmFibGVk
LCB0aGUgd29yZCBWSVNJVEVEIHNob3VsZCBOT1QgYXBwZWFyIGJlc2lkZSBhbnkgb2YgdGhlIFVS
THMgYmVsb3cuPC9oMj48QlI+CisgICAgICA8cD5DbGljayBvbiBhIGZldyBvZiB0aGUgbGlua3Mg
YW5kIGNsaWNrIGJhY2sgdG8gY29uZmlybSB0aGF0IG5vbmUgb2YgdGhlbSBzaG93IHVwIGFzIHZp
c2l0ZWQuPC9wPjxCUj4KKyAgICAgIDxkaXYgaWQ9Im1lbnUiIGFsaWduPSJsZWZ0Ij4KKyAgICAg
ICAgPGRpdiBjbGFzcz0iYm94Ij4KKyAgICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3LnlhaG9v
LmNvbS8iPgorICAgICAgICAgICAgaHR0cDovL3d3dy55YWhvby5jb20vCisgICAgICAgICAgICA8
c3BhbiBjbGFzcz0ic3BhbjAiPlZJU0lURUQ8L3NwYW4+CisgICAgICAgICAgPC9hPgorICAgICAg
ICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94Ij4KKyAgICAgICAgICA8YSBocmVmPSJo
dHRwOi8vd3d3Lmdvb2dsZS5jb20vIj4KKyAgICAgICAgICAgIGh0dHA6Ly93d3cuZ29vZ2xlLmNv
bS8KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzcGFuMSI+VklTSVRFRDwvc3Bhbj4KKyAgICAg
ICAgICA8L2E+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJib3giPgorICAg
ICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubXlzcGFjZS5jb20vIj4KKyAgICAgICAgICAgIGh0
dHA6Ly93d3cubXlzcGFjZS5jb20vCisgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3BhbjIiPlZJ
U0lURUQ8L3NwYW4+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRp
diBjbGFzcz0iYm94Ij4KKyAgICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lm1zbi5jb20vIj4K
KyAgICAgICAgICAgIGh0dHA6Ly93d3cubXNuLmNvbS8KKyAgICAgICAgICAgIDxzcGFuIGNsYXNz
PSJzcGFuMyI+VklTSVRFRDwvc3Bhbj4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvZGl2Pgor
ICAgICAgICA8ZGl2IGNsYXNzPSJib3giPgorICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cu
ZWJheS5jb20vIj4KKyAgICAgICAgICAgIGh0dHA6Ly93d3cuZWJheS5jb20vCisgICAgICAgICAg
ICA8c3BhbiBjbGFzcz0ic3BhbjQiPlZJU0lURUQ8L3NwYW4+CisgICAgICAgICAgPC9hPgorICAg
ICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iYm94Ij4KKyAgICAgICAgICA8YSBocmVm
PSJodHRwOi8vd2Via2l0Lm9yZy8iPgorICAgICAgICAgICAgaHR0cDovL3dlYmtpdC5vcmcvCisg
ICAgICAgICAgICA8c3BhbiBjbGFzcz0ic3BhbjUiPlZJU0lURUQ8L3NwYW4+CisgICAgICAgICAg
PC9hPgorICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgICAgPHA+PGEgaHJlZj0iaHR0
cDovL2hhLmNrZXJzLm9yZy93ZWlyZC9DU1MtaGlzdG9yeS5jZ2kiPkNsaWNrIGhlcmU8L0E+IHRv
IHRyeSBhbiBvbmxpbmUgdmVyc2lvbiBvZiB0aGlzIHRlc3QuPC9wPgorICAgICAgPHA+PGEgaHJl
Zj0iaHR0cDovL3d3dy5tYWtpbmctdGhlLXdlYi5jb20vbWlzYy9zaXRlcy15b3UtdmlzaXQvbm9q
cy8iPkNsaWNrIGhlcmU8L0E+IHRvIHRyeSBhbiBhbHRlcm5hdGl2ZSBvbmxpbmUgdmVyc2lvbiBv
ZiB0aGlzIHRlc3QuPC9wPgorICAgIAorICAgIDwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcAppbmRleCAzYTAwYjhlLi44MTgzMGRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTkzLDYgKzkz
LDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2VuZm9yY2VDU1NN
SU1FVHlwZUluU3RyaWN0TW9kZSh0cnVlKQogICAgICwgbV91c2VzRW5jb2RpbmdEZXRlY3Rvcihm
YWxzZSkKICAgICAsIG1fYWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MoZmFsc2UpCisgICAgLCBt
X2Nzc0lnbm9yZVZpc2l0ZWRMaW5rcyhmYWxzZSkKICAgICAsIG1fZWRpdGluZ0JlaGF2aW9yKAog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgRWRpdGluZ01hY0JlaGF2aW9yCkBAIC0yNDUsNiAr
MjQ2LDExIEBAIHZvaWQgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkKQogICAgIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQ7CiB9CiAKK3ZvaWQgU2V0dGluZ3M6OnNldENTU0lnbm9yZVZp
c2l0ZWRMaW5rcyhib29sIGNzc0lnbm9yZVZpc2l0ZWRMaW5rcykKK3sKKyAgICBtX2Nzc0lnbm9y
ZVZpc2l0ZWRMaW5rcyA9IGNzc0lnbm9yZVZpc2l0ZWRMaW5rczsKK30KKwogdm9pZCBTZXR0aW5n
czo6c2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShib29sIGphdmFTY3Jp
cHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkpCiB7CiAgICAgbV9qYXZhU2NyaXB0Q2FuT3Bl
bldpbmRvd3NBdXRvbWF0aWNhbGx5ID0gamF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGlj
YWxseTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmgKaW5kZXggOWQ0ZTQyMi4uMjczZDVjYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmgKKysrIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTI0MSw2ICsy
NDEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0WFNTQXVkaXRvckVu
YWJsZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgeHNzQXVkaXRvckVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX3hzc0F1ZGl0b3JFbmFibGVkOyB9CiAKKyAgICAgICAgdm9pZCBzZXRDU1NJZ25vcmVW
aXNpdGVkTGlua3MoYm9vbCk7CisgICAgICAgIGJvb2wgY3NzSWdub3JlVmlzaXRlZExpbmtzKCkg
Y29uc3QgeyByZXR1cm4gbV9jc3NJZ25vcmVWaXNpdGVkTGlua3M7IH0KKwogICAgIHByaXZhdGU6
CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgCkBAIC0zMDEsNyArMzA0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1bnNpZ25lZCBtX2VkaXRpbmdCZWhhdmlvciA6IDE7
CiAgICAgICAgIGJvb2wgbV9kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQgOiAxOwogICAg
ICAgICBib29sIG1feHNzQXVkaXRvckVuYWJsZWQgOiAxOwotCisgICAgICAgIGJvb2wgbV9jc3NJ
Z25vcmVWaXNpdGVkTGlua3MgOiAxOwogI2lmIFVTRShTQUZBUklfVEhFTUUpCiAgICAgICAgIHN0
YXRpYyBib29sIGdTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0
aW5ncy5jcHAKaW5kZXggMDJlZjRhMC4uMTkwNjFjYyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0Fw
aS9xd2Vic2V0dGluZ3MuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApA
QCAtMTUzLDYgKzE1MywxMCBAQCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZh
bHVlKFFXZWJTZXR0aW5nczo6UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkpOwogICAgICAgICBzZXR0
aW5ncy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCh2YWx1ZSk7CiAKKyAgICAgICAgdmFsdWUg
PSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NTSWdub3JlVmlzaXRlZExpbmtzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMu
dmFsdWUoUVdlYlNldHRpbmdzOjpDU1NJZ25vcmVWaXNpdGVkTGlua3MpKTsKKyAgICAgICAgc2V0
dGluZ3MtPnNldENTU0lnbm9yZVZpc2l0ZWRMaW5rcyh2YWx1ZSk7CisgICAgICAgIAogICAgICAg
ICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuQWNj
ZXNzQ2xpcGJvYXJkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9i
YWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuQWNjZXNzQ2xp
cGJvYXJkKSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRET01QYXN0ZUFsbG93ZWQodmFsdWUpOwpA
QCAtMzI5LDYgKzMzMyw5IEBAIFFXZWJTZXR0aW5ncyAqUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0
aW5ncygpCiAgICAgXHZhbHVlIExvY2FsU3RvcmFnZURhdGFiYXNlRW5hYmxlZCBTcGVjaWZpZXMg
d2hldGhlciBzdXBwb3J0IGZvciB0aGUgSFRNTCA1CiAgICAgICAgIGxvY2FsIHN0b3JhZ2UgZmVh
dHVyZSBpcyBlbmFibGVkIG9yIG5vdC4KICAgICBcdmFsdWUgTG9jYWxDb250ZW50Q2FuQWNjZXNz
UmVtb3RlVXJscyBTcGVjaWZpZXMgd2hldGhlciBsb2NhbGx5IGxvYWRlZCBkb2N1bWVudHMgYXJl
IGFsbG93ZWQgdG8gYWNjZXNzIHJlbW90ZSB1cmxzLgorICAgIFx2YWx1ZSBDU1NJZ25vcmVWaXNp
dGVkTGlua3MgQWx3YXlzIHJldHVybiBmYWxzZSBmb3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBD
U1MKKyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMgcHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRp
cmVjdGx5IGluc3BlY3RpbmcgeW91ciBicm93c2luZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVl
c3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9j
dW1lbnQuCiAqLwogCiAvKiEKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdz
LmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oCmluZGV4IDdjYmNhMjUuLjY3NjExNDAg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKKysrIGIvV2ViS2l0L3F0
L0FwaS9xd2Vic2V0dGluZ3MuaApAQCAtNjQsNyArNjQsOCBAQCBwdWJsaWM6CiAgICAgICAgIE9m
ZmxpbmVTdG9yYWdlRGF0YWJhc2VFbmFibGVkLAogICAgICAgICBPZmZsaW5lV2ViQXBwbGljYXRp
b25DYWNoZUVuYWJsZWQsCiAgICAgICAgIExvY2FsU3RvcmFnZURhdGFiYXNlRW5hYmxlZCwKLSAg
ICAgICAgTG9jYWxDb250ZW50Q2FuQWNjZXNzUmVtb3RlVXJscworICAgICAgICBMb2NhbENvbnRl
bnRDYW5BY2Nlc3NSZW1vdGVVcmxzLAorICAgICAgICBDU1NJZ25vcmVWaXNpdGVkTGlua3MKICAg
ICB9OwogICAgIGVudW0gV2ViR3JhcGhpYyB7CiAgICAgICAgIE1pc3NpbmdJbWFnZUdyYXBoaWMs
CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpp
bmRleCBjMmVkNDc1Li44YTg3YjM2IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0wNi0yMiAgUm9i
ZXJ0IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjQzMDAKKworICAgICAgICBBZGQgb3B0aW9uIENTU0lnbm9yZVZpc2l0ZWRMaW5rcworICAg
ICAgICBXaGVuIHVzZWQsIHRoaXMgb3B0aW9uIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBmb3Ig
dGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMgcHJl
dmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5IGluc3BlY3RpbmcgeW91ciBicm93c2luZwor
ICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBz
ZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCisKKyAgICAgICAgU2VlIFdlYkNvcmUvbWFu
dWFsLXRlc3RzL2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sOgorCisgICAgICAgICogQXBp
L3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSkK
KyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisKIDIwMDktMDYtMTkgIERhbmllbCBUZXNr
ZSA8cXQtaW5mb0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCi0tIAoxLjYuMC40Cgo=
</data>
<flag name="review"
          id="16276"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31746</attachid>
            <date>2009-06-23 15:29:53 -0700</date>
            <delta_ts>2009-06-23 15:59:25 -0700</delta_ts>
            <desc>Updated patch with layout test</desc>
            <filename>0001-Add-option-CSSIgnoreVisitedLinks.patch</filename>
            <type>text/plain</type>
            <size>28472</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSA2MDI0OTU1NzM2MjBlOTE1YjQwMmE4OGQ4ZjVmNWIyYWIyMDFhY2FjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBtd2VuZ2UgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CkRhdGU6
IFR1ZSwgMjMgSnVuIDIwMDkgMjM6MTg6NTEgKzAxMDAKU3ViamVjdDogW1BBVENIXSBBZGQgb3B0
aW9uIENTU0lnbm9yZVZpc2l0ZWRMaW5rcwogV2hlbiB1c2VkLCB0aGlzIG9wdGlvbiB3aWxsIGFs
d2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCiBzdHlsZXNo
ZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5
b3VyIGJyb3dzaW5nCiBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBm
b3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE1ICsrKwogLi4uL2hpc3RvcnkvY3NzLWln
bm9yZS12aXNpdGVkLWxpbmtzLWV4cGVjdGVkLnR4dCAgfCAgIDExICsrCiAuLi4vcXQvZmFzdC9o
aXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sICB8ICAgMzQgKysrKysrKwogLi4u
L3Jlc291cmNlcy9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtMi5odG1sICAgICAgfCAgIDI2ICsr
KysrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMjEgKysrKwogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgICAgICAgICAgICAg
ICAgICAgfCAgICA5ICsrLQogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oICAgICAgICAg
ICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgNiArCiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdz
LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgICAgNyArKwogV2ViS2l0L3F0L0FwaS9xd2Vic2V0
dGluZ3MuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICstCiBXZWJLaXQvcXQvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKysrKwogV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIwICsrKysKIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmNwcCAgIHwgICAgNCAr
LQogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUuaCAgICAgfCAg
ICAyICsKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLnBybyAg
IHwgICAgNCArLQogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvaGlzdG9yeW1hbmFnZXIu
Y3BwICAgfCAgIDk3ICsrKysrKysrKysrKysrKysrKysrCiBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9oaXN0b3J5bWFuYWdlci5oICAgICB8ICAgOTcgKysrKysrKysrKysrKysrKysrKysK
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2pzb2JqZWN0cy5jcHAgICAgICAgIHwgICAg
NSArCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9qc29iamVjdHMuaCAgICAgICAgICB8
ICAgIDEgKwogMjAgZmlsZXMgY2hhbmdlZCwgMzc5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z
KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9oaXN0
b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12aXNp
dGVkLWxpbmtzLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy0yLmh0bWwK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9oaXN0b3J5
bWFuYWdlci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9oaXN0b3J5bWFuYWdlci5oCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUxY2M1NjQuLjQ3ZDgzMjAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAwOS0wNi0yMiAgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9n
YW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSEuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzAwCisKKyAgICAgICAgQWRkIG9w
dGlvbiBDU1NJZ25vcmVWaXNpdGVkTGlua3MKKyAgICAgICAgV2hlbiB1c2VkLCB0aGlzIG9wdGlv
biB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NT
CisgICAgICAgIHN0eWxlc2hlZXRzLiBUaGlzIHByZXZlbnRzIHdlYnNpdGVzIGZyb20gaW5kaXJl
Y3RseSBpbnNwZWN0aW5nIHlvdXIgYnJvd3NpbmcKKyAgICAgICAgaGlzdG9yeSBieSByZXF1ZXN0
aW5nIHRoZSAndmlzaXRlZCcgc3RhdGUgZm9yIGEgc2V0IG9mIFVSTHMgaW4gYSBIVE1MIGRvY3Vt
ZW50LgorCisgICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L2Nzcy1pZ25vcmUtdmlz
aXRlZC1saW5rcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2hpc3Rv
cnkvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jc3MtaWdub3JlLXZpc2l0ZWQt
bGlua3MtMi5odG1sOiBBZGRlZC4KKwogMjAwOS0wNi0yMiAgRGF2aWQgTGV2aW4gIDxsZXZpbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQgYW5kIEVyaWMg
U2VpZGVsLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5
L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9mYXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDNkMDEzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L2Nzcy1pZ25vcmUt
dmlzaXRlZC1saW5rcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNp
emUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAor
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVu
ZGVySW5saW5lIHtBfSBhdCAoMCwwKSBzaXplIDE5OXgxOCBbY29sb3I9IzAwMDBGRl0KKyAgICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxOTl4MTgKKyAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE5OTogIlRoaXMgdGV4dCBzaG91bGQgYXBwZWFyIGlu
IGJsdWUuIgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE5OSwwKSBzaXplIDR4MTgK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTk5LDApIHdpZHRoIDQ6ICIuIgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1s
aW5rcy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L2Nzcy1pZ25v
cmUtdmlzaXRlZC1saW5rcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjlmMjcwYTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0
L2hpc3RvcnkvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLmh0bWwKQEAgLTAsMCArMSwzNCBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv
L0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MC9sb29zZS5kdGQiPgorPEhUTUw+
Cis8SEVBRD4KKzxUSVRMRT5DU1NJZ25vcmVWaXNpdGVkTGlua3MgLSBXaGVuIFNldCwgVmlzaXRl
ZCBMaW5rcyBhcHBlYXIgdW52aXNpdGVkPC9USVRMRT4KKzxNRVRBIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPE1FVEEg
aHR0cC1lcXVpdj0iQ29udGVudC1TdHlsZS1UeXBlIiBjb250ZW50PSJ0ZXh0L2NzcyI+Cis8U1RZ
TEUgdHlwZT0idGV4dC9jc3MiPgorQSB7Y29sb3I6IGdyZWVuO30KK0E6bGluayB7Y29sb3I6IGJs
dWU7fQorQTp2aXNpdGVkIHtjb2xvcjogcmVkO30KK0E6YWN0aXZlIHtjb2xvcjogYmxhY2s7fQor
I29uZSB7Y29sb3I6ICMwMDY2MDA7fQorPC9TVFlMRT4KKworPC9IRUFEPgorPHNjcmlwdD4KK2Z1
bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDU1NJZ25vcmVWaXNpdGVkTGlua3Mo
dHJ1ZSk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICB9CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlsaW5rIik7
CisgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTsKKyAg
ICBldmVudC5pbml0RXZlbnQoImNsaWNrIiwgdHJ1ZSwgdHJ1ZSk7CisgICAgZWxlbWVudC5kaXNw
YXRjaEV2ZW50KGV2ZW50KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCk7Ij4KKzxkaXY+PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0MzAwIj5CdWd6aWxsYSBSZWZlcmVuY2UuPC9hPjwvZGl2PgorPGRpdj5UbyBy
dW4gdGhlIHRlc3QgPGEgaWQ9Im15bGluayIgaHJlZj0icmVzb3VyY2VzL2Nzcy1pZ25vcmUtdmlz
aXRlZC1saW5rcy0yLmh0bWwiPmNsaWNrIHRoaXMgbGluay48L2E+LjwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3Rv
cnkvcmVzb3VyY2VzL2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy0yLmh0bWwgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2Nzcy1pZ25vcmUtdmlzaXRlZC1s
aW5rcy0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZjNjJhMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9y
ZXNvdXJjZXMvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLTIuaHRtbApAQCAtMCwwICsxLDI2IEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25h
bC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+Cis8SFRN
TD4KKzxIRUFEPgorPFRJVExFPkNTU0lnbm9yZVZpc2l0ZWRMaW5rcyAtIFdoZW4gU2V0LCBWaXNp
dGVkIExpbmtzIGFwcGVhciB1bnZpc2l0ZWQ8L1RJVExFPgorPE1FVEEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8TUVU
QSBodHRwLWVxdWl2PSJDb250ZW50LVN0eWxlLVR5cGUiIGNvbnRlbnQ9InRleHQvY3NzIj4KKzxT
VFlMRSB0eXBlPSJ0ZXh0L2NzcyI+CitBIHtjb2xvcjogZ3JlZW47fQorQTpsaW5rIHtjb2xvcjog
Ymx1ZTt9CitBOnZpc2l0ZWQge2NvbG9yOiByZWQ7fQorQTphY3RpdmUge2NvbG9yOiBibGFjazt9
Cisjb25lIHtjb2xvcjogIzAwNjYwMDt9Cis8L1NUWUxFPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1
blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+
Cis8L0hFQUQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPGRpdj48YSBpZD0ibXlsaW5r
IiBocmVmPSIuLi9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MuaHRtbCI+VGhpcyB0ZXh0IHNob3Vs
ZCBhcHBlYXIgaW4gYmx1ZS48L2E+LjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdjMWE0MTIu
LjY4OWY4N2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDktMDYtMjIgIFJvYmVydCBIb2dhbiA8cm9iZXJ0
QHJvYmVydGhvZ2FuLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzAwCisKKyAgICAg
ICAgQWRkIG9wdGlvbiBDU1NJZ25vcmVWaXNpdGVkTGlua3MKKyAgICAgICAgV2hlbiB1c2VkLCB0
aGlzIG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3Rh
dGUgaW4gQ1NTCisgICAgICAgIHN0eWxlc2hlZXRzLiBUaGlzIHByZXZlbnRzIHdlYnNpdGVzIGZy
b20gaW5kaXJlY3RseSBpbnNwZWN0aW5nIHlvdXIgYnJvd3NpbmcKKyAgICAgICAgaGlzdG9yeSBi
eSByZXF1ZXN0aW5nIHRoZSAndmlzaXRlZCcgc3RhdGUgZm9yIGEgc2V0IG9mIFVSTHMgaW4gYSBI
VE1MIGRvY3VtZW50LgorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAg
ICAgICAgKENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2Vy
KQorICAgICAgICAgKENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tQc2V1
ZG9TdGF0ZSkKKyAgICAgICAgIChDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrT25lU2VsZWN0b3IpCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuaDoKKyAgICAg
ICAgKiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoU2V0dGluZ3M6OnNldENT
U0lnbm9yZVZpc2l0ZWRMaW5rcykKKyAgICAgICAgKiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaDoK
KyAgICAgICAgKiBtYW51YWwtdGVzdHMvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLmh0bWw6CisK
IDIwMDktMDYtMjIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmlu
ZGV4IDJhYWRlYjkuLjVkM2IzOGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC04NjYs
NyArODY2LDExIEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JD
aGVja2VyKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBzdHJpCiAgICAgLCBtX2NvbGxlY3RSdWxl
c09ubHkoZmFsc2UpCiAgICAgLCBtX3BzZXVkb1N0eWxlKE5PUFNFVURPKQogICAgICwgbV9kb2N1
bWVudElzSFRNTChkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkKKyAgICAsIG1fSWdub3JlVmlz
aXRlZExpbmtzKGZhbHNlKQogeworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZG9jdW1lbnQt
PnNldHRpbmdzKCk7CisgICAgaWYgKCFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+Y3NzSWdub3JlVmlz
aXRlZExpbmtzKCkpCisgICAgICAgIG1fSWdub3JlVmlzaXRlZExpbmtzID0gdHJ1ZTsKIH0KIAog
UHNldWRvU3RhdGUgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1BzZXVk
b1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgY2hlY2tWaXNpdGVkKSBjb25zdApAQCAtODc4
LDYgKzg4Miw5IEBAIFBzZXVkb1N0YXRlIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tl
cjo6Y2hlY2tQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50CiAgICAgaWYgKCFjaGVja1Zpc2l0
ZWQpCiAgICAgICAgIHJldHVybiBQc2V1ZG9BbnlMaW5rOwogCisgICAgaWYgKG1fSWdub3JlVmlz
aXRlZExpbmtzKQorICAgICAgICByZXR1cm4gUHNldWRvTGluazsKKwogI2lmIFBMQVRGT1JNKFFU
KQogICAgIFZlY3RvcjxVQ2hhciwgNTEyPiB1cmw7CiAgICAgdmlzaXRlZFVSTChtX2RvY3VtZW50
LT5iYXNlVVJMKCksICphdHRyLCB1cmwpOwpAQCAtMjI3OCw3ICsyMjg1LDcgQEAgYm9vbCBDU1NT
dHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0
b3IqIHNlbCwgRWxlbWUKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Zpc2l0
ZWQ6CiAgICAgICAgICAgICAgICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb1Vua25vd24gfHwg
cHNldWRvU3RhdGUgPT0gUHNldWRvQW55TGluaykKICAgICAgICAgICAgICAgICAgICAgcHNldWRv
U3RhdGUgPSBjaGVja1BzZXVkb1N0YXRlKGUpOwotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9T
dGF0ZSA9PSBQc2V1ZG9WaXNpdGVkKQorICAgICAgICAgICAgICAgIGlmICghbV9JZ25vcmVWaXNp
dGVkTGlua3MgJiYgcHNldWRvU3RhdGUgPT0gUHNldWRvVmlzaXRlZCkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9EcmFnOiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmggYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKaW5kZXgg
OGRkMzZkNy4uMmMxZDc2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtMjAwLDYgKzIwMCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFBzZXVkb0lkIG1fcHNldWRvU3R5bGU7CiAgICAgICAg
ICAgICBib29sIG1fZG9jdW1lbnRJc0hUTUw7CiAgICAgICAgICAgICBtdXRhYmxlIEhhc2hTZXQ8
TGlua0hhc2gsIExpbmtIYXNoSGFzaD4gbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGU7Cisg
ICAgICAgICAgICBib29sIG1fSWdub3JlVmlzaXRlZExpbmtzOwogICAgICAgICB9OwogCiAgICAg
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDNhMDBiOGUuLjgxODMwZGIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApA
QCAtOTMsNiArOTMsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1f
ZW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKHRydWUpCiAgICAgLCBtX3VzZXNFbmNvZGlu
Z0RldGVjdG9yKGZhbHNlKQogICAgICwgbV9hbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyhmYWxz
ZSkKKyAgICAsIG1fY3NzSWdub3JlVmlzaXRlZExpbmtzKGZhbHNlKQogICAgICwgbV9lZGl0aW5n
QmVoYXZpb3IoCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBFZGl0aW5nTWFjQmVoYXZpb3IK
QEAgLTI0NSw2ICsyNDYsMTEgQEAgdm9pZCBTZXR0aW5nczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAgICAgbV9wcml2YXRlQnJvd3NpbmdF
bmFibGVkID0gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKIH0KIAordm9pZCBTZXR0aW5nczo6c2V0
Q1NTSWdub3JlVmlzaXRlZExpbmtzKGJvb2wgY3NzSWdub3JlVmlzaXRlZExpbmtzKQoreworICAg
IG1fY3NzSWdub3JlVmlzaXRlZExpbmtzID0gY3NzSWdub3JlVmlzaXRlZExpbmtzOworfQorCiB2
b2lkIFNldHRpbmdzOjpzZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KGJv
b2wgamF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSkKIHsKICAgICBtX2phdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgPSBqYXZhU2NyaXB0Q2FuT3BlbldpbmRv
d3NBdXRvbWF0aWNhbGx5OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCA5ZDRlNDIyLi4yNzNkNWNiIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApA
QCAtMjQxLDYgKzI0MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRY
U1NBdWRpdG9yRW5hYmxlZChib29sKTsKICAgICAgICAgYm9vbCB4c3NBdWRpdG9yRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1feHNzQXVkaXRvckVuYWJsZWQ7IH0KIAorICAgICAgICB2b2lkIHNl
dENTU0lnbm9yZVZpc2l0ZWRMaW5rcyhib29sKTsKKyAgICAgICAgYm9vbCBjc3NJZ25vcmVWaXNp
dGVkTGlua3MoKSBjb25zdCB7IHJldHVybiBtX2Nzc0lnbm9yZVZpc2l0ZWRMaW5rczsgfQorCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICAKQEAgLTMwMSw3ICsz
MDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVuc2lnbmVkIG1fZWRpdGluZ0Jl
aGF2aW9yIDogMTsKICAgICAgICAgYm9vbCBtX2Rvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxl
ZCA6IDE7CiAgICAgICAgIGJvb2wgbV94c3NBdWRpdG9yRW5hYmxlZCA6IDE7Ci0KKyAgICAgICAg
Ym9vbCBtX2Nzc0lnbm9yZVZpc2l0ZWRMaW5rcyA6IDE7CiAjaWYgVVNFKFNBRkFSSV9USEVNRSkK
ICAgICAgICAgc3RhdGljIGJvb2wgZ1Nob3VsZFBhaW50TmF0aXZlQ29udHJvbHM7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcCBiL1dlYktpdC9xdC9B
cGkvcXdlYnNldHRpbmdzLmNwcAppbmRleCAwMmVmNGEwLi4xOTA2MWNjIDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2V0
dGluZ3MuY3BwCkBAIC0xNTMsNiArMTUzLDEwIEBAIHZvaWQgUVdlYlNldHRpbmdzUHJpdmF0ZTo6
YXBwbHkoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0
dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpQcml2YXRlQnJvd3NpbmdFbmFibGVkKSk7CiAg
ICAgICAgIHNldHRpbmdzLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHZhbHVlKTsKIAorICAg
ICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpDU1NJZ25vcmVWaXNp
dGVkTGlua3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+
YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU0lnbm9yZVZpc2l0ZWRMaW5rcykpOwor
ICAgICAgICBzZXR0aW5ncy0+c2V0Q1NTSWdub3JlVmlzaXRlZExpbmtzKHZhbHVlKTsKKyAgICAg
ICAgCiAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkphdmFz
Y3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkphdmFzY3JpcHRD
YW5BY2Nlc3NDbGlwYm9hcmQpKTsKICAgICAgICAgc2V0dGluZ3MtPnNldERPTVBhc3RlQWxsb3dl
ZCh2YWx1ZSk7CkBAIC0zMjksNiArMzMzLDkgQEAgUVdlYlNldHRpbmdzICpRV2ViU2V0dGluZ3M6
Omdsb2JhbFNldHRpbmdzKCkKICAgICBcdmFsdWUgTG9jYWxTdG9yYWdlRGF0YWJhc2VFbmFibGVk
IFNwZWNpZmllcyB3aGV0aGVyIHN1cHBvcnQgZm9yIHRoZSBIVE1MIDUKICAgICAgICAgbG9jYWwg
c3RvcmFnZSBmZWF0dXJlIGlzIGVuYWJsZWQgb3Igbm90LgogICAgIFx2YWx1ZSBMb2NhbENvbnRl
bnRDYW5BY2Nlc3NSZW1vdGVVcmxzIFNwZWNpZmllcyB3aGV0aGVyIGxvY2FsbHkgbG9hZGVkIGRv
Y3VtZW50cyBhcmUgYWxsb3dlZCB0byBhY2Nlc3MgcmVtb3RlIHVybHMuCisgICAgXHZhbHVlIENT
U0lnbm9yZVZpc2l0ZWRMaW5rcyBBbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQn
IHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRl
cyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3Rv
cnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGlu
IGEgSFRNTCBkb2N1bWVudC4KICovCiAKIC8qIQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9x
d2Vic2V0dGluZ3MuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKaW5kZXggN2NiY2Ey
NS4uNjc2MTE0MCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaAorKysg
Yi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oCkBAIC02NCw3ICs2NCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgT2ZmbGluZVN0b3JhZ2VEYXRhYmFzZUVuYWJsZWQsCiAgICAgICAgIE9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCwKICAgICAgICAgTG9jYWxTdG9yYWdlRGF0YWJhc2VF
bmFibGVkLAotICAgICAgICBMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzCisgICAgICAg
IExvY2FsQ29udGVudENhbkFjY2Vzc1JlbW90ZVVybHMsCisgICAgICAgIENTU0lnbm9yZVZpc2l0
ZWRMaW5rcwogICAgIH07CiAgICAgZW51bSBXZWJHcmFwaGljIHsKICAgICAgICAgTWlzc2luZ0lt
YWdlR3JhcGhpYywKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQv
Q2hhbmdlTG9nCmluZGV4IGMyZWQ0NzUuLjhhODdiMzYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDA5
LTA2LTIyICBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNDMwMAorCisgICAgICAgIEFkZCBvcHRpb24gQ1NTSWdub3JlVmlzaXRl
ZExpbmtzCisgICAgICAgIFdoZW4gdXNlZCwgdGhpcyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJu
IGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0
cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3Vy
IGJyb3dzaW5nCisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0
YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKworICAgICAgICBTZWUg
V2ViQ29yZS9tYW51YWwtdGVzdHMvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLmh0bWw6CisKKyAg
ICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZh
dGU6OmFwcGx5KQorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKwogMjAwOS0wNi0xOSAg
RGFuaWVsIFRlc2tlIDxxdC1pbmZvQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktp
dFRvb2xzL0NoYW5nZUxvZwppbmRleCA2MGYzMTI5Li4xYTliNTdkIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMDktMDYtMjIgIFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkhLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMwMAorCisgICAgICAgIEFkZCBvcHRpb24gQ1NT
SWdub3JlVmlzaXRlZExpbmtzCisgICAgICAgIFdoZW4gdXNlZCwgdGhpcyBvcHRpb24gd2lsbCBh
bHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAg
ICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5z
cGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUg
J3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKwor
ICAgICAgICBBZGQgYSBzdHViIGhpc3RvcnkgbWFuYWdlciB0byBwZXJmb3JtIHVuaXQgdGVzdC4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L2hpc3RvcnltYW5hZ2VyLmg6IEFkZGVkLgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L2hpc3RvcnltYW5hZ2VyLmNwcDogQWRkZWQuCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUuY3BwOiBNb2RpZmllZC4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5oOiBNb2RpZmllZC4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9qc29iamVjdHMuaDogTW9kaWZpZWQuCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmNwcDogTW9kaWZpZWQuCisKIDIwMDkt
MDYtMjEgIFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBT
ZXQgdXAgZ2xvYmFsIG5hdGl2ZSBjb250cm9scyBmbGFnIGJlZm9yZSBjcmVhdGluZyB0aGUgZmly
c3QgV2ViVmlldy4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1
bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5k
ZXJUcmVlLmNwcAppbmRleCA3OGQ1MzVhLi40ZWE1Nzk3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiRHVtcFJlbmRlclRyZWUuaCIKICNpbmNsdWRlICJqc29iamVjdHMuaCIKICNpbmNs
dWRlICJ0ZXN0cGx1Z2luLmgiCisjaW5jbHVkZSAiaGlzdG9yeW1hbmFnZXIuaCIKIAogI2luY2x1
ZGUgPFFEaXI+CiAjaW5jbHVkZSA8UUZpbGU+CkBAIC00NSw2ICs0Niw3IEBACiAjaW5jbHVkZSA8
cXdlYnBhZ2UuaD4KICNpbmNsdWRlIDxxd2ViZnJhbWUuaD4KICNpbmNsdWRlIDxxd2Vidmlldy5o
PgorI2luY2x1ZGUgPHF3ZWJoaXN0b3J5Lmg+CiAjaW5jbHVkZSA8cXdlYnNldHRpbmdzLmg+CiAK
ICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTE0OSw2ICsxNTEsNyBAQCBEdW1wUmVuZGVyVHJlZTo6
RHVtcFJlbmRlclRyZWUoKQogCiAgICAgbV9ldmVudFNlbmRlciA9IG5ldyBFdmVudFNlbmRlciht
X3BhZ2UpOwogICAgIG1fdGV4dElucHV0Q29udHJvbGxlciA9IG5ldyBUZXh0SW5wdXRDb250cm9s
bGVyKG1fcGFnZSk7CisgICAgaGlzdG9yeU1hbmFnZXIgPSBuZXcgSGlzdG9yeU1hbmFnZXIobV9w
YWdlKTsKIAogICAgIFFPYmplY3Q6OmNvbm5lY3QodGhpcywgU0lHTkFMKHF1aXQoKSksIHFBcHAs
IFNMT1QocXVpdCgpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwogICAgIHF0X2RydF9ydW4odHJ1
ZSk7CkBAIC0yNjIsNyArMjY1LDYgQEAgUVN0cmluZyBEdW1wUmVuZGVyVHJlZTo6ZHVtcEZyYW1l
c0FzVGV4dChRV2ViRnJhbWUqIGZyYW1lKQogCiBRU3RyaW5nIER1bXBSZW5kZXJUcmVlOjpkdW1w
QmFja0ZvcndhcmRMaXN0KCkKIHsKLSAgICBRU3RyaW5nIHJlc3VsdDsKICAgICByZXN1bHQuYXBw
ZW5kKFFMYXRpbjFTdHJpbmcoIlxuPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09
PT09PT09PT09PT1cbiIpKTsKICAgICByZXN1bHQuYXBwZW5kKFFMYXRpbjFTdHJpbmcoIkZJWE1F
OiBVbmltcGxlbWVudGVkIVxuIikpOwogICAgIHJlc3VsdC5hcHBlbmQoUUxhdGluMVN0cmluZygi
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpKTsKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmgg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5oCmluZGV4IDE3
MGVhNmQuLjg5NTI0NTIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0R1bXBSZW5kZXJUcmVlLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVt
cFJlbmRlclRyZWUuaApAQCAtNDIsNiArNDIsNyBAQCBRVF9FTkRfTkFNRVNQQUNFCiBjbGFzcyBR
V2ViUGFnZTsKIGNsYXNzIFFXZWJGcmFtZTsKIAorY2xhc3MgSGlzdG9yeU1hbmFnZXI7CiBjbGFz
cyBMYXlvdXRUZXN0Q29udHJvbGxlcjsKIGNsYXNzIEV2ZW50U2VuZGVyOwogY2xhc3MgVGV4dElu
cHV0Q29udHJvbGxlcjsKQEAgLTg4LDYgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRUZXN0
Q29udHJvbGxlciAqbV9jb250cm9sbGVyOwogCiAgICAgUVdlYlBhZ2UgKm1fcGFnZTsKKyAgICBI
aXN0b3J5TWFuYWdlciAqaGlzdG9yeU1hbmFnZXI7CiAKICAgICBFdmVudFNlbmRlciAqbV9ldmVu
dFNlbmRlcjsKICAgICBUZXh0SW5wdXRDb250cm9sbGVyICptX3RleHRJbnB1dENvbnRyb2xsZXI7
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJl
ZS5wcm8gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8K
aW5kZXggOTQxNzk0NC4uMjQ0YTY0ZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0R1bXBSZW5kZXJUcmVlLnBybwpAQCAtMTAsOCArMTAsOCBAQCBERVNURElSID0gLi4v
Li4vLi4vYmluCiBRVCA9IGNvcmUgZ3VpCiBtYWN4OiBRVCArPSB4bWwgbmV0d29yawogCi1IRUFE
RVJTID0gV29ya1F1ZXVlLmggV29ya1F1ZXVlSXRlbS5oIER1bXBSZW5kZXJUcmVlLmgganNvYmpl
Y3RzLmggdGVzdHBsdWdpbi5oCi1TT1VSQ0VTID0gV29ya1F1ZXVlLmNwcCBEdW1wUmVuZGVyVHJl
ZS5jcHAgbWFpbi5jcHAganNvYmplY3RzLmNwcCB0ZXN0cGx1Z2luLmNwcAorSEVBREVSUyA9IFdv
cmtRdWV1ZS5oIFdvcmtRdWV1ZUl0ZW0uaCBEdW1wUmVuZGVyVHJlZS5oIGpzb2JqZWN0cy5oIHRl
c3RwbHVnaW4uaCBoaXN0b3J5bWFuYWdlci5oCitTT1VSQ0VTID0gV29ya1F1ZXVlLmNwcCBEdW1w
UmVuZGVyVHJlZS5jcHAgbWFpbi5jcHAganNvYmplY3RzLmNwcCB0ZXN0cGx1Z2luLmNwcCBoaXN0
b3J5bWFuYWdlci5jcHAKIAogdW5peDohbWFjIHsKICAgICBRTUFLRV9SUEFUSERJUiA9ICQkT1VU
UFVUX0RJUi9saWIgJCRRTUFLRV9SUEFUSERJUgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvaGlzdG9yeW1hbmFnZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvaGlzdG9yeW1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmVlOTUxNzEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9oaXN0b3J5bWFuYWdlci5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBSb2JlcnQgSG9nYW4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioKKyoqIENv
cHlyaWdodCAoQykgMjAwNy0yMDA4IFRyb2xsdGVjaCBBU0EuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisqKgorKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGRlbW9uc3RyYXRpb24gYXBwbGljYXRp
b25zIG9mIHRoZSBRdCBUb29sa2l0LgorKioKKyoqIFRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworKiogTGljZW5zZSB2ZXJzaW9u
cyAyLjAgb3IgMy4wIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKiogRm91bmRh
dGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlcyBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0Uu
R1BMMworKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuICBBbHRlcm5h
dGl2ZWx5IHlvdSBtYXkgKGF0CisqKiB5b3VyIG9wdGlvbikgdXNlIGFueSBsYXRlciB2ZXJzaW9u
IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyoqIExpY2Vuc2UgaWYgc3VjaCBsaWNlbnNlIGhh
cyBiZWVuIHB1YmxpY2x5IGFwcHJvdmVkIGJ5IFRyb2xsdGVjaCBBU0EKKyoqIChvciBpdHMgc3Vj
Y2Vzc29ycywgaWYgYW55KSBhbmQgdGhlIEtERSBGcmVlIFF0IEZvdW5kYXRpb24uIEluCisqKiBh
ZGRpdGlvbiwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgVHJvbGx0ZWNoIGdpdmVzIHlvdSBjZXJ0
YWluCisqKiBhZGRpdGlvbmFsIHJpZ2h0cy4gVGhlc2UgcmlnaHRzIGFyZSBkZXNjcmliZWQgaW4g
dGhlIFRyb2xsdGVjaCBHUEwKKyoqIEV4Y2VwdGlvbiB2ZXJzaW9uIDEuMiwgd2hpY2ggY2FuIGJl
IGZvdW5kIGF0CisqKiBodHRwOi8vd3d3LnRyb2xsdGVjaC5jb20vcHJvZHVjdHMvcXQvZ3BsZXhj
ZXB0aW9uLyBhbmQgaW4gdGhlIGZpbGUKKyoqIEdQTF9FWENFUFRJT04udHh0IGluIHRoaXMgcGFj
a2FnZS4KKyoqCisqKiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8g
ZW5zdXJlIEdOVSBHZW5lcmFsCisqKiBQdWJsaWMgTGljZW5zaW5nIHJlcXVpcmVtZW50cyB3aWxs
IGJlIG1ldDoKKyoqIGh0dHA6Ly90cm9sbHRlY2guY29tL3Byb2R1Y3RzL3F0L2xpY2Vuc2VzL2xp
Y2Vuc2luZy9vcGVuc291cmNlLy4gSWYKKyoqIHlvdSBhcmUgdW5zdXJlIHdoaWNoIGxpY2Vuc2Ug
aXMgYXBwcm9wcmlhdGUgZm9yIHlvdXIgdXNlLCBwbGVhc2UKKyoqIHJldmlldyB0aGUgZm9sbG93
aW5nIGluZm9ybWF0aW9uOgorKiogaHR0cDovL3Ryb2xsdGVjaC5jb20vcHJvZHVjdHMvcXQvbGlj
ZW5zZXMvbGljZW5zaW5nL2xpY2Vuc2luZ292ZXJ2aWV3CisqKiBvciBjb250YWN0IHRoZSBzYWxl
cyBkZXBhcnRtZW50IGF0IHNhbGVzQHRyb2xsdGVjaC5jb20uCisqKgorKiogSW4gYWRkaXRpb24s
IGFzIGEgc3BlY2lhbCBleGNlcHRpb24sIFRyb2xsdGVjaCwgYXMgdGhlIHNvbGUKKyoqIGNvcHly
aWdodCBob2xkZXIgZm9yIFF0IERlc2lnbmVyLCBncmFudHMgdXNlcnMgb2YgdGhlIFF0L0VjbGlw
c2UKKyoqIEludGVncmF0aW9uIHBsdWctaW4gdGhlIHJpZ2h0IGZvciB0aGUgUXQvRWNsaXBzZSBJ
bnRlZ3JhdGlvbiB0bworKiogbGluayB0byBmdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGJ5IFF0IERl
c2lnbmVyIGFuZCBpdHMgcmVsYXRlZAorKiogbGlicmFyaWVzLgorKioKKyoqIFRoaXMgZmlsZSBp
cyBwcm92aWRlZCAiQVMgSVMiIHdpdGggTk8gV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisqKiBJTkNM
VURJTkcgVEhFIFdBUlJBTlRJRVMgT0YgREVTSUdOLCBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisqKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gVHJvbGx0ZWNoIHJlc2VydmVzIGFsbCBy
aWdodHMgbm90IGV4cHJlc3NseQorKiogZ3JhbnRlZCBoZXJlaW4uCisqKgorKiogVGhpcyBmaWxl
IGlzIHByb3ZpZGVkIEFTIElTIHdpdGggTk8gV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIElOQ0xVRElO
RyBUSEUKKyoqIFdBUlJBTlRZIE9GIERFU0lHTiwgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyoqCisqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisj
aW5jbHVkZSAiaGlzdG9yeW1hbmFnZXIuaCIKKyNpbmNsdWRlIDxxd2ViaGlzdG9yeWludGVyZmFj
ZS5oPgorCisKK0hpc3RvcnlNYW5hZ2VyOjpIaXN0b3J5TWFuYWdlcihRT2JqZWN0ICpwYXJlbnQp
CisgICAgOiBRV2ViSGlzdG9yeUludGVyZmFjZShwYXJlbnQpCisgICAgLG1fY291bnQoMCkKK3sK
KyAgICBRV2ViSGlzdG9yeUludGVyZmFjZTo6c2V0RGVmYXVsdEludGVyZmFjZSh0aGlzKTsKK30K
KworSGlzdG9yeU1hbmFnZXI6On5IaXN0b3J5TWFuYWdlcigpCit7Cit9CisKK2Jvb2wgSGlzdG9y
eU1hbmFnZXI6Omhpc3RvcnlDb250YWlucyhjb25zdCBRU3RyaW5nICZ1cmwpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1faGlzdG9yeUhhc2guY29udGFpbnModXJsKTsKK30KKwordm9pZCBIaXN0b3J5
TWFuYWdlcjo6YWRkSGlzdG9yeUVudHJ5KGNvbnN0IFFTdHJpbmcgJnVybCkKK3sKKyAgICBtX2hp
c3RvcnlIYXNoLmluc2VydCh1cmwsIG1fY291bnQpOworICAgIG1fY291bnQrKzsKK30KKwpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvaGlzdG9yeW1hbmFnZXIuaCBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2hpc3RvcnltYW5hZ2VyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2ZjY4NgotLS0gL2Rldi9udWxsCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2hpc3RvcnltYW5hZ2VyLmgKQEAgLTAsMCArMSw5
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBSb2JlcnQgSG9nYW4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgorKioKKyoqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRyb2xsdGVjaCBBU0EuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisqKgorKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGRlbW9u
c3RyYXRpb24gYXBwbGljYXRpb25zIG9mIHRoZSBRdCBUb29sa2l0LgorKioKKyoqIFRoaXMgZmls
ZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwor
KiogTGljZW5zZSB2ZXJzaW9ucyAyLjAgb3IgMy4wIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZQorKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlcyBMSUNFTlNF
LkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0
aGlzIGZpbGUuICBBbHRlcm5hdGl2ZWx5IHlvdSBtYXkgKGF0CisqKiB5b3VyIG9wdGlvbikgdXNl
IGFueSBsYXRlciB2ZXJzaW9uIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyoqIExpY2Vuc2Ug
aWYgc3VjaCBsaWNlbnNlIGhhcyBiZWVuIHB1YmxpY2x5IGFwcHJvdmVkIGJ5IFRyb2xsdGVjaCBB
U0EKKyoqIChvciBpdHMgc3VjY2Vzc29ycywgaWYgYW55KSBhbmQgdGhlIEtERSBGcmVlIFF0IEZv
dW5kYXRpb24uIEluCisqKiBhZGRpdGlvbiwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgVHJvbGx0
ZWNoIGdpdmVzIHlvdSBjZXJ0YWluCisqKiBhZGRpdGlvbmFsIHJpZ2h0cy4gVGhlc2UgcmlnaHRz
IGFyZSBkZXNjcmliZWQgaW4gdGhlIFRyb2xsdGVjaCBHUEwKKyoqIEV4Y2VwdGlvbiB2ZXJzaW9u
IDEuMiwgd2hpY2ggY2FuIGJlIGZvdW5kIGF0CisqKiBodHRwOi8vd3d3LnRyb2xsdGVjaC5jb20v
cHJvZHVjdHMvcXQvZ3BsZXhjZXB0aW9uLyBhbmQgaW4gdGhlIGZpbGUKKyoqIEdQTF9FWENFUFRJ
T04udHh0IGluIHRoaXMgcGFja2FnZS4KKyoqCisqKiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dp
bmcgaW5mb3JtYXRpb24gdG8gZW5zdXJlIEdOVSBHZW5lcmFsCisqKiBQdWJsaWMgTGljZW5zaW5n
IHJlcXVpcmVtZW50cyB3aWxsIGJlIG1ldDoKKyoqIGh0dHA6Ly90cm9sbHRlY2guY29tL3Byb2R1
Y3RzL3F0L2xpY2Vuc2VzL2xpY2Vuc2luZy9vcGVuc291cmNlLy4gSWYKKyoqIHlvdSBhcmUgdW5z
dXJlIHdoaWNoIGxpY2Vuc2UgaXMgYXBwcm9wcmlhdGUgZm9yIHlvdXIgdXNlLCBwbGVhc2UKKyoq
IHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOgorKiogaHR0cDovL3Ryb2xsdGVjaC5j
b20vcHJvZHVjdHMvcXQvbGljZW5zZXMvbGljZW5zaW5nL2xpY2Vuc2luZ292ZXJ2aWV3CisqKiBv
ciBjb250YWN0IHRoZSBzYWxlcyBkZXBhcnRtZW50IGF0IHNhbGVzQHRyb2xsdGVjaC5jb20uCisq
KgorKiogSW4gYWRkaXRpb24sIGFzIGEgc3BlY2lhbCBleGNlcHRpb24sIFRyb2xsdGVjaCwgYXMg
dGhlIHNvbGUKKyoqIGNvcHlyaWdodCBob2xkZXIgZm9yIFF0IERlc2lnbmVyLCBncmFudHMgdXNl
cnMgb2YgdGhlIFF0L0VjbGlwc2UKKyoqIEludGVncmF0aW9uIHBsdWctaW4gdGhlIHJpZ2h0IGZv
ciB0aGUgUXQvRWNsaXBzZSBJbnRlZ3JhdGlvbiB0bworKiogbGluayB0byBmdW5jdGlvbmFsaXR5
IHByb3ZpZGVkIGJ5IFF0IERlc2lnbmVyIGFuZCBpdHMgcmVsYXRlZAorKiogbGlicmFyaWVzLgor
KioKKyoqIFRoaXMgZmlsZSBpcyBwcm92aWRlZCAiQVMgSVMiIHdpdGggTk8gV0FSUkFOVFkgT0Yg
QU5ZIEtJTkQsCisqKiBJTkNMVURJTkcgVEhFIFdBUlJBTlRJRVMgT0YgREVTSUdOLCBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisqKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gVHJvbGx0
ZWNoIHJlc2VydmVzIGFsbCByaWdodHMgbm90IGV4cHJlc3NseQorKiogZ3JhbnRlZCBoZXJlaW4u
CisqKgorKiogVGhpcyBmaWxlIGlzIHByb3ZpZGVkIEFTIElTIHdpdGggTk8gV0FSUkFOVFkgT0Yg
QU5ZIEtJTkQsIElOQ0xVRElORyBUSEUKKyoqIFdBUlJBTlRZIE9GIERFU0lHTiwgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyoqCisqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqLworCisjaWZuZGVmIEhJU1RPUllNQU5BR0VSX0gKKyNkZWZpbmUgSElTVE9S
WU1BTkFHRVJfSAorCisjaW5jbHVkZSA8cWhhc2guaD4KKyNpbmNsdWRlIDxxdXJsLmg+CisjaW5j
bHVkZSA8cXdlYmhpc3RvcnlpbnRlcmZhY2UuaD4KKworY2xhc3MgSGlzdG9yeU1hbmFnZXIgOiBw
dWJsaWMgUVdlYkhpc3RvcnlJbnRlcmZhY2UKK3sKKyAgICBRX09CSkVDVAorcHVibGljOgorICAg
IEhpc3RvcnlNYW5hZ2VyKFFPYmplY3QgKnBhcmVudCA9IDApOworICAgIH5IaXN0b3J5TWFuYWdl
cigpOworCisgICAgYm9vbCBoaXN0b3J5Q29udGFpbnMoY29uc3QgUVN0cmluZyAmdXJsKSBjb25z
dDsKKyAgICB2b2lkIGFkZEhpc3RvcnlFbnRyeShjb25zdCBRU3RyaW5nICZ1cmwpOworCitwcml2
YXRlOgorCisgICAgaW50IG1fY291bnQ7CisgICAgbXV0YWJsZSBRSGFzaDxRU3RyaW5nLCBpbnQ+
IG1faGlzdG9yeUhhc2g7CisKK307CisKKyNlbmRpZiAvLyBISVNUT1JZTUFOQUdFUl9ICisKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2pzb2JqZWN0cy5jcHAgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9qc29iamVjdHMuY3BwCmluZGV4IDA5MDg2Zjgu
LmIxYjA1YWEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2pzb2Jq
ZWN0cy5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmNw
cApAQCAtMjYwLDYgKzI2MCwxMSBAQCBRU3RyaW5nIExheW91dFRlc3RDb250cm9sbGVyOjpkZWNv
ZGVIb3N0TmFtZShjb25zdCBRU3RyaW5nICZob3N0KQogICAgIHJldHVybiBkZWNvZGVkOwogfQog
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRDU1NJZ25vcmVWaXNpdGVkTGlua3MoYm9v
bCBlbmFibGUpCit7CisgICAgbV90b3BMb2FkaW5nRnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+
c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6Q1NTSWdub3JlVmlzaXRlZExpbmtzLCBlbmFibGUp
OworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5n
RW5hYmxlZChib29sIGVuYWJsZSkKIHsKICAgICBtX3RvcExvYWRpbmdGcmFtZS0+cGFnZSgpLT5z
ZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9wZXJFeHRyYXNFbmFi
bGVkLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2pz
b2JqZWN0cy5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmgKaW5k
ZXggODVmYjM2NC4uMzZiOGNiZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvanNvYmplY3RzLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvanNv
YmplY3RzLmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljIHNsb3RzOgogICAgIHZvaWQgZHVtcFNl
bGVjdGlvblJlY3QoKSBjb25zdCB7fQogICAgIHZvaWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0Vu
YWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0Rml4ZWRDb250ZW50c1NpemUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIHNldENTU0lnbm9yZVZpc2l0ZWRMaW5rcyhib29s
IGVuYWJsZSk7CiAKICAgICBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElk
KGNvbnN0IFFTdHJpbmcgJmFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5n
ICZlbGVtZW50SWQpOwogICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0
aElkKGNvbnN0IFFTdHJpbmcgJnByb3BlcnR5TmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJp
bmcgJmVsZW1lbnRJZCk7Ci0tIAoxLjYuMC40Cgo=
</data>
<flag name="review"
          id="16339"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31753</attachid>
            <date>2009-06-23 15:59:25 -0700</date>
            <delta_ts>2009-06-24 11:40:49 -0700</delta_ts>
            <desc>Updated patch with suggested changes</desc>
            <filename>0001-Add-option-CSSIgnoreVisitedLinks.patch</filename>
            <type>text/plain</type>
            <size>28070</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSAxOTQwYThmZTIxOWY5MjI3ZTFjYmNjNDNhZTFhMjczZTE1NWVmNGQ0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBtd2VuZ2UgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CkRhdGU6
IFR1ZSwgMjMgSnVuIDIwMDkgMjM6MTg6NTEgKzAxMDAKU3ViamVjdDogW1BBVENIXSBBZGQgb3B0
aW9uIENTU0lnbm9yZVZpc2l0ZWRMaW5rcwogV2hlbiB1c2VkLCB0aGlzIG9wdGlvbiB3aWxsIGFs
d2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCiBzdHlsZXNo
ZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5
b3VyIGJyb3dzaW5nCiBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBm
b3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE1ICsrKwogLi4uL2hpc3RvcnkvY3NzLWln
bm9yZS12aXNpdGVkLWxpbmtzLWV4cGVjdGVkLnR4dCAgfCAgIDExICsrCiAuLi4vcXQvZmFzdC9o
aXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sICB8ICAgMzQgKysrKysrKwogLi4u
L3Jlc291cmNlcy9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtMi5odG1sICAgICAgfCAgIDI1ICsr
KysrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMjEgKysrKwogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgICAgICAgICAgICAg
ICAgICAgfCAgICA5ICsrLQogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oICAgICAgICAg
ICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgNiArCiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdz
LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgICAgNyArKwogV2ViS2l0L3F0L0FwaS9xd2Vic2V0
dGluZ3MuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICstCiBXZWJLaXQvcXQvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKysrKwogV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIwICsrKysKIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmNwcCAgIHwgICAgMyAr
CiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5oICAgICB8ICAg
IDIgKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvICAg
fCAgICA0ICstCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9oaXN0b3J5bWFuYWdlci5j
cHAgICB8ICAgOTcgKysrKysrKysrKysrKysrKysrKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L2hpc3RvcnltYW5hZ2VyLmggICAgIHwgICA5NyArKysrKysrKysrKysrKysrKysrKwog
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmNwcCAgICAgICAgfCAgICA1
ICsKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2pzb2JqZWN0cy5oICAgICAgICAgIHwg
ICAgMSArCiAyMCBmaWxlcyBjaGFuZ2VkLCAzNzggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3Rv
cnkvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0
ZWQtbGlua3MuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL3F0
L2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLTIuaHRtbAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2hpc3Rvcnlt
YW5hZ2VyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L2hpc3RvcnltYW5hZ2VyLmgKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTFjYzU2NC4uNDdkODMyMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDA5LTA2LTIyICBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dh
bi5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKKworICAgICAgICBBZGQgb3B0
aW9uIENTU0lnbm9yZVZpc2l0ZWRMaW5rcworICAgICAgICBXaGVuIHVzZWQsIHRoaXMgb3B0aW9u
IHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBmb3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MK
KyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMgcHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVj
dGx5IGluc3BlY3RpbmcgeW91ciBicm93c2luZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3Rp
bmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1l
bnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12aXNp
dGVkLWxpbmtzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvaGlzdG9y
eS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2Nzcy1pZ25vcmUtdmlzaXRlZC1s
aW5rcy0yLmh0bWw6IEFkZGVkLgorCiAyMDA5LTA2LTIyICBEYXZpZCBMZXZpbiAgPGxldmluQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0dCBhbmQgRXJpYyBT
ZWlkZWwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3Rvcnkv
Y3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L2Zhc3QvaGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkM2QwMTMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12
aXNpdGVkLWxpbmtzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0Cisg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5k
ZXJJbmxpbmUge0F9IGF0ICgwLDApIHNpemUgMTk5eDE4IFtjb2xvcj0jMDAwMEZGXQorICAgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE5OXgxOAorICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTk5OiAiVGhpcyB0ZXh0IHNob3VsZCBhcHBlYXIgaW4g
Ymx1ZS4iCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTk5LDApIHNpemUgNHgxOAor
ICAgICAgICAgIHRleHQgcnVuIGF0ICgxOTksMCkgd2lkdGggNDogIi4iCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12aXNpdGVkLWxp
bmtzLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvY3NzLWlnbm9y
ZS12aXNpdGVkLWxpbmtzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OWYyNzBhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3Qv
aGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MuaHRtbApAQCAtMCwwICsxLDM0IEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8v
RU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+Cis8SFRNTD4K
KzxIRUFEPgorPFRJVExFPkNTU0lnbm9yZVZpc2l0ZWRMaW5rcyAtIFdoZW4gU2V0LCBWaXNpdGVk
IExpbmtzIGFwcGVhciB1bnZpc2l0ZWQ8L1RJVExFPgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8TUVUQSBo
dHRwLWVxdWl2PSJDb250ZW50LVN0eWxlLVR5cGUiIGNvbnRlbnQ9InRleHQvY3NzIj4KKzxTVFlM
RSB0eXBlPSJ0ZXh0L2NzcyI+CitBIHtjb2xvcjogZ3JlZW47fQorQTpsaW5rIHtjb2xvcjogYmx1
ZTt9CitBOnZpc2l0ZWQge2NvbG9yOiByZWQ7fQorQTphY3RpdmUge2NvbG9yOiBibGFjazt9Cisj
b25lIHtjb2xvcjogIzAwNjYwMDt9Cis8L1NUWUxFPgorCis8L0hFQUQ+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENTU0lnbm9yZVZpc2l0ZWRMaW5rcyh0
cnVlKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
IH0KKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJteWxpbmsiKTsK
KyAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpOworICAg
IGV2ZW50LmluaXRFdmVudCgiY2xpY2siLCB0cnVlLCB0cnVlKTsKKyAgICBlbGVtZW50LmRpc3Bh
dGNoRXZlbnQoZXZlbnQpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKTsiPgorPGRpdj48YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjQzMDAiPkJ1Z3ppbGxhIFJlZmVyZW5jZS48L2E+PC9kaXY+Cis8ZGl2PlRvIHJ1
biB0aGUgdGVzdCA8YSBpZD0ibXlsaW5rIiBocmVmPSJyZXNvdXJjZXMvY3NzLWlnbm9yZS12aXNp
dGVkLWxpbmtzLTIuaHRtbCI+Y2xpY2sgdGhpcyBsaW5rLjwvYT4uPC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvaGlzdG9y
eS9yZXNvdXJjZXMvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLTIuaHRtbCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLWlnbm9yZS12aXNpdGVkLWxp
bmtzLTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTJlOGNjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L3Jl
c291cmNlcy9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtMi5odG1sCkBAIC0wLDAgKzEsMjUgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAvbG9vc2UuZHRkIj4KKzxIVE1M
PgorPEhFQUQ+Cis8VElUTEU+Q1NTSWdub3JlVmlzaXRlZExpbmtzIC0gV2hlbiBTZXQsIFZpc2l0
ZWQgTGlua3MgYXBwZWFyIHVudmlzaXRlZDwvVElUTEU+Cis8TUVUQSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxNRVRB
IGh0dHAtZXF1aXY9IkNvbnRlbnQtU3R5bGUtVHlwZSIgY29udGVudD0idGV4dC9jc3MiPgorPFNU
WUxFIHR5cGU9InRleHQvY3NzIj4KK0Ege2NvbG9yOiBncmVlbjt9CitBOmxpbmsge2NvbG9yOiBi
bHVlO30KK0E6dmlzaXRlZCB7Y29sb3I6IHJlZDt9CitBOmFjdGl2ZSB7Y29sb3I6IGJsYWNrO30K
KyNvbmUge2NvbG9yOiAjMDA2NjAwO30KKzwvU1RZTEU+Cis8c2NyaXB0PgorZnVuY3Rpb24gcnVu
VGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvSEVBRD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8ZGl2PjxhIGlkPSJteWxpbmsiIGhyZWY9Ii4u
L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sIj5UaGlzIHRleHQgc2hvdWxkIGFwcGVhciBp
biBibHVlLjwvYT4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2MxYTQxMi4uNjg5Zjg3ZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNCBAQAorMjAwOS0wNi0yMiAgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9n
YW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKKworICAgICAgICBBZGQgb3B0
aW9uIENTU0lnbm9yZVZpc2l0ZWRMaW5rcworICAgICAgICBXaGVuIHVzZWQsIHRoaXMgb3B0aW9u
IHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBmb3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MK
KyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMgcHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVj
dGx5IGluc3BlY3RpbmcgeW91ciBicm93c2luZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3Rp
bmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1l
bnQuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgICAoQ1NT
U3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNrZXIpCisgICAgICAg
ICAoQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1BzZXVkb1N0YXRlKQor
ICAgICAgICAgKENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxl
Y3RvcikKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgorICAgICAgICAqIFdlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChTZXR0aW5nczo6c2V0Q1NTSWdub3JlVmlz
aXRlZExpbmtzKQorICAgICAgICAqIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAq
IG1hbnVhbC10ZXN0cy9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MuaHRtbDoKKwogMjAwOS0wNi0y
MiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgSm9obiBTdWxsaXZhbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggMmFhZGVi
OS4uNGU0MjI4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
KysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTg2Niw3ICs4NjYsMTEg
QEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNrZXIoRG9j
dW1lbnQqIGRvY3VtZW50LCBib29sIHN0cmkKICAgICAsIG1fY29sbGVjdFJ1bGVzT25seShmYWxz
ZSkKICAgICAsIG1fcHNldWRvU3R5bGUoTk9QU0VVRE8pCiAgICAgLCBtX2RvY3VtZW50SXNIVE1M
KGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKQorICAgICwgbV9pZ25vcmVWaXNpdGVkTGlua3Mo
ZmFsc2UpCiB7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9kb2N1bWVudC0+c2V0dGluZ3Mo
KTsKKyAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmNzc0lnbm9yZVZpc2l0ZWRMaW5rcygp
KQorICAgICAgICBtX2lnbm9yZVZpc2l0ZWRMaW5rcyA9IHRydWU7CiB9CiAKIFBzZXVkb1N0YXRl
IENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tQc2V1ZG9TdGF0ZShFbGVt
ZW50KiBlbGVtZW50LCBib29sIGNoZWNrVmlzaXRlZCkgY29uc3QKQEAgLTg3OCw2ICs4ODIsOSBA
QCBQc2V1ZG9TdGF0ZSBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrUHNl
dWRvU3RhdGUoRWxlbWVudCogZWxlbWVudAogICAgIGlmICghY2hlY2tWaXNpdGVkKQogICAgICAg
ICByZXR1cm4gUHNldWRvQW55TGluazsKIAorICAgIGlmIChtX2lnbm9yZVZpc2l0ZWRMaW5rcykK
KyAgICAgICAgcmV0dXJuIFBzZXVkb0xpbms7CisKICNpZiBQTEFURk9STShRVCkKICAgICBWZWN0
b3I8VUNoYXIsIDUxMj4gdXJsOwogICAgIHZpc2l0ZWRVUkwobV9kb2N1bWVudC0+YmFzZVVSTCgp
LCAqYXR0ciwgdXJsKTsKQEAgLTIyNzgsNyArMjI4NSw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rv
cjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVs
ZW1lCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVkOgogICAgICAg
ICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9Vbmtub3duIHx8IHBzZXVkb1N0YXRl
ID09IFBzZXVkb0FueUxpbmspCiAgICAgICAgICAgICAgICAgICAgIHBzZXVkb1N0YXRlID0gY2hl
Y2tQc2V1ZG9TdGF0ZShlKTsKLSAgICAgICAgICAgICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNl
dWRvVmlzaXRlZCkKKyAgICAgICAgICAgICAgICBpZiAoIW1faWdub3JlVmlzaXRlZExpbmtzICYm
IHBzZXVkb1N0YXRlID09IFBzZXVkb1Zpc2l0ZWQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvRHJhZzogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5oIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCmluZGV4IDhkZDM2ZDcuLjNh
ZmYzMTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAorKysgYi9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKQEAgLTIwMCw2ICsyMDAsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBQc2V1ZG9JZCBtX3BzZXVkb1N0eWxlOwogICAgICAgICAgICAgYm9vbCBt
X2RvY3VtZW50SXNIVE1MOwogICAgICAgICAgICAgbXV0YWJsZSBIYXNoU2V0PExpbmtIYXNoLCBM
aW5rSGFzaEhhc2g+IG1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRlOworICAgICAgICAgICAg
Ym9vbCBtX2lnbm9yZVZpc2l0ZWRMaW5rczsKICAgICAgICAgfTsKIAogICAgIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcAppbmRleCAzYTAwYjhlLi44MTgzMGRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTkzLDYgKzkz
LDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2VuZm9yY2VDU1NN
SU1FVHlwZUluU3RyaWN0TW9kZSh0cnVlKQogICAgICwgbV91c2VzRW5jb2RpbmdEZXRlY3Rvcihm
YWxzZSkKICAgICAsIG1fYWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MoZmFsc2UpCisgICAgLCBt
X2Nzc0lnbm9yZVZpc2l0ZWRMaW5rcyhmYWxzZSkKICAgICAsIG1fZWRpdGluZ0JlaGF2aW9yKAog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgRWRpdGluZ01hY0JlaGF2aW9yCkBAIC0yNDUsNiAr
MjQ2LDExIEBAIHZvaWQgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkKQogICAgIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQ7CiB9CiAKK3ZvaWQgU2V0dGluZ3M6OnNldENTU0lnbm9yZVZp
c2l0ZWRMaW5rcyhib29sIGNzc0lnbm9yZVZpc2l0ZWRMaW5rcykKK3sKKyAgICBtX2Nzc0lnbm9y
ZVZpc2l0ZWRMaW5rcyA9IGNzc0lnbm9yZVZpc2l0ZWRMaW5rczsKK30KKwogdm9pZCBTZXR0aW5n
czo6c2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShib29sIGphdmFTY3Jp
cHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkpCiB7CiAgICAgbV9qYXZhU2NyaXB0Q2FuT3Bl
bldpbmRvd3NBdXRvbWF0aWNhbGx5ID0gamF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGlj
YWxseTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmgKaW5kZXggOWQ0ZTQyMi4uMjczZDVjYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmgKKysrIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTI0MSw2ICsy
NDEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0WFNTQXVkaXRvckVu
YWJsZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgeHNzQXVkaXRvckVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX3hzc0F1ZGl0b3JFbmFibGVkOyB9CiAKKyAgICAgICAgdm9pZCBzZXRDU1NJZ25vcmVW
aXNpdGVkTGlua3MoYm9vbCk7CisgICAgICAgIGJvb2wgY3NzSWdub3JlVmlzaXRlZExpbmtzKCkg
Y29uc3QgeyByZXR1cm4gbV9jc3NJZ25vcmVWaXNpdGVkTGlua3M7IH0KKwogICAgIHByaXZhdGU6
CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAgCkBAIC0zMDEsNyArMzA0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1bnNpZ25lZCBtX2VkaXRpbmdCZWhhdmlvciA6IDE7
CiAgICAgICAgIGJvb2wgbV9kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQgOiAxOwogICAg
ICAgICBib29sIG1feHNzQXVkaXRvckVuYWJsZWQgOiAxOwotCisgICAgICAgIGJvb2wgbV9jc3NJ
Z25vcmVWaXNpdGVkTGlua3MgOiAxOwogI2lmIFVTRShTQUZBUklfVEhFTUUpCiAgICAgICAgIHN0
YXRpYyBib29sIGdTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0
aW5ncy5jcHAKaW5kZXggMDJlZjRhMC4uMTkwNjFjYyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0Fw
aS9xd2Vic2V0dGluZ3MuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApA
QCAtMTUzLDYgKzE1MywxMCBAQCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZh
bHVlKFFXZWJTZXR0aW5nczo6UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkpOwogICAgICAgICBzZXR0
aW5ncy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCh2YWx1ZSk7CiAKKyAgICAgICAgdmFsdWUg
PSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NTSWdub3JlVmlzaXRlZExpbmtzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMu
dmFsdWUoUVdlYlNldHRpbmdzOjpDU1NJZ25vcmVWaXNpdGVkTGlua3MpKTsKKyAgICAgICAgc2V0
dGluZ3MtPnNldENTU0lnbm9yZVZpc2l0ZWRMaW5rcyh2YWx1ZSk7CisgICAgICAgIAogICAgICAg
ICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuQWNj
ZXNzQ2xpcGJvYXJkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9i
YWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuQWNjZXNzQ2xp
cGJvYXJkKSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRET01QYXN0ZUFsbG93ZWQodmFsdWUpOwpA
QCAtMzI5LDYgKzMzMyw5IEBAIFFXZWJTZXR0aW5ncyAqUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0
aW5ncygpCiAgICAgXHZhbHVlIExvY2FsU3RvcmFnZURhdGFiYXNlRW5hYmxlZCBTcGVjaWZpZXMg
d2hldGhlciBzdXBwb3J0IGZvciB0aGUgSFRNTCA1CiAgICAgICAgIGxvY2FsIHN0b3JhZ2UgZmVh
dHVyZSBpcyBlbmFibGVkIG9yIG5vdC4KICAgICBcdmFsdWUgTG9jYWxDb250ZW50Q2FuQWNjZXNz
UmVtb3RlVXJscyBTcGVjaWZpZXMgd2hldGhlciBsb2NhbGx5IGxvYWRlZCBkb2N1bWVudHMgYXJl
IGFsbG93ZWQgdG8gYWNjZXNzIHJlbW90ZSB1cmxzLgorICAgIFx2YWx1ZSBDU1NJZ25vcmVWaXNp
dGVkTGlua3MgQWx3YXlzIHJldHVybiBmYWxzZSBmb3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBD
U1MKKyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMgcHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRp
cmVjdGx5IGluc3BlY3RpbmcgeW91ciBicm93c2luZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVl
c3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9j
dW1lbnQuCiAqLwogCiAvKiEKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdz
LmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oCmluZGV4IDdjYmNhMjUuLjY3NjExNDAg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKKysrIGIvV2ViS2l0L3F0
L0FwaS9xd2Vic2V0dGluZ3MuaApAQCAtNjQsNyArNjQsOCBAQCBwdWJsaWM6CiAgICAgICAgIE9m
ZmxpbmVTdG9yYWdlRGF0YWJhc2VFbmFibGVkLAogICAgICAgICBPZmZsaW5lV2ViQXBwbGljYXRp
b25DYWNoZUVuYWJsZWQsCiAgICAgICAgIExvY2FsU3RvcmFnZURhdGFiYXNlRW5hYmxlZCwKLSAg
ICAgICAgTG9jYWxDb250ZW50Q2FuQWNjZXNzUmVtb3RlVXJscworICAgICAgICBMb2NhbENvbnRl
bnRDYW5BY2Nlc3NSZW1vdGVVcmxzLAorICAgICAgICBDU1NJZ25vcmVWaXNpdGVkTGlua3MKICAg
ICB9OwogICAgIGVudW0gV2ViR3JhcGhpYyB7CiAgICAgICAgIE1pc3NpbmdJbWFnZUdyYXBoaWMs
CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpp
bmRleCBjMmVkNDc1Li44YTg3YjM2IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0wNi0yMiAgUm9i
ZXJ0IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjQzMDAKKworICAgICAgICBBZGQgb3B0aW9uIENTU0lnbm9yZVZpc2l0ZWRMaW5rcworICAg
ICAgICBXaGVuIHVzZWQsIHRoaXMgb3B0aW9uIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBmb3Ig
dGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMgcHJl
dmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5IGluc3BlY3RpbmcgeW91ciBicm93c2luZwor
ICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBz
ZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCisKKyAgICAgICAgU2VlIFdlYkNvcmUvbWFu
dWFsLXRlc3RzL2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sOgorCisgICAgICAgICogQXBp
L3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSkK
KyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisKIDIwMDktMDYtMTkgIERhbmllbCBUZXNr
ZSA8cXQtaW5mb0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFu
Z2VMb2cKaW5kZXggNjBmMzEyOS4uMWE5YjU3ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDA5
LTA2LTIyICBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjQzMDAKKworICAgICAgICBBZGQgb3B0aW9uIENTU0lnbm9yZVZpc2l0
ZWRMaW5rcworICAgICAgICBXaGVuIHVzZWQsIHRoaXMgb3B0aW9uIHdpbGwgYWx3YXlzIHJldHVy
biBmYWxzZSBmb3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAgICAgICAgc3R5bGVzaGVl
dHMuIFRoaXMgcHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5IGluc3BlY3RpbmcgeW91
ciBicm93c2luZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBz
dGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCisKKyAgICAgICAgQWRk
IGEgc3R1YiBoaXN0b3J5IG1hbmFnZXIgdG8gcGVyZm9ybSB1bml0IHRlc3QuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9xdC9oaXN0b3J5bWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9xdC9oaXN0b3J5bWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmNwcDogTW9kaWZpZWQuCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUuaDogTW9kaWZpZWQuCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmg6IE1vZGlmaWVkLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3F0L2pzb2JqZWN0cy5jcHA6IE1vZGlmaWVkLgorCiAyMDA5LTA2LTIxICBTdGV2
ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2V0IHVwIGdsb2Jh
bCBuYXRpdmUgY29udHJvbHMgZmxhZyBiZWZvcmUgY3JlYXRpbmcgdGhlIGZpcnN0IFdlYlZpZXcu
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJl
ZS5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5jcHAK
aW5kZXggNzhkNTM1YS4uNTkxMmE0YyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkR1
bXBSZW5kZXJUcmVlLmgiCiAjaW5jbHVkZSAianNvYmplY3RzLmgiCiAjaW5jbHVkZSAidGVzdHBs
dWdpbi5oIgorI2luY2x1ZGUgImhpc3RvcnltYW5hZ2VyLmgiCiAKICNpbmNsdWRlIDxRRGlyPgog
I2luY2x1ZGUgPFFGaWxlPgpAQCAtNDUsNiArNDYsNyBAQAogI2luY2x1ZGUgPHF3ZWJwYWdlLmg+
CiAjaW5jbHVkZSA8cXdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8cXdlYnZpZXcuaD4KKyNpbmNsdWRl
IDxxd2ViaGlzdG9yeS5oPgogI2luY2x1ZGUgPHF3ZWJzZXR0aW5ncy5oPgogCiAjaW5jbHVkZSA8
dW5pc3RkLmg+CkBAIC0xNDksNiArMTUxLDcgQEAgRHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJU
cmVlKCkKIAogICAgIG1fZXZlbnRTZW5kZXIgPSBuZXcgRXZlbnRTZW5kZXIobV9wYWdlKTsKICAg
ICBtX3RleHRJbnB1dENvbnRyb2xsZXIgPSBuZXcgVGV4dElucHV0Q29udHJvbGxlcihtX3BhZ2Up
OworICAgIGhpc3RvcnlNYW5hZ2VyID0gbmV3IEhpc3RvcnlNYW5hZ2VyKG1fcGFnZSk7CiAKICAg
ICBRT2JqZWN0Ojpjb25uZWN0KHRoaXMsIFNJR05BTChxdWl0KCkpLCBxQXBwLCBTTE9UKHF1aXQo
KSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKICAgICBxdF9kcnRfcnVuKHRydWUpOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUuaCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmgKaW5kZXggMTcwZWE2
ZC4uODk1MjQ1MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVt
cFJlbmRlclRyZWUuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVu
ZGVyVHJlZS5oCkBAIC00Miw2ICs0Miw3IEBAIFFUX0VORF9OQU1FU1BBQ0UKIGNsYXNzIFFXZWJQ
YWdlOwogY2xhc3MgUVdlYkZyYW1lOwogCitjbGFzcyBIaXN0b3J5TWFuYWdlcjsKIGNsYXNzIExh
eW91dFRlc3RDb250cm9sbGVyOwogY2xhc3MgRXZlbnRTZW5kZXI7CiBjbGFzcyBUZXh0SW5wdXRD
b250cm9sbGVyOwpAQCAtODgsNiArODksNyBAQCBwcml2YXRlOgogICAgIExheW91dFRlc3RDb250
cm9sbGVyICptX2NvbnRyb2xsZXI7CiAKICAgICBRV2ViUGFnZSAqbV9wYWdlOworICAgIEhpc3Rv
cnlNYW5hZ2VyICpoaXN0b3J5TWFuYWdlcjsKIAogICAgIEV2ZW50U2VuZGVyICptX2V2ZW50U2Vu
ZGVyOwogICAgIFRleHRJbnB1dENvbnRyb2xsZXIgKm1fdGV4dElucHV0Q29udHJvbGxlcjsKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLnBy
byBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLnBybwppbmRl
eCA5NDE3OTQ0Li4yNDRhNjRlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvRHVtcFJlbmRlclRyZWUucHJvCkBAIC0xMCw4ICsxMCw4IEBAIERFU1RESVIgPSAuLi8uLi8u
Li9iaW4KIFFUID0gY29yZSBndWkKIG1hY3g6IFFUICs9IHhtbCBuZXR3b3JrCiAKLUhFQURFUlMg
PSBXb3JrUXVldWUuaCBXb3JrUXVldWVJdGVtLmggRHVtcFJlbmRlclRyZWUuaCBqc29iamVjdHMu
aCB0ZXN0cGx1Z2luLmgKLVNPVVJDRVMgPSBXb3JrUXVldWUuY3BwIER1bXBSZW5kZXJUcmVlLmNw
cCBtYWluLmNwcCBqc29iamVjdHMuY3BwIHRlc3RwbHVnaW4uY3BwCitIRUFERVJTID0gV29ya1F1
ZXVlLmggV29ya1F1ZXVlSXRlbS5oIER1bXBSZW5kZXJUcmVlLmgganNvYmplY3RzLmggdGVzdHBs
dWdpbi5oIGhpc3RvcnltYW5hZ2VyLmgKK1NPVVJDRVMgPSBXb3JrUXVldWUuY3BwIER1bXBSZW5k
ZXJUcmVlLmNwcCBtYWluLmNwcCBqc29iamVjdHMuY3BwIHRlc3RwbHVnaW4uY3BwIGhpc3Rvcnlt
YW5hZ2VyLmNwcAogCiB1bml4OiFtYWMgewogICAgIFFNQUtFX1JQQVRIRElSID0gJCRPVVRQVVRf
RElSL2xpYiAkJFFNQUtFX1JQQVRIRElSCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9oaXN0b3J5bWFuYWdlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9oaXN0b3J5bWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNjUwNTI5OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L2hpc3RvcnltYW5hZ2VyLmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IFJvYmVydCBIb2dhbgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKgorKiogQ29weXJp
Z2h0IChDKSAyMDA3LTIwMDggVHJvbGx0ZWNoIEFTQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoq
CisqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZGVtb25zdHJhdGlvbiBhcHBsaWNhdGlvbnMg
b2YgdGhlIFF0IFRvb2xraXQuCisqKgorKiogVGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisqKiBMaWNlbnNlIHZlcnNpb25zIDIu
MCBvciAzLjAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisqKiBGb3VuZGF0aW9u
IGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGVzIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwz
CisqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gIEFsdGVybmF0aXZl
bHkgeW91IG1heSAoYXQKKyoqIHlvdXIgb3B0aW9uKSB1c2UgYW55IGxhdGVyIHZlcnNpb24gb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYworKiogTGljZW5zZSBpZiBzdWNoIGxpY2Vuc2UgaGFzIGJl
ZW4gcHVibGljbHkgYXBwcm92ZWQgYnkgVHJvbGx0ZWNoIEFTQQorKiogKG9yIGl0cyBzdWNjZXNz
b3JzLCBpZiBhbnkpIGFuZCB0aGUgS0RFIEZyZWUgUXQgRm91bmRhdGlvbi4gSW4KKyoqIGFkZGl0
aW9uLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBUcm9sbHRlY2ggZ2l2ZXMgeW91IGNlcnRhaW4K
KyoqIGFkZGl0aW9uYWwgcmlnaHRzLiBUaGVzZSByaWdodHMgYXJlIGRlc2NyaWJlZCBpbiB0aGUg
VHJvbGx0ZWNoIEdQTAorKiogRXhjZXB0aW9uIHZlcnNpb24gMS4yLCB3aGljaCBjYW4gYmUgZm91
bmQgYXQKKyoqIGh0dHA6Ly93d3cudHJvbGx0ZWNoLmNvbS9wcm9kdWN0cy9xdC9ncGxleGNlcHRp
b24vIGFuZCBpbiB0aGUgZmlsZQorKiogR1BMX0VYQ0VQVElPTi50eHQgaW4gdGhpcyBwYWNrYWdl
LgorKioKKyoqIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0byBlbnN1
cmUgR05VIEdlbmVyYWwKKyoqIFB1YmxpYyBMaWNlbnNpbmcgcmVxdWlyZW1lbnRzIHdpbGwgYmUg
bWV0OgorKiogaHR0cDovL3Ryb2xsdGVjaC5jb20vcHJvZHVjdHMvcXQvbGljZW5zZXMvbGljZW5z
aW5nL29wZW5zb3VyY2UvLiBJZgorKiogeW91IGFyZSB1bnN1cmUgd2hpY2ggbGljZW5zZSBpcyBh
cHByb3ByaWF0ZSBmb3IgeW91ciB1c2UsIHBsZWFzZQorKiogcmV2aWV3IHRoZSBmb2xsb3dpbmcg
aW5mb3JtYXRpb246CisqKiBodHRwOi8vdHJvbGx0ZWNoLmNvbS9wcm9kdWN0cy9xdC9saWNlbnNl
cy9saWNlbnNpbmcvbGljZW5zaW5nb3ZlcnZpZXcKKyoqIG9yIGNvbnRhY3QgdGhlIHNhbGVzIGRl
cGFydG1lbnQgYXQgc2FsZXNAdHJvbGx0ZWNoLmNvbS4KKyoqCisqKiBJbiBhZGRpdGlvbiwgYXMg
YSBzcGVjaWFsIGV4Y2VwdGlvbiwgVHJvbGx0ZWNoLCBhcyB0aGUgc29sZQorKiogY29weXJpZ2h0
IGhvbGRlciBmb3IgUXQgRGVzaWduZXIsIGdyYW50cyB1c2VycyBvZiB0aGUgUXQvRWNsaXBzZQor
KiogSW50ZWdyYXRpb24gcGx1Zy1pbiB0aGUgcmlnaHQgZm9yIHRoZSBRdC9FY2xpcHNlIEludGVn
cmF0aW9uIHRvCisqKiBsaW5rIHRvIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkgUXQgRGVzaWdu
ZXIgYW5kIGl0cyByZWxhdGVkCisqKiBsaWJyYXJpZXMuCisqKgorKiogVGhpcyBmaWxlIGlzIHBy
b3ZpZGVkICJBUyBJUyIgd2l0aCBOTyBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyoqIElOQ0xVRElO
RyBUSEUgV0FSUkFOVElFUyBPRiBERVNJR04sIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyoqIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBUcm9sbHRlY2ggcmVzZXJ2ZXMgYWxsIHJpZ2h0
cyBub3QgZXhwcmVzc2x5CisqKiBncmFudGVkIGhlcmVpbi4KKyoqCisqKiBUaGlzIGZpbGUgaXMg
cHJvdmlkZWQgQVMgSVMgd2l0aCBOTyBXQVJSQU5UWSBPRiBBTlkgS0lORCwgSU5DTFVESU5HIFRI
RQorKiogV0FSUkFOVFkgT0YgREVTSUdOLCBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLgorKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNs
dWRlICJoaXN0b3J5bWFuYWdlci5oIgorI2luY2x1ZGUgPHF3ZWJoaXN0b3J5aW50ZXJmYWNlLmg+
CisKKworSGlzdG9yeU1hbmFnZXI6Okhpc3RvcnlNYW5hZ2VyKFFPYmplY3QgKnBhcmVudCkKKyAg
ICA6IFFXZWJIaXN0b3J5SW50ZXJmYWNlKHBhcmVudCkKKyAgICAsIG1fY291bnQoMCkKK3sKKyAg
ICBRV2ViSGlzdG9yeUludGVyZmFjZTo6c2V0RGVmYXVsdEludGVyZmFjZSh0aGlzKTsKK30KKwor
SGlzdG9yeU1hbmFnZXI6On5IaXN0b3J5TWFuYWdlcigpCit7Cit9CisKK2Jvb2wgSGlzdG9yeU1h
bmFnZXI6Omhpc3RvcnlDb250YWlucyhjb25zdCBRU3RyaW5nICZ1cmwpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faGlzdG9yeUhhc2guY29udGFpbnModXJsKTsKK30KKwordm9pZCBIaXN0b3J5TWFu
YWdlcjo6YWRkSGlzdG9yeUVudHJ5KGNvbnN0IFFTdHJpbmcgJnVybCkKK3sKKyAgICBtX2hpc3Rv
cnlIYXNoLmluc2VydCh1cmwsIG1fY291bnQpOworICAgICsrbV9jb3VudDsKK30KKwpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvaGlzdG9yeW1hbmFnZXIuaCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2hpc3RvcnltYW5hZ2VyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2ZjY4NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2hpc3RvcnltYW5hZ2VyLmgKQEAgLTAsMCArMSw5NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBSb2JlcnQgSG9nYW4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgorKioKKyoqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRyb2xsdGVjaCBBU0EuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisqKgorKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGRlbW9uc3Ry
YXRpb24gYXBwbGljYXRpb25zIG9mIHRoZSBRdCBUb29sa2l0LgorKioKKyoqIFRoaXMgZmlsZSBt
YXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworKiog
TGljZW5zZSB2ZXJzaW9ucyAyLjAgb3IgMy4wIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZQorKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlcyBMSUNFTlNFLkdQ
TDIgYW5kIExJQ0VOU0UuR1BMMworKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlz
IGZpbGUuICBBbHRlcm5hdGl2ZWx5IHlvdSBtYXkgKGF0CisqKiB5b3VyIG9wdGlvbikgdXNlIGFu
eSBsYXRlciB2ZXJzaW9uIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyoqIExpY2Vuc2UgaWYg
c3VjaCBsaWNlbnNlIGhhcyBiZWVuIHB1YmxpY2x5IGFwcHJvdmVkIGJ5IFRyb2xsdGVjaCBBU0EK
KyoqIChvciBpdHMgc3VjY2Vzc29ycywgaWYgYW55KSBhbmQgdGhlIEtERSBGcmVlIFF0IEZvdW5k
YXRpb24uIEluCisqKiBhZGRpdGlvbiwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgVHJvbGx0ZWNo
IGdpdmVzIHlvdSBjZXJ0YWluCisqKiBhZGRpdGlvbmFsIHJpZ2h0cy4gVGhlc2UgcmlnaHRzIGFy
ZSBkZXNjcmliZWQgaW4gdGhlIFRyb2xsdGVjaCBHUEwKKyoqIEV4Y2VwdGlvbiB2ZXJzaW9uIDEu
Miwgd2hpY2ggY2FuIGJlIGZvdW5kIGF0CisqKiBodHRwOi8vd3d3LnRyb2xsdGVjaC5jb20vcHJv
ZHVjdHMvcXQvZ3BsZXhjZXB0aW9uLyBhbmQgaW4gdGhlIGZpbGUKKyoqIEdQTF9FWENFUFRJT04u
dHh0IGluIHRoaXMgcGFja2FnZS4KKyoqCisqKiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcg
aW5mb3JtYXRpb24gdG8gZW5zdXJlIEdOVSBHZW5lcmFsCisqKiBQdWJsaWMgTGljZW5zaW5nIHJl
cXVpcmVtZW50cyB3aWxsIGJlIG1ldDoKKyoqIGh0dHA6Ly90cm9sbHRlY2guY29tL3Byb2R1Y3Rz
L3F0L2xpY2Vuc2VzL2xpY2Vuc2luZy9vcGVuc291cmNlLy4gSWYKKyoqIHlvdSBhcmUgdW5zdXJl
IHdoaWNoIGxpY2Vuc2UgaXMgYXBwcm9wcmlhdGUgZm9yIHlvdXIgdXNlLCBwbGVhc2UKKyoqIHJl
dmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOgorKiogaHR0cDovL3Ryb2xsdGVjaC5jb20v
cHJvZHVjdHMvcXQvbGljZW5zZXMvbGljZW5zaW5nL2xpY2Vuc2luZ292ZXJ2aWV3CisqKiBvciBj
b250YWN0IHRoZSBzYWxlcyBkZXBhcnRtZW50IGF0IHNhbGVzQHRyb2xsdGVjaC5jb20uCisqKgor
KiogSW4gYWRkaXRpb24sIGFzIGEgc3BlY2lhbCBleGNlcHRpb24sIFRyb2xsdGVjaCwgYXMgdGhl
IHNvbGUKKyoqIGNvcHlyaWdodCBob2xkZXIgZm9yIFF0IERlc2lnbmVyLCBncmFudHMgdXNlcnMg
b2YgdGhlIFF0L0VjbGlwc2UKKyoqIEludGVncmF0aW9uIHBsdWctaW4gdGhlIHJpZ2h0IGZvciB0
aGUgUXQvRWNsaXBzZSBJbnRlZ3JhdGlvbiB0bworKiogbGluayB0byBmdW5jdGlvbmFsaXR5IHBy
b3ZpZGVkIGJ5IFF0IERlc2lnbmVyIGFuZCBpdHMgcmVsYXRlZAorKiogbGlicmFyaWVzLgorKioK
KyoqIFRoaXMgZmlsZSBpcyBwcm92aWRlZCAiQVMgSVMiIHdpdGggTk8gV0FSUkFOVFkgT0YgQU5Z
IEtJTkQsCisqKiBJTkNMVURJTkcgVEhFIFdBUlJBTlRJRVMgT0YgREVTSUdOLCBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisqKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gVHJvbGx0ZWNo
IHJlc2VydmVzIGFsbCByaWdodHMgbm90IGV4cHJlc3NseQorKiogZ3JhbnRlZCBoZXJlaW4uCisq
KgorKiogVGhpcyBmaWxlIGlzIHByb3ZpZGVkIEFTIElTIHdpdGggTk8gV0FSUkFOVFkgT0YgQU5Z
IEtJTkQsIElOQ0xVRElORyBUSEUKKyoqIFdBUlJBTlRZIE9GIERFU0lHTiwgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyoqCisqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqLworCisjaWZuZGVmIEhJU1RPUllNQU5BR0VSX0gKKyNkZWZpbmUgSElTVE9SWU1B
TkFHRVJfSAorCisjaW5jbHVkZSA8cWhhc2guaD4KKyNpbmNsdWRlIDxxdXJsLmg+CisjaW5jbHVk
ZSA8cXdlYmhpc3RvcnlpbnRlcmZhY2UuaD4KKworY2xhc3MgSGlzdG9yeU1hbmFnZXIgOiBwdWJs
aWMgUVdlYkhpc3RvcnlJbnRlcmZhY2UKK3sKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIEhp
c3RvcnlNYW5hZ2VyKFFPYmplY3QgKnBhcmVudCA9IDApOworICAgIH5IaXN0b3J5TWFuYWdlcigp
OworCisgICAgYm9vbCBoaXN0b3J5Q29udGFpbnMoY29uc3QgUVN0cmluZyAmdXJsKSBjb25zdDsK
KyAgICB2b2lkIGFkZEhpc3RvcnlFbnRyeShjb25zdCBRU3RyaW5nICZ1cmwpOworCitwcml2YXRl
OgorCisgICAgaW50IG1fY291bnQ7CisgICAgbXV0YWJsZSBRSGFzaDxRU3RyaW5nLCBpbnQ+IG1f
aGlzdG9yeUhhc2g7CisKK307CisKKyNlbmRpZiAvLyBISVNUT1JZTUFOQUdFUl9ICisKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2pzb2JqZWN0cy5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9qc29iamVjdHMuY3BwCmluZGV4IDA5MDg2ZjguLmIx
YjA1YWEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2pzb2JqZWN0
cy5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmNwcApA
QCAtMjYwLDYgKzI2MCwxMSBAQCBRU3RyaW5nIExheW91dFRlc3RDb250cm9sbGVyOjpkZWNvZGVI
b3N0TmFtZShjb25zdCBRU3RyaW5nICZob3N0KQogICAgIHJldHVybiBkZWNvZGVkOwogfQogCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRDU1NJZ25vcmVWaXNpdGVkTGlua3MoYm9vbCBl
bmFibGUpCit7CisgICAgbV90b3BMb2FkaW5nRnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0
QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6Q1NTSWdub3JlVmlzaXRlZExpbmtzLCBlbmFibGUpOwor
fQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5h
YmxlZChib29sIGVuYWJsZSkKIHsKICAgICBtX3RvcExvYWRpbmdGcmFtZS0+cGFnZSgpLT5zZXR0
aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9wZXJFeHRyYXNFbmFibGVk
LCB0cnVlKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2pzb2Jq
ZWN0cy5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmgKaW5kZXgg
ODVmYjM2NC4uMzZiOGNiZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvanNvYmplY3RzLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvanNvYmpl
Y3RzLmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljIHNsb3RzOgogICAgIHZvaWQgZHVtcFNlbGVj
dGlvblJlY3QoKSBjb25zdCB7fQogICAgIHZvaWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJs
ZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0Rml4ZWRDb250ZW50c1NpemUoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIHNldENTU0lnbm9yZVZpc2l0ZWRMaW5rcyhib29sIGVu
YWJsZSk7CiAKICAgICBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGNv
bnN0IFFTdHJpbmcgJmFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nICZl
bGVtZW50SWQpOwogICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElk
KGNvbnN0IFFTdHJpbmcgJnByb3BlcnR5TmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcg
JmVsZW1lbnRJZCk7Ci0tIAoxLjYuMC40Cgo=
</data>
<flag name="review"
          id="16346"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31797</attachid>
            <date>2009-06-24 11:40:49 -0700</date>
            <delta_ts>2009-06-30 15:20:15 -0700</delta_ts>
            <desc>Patch with Update Copyright Notices</desc>
            <filename>0001-Add-option-CSSIgnoreVisitedLinks.patch</filename>
            <type>text/plain</type>
            <size>23656</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSBkNmRiNWIxMTY2ZTY0NTk2ZTUwMTNjMTRiZTEyZWI2MGYzNGZhYjAzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBtd2VuZ2UgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CkRhdGU6
IFR1ZSwgMjMgSnVuIDIwMDkgMjM6MTg6NTEgKzAxMDAKU3ViamVjdDogW1BBVENIXSBBZGQgb3B0
aW9uIENTU0lnbm9yZVZpc2l0ZWRMaW5rcwogV2hlbiB1c2VkLCB0aGlzIG9wdGlvbiB3aWxsIGFs
d2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCiBzdHlsZXNo
ZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5
b3VyIGJyb3dzaW5nCiBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBm
b3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE1ICsrKysrKwogLi4uL2hpc3RvcnkvY3Nz
LWlnbm9yZS12aXNpdGVkLWxpbmtzLWV4cGVjdGVkLnR4dCAgfCAgIDExICsrKysKIC4uLi9xdC9m
YXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLmh0bWwgIHwgICAzNCArKysrKysr
KysrKysrCiAuLi4vcmVzb3VyY2VzL2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy0yLmh0bWwgICAg
ICB8ICAgMjUgKysrKysrKysrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjEgKysrKysrKysKIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwICAgICAgICAgICAgICAgICAgIHwgICAgOSArKystCiBXZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmggICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsrCiBXZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKystCiBXZWJL
aXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKysr
CiBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oICAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDMgKy0KIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxNyArKysrKysKIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAyMCArKysrKysrKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
RHVtcFJlbmRlclRyZWUuY3BwICAgfCAgICAzICsKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0R1bXBSZW5kZXJUcmVlLmggICAgIHwgICAgMiArCiBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8gICB8ICAgIDQgKy0KIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L2hpc3RvcnltYW5hZ2VyLmNwcCAgIHwgICA1MiArKysrKysrKysrKysrKysr
KysrKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvaGlzdG9yeW1hbmFnZXIuaCAgICAg
fCAgIDUxICsrKysrKysrKysrKysrKysrKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L2pzb2JqZWN0cy5jcHAgICAgICAgIHwgICAgNSArKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvanNvYmplY3RzLmggICAgICAgICAgfCAgICAxICsKIDIwIGZpbGVzIGNoYW5nZWQsIDI4
NyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3Mt
ZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
ZmFzdC9oaXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sCiBjcmVhdGUgbW9kZSAx
MDA2NDQgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jc3Mt
aWdub3JlLXZpc2l0ZWQtbGlua3MtMi5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvaGlzdG9yeW1hbmFnZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2
NDQgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvaGlzdG9yeW1hbmFnZXIuaAoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAzYmIyOGI5Li5iODNlYTc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDYtMjIgIFJv
YmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkhLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNDMwMAorCisgICAgICAgIEFkZCBvcHRpb24gQ1NTSWdub3JlVmlzaXRlZExpbmtzCisg
ICAgICAgIFdoZW4gdXNlZCwgdGhpcyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZv
ciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBw
cmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5n
CisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBh
IHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKworICAgICAgICAqIHBsYXRmb3JtL3F0
L2Zhc3QvaGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9y
ZXNvdXJjZXMvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLTIuaHRtbDogQWRkZWQuCisKIDIwMDkt
MDYtMjQgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKERpc2FibGluZyBmYWlsaW5nIHRlc3QhKS4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3Mt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L2Nzcy1p
Z25vcmUtdmlzaXRlZC1saW5rcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uM2QzZDAxMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L2Zhc3QvaGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJW
aWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
IFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgwLDApIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlcklubGluZSB7QX0gYXQgKDAsMCkgc2l6
ZSAxOTl4MTggW2NvbG9yPSMwMDAwRkZdCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMTk5eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAx
OTk6ICJUaGlzIHRleHQgc2hvdWxkIGFwcGVhciBpbiBibHVlLiIKKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgxOTksMCkgc2l6ZSA0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDE5
OSwwKSB3aWR0aCA0OiAiLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zh
c3QvaGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MuaHRtbCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjI3MGEwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRl
ZC1saW5rcy5odG1sCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
VzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RS
L1JFQy1odG1sNDAvbG9vc2UuZHRkIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+Q1NTSWdub3Jl
VmlzaXRlZExpbmtzIC0gV2hlbiBTZXQsIFZpc2l0ZWQgTGlua3MgYXBwZWFyIHVudmlzaXRlZDwv
VElUTEU+Cis8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtU3R5bGUt
VHlwZSIgY29udGVudD0idGV4dC9jc3MiPgorPFNUWUxFIHR5cGU9InRleHQvY3NzIj4KK0Ege2Nv
bG9yOiBncmVlbjt9CitBOmxpbmsge2NvbG9yOiBibHVlO30KK0E6dmlzaXRlZCB7Y29sb3I6IHJl
ZDt9CitBOmFjdGl2ZSB7Y29sb3I6IGJsYWNrO30KKyNvbmUge2NvbG9yOiAjMDA2NjAwO30KKzwv
U1RZTEU+CisKKzwvSEVBRD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0Q1NTSWdub3JlVmlzaXRlZExpbmtzKHRydWUpOworICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorICAgIHZhciBlbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm15bGluayIpOworICAgIHZhciBldmVudCA9IGRvY3VtZW50
LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50Iik7CisgICAgZXZlbnQuaW5pdEV2ZW50KCJjbGljayIs
IHRydWUsIHRydWUpOworICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8ZGl2PjxhIGhyZWY9
Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMwMCI+QnVnemlsbGEg
UmVmZXJlbmNlLjwvYT48L2Rpdj4KKzxkaXY+VG8gcnVuIHRoZSB0ZXN0IDxhIGlkPSJteWxpbmsi
IGhyZWY9InJlc291cmNlcy9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtMi5odG1sIj5jbGljayB0
aGlzIGxpbmsuPC9hPi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jc3MtaWdub3JlLXZp
c2l0ZWQtbGlua3MtMi5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5
L3Jlc291cmNlcy9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtMi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMmU4Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2Nzcy1pZ25vcmUtdmlzaXRl
ZC1saW5rcy0yLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcv
VFIvUkVDLWh0bWw0MC9sb29zZS5kdGQiPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5DU1NJZ25v
cmVWaXNpdGVkTGlua3MgLSBXaGVuIFNldCwgVmlzaXRlZCBMaW5rcyBhcHBlYXIgdW52aXNpdGVk
PC9USVRMRT4KKzxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1TdHls
ZS1UeXBlIiBjb250ZW50PSJ0ZXh0L2NzcyI+Cis8U1RZTEUgdHlwZT0idGV4dC9jc3MiPgorQSB7
Y29sb3I6IGdyZWVuO30KK0E6bGluayB7Y29sb3I6IGJsdWU7fQorQTp2aXNpdGVkIHtjb2xvcjog
cmVkO30KK0E6YWN0aXZlIHtjb2xvcjogYmxhY2s7fQorI29uZSB7Y29sb3I6ICMwMDY2MDA7fQor
PC9TVFlMRT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9IRUFEPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7
Ij4KKzxkaXY+PGEgaWQ9Im15bGluayIgaHJlZj0iLi4vY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtz
Lmh0bWwiPlRoaXMgdGV4dCBzaG91bGQgYXBwZWFyIGluIGJsdWUuPC9hPi48L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwYjVlZTkxLi5kOGEzY2NmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDA5LTA2LTIy
ICBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDMwMAorCisgICAgICAgIEFkZCBvcHRpb24gQ1NTSWdub3JlVmlzaXRlZExpbmtz
CisgICAgICAgIFdoZW4gdXNlZCwgdGhpcyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNl
IGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhp
cyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dz
aW5nCisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZv
ciBhIHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKworICAgICAgICAqIGNzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgIChDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNo
ZWNrZXI6OlNlbGVjdG9yQ2hlY2tlcikKKyAgICAgICAgIChDU1NTdHlsZVNlbGVjdG9yOjpTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrUHNldWRvU3RhdGUpCisgICAgICAgICAoQ1NTU3R5bGVTZWxlY3Rv
cjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKQorICAgICAgICAqIGNzcy9DU1NT
dHlsZVNlbGVjdG9yLmg6CisgICAgICAgICogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcDoKKyAg
ICAgICAgKFNldHRpbmdzOjpzZXRDU1NJZ25vcmVWaXNpdGVkTGlua3MpCisgICAgICAgICogV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmg6CisgICAgICAgICogbWFudWFsLXRlc3RzL2Nzcy1pZ25vcmUt
dmlzaXRlZC1saW5rcy5odG1sOgorCiAyMDA5LTA2LTI0ICBKZXNzaWUgQmVybGluICA8amJlcmxp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAKaW5kZXggMmFhZGViOS4uNGU0MjI4MiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAKQEAgLTg2Niw3ICs4NjYsMTEgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JD
aGVja2VyOjpTZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHN0cmkKICAg
ICAsIG1fY29sbGVjdFJ1bGVzT25seShmYWxzZSkKICAgICAsIG1fcHNldWRvU3R5bGUoTk9QU0VV
RE8pCiAgICAgLCBtX2RvY3VtZW50SXNIVE1MKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKQor
ICAgICwgbV9pZ25vcmVWaXNpdGVkTGlua3MoZmFsc2UpCiB7CisgICAgU2V0dGluZ3MqIHNldHRp
bmdzID0gbV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKKyAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGlu
Z3MtPmNzc0lnbm9yZVZpc2l0ZWRMaW5rcygpKQorICAgICAgICBtX2lnbm9yZVZpc2l0ZWRMaW5r
cyA9IHRydWU7CiB9CiAKIFBzZXVkb1N0YXRlIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50LCBib29sIGNoZWNrVmlzaXRl
ZCkgY29uc3QKQEAgLTg3OCw2ICs4ODIsOSBAQCBQc2V1ZG9TdGF0ZSBDU1NTdHlsZVNlbGVjdG9y
OjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrUHNldWRvU3RhdGUoRWxlbWVudCogZWxlbWVudAogICAg
IGlmICghY2hlY2tWaXNpdGVkKQogICAgICAgICByZXR1cm4gUHNldWRvQW55TGluazsKIAorICAg
IGlmIChtX2lnbm9yZVZpc2l0ZWRMaW5rcykKKyAgICAgICAgcmV0dXJuIFBzZXVkb0xpbms7CisK
ICNpZiBQTEFURk9STShRVCkKICAgICBWZWN0b3I8VUNoYXIsIDUxMj4gdXJsOwogICAgIHZpc2l0
ZWRVUkwobV9kb2N1bWVudC0+YmFzZVVSTCgpLCAqYXR0ciwgdXJsKTsKQEAgLTIyNzgsNyArMjI4
NSw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNl
bGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9WaXNpdGVkOgogICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQ
c2V1ZG9Vbmtub3duIHx8IHBzZXVkb1N0YXRlID09IFBzZXVkb0FueUxpbmspCiAgICAgICAgICAg
ICAgICAgICAgIHBzZXVkb1N0YXRlID0gY2hlY2tQc2V1ZG9TdGF0ZShlKTsKLSAgICAgICAgICAg
ICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNldWRvVmlzaXRlZCkKKyAgICAgICAgICAgICAgICBp
ZiAoIW1faWdub3JlVmlzaXRlZExpbmtzICYmIHBzZXVkb1N0YXRlID09IFBzZXVkb1Zpc2l0ZWQp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRHJhZzogewpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5oCmluZGV4IDhkZDM2ZDcuLjNhZmYzMTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgK
QEAgLTIwMCw2ICsyMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBQc2V1ZG9JZCBtX3BzZXVk
b1N0eWxlOwogICAgICAgICAgICAgYm9vbCBtX2RvY3VtZW50SXNIVE1MOwogICAgICAgICAgICAg
bXV0YWJsZSBIYXNoU2V0PExpbmtIYXNoLCBMaW5rSGFzaEhhc2g+IG1fbGlua3NDaGVja2VkRm9y
VmlzaXRlZFN0YXRlOworICAgICAgICAgICAgYm9vbCBtX2lnbm9yZVZpc2l0ZWRMaW5rczsKICAg
ICAgICAgfTsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuY3BwIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCAzYTAwYjhlLi44MTgzMGRi
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAKQEAgLTkzLDYgKzkzLDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2Uq
IHBhZ2UpCiAgICAgLCBtX2VuZm9yY2VDU1NNSU1FVHlwZUluU3RyaWN0TW9kZSh0cnVlKQogICAg
ICwgbV91c2VzRW5jb2RpbmdEZXRlY3RvcihmYWxzZSkKICAgICAsIG1fYWxsb3dTY3JpcHRzVG9D
bG9zZVdpbmRvd3MoZmFsc2UpCisgICAgLCBtX2Nzc0lnbm9yZVZpc2l0ZWRMaW5rcyhmYWxzZSkK
ICAgICAsIG1fZWRpdGluZ0JlaGF2aW9yKAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgRWRp
dGluZ01hY0JlaGF2aW9yCkBAIC0yNDUsNiArMjQ2LDExIEBAIHZvaWQgU2V0dGluZ3M6OnNldFBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogICAgIG1f
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CiB9CiAKK3Zv
aWQgU2V0dGluZ3M6OnNldENTU0lnbm9yZVZpc2l0ZWRMaW5rcyhib29sIGNzc0lnbm9yZVZpc2l0
ZWRMaW5rcykKK3sKKyAgICBtX2Nzc0lnbm9yZVZpc2l0ZWRMaW5rcyA9IGNzc0lnbm9yZVZpc2l0
ZWRMaW5rczsKK30KKwogdm9pZCBTZXR0aW5nczo6c2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dz
QXV0b21hdGljYWxseShib29sIGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkp
CiB7CiAgICAgbV9qYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5ID0gamF2YVNj
cmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5oIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggOWQ0ZTQyMi4uMjcz
ZDVjYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmgKQEAgLTI0MSw2ICsyNDEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQgc2V0WFNTQXVkaXRvckVuYWJsZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgeHNz
QXVkaXRvckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3hzc0F1ZGl0b3JFbmFibGVkOyB9CiAK
KyAgICAgICAgdm9pZCBzZXRDU1NJZ25vcmVWaXNpdGVkTGlua3MoYm9vbCk7CisgICAgICAgIGJv
b2wgY3NzSWdub3JlVmlzaXRlZExpbmtzKCkgY29uc3QgeyByZXR1cm4gbV9jc3NJZ25vcmVWaXNp
dGVkTGlua3M7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAg
ICAgCkBAIC0zMDEsNyArMzA0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1bnNp
Z25lZCBtX2VkaXRpbmdCZWhhdmlvciA6IDE7CiAgICAgICAgIGJvb2wgbV9kb3dubG9hZGFibGVC
aW5hcnlGb250c0VuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1feHNzQXVkaXRvckVuYWJsZWQg
OiAxOwotCisgICAgICAgIGJvb2wgbV9jc3NJZ25vcmVWaXNpdGVkTGlua3MgOiAxOwogI2lmIFVT
RShTQUZBUklfVEhFTUUpCiAgICAgICAgIHN0YXRpYyBib29sIGdTaG91bGRQYWludE5hdGl2ZUNv
bnRyb2xzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5j
cHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKaW5kZXggMDJlZjRhMC4uMTkwNjFj
YyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCisrKyBiL1dlYktp
dC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApAQCAtMTUzLDYgKzE1MywxMCBAQCB2b2lkIFFXZWJT
ZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCkpOwogICAgICAgICBzZXR0aW5ncy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCh2YWx1ZSk7CiAKKyAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5n
czo6Q1NTSWdub3JlVmlzaXRlZExpbmtzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpDU1NJZ25vcmVW
aXNpdGVkTGlua3MpKTsKKyAgICAgICAgc2V0dGluZ3MtPnNldENTU0lnbm9yZVZpc2l0ZWRMaW5r
cyh2YWx1ZSk7CisgICAgICAgIAogICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdl
YlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRp
bmdzOjpKYXZhc2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKSk7CiAgICAgICAgIHNldHRpbmdzLT5z
ZXRET01QYXN0ZUFsbG93ZWQodmFsdWUpOwpAQCAtMzI5LDYgKzMzMyw5IEBAIFFXZWJTZXR0aW5n
cyAqUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpCiAgICAgXHZhbHVlIExvY2FsU3RvcmFn
ZURhdGFiYXNlRW5hYmxlZCBTcGVjaWZpZXMgd2hldGhlciBzdXBwb3J0IGZvciB0aGUgSFRNTCA1
CiAgICAgICAgIGxvY2FsIHN0b3JhZ2UgZmVhdHVyZSBpcyBlbmFibGVkIG9yIG5vdC4KICAgICBc
dmFsdWUgTG9jYWxDb250ZW50Q2FuQWNjZXNzUmVtb3RlVXJscyBTcGVjaWZpZXMgd2hldGhlciBs
b2NhbGx5IGxvYWRlZCBkb2N1bWVudHMgYXJlIGFsbG93ZWQgdG8gYWNjZXNzIHJlbW90ZSB1cmxz
LgorICAgIFx2YWx1ZSBDU1NJZ25vcmVWaXNpdGVkTGlua3MgQWx3YXlzIHJldHVybiBmYWxzZSBm
b3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMg
cHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5IGluc3BlY3RpbmcgeW91ciBicm93c2lu
ZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3Ig
YSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCiAqLwogCiAvKiEKZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5n
cy5oCmluZGV4IDdjYmNhMjUuLjY3NjExNDAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdl
YnNldHRpbmdzLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaApAQCAtNjQsNyAr
NjQsOCBAQCBwdWJsaWM6CiAgICAgICAgIE9mZmxpbmVTdG9yYWdlRGF0YWJhc2VFbmFibGVkLAog
ICAgICAgICBPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQsCiAgICAgICAgIExvY2Fs
U3RvcmFnZURhdGFiYXNlRW5hYmxlZCwKLSAgICAgICAgTG9jYWxDb250ZW50Q2FuQWNjZXNzUmVt
b3RlVXJscworICAgICAgICBMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzLAorICAgICAg
ICBDU1NJZ25vcmVWaXNpdGVkTGlua3MKICAgICB9OwogICAgIGVudW0gV2ViR3JhcGhpYyB7CiAg
ICAgICAgIE1pc3NpbmdJbWFnZUdyYXBoaWMsCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdl
TG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBjMmVkNDc1Li44YTg3YjM2IDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAwOS0wNi0yMiAgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4u
bmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKKworICAgICAgICBBZGQgb3B0aW9u
IENTU0lnbm9yZVZpc2l0ZWRMaW5rcworICAgICAgICBXaGVuIHVzZWQsIHRoaXMgb3B0aW9uIHdp
bGwgYWx3YXlzIHJldHVybiBmYWxzZSBmb3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAg
ICAgICAgc3R5bGVzaGVldHMuIFRoaXMgcHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5
IGluc3BlY3RpbmcgeW91ciBicm93c2luZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3Rpbmcg
dGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQu
CisKKyAgICAgICAgU2VlIFdlYkNvcmUvbWFudWFsLXRlc3RzL2Nzcy1pZ25vcmUtdmlzaXRlZC1s
aW5rcy5odG1sOgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChR
V2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSkKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6
CisKIDIwMDktMDYtMTkgIERhbmllbCBUZXNrZSA8cXQtaW5mb0Bub2tpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9D
aGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggMjhmYzhlNy4uZGIwMTJhNiAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDA5LTA2LTIyICBSb2JlcnQgSG9nYW4gPHJvYmVydEBy
b2JlcnRob2dhbi5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKKworICAgICAg
ICBBZGQgb3B0aW9uIENTU0lnbm9yZVZpc2l0ZWRMaW5rcworICAgICAgICBXaGVuIHVzZWQsIHRo
aXMgb3B0aW9uIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBmb3IgdGhlICd2aXNpdGVkJyBzdGF0
ZSBpbiBDU1MKKyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMgcHJldmVudHMgd2Vic2l0ZXMgZnJv
bSBpbmRpcmVjdGx5IGluc3BlY3RpbmcgeW91ciBicm93c2luZworICAgICAgICBoaXN0b3J5IGJ5
IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhU
TUwgZG9jdW1lbnQuCisKKyAgICAgICAgQWRkIGEgc3R1YiBoaXN0b3J5IG1hbmFnZXIgdG8gcGVy
Zm9ybSB1bml0IHRlc3QuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9oaXN0b3J5bWFu
YWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9oaXN0b3J5bWFuYWdl
ci5jcHA6IEFkZGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVl
LmNwcDogTW9kaWZpZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRy
ZWUuaDogTW9kaWZpZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmg6
IE1vZGlmaWVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L2pzb2JqZWN0cy5jcHA6IE1v
ZGlmaWVkLgorCiAyMDA5LTA2LTI0ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCA3OGQ1MzVhLi41OTEy
YTRjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVy
VHJlZS5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRy
ZWUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWUuaCIKICNp
bmNsdWRlICJqc29iamVjdHMuaCIKICNpbmNsdWRlICJ0ZXN0cGx1Z2luLmgiCisjaW5jbHVkZSAi
aGlzdG9yeW1hbmFnZXIuaCIKIAogI2luY2x1ZGUgPFFEaXI+CiAjaW5jbHVkZSA8UUZpbGU+CkBA
IC00NSw2ICs0Niw3IEBACiAjaW5jbHVkZSA8cXdlYnBhZ2UuaD4KICNpbmNsdWRlIDxxd2ViZnJh
bWUuaD4KICNpbmNsdWRlIDxxd2Vidmlldy5oPgorI2luY2x1ZGUgPHF3ZWJoaXN0b3J5Lmg+CiAj
aW5jbHVkZSA8cXdlYnNldHRpbmdzLmg+CiAKICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTE0OSw2
ICsxNTEsNyBAQCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUoKQogCiAgICAgbV9ldmVu
dFNlbmRlciA9IG5ldyBFdmVudFNlbmRlcihtX3BhZ2UpOwogICAgIG1fdGV4dElucHV0Q29udHJv
bGxlciA9IG5ldyBUZXh0SW5wdXRDb250cm9sbGVyKG1fcGFnZSk7CisgICAgaGlzdG9yeU1hbmFn
ZXIgPSBuZXcgSGlzdG9yeU1hbmFnZXIobV9wYWdlKTsKIAogICAgIFFPYmplY3Q6OmNvbm5lY3Qo
dGhpcywgU0lHTkFMKHF1aXQoKSksIHFBcHAsIFNMT1QocXVpdCgpKSwgUXQ6OlF1ZXVlZENvbm5l
Y3Rpb24pOwogICAgIHF0X2RydF9ydW4odHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvRHVtcFJlbmRlclRyZWUuaAppbmRleCAxNzBlYTZkLi44OTUyNDUyIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5oCisrKyBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmgKQEAgLTQyLDYg
KzQyLDcgQEAgUVRfRU5EX05BTUVTUEFDRQogY2xhc3MgUVdlYlBhZ2U7CiBjbGFzcyBRV2ViRnJh
bWU7CiAKK2NsYXNzIEhpc3RvcnlNYW5hZ2VyOwogY2xhc3MgTGF5b3V0VGVzdENvbnRyb2xsZXI7
CiBjbGFzcyBFdmVudFNlbmRlcjsKIGNsYXNzIFRleHRJbnB1dENvbnRyb2xsZXI7CkBAIC04OCw2
ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIgKm1fY29udHJvbGxl
cjsKIAogICAgIFFXZWJQYWdlICptX3BhZ2U7CisgICAgSGlzdG9yeU1hbmFnZXIgKmhpc3RvcnlN
YW5hZ2VyOwogCiAgICAgRXZlbnRTZW5kZXIgKm1fZXZlbnRTZW5kZXI7CiAgICAgVGV4dElucHV0
Q29udHJvbGxlciAqbV90ZXh0SW5wdXRDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvCmluZGV4IDk0MTc5NDQuLjI0NGE2NGUg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVl
LnBybworKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5w
cm8KQEAgLTEwLDggKzEwLDggQEAgREVTVERJUiA9IC4uLy4uLy4uL2JpbgogUVQgPSBjb3JlIGd1
aQogbWFjeDogUVQgKz0geG1sIG5ldHdvcmsKIAotSEVBREVSUyA9IFdvcmtRdWV1ZS5oIFdvcmtR
dWV1ZUl0ZW0uaCBEdW1wUmVuZGVyVHJlZS5oIGpzb2JqZWN0cy5oIHRlc3RwbHVnaW4uaAotU09V
UkNFUyA9IFdvcmtRdWV1ZS5jcHAgRHVtcFJlbmRlclRyZWUuY3BwIG1haW4uY3BwIGpzb2JqZWN0
cy5jcHAgdGVzdHBsdWdpbi5jcHAKK0hFQURFUlMgPSBXb3JrUXVldWUuaCBXb3JrUXVldWVJdGVt
LmggRHVtcFJlbmRlclRyZWUuaCBqc29iamVjdHMuaCB0ZXN0cGx1Z2luLmggaGlzdG9yeW1hbmFn
ZXIuaAorU09VUkNFUyA9IFdvcmtRdWV1ZS5jcHAgRHVtcFJlbmRlclRyZWUuY3BwIG1haW4uY3Bw
IGpzb2JqZWN0cy5jcHAgdGVzdHBsdWdpbi5jcHAgaGlzdG9yeW1hbmFnZXIuY3BwCiAKIHVuaXg6
IW1hYyB7CiAgICAgUU1BS0VfUlBBVEhESVIgPSAkJE9VVFBVVF9ESVIvbGliICQkUU1BS0VfUlBB
VEhESVIKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2hpc3Rvcnlt
YW5hZ2VyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2hpc3RvcnltYW5hZ2Vy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2FkZmU0Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvaGlzdG9yeW1hbmFnZXIu
Y3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgUm9iZXJ0IEhv
Z2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJoaXN0b3J5bWFuYWdlci5oIgor
I2luY2x1ZGUgPHF3ZWJoaXN0b3J5aW50ZXJmYWNlLmg+CisKKworSGlzdG9yeU1hbmFnZXI6Okhp
c3RvcnlNYW5hZ2VyKFFPYmplY3QgKnBhcmVudCkKKyAgICA6IFFXZWJIaXN0b3J5SW50ZXJmYWNl
KHBhcmVudCkKK3sKKyAgICBRV2ViSGlzdG9yeUludGVyZmFjZTo6c2V0RGVmYXVsdEludGVyZmFj
ZSh0aGlzKTsKK30KKworSGlzdG9yeU1hbmFnZXI6On5IaXN0b3J5TWFuYWdlcigpCit7Cit9CisK
K2Jvb2wgSGlzdG9yeU1hbmFnZXI6Omhpc3RvcnlDb250YWlucyhjb25zdCBRU3RyaW5nICZ1cmwp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGlzdG9yeUhhc2guY29udGFpbnModXJsKTsKK30KKwor
dm9pZCBIaXN0b3J5TWFuYWdlcjo6YWRkSGlzdG9yeUVudHJ5KGNvbnN0IFFTdHJpbmcgJnVybCkK
K3sKKyAgICBtX2hpc3RvcnlIYXNoLmluc2VydCh1cmwsIChtX2hpc3RvcnlIYXNoLmNvdW50KCkg
KyAxKSk7Cit9CisKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2hp
c3RvcnltYW5hZ2VyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9oaXN0b3J5bWFu
YWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkZjVkZTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9oaXN0b3J5bWFuYWdl
ci5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgUm9iZXJ0IEhv
Z2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBISVNUT1JZTUFOQUdFUl9ICisj
ZGVmaW5lIEhJU1RPUllNQU5BR0VSX0gKKworI2luY2x1ZGUgPHFoYXNoLmg+CisjaW5jbHVkZSA8
cXdlYmhpc3RvcnlpbnRlcmZhY2UuaD4KKworY2xhc3MgSGlzdG9yeU1hbmFnZXIgOiBwdWJsaWMg
UVdlYkhpc3RvcnlJbnRlcmZhY2UKK3sKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIEhpc3Rv
cnlNYW5hZ2VyKFFPYmplY3QgKnBhcmVudCA9IDApOworICAgIH5IaXN0b3J5TWFuYWdlcigpOwor
CisgICAgYm9vbCBoaXN0b3J5Q29udGFpbnMoY29uc3QgUVN0cmluZyAmdXJsKSBjb25zdDsKKyAg
ICB2b2lkIGFkZEhpc3RvcnlFbnRyeShjb25zdCBRU3RyaW5nICZ1cmwpOworCitwcml2YXRlOgor
ICAgIG11dGFibGUgUUhhc2g8UVN0cmluZywgaW50PiBtX2hpc3RvcnlIYXNoOworfTsKKworI2Vu
ZGlmIC8vIEhJU1RPUllNQU5BR0VSX0gKKwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvanNvYmplY3RzLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L2pzb2JqZWN0cy5jcHAKaW5kZXggMDkwODZmOC4uYjFiMDVhYSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmNwcAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9qc29iamVjdHMuY3BwCkBAIC0yNjAsNiArMjYwLDExIEBAIFFTdHJp
bmcgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRlY29kZUhvc3ROYW1lKGNvbnN0IFFTdHJpbmcgJmhv
c3QpCiAgICAgcmV0dXJuIGRlY29kZWQ7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldENTU0lnbm9yZVZpc2l0ZWRMaW5rcyhib29sIGVuYWJsZSkKK3sKKyAgICBtX3RvcExvYWRp
bmdGcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpD
U1NJZ25vcmVWaXNpdGVkTGlua3MsIGVuYWJsZSk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlKQogewogICAg
IG1fdG9wTG9hZGluZ0ZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2Vi
U2V0dGluZ3M6OkRldmVsb3BlckV4dHJhc0VuYWJsZWQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmggYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9qc29iamVjdHMuaAppbmRleCA4NWZiMzY0Li4zNmI4Y2JkIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9qc29iamVjdHMuaAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9qc29iamVjdHMuaApAQCAtODksNiArODksNyBAQCBw
dWJsaWMgc2xvdHM6CiAgICAgdm9pZCBkdW1wU2VsZWN0aW9uUmVjdCgpIGNvbnN0IHt9CiAgICAg
dm9pZCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZSk7CiAgICAgdm9p
ZCBzZXRGaXhlZENvbnRlbnRzU2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHZvaWQg
c2V0Q1NTSWdub3JlVmlzaXRlZExpbmtzKGJvb2wgZW5hYmxlKTsKIAogICAgIGJvb2wgcGF1c2VB
bmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoY29uc3QgUVN0cmluZyAmYW5pbWF0aW9uTmFt
ZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1lbnRJZCk7CiAgICAgYm9vbCBwYXVz
ZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoY29uc3QgUVN0cmluZyAmcHJvcGVydHlO
YW1lLCBkb3VibGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxlbWVudElkKTsKLS0gCjEuNi4wLjQK
Cg==
</data>
<flag name="review"
          id="16382"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31865</attachid>
            <date>2009-06-25 11:02:30 -0700</date>
            <delta_ts>2009-06-30 15:20:15 -0700</delta_ts>
            <desc>New class DRTHistory replacing HistoryManager</desc>
            <filename>0001-Add-option-CSSIgnoreVisitedLinks.patch</filename>
            <type>text/plain</type>
            <size>23579</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSA0YWQ2ZWRkYjhkMGMzNmYwOWQ4NDc2MWRhMzhlNmNiNzA3ZjhiNzc5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBtd2VuZ2UgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CkRhdGU6
IFR1ZSwgMjMgSnVuIDIwMDkgMjM6MTg6NTEgKzAxMDAKU3ViamVjdDogW1BBVENIXSBBZGQgb3B0
aW9uIENTU0lnbm9yZVZpc2l0ZWRMaW5rcwogV2hlbiB1c2VkLCB0aGlzIG9wdGlvbiB3aWxsIGFs
d2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCiBzdHlsZXNo
ZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5
b3VyIGJyb3dzaW5nCiBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBm
b3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE1ICsrKysrKwogLi4uL2hpc3RvcnkvY3Nz
LWlnbm9yZS12aXNpdGVkLWxpbmtzLWV4cGVjdGVkLnR4dCAgfCAgIDExICsrKysKIC4uLi9xdC9m
YXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLmh0bWwgIHwgICAzNCArKysrKysr
KysrKysrCiAuLi4vcmVzb3VyY2VzL2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy0yLmh0bWwgICAg
ICB8ICAgMjUgKysrKysrKysrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjEgKysrKysrKysKIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwICAgICAgICAgICAgICAgICAgIHwgICAgOSArKystCiBXZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmggICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsrCiBXZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKystCiBXZWJL
aXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKysr
CiBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oICAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDMgKy0KIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxNyArKysrKysKIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAyMCArKysrKysrKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
RHVtcFJlbmRlclRyZWUuY3BwICAgfCAgICAzICsKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0R1bXBSZW5kZXJUcmVlLmggICAgIHwgICAgMiArCiBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8gICB8ICAgIDQgKy0KIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L2RydGhpc3RvcnkuY3BwICAgICAgIHwgICA1MiArKysrKysrKysrKysrKysr
KysrKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvZHJ0aGlzdG9yeS5oICAgICAgICAg
fCAgIDUyICsrKysrKysrKysrKysrKysrKysrCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9qc29iamVjdHMuY3BwICAgICAgICB8ICAgIDUgKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L2pzb2JqZWN0cy5oICAgICAgICAgIHwgICAgMSArCiAyMCBmaWxlcyBjaGFuZ2VkLCAy
ODggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtz
LWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL3F0
L2Zhc3QvaGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MuaHRtbAogY3JlYXRlIG1vZGUg
MTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3Nz
LWlnbm9yZS12aXNpdGVkLWxpbmtzLTIuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L2RydGhpc3RvcnkuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvZHJ0aGlzdG9yeS5oCgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNiYjI4
YjkuLmI4M2VhNzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wNi0yMiAgUm9iZXJ0IEhv
Z2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSEuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0
MzAwCisKKyAgICAgICAgQWRkIG9wdGlvbiBDU1NJZ25vcmVWaXNpdGVkTGlua3MKKyAgICAgICAg
V2hlbiB1c2VkLCB0aGlzIG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAn
dmlzaXRlZCcgc3RhdGUgaW4gQ1NTCisgICAgICAgIHN0eWxlc2hlZXRzLiBUaGlzIHByZXZlbnRz
IHdlYnNpdGVzIGZyb20gaW5kaXJlY3RseSBpbnNwZWN0aW5nIHlvdXIgYnJvd3NpbmcKKyAgICAg
ICAgaGlzdG9yeSBieSByZXF1ZXN0aW5nIHRoZSAndmlzaXRlZCcgc3RhdGUgZm9yIGEgc2V0IG9m
IFVSTHMgaW4gYSBIVE1MIGRvY3VtZW50LgorCisgICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9o
aXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L3Jlc291cmNl
cy9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtMi5odG1sOiBBZGRlZC4KKwogMjAwOS0wNi0yNCAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoRGlzYWJsaW5nIGZhaWxpbmcgdGVzdCEpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12
aXNpdGVkLWxpbmtzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4zZDNkMDEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
ZmFzdC9oaXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVy
QmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9
IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkg
c2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVySW5saW5lIHtBfSBhdCAoMCwwKSBzaXplIDE5OXgx
OCBbY29sb3I9IzAwMDBGRl0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAxOTl4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE5OTogIlRo
aXMgdGV4dCBzaG91bGQgYXBwZWFyIGluIGJsdWUuIgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDE5OSwwKSBzaXplIDR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTk5LDApIHdp
ZHRoIDQ6ICIuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9oaXN0
b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvZmFzdC9oaXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMjcwYTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtz
Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RU
RCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0
bWw0MC9sb29zZS5kdGQiPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5DU1NJZ25vcmVWaXNpdGVk
TGlua3MgLSBXaGVuIFNldCwgVmlzaXRlZCBMaW5rcyBhcHBlYXIgdW52aXNpdGVkPC9USVRMRT4K
KzxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PWlzby04ODU5LTEiPgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1TdHlsZS1UeXBlIiBj
b250ZW50PSJ0ZXh0L2NzcyI+Cis8U1RZTEUgdHlwZT0idGV4dC9jc3MiPgorQSB7Y29sb3I6IGdy
ZWVuO30KK0E6bGluayB7Y29sb3I6IGJsdWU7fQorQTp2aXNpdGVkIHtjb2xvcjogcmVkO30KK0E6
YWN0aXZlIHtjb2xvcjogYmxhY2s7fQorI29uZSB7Y29sb3I6ICMwMDY2MDA7fQorPC9TVFlMRT4K
KworPC9IRUFEPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRDU1NJZ25vcmVWaXNpdGVkTGlua3ModHJ1ZSk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibXlsaW5rIik7CisgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRl
RXZlbnQoIk1vdXNlRXZlbnQiKTsKKyAgICBldmVudC5pbml0RXZlbnQoImNsaWNrIiwgdHJ1ZSwg
dHJ1ZSk7CisgICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKzxkaXY+PGEgaHJlZj0iaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzAwIj5CdWd6aWxsYSBSZWZlcmVu
Y2UuPC9hPjwvZGl2PgorPGRpdj5UbyBydW4gdGhlIHRlc3QgPGEgaWQ9Im15bGluayIgaHJlZj0i
cmVzb3VyY2VzL2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy0yLmh0bWwiPmNsaWNrIHRoaXMgbGlu
ay48L2E+LjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2Nzcy1pZ25vcmUtdmlzaXRlZC1s
aW5rcy0yLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvcmVzb3Vy
Y2VzL2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOGEyZThjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtz
LTIuaHRtbApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8v
RFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMt
aHRtbDQwL2xvb3NlLmR0ZCI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPkNTU0lnbm9yZVZpc2l0
ZWRMaW5rcyAtIFdoZW4gU2V0LCBWaXNpdGVkIExpbmtzIGFwcGVhciB1bnZpc2l0ZWQ8L1RJVExF
PgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9aXNvLTg4NTktMSI+Cis8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVN0eWxlLVR5cGUi
IGNvbnRlbnQ9InRleHQvY3NzIj4KKzxTVFlMRSB0eXBlPSJ0ZXh0L2NzcyI+CitBIHtjb2xvcjog
Z3JlZW47fQorQTpsaW5rIHtjb2xvcjogYmx1ZTt9CitBOnZpc2l0ZWQge2NvbG9yOiByZWQ7fQor
QTphY3RpdmUge2NvbG9yOiBibGFjazt9Cisjb25lIHtjb2xvcjogIzAwNjYwMDt9Cis8L1NUWUxF
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworfQorPC9zY3JpcHQ+Cis8L0hFQUQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPGRp
dj48YSBpZD0ibXlsaW5rIiBocmVmPSIuLi9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MuaHRtbCI+
VGhpcyB0ZXh0IHNob3VsZCBhcHBlYXIgaW4gYmx1ZS48L2E+LjwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgorCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDBiNWVlOTEuLmQ4YTNjY2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDktMDYtMjIgIFJvYmVy
dCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI0MzAwCisKKyAgICAgICAgQWRkIG9wdGlvbiBDU1NJZ25vcmVWaXNpdGVkTGlua3MKKyAgICAg
ICAgV2hlbiB1c2VkLCB0aGlzIG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRo
ZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCisgICAgICAgIHN0eWxlc2hlZXRzLiBUaGlzIHByZXZl
bnRzIHdlYnNpdGVzIGZyb20gaW5kaXJlY3RseSBpbnNwZWN0aW5nIHlvdXIgYnJvd3NpbmcKKyAg
ICAgICAgaGlzdG9yeSBieSByZXF1ZXN0aW5nIHRoZSAndmlzaXRlZCcgc3RhdGUgZm9yIGEgc2V0
IG9mIFVSTHMgaW4gYSBIVE1MIGRvY3VtZW50LgorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwOgorICAgICAgICAgKENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6
U2VsZWN0b3JDaGVja2VyKQorICAgICAgICAgKENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tQc2V1ZG9TdGF0ZSkKKyAgICAgICAgIChDU1NTdHlsZVNlbGVjdG9yOjpTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpCisgICAgICAgICogY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuaDoKKyAgICAgICAgKiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAo
U2V0dGluZ3M6OnNldENTU0lnbm9yZVZpc2l0ZWRMaW5rcykKKyAgICAgICAgKiBXZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKiBtYW51YWwtdGVzdHMvY3NzLWlnbm9yZS12aXNpdGVk
LWxpbmtzLmh0bWw6CisKIDIwMDktMDYtMjQgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcAppbmRleCAyYWFkZWI5Li40ZTQyMjgyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cApAQCAtODY2LDcgKzg2NiwxMSBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OlNlbGVjdG9yQ2hlY2tlcihEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgc3RyaQogICAgICwgbV9j
b2xsZWN0UnVsZXNPbmx5KGZhbHNlKQogICAgICwgbV9wc2V1ZG9TdHlsZShOT1BTRVVETykKICAg
ICAsIG1fZG9jdW1lbnRJc0hUTUwoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCisgICAgLCBt
X2lnbm9yZVZpc2l0ZWRMaW5rcyhmYWxzZSkKIHsKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBt
X2RvY3VtZW50LT5zZXR0aW5ncygpOworICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+Y3Nz
SWdub3JlVmlzaXRlZExpbmtzKCkpCisgICAgICAgIG1faWdub3JlVmlzaXRlZExpbmtzID0gdHJ1
ZTsKIH0KIAogUHNldWRvU3RhdGUgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpj
aGVja1BzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgY2hlY2tWaXNpdGVkKSBjb25z
dApAQCAtODc4LDYgKzg4Miw5IEBAIFBzZXVkb1N0YXRlIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50CiAgICAgaWYgKCFj
aGVja1Zpc2l0ZWQpCiAgICAgICAgIHJldHVybiBQc2V1ZG9BbnlMaW5rOwogCisgICAgaWYgKG1f
aWdub3JlVmlzaXRlZExpbmtzKQorICAgICAgICByZXR1cm4gUHNldWRvTGluazsKKwogI2lmIFBM
QVRGT1JNKFFUKQogICAgIFZlY3RvcjxVQ2hhciwgNTEyPiB1cmw7CiAgICAgdmlzaXRlZFVSTCht
X2RvY3VtZW50LT5iYXNlVVJMKCksICphdHRyLCB1cmwpOwpAQCAtMjI3OCw3ICsyMjg1LDcgQEAg
Ym9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3Io
Q1NTU2VsZWN0b3IqIHNlbCwgRWxlbWUKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBz
ZXVkb1Zpc2l0ZWQ6CiAgICAgICAgICAgICAgICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb1Vu
a25vd24gfHwgcHNldWRvU3RhdGUgPT0gUHNldWRvQW55TGluaykKICAgICAgICAgICAgICAgICAg
ICAgcHNldWRvU3RhdGUgPSBjaGVja1BzZXVkb1N0YXRlKGUpOwotICAgICAgICAgICAgICAgIGlm
IChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9WaXNpdGVkKQorICAgICAgICAgICAgICAgIGlmICghbV9p
Z25vcmVWaXNpdGVkTGlua3MgJiYgcHNldWRvU3RhdGUgPT0gUHNldWRvVmlzaXRlZCkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9EcmFnOiB7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmggYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmgKaW5kZXggOGRkMzZkNy4uM2FmZjMxMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtMjAw
LDYgKzIwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFBzZXVkb0lkIG1fcHNldWRvU3R5bGU7
CiAgICAgICAgICAgICBib29sIG1fZG9jdW1lbnRJc0hUTUw7CiAgICAgICAgICAgICBtdXRhYmxl
IEhhc2hTZXQ8TGlua0hhc2gsIExpbmtIYXNoSGFzaD4gbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVk
U3RhdGU7CisgICAgICAgICAgICBib29sIG1faWdub3JlVmlzaXRlZExpbmtzOwogICAgICAgICB9
OwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAg
Yi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDNhMDBiOGUuLjgxODMwZGIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcApAQCAtOTMsNiArOTMsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkK
ICAgICAsIG1fZW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKHRydWUpCiAgICAgLCBtX3Vz
ZXNFbmNvZGluZ0RldGVjdG9yKGZhbHNlKQogICAgICwgbV9hbGxvd1NjcmlwdHNUb0Nsb3NlV2lu
ZG93cyhmYWxzZSkKKyAgICAsIG1fY3NzSWdub3JlVmlzaXRlZExpbmtzKGZhbHNlKQogICAgICwg
bV9lZGl0aW5nQmVoYXZpb3IoCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBFZGl0aW5nTWFj
QmVoYXZpb3IKQEAgLTI0NSw2ICsyNDYsMTEgQEAgdm9pZCBTZXR0aW5nczo6c2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAgICAgbV9wcml2YXRl
QnJvd3NpbmdFbmFibGVkID0gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKIH0KIAordm9pZCBTZXR0
aW5nczo6c2V0Q1NTSWdub3JlVmlzaXRlZExpbmtzKGJvb2wgY3NzSWdub3JlVmlzaXRlZExpbmtz
KQoreworICAgIG1fY3NzSWdub3JlVmlzaXRlZExpbmtzID0gY3NzSWdub3JlVmlzaXRlZExpbmtz
OworfQorCiB2b2lkIFNldHRpbmdzOjpzZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0
aWNhbGx5KGJvb2wgamF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSkKIHsKICAg
ICBtX2phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgPSBqYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmggYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCA5ZDRlNDIyLi4yNzNkNWNiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaApAQCAtMjQxLDYgKzI0MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sKTsKICAgICAgICAgYm9vbCB4c3NBdWRpdG9y
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1feHNzQXVkaXRvckVuYWJsZWQ7IH0KIAorICAgICAg
ICB2b2lkIHNldENTU0lnbm9yZVZpc2l0ZWRMaW5rcyhib29sKTsKKyAgICAgICAgYm9vbCBjc3NJ
Z25vcmVWaXNpdGVkTGlua3MoKSBjb25zdCB7IHJldHVybiBtX2Nzc0lnbm9yZVZpc2l0ZWRMaW5r
czsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICAKQEAg
LTMwMSw3ICszMDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVuc2lnbmVkIG1f
ZWRpdGluZ0JlaGF2aW9yIDogMTsKICAgICAgICAgYm9vbCBtX2Rvd25sb2FkYWJsZUJpbmFyeUZv
bnRzRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV94c3NBdWRpdG9yRW5hYmxlZCA6IDE7Ci0K
KyAgICAgICAgYm9vbCBtX2Nzc0lnbm9yZVZpc2l0ZWRMaW5rcyA6IDE7CiAjaWYgVVNFKFNBRkFS
SV9USEVNRSkKICAgICAgICAgc3RhdGljIGJvb2wgZ1Nob3VsZFBhaW50TmF0aXZlQ29udHJvbHM7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcCBiL1dl
YktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAppbmRleCAwMmVmNGEwLi4xOTA2MWNjIDEwMDY0
NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIvV2ViS2l0L3F0L0Fw
aS9xd2Vic2V0dGluZ3MuY3BwCkBAIC0xNTMsNiArMTUzLDEwIEBAIHZvaWQgUVdlYlNldHRpbmdz
UHJpdmF0ZTo6YXBwbHkoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHZhbHVl
KTsKIAorICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpDU1NJ
Z25vcmVWaXNpdGVkTGlua3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU0lnbm9yZVZpc2l0ZWRM
aW5rcykpOworICAgICAgICBzZXR0aW5ncy0+c2V0Q1NTSWdub3JlVmlzaXRlZExpbmtzKHZhbHVl
KTsKKyAgICAgICAgCiAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGlu
Z3M6OkphdmFzY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6Okph
dmFzY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQpKTsKICAgICAgICAgc2V0dGluZ3MtPnNldERPTVBh
c3RlQWxsb3dlZCh2YWx1ZSk7CkBAIC0zMjksNiArMzMzLDkgQEAgUVdlYlNldHRpbmdzICpRV2Vi
U2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKCkKICAgICBcdmFsdWUgTG9jYWxTdG9yYWdlRGF0YWJh
c2VFbmFibGVkIFNwZWNpZmllcyB3aGV0aGVyIHN1cHBvcnQgZm9yIHRoZSBIVE1MIDUKICAgICAg
ICAgbG9jYWwgc3RvcmFnZSBmZWF0dXJlIGlzIGVuYWJsZWQgb3Igbm90LgogICAgIFx2YWx1ZSBM
b2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzIFNwZWNpZmllcyB3aGV0aGVyIGxvY2FsbHkg
bG9hZGVkIGRvY3VtZW50cyBhcmUgYWxsb3dlZCB0byBhY2Nlc3MgcmVtb3RlIHVybHMuCisgICAg
XHZhbHVlIENTU0lnbm9yZVZpc2l0ZWRMaW5rcyBBbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUg
J3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50
cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAg
ICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBv
ZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KICovCiAKIC8qIQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3F0L0FwaS9xd2Vic2V0dGluZ3MuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKaW5k
ZXggN2NiY2EyNS4uNjc2MTE0MCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGlu
Z3MuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oCkBAIC02NCw3ICs2NCw4IEBA
IHB1YmxpYzoKICAgICAgICAgT2ZmbGluZVN0b3JhZ2VEYXRhYmFzZUVuYWJsZWQsCiAgICAgICAg
IE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCwKICAgICAgICAgTG9jYWxTdG9yYWdl
RGF0YWJhc2VFbmFibGVkLAotICAgICAgICBMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxz
CisgICAgICAgIExvY2FsQ29udGVudENhbkFjY2Vzc1JlbW90ZVVybHMsCisgICAgICAgIENTU0ln
bm9yZVZpc2l0ZWRMaW5rcwogICAgIH07CiAgICAgZW51bSBXZWJHcmFwaGljIHsKICAgICAgICAg
TWlzc2luZ0ltYWdlR3JhcGhpYywKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGMyZWQ0NzUuLjhhODdiMzYgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDA5LTA2LTIyICBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMwMAorCisgICAgICAgIEFkZCBvcHRpb24gQ1NTSWdu
b3JlVmlzaXRlZExpbmtzCisgICAgICAgIFdoZW4gdXNlZCwgdGhpcyBvcHRpb24gd2lsbCBhbHdh
eXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBz
dHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVj
dGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zp
c2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKworICAg
ICAgICBTZWUgV2ViQ29yZS9tYW51YWwtdGVzdHMvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLmh0
bWw6CisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0
aW5nc1ByaXZhdGU6OmFwcGx5KQorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKwogMjAw
OS0wNi0xOSAgRGFuaWVsIFRlc2tlIDxxdC1pbmZvQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCAyOGZjOGU3Li4yZDFmMjBjIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDktMDYtMjIgIFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhv
Z2FuLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkhLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMwMAorCisgICAgICAgIEFkZCBv
cHRpb24gQ1NTSWdub3JlVmlzaXRlZExpbmtzCisgICAgICAgIFdoZW4gdXNlZCwgdGhpcyBvcHRp
b24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENT
UworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGly
ZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVz
dGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1
bWVudC4KKworICAgICAgICBBZGQgYSBzdHViIGhpc3RvcnkgbWFuYWdlciB0byBwZXJmb3JtIHVu
aXQgdGVzdC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L2RydGhpc3RvcnkuaDogQWRk
ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvZHJ0aGlzdG9yeS5jcHA6IEFkZGVkLgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmNwcDogTW9kaWZpZWQu
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUuaDogTW9kaWZpZWQu
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmg6IE1vZGlmaWVkLgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L2pzb2JqZWN0cy5jcHA6IE1vZGlmaWVkLgorCiAyMDA5
LTA2LTI0ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBNYWNpZWogU3RhY2hvd2lhay4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCA3OGQ1MzVhLi42NTAxM2YyIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbmNsdWRlICJkcnRoaXN0b3J5LmgiCiAj
aW5jbHVkZSAiRHVtcFJlbmRlclRyZWUuaCIKICNpbmNsdWRlICJqc29iamVjdHMuaCIKICNpbmNs
dWRlICJ0ZXN0cGx1Z2luLmgiCkBAIC00NSw2ICs0Niw3IEBACiAjaW5jbHVkZSA8cXdlYnBhZ2Uu
aD4KICNpbmNsdWRlIDxxd2ViZnJhbWUuaD4KICNpbmNsdWRlIDxxd2Vidmlldy5oPgorI2luY2x1
ZGUgPHF3ZWJoaXN0b3J5Lmg+CiAjaW5jbHVkZSA8cXdlYnNldHRpbmdzLmg+CiAKICNpbmNsdWRl
IDx1bmlzdGQuaD4KQEAgLTE0OSw2ICsxNTEsNyBAQCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRl
clRyZWUoKQogCiAgICAgbV9ldmVudFNlbmRlciA9IG5ldyBFdmVudFNlbmRlcihtX3BhZ2UpOwog
ICAgIG1fdGV4dElucHV0Q29udHJvbGxlciA9IG5ldyBUZXh0SW5wdXRDb250cm9sbGVyKG1fcGFn
ZSk7CisgICAgaGlzdG9yeU1hbmFnZXIgPSBuZXcgRFJUSGlzdG9yeShtX3BhZ2UpOwogCiAgICAg
UU9iamVjdDo6Y29ubmVjdCh0aGlzLCBTSUdOQUwocXVpdCgpKSwgcUFwcCwgU0xPVChxdWl0KCkp
LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CiAgICAgcXRfZHJ0X3J1bih0cnVlKTsKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmggYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5oCmluZGV4IDE3MGVhNmQu
LjZhMDA0YjQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBS
ZW5kZXJUcmVlLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRl
clRyZWUuaApAQCAtNDIsNiArNDIsNyBAQCBRVF9FTkRfTkFNRVNQQUNFCiBjbGFzcyBRV2ViUGFn
ZTsKIGNsYXNzIFFXZWJGcmFtZTsKIAorY2xhc3MgRFJUSGlzdG9yeTsKIGNsYXNzIExheW91dFRl
c3RDb250cm9sbGVyOwogY2xhc3MgRXZlbnRTZW5kZXI7CiBjbGFzcyBUZXh0SW5wdXRDb250cm9s
bGVyOwpAQCAtODgsNiArODksNyBAQCBwcml2YXRlOgogICAgIExheW91dFRlc3RDb250cm9sbGVy
ICptX2NvbnRyb2xsZXI7CiAKICAgICBRV2ViUGFnZSAqbV9wYWdlOworICAgIERSVEhpc3Rvcnkg
Kmhpc3RvcnlNYW5hZ2VyOwogCiAgICAgRXZlbnRTZW5kZXIgKm1fZXZlbnRTZW5kZXI7CiAgICAg
VGV4dElucHV0Q29udHJvbGxlciAqbV90ZXh0SW5wdXRDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvCmluZGV4IDk0MTc5NDQu
LjUzM2ZlZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBS
ZW5kZXJUcmVlLnBybworKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVu
ZGVyVHJlZS5wcm8KQEAgLTEwLDggKzEwLDggQEAgREVTVERJUiA9IC4uLy4uLy4uL2JpbgogUVQg
PSBjb3JlIGd1aQogbWFjeDogUVQgKz0geG1sIG5ldHdvcmsKIAotSEVBREVSUyA9IFdvcmtRdWV1
ZS5oIFdvcmtRdWV1ZUl0ZW0uaCBEdW1wUmVuZGVyVHJlZS5oIGpzb2JqZWN0cy5oIHRlc3RwbHVn
aW4uaAotU09VUkNFUyA9IFdvcmtRdWV1ZS5jcHAgRHVtcFJlbmRlclRyZWUuY3BwIG1haW4uY3Bw
IGpzb2JqZWN0cy5jcHAgdGVzdHBsdWdpbi5jcHAKK0hFQURFUlMgPSBXb3JrUXVldWUuaCBXb3Jr
UXVldWVJdGVtLmggRHVtcFJlbmRlclRyZWUuaCBqc29iamVjdHMuaCB0ZXN0cGx1Z2luLmggZHJ0
aGlzdG9yeS5oCitTT1VSQ0VTID0gV29ya1F1ZXVlLmNwcCBEdW1wUmVuZGVyVHJlZS5jcHAgbWFp
bi5jcHAganNvYmplY3RzLmNwcCB0ZXN0cGx1Z2luLmNwcCBkcnRoaXN0b3J5LmNwcAogCiB1bml4
OiFtYWMgewogICAgIFFNQUtFX1JQQVRIRElSID0gJCRPVVRQVVRfRElSL2xpYiAkJFFNQUtFX1JQ
QVRIRElSCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9kcnRoaXN0
b3J5LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2RydGhpc3RvcnkuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNDU2MzAKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9kcnRoaXN0b3J5LmNwcApAQCAtMCww
ICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFJvYmVydCBIb2dhbiA8cm9iZXJ0
QHJvYmVydGhvZ2FuLm5ldD4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiZHJ0aGlzdG9yeS5oIgorI2luY2x1ZGUgPHF3ZWJo
aXN0b3J5aW50ZXJmYWNlLmg+CisKKworRFJUSGlzdG9yeTo6RFJUSGlzdG9yeShRT2JqZWN0ICpw
YXJlbnQpCisgICAgOiBRV2ViSGlzdG9yeUludGVyZmFjZShwYXJlbnQpCit7CisgICAgUVdlYkhp
c3RvcnlJbnRlcmZhY2U6OnNldERlZmF1bHRJbnRlcmZhY2UodGhpcyk7Cit9CisKK0RSVEhpc3Rv
cnk6On5EUlRIaXN0b3J5KCkKK3sKK30KKworYm9vbCBEUlRIaXN0b3J5OjpoaXN0b3J5Q29udGFp
bnMoY29uc3QgUVN0cmluZyAmdXJsKSBjb25zdAoreworICAgIHJldHVybiBtX2RydEhpc3Rvcnku
Y29udGFpbnModXJsKTsKK30KKwordm9pZCBEUlRIaXN0b3J5OjphZGRIaXN0b3J5RW50cnkoY29u
c3QgUVN0cmluZyAmdXJsKQoreworICAgIG1fZHJ0SGlzdG9yeS5pbnNlcnQodXJsLCAobV9kcnRI
aXN0b3J5LmNvdW50KCkgKyAxKSk7Cit9CisKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L2RydGhpc3RvcnkuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L2RydGhpc3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTMwZGVh
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvZHJ0aGlz
dG9yeS5oCkBAIC0wLDAgKzEsNTIgQEAKKworLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBSb2Jl
cnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIERSVEhJU1RPUllfSAor
I2RlZmluZSBEUlRISVNUT1JZX0gKKworI2luY2x1ZGUgPHFoYXNoLmg+CisjaW5jbHVkZSA8cXdl
Ymhpc3RvcnlpbnRlcmZhY2UuaD4KKworY2xhc3MgRFJUSGlzdG9yeSA6IHB1YmxpYyBRV2ViSGlz
dG9yeUludGVyZmFjZQoreworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgRFJUSGlzdG9yeShR
T2JqZWN0ICpwYXJlbnQgPSAwKTsKKyAgICB+RFJUSGlzdG9yeSgpOworCisgICAgYm9vbCBoaXN0
b3J5Q29udGFpbnMoY29uc3QgUVN0cmluZyAmdXJsKSBjb25zdDsKKyAgICB2b2lkIGFkZEhpc3Rv
cnlFbnRyeShjb25zdCBRU3RyaW5nICZ1cmwpOworCitwcml2YXRlOgorICAgIG11dGFibGUgUUhh
c2g8UVN0cmluZywgaW50PiBtX2RydEhpc3Rvcnk7Cit9OworCisjZW5kaWYgLy8gRFJUSElTVE9S
WV9ICisKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2pzb2JqZWN0
cy5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9qc29iamVjdHMuY3BwCmluZGV4
IDA5MDg2ZjguLmIxYjA1YWEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L2pzb2JqZWN0cy5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvanNv
YmplY3RzLmNwcApAQCAtMjYwLDYgKzI2MCwxMSBAQCBRU3RyaW5nIExheW91dFRlc3RDb250cm9s
bGVyOjpkZWNvZGVIb3N0TmFtZShjb25zdCBRU3RyaW5nICZob3N0KQogICAgIHJldHVybiBkZWNv
ZGVkOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRDU1NJZ25vcmVWaXNpdGVk
TGlua3MoYm9vbCBlbmFibGUpCit7CisgICAgbV90b3BMb2FkaW5nRnJhbWUtPnBhZ2UoKS0+c2V0
dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6Q1NTSWdub3JlVmlzaXRlZExpbmtz
LCBlbmFibGUpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0
UHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZSkKIHsKICAgICBtX3RvcExvYWRpbmdGcmFtZS0+
cGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9wZXJF
eHRyYXNFbmFibGVkLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L2pzb2JqZWN0cy5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvanNvYmpl
Y3RzLmgKaW5kZXggODVmYjM2NC4uMzZiOGNiZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvanNvYmplY3RzLmgKQEAgLTg5LDYgKzg5LDcgQEAgcHVibGljIHNsb3RzOgogICAgIHZv
aWQgZHVtcFNlbGVjdGlvblJlY3QoKSBjb25zdCB7fQogICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBy
b2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0Rml4ZWRDb250ZW50c1Np
emUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIHNldENTU0lnbm9yZVZpc2l0ZWRM
aW5rcyhib29sIGVuYWJsZSk7CiAKICAgICBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVt
ZW50V2l0aElkKGNvbnN0IFFTdHJpbmcgJmFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lLCBjb25z
dCBRU3RyaW5nICZlbGVtZW50SWQpOwogICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25F
bGVtZW50V2l0aElkKGNvbnN0IFFTdHJpbmcgJnByb3BlcnR5TmFtZSwgZG91YmxlIHRpbWUsIGNv
bnN0IFFTdHJpbmcgJmVsZW1lbnRJZCk7Ci0tIAoxLjYuMC40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>31867</attachid>
            <date>2009-06-25 11:09:18 -0700</date>
            <delta_ts>2009-12-04 14:07:22 -0800</delta_ts>
            <desc>diff</desc>
            <filename>historymanager.diff</filename>
            <type>text/plain</type>
            <size>23320</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">LS0tIC4uL3Rvcm9yYS9zcmMvaGlzdG9yeS9oaXN0b3J5bWFuYWdlci5jcHAJMjAwOS0wNS0xNyAx
ODo1NDo1MS4wMDAwMDAwMDAgKzAxMDAKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L2RydGhpc3RvcnkuY3BwCTIwMDktMDYtMjUgMTg6NTM6MzIuMDAwMDAwMDAwICswMTAwCkBAIC0x
LDQyNCArMSw1MiBAQAogLyoKLSAqIENvcHlyaWdodCAyMDA4IEJlbmphbWluIEMuIE1leWVyIDxi
ZW5AbWV5ZXJob21lLm5ldD4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBSb2JlcnQgSG9nYW4gPHJv
YmVydEByb2JlcnRob2dhbi5uZXQ+CiAgKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvcgotICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgogICoKLSAqIFRoaXMgcHJvZ3Jh
bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0
aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qKgotKiogQ29weXJpZ2h0IChDKSAyMDA3LTIw
MDggVHJvbGx0ZWNoIEFTQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoqCi0qKiBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgZGVtb25zdHJhdGlvbiBhcHBsaWNhdGlvbnMgb2YgdGhlIFF0IFRvb2xr
aXQuCi0qKgotKiogVGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIEdlbmVyYWwgUHVibGljCi0qKiBMaWNlbnNlIHZlcnNpb25zIDIuMCBvciAzLjAgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0qKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcg
aW4gdGhlIGZpbGVzIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCi0qKiBpbmNsdWRlZCBp
biB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gIEFsdGVybmF0aXZlbHkgeW91IG1heSAoYXQK
LSoqIHlvdXIgb3B0aW9uKSB1c2UgYW55IGxhdGVyIHZlcnNpb24gb2YgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYwotKiogTGljZW5zZSBpZiBzdWNoIGxpY2Vuc2UgaGFzIGJlZW4gcHVibGljbHkgYXBw
cm92ZWQgYnkgVHJvbGx0ZWNoIEFTQQotKiogKG9yIGl0cyBzdWNjZXNzb3JzLCBpZiBhbnkpIGFu
ZCB0aGUgS0RFIEZyZWUgUXQgRm91bmRhdGlvbi4gSW4KLSoqIGFkZGl0aW9uLCBhcyBhIHNwZWNp
YWwgZXhjZXB0aW9uLCBUcm9sbHRlY2ggZ2l2ZXMgeW91IGNlcnRhaW4KLSoqIGFkZGl0aW9uYWwg
cmlnaHRzLiBUaGVzZSByaWdodHMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgVHJvbGx0ZWNoIEdQTAot
KiogRXhjZXB0aW9uIHZlcnNpb24gMS4yLCB3aGljaCBjYW4gYmUgZm91bmQgYXQKLSoqIGh0dHA6
Ly93d3cudHJvbGx0ZWNoLmNvbS9wcm9kdWN0cy9xdC9ncGxleGNlcHRpb24vIGFuZCBpbiB0aGUg
ZmlsZQotKiogR1BMX0VYQ0VQVElPTi50eHQgaW4gdGhpcyBwYWNrYWdlLgotKioKLSoqIFBsZWFz
ZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0byBlbnN1cmUgR05VIEdlbmVyYWwK
LSoqIFB1YmxpYyBMaWNlbnNpbmcgcmVxdWlyZW1lbnRzIHdpbGwgYmUgbWV0OgotKiogaHR0cDov
L3Ryb2xsdGVjaC5jb20vcHJvZHVjdHMvcXQvbGljZW5zZXMvbGljZW5zaW5nL29wZW5zb3VyY2Uv
LiBJZgotKiogeW91IGFyZSB1bnN1cmUgd2hpY2ggbGljZW5zZSBpcyBhcHByb3ByaWF0ZSBmb3Ig
eW91ciB1c2UsIHBsZWFzZQotKiogcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246Ci0q
KiBodHRwOi8vdHJvbGx0ZWNoLmNvbS9wcm9kdWN0cy9xdC9saWNlbnNlcy9saWNlbnNpbmcvbGlj
ZW5zaW5nb3ZlcnZpZXcKLSoqIG9yIGNvbnRhY3QgdGhlIHNhbGVzIGRlcGFydG1lbnQgYXQgc2Fs
ZXNAdHJvbGx0ZWNoLmNvbS4KLSoqCi0qKiBJbiBhZGRpdGlvbiwgYXMgYSBzcGVjaWFsIGV4Y2Vw
dGlvbiwgVHJvbGx0ZWNoLCBhcyB0aGUgc29sZQotKiogY29weXJpZ2h0IGhvbGRlciBmb3IgUXQg
RGVzaWduZXIsIGdyYW50cyB1c2VycyBvZiB0aGUgUXQvRWNsaXBzZQotKiogSW50ZWdyYXRpb24g
cGx1Zy1pbiB0aGUgcmlnaHQgZm9yIHRoZSBRdC9FY2xpcHNlIEludGVncmF0aW9uIHRvCi0qKiBs
aW5rIHRvIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkgUXQgRGVzaWduZXIgYW5kIGl0cyByZWxh
dGVkCi0qKiBsaWJyYXJpZXMuCi0qKgotKiogVGhpcyBmaWxlIGlzIHByb3ZpZGVkICJBUyBJUyIg
d2l0aCBOTyBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLSoqIElOQ0xVRElORyBUSEUgV0FSUkFOVElF
UyBPRiBERVNJR04sIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSoqIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiBUcm9sbHRlY2ggcmVzZXJ2ZXMgYWxsIHJpZ2h0cyBub3QgZXhwcmVzc2x5
Ci0qKiBncmFudGVkIGhlcmVpbi4KLSoqCi0qKiBUaGlzIGZpbGUgaXMgcHJvdmlkZWQgQVMgSVMg
d2l0aCBOTyBXQVJSQU5UWSBPRiBBTlkgS0lORCwgSU5DTFVESU5HIFRIRQotKiogV0FSUkFOVFkg
T0YgREVTSUdOLCBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLgotKioKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpbmNsdWRlICJoaXN0b3J5bWFu
YWdlci5oIgotCi0jaW5jbHVkZSAiYXV0b3NhdmVyLmgiCi0jaW5jbHVkZSAiaGlzdG9yeS5oIgot
Ci0jaW5jbHVkZSA8cWJ1ZmZlci5oPgotI2luY2x1ZGUgPHFkZXNrdG9wc2VydmljZXMuaD4KLSNp
bmNsdWRlIDxxZGlyLmg+Ci0jaW5jbHVkZSA8cWZpbGUuaD4KLSNpbmNsdWRlIDxxc2V0dGluZ3Mu
aD4KLSNpbmNsdWRlIDxxdGVtcG9yYXJ5ZmlsZS5oPgorI2luY2x1ZGUgImRydGhpc3RvcnkuaCIK
ICNpbmNsdWRlIDxxd2ViaGlzdG9yeWludGVyZmFjZS5oPgotI2luY2x1ZGUgPHF3ZWJzZXR0aW5n
cy5oPgogCi0jaW5jbHVkZSA8cWRlYnVnLmg+Ci0KLVFTdHJpbmcgSGlzdG9yeUVudHJ5Ojp1c2Vy
VGl0bGUoKSBjb25zdAotewotICAgIC8vIHdoZW4gdGhlcmUgaXMgbm8gdGl0bGUgdHJ5IHRvIGdl
bmVyYXRlIG9uZSBmcm9tIHRoZSB1cmwKLSAgICBpZiAodGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIFFTdHJpbmcgcGFnZSA9IFFGaWxlSW5mbyhRVXJsKHVybCkucGF0aCgpKS5maWxlTmFtZSgp
OwotICAgICAgICBpZiAoIXBhZ2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHBhZ2U7
Ci0gICAgICAgIHJldHVybiB1cmw7Ci0gICAgfQotICAgIHJldHVybiB0aXRsZTsKLX0KIAotc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGludCBISVNUT1JZX1ZFUlNJT04gPSAyMzsKLQotSGlzdG9yeU1h
bmFnZXI6Okhpc3RvcnlNYW5hZ2VyKFFPYmplY3QgKnBhcmVudCkKK0RSVEhpc3Rvcnk6OkRSVEhp
c3RvcnkoUU9iamVjdCAqcGFyZW50KQogICAgIDogUVdlYkhpc3RvcnlJbnRlcmZhY2UocGFyZW50
KQotICAgICwgbV9zYXZlVGltZXIobmV3IEF1dG9TYXZlcih0aGlzKSkKLSAgICAsIG1fZGF5c1Rv
RXhwaXJlKDMwKQotICAgICwgbV9oaXN0b3J5TW9kZWwoMCkKLSAgICAsIG1faGlzdG9yeUZpbHRl
ck1vZGVsKDApCi0gICAgLCBtX2hpc3RvcnlUcmVlTW9kZWwoMCkKIHsKLSAgICBtX2V4cGlyZWRU
aW1lci5zZXRTaW5nbGVTaG90KHRydWUpOwotICAgIGNvbm5lY3QoJm1fZXhwaXJlZFRpbWVyLCBT
SUdOQUwodGltZW91dCgpKSwKLSAgICAgICAgICAgIHRoaXMsIFNMT1QoY2hlY2tGb3JFeHBpcmVk
KCkpKTsKLSAgICBjb25uZWN0KHRoaXMsIFNJR05BTChlbnRyeUFkZGVkKGNvbnN0IEhpc3RvcnlF
bnRyeSAmKSksCi0gICAgICAgICAgICBtX3NhdmVUaW1lciwgU0xPVChjaGFuZ2VPY2N1cnJlZCgp
KSk7Ci0gICAgY29ubmVjdCh0aGlzLCBTSUdOQUwoZW50cnlSZW1vdmVkKGNvbnN0IEhpc3RvcnlF
bnRyeSAmKSksCi0gICAgICAgICAgICBtX3NhdmVUaW1lciwgU0xPVChjaGFuZ2VPY2N1cnJlZCgp
KSk7Ci0gICAgbG9hZCgpOwotCi0gICAgbV9oaXN0b3J5TW9kZWwgPSBuZXcgSGlzdG9yeU1vZGVs
KHRoaXMsIHRoaXMpOwotICAgIG1faGlzdG9yeUZpbHRlck1vZGVsID0gbmV3IEhpc3RvcnlGaWx0
ZXJNb2RlbChtX2hpc3RvcnlNb2RlbCwgdGhpcyk7Ci0gICAgbV9oaXN0b3J5VHJlZU1vZGVsID0g
bmV3IEhpc3RvcnlUcmVlTW9kZWwobV9oaXN0b3J5RmlsdGVyTW9kZWwsIHRoaXMpOwotCi0gICAg
Ly8gUVdlYkhpc3RvcnlJbnRlcmZhY2Ugd2lsbCBkZWxldGUgdGhlIGhpc3RvcnkgbWFuYWdlcgog
ICAgIFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpzZXREZWZhdWx0SW50ZXJmYWNlKHRoaXMpOwogfQog
Ci1IaXN0b3J5TWFuYWdlcjo6fkhpc3RvcnlNYW5hZ2VyKCkKK0RSVEhpc3Rvcnk6On5EUlRIaXN0
b3J5KCkKIHsKLSAgICAvLyByZW1vdmUgaGlzdG9yeSBpdGVtcyBvbiBhcHBsaWNhdGlvbiBleGl0
Ci0gICAgaWYgKG1fZGF5c1RvRXhwaXJlID09IC0yKQotICAgICAgICBjbGVhcigpOwotICAgIG1f
c2F2ZVRpbWVyLT5zYXZlSWZOZWNjZXNzYXJ5KCk7CiB9CiAKLVFMaXN0PEhpc3RvcnlFbnRyeT4g
SGlzdG9yeU1hbmFnZXI6Omhpc3RvcnkoKSBjb25zdAorYm9vbCBEUlRIaXN0b3J5OjpoaXN0b3J5
Q29udGFpbnMoY29uc3QgUVN0cmluZyAmdXJsKSBjb25zdAogewotICAgIHJldHVybiBtX2hpc3Rv
cnk7Ci19Ci0KLWJvb2wgSGlzdG9yeU1hbmFnZXI6Omhpc3RvcnlDb250YWlucyhjb25zdCBRU3Ry
aW5nICZ1cmwpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faGlzdG9yeUZpbHRlck1vZGVsLT5oaXN0
b3J5Q29udGFpbnModXJsKTsKLX0KLQotdm9pZCBIaXN0b3J5TWFuYWdlcjo6YWRkSGlzdG9yeUVu
dHJ5KGNvbnN0IFFTdHJpbmcgJnVybCkKLXsKLSAgICBRVXJsIGNsZWFuVXJsKHVybCk7Ci0gICAg
Y2xlYW5Vcmwuc2V0UGFzc3dvcmQoUVN0cmluZygpKTsKLSAgICBjbGVhblVybC5zZXRIb3N0KGNs
ZWFuVXJsLmhvc3QoKS50b0xvd2VyKCkpOwotICAgIEhpc3RvcnlFbnRyeSBpdGVtKGF0b21pY1N0
cmluZyhjbGVhblVybC50b1N0cmluZygpKSwgUURhdGVUaW1lOjpjdXJyZW50RGF0ZVRpbWUoKSk7
Ci0gICAgYWRkSGlzdG9yeUVudHJ5KGl0ZW0pOwotfQotCi12b2lkIEhpc3RvcnlNYW5hZ2VyOjpz
ZXRIaXN0b3J5KGNvbnN0IFFMaXN0PEhpc3RvcnlFbnRyeT4gJmhpc3RvcnksIGJvb2wgbG9hZGVk
QW5kU29ydGVkKQotewotICAgIG1faGlzdG9yeSA9IGhpc3Rvcnk7Ci0KLSAgICAvLyB2ZXJpZnkg
dGhhdCBpdCBpcyBzb3J0ZWQgYnkgZGF0ZQotICAgIGlmICghbG9hZGVkQW5kU29ydGVkKQotICAg
ICAgICBxU29ydChtX2hpc3RvcnkuYmVnaW4oKSwgbV9oaXN0b3J5LmVuZCgpKTsKLQotICAgIGNo
ZWNrRm9yRXhwaXJlZCgpOwotCi0gICAgaWYgKGxvYWRlZEFuZFNvcnRlZCkgewotICAgICAgICBt
X2xhc3RTYXZlZFVybCA9IG1faGlzdG9yeS52YWx1ZSgwKS51cmw7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgbV9sYXN0U2F2ZWRVcmwuY2xlYXIoKTsKLSAgICAgICAgbV9zYXZlVGltZXItPmNoYW5n
ZU9jY3VycmVkKCk7Ci0gICAgfQotICAgIGVtaXQgaGlzdG9yeVJlc2V0KCk7CisgICAgcmV0dXJu
IG1fZHJ0SGlzdG9yeS5jb250YWlucyh1cmwpOwogfQogCi1IaXN0b3J5TW9kZWwgKkhpc3RvcnlN
YW5hZ2VyOjpoaXN0b3J5TW9kZWwoKSBjb25zdAordm9pZCBEUlRIaXN0b3J5OjphZGRIaXN0b3J5
RW50cnkoY29uc3QgUVN0cmluZyAmdXJsKQogewotICAgIHJldHVybiBtX2hpc3RvcnlNb2RlbDsK
KyAgICBtX2RydEhpc3RvcnkuaW5zZXJ0KHVybCwgKG1fZHJ0SGlzdG9yeS5jb3VudCgpICsgMSkp
OwogfQogCi1IaXN0b3J5RmlsdGVyTW9kZWwgKkhpc3RvcnlNYW5hZ2VyOjpoaXN0b3J5RmlsdGVy
TW9kZWwoKSBjb25zdAotewotICAgIHJldHVybiBtX2hpc3RvcnlGaWx0ZXJNb2RlbDsKLX0KLQot
SGlzdG9yeVRyZWVNb2RlbCAqSGlzdG9yeU1hbmFnZXI6Omhpc3RvcnlUcmVlTW9kZWwoKSBjb25z
dAotewotICAgIHJldHVybiBtX2hpc3RvcnlUcmVlTW9kZWw7Ci19Ci0KLXZvaWQgSGlzdG9yeU1h
bmFnZXI6OmNoZWNrRm9yRXhwaXJlZCgpCi17Ci0gICAgaWYgKG1fZGF5c1RvRXhwaXJlIDwgMCB8
fCBtX2hpc3RvcnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBRRGF0ZVRpbWUg
bm93ID0gUURhdGVUaW1lOjpjdXJyZW50RGF0ZVRpbWUoKTsKLSAgICBpbnQgbmV4dFRpbWVvdXQg
PSAwOwotCi0gICAgd2hpbGUgKCFtX2hpc3RvcnkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFFEYXRl
VGltZSBjaGVja0ZvckV4cGlyZWQgPSBtX2hpc3RvcnkubGFzdCgpLmRhdGVUaW1lOwotICAgICAg
ICBjaGVja0ZvckV4cGlyZWQuc2V0RGF0ZShjaGVja0ZvckV4cGlyZWQuZGF0ZSgpLmFkZERheXMo
bV9kYXlzVG9FeHBpcmUpKTsKLSAgICAgICAgaWYgKG5vdy5kYXlzVG8oY2hlY2tGb3JFeHBpcmVk
KSA+IDcpIHsKLSAgICAgICAgICAgIC8vIGNoZWNrIGF0IG1vc3QgaW4gYSB3ZWVrIHRvIHByZXZl
bnQgaW50IG92ZXJmbG93cyBvbiB0aGUgdGltZXIKLSAgICAgICAgICAgIG5leHRUaW1lb3V0ID0g
NyAqIDg2NDAwOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbmV4dFRpbWVvdXQgPSBu
b3cuc2Vjc1RvKGNoZWNrRm9yRXhwaXJlZCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG5leHRU
aW1lb3V0ID4gMCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBIaXN0b3J5RW50cnkgaXRl
bSA9IG1faGlzdG9yeS50YWtlTGFzdCgpOwotICAgICAgICAvLyByZW1vdmUgZnJvbSBzYXZlZCBm
aWxlIGFsc28KLSAgICAgICAgbV9sYXN0U2F2ZWRVcmwuY2xlYXIoKTsKLSAgICAgICAgZW1pdCBl
bnRyeVJlbW92ZWQoaXRlbSk7Ci0gICAgfQotCi0gICAgaWYgKG5leHRUaW1lb3V0ID4gMCkKLSAg
ICAgICAgbV9leHBpcmVkVGltZXIuc3RhcnQobmV4dFRpbWVvdXQgKiAxMDAwKTsKLX0KLQotdm9p
ZCBIaXN0b3J5TWFuYWdlcjo6YWRkSGlzdG9yeUVudHJ5KGNvbnN0IEhpc3RvcnlFbnRyeSAmaXRl
bSkKLXsKLSAgICBRV2ViU2V0dGluZ3MgKmdsb2JhbFNldHRpbmdzID0gUVdlYlNldHRpbmdzOjpn
bG9iYWxTZXR0aW5ncygpOwotICAgIGlmIChnbG9iYWxTZXR0aW5ncy0+dGVzdEF0dHJpYnV0ZShR
V2ViU2V0dGluZ3M6OlByaXZhdGVCcm93c2luZ0VuYWJsZWQpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2hpc3RvcnkucHJlcGVuZChpdGVtKTsKLSAgICBlbWl0IGVudHJ5QWRkZWQoaXRlbSk7
Ci0gICAgaWYgKG1faGlzdG9yeS5jb3VudCgpID09IDEpCi0gICAgICAgIGNoZWNrRm9yRXhwaXJl
ZCgpOwotfQotCi12b2lkIEhpc3RvcnlNYW5hZ2VyOjp1cGRhdGVIaXN0b3J5RW50cnkoY29uc3Qg
UVVybCAmdXJsLCBjb25zdCBRU3RyaW5nICZ0aXRsZSkKLXsKLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IG1faGlzdG9yeS5jb3VudCgpOyArK2kpIHsKLSAgICAgICAgaWYgKHVybCA9PSBtX2hpc3Rv
cnkuYXQoaSkudXJsKSB7Ci0gICAgICAgICAgICBtX2hpc3RvcnlbaV0udGl0bGUgPSBhdG9taWNT
dHJpbmcodGl0bGUpOwotICAgICAgICAgICAgbV9zYXZlVGltZXItPmNoYW5nZU9jY3VycmVkKCk7
Ci0gICAgICAgICAgICBpZiAobV9sYXN0U2F2ZWRVcmwuaXNFbXB0eSgpKQotICAgICAgICAgICAg
ICAgIG1fbGFzdFNhdmVkVXJsID0gbV9oaXN0b3J5LmF0KGkpLnVybDsKLSAgICAgICAgICAgIGVt
aXQgZW50cnlVcGRhdGVkKGkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLXZvaWQgSGlzdG9yeU1hbmFnZXI6OnJlbW92ZUhpc3RvcnlFbnRyeShjb25zdCBIaXN0
b3J5RW50cnkgJml0ZW0pCi17Ci0gICAgbV9sYXN0U2F2ZWRVcmwuY2xlYXIoKTsKLSAgICBtX2hp
c3RvcnkucmVtb3ZlT25lKGl0ZW0pOwotICAgIGVtaXQgZW50cnlSZW1vdmVkKGl0ZW0pOwotfQot
Ci12b2lkIEhpc3RvcnlNYW5hZ2VyOjpyZW1vdmVIaXN0b3J5RW50cnkoY29uc3QgUVVybCAmdXJs
LCBjb25zdCBRU3RyaW5nICZ0aXRsZSkKLXsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faGlz
dG9yeS5jb3VudCgpOyArK2kpIHsKLSAgICAgICAgaWYgKHVybCA9PSBtX2hpc3RvcnkuYXQoaSku
dXJsCi0gICAgICAgICAgICAmJiAodGl0bGUuaXNFbXB0eSgpIHx8IHRpdGxlID09IG1faGlzdG9y
eS5hdChpKS50aXRsZSkpIHsKLSAgICAgICAgICAgIHJlbW92ZUhpc3RvcnlFbnRyeShtX2hpc3Rv
cnkuYXQoaSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWlu
dCBIaXN0b3J5TWFuYWdlcjo6ZGF5c1RvRXhwaXJlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9k
YXlzVG9FeHBpcmU7Ci19Ci0KLXZvaWQgSGlzdG9yeU1hbmFnZXI6OnNldERheXNUb0V4cGlyZShp
bnQgbGltaXQpCi17Ci0gICAgaWYgKG1fZGF5c1RvRXhwaXJlID09IGxpbWl0KQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9kYXlzVG9FeHBpcmUgPSBsaW1pdDsKLSAgICBjaGVja0ZvckV4cGlyZWQo
KTsKLSAgICBtX3NhdmVUaW1lci0+Y2hhbmdlT2NjdXJyZWQoKTsKLX0KLQotdm9pZCBIaXN0b3J5
TWFuYWdlcjo6Y2xlYXIoKQotewotICAgIG1faGlzdG9yeS5jbGVhcigpOwotICAgIG1fYXRvbWlj
U3RyaW5nSGFzaC5jbGVhcigpOwotICAgIG1fbGFzdFNhdmVkVXJsLmNsZWFyKCk7Ci0gICAgbV9z
YXZlVGltZXItPmNoYW5nZU9jY3VycmVkKCk7Ci0gICAgbV9zYXZlVGltZXItPnNhdmVJZk5lY2Nl
c3NhcnkoKTsKLSAgICBlbWl0IGhpc3RvcnlSZXNldCgpOwotICAgIGVtaXQgaGlzdG9yeUNsZWFy
ZWQoKTsKLX0KLQotdm9pZCBIaXN0b3J5TWFuYWdlcjo6bG9hZFNldHRpbmdzKCkKLXsKLSAgICAv
LyBsb2FkIHNldHRpbmdzCi0gICAgUVNldHRpbmdzIHNldHRpbmdzOwotICAgIHNldHRpbmdzLmJl
Z2luR3JvdXAoUUxhdGluMVN0cmluZygiaGlzdG9yeSIpKTsKLSAgICBtX2RheXNUb0V4cGlyZSA9
IHNldHRpbmdzLnZhbHVlKFFMYXRpbjFTdHJpbmcoImhpc3RvcnlMaW1pdCIpLCAzMCkudG9JbnQo
KTsKLX0KLQotdm9pZCBIaXN0b3J5TWFuYWdlcjo6bG9hZCgpCi17Ci0gICAgbG9hZFNldHRpbmdz
KCk7Ci0KLSAgICBRRmlsZSBoaXN0b3J5RmlsZShRRGVza3RvcFNlcnZpY2VzOjpzdG9yYWdlTG9j
YXRpb24oUURlc2t0b3BTZXJ2aWNlczo6RGF0YUxvY2F0aW9uKQotICAgICAgICAgICAgICAgICAg
ICAgICsgUUxhdGluMVN0cmluZygiL2hpc3RvcnkiKSk7Ci0gICAgaWYgKCFoaXN0b3J5RmlsZS5l
eGlzdHMoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghaGlzdG9yeUZpbGUub3BlbihRRmls
ZTo6UmVhZE9ubHkpKSB7Ci0gICAgICAgIHFXYXJuaW5nKCkgPDwgIlVuYWJsZSB0byBvcGVuIGhp
c3RvcnkgZmlsZSIgPDwgaGlzdG9yeUZpbGUuZmlsZU5hbWUoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIFFMaXN0PEhpc3RvcnlFbnRyeT4gbGlzdDsKLSAgICBRRGF0YVN0cmVhbSBp
bigmaGlzdG9yeUZpbGUpOwotICAgIC8vIERvdWJsZSBjaGVjayB0aGF0IHRoZSBoaXN0b3J5IGZp
bGUgaXMgc29ydGVkIGFzIGl0IGlzIHJlYWQgaW4KLSAgICBib29sIG5lZWRUb1NvcnQgPSBmYWxz
ZTsKLSAgICBIaXN0b3J5RW50cnkgbGFzdEluc2VydGVkSXRlbTsKLSAgICBRQnl0ZUFycmF5IGRh
dGE7Ci0gICAgUURhdGFTdHJlYW0gc3RyZWFtOwotICAgIFFCdWZmZXIgYnVmZmVyOwotICAgIFFT
dHJpbmcgc3RyaW5nOwotICAgIHN0cmVhbS5zZXREZXZpY2UoJmJ1ZmZlcik7Ci0gICAgd2hpbGUg
KCFoaXN0b3J5RmlsZS5hdEVuZCgpKSB7Ci0gICAgICAgIGluID4+IGRhdGE7Ci0gICAgICAgIGJ1
ZmZlci5jbG9zZSgpOwotICAgICAgICBidWZmZXIuc2V0QnVmZmVyKCZkYXRhKTsKLSAgICAgICAg
YnVmZmVyLm9wZW4oUUlPRGV2aWNlOjpSZWFkT25seSk7Ci0gICAgICAgIHF1aW50MzIgdmVyOwot
ICAgICAgICBzdHJlYW0gPj4gdmVyOwotICAgICAgICBpZiAodmVyICE9IEhJU1RPUllfVkVSU0lP
TikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBIaXN0b3J5RW50cnkgaXRlbTsKLSAg
ICAgICAgc3RyZWFtID4+IHN0cmluZzsKLSAgICAgICAgaXRlbS51cmwgPSBhdG9taWNTdHJpbmco
c3RyaW5nKTsKLSAgICAgICAgc3RyZWFtID4+IGl0ZW0uZGF0ZVRpbWU7Ci0gICAgICAgIHN0cmVh
bSA+PiBzdHJpbmc7Ci0gICAgICAgIGl0ZW0udGl0bGUgPSBhdG9taWNTdHJpbmcoc3RyaW5nKTsK
LQotICAgICAgICBpZiAoIWl0ZW0uZGF0ZVRpbWUuaXNWYWxpZCgpKQotICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgaWYgKGl0ZW0gPT0gbGFzdEluc2VydGVkSXRlbSkgewotICAgICAg
ICAgICAgaWYgKGxhc3RJbnNlcnRlZEl0ZW0udGl0bGUuaXNFbXB0eSgpICYmICFsaXN0LmlzRW1w
dHkoKSkKLSAgICAgICAgICAgICAgICBsaXN0WzBdLnRpdGxlID0gaXRlbS50aXRsZTsKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFuZWVkVG9Tb3J0ICYm
ICFsaXN0LmlzRW1wdHkoKSAmJiBsYXN0SW5zZXJ0ZWRJdGVtIDwgaXRlbSkKLSAgICAgICAgICAg
IG5lZWRUb1NvcnQgPSB0cnVlOwotCi0gICAgICAgIGxpc3QucHJlcGVuZChpdGVtKTsKLSAgICAg
ICAgbGFzdEluc2VydGVkSXRlbSA9IGl0ZW07Ci0gICAgfQotICAgIGlmIChuZWVkVG9Tb3J0KQot
ICAgICAgICBxU29ydChsaXN0LmJlZ2luKCksIGxpc3QuZW5kKCkpOwotCi0gICAgc2V0SGlzdG9y
eShsaXN0LCB0cnVlKTsKLQotICAgIC8vIElmIHdlIGhhZCB0byBzb3J0IHJlLXdyaXRlIHRoZSB3
aG9sZSBoaXN0b3J5IHNvcnRlZAotICAgIGlmIChuZWVkVG9Tb3J0KSB7Ci0gICAgICAgIG1fbGFz
dFNhdmVkVXJsLmNsZWFyKCk7Ci0gICAgICAgIG1fc2F2ZVRpbWVyLT5jaGFuZ2VPY2N1cnJlZCgp
OwotICAgIH0KLX0KLQotUVN0cmluZyBIaXN0b3J5TWFuYWdlcjo6YXRvbWljU3RyaW5nKGNvbnN0
IFFTdHJpbmcgJnN0cmluZykgewotICAgIFFIYXNoPFFTdHJpbmcsIGludD46OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9hdG9taWNTdHJpbmdIYXNoLmNvbnN0RmluZChzdHJpbmcpOwotICAgIGlmIChp
dCA9PSBtX2F0b21pY1N0cmluZ0hhc2guY29uc3RFbmQoKSkgewotICAgICAgICBRSGFzaDxRU3Ry
aW5nLCBpbnQ+OjppdGVyYXRvciBpbnNlcnRlZEl0ZXJhdG9yID0gbV9hdG9taWNTdHJpbmdIYXNo
Lmluc2VydChzdHJpbmcsIDApOwotICAgICAgICByZXR1cm4gaW5zZXJ0ZWRJdGVyYXRvci5rZXko
KTsKLSAgICB9Ci0gICAgcmV0dXJuIGl0LmtleSgpOwotfQotCi12b2lkIEhpc3RvcnlNYW5hZ2Vy
OjpzYXZlKCkKLXsKLSAgICBRU2V0dGluZ3Mgc2V0dGluZ3M7Ci0gICAgc2V0dGluZ3MuYmVnaW5H
cm91cChRTGF0aW4xU3RyaW5nKCJoaXN0b3J5IikpOwotICAgIHNldHRpbmdzLnNldFZhbHVlKFFM
YXRpbjFTdHJpbmcoImhpc3RvcnlMaW1pdCIpLCBtX2RheXNUb0V4cGlyZSk7Ci0KLSAgICBib29s
IHNhdmVBbGwgPSBtX2xhc3RTYXZlZFVybC5pc0VtcHR5KCk7Ci0gICAgaW50IGZpcnN0ID0gbV9o
aXN0b3J5LmNvdW50KCkgLSAxOwotICAgIGlmICghc2F2ZUFsbCkgewotICAgICAgICAvLyBmaW5k
IHRoZSBmaXJzdCBvbmUgdG8gc2F2ZQotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faGlz
dG9yeS5jb3VudCgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChtX2hpc3RvcnkuYXQoaSkudXJs
ID09IG1fbGFzdFNhdmVkVXJsKSB7Ci0gICAgICAgICAgICAgICAgZmlyc3QgPSBpIC0gMTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAg
ICBpZiAoZmlyc3QgPT0gbV9oaXN0b3J5LmNvdW50KCkgLSAxKQotICAgICAgICBzYXZlQWxsID0g
dHJ1ZTsKLQotICAgIFFTdHJpbmcgZGlyZWN0b3J5ID0gUURlc2t0b3BTZXJ2aWNlczo6c3RvcmFn
ZUxvY2F0aW9uKFFEZXNrdG9wU2VydmljZXM6OkRhdGFMb2NhdGlvbik7Ci0gICAgaWYgKGRpcmVj
dG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIGRpcmVjdG9yeSA9IFFEaXI6OmhvbWVQYXRoKCkgKyBR
TGF0aW4xU3RyaW5nKCIvLiIpICsgUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25OYW1lKCk7
Ci0gICAgaWYgKCFRRmlsZTo6ZXhpc3RzKGRpcmVjdG9yeSkpIHsKLSAgICAgICAgUURpciBkaXI7
Ci0gICAgICAgIGRpci5ta3BhdGgoZGlyZWN0b3J5KTsKLSAgICB9Ci0KLSAgICBRRmlsZSBoaXN0
b3J5RmlsZShkaXJlY3RvcnkgKyBRTGF0aW4xU3RyaW5nKCIvaGlzdG9yeSIpKTsKLSAgICAvLyBX
aGVuIHNhdmluZyBldmVyeXRoaW5nIHVzZSBhIHRlbXBvcmFyeSBmaWxlIHRvIHByZXZlbnQgcG9z
c2libGUgZGF0YSBsb3NzLgotICAgIFFUZW1wb3JhcnlGaWxlIHRlbXBGaWxlOwotICAgIHRlbXBG
aWxlLnNldEF1dG9SZW1vdmUoZmFsc2UpOwotICAgIGJvb2wgb3BlbiA9IGZhbHNlOwotICAgIGlm
IChzYXZlQWxsKSB7Ci0gICAgICAgIG9wZW4gPSB0ZW1wRmlsZS5vcGVuKCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgb3BlbiA9IGhpc3RvcnlGaWxlLm9wZW4oUUZpbGU6OkFwcGVuZCk7Ci0gICAg
fQotCi0gICAgaWYgKCFvcGVuKSB7Ci0gICAgICAgIHFXYXJuaW5nKCkgPDwgIlVuYWJsZSB0byBv
cGVuIGhpc3RvcnkgZmlsZSBmb3Igc2F2aW5nIgotICAgICAgICAgICAgICAgICAgIDw8IChzYXZl
QWxsID8gdGVtcEZpbGUuZmlsZU5hbWUoKSA6IGhpc3RvcnlGaWxlLmZpbGVOYW1lKCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUURhdGFTdHJlYW0gb3V0KHNhdmVBbGwgPyAmdGVt
cEZpbGUgOiAmaGlzdG9yeUZpbGUpOwotICAgIGZvciAoaW50IGkgPSBmaXJzdDsgaSA+PSAwOyAt
LWkpIHsKLSAgICAgICAgUUJ5dGVBcnJheSBkYXRhOwotICAgICAgICBRRGF0YVN0cmVhbSBzdHJl
YW0oJmRhdGEsIFFJT0RldmljZTo6V3JpdGVPbmx5KTsKLSAgICAgICAgSGlzdG9yeUVudHJ5IGl0
ZW0gPSBtX2hpc3RvcnkuYXQoaSk7Ci0gICAgICAgIHN0cmVhbSA8PCBISVNUT1JZX1ZFUlNJT04g
PDwgaXRlbS51cmwgPDwgaXRlbS5kYXRlVGltZSA8PCBpdGVtLnRpdGxlOwotICAgICAgICBvdXQg
PDwgZGF0YTsKLSAgICB9Ci0gICAgdGVtcEZpbGUuY2xvc2UoKTsKLQotICAgIGlmIChzYXZlQWxs
KSB7Ci0gICAgICAgIGlmIChoaXN0b3J5RmlsZS5leGlzdHMoKSAmJiAhaGlzdG9yeUZpbGUucmVt
b3ZlKCkpCi0gICAgICAgICAgICBxV2FybmluZygpIDw8ICJIaXN0b3J5OiBlcnJvciByZW1vdmlu
ZyBvbGQgaGlzdG9yeS4iIDw8IGhpc3RvcnlGaWxlLmVycm9yU3RyaW5nKCk7Ci0gICAgICAgIGlm
ICghdGVtcEZpbGUucmVuYW1lKGhpc3RvcnlGaWxlLmZpbGVOYW1lKCkpKQotICAgICAgICAgICAg
cVdhcm5pbmcoKSA8PCAiSGlzdG9yeTogZXJyb3IgbW92aW5nIG5ldyBoaXN0b3J5IG92ZXIgb2xk
LiIgPDwgdGVtcEZpbGUuZXJyb3JTdHJpbmcoKSA8PCBoaXN0b3J5RmlsZS5maWxlTmFtZSgpOwot
ICAgIH0KLSAgICBtX2xhc3RTYXZlZFVybCA9IG1faGlzdG9yeS52YWx1ZSgwKS51cmw7Ci19Ci0K
LQotLS0gLi4vdG9yb3JhL3NyYy9oaXN0b3J5L2hpc3RvcnltYW5hZ2VyLmgJMjAwOS0wNS0xNyAx
ODo1NDo1MS4wMDAwMDAwMDAgKzAxMDAKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L2RydGhpc3RvcnkuaAkyMDA5LTA2LTI1IDE4OjUzOjMyLjAwMDAwMDAwMCArMDEwMApAQCAtMSwx
NjEgKzEsNTIgQEAKKwogLyoKLSAqIENvcHlyaWdodCAyMDA4IEJlbmphbWluIEMuIE1leWVyIDxi
ZW5AbWV5ZXJob21lLm5ldD4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBSb2JlcnQgSG9nYW4gPHJv
YmVydEByb2JlcnRob2dhbi5uZXQ+CiAgKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvcgotICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgogICoKLSAqIFRoaXMgcHJvZ3Jh
bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0
aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qKgotKiogQ29weXJpZ2h0IChDKSAyMDA3LTIw
MDggVHJvbGx0ZWNoIEFTQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoqCi0qKiBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgZGVtb25zdHJhdGlvbiBhcHBsaWNhdGlvbnMgb2YgdGhlIFF0IFRvb2xr
aXQuCi0qKgotKiogVGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIEdlbmVyYWwgUHVibGljCi0qKiBMaWNlbnNlIHZlcnNpb25zIDIuMCBvciAzLjAgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0qKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcg
aW4gdGhlIGZpbGVzIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCi0qKiBpbmNsdWRlZCBp
biB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gIEFsdGVybmF0aXZlbHkgeW91IG1heSAoYXQK
LSoqIHlvdXIgb3B0aW9uKSB1c2UgYW55IGxhdGVyIHZlcnNpb24gb2YgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYwotKiogTGljZW5zZSBpZiBzdWNoIGxpY2Vuc2UgaGFzIGJlZW4gcHVibGljbHkgYXBw
cm92ZWQgYnkgVHJvbGx0ZWNoIEFTQQotKiogKG9yIGl0cyBzdWNjZXNzb3JzLCBpZiBhbnkpIGFu
ZCB0aGUgS0RFIEZyZWUgUXQgRm91bmRhdGlvbi4gSW4KLSoqIGFkZGl0aW9uLCBhcyBhIHNwZWNp
YWwgZXhjZXB0aW9uLCBUcm9sbHRlY2ggZ2l2ZXMgeW91IGNlcnRhaW4KLSoqIGFkZGl0aW9uYWwg
cmlnaHRzLiBUaGVzZSByaWdodHMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgVHJvbGx0ZWNoIEdQTAot
KiogRXhjZXB0aW9uIHZlcnNpb24gMS4yLCB3aGljaCBjYW4gYmUgZm91bmQgYXQKLSoqIGh0dHA6
Ly93d3cudHJvbGx0ZWNoLmNvbS9wcm9kdWN0cy9xdC9ncGxleGNlcHRpb24vIGFuZCBpbiB0aGUg
ZmlsZQotKiogR1BMX0VYQ0VQVElPTi50eHQgaW4gdGhpcyBwYWNrYWdlLgotKioKLSoqIFBsZWFz
ZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0byBlbnN1cmUgR05VIEdlbmVyYWwK
LSoqIFB1YmxpYyBMaWNlbnNpbmcgcmVxdWlyZW1lbnRzIHdpbGwgYmUgbWV0OgotKiogaHR0cDov
L3Ryb2xsdGVjaC5jb20vcHJvZHVjdHMvcXQvbGljZW5zZXMvbGljZW5zaW5nL29wZW5zb3VyY2Uv
LiBJZgotKiogeW91IGFyZSB1bnN1cmUgd2hpY2ggbGljZW5zZSBpcyBhcHByb3ByaWF0ZSBmb3Ig
eW91ciB1c2UsIHBsZWFzZQotKiogcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246Ci0q
KiBodHRwOi8vdHJvbGx0ZWNoLmNvbS9wcm9kdWN0cy9xdC9saWNlbnNlcy9saWNlbnNpbmcvbGlj
ZW5zaW5nb3ZlcnZpZXcKLSoqIG9yIGNvbnRhY3QgdGhlIHNhbGVzIGRlcGFydG1lbnQgYXQgc2Fs
ZXNAdHJvbGx0ZWNoLmNvbS4KLSoqCi0qKiBJbiBhZGRpdGlvbiwgYXMgYSBzcGVjaWFsIGV4Y2Vw
dGlvbiwgVHJvbGx0ZWNoLCBhcyB0aGUgc29sZQotKiogY29weXJpZ2h0IGhvbGRlciBmb3IgUXQg
RGVzaWduZXIsIGdyYW50cyB1c2VycyBvZiB0aGUgUXQvRWNsaXBzZQotKiogSW50ZWdyYXRpb24g
cGx1Zy1pbiB0aGUgcmlnaHQgZm9yIHRoZSBRdC9FY2xpcHNlIEludGVncmF0aW9uIHRvCi0qKiBs
aW5rIHRvIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkgUXQgRGVzaWduZXIgYW5kIGl0cyByZWxh
dGVkCi0qKiBsaWJyYXJpZXMuCi0qKgotKiogVGhpcyBmaWxlIGlzIHByb3ZpZGVkICJBUyBJUyIg
d2l0aCBOTyBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLSoqIElOQ0xVRElORyBUSEUgV0FSUkFOVElF
UyBPRiBERVNJR04sIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSoqIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiBUcm9sbHRlY2ggcmVzZXJ2ZXMgYWxsIHJpZ2h0cyBub3QgZXhwcmVzc2x5
Ci0qKiBncmFudGVkIGhlcmVpbi4KLSoqCi0qKiBUaGlzIGZpbGUgaXMgcHJvdmlkZWQgQVMgSVMg
d2l0aCBOTyBXQVJSQU5UWSBPRiBBTlkgS0lORCwgSU5DTFVESU5HIFRIRQotKiogV0FSUkFOVFkg
T0YgREVTSUdOLCBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLgotKioKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLSNpZm5kZWYgSElTVE9SWU1BTkFH
RVJfSAotI2RlZmluZSBISVNUT1JZTUFOQUdFUl9ICisjaWZuZGVmIERSVEhJU1RPUllfSAorI2Rl
ZmluZSBEUlRISVNUT1JZX0gKIAotI2luY2x1ZGUgPHFkYXRldGltZS5oPgogI2luY2x1ZGUgPHFo
YXNoLmg+Ci0jaW5jbHVkZSA8cXRpbWVyLmg+Ci0jaW5jbHVkZSA8cXVybC5oPgogI2luY2x1ZGUg
PHF3ZWJoaXN0b3J5aW50ZXJmYWNlLmg+CiAKLWNsYXNzIEhpc3RvcnlFbnRyeQotewotcHVibGlj
OgotICAgIEhpc3RvcnlFbnRyeSgpIHt9Ci0gICAgSGlzdG9yeUVudHJ5KGNvbnN0IFFTdHJpbmcg
JnUsCi0gICAgICAgICAgICAgICAgY29uc3QgUURhdGVUaW1lICZkID0gUURhdGVUaW1lKCksIGNv
bnN0IFFTdHJpbmcgJnQgPSBRU3RyaW5nKCkpCi0gICAgICAgICAgICA6IHVybCh1KSwgdGl0bGUo
dCksIGRhdGVUaW1lKGQpIHt9Ci0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhp
c3RvcnlFbnRyeSAmb3RoZXIpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJuIG90aGVyLnRpdGxlID09
IHRpdGxlCi0gICAgICAgICAgICAgICAmJiBvdGhlci51cmwgPT0gdXJsICYmIG90aGVyLmRhdGVU
aW1lID09IGRhdGVUaW1lOwotICAgIH0KLQotICAgIC8vIGhpc3RvcnkgaXMgc29ydGVkIGluIHJl
dmVyc2UKLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciA8KGNvbnN0IEhpc3RvcnlFbnRyeSAmb3Ro
ZXIpIGNvbnN0Ci0gICAgICAgIHsgcmV0dXJuIGRhdGVUaW1lID4gb3RoZXIuZGF0ZVRpbWU7IH0K
LQotICAgIFFTdHJpbmcgdXNlclRpdGxlKCkgY29uc3Q7Ci0KLSAgICBRU3RyaW5nIHVybDsKLSAg
ICBRU3RyaW5nIHRpdGxlOwotICAgIFFEYXRlVGltZSBkYXRlVGltZTsKLX07Ci0KLWNsYXNzIEF1
dG9TYXZlcjsKLWNsYXNzIEhpc3RvcnlNb2RlbDsKLWNsYXNzIEhpc3RvcnlGaWx0ZXJNb2RlbDsK
LWNsYXNzIEhpc3RvcnlUcmVlTW9kZWw7Ci1jbGFzcyBIaXN0b3J5TWFuYWdlciA6IHB1YmxpYyBR
V2ViSGlzdG9yeUludGVyZmFjZQorY2xhc3MgRFJUSGlzdG9yeSA6IHB1YmxpYyBRV2ViSGlzdG9y
eUludGVyZmFjZQogewogICAgIFFfT0JKRUNUCi0gICAgUV9QUk9QRVJUWShpbnQgZGF5c1RvRXhw
aXJlIFJFQUQgZGF5c1RvRXhwaXJlIFdSSVRFIHNldERheXNUb0V4cGlyZSkKLQotc2lnbmFsczoK
LSAgICB2b2lkIGhpc3RvcnlDbGVhcmVkKCk7Ci0gICAgdm9pZCBoaXN0b3J5UmVzZXQoKTsKLSAg
ICB2b2lkIGVudHJ5QWRkZWQoY29uc3QgSGlzdG9yeUVudHJ5ICZpdGVtKTsKLSAgICB2b2lkIGVu
dHJ5UmVtb3ZlZChjb25zdCBIaXN0b3J5RW50cnkgJml0ZW0pOwotICAgIHZvaWQgZW50cnlVcGRh
dGVkKGludCBvZmZzZXQpOwotCiBwdWJsaWM6Ci0gICAgSGlzdG9yeU1hbmFnZXIoUU9iamVjdCAq
cGFyZW50ID0gMCk7Ci0gICAgfkhpc3RvcnlNYW5hZ2VyKCk7CisgICAgRFJUSGlzdG9yeShRT2Jq
ZWN0ICpwYXJlbnQgPSAwKTsKKyAgICB+RFJUSGlzdG9yeSgpOwogCiAgICAgYm9vbCBoaXN0b3J5
Q29udGFpbnMoY29uc3QgUVN0cmluZyAmdXJsKSBjb25zdDsKICAgICB2b2lkIGFkZEhpc3RvcnlF
bnRyeShjb25zdCBRU3RyaW5nICZ1cmwpOwotICAgIHZvaWQgdXBkYXRlSGlzdG9yeUVudHJ5KGNv
bnN0IFFVcmwgJnVybCwgY29uc3QgUVN0cmluZyAmdGl0bGUpOwotICAgIHZvaWQgcmVtb3ZlSGlz
dG9yeUVudHJ5KGNvbnN0IFFVcmwgJnVybCwgY29uc3QgUVN0cmluZyAmdGl0bGUgPSBRU3RyaW5n
KCkpOwotCi0gICAgaW50IGRheXNUb0V4cGlyZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGF5c1Rv
RXhwaXJlKGludCBsaW1pdCk7Ci0KLSAgICBRTGlzdDxIaXN0b3J5RW50cnk+IGhpc3RvcnkoKSBj
b25zdDsKLSAgICB2b2lkIHNldEhpc3RvcnkoY29uc3QgUUxpc3Q8SGlzdG9yeUVudHJ5PiAmaGlz
dG9yeSwgYm9vbCBsb2FkZWRBbmRTb3J0ZWQgPSBmYWxzZSk7Ci0KLSAgICAvLyBIaXN0b3J5IG1h
bmFnZXIga2VlcHMgYXJvdW5kIHRoZXNlIG1vZGVscyBmb3IgdXNlIGJ5IHRoZSBjb21wbGV0ZXIg
YW5kIG90aGVyIGNsYXNzZXMKLSAgICBIaXN0b3J5TW9kZWwgKmhpc3RvcnlNb2RlbCgpIGNvbnN0
OwotICAgIEhpc3RvcnlGaWx0ZXJNb2RlbCAqaGlzdG9yeUZpbHRlck1vZGVsKCkgY29uc3Q7Ci0g
ICAgSGlzdG9yeVRyZWVNb2RlbCAqaGlzdG9yeVRyZWVNb2RlbCgpIGNvbnN0OwotCi1wdWJsaWMg
c2xvdHM6Ci0gICAgdm9pZCBjbGVhcigpOwotICAgIHZvaWQgbG9hZFNldHRpbmdzKCk7Ci0KLXBy
aXZhdGUgc2xvdHM6Ci0gICAgdm9pZCBzYXZlKCk7Ci0gICAgdm9pZCBjaGVja0ZvckV4cGlyZWQo
KTsKLQotcHJvdGVjdGVkOgotICAgIHZvaWQgYWRkSGlzdG9yeUVudHJ5KGNvbnN0IEhpc3RvcnlF
bnRyeSAmaXRlbSk7Ci0gICAgdm9pZCByZW1vdmVIaXN0b3J5RW50cnkoY29uc3QgSGlzdG9yeUVu
dHJ5ICZpdGVtKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGxvYWQoKTsKLSAgICBRU3RyaW5nIGF0
b21pY1N0cmluZyhjb25zdCBRU3RyaW5nICZzdHJpbmcpOwotCi0gICAgQXV0b1NhdmVyICptX3Nh
dmVUaW1lcjsKLSAgICBpbnQgbV9kYXlzVG9FeHBpcmU7Ci0gICAgUVRpbWVyIG1fZXhwaXJlZFRp
bWVyOwotICAgIFFIYXNoPFFTdHJpbmcsIGludD4gbV9hdG9taWNTdHJpbmdIYXNoOwotICAgIFFM
aXN0PEhpc3RvcnlFbnRyeT4gbV9oaXN0b3J5OwotICAgIFFTdHJpbmcgbV9sYXN0U2F2ZWRVcmw7
Ci0KLSAgICBIaXN0b3J5TW9kZWwgKm1faGlzdG9yeU1vZGVsOwotICAgIEhpc3RvcnlGaWx0ZXJN
b2RlbCAqbV9oaXN0b3J5RmlsdGVyTW9kZWw7Ci0gICAgSGlzdG9yeVRyZWVNb2RlbCAqbV9oaXN0
b3J5VHJlZU1vZGVsOworICAgIG11dGFibGUgUUhhc2g8UVN0cmluZywgaW50PiBtX2RydEhpc3Rv
cnk7CiB9OwogCi0jZW5kaWYgLy8gSElTVE9SWU1BTkFHRVJfSAorI2VuZGlmIC8vIERSVEhJU1RP
UllfSAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32098</attachid>
            <date>2009-06-30 15:20:15 -0700</date>
            <delta_ts>2009-08-09 04:41:07 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>0001-Add-option-CSSIgnoreVisitedLinks.patch</filename>
            <type>text/plain</type>
            <size>22906</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSBiZDBjNDk2MjU4NmZjMjIzZjM0OTU5ZDdmZDA0NjQ5MjBlNzZhMGNlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBtd2VuZ2UgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CkRhdGU6
IFR1ZSwgMzAgSnVuIDIwMDkgMjM6MDE6NDggKzAxMDAKU3ViamVjdDogW1BBVENIXSBBZGQgb3B0
aW9uIENTU0lnbm9yZVZpc2l0ZWRMaW5rcwogV2hlbiB1c2VkLCB0aGlzIG9wdGlvbiB3aWxsIGFs
d2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCiBzdHlsZXNo
ZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5
b3VyIGJyb3dzaW5nCiBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBm
b3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCgotLS0KIExheW91dFRlc3RzL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNSArKysrKysKIC4uLi9o
aXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy1leHBlY3RlZC50eHQgIHwgICAxMSArKysr
CiAuLi4vcXQvZmFzdC9oaXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sICB8ICAg
MzQgKysrKysrKysrKysrKwogLi4uL3Jlc291cmNlcy9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3Mt
Mi5odG1sICAgICAgfCAgIDI1ICsrKysrKysrKwogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsrKysrKysKIFdlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwICAgICAgICAgICAgICAgICAgIHwgICAgNyArKysKIFdlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuaCAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKysKIFdl
YkNvcmUvcGFnZS9TZXR0aW5ncy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCAr
KwogV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwICAgICAgICAgICAgICAgICAgICAgfCAg
ICA3ICsrKwogV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaCAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAzICstCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMTcgKysrKysrCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMjAgKysrKysrKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0R1bXBSZW5kZXJUcmVlLmNwcCAgIHwgICAgMyArCiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5oICAgICB8ICAgIDIgKwogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvICAgfCAgICA0ICstCiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9kcnRoaXN0b3J5LmNwcCAgICAgICB8ICAgNTIgKysrKysrKysr
KysrKysrKysrKysKIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2RydGhpc3RvcnkuaCAg
ICAgICAgIHwgICA1MiArKysrKysrKysrKysrKysrKysrKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvanNvYmplY3RzLmNwcCAgICAgICAgfCAgICA1ICsrCiBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9qc29iamVjdHMuaCAgICAgICAgICB8ICAgIDEgKwogMjAgZmlsZXMgY2hh
bmdlZCwgMjg1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRl
ZC1saW5rcy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9mYXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLmh0bWwKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvcmVzb3Vy
Y2VzL2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy0yLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9kcnRoaXN0b3J5LmNwcAogY3JlYXRlIG1vZGUg
MTAwNjQ0IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2RydGhpc3RvcnkuaAoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAwZjc5ZGQ0Li45N2U3ZWJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDYtMzAgIFJv
YmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkhLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNDMwMAorCisgICAgICAgIEFkZCBvcHRpb24gQ1NTSWdub3JlVmlzaXRlZExpbmtzCisg
ICAgICAgIFdoZW4gdXNlZCwgdGhpcyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZv
ciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBw
cmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5n
CisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBh
IHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKworICAgICAgICAqIHBsYXRmb3JtL3F0
L2Zhc3QvaGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9y
ZXNvdXJjZXMvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLTIuaHRtbDogQWRkZWQuCisKIDIwMDkt
MDYtMzAgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEJldGggRGFraW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0
L2hpc3RvcnkvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkM2QwMTMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvY3Nz
LWlnbm9yZS12aXNpdGVkLWxpbmtzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
ODR4NTg0CisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAg
ICAgICBSZW5kZXJJbmxpbmUge0F9IGF0ICgwLDApIHNpemUgMTk5eDE4IFtjb2xvcj0jMDAwMEZG
XQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE5OXgxOAorICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTk5OiAiVGhpcyB0ZXh0IHNob3VsZCBh
cHBlYXIgaW4gYmx1ZS4iCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTk5LDApIHNp
emUgNHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgxOTksMCkgd2lkdGggNDogIi4iCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12
aXNpdGVkLWxpbmtzLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3Rvcnkv
Y3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOWYyNzBhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L2Zhc3QvaGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MuaHRtbApAQCAtMCwwICsx
LDM0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5z
aXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+
Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPkNTU0lnbm9yZVZpc2l0ZWRMaW5rcyAtIFdoZW4gU2V0
LCBWaXNpdGVkIExpbmtzIGFwcGVhciB1bnZpc2l0ZWQ8L1RJVExFPgorPE1FVEEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+
Cis8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVN0eWxlLVR5cGUiIGNvbnRlbnQ9InRleHQvY3Nz
Ij4KKzxTVFlMRSB0eXBlPSJ0ZXh0L2NzcyI+CitBIHtjb2xvcjogZ3JlZW47fQorQTpsaW5rIHtj
b2xvcjogYmx1ZTt9CitBOnZpc2l0ZWQge2NvbG9yOiByZWQ7fQorQTphY3RpdmUge2NvbG9yOiBi
bGFjazt9Cisjb25lIHtjb2xvcjogIzAwNjYwMDt9Cis8L1NUWUxFPgorCis8L0hFQUQ+Cis8c2Ny
aXB0PgorZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENTU0lnbm9yZVZpc2l0
ZWRMaW5rcyh0cnVlKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIH0KKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJt
eWxpbmsiKTsKKyAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVu
dCIpOworICAgIGV2ZW50LmluaXRFdmVudCgiY2xpY2siLCB0cnVlLCB0cnVlKTsKKyAgICBlbGVt
ZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKTsiPgorPGRpdj48YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAiPkJ1Z3ppbGxhIFJlZmVyZW5jZS48L2E+PC9kaXY+Cis8
ZGl2PlRvIHJ1biB0aGUgdGVzdCA8YSBpZD0ibXlsaW5rIiBocmVmPSJyZXNvdXJjZXMvY3NzLWln
bm9yZS12aXNpdGVkLWxpbmtzLTIuaHRtbCI+Y2xpY2sgdGhpcyBsaW5rLjwvYT4uPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zh
c3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLTIuaHRtbCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLWlnbm9yZS12
aXNpdGVkLWxpbmtzLTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44
YTJlOGNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9o
aXN0b3J5L3Jlc291cmNlcy9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtMi5odG1sCkBAIC0wLDAg
KzEsMjUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJh
bnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAvbG9vc2UuZHRk
Ij4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+Q1NTSWdub3JlVmlzaXRlZExpbmtzIC0gV2hlbiBT
ZXQsIFZpc2l0ZWQgTGlua3MgYXBwZWFyIHVudmlzaXRlZDwvVElUTEU+Cis8TUVUQSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0x
Ij4KKzxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtU3R5bGUtVHlwZSIgY29udGVudD0idGV4dC9j
c3MiPgorPFNUWUxFIHR5cGU9InRleHQvY3NzIj4KK0Ege2NvbG9yOiBncmVlbjt9CitBOmxpbmsg
e2NvbG9yOiBibHVlO30KK0E6dmlzaXRlZCB7Y29sb3I6IHJlZDt9CitBOmFjdGl2ZSB7Y29sb3I6
IGJsYWNrO30KKyNvbmUge2NvbG9yOiAjMDA2NjAwO30KKzwvU1RZTEU+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4K
KzwvSEVBRD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8ZGl2PjxhIGlkPSJteWxpbmsi
IGhyZWY9Ii4uL2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sIj5UaGlzIHRleHQgc2hvdWxk
IGFwcGVhciBpbiBibHVlLjwvYT4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI2ZDc3Yi4u
NDZhZmYyMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAwOS0wNi0zMCAgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRA
cm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKKworICAgICAg
ICBBZGQgb3B0aW9uIENTU0lnbm9yZVZpc2l0ZWRMaW5rcworICAgICAgICBXaGVuIHVzZWQsIHRo
aXMgb3B0aW9uIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBmb3IgdGhlICd2aXNpdGVkJyBzdGF0
ZSBpbiBDU1MKKyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMgcHJldmVudHMgd2Vic2l0ZXMgZnJv
bSBpbmRpcmVjdGx5IGluc3BlY3RpbmcgeW91ciBicm93c2luZworICAgICAgICBoaXN0b3J5IGJ5
IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhU
TUwgZG9jdW1lbnQuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAg
ICAgICAoQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNrZXIp
CisgICAgICAgICAoQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1BzZXVk
b1N0YXRlKQorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgICogV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFNldHRpbmdzOjpzZXRDU1NJZ25vcmVW
aXNpdGVkTGlua3MpCisgICAgICAgICogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmg6CisKIDIwMDkt
MDYtMzAgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEJldGggRGFraW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IGNlNGMzNDMuLmUy
MjQxYWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBi
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC04NjYsNyArODY2LDExIEBAIENT
U1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2VyKERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCBzdHJpCiAgICAgLCBtX2NvbGxlY3RSdWxlc09ubHkoZmFsc2UpCiAg
ICAgLCBtX3BzZXVkb1N0eWxlKE5PUFNFVURPKQogICAgICwgbV9kb2N1bWVudElzSFRNTChkb2N1
bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkKKyAgICAsIG1faWdub3JlVmlzaXRlZExpbmtzKGZhbHNl
KQogeworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZG9jdW1lbnQtPnNldHRpbmdzKCk7Cisg
ICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLT5jc3NJZ25vcmVWaXNpdGVkTGlua3MoKSkKKyAg
ICAgICAgbV9pZ25vcmVWaXNpdGVkTGlua3MgPSB0cnVlOwogfQogCiBQc2V1ZG9TdGF0ZSBDU1NT
dHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrUHNldWRvU3RhdGUoRWxlbWVudCog
ZWxlbWVudCwgYm9vbCBjaGVja1Zpc2l0ZWQpIGNvbnN0CkBAIC04NzgsNiArODgyLDkgQEAgUHNl
dWRvU3RhdGUgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1BzZXVkb1N0
YXRlKEVsZW1lbnQqIGVsZW1lbnQKICAgICBpZiAoIWNoZWNrVmlzaXRlZCkKICAgICAgICAgcmV0
dXJuIFBzZXVkb0FueUxpbms7CiAKKyAgICBpZiAobV9pZ25vcmVWaXNpdGVkTGlua3MpCisgICAg
ICAgIHJldHVybiBQc2V1ZG9MaW5rOworCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgVmVjdG9yPFVD
aGFyLCA1MTI+IHVybDsKICAgICB2aXNpdGVkVVJMKG1fZG9jdW1lbnQtPmJhc2VVUkwoKSwgKmF0
dHIsIHVybCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmggYi9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKaW5kZXggOGRkMzZkNy4uM2FmZjMxMiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtMjAwLDYgKzIwMCw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIFBzZXVkb0lkIG1fcHNldWRvU3R5bGU7CiAgICAgICAgICAgICBib29sIG1fZG9jdW1lbnRJ
c0hUTUw7CiAgICAgICAgICAgICBtdXRhYmxlIEhhc2hTZXQ8TGlua0hhc2gsIExpbmtIYXNoSGFz
aD4gbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGU7CisgICAgICAgICAgICBib29sIG1faWdu
b3JlVmlzaXRlZExpbmtzOwogICAgICAgICB9OwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmlu
ZGV4IGE1OTZmYzcuLjA1NTc4NGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtOTUsNiArOTUsNyBAQCBTZXR0
aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1fZW5mb3JjZUNTU01JTUVUeXBlSW5T
dHJpY3RNb2RlKHRydWUpCiAgICAgLCBtX3VzZXNFbmNvZGluZ0RldGVjdG9yKGZhbHNlKQogICAg
ICwgbV9hbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyhmYWxzZSkKKyAgICAsIG1fY3NzSWdub3Jl
VmlzaXRlZExpbmtzKGZhbHNlKQogICAgICwgbV9lZGl0aW5nQmVoYXZpb3IoCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgICAgICBFZGl0aW5nTWFjQmVoYXZpb3IKQEAgLTI0OCw2ICsyNDksMTEgQEAg
dm9pZCBTZXR0aW5nczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZhdGVCcm93
c2luZ0VuYWJsZWQpCiAgICAgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkID0gcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZDsKIH0KIAordm9pZCBTZXR0aW5nczo6c2V0Q1NTSWdub3JlVmlzaXRlZExpbmtz
KGJvb2wgY3NzSWdub3JlVmlzaXRlZExpbmtzKQoreworICAgIG1fY3NzSWdub3JlVmlzaXRlZExp
bmtzID0gY3NzSWdub3JlVmlzaXRlZExpbmtzOworfQorCiB2b2lkIFNldHRpbmdzOjpzZXRKYXZh
U2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KGJvb2wgamF2YVNjcmlwdENhbk9wZW5X
aW5kb3dzQXV0b21hdGljYWxseSkKIHsKICAgICBtX2phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1
dG9tYXRpY2FsbHkgPSBqYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
aAppbmRleCA2MmZmYmEzLi44MDg0OWVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaAorKysgYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMjQ3LDYgKzI0Nyw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
RW5hYmxlZChib29sKTsKICAgICAgICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQ7IH0KIAor
ICAgICAgICB2b2lkIHNldENTU0lnbm9yZVZpc2l0ZWRMaW5rcyhib29sKTsKKyAgICAgICAgYm9v
bCBjc3NJZ25vcmVWaXNpdGVkTGlua3MoKSBjb25zdCB7IHJldHVybiBtX2Nzc0lnbm9yZVZpc2l0
ZWRMaW5rczsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAg
ICAKQEAgLTMwOSw2ICszMTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wg
bV9kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1feHNz
QXVkaXRvckVuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQgOiAxOworICAgICAgICBib29sIG1fY3NzSWdub3JlVmlzaXRlZExpbmtzIDogMTsK
IAogI2lmIFVTRShTQUZBUklfVEhFTUUpCiAgICAgICAgIHN0YXRpYyBib29sIGdTaG91bGRQYWlu
dE5hdGl2ZUNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3Mu
Y3BwIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCmluZGV4IDAyZWY0YTAuLjE5MDYx
Y2MgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAorKysgYi9XZWJL
aXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKQEAgLTE1Myw2ICsxNTMsMTAgQEAgdm9pZCBRV2Vi
U2V0dGluZ3NQcml2YXRlOjphcHBseSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OlByaXZhdGVCcm93
c2luZ0VuYWJsZWQpKTsKICAgICAgICAgc2V0dGluZ3MtPnNldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQodmFsdWUpOwogCisgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGlu
Z3M6OkNTU0lnbm9yZVZpc2l0ZWRMaW5rcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NTSWdub3Jl
VmlzaXRlZExpbmtzKSk7CisgICAgICAgIHNldHRpbmdzLT5zZXRDU1NJZ25vcmVWaXNpdGVkTGlu
a3ModmFsdWUpOworICAgICAgICAKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFX
ZWJTZXR0aW5nczo6SmF2YXNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0
aW5nczo6SmF2YXNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCkpOwogICAgICAgICBzZXR0aW5ncy0+
c2V0RE9NUGFzdGVBbGxvd2VkKHZhbHVlKTsKQEAgLTMyOSw2ICszMzMsOSBAQCBRV2ViU2V0dGlu
Z3MgKlFXZWJTZXR0aW5nczo6Z2xvYmFsU2V0dGluZ3MoKQogICAgIFx2YWx1ZSBMb2NhbFN0b3Jh
Z2VEYXRhYmFzZUVuYWJsZWQgU3BlY2lmaWVzIHdoZXRoZXIgc3VwcG9ydCBmb3IgdGhlIEhUTUwg
NQogICAgICAgICBsb2NhbCBzdG9yYWdlIGZlYXR1cmUgaXMgZW5hYmxlZCBvciBub3QuCiAgICAg
XHZhbHVlIExvY2FsQ29udGVudENhbkFjY2Vzc1JlbW90ZVVybHMgU3BlY2lmaWVzIHdoZXRoZXIg
bG9jYWxseSBsb2FkZWQgZG9jdW1lbnRzIGFyZSBhbGxvd2VkIHRvIGFjY2VzcyByZW1vdGUgdXJs
cy4KKyAgICBcdmFsdWUgQ1NTSWdub3JlVmlzaXRlZExpbmtzIEFsd2F5cyByZXR1cm4gZmFsc2Ug
Zm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCisgICAgICAgIHN0eWxlc2hlZXRzLiBUaGlz
IHByZXZlbnRzIHdlYnNpdGVzIGZyb20gaW5kaXJlY3RseSBpbnNwZWN0aW5nIHlvdXIgYnJvd3Np
bmcKKyAgICAgICAgaGlzdG9yeSBieSByZXF1ZXN0aW5nIHRoZSAndmlzaXRlZCcgc3RhdGUgZm9y
IGEgc2V0IG9mIFVSTHMgaW4gYSBIVE1MIGRvY3VtZW50LgogKi8KIAogLyohCmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGlu
Z3MuaAppbmRleCA3Y2JjYTI1Li42NzYxMTQwIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3
ZWJzZXR0aW5ncy5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKQEAgLTY0LDcg
KzY0LDggQEAgcHVibGljOgogICAgICAgICBPZmZsaW5lU3RvcmFnZURhdGFiYXNlRW5hYmxlZCwK
ICAgICAgICAgT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkLAogICAgICAgICBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZUVuYWJsZWQsCi0gICAgICAgIExvY2FsQ29udGVudENhbkFjY2Vzc1Jl
bW90ZVVybHMKKyAgICAgICAgTG9jYWxDb250ZW50Q2FuQWNjZXNzUmVtb3RlVXJscywKKyAgICAg
ICAgQ1NTSWdub3JlVmlzaXRlZExpbmtzCiAgICAgfTsKICAgICBlbnVtIFdlYkdyYXBoaWMgewog
ICAgICAgICBNaXNzaW5nSW1hZ2VHcmFwaGljLApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5n
ZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggOTJjY2NhOS4uMTQ1OWNiOCAxMDA2NDQK
LS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMDktMDYtMzAgIFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2Fu
Lm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzAwCisKKyAgICAgICAgQWRkIG9wdGlv
biBDU1NJZ25vcmVWaXNpdGVkTGlua3MKKyAgICAgICAgV2hlbiB1c2VkLCB0aGlzIG9wdGlvbiB3
aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCisg
ICAgICAgIHN0eWxlc2hlZXRzLiBUaGlzIHByZXZlbnRzIHdlYnNpdGVzIGZyb20gaW5kaXJlY3Rs
eSBpbnNwZWN0aW5nIHlvdXIgYnJvd3NpbmcKKyAgICAgICAgaGlzdG9yeSBieSByZXF1ZXN0aW5n
IHRoZSAndmlzaXRlZCcgc3RhdGUgZm9yIGEgc2V0IG9mIFVSTHMgaW4gYSBIVE1MIGRvY3VtZW50
LgorCisgICAgICAgIFNlZSBXZWJDb3JlL21hbnVhbC10ZXN0cy9jc3MtaWdub3JlLXZpc2l0ZWQt
bGlua3MuaHRtbDoKKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAo
UVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5o
OgorCiAyMDA5LTA2LTMwICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBkZGVhNjAuLmQ1YjI1
OWQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAwOS0wNi0zMCAgUm9iZXJ0IEhvZ2FuIDxyb2Jl
cnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSEuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzAwCisKKyAg
ICAgICAgQWRkIG9wdGlvbiBDU1NJZ25vcmVWaXNpdGVkTGlua3MKKyAgICAgICAgV2hlbiB1c2Vk
LCB0aGlzIG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcg
c3RhdGUgaW4gQ1NTCisgICAgICAgIHN0eWxlc2hlZXRzLiBUaGlzIHByZXZlbnRzIHdlYnNpdGVz
IGZyb20gaW5kaXJlY3RseSBpbnNwZWN0aW5nIHlvdXIgYnJvd3NpbmcKKyAgICAgICAgaGlzdG9y
eSBieSByZXF1ZXN0aW5nIHRoZSAndmlzaXRlZCcgc3RhdGUgZm9yIGEgc2V0IG9mIFVSTHMgaW4g
YSBIVE1MIGRvY3VtZW50LgorCisgICAgICAgIEFkZCBhIHN0dWIgaGlzdG9yeSBtYW5hZ2VyIHRv
IHBlcmZvcm0gdW5pdCB0ZXN0LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvZHJ0aGlz
dG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9kcnRoaXN0b3J5LmNw
cDogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUuY3Bw
OiBNb2RpZmllZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5o
OiBNb2RpZmllZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9qc29iamVjdHMuaDogTW9k
aWZpZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmNwcDogTW9kaWZp
ZWQuCisKIDIwMDktMDYtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUuY3BwIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDc4ZDUzNWEuLjY1MDEzZjIg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVl
LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgImRydGhp
c3RvcnkuaCIKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgogI2luY2x1ZGUgImpzb2JqZWN0
cy5oIgogI2luY2x1ZGUgInRlc3RwbHVnaW4uaCIKQEAgLTQ1LDYgKzQ2LDcgQEAKICNpbmNsdWRl
IDxxd2VicGFnZS5oPgogI2luY2x1ZGUgPHF3ZWJmcmFtZS5oPgogI2luY2x1ZGUgPHF3ZWJ2aWV3
Lmg+CisjaW5jbHVkZSA8cXdlYmhpc3RvcnkuaD4KICNpbmNsdWRlIDxxd2Vic2V0dGluZ3MuaD4K
IAogI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtMTQ5LDYgKzE1MSw3IEBAIER1bXBSZW5kZXJUcmVl
OjpEdW1wUmVuZGVyVHJlZSgpCiAKICAgICBtX2V2ZW50U2VuZGVyID0gbmV3IEV2ZW50U2VuZGVy
KG1fcGFnZSk7CiAgICAgbV90ZXh0SW5wdXRDb250cm9sbGVyID0gbmV3IFRleHRJbnB1dENvbnRy
b2xsZXIobV9wYWdlKTsKKyAgICBoaXN0b3J5TWFuYWdlciA9IG5ldyBEUlRIaXN0b3J5KG1fcGFn
ZSk7CiAKICAgICBRT2JqZWN0Ojpjb25uZWN0KHRoaXMsIFNJR05BTChxdWl0KCkpLCBxQXBwLCBT
TE9UKHF1aXQoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKICAgICBxdF9kcnRfcnVuKHRydWUp
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRy
ZWUuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmgKaW5k
ZXggMTcwZWE2ZC4uNmEwMDRiNCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvRHVtcFJlbmRlclRyZWUuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9EdW1wUmVuZGVyVHJlZS5oCkBAIC00Miw2ICs0Miw3IEBAIFFUX0VORF9OQU1FU1BBQ0UKIGNs
YXNzIFFXZWJQYWdlOwogY2xhc3MgUVdlYkZyYW1lOwogCitjbGFzcyBEUlRIaXN0b3J5OwogY2xh
c3MgTGF5b3V0VGVzdENvbnRyb2xsZXI7CiBjbGFzcyBFdmVudFNlbmRlcjsKIGNsYXNzIFRleHRJ
bnB1dENvbnRyb2xsZXI7CkBAIC04OCw2ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VGVz
dENvbnRyb2xsZXIgKm1fY29udHJvbGxlcjsKIAogICAgIFFXZWJQYWdlICptX3BhZ2U7CisgICAg
RFJUSGlzdG9yeSAqaGlzdG9yeU1hbmFnZXI7CiAKICAgICBFdmVudFNlbmRlciAqbV9ldmVudFNl
bmRlcjsKICAgICBUZXh0SW5wdXRDb250cm9sbGVyICptX3RleHRJbnB1dENvbnRyb2xsZXI7CmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5w
cm8gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8KaW5k
ZXggOTQxNzk0NC4uNTMzZmVkNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0R1bXBSZW5kZXJUcmVlLnBybwpAQCAtMTAsOCArMTAsOCBAQCBERVNURElSID0gLi4vLi4v
Li4vYmluCiBRVCA9IGNvcmUgZ3VpCiBtYWN4OiBRVCArPSB4bWwgbmV0d29yawogCi1IRUFERVJT
ID0gV29ya1F1ZXVlLmggV29ya1F1ZXVlSXRlbS5oIER1bXBSZW5kZXJUcmVlLmgganNvYmplY3Rz
LmggdGVzdHBsdWdpbi5oCi1TT1VSQ0VTID0gV29ya1F1ZXVlLmNwcCBEdW1wUmVuZGVyVHJlZS5j
cHAgbWFpbi5jcHAganNvYmplY3RzLmNwcCB0ZXN0cGx1Z2luLmNwcAorSEVBREVSUyA9IFdvcmtR
dWV1ZS5oIFdvcmtRdWV1ZUl0ZW0uaCBEdW1wUmVuZGVyVHJlZS5oIGpzb2JqZWN0cy5oIHRlc3Rw
bHVnaW4uaCBkcnRoaXN0b3J5LmgKK1NPVVJDRVMgPSBXb3JrUXVldWUuY3BwIER1bXBSZW5kZXJU
cmVlLmNwcCBtYWluLmNwcCBqc29iamVjdHMuY3BwIHRlc3RwbHVnaW4uY3BwIGRydGhpc3Rvcnku
Y3BwCiAKIHVuaXg6IW1hYyB7CiAgICAgUU1BS0VfUlBBVEhESVIgPSAkJE9VVFBVVF9ESVIvbGli
ICQkUU1BS0VfUlBBVEhESVIKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L2RydGhpc3RvcnkuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvZHJ0aGlz
dG9yeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE0NTYzMAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2RydGhpc3Rvcnku
Y3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgUm9iZXJ0IEhv
Z2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJkcnRoaXN0b3J5LmgiCisjaW5j
bHVkZSA8cXdlYmhpc3RvcnlpbnRlcmZhY2UuaD4KKworCitEUlRIaXN0b3J5OjpEUlRIaXN0b3J5
KFFPYmplY3QgKnBhcmVudCkKKyAgICA6IFFXZWJIaXN0b3J5SW50ZXJmYWNlKHBhcmVudCkKK3sK
KyAgICBRV2ViSGlzdG9yeUludGVyZmFjZTo6c2V0RGVmYXVsdEludGVyZmFjZSh0aGlzKTsKK30K
KworRFJUSGlzdG9yeTo6fkRSVEhpc3RvcnkoKQoreworfQorCitib29sIERSVEhpc3Rvcnk6Omhp
c3RvcnlDb250YWlucyhjb25zdCBRU3RyaW5nICZ1cmwpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
ZHJ0SGlzdG9yeS5jb250YWlucyh1cmwpOworfQorCit2b2lkIERSVEhpc3Rvcnk6OmFkZEhpc3Rv
cnlFbnRyeShjb25zdCBRU3RyaW5nICZ1cmwpCit7CisgICAgbV9kcnRIaXN0b3J5Lmluc2VydCh1
cmwsIChtX2RydEhpc3RvcnkuY291bnQoKSArIDEpKTsKK30KKwpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvZHJ0aGlzdG9yeS5oIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvZHJ0aGlzdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmM5MzBkZWEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9kcnRoaXN0b3J5LmgKQEAgLTAsMCArMSw1MiBAQAorCisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgRFJU
SElTVE9SWV9ICisjZGVmaW5lIERSVEhJU1RPUllfSAorCisjaW5jbHVkZSA8cWhhc2guaD4KKyNp
bmNsdWRlIDxxd2ViaGlzdG9yeWludGVyZmFjZS5oPgorCitjbGFzcyBEUlRIaXN0b3J5IDogcHVi
bGljIFFXZWJIaXN0b3J5SW50ZXJmYWNlCit7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBE
UlRIaXN0b3J5KFFPYmplY3QgKnBhcmVudCA9IDApOworICAgIH5EUlRIaXN0b3J5KCk7CisKKyAg
ICBib29sIGhpc3RvcnlDb250YWlucyhjb25zdCBRU3RyaW5nICZ1cmwpIGNvbnN0OworICAgIHZv
aWQgYWRkSGlzdG9yeUVudHJ5KGNvbnN0IFFTdHJpbmcgJnVybCk7CisKK3ByaXZhdGU6CisgICAg
bXV0YWJsZSBRSGFzaDxRU3RyaW5nLCBpbnQ+IG1fZHJ0SGlzdG9yeTsKK307CisKKyNlbmRpZiAv
LyBEUlRISVNUT1JZX0gKKwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvanNvYmplY3RzLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2pzb2JqZWN0
cy5jcHAKaW5kZXggMDkwODZmOC4uYjFiMDVhYSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9qc29iamVjdHMuY3BwCkBAIC0yNjAsNiArMjYwLDExIEBAIFFTdHJpbmcgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmRlY29kZUhvc3ROYW1lKGNvbnN0IFFTdHJpbmcgJmhvc3QpCiAgICAg
cmV0dXJuIGRlY29kZWQ7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldENTU0ln
bm9yZVZpc2l0ZWRMaW5rcyhib29sIGVuYWJsZSkKK3sKKyAgICBtX3RvcExvYWRpbmdGcmFtZS0+
cGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpDU1NJZ25vcmVW
aXNpdGVkTGlua3MsIGVuYWJsZSk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlKQogewogICAgIG1fdG9wTG9h
ZGluZ0ZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6
OkRldmVsb3BlckV4dHJhc0VuYWJsZWQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9qc29iamVjdHMuaAppbmRleCA4NWZiMzY0Li4zNmI4Y2JkIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9qc29iamVjdHMuaAorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9qc29iamVjdHMuaApAQCAtODksNiArODksNyBAQCBwdWJsaWMgc2xv
dHM6CiAgICAgdm9pZCBkdW1wU2VsZWN0aW9uUmVjdCgpIGNvbnN0IHt9CiAgICAgdm9pZCBzZXRK
YXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRGaXhl
ZENvbnRlbnRzU2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHZvaWQgc2V0Q1NTSWdu
b3JlVmlzaXRlZExpbmtzKGJvb2wgZW5hYmxlKTsKIAogICAgIGJvb2wgcGF1c2VBbmltYXRpb25B
dFRpbWVPbkVsZW1lbnRXaXRoSWQoY29uc3QgUVN0cmluZyAmYW5pbWF0aW9uTmFtZSwgZG91Ymxl
IHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1lbnRJZCk7CiAgICAgYm9vbCBwYXVzZVRyYW5zaXRp
b25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoY29uc3QgUVN0cmluZyAmcHJvcGVydHlOYW1lLCBkb3Vi
bGUgdGltZSwgY29uc3QgUVN0cmluZyAmZWxlbWVudElkKTsKLS0gCjEuNi4wLjQKCg==
</data>
<flag name="review"
          id="16634"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34405</attachid>
            <date>2009-08-09 04:41:07 -0700</date>
            <delta_ts>2009-12-04 14:07:22 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>0001-Add-option-CSSIgnoreVisitedLinks.patch</filename>
            <type>text/plain</type>
            <size>23093</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSA4ZjkxOWM0Y2U5YWUxZTVhNTA1ODkxYjcxZjQwY2YxNWRlOTU3YjdiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBtd2VuZ2UgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CkRhdGU6
IFR1ZSwgMzAgSnVuIDIwMDkgMjM6MDE6NDggKzAxMDAKU3ViamVjdDogW1BBVENIXSBBZGQgb3B0
aW9uIENTU0lnbm9yZVZpc2l0ZWRMaW5rcwogV2hlbiB1c2VkLCB0aGlzIG9wdGlvbiB3aWxsIGFs
d2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCiBzdHlsZXNo
ZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5
b3VyIGJyb3dzaW5nCiBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBm
b3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCgotLS0KIExheW91dFRlc3RzL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNSArKysrKysKIC4uLi9o
aXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy1leHBlY3RlZC50eHQgIHwgICAgMyArCiAu
Li4vcXQvZmFzdC9oaXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sICB8ICAgMzUg
KysrKysrKysrKysrKwogLi4uL3Jlc291cmNlcy9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtMi5o
dG1sICAgICAgfCAgIDM0ICsrKysrKysrKysrKysKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOSArKysrKysrCiBXZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcCAgICAgICAgICAgICAgICAgICB8ICAgIDcgKysrCiBXZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmggICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsrCiBX
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQg
KysKIFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcCAgICAgICAgICAgICAgICAgICAgIHwg
ICAgNyArKysKIFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmggICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgMyArLQogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDE3ICsrKysrKwogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDIwICsrKysrKysrCiBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5jcHAgICB8ICAgIDQgKysKIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmggICAgIHwgICAgMiArCiBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8gICB8ICAgIDQgKy0KIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L2RydGhpc3RvcnkuY3BwICAgICAgIHwgICA1MiArKysrKysr
KysrKysrKysrKysrKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvZHJ0aGlzdG9yeS5o
ICAgICAgICAgfCAgIDUyICsrKysrKysrKysrKysrKysrKysrCiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9qc29iamVjdHMuY3BwICAgICAgICB8ICAgIDUgKysKIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L2pzb2JqZWN0cy5oICAgICAgICAgIHwgICAgMSArCiAyMCBmaWxlcyBj
aGFuZ2VkLCAyODggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12aXNp
dGVkLWxpbmtzLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MuaHRtbAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9yZXNv
dXJjZXMvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLTIuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2RydGhpc3RvcnkuY3BwCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvZHJ0aGlzdG9yeS5oCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDBmNzlkZDQuLjk3ZTdlYmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wNi0zMCAg
Um9iZXJ0IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSEuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI0MzAwCisKKyAgICAgICAgQWRkIG9wdGlvbiBDU1NJZ25vcmVWaXNpdGVkTGlua3MK
KyAgICAgICAgV2hlbiB1c2VkLCB0aGlzIG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2Ug
Zm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCisgICAgICAgIHN0eWxlc2hlZXRzLiBUaGlz
IHByZXZlbnRzIHdlYnNpdGVzIGZyb20gaW5kaXJlY3RseSBpbnNwZWN0aW5nIHlvdXIgYnJvd3Np
bmcKKyAgICAgICAgaGlzdG9yeSBieSByZXF1ZXN0aW5nIHRoZSAndmlzaXRlZCcgc3RhdGUgZm9y
IGEgc2V0IG9mIFVSTHMgaW4gYSBIVE1MIGRvY3VtZW50LgorCisgICAgICAgICogcGxhdGZvcm0v
cXQvZmFzdC9oaXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5
L3Jlc291cmNlcy9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtMi5odG1sOiBBZGRlZC4KKwogMjAw
OS0wNi0zMCAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQmV0aCBEYWtpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zh
c3QvaGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVlODZiMAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9j
c3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhp
cyBsaW5rIHNob3VsZCBhcHBlYXIgaW4gYmx1ZS4uCisKK0xpbmsgaXMgYmx1ZSAocmdiKDAsIDAs
IDI1NSkpOiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hp
c3RvcnkvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9mYXN0L2hpc3RvcnkvY3NzLWlnbm9yZS12aXNpdGVkLWxpbmtzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDlhOWI5YwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvaGlzdG9yeS9jc3MtaWdub3JlLXZpc2l0ZWQtbGlu
a3MuaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8v
RFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMt
aHRtbDQwL2xvb3NlLmR0ZCI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPkNTU0lnbm9yZVZpc2l0
ZWRMaW5rcyAtIFdoZW4gU2V0LCBWaXNpdGVkIExpbmtzIGFwcGVhciB1bnZpc2l0ZWQ8L1RJVExF
PgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9aXNvLTg4NTktMSI+Cis8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVN0eWxlLVR5cGUi
IGNvbnRlbnQ9InRleHQvY3NzIj4KKzxTVFlMRSB0eXBlPSJ0ZXh0L2NzcyI+CitBIHtjb2xvcjog
Z3JlZW47fQorQTpsaW5rIHtjb2xvcjogYmx1ZTt9CitBOnZpc2l0ZWQge2NvbG9yOiByZWQ7fQor
QTphY3RpdmUge2NvbG9yOiBibGFjazt9Cisjb25lIHtjb2xvcjogIzAwNjYwMDt9Cis8L1NUWUxF
PgorCis8L0hFQUQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnNldENTU0lnbm9yZVZpc2l0ZWRMaW5rcyh0cnVlKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgfQorICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIm15bGluayIpOworICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3Vz
ZUV2ZW50Iik7CisgICAgZXZlbnQuaW5pdEV2ZW50KCJjbGljayIsIHRydWUsIHRydWUpOworICAg
IGVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVudCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8ZGl2PjxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMwMCI+QnVnemlsbGEgUmVmZXJlbmNlLjwvYT48L2Rp
dj4KKzxkaXY+VG8gcnVuIHRoZSB0ZXN0IDxhIGlkPSJteWxpbmsiIGhyZWY9InJlc291cmNlcy9j
c3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtMi5odG1sIj5jbGljayB0aGlzIGxpbmsuPC9hPi48L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jc3MtaWdub3JlLXZpc2l0ZWQtbGlua3MtMi5odG1s
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jc3MtaWdu
b3JlLXZpc2l0ZWQtbGlua3MtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjBmYzE4OTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9m
YXN0L2hpc3RvcnkvcmVzb3VyY2VzL2Nzcy1pZ25vcmUtdmlzaXRlZC1saW5rcy0yLmh0bWwKQEAg
LTAsMCArMSwzNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQu
MCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MC9sb29z
ZS5kdGQiPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5DU1NJZ25vcmVWaXNpdGVkTGlua3MgLSBX
aGVuIFNldCwgVmlzaXRlZCBMaW5rcyBhcHBlYXIgdW52aXNpdGVkPC9USVRMRT4KKzxNRVRBIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04
ODU5LTEiPgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1TdHlsZS1UeXBlIiBjb250ZW50PSJ0
ZXh0L2NzcyI+Cis8U1RZTEUgdHlwZT0idGV4dC9jc3MiPgorQSB7Y29sb3I6IGdyZWVuO30KK0E6
bGluayB7Y29sb3I6IGJsdWU7fQorQTp2aXNpdGVkIHtjb2xvcjogcmVkO30KK0E6YWN0aXZlIHtj
b2xvcjogYmxhY2s7fQorI29uZSB7Y29sb3I6ICMwMDY2MDA7fQorPC9TVFlMRT4KKzxzY3JpcHQ+
CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0Iik7CisgICAgdmFyIG15TGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJteWxpbmsiKTsKKyAgICB2YXIgY29sb3IgPSBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKG15TGluaywgbnVsbCkuY29sb3I7CisgICAgcmVzdWx0LmlubmVyVGV4dCA9
IGNvbG9yID09ICJyZ2IoMCwgMCwgMjU1KSIgPyAiTGluayBpcyBibHVlIChyZ2IoMCwgMCwgMjU1
KSk6IFBBU1MiIDogIkxpbmsgaXMgbm90IGJsdWUuIEZBSUw6ICIrY29sb3I7CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L0hFQUQ+Cis8Ym9keSBpZD0ibXlCb2R5IiBv
bmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPGRpdj48YSBpZD0ibXlsaW5rIiBocmVmPSIuLi9jc3Mt
aWdub3JlLXZpc2l0ZWQtbGlua3MuaHRtbCI+VGhpcyBsaW5rIHNob3VsZCBhcHBlYXIgaW4gYmx1
ZS48L2E+LjwvZGl2PgorICAgIDwvYnI+CisgICAgPGRpdiBpZD0icmVzdWx0Ij4KKyAgICAgICAg
VGVzdCBub3QgcnVuIGNvcnJlY3RseS4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvYm9keT4KKzwv
aHRtbD4KKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBkMjZkNzdiLi40NmFmZjIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDA5LTA2LTMwICBSb2Jl
cnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNDMwMAorCisgICAgICAgIEFkZCBvcHRpb24gQ1NTSWdub3JlVmlzaXRlZExpbmtzCisgICAg
ICAgIFdoZW4gdXNlZCwgdGhpcyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0
aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2
ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisg
ICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNl
dCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcDoKKyAgICAgICAgIChDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OlNlbGVjdG9yQ2hlY2tlcikKKyAgICAgICAgIChDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrUHNldWRvU3RhdGUpCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
aDoKKyAgICAgICAgKiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoU2V0dGlu
Z3M6OnNldENTU0lnbm9yZVZpc2l0ZWRMaW5rcykKKyAgICAgICAgKiBXZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaDoKKwogMjAwOS0wNi0zMCAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
aW5kZXggY2U0YzM0My4uZTIyNDFhZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTg2
Niw3ICs4NjYsMTEgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rv
ckNoZWNrZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHN0cmkKICAgICAsIG1fY29sbGVjdFJ1
bGVzT25seShmYWxzZSkKICAgICAsIG1fcHNldWRvU3R5bGUoTk9QU0VVRE8pCiAgICAgLCBtX2Rv
Y3VtZW50SXNIVE1MKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKQorICAgICwgbV9pZ25vcmVW
aXNpdGVkTGlua3MoZmFsc2UpCiB7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9kb2N1bWVu
dC0+c2V0dGluZ3MoKTsKKyAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmNzc0lnbm9yZVZp
c2l0ZWRMaW5rcygpKQorICAgICAgICBtX2lnbm9yZVZpc2l0ZWRMaW5rcyA9IHRydWU7CiB9CiAK
IFBzZXVkb1N0YXRlIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tQc2V1
ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50LCBib29sIGNoZWNrVmlzaXRlZCkgY29uc3QKQEAgLTg3
OCw2ICs4ODIsOSBAQCBQc2V1ZG9TdGF0ZSBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrUHNldWRvU3RhdGUoRWxlbWVudCogZWxlbWVudAogICAgIGlmICghY2hlY2tWaXNp
dGVkKQogICAgICAgICByZXR1cm4gUHNldWRvQW55TGluazsKIAorICAgIGlmIChtX2lnbm9yZVZp
c2l0ZWRMaW5rcykKKyAgICAgICAgcmV0dXJuIFBzZXVkb0xpbms7CisKICNpZiBQTEFURk9STShR
VCkKICAgICBWZWN0b3I8VUNoYXIsIDUxMj4gdXJsOwogICAgIHZpc2l0ZWRVUkwobV9kb2N1bWVu
dC0+YmFzZVVSTCgpLCAqYXR0ciwgdXJsKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuaCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCA4ZGQz
NmQ3Li4zYWZmMzEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgK
KysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCkBAIC0yMDAsNiArMjAwLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgUHNldWRvSWQgbV9wc2V1ZG9TdHlsZTsKICAgICAgICAgICAg
IGJvb2wgbV9kb2N1bWVudElzSFRNTDsKICAgICAgICAgICAgIG11dGFibGUgSGFzaFNldDxMaW5r
SGFzaCwgTGlua0hhc2hIYXNoPiBtX2xpbmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZTsKKyAgICAg
ICAgICAgIGJvb2wgbV9pZ25vcmVWaXNpdGVkTGlua3M7CiAgICAgICAgIH07CiAKICAgICBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAKaW5kZXggYTU5NmZjNy4uMDU1Nzg0YSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC05
NSw2ICs5NSw3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9lbmZv
cmNlQ1NTTUlNRVR5cGVJblN0cmljdE1vZGUodHJ1ZSkKICAgICAsIG1fdXNlc0VuY29kaW5nRGV0
ZWN0b3IoZmFsc2UpCiAgICAgLCBtX2FsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKGZhbHNlKQor
ICAgICwgbV9jc3NJZ25vcmVWaXNpdGVkTGlua3MoZmFsc2UpCiAgICAgLCBtX2VkaXRpbmdCZWhh
dmlvcigKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIEVkaXRpbmdNYWNCZWhhdmlvcgpAQCAt
MjQ4LDYgKzI0OSwxMSBAQCB2b2lkIFNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVk
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKICAgICBtX3ByaXZhdGVCcm93c2luZ0VuYWJs
ZWQgPSBwcml2YXRlQnJvd3NpbmdFbmFibGVkOwogfQogCit2b2lkIFNldHRpbmdzOjpzZXRDU1NJ
Z25vcmVWaXNpdGVkTGlua3MoYm9vbCBjc3NJZ25vcmVWaXNpdGVkTGlua3MpCit7CisgICAgbV9j
c3NJZ25vcmVWaXNpdGVkTGlua3MgPSBjc3NJZ25vcmVWaXNpdGVkTGlua3M7Cit9CisKIHZvaWQg
U2V0dGluZ3M6OnNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoYm9vbCBq
YXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KQogewogICAgIG1famF2YVNjcmlw
dENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSA9IGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1
dG9tYXRpY2FsbHk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IDYyZmZiYTMuLjgwODQ5ZWYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0y
NDcsNiArMjQ3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wpOwogICAgICAgICBib29sIGFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZDsgfQogCisgICAgICAgIHZvaWQgc2V0Q1NTSWdub3JlVmlzaXRlZExpbmtzKGJv
b2wpOworICAgICAgICBib29sIGNzc0lnbm9yZVZpc2l0ZWRMaW5rcygpIGNvbnN0IHsgcmV0dXJu
IG1fY3NzSWdub3JlVmlzaXRlZExpbmtzOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBQYWdl
KiBtX3BhZ2U7CiAgICAgICAgIApAQCAtMzA5LDYgKzMxMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCBtX2Rvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCA6IDE7CiAg
ICAgICAgIGJvb2wgbV94c3NBdWRpdG9yRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCA6IDE7CisgICAgICAgIGJvb2wgbV9jc3NJZ25vcmVW
aXNpdGVkTGlua3MgOiAxOwogCiAjaWYgVVNFKFNBRkFSSV9USEVNRSkKICAgICAgICAgc3RhdGlj
IGJvb2wgZ1Nob3VsZFBhaW50TmF0aXZlQ29udHJvbHM7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQv
QXBpL3F3ZWJzZXR0aW5ncy5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKaW5k
ZXggMDJlZjRhMC4uMTkwNjFjYyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGlu
Z3MuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApAQCAtMTUzLDYgKzE1
MywxMCBAQCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0
aW5nczo6UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkpOwogICAgICAgICBzZXR0aW5ncy0+c2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCh2YWx1ZSk7CiAKKyAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVz
LnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NTSWdub3JlVmlzaXRlZExpbmtzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNl
dHRpbmdzOjpDU1NJZ25vcmVWaXNpdGVkTGlua3MpKTsKKyAgICAgICAgc2V0dGluZ3MtPnNldENT
U0lnbm9yZVZpc2l0ZWRMaW5rcyh2YWx1ZSk7CisgICAgICAgIAogICAgICAgICB2YWx1ZSA9IGF0
dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0
ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKSk7CiAg
ICAgICAgIHNldHRpbmdzLT5zZXRET01QYXN0ZUFsbG93ZWQodmFsdWUpOwpAQCAtMzI5LDYgKzMz
Myw5IEBAIFFXZWJTZXR0aW5ncyAqUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpCiAgICAg
XHZhbHVlIExvY2FsU3RvcmFnZURhdGFiYXNlRW5hYmxlZCBTcGVjaWZpZXMgd2hldGhlciBzdXBw
b3J0IGZvciB0aGUgSFRNTCA1CiAgICAgICAgIGxvY2FsIHN0b3JhZ2UgZmVhdHVyZSBpcyBlbmFi
bGVkIG9yIG5vdC4KICAgICBcdmFsdWUgTG9jYWxDb250ZW50Q2FuQWNjZXNzUmVtb3RlVXJscyBT
cGVjaWZpZXMgd2hldGhlciBsb2NhbGx5IGxvYWRlZCBkb2N1bWVudHMgYXJlIGFsbG93ZWQgdG8g
YWNjZXNzIHJlbW90ZSB1cmxzLgorICAgIFx2YWx1ZSBDU1NJZ25vcmVWaXNpdGVkTGlua3MgQWx3
YXlzIHJldHVybiBmYWxzZSBmb3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAgICAgICAg
c3R5bGVzaGVldHMuIFRoaXMgcHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5IGluc3Bl
Y3RpbmcgeW91ciBicm93c2luZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2
aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCiAqLwog
CiAvKiEKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmggYi9XZWJLaXQv
cXQvQXBpL3F3ZWJzZXR0aW5ncy5oCmluZGV4IDdjYmNhMjUuLjY3NjExNDAgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2V0
dGluZ3MuaApAQCAtNjQsNyArNjQsOCBAQCBwdWJsaWM6CiAgICAgICAgIE9mZmxpbmVTdG9yYWdl
RGF0YWJhc2VFbmFibGVkLAogICAgICAgICBPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJs
ZWQsCiAgICAgICAgIExvY2FsU3RvcmFnZURhdGFiYXNlRW5hYmxlZCwKLSAgICAgICAgTG9jYWxD
b250ZW50Q2FuQWNjZXNzUmVtb3RlVXJscworICAgICAgICBMb2NhbENvbnRlbnRDYW5BY2Nlc3NS
ZW1vdGVVcmxzLAorICAgICAgICBDU1NJZ25vcmVWaXNpdGVkTGlua3MKICAgICB9OwogICAgIGVu
dW0gV2ViR3JhcGhpYyB7CiAgICAgICAgIE1pc3NpbmdJbWFnZUdyYXBoaWMsCmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA5MmNjY2E5
Li4xNDU5Y2I4IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9x
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0wNi0zMCAgUm9iZXJ0IEhvZ2FuIDxy
b2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKKwor
ICAgICAgICBBZGQgb3B0aW9uIENTU0lnbm9yZVZpc2l0ZWRMaW5rcworICAgICAgICBXaGVuIHVz
ZWQsIHRoaXMgb3B0aW9uIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBmb3IgdGhlICd2aXNpdGVk
JyBzdGF0ZSBpbiBDU1MKKyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMgcHJldmVudHMgd2Vic2l0
ZXMgZnJvbSBpbmRpcmVjdGx5IGluc3BlY3RpbmcgeW91ciBicm93c2luZworICAgICAgICBoaXN0
b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBp
biBhIEhUTUwgZG9jdW1lbnQuCisKKyAgICAgICAgU2VlIFdlYkNvcmUvbWFudWFsLXRlc3RzL2Nz
cy1pZ25vcmUtdmlzaXRlZC1saW5rcy5odG1sOgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5n
cy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSkKKyAgICAgICAgKiBB
cGkvcXdlYnNldHRpbmdzLmg6CisKIDIwMDktMDYtMzAgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWlu
c3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5k
ZXggMGRkZWE2MC4uZDViMjU5ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDA5LTA2LTMwICBS
b2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQzMDAKKworICAgICAgICBBZGQgb3B0aW9uIENTU0lnbm9yZVZpc2l0ZWRMaW5rcwor
ICAgICAgICBXaGVuIHVzZWQsIHRoaXMgb3B0aW9uIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBm
b3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMg
cHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5IGluc3BlY3RpbmcgeW91ciBicm93c2lu
ZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3Ig
YSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCisKKyAgICAgICAgQWRkIGEgc3R1YiBo
aXN0b3J5IG1hbmFnZXIgdG8gcGVyZm9ybSB1bml0IHRlc3QuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9xdC9kcnRoaXN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3F0L2RydGhpc3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9E
dW1wUmVuZGVyVHJlZS5jcHA6IE1vZGlmaWVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0
L0R1bXBSZW5kZXJUcmVlLmg6IE1vZGlmaWVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0
L2pzb2JqZWN0cy5oOiBNb2RpZmllZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9qc29i
amVjdHMuY3BwOiBNb2RpZmllZC4KKwogMjAwOS0wNi0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5jcHAg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXgg
NzhkNTM1YS4uY2I1YTU2NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMjksNiArMjksNyBAQAogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
CisjaW5jbHVkZSAiZHJ0aGlzdG9yeS5oIgogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgiCiAj
aW5jbHVkZSAianNvYmplY3RzLmgiCiAjaW5jbHVkZSAidGVzdHBsdWdpbi5oIgpAQCAtNDUsNiAr
NDYsNyBAQAogI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CiAjaW5jbHVkZSA8cXdlYmZyYW1lLmg+CiAj
aW5jbHVkZSA8cXdlYnZpZXcuaD4KKyNpbmNsdWRlIDxxd2ViaGlzdG9yeS5oPgogI2luY2x1ZGUg
PHF3ZWJzZXR0aW5ncy5oPgogCiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC0xNDksNiArMTUxLDcg
QEAgRHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKCkKIAogICAgIG1fZXZlbnRTZW5kZXIg
PSBuZXcgRXZlbnRTZW5kZXIobV9wYWdlKTsKICAgICBtX3RleHRJbnB1dENvbnRyb2xsZXIgPSBu
ZXcgVGV4dElucHV0Q29udHJvbGxlcihtX3BhZ2UpOworICAgIG1faGlzdG9yeU1hbmFnZXIgPSBu
ZXcgRFJUSGlzdG9yeShtX3BhZ2UpOwogCiAgICAgUU9iamVjdDo6Y29ubmVjdCh0aGlzLCBTSUdO
QUwocXVpdCgpKSwgcUFwcCwgU0xPVChxdWl0KCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CiAg
ICAgcXRfZHJ0X3J1bih0cnVlKTsKQEAgLTE1OCw2ICsxNjEsNyBAQCBEdW1wUmVuZGVyVHJlZTo6
RHVtcFJlbmRlclRyZWUoKQogCiBEdW1wUmVuZGVyVHJlZTo6fkR1bXBSZW5kZXJUcmVlKCkKIHsK
KyAgICBkZWxldGUgbV9oaXN0b3J5TWFuYWdlcjsKICAgICBkZWxldGUgbV9wYWdlOwogCiAgICAg
ZGVsZXRlIG1fc3RkaW47CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9EdW1wUmVuZGVyVHJlZS5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJl
bmRlclRyZWUuaAppbmRleCAxNzBlYTZkLi5iZGQxY2I5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5oCisrKyBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmgKQEAgLTQyLDYgKzQyLDcgQEAgUVRfRU5E
X05BTUVTUEFDRQogY2xhc3MgUVdlYlBhZ2U7CiBjbGFzcyBRV2ViRnJhbWU7CiAKK2NsYXNzIERS
VEhpc3Rvcnk7CiBjbGFzcyBMYXlvdXRUZXN0Q29udHJvbGxlcjsKIGNsYXNzIEV2ZW50U2VuZGVy
OwogY2xhc3MgVGV4dElucHV0Q29udHJvbGxlcjsKQEAgLTg4LDYgKzg5LDcgQEAgcHJpdmF0ZToK
ICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciAqbV9jb250cm9sbGVyOwogCiAgICAgUVdlYlBhZ2Ug
Km1fcGFnZTsKKyAgICBEUlRIaXN0b3J5ICptX2hpc3RvcnlNYW5hZ2VyOwogCiAgICAgRXZlbnRT
ZW5kZXIgKm1fZXZlbnRTZW5kZXI7CiAgICAgVGV4dElucHV0Q29udHJvbGxlciAqbV90ZXh0SW5w
dXRDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
RHVtcFJlbmRlclRyZWUucHJvIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJl
bmRlclRyZWUucHJvCmluZGV4IDk0MTc5NDQuLjUzM2ZlZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLnBybworKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8KQEAgLTEwLDggKzEwLDggQEAg
REVTVERJUiA9IC4uLy4uLy4uL2JpbgogUVQgPSBjb3JlIGd1aQogbWFjeDogUVQgKz0geG1sIG5l
dHdvcmsKIAotSEVBREVSUyA9IFdvcmtRdWV1ZS5oIFdvcmtRdWV1ZUl0ZW0uaCBEdW1wUmVuZGVy
VHJlZS5oIGpzb2JqZWN0cy5oIHRlc3RwbHVnaW4uaAotU09VUkNFUyA9IFdvcmtRdWV1ZS5jcHAg
RHVtcFJlbmRlclRyZWUuY3BwIG1haW4uY3BwIGpzb2JqZWN0cy5jcHAgdGVzdHBsdWdpbi5jcHAK
K0hFQURFUlMgPSBXb3JrUXVldWUuaCBXb3JrUXVldWVJdGVtLmggRHVtcFJlbmRlclRyZWUuaCBq
c29iamVjdHMuaCB0ZXN0cGx1Z2luLmggZHJ0aGlzdG9yeS5oCitTT1VSQ0VTID0gV29ya1F1ZXVl
LmNwcCBEdW1wUmVuZGVyVHJlZS5jcHAgbWFpbi5jcHAganNvYmplY3RzLmNwcCB0ZXN0cGx1Z2lu
LmNwcCBkcnRoaXN0b3J5LmNwcAogCiB1bml4OiFtYWMgewogICAgIFFNQUtFX1JQQVRIRElSID0g
JCRPVVRQVVRfRElSL2xpYiAkJFFNQUtFX1JQQVRIRElSCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9kcnRoaXN0b3J5LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L2RydGhpc3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjkxNDU2MzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9kcnRoaXN0b3J5LmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiZHJ0
aGlzdG9yeS5oIgorI2luY2x1ZGUgPHF3ZWJoaXN0b3J5aW50ZXJmYWNlLmg+CisKKworRFJUSGlz
dG9yeTo6RFJUSGlzdG9yeShRT2JqZWN0ICpwYXJlbnQpCisgICAgOiBRV2ViSGlzdG9yeUludGVy
ZmFjZShwYXJlbnQpCit7CisgICAgUVdlYkhpc3RvcnlJbnRlcmZhY2U6OnNldERlZmF1bHRJbnRl
cmZhY2UodGhpcyk7Cit9CisKK0RSVEhpc3Rvcnk6On5EUlRIaXN0b3J5KCkKK3sKK30KKworYm9v
bCBEUlRIaXN0b3J5OjpoaXN0b3J5Q29udGFpbnMoY29uc3QgUVN0cmluZyAmdXJsKSBjb25zdAor
eworICAgIHJldHVybiBtX2RydEhpc3RvcnkuY29udGFpbnModXJsKTsKK30KKwordm9pZCBEUlRI
aXN0b3J5OjphZGRIaXN0b3J5RW50cnkoY29uc3QgUVN0cmluZyAmdXJsKQoreworICAgIG1fZHJ0
SGlzdG9yeS5pbnNlcnQodXJsLCAobV9kcnRIaXN0b3J5LmNvdW50KCkgKyAxKSk7Cit9CisKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2RydGhpc3RvcnkuaCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2RydGhpc3RvcnkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5jOTMwZGVhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvZHJ0aGlzdG9yeS5oCkBAIC0wLDAgKzEsNTIgQEAKKworLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5u
ZXQ+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworCisjaWZuZGVmIERSVEhJU1RPUllfSAorI2RlZmluZSBEUlRISVNUT1JZX0gKKworI2luY2x1
ZGUgPHFoYXNoLmg+CisjaW5jbHVkZSA8cXdlYmhpc3RvcnlpbnRlcmZhY2UuaD4KKworY2xhc3Mg
RFJUSGlzdG9yeSA6IHB1YmxpYyBRV2ViSGlzdG9yeUludGVyZmFjZQoreworICAgIFFfT0JKRUNU
CitwdWJsaWM6CisgICAgRFJUSGlzdG9yeShRT2JqZWN0ICpwYXJlbnQgPSAwKTsKKyAgICB+RFJU
SGlzdG9yeSgpOworCisgICAgYm9vbCBoaXN0b3J5Q29udGFpbnMoY29uc3QgUVN0cmluZyAmdXJs
KSBjb25zdDsKKyAgICB2b2lkIGFkZEhpc3RvcnlFbnRyeShjb25zdCBRU3RyaW5nICZ1cmwpOwor
Citwcml2YXRlOgorICAgIG11dGFibGUgUUhhc2g8UVN0cmluZywgaW50PiBtX2RydEhpc3Rvcnk7
Cit9OworCisjZW5kaWYgLy8gRFJUSElTVE9SWV9ICisKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L2pzb2JqZWN0cy5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9qc29iamVjdHMuY3BwCmluZGV4IDA5MDg2ZjguLmIxYjA1YWEgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2pzb2JqZWN0cy5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmNwcApAQCAtMjYwLDYgKzI2MCwxMSBA
QCBRU3RyaW5nIExheW91dFRlc3RDb250cm9sbGVyOjpkZWNvZGVIb3N0TmFtZShjb25zdCBRU3Ry
aW5nICZob3N0KQogICAgIHJldHVybiBkZWNvZGVkOwogfQogCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRDU1NJZ25vcmVWaXNpdGVkTGlua3MoYm9vbCBlbmFibGUpCit7CisgICAgbV90
b3BMb2FkaW5nRnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0
aW5nczo6Q1NTSWdub3JlVmlzaXRlZExpbmtzLCBlbmFibGUpOworfQorCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZSkK
IHsKICAgICBtX3RvcExvYWRpbmdGcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1
dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9wZXJFeHRyYXNFbmFibGVkLCB0cnVlKTsKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2pzb2JqZWN0cy5oIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmgKaW5kZXggODVmYjM2NC4uMzZiOGNiZCAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmgKKysr
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvanNvYmplY3RzLmgKQEAgLTg5LDYgKzg5
LDcgQEAgcHVibGljIHNsb3RzOgogICAgIHZvaWQgZHVtcFNlbGVjdGlvblJlY3QoKSBjb25zdCB7
fQogICAgIHZvaWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGUpOwog
ICAgIHZvaWQgc2V0Rml4ZWRDb250ZW50c1NpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAg
ICB2b2lkIHNldENTU0lnbm9yZVZpc2l0ZWRMaW5rcyhib29sIGVuYWJsZSk7CiAKICAgICBib29s
IHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGNvbnN0IFFTdHJpbmcgJmFuaW1h
dGlvbk5hbWUsIGRvdWJsZSB0aW1lLCBjb25zdCBRU3RyaW5nICZlbGVtZW50SWQpOwogICAgIGJv
b2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKGNvbnN0IFFTdHJpbmcgJnBy
b3BlcnR5TmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IFFTdHJpbmcgJmVsZW1lbnRJZCk7Ci0tIAox
LjYuMC40Cgo=
</data>
<flag name="review"
          id="18586"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44334</attachid>
            <date>2009-12-04 14:07:22 -0800</date>
            <delta_ts>2009-12-04 14:10:10 -0800</delta_ts>
            <desc>Update Patch</desc>
            <filename>0001-Add-option-CSSVisitedStyleDisabled.patch</filename>
            <type>text/plain</type>
            <size>30912</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSA0MGEzYjhkZmZkY2E5YjkzNzUxMTA1NzFkYzJkNDE0ODJlZmZhNTg1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBtd2VuZ2UgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CkRhdGU6
IFdlZCwgMTEgTm92IDIwMDkgMTk6MjM6MDUgKzAwMDAKU3ViamVjdDogW1BBVENIXSBBZGQgb3B0
aW9uIENTU1Zpc2l0ZWRTdHlsZURpc2FibGVkLgogV2hlbiB1c2VkLCB0aGlzIG9wdGlvbiB3aWxs
IGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCiBzdHls
ZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGlu
ZyB5b3VyIGJyb3dzaW5nCiBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0
ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCgpUaGUgb3B0aW9uIGhhcyBi
ZWVuIGFkZGVkIHRvIHRoZSBxdCwgZ3RrIGFuZCB3aW4gcG9ydHMgYWxvbmcgd2l0aCB0aGUKYXNz
b2NpYXRlZCB1bml0IHRlc3QgZm9yIGVhY2guCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsrKysrKysrKysrCiAuLi4vY3NzLXZp
c2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0ICAgICAgICB8ICAgIDMgKysKIC4uLi9m
YXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQuaHRtbCAgIHwgICAzNSArKysr
KysrKysrKysrKysrKysrKwogLi4uL3Jlc291cmNlcy9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxl
ZC0yLmh0bWwgICAgfCAgIDMzICsrKysrKysrKysrKysrKysrKwogLi4uL2Nzcy12aXNpdGVkLXN0
eWxlLWRpc2FibGVkLWV4cGVjdGVkLnR4dCAgICAgICAgfCAgICA0ICsrCiBXZWJDb3JlL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKysrKysrKysrKysr
KysKIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwICAgICAgICAgICAgICAgICAgIHwg
ICAgNyArKysrCiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmggICAgICAgICAgICAgICAg
ICAgICB8ICAgIDEgKwogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgICA2ICsrKwogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgICA0ICsrCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMjMgKysrKysrKysrKysrKwogV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwICAgICAgICAgICAgfCAgIDMxICsrKysrKysrKysrKysr
KysrLQogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgICAgICAgICAgICAgICAg
fCAgICA2ICsrKy0KIFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcCAgICAgICAgICAgICAg
ICAgICAgIHwgICAgNyArKysrCiBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDMgKy0KIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxOCArKysrKysrKysrCiBXZWJLaXQvd2luL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKysrKysrKysrKysrKysKIFdl
YktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXMuaWRsICAgICAgICAgIHwgICAgNCAr
KwogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwICAgfCAg
ICAyICsKIFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggICAgICAgICAgICAg
IHwgICAgMSArCiBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcCAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMTYgKysrKysrKysrCiBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmggICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDYgKysrCiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKysrCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKysrKysrKysrKysrCiBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwICB8ICAgIDEgKwogLi4u
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgfCAgICAxICsK
IC4uLi9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCAgIHwgICAg
MiArCiAyNyBmaWxlcyBjaGFuZ2VkLCAzMDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQt
c3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVz
dHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLmh0bWwKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2Nzcy12aXNpdGVk
LXN0eWxlLWRpc2FibGVkLTIuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0
ZWQudHh0CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDFhMWRmOGUuLjgyMTk2OGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAwOS0xMi0wMyAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgb3B0aW9uIENT
U1Zpc2l0ZWRTdHlsZURpc2FibGVkLgorICAgICAgICBXaGVuIHVzZWQsIHRoaXMgb3B0aW9uIHdp
bGwgYWx3YXlzIHJldHVybiBmYWxzZSBmb3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAg
ICAgICAgc3R5bGVzaGVldHMuIFRoaXMgcHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5
IGluc3BlY3RpbmcgeW91ciBicm93c2luZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3Rpbmcg
dGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQu
CisgICAgICAgIAorICAgICAgICBUaGUgb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBxdCwg
Z3RrIGFuZCB3aW4gcG9ydHMgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAgYXNzb2NpYXRlZCB1bml0
IHRlc3QgZm9yIGVhY2guCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0MzAwCisKKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5
bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkv
Y3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9o
aXN0b3J5L3Jlc291cmNlcy9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC0yLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUt
ZGlzYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAwOS0xMi0wMiAgQnJpYW4gV2VpbnN0
ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkg
QWRhbSBSb2Jlbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9jc3Mtdmlz
aXRlZC1zdHlsZS1kaXNhYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rv
cnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZTg2YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMyBAQAorVGhpcyBsaW5rIHNob3VsZCBhcHBlYXIgaW4gYmx1ZS4uCisKK0xp
bmsgaXMgYmx1ZSAocmdiKDAsIDAsIDI1NSkpOiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2Y2U1NjcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQuaHRtbApA
QCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwg
NC4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xv
b3NlLmR0ZCI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPkNTU1Zpc2l0ZWRTdHlsZURpc2FibGVk
IC0gV2hlbiBTZXQsIFZpc2l0ZWQgTGlua3MgYXBwZWFyIHVudmlzaXRlZDwvVElUTEU+Cis8TUVU
QSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1p
c28tODg1OS0xIj4KKzxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtU3R5bGUtVHlwZSIgY29udGVu
dD0idGV4dC9jc3MiPgorPFNUWUxFIHR5cGU9InRleHQvY3NzIj4KK0Ege2NvbG9yOiBncmVlbjt9
CitBOmxpbmsge2NvbG9yOiBibHVlO30KK0E6dmlzaXRlZCB7Y29sb3I6IHJlZDt9CitBOmFjdGl2
ZSB7Y29sb3I6IGJsYWNrO30KKyNvbmUge2NvbG9yOiAjMDA2NjAwO30KKzwvU1RZTEU+CisKKzwv
SEVBRD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRDU1NWaXNpdGVkU3R5bGVEaXNhYmxlZCIsIHRydWUpOworICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgdmFyIGVsZW1lbnQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlsaW5rIik7CisgICAgdmFyIGV2ZW50ID0gZG9jdW1l
bnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTsKKyAgICBldmVudC5pbml0RXZlbnQoImNsaWNr
IiwgdHJ1ZSwgdHJ1ZSk7CisgICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KKzxkaXY+PGEgaHJl
Zj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzAwIj5CdWd6aWxs
YSBSZWZlcmVuY2UuPC9hPjwvZGl2PgorPGRpdj5UbyBydW4gdGhlIHRlc3QgPGEgaWQ9Im15bGlu
ayIgaHJlZj0icmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLTIuaHRtbCI+Y2xp
Y2sgdGhpcyBsaW5rLjwvYT4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZGlz
YWJsZWQtMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jc3Mtdmlz
aXRlZC1zdHlsZS1kaXNhYmxlZC0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNTg0YTg3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9y
eS9yZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtMi5odG1sCkBAIC0wLDAgKzEs
MzMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNp
dGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAvbG9vc2UuZHRkIj4K
KzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+Q1NTVmlzaXRlZFN0eWxlRGlzYWJsZWQgLSBXaGVuIFNl
dCwgVmlzaXRlZCBMaW5rcyBhcHBlYXIgdW52aXNpdGVkPC9USVRMRT4KKzxNRVRBIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEi
PgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1TdHlsZS1UeXBlIiBjb250ZW50PSJ0ZXh0L2Nz
cyI+Cis8U1RZTEUgdHlwZT0idGV4dC9jc3MiPgorQSB7Y29sb3I6IGdyZWVuO30KK0E6bGluayB7
Y29sb3I6IGJsdWU7fQorQTp2aXNpdGVkIHtjb2xvcjogcmVkO30KK0E6YWN0aXZlIHtjb2xvcjog
YmxhY2s7fQorI29uZSB7Y29sb3I6ICMwMDY2MDA7fQorPC9TVFlMRT4KKzxzY3JpcHQ+CitmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0Iik7CisgICAgdmFyIG15TGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJt
eWxpbmsiKTsKKyAgICB2YXIgY29sb3IgPSBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKG15TGluaywgbnVsbCkuY29sb3I7CisgICAgcmVzdWx0LmlubmVyVGV4dCA9IGNvbG9y
ID09ICJyZ2IoMCwgMCwgMjU1KSIgPyAiTGluayBpcyBibHVlIChyZ2IoMCwgMCwgMjU1KSk6IFBB
U1MiIDogIkxpbmsgaXMgbm90IGJsdWUuIEZBSUw6ICIrY29sb3I7CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L0hFQUQ+Cis8Ym9keSBpZD0ibXlCb2R5IiBvbmxvYWQ9
InJ1blRlc3QoKSI+CisgICAgPGRpdj48YSBpZD0ibXlsaW5rIiBocmVmPSIuLi9jc3MtdmlzaXRl
ZC1zdHlsZS1kaXNhYmxlZC5odG1sIj5UaGlzIGxpbmsgc2hvdWxkIGFwcGVhciBpbiBibHVlLjwv
YT4uPC9kaXY+CisgICAgPC9icj4KKyAgICA8ZGl2IGlkPSJyZXN1bHQiPgorICAgICAgICBUZXN0
IG5vdCBydW4gY29ycmVjdGx5LgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3Mt
dmlzaXRlZC1zdHlsZS1kaXNhYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTNkNzlmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRl
ZC1zdHlsZS1kaXNhYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitOUFBfSW5pdGlh
bGl6ZQorVGhpcyBsaW5rIHNob3VsZCBhcHBlYXIgaW4gYmx1ZS4uCisKK0xpbmsgaXMgYmx1ZSAo
cmdiKDAsIDAsIDI1NSkpOiBQQVNTCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE0NTBhMTIuLjhiNmYzNTkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIw
MDktMTItMDMgIFJvYmVydCBIb2dhbiAgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG9wdGlvbiBDU1NW
aXNpdGVkU3R5bGVEaXNhYmxlZC4KKyAgICAgICAgV2hlbiB1c2VkLCB0aGlzIG9wdGlvbiB3aWxs
IGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCisgICAg
ICAgIHN0eWxlc2hlZXRzLiBUaGlzIHByZXZlbnRzIHdlYnNpdGVzIGZyb20gaW5kaXJlY3RseSBp
bnNwZWN0aW5nIHlvdXIgYnJvd3NpbmcKKyAgICAgICAgaGlzdG9yeSBieSByZXF1ZXN0aW5nIHRo
ZSAndmlzaXRlZCcgc3RhdGUgZm9yIGEgc2V0IG9mIFVSTHMgaW4gYSBIVE1MIGRvY3VtZW50Lgor
ICAgICAgICAKKyAgICAgICAgVGhlIG9wdGlvbiBoYXMgYmVlbiBhZGRlZCB0byB0aGUgcXQsIGd0
ayBhbmQgd2luIHBvcnRzIGFsb25nIHdpdGggdGhlCisgICAgICAgIGFzc29jaWF0ZWQgdW5pdCB0
ZXN0IGZvciBlYWNoLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDMwMAorCisgICAgICAgIFRlc3Q6IGZhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1z
dHlsZS1kaXNhYmxlZC5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OlNl
bGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrUHNldWRvU3RhdGUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNl
bGVjdG9yLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldENT
U1Zpc2l0ZWRTdHlsZURpc2FibGVkKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6Y3NzVmlzaXRlZFN0eWxlRGlzYWJsZWQpOgorCiAyMDA5
LTEyLTAyICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCBjNDAyMjI2Li5h
ZjY0NGIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysg
Yi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtODczLDcgKzg3MywxMSBAQCBD
U1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tlcihEb2N1bWVu
dCogZG9jdW1lbnQsIGJvb2wgc3RyaQogICAgICwgbV9jb2xsZWN0UnVsZXNPbmx5KGZhbHNlKQog
ICAgICwgbV9wc2V1ZG9TdHlsZShOT1BTRVVETykKICAgICAsIG1fZG9jdW1lbnRJc0hUTUwoZG9j
dW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCisgICAgLCBtX2Nzc1Zpc2l0ZWRTdHlsZURpc2FibGVk
KGZhbHNlKQogeworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZG9jdW1lbnQtPnNldHRpbmdz
KCk7CisgICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLT5jc3NWaXNpdGVkU3R5bGVEaXNhYmxl
ZCgpKQorICAgICAgICBtX2Nzc1Zpc2l0ZWRTdHlsZURpc2FibGVkID0gdHJ1ZTsKIH0KIAogUHNl
dWRvU3RhdGUgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1BzZXVkb1N0
YXRlKEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgY2hlY2tWaXNpdGVkKSBjb25zdApAQCAtODg1LDYg
Kzg4OSw5IEBAIFBzZXVkb1N0YXRlIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50CiAgICAgaWYgKCFjaGVja1Zpc2l0ZWQp
CiAgICAgICAgIHJldHVybiBQc2V1ZG9BbnlMaW5rOwogCisgICAgaWYgKG1fY3NzVmlzaXRlZFN0
eWxlRGlzYWJsZWQpCisgICAgICAgIHJldHVybiBQc2V1ZG9MaW5rOworCiAjaWYgUExBVEZPUk0o
UVQpCiAgICAgVmVjdG9yPFVDaGFyLCA1MTI+IHVybDsKICAgICB2aXNpdGVkVVJMKG1fZG9jdW1l
bnQtPmJhc2VVUkwoKSwgKmF0dHIsIHVybCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmggYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKaW5kZXggZmFi
NTAwNi4uODRkOWIwOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5o
CisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtMjA4LDYgKzIwOCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIFBzZXVkb0lkIG1fcHNldWRvU3R5bGU7CiAgICAgICAgICAg
ICBib29sIG1fZG9jdW1lbnRJc0hUTUw7CiAgICAgICAgICAgICBtdXRhYmxlIEhhc2hTZXQ8TGlu
a0hhc2gsIExpbmtIYXNoSGFzaD4gbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGU7CisgICAg
ICAgICAgICBib29sIG1fY3NzVmlzaXRlZFN0eWxlRGlzYWJsZWQ7CiAgICAgICAgIH07CiAKICAg
ICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggMmUwZjQwMi4uYzk4OTBkYSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
CkBAIC0xMDIsNiArMTAyLDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAg
LCBtX2VuZm9yY2VDU1NNSU1FVHlwZUluU3RyaWN0TW9kZSh0cnVlKQogICAgICwgbV91c2VzRW5j
b2RpbmdEZXRlY3RvcihmYWxzZSkKICAgICAsIG1fYWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3Mo
ZmFsc2UpCisgICAgLCBtX2Nzc1Zpc2l0ZWRTdHlsZURpc2FibGVkKGZhbHNlKQogICAgICwgbV9l
ZGl0aW5nQmVoYXZpb3IoCiAjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0p
ICYmIFBMQVRGT1JNKERBUldJTikpCiAgICAgICAgIC8vIChQTEFURk9STShNQUMpIGlzIGFsd2F5
cyBmYWxzZSBpbiBDaHJvbWl1bSwgaGVuY2UgdGhlIGV4dHJhIGNvbmRpdGlvbi4pCkBAIC0yNjUs
NiArMjY2LDExIEBAIHZvaWQgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogICAgIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CiB9CiAKK3ZvaWQgU2V0dGluZ3M6OnNldENTU1Zpc2l0
ZWRTdHlsZURpc2FibGVkKGJvb2wgY3NzVmlzaXRlZFN0eWxlRGlzYWJsZWQpCit7CisgICAgbV9j
c3NWaXNpdGVkU3R5bGVEaXNhYmxlZCA9IGNzc1Zpc2l0ZWRTdHlsZURpc2FibGVkOworfQorCiB2
b2lkIFNldHRpbmdzOjpzZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KGJv
b2wgamF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSkKIHsKICAgICBtX2phdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgPSBqYXZhU2NyaXB0Q2FuT3BlbldpbmRv
d3NBdXRvbWF0aWNhbGx5OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBmYTM4NWU1Li4wNWE5ZmY0IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApA
QCAtMjczLDYgKzI3Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRX
ZWJHTEVuYWJsZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgd2ViR0xFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJHTEVuYWJsZWQ7IH0KIAorICAgICAgICB2b2lkIHNldENTU1Zpc2l0ZWRTdHls
ZURpc2FibGVkKGJvb2wpOworICAgICAgICBib29sIGNzc1Zpc2l0ZWRTdHlsZURpc2FibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9jc3NWaXNpdGVkU3R5bGVEaXNhYmxlZDsgfQorCiAgICAgcHJpdmF0
ZToKICAgICAgICAgUGFnZSogbV9wYWdlOwogICAgICAgICAKQEAgLTM0Miw2ICszNDUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9zaG93UmVwYWludENvdW50ZXIgOiAx
OwogICAgICAgICBib29sIG1fZXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQgOiAxOwog
ICAgICAgICBib29sIG1fd2ViR0xFbmFibGVkIDogMTsKKyAgICAgICAgYm9vbCBtX2Nzc1Zpc2l0
ZWRTdHlsZURpc2FibGVkIDogMTsKIAogI2lmIFVTRShTQUZBUklfVEhFTUUpCiAgICAgICAgIHN0
YXRpYyBib29sIGdTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBmNTg5ODEzLi43MGE0
MjhkIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDA5LTEyLTAzICBSb2JlcnQgSG9nYW4gIDxyb2Jl
cnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBvcHRpb24gQ1NTVmlzaXRlZFN0eWxlRGlzYWJsZWQuCisgICAgICAg
IFdoZW4gdXNlZCwgdGhpcyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUg
J3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50
cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAg
ICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBv
ZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKyAgICAgICAgCisgICAgICAgIFRoZSBvcHRpb24g
aGFzIGJlZW4gYWRkZWQgdG8gdGhlIHF0LCBndGsgYW5kIHdpbiBwb3J0cyBhbG9uZyB3aXRoIHRo
ZQorICAgICAgICBhc3NvY2lhdGVkIHVuaXQgdGVzdCBmb3IgZWFjaC4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKKworICAgICAgICAqIHdl
YmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdz
X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcHJvcGVydHkp
OgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfcHJvcGVydHkpOgorICAgICAgICAo
d2Via2l0X3dlYl9zZXR0aW5nc19jb3B5KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmll
dy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnkpOgorCiAyMDA5LTEyLTAxICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnNldHRpbmdzLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApp
bmRleCAxNDNhZTA2Li43OTUwN2ZiIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJzZXR0aW5ncy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuY3BwCkBAIC05OCw2ICs5OCw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRl
IHsKICAgICBnYm9vbGVhbiBlbmFibGVfdW5pdmVyc2FsX2FjY2Vzc19mcm9tX2ZpbGVfdXJpczsK
ICAgICBnYm9vbGVhbiBlbmFibGVfZG9tX3Bhc3RlOwogICAgIGdib29sZWFuIHRhYl9rZXlfY3lj
bGVzX3Rocm91Z2hfZWxlbWVudHM7CisgICAgZ2Jvb2xlYW4gY3NzX2lnbm9yZV92aXNpdGVkX2xp
bmtzOwogfTsKIAogI2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdTX0dFVF9QUklWQVRFKG9iaikg
KEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVfV0VCX1NFVFRJ
TkdTLCBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpKQpAQCAtMTM5LDcgKzE0MCw4IEBAIGVudW0g
ewogICAgIFBST1BfRURJVElOR19CRUhBVklPUiwKICAgICBQUk9QX0VOQUJMRV9VTklWRVJTQUxf
QUNDRVNTX0ZST01fRklMRV9VUklTLAogICAgIFBST1BfRU5BQkxFX0RPTV9QQVNURSwKLSAgICBQ
Uk9QX1RBQl9LRVlfQ1lDTEVTX1RIUk9VR0hfRUxFTUVOVFMKKyAgICBQUk9QX1RBQl9LRVlfQ1lD
TEVTX1RIUk9VR0hfRUxFTUVOVFMsCisgICAgUFJPUF9DU1NfSUdOT1JFX1ZJU0lURURfTElOS1MK
IH07CiAKIC8vIENyZWF0ZSBhIGRlZmF1bHQgdXNlciBhZ2VudCBzdHJpbmcKQEAgLTY4Nyw2ICs2
ODksMjYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KFdlYktp
dFdlYlNldHRpbmdzQ2xhc3MqIGtsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKIAogICAgIGdfdHlwZV9jbGFzc19h
ZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkpOworCisg
ICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpjc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxl
ZDoKKyAgICAqCisgICAgKiBXaGV0aGVyIHRvIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAn
dmlzaXRlZCcgc3RhdGUgaW4gQ1NTCisgICAgKiBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3
ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgKiBo
aXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJM
cyBpbiBhIEhUTUwgZG9jdW1lbnQuCisgICAgKgorICAgICogVGhpcyBpcyBjdXJyZW50bHkgZXhw
ZXJpbWVudGFsIGZvciBXZWJLaXRHdGsuCisgICAgKgorICAgICogU2luY2U6IDEuMS4yCisgICAg
Ki8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0NTU19JR05PUkVfVklTSVRF
RF9MSU5LUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3Bl
Y19ib29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNzcy12aXNp
dGVkLXN0eWxlLWRpc2FibGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF8oIkVuYWJsZSBDU1MgSWdub3JlIFZpc2l0ZWQgTGlua3MiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF8oIklnbm9yZXMgVmlzaXRlZCBMaW5rcyIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbGFncykpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRp
bmdzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYl9zZXR0aW5ncykKQEAgLTg4NSw2ICs5MDcs
OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbgogICAgIGNhc2UgUFJPUF9UQUJfS0VZX0NZQ0xF
U19USFJPVUdIX0VMRU1FTlRTOgogICAgICAgICBwcml2LT50YWJfa2V5X2N5Y2xlc190aHJvdWdo
X2VsZW1lbnRzID0gIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOwogICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBST1BfQ1NTX0lHTk9SRV9WSVNJVEVEX0xJTktTOgorICAgICAgICBwcml2LT5j
c3NfaWdub3JlX3Zpc2l0ZWRfbGlua3MgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElE
X1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAg
LTEwMDIsNiArMTAyNyw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3By
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhCiAgICAgY2FzZSBQUk9Q
X1RBQl9LRVlfQ1lDTEVTX1RIUk9VR0hfRUxFTUVOVFM6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jv
b2xlYW4odmFsdWUsIHByaXYtPnRhYl9rZXlfY3ljbGVzX3Rocm91Z2hfZWxlbWVudHMpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQ1NTX0lHTk9SRV9WSVNJVEVEX0xJTktTOgorICAg
ICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5jc3NfaWdub3JlX3Zpc2l0ZWRf
bGlua3MpOworICAgICAgICBicmVhazsKICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgICAg
YnJlYWs7CkBAIC0xMDY3LDYgKzEwOTUsNyBAQCBXZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0X3dl
Yl9zZXR0aW5nc19jb3B5KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJfc2V0dGluZ3MpCiAgICAgICAg
ICAgICAgICAgICJlZGl0aW5nLWJlaGF2aW9yIiwgcHJpdi0+ZWRpdGluZ19iZWhhdmlvciwKICAg
ICAgICAgICAgICAgICAgImVuYWJsZS11bml2ZXJzYWwtYWNjZXNzLWZyb20tZmlsZS11cmlzIiwg
cHJpdi0+ZW5hYmxlX3VuaXZlcnNhbF9hY2Nlc3NfZnJvbV9maWxlX3VyaXMsCiAgICAgICAgICAg
ICAgICAgICJlbmFibGUtZG9tLXBhc3RlIiwgcHJpdi0+ZW5hYmxlX2RvbV9wYXN0ZSwKKyAgICAg
ICAgICAgICAgICAgImNzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkIiwgcHJpdi0+Y3NzX2lnbm9y
ZV92aXNpdGVkX2xpbmtzLAogICAgICAgICAgICAgICAgICBOVUxMKSk7CiAKICAgICByZXR1cm4g
Y29weTsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggNGRhNjVhYS4uYTRhMmYx
YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTIzODgsNyArMjM4OCw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKICAgICAgICAgZW5hYmxlU2NyaXB0cywgZW5hYmxlUGx1Z2lucywgZW5hYmxl
RGV2ZWxvcGVyRXh0cmFzLCByZXNpemFibGVUZXh0QXJlYXMsCiAgICAgICAgIGVuYWJsZVByaXZh
dGVCcm93c2luZywgZW5hYmxlQ2FyZXRCcm93c2luZywgZW5hYmxlSFRNTDVEYXRhYmFzZSwgZW5h
YmxlSFRNTDVMb2NhbFN0b3JhZ2UsCiAgICAgICAgIGVuYWJsZVhTU0F1ZGl0b3IsIGphdmFzY3Jp
cHRDYW5PcGVuV2luZG93cywgZW5hYmxlT2ZmbGluZVdlYkFwcENhY2hlLAotICAgICAgICBlbmFi
bGVVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSSSwgZW5hYmxlRE9NUGFzdGUsIHRhYktleUN5Y2xl
c1Rocm91Z2hFbGVtZW50czsKKyAgICAgICAgZW5hYmxlVW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVV
UkksIGVuYWJsZURPTVBhc3RlLCB0YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMsIENTU1Zpc2l0
ZWRTdHlsZURpc2FibGVkOwogCiAgICAgV2ViS2l0RWRpdGluZ0JlaGF2aW9yIGVkaXRpbmdCZWhh
dmlvcjsKIApAQCAtMjQxOSw2ICsyNDE5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICAgICAgICAg
ICAiZW5hYmxlLXVuaXZlcnNhbC1hY2Nlc3MtZnJvbS1maWxlLXVyaXMiLCAmZW5hYmxlVW5pdmVy
c2FsQWNjZXNzRnJvbUZpbGVVUkksCiAgICAgICAgICAgICAgICAgICJlbmFibGUtZG9tLXBhc3Rl
IiwgJmVuYWJsZURPTVBhc3RlLAogICAgICAgICAgICAgICAgICAidGFiLWtleS1jeWNsZXMtdGhy
b3VnaC1lbGVtZW50cyIsICZ0YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMsCisgICAgICAgICAg
ICAgICAgICJjc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZCIsICZDU1NWaXNpdGVkU3R5bGVEaXNh
YmxlZCwKICAgICAgICAgICAgICAgICAgTlVMTCk7CiAKICAgICBzZXR0aW5ncy0+c2V0RGVmYXVs
dFRleHRFbmNvZGluZ05hbWUoZGVmYXVsdEVuY29kaW5nKTsKQEAgLTI0NDYsNiArMjQ0Nyw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKICAgICBzZXR0aW5ncy0+c2V0RWRpdGluZ0JlaGF2aW9yKGNvcmUoZWRpdGlu
Z0JlaGF2aW9yKSk7CiAgICAgc2V0dGluZ3MtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZp
bGVVUkxzKGVuYWJsZVVuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJJKTsKICAgICBzZXR0aW5ncy0+
c2V0RE9NUGFzdGVBbGxvd2VkKGVuYWJsZURPTVBhc3RlKTsKKyAgICBzZXR0aW5ncy0+c2V0Q1NT
VmlzaXRlZFN0eWxlRGlzYWJsZWQoQ1NTVmlzaXRlZFN0eWxlRGlzYWJsZWQpOwogCiAgICAgUGFn
ZSogcGFnZSA9IGNvcmUod2ViVmlldyk7CiAgICAgaWYgKHBhZ2UpCkBAIC0yNTQzLDYgKzI1NDUs
OCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KFdlYktpdFdl
YlNldHRpbmdzKiB3ZWJTZXR0aW5ncywgR1BhcgogICAgICAgICBpZiAocGFnZSkKICAgICAgICAg
ICAgIHBhZ2UtPnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhnX3ZhbHVlX2dldF9ib29s
ZWFuKCZ2YWx1ZSkpOwogICAgIH0KKyAgICBlbHNlIGlmIChuYW1lID09IGdfaW50ZXJuX3N0cmlu
ZygiY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQiKSkKKyAgICAgICAgc2V0dGluZ3MtPnNldENT
U1Zpc2l0ZWRTdHlsZURpc2FibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVlKSk7CiAgICAg
ZWxzZSBpZiAoIWdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19PQkpFQ1RfR0VUX0NMQVNT
KHdlYlNldHRpbmdzKSwgbmFtZSkpCiAgICAgICAgIGdfd2FybmluZygiVW5leHBlY3RlZCBzZXR0
aW5nICclcyciLCBuYW1lKTsKICAgICBnX3ZhbHVlX3Vuc2V0KCZ2YWx1ZSk7CmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0
aW5ncy5jcHAKaW5kZXggOWE1YWI0Ni4uYmQ4ZGVlZSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0Fw
aS9xd2Vic2V0dGluZ3MuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApA
QCAtMTU4LDYgKzE1OCwxMCBAQCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZh
bHVlKFFXZWJTZXR0aW5nczo6UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkpOwogICAgICAgICBzZXR0
aW5ncy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCh2YWx1ZSk7CiAKKyAgICAgICAgdmFsdWUg
PSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NTVmlzaXRlZFN0eWxlRGlzYWJsZWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRl
cy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU1Zpc2l0ZWRTdHlsZURpc2FibGVkKSk7CisgICAgICAg
IHNldHRpbmdzLT5zZXRDU1NWaXNpdGVkU3R5bGVEaXNhYmxlZCh2YWx1ZSk7CisgICAgICAgIAog
ICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0
Q2FuQWNjZXNzQ2xpcGJvYXJkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuQWNj
ZXNzQ2xpcGJvYXJkKSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRET01QYXN0ZUFsbG93ZWQodmFs
dWUpOwpAQCAtMzQzLDYgKzM0Nyw5IEBAIFFXZWJTZXR0aW5ncyogUVdlYlNldHRpbmdzOjpnbG9i
YWxTZXR0aW5ncygpCiAgICAgXHZhbHVlIExvY2FsU3RvcmFnZURhdGFiYXNlRW5hYmxlZCBcZXtU
aGlzIGVudW0gdmFsdWUgaXMgZGVwcmVjYXRlZC59IFVzZQogICAgICAgICBRV2ViU2V0dGluZ3M6
OkxvY2FsU3RvcmFnZUVuYWJsZWQgaW5zdGVhZC4KICAgICBcdmFsdWUgTG9jYWxDb250ZW50Q2Fu
QWNjZXNzUmVtb3RlVXJscyBTcGVjaWZpZXMgd2hldGhlciBsb2NhbGx5IGxvYWRlZCBkb2N1bWVu
dHMgYXJlIGFsbG93ZWQgdG8gYWNjZXNzIHJlbW90ZSB1cmxzLgorICAgIFx2YWx1ZSBDU1NWaXNp
dGVkU3R5bGVEaXNhYmxlZCBBbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0
YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBm
cm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3Rvcnkg
YnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEg
SFRNTCBkb2N1bWVudC4KICovCiAKIC8qIQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vi
c2V0dGluZ3MuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKaW5kZXggNjlmM2IxMS4u
MjgyMzc5NSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaAorKysgYi9X
ZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oCkBAIC02Nyw3ICs2Nyw4IEBAIHB1YmxpYzoKICAg
ICAgICAgTG9jYWxTdG9yYWdlRGF0YWJhc2VFbmFibGVkID0gTG9jYWxTdG9yYWdlRW5hYmxlZCwK
ICNlbmRpZgogICAgICAgICBMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzLAotICAgICAg
ICBEbnNQcmVmZXRjaEVuYWJsZWQKKyAgICAgICAgRG5zUHJlZmV0Y2hFbmFibGVkLAorICAgICAg
ICBDU1NWaXNpdGVkU3R5bGVEaXNhYmxlZAogICAgIH07CiAgICAgZW51bSBXZWJHcmFwaGljIHsK
ICAgICAgICAgTWlzc2luZ0ltYWdlR3JhcGhpYywKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFu
Z2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGYwMjE0MGIuLmY1YzMyZmQgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDA5LTEyLTAzICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAcm9iZXJ0aG9n
YW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBvcHRpb24gQ1NTVmlzaXRlZFN0eWxlRGlzYWJsZWQuCisgICAgICAgIFdoZW4gdXNlZCwg
dGhpcyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0
YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBm
cm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3Rvcnkg
YnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEg
SFRNTCBkb2N1bWVudC4KKyAgICAgICAgCisgICAgICAgIFRoZSBvcHRpb24gaGFzIGJlZW4gYWRk
ZWQgdG8gdGhlIHF0LCBndGsgYW5kIHdpbiBwb3J0cyBhbG9uZyB3aXRoIHRoZQorICAgICAgICBh
c3NvY2lhdGVkIHVuaXQgdGVzdCBmb3IgZWFjaC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAJCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRp
bmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKyAgICAgICAg
KiBBcGkvcXdlYnNldHRpbmdzLmg6CisKIDIwMDktMTItMDEgIE5pa29sYXMgWmltbWVybWFubiAg
PG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBUcnkgdG8gZml4
IFF0IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2lu
L0NoYW5nZUxvZwppbmRleCBhNGM2NWQ2Li42ZGI0ZDdkIDEwMDY0NAotLS0gYS9XZWJLaXQvd2lu
L0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisy
MDA5LTEyLTAzICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBvcHRpb24gQ1NT
VmlzaXRlZFN0eWxlRGlzYWJsZWQuCisgICAgICAgIFdoZW4gdXNlZCwgdGhpcyBvcHRpb24gd2ls
bCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAg
ICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkg
aW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0
aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4K
KyAgICAgICAgCisgICAgICAgIFRoZSBvcHRpb24gaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHF0LCBn
dGsgYW5kIHdpbiBwb3J0cyBhbG9uZyB3aXRoIHRoZQorICAgICAgICBhc3NvY2lhdGVkIHVuaXQg
dGVzdCBmb3IgZWFjaC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjQzMDAKKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzLmlk
bDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVQYWdlKToKKyAgICAgICAgKiBXZWJQcmVm
ZXJlbmNlS2V5c1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5jcHA6CisgICAg
ICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncyk6CisgICAgICAg
IChXZWJQcmVmZXJlbmNlczo6c2V0Q1NTVmlzaXRlZFN0eWxlRGlzYWJsZWQpOgorICAgICAgICAo
V2ViUHJlZmVyZW5jZXM6OmNzc1Zpc2l0ZWRTdHlsZURpc2FibGVkKToKKyAgICAgICAgKiBXZWJQ
cmVmZXJlbmNlcy5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6
bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKwogMjAwOS0xMi0wMiAgVGltb3RoeSBIYXRjaGVy
ICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBzZXRWYWx1ZUZvclVzZXIgdG8g
dGhlIGVuZCBvZiB0aGUgRE9NSFRNTElucHV0RWxlbWVudCBpbnRlcmZhY2UKZGlmZiAtLWdpdCBh
L1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXMuaWRsIGIvV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwKaW5kZXggOWE1MmQ3Yy4uYmE2OTA2NiAxMDA2
NDQKLS0tIGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwKKysrIGIv
V2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwKQEAgLTE4Niw0ICsxODYs
OCBAQCBpbnRlcmZhY2UgSVdlYlByZWZlcmVuY2VzIDogSVVua25vd24KIAogICAgIEhSRVNVTFQg
c2V0Wm9vbXNUZXh0T25seShCT09MIHpvb21zVGV4dE9ubHkpOwogICAgIEhSRVNVTFQgem9vbXNU
ZXh0T25seShCT09MICp6b29tc1RleHRPbmx5KTsKKworICAgIEhSRVNVTFQgc2V0Q1NTVmlzaXRl
ZFN0eWxlRGlzYWJsZWQoW2luXSBCT09MIGVuYWJsZWQpOworICAgIEhSRVNVTFQgY3NzVmlzaXRl
ZFN0eWxlRGlzYWJsZWQoW291dCwgcmV0dmFsXSBCT09MKiBlbmFibGVkKTsKKwogfQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDc1
YTc2ZjIuLjg1NzFiNDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5jcHAKQEAgLTE2OCw2ICsxNjgsOCBAQCBQYWdlKiBXZWJJbnNwZWN0b3JD
bGllbnQ6OmNyZWF0ZVBhZ2UoKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoRkFJTEVEKHBy
ZWZlcmVuY2VzLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZSgxMykpKQogICAgICAgICByZXR1cm4g
MDsKKyAgICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRDU1NWaXNpdGVkU3R5bGVEaXNhYmxl
ZChGQUxTRSkpKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChGQUlMRUQobV93ZWJWaWV3
LT5zZXRQcmVmZXJlbmNlcyhwcmVmZXJlbmNlcy5nZXQoKSkpKQogICAgICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9XZWJL
aXQvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCmluZGV4IDA5YWVhZmYuLjkyNmFhOTMg
MTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKKysrIGIv
V2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaApAQCAtNjUsNiArNjUsNyBAQAog
I2RlZmluZSBXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSAiV2ViS2l0VXNlc1BhZ2VD
YWNoZVByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdlYktpdENhY2hlTW9kZWxQcmVmZXJlbmNlS2V5
ICJXZWJLaXRDYWNoZU1vZGVsUHJlZmVyZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0TG9jYWxTdG9y
YWdlRGF0YWJhc2VQYXRoUHJlZmVyZW5jZUtleSAiV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoIgorI2RlZmluZSBXZWJLaXRDU1NWaXNpdGVkU3R5bGVEaXNhYmxlZEtleSAiV2ViS2l0Q1NT
VmlzaXRlZFN0eWxlRGlzYWJsZWQiCiAKIC8vIFRoZXNlIGFyZSBwcml2YXRlIGJvdGggYmVjYXVz
ZSBjYWxsZXJzIHNob3VsZCBiZSB1c2luZyB0aGUgY292ZXIgbWV0aG9kcyBhbmQgYmVjYXVzZSB0
aGUKIC8vIGNvdmVyIG1ldGhvZHMgdGhlbXNlbHZlcyBhcmUgcHJpdmF0ZS4KZGlmZiAtLWdpdCBh
L1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
cy5jcHAKaW5kZXggNjUyZTYxOS4uYWUwODE2ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJQ
cmVmZXJlbmNlcy5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTI1
NSw2ICsyNTUsOCBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRp
bmdzKCkKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBsdWdpbkFsbG93ZWRSdW5UaW1lKEFk
b3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiJXUiKSwgbnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRl
ZmF1bHRzLCBDRlNUUihXZWJLaXRQbHVnaW5BbGxvd2VkUnVuVGltZVByZWZlcmVuY2VLZXkpLCBw
bHVnaW5BbGxvd2VkUnVuVGltZS5nZXQoKSk7CiAKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShk
ZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q1NTVmlzaXRlZFN0eWxlRGlzYWJsZWRQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKKwogICAgIGRlZmF1bHRTZXR0aW5ncyA9IGRlZmF1bHRzOwog
fQogCkBAIC0xMzQ1LDYgKzEzNDcsMjAgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6cGx1Z2lu
QWxsb3dlZFJ1blRpbWUoVUlOVCogYWxsb3dlZFJ1blRpbWUpCiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldENTU1Zpc2l0
ZWRTdHlsZURpc2FibGVkKAorICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQoreworICAgIHNl
dEJvb2xWYWx1ZShDRlNUUihXZWJLaXRDU1NWaXNpdGVkU3R5bGVEaXNhYmxlZFByZWZlcmVuY2VL
ZXkpLCBlbmFibGVkKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6Y3NzVmlzaXRlZFN0eWxlRGlzYWJsZWQoCisgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQoreworICAgICplbmFibGVkID0gYm9vbFZh
bHVlRm9yS2V5KENGU1RSKFdlYktpdENTU1Zpc2l0ZWRTdHlsZURpc2FibGVkUHJlZmVyZW5jZUtl
eSkpOworICAgIHJldHVybiBTX09LOworfQorCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRQ
cmVmZXJlbmNlRm9yVGVzdChCU1RSIGtleSwgQlNUUiB2YWx1ZSkKIHsKICAgICBpZiAoIVN5c1N0
cmluZ0xlbihrZXkpIHx8ICFTeXNTdHJpbmdMZW4odmFsdWUpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3dpbi9XZWJQcmVmZXJlbmNlcy5oIGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCmluZGV4
IDJhODkyNjkuLjgzODRjOTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMu
aAorKysgYi9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmgKQEAgLTM4MCw2ICszODAsMTIgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwbHVnaW5BbGxv
d2VkUnVuVGltZSgKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFVJTlQqIGFsbG93ZWRSdW5UaW1l
KTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDU1NWaXNpdGVk
U3R5bGVEaXNhYmxlZCgKKyAgICAgICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQpOworCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNzc1Zpc2l0ZWRTdHlsZURpc2FibGVk
KAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpOworCiAgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFByZWZlcmVuY2VGb3JUZXN0KAogICAg
IC8qIFtpbl0gKi8gQlNUUiBrZXksCiAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKTsKZGlmZiAt
LWdpdCBhL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmlu
ZGV4IDMwZjJiMGEuLmFhNjk3N2YgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViVmlldy5jcHAK
KysrIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtNDUwOCw2ICs0NTA4LDExIEBAIEhSRVNV
TFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbikKICAgICBzZXR0aW5ncy0+c2V0RXhwZXJpbWVudGFsV2ViR0xFbmFibGVkKHRy
dWUpOwogI2VuZGlmICAvLyBFTkFCTEUoM0RfQ0FOVkFTKQogCisgICAgaHIgPSBwcmVmZXJlbmNl
cy0+Y3NzVmlzaXRlZFN0eWxlRGlzYWJsZWQoJmVuYWJsZWQpOworICAgIGlmIChGQUlMRUQoaHIp
KQorICAgICAgICByZXR1cm4gaHI7CisgICAgc2V0dGluZ3MtPnNldENTU1Zpc2l0ZWRTdHlsZURp
c2FibGVkKCEhZW5hYmxlZCk7CisKICAgICBpZiAoIW1fY2xvc2VXaW5kb3dUaW1lci5pc0FjdGl2
ZSgpKQogICAgICAgICBtX21haW5GcmFtZS0+aW52YWxpZGF0ZSgpOyAvLyBGSVhNRQogCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5k
ZXggNzRiZTExNS4uOThjYWM4OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDA5LTEyLTAzICBS
b2JlcnQgSG9nYW4gIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBvcHRpb24gQ1NTVmlzaXRlZFN0eWxl
RGlzYWJsZWQuCisgICAgICAgIFdoZW4gdXNlZCwgdGhpcyBvcHRpb24gd2lsbCBhbHdheXMgcmV0
dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNo
ZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5
b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQn
IHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKyAgICAgICAgCisg
ICAgICAgIFRoZSBvcHRpb24gaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHF0LCBndGsgYW5kIHdpbiBw
b3J0cyBhbG9uZyB3aXRoIHRoZQorICAgICAgICBhc3NvY2lhdGVkIHVuaXQgdGVzdCBmb3IgZWFj
aC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQz
MDAKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6Cisg
ICAgICAgIChyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoY29w
eVdlYlNldHRpbmdLZXkpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om92ZXJyaWRl
UHJlZmVyZW5jZSk6CisKIDIwMDktMTItMDIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGQzMmIwOTYuLjI4
ZDljODQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVu
ZGVyVHJlZS5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5k
ZXJUcmVlLmNwcApAQCAtMzMzLDYgKzMzMyw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0RGVmYXVsdHNU
b0NvbnNpc3RlbnRWYWx1ZXMoKQogICAgICAgICAgICAgICAgICAiZGVmYXVsdC1mb250LXNpemUi
LCAxNiwKICAgICAgICAgICAgICAgICAgImRlZmF1bHQtbW9ub3NwYWNlLWZvbnQtc2l6ZSIsIDEz
LAogICAgICAgICAgICAgICAgICAibWluaW11bS1mb250LXNpemUiLCAxLAorICAgICAgICAgICAg
ICAgICAiY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQiLCBGQUxTRSwKICAgICAgICAgICAgICAg
ICAgTlVMTCk7CiAKICAgICB3ZWJraXRfd2ViX2ZyYW1lX2NsZWFyX21haW5fZnJhbWVfbmFtZSht
YWluRnJhbWUpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggNmU5NGMxYy4uMDY3Y2I4MCAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9s
bGVyR3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwCkBAIC02OCw2ICs2OCw3IEBAIHN0YXRpYyBnY2hhciogY29weVdl
YlNldHRpbmdLZXkoZ2NoYXIqIHByZWZlcmVuY2VLZXkpCiAgICAgICAgIGtleVRhYmxlID0gZ19o
YXNoX3RhYmxlX25ldyhnX3N0cl9oYXNoLCBnX3N0cl9lcXVhbCk7CiAgICAgICAgIGdfaGFzaF90
YWJsZV9pbnNlcnQoa2V5VGFibGUsIGdfc3RyZHVwKCJXZWJLaXRKYXZhU2NyaXB0RW5hYmxlZCIp
LCBnX3N0cmR1cCgiZW5hYmxlLXNjcmlwdHMiKSk7CiAgICAgICAgIGdfaGFzaF90YWJsZV9pbnNl
cnQoa2V5VGFibGUsIGdfc3RyZHVwKCJXZWJLaXREZWZhdWx0Rm9udFNpemUiKSwgZ19zdHJkdXAo
ImRlZmF1bHQtZm9udC1zaXplIikpOworICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0KGtleVRh
YmxlLCBnX3N0cmR1cCgiV2ViS2l0Q1NTVmlzaXRlZFN0eWxlRGlzYWJsZWQiKSwgZ19zdHJkdXAo
ImNzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkIikpOwogICAgIH0KIAogICAgIHJldHVybiBnX3N0
cmR1cChzdGF0aWNfY2FzdDxnY2hhcio+KGdfaGFzaF90YWJsZV9sb29rdXAoa2V5VGFibGUsIHBy
ZWZlcmVuY2VLZXkpKSk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IDEyYmExYjMuLmU2MWM0ZWIgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuY3BwCkBAIC0zNDYsNCArMzQ2LDYgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFWYXJp
YW4KICAgICAgICAgc2V0dGluZ3MtPnNldEZvbnRTaXplKFFXZWJTZXR0aW5nczo6RGVmYXVsdEZv
bnRTaXplLCB2YWx1ZS50b0ludCgpKTsKICAgICBlbHNlIGlmIChuYW1lID09ICJXZWJLaXRVc2Vz
UGFnZUNhY2hlUHJlZmVyZW5jZUtleSIpCiAgICAgICAgIFFXZWJTZXR0aW5nczo6c2V0TWF4aW11
bVBhZ2VzSW5DYWNoZSh2YWx1ZS50b0ludCgpKTsKKyAgICBlbHNlIGlmIChuYW1lID09ICJXZWJL
aXRDU1NWaXNpdGVkU3R5bGVEaXNhYmxlZCIpCisgICAgICAgIHNldHRpbmdzLT5zZXRBdHRyaWJ1
dGUoUVdlYlNldHRpbmdzOjpDU1NWaXNpdGVkU3R5bGVEaXNhYmxlZCwgdmFsdWUudG9Cb29sKCkp
OwogfQotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44360</attachid>
            <date>2009-12-06 08:35:49 -0800</date>
            <delta_ts>2009-12-06 12:05:08 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-Add-option-CSSVisitedStyleEnabled.patch</filename>
            <type>text/plain</type>
            <size>36034</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSBhNDM3NDUzNjMzNzk4NjE0YWUwNzEzZjMwY2ZiMzU2OWFjNzI1NmFjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+
CkRhdGU6IFNhdCwgNSBEZWMgMjAwOSAxMzo0MzoyOSArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZCBvcHRpb24gQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZC4KIFdoZW4gc2V0IHRvIGZhbHNlLCB0aGlz
IG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUg
aW4gQ1NTCiBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0
bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCiBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2
aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCgpCeSBk
ZWZhdWx0IHRoZSBvcHRpb24gaXMgc2V0IHRvICd0cnVlJy4KClRoZSBvcHRpb24gaGFzIGJlZW4g
YWRkZWQgdG8gdGhlIHF0LCBndGsgYW5kIHdpbiBwb3J0cyBhbG9uZyB3aXRoIHRoZQphc3NvY2lh
dGVkIHVuaXQgdGVzdCBmb3IgZWFjaC4KCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDMwMAotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAyNSArKysrKysrKysrKysrKwogLi4uL2Nzcy12aXNpdGVkLXN0eWxl
LWRpc2FibGVkLWV4cGVjdGVkLnR4dCAgICAgICAgfCAgICAzICsrCiAuLi4vZmFzdC9oaXN0b3J5
L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLmh0bWwgICB8ICAgMzUgKysrKysrKysrKysrKysr
KysrKysKIC4uLi9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0
IHwgICAgMyArKwogLi4uL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLmh0
bWwgICAgfCAgIDM1ICsrKysrKysrKysrKysrKysrKysrCiAuLi4vcmVzb3VyY2VzL2Nzcy12aXNp
dGVkLXN0eWxlLWRpc2FibGVkLTIuaHRtbCAgICB8ICAgMzMgKysrKysrKysrKysrKysrKysrCiAu
Li4vcmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtMi5odG1sICAgICB8ICAgMzMg
KysrKysrKysrKysrKysrKysrCiAuLi4vY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0
ZWQudHh0ICAgICAgICB8ICAgIDQgKysKIC4uLi9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVu
YWJsZWQtZXhwZWN0ZWQudHh0IHwgICAgNCArKwogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI5ICsrKysrKysrKysrKysrKysKIFdlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwICAgICAgICAgICAgICAgICAgIHwgICAgNyArKysrCiBX
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmggICAgICAgICAgICAgICAgICAgICB8ICAgIDEg
KwogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
ICA2ICsrKwogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICA1ICsrKwogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDI1ICsrKysrKysrKysrKysrCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJzZXR0aW5ncy5jcHAgICAgICAgICAgICB8ICAgMjkgKysrKysrKysrKysrKysrKy0KIFdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwICAgICAgICAgICAgICAgIHwgICAgNiArKyst
CiBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDcgKysrKwogV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaCAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAzICstCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMjAgKysrKysrKysrKysKIFdlYktpdC93aW4vQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArKysrKysrKysrKysrKysKIFdlYktpdC93aW4v
SW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXMuaWRsICAgICAgICAgIHwgICAgNCArKwogV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwICAgfCAgICAyICsKIFdl
YktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggICAgICAgICAgICAgIHwgICAgMSAr
CiBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcCAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTYgKysrKysrKysrCiBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmggICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDYgKysrCiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDUgKysrCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMjMgKysrKysrKysrKysrKwogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCAgfCAgICAxICsKIC4uLi9EdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIHwgICAgMSArCiAuLi4vRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgICB8ICAgIDIgKwogMzEg
ZmlsZXMgY2hhbmdlZCwgMzk4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRp
c2FibGVkLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3Qv
aGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhw
ZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nz
cy12aXNpdGVkLXN0eWxlLWVuYWJsZWQuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtMi5o
dG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNl
cy9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLTIuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlz
YWJsZWQtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLWV4cGVjdGVkLnR4
dAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAwNzFkYzQyLi4yNGY1OWE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMDkt
MTItMDUgIFJvYmVydCBIb2dhbiAgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG9wdGlvbiBDU1NWaXNp
dGVkU3R5bGVFbmFibGVkLgorICAgICAgICBXaGVuIHNldCB0byBmYWxzZSwgdGhpcyBvcHRpb24g
d2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUwor
ICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0
bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGlu
ZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVu
dC4KKyAgICAgICAgCisgICAgICAgIEJ5IGRlZmF1bHQgdGhlIG9wdGlvbiBpcyBzZXQgdG8gJ3Ry
dWUnLgorICAgICAgICAKKyAgICAgICAgVGhlIG9wdGlvbiBoYXMgYmVlbiBhZGRlZCB0byB0aGUg
cXQsIGd0ayBhbmQgd2luIHBvcnRzIGFsb25nIHdpdGggdGhlCisgICAgICAgIGFzc29jaWF0ZWQg
dW5pdCB0ZXN0IGZvciBlYWNoLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzAwCisKKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvY3Nz
LXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2Nzcy12aXNp
dGVkLXN0eWxlLWRpc2FibGVkLTIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5
L3Jlc291cmNlcy9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLTIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxl
ZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2hpc3Rv
cnkvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDA5
LTEyLTA0ICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rv
cnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWU4NmIwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgbGluayBzaG91bGQgYXBwZWFyIGluIGJs
dWUuLgorCitMaW5rIGlzIGJsdWUgKHJnYigwLCAwLCAyNTUpKTogUEFTUwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGYwZjgyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2Fi
bGVkLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0Mv
L0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvUkVD
LWh0bWw0MC9sb29zZS5kdGQiPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5DU1NWaXNpdGVkU3R5
bGVFbmFibGVkIC0gV2hlbiBTZXQgdG8gRmFsc2UsIFZpc2l0ZWQgTGlua3MgYXBwZWFyIHVudmlz
aXRlZDwvVElUTEU+Cis8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQt
U3R5bGUtVHlwZSIgY29udGVudD0idGV4dC9jc3MiPgorPFNUWUxFIHR5cGU9InRleHQvY3NzIj4K
K0Ege2NvbG9yOiBncmVlbjt9CitBOmxpbmsge2NvbG9yOiBibHVlO30KK0E6dmlzaXRlZCB7Y29s
b3I6IHJlZDt9CitBOmFjdGl2ZSB7Y29sb3I6IGJsYWNrO30KKyNvbmUge2NvbG9yOiAjMDA2NjAw
O30KKzwvU1RZTEU+CisKKzwvSEVBRD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgewor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRDU1NWaXNpdGVkU3R5bGVFbmFi
bGVkIiwgZmFsc2UpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9Cisg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlsaW5rIik7CisgICAg
dmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTsKKyAgICBldmVu
dC5pbml0RXZlbnQoImNsaWNrIiwgdHJ1ZSwgdHJ1ZSk7CisgICAgZWxlbWVudC5kaXNwYXRjaEV2
ZW50KGV2ZW50KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCk7Ij4KKzxkaXY+PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI0MzAwIj5CdWd6aWxsYSBSZWZlcmVuY2UuPC9hPjwvZGl2PgorPGRpdj5UbyBydW4gdGhl
IHRlc3QgPGEgaWQ9Im15bGluayIgaHJlZj0icmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWRp
c2FibGVkLTIuaHRtbCI+Y2xpY2sgdGhpcyBsaW5rLjwvYT4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1z
dHlsZS1lbmFibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9jc3Mt
dmlzaXRlZC1zdHlsZS1lbmFibGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zZGEzNzdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMyBAQAorVGhpcyBsaW5rIHNob3VsZCBhcHBlYXIgaW4gcmVkLi4KKworTGluayBpcyByZWQg
KHJnYigyNTUsIDAsIDApKTogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0
b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZmM5ZTRiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLmh0bWwKQEAgLTAsMCArMSwzNSBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9u
YWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MC9sb29zZS5kdGQiPgorPEhU
TUw+Cis8SEVBRD4KKzxUSVRMRT5DU1NWaXNpdGVkU3R5bGVFbmFibGVkIC0gV2hlbiBTZXQgdG8g
RmFsc2UsIFZpc2l0ZWQgTGlua3MgYXBwZWFyIHVudmlzaXRlZDwvVElUTEU+Cis8TUVUQSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1
OS0xIj4KKzxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtU3R5bGUtVHlwZSIgY29udGVudD0idGV4
dC9jc3MiPgorPFNUWUxFIHR5cGU9InRleHQvY3NzIj4KK0Ege2NvbG9yOiBncmVlbjt9CitBOmxp
bmsge2NvbG9yOiBibHVlO30KK0E6dmlzaXRlZCB7Y29sb3I6IHJlZDt9CitBOmFjdGl2ZSB7Y29s
b3I6IGJsYWNrO30KKyNvbmUge2NvbG9yOiAjMDA2NjAwO30KKzwvU1RZTEU+CisKKzwvSEVBRD4K
KzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCJXZWJLaXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkIiwgdHJ1ZSk7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJteWxpbmsiKTsKKyAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVh
dGVFdmVudCgiTW91c2VFdmVudCIpOworICAgIGV2ZW50LmluaXRFdmVudCgiY2xpY2siLCB0cnVl
LCB0cnVlKTsKKyAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpOworfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPGRpdj48YSBocmVmPSJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAiPkJ1Z3ppbGxhIFJlZmVy
ZW5jZS48L2E+PC9kaXY+Cis8ZGl2PlRvIHJ1biB0aGUgdGVzdCA8YSBpZD0ibXlsaW5rIiBocmVm
PSJyZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC0yLmh0bWwiPmNsaWNrIHRoaXMg
bGluay48L2E+LjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLTIu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5
bGUtZGlzYWJsZWQtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjli
ZWI2NmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3Vy
Y2VzL2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLTIuaHRtbApAQCAtMCwwICsxLDMzIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8v
RU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+Cis8SFRNTD4K
KzxIRUFEPgorPFRJVExFPkNTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQgLSBXaGVuIFNldCB0byBGYWxz
ZSwgVmlzaXRlZCBMaW5rcyBhcHBlYXIgdW52aXNpdGVkPC9USVRMRT4KKzxNRVRBIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEi
PgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1TdHlsZS1UeXBlIiBjb250ZW50PSJ0ZXh0L2Nz
cyI+Cis8U1RZTEUgdHlwZT0idGV4dC9jc3MiPgorQSB7Y29sb3I6IGdyZWVuO30KK0E6bGluayB7
Y29sb3I6IGJsdWU7fQorQTp2aXNpdGVkIHtjb2xvcjogcmVkO30KK0E6YWN0aXZlIHtjb2xvcjog
YmxhY2s7fQorI29uZSB7Y29sb3I6ICMwMDY2MDA7fQorPC9TVFlMRT4KKzxzY3JpcHQ+CitmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0Iik7CisgICAgdmFyIG15TGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJt
eWxpbmsiKTsKKyAgICB2YXIgY29sb3IgPSBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKG15TGluaywgbnVsbCkuY29sb3I7CisgICAgcmVzdWx0LmlubmVyVGV4dCA9IGNvbG9y
ID09ICJyZ2IoMCwgMCwgMjU1KSIgPyAiTGluayBpcyBibHVlIChyZ2IoMCwgMCwgMjU1KSk6IFBB
U1MiIDogIkxpbmsgaXMgbm90IGJsdWUuIEZBSUw6ICIrY29sb3I7CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L0hFQUQ+Cis8Ym9keSBpZD0ibXlCb2R5IiBvbmxvYWQ9
InJ1blRlc3QoKSI+CisgICAgPGRpdj48YSBpZD0ibXlsaW5rIiBocmVmPSIuLi9jc3MtdmlzaXRl
ZC1zdHlsZS1kaXNhYmxlZC5odG1sIj5UaGlzIGxpbmsgc2hvdWxkIGFwcGVhciBpbiBibHVlLjwv
YT4uPC9kaXY+CisgICAgPC9icj4KKyAgICA8ZGl2IGlkPSJyZXN1bHQiPgorICAgICAgICBUZXN0
IG5vdCBydW4gY29ycmVjdGx5LgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jc3Mtdmlz
aXRlZC1zdHlsZS1lbmFibGVkLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNv
dXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMmJjZDU2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC0yLmh0bWwK
QEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1M
IDQuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MC9s
b29zZS5kdGQiPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5DU1NWaXNpdGVkU3R5bGVFbmFibGVk
IC0gV2hlbiBTZXQsIFZpc2l0ZWQgTGlua3MgYXBwZWFyIHZpc2l0ZWQ8L1RJVExFPgorPE1FVEEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNv
LTg4NTktMSI+Cis8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVN0eWxlLVR5cGUiIGNvbnRlbnQ9
InRleHQvY3NzIj4KKzxTVFlMRSB0eXBlPSJ0ZXh0L2NzcyI+CitBIHtjb2xvcjogZ3JlZW47fQor
QTpsaW5rIHtjb2xvcjogYmx1ZTt9CitBOnZpc2l0ZWQge2NvbG9yOiByZWQ7fQorQTphY3RpdmUg
e2NvbG9yOiBibGFjazt9Cisjb25lIHtjb2xvcjogIzAwNjYwMDt9Cis8L1NUWUxFPgorPHNjcmlw
dD4KK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICB2YXIgbXlMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIm15bGluayIpOworICAgIHZhciBjb2xvciA9IGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUobXlMaW5rLCBudWxsKS5jb2xvcjsKKyAgICByZXN1bHQuaW5uZXJUZXh0
ID0gY29sb3IgPT0gInJnYigyNTUsIDAsIDApIiA/ICJMaW5rIGlzIHJlZCAocmdiKDI1NSwgMCwg
MCkpOiBQQVNTIiA6ICJMaW5rIGlzIG5vdCByZWQuIEZBSUw6ICIrY29sb3I7CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L0hFQUQ+Cis8Ym9keSBpZD0ibXlCb2R5IiBv
bmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPGRpdj48YSBpZD0ibXlsaW5rIiBocmVmPSIuLi9jc3Mt
dmlzaXRlZC1zdHlsZS1lbmFibGVkLmh0bWwiPlRoaXMgbGluayBzaG91bGQgYXBwZWFyIGluIHJl
ZC48L2E+LjwvZGl2PgorICAgIDwvYnI+CisgICAgPGRpdiBpZD0icmVzdWx0Ij4KKyAgICAgICAg
VGVzdCBub3QgcnVuIGNvcnJlY3RseS4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2hpc3Rvcnkv
Y3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UzZDc5ZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2hpc3RvcnkvY3NzLXZp
c2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorTlBQX0lu
aXRpYWxpemUKK1RoaXMgbGluayBzaG91bGQgYXBwZWFyIGluIGJsdWUuLgorCitMaW5rIGlzIGJs
dWUgKHJnYigwLCAwLCAyNTUpKTogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5
bGUtZW5hYmxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOGU3OThjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9m
YXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACitOUFBfSW5pdGlhbGl6ZQorVGhpcyBsaW5rIHNob3VsZCBhcHBlYXIgaW4gcmVk
Li4KKworTGluayBpcyByZWQgKHJnYigyNTUsIDAsIDApKTogUEFTUwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NmE3ZTAxLi42ZGIxMjk1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMyIEBACisyMDA5LTEyLTA1ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAcm9iZXJ0
aG9nYW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBvcHRpb24gQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZC4KKyAgICAgICAgV2hlbiBzZXQg
dG8gZmFsc2UsIHRoaXMgb3B0aW9uIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBmb3IgdGhlICd2
aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMgcHJldmVudHMg
d2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5IGluc3BlY3RpbmcgeW91ciBicm93c2luZworICAgICAg
ICBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2Yg
VVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCisgICAgICAgIAorICAgICAgICBCeSBkZWZhdWx0IHRo
ZSBvcHRpb24gaXMgc2V0IHRvICd0cnVlJy4KKyAgICAgICAgCisgICAgICAgIFRoZSBvcHRpb24g
aGFzIGJlZW4gYWRkZWQgdG8gdGhlIHF0LCBndGsgYW5kIHdpbiBwb3J0cyBhbG9uZyB3aXRoIHRo
ZQorICAgICAgICBhc3NvY2lhdGVkIHVuaXQgdGVzdCBmb3IgZWFjaC4KKyAgICAgICAgCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMwMAorCisgICAg
ICAgIFRlc3RzOiBmYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQuaHRt
bAorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNrZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVj
a1BzZXVkb1N0YXRlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRp
bmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRDU1NWaXNpdGVkU3R5bGVFbmFi
bGVkKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXR0
aW5nczo6Y3NzVmlzaXRlZFN0eWxlRW5hYmxlZCk6CisKIDIwMDktMTItMDQgIFpvbHRhbiBIb3J2
YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IGM0MDIyMjYuLmI4MTdiNmIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC04NzMsNyArODczLDExIEBAIENTU1N0eWxlU2VsZWN0
b3I6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2VyKERvY3VtZW50KiBkb2N1bWVudCwg
Ym9vbCBzdHJpCiAgICAgLCBtX2NvbGxlY3RSdWxlc09ubHkoZmFsc2UpCiAgICAgLCBtX3BzZXVk
b1N0eWxlKE5PUFNFVURPKQogICAgICwgbV9kb2N1bWVudElzSFRNTChkb2N1bWVudC0+aXNIVE1M
RG9jdW1lbnQoKSkKKyAgICAsIG1fY3NzVmlzaXRlZFN0eWxlRW5hYmxlZCh0cnVlKQogeworICAg
IFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZG9jdW1lbnQtPnNldHRpbmdzKCk7CisgICAgaWYgKHNl
dHRpbmdzICYmICFzZXR0aW5ncy0+Y3NzVmlzaXRlZFN0eWxlRW5hYmxlZCgpKQorICAgICAgICBt
X2Nzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQgPSBmYWxzZTsKIH0KIAogUHNldWRvU3RhdGUgQ1NTU3R5
bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1BzZXVkb1N0YXRlKEVsZW1lbnQqIGVs
ZW1lbnQsIGJvb2wgY2hlY2tWaXNpdGVkKSBjb25zdApAQCAtODg1LDYgKzg4OSw5IEBAIFBzZXVk
b1N0YXRlIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tQc2V1ZG9TdGF0
ZShFbGVtZW50KiBlbGVtZW50CiAgICAgaWYgKCFjaGVja1Zpc2l0ZWQpCiAgICAgICAgIHJldHVy
biBQc2V1ZG9BbnlMaW5rOwogCisgICAgaWYgKCFtX2Nzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQpCisg
ICAgICAgIHJldHVybiBQc2V1ZG9MaW5rOworCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgVmVjdG9y
PFVDaGFyLCA1MTI+IHVybDsKICAgICB2aXNpdGVkVVJMKG1fZG9jdW1lbnQtPmJhc2VVUkwoKSwg
KmF0dHIsIHVybCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgg
Yi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKaW5kZXggZmFiNTAwNi4uNGVkMzVlYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtMjA4LDYgKzIwOCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIFBzZXVkb0lkIG1fcHNldWRvU3R5bGU7CiAgICAgICAgICAgICBib29sIG1fZG9jdW1l
bnRJc0hUTUw7CiAgICAgICAgICAgICBtdXRhYmxlIEhhc2hTZXQ8TGlua0hhc2gsIExpbmtIYXNo
SGFzaD4gbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGU7CisgICAgICAgICAgICBib29sIG1f
Y3NzVmlzaXRlZFN0eWxlRW5hYmxlZDsKICAgICAgICAgfTsKIAogICAgIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcAppbmRleCA4Nzk2MmUyLi4zNjQ0YWM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTEwMiw2ICsxMDIs
NyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1fZW5mb3JjZUNTU01J
TUVUeXBlSW5TdHJpY3RNb2RlKHRydWUpCiAgICAgLCBtX3VzZXNFbmNvZGluZ0RldGVjdG9yKGZh
bHNlKQogICAgICwgbV9hbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyhmYWxzZSkKKyAgICAsIG1f
Y3NzVmlzaXRlZFN0eWxlRW5hYmxlZCh0cnVlKQogICAgICwgbV9lZGl0aW5nQmVoYXZpb3IoCiAj
aWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JNKERBUldJ
TikpCiAgICAgICAgIC8vIChQTEFURk9STShNQUMpIGlzIGFsd2F5cyBmYWxzZSBpbiBDaHJvbWl1
bSwgaGVuY2UgdGhlIGV4dHJhIGNvbmRpdGlvbi4pCkBAIC0yNjYsNiArMjY3LDExIEBAIHZvaWQg
U2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkKQogICAgIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQ7CiB9CiAKK3ZvaWQgU2V0dGluZ3M6OnNldENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQoYm9v
bCBjc3NWaXNpdGVkU3R5bGVFbmFibGVkKQoreworICAgIG1fY3NzVmlzaXRlZFN0eWxlRW5hYmxl
ZCA9IGNzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQ7Cit9CisKIHZvaWQgU2V0dGluZ3M6OnNldEphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoYm9vbCBqYXZhU2NyaXB0Q2FuT3Blbldp
bmRvd3NBdXRvbWF0aWNhbGx5KQogewogICAgIG1famF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0
b21hdGljYWxseSA9IGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5o
CmluZGV4IDY3M2JhOGYuLjVhMDdmODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oCisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0yNzYsNiArMjc2LDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEdlb2xvY2F0aW9uRW5hYmxlZChib29s
KTsKICAgICAgICAgYm9vbCBnZW9sb2NhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2dl
b2xvY2F0aW9uRW5hYmxlZDsgfQogCisgICAgICAgIHZvaWQgc2V0Q1NTVmlzaXRlZFN0eWxlRW5h
YmxlZChib29sKTsKKyAgICAgICAgYm9vbCBjc3NWaXNpdGVkU3R5bGVFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9jc3NWaXNpdGVkU3R5bGVFbmFibGVkOyB9CisKICAgICBwcml2YXRlOgogICAg
ICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgICAgIApAQCAtMzQ2LDYgKzM0OSw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2V4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFi
bGVkIDogMTsKICAgICAgICAgYm9vbCBtX3dlYkdMRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wg
bV9nZW9sb2NhdGlvbkVuYWJsZWQgOiAxOworICAgICAgICBib29sIG1fY3NzVmlzaXRlZFN0eWxl
RW5hYmxlZCA6IDE7CisKIAogI2lmIFVTRShTQUZBUklfVEhFTUUpCiAgICAgICAgIHN0YXRpYyBi
b29sIGdTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBjMGM0MmQ0Li5jYWRlNzEyIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI4IEBACisyMDA5LTEyLTA1ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAcm9i
ZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBvcHRpb24gQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZC4KKyAgICAgICAgV2hlbiBz
ZXQgdG8gZmFsc2UsIHRoaXMgb3B0aW9uIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBmb3IgdGhl
ICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMgcHJldmVu
dHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5IGluc3BlY3RpbmcgeW91ciBicm93c2luZworICAg
ICAgICBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQg
b2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCisgICAgICAgIAorICAgICAgICBCeSBkZWZhdWx0
IHRoZSBvcHRpb24gaXMgc2V0IHRvICd0cnVlJy4KKyAgICAgICAgCisgICAgICAgIFRoZSBvcHRp
b24gaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHF0LCBndGsgYW5kIHdpbiBwb3J0cyBhbG9uZyB3aXRo
IHRoZQorICAgICAgICBhc3NvY2lhdGVkIHVuaXQgdGVzdCBmb3IgZWFjaC4KKyAgICAgICAgCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMwMAorCisg
ICAgICAgICogd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdlYmtpdF93
ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wcm9wZXJ0eSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkpOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGlu
Z3MpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSk6CisKIDIwMDkt
MTItMDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJzZXR0aW5ncy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAK
aW5kZXggMTQzYWUwNi4uYTkzODU0NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vic2V0dGluZ3MuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRp
bmdzLmNwcApAQCAtOTgsNiArOTgsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0
ZSB7CiAgICAgZ2Jvb2xlYW4gZW5hYmxlX3VuaXZlcnNhbF9hY2Nlc3NfZnJvbV9maWxlX3VyaXM7
CiAgICAgZ2Jvb2xlYW4gZW5hYmxlX2RvbV9wYXN0ZTsKICAgICBnYm9vbGVhbiB0YWJfa2V5X2N5
Y2xlc190aHJvdWdoX2VsZW1lbnRzOworICAgIGdib29sZWFuIGNzc192aXNpdGVkX3N0eWxlX2Vu
YWJsZWQ7CiB9OwogCiAjZGVmaW5lIFdFQktJVF9XRUJfU0VUVElOR1NfR0VUX1BSSVZBVEUob2Jq
KSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU0VU
VElOR1MsIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkpCkBAIC0xMzksNyArMTQwLDggQEAgZW51
bSB7CiAgICAgUFJPUF9FRElUSU5HX0JFSEFWSU9SLAogICAgIFBST1BfRU5BQkxFX1VOSVZFUlNB
TF9BQ0NFU1NfRlJPTV9GSUxFX1VSSVMsCiAgICAgUFJPUF9FTkFCTEVfRE9NX1BBU1RFLAotICAg
IFBST1BfVEFCX0tFWV9DWUNMRVNfVEhST1VHSF9FTEVNRU5UUworICAgIFBST1BfVEFCX0tFWV9D
WUNMRVNfVEhST1VHSF9FTEVNRU5UUywKKyAgICBQUk9QX0NTU19WSVNJVEVEX1NUWUxFX0VOQUJM
RUQKIH07CiAKIC8vIENyZWF0ZSBhIGRlZmF1bHQgdXNlciBhZ2VudCBzdHJpbmcKQEAgLTY4Nyw2
ICs2ODksMjQgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KFdl
YktpdFdlYlNldHRpbmdzQ2xhc3MqIGtsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKIAogICAgIGdfdHlwZV9jbGFz
c19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkpOwor
CisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpjc3MtdmlzaXRlZC1zdHlsZS1lbmFi
bGVkOgorICAgICoKKyAgICAqIFdoZXRoZXIgdG8gcmVzcGVjdCB0aGUgJ3Zpc2l0ZWQnIHN0YXRl
IGluIENTUyBzdHlsZXNoZWV0cy4gU2V0dGluZyB0bworICAgICogJ2ZhbHNlJyBwcmV2ZW50cyB3
ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgKiBo
aXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJM
cyBpbiBhIEhUTUwgZG9jdW1lbnQuCisgICAgKgorICAgICogU2luY2U6IDEuMS4xNworICAgICov
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9DU1NfVklTSVRFRF9TVFlMRV9F
TkFCTEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVj
X2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3NzLXZpc2l0
ZWQtc3R5bGUtZW5hYmxlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
KCJFbmFibGUgQ1NTIFZpc2l0ZWQgU3R5bGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF8oIkVuYWJsZXMgdGhlIENTUyBWaXNpdGVkIFN0eWxlIGZvciBXZWIgTGlua3Mi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl9zZXR0aW5nc19pbml0KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJfc2V0dGluZ3MpCkBA
IC04ODUsNiArOTA1LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb24KICAgICBjYXNlIFBST1Bf
VEFCX0tFWV9DWUNMRVNfVEhST1VHSF9FTEVNRU5UUzoKICAgICAgICAgcHJpdi0+dGFiX2tleV9j
eWNsZXNfdGhyb3VnaF9lbGVtZW50cyA9ICBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0NTU19WSVNJVEVEX1NUWUxFX0VOQUJMRUQ6Cisg
ICAgICAgIHByaXYtPmNzc192aXNpdGVkX3N0eWxlX2VuYWJsZWQgPSBnX3ZhbHVlX2dldF9ib29s
ZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpF
Q1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAg
ICAgICBicmVhazsKQEAgLTEwMDIsNiArMTAyNSw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1Zh
CiAgICAgY2FzZSBQUk9QX1RBQl9LRVlfQ1lDTEVTX1RIUk9VR0hfRUxFTUVOVFM6CiAgICAgICAg
IGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPnRhYl9rZXlfY3ljbGVzX3Rocm91Z2hf
ZWxlbWVudHMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQ1NTX1ZJU0lURURfU1RZ
TEVfRU5BQkxFRDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+Y3Nz
X3Zpc2l0ZWRfc3R5bGVfZW5hYmxlZCk7CisgICAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAg
ICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwg
cHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTEwNjcsNiArMTA5Myw3IEBAIFdlYktpdFdlYlNl
dHRpbmdzKiB3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYl9z
ZXR0aW5ncykKICAgICAgICAgICAgICAgICAgImVkaXRpbmctYmVoYXZpb3IiLCBwcml2LT5lZGl0
aW5nX2JlaGF2aW9yLAogICAgICAgICAgICAgICAgICAiZW5hYmxlLXVuaXZlcnNhbC1hY2Nlc3Mt
ZnJvbS1maWxlLXVyaXMiLCBwcml2LT5lbmFibGVfdW5pdmVyc2FsX2FjY2Vzc19mcm9tX2ZpbGVf
dXJpcywKICAgICAgICAgICAgICAgICAgImVuYWJsZS1kb20tcGFzdGUiLCBwcml2LT5lbmFibGVf
ZG9tX3Bhc3RlLAorICAgICAgICAgICAgICAgICAiY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZCIs
IHByaXYtPmNzc192aXNpdGVkX3N0eWxlX2VuYWJsZWQsCiAgICAgICAgICAgICAgICAgIE5VTEwp
KTsKIAogICAgIHJldHVybiBjb3B5OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRl
eCA0ZGE2NWFhLi45YmQ1YzY4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAt
MjM4OCw3ICsyMzg4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0
aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICBlbmFibGVTY3JpcHRzLCBlbmFi
bGVQbHVnaW5zLCBlbmFibGVEZXZlbG9wZXJFeHRyYXMsIHJlc2l6YWJsZVRleHRBcmVhcywKICAg
ICAgICAgZW5hYmxlUHJpdmF0ZUJyb3dzaW5nLCBlbmFibGVDYXJldEJyb3dzaW5nLCBlbmFibGVI
VE1MNURhdGFiYXNlLCBlbmFibGVIVE1MNUxvY2FsU3RvcmFnZSwKICAgICAgICAgZW5hYmxlWFNT
QXVkaXRvciwgamF2YXNjcmlwdENhbk9wZW5XaW5kb3dzLCBlbmFibGVPZmZsaW5lV2ViQXBwQ2Fj
aGUsCi0gICAgICAgIGVuYWJsZVVuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJJLCBlbmFibGVET01Q
YXN0ZSwgdGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzOworICAgICAgICBlbmFibGVVbml2ZXJz
YWxBY2Nlc3NGcm9tRmlsZVVSSSwgZW5hYmxlRE9NUGFzdGUsIHRhYktleUN5Y2xlc1Rocm91Z2hF
bGVtZW50cywgQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZDsKIAogICAgIFdlYktpdEVkaXRpbmdCZWhh
dmlvciBlZGl0aW5nQmVoYXZpb3I7CiAKQEAgLTI0MTksNiArMjQxOSw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
ICAgICAgICAgICAgICAgICAgImVuYWJsZS11bml2ZXJzYWwtYWNjZXNzLWZyb20tZmlsZS11cmlz
IiwgJmVuYWJsZVVuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJJLAogICAgICAgICAgICAgICAgICAi
ZW5hYmxlLWRvbS1wYXN0ZSIsICZlbmFibGVET01QYXN0ZSwKICAgICAgICAgICAgICAgICAgInRh
Yi1rZXktY3ljbGVzLXRocm91Z2gtZWxlbWVudHMiLCAmdGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1l
bnRzLAorICAgICAgICAgICAgICAgICAiY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZCIsICZDU1NW
aXNpdGVkU3R5bGVFbmFibGVkLAogICAgICAgICAgICAgICAgICBOVUxMKTsKIAogICAgIHNldHRp
bmdzLT5zZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZShkZWZhdWx0RW5jb2RpbmcpOwpAQCAtMjQ0
Niw2ICsyNDQ3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5n
cyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHNldHRpbmdzLT5zZXRFZGl0aW5nQmVoYXZp
b3IoY29yZShlZGl0aW5nQmVoYXZpb3IpKTsKICAgICBzZXR0aW5ncy0+c2V0QWxsb3dVbml2ZXJz
YWxBY2Nlc3NGcm9tRmlsZVVSTHMoZW5hYmxlVW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkkpOwog
ICAgIHNldHRpbmdzLT5zZXRET01QYXN0ZUFsbG93ZWQoZW5hYmxlRE9NUGFzdGUpOworICAgIHNl
dHRpbmdzLT5zZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQp
OwogCiAgICAgUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldyk7CiAgICAgaWYgKHBhZ2UpCkBAIC0y
NTQzLDYgKzI1NDUsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90
aWZ5KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncywgR1BhcgogICAgICAgICBpZiAocGFn
ZSkKICAgICAgICAgICAgIHBhZ2UtPnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhnX3Zh
bHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOwogICAgIH0KKyAgICBlbHNlIGlmIChuYW1lID09IGdf
aW50ZXJuX3N0cmluZygiY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZCIpKQorICAgICAgICBzZXR0
aW5ncy0+c2V0Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1
ZSkpOwogICAgIGVsc2UgaWYgKCFnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5KEdfT0JKRUNU
X0dFVF9DTEFTUyh3ZWJTZXR0aW5ncyksIG5hbWUpKQogICAgICAgICBnX3dhcm5pbmcoIlVuZXhw
ZWN0ZWQgc2V0dGluZyAnJXMnIiwgbmFtZSk7CiAgICAgZ192YWx1ZV91bnNldCgmdmFsdWUpOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIGIvV2ViS2l0L3F0L0Fw
aS9xd2Vic2V0dGluZ3MuY3BwCmluZGV4IDlhNWFiNDYuLjJjNWZjNDkgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0
aW5ncy5jcHAKQEAgLTE1OCw2ICsxNTgsMTAgQEAgdm9pZCBRV2ViU2V0dGluZ3NQcml2YXRlOjph
cHBseSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0
cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OlByaXZhdGVCcm93c2luZ0VuYWJsZWQpKTsKICAg
ICAgICAgc2V0dGluZ3MtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodmFsdWUpOwogCisgICAg
ICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU1Zpc2l0ZWRTdHls
ZUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+
YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQpKTsK
KyAgICAgICAgc2V0dGluZ3MtPnNldENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQodmFsdWUpOworICAg
ICAgICAKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6SmF2
YXNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6SmF2YXNjcmlw
dENhbkFjY2Vzc0NsaXBib2FyZCkpOwogICAgICAgICBzZXR0aW5ncy0+c2V0RE9NUGFzdGVBbGxv
d2VkKHZhbHVlKTsKQEAgLTM0Myw2ICszNDcsOSBAQCBRV2ViU2V0dGluZ3MqIFFXZWJTZXR0aW5n
czo6Z2xvYmFsU2V0dGluZ3MoKQogICAgIFx2YWx1ZSBMb2NhbFN0b3JhZ2VEYXRhYmFzZUVuYWJs
ZWQgXGV7VGhpcyBlbnVtIHZhbHVlIGlzIGRlcHJlY2F0ZWQufSBVc2UKICAgICAgICAgUVdlYlNl
dHRpbmdzOjpMb2NhbFN0b3JhZ2VFbmFibGVkIGluc3RlYWQuCiAgICAgXHZhbHVlIExvY2FsQ29u
dGVudENhbkFjY2Vzc1JlbW90ZVVybHMgU3BlY2lmaWVzIHdoZXRoZXIgbG9jYWxseSBsb2FkZWQg
ZG9jdW1lbnRzIGFyZSBhbGxvd2VkIHRvIGFjY2VzcyByZW1vdGUgdXJscy4KKyAgICBcdmFsdWUg
Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZCBBbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0
ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJz
aXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhp
c3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxz
IGluIGEgSFRNTCBkb2N1bWVudC4KICovCiAKIC8qIQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0Fw
aS9xd2Vic2V0dGluZ3MuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKaW5kZXggNjlm
M2IxMS4uODExM2Y5ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaAor
KysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oCkBAIC02Nyw3ICs2Nyw4IEBAIHB1Ymxp
YzoKICAgICAgICAgTG9jYWxTdG9yYWdlRGF0YWJhc2VFbmFibGVkID0gTG9jYWxTdG9yYWdlRW5h
YmxlZCwKICNlbmRpZgogICAgICAgICBMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzLAot
ICAgICAgICBEbnNQcmVmZXRjaEVuYWJsZWQKKyAgICAgICAgRG5zUHJlZmV0Y2hFbmFibGVkLAor
ICAgICAgICBDU1NWaXNpdGVkU3R5bGVFbmFibGVkCiAgICAgfTsKICAgICBlbnVtIFdlYkdyYXBo
aWMgewogICAgICAgICBNaXNzaW5nSW1hZ2VHcmFwaGljLApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggY2MxZGM0Yi4uNzZiNmRjMCAx
MDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMTItMDUgIFJvYmVydCBIb2dhbiAgPHJvYmVydEByb2Jl
cnRob2dhbi5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIG9wdGlvbiBDU1NWaXNpdGVkU3R5bGVFbmFibGVkLgorICAgICAgICBXaGVuIHNl
dCB0byBmYWxzZSwgdGhpcyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUg
J3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50
cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAg
ICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBv
ZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKyAgICAgICAgCisgICAgICAgIEJ5IGRlZmF1bHQg
dGhlIG9wdGlvbiBpcyBzZXQgdG8gJ3RydWUnLgorICAgICAgICAKKyAgICAgICAgVGhlIG9wdGlv
biBoYXMgYmVlbiBhZGRlZCB0byB0aGUgcXQsIGd0ayBhbmQgd2luIHBvcnRzIGFsb25nIHdpdGgg
dGhlCisgICAgICAgIGFzc29jaWF0ZWQgdW5pdCB0ZXN0IGZvciBlYWNoLgorICAgICAgICAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzAwCisKKyAg
ICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZh
dGU6OmFwcGx5KToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisKIDIwMDktMTItMDMg
IMSwc21haWwgRMO2bm1leiAgPGlzbWFpbEBuYW10cmFjLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZjQ1NzAzNC4uODUwMzU3YyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MCBAQAorMjAwOS0xMi0wNSAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgb3B0
aW9uIENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQuCisgICAgICAgIFdoZW4gc2V0IHRvIGZhbHNlLCB0
aGlzIG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3Rh
dGUgaW4gQ1NTCisgICAgICAgIHN0eWxlc2hlZXRzLiBUaGlzIHByZXZlbnRzIHdlYnNpdGVzIGZy
b20gaW5kaXJlY3RseSBpbnNwZWN0aW5nIHlvdXIgYnJvd3NpbmcKKyAgICAgICAgaGlzdG9yeSBi
eSByZXF1ZXN0aW5nIHRoZSAndmlzaXRlZCcgc3RhdGUgZm9yIGEgc2V0IG9mIFVSTHMgaW4gYSBI
VE1MIGRvY3VtZW50LgorICAgICAgICAKKyAgICAgICAgQnkgZGVmYXVsdCB0aGUgb3B0aW9uIGlz
IHNldCB0byAndHJ1ZScuCisgICAgICAgIAorICAgICAgICBUaGUgb3B0aW9uIGhhcyBiZWVuIGFk
ZGVkIHRvIHRoZSBxdCwgZ3RrIGFuZCB3aW4gcG9ydHMgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAg
YXNzb2NpYXRlZCB1bml0IHRlc3QgZm9yIGVhY2guCisgICAgICAgIAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JD
bGllbnQ6OmNyZWF0ZVBhZ2UpOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5o
OgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlByZWZlcmVuY2Vz
Ojppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpz
ZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpjc3NW
aXNpdGVkU3R5bGVFbmFibGVkKToKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5oOgorICAgICAg
ICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFu
Z2VkKToKKwogMjAwOS0xMi0wMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4v
SW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXMuaWRsIGIvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lX
ZWJQcmVmZXJlbmNlcy5pZGwKaW5kZXggOWE1MmQ3Yy4uNWViNjExOSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwKKysrIGIvV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwKQEAgLTE4Niw0ICsxODYsOCBAQCBpbnRlcmZh
Y2UgSVdlYlByZWZlcmVuY2VzIDogSVVua25vd24KIAogICAgIEhSRVNVTFQgc2V0Wm9vbXNUZXh0
T25seShCT09MIHpvb21zVGV4dE9ubHkpOwogICAgIEhSRVNVTFQgem9vbXNUZXh0T25seShCT09M
ICp6b29tc1RleHRPbmx5KTsKKworICAgIEhSRVNVTFQgc2V0Q1NTVmlzaXRlZFN0eWxlRW5hYmxl
ZChbaW5dIEJPT0wgZW5hYmxlZCk7CisgICAgSFJFU1VMVCBjc3NWaXNpdGVkU3R5bGVFbmFibGVk
KFtvdXQsIHJldHZhbF0gQk9PTCogZW5hYmxlZCk7CisKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCAwZGQ2ZTU4Li5lZDdkNzAw
IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
Y3BwCkBAIC0xNjgsNiArMTY4LDggQEAgUGFnZSogV2ViSW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVQ
YWdlKCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0
RGVmYXVsdEZpeGVkRm9udFNpemUoMTMpKSkKICAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKEZB
SUxFRChwcmVmZXJlbmNlcy0+c2V0Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZChUUlVFKSkpCisgICAg
ICAgIHJldHVybiAwOwogCiAgICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPnNldFByZWZlcmVuY2Vz
KHByZWZlcmVuY2VzLmdldCgpKSkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1dlYktpdC93aW4vV2ViUHJlZmVy
ZW5jZUtleXNQcml2YXRlLmgKaW5kZXggMDlhZWFmZi4uOWRlMjIzMCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9XZWJLaXQvd2luL1dlYlBy
ZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC02NSw2ICs2NSw3IEBACiAjZGVmaW5lIFdlYktpdFVz
ZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5ICJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtl
eSIKICNkZWZpbmUgV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VLZXkgIldlYktpdENhY2hlTW9k
ZWxQcmVmZXJlbmNlS2V5IgogI2RlZmluZSBXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQ
cmVmZXJlbmNlS2V5ICJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgiCisjZGVmaW5lIFdl
YktpdENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWRLZXkgIldlYktpdENTU1Zpc2l0ZWRTdHlsZUVuYWJs
ZWQiCiAKIC8vIFRoZXNlIGFyZSBwcml2YXRlIGJvdGggYmVjYXVzZSBjYWxsZXJzIHNob3VsZCBi
ZSB1c2luZyB0aGUgY292ZXIgbWV0aG9kcyBhbmQgYmVjYXVzZSB0aGUKIC8vIGNvdmVyIG1ldGhv
ZHMgdGhlbXNlbHZlcyBhcmUgcHJpdmF0ZS4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViUHJl
ZmVyZW5jZXMuY3BwIGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggNjUyZTYx
OS4uYzc2YjJmZSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysr
IGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTI1NSw2ICsyNTUsOCBAQCB2b2lk
IFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKCkKICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHBsdWdpbkFsbG93ZWRSdW5UaW1lKEFkb3B0Q0YsIENGU3RyaW5nQ3Jl
YXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiJXUiKSwgbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSkpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRQbHVnaW5BbGxvd2VkUnVuVGltZVByZWZlcmVuY2VLZXkpLCBwbHVnaW5BbGxvd2VkUnVuVGlt
ZS5nZXQoKSk7CiAKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7
CisKICAgICBkZWZhdWx0U2V0dGluZ3MgPSBkZWZhdWx0czsKIH0KIApAQCAtMTM0NSw2ICsxMzQ3
LDIwIEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnBsdWdpbkFsbG93ZWRSdW5UaW1lKFVJTlQq
IGFsbG93ZWRSdW5UaW1lKQogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKAorICAg
IC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQoreworICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJL
aXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHJl
dHVybiBTX09LOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2Vz
Ojpjc3NWaXNpdGVkU3R5bGVFbmFibGVkKAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCog
ZW5hYmxlZCkKK3sKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRD
U1NWaXNpdGVkU3R5bGVFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgIHJldHVybiBTX09LOwor
fQorCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRQcmVmZXJlbmNlRm9yVGVzdChCU1RSIGtl
eSwgQlNUUiB2YWx1ZSkKIHsKICAgICBpZiAoIVN5c1N0cmluZ0xlbihrZXkpIHx8ICFTeXNTdHJp
bmdMZW4odmFsdWUpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oIGIv
V2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IDJhODkyNjkuLjA4MGExNDkgMTAwNjQ0
Ci0tLSBhL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAorKysgYi9XZWJLaXQvd2luL1dlYlBy
ZWZlcmVuY2VzLmgKQEAgLTM4MCw2ICszODAsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwbHVnaW5BbGxvd2VkUnVuVGltZSgKICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIFVJTlQqIGFsbG93ZWRSdW5UaW1lKTsKIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKAorICAgICAgICAv
KiBbaW5dICovIEJPT0wgZW5hYmxlZCk7CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgY3NzVmlzaXRlZFN0eWxlRW5hYmxlZCgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCT09MKiBlbmFibGVkKTsKKwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXRQcmVmZXJlbmNlRm9yVGVzdCgKICAgICAvKiBbaW5dICovIEJTVFIga2V5LAogICAg
IC8qIFtpbl0gKi8gQlNUUiB2YWx1ZSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCAzMGYyYjBhLi41ZDE0NzI5IDEwMDY0
NAotLS0gYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViVmlldy5j
cHAKQEAgLTQ1MDgsNiArNDUwOCwxMSBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVu
Y2VzQ2hhbmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgc2V0dGluZ3Mt
PnNldEV4cGVyaW1lbnRhbFdlYkdMRW5hYmxlZCh0cnVlKTsKICNlbmRpZiAgLy8gRU5BQkxFKDNE
X0NBTlZBUykKIAorICAgIGhyID0gcHJlZmVyZW5jZXMtPmNzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQo
JmVuYWJsZWQpOworICAgIGlmIChGQUlMRUQoaHIpKQorICAgICAgICByZXR1cm4gaHI7CisgICAg
c2V0dGluZ3MtPnNldENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQoISFlbmFibGVkKTsKKwogICAgIGlm
ICghbV9jbG9zZVdpbmRvd1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fbWFpbkZyYW1lLT5p
bnZhbGlkYXRlKCk7IC8vIEZJWE1FCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA4NWRjODMwLi4xMjdiNmY5IDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMDktMTItMDUgIFJvYmVydCBIb2dhbiAgPHJvYmVydEByb2JlcnRo
b2dhbi5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG9wdGlvbiBDU1NWaXNpdGVkU3R5bGVFbmFibGVkLgorICAgICAgICBXaGVuIHNldCB0
byBmYWxzZSwgdGhpcyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zp
c2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3
ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAg
IGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBV
UkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKyAgICAgICAgCisgICAgICAgIEJ5IGRlZmF1bHQgdGhl
IG9wdGlvbiBpcyBzZXQgdG8gJ3RydWUnLgorICAgICAgICAKKyAgICAgICAgVGhlIG9wdGlvbiBo
YXMgYmVlbiBhZGRlZCB0byB0aGUgcXQsIGd0ayBhbmQgd2luIHBvcnRzIGFsb25nIHdpdGggdGhl
CisgICAgICAgIGFzc29jaWF0ZWQgdW5pdCB0ZXN0IGZvciBlYWNoLgorICAgICAgICAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzAwCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocmVz
ZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKGNvcHlXZWJTZXR0aW5n
S2V5KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2Up
OgorCiAyMDA5LTEyLTAzICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBkMzJiMDk2Li5mZmJk
NzFhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRl
clRyZWUuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVy
VHJlZS5jcHAKQEAgLTMzMyw2ICszMzMsNyBAQCBzdGF0aWMgdm9pZCByZXNldERlZmF1bHRzVG9D
b25zaXN0ZW50VmFsdWVzKCkKICAgICAgICAgICAgICAgICAgImRlZmF1bHQtZm9udC1zaXplIiwg
MTYsCiAgICAgICAgICAgICAgICAgICJkZWZhdWx0LW1vbm9zcGFjZS1mb250LXNpemUiLCAxMywK
ICAgICAgICAgICAgICAgICAgIm1pbmltdW0tZm9udC1zaXplIiwgMSwKKyAgICAgICAgICAgICAg
ICAgImNzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQiLCBUUlVFLAogICAgICAgICAgICAgICAgICBO
VUxMKTsKIAogICAgIHdlYmtpdF93ZWJfZnJhbWVfY2xlYXJfbWFpbl9mcmFtZV9uYW1lKG1haW5G
cmFtZSk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0
VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCA2ZTk0YzFjLi5iNzU3YzUzIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAKQEAgLTY4LDYgKzY4LDcgQEAgc3RhdGljIGdjaGFyKiBjb3B5V2ViU2V0
dGluZ0tleShnY2hhciogcHJlZmVyZW5jZUtleSkKICAgICAgICAga2V5VGFibGUgPSBnX2hhc2hf
dGFibGVfbmV3KGdfc3RyX2hhc2gsIGdfc3RyX2VxdWFsKTsKICAgICAgICAgZ19oYXNoX3RhYmxl
X2luc2VydChrZXlUYWJsZSwgZ19zdHJkdXAoIldlYktpdEphdmFTY3JpcHRFbmFibGVkIiksIGdf
c3RyZHVwKCJlbmFibGUtc2NyaXB0cyIpKTsKICAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydChr
ZXlUYWJsZSwgZ19zdHJkdXAoIldlYktpdERlZmF1bHRGb250U2l6ZSIpLCBnX3N0cmR1cCgiZGVm
YXVsdC1mb250LXNpemUiKSk7CisgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQoa2V5VGFibGUs
IGdfc3RyZHVwKCJXZWJLaXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkIiksIGdfc3RyZHVwKCJjc3Mt
dmlzaXRlZC1zdHlsZS1lbmFibGVkIikpOwogICAgIH0KIAogICAgIHJldHVybiBnX3N0cmR1cChz
dGF0aWNfY2FzdDxnY2hhcio+KGdfaGFzaF90YWJsZV9sb29rdXAoa2V5VGFibGUsIHByZWZlcmVu
Y2VLZXkpKSk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IGJlNTQyMjAuLjg4ZjcxMDcgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQu
Y3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuY3BwCkBAIC0zNDYsNCArMzQ2LDYgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
b3ZlcnJpZGVQcmVmZXJlbmNlKGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFWYXJpYW4KICAg
ICAgICAgc2V0dGluZ3MtPnNldEZvbnRTaXplKFFXZWJTZXR0aW5nczo6RGVmYXVsdEZvbnRTaXpl
LCB2YWx1ZS50b0ludCgpKTsKICAgICBlbHNlIGlmIChuYW1lID09ICJXZWJLaXRVc2VzUGFnZUNh
Y2hlUHJlZmVyZW5jZUtleSIpCiAgICAgICAgIFFXZWJTZXR0aW5nczo6c2V0TWF4aW11bVBhZ2Vz
SW5DYWNoZSh2YWx1ZS50b0ludCgpKTsKKyAgICBlbHNlIGlmIChuYW1lID09ICJXZWJLaXRDU1NW
aXNpdGVkU3R5bGVFbmFibGVkIikKKyAgICAgICAgc2V0dGluZ3MtPnNldEF0dHJpYnV0ZShRV2Vi
U2V0dGluZ3M6OkNTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQsIHZhbHVlLnRvQm9vbCgpKTsKIH0KLS0g
CjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44364</attachid>
            <date>2009-12-06 12:05:08 -0800</date>
            <delta_ts>2010-02-17 11:08:02 -0800</delta_ts>
            <desc>Update to skip test for Mac</desc>
            <filename>0001-Add-option-CSSVisitedStyleEnabled.patch</filename>
            <type>text/plain</type>
            <size>36553</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSBkMDZiY2UzMDk0YmIyYmZjYjNmNmQ3YTE4NDJiZmY1ZjEwMmI5N2FiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+
CkRhdGU6IFNhdCwgNSBEZWMgMjAwOSAxMzo0MzoyOSArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZCBvcHRpb24gQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZC4KIFdoZW4gc2V0IHRvIGZhbHNlLCB0aGlz
IG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUg
aW4gQ1NTCiBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0
bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCiBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2
aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCgpCeSBk
ZWZhdWx0IHRoZSBvcHRpb24gaXMgc2V0IHRvICd0cnVlJy4KClRoZSBvcHRpb24gaGFzIGJlZW4g
YWRkZWQgdG8gdGhlIHF0LCBndGsgYW5kIHdpbiBwb3J0cyBhbG9uZyB3aXRoIHRoZQphc3NvY2lh
dGVkIHVuaXQgdGVzdCBmb3IgZWFjaC4KCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDMwMAotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAyNiArKysrKysrKysrKysrKwogLi4uL2Nzcy12aXNpdGVkLXN0eWxl
LWRpc2FibGVkLWV4cGVjdGVkLnR4dCAgICAgICAgfCAgICAzICsrCiAuLi4vZmFzdC9oaXN0b3J5
L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLmh0bWwgICB8ICAgMzUgKysrKysrKysrKysrKysr
KysrKysKIC4uLi9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0
IHwgICAgMyArKwogLi4uL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLmh0
bWwgICAgfCAgIDM1ICsrKysrKysrKysrKysrKysrKysrCiAuLi4vcmVzb3VyY2VzL2Nzcy12aXNp
dGVkLXN0eWxlLWRpc2FibGVkLTIuaHRtbCAgICB8ICAgMzMgKysrKysrKysrKysrKysrKysrCiAu
Li4vcmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtMi5odG1sICAgICB8ICAgMzMg
KysrKysrKysrKysrKysrKysrCiAuLi4vY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0
ZWQudHh0ICAgICAgICB8ICAgIDQgKysKIC4uLi9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVu
YWJsZWQtZXhwZWN0ZWQudHh0IHwgICAgNCArKwogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Nr
aXBwZWQgICAgICAgICAgICAgICAgICAgfCAgICA0ICsrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjkgKysrKysrKysrKysrKysrKwogV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgICAgICAgICAgICAgICAgICAgfCAgICA3ICsr
KysKIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCAgICAgICAgICAgICAgICAgICAgIHwg
ICAgMSArCiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDYgKysrCiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDUgKysrCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjUgKysrKysrKysrKysrKysKIFdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnNldHRpbmdzLmNwcCAgICAgICAgICAgIHwgICAyOSArKysrKysrKysrKysrKysrLQog
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgICAgICAgICAgICAgICAgfCAgICA2
ICsrKy0KIFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcCAgICAgICAgICAgICAgICAgICAg
IHwgICAgNyArKysrCiBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDMgKy0KIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAyMCArKysrKysrKysrKwogV2ViS2l0L3dpbi9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI3ICsrKysrKysrKysrKysrKwogV2ViS2l0
L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwgICAgICAgICAgfCAgICA0ICsrCiBX
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgICB8ICAgIDIg
KwogV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCAgICAgICAgICAgICAgfCAg
ICAxICsKIFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwICAgICAgICAgICAgICAgICAgICAg
IHwgICAxNiArKysrKysrKysKIFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaCAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgNiArKysKIFdlYktpdC93aW4vV2ViVmlldy5jcHAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgNSArKysKIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMyArKysrKysrKysrKysrCiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwICB8ICAgIDEgKwogLi4uL0R1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgfCAgICAxICsKIC4u
Li9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCAgIHwgICAgMiAr
CiAzMiBmaWxlcyBjaGFuZ2VkLCA0MDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5
bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMv
ZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLmh0bWwKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxl
ZC1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rv
cnkvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5
b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxl
ZC0yLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVz
b3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtMi5odG1sCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHls
ZS1kaXNhYmxlZC1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0
ZWQudHh0CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDA3MWRjNDIuLjAzYThjNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAor
MjAwOS0xMi0wNSAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgb3B0aW9uIENT
U1Zpc2l0ZWRTdHlsZUVuYWJsZWQuCisgICAgICAgIFdoZW4gc2V0IHRvIGZhbHNlLCB0aGlzIG9w
dGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4g
Q1NTCisgICAgICAgIHN0eWxlc2hlZXRzLiBUaGlzIHByZXZlbnRzIHdlYnNpdGVzIGZyb20gaW5k
aXJlY3RseSBpbnNwZWN0aW5nIHlvdXIgYnJvd3NpbmcKKyAgICAgICAgaGlzdG9yeSBieSByZXF1
ZXN0aW5nIHRoZSAndmlzaXRlZCcgc3RhdGUgZm9yIGEgc2V0IG9mIFVSTHMgaW4gYSBIVE1MIGRv
Y3VtZW50LgorICAgICAgICAKKyAgICAgICAgQnkgZGVmYXVsdCB0aGUgb3B0aW9uIGlzIHNldCB0
byAndHJ1ZScuCisgICAgICAgIAorICAgICAgICBUaGUgb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRv
IHRoZSBxdCwgZ3RrIGFuZCB3aW4gcG9ydHMgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAgYXNzb2Np
YXRlZCB1bml0IHRlc3QgZm9yIGVhY2guCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKKworICAgICAgICAqIGZhc3QvaGlzdG9y
eS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1l
bmFibGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3Nz
LXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hp
c3RvcnkvcmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtMi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRp
c2FibGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3Qv
aGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisKIDIwMDktMTItMDQgIFl1em8gRnVqaXNo
aW1hICA8eXV6b0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hl
ci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHls
ZS1kaXNhYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZp
c2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmU1ZTg2YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMyBAQAorVGhpcyBsaW5rIHNob3VsZCBhcHBlYXIgaW4gYmx1ZS4uCisKK0xpbmsgaXMgYmx1
ZSAocmdiKDAsIDAsIDI1NSkpOiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hp
c3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
aGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmM4ZjBmODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQuaHRtbApAQCAtMCwwICsx
LDM1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5z
aXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+
Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPkNTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQgLSBXaGVuIFNl
dCB0byBGYWxzZSwgVmlzaXRlZCBMaW5rcyBhcHBlYXIgdW52aXNpdGVkPC9USVRMRT4KKzxNRVRB
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlz
by04ODU5LTEiPgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1TdHlsZS1UeXBlIiBjb250ZW50
PSJ0ZXh0L2NzcyI+Cis8U1RZTEUgdHlwZT0idGV4dC9jc3MiPgorQSB7Y29sb3I6IGdyZWVuO30K
K0E6bGluayB7Y29sb3I6IGJsdWU7fQorQTp2aXNpdGVkIHtjb2xvcjogcmVkO30KK0E6YWN0aXZl
IHtjb2xvcjogYmxhY2s7fQorI29uZSB7Y29sb3I6ICMwMDY2MDA7fQorPC9TVFlMRT4KKworPC9I
RUFEPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlk
ZVByZWZlcmVuY2UoIldlYktpdENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQiLCBmYWxzZSk7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICB2YXIgZWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJteWxpbmsiKTsKKyAgICB2YXIgZXZlbnQgPSBkb2N1bWVu
dC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpOworICAgIGV2ZW50LmluaXRFdmVudCgiY2xpY2si
LCB0cnVlLCB0cnVlKTsKKyAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPGRpdj48YSBocmVm
PSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAiPkJ1Z3ppbGxh
IFJlZmVyZW5jZS48L2E+PC9kaXY+Cis8ZGl2PlRvIHJ1biB0aGUgdGVzdCA8YSBpZD0ibXlsaW5r
IiBocmVmPSJyZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtMi5odG1sIj5jbGlj
ayB0aGlzIGxpbmsuPC9hPi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJs
ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkYTM3
N2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0
ZWQtc3R5bGUtZW5hYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIGxpbmsg
c2hvdWxkIGFwcGVhciBpbiByZWQuLgorCitMaW5rIGlzIHJlZCAocmdiKDI1NSwgMCwgMCkpOiBQ
QVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5
bGUtZW5hYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0
eWxlLWVuYWJsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzll
NGI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNp
dGVkLXN0eWxlLWVuYWJsZWQuaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3
LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExF
PkNTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQgLSBXaGVuIFNldCB0byBGYWxzZSwgVmlzaXRlZCBMaW5r
cyBhcHBlYXIgdW52aXNpdGVkPC9USVRMRT4KKzxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPE1FVEEgaHR0cC1l
cXVpdj0iQ29udGVudC1TdHlsZS1UeXBlIiBjb250ZW50PSJ0ZXh0L2NzcyI+Cis8U1RZTEUgdHlw
ZT0idGV4dC9jc3MiPgorQSB7Y29sb3I6IGdyZWVuO30KK0E6bGluayB7Y29sb3I6IGJsdWU7fQor
QTp2aXNpdGVkIHtjb2xvcjogcmVkO30KK0E6YWN0aXZlIHtjb2xvcjogYmxhY2s7fQorI29uZSB7
Y29sb3I6ICMwMDY2MDA7fQorPC9TVFlMRT4KKworPC9IRUFEPgorPHNjcmlwdD4KK2Z1bmN0aW9u
IHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdENTU1Zp
c2l0ZWRTdHlsZUVuYWJsZWQiLCB0cnVlKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgfQorICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm15
bGluayIpOworICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50
Iik7CisgICAgZXZlbnQuaW5pdEV2ZW50KCJjbGljayIsIHRydWUsIHRydWUpOworICAgIGVsZW1l
bnQuZGlzcGF0Y2hFdmVudChldmVudCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icnVuVGVzdCgpOyI+Cis8ZGl2PjxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNDMwMCI+QnVnemlsbGEgUmVmZXJlbmNlLjwvYT48L2Rpdj4KKzxk
aXY+VG8gcnVuIHRoZSB0ZXN0IDxhIGlkPSJteWxpbmsiIGhyZWY9InJlc291cmNlcy9jc3Mtdmlz
aXRlZC1zdHlsZS1lbmFibGVkLTIuaHRtbCI+Y2xpY2sgdGhpcyBsaW5rLjwvYT4uPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9y
ZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtMi5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC0yLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJlYjY2ZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5
bGUtZGlzYWJsZWQtMi5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMu
b3JnL1RSL1JFQy1odG1sNDAvbG9vc2UuZHRkIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+Q1NT
VmlzaXRlZFN0eWxlRW5hYmxlZCAtIFdoZW4gU2V0IHRvIEZhbHNlLCBWaXNpdGVkIExpbmtzIGFw
cGVhciB1bnZpc2l0ZWQ8L1RJVExFPgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8TUVUQSBodHRwLWVxdWl2
PSJDb250ZW50LVN0eWxlLVR5cGUiIGNvbnRlbnQ9InRleHQvY3NzIj4KKzxTVFlMRSB0eXBlPSJ0
ZXh0L2NzcyI+CitBIHtjb2xvcjogZ3JlZW47fQorQTpsaW5rIHtjb2xvcjogYmx1ZTt9CitBOnZp
c2l0ZWQge2NvbG9yOiByZWQ7fQorQTphY3RpdmUge2NvbG9yOiBibGFjazt9Cisjb25lIHtjb2xv
cjogIzAwNjYwMDt9Cis8L1NUWUxFPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKSB7Cisg
ICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICB2
YXIgbXlMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm15bGluayIpOworICAgIHZhciBj
b2xvciA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUobXlMaW5rLCBudWxs
KS5jb2xvcjsKKyAgICByZXN1bHQuaW5uZXJUZXh0ID0gY29sb3IgPT0gInJnYigwLCAwLCAyNTUp
IiA/ICJMaW5rIGlzIGJsdWUgKHJnYigwLCAwLCAyNTUpKTogUEFTUyIgOiAiTGluayBpcyBub3Qg
Ymx1ZS4gRkFJTDogIitjb2xvcjsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3Njcmlw
dD4KKzwvSEVBRD4KKzxib2R5IGlkPSJteUJvZHkiIG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8
ZGl2PjxhIGlkPSJteWxpbmsiIGhyZWY9Ii4uL2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLmh0
bWwiPlRoaXMgbGluayBzaG91bGQgYXBwZWFyIGluIGJsdWUuPC9hPi48L2Rpdj4KKyAgICA8L2Jy
PgorICAgIDxkaXYgaWQ9InJlc3VsdCI+CisgICAgICAgIFRlc3Qgbm90IHJ1biBjb3JyZWN0bHku
CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQt
Mi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jc3MtdmlzaXRlZC1z
dHlsZS1lbmFibGVkLTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y
YmNkNTYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291
cmNlcy9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLTIuaHRtbApAQCAtMCwwICsxLDMzIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8v
RU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+Cis8SFRNTD4K
KzxIRUFEPgorPFRJVExFPkNTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQgLSBXaGVuIFNldCwgVmlzaXRl
ZCBMaW5rcyBhcHBlYXIgdmlzaXRlZDwvVElUTEU+Cis8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxNRVRBIGh0
dHAtZXF1aXY9IkNvbnRlbnQtU3R5bGUtVHlwZSIgY29udGVudD0idGV4dC9jc3MiPgorPFNUWUxF
IHR5cGU9InRleHQvY3NzIj4KK0Ege2NvbG9yOiBncmVlbjt9CitBOmxpbmsge2NvbG9yOiBibHVl
O30KK0E6dmlzaXRlZCB7Y29sb3I6IHJlZDt9CitBOmFjdGl2ZSB7Y29sb3I6IGJsYWNrO30KKyNv
bmUge2NvbG9yOiAjMDA2NjAwO30KKzwvU1RZTEU+Cis8c2NyaXB0PgorZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIp
OworICAgIHZhciBteUxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlsaW5rIik7Cisg
ICAgdmFyIGNvbG9yID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShteUxp
bmssIG51bGwpLmNvbG9yOworICAgIHJlc3VsdC5pbm5lclRleHQgPSBjb2xvciA9PSAicmdiKDI1
NSwgMCwgMCkiID8gIkxpbmsgaXMgcmVkIChyZ2IoMjU1LCAwLCAwKSk6IFBBU1MiIDogIkxpbmsg
aXMgbm90IHJlZC4gRkFJTDogIitjb2xvcjsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8
L3NjcmlwdD4KKzwvSEVBRD4KKzxib2R5IGlkPSJteUJvZHkiIG9ubG9hZD0icnVuVGVzdCgpIj4K
KyAgICA8ZGl2PjxhIGlkPSJteWxpbmsiIGhyZWY9Ii4uL2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJs
ZWQuaHRtbCI+VGhpcyBsaW5rIHNob3VsZCBhcHBlYXIgaW4gcmVkLjwvYT4uPC9kaXY+CisgICAg
PC9icj4KKyAgICA8ZGl2IGlkPSJyZXN1bHQiPgorICAgICAgICBUZXN0IG5vdCBydW4gY29ycmVj
dGx5LgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1k
aXNhYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9oaXN0
b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTNkNzlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxl
ZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitOUFBfSW5pdGlhbGl6ZQorVGhpcyBsaW5r
IHNob3VsZCBhcHBlYXIgaW4gYmx1ZS4uCisKK0xpbmsgaXMgYmx1ZSAocmdiKDAsIDAsIDI1NSkp
OiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9oaXN0b3J5
L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTc5OGNhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3Mtdmlz
aXRlZC1zdHlsZS1lbmFibGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK05QUF9Jbml0
aWFsaXplCitUaGlzIGxpbmsgc2hvdWxkIGFwcGVhciBpbiByZWQuLgorCitMaW5rIGlzIHJlZCAo
cmdiKDI1NSwgMCwgMCkpOiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IGEzNjJl
OTQuLmQ3YTZiNjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVk
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC0xMDgsMyArMTA4LDcg
QEAgcGx1Z2lucy9yZWxvYWRwbHVnaW5zLW5vLXBhZ2VzLmh0bWwKIAogIyBUaGVzZSB0ZXN0IHJl
cXVpcmUgUXQgV2lkZ2V0cwogcGx1Z2lucy9xdC1xd2lkZ2V0LXBsdWdpbi5odG1sCisKKyMgTm90
IGltcGxlbWVudGVkCitmYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQuaHRt
bAorZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQuaHRtbApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NmE3ZTAxLi42
ZGIxMjk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDA5LTEyLTA1ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRA
cm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBvcHRpb24gQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZC4KKyAgICAgICAgV2hl
biBzZXQgdG8gZmFsc2UsIHRoaXMgb3B0aW9uIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBmb3Ig
dGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMgcHJl
dmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5IGluc3BlY3RpbmcgeW91ciBicm93c2luZwor
ICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBz
ZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCisgICAgICAgIAorICAgICAgICBCeSBkZWZh
dWx0IHRoZSBvcHRpb24gaXMgc2V0IHRvICd0cnVlJy4KKyAgICAgICAgCisgICAgICAgIFRoZSBv
cHRpb24gaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHF0LCBndGsgYW5kIHdpbiBwb3J0cyBhbG9uZyB3
aXRoIHRoZQorICAgICAgICBhc3NvY2lhdGVkIHVuaXQgdGVzdCBmb3IgZWFjaC4KKyAgICAgICAg
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMwMAor
CisgICAgICAgIFRlc3RzOiBmYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJs
ZWQuaHRtbAorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNr
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2Vy
OjpjaGVja1BzZXVkb1N0YXRlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgor
ICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRDU1NWaXNpdGVkU3R5
bGVFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6Y3NzVmlzaXRlZFN0eWxlRW5hYmxlZCk6CisKIDIwMDktMTItMDQgIFpvbHRh
biBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBi
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IGM0MDIyMjYuLmI4MTdiNmIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC04NzMsNyArODczLDExIEBAIENTU1N0eWxl
U2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2VyKERvY3VtZW50KiBkb2N1
bWVudCwgYm9vbCBzdHJpCiAgICAgLCBtX2NvbGxlY3RSdWxlc09ubHkoZmFsc2UpCiAgICAgLCBt
X3BzZXVkb1N0eWxlKE5PUFNFVURPKQogICAgICwgbV9kb2N1bWVudElzSFRNTChkb2N1bWVudC0+
aXNIVE1MRG9jdW1lbnQoKSkKKyAgICAsIG1fY3NzVmlzaXRlZFN0eWxlRW5hYmxlZCh0cnVlKQog
eworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZG9jdW1lbnQtPnNldHRpbmdzKCk7CisgICAg
aWYgKHNldHRpbmdzICYmICFzZXR0aW5ncy0+Y3NzVmlzaXRlZFN0eWxlRW5hYmxlZCgpKQorICAg
ICAgICBtX2Nzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQgPSBmYWxzZTsKIH0KIAogUHNldWRvU3RhdGUg
Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1BzZXVkb1N0YXRlKEVsZW1l
bnQqIGVsZW1lbnQsIGJvb2wgY2hlY2tWaXNpdGVkKSBjb25zdApAQCAtODg1LDYgKzg4OSw5IEBA
IFBzZXVkb1N0YXRlIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tQc2V1
ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50CiAgICAgaWYgKCFjaGVja1Zpc2l0ZWQpCiAgICAgICAg
IHJldHVybiBQc2V1ZG9BbnlMaW5rOwogCisgICAgaWYgKCFtX2Nzc1Zpc2l0ZWRTdHlsZUVuYWJs
ZWQpCisgICAgICAgIHJldHVybiBQc2V1ZG9MaW5rOworCiAjaWYgUExBVEZPUk0oUVQpCiAgICAg
VmVjdG9yPFVDaGFyLCA1MTI+IHVybDsKICAgICB2aXNpdGVkVVJMKG1fZG9jdW1lbnQtPmJhc2VV
UkwoKSwgKmF0dHIsIHVybCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmggYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKaW5kZXggZmFiNTAwNi4uNGVk
MzVlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCisrKyBiL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtMjA4LDYgKzIwOCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIFBzZXVkb0lkIG1fcHNldWRvU3R5bGU7CiAgICAgICAgICAgICBib29sIG1f
ZG9jdW1lbnRJc0hUTUw7CiAgICAgICAgICAgICBtdXRhYmxlIEhhc2hTZXQ8TGlua0hhc2gsIExp
bmtIYXNoSGFzaD4gbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGU7CisgICAgICAgICAgICBi
b29sIG1fY3NzVmlzaXRlZFN0eWxlRW5hYmxlZDsKICAgICAgICAgfTsKIAogICAgIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmNwcAppbmRleCA4Nzk2MmUyLi4zNjQ0YWM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTEwMiw2
ICsxMDIsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1fZW5mb3Jj
ZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKHRydWUpCiAgICAgLCBtX3VzZXNFbmNvZGluZ0RldGVj
dG9yKGZhbHNlKQogICAgICwgbV9hbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyhmYWxzZSkKKyAg
ICAsIG1fY3NzVmlzaXRlZFN0eWxlRW5hYmxlZCh0cnVlKQogICAgICwgbV9lZGl0aW5nQmVoYXZp
b3IoCiAjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIFBMQVRGT1JN
KERBUldJTikpCiAgICAgICAgIC8vIChQTEFURk9STShNQUMpIGlzIGFsd2F5cyBmYWxzZSBpbiBD
aHJvbWl1bSwgaGVuY2UgdGhlIGV4dHJhIGNvbmRpdGlvbi4pCkBAIC0yNjYsNiArMjY3LDExIEBA
IHZvaWQgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlQnJv
d3NpbmdFbmFibGVkKQogICAgIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHByaXZhdGVCcm93
c2luZ0VuYWJsZWQ7CiB9CiAKK3ZvaWQgU2V0dGluZ3M6OnNldENTU1Zpc2l0ZWRTdHlsZUVuYWJs
ZWQoYm9vbCBjc3NWaXNpdGVkU3R5bGVFbmFibGVkKQoreworICAgIG1fY3NzVmlzaXRlZFN0eWxl
RW5hYmxlZCA9IGNzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQ7Cit9CisKIHZvaWQgU2V0dGluZ3M6OnNl
dEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoYm9vbCBqYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KQogewogICAgIG1famF2YVNjcmlwdENhbk9wZW5XaW5k
b3dzQXV0b21hdGljYWxseSA9IGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5oCmluZGV4IDY3M2JhOGYuLjVhMDdmODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oCisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0yNzYsNiArMjc2LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEdlb2xvY2F0aW9uRW5hYmxl
ZChib29sKTsKICAgICAgICAgYm9vbCBnZW9sb2NhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2dlb2xvY2F0aW9uRW5hYmxlZDsgfQogCisgICAgICAgIHZvaWQgc2V0Q1NTVmlzaXRlZFN0
eWxlRW5hYmxlZChib29sKTsKKyAgICAgICAgYm9vbCBjc3NWaXNpdGVkU3R5bGVFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9jc3NWaXNpdGVkU3R5bGVFbmFibGVkOyB9CisKICAgICBwcml2YXRl
OgogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgICAgIApAQCAtMzQ2LDYgKzM0OSw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2V4cGVyaW1lbnRhbE5vdGlmaWNhdGlv
bnNFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX3dlYkdMRW5hYmxlZCA6IDE7CiAgICAgICAg
IGJvb2wgbV9nZW9sb2NhdGlvbkVuYWJsZWQgOiAxOworICAgICAgICBib29sIG1fY3NzVmlzaXRl
ZFN0eWxlRW5hYmxlZCA6IDE7CisKIAogI2lmIFVTRShTQUZBUklfVEhFTUUpCiAgICAgICAgIHN0
YXRpYyBib29sIGdTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBjMGM0MmQ0Li5jYWRl
NzEyIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDA5LTEyLTA1ICBSb2JlcnQgSG9nYW4gIDxyb2Jl
cnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBvcHRpb24gQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZC4KKyAgICAgICAg
V2hlbiBzZXQgdG8gZmFsc2UsIHRoaXMgb3B0aW9uIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBm
b3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMg
cHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5IGluc3BlY3RpbmcgeW91ciBicm93c2lu
ZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3Ig
YSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCisgICAgICAgIAorICAgICAgICBCeSBk
ZWZhdWx0IHRoZSBvcHRpb24gaXMgc2V0IHRvICd0cnVlJy4KKyAgICAgICAgCisgICAgICAgIFRo
ZSBvcHRpb24gaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHF0LCBndGsgYW5kIHdpbiBwb3J0cyBhbG9u
ZyB3aXRoIHRoZQorICAgICAgICBhc3NvY2lhdGVkIHVuaXQgdGVzdCBmb3IgZWFjaC4KKyAgICAg
ICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMw
MAorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdl
YmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wcm9w
ZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkpOgorICAgICAgICAqIHdl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld191cGRhdGVf
c2V0dGluZ3MpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSk6CisK
IDIwMDktMTItMDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJzZXR0aW5ncy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5n
cy5jcHAKaW5kZXggMTQzYWUwNi4uYTkzODU0NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnNldHRpbmdzLmNwcApAQCAtOTgsNiArOTgsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdz
UHJpdmF0ZSB7CiAgICAgZ2Jvb2xlYW4gZW5hYmxlX3VuaXZlcnNhbF9hY2Nlc3NfZnJvbV9maWxl
X3VyaXM7CiAgICAgZ2Jvb2xlYW4gZW5hYmxlX2RvbV9wYXN0ZTsKICAgICBnYm9vbGVhbiB0YWJf
a2V5X2N5Y2xlc190aHJvdWdoX2VsZW1lbnRzOworICAgIGdib29sZWFuIGNzc192aXNpdGVkX3N0
eWxlX2VuYWJsZWQ7CiB9OwogCiAjZGVmaW5lIFdFQktJVF9XRUJfU0VUVElOR1NfR0VUX1BSSVZB
VEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9X
RUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkpCkBAIC0xMzksNyArMTQwLDgg
QEAgZW51bSB7CiAgICAgUFJPUF9FRElUSU5HX0JFSEFWSU9SLAogICAgIFBST1BfRU5BQkxFX1VO
SVZFUlNBTF9BQ0NFU1NfRlJPTV9GSUxFX1VSSVMsCiAgICAgUFJPUF9FTkFCTEVfRE9NX1BBU1RF
LAotICAgIFBST1BfVEFCX0tFWV9DWUNMRVNfVEhST1VHSF9FTEVNRU5UUworICAgIFBST1BfVEFC
X0tFWV9DWUNMRVNfVEhST1VHSF9FTEVNRU5UUywKKyAgICBQUk9QX0NTU19WSVNJVEVEX1NUWUxF
X0VOQUJMRUQKIH07CiAKIC8vIENyZWF0ZSBhIGRlZmF1bHQgdXNlciBhZ2VudCBzdHJpbmcKQEAg
LTY4Nyw2ICs2ODksMjQgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19p
bml0KFdlYktpdFdlYlNldHRpbmdzQ2xhc3MqIGtsYXNzKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKIAogICAgIGdfdHlw
ZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYlNldHRpbmdzUHJpdmF0
ZSkpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczpjc3MtdmlzaXRlZC1zdHls
ZS1lbmFibGVkOgorICAgICoKKyAgICAqIFdoZXRoZXIgdG8gcmVzcGVjdCB0aGUgJ3Zpc2l0ZWQn
IHN0YXRlIGluIENTUyBzdHlsZXNoZWV0cy4gU2V0dGluZyB0bworICAgICogJ2ZhbHNlJyBwcmV2
ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisg
ICAgKiBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQg
b2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCisgICAgKgorICAgICogU2luY2U6IDEuMS4xNwor
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9DU1NfVklTSVRFRF9T
VFlMRV9FTkFCTEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJh
bV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3Nz
LXZpc2l0ZWQtc3R5bGUtZW5hYmxlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfKCJFbmFibGUgQ1NTIFZpc2l0ZWQgU3R5bGUiKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF8oIkVuYWJsZXMgdGhlIENTUyBWaXNpdGVkIFN0eWxlIGZvciBXZWIg
TGlua3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKIH0KIAogc3RhdGljIHZv
aWQgd2Via2l0X3dlYl9zZXR0aW5nc19pbml0KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJfc2V0dGlu
Z3MpCkBAIC04ODUsNiArOTA1LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb24KICAgICBjYXNl
IFBST1BfVEFCX0tFWV9DWUNMRVNfVEhST1VHSF9FTEVNRU5UUzoKICAgICAgICAgcHJpdi0+dGFi
X2tleV9jeWNsZXNfdGhyb3VnaF9lbGVtZW50cyA9ICBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVl
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0NTU19WSVNJVEVEX1NUWUxFX0VOQUJM
RUQ6CisgICAgICAgIHByaXYtPmNzc192aXNpdGVkX3N0eWxlX2VuYWJsZWQgPSBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
R19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMp
OwogICAgICAgICBicmVhazsKQEAgLTEwMDIsNiArMTAyNSw5IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9p
ZCwgR1ZhCiAgICAgY2FzZSBQUk9QX1RBQl9LRVlfQ1lDTEVTX1RIUk9VR0hfRUxFTUVOVFM6CiAg
ICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPnRhYl9rZXlfY3ljbGVzX3Ro
cm91Z2hfZWxlbWVudHMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQ1NTX1ZJU0lU
RURfU1RZTEVfRU5BQkxFRDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJp
di0+Y3NzX3Zpc2l0ZWRfc3R5bGVfZW5hYmxlZCk7CisgICAgICAgIGJyZWFrOwogICAgZGVmYXVs
dDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cF9pZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTEwNjcsNiArMTA5Myw3IEBAIFdlYktp
dFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkoV2ViS2l0V2ViU2V0dGluZ3Mq
IHdlYl9zZXR0aW5ncykKICAgICAgICAgICAgICAgICAgImVkaXRpbmctYmVoYXZpb3IiLCBwcml2
LT5lZGl0aW5nX2JlaGF2aW9yLAogICAgICAgICAgICAgICAgICAiZW5hYmxlLXVuaXZlcnNhbC1h
Y2Nlc3MtZnJvbS1maWxlLXVyaXMiLCBwcml2LT5lbmFibGVfdW5pdmVyc2FsX2FjY2Vzc19mcm9t
X2ZpbGVfdXJpcywKICAgICAgICAgICAgICAgICAgImVuYWJsZS1kb20tcGFzdGUiLCBwcml2LT5l
bmFibGVfZG9tX3Bhc3RlLAorICAgICAgICAgICAgICAgICAiY3NzLXZpc2l0ZWQtc3R5bGUtZW5h
YmxlZCIsIHByaXYtPmNzc192aXNpdGVkX3N0eWxlX2VuYWJsZWQsCiAgICAgICAgICAgICAgICAg
IE5VTEwpKTsKIAogICAgIHJldHVybiBjb3B5OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cAppbmRleCA0ZGE2NWFhLi45YmQ1YzY4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cApAQCAtMjM4OCw3ICsyMzg4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0
ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICBlbmFibGVTY3JpcHRz
LCBlbmFibGVQbHVnaW5zLCBlbmFibGVEZXZlbG9wZXJFeHRyYXMsIHJlc2l6YWJsZVRleHRBcmVh
cywKICAgICAgICAgZW5hYmxlUHJpdmF0ZUJyb3dzaW5nLCBlbmFibGVDYXJldEJyb3dzaW5nLCBl
bmFibGVIVE1MNURhdGFiYXNlLCBlbmFibGVIVE1MNUxvY2FsU3RvcmFnZSwKICAgICAgICAgZW5h
YmxlWFNTQXVkaXRvciwgamF2YXNjcmlwdENhbk9wZW5XaW5kb3dzLCBlbmFibGVPZmZsaW5lV2Vi
QXBwQ2FjaGUsCi0gICAgICAgIGVuYWJsZVVuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJJLCBlbmFi
bGVET01QYXN0ZSwgdGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzOworICAgICAgICBlbmFibGVV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSSSwgZW5hYmxlRE9NUGFzdGUsIHRhYktleUN5Y2xlc1Ro
cm91Z2hFbGVtZW50cywgQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZDsKIAogICAgIFdlYktpdEVkaXRp
bmdCZWhhdmlvciBlZGl0aW5nQmVoYXZpb3I7CiAKQEAgLTI0MTksNiArMjQxOSw3IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKICAgICAgICAgICAgICAgICAgImVuYWJsZS11bml2ZXJzYWwtYWNjZXNzLWZyb20tZmls
ZS11cmlzIiwgJmVuYWJsZVVuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJJLAogICAgICAgICAgICAg
ICAgICAiZW5hYmxlLWRvbS1wYXN0ZSIsICZlbmFibGVET01QYXN0ZSwKICAgICAgICAgICAgICAg
ICAgInRhYi1rZXktY3ljbGVzLXRocm91Z2gtZWxlbWVudHMiLCAmdGFiS2V5Q3ljbGVzVGhyb3Vn
aEVsZW1lbnRzLAorICAgICAgICAgICAgICAgICAiY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZCIs
ICZDU1NWaXNpdGVkU3R5bGVFbmFibGVkLAogICAgICAgICAgICAgICAgICBOVUxMKTsKIAogICAg
IHNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZShkZWZhdWx0RW5jb2RpbmcpOwpA
QCAtMjQ0Niw2ICsyNDQ3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9z
ZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHNldHRpbmdzLT5zZXRFZGl0aW5n
QmVoYXZpb3IoY29yZShlZGl0aW5nQmVoYXZpb3IpKTsKICAgICBzZXR0aW5ncy0+c2V0QWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoZW5hYmxlVW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVV
UkkpOwogICAgIHNldHRpbmdzLT5zZXRET01QYXN0ZUFsbG93ZWQoZW5hYmxlRE9NUGFzdGUpOwor
ICAgIHNldHRpbmdzLT5zZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKENTU1Zpc2l0ZWRTdHlsZUVu
YWJsZWQpOwogCiAgICAgUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldyk7CiAgICAgaWYgKHBhZ2Up
CkBAIC0yNTQzLDYgKzI1NDUsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0dGlu
Z3Nfbm90aWZ5KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncywgR1BhcgogICAgICAgICBp
ZiAocGFnZSkKICAgICAgICAgICAgIHBhZ2UtPnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50
cyhnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOwogICAgIH0KKyAgICBlbHNlIGlmIChuYW1l
ID09IGdfaW50ZXJuX3N0cmluZygiY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZCIpKQorICAgICAg
ICBzZXR0aW5ncy0+c2V0Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFu
KCZ2YWx1ZSkpOwogICAgIGVsc2UgaWYgKCFnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5KEdf
T0JKRUNUX0dFVF9DTEFTUyh3ZWJTZXR0aW5ncyksIG5hbWUpKQogICAgICAgICBnX3dhcm5pbmco
IlVuZXhwZWN0ZWQgc2V0dGluZyAnJXMnIiwgbmFtZSk7CiAgICAgZ192YWx1ZV91bnNldCgmdmFs
dWUpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIGIvV2ViS2l0
L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCmluZGV4IDlhNWFiNDYuLjJjNWZjNDkgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3
ZWJzZXR0aW5ncy5jcHAKQEAgLTE1OCw2ICsxNTgsMTAgQEAgdm9pZCBRV2ViU2V0dGluZ3NQcml2
YXRlOjphcHBseSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2Jh
bC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OlByaXZhdGVCcm93c2luZ0VuYWJsZWQp
KTsKICAgICAgICAgc2V0dGluZ3MtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodmFsdWUpOwog
CisgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU1Zpc2l0
ZWRTdHlsZUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
b2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU1Zpc2l0ZWRTdHlsZUVuYWJs
ZWQpKTsKKyAgICAgICAgc2V0dGluZ3MtPnNldENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQodmFsdWUp
OworICAgICAgICAKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5n
czo6SmF2YXNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6SmF2
YXNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCkpOwogICAgICAgICBzZXR0aW5ncy0+c2V0RE9NUGFz
dGVBbGxvd2VkKHZhbHVlKTsKQEAgLTM0Myw2ICszNDcsOSBAQCBRV2ViU2V0dGluZ3MqIFFXZWJT
ZXR0aW5nczo6Z2xvYmFsU2V0dGluZ3MoKQogICAgIFx2YWx1ZSBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZUVuYWJsZWQgXGV7VGhpcyBlbnVtIHZhbHVlIGlzIGRlcHJlY2F0ZWQufSBVc2UKICAgICAgICAg
UVdlYlNldHRpbmdzOjpMb2NhbFN0b3JhZ2VFbmFibGVkIGluc3RlYWQuCiAgICAgXHZhbHVlIExv
Y2FsQ29udGVudENhbkFjY2Vzc1JlbW90ZVVybHMgU3BlY2lmaWVzIHdoZXRoZXIgbG9jYWxseSBs
b2FkZWQgZG9jdW1lbnRzIGFyZSBhbGxvd2VkIHRvIGFjY2VzcyByZW1vdGUgdXJscy4KKyAgICBc
dmFsdWUgQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZCBBbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUg
J3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50
cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAg
ICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBv
ZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KICovCiAKIC8qIQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3F0L0FwaS9xd2Vic2V0dGluZ3MuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKaW5k
ZXggNjlmM2IxMS4uODExM2Y5ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGlu
Z3MuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oCkBAIC02Nyw3ICs2Nyw4IEBA
IHB1YmxpYzoKICAgICAgICAgTG9jYWxTdG9yYWdlRGF0YWJhc2VFbmFibGVkID0gTG9jYWxTdG9y
YWdlRW5hYmxlZCwKICNlbmRpZgogICAgICAgICBMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVV
cmxzLAotICAgICAgICBEbnNQcmVmZXRjaEVuYWJsZWQKKyAgICAgICAgRG5zUHJlZmV0Y2hFbmFi
bGVkLAorICAgICAgICBDU1NWaXNpdGVkU3R5bGVFbmFibGVkCiAgICAgfTsKICAgICBlbnVtIFdl
YkdyYXBoaWMgewogICAgICAgICBNaXNzaW5nSW1hZ2VHcmFwaGljLApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggY2MxZGM0Yi4uNzZi
NmRjMCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMTItMDUgIFJvYmVydCBIb2dhbiAgPHJvYmVy
dEByb2JlcnRob2dhbi5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIG9wdGlvbiBDU1NWaXNpdGVkU3R5bGVFbmFibGVkLgorICAgICAgICBX
aGVuIHNldCB0byBmYWxzZSwgdGhpcyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZv
ciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBw
cmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5n
CisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBh
IHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKyAgICAgICAgCisgICAgICAgIEJ5IGRl
ZmF1bHQgdGhlIG9wdGlvbiBpcyBzZXQgdG8gJ3RydWUnLgorICAgICAgICAKKyAgICAgICAgVGhl
IG9wdGlvbiBoYXMgYmVlbiBhZGRlZCB0byB0aGUgcXQsIGd0ayBhbmQgd2luIHBvcnRzIGFsb25n
IHdpdGggdGhlCisgICAgICAgIGFzc29jaWF0ZWQgdW5pdCB0ZXN0IGZvciBlYWNoLgorICAgICAg
ICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzAw
CisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5n
c1ByaXZhdGU6OmFwcGx5KToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisKIDIwMDkt
MTItMDMgIMSwc21haWwgRMO2bm1leiAgPGlzbWFpbEBuYW10cmFjLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9n
IGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZjQ1NzAzNC4uODUwMzU3YyAxMDA2NDQKLS0t
IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAwOS0xMi0wNSAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHJvYmVydGhvZ2Fu
Lm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgb3B0aW9uIENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQuCisgICAgICAgIFdoZW4gc2V0IHRvIGZh
bHNlLCB0aGlzIG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRl
ZCcgc3RhdGUgaW4gQ1NTCisgICAgICAgIHN0eWxlc2hlZXRzLiBUaGlzIHByZXZlbnRzIHdlYnNp
dGVzIGZyb20gaW5kaXJlY3RseSBpbnNwZWN0aW5nIHlvdXIgYnJvd3NpbmcKKyAgICAgICAgaGlz
dG9yeSBieSByZXF1ZXN0aW5nIHRoZSAndmlzaXRlZCcgc3RhdGUgZm9yIGEgc2V0IG9mIFVSTHMg
aW4gYSBIVE1MIGRvY3VtZW50LgorICAgICAgICAKKyAgICAgICAgQnkgZGVmYXVsdCB0aGUgb3B0
aW9uIGlzIHNldCB0byAndHJ1ZScuCisgICAgICAgIAorICAgICAgICBUaGUgb3B0aW9uIGhhcyBi
ZWVuIGFkZGVkIHRvIHRoZSBxdCwgZ3RrIGFuZCB3aW4gcG9ydHMgYWxvbmcgd2l0aCB0aGUKKyAg
ICAgICAgYXNzb2NpYXRlZCB1bml0IHRlc3QgZm9yIGVhY2guCisgICAgICAgIAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNw
ZWN0b3JDbGllbnQ6OmNyZWF0ZVBhZ2UpOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VLZXlzUHJp
dmF0ZS5oOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlByZWZl
cmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKToKKyAgICAgICAgKFdlYlByZWZlcmVu
Y2VzOjpzZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKToKKyAgICAgICAgKFdlYlByZWZlcmVuY2Vz
Ojpjc3NWaXNpdGVkU3R5bGVFbmFibGVkKToKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5oOgor
ICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5j
ZXNDaGFuZ2VkKToKKwogMjAwOS0xMi0wMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYktp
dC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXMuaWRsIGIvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwKaW5kZXggOWE1MmQ3Yy4uNWViNjExOSAxMDA2NDQKLS0t
IGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwKKysrIGIvV2ViS2l0
L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwKQEAgLTE4Niw0ICsxODYsOCBAQCBp
bnRlcmZhY2UgSVdlYlByZWZlcmVuY2VzIDogSVVua25vd24KIAogICAgIEhSRVNVTFQgc2V0Wm9v
bXNUZXh0T25seShCT09MIHpvb21zVGV4dE9ubHkpOwogICAgIEhSRVNVTFQgem9vbXNUZXh0T25s
eShCT09MICp6b29tc1RleHRPbmx5KTsKKworICAgIEhSRVNVTFQgc2V0Q1NTVmlzaXRlZFN0eWxl
RW5hYmxlZChbaW5dIEJPT0wgZW5hYmxlZCk7CisgICAgSFJFU1VMVCBjc3NWaXNpdGVkU3R5bGVF
bmFibGVkKFtvdXQsIHJldHZhbF0gQk9PTCogZW5hYmxlZCk7CisKIH0KZGlmZiAtLWdpdCBhL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCAwZGQ2ZTU4Li5l
ZDdkNzAwIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwCkBAIC0xNjgsNiArMTY4LDggQEAgUGFnZSogV2ViSW5zcGVjdG9yQ2xpZW50Ojpj
cmVhdGVQYWdlKCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNl
cy0+c2V0RGVmYXVsdEZpeGVkRm9udFNpemUoMTMpKSkKICAgICAgICAgcmV0dXJuIDA7CisgICAg
aWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZChUUlVFKSkp
CisgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPnNldFByZWZl
cmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKSkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1dlYktpdC93aW4vV2Vi
UHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5kZXggMDlhZWFmZi4uOWRlMjIzMCAxMDA2NDQKLS0t
IGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9XZWJLaXQvd2lu
L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC02NSw2ICs2NSw3IEBACiAjZGVmaW5lIFdl
YktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5ICJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVy
ZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VLZXkgIldlYktpdENh
Y2hlTW9kZWxQcmVmZXJlbmNlS2V5IgogI2RlZmluZSBXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVBhdGhQcmVmZXJlbmNlS2V5ICJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgiCisjZGVm
aW5lIFdlYktpdENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWRLZXkgIldlYktpdENTU1Zpc2l0ZWRTdHls
ZUVuYWJsZWQiCiAKIC8vIFRoZXNlIGFyZSBwcml2YXRlIGJvdGggYmVjYXVzZSBjYWxsZXJzIHNo
b3VsZCBiZSB1c2luZyB0aGUgY292ZXIgbWV0aG9kcyBhbmQgYmVjYXVzZSB0aGUKIC8vIGNvdmVy
IG1ldGhvZHMgdGhlbXNlbHZlcyBhcmUgcHJpdmF0ZS4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4v
V2ViUHJlZmVyZW5jZXMuY3BwIGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXgg
NjUyZTYxOS4uYzc2YjJmZSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5j
cHAKKysrIGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTI1NSw2ICsyNTUsOCBA
QCB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKCkKICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBsdWdpbkFsbG93ZWRSdW5UaW1lKEFkb3B0Q0YsIENGU3Ry
aW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiJXUiKSwgbnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSkpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRQbHVnaW5BbGxvd2VkUnVuVGltZVByZWZlcmVuY2VLZXkpLCBwbHVnaW5BbGxvd2Vk
UnVuVGltZS5nZXQoKSk7CiAKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFu
VHJ1ZSk7CisKICAgICBkZWZhdWx0U2V0dGluZ3MgPSBkZWZhdWx0czsKIH0KIApAQCAtMTM0NSw2
ICsxMzQ3LDIwIEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnBsdWdpbkFsbG93ZWRSdW5UaW1l
KFVJTlQqIGFsbG93ZWRSdW5UaW1lKQogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVk
KAorICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQoreworICAgIHNldEJvb2xWYWx1ZShDRlNU
UihXZWJLaXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOwor
ICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZl
cmVuY2VzOjpjc3NWaXNpdGVkU3R5bGVFbmFibGVkKAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
Qk9PTCogZW5hYmxlZCkKK3sKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihX
ZWJLaXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgIHJldHVybiBT
X09LOworfQorCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRQcmVmZXJlbmNlRm9yVGVzdChC
U1RSIGtleSwgQlNUUiB2YWx1ZSkKIHsKICAgICBpZiAoIVN5c1N0cmluZ0xlbihrZXkpIHx8ICFT
eXNTdHJpbmdMZW4odmFsdWUpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
cy5oIGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IDJhODkyNjkuLjA4MGExNDkg
MTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAorKysgYi9XZWJLaXQvd2lu
L1dlYlByZWZlcmVuY2VzLmgKQEAgLTM4MCw2ICszODAsMTIgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwbHVnaW5BbGxvd2VkUnVuVGltZSgKICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIFVJTlQqIGFsbG93ZWRSdW5UaW1lKTsKIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKAorICAg
ICAgICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCk7CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgY3NzVmlzaXRlZFN0eWxlRW5hYmxlZCgKKyAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKTsKKwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRQcmVmZXJlbmNlRm9yVGVzdCgKICAgICAvKiBbaW5dICovIEJTVFIga2V5
LAogICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1ZSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dl
YlZpZXcuY3BwIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCAzMGYyYjBhLi41ZDE0NzI5
IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAKQEAgLTQ1MDgsNiArNDUwOCwxMSBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVBy
ZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgc2V0
dGluZ3MtPnNldEV4cGVyaW1lbnRhbFdlYkdMRW5hYmxlZCh0cnVlKTsKICNlbmRpZiAgLy8gRU5B
QkxFKDNEX0NBTlZBUykKIAorICAgIGhyID0gcHJlZmVyZW5jZXMtPmNzc1Zpc2l0ZWRTdHlsZUVu
YWJsZWQoJmVuYWJsZWQpOworICAgIGlmIChGQUlMRUQoaHIpKQorICAgICAgICByZXR1cm4gaHI7
CisgICAgc2V0dGluZ3MtPnNldENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQoISFlbmFibGVkKTsKKwog
ICAgIGlmICghbV9jbG9zZVdpbmRvd1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fbWFpbkZy
YW1lLT5pbnZhbGlkYXRlKCk7IC8vIEZJWE1FCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0No
YW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA4NWRjODMwLi4xMjdiNmY5IDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMTItMDUgIFJvYmVydCBIb2dhbiAgPHJvYmVydEBy
b2JlcnRob2dhbi5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIG9wdGlvbiBDU1NWaXNpdGVkU3R5bGVFbmFibGVkLgorICAgICAgICBXaGVu
IHNldCB0byBmYWxzZSwgdGhpcyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0
aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2
ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisg
ICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNl
dCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKyAgICAgICAgCisgICAgICAgIEJ5IGRlZmF1
bHQgdGhlIG9wdGlvbiBpcyBzZXQgdG8gJ3RydWUnLgorICAgICAgICAKKyAgICAgICAgVGhlIG9w
dGlvbiBoYXMgYmVlbiBhZGRlZCB0byB0aGUgcXQsIGd0ayBhbmQgd2luIHBvcnRzIGFsb25nIHdp
dGggdGhlCisgICAgICAgIGFzc29jaWF0ZWQgdW5pdCB0ZXN0IGZvciBlYWNoLgorICAgICAgICAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzAwCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAg
ICAocmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKGNvcHlXZWJT
ZXR0aW5nS2V5KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpvdmVycmlkZVByZWZl
cmVuY2UpOgorCiAyMDA5LTEyLTAzICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBkMzJiMDk2
Li5mZmJkNzFhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVt
cFJlbmRlclRyZWUuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1w
UmVuZGVyVHJlZS5jcHAKQEAgLTMzMyw2ICszMzMsNyBAQCBzdGF0aWMgdm9pZCByZXNldERlZmF1
bHRzVG9Db25zaXN0ZW50VmFsdWVzKCkKICAgICAgICAgICAgICAgICAgImRlZmF1bHQtZm9udC1z
aXplIiwgMTYsCiAgICAgICAgICAgICAgICAgICJkZWZhdWx0LW1vbm9zcGFjZS1mb250LXNpemUi
LCAxMywKICAgICAgICAgICAgICAgICAgIm1pbmltdW0tZm9udC1zaXplIiwgMSwKKyAgICAgICAg
ICAgICAgICAgImNzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQiLCBUUlVFLAogICAgICAgICAgICAg
ICAgICBOVUxMKTsKIAogICAgIHdlYmtpdF93ZWJfZnJhbWVfY2xlYXJfbWFpbl9mcmFtZV9uYW1l
KG1haW5GcmFtZSk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
TGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCA2ZTk0YzFjLi5iNzU3YzUzIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTY4LDYgKzY4LDcgQEAgc3RhdGljIGdjaGFyKiBjb3B5
V2ViU2V0dGluZ0tleShnY2hhciogcHJlZmVyZW5jZUtleSkKICAgICAgICAga2V5VGFibGUgPSBn
X2hhc2hfdGFibGVfbmV3KGdfc3RyX2hhc2gsIGdfc3RyX2VxdWFsKTsKICAgICAgICAgZ19oYXNo
X3RhYmxlX2luc2VydChrZXlUYWJsZSwgZ19zdHJkdXAoIldlYktpdEphdmFTY3JpcHRFbmFibGVk
IiksIGdfc3RyZHVwKCJlbmFibGUtc2NyaXB0cyIpKTsKICAgICAgICAgZ19oYXNoX3RhYmxlX2lu
c2VydChrZXlUYWJsZSwgZ19zdHJkdXAoIldlYktpdERlZmF1bHRGb250U2l6ZSIpLCBnX3N0cmR1
cCgiZGVmYXVsdC1mb250LXNpemUiKSk7CisgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQoa2V5
VGFibGUsIGdfc3RyZHVwKCJXZWJLaXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkIiksIGdfc3RyZHVw
KCJjc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkIikpOwogICAgIH0KIAogICAgIHJldHVybiBnX3N0
cmR1cChzdGF0aWNfY2FzdDxnY2hhcio+KGdfaGFzaF90YWJsZV9sb29rdXAoa2V5VGFibGUsIHBy
ZWZlcmVuY2VLZXkpKSk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IGJlNTQyMjAuLjg4ZjcxMDcgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuY3BwCkBAIC0zNDYsNCArMzQ2LDYgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFWYXJp
YW4KICAgICAgICAgc2V0dGluZ3MtPnNldEZvbnRTaXplKFFXZWJTZXR0aW5nczo6RGVmYXVsdEZv
bnRTaXplLCB2YWx1ZS50b0ludCgpKTsKICAgICBlbHNlIGlmIChuYW1lID09ICJXZWJLaXRVc2Vz
UGFnZUNhY2hlUHJlZmVyZW5jZUtleSIpCiAgICAgICAgIFFXZWJTZXR0aW5nczo6c2V0TWF4aW11
bVBhZ2VzSW5DYWNoZSh2YWx1ZS50b0ludCgpKTsKKyAgICBlbHNlIGlmIChuYW1lID09ICJXZWJL
aXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkIikKKyAgICAgICAgc2V0dGluZ3MtPnNldEF0dHJpYnV0
ZShRV2ViU2V0dGluZ3M6OkNTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQsIHZhbHVlLnRvQm9vbCgpKTsK
IH0KLS0gCjEuNi4zLjMKCg==
</data>
<flag name="review"
          id="26198"
          type_id="1"
          status="-"
          setter="eric"
    />
    <flag name="commit-queue"
          id="27660"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48915</attachid>
            <date>2010-02-17 11:08:02 -0800</date>
            <delta_ts>2010-02-21 11:33:29 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>0001-Add-option-CSSVisitedStyleEnabled.patch</filename>
            <type>text/plain</type>
            <size>36198</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSAyYWM2YTgzNzc0NTUzYTEyYzBmODIxZjMyNDNhNWJlOTdjYjg1MmQ2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+
CkRhdGU6IFNhdCwgNSBEZWMgMjAwOSAxMzo0MzoyOSArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZCBvcHRpb24gQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZC4KIFdoZW4gc2V0IHRvIGZhbHNlLCB0aGlz
IG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUg
aW4gQ1NTCiBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0
bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCiBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2
aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCgpCeSBk
ZWZhdWx0IHRoZSBvcHRpb24gaXMgc2V0IHRvICd0cnVlJy4KClRoZSBvcHRpb24gaGFzIGJlZW4g
YWRkZWQgdG8gdGhlIHF0LCBndGsgYW5kIHdpbiBwb3J0cyBhbG9uZyB3aXRoIHRoZQphc3NvY2lh
dGVkIHVuaXQgdGVzdCBmb3IgZWFjaC4KCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDMwMAotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAyNiArKysrKysrKysrKysrKwogLi4uL2Nzcy12aXNpdGVkLXN0eWxl
LWRpc2FibGVkLWV4cGVjdGVkLnR4dCAgICAgICAgfCAgICAzICsrCiAuLi4vZmFzdC9oaXN0b3J5
L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLmh0bWwgICB8ICAgMzUgKysrKysrKysrKysrKysr
KysrKysKIC4uLi9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0
IHwgICAgMyArKwogLi4uL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLmh0
bWwgICAgfCAgIDM1ICsrKysrKysrKysrKysrKysrKysrCiAuLi4vcmVzb3VyY2VzL2Nzcy12aXNp
dGVkLXN0eWxlLWRpc2FibGVkLTIuaHRtbCAgICB8ICAgMzMgKysrKysrKysrKysrKysrKysrCiAu
Li4vcmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtMi5odG1sICAgICB8ICAgMzMg
KysrKysrKysrKysrKysrKysrCiAuLi4vY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0
ZWQudHh0ICAgICAgICB8ICAgIDMgKysKIC4uLi9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVu
YWJsZWQtZXhwZWN0ZWQudHh0IHwgICAgMyArKwogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Nr
aXBwZWQgICAgICAgICAgICAgICAgICAgfCAgICA0ICsrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjkgKysrKysrKysrKysrKysrKwogV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgICAgICAgICAgICAgICAgICAgfCAgICA3ICsr
KysKIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCAgICAgICAgICAgICAgICAgICAgIHwg
ICAgMSArCiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDYgKysrCiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDQgKysKIFdlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAxOCArKysrKysrKysrCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJzZXR0aW5ncy5jcHAgICAgICAgICAgICB8ICAgMjkgKysrKysrKysrKysrKysrKy0KIFdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwICAgICAgICAgICAgICAgIHwgICAgNiArKyst
CiBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDcgKysrKwogV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaCAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAzICstCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMjAgKysrKysrKysrKysKIFdlYktpdC93aW4vQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArKysrKysrKysrKysrKysKIFdlYktpdC93aW4v
SW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXMuaWRsICAgICAgICAgIHwgICAgNCArKwogV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwICAgfCAgICAyICsKIFdl
YktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggICAgICAgICAgICAgIHwgICAgMSAr
CiBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcCAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTYgKysrKysrKysrCiBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmggICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDYgKysrCiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDUgKysrCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMjMgKysrKysrKysrKysrKwogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCAgfCAgICAxICsKIC4uLi9EdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIHwgICAgMSArCiAuLi4vRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgICB8ICAgIDIgKwogMzIg
ZmlsZXMgY2hhbmdlZCwgMzkzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRp
c2FibGVkLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3Qv
aGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhw
ZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nz
cy12aXNpdGVkLXN0eWxlLWVuYWJsZWQuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtMi5o
dG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNl
cy9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLTIuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlz
YWJsZWQtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLWV4cGVjdGVkLnR4
dAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAwNTc5NWI5Li5jMzViMjViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAt
MDItMTMgIFJvYmVydCBIb2dhbiAgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG9wdGlvbiBDU1NWaXNp
dGVkU3R5bGVFbmFibGVkLgorICAgICAgICBXaGVuIHNldCB0byBmYWxzZSwgdGhpcyBvcHRpb24g
d2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUwor
ICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0
bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGlu
ZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVu
dC4KKyAgICAgICAgCisgICAgICAgIEJ5IGRlZmF1bHQgdGhlIG9wdGlvbiBpcyBzZXQgdG8gJ3Ry
dWUnLgorICAgICAgICAKKyAgICAgICAgVGhlIG9wdGlvbiBoYXMgYmVlbiBhZGRlZCB0byB0aGUg
cXQsIGd0ayBhbmQgd2luIHBvcnRzIGFsb25nIHdpdGggdGhlCisgICAgICAgIGFzc29jaWF0ZWQg
dW5pdCB0ZXN0IGZvciBlYWNoLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzAwCisKKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvY3Nz
LXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2Nzcy12aXNp
dGVkLXN0eWxlLWRpc2FibGVkLTIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5
L3Jlc291cmNlcy9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLTIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxl
ZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2hpc3Rv
cnkvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorCiAyMDEwLTAyLTEzICBDc2FiYSBPc3p0cm9nb27D
oWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBTa2lwIG5ldyB0ZXN0IHRoYXQg
ZmFpbHMuIFNlZSBodHRwczovL3dlYmtpdC5vcmcvYi8zNDkxOC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZTg2YjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQt
c3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyBsaW5rIHNo
b3VsZCBhcHBlYXIgaW4gYmx1ZS4uCisKK0xpbmsgaXMgYmx1ZSAocmdiKDAsIDAsIDI1NSkpOiBQ
QVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5
bGUtZGlzYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1z
dHlsZS1kaXNhYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4
ZjBmODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZp
c2l0ZWQtc3R5bGUtZGlzYWJsZWQuaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8v
d3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+Cis8SFRNTD4KKzxIRUFEPgorPFRJ
VExFPkNTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQgLSBXaGVuIFNldCB0byBGYWxzZSwgVmlzaXRlZCBM
aW5rcyBhcHBlYXIgdW52aXNpdGVkPC9USVRMRT4KKzxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPE1FVEEgaHR0
cC1lcXVpdj0iQ29udGVudC1TdHlsZS1UeXBlIiBjb250ZW50PSJ0ZXh0L2NzcyI+Cis8U1RZTEUg
dHlwZT0idGV4dC9jc3MiPgorQSB7Y29sb3I6IGdyZWVuO30KK0E6bGluayB7Y29sb3I6IGJsdWU7
fQorQTp2aXNpdGVkIHtjb2xvcjogcmVkO30KK0E6YWN0aXZlIHtjb2xvcjogYmxhY2s7fQorI29u
ZSB7Y29sb3I6ICMwMDY2MDA7fQorPC9TVFlMRT4KKworPC9IRUFEPgorPHNjcmlwdD4KK2Z1bmN0
aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdENT
U1Zpc2l0ZWRTdHlsZUVuYWJsZWQiLCBmYWxzZSk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgIH0KKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJteWxpbmsiKTsKKyAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VF
dmVudCIpOworICAgIGV2ZW50LmluaXRFdmVudCgiY2xpY2siLCB0cnVlLCB0cnVlKTsKKyAgICBl
bGVtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPGRpdj48YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAiPkJ1Z3ppbGxhIFJlZmVyZW5jZS48L2E+PC9kaXY+
Cis8ZGl2PlRvIHJ1biB0aGUgdGVzdCA8YSBpZD0ibXlsaW5rIiBocmVmPSJyZXNvdXJjZXMvY3Nz
LXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtMi5odG1sIj5jbGljayB0aGlzIGxpbmsuPC9hPi48L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0
b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkYTM3N2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIGxpbmsgc2hvdWxkIGFwcGVhciBpbiByZWQu
LgorCitMaW5rIGlzIHJlZCAocmdiKDI1NSwgMCwgMCkpOiBQQVNTCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzllNGI3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQuaHRt
bApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhU
TUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQw
L2xvb3NlLmR0ZCI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPkNTU1Zpc2l0ZWRTdHlsZUVuYWJs
ZWQgLSBXaGVuIFNldCB0byBGYWxzZSwgVmlzaXRlZCBMaW5rcyBhcHBlYXIgdW52aXNpdGVkPC9U
SVRMRT4KKzxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PWlzby04ODU5LTEiPgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1TdHlsZS1U
eXBlIiBjb250ZW50PSJ0ZXh0L2NzcyI+Cis8U1RZTEUgdHlwZT0idGV4dC9jc3MiPgorQSB7Y29s
b3I6IGdyZWVuO30KK0E6bGluayB7Y29sb3I6IGJsdWU7fQorQTp2aXNpdGVkIHtjb2xvcjogcmVk
O30KK0E6YWN0aXZlIHtjb2xvcjogYmxhY2s7fQorI29uZSB7Y29sb3I6ICMwMDY2MDA7fQorPC9T
VFlMRT4KKworPC9IRUFEPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQiLCB0
cnVlKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorICAgIHZhciBl
bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm15bGluayIpOworICAgIHZhciBldmVu
dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50Iik7CisgICAgZXZlbnQuaW5pdEV2
ZW50KCJjbGljayIsIHRydWUsIHRydWUpOworICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChldmVu
dCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpOyI+Cis8
ZGl2PjxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMw
MCI+QnVnemlsbGEgUmVmZXJlbmNlLjwvYT48L2Rpdj4KKzxkaXY+VG8gcnVuIHRoZSB0ZXN0IDxh
IGlkPSJteWxpbmsiIGhyZWY9InJlc291cmNlcy9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLTIu
aHRtbCI+Y2xpY2sgdGhpcyBsaW5rLjwvYT4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLXZpc2l0ZWQt
c3R5bGUtZGlzYWJsZWQtMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNl
cy9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOWJlYjY2ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtMi5odG1sCkBA
IC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0
LjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAvbG9v
c2UuZHRkIj4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZCAt
IFdoZW4gU2V0IHRvIEZhbHNlLCBWaXNpdGVkIExpbmtzIGFwcGVhciB1bnZpc2l0ZWQ8L1RJVExF
PgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9aXNvLTg4NTktMSI+Cis8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVN0eWxlLVR5cGUi
IGNvbnRlbnQ9InRleHQvY3NzIj4KKzxTVFlMRSB0eXBlPSJ0ZXh0L2NzcyI+CitBIHtjb2xvcjog
Z3JlZW47fQorQTpsaW5rIHtjb2xvcjogYmx1ZTt9CitBOnZpc2l0ZWQge2NvbG9yOiByZWQ7fQor
QTphY3RpdmUge2NvbG9yOiBibGFjazt9Cisjb25lIHtjb2xvcjogIzAwNjYwMDt9Cis8L1NUWUxF
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgdmFyIHJlc3VsdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICB2YXIgbXlMaW5rID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIm15bGluayIpOworICAgIHZhciBjb2xvciA9IGRvY3VtZW50LmRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUobXlMaW5rLCBudWxsKS5jb2xvcjsKKyAgICByZXN1bHQu
aW5uZXJUZXh0ID0gY29sb3IgPT0gInJnYigwLCAwLCAyNTUpIiA/ICJMaW5rIGlzIGJsdWUgKHJn
YigwLCAwLCAyNTUpKTogUEFTUyIgOiAiTGluayBpcyBub3QgYmx1ZS4gRkFJTDogIitjb2xvcjsK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvSEVBRD4KKzxib2R5IGlk
PSJteUJvZHkiIG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8ZGl2PjxhIGlkPSJteWxpbmsiIGhy
ZWY9Ii4uL2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLmh0bWwiPlRoaXMgbGluayBzaG91bGQg
YXBwZWFyIGluIGJsdWUuPC9hPi48L2Rpdj4KKyAgICA8L2JyPgorICAgIDxkaXYgaWQ9InJlc3Vs
dCI+CisgICAgICAgIFRlc3Qgbm90IHJ1biBjb3JyZWN0bHkuCisgICAgPC9kaXY+Cis8L2JvZHk+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkv
cmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtMi5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLTIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmNkNTYzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jc3MtdmlzaXRlZC1zdHls
ZS1lbmFibGVkLTIuaHRtbApAQCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9y
Zy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPkNTU1Zp
c2l0ZWRTdHlsZUVuYWJsZWQgLSBXaGVuIFNldCwgVmlzaXRlZCBMaW5rcyBhcHBlYXIgdmlzaXRl
ZDwvVElUTEU+Cis8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtU3R5
bGUtVHlwZSIgY29udGVudD0idGV4dC9jc3MiPgorPFNUWUxFIHR5cGU9InRleHQvY3NzIj4KK0Eg
e2NvbG9yOiBncmVlbjt9CitBOmxpbmsge2NvbG9yOiBibHVlO30KK0E6dmlzaXRlZCB7Y29sb3I6
IHJlZDt9CitBOmFjdGl2ZSB7Y29sb3I6IGJsYWNrO30KKyNvbmUge2NvbG9yOiAjMDA2NjAwO30K
KzwvU1RZTEU+Cis8c2NyaXB0PgorZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB2YXIgcmVzdWx0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAgIHZhciBteUxpbmsgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlsaW5rIik7CisgICAgdmFyIGNvbG9yID0gZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShteUxpbmssIG51bGwpLmNvbG9yOworICAg
IHJlc3VsdC5pbm5lclRleHQgPSBjb2xvciA9PSAicmdiKDI1NSwgMCwgMCkiID8gIkxpbmsgaXMg
cmVkIChyZ2IoMjU1LCAwLCAwKSk6IFBBU1MiIDogIkxpbmsgaXMgbm90IHJlZC4gRkFJTDogIitj
b2xvcjsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvSEVBRD4KKzxi
b2R5IGlkPSJteUJvZHkiIG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8ZGl2PjxhIGlkPSJteWxp
bmsiIGhyZWY9Ii4uL2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQuaHRtbCI+VGhpcyBsaW5rIHNo
b3VsZCBhcHBlYXIgaW4gcmVkLjwvYT4uPC9kaXY+CisgICAgPC9icj4KKyAgICA8ZGl2IGlkPSJy
ZXN1bHQiPgorICAgICAgICBUZXN0IG5vdCBydW4gY29ycmVjdGx5LgorICAgIDwvZGl2PgorPC9i
b2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxl
LWRpc2FibGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5lNWU4NmIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zh
c3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzIEBACitUaGlzIGxpbmsgc2hvdWxkIGFwcGVhciBpbiBibHVlLi4KKworTGluayBpcyBi
bHVlIChyZ2IoMCwgMCwgMjU1KSk6IFBBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0
eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjNkYTM3N2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
ZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMyBAQAorVGhpcyBsaW5rIHNob3VsZCBhcHBlYXIgaW4gcmVkLi4KKworTGluayBpcyBy
ZWQgKHJnYigyNTUsIDAsIDApKTogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRleCBj
NDYzOWY4Li40NDk1ZTA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtMTE1LDMgKzEx
NSw3IEBAIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcmVmZXJlci5odG1sCiAjIEZhaWxzIGludGVy
bWl0dGVudGx5IG9uIExlb3BhcmQgYW5kIFRpZ2VyLgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjkxNTQKIHN0b3JhZ2UvZGF0YWJhc2UtbG9jay1hZnRlci1yZWxv
YWQuaHRtbAorCisjIE5vdCBpbXBsZW1lbnRlZAorZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0
eWxlLWRpc2FibGVkLmh0bWwKK2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVk
Lmh0bWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggN2JkODE4Ni4uZWM4NTU5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0wMi0xMyAgUm9iZXJ0
IEhvZ2FuICA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgb3B0aW9uIENTU1Zpc2l0ZWRTdHlsZUVuYWJs
ZWQuCisgICAgICAgIFdoZW4gc2V0IHRvIGZhbHNlLCB0aGlzIG9wdGlvbiB3aWxsIGFsd2F5cyBy
ZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCisgICAgICAgIHN0eWxl
c2hlZXRzLiBUaGlzIHByZXZlbnRzIHdlYnNpdGVzIGZyb20gaW5kaXJlY3RseSBpbnNwZWN0aW5n
IHlvdXIgYnJvd3NpbmcKKyAgICAgICAgaGlzdG9yeSBieSByZXF1ZXN0aW5nIHRoZSAndmlzaXRl
ZCcgc3RhdGUgZm9yIGEgc2V0IG9mIFVSTHMgaW4gYSBIVE1MIGRvY3VtZW50LgorICAgICAgICAK
KyAgICAgICAgQnkgZGVmYXVsdCB0aGUgb3B0aW9uIGlzIHNldCB0byAndHJ1ZScuCisgICAgICAg
IAorICAgICAgICBUaGUgb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBxdCwgZ3RrIGFuZCB3
aW4gcG9ydHMgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAgYXNzb2NpYXRlZCB1bml0IHRlc3QgZm9y
IGVhY2guCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjQzMDAKKworICAgICAgICBUZXN0czogZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVk
LXN0eWxlLWRpc2FibGVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvaGlzdG9yeS9jc3Mtdmlz
aXRlZC1zdHlsZS1lbmFibGVkLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tl
cjo6U2VsZWN0b3JDaGVja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6
OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tQc2V1ZG9TdGF0ZSk6CisgICAgICAgICogY3NzL0NTU1N0
eWxlU2VsZWN0b3IuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6
c2V0Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZCk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmNzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQpOgorCiAy
MDEwLTAyLTEzICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
aW5kZXggYWVlZDhhZC4uNTFlZjM1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTg3
Niw3ICs4NzYsMTEgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rv
ckNoZWNrZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHN0cmkKICAgICAsIG1fY29sbGVjdFJ1
bGVzT25seShmYWxzZSkKICAgICAsIG1fcHNldWRvU3R5bGUoTk9QU0VVRE8pCiAgICAgLCBtX2Rv
Y3VtZW50SXNIVE1MKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKQorICAgICwgbV9jc3NWaXNp
dGVkU3R5bGVFbmFibGVkKHRydWUpCiB7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9kb2N1
bWVudC0+c2V0dGluZ3MoKTsKKyAgICBpZiAoc2V0dGluZ3MgJiYgIXNldHRpbmdzLT5jc3NWaXNp
dGVkU3R5bGVFbmFibGVkKCkpCisgICAgICAgIG1fY3NzVmlzaXRlZFN0eWxlRW5hYmxlZCA9IGZh
bHNlOwogfQogCiBQc2V1ZG9TdGF0ZSBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OmNoZWNrUHNldWRvU3RhdGUoRWxlbWVudCogZWxlbWVudCwgYm9vbCBjaGVja1Zpc2l0ZWQpIGNv
bnN0CkBAIC04ODgsNiArODkyLDkgQEAgUHNldWRvU3RhdGUgQ1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjpjaGVja1BzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQKICAgICBpZiAo
IWNoZWNrVmlzaXRlZCkKICAgICAgICAgcmV0dXJuIFBzZXVkb0FueUxpbms7CiAKKyAgICBpZiAo
IW1fY3NzVmlzaXRlZFN0eWxlRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIFBzZXVkb0xpbms7CisK
ICNpZiBQTEFURk9STShRVCkKICAgICBWZWN0b3I8VUNoYXIsIDUxMj4gdXJsOwogICAgIHZpc2l0
ZWRVUkwobV9kb2N1bWVudC0+YmFzZVVSTCgpLCAqYXR0ciwgdXJsKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuaAppbmRleCBhYWMxYmFlLi5mMjI0ZDFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCkBAIC0y
MTAsNiArMjEwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgUHNldWRvSWQgbV9wc2V1ZG9TdHls
ZTsKICAgICAgICAgICAgIGJvb2wgbV9kb2N1bWVudElzSFRNTDsKICAgICAgICAgICAgIG11dGFi
bGUgSGFzaFNldDxMaW5rSGFzaCwgTGlua0hhc2hIYXNoPiBtX2xpbmtzQ2hlY2tlZEZvclZpc2l0
ZWRTdGF0ZTsKKyAgICAgICAgICAgIGJvb2wgbV9jc3NWaXNpdGVkU3R5bGVFbmFibGVkOwogICAg
ICAgICB9OwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAgYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDk2OTk2OWYuLjJmNmQ0ZmIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmNwcApAQCAtMTA1LDYgKzEwNSw3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdl
KiBwYWdlKQogICAgICwgbV9lbmZvcmNlQ1NTTUlNRVR5cGVJblN0cmljdE1vZGUodHJ1ZSkKICAg
ICAsIG1fdXNlc0VuY29kaW5nRGV0ZWN0b3IoZmFsc2UpCiAgICAgLCBtX2FsbG93U2NyaXB0c1Rv
Q2xvc2VXaW5kb3dzKGZhbHNlKQorICAgICwgbV9jc3NWaXNpdGVkU3R5bGVFbmFibGVkKHRydWUp
CiAgICAgLCBtX2VkaXRpbmdCZWhhdmlvcigKICNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9S
TShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkKICAgICAgICAgLy8gKFBMQVRGT1JNKE1BQykgaXMg
YWx3YXlzIGZhbHNlIGluIENocm9taXVtLCBoZW5jZSB0aGUgZXh0cmEgY29uZGl0aW9uLikKQEAg
LTI3NSw2ICsyNzYsMTEgQEAgdm9pZCBTZXR0aW5nczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAgICAgbV9wcml2YXRlQnJvd3NpbmdFbmFi
bGVkID0gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKIH0KIAordm9pZCBTZXR0aW5nczo6c2V0Q1NT
VmlzaXRlZFN0eWxlRW5hYmxlZChib29sIGNzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQpCit7CisgICAg
bV9jc3NWaXNpdGVkU3R5bGVFbmFibGVkID0gY3NzVmlzaXRlZFN0eWxlRW5hYmxlZDsKK30KKwog
dm9pZCBTZXR0aW5nczo6c2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShi
b29sIGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkpCiB7CiAgICAgbV9qYXZh
U2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5ID0gamF2YVNjcmlwdENhbk9wZW5XaW5k
b3dzQXV0b21hdGljYWxseTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggNTc3NDU5Yy4uNGExMzYxMyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgK
QEAgLTI4Nyw2ICsyODcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0
TG9hZERlZmVycmluZ0VuYWJsZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgbG9hZERlZmVycmluZ0Vu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2xvYWREZWZlcnJpbmdFbmFibGVkOyB9CiAKKyAgICAg
ICAgdm9pZCBzZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKGJvb2wpOworICAgICAgICBib29sIGNz
c1Zpc2l0ZWRTdHlsZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Nzc1Zpc2l0ZWRTdHlsZUVu
YWJsZWQ7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIFBhZ2UqIG1fcGFnZTsKICAgICAgICAg
CkBAIC0zNjAsNiArMzYzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1f
d2ViR0xFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2dlb2xvY2F0aW9uRW5hYmxlZCA6IDE7
CiAgICAgICAgIGJvb2wgbV9sb2FkRGVmZXJyaW5nRW5hYmxlZCA6IDE7CisgICAgICAgIGJvb2wg
bV9jc3NWaXNpdGVkU3R5bGVFbmFibGVkIDogMTsKIAogI2lmIFVTRShTQUZBUklfVEhFTUUpCiAg
ICAgICAgIHN0YXRpYyBib29sIGdTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA3YTQ0
ODg0Li5iMTc1NGIxIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEwLTAyLTEzICBSb2JlcnQgSG9n
YW4gIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBvcHRpb24gQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZC4K
KyAgICAgICAgV2hlbiBzZXQgdG8gZmFsc2UsIHRoaXMgb3B0aW9uIHdpbGwgYWx3YXlzIHJldHVy
biBmYWxzZSBmb3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAgICAgICAgc3R5bGVzaGVl
dHMuIFRoaXMgcHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5IGluc3BlY3RpbmcgeW91
ciBicm93c2luZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVkJyBz
dGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCisKKyAgICAgICAgQnkg
ZGVmYXVsdCB0aGUgb3B0aW9uIGlzIHNldCB0byAndHJ1ZScuCisKKyAgICAgICAgVGhlIG9wdGlv
biBoYXMgYmVlbiBhZGRlZCB0byB0aGUgcXQsIGd0ayBhbmQgd2luIHBvcnRzIGFsb25nIHdpdGgg
dGhlCisgICAgICAgIGFzc29jaWF0ZWQgdW5pdCB0ZXN0IGZvciBlYWNoLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMwMAorCisgICAgICAgICh3
ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KToKKwogMjAxMC0wMi0wOSAgR3VzdGF2byBO
b3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4g
TG9wZXouCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5j
cHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKaW5kZXggMWUyZjhj
Yy4uNmRhMzdiYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApAQCAt
MTAzLDYgKzEwMyw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlIHsKICAgICBn
Ym9vbGVhbiBlbmFibGVfZGVmYXVsdF9jb250ZXh0X21lbnU7CiAgICAgZ2Jvb2xlYW4gZW5hYmxl
X3NpdGVfc3BlY2lmaWNfcXVpcmtzOwogICAgIGdib29sZWFuIGVuYWJsZV9wYWdlX2NhY2hlOwor
ICAgIGdib29sZWFuIGNzc192aXNpdGVkX3N0eWxlX2VuYWJsZWQ7CiB9OwogCiAjZGVmaW5lIFdF
QktJVF9XRUJfU0VUVElOR1NfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9Q
UklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdz
UHJpdmF0ZSkpCkBAIC0xNDgsNiArMTQ5LDcgQEAgZW51bSB7CiAgICAgUFJPUF9FTkFCTEVfREVG
QVVMVF9DT05URVhUX01FTlUsCiAgICAgUFJPUF9FTkFCTEVfU0lURV9TUEVDSUZJQ19RVUlSS1Ms
CiAgICAgUFJPUF9FTkFCTEVfUEFHRV9DQUNIRQorICAgIFBST1BfQ1NTX1ZJU0lURURfU1RZTEVf
RU5BQkxFRAogfTsKIAogLy8gQ3JlYXRlIGEgZGVmYXVsdCB1c2VyIGFnZW50IHN0cmluZwpAQCAt
NzYwLDYgKzc2MiwyNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2NsYXNzX2lu
aXQoV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOwogCiAgICAgZ190eXBl
X2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRl
KSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmNzcy12aXNpdGVkLXN0eWxl
LWVuYWJsZWQ6CisgICAgKgorICAgICogV2hldGhlciB0byByZXNwZWN0IHRoZSAndmlzaXRlZCcg
c3RhdGUgaW4gQ1NTIHN0eWxlc2hlZXRzLiBTZXR0aW5nIHRvCisgICAgKiAnZmFsc2UnIHByZXZl
bnRzIHdlYnNpdGVzIGZyb20gaW5kaXJlY3RseSBpbnNwZWN0aW5nIHlvdXIgYnJvd3NpbmcKKyAg
ICAqIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBv
ZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKyAgICAqCisgICAgKiBTaW5jZTogMS4xLjE3Cisg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0NTU19WSVNJVEVEX1NU
WUxFX0VOQUJMRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjc3Mt
dmlzaXRlZC1zdHlsZS1lbmFibGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF8oIkVuYWJsZSBDU1MgVmlzaXRlZCBTdHlsZSIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiRW5hYmxlcyB0aGUgQ1NTIFZpc2l0ZWQgU3R5bGUgZm9yIFdlYiBM
aW5rcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOwogfQogCiBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3NldHRpbmdzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYl9zZXR0aW5n
cykKQEAgLTk2Nyw2ICs5ODcsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3Nl
dF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbgogICAgIGNhc2Ug
UFJPUF9FTkFCTEVfUEFHRV9DQUNIRToKICAgICAgICAgcHJpdi0+ZW5hYmxlX3BhZ2VfY2FjaGUg
PSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX0NTU19WSVNJVEVEX1NUWUxFX0VOQUJMRUQ6CisgICAgICAgIHByaXYtPmNzc192aXNpdGVk
X3N0eWxlX2VuYWJsZWQgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZ
X0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTEwOTMsNyAr
MTExNiwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wcm9wZXJ0eShH
T2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYQogICAgIGNhc2UgUFJPUF9FTkFCTEVf
UEFHRV9DQUNIRToKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZW5h
YmxlX3BhZ2VfY2FjaGUpOwogICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgorICAgIGNhc2Ug
UFJPUF9DU1NfVklTSVRFRF9TVFlMRV9FTkFCTEVEOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29s
ZWFuKHZhbHVlLCBwcml2LT5jc3NfdmlzaXRlZF9zdHlsZV9lbmFibGVkKTsKKyAgICAgICAgYnJl
YWs7CisgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEx
NjIsNiArMTE4OCw3IEBAIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3NldHRpbmdzX2Nv
cHkoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYl9zZXR0aW5ncykKICAgICAgICAgICAgICAgICAgImVu
YWJsZS1kZWZhdWx0LWNvbnRleHQtbWVudSIsIHByaXYtPmVuYWJsZV9kZWZhdWx0X2NvbnRleHRf
bWVudSwKICAgICAgICAgICAgICAgICAgImVuYWJsZS1zaXRlLXNwZWNpZmljLXF1aXJrcyIsIHBy
aXYtPmVuYWJsZV9zaXRlX3NwZWNpZmljX3F1aXJrcywKICAgICAgICAgICAgICAgICAgImVuYWJs
ZS1wYWdlLWNhY2hlIiwgcHJpdi0+ZW5hYmxlX3BhZ2VfY2FjaGUsCisgICAgICAgICAgICAgICAg
ICJjc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkIiwgcHJpdi0+Y3NzX3Zpc2l0ZWRfc3R5bGVfZW5h
YmxlZCwKICAgICAgICAgICAgICAgICAgTlVMTCkpOwogCiAgICAgcmV0dXJuIGNvcHk7CmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDhjNWI4MDIuLmFiYmIzNjMgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0yNTUxLDcgKzI1NTEsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiAgICAgICAgIGVuYWJsZVByaXZhdGVCcm93c2luZywgZW5hYmxlQ2FyZXRCcm93c2luZywgZW5h
YmxlSFRNTDVEYXRhYmFzZSwgZW5hYmxlSFRNTDVMb2NhbFN0b3JhZ2UsCiAgICAgICAgIGVuYWJs
ZVhTU0F1ZGl0b3IsIGphdmFzY3JpcHRDYW5PcGVuV2luZG93cywgZW5hYmxlT2ZmbGluZVdlYkFw
cENhY2hlLAogICAgICAgICBlbmFibGVVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSSSwgZW5hYmxl
RE9NUGFzdGUsIHRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cywKLSAgICAgICAgZW5hYmxlU2l0
ZVNwZWNpZmljUXVpcmtzLCB1c2VQYWdlQ2FjaGU7CisgICAgICAgIGVuYWJsZVNpdGVTcGVjaWZp
Y1F1aXJrcywgdXNlUGFnZUNhY2hlLCBDU1NWaXNpdGVkU3R5bGVFbmFibGVkOwogCiAgICAgV2Vi
S2l0RWRpdGluZ0JlaGF2aW9yIGVkaXRpbmdCZWhhdmlvcjsKIApAQCAtMjU4NCw2ICsyNTg0LDcg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQogICAgICAgICAgICAgICAgICAidGFiLWtleS1jeWNsZXMtdGhyb3VnaC1l
bGVtZW50cyIsICZ0YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMsCiAgICAgICAgICAgICAgICAg
ICJlbmFibGUtc2l0ZS1zcGVjaWZpYy1xdWlya3MiLCAmZW5hYmxlU2l0ZVNwZWNpZmljUXVpcmtz
LAogICAgICAgICAgICAgICAgICAiZW5hYmxlLXBhZ2UtY2FjaGUiLCAmdXNlUGFnZUNhY2hlLAor
ICAgICAgICAgICAgICAgICAiY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZCIsICZDU1NWaXNpdGVk
U3R5bGVFbmFibGVkLAogICAgICAgICAgICAgICAgICBOVUxMKTsKIAogICAgIHNldHRpbmdzLT5z
ZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZShkZWZhdWx0RW5jb2RpbmcpOwpAQCAtMjYxMyw2ICsy
NjE0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHNldHRpbmdzLT5zZXRET01QYXN0ZUFsbG93ZWQoZW5h
YmxlRE9NUGFzdGUpOwogICAgIHNldHRpbmdzLT5zZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhl
bmFibGVTaXRlU3BlY2lmaWNRdWlya3MpOwogICAgIHNldHRpbmdzLT5zZXRVc2VzUGFnZUNhY2hl
KHVzZVBhZ2VDYWNoZSk7CisgICAgc2V0dGluZ3MtPnNldENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQo
Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZCk7CiAKICAgICBQYWdlKiBwYWdlID0gY29yZSh3ZWJWaWV3
KTsKICAgICBpZiAocGFnZSkKQEAgLTI3MTMsNiArMjcxNSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnkoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdz
LCBHUGFyCiAgICAgICAgIHNldHRpbmdzLT5zZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhnX3Zh
bHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5f
c3RyaW5nKCJlbmFibGUtcGFnZS1jYWNoZSIpKQogICAgICAgICBzZXR0aW5ncy0+c2V0VXNlc1Bh
Z2VDYWNoZShnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUg
PT0gZ19pbnRlcm5fc3RyaW5nKCJjc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkIikpCisgICAgICAg
IHNldHRpbmdzLT5zZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4o
JnZhbHVlKSk7CiAgICAgZWxzZSBpZiAoIWdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19P
QkpFQ1RfR0VUX0NMQVNTKHdlYlNldHRpbmdzKSwgbmFtZSkpCiAgICAgICAgIGdfd2FybmluZygi
VW5leHBlY3RlZCBzZXR0aW5nICclcyciLCBuYW1lKTsKICAgICBnX3ZhbHVlX3Vuc2V0KCZ2YWx1
ZSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgYi9XZWJLaXQv
cXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKaW5kZXggYTk0YTNhYS4uNTM1MGE2ZCAxMDA2NDQKLS0t
IGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdl
YnNldHRpbmdzLmNwcApAQCAtMTc0LDYgKzE3NCwxMCBAQCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZh
dGU6OmFwcGx5KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFs
LT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkp
OwogICAgICAgICBzZXR0aW5ncy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCh2YWx1ZSk7CiAK
KyAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NTVmlzaXRl
ZFN0eWxlRW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NTVmlzaXRlZFN0eWxlRW5hYmxl
ZCkpOworICAgICAgICBzZXR0aW5ncy0+c2V0Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZCh2YWx1ZSk7
CisgICAgICAgIAogICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdz
OjpKYXZhc2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpKYXZh
c2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRET01QYXN0
ZUFsbG93ZWQodmFsdWUpOwpAQCAtMzY0LDYgKzM2OCw5IEBAIFFXZWJTZXR0aW5ncyogUVdlYlNl
dHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpCiAgICAgICAgIFFXZWJTZXR0aW5nczo6TG9jYWxTdG9y
YWdlRW5hYmxlZCBpbnN0ZWFkLgogICAgIFx2YWx1ZSBMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1v
dGVVcmxzIFNwZWNpZmllcyB3aGV0aGVyIGxvY2FsbHkgbG9hZGVkIGRvY3VtZW50cyBhcmUgYWxs
b3dlZCB0byBhY2Nlc3MgcmVtb3RlIHVybHMuCiAgICAgXHZhbHVlIFhTU0F1ZGl0b3JFbmFibGVk
IFNwZWNpZmllcyB3aGV0aGVyIGxvYWQgcmVxdWVzdHMgc2hvdWxkIGJlIG1vbml0b3JlZCBmb3Ig
Y3Jvc3Mtc2l0ZSBzY3JpcHRpbmcgYXR0ZW1wdHMuCisgICAgXHZhbHVlIENTU1Zpc2l0ZWRTdHls
ZUVuYWJsZWQgQWx3YXlzIHJldHVybiBmYWxzZSBmb3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBD
U1MKKyAgICAgICAgc3R5bGVzaGVldHMuIFRoaXMgcHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRp
cmVjdGx5IGluc3BlY3RpbmcgeW91ciBicm93c2luZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVl
c3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9j
dW1lbnQuCiAqLwogCiAvKiEKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdz
LmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oCmluZGV4IDc3ZjIxNjcuLjA1NDBiYjkg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKKysrIGIvV2ViS2l0L3F0
L0FwaS9xd2Vic2V0dGluZ3MuaApAQCAtNjksNyArNjksOCBAQCBwdWJsaWM6CiAgICAgICAgIExv
Y2FsQ29udGVudENhbkFjY2Vzc1JlbW90ZVVybHMsCiAgICAgICAgIERuc1ByZWZldGNoRW5hYmxl
ZCwKICAgICAgICAgWFNTQXVkaXRvckVuYWJsZWQsCi0gICAgICAgIEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkCisgICAgICAgIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkLAorICAg
ICAgICBDU1NWaXNpdGVkU3R5bGVFbmFibGVkCiAgICAgfTsKICAgICBlbnVtIFdlYkdyYXBoaWMg
ewogICAgICAgICBNaXNzaW5nSW1hZ2VHcmFwaGljLApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0No
YW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZTBkMWIyOC4uYzhiZDcyYSAxMDA2
NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDItMTMgIFJvYmVydCBIb2dhbiAgPHJvYmVydEByb2JlcnRo
b2dhbi5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG9wdGlvbiBDU1NWaXNpdGVkU3R5bGVFbmFibGVkLgorICAgICAgICBXaGVuIHNldCB0
byBmYWxzZSwgdGhpcyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zp
c2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3
ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAg
IGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBV
UkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKworICAgICAgICBCeSBkZWZhdWx0IHRoZSBvcHRpb24g
aXMgc2V0IHRvICd0cnVlJy4KKworICAgICAgICBUaGUgb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRv
IHRoZSBxdCwgZ3RrIGFuZCB3aW4gcG9ydHMgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAgYXNzb2Np
YXRlZCB1bml0IHRlc3QgZm9yIGVhY2guCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI0MzAwCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNw
cDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKyAgICAgICAgKiBBcGkv
cXdlYnNldHRpbmdzLmg6CisKIDIwMTAtMDItMTIgIERpZWdvIEdvbnphbGV6ICA8ZGllZ28uZ29u
emFsZXpAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKaW5kZXggZmMwYzIyNC4uMjM0Yjk5NSAxMDA2NDQKLS0tIGEvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAxMC0wMi0xMyAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgb3B0aW9u
IENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQuCisgICAgICAgIFdoZW4gc2V0IHRvIGZhbHNlLCB0aGlz
IG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUg
aW4gQ1NTCisgICAgICAgIHN0eWxlc2hlZXRzLiBUaGlzIHByZXZlbnRzIHdlYnNpdGVzIGZyb20g
aW5kaXJlY3RseSBpbnNwZWN0aW5nIHlvdXIgYnJvd3NpbmcKKyAgICAgICAgaGlzdG9yeSBieSBy
ZXF1ZXN0aW5nIHRoZSAndmlzaXRlZCcgc3RhdGUgZm9yIGEgc2V0IG9mIFVSTHMgaW4gYSBIVE1M
IGRvY3VtZW50LgorCisgICAgICAgIEJ5IGRlZmF1bHQgdGhlIG9wdGlvbiBpcyBzZXQgdG8gJ3Ry
dWUnLgorCisgICAgICAgIFRoZSBvcHRpb24gaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHF0LCBndGsg
YW5kIHdpbiBwb3J0cyBhbG9uZyB3aXRoIHRoZQorICAgICAgICBhc3NvY2lhdGVkIHVuaXQgdGVz
dCBmb3IgZWFjaC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQzMDAKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZVBhZ2UpOgorICAgICAg
ICAqIFdlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByZWZlcmVuY2Vz
LmNwcDoKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdz
KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpzZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKToK
KyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpjc3NWaXNpdGVkU3R5bGVFbmFibGVkKToKKyAgICAg
ICAgKiBXZWJQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAo
V2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKwogMjAxMC0wMi0xMiAgQnJpYW4g
V2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBSb2Jlbi4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVy
ZW5jZXMuaWRsIGIvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwKaW5k
ZXggOWE1MmQ3Yy4uNWViNjExOSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lX
ZWJQcmVmZXJlbmNlcy5pZGwKKysrIGIvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJl
bmNlcy5pZGwKQEAgLTE4Niw0ICsxODYsOCBAQCBpbnRlcmZhY2UgSVdlYlByZWZlcmVuY2VzIDog
SVVua25vd24KIAogICAgIEhSRVNVTFQgc2V0Wm9vbXNUZXh0T25seShCT09MIHpvb21zVGV4dE9u
bHkpOwogICAgIEhSRVNVTFQgem9vbXNUZXh0T25seShCT09MICp6b29tc1RleHRPbmx5KTsKKwor
ICAgIEhSRVNVTFQgc2V0Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZChbaW5dIEJPT0wgZW5hYmxlZCk7
CisgICAgSFJFU1VMVCBjc3NWaXNpdGVkU3R5bGVFbmFibGVkKFtvdXQsIHJldHZhbF0gQk9PTCog
ZW5hYmxlZCk7CisKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcAppbmRleCAwZGQ2ZTU4Li5lZDdkNzAwIDEwMDY0NAotLS0gYS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xNjgsNiArMTY4LDgg
QEAgUGFnZSogV2ViSW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVQYWdlKCkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0RGVmYXVsdEZpeGVkRm9udFNpemUo
MTMpKSkKICAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0
Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZChUUlVFKSkpCisgICAgICAgIHJldHVybiAwOwogCiAgICAg
aWYgKEZBSUxFRChtX3dlYlZpZXctPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKSkp
CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaCBiL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5k
ZXggOWY3NjhmMi4uNTkxYzc0ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaAorKysgYi9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5o
CkBAIC02NSw2ICs2NSw3IEBACiAjZGVmaW5lIFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNl
S2V5ICJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0Q2Fj
aGVNb2RlbFByZWZlcmVuY2VLZXkgIldlYktpdENhY2hlTW9kZWxQcmVmZXJlbmNlS2V5IgogI2Rl
ZmluZSBXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5ICJXZWJLaXRM
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgiCisjZGVmaW5lIFdlYktpdENTU1Zpc2l0ZWRTdHlsZUVu
YWJsZWRLZXkgIldlYktpdENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQiCiAKIC8vIFRoZXNlIGFyZSBw
cml2YXRlIGJvdGggYmVjYXVzZSBjYWxsZXJzIHNob3VsZCBiZSB1c2luZyB0aGUgY292ZXIgbWV0
aG9kcyBhbmQgYmVjYXVzZSB0aGUKIC8vIGNvdmVyIG1ldGhvZHMgdGhlbXNlbHZlcyBhcmUgcHJp
dmF0ZS4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvV2ViS2l0
L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggMTNjMmFjNC4uZWM5YjI1YiAxMDA2NDQKLS0t
IGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJQcmVm
ZXJlbmNlcy5jcHAKQEAgLTI1Nyw2ICsyNTcsOCBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0
aWFsaXplRGVmYXVsdFNldHRpbmdzKCkKIAogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZFByZWZlcmVuY2VL
ZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuVHJ1ZSk7CisKICAgICBkZWZhdWx0U2V0dGluZ3MgPSBkZWZhdWx0czsKIH0KIApAQCAt
MTM2MSw2ICsxMzYzLDIwIEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnBsdWdpbkFsbG93ZWRS
dW5UaW1lKFVJTlQqIGFsbG93ZWRSdW5UaW1lKQogICAgIHJldHVybiBTX09LOwogfQogCitIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRDU1NWaXNpdGVkU3R5bGVF
bmFibGVkKAorICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKQoreworICAgIHNldEJvb2xWYWx1
ZShDRlNUUihXZWJLaXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkUHJlZmVyZW5jZUtleSksIGVuYWJs
ZWQpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlByZWZlcmVuY2VzOjpjc3NWaXNpdGVkU3R5bGVFbmFibGVkKAorICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQk9PTCogZW5hYmxlZCkKK3sKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShD
RlNUUihXZWJLaXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgIHJl
dHVybiBTX09LOworfQorCiBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRQcmVmZXJlbmNlRm9y
VGVzdChCU1RSIGtleSwgQlNUUiB2YWx1ZSkKIHsKICAgICBpZiAoIVN5c1N0cmluZ0xlbihrZXkp
IHx8ICFTeXNTdHJpbmdMZW4odmFsdWUpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJQcmVm
ZXJlbmNlcy5oIGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IDkyMDliN2QuLjBl
ZmI3YTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAorKysgYi9XZWJL
aXQvd2luL1dlYlByZWZlcmVuY2VzLmgKQEAgLTM4Niw2ICszODYsMTIgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRGcmFtZVNldEZsYXR0ZW5pbmdF
bmFibGVkKAogICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKTsKIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKAorICAgICAg
ICAvKiBbaW5dICovIEJPT0wgZW5hYmxlZCk7CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgY3NzVmlzaXRlZFN0eWxlRW5hYmxlZCgKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKiBlbmFibGVkKTsKKwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRQcmVmZXJlbmNlRm9yVGVzdCgKICAgICAvKiBbaW5dICovIEJTVFIga2V5LAog
ICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1ZSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjdlMjM1Li40ZGQwMzQyIDEw
MDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViVmll
dy5jcHAKQEAgLTQ2NjEsNiArNDY2MSwxMSBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZl
cmVuY2VzQ2hhbmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgc2V0dGlu
Z3MtPnNldFdlYkdMRW5hYmxlZCh0cnVlKTsKICNlbmRpZiAgLy8gRU5BQkxFKDNEX0NBTlZBUykK
IAorICAgIGhyID0gcHJlZmVyZW5jZXMtPmNzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQoJmVuYWJsZWQp
OworICAgIGlmIChGQUlMRUQoaHIpKQorICAgICAgICByZXR1cm4gaHI7CisgICAgc2V0dGluZ3Mt
PnNldENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQoISFlbmFibGVkKTsKKwogICAgIGlmICghbV9jbG9z
ZVdpbmRvd1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fbWFpbkZyYW1lLT5pbnZhbGlkYXRl
KCk7IC8vIEZJWE1FCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktp
dFRvb2xzL0NoYW5nZUxvZwppbmRleCAxZGNjZWY0Li5hNzk3YmZjIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMTAtMDItMTMgIFJvYmVydCBIb2dhbiAgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG9w
dGlvbiBDU1NWaXNpdGVkU3R5bGVFbmFibGVkLgorICAgICAgICBXaGVuIHNldCB0byBmYWxzZSwg
dGhpcyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0
YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBm
cm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3Rvcnkg
YnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEg
SFRNTCBkb2N1bWVudC4KKworICAgICAgICBCeSBkZWZhdWx0IHRoZSBvcHRpb24gaXMgc2V0IHRv
ICd0cnVlJy4KKworICAgICAgICBUaGUgb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBxdCwg
Z3RrIGFuZCB3aW4gcG9ydHMgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAgYXNzb2NpYXRlZCB1bml0
IHRlc3QgZm9yIGVhY2guCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0MzAwCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRl
clRyZWUuY3BwOgorICAgICAgICAocmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoK
KyAgICAgICAgKGNvcHlXZWJTZXR0aW5nS2V5KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpvdmVycmlkZVByZWZlcmVuY2UpOgorCiAyMDEwLTAyLTEyICBDaGFuZyBTaHUgIDxDaGFu
Zy5TaHVAbm9raWEuY29tPgogCiAgICAgICAgIE5vdCBSZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDM5NDMwY2Yu
Ljc5ZjNjZWIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1w
UmVuZGVyVHJlZS5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBS
ZW5kZXJUcmVlLmNwcApAQCAtMzM1LDYgKzMzNSw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0RGVmYXVs
dHNUb0NvbnNpc3RlbnRWYWx1ZXMoKQogICAgICAgICAgICAgICAgICAibWluaW11bS1mb250LXNp
emUiLCAxLAogICAgICAgICAgICAgICAgICAiZW5hYmxlLWNhcmV0LWJyb3dzaW5nIiwgRkFMU0Us
CiAgICAgICAgICAgICAgICAgICJlbmFibGUtcGFnZS1jYWNoZSIsIEZBTFNFLAorICAgICAgICAg
ICAgICAgICAiY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZCIsIFRSVUUsCiAgICAgICAgICAgICAg
ICAgIE5VTEwpOwogCiAgICAgd2Via2l0X3dlYl9mcmFtZV9jbGVhcl9tYWluX2ZyYW1lX25hbWUo
bWFpbkZyYW1lKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDQyMmUyYzIuLmFiN2ExNjMgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJv
bGxlckd0ay5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcApAQCAtNzEsNiArNzEsNyBAQCBzdGF0aWMgZ2NoYXIqIGNvcHlX
ZWJTZXR0aW5nS2V5KGdjaGFyKiBwcmVmZXJlbmNlS2V5KQogICAgICAgICBnX2hhc2hfdGFibGVf
aW5zZXJ0KGtleVRhYmxlLCBnX3N0cmR1cCgiV2ViS2l0RGVmYXVsdEZvbnRTaXplIiksIGdfc3Ry
ZHVwKCJkZWZhdWx0LWZvbnQtc2l6ZSIpKTsKICAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydChr
ZXlUYWJsZSwgZ19zdHJkdXAoIldlYktpdEVuYWJsZUNhcmV0QnJvd3NpbmciKSwgZ19zdHJkdXAo
ImVuYWJsZS1jYXJldC1icm93c2luZyIpKTsKICAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydChr
ZXlUYWJsZSwgZ19zdHJkdXAoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiksIGdf
c3RyZHVwKCJlbmFibGUtcGFnZS1jYWNoZSIpKTsKKyAgICAgICAgZ19oYXNoX3RhYmxlX2luc2Vy
dChrZXlUYWJsZSwgZ19zdHJkdXAoIldlYktpdENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQiKSwgZ19z
dHJkdXAoImNzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQiKSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IGdfc3RyZHVwKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19oYXNoX3RhYmxlX2xvb2t1cChrZXlUYWJs
ZSwgcHJlZmVyZW5jZUtleSkpKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKaW5kZXggNTFjMTE4MS4uMWQ2ZDQ4
YiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5jcHAKQEAgLTQzNSw2ICs0MzUsOCBAQCB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2UoY29uc3QgUVN0cmluZyYgbmFtZSwgY29uc3Qg
UVZhcmlhbgogICAgICAgICBzZXR0aW5ncy0+c2V0Rm9udFNpemUoUVdlYlNldHRpbmdzOjpEZWZh
dWx0Rm9udFNpemUsIHZhbHVlLnRvSW50KCkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gIldlYktp
dFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IikKICAgICAgICAgUVdlYlNldHRpbmdzOjpzZXRN
YXhpbXVtUGFnZXNJbkNhY2hlKHZhbHVlLnRvSW50KCkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0g
IldlYktpdENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQiKQorICAgICAgICBzZXR0aW5ncy0+c2V0QXR0
cmlidXRlKFFXZWJTZXR0aW5nczo6Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZCwgdmFsdWUudG9Cb29s
KCkpOwogICAgIGVsc2UKICAgICAgICAgcHJpbnRmKCJFUlJPUjogTGF5b3V0VGVzdENvbnRyb2xs
ZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSgpIGRvZXMgbm90IHN1cHBvcnQgdGhlICclcycgcHJlZmVy
ZW5jZVxuIiwKICAgICAgICAgICAgIG5hbWUudG9MYXRpbjEoKS5kYXRhKCkpOwotLSAKMS42LjMu
MwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49155</attachid>
            <date>2010-02-21 11:33:29 -0800</date>
            <delta_ts>2010-04-01 14:43:22 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>0001-Add-option-CSSVisitedStyleEnabled.patch</filename>
            <type>text/plain</type>
            <size>36115</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSBmODNhMmQ5N2U3NzU4NGYwODgwOTA1NDUwNTg3N2Y3YjdkY2U2YjUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+
CkRhdGU6IFNhdCwgNSBEZWMgMjAwOSAxMzo0MzoyOSArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZCBvcHRpb24gQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZC4KIFdoZW4gc2V0IHRvIGZhbHNlLCB0aGlz
IG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUg
aW4gQ1NTCiBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0
bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCiBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2
aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCgpCeSBk
ZWZhdWx0IHRoZSBvcHRpb24gaXMgc2V0IHRvICd0cnVlJy4KClRoZSBvcHRpb24gaGFzIGJlZW4g
YWRkZWQgdG8gdGhlIHF0LCBndGsgYW5kIHdpbiBwb3J0cyBhbG9uZyB3aXRoIHRoZQphc3NvY2lh
dGVkIHVuaXQgdGVzdCBmb3IgZWFjaC4KCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDMwMAotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAyNiArKysrKysrKysrKysrKwogLi4uL2Nzcy12aXNpdGVkLXN0eWxl
LWRpc2FibGVkLWV4cGVjdGVkLnR4dCAgICAgICAgfCAgICAzICsrCiAuLi4vZmFzdC9oaXN0b3J5
L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLmh0bWwgICB8ICAgMzUgKysrKysrKysrKysrKysr
KysrKysKIC4uLi9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0
IHwgICAgMyArKwogLi4uL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLmh0
bWwgICAgfCAgIDM1ICsrKysrKysrKysrKysrKysrKysrCiAuLi4vcmVzb3VyY2VzL2Nzcy12aXNp
dGVkLXN0eWxlLWRpc2FibGVkLTIuaHRtbCAgICB8ICAgMzMgKysrKysrKysrKysrKysrKysrCiAu
Li4vcmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtMi5odG1sICAgICB8ICAgMzMg
KysrKysrKysrKysrKysrKysrCiAuLi4vY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0
ZWQudHh0ICAgICAgICB8ICAgIDMgKysKIC4uLi9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVu
YWJsZWQtZXhwZWN0ZWQudHh0IHwgICAgMyArKwogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Nr
aXBwZWQgICAgICAgICAgICAgICAgICAgfCAgICA0ICsrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjkgKysrKysrKysrKysrKysrKwogV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgICAgICAgICAgICAgICAgICAgfCAgICA3ICsr
KysKIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCAgICAgICAgICAgICAgICAgICAgIHwg
ICAgMSArCiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDYgKysrCiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDQgKysKIFdlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAxOCArKysrKysrKysrCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJzZXR0aW5ncy5jcHAgICAgICAgICAgICB8ICAgMzEgKysrKysrKysrKysrKysrKy0KIFdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwICAgICAgICAgICAgICAgIHwgICAgNiArKyst
CiBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDcgKysrKwogV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaCAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAzICstCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMjAgKysrKysrKysrKysKIFdlYktpdC93aW4vQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArKysrKysrKysrKysrKysKIFdlYktpdC93aW4v
SW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXMuaWRsICAgICAgICAgIHwgICAgNCArKwogV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwICAgfCAgICAyICsKIFdl
YktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggICAgICAgICAgICAgIHwgICAgMSAr
CiBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcCAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTYgKysrKysrKysrCiBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmggICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDYgKysrCiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDUgKysrCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMjMgKysrKysrKysrKysrKwogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCAgfCAgICAxICsKIC4uLi9EdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIHwgICAgMSArCiAuLi4vRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgICB8ICAgIDIgKwogMzIg
ZmlsZXMgY2hhbmdlZCwgMzk0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRp
c2FibGVkLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3Qv
aGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhw
ZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nz
cy12aXNpdGVkLXN0eWxlLWVuYWJsZWQuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtMi5o
dG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNl
cy9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLTIuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlz
YWJsZWQtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLWV4cGVjdGVkLnR4
dAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBkZTk2OGUzLi5lZjNiZWE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAt
MDItMjEgIFJvYmVydCBIb2dhbiAgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG9wdGlvbiBDU1NWaXNp
dGVkU3R5bGVFbmFibGVkLgorICAgICAgICBXaGVuIHNldCB0byBmYWxzZSwgdGhpcyBvcHRpb24g
d2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUwor
ICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0
bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGlu
ZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVu
dC4KKworICAgICAgICBCeSBkZWZhdWx0IHRoZSBvcHRpb24gaXMgc2V0IHRvICd0cnVlJy4KKwor
ICAgICAgICBUaGUgb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBxdCwgZ3RrIGFuZCB3aW4g
cG9ydHMgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAgYXNzb2NpYXRlZCB1bml0IHRlc3QgZm9yIGVh
Y2guCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0
MzAwCisKKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQt
c3R5bGUtZGlzYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L2Nzcy12
aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLTIuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jc3MtdmlzaXRlZC1z
dHlsZS1lbmFibGVkLTIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3Qv
aGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZW5h
YmxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVk
OgorCiAyMDEwLTAyLTE5ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWU4NmIwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRp
c2FibGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgbGluayBzaG91bGQgYXBw
ZWFyIGluIGJsdWUuLgorCitMaW5rIGlzIGJsdWUgKHJnYigwLCAwLCAyNTUpKTogUEFTUwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2Fi
bGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlz
YWJsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGYwZjgyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0
eWxlLWRpc2FibGVkLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5v
cmcvVFIvUkVDLWh0bWw0MC9sb29zZS5kdGQiPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5DU1NW
aXNpdGVkU3R5bGVFbmFibGVkIC0gV2hlbiBTZXQgdG8gRmFsc2UsIFZpc2l0ZWQgTGlua3MgYXBw
ZWFyIHVudmlzaXRlZDwvVElUTEU+Cis8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxNRVRBIGh0dHAtZXF1aXY9
IkNvbnRlbnQtU3R5bGUtVHlwZSIgY29udGVudD0idGV4dC9jc3MiPgorPFNUWUxFIHR5cGU9InRl
eHQvY3NzIj4KK0Ege2NvbG9yOiBncmVlbjt9CitBOmxpbmsge2NvbG9yOiBibHVlO30KK0E6dmlz
aXRlZCB7Y29sb3I6IHJlZDt9CitBOmFjdGl2ZSB7Y29sb3I6IGJsYWNrO30KKyNvbmUge2NvbG9y
OiAjMDA2NjAwO30KKzwvU1RZTEU+CisKKzwvSEVBRD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRDU1NWaXNpdGVk
U3R5bGVFbmFibGVkIiwgZmFsc2UpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICB9CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlsaW5r
Iik7CisgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTsK
KyAgICBldmVudC5pbml0RXZlbnQoImNsaWNrIiwgdHJ1ZSwgdHJ1ZSk7CisgICAgZWxlbWVudC5k
aXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCk7Ij4KKzxkaXY+PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI0MzAwIj5CdWd6aWxsYSBSZWZlcmVuY2UuPC9hPjwvZGl2PgorPGRpdj5U
byBydW4gdGhlIHRlc3QgPGEgaWQ9Im15bGluayIgaHJlZj0icmVzb3VyY2VzL2Nzcy12aXNpdGVk
LXN0eWxlLWRpc2FibGVkLTIuaHRtbCI+Y2xpY2sgdGhpcyBsaW5rLjwvYT4uPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9jc3Mt
dmlzaXRlZC1zdHlsZS1lbmFibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGEzNzdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMyBAQAorVGhpcyBsaW5rIHNob3VsZCBhcHBlYXIgaW4gcmVkLi4KKworTGlu
ayBpcyByZWQgKHJnYigyNTUsIDAsIDApKTogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM5ZTRiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLmh0bWwKQEAgLTAs
MCArMSwzNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBU
cmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MC9sb29zZS5k
dGQiPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5DU1NWaXNpdGVkU3R5bGVFbmFibGVkIC0gV2hl
biBTZXQgdG8gRmFsc2UsIFZpc2l0ZWQgTGlua3MgYXBwZWFyIHVudmlzaXRlZDwvVElUTEU+Cis8
TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD1pc28tODg1OS0xIj4KKzxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtU3R5bGUtVHlwZSIgY29u
dGVudD0idGV4dC9jc3MiPgorPFNUWUxFIHR5cGU9InRleHQvY3NzIj4KK0Ege2NvbG9yOiBncmVl
bjt9CitBOmxpbmsge2NvbG9yOiBibHVlO30KK0E6dmlzaXRlZCB7Y29sb3I6IHJlZDt9CitBOmFj
dGl2ZSB7Y29sb3I6IGJsYWNrO30KKyNvbmUge2NvbG9yOiAjMDA2NjAwO30KKzwvU1RZTEU+CisK
KzwvSEVBRD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkIiwgdHJ1ZSk7Cisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJteWxpbmsiKTsKKyAgICB2YXIgZXZlbnQgPSBkb2N1
bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpOworICAgIGV2ZW50LmluaXRFdmVudCgiY2xp
Y2siLCB0cnVlLCB0cnVlKTsKKyAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPGRpdj48YSBo
cmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAiPkJ1Z3pp
bGxhIFJlZmVyZW5jZS48L2E+PC9kaXY+Cis8ZGl2PlRvIHJ1biB0aGUgdGVzdCA8YSBpZD0ibXls
aW5rIiBocmVmPSJyZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC0yLmh0bWwiPmNs
aWNrIHRoaXMgbGluay48L2E+LjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWRp
c2FibGVkLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLXZp
c2l0ZWQtc3R5bGUtZGlzYWJsZWQtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjliZWI2NmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rv
cnkvcmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLTIuaHRtbApAQCAtMCwwICsx
LDMzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5z
aXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+
Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPkNTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQgLSBXaGVuIFNl
dCB0byBGYWxzZSwgVmlzaXRlZCBMaW5rcyBhcHBlYXIgdW52aXNpdGVkPC9USVRMRT4KKzxNRVRB
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlz
by04ODU5LTEiPgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1TdHlsZS1UeXBlIiBjb250ZW50
PSJ0ZXh0L2NzcyI+Cis8U1RZTEUgdHlwZT0idGV4dC9jc3MiPgorQSB7Y29sb3I6IGdyZWVuO30K
K0E6bGluayB7Y29sb3I6IGJsdWU7fQorQTp2aXNpdGVkIHtjb2xvcjogcmVkO30KK0E6YWN0aXZl
IHtjb2xvcjogYmxhY2s7fQorI29uZSB7Y29sb3I6ICMwMDY2MDA7fQorPC9TVFlMRT4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgdmFyIG15TGluayA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJteWxpbmsiKTsKKyAgICB2YXIgY29sb3IgPSBkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKG15TGluaywgbnVsbCkuY29sb3I7CisgICAgcmVzdWx0LmlubmVyVGV4
dCA9IGNvbG9yID09ICJyZ2IoMCwgMCwgMjU1KSIgPyAiTGluayBpcyBibHVlIChyZ2IoMCwgMCwg
MjU1KSk6IFBBU1MiIDogIkxpbmsgaXMgbm90IGJsdWUuIEZBSUw6ICIrY29sb3I7CisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L0hFQUQ+Cis8Ym9keSBpZD0ibXlCb2R5
IiBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPGRpdj48YSBpZD0ibXlsaW5rIiBocmVmPSIuLi9j
c3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC5odG1sIj5UaGlzIGxpbmsgc2hvdWxkIGFwcGVhciBp
biBibHVlLjwvYT4uPC9kaXY+CisgICAgPC9icj4KKyAgICA8ZGl2IGlkPSJyZXN1bHQiPgorICAg
ICAgICBUZXN0IG5vdCBydW4gY29ycmVjdGx5LgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNl
cy9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9yZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC0yLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJjZDU2MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxl
ZC0yLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0Mv
L0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvUkVD
LWh0bWw0MC9sb29zZS5kdGQiPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5DU1NWaXNpdGVkU3R5
bGVFbmFibGVkIC0gV2hlbiBTZXQsIFZpc2l0ZWQgTGlua3MgYXBwZWFyIHZpc2l0ZWQ8L1RJVExF
PgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9aXNvLTg4NTktMSI+Cis8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVN0eWxlLVR5cGUi
IGNvbnRlbnQ9InRleHQvY3NzIj4KKzxTVFlMRSB0eXBlPSJ0ZXh0L2NzcyI+CitBIHtjb2xvcjog
Z3JlZW47fQorQTpsaW5rIHtjb2xvcjogYmx1ZTt9CitBOnZpc2l0ZWQge2NvbG9yOiByZWQ7fQor
QTphY3RpdmUge2NvbG9yOiBibGFjazt9Cisjb25lIHtjb2xvcjogIzAwNjYwMDt9Cis8L1NUWUxF
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgdmFyIHJlc3VsdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICB2YXIgbXlMaW5rID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIm15bGluayIpOworICAgIHZhciBjb2xvciA9IGRvY3VtZW50LmRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUobXlMaW5rLCBudWxsKS5jb2xvcjsKKyAgICByZXN1bHQu
aW5uZXJUZXh0ID0gY29sb3IgPT0gInJnYigyNTUsIDAsIDApIiA/ICJMaW5rIGlzIHJlZCAocmdi
KDI1NSwgMCwgMCkpOiBQQVNTIiA6ICJMaW5rIGlzIG5vdCByZWQuIEZBSUw6ICIrY29sb3I7Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L0hFQUQ+Cis8Ym9keSBpZD0i
bXlCb2R5IiBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPGRpdj48YSBpZD0ibXlsaW5rIiBocmVm
PSIuLi9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLmh0bWwiPlRoaXMgbGluayBzaG91bGQgYXBw
ZWFyIGluIHJlZC48L2E+LjwvZGl2PgorICAgIDwvYnI+CisgICAgPGRpdiBpZD0icmVzdWx0Ij4K
KyAgICAgICAgVGVzdCBub3QgcnVuIGNvcnJlY3RseS4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0
L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxl
ZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVlODZi
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2hpc3Rv
cnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBA
QAorVGhpcyBsaW5rIHNob3VsZCBhcHBlYXIgaW4gYmx1ZS4uCisKK0xpbmsgaXMgYmx1ZSAocmdi
KDAsIDAsIDI1NSkpOiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
ZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFi
bGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGEz
NzdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaGlz
dG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMg
QEAKK1RoaXMgbGluayBzaG91bGQgYXBwZWFyIGluIHJlZC4uCisKK0xpbmsgaXMgcmVkIChyZ2Io
MjU1LCAwLCAwKSk6IFBBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9T
a2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggMDU3MmNkYi4u
YmY3ZTA4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTExOCwzICsxMTgsNyBAQCBz
dG9yYWdlL2RhdGFiYXNlLWxvY2stYWZ0ZXItcmVsb2FkLmh0bWwKIAogIyBBY2NlcHQgaGVhZGVy
IGlzIGhhbmRsZWQgYnkgdGhlIGJyb3dzZXIKIGh0dHAvdGVzdHMvbWlzYy9pbWFnZS1jaGVja3Mt
Zm9yLWFjY2VwdC5odG1sCisKKyMgTm90IGltcGxlbWVudGVkCitmYXN0L2hpc3RvcnkvY3NzLXZp
c2l0ZWQtc3R5bGUtZGlzYWJsZWQuaHRtbAorZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxl
LWVuYWJsZWQuaHRtbApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkOTBjNjMyLi4wY2MwYmNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEwLTAyLTIx
ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBvcHRpb24gQ1NTVmlzaXRlZFN0
eWxlRW5hYmxlZC4KKyAgICAgICAgV2hlbiBzZXQgdG8gZmFsc2UsIHRoaXMgb3B0aW9uIHdpbGwg
YWx3YXlzIHJldHVybiBmYWxzZSBmb3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAgICAg
ICAgc3R5bGVzaGVldHMuIFRoaXMgcHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5IGlu
c3BlY3RpbmcgeW91ciBicm93c2luZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhl
ICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCisK
KyAgICAgICAgQnkgZGVmYXVsdCB0aGUgb3B0aW9uIGlzIHNldCB0byAndHJ1ZScuCisKKyAgICAg
ICAgVGhlIG9wdGlvbiBoYXMgYmVlbiBhZGRlZCB0byB0aGUgcXQsIGd0ayBhbmQgd2luIHBvcnRz
IGFsb25nIHdpdGggdGhlCisgICAgICAgIGFzc29jaWF0ZWQgdW5pdCB0ZXN0IGZvciBlYWNoLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMwMAor
CisgICAgICAgIFRlc3RzOiBmYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJs
ZWQuaHRtbAorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNr
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2Vy
OjpjaGVja1BzZXVkb1N0YXRlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgor
ICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRDU1NWaXNpdGVkU3R5
bGVFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6Y3NzVmlzaXRlZFN0eWxlRW5hYmxlZCk6CisKIDIwMTAtMDItMjAgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFj
aWVqIFN0YWNob3dpYWsuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDEyNGViOWYuLjY4
YzI1YzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBi
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC04NzYsNyArODc2LDExIEBAIENT
U1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2VyKERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCBzdHJpCiAgICAgLCBtX2NvbGxlY3RSdWxlc09ubHkoZmFsc2UpCiAg
ICAgLCBtX3BzZXVkb1N0eWxlKE5PUFNFVURPKQogICAgICwgbV9kb2N1bWVudElzSFRNTChkb2N1
bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkKKyAgICAsIG1fY3NzVmlzaXRlZFN0eWxlRW5hYmxlZCh0
cnVlKQogeworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZG9jdW1lbnQtPnNldHRpbmdzKCk7
CisgICAgaWYgKHNldHRpbmdzICYmICFzZXR0aW5ncy0+Y3NzVmlzaXRlZFN0eWxlRW5hYmxlZCgp
KQorICAgICAgICBtX2Nzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQgPSBmYWxzZTsKIH0KIAogUHNldWRv
U3RhdGUgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1BzZXVkb1N0YXRl
KEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgY2hlY2tWaXNpdGVkKSBjb25zdApAQCAtODg4LDYgKzg5
Miw5IEBAIFBzZXVkb1N0YXRlIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50CiAgICAgaWYgKCFjaGVja1Zpc2l0ZWQpCiAg
ICAgICAgIHJldHVybiBQc2V1ZG9BbnlMaW5rOwogCisgICAgaWYgKCFtX2Nzc1Zpc2l0ZWRTdHls
ZUVuYWJsZWQpCisgICAgICAgIHJldHVybiBQc2V1ZG9MaW5rOworCiAjaWYgUExBVEZPUk0oUVQp
CiAgICAgVmVjdG9yPFVDaGFyLCA1MTI+IHVybDsKICAgICB2aXNpdGVkVVJMKG1fZG9jdW1lbnQt
PmJhc2VVUkwoKSwgKmF0dHIsIHVybCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmggYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKaW5kZXggNjQ0MDUx
Yy4uMGQxN2M1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCisr
KyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtMjEwLDYgKzIxMCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIFBzZXVkb0lkIG1fcHNldWRvU3R5bGU7CiAgICAgICAgICAgICBi
b29sIG1fZG9jdW1lbnRJc0hUTUw7CiAgICAgICAgICAgICBtdXRhYmxlIEhhc2hTZXQ8TGlua0hh
c2gsIExpbmtIYXNoSGFzaD4gbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGU7CisgICAgICAg
ICAgICBib29sIG1fY3NzVmlzaXRlZFN0eWxlRW5hYmxlZDsKICAgICAgICAgfTsKIAogICAgIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcAppbmRleCBjODJiMjM0Li42OGNmNThjIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAg
LTEwNiw2ICsxMDYsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1f
ZW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKHRydWUpCiAgICAgLCBtX3VzZXNFbmNvZGlu
Z0RldGVjdG9yKGZhbHNlKQogICAgICwgbV9hbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyhmYWxz
ZSkKKyAgICAsIG1fY3NzVmlzaXRlZFN0eWxlRW5hYmxlZCh0cnVlKQogICAgICwgbV9lZGl0aW5n
QmVoYXZpb3IoCiAjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYmIE9T
KERBUldJTikpCiAgICAgICAgIC8vIChQTEFURk9STShNQUMpIGlzIGFsd2F5cyBmYWxzZSBpbiBD
aHJvbWl1bSwgaGVuY2UgdGhlIGV4dHJhIGNvbmRpdGlvbi4pCkBAIC0yODEsNiArMjgyLDExIEBA
IHZvaWQgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlQnJv
d3NpbmdFbmFibGVkKQogICAgIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHByaXZhdGVCcm93
c2luZ0VuYWJsZWQ7CiB9CiAKK3ZvaWQgU2V0dGluZ3M6OnNldENTU1Zpc2l0ZWRTdHlsZUVuYWJs
ZWQoYm9vbCBjc3NWaXNpdGVkU3R5bGVFbmFibGVkKQoreworICAgIG1fY3NzVmlzaXRlZFN0eWxl
RW5hYmxlZCA9IGNzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQ7Cit9CisKIHZvaWQgU2V0dGluZ3M6OnNl
dEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoYm9vbCBqYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KQogewogICAgIG1famF2YVNjcmlwdENhbk9wZW5XaW5k
b3dzQXV0b21hdGljYWxseSA9IGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5oCmluZGV4IDY2NDhhMDguLjU1MWU1N2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oCisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0yOTAsNiArMjkwLDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldExvYWREZWZlcnJpbmdFbmFi
bGVkKGJvb2wpOwogICAgICAgICBib29sIGxvYWREZWZlcnJpbmdFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2FkRGVmZXJyaW5nRW5hYmxlZDsgfQogCisgICAgICAgIHZvaWQgc2V0Q1NTVmlz
aXRlZFN0eWxlRW5hYmxlZChib29sKTsKKyAgICAgICAgYm9vbCBjc3NWaXNpdGVkU3R5bGVFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9jc3NWaXNpdGVkU3R5bGVFbmFibGVkOyB9CisKICAgICBw
cml2YXRlOgogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgICAgIApAQCAtMzY0LDYgKzM2Nyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3dlYkdMRW5hYmxlZCA6IDE7
CiAgICAgICAgIGJvb2wgbV9nZW9sb2NhdGlvbkVuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1f
bG9hZERlZmVycmluZ0VuYWJsZWQgOiAxOworICAgICAgICBib29sIG1fY3NzVmlzaXRlZFN0eWxl
RW5hYmxlZCA6IDE7CiAKICNpZiBVU0UoU0FGQVJJX1RIRU1FKQogICAgICAgICBzdGF0aWMgYm9v
bCBnU2hvdWxkUGFpbnROYXRpdmVDb250cm9sczsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hh
bmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNDNkMmQyMC4uNmY5ZTMxMyAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMSBAQAorMjAxMC0wMi0xOCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHJvYmVy
dGhvZ2FuLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgb3B0aW9uIENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQuCisgICAgICAgIFdoZW4gc2V0
IHRvIGZhbHNlLCB0aGlzIG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAn
dmlzaXRlZCcgc3RhdGUgaW4gQ1NTCisgICAgICAgIHN0eWxlc2hlZXRzLiBUaGlzIHByZXZlbnRz
IHdlYnNpdGVzIGZyb20gaW5kaXJlY3RseSBpbnNwZWN0aW5nIHlvdXIgYnJvd3NpbmcKKyAgICAg
ICAgaGlzdG9yeSBieSByZXF1ZXN0aW5nIHRoZSAndmlzaXRlZCcgc3RhdGUgZm9yIGEgc2V0IG9m
IFVSTHMgaW4gYSBIVE1MIGRvY3VtZW50LgorCisgICAgICAgIEJ5IGRlZmF1bHQgdGhlIG9wdGlv
biBpcyBzZXQgdG8gJ3RydWUnLgorCisgICAgICAgIFRoZSBvcHRpb24gaGFzIGJlZW4gYWRkZWQg
dG8gdGhlIHF0LCBndGsgYW5kIHdpbiBwb3J0cyBhbG9uZyB3aXRoIHRoZQorICAgICAgICBhc3Nv
Y2lhdGVkIHVuaXQgdGVzdCBmb3IgZWFjaC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKKworICAgICAgICAod2Via2l0X3dlYl92aWV3X3Nl
dHRpbmdzX25vdGlmeSk6CisKIDIwMTAtMDItMTggIERpZWdvIEVzY2FsYW50ZSBVcnJlbG8gIDxk
ZXNjYWxhbnRlQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3Jv
bmhhIFNpbHZhLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCmluZGV4IDRm
ZjRhOGUuLjZlOTJjMWYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNl
dHRpbmdzLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAK
QEAgLTEwNiw2ICsxMDYsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSB7CiAg
ICAgZ2Jvb2xlYW4gZW5hYmxlX3BhZ2VfY2FjaGU7CiAgICAgZ2Jvb2xlYW4gYXV0b19yZXNpemVf
d2luZG93OwogICAgIGdib29sZWFuIGVuYWJsZV9qYXZhX2FwcGxldDsKKyAgICBnYm9vbGVhbiBj
c3NfdmlzaXRlZF9zdHlsZV9lbmFibGVkOwogfTsKIAogI2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJ
TkdTX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwg
V0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpKQpAQCAt
MTUzLDcgKzE1NCw4IEBAIGVudW0gewogICAgIFBST1BfRU5BQkxFX1NJVEVfU1BFQ0lGSUNfUVVJ
UktTLAogICAgIFBST1BfRU5BQkxFX1BBR0VfQ0FDSEUsCiAgICAgUFJPUF9BVVRPX1JFU0laRV9X
SU5ET1csCi0gICAgUFJPUF9FTkFCTEVfSkFWQV9BUFBMRVQKKyAgICBQUk9QX0VOQUJMRV9KQVZB
X0FQUExFVCwKKyAgICBQUk9QX0NTU19WSVNJVEVEX1NUWUxFX0VOQUJMRUQKIH07CiAKIC8vIENy
ZWF0ZSBhIGRlZmF1bHQgdXNlciBhZ2VudCBzdHJpbmcKQEAgLTgyMCw2ICs4MjIsMjQgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFdlYlNldHRpbmdz
Q2xhc3MqIGtsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxhZ3MpKTsKIAogICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShr
bGFzcywgc2l6ZW9mKFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkpOworCisgICAgLyoqCisgICAg
KiBXZWJLaXRXZWJTZXR0aW5nczpjc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkOgorICAgICoKKyAg
ICAqIFdoZXRoZXIgdG8gcmVzcGVjdCB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUyBzdHlsZXNo
ZWV0cy4gU2V0dGluZyB0bworICAgICogJ2ZhbHNlJyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGlu
ZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgKiBoaXN0b3J5IGJ5IHJlcXVl
c3RpbmcgdGhlICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9j
dW1lbnQuCisgICAgKgorICAgICogU2luY2U6IDEuMS4xNworICAgICovCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJPUF9DU1NfVklTSVRFRF9TVFlMRV9FTkFCTEVELAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxl
ZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgQ1NTIFZp
c2l0ZWQgU3R5bGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVu
YWJsZXMgdGhlIENTUyBWaXNpdGVkIFN0eWxlIGZvciBXZWIgTGlua3MiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxhZ3MpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5n
c19pbml0KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJfc2V0dGluZ3MpCkBAIC0xMDM2LDYgKzEwNTYs
OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbgogICAgIGNhc2UgUFJPUF9FTkFCTEVfSkFWQV9B
UFBMRVQ6CiAgICAgICAgIHByaXYtPmVuYWJsZV9qYXZhX2FwcGxldCA9IGdfdmFsdWVfZ2V0X2Jv
b2xlYW4odmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQ1NTX1ZJU0lURURf
U1RZTEVfRU5BQkxFRDoKKyAgICAgICAgcHJpdi0+Y3NzX3Zpc2l0ZWRfc3R5bGVfZW5hYmxlZCA9
IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
X2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTE3MSw3ICsxMTk0LDEwIEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcF9pZCwgR1ZhCiAgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBX0FQUExFVDoKICAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZW5hYmxlX2phdmFfYXBwbGV0
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKKyAgICBjYXNlIFBST1BfQ1NTX1ZJU0lU
RURfU1RZTEVfRU5BQkxFRDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJp
di0+Y3NzX3Zpc2l0ZWRfc3R5bGVfZW5hYmxlZCk7CisgICAgICAgIGJyZWFrOworICAgZGVmYXVs
dDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cF9pZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMjQzLDYgKzEyNjksNyBA
QCBXZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0X3dlYl9zZXR0aW5nc19jb3B5KFdlYktpdFdlYlNl
dHRpbmdzKiB3ZWJfc2V0dGluZ3MpCiAgICAgICAgICAgICAgICAgICJlbmFibGUtcGFnZS1jYWNo
ZSIsIHByaXYtPmVuYWJsZV9wYWdlX2NhY2hlLAogICAgICAgICAgICAgICAgICAiYXV0by1yZXNp
emUtd2luZG93IiwgcHJpdi0+YXV0b19yZXNpemVfd2luZG93LAogICAgICAgICAgICAgICAgICAi
ZW5hYmxlLWphdmEtYXBwbGV0IiwgcHJpdi0+ZW5hYmxlX2phdmFfYXBwbGV0LAorICAgICAgICAg
ICAgICAgICAiY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZCIsIHByaXYtPmNzc192aXNpdGVkX3N0
eWxlX2VuYWJsZWQsCiAgICAgICAgICAgICAgICAgIE5VTEwpKTsKIAogICAgIHJldHVybiBjb3B5
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBkNmE4YjgzLi4wYjU5MDUzIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMjU1Miw3ICsyNTUyLDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogICAgICAgICBlbmFibGVYU1NBdWRpdG9yLCBqYXZhc2NyaXB0Q2FuT3BlbldpbmRv
d3MsIGVuYWJsZU9mZmxpbmVXZWJBcHBDYWNoZSwKICAgICAgICAgZW5hYmxlVW5pdmVyc2FsQWNj
ZXNzRnJvbUZpbGVVUkksIGVuYWJsZUZpbGVBY2Nlc3NGcm9tRmlsZVVSSSwKICAgICAgICAgZW5h
YmxlRE9NUGFzdGUsIHRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cywKLSAgICAgICAgZW5hYmxl
U2l0ZVNwZWNpZmljUXVpcmtzLCB1c2VQYWdlQ2FjaGUsIGVuYWJsZUphdmFBcHBsZXQ7CisgICAg
ICAgIGVuYWJsZVNpdGVTcGVjaWZpY1F1aXJrcywgdXNlUGFnZUNhY2hlLCBlbmFibGVKYXZhQXBw
bGV0LCBDU1NWaXNpdGVkU3R5bGVFbmFibGVkOwogCiAgICAgV2ViS2l0RWRpdGluZ0JlaGF2aW9y
IGVkaXRpbmdCZWhhdmlvcjsKIApAQCAtMjU4Nyw2ICsyNTg3LDcgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAg
ICAgICAgICAgICAgICAiZW5hYmxlLXNpdGUtc3BlY2lmaWMtcXVpcmtzIiwgJmVuYWJsZVNpdGVT
cGVjaWZpY1F1aXJrcywKICAgICAgICAgICAgICAgICAgImVuYWJsZS1wYWdlLWNhY2hlIiwgJnVz
ZVBhZ2VDYWNoZSwKICAgICAgICAgICAgICAgICAgImVuYWJsZS1qYXZhLWFwcGxldCIsICZlbmFi
bGVKYXZhQXBwbGV0LAorICAgICAgICAgICAgICAgICAiY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxl
ZCIsICZDU1NWaXNpdGVkU3R5bGVFbmFibGVkLAogICAgICAgICAgICAgICAgICBOVUxMKTsKIAog
ICAgIHNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZShkZWZhdWx0RW5jb2Rpbmcp
OwpAQCAtMjYxOCw2ICsyNjE5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0
ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHNldHRpbmdzLT5zZXROZWVk
c1NpdGVTcGVjaWZpY1F1aXJrcyhlbmFibGVTaXRlU3BlY2lmaWNRdWlya3MpOwogICAgIHNldHRp
bmdzLT5zZXRVc2VzUGFnZUNhY2hlKHVzZVBhZ2VDYWNoZSk7CiAgICAgc2V0dGluZ3MtPnNldEph
dmFFbmFibGVkKGVuYWJsZUphdmFBcHBsZXQpOworICAgIHNldHRpbmdzLT5zZXRDU1NWaXNpdGVk
U3R5bGVFbmFibGVkKENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQpOwogCiAgICAgUGFnZSogcGFnZSA9
IGNvcmUod2ViVmlldyk7CiAgICAgaWYgKHBhZ2UpCkBAIC0yNzIyLDYgKzI3MjQsOCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KFdlYktpdFdlYlNldHRpbmdz
KiB3ZWJTZXR0aW5ncywgR1BhcgogICAgICAgICBzZXR0aW5ncy0+c2V0VXNlc1BhZ2VDYWNoZShn
X3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRl
cm5fc3RyaW5nKCJlbmFibGUtamF2YS1hcHBsZXQiKSkKICAgICAgICAgc2V0dGluZ3MtPnNldEph
dmFFbmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFt
ZSA9PSBnX2ludGVybl9zdHJpbmcoImNzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQiKSkKKyAgICAg
ICAgc2V0dGluZ3MtPnNldENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQoZ192YWx1ZV9nZXRfYm9vbGVh
bigmdmFsdWUpKTsKICAgICBlbHNlIGlmICghZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eShH
X09CSkVDVF9HRVRfQ0xBU1Mod2ViU2V0dGluZ3MpLCBuYW1lKSkKICAgICAgICAgZ193YXJuaW5n
KCJVbmV4cGVjdGVkIHNldHRpbmcgJyVzJyIsIG5hbWUpOwogICAgIGdfdmFsdWVfdW5zZXQoJnZh
bHVlKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcCBiL1dlYktp
dC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAppbmRleCBkNjBmMDljLi43N2UxZGVkIDEwMDY0NAot
LS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9x
d2Vic2V0dGluZ3MuY3BwCkBAIC0xNzQsNiArMTc0LDEwIEBAIHZvaWQgUVdlYlNldHRpbmdzUHJp
dmF0ZTo6YXBwbHkoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9i
YWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpQcml2YXRlQnJvd3NpbmdFbmFibGVk
KSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHZhbHVlKTsK
IAorICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpDU1NWaXNp
dGVkU3R5bGVFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpDU1NWaXNpdGVkU3R5bGVFbmFi
bGVkKSk7CisgICAgICAgIHNldHRpbmdzLT5zZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKHZhbHVl
KTsKKyAgICAgICAgCiAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGlu
Z3M6OkphdmFzY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6Okph
dmFzY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQpKTsKICAgICAgICAgc2V0dGluZ3MtPnNldERPTVBh
c3RlQWxsb3dlZCh2YWx1ZSk7CkBAIC0zNjksNiArMzczLDkgQEAgUVdlYlNldHRpbmdzKiBRV2Vi
U2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKCkKICAgICBcdmFsdWUgTG9jYWxDb250ZW50Q2FuQWNj
ZXNzUmVtb3RlVXJscyBTcGVjaWZpZXMgd2hldGhlciBsb2NhbGx5IGxvYWRlZCBkb2N1bWVudHMg
YXJlIGFsbG93ZWQgdG8gYWNjZXNzIHJlbW90ZSB1cmxzLgogICAgIFx2YWx1ZSBMb2NhbENvbnRl
bnRDYW5BY2Nlc3NGaWxlVXJscyBTcGVjaWZpZXMgd2hldGhlciBsb2NhbGx5IGxvYWRlZCBkb2N1
bWVudHMgYXJlIGFsbG93ZWQgdG8gYWNjZXNzIG90aGVyIGxvY2FsICB1cmxzLgogICAgIFx2YWx1
ZSBYU1NBdWRpdG9yRW5hYmxlZCBTcGVjaWZpZXMgd2hldGhlciBsb2FkIHJlcXVlc3RzIHNob3Vs
ZCBiZSBtb25pdG9yZWQgZm9yIGNyb3NzLXNpdGUgc2NyaXB0aW5nIGF0dGVtcHRzLgorICAgIFx2
YWx1ZSBDU1NWaXNpdGVkU3R5bGVFbmFibGVkIEFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAn
dmlzaXRlZCcgc3RhdGUgaW4gQ1NTCisgICAgICAgIHN0eWxlc2hlZXRzLiBUaGlzIHByZXZlbnRz
IHdlYnNpdGVzIGZyb20gaW5kaXJlY3RseSBpbnNwZWN0aW5nIHlvdXIgYnJvd3NpbmcKKyAgICAg
ICAgaGlzdG9yeSBieSByZXF1ZXN0aW5nIHRoZSAndmlzaXRlZCcgc3RhdGUgZm9yIGEgc2V0IG9m
IFVSTHMgaW4gYSBIVE1MIGRvY3VtZW50LgogKi8KIAogLyohCmRpZmYgLS1naXQgYS9XZWJLaXQv
cXQvQXBpL3F3ZWJzZXR0aW5ncy5oIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaAppbmRl
eCBiMWY1Y2YyLi4yNmIwNmUwIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5n
cy5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKQEAgLTcwLDcgKzcwLDggQEAg
cHVibGljOgogICAgICAgICBMb2NhbENvbnRlbnRDYW5BY2Nlc3NGaWxlVXJscywKICAgICAgICAg
RG5zUHJlZmV0Y2hFbmFibGVkLAogICAgICAgICBYU1NBdWRpdG9yRW5hYmxlZCwKLSAgICAgICAg
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQKKyAgICAgICAgQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQsCisgICAgICAgIENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQKICAgICB9OwogICAg
IGVudW0gV2ViR3JhcGhpYyB7CiAgICAgICAgIE1pc3NpbmdJbWFnZUdyYXBoaWMsCmRpZmYgLS1n
aXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBmYjgz
MmIzLi42NGFjNjUzIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wMi0yMCAgUm9iZXJ0IEhvZ2Fu
ICA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgb3B0aW9uIENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQuCisg
ICAgICAgIFdoZW4gc2V0IHRvIGZhbHNlLCB0aGlzIG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4g
ZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCisgICAgICAgIHN0eWxlc2hlZXRz
LiBUaGlzIHByZXZlbnRzIHdlYnNpdGVzIGZyb20gaW5kaXJlY3RseSBpbnNwZWN0aW5nIHlvdXIg
YnJvd3NpbmcKKyAgICAgICAgaGlzdG9yeSBieSByZXF1ZXN0aW5nIHRoZSAndmlzaXRlZCcgc3Rh
dGUgZm9yIGEgc2V0IG9mIFVSTHMgaW4gYSBIVE1MIGRvY3VtZW50LgorCisgICAgICAgIEJ5IGRl
ZmF1bHQgdGhlIG9wdGlvbiBpcyBzZXQgdG8gJ3RydWUnLgorCisgICAgICAgIFRoZSBvcHRpb24g
aGFzIGJlZW4gYWRkZWQgdG8gdGhlIHF0LCBndGsgYW5kIHdpbiBwb3J0cyBhbG9uZyB3aXRoIHRo
ZQorICAgICAgICBhc3NvY2lhdGVkIHVuaXQgdGVzdCBmb3IgZWFjaC4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKKworICAgICAgICAqIEFw
aS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkp
OgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKwogMjAxMC0wMi0xOCAgTm9hbSBSb3Nl
bnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5n
ZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDhkZDE5YWQuLjY0NGZhNmYgMTAwNjQ0
Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMDItMTggIFJvYmVydCBIb2dhbiAgPHJvYmVydEByb2JlcnRo
b2dhbi5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG9wdGlvbiBDU1NWaXNpdGVkU3R5bGVFbmFibGVkLgorICAgICAgICBXaGVuIHNldCB0
byBmYWxzZSwgdGhpcyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zp
c2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3
ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAg
IGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBV
UkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKworICAgICAgICBCeSBkZWZhdWx0IHRoZSBvcHRpb24g
aXMgc2V0IHRvICd0cnVlJy4KKworICAgICAgICBUaGUgb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRv
IHRoZSBxdCwgZ3RrIGFuZCB3aW4gcG9ydHMgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAgYXNzb2Np
YXRlZCB1bml0IHRlc3QgZm9yIGVhY2guCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI0MzAwCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVQ
YWdlKToKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoKKyAgICAgICAgKiBX
ZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURl
ZmF1bHRTZXR0aW5ncyk6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6c2V0Q1NTVmlzaXRlZFN0
eWxlRW5hYmxlZCk6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6Y3NzVmlzaXRlZFN0eWxlRW5h
YmxlZCk6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBXZWJWaWV3LmNw
cDoKKyAgICAgICAgKFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisKIDIwMTAt
MDItMTcgIFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwgYi9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZl
cmVuY2VzLmlkbAppbmRleCA5YTUyZDdjLi41ZWI2MTE5IDEwMDY0NAotLS0gYS9XZWJLaXQvd2lu
L0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzLmlkbAorKysgYi9XZWJLaXQvd2luL0ludGVyZmFj
ZXMvSVdlYlByZWZlcmVuY2VzLmlkbApAQCAtMTg2LDQgKzE4Niw4IEBAIGludGVyZmFjZSBJV2Vi
UHJlZmVyZW5jZXMgOiBJVW5rbm93bgogCiAgICAgSFJFU1VMVCBzZXRab29tc1RleHRPbmx5KEJP
T0wgem9vbXNUZXh0T25seSk7CiAgICAgSFJFU1VMVCB6b29tc1RleHRPbmx5KEJPT0wgKnpvb21z
VGV4dE9ubHkpOworCisgICAgSFJFU1VMVCBzZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKFtpbl0g
Qk9PTCBlbmFibGVkKTsKKyAgICBIUkVTVUxUIGNzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQoW291dCwg
cmV0dmFsXSBCT09MKiBlbmFibGVkKTsKKwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDBkZDZlNTguLmVkN2Q3MDAgMTAwNjQ0
Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAor
KysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAg
LTE2OCw2ICsxNjgsOCBAQCBQYWdlKiBXZWJJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZVBhZ2UoKQog
ICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXREZWZhdWx0
Rml4ZWRGb250U2l6ZSgxMykpKQogICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoRkFJTEVEKHBy
ZWZlcmVuY2VzLT5zZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKFRSVUUpKSkKKyAgICAgICAgcmV0
dXJuIDA7CiAKICAgICBpZiAoRkFJTEVEKG1fd2ViVmlldy0+c2V0UHJlZmVyZW5jZXMocHJlZmVy
ZW5jZXMuZ2V0KCkpKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJLaXQvd2lu
L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5
c1ByaXZhdGUuaAppbmRleCBkMWUwZjVlLi5lMjMxYTNlIDEwMDY0NAotLS0gYS9XZWJLaXQvd2lu
L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBiL1dlYktpdC93aW4vV2ViUHJlZmVyZW5j
ZUtleXNQcml2YXRlLmgKQEAgLTY2LDYgKzY2LDcgQEAKICNkZWZpbmUgV2ViS2l0VXNlc1BhZ2VD
YWNoZVByZWZlcmVuY2VLZXkgIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IgogI2Rl
ZmluZSBXZWJLaXRDYWNoZU1vZGVsUHJlZmVyZW5jZUtleSAiV2ViS2l0Q2FjaGVNb2RlbFByZWZl
cmVuY2VLZXkiCiAjZGVmaW5lIFdlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVu
Y2VLZXkgIldlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCIKKyNkZWZpbmUgV2ViS2l0Q1NT
VmlzaXRlZFN0eWxlRW5hYmxlZEtleSAiV2ViS2l0Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZCIKIAog
Ly8gVGhlc2UgYXJlIHByaXZhdGUgYm90aCBiZWNhdXNlIGNhbGxlcnMgc2hvdWxkIGJlIHVzaW5n
IHRoZSBjb3ZlciBtZXRob2RzIGFuZCBiZWNhdXNlIHRoZQogLy8gY292ZXIgbWV0aG9kcyB0aGVt
c2VsdmVzIGFyZSBwcml2YXRlLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
cy5jcHAgYi9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCAwZTQ0ZDlmLi5jYWFl
MDMyIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9XZWJL
aXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMjU4LDYgKzI1OCw4IEBAIHZvaWQgV2ViUHJl
ZmVyZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3MoKQogCiAgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFi
bGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKIAorICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKwogICAgIGRlZmF1bHRTZXR0aW5ncyA9IGRlZmF1
bHRzOwogfQogCkBAIC0xMzc2LDYgKzEzNzgsMjAgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6
cGx1Z2luQWxsb3dlZFJ1blRpbWUoVUlOVCogYWxsb3dlZFJ1blRpbWUpCiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldENT
U1Zpc2l0ZWRTdHlsZUVuYWJsZWQoCisgICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQpCit7Cisg
ICAgc2V0Qm9vbFZhbHVlKENGU1RSKFdlYktpdENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWRQcmVmZXJl
bmNlS2V5KSwgZW5hYmxlZCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmNzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQoCisgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQoreworICAgICplbmFibGVkID0gYm9v
bFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWRQcmVmZXJlbmNl
S2V5KSk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNl
dFByZWZlcmVuY2VGb3JUZXN0KEJTVFIga2V5LCBCU1RSIHZhbHVlKQogewogICAgIGlmICghU3lz
U3RyaW5nTGVuKGtleSkgfHwgIVN5c1N0cmluZ0xlbih2YWx1ZSkpCmRpZmYgLS1naXQgYS9XZWJL
aXQvd2luL1dlYlByZWZlcmVuY2VzLmggYi9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmgKaW5k
ZXggZTRhZjE3YS4uYTQwYzc0NiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
cy5oCisrKyBiL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaApAQCAtMzkyLDYgKzM5MiwxMiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEZyYW1l
U2V0RmxhdHRlbmluZ0VuYWJsZWQoCiAgICAgLyogW2luXSAqLyBCT09MIGVuYWJsZWQpOwogCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldENTU1Zpc2l0ZWRTdHlsZUVu
YWJsZWQoCisgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBlbmFibGVkKTsKKworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjc3NWaXNpdGVkU3R5bGVFbmFibGVkKAorICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpOworCiAgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNldFByZWZlcmVuY2VGb3JUZXN0KAogICAgIC8qIFtpbl0g
Ki8gQlNUUiBrZXksCiAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1dl
YktpdC93aW4vV2ViVmlldy5jcHAgYi9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDg2MzZk
MTUuLmE2YTU3NGMgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtNDY2NSw2ICs0NjY1LDExIEBAIEhSRVNVTFQgV2ViVmll
dzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlv
bikKICAgICBzZXR0aW5ncy0+c2V0V2ViR0xFbmFibGVkKHRydWUpOwogI2VuZGlmICAvLyBFTkFC
TEUoM0RfQ0FOVkFTKQogCisgICAgaHIgPSBwcmVmZXJlbmNlcy0+Y3NzVmlzaXRlZFN0eWxlRW5h
YmxlZCgmZW5hYmxlZCk7CisgICAgaWYgKEZBSUxFRChocikpCisgICAgICAgIHJldHVybiBocjsK
KyAgICBzZXR0aW5ncy0+c2V0Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZCghIWVuYWJsZWQpOworCiAg
ICAgaWYgKCFtX2Nsb3NlV2luZG93VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9tYWluRnJh
bWUtPmludmFsaWRhdGUoKTsgLy8gRklYTUUKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU5M2ZmZGEuLjc5MTZmZDkgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wMi0yMCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHJv
YmVydGhvZ2FuLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgb3B0aW9uIENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQuCisgICAgICAgIFdoZW4g
c2V0IHRvIGZhbHNlLCB0aGlzIG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRo
ZSAndmlzaXRlZCcgc3RhdGUgaW4gQ1NTCisgICAgICAgIHN0eWxlc2hlZXRzLiBUaGlzIHByZXZl
bnRzIHdlYnNpdGVzIGZyb20gaW5kaXJlY3RseSBpbnNwZWN0aW5nIHlvdXIgYnJvd3NpbmcKKyAg
ICAgICAgaGlzdG9yeSBieSByZXF1ZXN0aW5nIHRoZSAndmlzaXRlZCcgc3RhdGUgZm9yIGEgc2V0
IG9mIFVSTHMgaW4gYSBIVE1MIGRvY3VtZW50LgorCisgICAgICAgIEJ5IGRlZmF1bHQgdGhlIG9w
dGlvbiBpcyBzZXQgdG8gJ3RydWUnLgorCisgICAgICAgIFRoZSBvcHRpb24gaGFzIGJlZW4gYWRk
ZWQgdG8gdGhlIHF0LCBndGsgYW5kIHdpbiBwb3J0cyBhbG9uZyB3aXRoIHRoZQorICAgICAgICBh
c3NvY2lhdGVkIHVuaXQgdGVzdCBmb3IgZWFjaC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChyZXNldERlZmF1bHRzVG9Db25zaXN0
ZW50VmFsdWVzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwOgorICAgICAgICAoY29weVdlYlNldHRpbmdLZXkpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6CisKIDIwMTAtMDItMjAgIENo
cmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9EdW1wUmVuZGVyVHJlZS5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVt
cFJlbmRlclRyZWUuY3BwCmluZGV4IGEyZmM3OWIuLmQ2MWUwYzYgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMzM1LDYgKzMz
NSw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMoKQogICAg
ICAgICAgICAgICAgICAiZW5hYmxlLXBhZ2UtY2FjaGUiLCBGQUxTRSwKICAgICAgICAgICAgICAg
ICAgImF1dG8tcmVzaXplLXdpbmRvdyIsIFRSVUUsCiAgICAgICAgICAgICAgICAgICJlbmFibGUt
amF2YS1hcHBsZXQiLCBGQUxTRSwKKyAgICAgICAgICAgICAgICAgImNzcy12aXNpdGVkLXN0eWxl
LWVuYWJsZWQiLCBUUlVFLAogICAgICAgICAgICAgICAgICBOVUxMKTsKIAogICAgIHdlYmtpdF93
ZWJfZnJhbWVfY2xlYXJfbWFpbl9mcmFtZV9uYW1lKG1haW5GcmFtZSk7CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3Bw
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcAppbmRleCA2NjhiODUyLi40MGFkNGRkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTcx
LDYgKzcxLDcgQEAgc3RhdGljIGdjaGFyKiBjb3B5V2ViU2V0dGluZ0tleShnY2hhciogcHJlZmVy
ZW5jZUtleSkKICAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydChrZXlUYWJsZSwgZ19zdHJkdXAo
IldlYktpdERlZmF1bHRGb250U2l6ZSIpLCBnX3N0cmR1cCgiZGVmYXVsdC1mb250LXNpemUiKSk7
CiAgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQoa2V5VGFibGUsIGdfc3RyZHVwKCJXZWJLaXRF
bmFibGVDYXJldEJyb3dzaW5nIiksIGdfc3RyZHVwKCJlbmFibGUtY2FyZXQtYnJvd3NpbmciKSk7
CiAgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQoa2V5VGFibGUsIGdfc3RyZHVwKCJXZWJLaXRV
c2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIpLCBnX3N0cmR1cCgiZW5hYmxlLXBhZ2UtY2FjaGUi
KSk7CisgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQoa2V5VGFibGUsIGdfc3RyZHVwKCJXZWJL
aXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkIiksIGdfc3RyZHVwKCJjc3MtdmlzaXRlZC1zdHlsZS1l
bmFibGVkIikpOwogICAgIH0KIAogICAgIHJldHVybiBnX3N0cmR1cChzdGF0aWNfY2FzdDxnY2hh
cio+KGdfaGFzaF90YWJsZV9sb29rdXAoa2V5VGFibGUsIHByZWZlcmVuY2VLZXkpKSk7CmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuY3BwCmluZGV4IGEyNmJjM2QuLjgzYmM4YjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC00
NTcsNiArNDU3LDggQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6b3ZlcnJpZGVQcmVmZXJl
bmNlKGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFWYXJpYW4KICAgICAgICAgc2V0dGluZ3Mt
PnNldEZvbnRTaXplKFFXZWJTZXR0aW5nczo6RGVmYXVsdEZvbnRTaXplLCB2YWx1ZS50b0ludCgp
KTsKICAgICBlbHNlIGlmIChuYW1lID09ICJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtl
eSIpCiAgICAgICAgIFFXZWJTZXR0aW5nczo6c2V0TWF4aW11bVBhZ2VzSW5DYWNoZSh2YWx1ZS50
b0ludCgpKTsKKyAgICBlbHNlIGlmIChuYW1lID09ICJXZWJLaXRDU1NWaXNpdGVkU3R5bGVFbmFi
bGVkIikKKyAgICAgICAgc2V0dGluZ3MtPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkNTU1Zp
c2l0ZWRTdHlsZUVuYWJsZWQsIHZhbHVlLnRvQm9vbCgpKTsKICAgICBlbHNlCiAgICAgICAgIHBy
aW50ZigiRVJST1I6IExheW91dFRlc3RDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2UoKSBk
b2VzIG5vdCBzdXBwb3J0IHRoZSAnJXMnIHByZWZlcmVuY2VcbiIsCiAgICAgICAgICAgICBuYW1l
LnRvTGF0aW4xKCkuZGF0YSgpKTsKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49157</attachid>
            <date>2010-02-21 11:50:38 -0800</date>
            <delta_ts>2010-04-01 14:43:22 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>0001-Add-option-CSSVisitedStyleEnabled.patch</filename>
            <type>text/plain</type>
            <size>36023</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">RnJvbSBjMDkzMTQzZDAzOTkwMjczYTA4OGRmYjBhNDJhNjhlM2MyNGE4N2M0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+
CkRhdGU6IFNhdCwgNSBEZWMgMjAwOSAxMzo0MzoyOSArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIEFk
ZCBvcHRpb24gQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZC4KIFdoZW4gc2V0IHRvIGZhbHNlLCB0aGlz
IG9wdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgZm9yIHRoZSAndmlzaXRlZCcgc3RhdGUg
aW4gQ1NTCiBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0
bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCiBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2
aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCgpCeSBk
ZWZhdWx0IHRoZSBvcHRpb24gaXMgc2V0IHRvICd0cnVlJy4KClRoZSBvcHRpb24gaGFzIGJlZW4g
YWRkZWQgdG8gdGhlIHF0LCBndGsgYW5kIHdpbiBwb3J0cyBhbG9uZyB3aXRoIHRoZQphc3NvY2lh
dGVkIHVuaXQgdGVzdCBmb3IgZWFjaC4KCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDMwMAotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAyNiArKysrKysrKysrKysrKwogLi4uL2Nzcy12aXNpdGVkLXN0eWxl
LWRpc2FibGVkLWV4cGVjdGVkLnR4dCAgICAgICAgfCAgICAzICsrCiAuLi4vZmFzdC9oaXN0b3J5
L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLmh0bWwgICB8ICAgMzUgKysrKysrKysrKysrKysr
KysrKysKIC4uLi9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0
IHwgICAgMyArKwogLi4uL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLmh0
bWwgICAgfCAgIDM1ICsrKysrKysrKysrKysrKysrKysrCiAuLi4vcmVzb3VyY2VzL2Nzcy12aXNp
dGVkLXN0eWxlLWRpc2FibGVkLTIuaHRtbCAgICB8ICAgMzMgKysrKysrKysrKysrKysrKysrCiAu
Li4vcmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtMi5odG1sICAgICB8ICAgMzMg
KysrKysrKysrKysrKysrKysrCiAuLi4vY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0
ZWQudHh0ICAgICAgICB8ICAgIDMgKysKIC4uLi9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVu
YWJsZWQtZXhwZWN0ZWQudHh0IHwgICAgMyArKwogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Nr
aXBwZWQgICAgICAgICAgICAgICAgICAgfCAgICA0ICsrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjkgKysrKysrKysrKysrKysrKwogV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgICAgICAgICAgICAgICAgICAgfCAgICA3ICsr
KysKIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCAgICAgICAgICAgICAgICAgICAgIHwg
ICAgMSArCiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDYgKysrCiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDQgKysKIFdlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAxOCArKysrKysrKysrCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJzZXR0aW5ncy5jcHAgICAgICAgICAgICB8ICAgMjkgKysrKysrKysrKysrKysrKy0KIFdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwICAgICAgICAgICAgICAgIHwgICAgNiArKyst
CiBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDcgKysrKwogV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaCAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAzICstCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMjAgKysrKysrKysrKysKIFdlYktpdC93aW4vQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArKysrKysrKysrKysrKysKIFdlYktpdC93aW4v
SW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXMuaWRsICAgICAgICAgIHwgICAgNCArKwogV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwICAgfCAgICAyICsKIFdl
YktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggICAgICAgICAgICAgIHwgICAgMSAr
CiBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcCAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTYgKysrKysrKysrCiBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmggICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDYgKysrCiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDUgKysrCiBXZWJLaXRUb29scy9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMjMgKysrKysrKysrKysrKwogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcCAgfCAgICAxICsKIC4uLi9EdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIHwgICAgMSArCiAuLi4vRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgICB8ICAgIDIgKwogMzIg
ZmlsZXMgY2hhbmdlZCwgMzkzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRp
c2FibGVkLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3Qv
aGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhw
ZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nz
cy12aXNpdGVkLXN0eWxlLWVuYWJsZWQuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtMi5o
dG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNl
cy9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLTIuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlz
YWJsZWQtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLWV4cGVjdGVkLnR4
dAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBkZTk2OGUzLi5lZjNiZWE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAt
MDItMjEgIFJvYmVydCBIb2dhbiAgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG9wdGlvbiBDU1NWaXNp
dGVkU3R5bGVFbmFibGVkLgorICAgICAgICBXaGVuIHNldCB0byBmYWxzZSwgdGhpcyBvcHRpb24g
d2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUwor
ICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0
bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGlu
ZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVu
dC4KKworICAgICAgICBCeSBkZWZhdWx0IHRoZSBvcHRpb24gaXMgc2V0IHRvICd0cnVlJy4KKwor
ICAgICAgICBUaGUgb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBxdCwgZ3RrIGFuZCB3aW4g
cG9ydHMgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAgYXNzb2NpYXRlZCB1bml0IHRlc3QgZm9yIGVh
Y2guCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0
MzAwCisKKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQt
c3R5bGUtZGlzYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L2Nzcy12
aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLTIuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jc3MtdmlzaXRlZC1z
dHlsZS1lbmFibGVkLTIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3Qv
aGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZW5h
YmxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVk
OgorCiAyMDEwLTAyLTE5ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWU4NmIwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRp
c2FibGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgbGluayBzaG91bGQgYXBw
ZWFyIGluIGJsdWUuLgorCitMaW5rIGlzIGJsdWUgKHJnYigwLCAwLCAyNTUpKTogUEFTUwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWRpc2Fi
bGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlz
YWJsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGYwZjgyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0
eWxlLWRpc2FibGVkLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5v
cmcvVFIvUkVDLWh0bWw0MC9sb29zZS5kdGQiPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5DU1NW
aXNpdGVkU3R5bGVFbmFibGVkIC0gV2hlbiBTZXQgdG8gRmFsc2UsIFZpc2l0ZWQgTGlua3MgYXBw
ZWFyIHVudmlzaXRlZDwvVElUTEU+Cis8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KKzxNRVRBIGh0dHAtZXF1aXY9
IkNvbnRlbnQtU3R5bGUtVHlwZSIgY29udGVudD0idGV4dC9jc3MiPgorPFNUWUxFIHR5cGU9InRl
eHQvY3NzIj4KK0Ege2NvbG9yOiBncmVlbjt9CitBOmxpbmsge2NvbG9yOiBibHVlO30KK0E6dmlz
aXRlZCB7Y29sb3I6IHJlZDt9CitBOmFjdGl2ZSB7Y29sb3I6IGJsYWNrO30KKyNvbmUge2NvbG9y
OiAjMDA2NjAwO30KKzwvU1RZTEU+CisKKzwvSEVBRD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRDU1NWaXNpdGVk
U3R5bGVFbmFibGVkIiwgZmFsc2UpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICB9CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlsaW5r
Iik7CisgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTsK
KyAgICBldmVudC5pbml0RXZlbnQoImNsaWNrIiwgdHJ1ZSwgdHJ1ZSk7CisgICAgZWxlbWVudC5k
aXNwYXRjaEV2ZW50KGV2ZW50KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCk7Ij4KKzxkaXY+PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI0MzAwIj5CdWd6aWxsYSBSZWZlcmVuY2UuPC9hPjwvZGl2PgorPGRpdj5U
byBydW4gdGhlIHRlc3QgPGEgaWQ9Im15bGluayIgaHJlZj0icmVzb3VyY2VzL2Nzcy12aXNpdGVk
LXN0eWxlLWRpc2FibGVkLTIuaHRtbCI+Y2xpY2sgdGhpcyBsaW5rLjwvYT4uPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9jc3Mt
dmlzaXRlZC1zdHlsZS1lbmFibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGEzNzdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMyBAQAorVGhpcyBsaW5rIHNob3VsZCBhcHBlYXIgaW4gcmVkLi4KKworTGlu
ayBpcyByZWQgKHJnYigyNTUsIDAsIDApKTogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM5ZTRiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLmh0bWwKQEAgLTAs
MCArMSwzNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBU
cmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MC9sb29zZS5k
dGQiPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5DU1NWaXNpdGVkU3R5bGVFbmFibGVkIC0gV2hl
biBTZXQgdG8gRmFsc2UsIFZpc2l0ZWQgTGlua3MgYXBwZWFyIHVudmlzaXRlZDwvVElUTEU+Cis8
TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD1pc28tODg1OS0xIj4KKzxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtU3R5bGUtVHlwZSIgY29u
dGVudD0idGV4dC9jc3MiPgorPFNUWUxFIHR5cGU9InRleHQvY3NzIj4KK0Ege2NvbG9yOiBncmVl
bjt9CitBOmxpbmsge2NvbG9yOiBibHVlO30KK0E6dmlzaXRlZCB7Y29sb3I6IHJlZDt9CitBOmFj
dGl2ZSB7Y29sb3I6IGJsYWNrO30KKyNvbmUge2NvbG9yOiAjMDA2NjAwO30KKzwvU1RZTEU+CisK
KzwvSEVBRD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkIiwgdHJ1ZSk7Cisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJteWxpbmsiKTsKKyAgICB2YXIgZXZlbnQgPSBkb2N1
bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpOworICAgIGV2ZW50LmluaXRFdmVudCgiY2xp
Y2siLCB0cnVlLCB0cnVlKTsKKyAgICBlbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorPGRpdj48YSBo
cmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAiPkJ1Z3pp
bGxhIFJlZmVyZW5jZS48L2E+PC9kaXY+Cis8ZGl2PlRvIHJ1biB0aGUgdGVzdCA8YSBpZD0ibXls
aW5rIiBocmVmPSJyZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC0yLmh0bWwiPmNs
aWNrIHRoaXMgbGluay48L2E+LjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWRp
c2FibGVkLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLXZp
c2l0ZWQtc3R5bGUtZGlzYWJsZWQtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjliZWI2NmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rv
cnkvcmVzb3VyY2VzL2Nzcy12aXNpdGVkLXN0eWxlLWRpc2FibGVkLTIuaHRtbApAQCAtMCwwICsx
LDMzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5z
aXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+
Cis8SFRNTD4KKzxIRUFEPgorPFRJVExFPkNTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQgLSBXaGVuIFNl
dCB0byBGYWxzZSwgVmlzaXRlZCBMaW5rcyBhcHBlYXIgdW52aXNpdGVkPC9USVRMRT4KKzxNRVRB
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlz
by04ODU5LTEiPgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1TdHlsZS1UeXBlIiBjb250ZW50
PSJ0ZXh0L2NzcyI+Cis8U1RZTEUgdHlwZT0idGV4dC9jc3MiPgorQSB7Y29sb3I6IGdyZWVuO30K
K0E6bGluayB7Y29sb3I6IGJsdWU7fQorQTp2aXNpdGVkIHtjb2xvcjogcmVkO30KK0E6YWN0aXZl
IHtjb2xvcjogYmxhY2s7fQorI29uZSB7Y29sb3I6ICMwMDY2MDA7fQorPC9TVFlMRT4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgdmFyIG15TGluayA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJteWxpbmsiKTsKKyAgICB2YXIgY29sb3IgPSBkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKG15TGluaywgbnVsbCkuY29sb3I7CisgICAgcmVzdWx0LmlubmVyVGV4
dCA9IGNvbG9yID09ICJyZ2IoMCwgMCwgMjU1KSIgPyAiTGluayBpcyBibHVlIChyZ2IoMCwgMCwg
MjU1KSk6IFBBU1MiIDogIkxpbmsgaXMgbm90IGJsdWUuIEZBSUw6ICIrY29sb3I7CisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L0hFQUQ+Cis8Ym9keSBpZD0ibXlCb2R5
IiBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPGRpdj48YSBpZD0ibXlsaW5rIiBocmVmPSIuLi9j
c3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxlZC5odG1sIj5UaGlzIGxpbmsgc2hvdWxkIGFwcGVhciBp
biBibHVlLjwvYT4uPC9kaXY+CisgICAgPC9icj4KKyAgICA8ZGl2IGlkPSJyZXN1bHQiPgorICAg
ICAgICBUZXN0IG5vdCBydW4gY29ycmVjdGx5LgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNl
cy9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9yZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZC0yLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJjZDU2MwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxl
ZC0yLmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0Mv
L0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvUkVD
LWh0bWw0MC9sb29zZS5kdGQiPgorPEhUTUw+Cis8SEVBRD4KKzxUSVRMRT5DU1NWaXNpdGVkU3R5
bGVFbmFibGVkIC0gV2hlbiBTZXQsIFZpc2l0ZWQgTGlua3MgYXBwZWFyIHZpc2l0ZWQ8L1RJVExF
PgorPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNo
YXJzZXQ9aXNvLTg4NTktMSI+Cis8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVN0eWxlLVR5cGUi
IGNvbnRlbnQ9InRleHQvY3NzIj4KKzxTVFlMRSB0eXBlPSJ0ZXh0L2NzcyI+CitBIHtjb2xvcjog
Z3JlZW47fQorQTpsaW5rIHtjb2xvcjogYmx1ZTt9CitBOnZpc2l0ZWQge2NvbG9yOiByZWQ7fQor
QTphY3RpdmUge2NvbG9yOiBibGFjazt9Cisjb25lIHtjb2xvcjogIzAwNjYwMDt9Cis8L1NUWUxF
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgdmFyIHJlc3VsdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICB2YXIgbXlMaW5rID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIm15bGluayIpOworICAgIHZhciBjb2xvciA9IGRvY3VtZW50LmRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUobXlMaW5rLCBudWxsKS5jb2xvcjsKKyAgICByZXN1bHQu
aW5uZXJUZXh0ID0gY29sb3IgPT0gInJnYigyNTUsIDAsIDApIiA/ICJMaW5rIGlzIHJlZCAocmdi
KDI1NSwgMCwgMCkpOiBQQVNTIiA6ICJMaW5rIGlzIG5vdCByZWQuIEZBSUw6ICIrY29sb3I7Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L0hFQUQ+Cis8Ym9keSBpZD0i
bXlCb2R5IiBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPGRpdj48YSBpZD0ibXlsaW5rIiBocmVm
PSIuLi9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLmh0bWwiPlRoaXMgbGluayBzaG91bGQgYXBw
ZWFyIGluIHJlZC48L2E+LjwvZGl2PgorICAgIDwvYnI+CisgICAgPGRpdiBpZD0icmVzdWx0Ij4K
KyAgICAgICAgVGVzdCBub3QgcnVuIGNvcnJlY3RseS4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0
L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1kaXNhYmxl
ZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVlODZi
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2hpc3Rv
cnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBA
QAorVGhpcyBsaW5rIHNob3VsZCBhcHBlYXIgaW4gYmx1ZS4uCisKK0xpbmsgaXMgYmx1ZSAocmdi
KDAsIDAsIDI1NSkpOiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
ZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaGlzdG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFi
bGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGEz
NzdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaGlz
dG9yeS9jc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMg
QEAKK1RoaXMgbGluayBzaG91bGQgYXBwZWFyIGluIHJlZC4uCisKK0xpbmsgaXMgcmVkIChyZ2Io
MjU1LCAwLCAwKSk6IFBBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9T
a2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggMDU3MmNkYi4u
YmY3ZTA4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTExOCwzICsxMTgsNyBAQCBz
dG9yYWdlL2RhdGFiYXNlLWxvY2stYWZ0ZXItcmVsb2FkLmh0bWwKIAogIyBBY2NlcHQgaGVhZGVy
IGlzIGhhbmRsZWQgYnkgdGhlIGJyb3dzZXIKIGh0dHAvdGVzdHMvbWlzYy9pbWFnZS1jaGVja3Mt
Zm9yLWFjY2VwdC5odG1sCisKKyMgTm90IGltcGxlbWVudGVkCitmYXN0L2hpc3RvcnkvY3NzLXZp
c2l0ZWQtc3R5bGUtZGlzYWJsZWQuaHRtbAorZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxl
LWVuYWJsZWQuaHRtbApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkOTBjNjMyLi4wY2MwYmNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEwLTAyLTIx
ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBvcHRpb24gQ1NTVmlzaXRlZFN0
eWxlRW5hYmxlZC4KKyAgICAgICAgV2hlbiBzZXQgdG8gZmFsc2UsIHRoaXMgb3B0aW9uIHdpbGwg
YWx3YXlzIHJldHVybiBmYWxzZSBmb3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAgICAg
ICAgc3R5bGVzaGVldHMuIFRoaXMgcHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5IGlu
c3BlY3RpbmcgeW91ciBicm93c2luZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhl
ICd2aXNpdGVkJyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCisK
KyAgICAgICAgQnkgZGVmYXVsdCB0aGUgb3B0aW9uIGlzIHNldCB0byAndHJ1ZScuCisKKyAgICAg
ICAgVGhlIG9wdGlvbiBoYXMgYmVlbiBhZGRlZCB0byB0aGUgcXQsIGd0ayBhbmQgd2luIHBvcnRz
IGFsb25nIHdpdGggdGhlCisgICAgICAgIGFzc29jaWF0ZWQgdW5pdCB0ZXN0IGZvciBlYWNoLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMwMAor
CisgICAgICAgIFRlc3RzOiBmYXN0L2hpc3RvcnkvY3NzLXZpc2l0ZWQtc3R5bGUtZGlzYWJsZWQu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9oaXN0b3J5L2Nzcy12aXNpdGVkLXN0eWxlLWVuYWJs
ZWQuaHRtbAorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNr
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2Vy
OjpjaGVja1BzZXVkb1N0YXRlKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgor
ICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRDU1NWaXNpdGVkU3R5
bGVFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6Y3NzVmlzaXRlZFN0eWxlRW5hYmxlZCk6CisKIDIwMTAtMDItMjAgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFj
aWVqIFN0YWNob3dpYWsuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDEyNGViOWYuLjY4
YzI1YzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBi
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC04NzYsNyArODc2LDExIEBAIENT
U1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2VyKERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCBzdHJpCiAgICAgLCBtX2NvbGxlY3RSdWxlc09ubHkoZmFsc2UpCiAg
ICAgLCBtX3BzZXVkb1N0eWxlKE5PUFNFVURPKQogICAgICwgbV9kb2N1bWVudElzSFRNTChkb2N1
bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkKKyAgICAsIG1fY3NzVmlzaXRlZFN0eWxlRW5hYmxlZCh0
cnVlKQogeworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZG9jdW1lbnQtPnNldHRpbmdzKCk7
CisgICAgaWYgKHNldHRpbmdzICYmICFzZXR0aW5ncy0+Y3NzVmlzaXRlZFN0eWxlRW5hYmxlZCgp
KQorICAgICAgICBtX2Nzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQgPSBmYWxzZTsKIH0KIAogUHNldWRv
U3RhdGUgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1BzZXVkb1N0YXRl
KEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgY2hlY2tWaXNpdGVkKSBjb25zdApAQCAtODg4LDYgKzg5
Miw5IEBAIFBzZXVkb1N0YXRlIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50CiAgICAgaWYgKCFjaGVja1Zpc2l0ZWQpCiAg
ICAgICAgIHJldHVybiBQc2V1ZG9BbnlMaW5rOwogCisgICAgaWYgKCFtX2Nzc1Zpc2l0ZWRTdHls
ZUVuYWJsZWQpCisgICAgICAgIHJldHVybiBQc2V1ZG9MaW5rOworCiAjaWYgUExBVEZPUk0oUVQp
CiAgICAgVmVjdG9yPFVDaGFyLCA1MTI+IHVybDsKICAgICB2aXNpdGVkVVJMKG1fZG9jdW1lbnQt
PmJhc2VVUkwoKSwgKmF0dHIsIHVybCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmggYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKaW5kZXggNjQ0MDUx
Yy4uMGQxN2M1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCisr
KyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtMjEwLDYgKzIxMCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIFBzZXVkb0lkIG1fcHNldWRvU3R5bGU7CiAgICAgICAgICAgICBi
b29sIG1fZG9jdW1lbnRJc0hUTUw7CiAgICAgICAgICAgICBtdXRhYmxlIEhhc2hTZXQ8TGlua0hh
c2gsIExpbmtIYXNoSGFzaD4gbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGU7CisgICAgICAg
ICAgICBib29sIG1fY3NzVmlzaXRlZFN0eWxlRW5hYmxlZDsKICAgICAgICAgfTsKIAogICAgIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcAppbmRleCBjODJiMjM0Li5lOTlkZGM3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAg
LTEyNSw2ICsxMjUsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1f
d2ViR0xFbmFibGVkKGZhbHNlKQogICAgICwgbV9nZW9sb2NhdGlvbkVuYWJsZWQodHJ1ZSkKICAg
ICAsIG1fbG9hZERlZmVycmluZ0VuYWJsZWQodHJ1ZSkKKyAgICAsIG1fY3NzVmlzaXRlZFN0eWxl
RW5hYmxlZCh0cnVlKQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRl
ZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmluZyAKICAgICAvLyBoYXNoIGJl
Zm9yZSB0cnlpbmcgdG8gdXNlIGl0LgpAQCAtMjgxLDYgKzI4MiwxMSBAQCB2b2lkIFNldHRpbmdz
OjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkK
ICAgICBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBwcml2YXRlQnJvd3NpbmdFbmFibGVkOwog
fQogCit2b2lkIFNldHRpbmdzOjpzZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKGJvb2wgY3NzVmlz
aXRlZFN0eWxlRW5hYmxlZCkKK3sKKyAgICBtX2Nzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQgPSBjc3NW
aXNpdGVkU3R5bGVFbmFibGVkOworfQorCiB2b2lkIFNldHRpbmdzOjpzZXRKYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KGJvb2wgamF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0
b21hdGljYWxseSkKIHsKICAgICBtX2phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2Fs
bHkgPSBqYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5OwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCA2
NjQ4YTA4Li41NTFlNTdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysg
Yi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMjkwLDYgKzI5MCw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRMb2FkRGVmZXJyaW5nRW5hYmxlZChib29sKTsKICAg
ICAgICAgYm9vbCBsb2FkRGVmZXJyaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZERl
ZmVycmluZ0VuYWJsZWQ7IH0KIAorICAgICAgICB2b2lkIHNldENTU1Zpc2l0ZWRTdHlsZUVuYWJs
ZWQoYm9vbCk7CisgICAgICAgIGJvb2wgY3NzVmlzaXRlZFN0eWxlRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY3NzVmlzaXRlZFN0eWxlRW5hYmxlZDsgfQorCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgUGFnZSogbV9wYWdlOwogICAgICAgICAKQEAgLTM2NCw2ICszNjcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV93ZWJHTEVuYWJsZWQgOiAxOwogICAgICAgICBib29s
IG1fZ2VvbG9jYXRpb25FbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2xvYWREZWZlcnJpbmdF
bmFibGVkIDogMTsKKyAgICAgICAgYm9vbCBtX2Nzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQgOiAxOwog
CiAjaWYgVVNFKFNBRkFSSV9USEVNRSkKICAgICAgICAgc3RhdGljIGJvb2wgZ1Nob3VsZFBhaW50
TmF0aXZlQ29udHJvbHM7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCmluZGV4IDQzZDJkMjAuLjZmOWUzMTMgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTAtMDItMTggIFJvYmVydCBIb2dhbiAgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG9wdGlv
biBDU1NWaXNpdGVkU3R5bGVFbmFibGVkLgorICAgICAgICBXaGVuIHNldCB0byBmYWxzZSwgdGhp
cyBvcHRpb24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRl
IGluIENTUworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9t
IGluZGlyZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3RvcnkgYnkg
cmVxdWVzdGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEgSFRN
TCBkb2N1bWVudC4KKworICAgICAgICBCeSBkZWZhdWx0IHRoZSBvcHRpb24gaXMgc2V0IHRvICd0
cnVlJy4KKworICAgICAgICBUaGUgb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBxdCwgZ3Rr
IGFuZCB3aW4gcG9ydHMgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAgYXNzb2NpYXRlZCB1bml0IHRl
c3QgZm9yIGVhY2guCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI0MzAwCisKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnkp
OgorCiAyMDEwLTAyLTE4ICBEaWVnbyBFc2NhbGFudGUgVXJyZWxvICA8ZGVzY2FsYW50ZUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAppbmRleCA0ZmY0YThlLi5jOWZhOWQw
IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKKysr
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCkBAIC0xMDYsNiArMTA2
LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgewogICAgIGdib29sZWFuIGVu
YWJsZV9wYWdlX2NhY2hlOwogICAgIGdib29sZWFuIGF1dG9fcmVzaXplX3dpbmRvdzsKICAgICBn
Ym9vbGVhbiBlbmFibGVfamF2YV9hcHBsZXQ7CisgICAgZ2Jvb2xlYW4gY3NzX3Zpc2l0ZWRfc3R5
bGVfZW5hYmxlZDsKIH07CiAKICNkZWZpbmUgV0VCS0lUX1dFQl9TRVRUSU5HU19HRVRfUFJJVkFU
RShvYmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dF
Ql9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKSkKQEAgLTE1Myw3ICsxNTQsOCBA
QCBlbnVtIHsKICAgICBQUk9QX0VOQUJMRV9TSVRFX1NQRUNJRklDX1FVSVJLUywKICAgICBQUk9Q
X0VOQUJMRV9QQUdFX0NBQ0hFLAogICAgIFBST1BfQVVUT19SRVNJWkVfV0lORE9XLAotICAgIFBS
T1BfRU5BQkxFX0pBVkFfQVBQTEVUCisgICAgUFJPUF9FTkFCTEVfSkFWQV9BUFBMRVQsCisgICAg
UFJPUF9DU1NfVklTSVRFRF9TVFlMRV9FTkFCTEVECiB9OwogCiAvLyBDcmVhdGUgYSBkZWZhdWx0
IHVzZXIgYWdlbnQgc3RyaW5nCkBAIC04MjAsNiArODIyLDI0IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRXZWJTZXR0aW5nc0NsYXNzKiBrbGFzcykK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsYWdzKSk7CiAKICAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihX
ZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0
dGluZ3M6Y3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZDoKKyAgICAqCisgICAgKiBXaGV0aGVyIHRv
IHJlc3BlY3QgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1Mgc3R5bGVzaGVldHMuIFNldHRpbmcg
dG8KKyAgICAqICdmYWxzZScgcHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5IGluc3Bl
Y3RpbmcgeW91ciBicm93c2luZworICAgICogaGlzdG9yeSBieSByZXF1ZXN0aW5nIHRoZSAndmlz
aXRlZCcgc3RhdGUgZm9yIGEgc2V0IG9mIFVSTHMgaW4gYSBIVE1MIGRvY3VtZW50LgorICAgICoK
KyAgICAqIFNpbmNlOiAxLjEuMTcKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBST1BfQ1NTX1ZJU0lURURfU1RZTEVfRU5BQkxFRCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImNzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIENTUyBWaXNpdGVkIFN0eWxlIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGVzIHRoZSBDU1Mg
VmlzaXRlZCBTdHlsZSBmb3IgV2ViIExpbmtzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfaW5pdChXZWJLaXRX
ZWJTZXR0aW5ncyogd2ViX3NldHRpbmdzKQpAQCAtMTAzNiw2ICsxMDU2LDkgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wX2lkLCBjb24KICAgICBjYXNlIFBST1BfRU5BQkxFX0pBVkFfQVBQTEVUOgogICAgICAg
ICBwcml2LT5lbmFibGVfamF2YV9hcHBsZXQgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0NTU19WSVNJVEVEX1NUWUxFX0VOQUJMRUQ6
CisgICAgICAgIHByaXYtPmNzc192aXNpdGVkX3N0eWxlX2VuYWJsZWQgPSBnX3ZhbHVlX2dldF9i
b29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwog
ICAgICAgICBicmVhazsKQEAgLTExNzEsNiArMTE5NCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwg
R1ZhCiAgICAgY2FzZSBQUk9QX0VOQUJMRV9KQVZBX0FQUExFVDoKICAgICAgICAgZ192YWx1ZV9z
ZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZW5hYmxlX2phdmFfYXBwbGV0KTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX0NTU19WSVNJVEVEX1NUWUxFX0VOQUJMRUQ6CisgICAgICAgIGdf
dmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmNzc192aXNpdGVkX3N0eWxlX2VuYWJsZWQp
OworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lO
VkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFr
OwpAQCAtMTI0Myw2ICsxMjY5LDcgQEAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYmtpdF93ZWJfc2V0
dGluZ3NfY29weShXZWJLaXRXZWJTZXR0aW5ncyogd2ViX3NldHRpbmdzKQogICAgICAgICAgICAg
ICAgICAiZW5hYmxlLXBhZ2UtY2FjaGUiLCBwcml2LT5lbmFibGVfcGFnZV9jYWNoZSwKICAgICAg
ICAgICAgICAgICAgImF1dG8tcmVzaXplLXdpbmRvdyIsIHByaXYtPmF1dG9fcmVzaXplX3dpbmRv
dywKICAgICAgICAgICAgICAgICAgImVuYWJsZS1qYXZhLWFwcGxldCIsIHByaXYtPmVuYWJsZV9q
YXZhX2FwcGxldCwKKyAgICAgICAgICAgICAgICAgImNzcy12aXNpdGVkLXN0eWxlLWVuYWJsZWQi
LCBwcml2LT5jc3NfdmlzaXRlZF9zdHlsZV9lbmFibGVkLAogICAgICAgICAgICAgICAgICBOVUxM
KSk7CiAKICAgICByZXR1cm4gY29weTsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5k
ZXggZDZhOGI4My4uMGI1OTA1MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAg
LTI1NTIsNyArMjU1Miw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0
dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgZW5hYmxlWFNTQXVkaXRvciwg
amF2YXNjcmlwdENhbk9wZW5XaW5kb3dzLCBlbmFibGVPZmZsaW5lV2ViQXBwQ2FjaGUsCiAgICAg
ICAgIGVuYWJsZVVuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJJLCBlbmFibGVGaWxlQWNjZXNzRnJv
bUZpbGVVUkksCiAgICAgICAgIGVuYWJsZURPTVBhc3RlLCB0YWJLZXlDeWNsZXNUaHJvdWdoRWxl
bWVudHMsCi0gICAgICAgIGVuYWJsZVNpdGVTcGVjaWZpY1F1aXJrcywgdXNlUGFnZUNhY2hlLCBl
bmFibGVKYXZhQXBwbGV0OworICAgICAgICBlbmFibGVTaXRlU3BlY2lmaWNRdWlya3MsIHVzZVBh
Z2VDYWNoZSwgZW5hYmxlSmF2YUFwcGxldCwgQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZDsKIAogICAg
IFdlYktpdEVkaXRpbmdCZWhhdmlvciBlZGl0aW5nQmVoYXZpb3I7CiAKQEAgLTI1ODcsNiArMjU4
Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKICAgICAgICAgICAgICAgICAgImVuYWJsZS1zaXRlLXNwZWNpZmlj
LXF1aXJrcyIsICZlbmFibGVTaXRlU3BlY2lmaWNRdWlya3MsCiAgICAgICAgICAgICAgICAgICJl
bmFibGUtcGFnZS1jYWNoZSIsICZ1c2VQYWdlQ2FjaGUsCiAgICAgICAgICAgICAgICAgICJlbmFi
bGUtamF2YS1hcHBsZXQiLCAmZW5hYmxlSmF2YUFwcGxldCwKKyAgICAgICAgICAgICAgICAgImNz
cy12aXNpdGVkLXN0eWxlLWVuYWJsZWQiLCAmQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZCwKICAgICAg
ICAgICAgICAgICAgTlVMTCk7CiAKICAgICBzZXR0aW5ncy0+c2V0RGVmYXVsdFRleHRFbmNvZGlu
Z05hbWUoZGVmYXVsdEVuY29kaW5nKTsKQEAgLTI2MTgsNiArMjYxOSw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
ICAgICBzZXR0aW5ncy0+c2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoZW5hYmxlU2l0ZVNwZWNp
ZmljUXVpcmtzKTsKICAgICBzZXR0aW5ncy0+c2V0VXNlc1BhZ2VDYWNoZSh1c2VQYWdlQ2FjaGUp
OwogICAgIHNldHRpbmdzLT5zZXRKYXZhRW5hYmxlZChlbmFibGVKYXZhQXBwbGV0KTsKKyAgICBz
ZXR0aW5ncy0+c2V0Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZChDU1NWaXNpdGVkU3R5bGVFbmFibGVk
KTsKIAogICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHdlYlZpZXcpOwogICAgIGlmIChwYWdlKQpAQCAt
MjcyMiw2ICsyNzI0LDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25v
dGlmeShXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MsIEdQYXIKICAgICAgICAgc2V0dGlu
Z3MtPnNldFVzZXNQYWdlQ2FjaGUoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKICAgICBl
bHNlIGlmIChuYW1lID09IGdfaW50ZXJuX3N0cmluZygiZW5hYmxlLWphdmEtYXBwbGV0IikpCiAg
ICAgICAgIHNldHRpbmdzLT5zZXRKYXZhRW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1
ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJjc3MtdmlzaXRlZC1z
dHlsZS1lbmFibGVkIikpCisgICAgICAgIHNldHRpbmdzLT5zZXRDU1NWaXNpdGVkU3R5bGVFbmFi
bGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVlKSk7CiAgICAgZWxzZSBpZiAoIWdfb2JqZWN0
X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19PQkpFQ1RfR0VUX0NMQVNTKHdlYlNldHRpbmdzKSwgbmFt
ZSkpCiAgICAgICAgIGdfd2FybmluZygiVW5leHBlY3RlZCBzZXR0aW5nICclcyciLCBuYW1lKTsK
ICAgICBnX3ZhbHVlX3Vuc2V0KCZ2YWx1ZSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3
ZWJzZXR0aW5ncy5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKaW5kZXggZDYw
ZjA5Yy4uNzdlMWRlZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3Bw
CisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApAQCAtMTc0LDYgKzE3NCwxMCBA
QCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkpOwogICAgICAgICBzZXR0aW5ncy0+c2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCh2YWx1ZSk7CiAKKyAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVl
KFFXZWJTZXR0aW5nczo6Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5n
czo6Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZCkpOworICAgICAgICBzZXR0aW5ncy0+c2V0Q1NTVmlz
aXRlZFN0eWxlRW5hYmxlZCh2YWx1ZSk7CisgICAgICAgIAogICAgICAgICB2YWx1ZSA9IGF0dHJp
YnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMu
dmFsdWUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKSk7CiAgICAg
ICAgIHNldHRpbmdzLT5zZXRET01QYXN0ZUFsbG93ZWQodmFsdWUpOwpAQCAtMzY5LDYgKzM3Myw5
IEBAIFFXZWJTZXR0aW5ncyogUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpCiAgICAgXHZh
bHVlIExvY2FsQ29udGVudENhbkFjY2Vzc1JlbW90ZVVybHMgU3BlY2lmaWVzIHdoZXRoZXIgbG9j
YWxseSBsb2FkZWQgZG9jdW1lbnRzIGFyZSBhbGxvd2VkIHRvIGFjY2VzcyByZW1vdGUgdXJscy4K
ICAgICBcdmFsdWUgTG9jYWxDb250ZW50Q2FuQWNjZXNzRmlsZVVybHMgU3BlY2lmaWVzIHdoZXRo
ZXIgbG9jYWxseSBsb2FkZWQgZG9jdW1lbnRzIGFyZSBhbGxvd2VkIHRvIGFjY2VzcyBvdGhlciBs
b2NhbCAgdXJscy4KICAgICBcdmFsdWUgWFNTQXVkaXRvckVuYWJsZWQgU3BlY2lmaWVzIHdoZXRo
ZXIgbG9hZCByZXF1ZXN0cyBzaG91bGQgYmUgbW9uaXRvcmVkIGZvciBjcm9zcy1zaXRlIHNjcmlw
dGluZyBhdHRlbXB0cy4KKyAgICBcdmFsdWUgQ1NTVmlzaXRlZFN0eWxlRW5hYmxlZCBBbHdheXMg
cmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBzdHls
ZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVjdGlu
ZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zpc2l0
ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KICovCiAKIC8q
IQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaCBiL1dlYktpdC9xdC9B
cGkvcXdlYnNldHRpbmdzLmgKaW5kZXggYjFmNWNmMi4uMjZiMDZlMCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5n
cy5oCkBAIC03MCw3ICs3MCw4IEBAIHB1YmxpYzoKICAgICAgICAgTG9jYWxDb250ZW50Q2FuQWNj
ZXNzRmlsZVVybHMsCiAgICAgICAgIERuc1ByZWZldGNoRW5hYmxlZCwKICAgICAgICAgWFNTQXVk
aXRvckVuYWJsZWQsCi0gICAgICAgIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkCisgICAg
ICAgIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkLAorICAgICAgICBDU1NWaXNpdGVkU3R5
bGVFbmFibGVkCiAgICAgfTsKICAgICBlbnVtIFdlYkdyYXBoaWMgewogICAgICAgICBNaXNzaW5n
SW1hZ2VHcmFwaGljLApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggZmI4MzJiMy4uNjRhYzY1MyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0
L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIw
MTAtMDItMjAgIFJvYmVydCBIb2dhbiAgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG9wdGlvbiBDU1NW
aXNpdGVkU3R5bGVFbmFibGVkLgorICAgICAgICBXaGVuIHNldCB0byBmYWxzZSwgdGhpcyBvcHRp
b24gd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENT
UworICAgICAgICBzdHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGly
ZWN0bHkgaW5zcGVjdGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVz
dGluZyB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1
bWVudC4KKworICAgICAgICBCeSBkZWZhdWx0IHRoZSBvcHRpb24gaXMgc2V0IHRvICd0cnVlJy4K
KworICAgICAgICBUaGUgb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBxdCwgZ3RrIGFuZCB3
aW4gcG9ydHMgYWxvbmcgd2l0aCB0aGUKKyAgICAgICAgYXNzb2NpYXRlZCB1bml0IHRlc3QgZm9y
IGVhY2guCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI0MzAwCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJT
ZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisK
IDIwMTAtMDItMTggIE5vYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA4
ZGQxOWFkLi42NDRmYTZmIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEwLTAyLTE4ICBSb2JlcnQg
SG9nYW4gIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBvcHRpb24gQ1NTVmlzaXRlZFN0eWxlRW5hYmxl
ZC4KKyAgICAgICAgV2hlbiBzZXQgdG8gZmFsc2UsIHRoaXMgb3B0aW9uIHdpbGwgYWx3YXlzIHJl
dHVybiBmYWxzZSBmb3IgdGhlICd2aXNpdGVkJyBzdGF0ZSBpbiBDU1MKKyAgICAgICAgc3R5bGVz
aGVldHMuIFRoaXMgcHJldmVudHMgd2Vic2l0ZXMgZnJvbSBpbmRpcmVjdGx5IGluc3BlY3Rpbmcg
eW91ciBicm93c2luZworICAgICAgICBoaXN0b3J5IGJ5IHJlcXVlc3RpbmcgdGhlICd2aXNpdGVk
JyBzdGF0ZSBmb3IgYSBzZXQgb2YgVVJMcyBpbiBhIEhUTUwgZG9jdW1lbnQuCisKKyAgICAgICAg
QnkgZGVmYXVsdCB0aGUgb3B0aW9uIGlzIHNldCB0byAndHJ1ZScuCisKKyAgICAgICAgVGhlIG9w
dGlvbiBoYXMgYmVlbiBhZGRlZCB0byB0aGUgcXQsIGd0ayBhbmQgd2luIHBvcnRzIGFsb25nIHdp
dGggdGhlCisgICAgICAgIGFzc29jaWF0ZWQgdW5pdCB0ZXN0IGZvciBlYWNoLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMwMAorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYklu
c3BlY3RvckNsaWVudDo6Y3JlYXRlUGFnZSk6CisgICAgICAgICogV2ViUHJlZmVyZW5jZUtleXNQ
cml2YXRlLmg6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViUHJl
ZmVyZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3MpOgorICAgICAgICAoV2ViUHJlZmVy
ZW5jZXM6OnNldENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWQpOgorICAgICAgICAoV2ViUHJlZmVyZW5j
ZXM6OmNzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQpOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmg6
CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJl
bmNlc0NoYW5nZWQpOgorCiAyMDEwLTAyLTE3ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdp
dCBhL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXMuaWRsIGIvV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwKaW5kZXggOWE1MmQ3Yy4uNWViNjExOSAx
MDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwKKysr
IGIvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwKQEAgLTE4Niw0ICsx
ODYsOCBAQCBpbnRlcmZhY2UgSVdlYlByZWZlcmVuY2VzIDogSVVua25vd24KIAogICAgIEhSRVNV
TFQgc2V0Wm9vbXNUZXh0T25seShCT09MIHpvb21zVGV4dE9ubHkpOwogICAgIEhSRVNVTFQgem9v
bXNUZXh0T25seShCT09MICp6b29tc1RleHRPbmx5KTsKKworICAgIEhSRVNVTFQgc2V0Q1NTVmlz
aXRlZFN0eWxlRW5hYmxlZChbaW5dIEJPT0wgZW5hYmxlZCk7CisgICAgSFJFU1VMVCBjc3NWaXNp
dGVkU3R5bGVFbmFibGVkKFtvdXQsIHJldHZhbF0gQk9PTCogZW5hYmxlZCk7CisKIH0KZGlmZiAt
LWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBi
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCAw
ZGQ2ZTU4Li5lZDdkNzAwIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xNjgsNiArMTY4LDggQEAgUGFnZSogV2ViSW5zcGVjdG9y
Q2xpZW50OjpjcmVhdGVQYWdlKCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChw
cmVmZXJlbmNlcy0+c2V0RGVmYXVsdEZpeGVkRm9udFNpemUoMTMpKSkKICAgICAgICAgcmV0dXJu
IDA7CisgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0Q1NTVmlzaXRlZFN0eWxlRW5hYmxl
ZChUUlVFKSkpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKEZBSUxFRChtX3dlYlZpZXct
PnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKSkpCiAgICAgICAgIHJldHVybiAwOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1dlYktp
dC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5kZXggZDFlMGY1ZS4uZTIzMWEzZSAx
MDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9X
ZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC02Niw2ICs2Niw3IEBACiAj
ZGVmaW5lIFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5ICJXZWJLaXRVc2VzUGFnZUNh
Y2hlUHJlZmVyZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVuY2VLZXkg
IldlYktpdENhY2hlTW9kZWxQcmVmZXJlbmNlS2V5IgogI2RlZmluZSBXZWJLaXRMb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5ICJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGgiCisjZGVmaW5lIFdlYktpdENTU1Zpc2l0ZWRTdHlsZUVuYWJsZWRLZXkgIldlYktpdENTU1Zp
c2l0ZWRTdHlsZUVuYWJsZWQiCiAKIC8vIFRoZXNlIGFyZSBwcml2YXRlIGJvdGggYmVjYXVzZSBj
YWxsZXJzIHNob3VsZCBiZSB1c2luZyB0aGUgY292ZXIgbWV0aG9kcyBhbmQgYmVjYXVzZSB0aGUK
IC8vIGNvdmVyIG1ldGhvZHMgdGhlbXNlbHZlcyBhcmUgcHJpdmF0ZS4KZGlmZiAtLWdpdCBhL1dl
YktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5j
cHAKaW5kZXggMGU0NGQ5Zi4uY2FhZTAzMiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJQcmVm
ZXJlbmNlcy5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTI1OCw2
ICsyNTgsOCBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdz
KCkKIAogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7
CiAKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q1NTVmlz
aXRlZFN0eWxlRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisKICAgICBk
ZWZhdWx0U2V0dGluZ3MgPSBkZWZhdWx0czsKIH0KIApAQCAtMTM3Niw2ICsxMzc4LDIwIEBAIEhS
RVNVTFQgV2ViUHJlZmVyZW5jZXM6OnBsdWdpbkFsbG93ZWRSdW5UaW1lKFVJTlQqIGFsbG93ZWRS
dW5UaW1lKQogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlByZWZlcmVuY2VzOjpzZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKAorICAgIC8qIFtpbl0g
Ki8gQk9PTCBlbmFibGVkKQoreworICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRDU1NWaXNp
dGVkU3R5bGVFbmFibGVkUHJlZmVyZW5jZUtleSksIGVuYWJsZWQpOworICAgIHJldHVybiBTX09L
OworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpjc3NWaXNp
dGVkU3R5bGVFbmFibGVkKAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkK
K3sKKyAgICAqZW5hYmxlZCA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRDU1NWaXNpdGVk
U3R5bGVFbmFibGVkUHJlZmVyZW5jZUtleSkpOworICAgIHJldHVybiBTX09LOworfQorCiBIUkVT
VUxUIFdlYlByZWZlcmVuY2VzOjpzZXRQcmVmZXJlbmNlRm9yVGVzdChCU1RSIGtleSwgQlNUUiB2
YWx1ZSkKIHsKICAgICBpZiAoIVN5c1N0cmluZ0xlbihrZXkpIHx8ICFTeXNTdHJpbmdMZW4odmFs
dWUpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oIGIvV2ViS2l0L3dp
bi9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IGU0YWYxN2EuLmE0MGM3NDYgMTAwNjQ0Ci0tLSBhL1dl
YktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAorKysgYi9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2Vz
LmgKQEAgLTM5Miw2ICszOTIsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRGcmFtZVNldEZsYXR0ZW5pbmdFbmFibGVkKAogICAgIC8qIFtpbl0g
Ki8gQk9PTCBlbmFibGVkKTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRDU1NWaXNpdGVkU3R5bGVFbmFibGVkKAorICAgICAgICAvKiBbaW5dICovIEJPT0wgZW5h
YmxlZCk7CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3NzVmlzaXRl
ZFN0eWxlRW5hYmxlZCgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVk
KTsKKwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQcmVmZXJlbmNl
Rm9yVGVzdCgKICAgICAvKiBbaW5dICovIEJTVFIga2V5LAogICAgIC8qIFtpbl0gKi8gQlNUUiB2
YWx1ZSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAppbmRleCA4NjM2ZDE1Li5hNmE1NzRjIDEwMDY0NAotLS0gYS9XZWJLaXQvd2lu
L1dlYlZpZXcuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTQ2NjUsNiArNDY2
NSwxMSBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgc2V0dGluZ3MtPnNldFdlYkdMRW5hYmxlZCh0
cnVlKTsKICNlbmRpZiAgLy8gRU5BQkxFKDNEX0NBTlZBUykKIAorICAgIGhyID0gcHJlZmVyZW5j
ZXMtPmNzc1Zpc2l0ZWRTdHlsZUVuYWJsZWQoJmVuYWJsZWQpOworICAgIGlmIChGQUlMRUQoaHIp
KQorICAgICAgICByZXR1cm4gaHI7CisgICAgc2V0dGluZ3MtPnNldENTU1Zpc2l0ZWRTdHlsZUVu
YWJsZWQoISFlbmFibGVkKTsKKwogICAgIGlmICghbV9jbG9zZVdpbmRvd1RpbWVyLmlzQWN0aXZl
KCkpCiAgICAgICAgIG1fbWFpbkZyYW1lLT5pbnZhbGlkYXRlKCk7IC8vIEZJWE1FCiAKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRl
eCBlOTNmZmRhLi43OTE2ZmQ5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDItMjAgIFJv
YmVydCBIb2dhbiAgPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG9wdGlvbiBDU1NWaXNpdGVkU3R5bGVF
bmFibGVkLgorICAgICAgICBXaGVuIHNldCB0byBmYWxzZSwgdGhpcyBvcHRpb24gd2lsbCBhbHdh
eXMgcmV0dXJuIGZhbHNlIGZvciB0aGUgJ3Zpc2l0ZWQnIHN0YXRlIGluIENTUworICAgICAgICBz
dHlsZXNoZWV0cy4gVGhpcyBwcmV2ZW50cyB3ZWJzaXRlcyBmcm9tIGluZGlyZWN0bHkgaW5zcGVj
dGluZyB5b3VyIGJyb3dzaW5nCisgICAgICAgIGhpc3RvcnkgYnkgcmVxdWVzdGluZyB0aGUgJ3Zp
c2l0ZWQnIHN0YXRlIGZvciBhIHNldCBvZiBVUkxzIGluIGEgSFRNTCBkb2N1bWVudC4KKworICAg
ICAgICBCeSBkZWZhdWx0IHRoZSBvcHRpb24gaXMgc2V0IHRvICd0cnVlJy4KKworICAgICAgICBU
aGUgb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBxdCwgZ3RrIGFuZCB3aW4gcG9ydHMgYWxv
bmcgd2l0aCB0aGUKKyAgICAgICAgYXNzb2NpYXRlZCB1bml0IHRlc3QgZm9yIGVhY2guCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzAwCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAo
cmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKGNvcHlXZWJTZXR0
aW5nS2V5KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpvdmVycmlkZVByZWZlcmVu
Y2UpOgorCiAyMDEwLTAyLTIwICBDaHJpcyBKZXJkb25layAgPGNqZXJkb25la0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBhMmZjNzliLi5kNjFl
MGM2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRl
clRyZWUuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVy
VHJlZS5jcHAKQEAgLTMzNSw2ICszMzUsNyBAQCBzdGF0aWMgdm9pZCByZXNldERlZmF1bHRzVG9D
b25zaXN0ZW50VmFsdWVzKCkKICAgICAgICAgICAgICAgICAgImVuYWJsZS1wYWdlLWNhY2hlIiwg
RkFMU0UsCiAgICAgICAgICAgICAgICAgICJhdXRvLXJlc2l6ZS13aW5kb3ciLCBUUlVFLAogICAg
ICAgICAgICAgICAgICAiZW5hYmxlLWphdmEtYXBwbGV0IiwgRkFMU0UsCisgICAgICAgICAgICAg
ICAgICJjc3MtdmlzaXRlZC1zdHlsZS1lbmFibGVkIiwgVFJVRSwKICAgICAgICAgICAgICAgICAg
TlVMTCk7CiAKICAgICB3ZWJraXRfd2ViX2ZyYW1lX2NsZWFyX21haW5fZnJhbWVfbmFtZShtYWlu
RnJhbWUpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggNjY4Yjg1Mi4uNDBhZDRkZCAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENv
bnRyb2xsZXJHdGsuY3BwCkBAIC03MSw2ICs3MSw3IEBAIHN0YXRpYyBnY2hhciogY29weVdlYlNl
dHRpbmdLZXkoZ2NoYXIqIHByZWZlcmVuY2VLZXkpCiAgICAgICAgIGdfaGFzaF90YWJsZV9pbnNl
cnQoa2V5VGFibGUsIGdfc3RyZHVwKCJXZWJLaXREZWZhdWx0Rm9udFNpemUiKSwgZ19zdHJkdXAo
ImRlZmF1bHQtZm9udC1zaXplIikpOwogICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0KGtleVRh
YmxlLCBnX3N0cmR1cCgiV2ViS2l0RW5hYmxlQ2FyZXRCcm93c2luZyIpLCBnX3N0cmR1cCgiZW5h
YmxlLWNhcmV0LWJyb3dzaW5nIikpOwogICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0KGtleVRh
YmxlLCBnX3N0cmR1cCgiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiKSwgZ19zdHJk
dXAoImVuYWJsZS1wYWdlLWNhY2hlIikpOworICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0KGtl
eVRhYmxlLCBnX3N0cmR1cCgiV2ViS2l0Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZCIpLCBnX3N0cmR1
cCgiY3NzLXZpc2l0ZWQtc3R5bGUtZW5hYmxlZCIpKTsKICAgICB9CiAKICAgICByZXR1cm4gZ19z
dHJkdXAoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX2hhc2hfdGFibGVfbG9va3VwKGtleVRhYmxlLCBw
cmVmZXJlbmNlS2V5KSkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCBhMjZiYzNkLi44M2JjOGIzIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmNwcApAQCAtNDU3LDYgKzQ1Nyw4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShjb25zdCBRU3RyaW5nJiBuYW1lLCBjb25zdCBRVmFy
aWFuCiAgICAgICAgIHNldHRpbmdzLT5zZXRGb250U2l6ZShRV2ViU2V0dGluZ3M6OkRlZmF1bHRG
b250U2l6ZSwgdmFsdWUudG9JbnQoKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSAiV2ViS2l0VXNl
c1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiKQogICAgICAgICBRV2ViU2V0dGluZ3M6OnNldE1heGlt
dW1QYWdlc0luQ2FjaGUodmFsdWUudG9JbnQoKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSAiV2Vi
S2l0Q1NTVmlzaXRlZFN0eWxlRW5hYmxlZCIpCisgICAgICAgIHNldHRpbmdzLT5zZXRBdHRyaWJ1
dGUoUVdlYlNldHRpbmdzOjpDU1NWaXNpdGVkU3R5bGVFbmFibGVkLCB2YWx1ZS50b0Jvb2woKSk7
CiAgICAgZWxzZQogICAgICAgICBwcmludGYoIkVSUk9SOiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
b3ZlcnJpZGVQcmVmZXJlbmNlKCkgZG9lcyBub3Qgc3VwcG9ydCB0aGUgJyVzJyBwcmVmZXJlbmNl
XG4iLAogICAgICAgICAgICAgbmFtZS50b0xhdGluMSgpLmRhdGEoKSk7Ci0tIAoxLjYuMy4zCgo=
</data>
<flag name="review"
          id="31939"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52338</attachid>
            <date>2010-04-01 14:43:22 -0700</date>
            <delta_ts>2010-04-02 12:37:29 -0700</delta_ts>
            <desc>Work in progress.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>25488</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzYsNiArODc2
LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpTZWxlYwogICAgICwgbV9j
b2xsZWN0UnVsZXNPbmx5KGZhbHNlKQogICAgICwgbV9wc2V1ZG9TdHlsZShOT1BTRVVETykKICAg
ICAsIG1fZG9jdW1lbnRJc0hUTUwoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCisgICAgLCBt
X21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzKGZhbHNlKQogewogfQogCkBAIC0xMTM0LDcgKzExMzUs
NyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAvLyBJZiByZXNv
bHZlRm9yUm9vdERlZmF1bHQgaXMgdHJ1ZSwgc3R5bGUgYmFzZWQgb24gdXNlciBhZ2VudCBzdHls
ZSBzaGVldCBvbmx5LiBUaGlzIGlzIHVzZWQgaW4gbWVkaWEgcXVlcmllcywgd2hlcmUKIC8vIHJl
bGF0aXZlIHVuaXRzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gZG9jdW1lbnQgcm9vdCBl
bGVtZW50IHN0eWxlLCBzdHlsZWQgb25seSB3aXRoIFVBIHN0eWxlc2hlZXQKIAotUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQq
IGUsIFJlbmRlclN0eWxlKiBkZWZhdWx0UGFyZW50LCBib29sIGFsbG93U2hhcmluZywgYm9vbCBy
ZXNvbHZlRm9yUm9vdERlZmF1bHQpCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNl
bGVjdG9yOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIGRlZmF1bHRQ
YXJlbnQsIGJvb2wgYWxsb3dTaGFyaW5nLCBib29sIHJlc29sdmVGb3JSb290RGVmYXVsdCwgYm9v
bCBtYXRjaFZpc2l0ZWRSdWxlcykKIHsKICAgICAvLyBPbmNlIGFuIGVsZW1lbnQgaGFzIGEgcmVu
ZGVyZXIsIHdlIGRvbid0IHRyeSB0byBkZXN0cm95IGl0LCBzaW5jZSBvdGhlcndpc2UgdGhlIHJl
bmRlcmVyCiAgICAgLy8gd2lsbCB2YW5pc2ggaWYgYSBzdHlsZSByZWNhbGMgaGFwcGVucyBkdXJp
bmcgbG9hZGluZy4KQEAgLTExNTcsNiArMTE1OCw4IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IENTU1N0eWxlU2VsZWN0b3IKICAgICAgICAgICAgIHJldHVybiBzaGFyZWRTdHlsZTsKICAgICB9
CiAgICAgaW5pdEZvclN0eWxlUmVzb2x2ZShlLCBkZWZhdWx0UGFyZW50KTsKKyAgICAKKyAgICBt
X2NoZWNrZXIubV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IG1hdGNoVmlzaXRlZFJ1bGVzOwog
CiAgICAgbV9zdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKIApAQCAtMTc1OCwxMiArMTc2
MSwyOSBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yCiAgICAgcmV0
dXJuIG1fcnVsZUxpc3QucmVsZWFzZSgpOwogfQogCitzdGF0aWMgdm9pZCBzZXRMaW5rU3RhdGVG
cm9tUHNldWRvU3RhdGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBQc2V1ZG9TdGF0ZSBzdGF0ZSkKK3sK
KyAgICBBU1NFUlQoc3RhdGUgPT0gUHNldWRvQW55TGluayB8fCBzdGF0ZSA9PSBQc2V1ZG9MaW5r
IHx8IHN0YXRlID09IFBzZXVkb1Zpc2l0ZWQpOworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAg
ICAgY2FzZSBQc2V1ZG9BbnlMaW5rOgorICAgICAgICBjYXNlIFBzZXVkb0xpbms6CisgICAgICAg
ICAgICBzdHlsZS0+c2V0TGlua1N0YXRlKFVudmlzaXRlZExpbmtTdGF0ZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBQc2V1ZG9WaXNpdGVkOgorICAgICAgICAgICAgc3R5bGUt
PnNldExpbmtTdGF0ZShWaXNpdGVkTGlua1N0YXRlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxl
Y3RvcihDU1NTZWxlY3Rvciogc2VsKQogewogICAgIG1fZHluYW1pY1BzZXVkbyA9IE5PUFNFVURP
OwogCiAgICAgLy8gQ2hlY2sgdGhlIHNlbGVjdG9yCi0gICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9
IG1fY2hlY2tlci5jaGVja1NlbGVjdG9yKHNlbCwgbV9lbGVtZW50LCAmbV9zZWxlY3RvckF0dHJz
LCBtX2R5bmFtaWNQc2V1ZG8sIHRydWUsIGZhbHNlLCBzdHlsZSgpLCBtX3BhcmVudFN0eWxlKTsK
KyAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVja2VyLmNoZWNrU2VsZWN0b3Ioc2VsLCBt
X2VsZW1lbnQsICZtX3NlbGVjdG9yQXR0cnMsIG1fZHluYW1pY1BzZXVkbywgZmFsc2UsIGZhbHNl
LCBzdHlsZSgpLCBtX3BhcmVudFN0eWxlKTsKICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JNYXRj
aGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE3NzgsNyArMTc5OCw3IEBAIGJvb2wg
Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3RvcihDU1MKIC8vICogU2VsZWN0b3JNYXRjaGVz
ICAgICAgICAgLSB0aGUgc2VsZWN0b3IgbWF0Y2hlcyB0aGUgZWxlbWVudCBlCiAvLyAqIFNlbGVj
dG9yRmFpbHNMb2NhbGx5ICAgIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciB0aGUgZWxlbWVudCBl
CiAvLyAqIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5IC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBl
IGFuZCBhbnkgc2libGluZyBvciBhbmNlc3RvciBvZiBlCi1DU1NTdHlsZVNlbGVjdG9yOjpTZWxl
Y3Rvck1hdGNoIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rv
cihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwq
Piogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNBbmNlc3Rv
ciwgYm9vbCBpc1N1YlNlbGVjdG9yLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5kZXJT
dHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAorQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0
b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3Io
Q1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4q
IHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0
b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5k
ZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAogewogI2lmIEVOQUJMRShTVkcpCiAg
ICAgLy8gU3BlYzogQ1NTMiBzZWxlY3RvcnMgY2Fubm90IGJlIGFwcGxpZWQgdG8gdGhlIChjb25j
ZXB0dWFsbHkpIGNsb25lZCBET00gdHJlZQpAQCAtMTc4OCw3ICsxODA4LDcgQEAgQ1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogI2VuZGlmCiAKICAgICAvLyBmaXJzdCBz
ZWxlY3RvciBoYXMgdG8gbWF0Y2gKLSAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc2VsLCBlLCBz
ZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc0FuY2VzdG9yLCBpc1N1YlNlbGVjdG9yLCBl
bGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgaWYgKCFjaGVja09uZVNlbGVj
dG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgaXNTdWJTZWxlY3Rvciwg
ZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQogICAgICAgICByZXR1cm4gU2VsZWN0
b3JGYWlsc0xvY2FsbHk7CiAKICAgICAvLyBUaGUgcmVzdCBvZiB0aGUgc2VsZWN0b3JzIGhhcyB0
byBtYXRjaApAQCAtMTgwNCw2ICsxODI0LDE3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9y
TWF0Y2ggQ1NTU3R5bGUKICAgICAgICAgaWYgKG1fcHNldWRvU3R5bGUgIT0gTk9QU0VVRE8gJiYg
bV9wc2V1ZG9TdHlsZSAhPSBkeW5hbWljUHNldWRvKQogICAgICAgICAgICAgcmV0dXJuIFNlbGVj
dG9yRmFpbHNDb21wbGV0ZWx5OwogCisgICAgLy8gQ2hlY2sgZm9yIG5lc3RlZCBsaW5rcy4KKyAg
ICBpZiAobV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcykgeworICAgICAgICBSZW5kZXJTdHlsZSog
Y3VycmVudFN0eWxlID0gZWxlbWVudFN0eWxlID8gZWxlbWVudFN0eWxlIDogZS0+cmVuZGVyU3R5
bGUoKTsKKyAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS0+bGlua1N0YXRlKCkgIT0gTm9uZUxpbmtT
dGF0ZSAmJiBlLT5pc0xpbmsoKSkgeworICAgICAgICAgICAgaWYgKGVuY291bnRlcmVkTGluaykK
KyAgICAgICAgICAgICAgICBtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzID0gZmFsc2U7IC8vIFRo
aXMgbGluayBpcyBub3QgcmVsZXZhbnQgdG8gdGhlIHN0eWxlIGJlaW5nIHJlc29sdmVkLCBzbyBk
aXNhYmxlIG1hdGNoaW5nLgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVuY291
bnRlcmVkTGluayA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKICAgICBzd2l0Y2ggKHJlbGF0
aW9uKSB7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6CiAgICAgICAgICAg
ICB3aGlsZSAodHJ1ZSkgewpAQCAtMTgxMSw3ICsxODQyLDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6
U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNF
bGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0Nv
bXBsZXRlbHk7CiAgICAgICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsK
LSAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWws
IGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVj
dG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOwogICAgICAg
ICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckZhaWxzTG9jYWxseSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAgICAgICAgfQpAQCAtMTgyMiw3ICsxODUzLDcg
QEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAg
aWYgKCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNl
bGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihuKTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0
b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJu
IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxz
ZSwgZW5jb3VudGVyZWRMaW5rKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpEaXJlY3RBZGphY2VudDoKICAgICAgICAgewpAQCAtMTgzNyw3ICsxODY4LDggQEAgQ1NTU3R5
bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgaWYgKCFuKQog
ICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzTG9jYWxseTsKICAgICAgICAgICAg
IGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tT
ZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBmYWxz
ZSk7IAorICAgICAgICAgICAgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IGZhbHNlOworICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5h
bWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rKTsgCiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDoKICAgICAgICAgICAgIGlmICghbV9j
b2xsZWN0UnVsZXNPbmx5ICYmIGUtPnBhcmVudE5vZGUoKSAmJiBlLT5wYXJlbnROb2RlKCktPmlz
RWxlbWVudE5vZGUoKSkgewpAQCAtMTg1Miw3ICsxODg0LDggQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6
U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgICAgIGlmICghbikKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5OwogICAgICAgICAgICAgICAg
IGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICAgICAgU2VsZWN0b3JN
YXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWlj
UHNldWRvLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIG1fbWF0Y2hWaXNpdGVkUHNl
dWRvQ2xhc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0g
Y2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNl
LCBlbmNvdW50ZXJlZExpbmspOwogICAgICAgICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3Rv
ckZhaWxzTG9jYWxseSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAg
ICAgICAgfTsKQEAgLTE4NjQsNyArMTg5Nyw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9y
TWF0Y2ggQ1NTU3R5bGUKICAgICAgICAgICAgIGlmICgoZWxlbWVudFN0eWxlIHx8IG1fY29sbGVj
dFJ1bGVzT25seSkgJiYgZHluYW1pY1BzZXVkbyAhPSBOT1BTRVVETyAmJiBkeW5hbWljUHNldWRv
ICE9IFNFTEVDVElPTiAmJgogICAgICAgICAgICAgICAgICEoKFJlbmRlclNjcm9sbGJhcjo6c2Ny
b2xsYmFyRm9yU3R5bGVSZXNvbHZlKCkgfHwgZHluYW1pY1BzZXVkbyA9PSBTQ1JPTExCQVJfQ09S
TkVSIHx8IGR5bmFtaWNQc2V1ZG8gPT0gUkVTSVpFUikgJiYgc2VsLT5tX21hdGNoID09IENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFp
bHNDb21wbGV0ZWx5OwotICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBz
ZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc0FuY2VzdG9yLCB0cnVlLCBlbGVtZW50U3R5
bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3Rv
cihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291bnRlcmVk
TGluaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpOwogICAgIH0KIAogICAgIHJl
dHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKQEAgLTE5MzcsNyArMTk3MCw3IEBAIHN0YXRp
YyBib29sIGh0bWxBdHRyaWJ1dGVIYXNDYXNlSW5zZW5zaXQKICAgICByZXR1cm4gaXNQb3NzaWJs
ZUhUTUxBdHRyICYmIGh0bWxDYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVzU2V0LT5jb250YWlucyhh
dHRyLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQq
IGUsIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYg
ZHluYW1pY1BzZXVkbywgYm9vbCBpc0FuY2VzdG9yLCBib29sIGlzU3ViU2VsZWN0b3IsIFJlbmRl
clN0eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNv
bnN0Citib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxl
Y3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0cmluZ0lt
cGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJT
ZWxlY3RvciwgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQ
YXJlbnRTdHlsZSkgY29uc3QKIHsKICAgICBpZiAoIWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTIwMzgsNyArMjA3MSw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVj
a2VyOjoKICAgICAgICAgICAgICAgICAvLyB0aGUgcGFyc2VyIGVuZm9yY2VzIHRoYXQgdGhpcyBu
ZXZlciBvY2N1cnMKICAgICAgICAgICAgICAgICBBU1NFUlQoIXN1YlNlbC0+c2ltcGxlU2VsZWN0
b3IoKSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc3ViU2VsLCBl
LCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc0FuY2VzdG9yLCB0cnVlLCBlbGVtZW50
U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgICAgICAgICAgICAgaWYgKCFjaGVja09u
ZVNlbGVjdG9yKHN1YlNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwg
ZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChkeW5hbWljUHNl
dWRvICE9IE5PUFNFVURPICYmIChSZW5kZXJTY3JvbGxiYXI6OnNjcm9sbGJhckZvclN0eWxlUmVz
b2x2ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NPUk5FUiB8fCBkeW5hbWljUHNl
dWRvID09IFJFU0laRVIpKSB7CkBAIC0yMzQ2LDEwICsyMzc5LDE2IEBAIGJvb2wgQ1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9BbnlMaW5rOgotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1
ZG9Vbmtub3duKQotICAgICAgICAgICAgICAgICAgICBwc2V1ZG9TdGF0ZSA9IGNoZWNrUHNldWRv
U3RhdGUoZSwgZmFsc2UpOwotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1
ZG9BbnlMaW5rIHx8IHBzZXVkb1N0YXRlID09IFBzZXVkb0xpbmsgfHwgcHNldWRvU3RhdGUgPT0g
UHNldWRvVmlzaXRlZCkKKyAgICAgICAgICAgICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNldWRv
VW5rbm93bikgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2xvciYgbGlua0NvbG9yID0g
ZS0+ZG9jdW1lbnQoKS0+bGlua0NvbG9yKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IENv
bG9yJiB2aXNpdGVkQ29sb3IgPSBlLT5kb2N1bWVudCgpLT52aXNpdGVkTGlua0NvbG9yKCk7Cisg
ICAgICAgICAgICAgICAgICAgIHBzZXVkb1N0YXRlID0gY2hlY2tQc2V1ZG9TdGF0ZShlLCBsaW5r
Q29sb3IgIT0gdmlzaXRlZENvbG9yKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb0FueUxpbmsgfHwgcHNldWRvU3RhdGUgPT0gUHNl
dWRvTGluayB8fCBwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9WaXNpdGVkKSB7CisgICAgICAgICAgICAg
ICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gZWxlbWVudFN0eWxlID8gZWxlbWVudFN0
eWxlIDogZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0TGlua1N0YXRl
RnJvbVBzZXVkb1N0YXRlKGNoaWxkU3R5bGUsIHBzZXVkb1N0YXRlKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQXV0b2ZpbGw6IHsKICAg
ICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCkBAIC0y
MzYxLDE0ICsyNDAwLDIwIEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2Vy
OjoKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xpbms6CiAgICAgICAgICAg
ICAgICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb1Vua25vd24gfHwgcHNldWRvU3RhdGUgPT0g
UHNldWRvQW55TGluaykKICAgICAgICAgICAgICAgICAgICAgcHNldWRvU3RhdGUgPSBjaGVja1Bz
ZXVkb1N0YXRlKGUpOwotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9M
aW5rKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBp
ZiAocHNldWRvU3RhdGUgPT0gUHNldWRvTGluayB8fCBwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9WaXNp
dGVkKSB7CisgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gZWxl
bWVudFN0eWxlID8gZWxlbWVudFN0eWxlIDogZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2V0TGlua1N0YXRlRnJvbVBzZXVkb1N0YXRlKGNoaWxkU3R5bGUsIHBzZXVkb1N0
YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBzZXVkb1N0YXRlID09IFBzZXVkb0xp
bmsgfHwgIW1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3M7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
VmlzaXRlZDoKICAgICAgICAgICAgICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNldWRvVW5rbm93
biB8fCBwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9BbnlMaW5rKQogICAgICAgICAgICAgICAgICAgICBw
c2V1ZG9TdGF0ZSA9IGNoZWNrUHNldWRvU3RhdGUoZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHBz
ZXVkb1N0YXRlID09IFBzZXVkb1Zpc2l0ZWQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9WaXNpdGVkKSB7
CisgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gZWxlbWVudFN0
eWxlID8gZWxlbWVudFN0eWxlIDogZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2V0TGlua1N0YXRlRnJvbVBzZXVkb1N0YXRlKGNoaWxkU3R5bGUsIHBzZXVkb1N0YXRlKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3M7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvRHJhZzogewogICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
U3R5bGUpCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCShyZXZpc2lvbiA1Njg1OSkKKysrIFdl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcs
NyBAQCBwdWJsaWM6CiAKICAgICAgICAgdm9pZCBpbml0RWxlbWVudEFuZFBzZXVkb1N0YXRlKEVs
ZW1lbnQqKTsKICAgICAgICAgdm9pZCBpbml0Rm9yU3R5bGVSZXNvbHZlKEVsZW1lbnQqLCBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsKLSAgICAgICAg
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUgPSAwLCBib29sIGFsbG93U2hhcmluZyA9IHRydWUsIGJvb2wgcmVz
b2x2ZUZvclJvb3REZWZhdWx0ID0gZmFsc2UpOworICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBzdHlsZUZvckVsZW1lbnQoRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9
IDAsIGJvb2wgYWxsb3dTaGFyaW5nID0gdHJ1ZSwgYm9vbCByZXNvbHZlRm9yUm9vdERlZmF1bHQg
PSBmYWxzZSwgYm9vbCBtYXRjaFZpc2l0ZWRMaW5rcyA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBr
ZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihFbGVtZW50KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBL
ZXlmcmFtZUxpc3QmIGxpc3QpOwogCiAgICAgICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHBz
ZXVkb1N0eWxlRm9yRWxlbWVudChQc2V1ZG9JZCwgRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJl
bnRTdHlsZSA9IDApOwpAQCAtMTk2LDggKzE5Niw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFNl
bGVjdG9yQ2hlY2tlcihEb2N1bWVudCosIGJvb2wgc3RyaWN0UGFyc2luZyk7CiAKICAgICAgICAg
ICAgIGJvb2wgY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqKSBjb25zdDsKLSAg
ICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1l
bnQqLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQm
IGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNBbmNlc3RvciwgYm9vbCBpc1N1YlNlbGVjdG9yLCBSZW5k
ZXJTdHlsZSogPSAwLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlID0gMCkgY29uc3Q7
Ci0gICAgICAgICAgICBib29sIGNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50
KiwgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBk
eW5hbWljUHNldWRvLCBib29sIGlzQW5jZXN0b3IsIGJvb2wgaXNTdWJTZWxlY3RvciwgUmVuZGVy
U3R5bGUqLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdDsKKyAgICAgICAg
ICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBI
YXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFt
aWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJlbmRl
clN0eWxlKiA9IDAsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUgPSAwKSBjb25zdDsK
KyAgICAgICAgICAgIGJvb2wgY2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQq
LCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5
bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHls
ZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdDsKICAgICAgICAgICAgIFBzZXVkb1N0YXRlIGNo
ZWNrUHNldWRvU3RhdGUoRWxlbWVudCosIGJvb2wgY2hlY2tWaXNpdGVkID0gdHJ1ZSkgY29uc3Q7
CiAgICAgICAgICAgICBib29sIGNoZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3Iq
LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbykgY29uc3Q7CiAKQEAgLTIwOSw2ICsyMDksNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBib29sIG1fY29sbGVjdFJ1bGVzT25seTsKICAgICAgICAgICAg
IFBzZXVkb0lkIG1fcHNldWRvU3R5bGU7CiAgICAgICAgICAgICBib29sIG1fZG9jdW1lbnRJc0hU
TUw7CisgICAgICAgICAgICBtdXRhYmxlIGJvb2wgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzczsK
ICAgICAgICAgICAgIG11dGFibGUgSGFzaFNldDxMaW5rSGFzaCwgTGlua0hhc2hIYXNoPiBtX2xp
bmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZTsKICAgICAgICAgfTsKIApAQCAtMjc5LDcgKzI4MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgQ1NTVmFsdWUqIG1fbGluZUhlaWdodFZhbHVlOwogICAgICAg
ICBib29sIG1fZm9udERpcnR5OwogICAgICAgICBib29sIG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5
bGVzOwotCisgICAgICAgIAogICAgICAgICBSZWZQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRT
ZWxlY3RvcjsKICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4gbV9zZWxlY3RvckF0
dHJzOwogICAgICAgICBWZWN0b3I8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qPiBtX2FkZGl0
aW9uYWxBdHRyaWJ1dGVTdHlsZURlY2xzOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSwxNyArNDExLDE3IEBAIHZvaWQgSW5saW5lVGV4
dEJveDo6cGFpbnQoUmVuZGVyT2JqZWN0OjoKICAgICAgICAgdGV4dEZpbGxDb2xvciA9IENvbG9y
OjpibGFjazsKICAgICAgICAgdGV4dFN0cm9rZUNvbG9yID0gQ29sb3I6OmJsYWNrOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHRleHRGaWxsQ29sb3IgPSBzdHlsZVRvVXNlLT50ZXh0RmlsbENvbG9y
KCk7CisgICAgICAgIHRleHRGaWxsQ29sb3IgPSByZW5kZXJlcigpLT52aXNpdGVkRGVwZW5kZW50
Q29sb3IobV9maXJzdExpbmUsIHN0eWxlVG9Vc2UsIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxD
b2xvcik7CiAgICAgICAgIGlmICghdGV4dEZpbGxDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAg
ICB0ZXh0RmlsbENvbG9yID0gc3R5bGVUb1VzZS0+Y29sb3IoKTsKKyAgICAgICAgICAgIHRleHRG
aWxsQ29sb3IgPSByZW5kZXJlcigpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IobV9maXJzdExpbmUs
IHN0eWxlVG9Vc2UsIENTU1Byb3BlcnR5Q29sb3IpOwogCiAgICAgICAgIC8vIE1ha2UgdGhlIHRl
eHQgZmlsbCBjb2xvciBsZWdpYmxlIGFnYWluc3QgYSB3aGl0ZSBiYWNrZ3JvdW5kCiAgICAgICAg
IGlmIChzdHlsZVRvVXNlLT5mb3JjZUJhY2tncm91bmRzVG9XaGl0ZSgpKQogICAgICAgICAgICAg
dGV4dEZpbGxDb2xvciA9IGNvcnJlY3RlZFRleHRDb2xvcih0ZXh0RmlsbENvbG9yLCBDb2xvcjo6
d2hpdGUpOwogCi0gICAgICAgIHRleHRTdHJva2VDb2xvciA9IHN0eWxlVG9Vc2UtPnRleHRTdHJv
a2VDb2xvcigpOworICAgICAgICB0ZXh0U3Ryb2tlQ29sb3IgPSByZW5kZXJlcigpLT52aXNpdGVk
RGVwZW5kZW50Q29sb3IobV9maXJzdExpbmUsIHN0eWxlVG9Vc2UsIENTU1Byb3BlcnR5V2Via2l0
VGV4dFN0cm9rZUNvbG9yKTsKICAgICAgICAgaWYgKCF0ZXh0U3Ryb2tlQ29sb3IuaXNWYWxpZCgp
KQotICAgICAgICAgICAgdGV4dFN0cm9rZUNvbG9yID0gc3R5bGVUb1VzZS0+Y29sb3IoKTsKKyAg
ICAgICAgICAgIHRleHRTdHJva2VDb2xvciA9IHJlbmRlcmVyKCktPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihtX2ZpcnN0TGluZSwgc3R5bGVUb1VzZSwgQ1NTUHJvcGVydHlDb2xvcik7CiAKICAgICAg
ICAgLy8gTWFrZSB0aGUgdGV4dCBzdHJva2UgY29sb3IgbGVnaWJsZSBhZ2FpbnN0IGEgd2hpdGUg
YmFja2dyb3VuZAogICAgICAgICBpZiAoc3R5bGVUb1VzZS0+Zm9yY2VCYWNrZ3JvdW5kc1RvV2hp
dGUoKSkKQEAgLTUxNyw3ICs1MTcsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFJlbmRl
ck9iamVjdDo6CiAKICAgICAvLyBQYWludCBkZWNvcmF0aW9ucwogICAgIGlmIChkICE9IFRETk9O
RSAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVNlbGVjdGlvbiAmJiBzdHlsZVRvVXNl
LT5odG1sSGFja3MoKSkgewotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihzdHlsZVRv
VXNlLT5jb2xvcigpLCBzdHlsZVRvVXNlLT5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0
LT5zZXRTdHJva2VDb2xvcihyZW5kZXJlcigpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IobV9maXJz
dExpbmUsIHN0eWxlVG9Vc2UsIENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZVRvVXNlLT5jb2xvclNw
YWNlKCkpOwogICAgICAgICBwYWludERlY29yYXRpb24oY29udGV4dCwgdHgsIHR5LCBkLCB0ZXh0
U2hhZG93KTsKICAgICB9CiAKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50U2VsZWN0aW9uKEdyYXBoCiAgICAgaWYgKHNQb3MgPj0gZVBvcykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQ29sb3IgdGV4dENvbG9yID0gc3R5bGUtPmNvbG9yKCk7CisgICAgQ29sb3Ig
dGV4dENvbG9yID0gcmVuZGVyZXIoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKG1fZmlyc3RMaW5l
LCBzdHlsZSwgQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgQ29sb3IgYyA9IHJlbmRlcmVyKCktPnNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwogICAgIGlmICghYy5pc1ZhbGlkKCkgfHwgYy5hbHBo
YSgpID09IDApCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTk4LDI2ICsyMTk4LDI5IEBAIFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IFJlbmRlck9iamVjdDo6Z2UKICAgICBpZiAocHNldWRvID09IEZJUlNUX0xJTkVf
SU5IRVJJVEVEKSB7CiAgICAgICAgIHJlc3VsdCA9IGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3Io
KS0+c3R5bGVGb3JFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKSwgcGFyZW50U3R5bGUs
IGZhbHNlKTsKICAgICAgICAgcmVzdWx0LT5zZXRTdHlsZVR5cGUoRklSU1RfTElORV9JTkhFUklU
RUQpOworICAgIH0gZWxzZSBpZiAocHNldWRvID09IFZJU0lURURfTElOSykgeworICAgICAgICBy
ZXN1bHQgPSBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPnN0eWxlRm9yRWxlbWVudChzdGF0
aWNfY2FzdDxFbGVtZW50Kj4obiksIHBhcmVudFN0eWxlLCBmYWxzZSwgZmFsc2UsIHRydWUpOwor
ICAgICAgICByZXN1bHQtPnNldFN0eWxlVHlwZShWSVNJVEVEX0xJTkspOwogICAgIH0gZWxzZQog
ICAgICAgICByZXN1bHQgPSBkb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPnBzZXVkb1N0eWxl
Rm9yRWxlbWVudChwc2V1ZG8sIHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKSwgcGFyZW50U3R5bGUp
OwogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgQ29sb3IgZGVjb3Jh
dGlvbkNvbG9yKFJlbmRlclN0eWxlKiBzdHlsZSkKK3N0YXRpYyBDb2xvciBkZWNvcmF0aW9uQ29s
b3IoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAgICBDb2xvciByZXN1bHQ7Ci0gICAgaWYg
KHN0eWxlLT50ZXh0U3Ryb2tlV2lkdGgoKSA+IDApIHsKKyAgICBpZiAocmVuZGVyZXItPnN0eWxl
KCktPnRleHRTdHJva2VXaWR0aCgpID4gMCkgewogICAgICAgICAvLyBQcmVmZXIgc3Ryb2tlIGNv
bG9yIGlmIHBvc3NpYmxlIGJ1dCBub3QgaWYgaXQncyBmdWxseSB0cmFuc3BhcmVudC4KLSAgICAg
ICAgcmVzdWx0ID0gc3R5bGUtPnRleHRTdHJva2VDb2xvcigpOworICAgICAgICByZXN1bHQgPSBy
ZW5kZXJlci0+dmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNlLCByZW5kZXJlci0+c3R5bGUoKSwg
Q1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IpOwogICAgICAgICBpZiAoIXJlc3VsdC5p
c1ZhbGlkKCkpCi0gICAgICAgICAgICByZXN1bHQgPSBzdHlsZS0+Y29sb3IoKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IHJlbmRlcmVyLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZmFsc2UsIHJlbmRl
cmVyLT5zdHlsZSgpLCBDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICAgICAgaWYgKHJlc3VsdC5hbHBo
YSgpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgcmVzdWx0
ID0gc3R5bGUtPnRleHRGaWxsQ29sb3IoKTsKKyAgICByZXN1bHQgPSByZW5kZXJlci0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKGZhbHNlLCByZW5kZXJlci0+c3R5bGUoKSwgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RmlsbENvbG9yKTsKICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCi0gICAgICAgIHJl
c3VsdCA9IHN0eWxlLT5jb2xvcigpOworICAgICAgICByZXN1bHQgPSByZW5kZXJlci0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKGZhbHNlLCByZW5kZXJlci0+c3R5bGUoKSwgQ1NTUHJvcGVydHlDb2xv
cik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjIzMCwxNSArMjIzMywxNSBAQCB2b2lk
IFJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRpb25Db2xvCiAgICAgICAgIGlmIChjdXJyRGVj
cykgewogICAgICAgICAgICAgaWYgKGN1cnJEZWNzICYgVU5ERVJMSU5FKSB7CiAgICAgICAgICAg
ICAgICAgZGVjb3JhdGlvbnMgJj0gflVOREVSTElORTsKLSAgICAgICAgICAgICAgICB1bmRlcmxp
bmUgPSBkZWNvcmF0aW9uQ29sb3IoY3Vyci0+c3R5bGUoKSk7CisgICAgICAgICAgICAgICAgdW5k
ZXJsaW5lID0gZGVjb3JhdGlvbkNvbG9yKGN1cnIpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKGN1cnJEZWNzICYgT1ZFUkxJTkUpIHsKICAgICAgICAgICAgICAgICBkZWNvcmF0aW9u
cyAmPSB+T1ZFUkxJTkU7Ci0gICAgICAgICAgICAgICAgb3ZlcmxpbmUgPSBkZWNvcmF0aW9uQ29s
b3IoY3Vyci0+c3R5bGUoKSk7CisgICAgICAgICAgICAgICAgb3ZlcmxpbmUgPSBkZWNvcmF0aW9u
Q29sb3IoY3Vycik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY3VyckRlY3MgJiBM
SU5FX1RIUk9VR0gpIHsKICAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucyAmPSB+TElORV9USFJP
VUdIOwotICAgICAgICAgICAgICAgIGxpbmV0aHJvdWdoID0gZGVjb3JhdGlvbkNvbG9yKGN1cnIt
PnN0eWxlKCkpOworICAgICAgICAgICAgICAgIGxpbmV0aHJvdWdoID0gZGVjb3JhdGlvbkNvbG9y
KGN1cnIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGN1cnIgPSBjdXJyLT5w
YXJlbnQoKTsKQEAgLTIyNTAsMTQgKzIyNTMsMzQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRl
eHREZWNvcmF0aW9uQ29sbwogICAgIC8vIElmIHdlIGJhaWxlZCBvdXQsIHVzZSB0aGUgZWxlbWVu
dCB3ZSBiYWlsZWQgb3V0IGF0ICh0eXBpY2FsbHkgYSA8Zm9udD4gb3IgPGE+IGVsZW1lbnQpLgog
ICAgIGlmIChkZWNvcmF0aW9ucyAmJiBjdXJyKSB7CiAgICAgICAgIGlmIChkZWNvcmF0aW9ucyAm
IFVOREVSTElORSkKLSAgICAgICAgICAgIHVuZGVybGluZSA9IGRlY29yYXRpb25Db2xvcihjdXJy
LT5zdHlsZSgpKTsKKyAgICAgICAgICAgIHVuZGVybGluZSA9IGRlY29yYXRpb25Db2xvcihjdXJy
KTsKICAgICAgICAgaWYgKGRlY29yYXRpb25zICYgT1ZFUkxJTkUpCi0gICAgICAgICAgICBvdmVy
bGluZSA9IGRlY29yYXRpb25Db2xvcihjdXJyLT5zdHlsZSgpKTsKKyAgICAgICAgICAgIG92ZXJs
aW5lID0gZGVjb3JhdGlvbkNvbG9yKGN1cnIpOwogICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBM
SU5FX1RIUk9VR0gpCi0gICAgICAgICAgICBsaW5ldGhyb3VnaCA9IGRlY29yYXRpb25Db2xvcihj
dXJyLT5zdHlsZSgpKTsKKyAgICAgICAgICAgIGxpbmV0aHJvdWdoID0gZGVjb3JhdGlvbkNvbG9y
KGN1cnIpOwogICAgIH0KIH0KIAorQ29sb3IgUmVuZGVyT2JqZWN0Ojp2aXNpdGVkRGVwZW5kZW50
Q29sb3IoYm9vbCAvKmZpcnN0TGluZSovLCBSZW5kZXJTdHlsZSogdW52aXNpdGVkU3R5bGUsIGlu
dCBjb2xvclByb3BlcnR5KQoreworICAgIC8vIEZJWE1FOiBGZXRjaCBib3RoIHZpc2l0ZWQgYW5k
IHVudmlzaXRlZCBzdHlsZXMuICBNZXJnZSBjb2xvcnMgYnkgZ2V0dGluZyB0aGUgUkdCIGZyb20g
dGhlIHZpc2l0ZWQgc3R5bGUKKyAgICAvLyBhbmQgdGhlIEEgZnJvbSB0aGUgdW52aXNpdGVkLiAg
SWYgYSBjb2xvciBpcyBub3QgdmFsaWQsIG5lZWQgdG8gZmFsbCBiYWNrIHRvIGNvbG9yIGluIHNv
bWUgY2FzZXMgKHRleHQgZmlsbCwgc3Ryb2tlLCBib3JkZXIpLAorICAgIC8vIHNvIGltcG9ydGFu
dCB0byByZW1lbWJlciB0aGF0IHdoZW4gYXR0ZW1wdGluZyBhIG1lcmdlKS4KKyAgICBzd2l0Y2gg
KGNvbG9yUHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3I6CisgICAgICAgIHJl
dHVybiB1bnZpc2l0ZWRTdHlsZS0+Y29sb3IoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dEZpbGxDb2xvcjoKKyAgICAgICAgcmV0dXJuIHVudmlzaXRlZFN0eWxlLT50ZXh0RmlsbENv
bG9yKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcjoKKyAgICAg
ICAgcmV0dXJuIHVudmlzaXRlZFN0eWxlLT50ZXh0U3Ryb2tlQ29sb3IoKTsKKyAgICBkZWZhdWx0
OgorICAgICAgICAvLyBGSVhNRTogQWRkIGJvcmRlcnMsIG91dGxpbmVzLCBTVkcgZmlsbCBhbmQg
c3Ryb2tlLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIHJldHVybiBDb2xvcigpOworfQorCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQ
T1JUKQogdm9pZCBSZW5kZXJPYmplY3Q6OmFkZERhc2hib2FyZFJlZ2lvbnMoVmVjdG9yPERhc2hi
b2FyZFJlZ2lvblZhbHVlPiYgcmVnaW9ucykKIHsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OTksNiArNTk5LDcgQEAgcHVibGljOgogICAgIAogICAgIHZv
aWQgZ2V0VGV4dERlY29yYXRpb25Db2xvcnMoaW50IGRlY29yYXRpb25zLCBDb2xvciYgdW5kZXJs
aW5lLCBDb2xvciYgb3ZlcmxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
b2xvciYgbGluZXRocm91Z2gsIGJvb2wgcXVpcmtzTW9kZSA9IGZhbHNlKTsKKyAgICBDb2xvciB2
aXNpdGVkRGVwZW5kZW50Q29sb3IoYm9vbCBmaXJzdExpbmUsIFJlbmRlclN0eWxlKiB1bnZpc2l0
ZWRTdHlsZSwgaW50IGNvbG9yUHJvcGVydHkpOwogCiAgICAgLy8gUmV0dXJuIHRoZSBSZW5kZXJC
b3ggaW4gdGhlIGNvbnRhaW5lciBjaGFpbiB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgcGFpbnRp
bmcgdGhpcyBvYmplY3QsIG9yIDAKICAgICAvLyBpZiBwYWludGluZyBpcyByb290LXJlbGF0aXZl
LiBUaGlzIGlzIHRoZSBjb250YWluZXIgdGhhdCBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSAnZm9y
UmVwYWludCcKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNp
b24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDggQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgICAg
ICAgIChfdmlzdWFsbHlPcmRlcmVkID09IG90aGVyLl92aXN1YWxseU9yZGVyZWQpICYmCiAgICAg
ICAgICAgICAgICAgICAgKF9odG1sSGFja3MgPT0gb3RoZXIuX2h0bWxIYWNrcykgJiYKICAgICAg
ICAgICAgICAgICAgICAoX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlID09IG90aGVyLl9mb3Jj
ZV9iYWNrZ3JvdW5kc190b193aGl0ZSkgJiYKLSAgICAgICAgICAgICAgICAgICAoX3BvaW50ZXJF
dmVudHMgPT0gb3RoZXIuX3BvaW50ZXJFdmVudHMpOworICAgICAgICAgICAgICAgICAgIChfcG9p
bnRlckV2ZW50cyA9PSBvdGhlci5fcG9pbnRlckV2ZW50cykgJiYKKyAgICAgICAgICAgICAgICAg
ICAoX2xpbmtTdGF0ZSA9PSBvdGhlci5fbGlua1N0YXRlKTsKICAgICAgICAgfQogCiAgICAgICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CkBAIC0yMDEsNiArMjAyLDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICBib29sIF9odG1sSGFja3MgOiAxOwogICAgICAgICBib29sIF9mb3JjZV9iYWNrZ3Jv
dW5kc190b193aGl0ZSA6IDE7CiAgICAgICAgIHVuc2lnbmVkIF9wb2ludGVyRXZlbnRzIDogNDsg
Ly8gRVBvaW50ZXJFdmVudHMKKyAgICAgICAgRUxpbmtTdGF0ZSBfbGlua1N0YXRlIDogMjsgLy8g
TGluayBzdGF0ZSAobm9uZSwgdW52aXNpdGVkLCB2aXNpdGVkKQogICAgICAgICAvLyA0MSBiaXRz
CiAgICAgfSBpbmhlcml0ZWRfZmxhZ3M7CiAKQEAgLTI3NSw2ICsyNzcsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbiA9IGluaXRpYWxCb3hEaXJl
Y3Rpb24oKTsKICAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193
aGl0ZSA9IGZhbHNlOwogICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX3BvaW50ZXJFdmVudHMgPSBp
bml0aWFsUG9pbnRlckV2ZW50cygpOworICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX2xpbmtTdGF0
ZSA9IGluaXRpYWxMaW5rU3RhdGUoKTsKIAogICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX2Vm
ZmVjdGl2ZURpc3BsYXkgPSBub25pbmhlcml0ZWRfZmxhZ3MuX29yaWdpbmFsRGlzcGxheSA9IGlu
aXRpYWxEaXNwbGF5KCk7CiAgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fb3ZlcmZsb3dYID0g
aW5pdGlhbE92ZXJmbG93WCgpOwpAQCAtNTg3LDYgKzU5MCw4IEBAIHB1YmxpYzoKIAogICAgIEN1
cnNvckxpc3QqIGN1cnNvcnMoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmN1cnNvckRhdGEu
Z2V0KCk7IH0KIAorICAgIEVMaW5rU3RhdGUgbGlua1N0YXRlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUxpbmtTdGF0ZT4oaW5oZXJpdGVkX2ZsYWdzLl9saW5rU3RhdGUpOyB9CisKICAg
ICBzaG9ydCB3aWRvd3MoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPndpZG93czsgfQogICAg
IHNob3J0IG9ycGhhbnMoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPm9ycGhhbnM7IH0KICAg
ICBFUGFnZUJyZWFrIHBhZ2VCcmVha0luc2lkZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVQYWdlQnJlYWs+KG5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19pbnNpZGUpOyB9CkBA
IC05MTIsNiArOTE3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q3Vyc29yTGlzdChQYXNzUmVm
UHRyPEN1cnNvckxpc3Q+KTsKICAgICB2b2lkIGNsZWFyQ3Vyc29yTGlzdCgpOwogCisgICAgdm9p
ZCBzZXRMaW5rU3RhdGUoRUxpbmtTdGF0ZSBsKSB7IGluaGVyaXRlZF9mbGFncy5fbGlua1N0YXRl
ID0gbDsgfQorICAgIAogICAgIGJvb2wgZm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoKSBjb25zdCB7
IHJldHVybiBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlOyB9CiAg
ICAgdm9pZCBzZXRGb3JjZUJhY2tncm91bmRzVG9XaGl0ZShib29sIGI9dHJ1ZSkgeyBpbmhlcml0
ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlID0gYjsgfQogCkBAIC0xMTg0LDYg
KzExOTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsVHJhbnNmb3JtT3Jp
Z2luWCgpIHsgcmV0dXJuIExlbmd0aCg1MC4wLCBQZXJjZW50KTsgfQogICAgIHN0YXRpYyBMZW5n
dGggaW5pdGlhbFRyYW5zZm9ybU9yaWdpblkoKSB7IHJldHVybiBMZW5ndGgoNTAuMCwgUGVyY2Vu
dCk7IH0KICAgICBzdGF0aWMgRVBvaW50ZXJFdmVudHMgaW5pdGlhbFBvaW50ZXJFdmVudHMoKSB7
IHJldHVybiBQRV9BVVRPOyB9CisgICAgc3RhdGljIEVMaW5rU3RhdGUgaW5pdGlhbExpbmtTdGF0
ZSgpIHsgcmV0dXJuIE5vbmVMaW5rU3RhdGU7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbFRy
YW5zZm9ybU9yaWdpblooKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIEVUcmFuc2Zvcm1TdHls
ZTNEIGluaXRpYWxUcmFuc2Zvcm1TdHlsZTNEKCkgeyByZXR1cm4gVHJhbnNmb3JtU3R5bGUzREZs
YXQ7IH0KICAgICBzdGF0aWMgRUJhY2tmYWNlVmlzaWJpbGl0eSBpbml0aWFsQmFja2ZhY2VWaXNp
YmlsaXR5KCkgeyByZXR1cm4gQmFja2ZhY2VWaXNpYmlsaXR5VmlzaWJsZTsgfQpJbmRleDogV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCShyZXZpc2lv
biA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgZW51bSBQc2V1ZG9JZCB7CiAgICAg
TUVESUFfQ09OVFJPTFNfU0VFS19CQUNLX0JVVFRPTiwgTUVESUFfQ09OVFJPTFNfU0VFS19GT1JX
QVJEX0JVVFRPTiwgTUVESUFfQ09OVFJPTFNfRlVMTFNDUkVFTl9CVVRUT04sIE1FRElBX0NPTlRS
T0xTX1JFV0lORF9CVVRUT04sIAogICAgIE1FRElBX0NPTlRST0xTX1JFVFVSTl9UT19SRUFMVElN
RV9CVVRUT04sIE1FRElBX0NPTlRST0xTX1RPR0dMRV9DTE9TRURfQ0FQVElPTlNfQlVUVE9OLAog
ICAgIE1FRElBX0NPTlRST0xTX1NUQVRVU19ESVNQTEFZLCBTQ1JPTExCQVJfVEhVTUIsIFNDUk9M
TEJBUl9CVVRUT04sIFNDUk9MTEJBUl9UUkFDSywgU0NST0xMQkFSX1RSQUNLX1BJRUNFLCBTQ1JP
TExCQVJfQ09STkVSLCBSRVNJWkVSLAotICAgIElOUFVUX0xJU1RfQlVUVE9OLCBJTk5FUl9TUElO
X0JVVFRPTiwgT1VURVJfU1BJTl9CVVRUT04sCisgICAgSU5QVVRfTElTVF9CVVRUT04sIElOTkVS
X1NQSU5fQlVUVE9OLCBPVVRFUl9TUElOX0JVVFRPTiwgVklTSVRFRF9MSU5LLAogCiAgICAgQUZU
RVJfTEFTVF9JTlRFUk5BTF9QU0VVRE9JRCwKICAgICBGSVJTVF9QVUJMSUNfUFNFVURPSUQgPSBG
SVJTVF9MSU5FLApAQCAtMzk0LDYgKzM5NCwxMCBAQCBlbnVtIEVQb2ludGVyRXZlbnRzIHsKICAg
ICBQRV9WSVNJQkxFX1NUUk9LRSwgUEVfVklTSUJMRV9GSUxMLCBQRV9WSVNJQkxFX1BBSU5URUQs
IFBFX0FMTAogfTsKIAorZW51bSBFTGlua1N0YXRlIHsKKyAgICBOb25lTGlua1N0YXRlLCBVbnZp
c2l0ZWRMaW5rU3RhdGUsIFZpc2l0ZWRMaW5rU3RhdGUKK307CisKIGVudW0gRVRyYW5zZm9ybVN0
eWxlM0QgewogICAgIFRyYW5zZm9ybVN0eWxlM0RGbGF0LCBUcmFuc2Zvcm1TdHlsZTNEUHJlc2Vy
dmUzRAogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52436</attachid>
            <date>2010-04-02 12:37:29 -0700</date>
            <delta_ts>2010-04-02 14:52:45 -0700</delta_ts>
            <desc>This patch gets all the drawing code changed properly (except for SVG fill and stroke).</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>64121</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzYsNiArODc2
LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpTZWxlYwogICAgICwgbV9j
b2xsZWN0UnVsZXNPbmx5KGZhbHNlKQogICAgICwgbV9wc2V1ZG9TdHlsZShOT1BTRVVETykKICAg
ICAsIG1fZG9jdW1lbnRJc0hUTUwoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCisgICAgLCBt
X21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzKGZhbHNlKQogewogfQogCkBAIC0xMTM0LDcgKzExMzUs
NyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAvLyBJZiByZXNv
bHZlRm9yUm9vdERlZmF1bHQgaXMgdHJ1ZSwgc3R5bGUgYmFzZWQgb24gdXNlciBhZ2VudCBzdHls
ZSBzaGVldCBvbmx5LiBUaGlzIGlzIHVzZWQgaW4gbWVkaWEgcXVlcmllcywgd2hlcmUKIC8vIHJl
bGF0aXZlIHVuaXRzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gZG9jdW1lbnQgcm9vdCBl
bGVtZW50IHN0eWxlLCBzdHlsZWQgb25seSB3aXRoIFVBIHN0eWxlc2hlZXQKIAotUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQq
IGUsIFJlbmRlclN0eWxlKiBkZWZhdWx0UGFyZW50LCBib29sIGFsbG93U2hhcmluZywgYm9vbCBy
ZXNvbHZlRm9yUm9vdERlZmF1bHQpCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNl
bGVjdG9yOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIGRlZmF1bHRQ
YXJlbnQsIGJvb2wgYWxsb3dTaGFyaW5nLCBib29sIHJlc29sdmVGb3JSb290RGVmYXVsdCwgYm9v
bCBtYXRjaFZpc2l0ZWRSdWxlcykKIHsKICAgICAvLyBPbmNlIGFuIGVsZW1lbnQgaGFzIGEgcmVu
ZGVyZXIsIHdlIGRvbid0IHRyeSB0byBkZXN0cm95IGl0LCBzaW5jZSBvdGhlcndpc2UgdGhlIHJl
bmRlcmVyCiAgICAgLy8gd2lsbCB2YW5pc2ggaWYgYSBzdHlsZSByZWNhbGMgaGFwcGVucyBkdXJp
bmcgbG9hZGluZy4KQEAgLTExNTcsNiArMTE1OCw4IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IENTU1N0eWxlU2VsZWN0b3IKICAgICAgICAgICAgIHJldHVybiBzaGFyZWRTdHlsZTsKICAgICB9
CiAgICAgaW5pdEZvclN0eWxlUmVzb2x2ZShlLCBkZWZhdWx0UGFyZW50KTsKKyAgICAKKyAgICBt
X2NoZWNrZXIubV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IG1hdGNoVmlzaXRlZFJ1bGVzOwog
CiAgICAgbV9zdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKIApAQCAtMTc1OCwxMiArMTc2
MSwyOSBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yCiAgICAgcmV0
dXJuIG1fcnVsZUxpc3QucmVsZWFzZSgpOwogfQogCitzdGF0aWMgdm9pZCBzZXRMaW5rU3RhdGVG
cm9tUHNldWRvU3RhdGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBQc2V1ZG9TdGF0ZSBzdGF0ZSkKK3sK
KyAgICBBU1NFUlQoc3RhdGUgPT0gUHNldWRvQW55TGluayB8fCBzdGF0ZSA9PSBQc2V1ZG9MaW5r
IHx8IHN0YXRlID09IFBzZXVkb1Zpc2l0ZWQpOworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAg
ICAgY2FzZSBQc2V1ZG9BbnlMaW5rOgorICAgICAgICBjYXNlIFBzZXVkb0xpbms6CisgICAgICAg
ICAgICBzdHlsZS0+c2V0TGlua1N0YXRlKFVudmlzaXRlZExpbmtTdGF0ZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBQc2V1ZG9WaXNpdGVkOgorICAgICAgICAgICAgc3R5bGUt
PnNldExpbmtTdGF0ZShWaXNpdGVkTGlua1N0YXRlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxl
Y3RvcihDU1NTZWxlY3Rvciogc2VsKQogewogICAgIG1fZHluYW1pY1BzZXVkbyA9IE5PUFNFVURP
OwogCiAgICAgLy8gQ2hlY2sgdGhlIHNlbGVjdG9yCi0gICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9
IG1fY2hlY2tlci5jaGVja1NlbGVjdG9yKHNlbCwgbV9lbGVtZW50LCAmbV9zZWxlY3RvckF0dHJz
LCBtX2R5bmFtaWNQc2V1ZG8sIHRydWUsIGZhbHNlLCBzdHlsZSgpLCBtX3BhcmVudFN0eWxlKTsK
KyAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVja2VyLmNoZWNrU2VsZWN0b3Ioc2VsLCBt
X2VsZW1lbnQsICZtX3NlbGVjdG9yQXR0cnMsIG1fZHluYW1pY1BzZXVkbywgZmFsc2UsIGZhbHNl
LCBzdHlsZSgpLCBtX3BhcmVudFN0eWxlKTsKICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JNYXRj
aGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE3NzgsNyArMTc5OCw3IEBAIGJvb2wg
Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3RvcihDU1MKIC8vICogU2VsZWN0b3JNYXRjaGVz
ICAgICAgICAgLSB0aGUgc2VsZWN0b3IgbWF0Y2hlcyB0aGUgZWxlbWVudCBlCiAvLyAqIFNlbGVj
dG9yRmFpbHNMb2NhbGx5ICAgIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciB0aGUgZWxlbWVudCBl
CiAvLyAqIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5IC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBl
IGFuZCBhbnkgc2libGluZyBvciBhbmNlc3RvciBvZiBlCi1DU1NTdHlsZVNlbGVjdG9yOjpTZWxl
Y3Rvck1hdGNoIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rv
cihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwq
Piogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNBbmNlc3Rv
ciwgYm9vbCBpc1N1YlNlbGVjdG9yLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5kZXJT
dHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAorQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0
b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3Io
Q1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4q
IHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0
b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5k
ZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAogewogI2lmIEVOQUJMRShTVkcpCiAg
ICAgLy8gU3BlYzogQ1NTMiBzZWxlY3RvcnMgY2Fubm90IGJlIGFwcGxpZWQgdG8gdGhlIChjb25j
ZXB0dWFsbHkpIGNsb25lZCBET00gdHJlZQpAQCAtMTc4OCw3ICsxODA4LDcgQEAgQ1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogI2VuZGlmCiAKICAgICAvLyBmaXJzdCBz
ZWxlY3RvciBoYXMgdG8gbWF0Y2gKLSAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc2VsLCBlLCBz
ZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc0FuY2VzdG9yLCBpc1N1YlNlbGVjdG9yLCBl
bGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgaWYgKCFjaGVja09uZVNlbGVj
dG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgaXNTdWJTZWxlY3Rvciwg
ZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQogICAgICAgICByZXR1cm4gU2VsZWN0
b3JGYWlsc0xvY2FsbHk7CiAKICAgICAvLyBUaGUgcmVzdCBvZiB0aGUgc2VsZWN0b3JzIGhhcyB0
byBtYXRjaApAQCAtMTgwNCw2ICsxODI0LDE3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9y
TWF0Y2ggQ1NTU3R5bGUKICAgICAgICAgaWYgKG1fcHNldWRvU3R5bGUgIT0gTk9QU0VVRE8gJiYg
bV9wc2V1ZG9TdHlsZSAhPSBkeW5hbWljUHNldWRvKQogICAgICAgICAgICAgcmV0dXJuIFNlbGVj
dG9yRmFpbHNDb21wbGV0ZWx5OwogCisgICAgLy8gQ2hlY2sgZm9yIG5lc3RlZCBsaW5rcy4KKyAg
ICBpZiAobV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcykgeworICAgICAgICBSZW5kZXJTdHlsZSog
Y3VycmVudFN0eWxlID0gZWxlbWVudFN0eWxlID8gZWxlbWVudFN0eWxlIDogZS0+cmVuZGVyU3R5
bGUoKTsKKyAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS0+bGlua1N0YXRlKCkgIT0gTm9uZUxpbmtT
dGF0ZSAmJiBlLT5pc0xpbmsoKSkgeworICAgICAgICAgICAgaWYgKGVuY291bnRlcmVkTGluaykK
KyAgICAgICAgICAgICAgICBtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzID0gZmFsc2U7IC8vIFRo
aXMgbGluayBpcyBub3QgcmVsZXZhbnQgdG8gdGhlIHN0eWxlIGJlaW5nIHJlc29sdmVkLCBzbyBk
aXNhYmxlIG1hdGNoaW5nLgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVuY291
bnRlcmVkTGluayA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKICAgICBzd2l0Y2ggKHJlbGF0
aW9uKSB7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6CiAgICAgICAgICAg
ICB3aGlsZSAodHJ1ZSkgewpAQCAtMTgxMSw3ICsxODQyLDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6
U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNF
bGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0Nv
bXBsZXRlbHk7CiAgICAgICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsK
LSAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWws
IGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVj
dG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOwogICAgICAg
ICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckZhaWxzTG9jYWxseSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAgICAgICAgfQpAQCAtMTgyMiw3ICsxODUzLDcg
QEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAg
aWYgKCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNl
bGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihuKTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0
b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJu
IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxz
ZSwgZW5jb3VudGVyZWRMaW5rKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpEaXJlY3RBZGphY2VudDoKICAgICAgICAgewpAQCAtMTgzNyw3ICsxODY4LDggQEAgQ1NTU3R5
bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgaWYgKCFuKQog
ICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzTG9jYWxseTsKICAgICAgICAgICAg
IGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tT
ZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBmYWxz
ZSk7IAorICAgICAgICAgICAgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IGZhbHNlOworICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5h
bWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rKTsgCiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDoKICAgICAgICAgICAgIGlmICghbV9j
b2xsZWN0UnVsZXNPbmx5ICYmIGUtPnBhcmVudE5vZGUoKSAmJiBlLT5wYXJlbnROb2RlKCktPmlz
RWxlbWVudE5vZGUoKSkgewpAQCAtMTg1Miw3ICsxODg0LDggQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6
U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgICAgIGlmICghbikKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5OwogICAgICAgICAgICAgICAg
IGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICAgICAgU2VsZWN0b3JN
YXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWlj
UHNldWRvLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIG1fbWF0Y2hWaXNpdGVkUHNl
dWRvQ2xhc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0g
Y2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNl
LCBlbmNvdW50ZXJlZExpbmspOwogICAgICAgICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3Rv
ckZhaWxzTG9jYWxseSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAg
ICAgICAgfTsKQEAgLTE4NjQsNyArMTg5Nyw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9y
TWF0Y2ggQ1NTU3R5bGUKICAgICAgICAgICAgIGlmICgoZWxlbWVudFN0eWxlIHx8IG1fY29sbGVj
dFJ1bGVzT25seSkgJiYgZHluYW1pY1BzZXVkbyAhPSBOT1BTRVVETyAmJiBkeW5hbWljUHNldWRv
ICE9IFNFTEVDVElPTiAmJgogICAgICAgICAgICAgICAgICEoKFJlbmRlclNjcm9sbGJhcjo6c2Ny
b2xsYmFyRm9yU3R5bGVSZXNvbHZlKCkgfHwgZHluYW1pY1BzZXVkbyA9PSBTQ1JPTExCQVJfQ09S
TkVSIHx8IGR5bmFtaWNQc2V1ZG8gPT0gUkVTSVpFUikgJiYgc2VsLT5tX21hdGNoID09IENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFp
bHNDb21wbGV0ZWx5OwotICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBz
ZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc0FuY2VzdG9yLCB0cnVlLCBlbGVtZW50U3R5
bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3Rv
cihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291bnRlcmVk
TGluaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpOwogICAgIH0KIAogICAgIHJl
dHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKQEAgLTE5MzcsNyArMTk3MCw3IEBAIHN0YXRp
YyBib29sIGh0bWxBdHRyaWJ1dGVIYXNDYXNlSW5zZW5zaXQKICAgICByZXR1cm4gaXNQb3NzaWJs
ZUhUTUxBdHRyICYmIGh0bWxDYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVzU2V0LT5jb250YWlucyhh
dHRyLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQq
IGUsIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYg
ZHluYW1pY1BzZXVkbywgYm9vbCBpc0FuY2VzdG9yLCBib29sIGlzU3ViU2VsZWN0b3IsIFJlbmRl
clN0eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNv
bnN0Citib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxl
Y3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0cmluZ0lt
cGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJT
ZWxlY3RvciwgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQ
YXJlbnRTdHlsZSkgY29uc3QKIHsKICAgICBpZiAoIWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTIwMzgsNyArMjA3MSw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVj
a2VyOjoKICAgICAgICAgICAgICAgICAvLyB0aGUgcGFyc2VyIGVuZm9yY2VzIHRoYXQgdGhpcyBu
ZXZlciBvY2N1cnMKICAgICAgICAgICAgICAgICBBU1NFUlQoIXN1YlNlbC0+c2ltcGxlU2VsZWN0
b3IoKSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc3ViU2VsLCBl
LCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc0FuY2VzdG9yLCB0cnVlLCBlbGVtZW50
U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgICAgICAgICAgICAgaWYgKCFjaGVja09u
ZVNlbGVjdG9yKHN1YlNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwg
ZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChkeW5hbWljUHNl
dWRvICE9IE5PUFNFVURPICYmIChSZW5kZXJTY3JvbGxiYXI6OnNjcm9sbGJhckZvclN0eWxlUmVz
b2x2ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NPUk5FUiB8fCBkeW5hbWljUHNl
dWRvID09IFJFU0laRVIpKSB7CkBAIC0yMzQ2LDEwICsyMzc5LDE2IEBAIGJvb2wgQ1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9BbnlMaW5rOgotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1
ZG9Vbmtub3duKQotICAgICAgICAgICAgICAgICAgICBwc2V1ZG9TdGF0ZSA9IGNoZWNrUHNldWRv
U3RhdGUoZSwgZmFsc2UpOwotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1
ZG9BbnlMaW5rIHx8IHBzZXVkb1N0YXRlID09IFBzZXVkb0xpbmsgfHwgcHNldWRvU3RhdGUgPT0g
UHNldWRvVmlzaXRlZCkKKyAgICAgICAgICAgICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNldWRv
VW5rbm93bikgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2xvciYgbGlua0NvbG9yID0g
ZS0+ZG9jdW1lbnQoKS0+bGlua0NvbG9yKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IENv
bG9yJiB2aXNpdGVkQ29sb3IgPSBlLT5kb2N1bWVudCgpLT52aXNpdGVkTGlua0NvbG9yKCk7Cisg
ICAgICAgICAgICAgICAgICAgIHBzZXVkb1N0YXRlID0gY2hlY2tQc2V1ZG9TdGF0ZShlLCBsaW5r
Q29sb3IgIT0gdmlzaXRlZENvbG9yKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb0FueUxpbmsgfHwgcHNldWRvU3RhdGUgPT0gUHNl
dWRvTGluayB8fCBwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9WaXNpdGVkKSB7CisgICAgICAgICAgICAg
ICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gZWxlbWVudFN0eWxlID8gZWxlbWVudFN0
eWxlIDogZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0TGlua1N0YXRl
RnJvbVBzZXVkb1N0YXRlKGNoaWxkU3R5bGUsIHBzZXVkb1N0YXRlKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQXV0b2ZpbGw6IHsKICAg
ICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCkBAIC0y
MzYxLDE0ICsyNDAwLDIwIEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2Vy
OjoKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xpbms6CiAgICAgICAgICAg
ICAgICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb1Vua25vd24gfHwgcHNldWRvU3RhdGUgPT0g
UHNldWRvQW55TGluaykKICAgICAgICAgICAgICAgICAgICAgcHNldWRvU3RhdGUgPSBjaGVja1Bz
ZXVkb1N0YXRlKGUpOwotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9M
aW5rKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBp
ZiAocHNldWRvU3RhdGUgPT0gUHNldWRvTGluayB8fCBwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9WaXNp
dGVkKSB7CisgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gZWxl
bWVudFN0eWxlID8gZWxlbWVudFN0eWxlIDogZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2V0TGlua1N0YXRlRnJvbVBzZXVkb1N0YXRlKGNoaWxkU3R5bGUsIHBzZXVkb1N0
YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBzZXVkb1N0YXRlID09IFBzZXVkb0xp
bmsgfHwgIW1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3M7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
VmlzaXRlZDoKICAgICAgICAgICAgICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNldWRvVW5rbm93
biB8fCBwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9BbnlMaW5rKQogICAgICAgICAgICAgICAgICAgICBw
c2V1ZG9TdGF0ZSA9IGNoZWNrUHNldWRvU3RhdGUoZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHBz
ZXVkb1N0YXRlID09IFBzZXVkb1Zpc2l0ZWQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9WaXNpdGVkKSB7
CisgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gZWxlbWVudFN0
eWxlID8gZWxlbWVudFN0eWxlIDogZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2V0TGlua1N0YXRlRnJvbVBzZXVkb1N0YXRlKGNoaWxkU3R5bGUsIHBzZXVkb1N0YXRlKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3M7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvRHJhZzogewogICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
U3R5bGUpCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCShyZXZpc2lvbiA1Njg1OSkKKysrIFdl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcs
NyBAQCBwdWJsaWM6CiAKICAgICAgICAgdm9pZCBpbml0RWxlbWVudEFuZFBzZXVkb1N0YXRlKEVs
ZW1lbnQqKTsKICAgICAgICAgdm9pZCBpbml0Rm9yU3R5bGVSZXNvbHZlKEVsZW1lbnQqLCBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsKLSAgICAgICAg
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUgPSAwLCBib29sIGFsbG93U2hhcmluZyA9IHRydWUsIGJvb2wgcmVz
b2x2ZUZvclJvb3REZWZhdWx0ID0gZmFsc2UpOworICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBzdHlsZUZvckVsZW1lbnQoRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9
IDAsIGJvb2wgYWxsb3dTaGFyaW5nID0gdHJ1ZSwgYm9vbCByZXNvbHZlRm9yUm9vdERlZmF1bHQg
PSBmYWxzZSwgYm9vbCBtYXRjaFZpc2l0ZWRMaW5rcyA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBr
ZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihFbGVtZW50KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBL
ZXlmcmFtZUxpc3QmIGxpc3QpOwogCiAgICAgICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHBz
ZXVkb1N0eWxlRm9yRWxlbWVudChQc2V1ZG9JZCwgRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJl
bnRTdHlsZSA9IDApOwpAQCAtMTk2LDggKzE5Niw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFNl
bGVjdG9yQ2hlY2tlcihEb2N1bWVudCosIGJvb2wgc3RyaWN0UGFyc2luZyk7CiAKICAgICAgICAg
ICAgIGJvb2wgY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqKSBjb25zdDsKLSAg
ICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1l
bnQqLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQm
IGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNBbmNlc3RvciwgYm9vbCBpc1N1YlNlbGVjdG9yLCBSZW5k
ZXJTdHlsZSogPSAwLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlID0gMCkgY29uc3Q7
Ci0gICAgICAgICAgICBib29sIGNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50
KiwgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBk
eW5hbWljUHNldWRvLCBib29sIGlzQW5jZXN0b3IsIGJvb2wgaXNTdWJTZWxlY3RvciwgUmVuZGVy
U3R5bGUqLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdDsKKyAgICAgICAg
ICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBI
YXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFt
aWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJlbmRl
clN0eWxlKiA9IDAsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUgPSAwKSBjb25zdDsK
KyAgICAgICAgICAgIGJvb2wgY2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQq
LCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5
bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHls
ZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdDsKICAgICAgICAgICAgIFBzZXVkb1N0YXRlIGNo
ZWNrUHNldWRvU3RhdGUoRWxlbWVudCosIGJvb2wgY2hlY2tWaXNpdGVkID0gdHJ1ZSkgY29uc3Q7
CiAgICAgICAgICAgICBib29sIGNoZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3Iq
LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbykgY29uc3Q7CiAKQEAgLTIwOSw2ICsyMDksNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBib29sIG1fY29sbGVjdFJ1bGVzT25seTsKICAgICAgICAgICAg
IFBzZXVkb0lkIG1fcHNldWRvU3R5bGU7CiAgICAgICAgICAgICBib29sIG1fZG9jdW1lbnRJc0hU
TUw7CisgICAgICAgICAgICBtdXRhYmxlIGJvb2wgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzczsK
ICAgICAgICAgICAgIG11dGFibGUgSGFzaFNldDxMaW5rSGFzaCwgTGlua0hhc2hIYXNoPiBtX2xp
bmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZTsKICAgICAgICAgfTsKIApAQCAtMjc5LDcgKzI4MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgQ1NTVmFsdWUqIG1fbGluZUhlaWdodFZhbHVlOwogICAgICAg
ICBib29sIG1fZm9udERpcnR5OwogICAgICAgICBib29sIG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5
bGVzOwotCisgICAgICAgIAogICAgICAgICBSZWZQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRT
ZWxlY3RvcjsKICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4gbV9zZWxlY3RvckF0
dHJzOwogICAgICAgICBWZWN0b3I8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qPiBtX2FkZGl0
aW9uYWxBdHRyaWJ1dGVTdHlsZURlY2xzOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJJbmxpbmVG
bG93Qm94LmgiCiAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsbGlwc2lzQm94
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC03NjAsNyArNzYxLDcgQEAgdm9p
ZCBJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKAogICAgICAgICBpZiAoc3R5bGVU
b1VzZS0+Ym94U2hhZG93KCkpCiAgICAgICAgICAgICBwYWludEJveFNoYWRvdyhjb250ZXh0LCBz
dHlsZVRvVXNlLCBOb3JtYWwsIHR4LCB0eSwgdywgaCk7CiAKLSAgICAgICAgQ29sb3IgYyA9IHN0
eWxlVG9Vc2UtPmJhY2tncm91bmRDb2xvcigpOworICAgICAgICBDb2xvciBjID0gcmVuZGVyZXIo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKG1fZmlyc3RMaW5lLCBzdHlsZVRvVXNlLCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8s
IGMsIHN0eWxlVG9Vc2UtPmJhY2tncm91bmRMYXllcnMoKSwgdHgsIHR5LCB3LCBoKTsKIAogICAg
ICAgICBpZiAoc3R5bGVUb1VzZS0+Ym94U2hhZG93KCkpCkBAIC05NTcsNyArOTU4LDcgQEAgdm9p
ZCBJbmxpbmVGbG93Qm94OjpwYWludFRleHREZWNvcmF0aW9ucwogICAgICAgICB0eCArPSBib3Jk
ZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpOwogCiAgICAgICAgIENvbG9yIHVuZGVybGluZSwgb3Zl
cmxpbmUsIGxpbmV0aHJvdWdoOwotICAgICAgICB1bmRlcmxpbmUgPSBvdmVybGluZSA9IGxpbmV0
aHJvdWdoID0gc3R5bGVUb1VzZS0+Y29sb3IoKTsKKyAgICAgICAgdW5kZXJsaW5lID0gb3Zlcmxp
bmUgPSBsaW5ldGhyb3VnaCA9IHJlbmRlcmVyKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihtX2Zp
cnN0TGluZSwgc3R5bGVUb1VzZSwgQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgICAgIGlmICghcGFy
ZW50KCkpCiAgICAgICAgICAgICByZW5kZXJlcigpLT5nZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhk
ZWNvLCB1bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3VnaCk7CiAKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTEsMTggKzQxMSwxNCBA
QCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFJlbmRlck9iamVjdDo6CiAgICAgICAgIHRleHRG
aWxsQ29sb3IgPSBDb2xvcjo6YmxhY2s7CiAgICAgICAgIHRleHRTdHJva2VDb2xvciA9IENvbG9y
OjpibGFjazsKICAgICB9IGVsc2UgewotICAgICAgICB0ZXh0RmlsbENvbG9yID0gc3R5bGVUb1Vz
ZS0+dGV4dEZpbGxDb2xvcigpOwotICAgICAgICBpZiAoIXRleHRGaWxsQ29sb3IuaXNWYWxpZCgp
KQotICAgICAgICAgICAgdGV4dEZpbGxDb2xvciA9IHN0eWxlVG9Vc2UtPmNvbG9yKCk7Ci0KKyAg
ICAgICAgdGV4dEZpbGxDb2xvciA9IHJlbmRlcmVyKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvciht
X2ZpcnN0TGluZSwgc3R5bGVUb1VzZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKTsK
KyAgICAgICAgCiAgICAgICAgIC8vIE1ha2UgdGhlIHRleHQgZmlsbCBjb2xvciBsZWdpYmxlIGFn
YWluc3QgYSB3aGl0ZSBiYWNrZ3JvdW5kCiAgICAgICAgIGlmIChzdHlsZVRvVXNlLT5mb3JjZUJh
Y2tncm91bmRzVG9XaGl0ZSgpKQogICAgICAgICAgICAgdGV4dEZpbGxDb2xvciA9IGNvcnJlY3Rl
ZFRleHRDb2xvcih0ZXh0RmlsbENvbG9yLCBDb2xvcjo6d2hpdGUpOwogCi0gICAgICAgIHRleHRT
dHJva2VDb2xvciA9IHN0eWxlVG9Vc2UtPnRleHRTdHJva2VDb2xvcigpOwotICAgICAgICBpZiAo
IXRleHRTdHJva2VDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICB0ZXh0U3Ryb2tlQ29sb3Ig
PSBzdHlsZVRvVXNlLT5jb2xvcigpOwotCisgICAgICAgIHRleHRTdHJva2VDb2xvciA9IHJlbmRl
cmVyKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihtX2ZpcnN0TGluZSwgc3R5bGVUb1VzZSwgQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IpOworICAgICAgICAKICAgICAgICAgLy8gTWFr
ZSB0aGUgdGV4dCBzdHJva2UgY29sb3IgbGVnaWJsZSBhZ2FpbnN0IGEgd2hpdGUgYmFja2dyb3Vu
ZAogICAgICAgICBpZiAoc3R5bGVUb1VzZS0+Zm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoKSkKICAg
ICAgICAgICAgIHRleHRTdHJva2VDb2xvciA9IGNvcnJlY3RlZFRleHRDb2xvcih0ZXh0U3Ryb2tl
Q29sb3IsIENvbG9yOjp3aGl0ZSk7CkBAIC01MTcsNyArNTEzLDcgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludChSZW5kZXJPYmplY3Q6OgogCiAgICAgLy8gUGFpbnQgZGVjb3JhdGlvbnMKICAg
ICBpZiAoZCAhPSBURE5PTkUgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rp
b24gJiYgc3R5bGVUb1VzZS0+aHRtbEhhY2tzKCkpIHsKLSAgICAgICAgY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3Ioc3R5bGVUb1VzZS0+Y29sb3IoKSwgc3R5bGVUb1VzZS0+Y29sb3JTcGFjZSgpKTsK
KyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IocmVuZGVyZXIoKS0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKG1fZmlyc3RMaW5lLCBzdHlsZVRvVXNlLCBDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5
bGVUb1VzZS0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgcGFpbnREZWNvcmF0aW9uKGNvbnRleHQs
IHR4LCB0eSwgZCwgdGV4dFNoYWRvdyk7CiAgICAgfQogCkBAIC01NzcsNyArNTczLDcgQEAgdm9p
ZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFwaAogICAgIGlmIChzUG9zID49IGVQ
b3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbG9yIHRleHRDb2xvciA9IHN0eWxlLT5jb2xv
cigpOworICAgIENvbG9yIHRleHRDb2xvciA9IHJlbmRlcmVyKCktPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihtX2ZpcnN0TGluZSwgc3R5bGUsIENTU1Byb3BlcnR5Q29sb3IpOwogICAgIENvbG9yIGMg
PSByZW5kZXJlcigpLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKICAgICBpZiAoIWMuaXNW
YWxpZCgpIHx8IGMuYWxwaGEoKSA9PSAwKQogICAgICAgICByZXR1cm47CkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Niw3ICsxNTQ2LDcgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6cGFpbnQoUGFpbnRJbmZvJiBwYWludAogCiB2b2lkIFJlbmRlckJsb2Nr
OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkK
IHsKLSAgICBjb25zdCBDb2xvciYgcnVsZUNvbG9yID0gc3R5bGUoKS0+Y29sdW1uUnVsZUNvbG9y
KCk7CisgICAgY29uc3QgQ29sb3ImIHJ1bGVDb2xvciA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihm
YWxzZSwgc3R5bGUoKSwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IpOwogICAgIGJv
b2wgcnVsZVRyYW5zcGFyZW50ID0gc3R5bGUoKS0+Y29sdW1uUnVsZUlzVHJhbnNwYXJlbnQoKTsK
ICAgICBFQm9yZGVyU3R5bGUgcnVsZVN0eWxlID0gc3R5bGUoKS0+Y29sdW1uUnVsZVN0eWxlKCk7
CiAgICAgaW50IHJ1bGVXaWR0aCA9IHN0eWxlKCktPmNvbHVtblJ1bGVXaWR0aCgpOwpAQCAtMTU4
MSw3ICsxNTgxLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDb2x1bW5SdWxlcyhQYWludAog
ICAgICAgICAgICAgaW50IHJ1bGVUb3AgPSB0eSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgp
OwogICAgICAgICAgICAgaW50IHJ1bGVCb3R0b20gPSBydWxlVG9wICsgY29udGVudEhlaWdodCgp
OwogICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKHBhaW50SW5mby5jb250ZXh0LCBydWxl
U3RhcnQsIHJ1bGVUb3AsIHJ1bGVFbmQsIHJ1bGVCb3R0b20sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gQlNMZWZ0IDogQlNSaWdo
dCwgcnVsZUNvbG9yLCBzdHlsZSgpLT5jb2xvcigpLCBydWxlU3R5bGUsIDAsIDApOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUiA/IEJT
TGVmdCA6IEJTUmlnaHQsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwKTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgcnVsZVggPSBjdXJyWE9mZnNldDsKQEAgLTE3NjAsNyArMTc2MCw3
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYKIAogICAgIC8vIDUu
IHBhaW50IG91dGxpbmUuCiAgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5l
IHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBoYXNPdXRsaW5lKCkg
JiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCi0gICAgICAgIHBhaW50T3V0bGlu
ZShwYWludEluZm8uY29udGV4dCwgdHgsIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSwgc3R5bGUoKSk7
CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgdHgsIHR5LCB3aWR0aCgp
LCBoZWlnaHQoKSk7CiAKICAgICAvLyA2LiBwYWludCBjb250aW51YXRpb24gb3V0bGluZXMuCiAg
ICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0g
UGFpbnRQaGFzZUNoaWxkT3V0bGluZXMpKSB7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMzLDE1ICs5
MzMsMTUgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllYwogfQogCiB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGJvb2wgYmVnaW4s
IGJvb2wgZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlLCBib29sIGJlZ2luLCBib29sIGVuZCkKIHsKICAgICBpZiAocGFp
bnROaW5lUGllY2VJbWFnZShncmFwaGljc0NvbnRleHQsIHR4LCB0eSwgdywgaCwgc3R5bGUsIHN0
eWxlLT5ib3JkZXJJbWFnZSgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgQ29sb3Im
IHRvcENvbG9yID0gc3R5bGUtPmJvcmRlclRvcENvbG9yKCk7Ci0gICAgY29uc3QgQ29sb3ImIGJv
dHRvbUNvbG9yID0gc3R5bGUtPmJvcmRlckJvdHRvbUNvbG9yKCk7Ci0gICAgY29uc3QgQ29sb3Im
IGxlZnRDb2xvciA9IHN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKTsKLSAgICBjb25zdCBDb2xvciYg
cmlnaHRDb2xvciA9IHN0eWxlLT5ib3JkZXJSaWdodENvbG9yKCk7CisgICAgY29uc3QgQ29sb3Im
IHRvcENvbG9yID0gdmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNlLCBzdHlsZSwgQ1NTUHJvcGVy
dHlCb3JkZXJUb3BDb2xvcik7CisgICAgY29uc3QgQ29sb3ImIGJvdHRvbUNvbG9yID0gdmlzaXRl
ZERlcGVuZGVudENvbG9yKGZhbHNlLCBzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xv
cik7CisgICAgY29uc3QgQ29sb3ImIGxlZnRDb2xvciA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihm
YWxzZSwgc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKTsKKyAgICBjb25zdCBDb2xv
ciYgcmlnaHRDb2xvciA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwgc3R5bGUsIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRDb2xvcik7CiAKICAgICBib29sIHRvcFRyYW5zcGFyZW50ID0gc3R5
bGUtPmJvcmRlclRvcElzVHJhbnNwYXJlbnQoKTsKICAgICBib29sIGJvdHRvbVRyYW5zcGFyZW50
ID0gc3R5bGUtPmJvcmRlckJvdHRvbUlzVHJhbnNwYXJlbnQoKTsKQEAgLTEwMDYsNyArMTAwNiw3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEcKICAgICAgICAgICAg
IHgyIC09IHRvcFJpZ2h0LndpZHRoKCk7CiAgICAgICAgIH0KIAotICAgICAgICBkcmF3TGluZUZv
ckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4LCB0eSwgeDIsIHR5ICsgc3R5bGUtPmJvcmRlclRv
cFdpZHRoKCksIEJTVG9wLCB0b3BDb2xvciwgc3R5bGUtPmNvbG9yKCksIHRvcFN0eWxlLAorICAg
ICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4LCB0eSwgeDIsIHR5ICsg
c3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIEJTVG9wLCB0b3BDb2xvciwgdG9wU3R5bGUsCiAgICAg
ICAgICAgICAgICAgICAgaWdub3JlX2xlZnQgPyAwIDogc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgp
LCBpZ25vcmVfcmlnaHQgPyAwIDogc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSk7CiAKICAgICAg
ICAgaWYgKHJlbmRlclJhZGlpKSB7CkBAIC0xMDM0LDcgKzEwMzQsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHCiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IHVw
cGVyIGxlZnQgYXJjCiAgICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3ND
b250ZXh0LCBsZWZ0WCwgbGVmdFksIHRoaWNrbmVzcywgdG9wTGVmdCwgZmlyc3RBbmdsZVN0YXJ0
LCBmaXJzdEFuZ2xlU3BhbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTVG9wLCB0
b3BDb2xvciwgc3R5bGUtPmNvbG9yKCksIHRvcFN0eWxlLCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJTVG9wLCB0b3BDb2xvciwgdG9wU3R5bGUsIHRydWUpOwogICAgICAg
ICAgICAgICAgIGlmIChhcHBseUxlZnRJbm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICAgICAgfQpAQCAtMTA2MCw3ICsxMDYw
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoRwogCiAgICAgICAg
ICAgICAgICAgLy8gRHJhdyB1cHBlciByaWdodCBhcmMKICAgICAgICAgICAgICAgICBkcmF3QXJj
Rm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHJpZ2h0WCwgbGVmdFksIHRoaWNrbmVzcywgdG9w
UmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJTVG9wLCB0b3BDb2xvciwgc3R5bGUtPmNvbG9yKCksIHRvcFN0eWxl
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1RvcCwgdG9wQ29sb3Is
IHRvcFN0eWxlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5UmlnaHRJbm5lckNs
aXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAg
ICAgICAgICAgfQpAQCAtMTA4Myw3ICsxMDgzLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3JkZXIoRwogICAgICAgICAgICAgeDIgLT0gYm90dG9tUmlnaHQud2lkdGgoKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQs
IHgsIHR5ICsgaCAtIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpLCB4MiwgdHkgKyBoLCBCU0Jv
dHRvbSwgYm90dG9tQ29sb3IsIHN0eWxlLT5jb2xvcigpLCBib3R0b21TdHlsZSwKKyAgICAgICAg
ZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeCwgdHkgKyBoIC0gc3R5bGUtPmJv
cmRlckJvdHRvbVdpZHRoKCksIHgyLCB0eSArIGgsIEJTQm90dG9tLCBib3R0b21Db2xvciwgYm90
dG9tU3R5bGUsCiAgICAgICAgICAgICAgICAgICAgaWdub3JlX2xlZnQgPyAwIDogc3R5bGUtPmJv
cmRlckxlZnRXaWR0aCgpLCBpZ25vcmVfcmlnaHQgPyAwIDogc3R5bGUtPmJvcmRlclJpZ2h0V2lk
dGgoKSk7CiAKICAgICAgICAgaWYgKHJlbmRlclJhZGlpKSB7CkBAIC0xMTExLDcgKzExMTEsNyBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHCiAKICAgICAgICAgICAg
ICAgICAvLyBEcmF3IGxvd2VyIGxlZnQgYXJjCiAgICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJv
eFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBsZWZ0WCwgbGVmdFksIHRoaWNrbmVzcywgYm90dG9tTGVm
dCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJTQm90dG9tLCBib3R0b21Db2xvciwgc3R5bGUtPmNvbG9yKCksIGJvdHRvbVN0
eWxlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTQm90dG9tLCBib3R0
b21Db2xvciwgYm90dG9tU3R5bGUsIHRydWUpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseUxl
ZnRJbm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9y
ZSgpOwogICAgICAgICAgICAgfQpAQCAtMTEzMyw3ICsxMTMzLDcgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoRwogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyBsb3dl
ciByaWdodCBhcmMKICAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0Nv
bnRleHQsIHJpZ2h0WCwgcmlnaHRZLCB0aGlja25lc3MsIGJvdHRvbVJpZ2h0LCBzZWNvbmRBbmds
ZVN0YXJ0LCBzZWNvbmRBbmdsZVNwYW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
U0JvdHRvbSwgYm90dG9tQ29sb3IsIHN0eWxlLT5jb2xvcigpLCBib3R0b21TdHlsZSwgZmFsc2Up
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNCb3R0b20sIGJvdHRvbUNvbG9yLCBi
b3R0b21TdHlsZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseVJpZ2h0SW5uZXJD
bGlwKQogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAg
ICAgICAgICAgIH0KQEAgLTExNTYsNyArMTE1Niw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKEcKICAgICAgICAgICAgIHkyIC09IGJvdHRvbUxlZnQuaGVpZ2h0KCk7
CiAgICAgICAgIH0KIAotICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0
LCB0eCwgeSwgdHggKyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHkyLCBCU0xlZnQsIGxlZnRD
b2xvciwgc3R5bGUtPmNvbG9yKCksIGxlZnRTdHlsZSwKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgdHgsIHksIHR4ICsgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgp
LCB5MiwgQlNMZWZ0LCBsZWZ0Q29sb3IsIGxlZnRTdHlsZSwKICAgICAgICAgICAgICAgICAgICBp
Z25vcmVfdG9wID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBpZ25vcmVfYm90dG9tID8g
MCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKIAogICAgICAgICBpZiAocmVuZGVyUmFk
aWkgJiYgKCF1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCB8fCAhbG93ZXJMZWZ0Qm9yZGVyU3R5
bGVzTWF0Y2gpKSB7CkBAIC0xMTc5LDcgKzExNzksNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJvcmRlcihHCiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IHRvcCBsZWZ0IGFy
YwogICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdG9w
WCwgdG9wWSwgdGhpY2tuZXNzLCB0b3BMZWZ0LCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVT
cGFuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNMZWZ0LCBsZWZ0Q29sb3IsIHN0
eWxlLT5jb2xvcigpLCBsZWZ0U3R5bGUsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQlNMZWZ0LCBsZWZ0Q29sb3IsIGxlZnRTdHlsZSwgdHJ1ZSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGFwcGx5VG9wSW5uZXJDbGlwKQogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KQEAgLTEyMDAsNyArMTIwMCw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEcKIAogICAgICAgICAgICAgICAg
IC8vIERyYXcgYm90dG9tIGxlZnQgYXJjCiAgICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNp
ZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCBib3R0b21ZLCB0aGlja25lc3MsIGJvdHRvbUxlZnQs
IHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJTTGVmdCwgbGVmdENvbG9yLCBzdHlsZS0+Y29sb3IoKSwgbGVmdFN0eWxlLCBm
YWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU0xlZnQsIGxlZnRDb2xvciwg
bGVmdFN0eWxlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5Qm90dG9tSW5uZXJD
bGlwKQogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAg
ICAgICAgICAgIH0KQEAgLTEyMjUsNyArMTIyNSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKEcKICAgICAgICAgICAgIHkyIC09IGJvdHRvbVJpZ2h0LmhlaWdodCgp
OwogICAgICAgICB9CiAKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4
dCwgdHggKyB3IC0gc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwgeSwgdHggKyB3LCB5MiwgQlNS
aWdodCwgcmlnaHRDb2xvciwgc3R5bGUtPmNvbG9yKCksIHJpZ2h0U3R5bGUsCisgICAgICAgIGRy
YXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4ICsgdyAtIHN0eWxlLT5ib3JkZXJS
aWdodFdpZHRoKCksIHksIHR4ICsgdywgeTIsIEJTUmlnaHQsIHJpZ2h0Q29sb3IsIHJpZ2h0U3R5
bGUsCiAgICAgICAgICAgICAgICAgICAgaWdub3JlX3RvcCA/IDAgOiBzdHlsZS0+Ym9yZGVyVG9w
V2lkdGgoKSwgaWdub3JlX2JvdHRvbSA/IDAgOiBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7
CiAKICAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmICghdXBwZXJSaWdodEJvcmRlclN0eWxlc01h
dGNoIHx8ICFsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gpKSB7CkBAIC0xMjQ4LDcgKzEyNDgs
NyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHCiAKICAgICAgICAg
ICAgICAgICAvLyBEcmF3IHRvcCByaWdodCBhcmMKICAgICAgICAgICAgICAgICBkcmF3QXJjRm9y
Qm94U2lkZShncmFwaGljc0NvbnRleHQsIHRvcFgsIHRvcFksIHRoaWNrbmVzcywgdG9wUmlnaHQs
IGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCU1JpZ2h0LCByaWdodENvbG9yLCBzdHlsZS0+Y29sb3IoKSwgcmlnaHRTdHlsZSwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1JpZ2h0LCByaWdodENvbG9y
LCByaWdodFN0eWxlLCB0cnVlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlUb3BJbm5lckNs
aXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAg
ICAgICAgICAgfQpAQCAtMTI3MCw3ICsxMjcwLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3JkZXIoRwogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyBib3R0b20gcmlnaHQg
YXJjCiAgICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBi
b3R0b21YLCBib3R0b21ZLCB0aGlja25lc3MsIGJvdHRvbVJpZ2h0LCBzZWNvbmRBbmdsZVN0YXJ0
LCBzZWNvbmRBbmdsZVNwYW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1JpZ2h0
LCByaWdodENvbG9yLCBzdHlsZS0+Y29sb3IoKSwgcmlnaHRTdHlsZSwgZmFsc2UpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQlNSaWdodCwgcmlnaHRDb2xvciwgcmlnaHRTdHlsZSwg
ZmFsc2UpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseUJvdHRvbUlubmVyQ2xpcCkKICAgICAg
ICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCShyZXZpc2lvbiA1Njg1OSkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlckZp
ZWxkc2V0LmgiCiAKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKQEAgLTE4MSw4ICsxODIs
OCBAQCB2b2lkIFJlbmRlckZpZWxkc2V0OjpwYWludE1hc2soUGFpbnRJbmZvCiB2b2lkIFJlbmRl
ckZpZWxkc2V0OjpwYWludEJvcmRlck1pbnVzTGVnZW5kKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBpbnQgdHgsIGludCB0eSwgaW50IHcsIGludCBoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGlu
dCBseCwgaW50IGx3LCBpbnQgbGIpCiB7Ci0gICAgY29uc3QgQ29sb3ImIHRjID0gc3R5bGUtPmJv
cmRlclRvcENvbG9yKCk7Ci0gICAgY29uc3QgQ29sb3ImIGJjID0gc3R5bGUtPmJvcmRlckJvdHRv
bUNvbG9yKCk7CisgICAgY29uc3QgQ29sb3ImIHRjID0gdmlzaXRlZERlcGVuZGVudENvbG9yKGZh
bHNlLCBzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcik7CisgICAgY29uc3QgQ29sb3Im
IGJjID0gdmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNlLCBzdHlsZSwgQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21Db2xvcik7CiAKICAgICBFQm9yZGVyU3R5bGUgdHMgPSBzdHlsZS0+Ym9yZGVyVG9w
U3R5bGUoKTsKICAgICBFQm9yZGVyU3R5bGUgYnMgPSBzdHlsZS0+Ym9yZGVyQm90dG9tU3R5bGUo
KTsKQEAgLTE5OSwyMiArMjAwLDIyIEBAIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm9yZGVy
TWludXNMZWcKIAogICAgIGlmIChyZW5kZXJfdCkgewogICAgICAgICBpZiAobHggPj0gYm9yZGVy
TGVmdFdpZHRoKQotICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4
dCwgdHgsIHR5LCB0eCArIG1pbihseCwgdyksIHR5ICsgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCks
IEJTVG9wLCB0Yywgc3R5bGUtPmNvbG9yKCksIHRzLAorICAgICAgICAgICAgZHJhd0xpbmVGb3JC
b3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHgsIHR5LCB0eCArIG1pbihseCwgdyksIHR5ICsgc3R5
bGUtPmJvcmRlclRvcFdpZHRoKCksIEJTVG9wLCB0YywgdHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgIChyZW5kZXJfbCAmJiAobHMgPT0gRE9UVEVEIHx8IGxzID09IERBU0hFRCB8fCBscyA9PSBE
T1VCTEUpID8gYm9yZGVyTGVmdFdpZHRoIDogMCksCiAgICAgICAgICAgICAgICAgICAgICAgIChs
eCA+PSB3ICYmIHJlbmRlcl9yICYmIChycyA9PSBET1RURUQgfHwgcnMgPT0gREFTSEVEIHx8IHJz
ID09IERPVUJMRSkgPyBib3JkZXJSaWdodFdpZHRoIDogMCkpOwogICAgICAgICBpZiAobHggKyBs
dyA8PSAgdyAtIGJvcmRlclJpZ2h0V2lkdGgpCi0gICAgICAgICAgICBkcmF3TGluZUZvckJveFNp
ZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCArIG1heCgwLCBseCArIGx3KSwgdHksIHR4ICsgdywgdHkg
KyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgQlNUb3AsIHRjLCBzdHlsZS0+Y29sb3IoKSwgdHMs
CisgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCArIG1h
eCgwLCBseCArIGx3KSwgdHksIHR4ICsgdywgdHkgKyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwg
QlNUb3AsIHRjLCB0cywKICAgICAgICAgICAgICAgICAgICAgICAgKGx4ICsgbHcgPD0gMCAmJiBy
ZW5kZXJfbCAmJiAobHMgPT0gRE9UVEVEIHx8IGxzID09IERBU0hFRCB8fCBscyA9PSBET1VCTEUp
ID8gYm9yZGVyTGVmdFdpZHRoIDogMCksCiAgICAgICAgICAgICAgICAgICAgICAgIChyZW5kZXJf
ciAmJiAocnMgPT0gRE9UVEVEIHx8IHJzID09IERBU0hFRCB8fCBycyA9PSBET1VCTEUpID8gYm9y
ZGVyUmlnaHRXaWR0aCA6IDApKTsKICAgICB9CiAKICAgICBpZiAocmVuZGVyX2IpCi0gICAgICAg
IGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4LCB0eSArIGggLSBzdHlsZS0+
Ym9yZGVyQm90dG9tV2lkdGgoKSwgdHggKyB3LCB0eSArIGgsIEJTQm90dG9tLCBiYywgc3R5bGUt
PmNvbG9yKCksIGJzLAorICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0
LCB0eCwgdHkgKyBoIC0gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHR4ICsgdywgdHkgKyBo
LCBCU0JvdHRvbSwgYmMsIGJzLAogICAgICAgICAgICAgICAgICAgIChyZW5kZXJfbCAmJiAobHMg
PT0gRE9UVEVEIHx8IGxzID09IERBU0hFRCB8fCBscyA9PSBET1VCTEUpID8gc3R5bGUtPmJvcmRl
ckxlZnRXaWR0aCgpIDogMCksCiAgICAgICAgICAgICAgICAgICAgKHJlbmRlcl9yICYmIChycyA9
PSBET1RURUQgfHwgcnMgPT0gREFTSEVEIHx8IHJzID09IERPVUJMRSkgPyBzdHlsZS0+Ym9yZGVy
UmlnaHRXaWR0aCgpIDogMCkpOwogCiAgICAgaWYgKHJlbmRlcl9sKSB7Ci0gICAgICAgIGNvbnN0
IENvbG9yJiBsYyA9IHN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKTsKKyAgICAgICAgY29uc3QgQ29s
b3ImIGxjID0gdmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNlLCBzdHlsZSwgQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0Q29sb3IpOwogICAgICAgICBpbnQgc3RhcnRZID0gdHk7CiAKICAgICAgICAgYm9v
bCBpZ25vcmVfdG9wID0KQEAgLTIzMyw4ICsyMzQsOCBAQCB2b2lkIFJlbmRlckZpZWxkc2V0Ojpw
YWludEJvcmRlck1pbnVzTGVnCiAgICAgICAgICAgICBzdGFydFkgPSBsYjsKICAgICAgICAgfQog
Ci0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4LCBzdGFydFks
IHR4ICsgYm9yZGVyTGVmdFdpZHRoLCB0eSArIGgsIEJTTGVmdCwgbGMsIHN0eWxlLT5jb2xvcigp
LCBscywKLSAgICAgICAgICAgICAgICAgICBpZ25vcmVfdG9wID8gMCA6IHN0eWxlLT5ib3JkZXJU
b3BXaWR0aCgpLCBpZ25vcmVfYm90dG9tID8gMCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgp
KTsKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHgsIHN0YXJ0
WSwgdHggKyBib3JkZXJMZWZ0V2lkdGgsIHR5ICsgaCwgQlNMZWZ0LCBsYywgbHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZ25vcmVfdG9wID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0
aCgpLCBpZ25vcmVfYm90dG9tID8gMCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAg
ICB9CiAKICAgICBpZiAocmVuZGVyX3IpIHsKQEAgLTI1Nyw3ICsyNTgsNyBAQCB2b2lkIFJlbmRl
ckZpZWxkc2V0OjpwYWludEJvcmRlck1pbnVzTGVnCiAgICAgICAgICAgICBzdGFydFkgPSBsYjsK
ICAgICAgICAgfQogCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQs
IHR4ICsgdyAtIGJvcmRlclJpZ2h0V2lkdGgsIHN0YXJ0WSwgdHggKyB3LCB0eSArIGgsIEJTUmln
aHQsIHJjLCBzdHlsZS0+Y29sb3IoKSwgcnMsCisgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShn
cmFwaGljc0NvbnRleHQsIHR4ICsgdyAtIGJvcmRlclJpZ2h0V2lkdGgsIHN0YXJ0WSwgdHggKyB3
LCB0eSArIGgsIEJTUmlnaHQsIHJjLCBycywKICAgICAgICAgICAgICAgICAgICBpZ25vcmVfdG9w
ID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBpZ25vcmVfYm90dG9tID8gMCA6IHN0eWxl
LT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAgICB9CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcwLDcgKzQ3MCw3IEBAIHZvaWQgUmVuZGVySW1h
Z2U6OnBhaW50Rm9jdXNSaW5ncyhQYWludEkKICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxQYXRo
PiBmb2N1c1JpbmdQYXRoczsKICAgICAgICAgZm9jdXNSaW5nUGF0aHMuYXBwZW5kKGFyZWFFbGVt
ZW50LT5nZXRQYXRoKHRoaXMpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdGb2N1
c1JpbmcoZm9jdXNSaW5nUGF0aHMsIHN0eWxlLT5vdXRsaW5lV2lkdGgoKSwgc3R5bGUtPm91dGxp
bmVPZmZzZXQoKSwgc3R5bGUtPm91dGxpbmVDb2xvcigpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUGF0aHMsIHN0eWxlLT5vdXRsaW5lV2lkdGgo
KSwgc3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgdmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNlLCBz
dHlsZSwgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
fQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2
NSwyMSArOTY1LDIwIEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoR3JhcGhpY3MK
ICAgICBpZiAoIWhhc091dGxpbmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChz
dHlsZSgpLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpKSB7
Ci0gICAgICAgIGludCBvdyA9IHN0eWxlKCktPm91dGxpbmVXaWR0aCgpOwotICAgICAgICBDb2xv
ciBvYyA9IHN0eWxlKCktPm91dGxpbmVDb2xvcigpOwotICAgICAgICBpZiAoIW9jLmlzVmFsaWQo
KSkKLSAgICAgICAgICAgIG9jID0gc3R5bGUoKS0+Y29sb3IoKTsKKyAgICBSZW5kZXJTdHlsZSog
c3R5bGVUb1VzZSA9IHN0eWxlKCk7CisgICAgaWYgKHN0eWxlVG9Vc2UtPm91dGxpbmVTdHlsZUlz
QXV0bygpIHx8IGhhc091dGxpbmVBbm5vdGF0aW9uKCkpIHsKKyAgICAgICAgaW50IG93ID0gc3R5
bGVUb1VzZS0+b3V0bGluZVdpZHRoKCk7CisgICAgICAgIENvbG9yIG9jID0gdmlzaXRlZERlcGVu
ZGVudENvbG9yKGZhbHNlLCBzdHlsZVRvVXNlLCBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcik7CiAK
ICAgICAgICAgVmVjdG9yPEludFJlY3Q+IGZvY3VzUmluZ1JlY3RzOwogICAgICAgICBhZGRGb2N1
c1JpbmdSZWN0cyhmb2N1c1JpbmdSZWN0cywgdHgsIHR5KTsKLSAgICAgICAgaWYgKHN0eWxlKCkt
Pm91dGxpbmVTdHlsZUlzQXV0bygpKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3RzLCBvdywgc3R5bGUoKS0+b3V0bGluZU9mZnNldCgpLCBv
Yyk7CisgICAgICAgIGlmIChzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSkKKyAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdSZWN0cywgb3cs
IHN0eWxlVG9Vc2UtPm91dGxpbmVPZmZzZXQoKSwgb2MpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBhZGRQREZVUkxSZWN0KGdyYXBoaWNzQ29udGV4dCwgdW5pb25SZWN0KGZvY3VzUmluZ1Jl
Y3RzKSk7CiAgICAgfQogCi0gICAgaWYgKHN0eWxlKCktPm91dGxpbmVTdHlsZUlzQXV0bygpIHx8
IHN0eWxlKCktPm91dGxpbmVTdHlsZSgpID09IEJOT05FKQorICAgIGlmIChzdHlsZVRvVXNlLT5v
dXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGUoKSA9PSBCTk9O
RSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwpAQCAtMTAw
MCwxMSArOTk5LDEwIEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoR3JhcGhpY3MK
IHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsIGludCB0eSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGxhc3RsaW5lLCBjb25zdCBJbnRSZWN0JiB0
aGlzbGluZSwgY29uc3QgSW50UmVjdCYgbmV4dGxpbmUpCiB7Ci0gICAgaW50IG93ID0gc3R5bGUo
KS0+b3V0bGluZVdpZHRoKCk7Ci0gICAgRUJvcmRlclN0eWxlIG9zID0gc3R5bGUoKS0+b3V0bGlu
ZVN0eWxlKCk7Ci0gICAgQ29sb3Igb2MgPSBzdHlsZSgpLT5vdXRsaW5lQ29sb3IoKTsKLSAgICBp
ZiAoIW9jLmlzVmFsaWQoKSkKLSAgICAgICAgb2MgPSBzdHlsZSgpLT5jb2xvcigpOworICAgIFJl
bmRlclN0eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKKyAgICBpbnQgb3cgPSBzdHlsZVRvVXNl
LT5vdXRsaW5lV2lkdGgoKTsKKyAgICBFQm9yZGVyU3R5bGUgb3MgPSBzdHlsZVRvVXNlLT5vdXRs
aW5lU3R5bGUoKTsKKyAgICBDb2xvciBvYyA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwg
c3R5bGVUb1VzZSwgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpOwogCiAgICAgaW50IG9mZnNldCA9
IHN0eWxlKCktPm91dGxpbmVPZmZzZXQoKTsKIApAQCAtMTAyMCw3ICsxMDE4LDcgQEAgdm9pZCBS
ZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoRwogICAgICAgICAgICAgICAgbCwKICAg
ICAgICAgICAgICAgIGIgKyAobmV4dGxpbmUuaXNFbXB0eSgpIHx8IHRoaXNsaW5lLngoKSA8PSBu
ZXh0bGluZS54KCkgfHwgKG5leHRsaW5lLnJpZ2h0KCkgLSAxKSA8PSB0aGlzbGluZS54KCkgPyBv
dyA6IDApLAogICAgICAgICAgICAgICAgQlNMZWZ0LAotICAgICAgICAgICAgICAgb2MsIHN0eWxl
KCktPmNvbG9yKCksIG9zLAorICAgICAgICAgICAgICAgb2MsIG9zLAogICAgICAgICAgICAgICAg
KGxhc3RsaW5lLmlzRW1wdHkoKSB8fCB0aGlzbGluZS54KCkgPCBsYXN0bGluZS54KCkgfHwgKGxh
c3RsaW5lLnJpZ2h0KCkgLSAxKSA8PSB0aGlzbGluZS54KCkgPyBvdyA6IC1vdyksCiAgICAgICAg
ICAgICAgICAobmV4dGxpbmUuaXNFbXB0eSgpIHx8IHRoaXNsaW5lLngoKSA8PSBuZXh0bGluZS54
KCkgfHwgKG5leHRsaW5lLnJpZ2h0KCkgLSAxKSA8PSB0aGlzbGluZS54KCkgPyBvdyA6IC1vdykp
OwogICAgIApAQCAtMTAzMSw3ICsxMDI5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0
bGluZUZvckxpbmUoRwogICAgICAgICAgICAgICAgciArIG93LAogICAgICAgICAgICAgICAgYiAr
IChuZXh0bGluZS5pc0VtcHR5KCkgfHwgbmV4dGxpbmUucmlnaHQoKSA8PSB0aGlzbGluZS5yaWdo
dCgpIHx8ICh0aGlzbGluZS5yaWdodCgpIC0gMSkgPD0gbmV4dGxpbmUueCgpID8gb3cgOiAwKSwK
ICAgICAgICAgICAgICAgIEJTUmlnaHQsCi0gICAgICAgICAgICAgICBvYywgc3R5bGUoKS0+Y29s
b3IoKSwgb3MsCisgICAgICAgICAgICAgICBvYywgb3MsCiAgICAgICAgICAgICAgICAobGFzdGxp
bmUuaXNFbXB0eSgpIHx8IGxhc3RsaW5lLnJpZ2h0KCkgPCB0aGlzbGluZS5yaWdodCgpIHx8ICh0
aGlzbGluZS5yaWdodCgpIC0gMSkgPD0gbGFzdGxpbmUueCgpID8gb3cgOiAtb3cpLAogICAgICAg
ICAgICAgICAgKG5leHRsaW5lLmlzRW1wdHkoKSB8fCBuZXh0bGluZS5yaWdodCgpIDw9IHRoaXNs
aW5lLnJpZ2h0KCkgfHwgKHRoaXNsaW5lLnJpZ2h0KCkgLSAxKSA8PSBuZXh0bGluZS54KCkgPyBv
dyA6IC1vdykpOwogICAgIC8vIHVwcGVyIGVkZ2UKQEAgLTEwNDEsNyArMTAzOSw3IEBAIHZvaWQg
UmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEcKICAgICAgICAgICAgICAgICAgICB0
IC0gb3csCiAgICAgICAgICAgICAgICAgICAgbWluKHIrb3csIChsYXN0bGluZS5pc0VtcHR5KCkg
PyAxMDAwMDAwIDogdHggKyBsYXN0bGluZS54KCkpKSwKICAgICAgICAgICAgICAgICAgICB0ICwK
LSAgICAgICAgICAgICAgICAgICBCU1RvcCwgb2MsIHN0eWxlKCktPmNvbG9yKCksIG9zLAorICAg
ICAgICAgICAgICAgICAgIEJTVG9wLCBvYywgb3MsCiAgICAgICAgICAgICAgICAgICAgb3csCiAg
ICAgICAgICAgICAgICAgICAgKCFsYXN0bGluZS5pc0VtcHR5KCkgJiYgdHggKyBsYXN0bGluZS54
KCkgKyAxIDwgciArIG93KSA/IC1vdyA6IG93KTsKICAgICAKQEAgLTEwNTEsNyArMTA0OSw3IEBA
IHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEcKICAgICAgICAgICAgICAg
ICAgICB0IC0gb3csCiAgICAgICAgICAgICAgICAgICAgciArIG93LAogICAgICAgICAgICAgICAg
ICAgIHQgLAotICAgICAgICAgICAgICAgICAgIEJTVG9wLCBvYywgc3R5bGUoKS0+Y29sb3IoKSwg
b3MsCisgICAgICAgICAgICAgICAgICAgQlNUb3AsIG9jLCBvcywKICAgICAgICAgICAgICAgICAg
ICAoIWxhc3RsaW5lLmlzRW1wdHkoKSAmJiBsIC0gb3cgPCB0eCArIGxhc3RsaW5lLnJpZ2h0KCkp
ID8gLW93IDogb3csCiAgICAgICAgICAgICAgICAgICAgb3cpOwogICAgIApAQCAtMTA2Miw3ICsx
MDYwLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoRwogICAgICAg
ICAgICAgICAgICAgIGIsCiAgICAgICAgICAgICAgICAgICAgbWluKHIgKyBvdywgIW5leHRsaW5l
LmlzRW1wdHkoKSA/IHR4ICsgbmV4dGxpbmUueCgpICsgMSA6IDEwMDAwMDApLAogICAgICAgICAg
ICAgICAgICAgIGIgKyBvdywKLSAgICAgICAgICAgICAgICAgICBCU0JvdHRvbSwgb2MsIHN0eWxl
KCktPmNvbG9yKCksIG9zLAorICAgICAgICAgICAgICAgICAgIEJTQm90dG9tLCBvYywgb3MsCiAg
ICAgICAgICAgICAgICAgICAgb3csCiAgICAgICAgICAgICAgICAgICAgKCFuZXh0bGluZS5pc0Vt
cHR5KCkgJiYgdHggKyBuZXh0bGluZS54KCkgKyAxIDwgciArIG93KSA/IC1vdyA6IG93KTsKICAg
ICAKQEAgLTEwNzIsNyArMTA3MCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVG
b3JMaW5lKEcKICAgICAgICAgICAgICAgICAgICBiLAogICAgICAgICAgICAgICAgICAgIHIgKyBv
dywKICAgICAgICAgICAgICAgICAgICBiICsgb3csCi0gICAgICAgICAgICAgICAgICAgQlNCb3R0
b20sIG9jLCBzdHlsZSgpLT5jb2xvcigpLCBvcywKKyAgICAgICAgICAgICAgICAgICBCU0JvdHRv
bSwgb2MsIG9zLAogICAgICAgICAgICAgICAgICAgICghbmV4dGxpbmUuaXNFbXB0eSgpICYmIGwg
LSBvdyA8IHR4ICsgbmV4dGxpbmUucmlnaHQoKSkgPyAtb3cgOiBvdywKICAgICAgICAgICAgICAg
ICAgICBvdyk7CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9u
IDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjk4LDcgKzY5OCw3IEBAIGJvb2wgUmVuZGVyT2JqZWN0OjptdXN0UmVwYWludEJh
Y2tncm91bmQKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdMaW5lRm9yQm94U2lkZShHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50
IHkyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3hTaWRlIHMsIENv
bG9yIGMsIGNvbnN0IENvbG9yJiB0ZXh0Y29sb3IsIEVCb3JkZXJTdHlsZSBzdHlsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm94U2lkZSBzLCBDb2xvciBjLCBFQm9y
ZGVyU3R5bGUgc3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBhZGpidzEsIGludCBhZGpidzIpCiB7CiAgICAgaW50IHdpZHRoID0gKHMgPT0gQlNUb3AgfHwg
cyA9PSBCU0JvdHRvbSA/IHkyIC0geTEgOiB4MiAtIHgxKTsKQEAgLTcwNiwxMyArNzA2LDYgQEAg
dm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdMaW5lRm9yQm94U2lkZShHcgogICAgIGlmIChzdHlsZSA9
PSBET1VCTEUgJiYgd2lkdGggPCAzKQogICAgICAgICBzdHlsZSA9IFNPTElEOwogCi0gICAgaWYg
KCFjLmlzVmFsaWQoKSkgewotICAgICAgICBpZiAoc3R5bGUgPT0gSU5TRVQgfHwgc3R5bGUgPT0g
T1VUU0VUIHx8IHN0eWxlID09IFJJREdFIHx8IHN0eWxlID09IEdST09WRSkKLSAgICAgICAgICAg
IGMuc2V0UkdCKDIzOCwgMjM4LCAyMzgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjID0g
dGV4dGNvbG9yOwotICAgIH0KLQogICAgIHN3aXRjaCAoc3R5bGUpIHsKICAgICAgICAgY2FzZSBC
Tk9ORToKICAgICAgICAgY2FzZSBCSElEREVOOgpAQCAtNzY0LDM0ICs3NTcsMzQgQEAgdm9pZCBS
ZW5kZXJPYmplY3Q6OmRyYXdMaW5lRm9yQm94U2lkZShHcgogICAgICAgICAgICAgICAgICAgICBj
YXNlIEJTVG9wOgogICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdy
YXBoaWNzQ29udGV4dCwgeDEgKyBtYXgoKC1hZGpidzEgKiAyICsgMSkgLyAzLCAwKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTEsIHgyIC0gbWF4KCgtYWRqYncyICogMiAr
IDEpIC8gMywgMCksIHkxICsgdGhpcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHMsIGMsIHRleHRjb2xvciwgU09MSUQsIGFkamJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGly
ZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIFNPTElELCBhZGpi
dzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgZHJh
d0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEgKyBtYXgoKGFkamJ3MSAqIDIgKyAx
KSAvIDMsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MiAtIHRoaXJk
LCB4MiAtIG1heCgoYWRqYncyICogMiArIDEpIC8gMywgMCksIHkyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNPTElELCBhZGpidzFiaWd0aGly
ZCwgYWRqYncyYmlndGhpcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
LCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEJTTGVmdDoKICAg
ICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQs
IHgxLCB5MSArIG1heCgoLWFkamJ3MSAqIDIgKyAxKSAvIDMsIDApLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MSArIHRoaXJkLCB5MiAtIG1heCgoLWFkamJ3MiAqIDIgKyAx
KSAvIDMsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0
Y29sb3IsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFk
amJ3MmJpZ3RoaXJkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lk
ZShncmFwaGljc0NvbnRleHQsIHgyIC0gdGhpcmQsIHkxICsgbWF4KChhZGpidzEgKiAyICsgMSkg
LyAzLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsIHkyIC0gbWF4
KChhZGpidzIgKiAyICsgMSkgLyAzLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcywgYywgdGV4dGNvbG9yLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3Ro
aXJkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgU09MSUQsIGFk
amJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBCU0JvdHRvbToKICAgICAgICAgICAgICAg
ICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgxICsgbWF4KChh
ZGpidzEgKiAyICsgMSkgLyAzLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeTEsIHgyIC0gbWF4KChhZGpidzIgKiAyICsgMSkgLyAzLCAwKSwgeTEgKyB0aGlyZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNvbG9yLCBTT0xJRCwg
YWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcywgYywgU09MSUQsIGFkamJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250
ZXh0LCB4MSArIG1heCgoLWFkamJ3MSAqIDIgKyAxKSAvIDMsIDApLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB5MiAtIHRoaXJkLCB4MiAtIG1heCgoLWFkamJ3MiAqIDIgKyAx
KSAvIDMsIDApLCB5MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywg
dGV4dGNvbG9yLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgU09MSUQsIGFkamJ3MWJpZ3RoaXJk
LCBhZGpidzJiaWd0aGlyZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBCU1JpZ2h0OgogICAgICAgICAgICAgICAgICAgICAgICAgZHJh
d0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEsIHkxICsgbWF4KChhZGpidzEgKiAy
ICsgMSkgLyAzLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEgKyB0
aGlyZCwgeTIgLSBtYXgoKGFkamJ3MiAqIDIgKyAxKSAvIDMsIDApLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNPTElELCBhZGpidzFiaWd0aGly
ZCwgYWRqYncyYmlndGhpcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
LCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgyIC0gdGhp
cmQsIHkxICsgbWF4KCgtYWRqYncxICogMiArIDEpIC8gMywgMCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgyLCB5MiAtIG1heCgoLWFkamJ3MiAqIDIgKyAxKSAvIDMsIDAp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNP
TElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzLCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3Ro
aXJkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04MTgsMjcgKzgx
MSwyNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyCiAgICAgICAg
ICAgICBzd2l0Y2ggKHMpIHsKICAgICAgICAgICAgICAgICBjYXNlIEJTVG9wOgogICAgICAgICAg
ICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSArIG1heCgt
YWRqYncxLCAwKSAvIDIsIHkxLCB4MiAtIG1heCgtYWRqYncyLCAwKSAvIDIsICh5MSArIHkyICsg
MSkgLyAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xvciwg
czEsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHMsIGMsIHMxLCBhZGpidzFiaWdoYWxmLCBhZGpidzJiaWdoYWxmKTsKICAgICAg
ICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEgKyBt
YXgoYWRqYncxICsgMSwgMCkgLyAyLCAoeTEgKyB5MiArIDEpIC8gMiwgeDIgLSBtYXgoYWRqYncy
ICsgMSwgMCkgLyAyLCB5MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0
ZXh0Y29sb3IsIHMyLCBhZGpidzEgLyAyLCBhZGpidzIgLyAyKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzLCBjLCBzMiwgYWRqYncxIC8gMiwgYWRqYncyIC8gMik7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQlNMZWZ0OgogICAgICAg
ICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSwgeTEg
KyBtYXgoLWFkamJ3MSwgMCkgLyAyLCAoeDEgKyB4MiArIDEpIC8gMiwgeTIgLSBtYXgoLWFkamJ3
MiwgMCkgLyAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xv
ciwgczEsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMsIGMsIHMxLCBhZGpidzFiaWdoYWxmLCBhZGpidzJiaWdoYWxmKTsKICAg
ICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgKHgx
ICsgeDIgKyAxKSAvIDIsIHkxICsgbWF4KGFkamJ3MSArIDEsIDApIC8gMiwgeDIsIHkyIC0gbWF4
KGFkamJ3MiArIDEsIDApIC8gMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBj
LCB0ZXh0Y29sb3IsIHMyLCBhZGpidzEgLyAyLCBhZGpidzIgLyAyKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzLCBjLCBzMiwgYWRqYncxIC8gMiwgYWRqYncyIC8gMik7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQlNCb3R0b206CiAg
ICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgx
ICsgbWF4KGFkamJ3MSwgMCkgLyAyLCB5MSwgeDIgLSBtYXgoYWRqYncyLCAwKSAvIDIsICh5MSAr
IHkyICsgMSkgLyAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRj
b2xvciwgczIsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHMsIGMsIHMyLCBhZGpidzFiaWdoYWxmLCBhZGpidzJiaWdoYWxmKTsK
ICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwg
eDEgKyBtYXgoLWFkamJ3MSArIDEsIDApIC8gMiwgKHkxICsgeTIgKyAxKSAvIDIsIHgyIC0gbWF4
KC1hZGpidzIgKyAxLCAwKSAvIDIsIHkyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHMsIGMsIHRleHRjb2xvciwgczEsIGFkamJ3MS8yLCBhZGpidzIvMik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcywgYywgczEsIGFkamJ3MS8yLCBhZGpidzIvMik7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQlNSaWdodDoKICAgICAg
ICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEsIHkx
ICsgbWF4KGFkamJ3MSwgMCkgLyAyLCAoeDEgKyB4MiArIDEpIC8gMiwgeTIgLSBtYXgoYWRqYncy
LCAwKSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNvbG9y
LCBzMiwgYWRqYncxYmlnaGFsZiwgYWRqYncyYmlnaGFsZik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcywgYywgczIsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOwogICAg
ICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCAoeDEg
KyB4MiArIDEpIC8gMiwgeTEgKyBtYXgoLWFkamJ3MSArIDEsIDApIC8gMiwgeDIsIHkyIC0gbWF4
KC1hZGpidzIgKyAxLCAwKSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywg
YywgdGV4dGNvbG9yLCBzMSwgYWRqYncxLzIsIGFkamJ3Mi8yKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzLCBjLCBzMSwgYWRqYncxLzIsIGFkamJ3Mi8yKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTg5
NCwxOSArODg3LDEyIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3TGluZUZvckJveFNpZGUoR3IK
IH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdBcmNGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgeCwgaW50IHksIGZsb2F0IHRoaWNrbmVzcywgSW50U2l6
ZSByYWRpdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFuZ2xl
U3RhcnQsIGludCBhbmdsZVNwYW4sIEJveFNpZGUgcywgQ29sb3IgYywgY29uc3QgQ29sb3ImIHRl
eHRDb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYW5nbGVT
dGFydCwgaW50IGFuZ2xlU3BhbiwgQm94U2lkZSBzLCBDb2xvciBjLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVCb3JkZXJTdHlsZSBzdHlsZSwgYm9vbCBmaXJzdENvcm5l
cikKIHsKICAgICBpZiAoKHN0eWxlID09IERPVUJMRSAmJiB0aGlja25lc3MgLyAyIDwgMykgfHwg
KChzdHlsZSA9PSBSSURHRSB8fCBzdHlsZSA9PSBHUk9PVkUpICYmIHRoaWNrbmVzcyAvIDIgPCAy
KSkKICAgICAgICAgc3R5bGUgPSBTT0xJRDsKIAotICAgIGlmICghYy5pc1ZhbGlkKCkpIHsKLSAg
ICAgICAgaWYgKHN0eWxlID09IElOU0VUIHx8IHN0eWxlID09IE9VVFNFVCB8fCBzdHlsZSA9PSBS
SURHRSB8fCBzdHlsZSA9PSBHUk9PVkUpCi0gICAgICAgICAgICBjLnNldFJHQigyMzgsIDIzOCwg
MjM4KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYyA9IHRleHRDb2xvcjsKLSAgICB9Ci0K
ICAgICBzd2l0Y2ggKHN0eWxlKSB7CiAgICAgICAgIGNhc2UgQk5PTkU6CiAgICAgICAgIGNhc2Ug
QkhJRERFTjoKQEAgLTk5NCwzMyArOTgwLDMyIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRQREZV
UkxSZWN0KEdyYXBoaWMKICAgICBjb250ZXh0LT5zZXRVUkxGb3JSZWN0KG4tPmRvY3VtZW50KCkt
PmNvbXBsZXRlVVJMKGhyZWYpLCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50
T3V0bGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHks
IGludCB3LCBpbnQgaCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQordm9pZCBSZW5kZXJPYmpl
Y3Q6OnBhaW50T3V0bGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4
LCBpbnQgdHksIGludCB3LCBpbnQgaCkKIHsKICAgICBpZiAoIWhhc091dGxpbmUoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaW50IG93ID0gc3R5bGUtPm91dGxpbmVXaWR0aCgpOwotICAgIEVC
b3JkZXJTdHlsZSBvcyA9IHN0eWxlLT5vdXRsaW5lU3R5bGUoKTsKKyAgICBSZW5kZXJTdHlsZSog
c3R5bGVUb1VzZSA9IHN0eWxlKCk7CisgICAgaW50IG93ID0gc3R5bGVUb1VzZS0+b3V0bGluZVdp
ZHRoKCk7CisgICAgRUJvcmRlclN0eWxlIG9zID0gc3R5bGVUb1VzZS0+b3V0bGluZVN0eWxlKCk7
CiAKLSAgICBDb2xvciBvYyA9IHN0eWxlLT5vdXRsaW5lQ29sb3IoKTsKLSAgICBpZiAoIW9jLmlz
VmFsaWQoKSkKLSAgICAgICAgb2MgPSBzdHlsZS0+Y29sb3IoKTsKKyAgICBDb2xvciBvYyA9IHZp
c2l0ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwgc3R5bGVUb1VzZSwgQ1NTUHJvcGVydHlPdXRsaW5l
Q29sb3IpOwogCi0gICAgaW50IG9mZnNldCA9IHN0eWxlLT5vdXRsaW5lT2Zmc2V0KCk7CisgICAg
aW50IG9mZnNldCA9IHN0eWxlVG9Vc2UtPm91dGxpbmVPZmZzZXQoKTsKIAotICAgIGlmIChzdHls
ZS0+b3V0bGluZVN0eWxlSXNBdXRvKCkgfHwgaGFzT3V0bGluZUFubm90YXRpb24oKSkgewotICAg
ICAgICBpZiAoIXRoZW1lKCktPnN1cHBvcnRzRm9jdXNSaW5nKHN0eWxlKSkgeworICAgIGlmIChz
dHlsZVRvVXNlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigp
KSB7CisgICAgICAgIGlmICghdGhlbWUoKS0+c3VwcG9ydHNGb2N1c1Jpbmcoc3R5bGVUb1VzZSkp
IHsKICAgICAgICAgICAgIC8vIE9ubHkgcGFpbnQgdGhlIGZvY3VzIHJpbmcgYnkgaGFuZCBpZiB0
aGUgdGhlbWUgaXNuJ3QgYWJsZSB0byBkcmF3IHRoZSBmb2N1cyByaW5nLgogICAgICAgICAgICAg
VmVjdG9yPEludFJlY3Q+IGZvY3VzUmluZ1JlY3RzOwogICAgICAgICAgICAgYWRkRm9jdXNSaW5n
UmVjdHMoZm9jdXNSaW5nUmVjdHMsIHR4LCB0eSk7Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPm91
dGxpbmVTdHlsZUlzQXV0bygpKQorICAgICAgICAgICAgaWYgKHN0eWxlVG9Vc2UtPm91dGxpbmVT
dHlsZUlzQXV0bygpKQogICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ZvY3Vz
UmluZyhmb2N1c1JpbmdSZWN0cywgb3csIG9mZnNldCwgb2MpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIGFkZFBERlVSTFJlY3QoZ3JhcGhpY3NDb250ZXh0LCB1bmlvblJlY3Qo
Zm9jdXNSaW5nUmVjdHMpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChzdHlsZS0+b3V0
bGluZVN0eWxlSXNBdXRvKCkgfHwgc3R5bGUtPm91dGxpbmVTdHlsZSgpID09IEJOT05FKQorICAg
IGlmIChzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBzdHlsZVRvVXNlLT5vdXRs
aW5lU3R5bGUoKSA9PSBCTk9ORSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdHggLT0gb2Zmc2V0
OwpAQCAtMTAzMSwxNyArMTAxNiwxMCBAQCB2b2lkIFJlbmRlck9iamVjdDo6cGFpbnRPdXRsaW5l
KEdyYXBoaWNzCiAgICAgaWYgKGggPCAwIHx8IHcgPCAwKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCAtIG93LCB0eSAtIG93LCB0
eCwgdHkgKyBoICsgb3csCi0gICAgICAgICAgICAgICBCU0xlZnQsIENvbG9yKG9jKSwgc3R5bGUt
PmNvbG9yKCksIG9zLCBvdywgb3cpOwotCi0gICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwgdHggLSBvdywgdHkgLSBvdywgdHggKyB3ICsgb3csIHR5LAotICAgICAgICAgICAg
ICAgQlNUb3AsIENvbG9yKG9jKSwgc3R5bGUtPmNvbG9yKCksIG9zLCBvdywgb3cpOwotCi0gICAg
ZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggKyB3LCB0eSAtIG93LCB0eCAr
IHcgKyBvdywgdHkgKyBoICsgb3csCi0gICAgICAgICAgICAgICBCU1JpZ2h0LCBDb2xvcihvYyks
IHN0eWxlLT5jb2xvcigpLCBvcywgb3csIG93KTsKLQotICAgIGRyYXdMaW5lRm9yQm94U2lkZShn
cmFwaGljc0NvbnRleHQsIHR4IC0gb3csIHR5ICsgaCwgdHggKyB3ICsgb3csIHR5ICsgaCArIG93
LAotICAgICAgICAgICAgICAgQlNCb3R0b20sIENvbG9yKG9jKSwgc3R5bGUtPmNvbG9yKCksIG9z
LCBvdywgb3cpOworICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4IC0g
b3csIHR5IC0gb3csIHR4LCB0eSArIGggKyBvdywgQlNMZWZ0LCBvYywgb3MsIG93LCBvdyk7Cisg
ICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggLSBvdywgdHkgLSBvdywg
dHggKyB3ICsgb3csIHR5LCBCU1RvcCwgb2MsIG9zLCBvdywgb3cpOworICAgIGRyYXdMaW5lRm9y
Qm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4ICsgdywgdHkgLSBvdywgdHggKyB3ICsgb3csIHR5
ICsgaCArIG93LCBCU1JpZ2h0LCBvYywgb3MsIG93LCBvdyk7CisgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgdHggLSBvdywgdHkgKyBoLCB0eCArIHcgKyBvdywgdHkgKyBo
ICsgb3csIEJTQm90dG9tLCBvYywgb3MsIG93LCBvdyk7CiB9CiAKIEludFJlY3QgUmVuZGVyT2Jq
ZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMpCkBAIC0yMTk4
LDI2ICsyMTc2LDI1IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlck9iamVjdDo6Z2UK
ICAgICBpZiAocHNldWRvID09IEZJUlNUX0xJTkVfSU5IRVJJVEVEKSB7CiAgICAgICAgIHJlc3Vs
dCA9IGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+c3R5bGVGb3JFbGVtZW50KHN0YXRpY19j
YXN0PEVsZW1lbnQqPihuKSwgcGFyZW50U3R5bGUsIGZhbHNlKTsKICAgICAgICAgcmVzdWx0LT5z
ZXRTdHlsZVR5cGUoRklSU1RfTElORV9JTkhFUklURUQpOworICAgIH0gZWxzZSBpZiAocHNldWRv
ID09IFZJU0lURURfTElOSykgeworICAgICAgICByZXN1bHQgPSBkb2N1bWVudCgpLT5zdHlsZVNl
bGVjdG9yKCktPnN0eWxlRm9yRWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obiksIHBhcmVu
dFN0eWxlLCBmYWxzZSwgZmFsc2UsIHRydWUpOworICAgICAgICByZXN1bHQtPnNldFN0eWxlVHlw
ZShWSVNJVEVEX0xJTkspOwogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQgPSBkb2N1bWVudCgp
LT5zdHlsZVNlbGVjdG9yKCktPnBzZXVkb1N0eWxlRm9yRWxlbWVudChwc2V1ZG8sIHN0YXRpY19j
YXN0PEVsZW1lbnQqPihuKSwgcGFyZW50U3R5bGUpOwogICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZSgpOwogfQogCi1zdGF0aWMgQ29sb3IgZGVjb3JhdGlvbkNvbG9yKFJlbmRlclN0eWxlKiBzdHls
ZSkKK3N0YXRpYyBDb2xvciBkZWNvcmF0aW9uQ29sb3IoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
IHsKICAgICBDb2xvciByZXN1bHQ7Ci0gICAgaWYgKHN0eWxlLT50ZXh0U3Ryb2tlV2lkdGgoKSA+
IDApIHsKKyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnRleHRTdHJva2VXaWR0aCgpID4gMCkg
ewogICAgICAgICAvLyBQcmVmZXIgc3Ryb2tlIGNvbG9yIGlmIHBvc3NpYmxlIGJ1dCBub3QgaWYg
aXQncyBmdWxseSB0cmFuc3BhcmVudC4KLSAgICAgICAgcmVzdWx0ID0gc3R5bGUtPnRleHRTdHJv
a2VDb2xvcigpOwotICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBy
ZXN1bHQgPSBzdHlsZS0+Y29sb3IoKTsKKyAgICAgICAgcmVzdWx0ID0gcmVuZGVyZXItPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwgcmVuZGVyZXItPnN0eWxlKCksIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dFN0cm9rZUNvbG9yKTsKICAgICAgICAgaWYgKHJlc3VsdC5hbHBoYSgpKQogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgcmVzdWx0ID0gc3R5bGUtPnRl
eHRGaWxsQ29sb3IoKTsKLSAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCi0gICAgICAgIHJlc3Vs
dCA9IHN0eWxlLT5jb2xvcigpOworICAgIHJlc3VsdCA9IHJlbmRlcmVyLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoZmFsc2UsIHJlbmRlcmVyLT5zdHlsZSgpLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRG
aWxsQ29sb3IpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIyMzAsMTUgKzIyMDcsMTUg
QEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sbwogICAgICAgICBpZiAo
Y3VyckRlY3MpIHsKICAgICAgICAgICAgIGlmIChjdXJyRGVjcyAmIFVOREVSTElORSkgewogICAg
ICAgICAgICAgICAgIGRlY29yYXRpb25zICY9IH5VTkRFUkxJTkU7Ci0gICAgICAgICAgICAgICAg
dW5kZXJsaW5lID0gZGVjb3JhdGlvbkNvbG9yKGN1cnItPnN0eWxlKCkpOworICAgICAgICAgICAg
ICAgIHVuZGVybGluZSA9IGRlY29yYXRpb25Db2xvcihjdXJyKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChjdXJyRGVjcyAmIE9WRVJMSU5FKSB7CiAgICAgICAgICAgICAgICAgZGVj
b3JhdGlvbnMgJj0gfk9WRVJMSU5FOwotICAgICAgICAgICAgICAgIG92ZXJsaW5lID0gZGVjb3Jh
dGlvbkNvbG9yKGN1cnItPnN0eWxlKCkpOworICAgICAgICAgICAgICAgIG92ZXJsaW5lID0gZGVj
b3JhdGlvbkNvbG9yKGN1cnIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGN1cnJE
ZWNzICYgTElORV9USFJPVUdIKSB7CiAgICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMgJj0gfkxJ
TkVfVEhST1VHSDsKLSAgICAgICAgICAgICAgICBsaW5ldGhyb3VnaCA9IGRlY29yYXRpb25Db2xv
cihjdXJyLT5zdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBsaW5ldGhyb3VnaCA9IGRlY29yYXRp
b25Db2xvcihjdXJyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBjdXJyID0g
Y3Vyci0+cGFyZW50KCk7CkBAIC0yMjUwLDEyICsyMjI3LDcyIEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpnZXRUZXh0RGVjb3JhdGlvbkNvbG8KICAgICAvLyBJZiB3ZSBiYWlsZWQgb3V0LCB1c2UgdGhl
IGVsZW1lbnQgd2UgYmFpbGVkIG91dCBhdCAodHlwaWNhbGx5IGEgPGZvbnQ+IG9yIDxhPiBlbGVt
ZW50KS4KICAgICBpZiAoZGVjb3JhdGlvbnMgJiYgY3VycikgewogICAgICAgICBpZiAoZGVjb3Jh
dGlvbnMgJiBVTkRFUkxJTkUpCi0gICAgICAgICAgICB1bmRlcmxpbmUgPSBkZWNvcmF0aW9uQ29s
b3IoY3Vyci0+c3R5bGUoKSk7CisgICAgICAgICAgICB1bmRlcmxpbmUgPSBkZWNvcmF0aW9uQ29s
b3IoY3Vycik7CiAgICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIE9WRVJMSU5FKQotICAgICAgICAg
ICAgb3ZlcmxpbmUgPSBkZWNvcmF0aW9uQ29sb3IoY3Vyci0+c3R5bGUoKSk7CisgICAgICAgICAg
ICBvdmVybGluZSA9IGRlY29yYXRpb25Db2xvcihjdXJyKTsKICAgICAgICAgaWYgKGRlY29yYXRp
b25zICYgTElORV9USFJPVUdIKQotICAgICAgICAgICAgbGluZXRocm91Z2ggPSBkZWNvcmF0aW9u
Q29sb3IoY3Vyci0+c3R5bGUoKSk7CisgICAgICAgICAgICBsaW5ldGhyb3VnaCA9IGRlY29yYXRp
b25Db2xvcihjdXJyKTsKKyAgICB9Cit9CisKK0NvbG9yIFJlbmRlck9iamVjdDo6dmlzaXRlZERl
cGVuZGVudENvbG9yKGJvb2wgLypmaXJzdExpbmUqLywgY29uc3QgUmVuZGVyU3R5bGUqIHVudmlz
aXRlZFN0eWxlLCBpbnQgY29sb3JQcm9wZXJ0eSkKK3sKKyAgICAvLyBGSVhNRTogRmV0Y2ggYm90
aCB2aXNpdGVkIGFuZCB1bnZpc2l0ZWQgc3R5bGVzLiAgTWVyZ2UgY29sb3JzIGJ5IGdldHRpbmcg
dGhlIFJHQiBmcm9tIHRoZSB2aXNpdGVkIHN0eWxlCisgICAgLy8gYW5kIHRoZSBBIGZyb20gdGhl
IHVudmlzaXRlZC4gIElmIGEgY29sb3IgaXMgbm90IHZhbGlkLCBuZWVkIHRvIGZhbGwgYmFjayB0
byBjb2xvciBpbiBzb21lIGNhc2VzICh0ZXh0IGZpbGwsIHN0cm9rZSwgYm9yZGVyKSwKKyAgICAv
LyBzbyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCB3aGVuIGF0dGVtcHRpbmcgYSBtZXJnZSku
CisgICAgQ29sb3IgcmVzdWx0OworICAgIEVCb3JkZXJTdHlsZSBib3JkZXJTdHlsZTsKKyAgICBz
d2l0Y2ggKGNvbG9yUHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yOgorICAgICAgICByZXN1bHQgPSB1bnZpc2l0ZWRTdHlsZS0+YmFja2dyb3VuZENvbG9yKCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I6Cisg
ICAgICAgIHJlc3VsdCA9IHVudmlzaXRlZFN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKTsKKyAgICAg
ICAgYm9yZGVyU3R5bGUgPSB1bnZpc2l0ZWRTdHlsZS0+Ym9yZGVyTGVmdFN0eWxlKCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yOgorICAgICAg
ICByZXN1bHQgPSB1bnZpc2l0ZWRTdHlsZS0+Ym9yZGVyUmlnaHRDb2xvcigpOworICAgICAgICBi
b3JkZXJTdHlsZSA9IHVudmlzaXRlZFN0eWxlLT5ib3JkZXJSaWdodFN0eWxlKCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcjoKKyAgICAgICAgcmVz
dWx0ID0gdW52aXNpdGVkU3R5bGUtPmJvcmRlclRvcENvbG9yKCk7CisgICAgICAgIGJvcmRlclN0
eWxlID0gdW52aXNpdGVkU3R5bGUtPmJvcmRlclRvcFN0eWxlKCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcjoKKyAgICAgICAgcmVzdWx0ID0g
dW52aXNpdGVkU3R5bGUtPmJvcmRlckJvdHRvbUNvbG9yKCk7CisgICAgICAgIGJvcmRlclN0eWxl
ID0gdW52aXNpdGVkU3R5bGUtPmJvcmRlckJvdHRvbVN0eWxlKCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoKKyAgICAgICAgcmVzdWx0ID0gdW52aXNpdGVkU3R5
bGUtPmNvbG9yKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5l
Q29sb3I6CisgICAgICAgIHJlc3VsdCA9IHVudmlzaXRlZFN0eWxlLT5vdXRsaW5lQ29sb3IoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xv
cjoKKyAgICAgICAgcmVzdWx0ID0gdW52aXNpdGVkU3R5bGUtPmNvbHVtblJ1bGVDb2xvcigpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoK
KyAgICAgICAgcmVzdWx0ID0gdW52aXNpdGVkU3R5bGUtPnRleHRGaWxsQ29sb3IoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcjoKKyAg
ICAgICAgcmVzdWx0ID0gdW52aXNpdGVkU3R5bGUtPnRleHRTdHJva2VDb2xvcigpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBGSVhNRTogQWRkIGJvcmRlcnMsIG91
dGxpbmVzLCBTVkcgZmlsbCBhbmQgc3Ryb2tlLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCgpKSB7
CisgICAgICAgIGlmICgoY29sb3JQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xv
ciB8fCBjb2xvclByb3BlcnR5ID09IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciB8fAorICAg
ICAgICAgICAgIGNvbG9yUHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciB8fCBj
b2xvclByb3BlcnR5ID09IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IpICYmCisgICAgICAg
ICAgICAoYm9yZGVyU3R5bGUgPT0gSU5TRVQgfHwgYm9yZGVyU3R5bGUgPT0gT1VUU0VUIHx8IGJv
cmRlclN0eWxlID09IFJJREdFIHx8IGJvcmRlclN0eWxlID09IEdST09WRSkpCisgICAgICAgICAg
ICByZXN1bHQuc2V0UkdCKDIzOCwgMjM4LCAyMzgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXN1bHQgPSB1bnZpc2l0ZWRTdHlsZS0+Y29sb3IoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwOCw5ICs0MDgsOSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNNYXNrKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKSAmJiBzdHlsZSgpLT5o
YXNNYXNrKCk7IH0KIAogICAgIHZvaWQgZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4
dCosIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MiwgQm94U2lkZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDb2xvciwgY29uc3QgQ29sb3ImIHRleHRjb2xvciwgRUJvcmRlclN0
eWxlLCBpbnQgYWRqYncxLCBpbnQgYWRqYncyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb2xvciwgRUJvcmRlclN0eWxlLCBpbnQgYWRqYncxLCBpbnQgYWRqYncyKTsKICAgICB2b2lk
IGRyYXdBcmNGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCosIGludCB4LCBpbnQgeSwgZmxvYXQg
dGhpY2tuZXNzLCBJbnRTaXplIHJhZGl1cywgaW50IGFuZ2xlU3RhcnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgYW5nbGVTcGFuLCBCb3hTaWRlLCBDb2xvciwgY29uc3QgQ29sb3Im
IHRleHRjb2xvciwgRUJvcmRlclN0eWxlLCBib29sIGZpcnN0Q29ybmVyKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBhbmdsZVNwYW4sIEJveFNpZGUsIENvbG9yLCBFQm9yZGVyU3R5
bGUsIGJvb2wgZmlyc3RDb3JuZXIpOwogCiBwdWJsaWM6CiAgICAgLy8gVGhlIHBzZXVkbyBlbGVt
ZW50IHN0eWxlIGNhbiBiZSBjYWNoZWQgb3IgdW5jYWNoZWQuICBVc2UgdGhlIGNhY2hlZCBtZXRo
b2QgaWYgdGhlIHBzZXVkbyBlbGVtZW50IGRvZXNuJ3QgcmVzcGVjdApAQCAtNTk5LDYgKzU5OSw3
IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGdldFRleHREZWNvcmF0aW9uQ29sb3JzKGludCBk
ZWNvcmF0aW9ucywgQ29sb3ImIHVuZGVybGluZSwgQ29sb3ImIG92ZXJsaW5lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3ImIGxpbmV0aHJvdWdoLCBib29sIHF1aXJrc01v
ZGUgPSBmYWxzZSk7CisgICAgQ29sb3IgdmlzaXRlZERlcGVuZGVudENvbG9yKGJvb2wgZmlyc3RM
aW5lLCBjb25zdCBSZW5kZXJTdHlsZSogdW52aXNpdGVkU3R5bGUsIGludCBjb2xvclByb3BlcnR5
KTsKIAogICAgIC8vIFJldHVybiB0aGUgUmVuZGVyQm94IGluIHRoZSBjb250YWluZXIgY2hhaW4g
d2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHBhaW50aW5nIHRoaXMgb2JqZWN0LCBvciAwCiAgICAg
Ly8gaWYgcGFpbnRpbmcgaXMgcm9vdC1yZWxhdGl2ZS4gVGhpcyBpcyB0aGUgY29udGFpbmVyIHRo
YXQgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUgJ2ZvclJlcGFpbnQnCkBAIC03ODQsNyArNzg1LDcg
QEAgcHJvdGVjdGVkOgogICAgIC8vIE92ZXJyaWRlcyBzaG91bGQgY2FsbCB0aGUgc3VwZXJjbGFz
cyBhdCB0aGUgc3RhcnQKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogCi0gICAgdm9pZCBwYWludE91
dGxpbmUoR3JhcGhpY3NDb250ZXh0KiwgaW50IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCwgY29u
c3QgUmVuZGVyU3R5bGUqKTsKKyAgICB2b2lkIHBhaW50T3V0bGluZShHcmFwaGljc0NvbnRleHQq
LCBpbnQgdHgsIGludCB0eSwgaW50IHcsIGludCBoKTsKICAgICB2b2lkIGFkZFBERlVSTFJlY3Qo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCBJbnRSZWN0
IHZpZXdSZWN0KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAkocmV2aXNp
b24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgUmVuZGVyUGF0aDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEkKIAogICAgICAgICBpZiAoZHJhd3NPdXRsaW5lKQogICAgICAgICAgICAgcGFpbnRP
dXRsaW5lKGNoaWxkUGFpbnRJbmZvLmNvbnRleHQsIHN0YXRpY19jYXN0PGludD4oYm91bmRpbmdC
b3gueCgpKSwgc3RhdGljX2Nhc3Q8aW50Pihib3VuZGluZ0JveC55KCkpLAotICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludD4oYm91bmRpbmdCb3gud2lkdGgoKSksIHN0YXRpY19jYXN0PGlu
dD4oYm91bmRpbmdCb3guaGVpZ2h0KCkpLCBzdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxpbnQ+KGJvdW5kaW5nQm94LndpZHRoKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KGJvdW5k
aW5nQm94LmhlaWdodCgpKSk7CiAgICAgICAgIAogICAgICAgICBjaGlsZFBhaW50SW5mby5jb250
ZXh0LT5yZXN0b3JlKCk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFJlbmRlclJlcGxh
Y2VkOjpwYWludChQYWludEluZm8mIHBhCiAgICAgfQogCiAgICAgaWYgKChwYWludEluZm8ucGhh
c2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VT
ZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+b3V0bGluZVdpZHRoKCkpCi0gICAgICAgIHBhaW50T3V0
bGluZShwYWludEluZm8uY29udGV4dCwgdHgsIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSwgc3R5bGUo
KSk7CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgdHgsIHR5LCB3aWR0
aCgpLCBoZWlnaHQoKSk7CiAgICAgCiAgICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBo
YXNlRm9yZWdyb3VuZCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVNlbGVjdGlvbikK
ICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWlu
ZXIuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0Nv
bnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFJlbmRl
clNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvCiAgICAgLy8gV2Ugc2hvdWxkIGluc3RlYWQg
ZGlzYWJsZSBvdXIgY2xpcCBkdXJpbmcgUGFpbnRQaGFzZU91dGxpbmUKICAgICBJbnRSZWN0IHBh
aW50UmVjdEluUGFyZW50ID0gZW5jbG9zaW5nSW50UmVjdChsb2NhbFRvUGFyZW50VHJhbnNmb3Jt
KCkubWFwUmVjdChyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKSk7CiAgICAgaWYgKChw
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJbmZvLnBoYXNlID09
IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+b3V0bGluZVdpZHRoKCkgJiYgc3R5
bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCi0gICAgICAgIHBhaW50T3V0bGluZShwYWlu
dEluZm8uY29udGV4dCwgcGFpbnRSZWN0SW5QYXJlbnQueCgpLCBwYWludFJlY3RJblBhcmVudC55
KCksIHBhaW50UmVjdEluUGFyZW50LndpZHRoKCksIHBhaW50UmVjdEluUGFyZW50LmhlaWdodCgp
LCBzdHlsZSgpKTsKKyAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCBwYWlu
dFJlY3RJblBhcmVudC54KCksIHBhaW50UmVjdEluUGFyZW50LnkoKSwgcGFpbnRSZWN0SW5QYXJl
bnQud2lkdGgoKSwgcGFpbnRSZWN0SW5QYXJlbnQuaGVpZ2h0KCkpOwogfQogCiAvLyBhZGRGb2N1
c1JpbmdSZWN0cyBpcyBjYWxsZWQgZnJvbSBwYWludE91dGxpbmUgYW5kIG5lZWRzIHRvIGJlIGlu
IHRoZSBzYW1lIGNvb3JkaW5hdGVzIGFzIHRoZSBwYWludE91bGluZSBjYWxsCkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUs
NyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhCiAgICAgfQogCiAg
ICAgaWYgKChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+b3V0bGluZVdpZHRo
KCkpCi0gICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgMCwgMCwgd2lkdGgo
KSwgaGVpZ2h0KCksIHN0eWxlKCkpOworICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNv
bnRleHQsIDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKTsKIAogICAgIHBhaW50SW5mby5jb250ZXh0
LT5yZXN0b3JlKCk7CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmNwcAkocmV2
aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6cGFpbnQo
UGFpbnRJbmZvJiBwYWkKICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAK
ICAgICBpZiAoKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludElu
Zm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgpLT5vdXRsaW5lV2lk
dGgoKSAmJiBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKLSAgICAgICAgcGFpbnRP
dXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCBib3JkZXJCb3hPcmlnaW5JbkNvbnRhaW5lci54KCks
IGJvcmRlckJveE9yaWdpbkluQ29udGFpbmVyLnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCksIHN0eWxl
KCkpOworICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIGJvcmRlckJveE9y
aWdpbkluQ29udGFpbmVyLngoKSwgYm9yZGVyQm94T3JpZ2luSW5Db250YWluZXIueSgpLCB3aWR0
aCgpLCBoZWlnaHQoKSk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHUm9vdDo6ZGVzdHJveSgpCkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODA4LDcgKzgwOCw3IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWludENvbGxhcHNlZEJvcmQK
ICAgICBmb3IgKENvbGxhcHNlZEJvcmRlciogYm9yZGVyID0gYm9yZGVycy5uZXh0Qm9yZGVyKCk7
IGJvcmRlcjsgYm9yZGVyID0gYm9yZGVycy5uZXh0Qm9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJv
cmRlci0+Ym9yZGVyVmFsdWUgPT0gKnRhYmxlKCktPmN1cnJlbnRCb3JkZXJTdHlsZSgpKQogICAg
ICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyLT54MSwg
Ym9yZGVyLT55MSwgYm9yZGVyLT54MiwgYm9yZGVyLT55MiwgYm9yZGVyLT5zaWRlLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItPmJvcmRlclZhbHVlLmNvbG9yKCksIHN0
eWxlKCktPmNvbG9yKCksIGJvcmRlci0+c3R5bGUsIDAsIDApOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvcmRlci0+Ym9yZGVyVmFsdWUuY29sb3IoKSwgYm9yZGVyLT5zdHlsZSwg
MCwgMCk7CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAyLDYgKzUwMiw3IEBAIFN0eWxlRGlmZmVy
ZW5jZSBSZW5kZXJTdHlsZTo6ZGlmZihjb25zdCAKICAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl92
aXNpYmlsaXR5ICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX3Zpc2liaWxpdHkgfHwKICAgICAg
ICAgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zICE9IG90aGVyLT5pbmhlcml0ZWRf
ZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMgfHwKICAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9mb3Jj
ZV9iYWNrZ3JvdW5kc190b193aGl0ZSAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9i
YWNrZ3JvdW5kc190b193aGl0ZSB8fAorICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX2xpbmtTdGF0
ZSAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl9saW5rU3RhdGUgfHwKICAgICAgICAgc3Vycm91
bmQtPmJvcmRlciAhPSBvdGhlci0+c3Vycm91bmQtPmJvcmRlciB8fAogICAgICAgICAqYmFja2dy
b3VuZC5nZXQoKSAhPSAqb3RoZXItPmJhY2tncm91bmQuZ2V0KCkgfHwKICAgICAgICAgdmlzdWFs
LT50ZXh0RGVjb3JhdGlvbiAhPSBvdGhlci0+dmlzdWFsLT50ZXh0RGVjb3JhdGlvbiB8fApJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiA1Njg1OSkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3Niw3ICsxNzYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICAgICAgICAgKF92aXN1YWxs
eU9yZGVyZWQgPT0gb3RoZXIuX3Zpc3VhbGx5T3JkZXJlZCkgJiYKICAgICAgICAgICAgICAgICAg
ICAoX2h0bWxIYWNrcyA9PSBvdGhlci5faHRtbEhhY2tzKSAmJgogICAgICAgICAgICAgICAgICAg
IChfZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgPT0gb3RoZXIuX2ZvcmNlX2JhY2tncm91bmRz
X3RvX3doaXRlKSAmJgotICAgICAgICAgICAgICAgICAgIChfcG9pbnRlckV2ZW50cyA9PSBvdGhl
ci5fcG9pbnRlckV2ZW50cyk7CisgICAgICAgICAgICAgICAgICAgKF9wb2ludGVyRXZlbnRzID09
IG90aGVyLl9wb2ludGVyRXZlbnRzKSAmJgorICAgICAgICAgICAgICAgICAgIChfbGlua1N0YXRl
ID09IG90aGVyLl9saW5rU3RhdGUpOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7IH0KQEAgLTIwMSw2ICsyMDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGJvb2wg
X2h0bWxIYWNrcyA6IDE7CiAgICAgICAgIGJvb2wgX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRl
IDogMTsKICAgICAgICAgdW5zaWduZWQgX3BvaW50ZXJFdmVudHMgOiA0OyAvLyBFUG9pbnRlckV2
ZW50cworICAgICAgICBFTGlua1N0YXRlIF9saW5rU3RhdGUgOiAyOyAvLyBMaW5rIHN0YXRlIChu
b25lLCB1bnZpc2l0ZWQsIHZpc2l0ZWQpCiAgICAgICAgIC8vIDQxIGJpdHMKICAgICB9IGluaGVy
aXRlZF9mbGFnczsKIApAQCAtMjc1LDYgKzI3Nyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgaW5o
ZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uID0gaW5pdGlhbEJveERpcmVjdGlvbigpOwogICAg
ICAgICBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlID0gZmFsc2U7
CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5fcG9pbnRlckV2ZW50cyA9IGluaXRpYWxQb2ludGVy
RXZlbnRzKCk7CisgICAgICAgIGluaGVyaXRlZF9mbGFncy5fbGlua1N0YXRlID0gaW5pdGlhbExp
bmtTdGF0ZSgpOwogCiAgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fZWZmZWN0aXZlRGlzcGxh
eSA9IG5vbmluaGVyaXRlZF9mbGFncy5fb3JpZ2luYWxEaXNwbGF5ID0gaW5pdGlhbERpc3BsYXko
KTsKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9vdmVyZmxvd1ggPSBpbml0aWFsT3ZlcmZs
b3dYKCk7CkBAIC01ODcsNiArNTkwLDggQEAgcHVibGljOgogCiAgICAgQ3Vyc29yTGlzdCogY3Vy
c29ycygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Y3Vyc29yRGF0YS5nZXQoKTsgfQogCisg
ICAgRUxpbmtTdGF0ZSBsaW5rU3RhdGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTGlu
a1N0YXRlPihpbmhlcml0ZWRfZmxhZ3MuX2xpbmtTdGF0ZSk7IH0KKwogICAgIHNob3J0IHdpZG93
cygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+d2lkb3dzOyB9CiAgICAgc2hvcnQgb3JwaGFu
cygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+b3JwaGFuczsgfQogICAgIEVQYWdlQnJlYWsg
cGFnZUJyZWFrSW5zaWRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBhZ2VCcmVhaz4o
bm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2luc2lkZSk7IH0KQEAgLTkxMiw2ICs5MTcs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJzb3JMaXN0KFBhc3NSZWZQdHI8Q3Vyc29yTGlz
dD4pOwogICAgIHZvaWQgY2xlYXJDdXJzb3JMaXN0KCk7CiAKKyAgICB2b2lkIHNldExpbmtTdGF0
ZShFTGlua1N0YXRlIGwpIHsgaW5oZXJpdGVkX2ZsYWdzLl9saW5rU3RhdGUgPSBsOyB9CisgICAg
CiAgICAgYm9vbCBmb3JjZUJhY2tncm91bmRzVG9XaGl0ZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVy
aXRlZF9mbGFncy5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGU7IH0KICAgICB2b2lkIHNldEZv
cmNlQmFja2dyb3VuZHNUb1doaXRlKGJvb2wgYj10cnVlKSB7IGluaGVyaXRlZF9mbGFncy5fZm9y
Y2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgPSBiOyB9CiAKQEAgLTExODQsNiArMTE5MSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxUcmFuc2Zvcm1PcmlnaW5YKCkgeyByZXR1
cm4gTGVuZ3RoKDUwLjAsIFBlcmNlbnQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsVHJh
bnNmb3JtT3JpZ2luWSgpIHsgcmV0dXJuIExlbmd0aCg1MC4wLCBQZXJjZW50KTsgfQogICAgIHN0
YXRpYyBFUG9pbnRlckV2ZW50cyBpbml0aWFsUG9pbnRlckV2ZW50cygpIHsgcmV0dXJuIFBFX0FV
VE87IH0KKyAgICBzdGF0aWMgRUxpbmtTdGF0ZSBpbml0aWFsTGlua1N0YXRlKCkgeyByZXR1cm4g
Tm9uZUxpbmtTdGF0ZTsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsVHJhbnNmb3JtT3JpZ2lu
WigpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgRVRyYW5zZm9ybVN0eWxlM0QgaW5pdGlhbFRy
YW5zZm9ybVN0eWxlM0QoKSB7IHJldHVybiBUcmFuc2Zvcm1TdHlsZTNERmxhdDsgfQogICAgIHN0
YXRpYyBFQmFja2ZhY2VWaXNpYmlsaXR5IGluaXRpYWxCYWNrZmFjZVZpc2liaWxpdHkoKSB7IHJl
dHVybiBCYWNrZmFjZVZpc2liaWxpdHlWaXNpYmxlOyB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJKHJldmlzaW9uIDU2ODU5KQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkod29ya2luZyBj
b3B5KQpAQCAtNzQsNyArNzQsNyBAQCBlbnVtIFBzZXVkb0lkIHsKICAgICBNRURJQV9DT05UUk9M
U19TRUVLX0JBQ0tfQlVUVE9OLCBNRURJQV9DT05UUk9MU19TRUVLX0ZPUldBUkRfQlVUVE9OLCBN
RURJQV9DT05UUk9MU19GVUxMU0NSRUVOX0JVVFRPTiwgTUVESUFfQ09OVFJPTFNfUkVXSU5EX0JV
VFRPTiwgCiAgICAgTUVESUFfQ09OVFJPTFNfUkVUVVJOX1RPX1JFQUxUSU1FX0JVVFRPTiwgTUVE
SUFfQ09OVFJPTFNfVE9HR0xFX0NMT1NFRF9DQVBUSU9OU19CVVRUT04sCiAgICAgTUVESUFfQ09O
VFJPTFNfU1RBVFVTX0RJU1BMQVksIFNDUk9MTEJBUl9USFVNQiwgU0NST0xMQkFSX0JVVFRPTiwg
U0NST0xMQkFSX1RSQUNLLCBTQ1JPTExCQVJfVFJBQ0tfUElFQ0UsIFNDUk9MTEJBUl9DT1JORVIs
IFJFU0laRVIsCi0gICAgSU5QVVRfTElTVF9CVVRUT04sIElOTkVSX1NQSU5fQlVUVE9OLCBPVVRF
Ul9TUElOX0JVVFRPTiwKKyAgICBJTlBVVF9MSVNUX0JVVFRPTiwgSU5ORVJfU1BJTl9CVVRUT04s
IE9VVEVSX1NQSU5fQlVUVE9OLCBWSVNJVEVEX0xJTkssCiAKICAgICBBRlRFUl9MQVNUX0lOVEVS
TkFMX1BTRVVET0lELAogICAgIEZJUlNUX1BVQkxJQ19QU0VVRE9JRCA9IEZJUlNUX0xJTkUsCkBA
IC0zOTQsNiArMzk0LDEwIEBAIGVudW0gRVBvaW50ZXJFdmVudHMgewogICAgIFBFX1ZJU0lCTEVf
U1RST0tFLCBQRV9WSVNJQkxFX0ZJTEwsIFBFX1ZJU0lCTEVfUEFJTlRFRCwgUEVfQUxMCiB9Owog
CitlbnVtIEVMaW5rU3RhdGUgeworICAgIE5vbmVMaW5rU3RhdGUsIFVudmlzaXRlZExpbmtTdGF0
ZSwgVmlzaXRlZExpbmtTdGF0ZQorfTsKKwogZW51bSBFVHJhbnNmb3JtU3R5bGUzRCB7CiAgICAg
VHJhbnNmb3JtU3R5bGUzREZsYXQsIFRyYW5zZm9ybVN0eWxlM0RQcmVzZXJ2ZTNECiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52451</attachid>
            <date>2010-04-02 14:52:45 -0700</date>
            <delta_ts>2010-04-05 12:02:30 -0700</delta_ts>
            <desc>Fix collapsed border drawing to propagate colors from the original elements participating in the collapse</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>82990</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzYsNiArODc2
LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpTZWxlYwogICAgICwgbV9j
b2xsZWN0UnVsZXNPbmx5KGZhbHNlKQogICAgICwgbV9wc2V1ZG9TdHlsZShOT1BTRVVETykKICAg
ICAsIG1fZG9jdW1lbnRJc0hUTUwoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCisgICAgLCBt
X21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzKGZhbHNlKQogewogfQogCkBAIC0xMTM0LDcgKzExMzUs
NyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAvLyBJZiByZXNv
bHZlRm9yUm9vdERlZmF1bHQgaXMgdHJ1ZSwgc3R5bGUgYmFzZWQgb24gdXNlciBhZ2VudCBzdHls
ZSBzaGVldCBvbmx5LiBUaGlzIGlzIHVzZWQgaW4gbWVkaWEgcXVlcmllcywgd2hlcmUKIC8vIHJl
bGF0aXZlIHVuaXRzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gZG9jdW1lbnQgcm9vdCBl
bGVtZW50IHN0eWxlLCBzdHlsZWQgb25seSB3aXRoIFVBIHN0eWxlc2hlZXQKIAotUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQq
IGUsIFJlbmRlclN0eWxlKiBkZWZhdWx0UGFyZW50LCBib29sIGFsbG93U2hhcmluZywgYm9vbCBy
ZXNvbHZlRm9yUm9vdERlZmF1bHQpCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNl
bGVjdG9yOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIGRlZmF1bHRQ
YXJlbnQsIGJvb2wgYWxsb3dTaGFyaW5nLCBib29sIHJlc29sdmVGb3JSb290RGVmYXVsdCwgYm9v
bCBtYXRjaFZpc2l0ZWRSdWxlcykKIHsKICAgICAvLyBPbmNlIGFuIGVsZW1lbnQgaGFzIGEgcmVu
ZGVyZXIsIHdlIGRvbid0IHRyeSB0byBkZXN0cm95IGl0LCBzaW5jZSBvdGhlcndpc2UgdGhlIHJl
bmRlcmVyCiAgICAgLy8gd2lsbCB2YW5pc2ggaWYgYSBzdHlsZSByZWNhbGMgaGFwcGVucyBkdXJp
bmcgbG9hZGluZy4KQEAgLTExNTcsNiArMTE1OCw4IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IENTU1N0eWxlU2VsZWN0b3IKICAgICAgICAgICAgIHJldHVybiBzaGFyZWRTdHlsZTsKICAgICB9
CiAgICAgaW5pdEZvclN0eWxlUmVzb2x2ZShlLCBkZWZhdWx0UGFyZW50KTsKKyAgICAKKyAgICBt
X2NoZWNrZXIubV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IG1hdGNoVmlzaXRlZFJ1bGVzOwog
CiAgICAgbV9zdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKIApAQCAtMTc1OCwxMiArMTc2
MSwyOSBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yCiAgICAgcmV0
dXJuIG1fcnVsZUxpc3QucmVsZWFzZSgpOwogfQogCitzdGF0aWMgdm9pZCBzZXRMaW5rU3RhdGVG
cm9tUHNldWRvU3RhdGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBQc2V1ZG9TdGF0ZSBzdGF0ZSkKK3sK
KyAgICBBU1NFUlQoc3RhdGUgPT0gUHNldWRvQW55TGluayB8fCBzdGF0ZSA9PSBQc2V1ZG9MaW5r
IHx8IHN0YXRlID09IFBzZXVkb1Zpc2l0ZWQpOworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAg
ICAgY2FzZSBQc2V1ZG9BbnlMaW5rOgorICAgICAgICBjYXNlIFBzZXVkb0xpbms6CisgICAgICAg
ICAgICBzdHlsZS0+c2V0TGlua1N0YXRlKFVudmlzaXRlZExpbmtTdGF0ZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBQc2V1ZG9WaXNpdGVkOgorICAgICAgICAgICAgc3R5bGUt
PnNldExpbmtTdGF0ZShWaXNpdGVkTGlua1N0YXRlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxl
Y3RvcihDU1NTZWxlY3Rvciogc2VsKQogewogICAgIG1fZHluYW1pY1BzZXVkbyA9IE5PUFNFVURP
OwogCiAgICAgLy8gQ2hlY2sgdGhlIHNlbGVjdG9yCi0gICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9
IG1fY2hlY2tlci5jaGVja1NlbGVjdG9yKHNlbCwgbV9lbGVtZW50LCAmbV9zZWxlY3RvckF0dHJz
LCBtX2R5bmFtaWNQc2V1ZG8sIHRydWUsIGZhbHNlLCBzdHlsZSgpLCBtX3BhcmVudFN0eWxlKTsK
KyAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVja2VyLmNoZWNrU2VsZWN0b3Ioc2VsLCBt
X2VsZW1lbnQsICZtX3NlbGVjdG9yQXR0cnMsIG1fZHluYW1pY1BzZXVkbywgZmFsc2UsIGZhbHNl
LCBzdHlsZSgpLCBtX3BhcmVudFN0eWxlKTsKICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JNYXRj
aGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE3NzgsNyArMTc5OCw3IEBAIGJvb2wg
Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3RvcihDU1MKIC8vICogU2VsZWN0b3JNYXRjaGVz
ICAgICAgICAgLSB0aGUgc2VsZWN0b3IgbWF0Y2hlcyB0aGUgZWxlbWVudCBlCiAvLyAqIFNlbGVj
dG9yRmFpbHNMb2NhbGx5ICAgIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciB0aGUgZWxlbWVudCBl
CiAvLyAqIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5IC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBl
IGFuZCBhbnkgc2libGluZyBvciBhbmNlc3RvciBvZiBlCi1DU1NTdHlsZVNlbGVjdG9yOjpTZWxl
Y3Rvck1hdGNoIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rv
cihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwq
Piogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNBbmNlc3Rv
ciwgYm9vbCBpc1N1YlNlbGVjdG9yLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5kZXJT
dHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAorQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0
b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3Io
Q1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4q
IHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0
b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5k
ZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAogewogI2lmIEVOQUJMRShTVkcpCiAg
ICAgLy8gU3BlYzogQ1NTMiBzZWxlY3RvcnMgY2Fubm90IGJlIGFwcGxpZWQgdG8gdGhlIChjb25j
ZXB0dWFsbHkpIGNsb25lZCBET00gdHJlZQpAQCAtMTc4OCw3ICsxODA4LDcgQEAgQ1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogI2VuZGlmCiAKICAgICAvLyBmaXJzdCBz
ZWxlY3RvciBoYXMgdG8gbWF0Y2gKLSAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc2VsLCBlLCBz
ZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc0FuY2VzdG9yLCBpc1N1YlNlbGVjdG9yLCBl
bGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgaWYgKCFjaGVja09uZVNlbGVj
dG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgaXNTdWJTZWxlY3Rvciwg
ZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQogICAgICAgICByZXR1cm4gU2VsZWN0
b3JGYWlsc0xvY2FsbHk7CiAKICAgICAvLyBUaGUgcmVzdCBvZiB0aGUgc2VsZWN0b3JzIGhhcyB0
byBtYXRjaApAQCAtMTgwNCw2ICsxODI0LDE3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9y
TWF0Y2ggQ1NTU3R5bGUKICAgICAgICAgaWYgKG1fcHNldWRvU3R5bGUgIT0gTk9QU0VVRE8gJiYg
bV9wc2V1ZG9TdHlsZSAhPSBkeW5hbWljUHNldWRvKQogICAgICAgICAgICAgcmV0dXJuIFNlbGVj
dG9yRmFpbHNDb21wbGV0ZWx5OwogCisgICAgLy8gQ2hlY2sgZm9yIG5lc3RlZCBsaW5rcy4KKyAg
ICBpZiAobV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcykgeworICAgICAgICBSZW5kZXJTdHlsZSog
Y3VycmVudFN0eWxlID0gZWxlbWVudFN0eWxlID8gZWxlbWVudFN0eWxlIDogZS0+cmVuZGVyU3R5
bGUoKTsKKyAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS0+bGlua1N0YXRlKCkgIT0gTm9uZUxpbmtT
dGF0ZSAmJiBlLT5pc0xpbmsoKSkgeworICAgICAgICAgICAgaWYgKGVuY291bnRlcmVkTGluaykK
KyAgICAgICAgICAgICAgICBtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzID0gZmFsc2U7IC8vIFRo
aXMgbGluayBpcyBub3QgcmVsZXZhbnQgdG8gdGhlIHN0eWxlIGJlaW5nIHJlc29sdmVkLCBzbyBk
aXNhYmxlIG1hdGNoaW5nLgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVuY291
bnRlcmVkTGluayA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKICAgICBzd2l0Y2ggKHJlbGF0
aW9uKSB7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6CiAgICAgICAgICAg
ICB3aGlsZSAodHJ1ZSkgewpAQCAtMTgxMSw3ICsxODQyLDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6
U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNF
bGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0Nv
bXBsZXRlbHk7CiAgICAgICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsK
LSAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWws
IGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVj
dG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOwogICAgICAg
ICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckZhaWxzTG9jYWxseSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAgICAgICAgfQpAQCAtMTgyMiw3ICsxODUzLDcg
QEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAg
aWYgKCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNl
bGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1l
bnQqPihuKTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0
b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJu
IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxz
ZSwgZW5jb3VudGVyZWRMaW5rKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpEaXJlY3RBZGphY2VudDoKICAgICAgICAgewpAQCAtMTgzNyw3ICsxODY4LDggQEAgQ1NTU3R5
bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgaWYgKCFuKQog
ICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzTG9jYWxseTsKICAgICAgICAgICAg
IGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tT
ZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBmYWxz
ZSk7IAorICAgICAgICAgICAgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IGZhbHNlOworICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5h
bWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rKTsgCiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDoKICAgICAgICAgICAgIGlmICghbV9j
b2xsZWN0UnVsZXNPbmx5ICYmIGUtPnBhcmVudE5vZGUoKSAmJiBlLT5wYXJlbnROb2RlKCktPmlz
RWxlbWVudE5vZGUoKSkgewpAQCAtMTg1Miw3ICsxODg0LDggQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6
U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgICAgIGlmICghbikKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5OwogICAgICAgICAgICAgICAg
IGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICAgICAgU2VsZWN0b3JN
YXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWlj
UHNldWRvLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIG1fbWF0Y2hWaXNpdGVkUHNl
dWRvQ2xhc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0g
Y2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNl
LCBlbmNvdW50ZXJlZExpbmspOwogICAgICAgICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3Rv
ckZhaWxzTG9jYWxseSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAg
ICAgICAgfTsKQEAgLTE4NjQsNyArMTg5Nyw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9y
TWF0Y2ggQ1NTU3R5bGUKICAgICAgICAgICAgIGlmICgoZWxlbWVudFN0eWxlIHx8IG1fY29sbGVj
dFJ1bGVzT25seSkgJiYgZHluYW1pY1BzZXVkbyAhPSBOT1BTRVVETyAmJiBkeW5hbWljUHNldWRv
ICE9IFNFTEVDVElPTiAmJgogICAgICAgICAgICAgICAgICEoKFJlbmRlclNjcm9sbGJhcjo6c2Ny
b2xsYmFyRm9yU3R5bGVSZXNvbHZlKCkgfHwgZHluYW1pY1BzZXVkbyA9PSBTQ1JPTExCQVJfQ09S
TkVSIHx8IGR5bmFtaWNQc2V1ZG8gPT0gUkVTSVpFUikgJiYgc2VsLT5tX21hdGNoID09IENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFp
bHNDb21wbGV0ZWx5OwotICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBz
ZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc0FuY2VzdG9yLCB0cnVlLCBlbGVtZW50U3R5
bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3Rv
cihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291bnRlcmVk
TGluaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpOwogICAgIH0KIAogICAgIHJl
dHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKQEAgLTE5MzcsNyArMTk3MCw3IEBAIHN0YXRp
YyBib29sIGh0bWxBdHRyaWJ1dGVIYXNDYXNlSW5zZW5zaXQKICAgICByZXR1cm4gaXNQb3NzaWJs
ZUhUTUxBdHRyICYmIGh0bWxDYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVzU2V0LT5jb250YWlucyhh
dHRyLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQq
IGUsIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYg
ZHluYW1pY1BzZXVkbywgYm9vbCBpc0FuY2VzdG9yLCBib29sIGlzU3ViU2VsZWN0b3IsIFJlbmRl
clN0eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNv
bnN0Citib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxl
Y3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0cmluZ0lt
cGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJT
ZWxlY3RvciwgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQ
YXJlbnRTdHlsZSkgY29uc3QKIHsKICAgICBpZiAoIWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTIwMzgsNyArMjA3MSw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVj
a2VyOjoKICAgICAgICAgICAgICAgICAvLyB0aGUgcGFyc2VyIGVuZm9yY2VzIHRoYXQgdGhpcyBu
ZXZlciBvY2N1cnMKICAgICAgICAgICAgICAgICBBU1NFUlQoIXN1YlNlbC0+c2ltcGxlU2VsZWN0
b3IoKSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc3ViU2VsLCBl
LCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc0FuY2VzdG9yLCB0cnVlLCBlbGVtZW50
U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgICAgICAgICAgICAgaWYgKCFjaGVja09u
ZVNlbGVjdG9yKHN1YlNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwg
ZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChkeW5hbWljUHNl
dWRvICE9IE5PUFNFVURPICYmIChSZW5kZXJTY3JvbGxiYXI6OnNjcm9sbGJhckZvclN0eWxlUmVz
b2x2ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NPUk5FUiB8fCBkeW5hbWljUHNl
dWRvID09IFJFU0laRVIpKSB7CkBAIC0yMzQ2LDEwICsyMzc5LDE2IEBAIGJvb2wgQ1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9BbnlMaW5rOgotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1
ZG9Vbmtub3duKQotICAgICAgICAgICAgICAgICAgICBwc2V1ZG9TdGF0ZSA9IGNoZWNrUHNldWRv
U3RhdGUoZSwgZmFsc2UpOwotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1
ZG9BbnlMaW5rIHx8IHBzZXVkb1N0YXRlID09IFBzZXVkb0xpbmsgfHwgcHNldWRvU3RhdGUgPT0g
UHNldWRvVmlzaXRlZCkKKyAgICAgICAgICAgICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNldWRv
VW5rbm93bikgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2xvciYgbGlua0NvbG9yID0g
ZS0+ZG9jdW1lbnQoKS0+bGlua0NvbG9yKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IENv
bG9yJiB2aXNpdGVkQ29sb3IgPSBlLT5kb2N1bWVudCgpLT52aXNpdGVkTGlua0NvbG9yKCk7Cisg
ICAgICAgICAgICAgICAgICAgIHBzZXVkb1N0YXRlID0gY2hlY2tQc2V1ZG9TdGF0ZShlLCBsaW5r
Q29sb3IgIT0gdmlzaXRlZENvbG9yKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb0FueUxpbmsgfHwgcHNldWRvU3RhdGUgPT0gUHNl
dWRvTGluayB8fCBwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9WaXNpdGVkKSB7CisgICAgICAgICAgICAg
ICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gZWxlbWVudFN0eWxlID8gZWxlbWVudFN0
eWxlIDogZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0TGlua1N0YXRl
RnJvbVBzZXVkb1N0YXRlKGNoaWxkU3R5bGUsIHBzZXVkb1N0YXRlKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQXV0b2ZpbGw6IHsKICAg
ICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCkBAIC0y
MzYxLDE0ICsyNDAwLDIwIEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2Vy
OjoKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xpbms6CiAgICAgICAgICAg
ICAgICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb1Vua25vd24gfHwgcHNldWRvU3RhdGUgPT0g
UHNldWRvQW55TGluaykKICAgICAgICAgICAgICAgICAgICAgcHNldWRvU3RhdGUgPSBjaGVja1Bz
ZXVkb1N0YXRlKGUpOwotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9M
aW5rKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBp
ZiAocHNldWRvU3RhdGUgPT0gUHNldWRvTGluayB8fCBwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9WaXNp
dGVkKSB7CisgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gZWxl
bWVudFN0eWxlID8gZWxlbWVudFN0eWxlIDogZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2V0TGlua1N0YXRlRnJvbVBzZXVkb1N0YXRlKGNoaWxkU3R5bGUsIHBzZXVkb1N0
YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBzZXVkb1N0YXRlID09IFBzZXVkb0xp
bmsgfHwgIW1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3M7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
VmlzaXRlZDoKICAgICAgICAgICAgICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNldWRvVW5rbm93
biB8fCBwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9BbnlMaW5rKQogICAgICAgICAgICAgICAgICAgICBw
c2V1ZG9TdGF0ZSA9IGNoZWNrUHNldWRvU3RhdGUoZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHBz
ZXVkb1N0YXRlID09IFBzZXVkb1Zpc2l0ZWQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9WaXNpdGVkKSB7
CisgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gZWxlbWVudFN0
eWxlID8gZWxlbWVudFN0eWxlIDogZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2V0TGlua1N0YXRlRnJvbVBzZXVkb1N0YXRlKGNoaWxkU3R5bGUsIHBzZXVkb1N0YXRlKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3M7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvRHJhZzogewogICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
U3R5bGUpCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCShyZXZpc2lvbiA1Njg1OSkKKysrIFdl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcs
NyBAQCBwdWJsaWM6CiAKICAgICAgICAgdm9pZCBpbml0RWxlbWVudEFuZFBzZXVkb1N0YXRlKEVs
ZW1lbnQqKTsKICAgICAgICAgdm9pZCBpbml0Rm9yU3R5bGVSZXNvbHZlKEVsZW1lbnQqLCBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsKLSAgICAgICAg
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUgPSAwLCBib29sIGFsbG93U2hhcmluZyA9IHRydWUsIGJvb2wgcmVz
b2x2ZUZvclJvb3REZWZhdWx0ID0gZmFsc2UpOworICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBzdHlsZUZvckVsZW1lbnQoRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9
IDAsIGJvb2wgYWxsb3dTaGFyaW5nID0gdHJ1ZSwgYm9vbCByZXNvbHZlRm9yUm9vdERlZmF1bHQg
PSBmYWxzZSwgYm9vbCBtYXRjaFZpc2l0ZWRMaW5rcyA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBr
ZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihFbGVtZW50KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBL
ZXlmcmFtZUxpc3QmIGxpc3QpOwogCiAgICAgICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHBz
ZXVkb1N0eWxlRm9yRWxlbWVudChQc2V1ZG9JZCwgRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJl
bnRTdHlsZSA9IDApOwpAQCAtMTk2LDggKzE5Niw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFNl
bGVjdG9yQ2hlY2tlcihEb2N1bWVudCosIGJvb2wgc3RyaWN0UGFyc2luZyk7CiAKICAgICAgICAg
ICAgIGJvb2wgY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqKSBjb25zdDsKLSAg
ICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1l
bnQqLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQm
IGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNBbmNlc3RvciwgYm9vbCBpc1N1YlNlbGVjdG9yLCBSZW5k
ZXJTdHlsZSogPSAwLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlID0gMCkgY29uc3Q7
Ci0gICAgICAgICAgICBib29sIGNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50
KiwgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBk
eW5hbWljUHNldWRvLCBib29sIGlzQW5jZXN0b3IsIGJvb2wgaXNTdWJTZWxlY3RvciwgUmVuZGVy
U3R5bGUqLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdDsKKyAgICAgICAg
ICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBI
YXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFt
aWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJlbmRl
clN0eWxlKiA9IDAsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUgPSAwKSBjb25zdDsK
KyAgICAgICAgICAgIGJvb2wgY2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQq
LCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5
bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHls
ZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdDsKICAgICAgICAgICAgIFBzZXVkb1N0YXRlIGNo
ZWNrUHNldWRvU3RhdGUoRWxlbWVudCosIGJvb2wgY2hlY2tWaXNpdGVkID0gdHJ1ZSkgY29uc3Q7
CiAgICAgICAgICAgICBib29sIGNoZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3Iq
LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbykgY29uc3Q7CiAKQEAgLTIwOSw2ICsyMDksNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBib29sIG1fY29sbGVjdFJ1bGVzT25seTsKICAgICAgICAgICAg
IFBzZXVkb0lkIG1fcHNldWRvU3R5bGU7CiAgICAgICAgICAgICBib29sIG1fZG9jdW1lbnRJc0hU
TUw7CisgICAgICAgICAgICBtdXRhYmxlIGJvb2wgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzczsK
ICAgICAgICAgICAgIG11dGFibGUgSGFzaFNldDxMaW5rSGFzaCwgTGlua0hhc2hIYXNoPiBtX2xp
bmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZTsKICAgICAgICAgfTsKIApAQCAtMjc5LDcgKzI4MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgQ1NTVmFsdWUqIG1fbGluZUhlaWdodFZhbHVlOwogICAgICAg
ICBib29sIG1fZm9udERpcnR5OwogICAgICAgICBib29sIG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5
bGVzOwotCisgICAgICAgIAogICAgICAgICBSZWZQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRT
ZWxlY3RvcjsKICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4gbV9zZWxlY3RvckF0
dHJzOwogICAgICAgICBWZWN0b3I8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qPiBtX2FkZGl0
aW9uYWxBdHRyaWJ1dGVTdHlsZURlY2xzOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJJbmxpbmVG
bG93Qm94LmgiCiAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsbGlwc2lzQm94
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC03NjAsNyArNzYxLDcgQEAgdm9p
ZCBJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKAogICAgICAgICBpZiAoc3R5bGVU
b1VzZS0+Ym94U2hhZG93KCkpCiAgICAgICAgICAgICBwYWludEJveFNoYWRvdyhjb250ZXh0LCBz
dHlsZVRvVXNlLCBOb3JtYWwsIHR4LCB0eSwgdywgaCk7CiAKLSAgICAgICAgQ29sb3IgYyA9IHN0
eWxlVG9Vc2UtPmJhY2tncm91bmRDb2xvcigpOworICAgICAgICBDb2xvciBjID0gcmVuZGVyZXIo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKG1fZmlyc3RMaW5lLCBzdHlsZVRvVXNlLCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8s
IGMsIHN0eWxlVG9Vc2UtPmJhY2tncm91bmRMYXllcnMoKSwgdHgsIHR5LCB3LCBoKTsKIAogICAg
ICAgICBpZiAoc3R5bGVUb1VzZS0+Ym94U2hhZG93KCkpCkBAIC05NTcsNyArOTU4LDcgQEAgdm9p
ZCBJbmxpbmVGbG93Qm94OjpwYWludFRleHREZWNvcmF0aW9ucwogICAgICAgICB0eCArPSBib3Jk
ZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpOwogCiAgICAgICAgIENvbG9yIHVuZGVybGluZSwgb3Zl
cmxpbmUsIGxpbmV0aHJvdWdoOwotICAgICAgICB1bmRlcmxpbmUgPSBvdmVybGluZSA9IGxpbmV0
aHJvdWdoID0gc3R5bGVUb1VzZS0+Y29sb3IoKTsKKyAgICAgICAgdW5kZXJsaW5lID0gb3Zlcmxp
bmUgPSBsaW5ldGhyb3VnaCA9IHJlbmRlcmVyKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihtX2Zp
cnN0TGluZSwgc3R5bGVUb1VzZSwgQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgICAgIGlmICghcGFy
ZW50KCkpCiAgICAgICAgICAgICByZW5kZXJlcigpLT5nZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhk
ZWNvLCB1bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3VnaCk7CiAKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTEsMTggKzQxMSwxNCBA
QCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFJlbmRlck9iamVjdDo6CiAgICAgICAgIHRleHRG
aWxsQ29sb3IgPSBDb2xvcjo6YmxhY2s7CiAgICAgICAgIHRleHRTdHJva2VDb2xvciA9IENvbG9y
OjpibGFjazsKICAgICB9IGVsc2UgewotICAgICAgICB0ZXh0RmlsbENvbG9yID0gc3R5bGVUb1Vz
ZS0+dGV4dEZpbGxDb2xvcigpOwotICAgICAgICBpZiAoIXRleHRGaWxsQ29sb3IuaXNWYWxpZCgp
KQotICAgICAgICAgICAgdGV4dEZpbGxDb2xvciA9IHN0eWxlVG9Vc2UtPmNvbG9yKCk7Ci0KKyAg
ICAgICAgdGV4dEZpbGxDb2xvciA9IHJlbmRlcmVyKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvciht
X2ZpcnN0TGluZSwgc3R5bGVUb1VzZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKTsK
KyAgICAgICAgCiAgICAgICAgIC8vIE1ha2UgdGhlIHRleHQgZmlsbCBjb2xvciBsZWdpYmxlIGFn
YWluc3QgYSB3aGl0ZSBiYWNrZ3JvdW5kCiAgICAgICAgIGlmIChzdHlsZVRvVXNlLT5mb3JjZUJh
Y2tncm91bmRzVG9XaGl0ZSgpKQogICAgICAgICAgICAgdGV4dEZpbGxDb2xvciA9IGNvcnJlY3Rl
ZFRleHRDb2xvcih0ZXh0RmlsbENvbG9yLCBDb2xvcjo6d2hpdGUpOwogCi0gICAgICAgIHRleHRT
dHJva2VDb2xvciA9IHN0eWxlVG9Vc2UtPnRleHRTdHJva2VDb2xvcigpOwotICAgICAgICBpZiAo
IXRleHRTdHJva2VDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICB0ZXh0U3Ryb2tlQ29sb3Ig
PSBzdHlsZVRvVXNlLT5jb2xvcigpOwotCisgICAgICAgIHRleHRTdHJva2VDb2xvciA9IHJlbmRl
cmVyKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihtX2ZpcnN0TGluZSwgc3R5bGVUb1VzZSwgQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IpOworICAgICAgICAKICAgICAgICAgLy8gTWFr
ZSB0aGUgdGV4dCBzdHJva2UgY29sb3IgbGVnaWJsZSBhZ2FpbnN0IGEgd2hpdGUgYmFja2dyb3Vu
ZAogICAgICAgICBpZiAoc3R5bGVUb1VzZS0+Zm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoKSkKICAg
ICAgICAgICAgIHRleHRTdHJva2VDb2xvciA9IGNvcnJlY3RlZFRleHRDb2xvcih0ZXh0U3Ryb2tl
Q29sb3IsIENvbG9yOjp3aGl0ZSk7CkBAIC01MTcsNyArNTEzLDcgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludChSZW5kZXJPYmplY3Q6OgogCiAgICAgLy8gUGFpbnQgZGVjb3JhdGlvbnMKICAg
ICBpZiAoZCAhPSBURE5PTkUgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rp
b24gJiYgc3R5bGVUb1VzZS0+aHRtbEhhY2tzKCkpIHsKLSAgICAgICAgY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3Ioc3R5bGVUb1VzZS0+Y29sb3IoKSwgc3R5bGVUb1VzZS0+Y29sb3JTcGFjZSgpKTsK
KyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IocmVuZGVyZXIoKS0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKG1fZmlyc3RMaW5lLCBzdHlsZVRvVXNlLCBDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5
bGVUb1VzZS0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgcGFpbnREZWNvcmF0aW9uKGNvbnRleHQs
IHR4LCB0eSwgZCwgdGV4dFNoYWRvdyk7CiAgICAgfQogCkBAIC01NzcsNyArNTczLDcgQEAgdm9p
ZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFwaAogICAgIGlmIChzUG9zID49IGVQ
b3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbG9yIHRleHRDb2xvciA9IHN0eWxlLT5jb2xv
cigpOworICAgIENvbG9yIHRleHRDb2xvciA9IHJlbmRlcmVyKCktPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihtX2ZpcnN0TGluZSwgc3R5bGUsIENTU1Byb3BlcnR5Q29sb3IpOwogICAgIENvbG9yIGMg
PSByZW5kZXJlcigpLT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKICAgICBpZiAoIWMuaXNW
YWxpZCgpIHx8IGMuYWxwaGEoKSA9PSAwKQogICAgICAgICByZXR1cm47CkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Niw3ICsxNTQ2LDcgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6cGFpbnQoUGFpbnRJbmZvJiBwYWludAogCiB2b2lkIFJlbmRlckJsb2Nr
OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkK
IHsKLSAgICBjb25zdCBDb2xvciYgcnVsZUNvbG9yID0gc3R5bGUoKS0+Y29sdW1uUnVsZUNvbG9y
KCk7CisgICAgY29uc3QgQ29sb3ImIHJ1bGVDb2xvciA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihm
YWxzZSwgc3R5bGUoKSwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IpOwogICAgIGJv
b2wgcnVsZVRyYW5zcGFyZW50ID0gc3R5bGUoKS0+Y29sdW1uUnVsZUlzVHJhbnNwYXJlbnQoKTsK
ICAgICBFQm9yZGVyU3R5bGUgcnVsZVN0eWxlID0gc3R5bGUoKS0+Y29sdW1uUnVsZVN0eWxlKCk7
CiAgICAgaW50IHJ1bGVXaWR0aCA9IHN0eWxlKCktPmNvbHVtblJ1bGVXaWR0aCgpOwpAQCAtMTU4
MSw3ICsxNTgxLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDb2x1bW5SdWxlcyhQYWludAog
ICAgICAgICAgICAgaW50IHJ1bGVUb3AgPSB0eSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgp
OwogICAgICAgICAgICAgaW50IHJ1bGVCb3R0b20gPSBydWxlVG9wICsgY29udGVudEhlaWdodCgp
OwogICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKHBhaW50SW5mby5jb250ZXh0LCBydWxl
U3RhcnQsIHJ1bGVUb3AsIHJ1bGVFbmQsIHJ1bGVCb3R0b20sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gQlNMZWZ0IDogQlNSaWdo
dCwgcnVsZUNvbG9yLCBzdHlsZSgpLT5jb2xvcigpLCBydWxlU3R5bGUsIDAsIDApOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUiA/IEJT
TGVmdCA6IEJTUmlnaHQsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwKTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgcnVsZVggPSBjdXJyWE9mZnNldDsKQEAgLTE3NjAsNyArMTc2MCw3
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYKIAogICAgIC8vIDUu
IHBhaW50IG91dGxpbmUuCiAgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5l
IHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBoYXNPdXRsaW5lKCkg
JiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCi0gICAgICAgIHBhaW50T3V0bGlu
ZShwYWludEluZm8uY29udGV4dCwgdHgsIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSwgc3R5bGUoKSk7
CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgdHgsIHR5LCB3aWR0aCgp
LCBoZWlnaHQoKSk7CiAKICAgICAvLyA2LiBwYWludCBjb250aW51YXRpb24gb3V0bGluZXMuCiAg
ICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0g
UGFpbnRQaGFzZUNoaWxkT3V0bGluZXMpKSB7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMzLDE1ICs5
MzMsMTUgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllYwogfQogCiB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGJvb2wgYmVnaW4s
IGJvb2wgZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlLCBib29sIGJlZ2luLCBib29sIGVuZCkKIHsKICAgICBpZiAocGFp
bnROaW5lUGllY2VJbWFnZShncmFwaGljc0NvbnRleHQsIHR4LCB0eSwgdywgaCwgc3R5bGUsIHN0
eWxlLT5ib3JkZXJJbWFnZSgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgQ29sb3Im
IHRvcENvbG9yID0gc3R5bGUtPmJvcmRlclRvcENvbG9yKCk7Ci0gICAgY29uc3QgQ29sb3ImIGJv
dHRvbUNvbG9yID0gc3R5bGUtPmJvcmRlckJvdHRvbUNvbG9yKCk7Ci0gICAgY29uc3QgQ29sb3Im
IGxlZnRDb2xvciA9IHN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKTsKLSAgICBjb25zdCBDb2xvciYg
cmlnaHRDb2xvciA9IHN0eWxlLT5ib3JkZXJSaWdodENvbG9yKCk7CisgICAgY29uc3QgQ29sb3Im
IHRvcENvbG9yID0gdmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNlLCBzdHlsZSwgQ1NTUHJvcGVy
dHlCb3JkZXJUb3BDb2xvcik7CisgICAgY29uc3QgQ29sb3ImIGJvdHRvbUNvbG9yID0gdmlzaXRl
ZERlcGVuZGVudENvbG9yKGZhbHNlLCBzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xv
cik7CisgICAgY29uc3QgQ29sb3ImIGxlZnRDb2xvciA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihm
YWxzZSwgc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKTsKKyAgICBjb25zdCBDb2xv
ciYgcmlnaHRDb2xvciA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwgc3R5bGUsIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRDb2xvcik7CiAKICAgICBib29sIHRvcFRyYW5zcGFyZW50ID0gc3R5
bGUtPmJvcmRlclRvcElzVHJhbnNwYXJlbnQoKTsKICAgICBib29sIGJvdHRvbVRyYW5zcGFyZW50
ID0gc3R5bGUtPmJvcmRlckJvdHRvbUlzVHJhbnNwYXJlbnQoKTsKQEAgLTEwMDYsNyArMTAwNiw3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEcKICAgICAgICAgICAg
IHgyIC09IHRvcFJpZ2h0LndpZHRoKCk7CiAgICAgICAgIH0KIAotICAgICAgICBkcmF3TGluZUZv
ckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4LCB0eSwgeDIsIHR5ICsgc3R5bGUtPmJvcmRlclRv
cFdpZHRoKCksIEJTVG9wLCB0b3BDb2xvciwgc3R5bGUtPmNvbG9yKCksIHRvcFN0eWxlLAorICAg
ICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4LCB0eSwgeDIsIHR5ICsg
c3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIEJTVG9wLCB0b3BDb2xvciwgdG9wU3R5bGUsCiAgICAg
ICAgICAgICAgICAgICAgaWdub3JlX2xlZnQgPyAwIDogc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgp
LCBpZ25vcmVfcmlnaHQgPyAwIDogc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSk7CiAKICAgICAg
ICAgaWYgKHJlbmRlclJhZGlpKSB7CkBAIC0xMDM0LDcgKzEwMzQsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHCiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IHVw
cGVyIGxlZnQgYXJjCiAgICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3ND
b250ZXh0LCBsZWZ0WCwgbGVmdFksIHRoaWNrbmVzcywgdG9wTGVmdCwgZmlyc3RBbmdsZVN0YXJ0
LCBmaXJzdEFuZ2xlU3BhbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTVG9wLCB0
b3BDb2xvciwgc3R5bGUtPmNvbG9yKCksIHRvcFN0eWxlLCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJTVG9wLCB0b3BDb2xvciwgdG9wU3R5bGUsIHRydWUpOwogICAgICAg
ICAgICAgICAgIGlmIChhcHBseUxlZnRJbm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICAgICAgfQpAQCAtMTA2MCw3ICsxMDYw
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoRwogCiAgICAgICAg
ICAgICAgICAgLy8gRHJhdyB1cHBlciByaWdodCBhcmMKICAgICAgICAgICAgICAgICBkcmF3QXJj
Rm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHJpZ2h0WCwgbGVmdFksIHRoaWNrbmVzcywgdG9w
UmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJTVG9wLCB0b3BDb2xvciwgc3R5bGUtPmNvbG9yKCksIHRvcFN0eWxl
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1RvcCwgdG9wQ29sb3Is
IHRvcFN0eWxlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5UmlnaHRJbm5lckNs
aXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAg
ICAgICAgICAgfQpAQCAtMTA4Myw3ICsxMDgzLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3JkZXIoRwogICAgICAgICAgICAgeDIgLT0gYm90dG9tUmlnaHQud2lkdGgoKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQs
IHgsIHR5ICsgaCAtIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpLCB4MiwgdHkgKyBoLCBCU0Jv
dHRvbSwgYm90dG9tQ29sb3IsIHN0eWxlLT5jb2xvcigpLCBib3R0b21TdHlsZSwKKyAgICAgICAg
ZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeCwgdHkgKyBoIC0gc3R5bGUtPmJv
cmRlckJvdHRvbVdpZHRoKCksIHgyLCB0eSArIGgsIEJTQm90dG9tLCBib3R0b21Db2xvciwgYm90
dG9tU3R5bGUsCiAgICAgICAgICAgICAgICAgICAgaWdub3JlX2xlZnQgPyAwIDogc3R5bGUtPmJv
cmRlckxlZnRXaWR0aCgpLCBpZ25vcmVfcmlnaHQgPyAwIDogc3R5bGUtPmJvcmRlclJpZ2h0V2lk
dGgoKSk7CiAKICAgICAgICAgaWYgKHJlbmRlclJhZGlpKSB7CkBAIC0xMTExLDcgKzExMTEsNyBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHCiAKICAgICAgICAgICAg
ICAgICAvLyBEcmF3IGxvd2VyIGxlZnQgYXJjCiAgICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJv
eFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBsZWZ0WCwgbGVmdFksIHRoaWNrbmVzcywgYm90dG9tTGVm
dCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJTQm90dG9tLCBib3R0b21Db2xvciwgc3R5bGUtPmNvbG9yKCksIGJvdHRvbVN0
eWxlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTQm90dG9tLCBib3R0
b21Db2xvciwgYm90dG9tU3R5bGUsIHRydWUpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseUxl
ZnRJbm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9y
ZSgpOwogICAgICAgICAgICAgfQpAQCAtMTEzMyw3ICsxMTMzLDcgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoRwogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyBsb3dl
ciByaWdodCBhcmMKICAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0Nv
bnRleHQsIHJpZ2h0WCwgcmlnaHRZLCB0aGlja25lc3MsIGJvdHRvbVJpZ2h0LCBzZWNvbmRBbmds
ZVN0YXJ0LCBzZWNvbmRBbmdsZVNwYW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
U0JvdHRvbSwgYm90dG9tQ29sb3IsIHN0eWxlLT5jb2xvcigpLCBib3R0b21TdHlsZSwgZmFsc2Up
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNCb3R0b20sIGJvdHRvbUNvbG9yLCBi
b3R0b21TdHlsZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseVJpZ2h0SW5uZXJD
bGlwKQogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAg
ICAgICAgICAgIH0KQEAgLTExNTYsNyArMTE1Niw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKEcKICAgICAgICAgICAgIHkyIC09IGJvdHRvbUxlZnQuaGVpZ2h0KCk7
CiAgICAgICAgIH0KIAotICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0
LCB0eCwgeSwgdHggKyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHkyLCBCU0xlZnQsIGxlZnRD
b2xvciwgc3R5bGUtPmNvbG9yKCksIGxlZnRTdHlsZSwKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgdHgsIHksIHR4ICsgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgp
LCB5MiwgQlNMZWZ0LCBsZWZ0Q29sb3IsIGxlZnRTdHlsZSwKICAgICAgICAgICAgICAgICAgICBp
Z25vcmVfdG9wID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBpZ25vcmVfYm90dG9tID8g
MCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKIAogICAgICAgICBpZiAocmVuZGVyUmFk
aWkgJiYgKCF1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCB8fCAhbG93ZXJMZWZ0Qm9yZGVyU3R5
bGVzTWF0Y2gpKSB7CkBAIC0xMTc5LDcgKzExNzksNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJvcmRlcihHCiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IHRvcCBsZWZ0IGFy
YwogICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdG9w
WCwgdG9wWSwgdGhpY2tuZXNzLCB0b3BMZWZ0LCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVT
cGFuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNMZWZ0LCBsZWZ0Q29sb3IsIHN0
eWxlLT5jb2xvcigpLCBsZWZ0U3R5bGUsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQlNMZWZ0LCBsZWZ0Q29sb3IsIGxlZnRTdHlsZSwgdHJ1ZSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGFwcGx5VG9wSW5uZXJDbGlwKQogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KQEAgLTEyMDAsNyArMTIwMCw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEcKIAogICAgICAgICAgICAgICAg
IC8vIERyYXcgYm90dG9tIGxlZnQgYXJjCiAgICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNp
ZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCBib3R0b21ZLCB0aGlja25lc3MsIGJvdHRvbUxlZnQs
IHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJTTGVmdCwgbGVmdENvbG9yLCBzdHlsZS0+Y29sb3IoKSwgbGVmdFN0eWxlLCBm
YWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU0xlZnQsIGxlZnRDb2xvciwg
bGVmdFN0eWxlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5Qm90dG9tSW5uZXJD
bGlwKQogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAg
ICAgICAgICAgIH0KQEAgLTEyMjUsNyArMTIyNSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKEcKICAgICAgICAgICAgIHkyIC09IGJvdHRvbVJpZ2h0LmhlaWdodCgp
OwogICAgICAgICB9CiAKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4
dCwgdHggKyB3IC0gc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwgeSwgdHggKyB3LCB5MiwgQlNS
aWdodCwgcmlnaHRDb2xvciwgc3R5bGUtPmNvbG9yKCksIHJpZ2h0U3R5bGUsCisgICAgICAgIGRy
YXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4ICsgdyAtIHN0eWxlLT5ib3JkZXJS
aWdodFdpZHRoKCksIHksIHR4ICsgdywgeTIsIEJTUmlnaHQsIHJpZ2h0Q29sb3IsIHJpZ2h0U3R5
bGUsCiAgICAgICAgICAgICAgICAgICAgaWdub3JlX3RvcCA/IDAgOiBzdHlsZS0+Ym9yZGVyVG9w
V2lkdGgoKSwgaWdub3JlX2JvdHRvbSA/IDAgOiBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7
CiAKICAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmICghdXBwZXJSaWdodEJvcmRlclN0eWxlc01h
dGNoIHx8ICFsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gpKSB7CkBAIC0xMjQ4LDcgKzEyNDgs
NyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHCiAKICAgICAgICAg
ICAgICAgICAvLyBEcmF3IHRvcCByaWdodCBhcmMKICAgICAgICAgICAgICAgICBkcmF3QXJjRm9y
Qm94U2lkZShncmFwaGljc0NvbnRleHQsIHRvcFgsIHRvcFksIHRoaWNrbmVzcywgdG9wUmlnaHQs
IGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCU1JpZ2h0LCByaWdodENvbG9yLCBzdHlsZS0+Y29sb3IoKSwgcmlnaHRTdHlsZSwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1JpZ2h0LCByaWdodENvbG9y
LCByaWdodFN0eWxlLCB0cnVlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlUb3BJbm5lckNs
aXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAg
ICAgICAgICAgfQpAQCAtMTI3MCw3ICsxMjcwLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3JkZXIoRwogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyBib3R0b20gcmlnaHQg
YXJjCiAgICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBi
b3R0b21YLCBib3R0b21ZLCB0aGlja25lc3MsIGJvdHRvbVJpZ2h0LCBzZWNvbmRBbmdsZVN0YXJ0
LCBzZWNvbmRBbmdsZVNwYW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1JpZ2h0
LCByaWdodENvbG9yLCBzdHlsZS0+Y29sb3IoKSwgcmlnaHRTdHlsZSwgZmFsc2UpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQlNSaWdodCwgcmlnaHRDb2xvciwgcmlnaHRTdHlsZSwg
ZmFsc2UpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseUJvdHRvbUlubmVyQ2xpcCkKICAgICAg
ICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCShyZXZpc2lvbiA1Njg1OSkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlckZp
ZWxkc2V0LmgiCiAKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKQEAgLTE4MSw4ICsxODIs
OCBAQCB2b2lkIFJlbmRlckZpZWxkc2V0OjpwYWludE1hc2soUGFpbnRJbmZvCiB2b2lkIFJlbmRl
ckZpZWxkc2V0OjpwYWludEJvcmRlck1pbnVzTGVnZW5kKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBpbnQgdHgsIGludCB0eSwgaW50IHcsIGludCBoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGlu
dCBseCwgaW50IGx3LCBpbnQgbGIpCiB7Ci0gICAgY29uc3QgQ29sb3ImIHRjID0gc3R5bGUtPmJv
cmRlclRvcENvbG9yKCk7Ci0gICAgY29uc3QgQ29sb3ImIGJjID0gc3R5bGUtPmJvcmRlckJvdHRv
bUNvbG9yKCk7CisgICAgY29uc3QgQ29sb3ImIHRjID0gdmlzaXRlZERlcGVuZGVudENvbG9yKGZh
bHNlLCBzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcik7CisgICAgY29uc3QgQ29sb3Im
IGJjID0gdmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNlLCBzdHlsZSwgQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21Db2xvcik7CiAKICAgICBFQm9yZGVyU3R5bGUgdHMgPSBzdHlsZS0+Ym9yZGVyVG9w
U3R5bGUoKTsKICAgICBFQm9yZGVyU3R5bGUgYnMgPSBzdHlsZS0+Ym9yZGVyQm90dG9tU3R5bGUo
KTsKQEAgLTE5OSwyMiArMjAwLDIyIEBAIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm9yZGVy
TWludXNMZWcKIAogICAgIGlmIChyZW5kZXJfdCkgewogICAgICAgICBpZiAobHggPj0gYm9yZGVy
TGVmdFdpZHRoKQotICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4
dCwgdHgsIHR5LCB0eCArIG1pbihseCwgdyksIHR5ICsgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCks
IEJTVG9wLCB0Yywgc3R5bGUtPmNvbG9yKCksIHRzLAorICAgICAgICAgICAgZHJhd0xpbmVGb3JC
b3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHgsIHR5LCB0eCArIG1pbihseCwgdyksIHR5ICsgc3R5
bGUtPmJvcmRlclRvcFdpZHRoKCksIEJTVG9wLCB0YywgdHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgIChyZW5kZXJfbCAmJiAobHMgPT0gRE9UVEVEIHx8IGxzID09IERBU0hFRCB8fCBscyA9PSBE
T1VCTEUpID8gYm9yZGVyTGVmdFdpZHRoIDogMCksCiAgICAgICAgICAgICAgICAgICAgICAgIChs
eCA+PSB3ICYmIHJlbmRlcl9yICYmIChycyA9PSBET1RURUQgfHwgcnMgPT0gREFTSEVEIHx8IHJz
ID09IERPVUJMRSkgPyBib3JkZXJSaWdodFdpZHRoIDogMCkpOwogICAgICAgICBpZiAobHggKyBs
dyA8PSAgdyAtIGJvcmRlclJpZ2h0V2lkdGgpCi0gICAgICAgICAgICBkcmF3TGluZUZvckJveFNp
ZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCArIG1heCgwLCBseCArIGx3KSwgdHksIHR4ICsgdywgdHkg
KyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgQlNUb3AsIHRjLCBzdHlsZS0+Y29sb3IoKSwgdHMs
CisgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCArIG1h
eCgwLCBseCArIGx3KSwgdHksIHR4ICsgdywgdHkgKyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwg
QlNUb3AsIHRjLCB0cywKICAgICAgICAgICAgICAgICAgICAgICAgKGx4ICsgbHcgPD0gMCAmJiBy
ZW5kZXJfbCAmJiAobHMgPT0gRE9UVEVEIHx8IGxzID09IERBU0hFRCB8fCBscyA9PSBET1VCTEUp
ID8gYm9yZGVyTGVmdFdpZHRoIDogMCksCiAgICAgICAgICAgICAgICAgICAgICAgIChyZW5kZXJf
ciAmJiAocnMgPT0gRE9UVEVEIHx8IHJzID09IERBU0hFRCB8fCBycyA9PSBET1VCTEUpID8gYm9y
ZGVyUmlnaHRXaWR0aCA6IDApKTsKICAgICB9CiAKICAgICBpZiAocmVuZGVyX2IpCi0gICAgICAg
IGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4LCB0eSArIGggLSBzdHlsZS0+
Ym9yZGVyQm90dG9tV2lkdGgoKSwgdHggKyB3LCB0eSArIGgsIEJTQm90dG9tLCBiYywgc3R5bGUt
PmNvbG9yKCksIGJzLAorICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0
LCB0eCwgdHkgKyBoIC0gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHR4ICsgdywgdHkgKyBo
LCBCU0JvdHRvbSwgYmMsIGJzLAogICAgICAgICAgICAgICAgICAgIChyZW5kZXJfbCAmJiAobHMg
PT0gRE9UVEVEIHx8IGxzID09IERBU0hFRCB8fCBscyA9PSBET1VCTEUpID8gc3R5bGUtPmJvcmRl
ckxlZnRXaWR0aCgpIDogMCksCiAgICAgICAgICAgICAgICAgICAgKHJlbmRlcl9yICYmIChycyA9
PSBET1RURUQgfHwgcnMgPT0gREFTSEVEIHx8IHJzID09IERPVUJMRSkgPyBzdHlsZS0+Ym9yZGVy
UmlnaHRXaWR0aCgpIDogMCkpOwogCiAgICAgaWYgKHJlbmRlcl9sKSB7Ci0gICAgICAgIGNvbnN0
IENvbG9yJiBsYyA9IHN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKTsKKyAgICAgICAgY29uc3QgQ29s
b3ImIGxjID0gdmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNlLCBzdHlsZSwgQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0Q29sb3IpOwogICAgICAgICBpbnQgc3RhcnRZID0gdHk7CiAKICAgICAgICAgYm9v
bCBpZ25vcmVfdG9wID0KQEAgLTIzMyw4ICsyMzQsOCBAQCB2b2lkIFJlbmRlckZpZWxkc2V0Ojpw
YWludEJvcmRlck1pbnVzTGVnCiAgICAgICAgICAgICBzdGFydFkgPSBsYjsKICAgICAgICAgfQog
Ci0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4LCBzdGFydFks
IHR4ICsgYm9yZGVyTGVmdFdpZHRoLCB0eSArIGgsIEJTTGVmdCwgbGMsIHN0eWxlLT5jb2xvcigp
LCBscywKLSAgICAgICAgICAgICAgICAgICBpZ25vcmVfdG9wID8gMCA6IHN0eWxlLT5ib3JkZXJU
b3BXaWR0aCgpLCBpZ25vcmVfYm90dG9tID8gMCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgp
KTsKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHgsIHN0YXJ0
WSwgdHggKyBib3JkZXJMZWZ0V2lkdGgsIHR5ICsgaCwgQlNMZWZ0LCBsYywgbHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZ25vcmVfdG9wID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0
aCgpLCBpZ25vcmVfYm90dG9tID8gMCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAg
ICB9CiAKICAgICBpZiAocmVuZGVyX3IpIHsKQEAgLTI1Nyw3ICsyNTgsNyBAQCB2b2lkIFJlbmRl
ckZpZWxkc2V0OjpwYWludEJvcmRlck1pbnVzTGVnCiAgICAgICAgICAgICBzdGFydFkgPSBsYjsK
ICAgICAgICAgfQogCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQs
IHR4ICsgdyAtIGJvcmRlclJpZ2h0V2lkdGgsIHN0YXJ0WSwgdHggKyB3LCB0eSArIGgsIEJTUmln
aHQsIHJjLCBzdHlsZS0+Y29sb3IoKSwgcnMsCisgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShn
cmFwaGljc0NvbnRleHQsIHR4ICsgdyAtIGJvcmRlclJpZ2h0V2lkdGgsIHN0YXJ0WSwgdHggKyB3
LCB0eSArIGgsIEJTUmlnaHQsIHJjLCBycywKICAgICAgICAgICAgICAgICAgICBpZ25vcmVfdG9w
ID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBpZ25vcmVfYm90dG9tID8gMCA6IHN0eWxl
LT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAgICB9CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcwLDcgKzQ3MCw3IEBAIHZvaWQgUmVuZGVySW1h
Z2U6OnBhaW50Rm9jdXNSaW5ncyhQYWludEkKICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxQYXRo
PiBmb2N1c1JpbmdQYXRoczsKICAgICAgICAgZm9jdXNSaW5nUGF0aHMuYXBwZW5kKGFyZWFFbGVt
ZW50LT5nZXRQYXRoKHRoaXMpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdGb2N1
c1JpbmcoZm9jdXNSaW5nUGF0aHMsIHN0eWxlLT5vdXRsaW5lV2lkdGgoKSwgc3R5bGUtPm91dGxp
bmVPZmZzZXQoKSwgc3R5bGUtPm91dGxpbmVDb2xvcigpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUGF0aHMsIHN0eWxlLT5vdXRsaW5lV2lkdGgo
KSwgc3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgdmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNlLCBz
dHlsZSwgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
fQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2
NSwyMSArOTY1LDIwIEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoR3JhcGhpY3MK
ICAgICBpZiAoIWhhc091dGxpbmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChz
dHlsZSgpLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpKSB7
Ci0gICAgICAgIGludCBvdyA9IHN0eWxlKCktPm91dGxpbmVXaWR0aCgpOwotICAgICAgICBDb2xv
ciBvYyA9IHN0eWxlKCktPm91dGxpbmVDb2xvcigpOwotICAgICAgICBpZiAoIW9jLmlzVmFsaWQo
KSkKLSAgICAgICAgICAgIG9jID0gc3R5bGUoKS0+Y29sb3IoKTsKKyAgICBSZW5kZXJTdHlsZSog
c3R5bGVUb1VzZSA9IHN0eWxlKCk7CisgICAgaWYgKHN0eWxlVG9Vc2UtPm91dGxpbmVTdHlsZUlz
QXV0bygpIHx8IGhhc091dGxpbmVBbm5vdGF0aW9uKCkpIHsKKyAgICAgICAgaW50IG93ID0gc3R5
bGVUb1VzZS0+b3V0bGluZVdpZHRoKCk7CisgICAgICAgIENvbG9yIG9jID0gdmlzaXRlZERlcGVu
ZGVudENvbG9yKGZhbHNlLCBzdHlsZVRvVXNlLCBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcik7CiAK
ICAgICAgICAgVmVjdG9yPEludFJlY3Q+IGZvY3VzUmluZ1JlY3RzOwogICAgICAgICBhZGRGb2N1
c1JpbmdSZWN0cyhmb2N1c1JpbmdSZWN0cywgdHgsIHR5KTsKLSAgICAgICAgaWYgKHN0eWxlKCkt
Pm91dGxpbmVTdHlsZUlzQXV0bygpKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3RzLCBvdywgc3R5bGUoKS0+b3V0bGluZU9mZnNldCgpLCBv
Yyk7CisgICAgICAgIGlmIChzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSkKKyAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdSZWN0cywgb3cs
IHN0eWxlVG9Vc2UtPm91dGxpbmVPZmZzZXQoKSwgb2MpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBhZGRQREZVUkxSZWN0KGdyYXBoaWNzQ29udGV4dCwgdW5pb25SZWN0KGZvY3VzUmluZ1Jl
Y3RzKSk7CiAgICAgfQogCi0gICAgaWYgKHN0eWxlKCktPm91dGxpbmVTdHlsZUlzQXV0bygpIHx8
IHN0eWxlKCktPm91dGxpbmVTdHlsZSgpID09IEJOT05FKQorICAgIGlmIChzdHlsZVRvVXNlLT5v
dXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGUoKSA9PSBCTk9O
RSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwpAQCAtMTAw
MCwxMSArOTk5LDEwIEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoR3JhcGhpY3MK
IHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsIGludCB0eSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGxhc3RsaW5lLCBjb25zdCBJbnRSZWN0JiB0
aGlzbGluZSwgY29uc3QgSW50UmVjdCYgbmV4dGxpbmUpCiB7Ci0gICAgaW50IG93ID0gc3R5bGUo
KS0+b3V0bGluZVdpZHRoKCk7Ci0gICAgRUJvcmRlclN0eWxlIG9zID0gc3R5bGUoKS0+b3V0bGlu
ZVN0eWxlKCk7Ci0gICAgQ29sb3Igb2MgPSBzdHlsZSgpLT5vdXRsaW5lQ29sb3IoKTsKLSAgICBp
ZiAoIW9jLmlzVmFsaWQoKSkKLSAgICAgICAgb2MgPSBzdHlsZSgpLT5jb2xvcigpOworICAgIFJl
bmRlclN0eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKKyAgICBpbnQgb3cgPSBzdHlsZVRvVXNl
LT5vdXRsaW5lV2lkdGgoKTsKKyAgICBFQm9yZGVyU3R5bGUgb3MgPSBzdHlsZVRvVXNlLT5vdXRs
aW5lU3R5bGUoKTsKKyAgICBDb2xvciBvYyA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwg
c3R5bGVUb1VzZSwgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpOwogCiAgICAgaW50IG9mZnNldCA9
IHN0eWxlKCktPm91dGxpbmVPZmZzZXQoKTsKIApAQCAtMTAyMCw3ICsxMDE4LDcgQEAgdm9pZCBS
ZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoRwogICAgICAgICAgICAgICAgbCwKICAg
ICAgICAgICAgICAgIGIgKyAobmV4dGxpbmUuaXNFbXB0eSgpIHx8IHRoaXNsaW5lLngoKSA8PSBu
ZXh0bGluZS54KCkgfHwgKG5leHRsaW5lLnJpZ2h0KCkgLSAxKSA8PSB0aGlzbGluZS54KCkgPyBv
dyA6IDApLAogICAgICAgICAgICAgICAgQlNMZWZ0LAotICAgICAgICAgICAgICAgb2MsIHN0eWxl
KCktPmNvbG9yKCksIG9zLAorICAgICAgICAgICAgICAgb2MsIG9zLAogICAgICAgICAgICAgICAg
KGxhc3RsaW5lLmlzRW1wdHkoKSB8fCB0aGlzbGluZS54KCkgPCBsYXN0bGluZS54KCkgfHwgKGxh
c3RsaW5lLnJpZ2h0KCkgLSAxKSA8PSB0aGlzbGluZS54KCkgPyBvdyA6IC1vdyksCiAgICAgICAg
ICAgICAgICAobmV4dGxpbmUuaXNFbXB0eSgpIHx8IHRoaXNsaW5lLngoKSA8PSBuZXh0bGluZS54
KCkgfHwgKG5leHRsaW5lLnJpZ2h0KCkgLSAxKSA8PSB0aGlzbGluZS54KCkgPyBvdyA6IC1vdykp
OwogICAgIApAQCAtMTAzMSw3ICsxMDI5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0
bGluZUZvckxpbmUoRwogICAgICAgICAgICAgICAgciArIG93LAogICAgICAgICAgICAgICAgYiAr
IChuZXh0bGluZS5pc0VtcHR5KCkgfHwgbmV4dGxpbmUucmlnaHQoKSA8PSB0aGlzbGluZS5yaWdo
dCgpIHx8ICh0aGlzbGluZS5yaWdodCgpIC0gMSkgPD0gbmV4dGxpbmUueCgpID8gb3cgOiAwKSwK
ICAgICAgICAgICAgICAgIEJTUmlnaHQsCi0gICAgICAgICAgICAgICBvYywgc3R5bGUoKS0+Y29s
b3IoKSwgb3MsCisgICAgICAgICAgICAgICBvYywgb3MsCiAgICAgICAgICAgICAgICAobGFzdGxp
bmUuaXNFbXB0eSgpIHx8IGxhc3RsaW5lLnJpZ2h0KCkgPCB0aGlzbGluZS5yaWdodCgpIHx8ICh0
aGlzbGluZS5yaWdodCgpIC0gMSkgPD0gbGFzdGxpbmUueCgpID8gb3cgOiAtb3cpLAogICAgICAg
ICAgICAgICAgKG5leHRsaW5lLmlzRW1wdHkoKSB8fCBuZXh0bGluZS5yaWdodCgpIDw9IHRoaXNs
aW5lLnJpZ2h0KCkgfHwgKHRoaXNsaW5lLnJpZ2h0KCkgLSAxKSA8PSBuZXh0bGluZS54KCkgPyBv
dyA6IC1vdykpOwogICAgIC8vIHVwcGVyIGVkZ2UKQEAgLTEwNDEsNyArMTAzOSw3IEBAIHZvaWQg
UmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEcKICAgICAgICAgICAgICAgICAgICB0
IC0gb3csCiAgICAgICAgICAgICAgICAgICAgbWluKHIrb3csIChsYXN0bGluZS5pc0VtcHR5KCkg
PyAxMDAwMDAwIDogdHggKyBsYXN0bGluZS54KCkpKSwKICAgICAgICAgICAgICAgICAgICB0ICwK
LSAgICAgICAgICAgICAgICAgICBCU1RvcCwgb2MsIHN0eWxlKCktPmNvbG9yKCksIG9zLAorICAg
ICAgICAgICAgICAgICAgIEJTVG9wLCBvYywgb3MsCiAgICAgICAgICAgICAgICAgICAgb3csCiAg
ICAgICAgICAgICAgICAgICAgKCFsYXN0bGluZS5pc0VtcHR5KCkgJiYgdHggKyBsYXN0bGluZS54
KCkgKyAxIDwgciArIG93KSA/IC1vdyA6IG93KTsKICAgICAKQEAgLTEwNTEsNyArMTA0OSw3IEBA
IHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEcKICAgICAgICAgICAgICAg
ICAgICB0IC0gb3csCiAgICAgICAgICAgICAgICAgICAgciArIG93LAogICAgICAgICAgICAgICAg
ICAgIHQgLAotICAgICAgICAgICAgICAgICAgIEJTVG9wLCBvYywgc3R5bGUoKS0+Y29sb3IoKSwg
b3MsCisgICAgICAgICAgICAgICAgICAgQlNUb3AsIG9jLCBvcywKICAgICAgICAgICAgICAgICAg
ICAoIWxhc3RsaW5lLmlzRW1wdHkoKSAmJiBsIC0gb3cgPCB0eCArIGxhc3RsaW5lLnJpZ2h0KCkp
ID8gLW93IDogb3csCiAgICAgICAgICAgICAgICAgICAgb3cpOwogICAgIApAQCAtMTA2Miw3ICsx
MDYwLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoRwogICAgICAg
ICAgICAgICAgICAgIGIsCiAgICAgICAgICAgICAgICAgICAgbWluKHIgKyBvdywgIW5leHRsaW5l
LmlzRW1wdHkoKSA/IHR4ICsgbmV4dGxpbmUueCgpICsgMSA6IDEwMDAwMDApLAogICAgICAgICAg
ICAgICAgICAgIGIgKyBvdywKLSAgICAgICAgICAgICAgICAgICBCU0JvdHRvbSwgb2MsIHN0eWxl
KCktPmNvbG9yKCksIG9zLAorICAgICAgICAgICAgICAgICAgIEJTQm90dG9tLCBvYywgb3MsCiAg
ICAgICAgICAgICAgICAgICAgb3csCiAgICAgICAgICAgICAgICAgICAgKCFuZXh0bGluZS5pc0Vt
cHR5KCkgJiYgdHggKyBuZXh0bGluZS54KCkgKyAxIDwgciArIG93KSA/IC1vdyA6IG93KTsKICAg
ICAKQEAgLTEwNzIsNyArMTA3MCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVG
b3JMaW5lKEcKICAgICAgICAgICAgICAgICAgICBiLAogICAgICAgICAgICAgICAgICAgIHIgKyBv
dywKICAgICAgICAgICAgICAgICAgICBiICsgb3csCi0gICAgICAgICAgICAgICAgICAgQlNCb3R0
b20sIG9jLCBzdHlsZSgpLT5jb2xvcigpLCBvcywKKyAgICAgICAgICAgICAgICAgICBCU0JvdHRv
bSwgb2MsIG9zLAogICAgICAgICAgICAgICAgICAgICghbmV4dGxpbmUuaXNFbXB0eSgpICYmIGwg
LSBvdyA8IHR4ICsgbmV4dGxpbmUucmlnaHQoKSkgPyAtb3cgOiBvdywKICAgICAgICAgICAgICAg
ICAgICBvdyk7CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9u
IDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjk4LDcgKzY5OCw3IEBAIGJvb2wgUmVuZGVyT2JqZWN0OjptdXN0UmVwYWludEJh
Y2tncm91bmQKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdMaW5lRm9yQm94U2lkZShHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50
IHkyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3hTaWRlIHMsIENv
bG9yIGMsIGNvbnN0IENvbG9yJiB0ZXh0Y29sb3IsIEVCb3JkZXJTdHlsZSBzdHlsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm94U2lkZSBzLCBDb2xvciBjLCBFQm9y
ZGVyU3R5bGUgc3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBhZGpidzEsIGludCBhZGpidzIpCiB7CiAgICAgaW50IHdpZHRoID0gKHMgPT0gQlNUb3AgfHwg
cyA9PSBCU0JvdHRvbSA/IHkyIC0geTEgOiB4MiAtIHgxKTsKQEAgLTcwNiwxMyArNzA2LDYgQEAg
dm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdMaW5lRm9yQm94U2lkZShHcgogICAgIGlmIChzdHlsZSA9
PSBET1VCTEUgJiYgd2lkdGggPCAzKQogICAgICAgICBzdHlsZSA9IFNPTElEOwogCi0gICAgaWYg
KCFjLmlzVmFsaWQoKSkgewotICAgICAgICBpZiAoc3R5bGUgPT0gSU5TRVQgfHwgc3R5bGUgPT0g
T1VUU0VUIHx8IHN0eWxlID09IFJJREdFIHx8IHN0eWxlID09IEdST09WRSkKLSAgICAgICAgICAg
IGMuc2V0UkdCKDIzOCwgMjM4LCAyMzgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjID0g
dGV4dGNvbG9yOwotICAgIH0KLQogICAgIHN3aXRjaCAoc3R5bGUpIHsKICAgICAgICAgY2FzZSBC
Tk9ORToKICAgICAgICAgY2FzZSBCSElEREVOOgpAQCAtNzY0LDM0ICs3NTcsMzQgQEAgdm9pZCBS
ZW5kZXJPYmplY3Q6OmRyYXdMaW5lRm9yQm94U2lkZShHcgogICAgICAgICAgICAgICAgICAgICBj
YXNlIEJTVG9wOgogICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdy
YXBoaWNzQ29udGV4dCwgeDEgKyBtYXgoKC1hZGpidzEgKiAyICsgMSkgLyAzLCAwKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTEsIHgyIC0gbWF4KCgtYWRqYncyICogMiAr
IDEpIC8gMywgMCksIHkxICsgdGhpcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHMsIGMsIHRleHRjb2xvciwgU09MSUQsIGFkamJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGly
ZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIFNPTElELCBhZGpi
dzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgZHJh
d0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEgKyBtYXgoKGFkamJ3MSAqIDIgKyAx
KSAvIDMsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MiAtIHRoaXJk
LCB4MiAtIG1heCgoYWRqYncyICogMiArIDEpIC8gMywgMCksIHkyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNPTElELCBhZGpidzFiaWd0aGly
ZCwgYWRqYncyYmlndGhpcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
LCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEJTTGVmdDoKICAg
ICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQs
IHgxLCB5MSArIG1heCgoLWFkamJ3MSAqIDIgKyAxKSAvIDMsIDApLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MSArIHRoaXJkLCB5MiAtIG1heCgoLWFkamJ3MiAqIDIgKyAx
KSAvIDMsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0
Y29sb3IsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFk
amJ3MmJpZ3RoaXJkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lk
ZShncmFwaGljc0NvbnRleHQsIHgyIC0gdGhpcmQsIHkxICsgbWF4KChhZGpidzEgKiAyICsgMSkg
LyAzLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsIHkyIC0gbWF4
KChhZGpidzIgKiAyICsgMSkgLyAzLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcywgYywgdGV4dGNvbG9yLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3Ro
aXJkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgU09MSUQsIGFk
amJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBCU0JvdHRvbToKICAgICAgICAgICAgICAg
ICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgxICsgbWF4KChh
ZGpidzEgKiAyICsgMSkgLyAzLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeTEsIHgyIC0gbWF4KChhZGpidzIgKiAyICsgMSkgLyAzLCAwKSwgeTEgKyB0aGlyZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNvbG9yLCBTT0xJRCwg
YWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcywgYywgU09MSUQsIGFkamJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250
ZXh0LCB4MSArIG1heCgoLWFkamJ3MSAqIDIgKyAxKSAvIDMsIDApLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB5MiAtIHRoaXJkLCB4MiAtIG1heCgoLWFkamJ3MiAqIDIgKyAx
KSAvIDMsIDApLCB5MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywg
dGV4dGNvbG9yLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgU09MSUQsIGFkamJ3MWJpZ3RoaXJk
LCBhZGpidzJiaWd0aGlyZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBCU1JpZ2h0OgogICAgICAgICAgICAgICAgICAgICAgICAgZHJh
d0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEsIHkxICsgbWF4KChhZGpidzEgKiAy
ICsgMSkgLyAzLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEgKyB0
aGlyZCwgeTIgLSBtYXgoKGFkamJ3MiAqIDIgKyAxKSAvIDMsIDApLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNPTElELCBhZGpidzFiaWd0aGly
ZCwgYWRqYncyYmlndGhpcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
LCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgyIC0gdGhp
cmQsIHkxICsgbWF4KCgtYWRqYncxICogMiArIDEpIC8gMywgMCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgyLCB5MiAtIG1heCgoLWFkamJ3MiAqIDIgKyAxKSAvIDMsIDAp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNP
TElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzLCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3Ro
aXJkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04MTgsMjcgKzgx
MSwyNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyCiAgICAgICAg
ICAgICBzd2l0Y2ggKHMpIHsKICAgICAgICAgICAgICAgICBjYXNlIEJTVG9wOgogICAgICAgICAg
ICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSArIG1heCgt
YWRqYncxLCAwKSAvIDIsIHkxLCB4MiAtIG1heCgtYWRqYncyLCAwKSAvIDIsICh5MSArIHkyICsg
MSkgLyAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xvciwg
czEsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHMsIGMsIHMxLCBhZGpidzFiaWdoYWxmLCBhZGpidzJiaWdoYWxmKTsKICAgICAg
ICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEgKyBt
YXgoYWRqYncxICsgMSwgMCkgLyAyLCAoeTEgKyB5MiArIDEpIC8gMiwgeDIgLSBtYXgoYWRqYncy
ICsgMSwgMCkgLyAyLCB5MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0
ZXh0Y29sb3IsIHMyLCBhZGpidzEgLyAyLCBhZGpidzIgLyAyKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzLCBjLCBzMiwgYWRqYncxIC8gMiwgYWRqYncyIC8gMik7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQlNMZWZ0OgogICAgICAg
ICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSwgeTEg
KyBtYXgoLWFkamJ3MSwgMCkgLyAyLCAoeDEgKyB4MiArIDEpIC8gMiwgeTIgLSBtYXgoLWFkamJ3
MiwgMCkgLyAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xv
ciwgczEsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMsIGMsIHMxLCBhZGpidzFiaWdoYWxmLCBhZGpidzJiaWdoYWxmKTsKICAg
ICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgKHgx
ICsgeDIgKyAxKSAvIDIsIHkxICsgbWF4KGFkamJ3MSArIDEsIDApIC8gMiwgeDIsIHkyIC0gbWF4
KGFkamJ3MiArIDEsIDApIC8gMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBj
LCB0ZXh0Y29sb3IsIHMyLCBhZGpidzEgLyAyLCBhZGpidzIgLyAyKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzLCBjLCBzMiwgYWRqYncxIC8gMiwgYWRqYncyIC8gMik7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQlNCb3R0b206CiAg
ICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgx
ICsgbWF4KGFkamJ3MSwgMCkgLyAyLCB5MSwgeDIgLSBtYXgoYWRqYncyLCAwKSAvIDIsICh5MSAr
IHkyICsgMSkgLyAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRj
b2xvciwgczIsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHMsIGMsIHMyLCBhZGpidzFiaWdoYWxmLCBhZGpidzJiaWdoYWxmKTsK
ICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwg
eDEgKyBtYXgoLWFkamJ3MSArIDEsIDApIC8gMiwgKHkxICsgeTIgKyAxKSAvIDIsIHgyIC0gbWF4
KC1hZGpidzIgKyAxLCAwKSAvIDIsIHkyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHMsIGMsIHRleHRjb2xvciwgczEsIGFkamJ3MS8yLCBhZGpidzIvMik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcywgYywgczEsIGFkamJ3MS8yLCBhZGpidzIvMik7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQlNSaWdodDoKICAgICAg
ICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEsIHkx
ICsgbWF4KGFkamJ3MSwgMCkgLyAyLCAoeDEgKyB4MiArIDEpIC8gMiwgeTIgLSBtYXgoYWRqYncy
LCAwKSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNvbG9y
LCBzMiwgYWRqYncxYmlnaGFsZiwgYWRqYncyYmlnaGFsZik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcywgYywgczIsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOwogICAg
ICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCAoeDEg
KyB4MiArIDEpIC8gMiwgeTEgKyBtYXgoLWFkamJ3MSArIDEsIDApIC8gMiwgeDIsIHkyIC0gbWF4
KC1hZGpidzIgKyAxLCAwKSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywg
YywgdGV4dGNvbG9yLCBzMSwgYWRqYncxLzIsIGFkamJ3Mi8yKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzLCBjLCBzMSwgYWRqYncxLzIsIGFkamJ3Mi8yKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTg5
NCwxOSArODg3LDEyIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3TGluZUZvckJveFNpZGUoR3IK
IH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdBcmNGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgeCwgaW50IHksIGZsb2F0IHRoaWNrbmVzcywgSW50U2l6
ZSByYWRpdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFuZ2xl
U3RhcnQsIGludCBhbmdsZVNwYW4sIEJveFNpZGUgcywgQ29sb3IgYywgY29uc3QgQ29sb3ImIHRl
eHRDb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYW5nbGVT
dGFydCwgaW50IGFuZ2xlU3BhbiwgQm94U2lkZSBzLCBDb2xvciBjLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVCb3JkZXJTdHlsZSBzdHlsZSwgYm9vbCBmaXJzdENvcm5l
cikKIHsKICAgICBpZiAoKHN0eWxlID09IERPVUJMRSAmJiB0aGlja25lc3MgLyAyIDwgMykgfHwg
KChzdHlsZSA9PSBSSURHRSB8fCBzdHlsZSA9PSBHUk9PVkUpICYmIHRoaWNrbmVzcyAvIDIgPCAy
KSkKICAgICAgICAgc3R5bGUgPSBTT0xJRDsKIAotICAgIGlmICghYy5pc1ZhbGlkKCkpIHsKLSAg
ICAgICAgaWYgKHN0eWxlID09IElOU0VUIHx8IHN0eWxlID09IE9VVFNFVCB8fCBzdHlsZSA9PSBS
SURHRSB8fCBzdHlsZSA9PSBHUk9PVkUpCi0gICAgICAgICAgICBjLnNldFJHQigyMzgsIDIzOCwg
MjM4KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYyA9IHRleHRDb2xvcjsKLSAgICB9Ci0K
ICAgICBzd2l0Y2ggKHN0eWxlKSB7CiAgICAgICAgIGNhc2UgQk5PTkU6CiAgICAgICAgIGNhc2Ug
QkhJRERFTjoKQEAgLTk5NCwzMyArOTgwLDMyIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRQREZV
UkxSZWN0KEdyYXBoaWMKICAgICBjb250ZXh0LT5zZXRVUkxGb3JSZWN0KG4tPmRvY3VtZW50KCkt
PmNvbXBsZXRlVVJMKGhyZWYpLCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50
T3V0bGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHks
IGludCB3LCBpbnQgaCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQordm9pZCBSZW5kZXJPYmpl
Y3Q6OnBhaW50T3V0bGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4
LCBpbnQgdHksIGludCB3LCBpbnQgaCkKIHsKICAgICBpZiAoIWhhc091dGxpbmUoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaW50IG93ID0gc3R5bGUtPm91dGxpbmVXaWR0aCgpOwotICAgIEVC
b3JkZXJTdHlsZSBvcyA9IHN0eWxlLT5vdXRsaW5lU3R5bGUoKTsKKyAgICBSZW5kZXJTdHlsZSog
c3R5bGVUb1VzZSA9IHN0eWxlKCk7CisgICAgaW50IG93ID0gc3R5bGVUb1VzZS0+b3V0bGluZVdp
ZHRoKCk7CisgICAgRUJvcmRlclN0eWxlIG9zID0gc3R5bGVUb1VzZS0+b3V0bGluZVN0eWxlKCk7
CiAKLSAgICBDb2xvciBvYyA9IHN0eWxlLT5vdXRsaW5lQ29sb3IoKTsKLSAgICBpZiAoIW9jLmlz
VmFsaWQoKSkKLSAgICAgICAgb2MgPSBzdHlsZS0+Y29sb3IoKTsKKyAgICBDb2xvciBvYyA9IHZp
c2l0ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwgc3R5bGVUb1VzZSwgQ1NTUHJvcGVydHlPdXRsaW5l
Q29sb3IpOwogCi0gICAgaW50IG9mZnNldCA9IHN0eWxlLT5vdXRsaW5lT2Zmc2V0KCk7CisgICAg
aW50IG9mZnNldCA9IHN0eWxlVG9Vc2UtPm91dGxpbmVPZmZzZXQoKTsKIAotICAgIGlmIChzdHls
ZS0+b3V0bGluZVN0eWxlSXNBdXRvKCkgfHwgaGFzT3V0bGluZUFubm90YXRpb24oKSkgewotICAg
ICAgICBpZiAoIXRoZW1lKCktPnN1cHBvcnRzRm9jdXNSaW5nKHN0eWxlKSkgeworICAgIGlmIChz
dHlsZVRvVXNlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigp
KSB7CisgICAgICAgIGlmICghdGhlbWUoKS0+c3VwcG9ydHNGb2N1c1Jpbmcoc3R5bGVUb1VzZSkp
IHsKICAgICAgICAgICAgIC8vIE9ubHkgcGFpbnQgdGhlIGZvY3VzIHJpbmcgYnkgaGFuZCBpZiB0
aGUgdGhlbWUgaXNuJ3QgYWJsZSB0byBkcmF3IHRoZSBmb2N1cyByaW5nLgogICAgICAgICAgICAg
VmVjdG9yPEludFJlY3Q+IGZvY3VzUmluZ1JlY3RzOwogICAgICAgICAgICAgYWRkRm9jdXNSaW5n
UmVjdHMoZm9jdXNSaW5nUmVjdHMsIHR4LCB0eSk7Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPm91
dGxpbmVTdHlsZUlzQXV0bygpKQorICAgICAgICAgICAgaWYgKHN0eWxlVG9Vc2UtPm91dGxpbmVT
dHlsZUlzQXV0bygpKQogICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ZvY3Vz
UmluZyhmb2N1c1JpbmdSZWN0cywgb3csIG9mZnNldCwgb2MpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIGFkZFBERlVSTFJlY3QoZ3JhcGhpY3NDb250ZXh0LCB1bmlvblJlY3Qo
Zm9jdXNSaW5nUmVjdHMpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChzdHlsZS0+b3V0
bGluZVN0eWxlSXNBdXRvKCkgfHwgc3R5bGUtPm91dGxpbmVTdHlsZSgpID09IEJOT05FKQorICAg
IGlmIChzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBzdHlsZVRvVXNlLT5vdXRs
aW5lU3R5bGUoKSA9PSBCTk9ORSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdHggLT0gb2Zmc2V0
OwpAQCAtMTAzMSwxNyArMTAxNiwxMCBAQCB2b2lkIFJlbmRlck9iamVjdDo6cGFpbnRPdXRsaW5l
KEdyYXBoaWNzCiAgICAgaWYgKGggPCAwIHx8IHcgPCAwKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCAtIG93LCB0eSAtIG93LCB0
eCwgdHkgKyBoICsgb3csCi0gICAgICAgICAgICAgICBCU0xlZnQsIENvbG9yKG9jKSwgc3R5bGUt
PmNvbG9yKCksIG9zLCBvdywgb3cpOwotCi0gICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwgdHggLSBvdywgdHkgLSBvdywgdHggKyB3ICsgb3csIHR5LAotICAgICAgICAgICAg
ICAgQlNUb3AsIENvbG9yKG9jKSwgc3R5bGUtPmNvbG9yKCksIG9zLCBvdywgb3cpOwotCi0gICAg
ZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggKyB3LCB0eSAtIG93LCB0eCAr
IHcgKyBvdywgdHkgKyBoICsgb3csCi0gICAgICAgICAgICAgICBCU1JpZ2h0LCBDb2xvcihvYyks
IHN0eWxlLT5jb2xvcigpLCBvcywgb3csIG93KTsKLQotICAgIGRyYXdMaW5lRm9yQm94U2lkZShn
cmFwaGljc0NvbnRleHQsIHR4IC0gb3csIHR5ICsgaCwgdHggKyB3ICsgb3csIHR5ICsgaCArIG93
LAotICAgICAgICAgICAgICAgQlNCb3R0b20sIENvbG9yKG9jKSwgc3R5bGUtPmNvbG9yKCksIG9z
LCBvdywgb3cpOworICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4IC0g
b3csIHR5IC0gb3csIHR4LCB0eSArIGggKyBvdywgQlNMZWZ0LCBvYywgb3MsIG93LCBvdyk7Cisg
ICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggLSBvdywgdHkgLSBvdywg
dHggKyB3ICsgb3csIHR5LCBCU1RvcCwgb2MsIG9zLCBvdywgb3cpOworICAgIGRyYXdMaW5lRm9y
Qm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4ICsgdywgdHkgLSBvdywgdHggKyB3ICsgb3csIHR5
ICsgaCArIG93LCBCU1JpZ2h0LCBvYywgb3MsIG93LCBvdyk7CisgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgdHggLSBvdywgdHkgKyBoLCB0eCArIHcgKyBvdywgdHkgKyBo
ICsgb3csIEJTQm90dG9tLCBvYywgb3MsIG93LCBvdyk7CiB9CiAKIEludFJlY3QgUmVuZGVyT2Jq
ZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMpCkBAIC0yMTk4
LDI2ICsyMTc2LDI1IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlck9iamVjdDo6Z2UK
ICAgICBpZiAocHNldWRvID09IEZJUlNUX0xJTkVfSU5IRVJJVEVEKSB7CiAgICAgICAgIHJlc3Vs
dCA9IGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+c3R5bGVGb3JFbGVtZW50KHN0YXRpY19j
YXN0PEVsZW1lbnQqPihuKSwgcGFyZW50U3R5bGUsIGZhbHNlKTsKICAgICAgICAgcmVzdWx0LT5z
ZXRTdHlsZVR5cGUoRklSU1RfTElORV9JTkhFUklURUQpOworICAgIH0gZWxzZSBpZiAocHNldWRv
ID09IFZJU0lURURfTElOSykgeworICAgICAgICByZXN1bHQgPSBkb2N1bWVudCgpLT5zdHlsZVNl
bGVjdG9yKCktPnN0eWxlRm9yRWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obiksIHBhcmVu
dFN0eWxlLCBmYWxzZSwgZmFsc2UsIHRydWUpOworICAgICAgICByZXN1bHQtPnNldFN0eWxlVHlw
ZShWSVNJVEVEX0xJTkspOwogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQgPSBkb2N1bWVudCgp
LT5zdHlsZVNlbGVjdG9yKCktPnBzZXVkb1N0eWxlRm9yRWxlbWVudChwc2V1ZG8sIHN0YXRpY19j
YXN0PEVsZW1lbnQqPihuKSwgcGFyZW50U3R5bGUpOwogICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZSgpOwogfQogCi1zdGF0aWMgQ29sb3IgZGVjb3JhdGlvbkNvbG9yKFJlbmRlclN0eWxlKiBzdHls
ZSkKK3N0YXRpYyBDb2xvciBkZWNvcmF0aW9uQ29sb3IoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
IHsKICAgICBDb2xvciByZXN1bHQ7Ci0gICAgaWYgKHN0eWxlLT50ZXh0U3Ryb2tlV2lkdGgoKSA+
IDApIHsKKyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnRleHRTdHJva2VXaWR0aCgpID4gMCkg
ewogICAgICAgICAvLyBQcmVmZXIgc3Ryb2tlIGNvbG9yIGlmIHBvc3NpYmxlIGJ1dCBub3QgaWYg
aXQncyBmdWxseSB0cmFuc3BhcmVudC4KLSAgICAgICAgcmVzdWx0ID0gc3R5bGUtPnRleHRTdHJv
a2VDb2xvcigpOwotICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBy
ZXN1bHQgPSBzdHlsZS0+Y29sb3IoKTsKKyAgICAgICAgcmVzdWx0ID0gcmVuZGVyZXItPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwgcmVuZGVyZXItPnN0eWxlKCksIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dFN0cm9rZUNvbG9yKTsKICAgICAgICAgaWYgKHJlc3VsdC5hbHBoYSgpKQogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgcmVzdWx0ID0gc3R5bGUtPnRl
eHRGaWxsQ29sb3IoKTsKLSAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCi0gICAgICAgIHJlc3Vs
dCA9IHN0eWxlLT5jb2xvcigpOworICAgIHJlc3VsdCA9IHJlbmRlcmVyLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoZmFsc2UsIHJlbmRlcmVyLT5zdHlsZSgpLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRG
aWxsQ29sb3IpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIyMzAsMTUgKzIyMDcsMTUg
QEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sbwogICAgICAgICBpZiAo
Y3VyckRlY3MpIHsKICAgICAgICAgICAgIGlmIChjdXJyRGVjcyAmIFVOREVSTElORSkgewogICAg
ICAgICAgICAgICAgIGRlY29yYXRpb25zICY9IH5VTkRFUkxJTkU7Ci0gICAgICAgICAgICAgICAg
dW5kZXJsaW5lID0gZGVjb3JhdGlvbkNvbG9yKGN1cnItPnN0eWxlKCkpOworICAgICAgICAgICAg
ICAgIHVuZGVybGluZSA9IGRlY29yYXRpb25Db2xvcihjdXJyKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChjdXJyRGVjcyAmIE9WRVJMSU5FKSB7CiAgICAgICAgICAgICAgICAgZGVj
b3JhdGlvbnMgJj0gfk9WRVJMSU5FOwotICAgICAgICAgICAgICAgIG92ZXJsaW5lID0gZGVjb3Jh
dGlvbkNvbG9yKGN1cnItPnN0eWxlKCkpOworICAgICAgICAgICAgICAgIG92ZXJsaW5lID0gZGVj
b3JhdGlvbkNvbG9yKGN1cnIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGN1cnJE
ZWNzICYgTElORV9USFJPVUdIKSB7CiAgICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMgJj0gfkxJ
TkVfVEhST1VHSDsKLSAgICAgICAgICAgICAgICBsaW5ldGhyb3VnaCA9IGRlY29yYXRpb25Db2xv
cihjdXJyLT5zdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBsaW5ldGhyb3VnaCA9IGRlY29yYXRp
b25Db2xvcihjdXJyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBjdXJyID0g
Y3Vyci0+cGFyZW50KCk7CkBAIC0yMjUwLDEyICsyMjI3LDcyIEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpnZXRUZXh0RGVjb3JhdGlvbkNvbG8KICAgICAvLyBJZiB3ZSBiYWlsZWQgb3V0LCB1c2UgdGhl
IGVsZW1lbnQgd2UgYmFpbGVkIG91dCBhdCAodHlwaWNhbGx5IGEgPGZvbnQ+IG9yIDxhPiBlbGVt
ZW50KS4KICAgICBpZiAoZGVjb3JhdGlvbnMgJiYgY3VycikgewogICAgICAgICBpZiAoZGVjb3Jh
dGlvbnMgJiBVTkRFUkxJTkUpCi0gICAgICAgICAgICB1bmRlcmxpbmUgPSBkZWNvcmF0aW9uQ29s
b3IoY3Vyci0+c3R5bGUoKSk7CisgICAgICAgICAgICB1bmRlcmxpbmUgPSBkZWNvcmF0aW9uQ29s
b3IoY3Vycik7CiAgICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIE9WRVJMSU5FKQotICAgICAgICAg
ICAgb3ZlcmxpbmUgPSBkZWNvcmF0aW9uQ29sb3IoY3Vyci0+c3R5bGUoKSk7CisgICAgICAgICAg
ICBvdmVybGluZSA9IGRlY29yYXRpb25Db2xvcihjdXJyKTsKICAgICAgICAgaWYgKGRlY29yYXRp
b25zICYgTElORV9USFJPVUdIKQotICAgICAgICAgICAgbGluZXRocm91Z2ggPSBkZWNvcmF0aW9u
Q29sb3IoY3Vyci0+c3R5bGUoKSk7CisgICAgICAgICAgICBsaW5ldGhyb3VnaCA9IGRlY29yYXRp
b25Db2xvcihjdXJyKTsKKyAgICB9Cit9CisKK0NvbG9yIFJlbmRlck9iamVjdDo6dmlzaXRlZERl
cGVuZGVudENvbG9yKGJvb2wgLypmaXJzdExpbmUqLywgY29uc3QgUmVuZGVyU3R5bGUqIHVudmlz
aXRlZFN0eWxlLCBpbnQgY29sb3JQcm9wZXJ0eSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogRmV0
Y2ggYm90aCB2aXNpdGVkIGFuZCB1bnZpc2l0ZWQgc3R5bGVzLiAgTWVyZ2UgY29sb3JzIGJ5IGdl
dHRpbmcgdGhlIFJHQiBmcm9tIHRoZSB2aXNpdGVkIHN0eWxlCisgICAgLy8gYW5kIHRoZSBBIGZy
b20gdGhlIHVudmlzaXRlZC4gIElmIGEgY29sb3IgaXMgbm90IHZhbGlkLCBuZWVkIHRvIGZhbGwg
YmFjayB0byBjb2xvciBpbiBzb21lIGNhc2VzICh0ZXh0IGZpbGwsIHN0cm9rZSwgYm9yZGVyKSwK
KyAgICAvLyBzbyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCB3aGVuIGF0dGVtcHRpbmcgYSBt
ZXJnZSkuCisgICAgQ29sb3IgcmVzdWx0OworICAgIEVCb3JkZXJTdHlsZSBib3JkZXJTdHlsZTsK
KyAgICBzd2l0Y2ggKGNvbG9yUHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yOgorICAgICAgICByZXN1bHQgPSB1bnZpc2l0ZWRTdHlsZS0+YmFja2dyb3VuZENv
bG9yKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29s
b3I6CisgICAgICAgIHJlc3VsdCA9IHVudmlzaXRlZFN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKTsK
KyAgICAgICAgYm9yZGVyU3R5bGUgPSB1bnZpc2l0ZWRTdHlsZS0+Ym9yZGVyTGVmdFN0eWxlKCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yOgor
ICAgICAgICByZXN1bHQgPSB1bnZpc2l0ZWRTdHlsZS0+Ym9yZGVyUmlnaHRDb2xvcigpOworICAg
ICAgICBib3JkZXJTdHlsZSA9IHVudmlzaXRlZFN0eWxlLT5ib3JkZXJSaWdodFN0eWxlKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcjoKKyAgICAg
ICAgcmVzdWx0ID0gdW52aXNpdGVkU3R5bGUtPmJvcmRlclRvcENvbG9yKCk7CisgICAgICAgIGJv
cmRlclN0eWxlID0gdW52aXNpdGVkU3R5bGUtPmJvcmRlclRvcFN0eWxlKCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcjoKKyAgICAgICAgcmVz
dWx0ID0gdW52aXNpdGVkU3R5bGUtPmJvcmRlckJvdHRvbUNvbG9yKCk7CisgICAgICAgIGJvcmRl
clN0eWxlID0gdW52aXNpdGVkU3R5bGUtPmJvcmRlckJvdHRvbVN0eWxlKCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoKKyAgICAgICAgcmVzdWx0ID0gdW52aXNp
dGVkU3R5bGUtPmNvbG9yKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlP
dXRsaW5lQ29sb3I6CisgICAgICAgIHJlc3VsdCA9IHVudmlzaXRlZFN0eWxlLT5vdXRsaW5lQ29s
b3IoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1
bGVDb2xvcjoKKyAgICAgICAgcmVzdWx0ID0gdW52aXNpdGVkU3R5bGUtPmNvbHVtblJ1bGVDb2xv
cigpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxD
b2xvcjoKKyAgICAgICAgcmVzdWx0ID0gdW52aXNpdGVkU3R5bGUtPnRleHRGaWxsQ29sb3IoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xv
cjoKKyAgICAgICAgcmVzdWx0ID0gdW52aXNpdGVkU3R5bGUtPnRleHRTdHJva2VDb2xvcigpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBGSVhNRTogQWRkIGJvcmRl
cnMsIG91dGxpbmVzLCBTVkcgZmlsbCBhbmQgc3Ryb2tlLgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgaWYgKCFyZXN1bHQuaXNWYWxp
ZCgpKSB7CisgICAgICAgIGlmICgoY29sb3JQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRDb2xvciB8fCBjb2xvclByb3BlcnR5ID09IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciB8
fAorICAgICAgICAgICAgIGNvbG9yUHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xv
ciB8fCBjb2xvclByb3BlcnR5ID09IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IpICYmCisg
ICAgICAgICAgICAoYm9yZGVyU3R5bGUgPT0gSU5TRVQgfHwgYm9yZGVyU3R5bGUgPT0gT1VUU0VU
IHx8IGJvcmRlclN0eWxlID09IFJJREdFIHx8IGJvcmRlclN0eWxlID09IEdST09WRSkpCisgICAg
ICAgICAgICByZXN1bHQuc2V0UkdCKDIzOCwgMjM4LCAyMzgpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZXN1bHQgPSB1bnZpc2l0ZWRTdHlsZS0+Y29sb3IoKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwOCw5ICs0MDgsOSBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNNYXNrKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKSAmJiBzdHls
ZSgpLT5oYXNNYXNrKCk7IH0KIAogICAgIHZvaWQgZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNz
Q29udGV4dCosIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MiwgQm94U2lkZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb2xvciwgY29uc3QgQ29sb3ImIHRleHRjb2xvciwgRUJv
cmRlclN0eWxlLCBpbnQgYWRqYncxLCBpbnQgYWRqYncyKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb2xvciwgRUJvcmRlclN0eWxlLCBpbnQgYWRqYncxLCBpbnQgYWRqYncyKTsKICAg
ICB2b2lkIGRyYXdBcmNGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCosIGludCB4LCBpbnQgeSwg
ZmxvYXQgdGhpY2tuZXNzLCBJbnRTaXplIHJhZGl1cywgaW50IGFuZ2xlU3RhcnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgYW5nbGVTcGFuLCBCb3hTaWRlLCBDb2xvciwgY29uc3Qg
Q29sb3ImIHRleHRjb2xvciwgRUJvcmRlclN0eWxlLCBib29sIGZpcnN0Q29ybmVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBhbmdsZVNwYW4sIEJveFNpZGUsIENvbG9yLCBFQm9y
ZGVyU3R5bGUsIGJvb2wgZmlyc3RDb3JuZXIpOwogCiBwdWJsaWM6CiAgICAgLy8gVGhlIHBzZXVk
byBlbGVtZW50IHN0eWxlIGNhbiBiZSBjYWNoZWQgb3IgdW5jYWNoZWQuICBVc2UgdGhlIGNhY2hl
ZCBtZXRob2QgaWYgdGhlIHBzZXVkbyBlbGVtZW50IGRvZXNuJ3QgcmVzcGVjdApAQCAtNTk5LDYg
KzU5OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGdldFRleHREZWNvcmF0aW9uQ29sb3Jz
KGludCBkZWNvcmF0aW9ucywgQ29sb3ImIHVuZGVybGluZSwgQ29sb3ImIG92ZXJsaW5lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3ImIGxpbmV0aHJvdWdoLCBib29sIHF1
aXJrc01vZGUgPSBmYWxzZSk7CisgICAgQ29sb3IgdmlzaXRlZERlcGVuZGVudENvbG9yKGJvb2wg
Zmlyc3RMaW5lLCBjb25zdCBSZW5kZXJTdHlsZSogdW52aXNpdGVkU3R5bGUsIGludCBjb2xvclBy
b3BlcnR5KSBjb25zdDsKIAogICAgIC8vIFJldHVybiB0aGUgUmVuZGVyQm94IGluIHRoZSBjb250
YWluZXIgY2hhaW4gd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHBhaW50aW5nIHRoaXMgb2JqZWN0
LCBvciAwCiAgICAgLy8gaWYgcGFpbnRpbmcgaXMgcm9vdC1yZWxhdGl2ZS4gVGhpcyBpcyB0aGUg
Y29udGFpbmVyIHRoYXQgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUgJ2ZvclJlcGFpbnQnCkBAIC03
ODQsNyArNzg1LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIE92ZXJyaWRlcyBzaG91bGQgY2FsbCB0
aGUgc3VwZXJjbGFzcyBhdCB0aGUgc3RhcnQKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogCi0gICAg
dm9pZCBwYWludE91dGxpbmUoR3JhcGhpY3NDb250ZXh0KiwgaW50IHR4LCBpbnQgdHksIGludCB3
LCBpbnQgaCwgY29uc3QgUmVuZGVyU3R5bGUqKTsKKyAgICB2b2lkIHBhaW50T3V0bGluZShHcmFw
aGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSwgaW50IHcsIGludCBoKTsKICAgICB2b2lkIGFk
ZFBERlVSTFJlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmly
dHVhbCBJbnRSZWN0IHZpZXdSZWN0KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRo
LmNwcAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgUmVuZGVyUGF0aDo6cGFp
bnQoUGFpbnRJbmZvJiBwYWludEkKIAogICAgICAgICBpZiAoZHJhd3NPdXRsaW5lKQogICAgICAg
ICAgICAgcGFpbnRPdXRsaW5lKGNoaWxkUGFpbnRJbmZvLmNvbnRleHQsIHN0YXRpY19jYXN0PGlu
dD4oYm91bmRpbmdCb3gueCgpKSwgc3RhdGljX2Nhc3Q8aW50Pihib3VuZGluZ0JveC55KCkpLAot
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oYm91bmRpbmdCb3gud2lkdGgoKSksIHN0
YXRpY19jYXN0PGludD4oYm91bmRpbmdCb3guaGVpZ2h0KCkpLCBzdHlsZSgpKTsKKyAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGJvdW5kaW5nQm94LndpZHRoKCkpLCBzdGF0aWNfY2Fz
dDxpbnQ+KGJvdW5kaW5nQm94LmhlaWdodCgpKSk7CiAgICAgICAgIAogICAgICAgICBjaGlsZFBh
aW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lk
IFJlbmRlclJlcGxhY2VkOjpwYWludChQYWludEluZm8mIHBhCiAgICAgfQogCiAgICAgaWYgKChw
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJbmZvLnBoYXNlID09
IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+b3V0bGluZVdpZHRoKCkpCi0gICAg
ICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgdHgsIHR5LCB3aWR0aCgpLCBoZWln
aHQoKSwgc3R5bGUoKSk7CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwg
dHgsIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSk7CiAgICAgCiAgICAgaWYgKHBhaW50SW5mby5waGFz
ZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFz
ZVNlbGVjdGlvbikKICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdDb250YWluZXIuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBA
QCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvCiAgICAgLy8gV2Ugc2hv
dWxkIGluc3RlYWQgZGlzYWJsZSBvdXIgY2xpcCBkdXJpbmcgUGFpbnRQaGFzZU91dGxpbmUKICAg
ICBJbnRSZWN0IHBhaW50UmVjdEluUGFyZW50ID0gZW5jbG9zaW5nSW50UmVjdChsb2NhbFRvUGFy
ZW50VHJhbnNmb3JtKCkubWFwUmVjdChyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKSk7
CiAgICAgaWYgKChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJ
bmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+b3V0bGluZVdp
ZHRoKCkgJiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCi0gICAgICAgIHBhaW50
T3V0bGluZShwYWludEluZm8uY29udGV4dCwgcGFpbnRSZWN0SW5QYXJlbnQueCgpLCBwYWludFJl
Y3RJblBhcmVudC55KCksIHBhaW50UmVjdEluUGFyZW50LndpZHRoKCksIHBhaW50UmVjdEluUGFy
ZW50LmhlaWdodCgpLCBzdHlsZSgpKTsKKyAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5j
b250ZXh0LCBwYWludFJlY3RJblBhcmVudC54KCksIHBhaW50UmVjdEluUGFyZW50LnkoKSwgcGFp
bnRSZWN0SW5QYXJlbnQud2lkdGgoKSwgcGFpbnRSZWN0SW5QYXJlbnQuaGVpZ2h0KCkpOwogfQog
CiAvLyBhZGRGb2N1c1JpbmdSZWN0cyBpcyBjYWxsZWQgZnJvbSBwYWludE91dGxpbmUgYW5kIG5l
ZWRzIHRvIGJlIGluIHRoZSBzYW1lIGNvb3JkaW5hdGVzIGFzIHRoZSBwYWludE91bGluZSBjYWxs
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiA1Njg1OSkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTUsNyArOTUsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBh
CiAgICAgfQogCiAgICAgaWYgKChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUg
fHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+
b3V0bGluZVdpZHRoKCkpCi0gICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwg
MCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCksIHN0eWxlKCkpOworICAgICAgICBwYWludE91dGxpbmUo
cGFpbnRJbmZvLmNvbnRleHQsIDAsIDAsIHdpZHRoKCksIGhlaWdodCgpKTsKIAogICAgIHBhaW50
SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdS
b290LmNwcAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdS
b290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUmVuZGVyU1ZH
Um9vdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWkKICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5y
ZXN0b3JlKCk7CiAKICAgICBpZiAoKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlT3V0bGlu
ZSB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgp
LT5vdXRsaW5lV2lkdGgoKSAmJiBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKLSAg
ICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCBib3JkZXJCb3hPcmlnaW5JbkNv
bnRhaW5lci54KCksIGJvcmRlckJveE9yaWdpbkluQ29udGFpbmVyLnkoKSwgd2lkdGgoKSwgaGVp
Z2h0KCksIHN0eWxlKCkpOworICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQs
IGJvcmRlckJveE9yaWdpbkluQ29udGFpbmVyLngoKSwgYm9yZGVyQm94T3JpZ2luSW5Db250YWlu
ZXIueSgpLCB3aWR0aCgpLCBoZWlnaHQoKSk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHUm9vdDo6ZGVz
dHJveSgpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHJldmlzaW9u
IDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzM4LDIyICszMzgsMjUgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVy
VGFibGVDZWxsOjpjbwogICAgIAogICAgIC8vIEZvciBib3JkZXIgbGVmdCwgd2UgbmVlZCB0byBj
aGVjaywgaW4gb3JkZXIgb2YgcHJlY2VkZW5jZToKICAgICAvLyAoMSkgT3VyIGxlZnQgYm9yZGVy
LgotICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHJlc3VsdCgmc3R5bGUoKS0+Ym9yZGVyTGVmdCgp
LCBCQ0VMTCk7CisgICAgaW50IGxlZnQgPSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcjsKKyAg
ICBpbnQgcmlnaHQgPSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I7CisgICAgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUgcmVzdWx0KCZzdHlsZSgpLT5ib3JkZXJMZWZ0KCksIHZpc2l0ZWREZXBlbmRl
bnRDb2xvcihmYWxzZSwgc3R5bGUoKSwgbGVmdCksIEJDRUxMKTsKICAgICAKICAgICAvLyAoMikg
VGhlIHJpZ2h0IGJvcmRlciBvZiB0aGUgY2VsbCB0byB0aGUgbGVmdC4KICAgICBSZW5kZXJUYWJs
ZUNlbGwqIHByZXZDZWxsID0gcnRsID8gdGFibGVFbHQtPmNlbGxBZnRlcih0aGlzKSA6IHRhYmxl
RWx0LT5jZWxsQmVmb3JlKHRoaXMpOwogICAgIGlmIChwcmV2Q2VsbCkgewotICAgICAgICByZXN1
bHQgPSBydGwgPyBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZw
cmV2Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgQkNFTEwpKSA6IGNvbXBhcmVCb3JkZXJz
KENvbGxhcHNlZEJvcmRlclZhbHVlKCZwcmV2Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwg
QkNFTEwpLCByZXN1bHQpOworICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBwcmV2Q2VsbEJv
cmRlciA9IENvbGxhcHNlZEJvcmRlclZhbHVlKCZwcmV2Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyUmln
aHQoKSwgcHJldkNlbGwtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwgcHJldkNlbGwtPnN0
eWxlKCksIHJpZ2h0KSwgQkNFTEwpOworICAgICAgICByZXN1bHQgPSBydGwgPyBjb21wYXJlQm9y
ZGVycyhyZXN1bHQsIHByZXZDZWxsQm9yZGVyKSA6IGNvbXBhcmVCb3JkZXJzKHByZXZDZWxsQm9y
ZGVyLCByZXN1bHQpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfSBlbHNlIGlmIChsZWZ0bW9zdENvbHVtbikgewogICAgICAg
ICAvLyAoMykgT3VyIHJvdydzIGxlZnQgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjb21wYXJl
Qm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZwYXJlbnQoKS0+c3R5bGUoKS0+
Ym9yZGVyTGVmdCgpLCBCUk9XKSk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJl
c3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJMZWZ0
KCksIHBhcmVudCgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZmFsc2UsIHBhcmVudCgpLT5zdHls
ZSgpLCBsZWZ0KSwgQlJPVykpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIAogICAgICAgICAvLyAoNCkgT3VyIHJvdyBn
cm91cCdzIGxlZnQgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1
bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZzZWN0aW9uKCktPnN0eWxlKCktPmJvcmRlckxlZnQo
KSwgQlJPV0dST1VQKSk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwg
Q29sbGFwc2VkQm9yZGVyVmFsdWUoJnNlY3Rpb24oKS0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBz
ZWN0aW9uKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwgc2VjdGlvbigpLT5zdHlsZSgp
LCBsZWZ0KSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0zNjMsMTEgKzM2NiwxMSBAQCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvCiAgICAgYm9vbCBlbmRDb2xFZGdl
OwogICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0YWJsZUVsdC0+Y29sRWxlbWVudChjb2wo
KSArIChydGwgPyBjb2xTcGFuKCkgLSAxIDogMCksICZzdGFydENvbEVkZ2UsICZlbmRDb2xFZGdl
KTsKICAgICBpZiAoY29sRWx0ICYmICghcnRsID8gc3RhcnRDb2xFZGdlIDogZW5kQ29sRWRnZSkp
IHsKLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIEJDT0wpKTsKKyAgICAgICAg
cmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29s
RWx0LT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIGNvbEVsdC0+dmlzaXRlZERlcGVuZGVudENvbG9y
KGZhbHNlLCBjb2xFbHQtPnN0eWxlKCksIGxlZnQpLCBCQ09MKSk7CiAgICAgICAgIGlmICghcmVz
dWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgaWYgKGNv
bEVsdC0+cGFyZW50KCktPmlzVGFibGVDb2woKSAmJiAoIXJ0bCA/ICFjb2xFbHQtPnByZXZpb3Vz
U2libGluZygpIDogIWNvbEVsdC0+bmV4dFNpYmxpbmcoKSkpIHsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+
cGFyZW50KCktPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAg
ICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZj
b2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIGNvbEVsdC0+cGFyZW50KCkt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwgY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKSwg
bGVmdCksIEJDT0xHUk9VUCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtMzc3LDEzICszODAs
MTQgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjbwogICAgIGlmICgh
bGVmdG1vc3RDb2x1bW4pIHsKICAgICAgICAgY29sRWx0ID0gdGFibGVFbHQtPmNvbEVsZW1lbnQo
Y29sKCkgKyAocnRsID8gY29sU3BhbigpIDogLTEpLCAmc3RhcnRDb2xFZGdlLCAmZW5kQ29sRWRn
ZSk7CiAgICAgICAgIGlmIChjb2xFbHQgJiYgKCFydGwgPyBlbmRDb2xFZGdlIDogc3RhcnRDb2xF
ZGdlKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gcnRsID8gY29tcGFyZUJvcmRlcnMocmVzdWx0
LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBC
Q09MKSkgOiBjb21wYXJlQm9yZGVycyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHls
ZSgpLT5ib3JkZXJSaWdodCgpLCBCQ09MKSwgcmVzdWx0KTsKKyAgICAgICAgICAgIENvbGxhcHNl
ZEJvcmRlclZhbHVlIHJpZ2h0Qm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+
c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgY29sRWx0LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZmFs
c2UsIGNvbEVsdC0+c3R5bGUoKSwgcmlnaHQpLCBCQ09MKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IHJ0bCA/IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgcmlnaHRCb3JkZXIpIDogY29tcGFyZUJvcmRl
cnMocmlnaHRCb3JkZXIsIHJlc3VsdCk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKICAgICAgICAgLy8gKDcpIFRoZSB0YWJsZSdzIGxlZnQgYm9yZGVyLgotICAgICAgICByZXN1
bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZ0YWJsZUVs
dC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBCVEFCTEUpKTsKKyAgICAgICAgcmVzdWx0ID0gY29t
cGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmdGFibGVFbHQtPnN0eWxl
KCktPmJvcmRlckxlZnQoKSwgdGFibGVFbHQtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwg
dGFibGVFbHQtPnN0eWxlKCksIGxlZnQpLCBCVEFCTEUpKTsKICAgICAgICAgaWYgKCFyZXN1bHQu
ZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTQwNCwyNCAr
NDA4LDI3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KICAgICAK
ICAgICAvLyBGb3IgYm9yZGVyIHJpZ2h0LCB3ZSBuZWVkIHRvIGNoZWNrLCBpbiBvcmRlciBvZiBw
cmVjZWRlbmNlOgogICAgIC8vICgxKSBPdXIgcmlnaHQgYm9yZGVyLgotICAgIENvbGxhcHNlZEJv
cmRlclZhbHVlIHJlc3VsdCA9IENvbGxhcHNlZEJvcmRlclZhbHVlKCZzdHlsZSgpLT5ib3JkZXJS
aWdodCgpLCBCQ0VMTCk7CisgICAgaW50IGxlZnQgPSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xv
cjsKKyAgICBpbnQgcmlnaHQgPSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I7CisgICAgQ29s
bGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnN0eWxlKCkt
PmJvcmRlclJpZ2h0KCksIHZpc2l0ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwgc3R5bGUoKSwgcmln
aHQpLCBCQ0VMTCk7CiAgICAgCiAgICAgLy8gKDIpIFRoZSBsZWZ0IGJvcmRlciBvZiB0aGUgY2Vs
bCB0byB0aGUgcmlnaHQuCiAgICAgaWYgKCFyaWdodG1vc3RDb2x1bW4pIHsKICAgICAgICAgUmVu
ZGVyVGFibGVDZWxsKiBuZXh0Q2VsbCA9IHJ0bCA/IHRhYmxlRWx0LT5jZWxsQmVmb3JlKHRoaXMp
IDogdGFibGVFbHQtPmNlbGxBZnRlcih0aGlzKTsKICAgICAgICAgaWYgKG5leHRDZWxsICYmIG5l
eHRDZWxsLT5zdHlsZSgpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBydGwgPyBjb21wYXJlQm9y
ZGVycyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmbmV4dENlbGwtPnN0eWxlKCktPmJvcmRlckxlZnQo
KSwgQkNFTEwpLCByZXN1bHQpIDogY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSgmbmV4dENlbGwtPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgQkNFTEwpKTsKKyAgICAg
ICAgICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGxlZnRCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSgmbmV4dENlbGwtPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgbmV4dENlbGwtPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihmYWxzZSwgbmV4dENlbGwtPnN0eWxlKCksIGxlZnQpLCBCQ0VMTCk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBydGwgPyBjb21wYXJlQm9yZGVycyhsZWZ0Qm9yZGVyLCByZXN1
bHQpIDogY29tcGFyZUJvcmRlcnMocmVzdWx0LCBsZWZ0Qm9yZGVyKTsKICAgICAgICAgICAgIGlm
ICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyAoMykgT3VyIHJvdydzIHJpZ2h0IGJvcmRl
ci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIEJST1cpKTsKKyAgICAg
ICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgm
cGFyZW50KCktPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIHBhcmVudCgpLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoZmFsc2UsIHBhcmVudCgpLT5zdHlsZSgpLCByaWdodCksIEJST1cpKTsKICAgICAg
ICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICAKICAgICAgICAgLy8gKDQpIE91ciByb3cgZ3JvdXAncyByaWdodCBib3JkZXIuCi0gICAg
ICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUo
JnNlY3Rpb24oKS0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgQlJPV0dST1VQKSk7CisgICAgICAg
IHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnNl
Y3Rpb24oKS0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgc2VjdGlvbigpLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoZmFsc2UsIHNlY3Rpb24oKS0+c3R5bGUoKSwgcmlnaHQpLCBCUk9XR1JPVVApKTsK
ICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KQEAgLTQzMSwxMSArNDM4LDExIEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRl
clRhYmxlQ2VsbDo6Y28KICAgICBib29sIGVuZENvbEVkZ2U7CiAgICAgUmVuZGVyVGFibGVDb2wq
IGNvbEVsdCA9IHRhYmxlRWx0LT5jb2xFbGVtZW50KGNvbCgpICsgKHJ0bCA/IDAgOiBjb2xTcGFu
KCkgLSAxKSwgJnN0YXJ0Q29sRWRnZSwgJmVuZENvbEVkZ2UpOwogICAgIGlmIChjb2xFbHQgJiYg
KCFydGwgPyBlbmRDb2xFZGdlIDogc3RhcnRDb2xFZGdlKSkgewotICAgICAgICByZXN1bHQgPSBj
b21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnN0eWxl
KCktPmJvcmRlclJpZ2h0KCksIEJDT0wpKTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRl
cnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJS
aWdodCgpLCBjb2xFbHQtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwgY29sRWx0LT5zdHls
ZSgpLCByaWdodCksIEJDT0wpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICBpZiAoY29sRWx0LT5wYXJlbnQoKS0+aXNU
YWJsZUNvbCgpICYmICghcnRsID8gIWNvbEVsdC0+bmV4dFNpYmxpbmcoKSA6ICFjb2xFbHQtPnBy
ZXZpb3VzU2libGluZygpKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMo
cmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+
Ym9yZGVyUmlnaHQoKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICByZXN1bHQgPSBjb21wYXJl
Qm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnBhcmVudCgpLT5z
dHlsZSgpLT5ib3JkZXJSaWdodCgpLCBjb2xFbHQtPnBhcmVudCgpLT52aXNpdGVkRGVwZW5kZW50
Q29sb3IoZmFsc2UsIGNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCksIHJpZ2h0KSwgQkNPTEdST1VQ
KSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC00NDUsMTMgKzQ1MiwxNCBAQCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvCiAgICAgaWYgKCFyaWdodG1vc3RDb2x1bW4p
IHsKICAgICAgICAgY29sRWx0ID0gdGFibGVFbHQtPmNvbEVsZW1lbnQoY29sKCkgKyAocnRsID8g
LTEgOiBjb2xTcGFuKCkpLCAmc3RhcnRDb2xFZGdlLCAmZW5kQ29sRWRnZSk7CiAgICAgICAgIGlm
IChjb2xFbHQgJiYgKCFydGwgPyBzdGFydENvbEVkZ2UgOiBlbmRDb2xFZGdlKSkgewotICAgICAg
ICAgICAgcmVzdWx0ID0gcnRsID8gY29tcGFyZUJvcmRlcnMoQ29sbGFwc2VkQm9yZGVyVmFsdWUo
JmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBCQ09MKSwgcmVzdWx0KSA6IGNvbXBhcmVC
b3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9y
ZGVyTGVmdCgpLCBCQ09MKSk7CisgICAgICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBsZWZ0
Qm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyTGVm
dCgpLCBjb2xFbHQtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwgY29sRWx0LT5zdHlsZSgp
LCBsZWZ0KSwgQkNPTCk7CisgICAgICAgICAgICByZXN1bHQgPSBydGwgPyBjb21wYXJlQm9yZGVy
cyhsZWZ0Qm9yZGVyLCByZXN1bHQpIDogY29tcGFyZUJvcmRlcnMocmVzdWx0LCBsZWZ0Qm9yZGVy
KTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyAoNykgVGhl
IHRhYmxlJ3MgcmlnaHQgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhy
ZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZ0YWJsZUVsdC0+c3R5bGUoKS0+Ym9yZGVyUmln
aHQoKSwgQlRBQkxFKSk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwg
Q29sbGFwc2VkQm9yZGVyVmFsdWUoJnRhYmxlRWx0LT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCB0
YWJsZUVsdC0+dmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNlLCB0YWJsZUVsdC0+c3R5bGUoKSwg
cmlnaHQpLCBCVEFCTEUpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTQ2MywxOCArNDcxLDIwIEBAIENvbGxhcHNl
ZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KIHsKICAgICAvLyBGb3IgYm9yZGVyIHRv
cCwgd2UgbmVlZCB0byBjaGVjaywgaW4gb3JkZXIgb2YgcHJlY2VkZW5jZToKICAgICAvLyAoMSkg
T3VyIHRvcCBib3JkZXIuCi0gICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFw
c2VkQm9yZGVyVmFsdWUoJnN0eWxlKCktPmJvcmRlclRvcCgpLCBCQ0VMTCk7CisgICAgaW50IHRv
cCA9IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I7CisgICAgaW50IGJvdHRvbSA9IENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tQ29sb3I7CisgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0ID0g
Q29sbGFwc2VkQm9yZGVyVmFsdWUoJnN0eWxlKCktPmJvcmRlclRvcCgpLCB2aXNpdGVkRGVwZW5k
ZW50Q29sb3IoZmFsc2UsIHN0eWxlKCksIHRvcCksIEJDRUxMKTsKICAgICAKICAgICBSZW5kZXJU
YWJsZUNlbGwqIHByZXZDZWxsID0gdGFibGUoKS0+Y2VsbEFib3ZlKHRoaXMpOwogICAgIGlmIChw
cmV2Q2VsbCkgewogICAgICAgICAvLyAoMikgQSBwcmV2aW91cyBjZWxsJ3MgYm90dG9tIGJvcmRl
ci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMoQ29sbGFwc2VkQm9yZGVyVmFsdWUo
JnByZXZDZWxsLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgQkNFTEwpLCByZXN1bHQpOworICAg
ICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcHJldkNl
bGwtPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBwcmV2Q2VsbC0+dmlzaXRlZERlcGVuZGVudENv
bG9yKGZhbHNlLCBwcmV2Q2VsbC0+c3R5bGUoKSwgYm90dG9tKSwgQkNFTEwpLCByZXN1bHQpOwog
ICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkgCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KICAgICAKICAgICAvLyAoMykgT3VyIHJvdydzIHRvcCBib3JkZXIuCi0gICAgcmVz
dWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcGFyZW50
KCktPnN0eWxlKCktPmJvcmRlclRvcCgpLCBCUk9XKSk7CisgICAgcmVzdWx0ID0gY29tcGFyZUJv
cmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxlKCktPmJv
cmRlclRvcCgpLCBwYXJlbnQoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNlLCBwYXJlbnQo
KS0+c3R5bGUoKSwgdG9wKSwgQlJPVykpOwogICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIApAQCAtNDg3LDcgKzQ5Nyw3IEBAIENvbGxhcHNlZEJv
cmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KICAgICAgICAgICAgIHByZXZSb3cgPSBwcmV2
Q2VsbC0+c2VjdGlvbigpLT5sYXN0Q2hpbGQoKTsKICAgICAKICAgICAgICAgaWYgKHByZXZSb3cp
IHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKENvbGxhcHNlZEJvcmRlclZh
bHVlKCZwcmV2Um93LT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgQlJPVyksIHJlc3VsdCk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgm
cHJldlJvdy0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIHByZXZSb3ctPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihmYWxzZSwgcHJldlJvdy0+c3R5bGUoKSwgYm90dG9tKSwgQlJPVyksIHJlc3VsdCk7
CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC00OTcsMTQgKzUwNywxNCBAQCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvCiAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBjdXJy
U2VjdGlvbiA9IHNlY3Rpb24oKTsKICAgICBpZiAoIXJvdygpKSB7CiAgICAgICAgIC8vICg1KSBP
dXIgcm93IGdyb3VwJ3MgdG9wIGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRl
cnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJv
cmRlclRvcCgpLCBCUk9XR1JPVVApKTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMo
cmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRl
clRvcCgpLCBjdXJyU2VjdGlvbi0+dmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNlLCBjdXJyU2Vj
dGlvbi0+c3R5bGUoKSwgdG9wKSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4
aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgCiAgICAgICAgIC8v
ICg2KSBQcmV2aW91cyByb3cgZ3JvdXAncyBib3R0b20gYm9yZGVyLgogICAgICAgICBjdXJyU2Vj
dGlvbiA9IHRhYmxlKCktPnNlY3Rpb25BYm92ZShjdXJyU2VjdGlvbik7CiAgICAgICAgIGlmIChj
dXJyU2VjdGlvbikgewotICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMoQ29sbGFw
c2VkQm9yZGVyVmFsdWUoJmN1cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgQlJP
V0dST1VQKSwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKENv
bGxhcHNlZEJvcmRlclZhbHVlKCZjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCks
IGN1cnJTZWN0aW9uLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZmFsc2UsIGN1cnJTZWN0aW9uLT5z
dHlsZSgpLCBib3R0b20pLCBCUk9XR1JPVVApLCByZXN1bHQpOwogICAgICAgICAgICAgaWYgKCFy
ZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAg
fQpAQCAtNTE0LDE4ICs1MjQsMTkgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVD
ZWxsOjpjbwogICAgICAgICAvLyAoOCkgT3VyIGNvbHVtbiBhbmQgY29sdW1uIGdyb3VwJ3MgdG9w
IGJvcmRlcnMuCiAgICAgICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0YWJsZSgpLT5jb2xF
bGVtZW50KGNvbCgpKTsKICAgICAgICAgaWYgKGNvbEVsdCkgewotICAgICAgICAgICAgcmVzdWx0
ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5z
dHlsZSgpLT5ib3JkZXJUb3AoKSwgQkNPTCkpOworICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFy
ZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5i
b3JkZXJUb3AoKSwgY29sRWx0LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZmFsc2UsIGNvbEVsdC0+
c3R5bGUoKSwgdG9wKSwgQkNPTCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIGlmIChjb2xFbHQt
PnBhcmVudCgpLT5pc1RhYmxlQ29sKCkpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21w
YXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnBhcmVudCgp
LT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICAgICAgcmVz
dWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0
LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIGNvbEVsdC0+cGFyZW50KCktPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwgY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKSwgdG9wKSwg
QkNPTEdST1VQKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIC8vICg5KSBUaGUgdGFibGUncyB0b3AgYm9yZGVyLgotICAgICAg
ICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZ0
YWJsZSgpLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgQlRBQkxFKSk7CisgICAgICAgIFJlbmRlclRh
YmxlKiBlbmNsb3NpbmdUYWJsZSA9IHRhYmxlKCk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVC
b3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmVuY2xvc2luZ1RhYmxlLT5zdHls
ZSgpLT5ib3JkZXJUb3AoKSwgZW5jbG9zaW5nVGFibGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihm
YWxzZSwgZW5jbG9zaW5nVGFibGUtPnN0eWxlKCksIHRvcCksIEJUQUJMRSkpOwogICAgICAgICBp
ZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpA
QCAtNTM3LDI0ICs1NDgsMjYgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxs
OjpjbwogewogICAgIC8vIEZvciBib3JkZXIgdG9wLCB3ZSBuZWVkIHRvIGNoZWNrLCBpbiBvcmRl
ciBvZiBwcmVjZWRlbmNlOgogICAgIC8vICgxKSBPdXIgYm90dG9tIGJvcmRlci4KLSAgICBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmc3R5bGUoKS0+
Ym9yZGVyQm90dG9tKCksIEJDRUxMKTsKKyAgICBpbnQgdG9wID0gQ1NTUHJvcGVydHlCb3JkZXJU
b3BDb2xvcjsKKyAgICBpbnQgYm90dG9tID0gQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcjsK
KyAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgm
c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIHZpc2l0ZWREZXBlbmRlbnRDb2xvcihmYWxzZSwgc3R5
bGUoKSwgYm90dG9tKSwgQkNFTEwpOwogICAgIAogICAgIFJlbmRlclRhYmxlQ2VsbCogbmV4dENl
bGwgPSB0YWJsZSgpLT5jZWxsQmVsb3codGhpcyk7CiAgICAgaWYgKG5leHRDZWxsKSB7CiAgICAg
ICAgIC8vICgyKSBBIGZvbGxvd2luZyBjZWxsJ3MgdG9wIGJvcmRlci4KLSAgICAgICAgcmVzdWx0
ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmbmV4dENlbGwt
PnN0eWxlKCktPmJvcmRlclRvcCgpLCBCQ0VMTCkpOworICAgICAgICByZXN1bHQgPSBjb21wYXJl
Qm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZuZXh0Q2VsbC0+c3R5bGUoKS0+
Ym9yZGVyVG9wKCksIG5leHRDZWxsLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZmFsc2UsIG5leHRD
ZWxsLT5zdHlsZSgpLCB0b3ApLCBCQ0VMTCkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMo
KSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIC8vICgzKSBP
dXIgcm93J3MgYm90dG9tIGJvcmRlci4gKEZJWE1FOiBEZWFsIHdpdGggcm93c3BhbiEpCi0gICAg
cmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcGFy
ZW50KCktPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBCUk9XKSk7CisgICAgcmVzdWx0ID0gY29t
cGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxl
KCktPmJvcmRlckJvdHRvbSgpLCBwYXJlbnQoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNl
LCBwYXJlbnQoKS0+c3R5bGUoKSwgYm90dG9tKSwgQlJPVykpOwogICAgIGlmICghcmVzdWx0LmV4
aXN0cygpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIAogICAgIC8vICg0KSBUaGUgbmV4
dCByb3cncyB0b3AgYm9yZGVyLgogICAgIGlmIChuZXh0Q2VsbCkgewotICAgICAgICByZXN1bHQg
PSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZuZXh0Q2VsbC0+
cGFyZW50KCktPnN0eWxlKCktPmJvcmRlclRvcCgpLCBCUk9XKSk7CisgICAgICAgIHJlc3VsdCA9
IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJm5leHRDZWxsLT5w
YXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIG5leHRDZWxsLT5wYXJlbnQoKS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKGZhbHNlLCBuZXh0Q2VsbC0+cGFyZW50KCktPnN0eWxlKCksIHRvcCks
IEJST1cpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KQEAgLTU2MywxNCArNTc2LDE0IEBAIENvbGxhcHNlZEJvcmRlclZh
bHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGN1cnJTZWN0
aW9uID0gc2VjdGlvbigpOwogICAgIGlmIChyb3coKSArIHJvd1NwYW4oKSA+PSBjdXJyU2VjdGlv
bi0+bnVtUm93cygpKSB7CiAgICAgICAgIC8vICg1KSBPdXIgcm93IGdyb3VwJ3MgYm90dG9tIGJv
cmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBCUk9XR1JP
VVApKTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBjdXJyU2Vj
dGlvbi0+dmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNlLCBjdXJyU2VjdGlvbi0+c3R5bGUoKSwg
Ym90dG9tKSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgCiAgICAgICAgIC8vICg2KSBGb2xsb3dp
bmcgcm93IGdyb3VwJ3MgdG9wIGJvcmRlci4KICAgICAgICAgY3VyclNlY3Rpb24gPSB0YWJsZSgp
LT5zZWN0aW9uQmVsb3coY3VyclNlY3Rpb24pOwogICAgICAgICBpZiAoY3VyclNlY3Rpb24pIHsK
LSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUoJmN1cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgQlJPV0dST1VQKSk7
CisgICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJv
cmRlclZhbHVlKCZjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIGN1cnJTZWN0aW9u
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZmFsc2UsIGN1cnJTZWN0aW9uLT5zdHlsZSgpLCB0b3Ap
LCBCUk9XR1JPVVApKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTU4MCwxNyArNTkzLDE4IEBA
IENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KICAgICAgICAgLy8gKDgp
IE91ciBjb2x1bW4gYW5kIGNvbHVtbiBncm91cCdzIGJvdHRvbSBib3JkZXJzLgogICAgICAgICBS
ZW5kZXJUYWJsZUNvbCogY29sRWx0ID0gdGFibGUoKS0+Y29sRWxlbWVudChjb2woKSk7CiAgICAg
ICAgIGlmIChjb2xFbHQpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJl
c3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyQm90dG9t
KCksIEJDT0wpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwg
Q29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIGNv
bEVsdC0+dmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNlLCBjb2xFbHQtPnN0eWxlKCksIGJvdHRv
bSksIEJDT0wpKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKSByZXR1cm4gcmVz
dWx0OwogICAgICAgICAgICAgaWYgKGNvbEVsdC0+cGFyZW50KCktPmlzVGFibGVDb2woKSkgewot
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUoJmNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBC
Q09MR1JPVVApKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1
bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3Jk
ZXJCb3R0b20oKSwgY29sRWx0LT5wYXJlbnQoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNl
LCBjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLCBib3R0b20pLCBCQ09MR1JPVVApKTsKICAgICAg
ICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
Ly8gKDkpIFRoZSB0YWJsZSdzIGJvdHRvbSBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNvbXBh
cmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnRhYmxlKCktPnN0eWxlKCkt
PmJvcmRlckJvdHRvbSgpLCBCVEFCTEUpKTsKKyAgICAgICAgUmVuZGVyVGFibGUqIGVuY2xvc2lu
Z1RhYmxlID0gdGFibGUoKTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0
LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmZW5jbG9zaW5nVGFibGUtPnN0eWxlKCktPmJvcmRlckJv
dHRvbSgpLCBlbmNsb3NpbmdUYWJsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGZhbHNlLCBlbmNs
b3NpbmdUYWJsZS0+c3R5bGUoKSwgYm90dG9tKSwgQlRBQkxFKSk7CiAgICAgICAgIGlmICghcmVz
dWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC04MDgs
NyArODIyLDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2VkQm9yZAogICAg
IGZvciAoQ29sbGFwc2VkQm9yZGVyKiBib3JkZXIgPSBib3JkZXJzLm5leHRCb3JkZXIoKTsgYm9y
ZGVyOyBib3JkZXIgPSBib3JkZXJzLm5leHRCb3JkZXIoKSkgewogICAgICAgICBpZiAoYm9yZGVy
LT5ib3JkZXJWYWx1ZSA9PSAqdGFibGUoKS0+Y3VycmVudEJvcmRlclN0eWxlKCkpCiAgICAgICAg
ICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXItPngxLCBib3Jk
ZXItPnkxLCBib3JkZXItPngyLCBib3JkZXItPnkyLCBib3JkZXItPnNpZGUsIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci0+Ym9yZGVyVmFsdWUuY29sb3IoKSwgc3R5bGUo
KS0+Y29sb3IoKSwgYm9yZGVyLT5zdHlsZSwgMCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9yZGVyLT5ib3JkZXJWYWx1ZS5jb2xvcigpLCBib3JkZXItPnN0eWxlLCAwLCAw
KTsKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbGxhcHNlZEJv
cmRlclZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29sbGFw
c2VkQm9yZGVyVmFsdWUuaAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9Db2xsYXBzZWRCb3JkZXJWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw5
IEBAIHN0cnVjdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSB7CiAgICAgewogICAgIH0KIAotICAgIENv
bGxhcHNlZEJvcmRlclZhbHVlKGNvbnN0IEJvcmRlclZhbHVlKiBiLCBFQm9yZGVyUHJlY2VkZW5j
ZSBwKQorICAgIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbnN0IEJvcmRlclZhbHVlKiBiLCBDb2xv
ciBjLCBFQm9yZGVyUHJlY2VkZW5jZSBwKQogICAgICAgICA6IGJvcmRlcihiKQorICAgICAgICAs
IGJvcmRlckNvbG9yKGMpCiAgICAgICAgICwgcHJlY2VkZW5jZShwKQogICAgIHsKICAgICB9CkBA
IC00NSw3ICs0Niw3IEBAIHN0cnVjdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSB7CiAgICAgaW50IHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gYm9yZGVyICYmIGJvcmRlci0+bm9uWmVybygpID8gYm9yZGVy
LT53aWR0aCA6IDA7IH0KICAgICBFQm9yZGVyU3R5bGUgc3R5bGUoKSBjb25zdCB7IHJldHVybiBi
b3JkZXIgPyBib3JkZXItPnN0eWxlKCkgOiBCSElEREVOOyB9CiAgICAgYm9vbCBleGlzdHMoKSBj
b25zdCB7IHJldHVybiBib3JkZXI7IH0KLSAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJu
IGJvcmRlciA/IGJvcmRlci0+Y29sb3IgOiBDb2xvcigpOyB9CisgICAgQ29sb3IgY29sb3IoKSBj
b25zdCB7IHJldHVybiBib3JkZXJDb2xvcjsgfQogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIGNv
bnN0IHsgcmV0dXJuIGJvcmRlciA/IGJvcmRlci0+aXNUcmFuc3BhcmVudCgpIDogdHJ1ZTsgfQog
ICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSYgbykg
Y29uc3QKQEAgLTU0LDEwICs1NSwxMSBAQCBzdHJ1Y3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUgewog
ICAgICAgICAgICAgcmV0dXJuICFvLmJvcmRlcjsKICAgICAgICAgaWYgKCFvLmJvcmRlcikKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuICpib3JkZXIgPT0gKm8uYm9y
ZGVyICYmIHByZWNlZGVuY2UgPT0gby5wcmVjZWRlbmNlOworICAgICAgICByZXR1cm4gKmJvcmRl
ciA9PSAqby5ib3JkZXIgJiYgYm9yZGVyQ29sb3IgPT0gby5ib3JkZXJDb2xvciAmJiBwcmVjZWRl
bmNlID09IG8ucHJlY2VkZW5jZTsKICAgICB9CiAgICAgCiAgICAgY29uc3QgQm9yZGVyVmFsdWUq
IGJvcmRlcjsKKyAgICBDb2xvciBib3JkZXJDb2xvcjsKICAgICBFQm9yZGVyUHJlY2VkZW5jZSBw
cmVjZWRlbmNlOyAgICAKIH07CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNiArNTAyLDcgQEAgU3R5bGVEaWZm
ZXJlbmNlIFJlbmRlclN0eWxlOjpkaWZmKGNvbnN0IAogICAgICAgICBpbmhlcml0ZWRfZmxhZ3Mu
X3Zpc2liaWxpdHkgIT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5fdmlzaWJpbGl0eSB8fAogICAg
ICAgICBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMgIT0gb3RoZXItPmluaGVyaXRl
ZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyB8fAogICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX2Zv
cmNlX2JhY2tncm91bmRzX3RvX3doaXRlICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX2ZvcmNl
X2JhY2tncm91bmRzX3RvX3doaXRlIHx8CisgICAgICAgIGluaGVyaXRlZF9mbGFncy5fbGlua1N0
YXRlICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX2xpbmtTdGF0ZSB8fAogICAgICAgICBzdXJy
b3VuZC0+Ym9yZGVyICE9IG90aGVyLT5zdXJyb3VuZC0+Ym9yZGVyIHx8CiAgICAgICAgICpiYWNr
Z3JvdW5kLmdldCgpICE9ICpvdGhlci0+YmFja2dyb3VuZC5nZXQoKSB8fAogICAgICAgICB2aXN1
YWwtPnRleHREZWNvcmF0aW9uICE9IG90aGVyLT52aXN1YWwtPnRleHREZWNvcmF0aW9uIHx8Cklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDU2ODU5KQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTc2LDcgKzE3Niw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICAgICAoX3Zpc3Vh
bGx5T3JkZXJlZCA9PSBvdGhlci5fdmlzdWFsbHlPcmRlcmVkKSAmJgogICAgICAgICAgICAgICAg
ICAgIChfaHRtbEhhY2tzID09IG90aGVyLl9odG1sSGFja3MpICYmCiAgICAgICAgICAgICAgICAg
ICAgKF9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSA9PSBvdGhlci5fZm9yY2VfYmFja2dyb3Vu
ZHNfdG9fd2hpdGUpICYmCi0gICAgICAgICAgICAgICAgICAgKF9wb2ludGVyRXZlbnRzID09IG90
aGVyLl9wb2ludGVyRXZlbnRzKTsKKyAgICAgICAgICAgICAgICAgICAoX3BvaW50ZXJFdmVudHMg
PT0gb3RoZXIuX3BvaW50ZXJFdmVudHMpICYmCisgICAgICAgICAgICAgICAgICAgKF9saW5rU3Rh
dGUgPT0gb3RoZXIuX2xpbmtTdGF0ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsgfQpAQCAtMjAxLDYgKzIwMiw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgYm9v
bCBfaHRtbEhhY2tzIDogMTsKICAgICAgICAgYm9vbCBfZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hp
dGUgOiAxOwogICAgICAgICB1bnNpZ25lZCBfcG9pbnRlckV2ZW50cyA6IDQ7IC8vIEVQb2ludGVy
RXZlbnRzCisgICAgICAgIEVMaW5rU3RhdGUgX2xpbmtTdGF0ZSA6IDI7IC8vIExpbmsgc3RhdGUg
KG5vbmUsIHVudmlzaXRlZCwgdmlzaXRlZCkKICAgICAgICAgLy8gNDEgYml0cwogICAgIH0gaW5o
ZXJpdGVkX2ZsYWdzOwogCkBAIC0yNzUsNiArMjc3LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBp
bmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24gPSBpbml0aWFsQm94RGlyZWN0aW9uKCk7CiAg
ICAgICAgIGluaGVyaXRlZF9mbGFncy5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgPSBmYWxz
ZTsKICAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9wb2ludGVyRXZlbnRzID0gaW5pdGlhbFBvaW50
ZXJFdmVudHMoKTsKKyAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9saW5rU3RhdGUgPSBpbml0aWFs
TGlua1N0YXRlKCk7CiAKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9lZmZlY3RpdmVEaXNw
bGF5ID0gbm9uaW5oZXJpdGVkX2ZsYWdzLl9vcmlnaW5hbERpc3BsYXkgPSBpbml0aWFsRGlzcGxh
eSgpOwogICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX292ZXJmbG93WCA9IGluaXRpYWxPdmVy
Zmxvd1goKTsKQEAgLTU4Nyw2ICs1OTAsOCBAQCBwdWJsaWM6CiAKICAgICBDdXJzb3JMaXN0KiBj
dXJzb3JzKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5jdXJzb3JEYXRhLmdldCgpOyB9CiAK
KyAgICBFTGlua1N0YXRlIGxpbmtTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVM
aW5rU3RhdGU+KGluaGVyaXRlZF9mbGFncy5fbGlua1N0YXRlKTsgfQorCiAgICAgc2hvcnQgd2lk
b3dzKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT53aWRvd3M7IH0KICAgICBzaG9ydCBvcnBo
YW5zKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5vcnBoYW5zOyB9CiAgICAgRVBhZ2VCcmVh
ayBwYWdlQnJlYWtJbnNpZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFUGFnZUJyZWFr
Pihub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfaW5zaWRlKTsgfQpAQCAtOTEyLDYgKzkx
Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1cnNvckxpc3QoUGFzc1JlZlB0cjxDdXJzb3JM
aXN0Pik7CiAgICAgdm9pZCBjbGVhckN1cnNvckxpc3QoKTsKIAorICAgIHZvaWQgc2V0TGlua1N0
YXRlKEVMaW5rU3RhdGUgbCkgeyBpbmhlcml0ZWRfZmxhZ3MuX2xpbmtTdGF0ZSA9IGw7IH0KKyAg
ICAKICAgICBib29sIGZvcmNlQmFja2dyb3VuZHNUb1doaXRlKCkgY29uc3QgeyByZXR1cm4gaW5o
ZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZTsgfQogICAgIHZvaWQgc2V0
Rm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoYm9vbCBiPXRydWUpIHsgaW5oZXJpdGVkX2ZsYWdzLl9m
b3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSA9IGI7IH0KIApAQCAtMTE4NCw2ICsxMTkxLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFRyYW5zZm9ybU9yaWdpblgoKSB7IHJl
dHVybiBMZW5ndGgoNTAuMCwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxU
cmFuc2Zvcm1PcmlnaW5ZKCkgeyByZXR1cm4gTGVuZ3RoKDUwLjAsIFBlcmNlbnQpOyB9CiAgICAg
c3RhdGljIEVQb2ludGVyRXZlbnRzIGluaXRpYWxQb2ludGVyRXZlbnRzKCkgeyByZXR1cm4gUEVf
QVVUTzsgfQorICAgIHN0YXRpYyBFTGlua1N0YXRlIGluaXRpYWxMaW5rU3RhdGUoKSB7IHJldHVy
biBOb25lTGlua1N0YXRlOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxUcmFuc2Zvcm1Pcmln
aW5aKCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBFVHJhbnNmb3JtU3R5bGUzRCBpbml0aWFs
VHJhbnNmb3JtU3R5bGUzRCgpIHsgcmV0dXJuIFRyYW5zZm9ybVN0eWxlM0RGbGF0OyB9CiAgICAg
c3RhdGljIEVCYWNrZmFjZVZpc2liaWxpdHkgaW5pdGlhbEJhY2tmYWNlVmlzaWJpbGl0eSgpIHsg
cmV0dXJuIEJhY2tmYWNlVmlzaWJpbGl0eVZpc2libGU7IH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkocmV2aXNpb24gNTY4NTkpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIGVudW0gUHNldWRvSWQgewogICAgIE1FRElBX0NPTlRS
T0xTX1NFRUtfQkFDS19CVVRUT04sIE1FRElBX0NPTlRST0xTX1NFRUtfRk9SV0FSRF9CVVRUT04s
IE1FRElBX0NPTlRST0xTX0ZVTExTQ1JFRU5fQlVUVE9OLCBNRURJQV9DT05UUk9MU19SRVdJTkRf
QlVUVE9OLCAKICAgICBNRURJQV9DT05UUk9MU19SRVRVUk5fVE9fUkVBTFRJTUVfQlVUVE9OLCBN
RURJQV9DT05UUk9MU19UT0dHTEVfQ0xPU0VEX0NBUFRJT05TX0JVVFRPTiwKICAgICBNRURJQV9D
T05UUk9MU19TVEFUVVNfRElTUExBWSwgU0NST0xMQkFSX1RIVU1CLCBTQ1JPTExCQVJfQlVUVE9O
LCBTQ1JPTExCQVJfVFJBQ0ssIFNDUk9MTEJBUl9UUkFDS19QSUVDRSwgU0NST0xMQkFSX0NPUk5F
UiwgUkVTSVpFUiwKLSAgICBJTlBVVF9MSVNUX0JVVFRPTiwgSU5ORVJfU1BJTl9CVVRUT04sIE9V
VEVSX1NQSU5fQlVUVE9OLAorICAgIElOUFVUX0xJU1RfQlVUVE9OLCBJTk5FUl9TUElOX0JVVFRP
TiwgT1VURVJfU1BJTl9CVVRUT04sIFZJU0lURURfTElOSywKIAogICAgIEFGVEVSX0xBU1RfSU5U
RVJOQUxfUFNFVURPSUQsCiAgICAgRklSU1RfUFVCTElDX1BTRVVET0lEID0gRklSU1RfTElORSwK
QEAgLTM5NCw2ICszOTQsMTAgQEAgZW51bSBFUG9pbnRlckV2ZW50cyB7CiAgICAgUEVfVklTSUJM
RV9TVFJPS0UsIFBFX1ZJU0lCTEVfRklMTCwgUEVfVklTSUJMRV9QQUlOVEVELCBQRV9BTEwKIH07
CiAKK2VudW0gRUxpbmtTdGF0ZSB7CisgICAgTm9uZUxpbmtTdGF0ZSwgVW52aXNpdGVkTGlua1N0
YXRlLCBWaXNpdGVkTGlua1N0YXRlCit9OworCiBlbnVtIEVUcmFuc2Zvcm1TdHlsZTNEIHsKICAg
ICBUcmFuc2Zvcm1TdHlsZTNERmxhdCwgVHJhbnNmb3JtU3R5bGUzRFByZXNlcnZlM0QKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52552</attachid>
            <date>2010-04-05 12:02:30 -0700</date>
            <delta_ts>2010-04-05 14:22:20 -0700</delta_ts>
            <desc>This patch gets the feature working!</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>88355</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzYsNiArODc2
LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpTZWxlYwogICAgICwgbV9j
b2xsZWN0UnVsZXNPbmx5KGZhbHNlKQogICAgICwgbV9wc2V1ZG9TdHlsZShOT1BTRVVETykKICAg
ICAsIG1fZG9jdW1lbnRJc0hUTUwoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCisgICAgLCBt
X21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzKGZhbHNlKQogewogfQogCkBAIC04ODUsNyArODg2LDcg
QEAgUHNldWRvU3RhdGUgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaAogICAgIGlmICghYXR0
ciB8fCBhdHRyLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFBzZXVkb05vbmU7CiAKLSAgICBp
ZiAoIWNoZWNrVmlzaXRlZCkKKyAgICBpZiAoIWNoZWNrVmlzaXRlZCB8fCAhbV9tYXRjaFZpc2l0
ZWRQc2V1ZG9DbGFzcykKICAgICAgICAgcmV0dXJuIFBzZXVkb0FueUxpbms7CiAKICNpZiBQTEFU
Rk9STShRVCkKQEAgLTEwMzAsMjIgKzEwMzEsOCBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNh
blNoYXJlU3R5bGVXaXRoCiAgICAgICAgICAgICAgICAgYm9vbCBtYXBwZWRBdHRyc01hdGNoID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAocy0+aGFzTWFwcGVkQXR0cmlidXRlcygpKQogICAg
ICAgICAgICAgICAgICAgICBtYXBwZWRBdHRyc01hdGNoID0gcy0+bWFwcGVkQXR0cmlidXRlcygp
LT5tYXBzRXF1aXZhbGVudChtX3N0eWxlZEVsZW1lbnQtPm1hcHBlZEF0dHJpYnV0ZXMoKSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1hcHBlZEF0dHJzTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICAg
ICAgYm9vbCBsaW5rc01hdGNoID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAocy0+
aXNMaW5rKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sg
dG8gc2VlIGlmIHRoZSB2aXNpdGVkIHN0YXRlIG1hdGNoZXMuCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNldWRvVW5rbm93bikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENvbG9yJiBsaW5rQ29sb3IgPSBtX2VsZW1lbnQtPmRvY3VtZW50
KCktPmxpbmtDb2xvcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbG9y
JiB2aXNpdGVkQ29sb3IgPSBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnZpc2l0ZWRMaW5rQ29sb3Io
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG9TdGF0ZSA9IG1fY2hlY2tlci5j
aGVja1BzZXVkb1N0YXRlKG1fZWxlbWVudCwgc3R5bGUtPnBzZXVkb1N0YXRlKCkgIT0gUHNldWRv
QW55TGluayB8fCBsaW5rQ29sb3IgIT0gdmlzaXRlZENvbG9yKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzTWF0Y2ggPSAocHNldWRvU3Rh
dGUgPT0gc3R5bGUtPnBzZXVkb1N0YXRlKCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAobGlua3NNYXRjaCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBpZiAobWFwcGVkQXR0cnNNYXRjaCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTM0LDcg
KzExMjEsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAvLyBJ
ZiByZXNvbHZlRm9yUm9vdERlZmF1bHQgaXMgdHJ1ZSwgc3R5bGUgYmFzZWQgb24gdXNlciBhZ2Vu
dCBzdHlsZSBzaGVldCBvbmx5LiBUaGlzIGlzIHVzZWQgaW4gbWVkaWEgcXVlcmllcywgd2hlcmUK
IC8vIHJlbGF0aXZlIHVuaXRzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gZG9jdW1lbnQg
cm9vdCBlbGVtZW50IHN0eWxlLCBzdHlsZWQgb25seSB3aXRoIFVBIHN0eWxlc2hlZXQKIAotUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVs
ZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBkZWZhdWx0UGFyZW50LCBib29sIGFsbG93U2hhcmluZywg
Ym9vbCByZXNvbHZlRm9yUm9vdERlZmF1bHQpCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NT
dHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIGRl
ZmF1bHRQYXJlbnQsIGJvb2wgYWxsb3dTaGFyaW5nLCBib29sIHJlc29sdmVGb3JSb290RGVmYXVs
dCwgYm9vbCBtYXRjaFZpc2l0ZWRSdWxlcykKIHsKICAgICAvLyBPbmNlIGFuIGVsZW1lbnQgaGFz
IGEgcmVuZGVyZXIsIHdlIGRvbid0IHRyeSB0byBkZXN0cm95IGl0LCBzaW5jZSBvdGhlcndpc2Ug
dGhlIHJlbmRlcmVyCiAgICAgLy8gd2lsbCB2YW5pc2ggaWYgYSBzdHlsZSByZWNhbGMgaGFwcGVu
cyBkdXJpbmcgbG9hZGluZy4KQEAgLTExNTcsNiArMTE0NCw4IEBAIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IENTU1N0eWxlU2VsZWN0b3IKICAgICAgICAgICAgIHJldHVybiBzaGFyZWRTdHlsZTsK
ICAgICB9CiAgICAgaW5pdEZvclN0eWxlUmVzb2x2ZShlLCBkZWZhdWx0UGFyZW50KTsKKyAgICAK
KyAgICBtX2NoZWNrZXIubV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IG1hdGNoVmlzaXRlZFJ1
bGVzOwogCiAgICAgbV9zdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKIApAQCAtMTMxOSwx
MyArMTMwOCwzMSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAg
ICAgYWRqdXN0UmVuZGVyU3R5bGUoc3R5bGUoKSwgZSk7CiAKICAgICAvLyBJZiB3ZSBhcmUgYSBs
aW5rLCBjYWNoZSB0aGUgZGV0ZXJtaW5lZCBwc2V1ZG8tc3RhdGUuCi0gICAgaWYgKGUtPmlzTGlu
aygpKQorICAgIGJvb2wgaXNMaW5rID0gZS0+aXNMaW5rKCk7CisgICAgaWYgKGlzTGluaykKICAg
ICAgICAgbV9zdHlsZS0+c2V0UHNldWRvU3RhdGUocHNldWRvU3RhdGUpOwogCiAgICAgLy8gSWYg
d2UgaGF2ZSBmaXJzdC1sZXR0ZXIgcHNldWRvIHN0eWxlLCBkbyBub3Qgc2hhcmUgdGhpcyBzdHls
ZQogICAgIGlmIChtX3N0eWxlLT5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MRVRURVIpKQogICAgICAg
ICBtX3N0eWxlLT5zZXRVbmlxdWUoKTsKIAorICAgIC8vIENvbXB1dGUgb3VyIDp2aXNpdGVkIHN0
eWxlLgorICAgIGlmICghbWF0Y2hWaXNpdGVkUnVsZXMgJiYgbV9zdHlsZS0+aW5zaWRlTGluaygp
KSB7CisgICAgICAgIC8vIEZldGNoIG91ciBwYXJlbnQgc3R5bGUuCisgICAgICAgIFJlbmRlclN0
eWxlKiBwYXJlbnRTdHlsZSA9IG1fcGFyZW50U3R5bGU7CisgICAgICAgIGlmICghaXNMaW5rKSB7
CisgICAgICAgICAgICAvLyBVc2UgdGhlIHBhcmVudCdzIHZpc2l0ZWQgc3R5bGUgaWYgb25lIGV4
aXN0cy4KKyAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRWaXNpdGVkU3R5bGUgPSBtX3Bh
cmVudFN0eWxlLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShWSVNJVEVEX0xJTkspOworICAgICAgICAg
ICAgaWYgKHBhcmVudFZpc2l0ZWRTdHlsZSkKKyAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZSA9
IHBhcmVudFZpc2l0ZWRTdHlsZTsKKyAgICAgICAgfQorICAgICAgICBSZWZQdHI8UmVuZGVyU3R5
bGU+IHJlc3VsdFN0eWxlID0gbV9zdHlsZS5yZWxlYXNlKCk7CisgICAgICAgIFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+IHZpc2l0ZWRTdHlsZSA9IHN0eWxlRm9yRWxlbWVudChlLCBwYXJlbnRTdHls
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgdmlzaXRlZFN0eWxlLT5zZXRTdHlsZVR5
cGUoVklTSVRFRF9MSU5LKTsKKyAgICAgICAgcmVzdWx0U3R5bGUtPmFkZENhY2hlZFBzZXVkb1N0
eWxlKHZpc2l0ZWRTdHlsZSk7CisgICAgICAgIHJldHVybiByZXN1bHRTdHlsZS5yZWxlYXNlKCk7
CisgICAgfQorCiAgICAgLy8gTm93IHJldHVybiB0aGUgc3R5bGUuCiAgICAgcmV0dXJuIG1fc3R5
bGUucmVsZWFzZSgpOwogfQpAQCAtMTQxMiw3ICsxNDE5LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjprZXlmcmFtZVN0eWxlc0ZvcgogICAgICAgICBsaXN0LmNsZWFyKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlRm9yRWxlbWVu
dChQc2V1ZG9JZCBwc2V1ZG8sIEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSkK
K1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlRm9y
RWxlbWVudChQc2V1ZG9JZCBwc2V1ZG8sIEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSwgYm9vbCBtYXRjaFZpc2l0ZWRMaW5rcykKIHsKICAgICBpZiAoIWUpCiAgICAgICAgIHJl
dHVybiAwOwpAQCAtMTQ0MCw3ICsxNDQ3LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NT
U3R5bGVTZWxlY3RvcgogICAgIGlmIChwYXJlbnRTdHlsZSkKICAgICAgICAgbV9zdHlsZS0+aW5o
ZXJpdEZyb20ocGFyZW50U3R5bGUpOwogCi0gICAgbV9zdHlsZS0+bm9uaW5oZXJpdGVkX2ZsYWdz
Ll9zdHlsZVR5cGUgPSBwc2V1ZG87CisgICAgbV9zdHlsZS0+c2V0U3R5bGVUeXBlKHBzZXVkbyk7
CiAgICAgCiAgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSAwOwogICAgIC8vIEhpZ2gtcHJpb3JpdHkg
cHJvcGVydGllcy4KQEAgLTE0NzUsNiArMTQ4MiwyMiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBDU1NTdHlsZVNlbGVjdG9yCiAgICAgLy8gQ2xlYW4gdXAgb3VyIHN0eWxlIG9iamVjdCdzIGRp
c3BsYXkgYW5kIHRleHQgZGVjb3JhdGlvbnMgKGFtb25nIG90aGVyIGZpeHVwcykuCiAgICAgYWRq
dXN0UmVuZGVyU3R5bGUoc3R5bGUoKSwgMCk7CiAKKyAgICAvLyBDb21wdXRlIG91ciA6dmlzaXRl
ZCBzdHlsZS4KKyAgICBpZiAoIW1hdGNoVmlzaXRlZExpbmtzICYmIG1fc3R5bGUtPmluc2lkZUxp
bmsoKSkgeworICAgICAgICAvLyBGZXRjaCBvdXIgcGFyZW50IHN0eWxlLgorICAgICAgICBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUgPSBtX3BhcmVudFN0eWxlOworICAgICAgICBpZiAocGFyZW50
U3R5bGUpIHsKKyAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRWaXNpdGVkU3R5bGUgPSBt
X3BhcmVudFN0eWxlLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShWSVNJVEVEX0xJTkspOworICAgICAg
ICAgICAgaWYgKHBhcmVudFZpc2l0ZWRTdHlsZSkKKyAgICAgICAgICAgICAgICBwYXJlbnRTdHls
ZSA9IHBhcmVudFZpc2l0ZWRTdHlsZTsKKyAgICAgICAgfQorICAgICAgICBSZWZQdHI8UmVuZGVy
U3R5bGU+IHJlc3VsdFN0eWxlID0gbV9zdHlsZS5yZWxlYXNlKCk7CisgICAgICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gdmlzaXRlZFN0eWxlID0gcHNldWRvU3R5bGVGb3JFbGVtZW50KHBzZXVkbywg
ZSwgcGFyZW50U3R5bGUsIHRydWUpOworICAgICAgICB2aXNpdGVkU3R5bGUtPnNldFN0eWxlVHlw
ZShWSVNJVEVEX0xJTkspOworICAgICAgICByZXN1bHRTdHlsZS0+YWRkQ2FjaGVkUHNldWRvU3R5
bGUodmlzaXRlZFN0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiByZXN1bHRTdHlsZS5y
ZWxlYXNlKCk7CisgICAgfQorCiAgICAgLy8gTm93IHJldHVybiB0aGUgc3R5bGUuCiAgICAgcmV0
dXJuIG1fc3R5bGUucmVsZWFzZSgpOwogfQpAQCAtMTc2Myw3ICsxNzg2LDcgQEAgYm9vbCBDU1NT
dHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjdG9yKENTUwogICAgIG1fZHluYW1pY1BzZXVkbyA9IE5P
UFNFVURPOwogCiAgICAgLy8gQ2hlY2sgdGhlIHNlbGVjdG9yCi0gICAgU2VsZWN0b3JNYXRjaCBt
YXRjaCA9IG1fY2hlY2tlci5jaGVja1NlbGVjdG9yKHNlbCwgbV9lbGVtZW50LCAmbV9zZWxlY3Rv
ckF0dHJzLCBtX2R5bmFtaWNQc2V1ZG8sIHRydWUsIGZhbHNlLCBzdHlsZSgpLCBtX3BhcmVudFN0
eWxlKTsKKyAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVja2VyLmNoZWNrU2VsZWN0b3Io
c2VsLCBtX2VsZW1lbnQsICZtX3NlbGVjdG9yQXR0cnMsIG1fZHluYW1pY1BzZXVkbywgZmFsc2Us
IGZhbHNlLCBzdHlsZSgpLCBtX3BhcmVudFN0eWxlKTsKICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0
b3JNYXRjaGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE3NzgsNyArMTgwMSw3IEBA
IGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3RvcihDU1MKIC8vICogU2VsZWN0b3JN
YXRjaGVzICAgICAgICAgLSB0aGUgc2VsZWN0b3IgbWF0Y2hlcyB0aGUgZWxlbWVudCBlCiAvLyAq
IFNlbGVjdG9yRmFpbHNMb2NhbGx5ICAgIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciB0aGUgZWxl
bWVudCBlCiAvLyAqIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5IC0gdGhlIHNlbGVjdG9yIGZhaWxz
IGZvciBlIGFuZCBhbnkgc2libGluZyBvciBhbmNlc3RvciBvZiBlCi1DU1NTdHlsZVNlbGVjdG9y
OjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tT
ZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0cmlu
Z0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNB
bmNlc3RvciwgYm9vbCBpc1N1YlNlbGVjdG9yLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBS
ZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAorQ1NTU3R5bGVTZWxlY3Rvcjo6
U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2Vs
ZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgSGFzaFNldDxBdG9taWNTdHJpbmdJ
bXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3Vi
U2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxl
LCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAogewogI2lmIEVOQUJMRShT
VkcpCiAgICAgLy8gU3BlYzogQ1NTMiBzZWxlY3RvcnMgY2Fubm90IGJlIGFwcGxpZWQgdG8gdGhl
IChjb25jZXB0dWFsbHkpIGNsb25lZCBET00gdHJlZQpAQCAtMTc4OCw3ICsxODExLDcgQEAgQ1NT
U3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogI2VuZGlmCiAKICAgICAvLyBm
aXJzdCBzZWxlY3RvciBoYXMgdG8gbWF0Y2gKLSAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc2Vs
LCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc0FuY2VzdG9yLCBpc1N1YlNlbGVj
dG9yLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgaWYgKCFjaGVja09u
ZVNlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgaXNTdWJTZWxl
Y3RvciwgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQogICAgICAgICByZXR1cm4g
U2VsZWN0b3JGYWlsc0xvY2FsbHk7CiAKICAgICAvLyBUaGUgcmVzdCBvZiB0aGUgc2VsZWN0b3Jz
IGhhcyB0byBtYXRjaApAQCAtMTgwNCw2ICsxODI3LDE3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNl
bGVjdG9yTWF0Y2ggQ1NTU3R5bGUKICAgICAgICAgaWYgKG1fcHNldWRvU3R5bGUgIT0gTk9QU0VV
RE8gJiYgbV9wc2V1ZG9TdHlsZSAhPSBkeW5hbWljUHNldWRvKQogICAgICAgICAgICAgcmV0dXJu
IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogCisgICAgLy8gQ2hlY2sgZm9yIG5lc3RlZCBsaW5r
cy4KKyAgICBpZiAobV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcykgeworICAgICAgICBSZW5kZXJT
dHlsZSogY3VycmVudFN0eWxlID0gZWxlbWVudFN0eWxlID8gZWxlbWVudFN0eWxlIDogZS0+cmVu
ZGVyU3R5bGUoKTsKKyAgICAgICAgaWYgKGN1cnJlbnRTdHlsZSAmJiBjdXJyZW50U3R5bGUtPmlu
c2lkZUxpbmsoKSAmJiBlLT5pc0xpbmsoKSkgeworICAgICAgICAgICAgaWYgKGVuY291bnRlcmVk
TGluaykKKyAgICAgICAgICAgICAgICBtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzID0gZmFsc2U7
IC8vIFRoaXMgbGluayBpcyBub3QgcmVsZXZhbnQgdG8gdGhlIHN0eWxlIGJlaW5nIHJlc29sdmVk
LCBzbyBkaXNhYmxlIG1hdGNoaW5nLgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGVuY291bnRlcmVkTGluayA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKICAgICBzd2l0Y2gg
KHJlbGF0aW9uKSB7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6CiAgICAg
ICAgICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTgxMSw3ICsxODQ1LDcgQEAgQ1NTU3R5bGVTZWxl
Y3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgICAgIGlmICghbiB8fCAh
bi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JG
YWlsc0NvbXBsZXRlbHk7CiAgICAgICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
PihuKTsKLSAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3Rv
cihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUs
IHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOwog
ICAgICAgICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckZhaWxzTG9jYWxseSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAgICAgICAgfQpAQCAtMTgyMiw3ICsx
ODU2LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAg
ICAgICAgaWYgKCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwg
c2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZmFsc2UpOworICAgICAgICAgICAg
cmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRv
LCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpEaXJlY3RBZGphY2VudDoKICAgICAgICAgewpAQCAtMTgzNyw3ICsxODcxLDggQEAg
Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgaWYg
KCFuKQogICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzTG9jYWxseTsKICAgICAg
ICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICByZXR1cm4g
Y2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNl
LCBmYWxzZSk7IAorICAgICAgICAgICAgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IGZhbHNl
OworICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJz
LCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rKTsgCiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDoKICAgICAgICAgICAgIGlm
ICghbV9jb2xsZWN0UnVsZXNPbmx5ICYmIGUtPnBhcmVudE5vZGUoKSAmJiBlLT5wYXJlbnROb2Rl
KCktPmlzRWxlbWVudE5vZGUoKSkgewpAQCAtMTg1Miw3ICsxODg3LDggQEAgQ1NTU3R5bGVTZWxl
Y3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgICAgIGlmICghbikKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5OwogICAgICAgICAg
ICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICAgICAgU2Vs
ZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBk
eW5hbWljUHNldWRvLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIG1fbWF0Y2hWaXNp
dGVkUHNldWRvQ2xhc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1h
dGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8s
IGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOwogICAgICAgICAgICAgICAgIGlmIChtYXRjaCAhPSBT
ZWxlY3RvckZhaWxzTG9jYWxseSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwog
ICAgICAgICAgICAgfTsKQEAgLTE4NjQsNyArMTkwMCw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNl
bGVjdG9yTWF0Y2ggQ1NTU3R5bGUKICAgICAgICAgICAgIGlmICgoZWxlbWVudFN0eWxlIHx8IG1f
Y29sbGVjdFJ1bGVzT25seSkgJiYgZHluYW1pY1BzZXVkbyAhPSBOT1BTRVVETyAmJiBkeW5hbWlj
UHNldWRvICE9IFNFTEVDVElPTiAmJgogICAgICAgICAgICAgICAgICEoKFJlbmRlclNjcm9sbGJh
cjo6c2Nyb2xsYmFyRm9yU3R5bGVSZXNvbHZlKCkgfHwgZHluYW1pY1BzZXVkbyA9PSBTQ1JPTExC
QVJfQ09STkVSIHx8IGR5bmFtaWNQc2V1ZG8gPT0gUkVTSVpFUikgJiYgc2VsLT5tX21hdGNoID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVj
dG9yRmFpbHNDb21wbGV0ZWx5OwotICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2Vs
LCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc0FuY2VzdG9yLCB0cnVlLCBlbGVt
ZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tT
ZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291
bnRlcmVkTGluaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpOwogICAgIH0KIAog
ICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKQEAgLTE5MzcsNyArMTk3Myw3IEBA
IHN0YXRpYyBib29sIGh0bWxBdHRyaWJ1dGVIYXNDYXNlSW5zZW5zaXQKICAgICByZXR1cm4gaXNQ
b3NzaWJsZUhUTUxBdHRyICYmIGh0bWxDYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVzU2V0LT5jb250
YWlucyhhdHRyLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKLWJvb2wgQ1NTU3R5bGVTZWxlY3Rv
cjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVs
ZW1lbnQqIGUsIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1
ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc0FuY2VzdG9yLCBib29sIGlzU3ViU2VsZWN0b3Is
IFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5
bGUpIGNvbnN0Citib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tP
bmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0
cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wg
aXNTdWJTZWxlY3RvciwgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVyU3R5bGUqIGVs
ZW1lbnRQYXJlbnRTdHlsZSkgY29uc3QKIHsKICAgICBpZiAoIWUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTIwMzgsNyArMjA3NCw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0
b3JDaGVja2VyOjoKICAgICAgICAgICAgICAgICAvLyB0aGUgcGFyc2VyIGVuZm9yY2VzIHRoYXQg
dGhpcyBuZXZlciBvY2N1cnMKICAgICAgICAgICAgICAgICBBU1NFUlQoIXN1YlNlbC0+c2ltcGxl
U2VsZWN0b3IoKSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc3Vi
U2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc0FuY2VzdG9yLCB0cnVlLCBl
bGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAgICAgICAgICAgICAgaWYgKCFj
aGVja09uZVNlbGVjdG9yKHN1YlNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywg
dHJ1ZSwgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChkeW5h
bWljUHNldWRvICE9IE5PUFNFVURPICYmIChSZW5kZXJTY3JvbGxiYXI6OnNjcm9sbGJhckZvclN0
eWxlUmVzb2x2ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NPUk5FUiB8fCBkeW5h
bWljUHNldWRvID09IFJFU0laRVIpKSB7CkBAIC0yMzQ2LDEwICsyMzgyLDE2IEBAIGJvb2wgQ1NT
U3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpQc2V1ZG9BbnlMaW5rOgotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9
PSBQc2V1ZG9Vbmtub3duKQotICAgICAgICAgICAgICAgICAgICBwc2V1ZG9TdGF0ZSA9IGNoZWNr
UHNldWRvU3RhdGUoZSwgZmFsc2UpOwotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9
PSBQc2V1ZG9BbnlMaW5rIHx8IHBzZXVkb1N0YXRlID09IFBzZXVkb0xpbmsgfHwgcHNldWRvU3Rh
dGUgPT0gUHNldWRvVmlzaXRlZCkKKyAgICAgICAgICAgICAgICBpZiAocHNldWRvU3RhdGUgPT0g
UHNldWRvVW5rbm93bikgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2xvciYgbGlua0Nv
bG9yID0gZS0+ZG9jdW1lbnQoKS0+bGlua0NvbG9yKCk7CisgICAgICAgICAgICAgICAgICAgIGNv
bnN0IENvbG9yJiB2aXNpdGVkQ29sb3IgPSBlLT5kb2N1bWVudCgpLT52aXNpdGVkTGlua0NvbG9y
KCk7CisgICAgICAgICAgICAgICAgICAgIHBzZXVkb1N0YXRlID0gY2hlY2tQc2V1ZG9TdGF0ZShl
LCBsaW5rQ29sb3IgIT0gdmlzaXRlZENvbG9yKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb0FueUxpbmsgfHwgcHNldWRvU3RhdGUg
PT0gUHNldWRvTGluayB8fCBwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9WaXNpdGVkKSB7CisgICAgICAg
ICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gZWxlbWVudFN0eWxlID8gZWxl
bWVudFN0eWxlIDogZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRT
dHlsZS0+c2V0SW5zaWRlTGluayh0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQXV0b2ZpbGw6IHsKICAgICAgICAgICAgICAgICBp
ZiAoIWUgfHwgIWUtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCkBAIC0yMzYxLDE0ICsyNDAzLDIw
IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xpbms6CiAgICAgICAgICAgICAgICAgaWYgKHBzZXVk
b1N0YXRlID09IFBzZXVkb1Vua25vd24gfHwgcHNldWRvU3RhdGUgPT0gUHNldWRvQW55TGluaykK
ICAgICAgICAgICAgICAgICAgICAgcHNldWRvU3RhdGUgPSBjaGVja1BzZXVkb1N0YXRlKGUpOwot
ICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9MaW5rKQorICAgICAgICAg
ICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9BbnlMaW5rIHx8IHBzZXVkb1N0YXRlID09
IFBzZXVkb0xpbmspIHsKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5
bGUgPSBlbGVtZW50U3R5bGUgPyBlbGVtZW50U3R5bGUgOiBlLT5yZW5kZXJTdHlsZSgpOworICAg
ICAgICAgICAgICAgICAgICBjaGlsZFN0eWxlLT5zZXRJbnNpZGVMaW5rKHRydWUpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVk
OgogICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9Vbmtub3duIHx8IHBz
ZXVkb1N0YXRlID09IFBzZXVkb0FueUxpbmspCiAgICAgICAgICAgICAgICAgICAgIHBzZXVkb1N0
YXRlID0gY2hlY2tQc2V1ZG9TdGF0ZShlKTsKLSAgICAgICAgICAgICAgICBpZiAocHNldWRvU3Rh
dGUgPT0gUHNldWRvVmlzaXRlZCkKKyAgICAgICAgICAgICAgICBpZiAocHNldWRvU3RhdGUgPT0g
UHNldWRvVmlzaXRlZCkgeworICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSogY2hpbGRT
dHlsZSA9IGVsZW1lbnRTdHlsZSA/IGVsZW1lbnRTdHlsZSA6IGUtPnJlbmRlclN0eWxlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGNoaWxkU3R5bGUtPnNldEluc2lkZUxpbmsodHJ1ZSk7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0RyYWc6
IHsKICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudFN0eWxlKQpAQCAtNjA1Myw5ICs2MTAxLDkg
QEAgQ29sb3IgQ1NTU3R5bGVTZWxlY3Rvcjo6Z2V0Q29sb3JGcm9tUHJpbQogICAgICAgICAgICAg
aWYgKGxpbmtDb2xvciA9PSB2aXNpdGVkQ29sb3IpCiAgICAgICAgICAgICAgICAgY29sID0gbGlu
a0NvbG9yOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBzZXVkb1N0
YXRlID09IFBzZXVkb1Vua25vd24gfHwgcHNldWRvU3RhdGUgPT0gUHNldWRvQW55TGluaykKKyAg
ICAgICAgICAgICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNldWRvVW5rbm93bikKICAgICAgICAg
ICAgICAgICAgICAgcHNldWRvU3RhdGUgPSBtX2NoZWNrZXIuY2hlY2tQc2V1ZG9TdGF0ZShtX2Vs
ZW1lbnQpOwotICAgICAgICAgICAgICAgIGNvbCA9IChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9MaW5r
KSA/IGxpbmtDb2xvciA6IHZpc2l0ZWRDb2xvcjsKKyAgICAgICAgICAgICAgICBjb2wgPSAocHNl
dWRvU3RhdGUgPT0gUHNldWRvVmlzaXRlZCkgPyB2aXNpdGVkQ29sb3IgOiBsaW5rQ29sb3I7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoaWRlbnQgPT0gQ1NTVmFsdWVXZWJraXRB
Y3RpdmVsaW5rKQogICAgICAgICAgICAgY29sID0gbV9lbGVtZW50LT5kb2N1bWVudCgpLT5hY3Rp
dmVMaW5rQ29sb3IoKTsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJldmlzaW9uIDU2ODU5
KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NywxMCArODcsMTAgQEAgcHVibGljOgogCiAgICAgICAgIHZvaWQgaW5pdEVsZW1lbnRBbmRQc2V1
ZG9TdGF0ZShFbGVtZW50Kik7CiAgICAgICAgIHZvaWQgaW5pdEZvclN0eWxlUmVzb2x2ZShFbGVt
ZW50KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCwgUHNldWRvSWQgPSBOT1BTRVVETyk7
Ci0gICAgICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudChFbGVtZW50
KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCwgYm9vbCBhbGxvd1NoYXJpbmcgPSB0cnVl
LCBib29sIHJlc29sdmVGb3JSb290RGVmYXVsdCA9IGZhbHNlKTsKKyAgICAgICAgUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUgPSAwLCBib29sIGFsbG93U2hhcmluZyA9IHRydWUsIGJvb2wgcmVzb2x2ZUZvclJv
b3REZWZhdWx0ID0gZmFsc2UsIGJvb2wgbWF0Y2hWaXNpdGVkTGlua3MgPSBmYWxzZSk7CiAgICAg
ICAgIHZvaWQga2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oRWxlbWVudCosIGNvbnN0IFJlbmRl
clN0eWxlKiwgS2V5ZnJhbWVMaXN0JiBsaXN0KTsKIAotICAgICAgICBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBwc2V1ZG9TdHlsZUZvckVsZW1lbnQoUHNldWRvSWQsIEVsZW1lbnQqLCBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUgPSAwKTsKKyAgICAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
cHNldWRvU3R5bGVGb3JFbGVtZW50KFBzZXVkb0lkLCBFbGVtZW50KiwgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlID0gMCwgYm9vbCBtYXRjaFZpc2l0ZWRMaW5rcyA9IGZhbHNlKTsKIAogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JEb2N1bWVudChEb2N1bWVu
dCopOwogCkBAIC0xOTYsOCArMTk2LDggQEAgcHVibGljOgogICAgICAgICAgICAgU2VsZWN0b3JD
aGVja2VyKERvY3VtZW50KiwgYm9vbCBzdHJpY3RQYXJzaW5nKTsKIAogICAgICAgICAgICAgYm9v
bCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCopIGNvbnN0OwotICAgICAgICAg
ICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIEhh
c2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHluYW1p
Y1BzZXVkbywgYm9vbCBpc0FuY2VzdG9yLCBib29sIGlzU3ViU2VsZWN0b3IsIFJlbmRlclN0eWxl
KiA9IDAsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUgPSAwKSBjb25zdDsKLSAgICAg
ICAgICAgIGJvb2wgY2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBIYXNo
U2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQ
c2V1ZG8sIGJvb2wgaXNBbmNlc3RvciwgYm9vbCBpc1N1YlNlbGVjdG9yLCBSZW5kZXJTdHlsZSos
IFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNvbnN0OworICAgICAgICAgICAgU2Vs
ZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIEhhc2hTZXQ8
QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVk
bywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVkTGluaywgUmVuZGVyU3R5bGUq
ID0gMCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDApIGNvbnN0OworICAgICAg
ICAgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHluYW1pY1Bz
ZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBlbGVt
ZW50UGFyZW50U3R5bGUpIGNvbnN0OwogICAgICAgICAgICAgUHNldWRvU3RhdGUgY2hlY2tQc2V1
ZG9TdGF0ZShFbGVtZW50KiwgYm9vbCBjaGVja1Zpc2l0ZWQgPSB0cnVlKSBjb25zdDsKICAgICAg
ICAgICAgIGJvb2wgY2hlY2tTY3JvbGxiYXJQc2V1ZG9DbGFzcyhDU1NTZWxlY3RvciosIFBzZXVk
b0lkJiBkeW5hbWljUHNldWRvKSBjb25zdDsKIApAQCAtMjA5LDYgKzIwOSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGJvb2wgbV9jb2xsZWN0UnVsZXNPbmx5OwogICAgICAgICAgICAgUHNldWRv
SWQgbV9wc2V1ZG9TdHlsZTsKICAgICAgICAgICAgIGJvb2wgbV9kb2N1bWVudElzSFRNTDsKKyAg
ICAgICAgICAgIG11dGFibGUgYm9vbCBtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzOwogICAgICAg
ICAgICAgbXV0YWJsZSBIYXNoU2V0PExpbmtIYXNoLCBMaW5rSGFzaEhhc2g+IG1fbGlua3NDaGVj
a2VkRm9yVmlzaXRlZFN0YXRlOwogICAgICAgICB9OwogCkBAIC0yNzksNyArMjgwLDcgQEAgcHVi
bGljOgogICAgICAgICBDU1NWYWx1ZSogbV9saW5lSGVpZ2h0VmFsdWU7CiAgICAgICAgIGJvb2wg
bV9mb250RGlydHk7CiAgICAgICAgIGJvb2wgbV9tYXRjaEF1dGhvckFuZFVzZXJTdHlsZXM7Ci0K
KyAgICAgICAgCiAgICAgICAgIFJlZlB0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9y
OwogICAgICAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBtX3NlbGVjdG9yQXR0cnM7CiAg
ICAgICAgIFZlY3RvcjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbio+IG1fYWRkaXRpb25hbEF0
dHJpYnV0ZVN0eWxlRGVjbHM7CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODY3LDExICs4NjcsMTYgQEAg
Ym9vbCBFbGVtZW50Ojpwc2V1ZG9TdHlsZUNhY2hlSXNJbnZhbGlkKAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY2FjaGVTaXplOyArK2kpIHsKICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxl
PiBuZXdQc2V1ZG9TdHlsZTsKICAgICAgICAgUHNldWRvSWQgcHNldWRvSWQgPSBwc2V1ZG9TdHls
ZUNhY2hlW2ldLT5zdHlsZVR5cGUoKTsKLSAgICAgICAgaWYgKHBzZXVkb0lkID09IEZJUlNUX0xJ
TkUgfHwgcHNldWRvSWQgPT0gRklSU1RfTElORV9JTkhFUklURUQpCisgICAgICAgIGlmIChwc2V1
ZG9JZCA9PSBWSVNJVEVEX0xJTkspIHsKKyAgICAgICAgICAgIG5ld1BzZXVkb1N0eWxlID0gIG5l
d1N0eWxlLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShWSVNJVEVEX0xJTkspOyAvLyBUaGlzIHBzZXVk
by1zdHlsZSB3YXMgYWdncmVzc2l2ZWx5IGNvbXB1dGVkIGFscmVhZHkgd2hlbiB3ZSBmaXJzdCBj
YWxsZWQgc3R5bGVGb3JFbGVtZW50IG9uIHRoZSBuZXcgc3R5bGUuCisgICAgICAgICAgICBpZiAo
IW5ld1BzZXVkb1N0eWxlIHx8ICpuZXdQc2V1ZG9TdHlsZSAhPSAqcHNldWRvU3R5bGVDYWNoZVtp
XSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChwc2V1
ZG9JZCA9PSBGSVJTVF9MSU5FIHx8IHBzZXVkb0lkID09IEZJUlNUX0xJTkVfSU5IRVJJVEVEKQog
ICAgICAgICAgICAgbmV3UHNldWRvU3R5bGUgPSByZW5kZXJlcigpLT51bmNhY2hlZEZpcnN0TGlu
ZVN0eWxlKG5ld1N0eWxlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV3UHNldWRvU3R5
bGUgPSByZW5kZXJlcigpLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkLCBuZXdTdHls
ZSwgbmV3U3R5bGUpOwotCisgICAgICAgIGlmICghbmV3UHNldWRvU3R5bGUpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCpuZXdQc2V1ZG9TdHlsZSAhPSAqcHNldWRvU3R5
bGVDYWNoZVtpXSkgewogICAgICAgICAgICAgaWYgKHBzZXVkb0lkIDwgRklSU1RfSU5URVJOQUxf
UFNFVURPSUQpCiAgICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNldEhhc1BzZXVkb1N0eWxlKHBz
ZXVkb0lkKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCShyZXZpc2lvbiA1
Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiSW5saW5lRmxvd0JveC5oIgogCiAjaW5j
bHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGxpcHNpc0JveC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgpAQCAtNzYwLDcgKzc2MSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6
cGFpbnRCb3hEZWNvcmF0aW9ucygKICAgICAgICAgaWYgKHN0eWxlVG9Vc2UtPmJveFNoYWRvdygp
KQogICAgICAgICAgICAgcGFpbnRCb3hTaGFkb3coY29udGV4dCwgc3R5bGVUb1VzZSwgTm9ybWFs
LCB0eCwgdHksIHcsIGgpOwogCi0gICAgICAgIENvbG9yIGMgPSBzdHlsZVRvVXNlLT5iYWNrZ3Jv
dW5kQ29sb3IoKTsKKyAgICAgICAgQ29sb3IgYyA9IHJlbmRlcmVyKCktPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihzdHlsZVRvVXNlLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAg
IHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGMsIHN0eWxlVG9Vc2UtPmJhY2tncm91bmRMYXll
cnMoKSwgdHgsIHR5LCB3LCBoKTsKIAogICAgICAgICBpZiAoc3R5bGVUb1VzZS0+Ym94U2hhZG93
KCkpCkBAIC05NTcsNyArOTU4LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludFRleHREZWNv
cmF0aW9ucwogICAgICAgICB0eCArPSBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpOwogCiAg
ICAgICAgIENvbG9yIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJvdWdoOwotICAgICAgICB1
bmRlcmxpbmUgPSBvdmVybGluZSA9IGxpbmV0aHJvdWdoID0gc3R5bGVUb1VzZS0+Y29sb3IoKTsK
KyAgICAgICAgdW5kZXJsaW5lID0gb3ZlcmxpbmUgPSBsaW5ldGhyb3VnaCA9IHJlbmRlcmVyKCkt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdHlsZVRvVXNlLCBDU1NQcm9wZXJ0eUNvbG9yKTsKICAg
ICAgICAgaWYgKCFwYXJlbnQoKSkKICAgICAgICAgICAgIHJlbmRlcmVyKCktPmdldFRleHREZWNv
cmF0aW9uQ29sb3JzKGRlY28sIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJvdWdoKTsKIApJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
MSwxOCArNDExLDE0IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUmVuZGVyT2JqZWN0OjoK
ICAgICAgICAgdGV4dEZpbGxDb2xvciA9IENvbG9yOjpibGFjazsKICAgICAgICAgdGV4dFN0cm9r
ZUNvbG9yID0gQ29sb3I6OmJsYWNrOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHRleHRGaWxsQ29s
b3IgPSBzdHlsZVRvVXNlLT50ZXh0RmlsbENvbG9yKCk7Ci0gICAgICAgIGlmICghdGV4dEZpbGxD
b2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICB0ZXh0RmlsbENvbG9yID0gc3R5bGVUb1VzZS0+
Y29sb3IoKTsKLQorICAgICAgICB0ZXh0RmlsbENvbG9yID0gcmVuZGVyZXIoKS0+dmlzaXRlZERl
cGVuZGVudENvbG9yKHN0eWxlVG9Vc2UsIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcik7
CisgICAgICAgIAogICAgICAgICAvLyBNYWtlIHRoZSB0ZXh0IGZpbGwgY29sb3IgbGVnaWJsZSBh
Z2FpbnN0IGEgd2hpdGUgYmFja2dyb3VuZAogICAgICAgICBpZiAoc3R5bGVUb1VzZS0+Zm9yY2VC
YWNrZ3JvdW5kc1RvV2hpdGUoKSkKICAgICAgICAgICAgIHRleHRGaWxsQ29sb3IgPSBjb3JyZWN0
ZWRUZXh0Q29sb3IodGV4dEZpbGxDb2xvciwgQ29sb3I6OndoaXRlKTsKIAotICAgICAgICB0ZXh0
U3Ryb2tlQ29sb3IgPSBzdHlsZVRvVXNlLT50ZXh0U3Ryb2tlQ29sb3IoKTsKLSAgICAgICAgaWYg
KCF0ZXh0U3Ryb2tlQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICAgICAgdGV4dFN0cm9rZUNvbG9y
ID0gc3R5bGVUb1VzZS0+Y29sb3IoKTsKLQorICAgICAgICB0ZXh0U3Ryb2tlQ29sb3IgPSByZW5k
ZXJlcigpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3R5bGVUb1VzZSwgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U3Ryb2tlQ29sb3IpOworICAgICAgICAKICAgICAgICAgLy8gTWFrZSB0aGUgdGV4dCBz
dHJva2UgY29sb3IgbGVnaWJsZSBhZ2FpbnN0IGEgd2hpdGUgYmFja2dyb3VuZAogICAgICAgICBp
ZiAoc3R5bGVUb1VzZS0+Zm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoKSkKICAgICAgICAgICAgIHRl
eHRTdHJva2VDb2xvciA9IGNvcnJlY3RlZFRleHRDb2xvcih0ZXh0U3Ryb2tlQ29sb3IsIENvbG9y
Ojp3aGl0ZSk7CkBAIC01MTcsNyArNTEzLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChS
ZW5kZXJPYmplY3Q6OgogCiAgICAgLy8gUGFpbnQgZGVjb3JhdGlvbnMKICAgICBpZiAoZCAhPSBU
RE5PTkUgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24gJiYgc3R5bGVU
b1VzZS0+aHRtbEhhY2tzKCkpIHsKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5
bGVUb1VzZS0+Y29sb3IoKSwgc3R5bGVUb1VzZS0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29u
dGV4dC0+c2V0U3Ryb2tlQ29sb3IocmVuZGVyZXIoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHN0
eWxlVG9Vc2UsIENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZVRvVXNlLT5jb2xvclNwYWNlKCkpOwog
ICAgICAgICBwYWludERlY29yYXRpb24oY29udGV4dCwgdHgsIHR5LCBkLCB0ZXh0U2hhZG93KTsK
ICAgICB9CiAKQEAgLTU3Nyw3ICs1NzMsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50U2Vs
ZWN0aW9uKEdyYXBoCiAgICAgaWYgKHNQb3MgPj0gZVBvcykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQ29sb3IgdGV4dENvbG9yID0gc3R5bGUtPmNvbG9yKCk7CisgICAgQ29sb3IgdGV4dENvbG9y
ID0gcmVuZGVyZXIoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHN0eWxlLCBDU1NQcm9wZXJ0eUNv
bG9yKTsKICAgICBDb2xvciBjID0gcmVuZGVyZXIoKS0+c2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
KCk7CiAgICAgaWYgKCFjLmlzVmFsaWQoKSB8fCBjLmFscGhhKCkgPT0gMCkKICAgICAgICAgcmV0
dXJuOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gNTY4NTkpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NDYsNyArMTU0Niw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50KFBhaW50SW5mbyYgcGFpbnQK
IAogdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDb2x1bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5m
bywgaW50IHR4LCBpbnQgdHkpCiB7Ci0gICAgY29uc3QgQ29sb3ImIHJ1bGVDb2xvciA9IHN0eWxl
KCktPmNvbHVtblJ1bGVDb2xvcigpOworICAgIGNvbnN0IENvbG9yJiBydWxlQ29sb3IgPSB2aXNp
dGVkRGVwZW5kZW50Q29sb3Ioc3R5bGUoKSwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29s
b3IpOwogICAgIGJvb2wgcnVsZVRyYW5zcGFyZW50ID0gc3R5bGUoKS0+Y29sdW1uUnVsZUlzVHJh
bnNwYXJlbnQoKTsKICAgICBFQm9yZGVyU3R5bGUgcnVsZVN0eWxlID0gc3R5bGUoKS0+Y29sdW1u
UnVsZVN0eWxlKCk7CiAgICAgaW50IHJ1bGVXaWR0aCA9IHN0eWxlKCktPmNvbHVtblJ1bGVXaWR0
aCgpOwpAQCAtMTU4MSw3ICsxNTgxLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDb2x1bW5S
dWxlcyhQYWludAogICAgICAgICAgICAgaW50IHJ1bGVUb3AgPSB0eSArIGJvcmRlclRvcCgpICsg
cGFkZGluZ1RvcCgpOwogICAgICAgICAgICAgaW50IHJ1bGVCb3R0b20gPSBydWxlVG9wICsgY29u
dGVudEhlaWdodCgpOwogICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKHBhaW50SW5mby5j
b250ZXh0LCBydWxlU3RhcnQsIHJ1bGVUb3AsIHJ1bGVFbmQsIHJ1bGVCb3R0b20sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gQlNM
ZWZ0IDogQlNSaWdodCwgcnVsZUNvbG9yLCBzdHlsZSgpLT5jb2xvcigpLCBydWxlU3R5bGUsIDAs
IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlKCktPmRpcmVjdGlvbigp
ID09IExUUiA/IEJTTGVmdCA6IEJTUmlnaHQsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwKTsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcnVsZVggPSBjdXJyWE9mZnNldDsKQEAgLTE3
NjAsNyArMTc2MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYK
IAogICAgIC8vIDUuIHBhaW50IG91dGxpbmUuCiAgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50
UGhhc2VPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBo
YXNPdXRsaW5lKCkgJiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCi0gICAgICAg
IHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgdHgsIHR5LCB3aWR0aCgpLCBoZWlnaHQo
KSwgc3R5bGUoKSk7CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgdHgs
IHR5LCB3aWR0aCgpLCBoZWlnaHQoKSk7CiAKICAgICAvLyA2LiBwYWludCBjb250aW51YXRpb24g
b3V0bGluZXMuCiAgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBh
aW50UGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkT3V0bGluZXMpKSB7CkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTMzLDE1ICs5MzMsMTUgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5l
UGllYwogfQogCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUs
IGJvb2wgYmVnaW4sIGJvb2wgZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBib29sIGJlZ2luLCBib29sIGVuZCkKIHsK
ICAgICBpZiAocGFpbnROaW5lUGllY2VJbWFnZShncmFwaGljc0NvbnRleHQsIHR4LCB0eSwgdywg
aCwgc3R5bGUsIHN0eWxlLT5ib3JkZXJJbWFnZSgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Y29uc3QgQ29sb3ImIHRvcENvbG9yID0gc3R5bGUtPmJvcmRlclRvcENvbG9yKCk7Ci0gICAgY29u
c3QgQ29sb3ImIGJvdHRvbUNvbG9yID0gc3R5bGUtPmJvcmRlckJvdHRvbUNvbG9yKCk7Ci0gICAg
Y29uc3QgQ29sb3ImIGxlZnRDb2xvciA9IHN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKTsKLSAgICBj
b25zdCBDb2xvciYgcmlnaHRDb2xvciA9IHN0eWxlLT5ib3JkZXJSaWdodENvbG9yKCk7CisgICAg
Y29uc3QgQ29sb3ImIHRvcENvbG9yID0gdmlzaXRlZERlcGVuZGVudENvbG9yKHN0eWxlLCBDU1NQ
cm9wZXJ0eUJvcmRlclRvcENvbG9yKTsKKyAgICBjb25zdCBDb2xvciYgYm90dG9tQ29sb3IgPSB2
aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3Ip
OworICAgIGNvbnN0IENvbG9yJiBsZWZ0Q29sb3IgPSB2aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3R5
bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKTsKKyAgICBjb25zdCBDb2xvciYgcmlnaHRD
b2xvciA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdo
dENvbG9yKTsKIAogICAgIGJvb2wgdG9wVHJhbnNwYXJlbnQgPSBzdHlsZS0+Ym9yZGVyVG9wSXNU
cmFuc3BhcmVudCgpOwogICAgIGJvb2wgYm90dG9tVHJhbnNwYXJlbnQgPSBzdHlsZS0+Ym9yZGVy
Qm90dG9tSXNUcmFuc3BhcmVudCgpOwpAQCAtMTAwNiw3ICsxMDA2LDcgQEAgdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoRwogICAgICAgICAgICAgeDIgLT0gdG9wUmlnaHQu
d2lkdGgoKTsKICAgICAgICAgfQogCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGlj
c0NvbnRleHQsIHgsIHR5LCB4MiwgdHkgKyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgQlNUb3As
IHRvcENvbG9yLCBzdHlsZS0+Y29sb3IoKSwgdG9wU3R5bGUsCisgICAgICAgIGRyYXdMaW5lRm9y
Qm94U2lkZShncmFwaGljc0NvbnRleHQsIHgsIHR5LCB4MiwgdHkgKyBzdHlsZS0+Ym9yZGVyVG9w
V2lkdGgoKSwgQlNUb3AsIHRvcENvbG9yLCB0b3BTdHlsZSwKICAgICAgICAgICAgICAgICAgICBp
Z25vcmVfbGVmdCA/IDAgOiBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIGlnbm9yZV9yaWdodCA/
IDAgOiBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKIAogICAgICAgICBpZiAocmVuZGVyUmFk
aWkpIHsKQEAgLTEwMzQsNyArMTAzNCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50Qm9yZGVyKEcKIAogICAgICAgICAgICAgICAgIC8vIERyYXcgdXBwZXIgbGVmdCBhcmMKICAg
ICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGxlZnRYLCBs
ZWZ0WSwgdGhpY2tuZXNzLCB0b3BMZWZ0LCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFu
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNUb3AsIHRvcENvbG9yLCBzdHlsZS0+
Y29sb3IoKSwgdG9wU3R5bGUsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QlNUb3AsIHRvcENvbG9yLCB0b3BTdHlsZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFw
cGx5TGVmdElubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5y
ZXN0b3JlKCk7CiAgICAgICAgICAgICB9CkBAIC0xMDYwLDcgKzEwNjAsNyBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHCiAKICAgICAgICAgICAgICAgICAvLyBEcmF3
IHVwcGVyIHJpZ2h0IGFyYwogICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBo
aWNzQ29udGV4dCwgcmlnaHRYLCBsZWZ0WSwgdGhpY2tuZXNzLCB0b3BSaWdodCwgc2Vjb25kQW5n
bGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QlNUb3AsIHRvcENvbG9yLCBzdHlsZS0+Y29sb3IoKSwgdG9wU3R5bGUsIGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEJTVG9wLCB0b3BDb2xvciwgdG9wU3R5bGUsIGZhbHNl
KTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlSaWdodElubmVyQ2xpcCkKICAgICAgICAgICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CkBAIC0x
MDgzLDcgKzEwODMsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihH
CiAgICAgICAgICAgICB4MiAtPSBib3R0b21SaWdodC53aWR0aCgpOwogICAgICAgICB9CiAKLSAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeCwgdHkgKyBoIC0gc3R5
bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHgyLCB0eSArIGgsIEJTQm90dG9tLCBib3R0b21Db2xv
ciwgc3R5bGUtPmNvbG9yKCksIGJvdHRvbVN0eWxlLAorICAgICAgICBkcmF3TGluZUZvckJveFNp
ZGUoZ3JhcGhpY3NDb250ZXh0LCB4LCB0eSArIGggLSBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgo
KSwgeDIsIHR5ICsgaCwgQlNCb3R0b20sIGJvdHRvbUNvbG9yLCBib3R0b21TdHlsZSwKICAgICAg
ICAgICAgICAgICAgICBpZ25vcmVfbGVmdCA/IDAgOiBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCks
IGlnbm9yZV9yaWdodCA/IDAgOiBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKIAogICAgICAg
ICBpZiAocmVuZGVyUmFkaWkpIHsKQEAgLTExMTEsNyArMTExMSw3IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEcKIAogICAgICAgICAgICAgICAgIC8vIERyYXcgbG93
ZXIgbGVmdCBhcmMKICAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0Nv
bnRleHQsIGxlZnRYLCBsZWZ0WSwgdGhpY2tuZXNzLCBib3R0b21MZWZ0LCBmaXJzdEFuZ2xlU3Rh
cnQsIGZpcnN0QW5nbGVTcGFuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNCb3R0
b20sIGJvdHRvbUNvbG9yLCBzdHlsZS0+Y29sb3IoKSwgYm90dG9tU3R5bGUsIHRydWUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNCb3R0b20sIGJvdHRvbUNvbG9yLCBib3R0b21T
dHlsZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5TGVmdElubmVyQ2xpcCkKICAg
ICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAg
ICB9CkBAIC0xMTMzLDcgKzExMzMsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEJvcmRlcihHCiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IGxvd2VyIHJpZ2h0IGFyYwogICAg
ICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgcmlnaHRYLCBy
aWdodFksIHRoaWNrbmVzcywgYm90dG9tUmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFu
Z2xlU3BhbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTQm90dG9tLCBib3R0b21D
b2xvciwgc3R5bGUtPmNvbG9yKCksIGJvdHRvbVN0eWxlLCBmYWxzZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCU0JvdHRvbSwgYm90dG9tQ29sb3IsIGJvdHRvbVN0eWxlLCBmYWxz
ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5UmlnaHRJbm5lckNsaXApCiAgICAgICAgICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICAgICAgfQpAQCAt
MTE1Niw3ICsxMTU2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIo
RwogICAgICAgICAgICAgeTIgLT0gYm90dG9tTGVmdC5oZWlnaHQoKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4LCB5LCB0eCArIHN0
eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgeTIsIEJTTGVmdCwgbGVmdENvbG9yLCBzdHlsZS0+Y29s
b3IoKSwgbGVmdFN0eWxlLAorICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250
ZXh0LCB0eCwgeSwgdHggKyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHkyLCBCU0xlZnQsIGxl
ZnRDb2xvciwgbGVmdFN0eWxlLAogICAgICAgICAgICAgICAgICAgIGlnbm9yZV90b3AgPyAwIDog
c3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIGlnbm9yZV9ib3R0b20gPyAwIDogc3R5bGUtPmJvcmRl
ckJvdHRvbVdpZHRoKCkpOwogCiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSAmJiAoIXVwcGVyTGVm
dEJvcmRlclN0eWxlc01hdGNoIHx8ICFsb3dlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCkpIHsKQEAg
LTExNzksNyArMTE3OSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVy
KEcKIAogICAgICAgICAgICAgICAgIC8vIERyYXcgdG9wIGxlZnQgYXJjCiAgICAgICAgICAgICAg
ICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCB0b3BZLCB0aGlja25l
c3MsIHRvcExlZnQsIGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCU0xlZnQsIGxlZnRDb2xvciwgc3R5bGUtPmNvbG9yKCksIGxl
ZnRTdHlsZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU0xlZnQsIGxl
ZnRDb2xvciwgbGVmdFN0eWxlLCB0cnVlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlUb3BJ
bm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgp
OwogICAgICAgICAgICAgfQpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3JkZXIoRwogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyBib3R0b20g
bGVmdCBhcmMKICAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRl
eHQsIHRvcFgsIGJvdHRvbVksIHRoaWNrbmVzcywgYm90dG9tTGVmdCwgc2Vjb25kQW5nbGVTdGFy
dCwgc2Vjb25kQW5nbGVTcGFuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNMZWZ0
LCBsZWZ0Q29sb3IsIHN0eWxlLT5jb2xvcigpLCBsZWZ0U3R5bGUsIGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJTTGVmdCwgbGVmdENvbG9yLCBsZWZ0U3R5bGUsIGZhbHNl
KTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlCb3R0b21Jbm5lckNsaXApCiAgICAgICAgICAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICAgICAgfQpAQCAt
MTIyNSw3ICsxMjI1LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIo
RwogICAgICAgICAgICAgeTIgLT0gYm90dG9tUmlnaHQuaGVpZ2h0KCk7CiAgICAgICAgIH0KIAot
ICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCArIHcgLSBzdHls
ZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCB5LCB0eCArIHcsIHkyLCBCU1JpZ2h0LCByaWdodENvbG9y
LCBzdHlsZS0+Y29sb3IoKSwgcmlnaHRTdHlsZSwKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRl
KGdyYXBoaWNzQ29udGV4dCwgdHggKyB3IC0gc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwgeSwg
dHggKyB3LCB5MiwgQlNSaWdodCwgcmlnaHRDb2xvciwgcmlnaHRTdHlsZSwKICAgICAgICAgICAg
ICAgICAgICBpZ25vcmVfdG9wID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBpZ25vcmVf
Ym90dG9tID8gMCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKIAogICAgICAgICBpZiAo
cmVuZGVyUmFkaWkgJiYgKCF1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggfHwgIWxvd2VyUmln
aHRCb3JkZXJTdHlsZXNNYXRjaCkpIHsKQEAgLTEyNDgsNyArMTI0OCw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEcKIAogICAgICAgICAgICAgICAgIC8vIERyYXcg
dG9wIHJpZ2h0IGFyYwogICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwgdG9wWCwgdG9wWSwgdGhpY2tuZXNzLCB0b3BSaWdodCwgZmlyc3RBbmdsZVN0YXJ0
LCBmaXJzdEFuZ2xlU3BhbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTUmlnaHQs
IHJpZ2h0Q29sb3IsIHN0eWxlLT5jb2xvcigpLCByaWdodFN0eWxlLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJTUmlnaHQsIHJpZ2h0Q29sb3IsIHJpZ2h0U3R5bGUsIHRy
dWUpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseVRvcElubmVyQ2xpcCkKICAgICAgICAgICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CkBAIC0x
MjcwLDcgKzEyNzAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihH
CiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IGJvdHRvbSByaWdodCBhcmMKICAgICAgICAgICAg
ICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGJvdHRvbVgsIGJvdHRvbVks
IHRoaWNrbmVzcywgYm90dG9tUmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3Bh
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTUmlnaHQsIHJpZ2h0Q29sb3IsIHN0
eWxlLT5jb2xvcigpLCByaWdodFN0eWxlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCU1JpZ2h0LCByaWdodENvbG9yLCByaWdodFN0eWxlLCBmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgaWYgKGFwcGx5Qm90dG9tSW5uZXJDbGlwKQogICAgICAgICAgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWVsZHNldC5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmllbGRzZXQuaCIKIAorI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKIApAQCAtMTgxLDggKzE4Miw4IEBAIHZvaWQgUmVuZGVy
RmllbGRzZXQ6OnBhaW50TWFzayhQYWludEluZm8KIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50
Qm9yZGVyTWludXNMZWdlbmQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0
eCwgaW50IHR5LCBpbnQgdywgaW50IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgaW50IGx4LCBpbnQgbHcsIGlu
dCBsYikKIHsKLSAgICBjb25zdCBDb2xvciYgdGMgPSBzdHlsZS0+Ym9yZGVyVG9wQ29sb3IoKTsK
LSAgICBjb25zdCBDb2xvciYgYmMgPSBzdHlsZS0+Ym9yZGVyQm90dG9tQ29sb3IoKTsKKyAgICBj
b25zdCBDb2xvciYgdGMgPSB2aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3R5bGUsIENTU1Byb3BlcnR5
Qm9yZGVyVG9wQ29sb3IpOworICAgIGNvbnN0IENvbG9yJiBiYyA9IHZpc2l0ZWREZXBlbmRlbnRD
b2xvcihzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcik7CiAKICAgICBFQm9yZGVy
U3R5bGUgdHMgPSBzdHlsZS0+Ym9yZGVyVG9wU3R5bGUoKTsKICAgICBFQm9yZGVyU3R5bGUgYnMg
PSBzdHlsZS0+Ym9yZGVyQm90dG9tU3R5bGUoKTsKQEAgLTE5OSwyMiArMjAwLDIyIEBAIHZvaWQg
UmVuZGVyRmllbGRzZXQ6OnBhaW50Qm9yZGVyTWludXNMZWcKIAogICAgIGlmIChyZW5kZXJfdCkg
ewogICAgICAgICBpZiAobHggPj0gYm9yZGVyTGVmdFdpZHRoKQotICAgICAgICAgICAgZHJhd0xp
bmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHgsIHR5LCB0eCArIG1pbihseCwgdyksIHR5
ICsgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIEJTVG9wLCB0Yywgc3R5bGUtPmNvbG9yKCksIHRz
LAorICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHgsIHR5
LCB0eCArIG1pbihseCwgdyksIHR5ICsgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIEJTVG9wLCB0
YywgdHMsCiAgICAgICAgICAgICAgICAgICAgICAgIChyZW5kZXJfbCAmJiAobHMgPT0gRE9UVEVE
IHx8IGxzID09IERBU0hFRCB8fCBscyA9PSBET1VCTEUpID8gYm9yZGVyTGVmdFdpZHRoIDogMCks
CiAgICAgICAgICAgICAgICAgICAgICAgIChseCA+PSB3ICYmIHJlbmRlcl9yICYmIChycyA9PSBE
T1RURUQgfHwgcnMgPT0gREFTSEVEIHx8IHJzID09IERPVUJMRSkgPyBib3JkZXJSaWdodFdpZHRo
IDogMCkpOwogICAgICAgICBpZiAobHggKyBsdyA8PSAgdyAtIGJvcmRlclJpZ2h0V2lkdGgpCi0g
ICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCArIG1heCgw
LCBseCArIGx3KSwgdHksIHR4ICsgdywgdHkgKyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgQlNU
b3AsIHRjLCBzdHlsZS0+Y29sb3IoKSwgdHMsCisgICAgICAgICAgICBkcmF3TGluZUZvckJveFNp
ZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCArIG1heCgwLCBseCArIGx3KSwgdHksIHR4ICsgdywgdHkg
KyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgQlNUb3AsIHRjLCB0cywKICAgICAgICAgICAgICAg
ICAgICAgICAgKGx4ICsgbHcgPD0gMCAmJiByZW5kZXJfbCAmJiAobHMgPT0gRE9UVEVEIHx8IGxz
ID09IERBU0hFRCB8fCBscyA9PSBET1VCTEUpID8gYm9yZGVyTGVmdFdpZHRoIDogMCksCiAgICAg
ICAgICAgICAgICAgICAgICAgIChyZW5kZXJfciAmJiAocnMgPT0gRE9UVEVEIHx8IHJzID09IERB
U0hFRCB8fCBycyA9PSBET1VCTEUpID8gYm9yZGVyUmlnaHRXaWR0aCA6IDApKTsKICAgICB9CiAK
ICAgICBpZiAocmVuZGVyX2IpCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0Nv
bnRleHQsIHR4LCB0eSArIGggLSBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgdHggKyB3LCB0
eSArIGgsIEJTQm90dG9tLCBiYywgc3R5bGUtPmNvbG9yKCksIGJzLAorICAgICAgICBkcmF3TGlu
ZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCwgdHkgKyBoIC0gc3R5bGUtPmJvcmRlckJv
dHRvbVdpZHRoKCksIHR4ICsgdywgdHkgKyBoLCBCU0JvdHRvbSwgYmMsIGJzLAogICAgICAgICAg
ICAgICAgICAgIChyZW5kZXJfbCAmJiAobHMgPT0gRE9UVEVEIHx8IGxzID09IERBU0hFRCB8fCBs
cyA9PSBET1VCTEUpID8gc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIDogMCksCiAgICAgICAgICAg
ICAgICAgICAgKHJlbmRlcl9yICYmIChycyA9PSBET1RURUQgfHwgcnMgPT0gREFTSEVEIHx8IHJz
ID09IERPVUJMRSkgPyBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDogMCkpOwogCiAgICAgaWYg
KHJlbmRlcl9sKSB7Ci0gICAgICAgIGNvbnN0IENvbG9yJiBsYyA9IHN0eWxlLT5ib3JkZXJMZWZ0
Q29sb3IoKTsKKyAgICAgICAgY29uc3QgQ29sb3ImIGxjID0gdmlzaXRlZERlcGVuZGVudENvbG9y
KHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcik7CiAgICAgICAgIGludCBzdGFydFkg
PSB0eTsKIAogICAgICAgICBib29sIGlnbm9yZV90b3AgPQpAQCAtMjMzLDggKzIzNCw4IEBAIHZv
aWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm9yZGVyTWludXNMZWcKICAgICAgICAgICAgIHN0YXJ0
WSA9IGxiOwogICAgICAgICB9CiAKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwgdHgsIHN0YXJ0WSwgdHggKyBib3JkZXJMZWZ0V2lkdGgsIHR5ICsgaCwgQlNMZWZ0
LCBsYywgc3R5bGUtPmNvbG9yKCksIGxzLAotICAgICAgICAgICAgICAgICAgIGlnbm9yZV90b3Ag
PyAwIDogc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIGlnbm9yZV9ib3R0b20gPyAwIDogc3R5bGUt
PmJvcmRlckJvdHRvbVdpZHRoKCkpOworICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhp
Y3NDb250ZXh0LCB0eCwgc3RhcnRZLCB0eCArIGJvcmRlckxlZnRXaWR0aCwgdHkgKyBoLCBCU0xl
ZnQsIGxjLCBscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZV90b3AgPyAwIDog
c3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIGlnbm9yZV9ib3R0b20gPyAwIDogc3R5bGUtPmJvcmRl
ckJvdHRvbVdpZHRoKCkpOwogICAgIH0KIAogICAgIGlmIChyZW5kZXJfcikgewpAQCAtMjU3LDcg
KzI1OCw3IEBAIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm9yZGVyTWludXNMZWcKICAgICAg
ICAgICAgIHN0YXJ0WSA9IGxiOwogICAgICAgICB9CiAKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgdHggKyB3IC0gYm9yZGVyUmlnaHRXaWR0aCwgc3RhcnRZLCB0
eCArIHcsIHR5ICsgaCwgQlNSaWdodCwgcmMsIHN0eWxlLT5jb2xvcigpLCBycywKKyAgICAgICAg
ZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggKyB3IC0gYm9yZGVyUmlnaHRX
aWR0aCwgc3RhcnRZLCB0eCArIHcsIHR5ICsgaCwgQlNSaWdodCwgcmMsIHJzLAogICAgICAgICAg
ICAgICAgICAgIGlnbm9yZV90b3AgPyAwIDogc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIGlnbm9y
ZV9ib3R0b20gPyAwIDogc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOwogICAgIH0KIH0KSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzAsNyArNDcw
LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRGb2N1c1JpbmdzKFBhaW50SQogICAgICAgICAK
ICAgICAgICAgVmVjdG9yPFBhdGg+IGZvY3VzUmluZ1BhdGhzOwogICAgICAgICBmb2N1c1JpbmdQ
YXRocy5hcHBlbmQoYXJlYUVsZW1lbnQtPmdldFBhdGgodGhpcykpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdQYXRocywgc3R5bGUtPm91dGxpbmVX
aWR0aCgpLCBzdHlsZS0+b3V0bGluZU9mZnNldCgpLCBzdHlsZS0+b3V0bGluZUNvbG9yKCkpOwor
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdQYXRocywg
c3R5bGUtPm91dGxpbmVXaWR0aCgpLCBzdHlsZS0+b3V0bGluZU9mZnNldCgpLCB2aXNpdGVkRGVw
ZW5kZW50Q29sb3Ioc3R5bGUsIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkocmV2aXNp
b24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NjUsMjEgKzk2NSwyMCBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRs
aW5lKEdyYXBoaWNzCiAgICAgaWYgKCFoYXNPdXRsaW5lKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBpZiAoc3R5bGUoKS0+b3V0bGluZVN0eWxlSXNBdXRvKCkgfHwgaGFzT3V0bGluZUFu
bm90YXRpb24oKSkgewotICAgICAgICBpbnQgb3cgPSBzdHlsZSgpLT5vdXRsaW5lV2lkdGgoKTsK
LSAgICAgICAgQ29sb3Igb2MgPSBzdHlsZSgpLT5vdXRsaW5lQ29sb3IoKTsKLSAgICAgICAgaWYg
KCFvYy5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBvYyA9IHN0eWxlKCktPmNvbG9yKCk7CisgICAg
UmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOworICAgIGlmIChzdHlsZVRvVXNlLT5v
dXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpKSB7CisgICAgICAg
IGludCBvdyA9IHN0eWxlVG9Vc2UtPm91dGxpbmVXaWR0aCgpOworICAgICAgICBDb2xvciBvYyA9
IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdHlsZVRvVXNlLCBDU1NQcm9wZXJ0eU91dGxpbmVDb2xv
cik7CiAKICAgICAgICAgVmVjdG9yPEludFJlY3Q+IGZvY3VzUmluZ1JlY3RzOwogICAgICAgICBh
ZGRGb2N1c1JpbmdSZWN0cyhmb2N1c1JpbmdSZWN0cywgdHgsIHR5KTsKLSAgICAgICAgaWYgKHN0
eWxlKCktPm91dGxpbmVTdHlsZUlzQXV0bygpKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5kcmF3Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3RzLCBvdywgc3R5bGUoKS0+b3V0bGluZU9mZnNl
dCgpLCBvYyk7CisgICAgICAgIGlmIChzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSkK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdSZWN0
cywgb3csIHN0eWxlVG9Vc2UtPm91dGxpbmVPZmZzZXQoKSwgb2MpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBhZGRQREZVUkxSZWN0KGdyYXBoaWNzQ29udGV4dCwgdW5pb25SZWN0KGZvY3Vz
UmluZ1JlY3RzKSk7CiAgICAgfQogCi0gICAgaWYgKHN0eWxlKCktPm91dGxpbmVTdHlsZUlzQXV0
bygpIHx8IHN0eWxlKCktPm91dGxpbmVTdHlsZSgpID09IEJOT05FKQorICAgIGlmIChzdHlsZVRv
VXNlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGUoKSA9
PSBCTk9ORSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwpA
QCAtMTAwMCwxMSArOTk5LDEwIEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoR3Jh
cGhpY3MKIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsIGludCB0eSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGxhc3RsaW5lLCBjb25zdCBJbnRS
ZWN0JiB0aGlzbGluZSwgY29uc3QgSW50UmVjdCYgbmV4dGxpbmUpCiB7Ci0gICAgaW50IG93ID0g
c3R5bGUoKS0+b3V0bGluZVdpZHRoKCk7Ci0gICAgRUJvcmRlclN0eWxlIG9zID0gc3R5bGUoKS0+
b3V0bGluZVN0eWxlKCk7Ci0gICAgQ29sb3Igb2MgPSBzdHlsZSgpLT5vdXRsaW5lQ29sb3IoKTsK
LSAgICBpZiAoIW9jLmlzVmFsaWQoKSkKLSAgICAgICAgb2MgPSBzdHlsZSgpLT5jb2xvcigpOwor
ICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKKyAgICBpbnQgb3cgPSBzdHls
ZVRvVXNlLT5vdXRsaW5lV2lkdGgoKTsKKyAgICBFQm9yZGVyU3R5bGUgb3MgPSBzdHlsZVRvVXNl
LT5vdXRsaW5lU3R5bGUoKTsKKyAgICBDb2xvciBvYyA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihz
dHlsZVRvVXNlLCBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcik7CiAKICAgICBpbnQgb2Zmc2V0ID0g
c3R5bGUoKS0+b3V0bGluZU9mZnNldCgpOwogCkBAIC0xMDIwLDcgKzEwMTgsNyBAQCB2b2lkIFJl
bmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHCiAgICAgICAgICAgICAgICBsLAogICAg
ICAgICAgICAgICAgYiArIChuZXh0bGluZS5pc0VtcHR5KCkgfHwgdGhpc2xpbmUueCgpIDw9IG5l
eHRsaW5lLngoKSB8fCAobmV4dGxpbmUucmlnaHQoKSAtIDEpIDw9IHRoaXNsaW5lLngoKSA/IG93
IDogMCksCiAgICAgICAgICAgICAgICBCU0xlZnQsCi0gICAgICAgICAgICAgICBvYywgc3R5bGUo
KS0+Y29sb3IoKSwgb3MsCisgICAgICAgICAgICAgICBvYywgb3MsCiAgICAgICAgICAgICAgICAo
bGFzdGxpbmUuaXNFbXB0eSgpIHx8IHRoaXNsaW5lLngoKSA8IGxhc3RsaW5lLngoKSB8fCAobGFz
dGxpbmUucmlnaHQoKSAtIDEpIDw9IHRoaXNsaW5lLngoKSA/IG93IDogLW93KSwKICAgICAgICAg
ICAgICAgIChuZXh0bGluZS5pc0VtcHR5KCkgfHwgdGhpc2xpbmUueCgpIDw9IG5leHRsaW5lLngo
KSB8fCAobmV4dGxpbmUucmlnaHQoKSAtIDEpIDw9IHRoaXNsaW5lLngoKSA/IG93IDogLW93KSk7
CiAgICAgCkBAIC0xMDMxLDcgKzEwMjksNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRs
aW5lRm9yTGluZShHCiAgICAgICAgICAgICAgICByICsgb3csCiAgICAgICAgICAgICAgICBiICsg
KG5leHRsaW5lLmlzRW1wdHkoKSB8fCBuZXh0bGluZS5yaWdodCgpIDw9IHRoaXNsaW5lLnJpZ2h0
KCkgfHwgKHRoaXNsaW5lLnJpZ2h0KCkgLSAxKSA8PSBuZXh0bGluZS54KCkgPyBvdyA6IDApLAog
ICAgICAgICAgICAgICAgQlNSaWdodCwKLSAgICAgICAgICAgICAgIG9jLCBzdHlsZSgpLT5jb2xv
cigpLCBvcywKKyAgICAgICAgICAgICAgIG9jLCBvcywKICAgICAgICAgICAgICAgIChsYXN0bGlu
ZS5pc0VtcHR5KCkgfHwgbGFzdGxpbmUucmlnaHQoKSA8IHRoaXNsaW5lLnJpZ2h0KCkgfHwgKHRo
aXNsaW5lLnJpZ2h0KCkgLSAxKSA8PSBsYXN0bGluZS54KCkgPyBvdyA6IC1vdyksCiAgICAgICAg
ICAgICAgICAobmV4dGxpbmUuaXNFbXB0eSgpIHx8IG5leHRsaW5lLnJpZ2h0KCkgPD0gdGhpc2xp
bmUucmlnaHQoKSB8fCAodGhpc2xpbmUucmlnaHQoKSAtIDEpIDw9IG5leHRsaW5lLngoKSA/IG93
IDogLW93KSk7CiAgICAgLy8gdXBwZXIgZWRnZQpAQCAtMTA0MSw3ICsxMDM5LDcgQEAgdm9pZCBS
ZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoRwogICAgICAgICAgICAgICAgICAgIHQg
LSBvdywKICAgICAgICAgICAgICAgICAgICBtaW4ocitvdywgKGxhc3RsaW5lLmlzRW1wdHkoKSA/
IDEwMDAwMDAgOiB0eCArIGxhc3RsaW5lLngoKSkpLAogICAgICAgICAgICAgICAgICAgIHQgLAot
ICAgICAgICAgICAgICAgICAgIEJTVG9wLCBvYywgc3R5bGUoKS0+Y29sb3IoKSwgb3MsCisgICAg
ICAgICAgICAgICAgICAgQlNUb3AsIG9jLCBvcywKICAgICAgICAgICAgICAgICAgICBvdywKICAg
ICAgICAgICAgICAgICAgICAoIWxhc3RsaW5lLmlzRW1wdHkoKSAmJiB0eCArIGxhc3RsaW5lLngo
KSArIDEgPCByICsgb3cpID8gLW93IDogb3cpOwogICAgIApAQCAtMTA1MSw3ICsxMDQ5LDcgQEAg
dm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoRwogICAgICAgICAgICAgICAg
ICAgIHQgLSBvdywKICAgICAgICAgICAgICAgICAgICByICsgb3csCiAgICAgICAgICAgICAgICAg
ICAgdCAsCi0gICAgICAgICAgICAgICAgICAgQlNUb3AsIG9jLCBzdHlsZSgpLT5jb2xvcigpLCBv
cywKKyAgICAgICAgICAgICAgICAgICBCU1RvcCwgb2MsIG9zLAogICAgICAgICAgICAgICAgICAg
ICghbGFzdGxpbmUuaXNFbXB0eSgpICYmIGwgLSBvdyA8IHR4ICsgbGFzdGxpbmUucmlnaHQoKSkg
PyAtb3cgOiBvdywKICAgICAgICAgICAgICAgICAgICBvdyk7CiAgICAgCkBAIC0xMDYyLDcgKzEw
NjAsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHCiAgICAgICAg
ICAgICAgICAgICAgYiwKICAgICAgICAgICAgICAgICAgICBtaW4ociArIG93LCAhbmV4dGxpbmUu
aXNFbXB0eSgpID8gdHggKyBuZXh0bGluZS54KCkgKyAxIDogMTAwMDAwMCksCiAgICAgICAgICAg
ICAgICAgICAgYiArIG93LAotICAgICAgICAgICAgICAgICAgIEJTQm90dG9tLCBvYywgc3R5bGUo
KS0+Y29sb3IoKSwgb3MsCisgICAgICAgICAgICAgICAgICAgQlNCb3R0b20sIG9jLCBvcywKICAg
ICAgICAgICAgICAgICAgICBvdywKICAgICAgICAgICAgICAgICAgICAoIW5leHRsaW5lLmlzRW1w
dHkoKSAmJiB0eCArIG5leHRsaW5lLngoKSArIDEgPCByICsgb3cpID8gLW93IDogb3cpOwogICAg
IApAQCAtMTA3Miw3ICsxMDcwLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZv
ckxpbmUoRwogICAgICAgICAgICAgICAgICAgIGIsCiAgICAgICAgICAgICAgICAgICAgciArIG93
LAogICAgICAgICAgICAgICAgICAgIGIgKyBvdywKLSAgICAgICAgICAgICAgICAgICBCU0JvdHRv
bSwgb2MsIHN0eWxlKCktPmNvbG9yKCksIG9zLAorICAgICAgICAgICAgICAgICAgIEJTQm90dG9t
LCBvYywgb3MsCiAgICAgICAgICAgICAgICAgICAgKCFuZXh0bGluZS5pc0VtcHR5KCkgJiYgbCAt
IG93IDwgdHggKyBuZXh0bGluZS5yaWdodCgpKSA/IC1vdyA6IG93LAogICAgICAgICAgICAgICAg
ICAgIG93KTsKIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
NTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OTgsNyArNjk4LDcgQEAgYm9vbCBSZW5kZXJPYmplY3Q6Om11c3RSZXBhaW50QmFj
a2dyb3VuZAogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQg
eTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJveFNpZGUgcywgQ29s
b3IgYywgY29uc3QgQ29sb3ImIHRleHRjb2xvciwgRUJvcmRlclN0eWxlIHN0eWxlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3hTaWRlIHMsIENvbG9yIGMsIEVCb3Jk
ZXJTdHlsZSBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGFkamJ3MSwgaW50IGFkamJ3MikKIHsKICAgICBpbnQgd2lkdGggPSAocyA9PSBCU1RvcCB8fCBz
ID09IEJTQm90dG9tID8geTIgLSB5MSA6IHgyIC0geDEpOwpAQCAtNzA2LDEzICs3MDYsNiBAQCB2
b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyCiAgICAgaWYgKHN0eWxlID09
IERPVUJMRSAmJiB3aWR0aCA8IDMpCiAgICAgICAgIHN0eWxlID0gU09MSUQ7CiAKLSAgICBpZiAo
IWMuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGlmIChzdHlsZSA9PSBJTlNFVCB8fCBzdHlsZSA9PSBP
VVRTRVQgfHwgc3R5bGUgPT0gUklER0UgfHwgc3R5bGUgPT0gR1JPT1ZFKQotICAgICAgICAgICAg
Yy5zZXRSR0IoMjM4LCAyMzgsIDIzOCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGMgPSB0
ZXh0Y29sb3I7Ci0gICAgfQotCiAgICAgc3dpdGNoIChzdHlsZSkgewogICAgICAgICBjYXNlIEJO
T05FOgogICAgICAgICBjYXNlIEJISURERU46CkBAIC03NjQsMzQgKzc1NywzNCBAQCB2b2lkIFJl
bmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyCiAgICAgICAgICAgICAgICAgICAgIGNh
c2UgQlNUb3A6CiAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3Jh
cGhpY3NDb250ZXh0LCB4MSArIG1heCgoLWFkamJ3MSAqIDIgKyAxKSAvIDMsIDApLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MSwgeDIgLSBtYXgoKC1hZGpidzIgKiAyICsg
MSkgLyAzLCAwKSwgeTEgKyB0aGlyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcywgYywgdGV4dGNvbG9yLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJk
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgU09MSUQsIGFkamJ3
MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3
TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSArIG1heCgoYWRqYncxICogMiArIDEp
IC8gMywgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkyIC0gdGhpcmQs
IHgyIC0gbWF4KChhZGpidzIgKiAyICsgMSkgLyAzLCAwKSwgeTIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xvciwgU09MSUQsIGFkamJ3MWJpZ3RoaXJk
LCBhZGpidzJiaWd0aGlyZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMs
IGMsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQlNMZWZ0OgogICAg
ICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwg
eDEsIHkxICsgbWF4KCgtYWRqYncxICogMiArIDEpIC8gMywgMCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgxICsgdGhpcmQsIHkyIC0gbWF4KCgtYWRqYncyICogMiArIDEp
IC8gMywgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRj
b2xvciwgU09MSUQsIGFkamJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRq
YncyYmlndGhpcmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRl
KGdyYXBoaWNzQ29udGV4dCwgeDIgLSB0aGlyZCwgeTEgKyBtYXgoKGFkamJ3MSAqIDIgKyAxKSAv
IDMsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwgeTIgLSBtYXgo
KGFkamJ3MiAqIDIgKyAxKSAvIDMsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhp
cmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCBTT0xJRCwgYWRq
YncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEJTQm90dG9tOgogICAgICAgICAgICAgICAg
ICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEgKyBtYXgoKGFk
amJ3MSAqIDIgKyAxKSAvIDMsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB5MSwgeDIgLSBtYXgoKGFkamJ3MiAqIDIgKyAxKSAvIDMsIDApLCB5MSArIHRoaXJkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNPTElELCBh
ZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzLCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRl
eHQsIHgxICsgbWF4KCgtYWRqYncxICogMiArIDEpIC8gMywgMCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHkyIC0gdGhpcmQsIHgyIC0gbWF4KCgtYWRqYncyICogMiArIDEp
IC8gMywgMCksIHkyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0
ZXh0Y29sb3IsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQs
IGFkamJ3MmJpZ3RoaXJkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICBjYXNlIEJTUmlnaHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3
TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSwgeTEgKyBtYXgoKGFkamJ3MSAqIDIg
KyAxKSAvIDMsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSArIHRo
aXJkLCB5MiAtIG1heCgoYWRqYncyICogMiArIDEpIC8gMywgMCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xvciwgU09MSUQsIGFkamJ3MWJpZ3RoaXJk
LCBhZGpidzJiaWd0aGlyZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMs
IGMsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDIgLSB0aGly
ZCwgeTEgKyBtYXgoKC1hZGpidzEgKiAyICsgMSkgLyAzLCAwKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDIsIHkyIC0gbWF4KCgtYWRqYncyICogMiArIDEpIC8gMywgMCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xvciwgU09M
SUQsIGFkamJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHMsIGMsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhp
cmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTgxOCwyNyArODEx
LDI3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3TGluZUZvckJveFNpZGUoR3IKICAgICAgICAg
ICAgIHN3aXRjaCAocykgewogICAgICAgICAgICAgICAgIGNhc2UgQlNUb3A6CiAgICAgICAgICAg
ICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgxICsgbWF4KC1h
ZGpidzEsIDApIC8gMiwgeTEsIHgyIC0gbWF4KC1hZGpidzIsIDApIC8gMiwgKHkxICsgeTIgKyAx
KSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNvbG9yLCBz
MSwgYWRqYncxYmlnaGFsZiwgYWRqYncyYmlnaGFsZik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcywgYywgczEsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOwogICAgICAg
ICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSArIG1h
eChhZGpidzEgKyAxLCAwKSAvIDIsICh5MSArIHkyICsgMSkgLyAyLCB4MiAtIG1heChhZGpidzIg
KyAxLCAwKSAvIDIsIHkyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRl
eHRjb2xvciwgczIsIGFkamJ3MSAvIDIsIGFkamJ3MiAvIDIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMsIGMsIHMyLCBhZGpidzEgLyAyLCBhZGpidzIgLyAyKTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBCU0xlZnQ6CiAgICAgICAg
ICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgxLCB5MSAr
IG1heCgtYWRqYncxLCAwKSAvIDIsICh4MSArIHgyICsgMSkgLyAyLCB5MiAtIG1heCgtYWRqYncy
LCAwKSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNvbG9y
LCBzMSwgYWRqYncxYmlnaGFsZiwgYWRqYncyYmlnaGFsZik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcywgYywgczEsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOwogICAg
ICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCAoeDEg
KyB4MiArIDEpIC8gMiwgeTEgKyBtYXgoYWRqYncxICsgMSwgMCkgLyAyLCB4MiwgeTIgLSBtYXgo
YWRqYncyICsgMSwgMCkgLyAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMs
IHRleHRjb2xvciwgczIsIGFkamJ3MSAvIDIsIGFkamJ3MiAvIDIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHMsIGMsIHMyLCBhZGpidzEgLyAyLCBhZGpidzIgLyAyKTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBCU0JvdHRvbToKICAg
ICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEg
KyBtYXgoYWRqYncxLCAwKSAvIDIsIHkxLCB4MiAtIG1heChhZGpidzIsIDApIC8gMiwgKHkxICsg
eTIgKyAxKSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNv
bG9yLCBzMiwgYWRqYncxYmlnaGFsZiwgYWRqYncyYmlnaGFsZik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcywgYywgczIsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOwog
ICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4
MSArIG1heCgtYWRqYncxICsgMSwgMCkgLyAyLCAoeTEgKyB5MiArIDEpIC8gMiwgeDIgLSBtYXgo
LWFkamJ3MiArIDEsIDApIC8gMiwgeTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cywgYywgdGV4dGNvbG9yLCBzMSwgYWRqYncxLzIsIGFkamJ3Mi8yKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzLCBjLCBzMSwgYWRqYncxLzIsIGFkamJ3Mi8yKTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBCU1JpZ2h0OgogICAgICAg
ICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSwgeTEg
KyBtYXgoYWRqYncxLCAwKSAvIDIsICh4MSArIHgyICsgMSkgLyAyLCB5MiAtIG1heChhZGpidzIs
IDApIC8gMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29sb3Is
IHMyLCBhZGpidzFiaWdoYWxmLCBhZGpidzJiaWdoYWxmKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzLCBjLCBzMiwgYWRqYncxYmlnaGFsZiwgYWRqYncyYmlnaGFsZik7CiAgICAg
ICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsICh4MSAr
IHgyICsgMSkgLyAyLCB5MSArIG1heCgtYWRqYncxICsgMSwgMCkgLyAyLCB4MiwgeTIgLSBtYXgo
LWFkamJ3MiArIDEsIDApIC8gMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBj
LCB0ZXh0Y29sb3IsIHMxLCBhZGpidzEvMiwgYWRqYncyLzIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMsIGMsIHMxLCBhZGpidzEvMiwgYWRqYncyLzIpOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtODk0
LDE5ICs4ODcsMTIgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdMaW5lRm9yQm94U2lkZShHcgog
fQogCiB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0FyY0ZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGludCB4LCBpbnQgeSwgZmxvYXQgdGhpY2tuZXNzLCBJbnRTaXpl
IHJhZGl1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYW5nbGVT
dGFydCwgaW50IGFuZ2xlU3BhbiwgQm94U2lkZSBzLCBDb2xvciBjLCBjb25zdCBDb2xvciYgdGV4
dENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbmdsZVN0
YXJ0LCBpbnQgYW5nbGVTcGFuLCBCb3hTaWRlIHMsIENvbG9yIGMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUJvcmRlclN0eWxlIHN0eWxlLCBib29sIGZpcnN0Q29ybmVy
KQogewogICAgIGlmICgoc3R5bGUgPT0gRE9VQkxFICYmIHRoaWNrbmVzcyAvIDIgPCAzKSB8fCAo
KHN0eWxlID09IFJJREdFIHx8IHN0eWxlID09IEdST09WRSkgJiYgdGhpY2tuZXNzIC8gMiA8IDIp
KQogICAgICAgICBzdHlsZSA9IFNPTElEOwogCi0gICAgaWYgKCFjLmlzVmFsaWQoKSkgewotICAg
ICAgICBpZiAoc3R5bGUgPT0gSU5TRVQgfHwgc3R5bGUgPT0gT1VUU0VUIHx8IHN0eWxlID09IFJJ
REdFIHx8IHN0eWxlID09IEdST09WRSkKLSAgICAgICAgICAgIGMuc2V0UkdCKDIzOCwgMjM4LCAy
MzgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjID0gdGV4dENvbG9yOwotICAgIH0KLQog
ICAgIHN3aXRjaCAoc3R5bGUpIHsKICAgICAgICAgY2FzZSBCTk9ORToKICAgICAgICAgY2FzZSBC
SElEREVOOgpAQCAtOTk0LDMzICs5ODAsMzIgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFkZFBERlVS
TFJlY3QoR3JhcGhpYwogICAgIGNvbnRleHQtPnNldFVSTEZvclJlY3Qobi0+ZG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwoaHJlZiksIHJlY3QpOwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6cGFpbnRP
dXRsaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsIGludCB0eSwg
aW50IHcsIGludCBoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCit2b2lkIFJlbmRlck9iamVj
dDo6cGFpbnRPdXRsaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgs
IGludCB0eSwgaW50IHcsIGludCBoKQogewogICAgIGlmICghaGFzT3V0bGluZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpbnQgb3cgPSBzdHlsZS0+b3V0bGluZVdpZHRoKCk7Ci0gICAgRUJv
cmRlclN0eWxlIG9zID0gc3R5bGUtPm91dGxpbmVTdHlsZSgpOworICAgIFJlbmRlclN0eWxlKiBz
dHlsZVRvVXNlID0gc3R5bGUoKTsKKyAgICBpbnQgb3cgPSBzdHlsZVRvVXNlLT5vdXRsaW5lV2lk
dGgoKTsKKyAgICBFQm9yZGVyU3R5bGUgb3MgPSBzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGUoKTsK
IAotICAgIENvbG9yIG9jID0gc3R5bGUtPm91dGxpbmVDb2xvcigpOwotICAgIGlmICghb2MuaXNW
YWxpZCgpKQotICAgICAgICBvYyA9IHN0eWxlLT5jb2xvcigpOworICAgIENvbG9yIG9jID0gdmlz
aXRlZERlcGVuZGVudENvbG9yKHN0eWxlVG9Vc2UsIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKTsK
IAotICAgIGludCBvZmZzZXQgPSBzdHlsZS0+b3V0bGluZU9mZnNldCgpOworICAgIGludCBvZmZz
ZXQgPSBzdHlsZVRvVXNlLT5vdXRsaW5lT2Zmc2V0KCk7CiAKLSAgICBpZiAoc3R5bGUtPm91dGxp
bmVTdHlsZUlzQXV0bygpIHx8IGhhc091dGxpbmVBbm5vdGF0aW9uKCkpIHsKLSAgICAgICAgaWYg
KCF0aGVtZSgpLT5zdXBwb3J0c0ZvY3VzUmluZyhzdHlsZSkpIHsKKyAgICBpZiAoc3R5bGVUb1Vz
ZS0+b3V0bGluZVN0eWxlSXNBdXRvKCkgfHwgaGFzT3V0bGluZUFubm90YXRpb24oKSkgeworICAg
ICAgICBpZiAoIXRoZW1lKCktPnN1cHBvcnRzRm9jdXNSaW5nKHN0eWxlVG9Vc2UpKSB7CiAgICAg
ICAgICAgICAvLyBPbmx5IHBhaW50IHRoZSBmb2N1cyByaW5nIGJ5IGhhbmQgaWYgdGhlIHRoZW1l
IGlzbid0IGFibGUgdG8gZHJhdyB0aGUgZm9jdXMgcmluZy4KICAgICAgICAgICAgIFZlY3RvcjxJ
bnRSZWN0PiBmb2N1c1JpbmdSZWN0czsKICAgICAgICAgICAgIGFkZEZvY3VzUmluZ1JlY3RzKGZv
Y3VzUmluZ1JlY3RzLCB0eCwgdHkpOwotICAgICAgICAgICAgaWYgKHN0eWxlLT5vdXRsaW5lU3R5
bGVJc0F1dG8oKSkKKyAgICAgICAgICAgIGlmIChzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGVJc0F1
dG8oKSkKICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdGb2N1c1JpbmcoZm9j
dXNSaW5nUmVjdHMsIG93LCBvZmZzZXQsIG9jKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBhZGRQREZVUkxSZWN0KGdyYXBoaWNzQ29udGV4dCwgdW5pb25SZWN0KGZvY3VzUmlu
Z1JlY3RzKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoc3R5bGUtPm91dGxpbmVTdHls
ZUlzQXV0bygpIHx8IHN0eWxlLT5vdXRsaW5lU3R5bGUoKSA9PSBCTk9ORSkKKyAgICBpZiAoc3R5
bGVUb1VzZS0+b3V0bGluZVN0eWxlSXNBdXRvKCkgfHwgc3R5bGVUb1VzZS0+b3V0bGluZVN0eWxl
KCkgPT0gQk5PTkUpCiAgICAgICAgIHJldHVybjsKIAogICAgIHR4IC09IG9mZnNldDsKQEAgLTEw
MzEsMTcgKzEwMTYsMTAgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0bGluZShHcmFwaGlj
cwogICAgIGlmIChoIDwgMCB8fCB3IDwgMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZHJhd0xp
bmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggLSBvdywgdHkgLSBvdywgdHgsIHR5ICsg
aCArIG93LAotICAgICAgICAgICAgICAgQlNMZWZ0LCBDb2xvcihvYyksIHN0eWxlLT5jb2xvcigp
LCBvcywgb3csIG93KTsKLQotICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQs
IHR4IC0gb3csIHR5IC0gb3csIHR4ICsgdyArIG93LCB0eSwKLSAgICAgICAgICAgICAgIEJTVG9w
LCBDb2xvcihvYyksIHN0eWxlLT5jb2xvcigpLCBvcywgb3csIG93KTsKLQotICAgIGRyYXdMaW5l
Rm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4ICsgdywgdHkgLSBvdywgdHggKyB3ICsgb3cs
IHR5ICsgaCArIG93LAotICAgICAgICAgICAgICAgQlNSaWdodCwgQ29sb3Iob2MpLCBzdHlsZS0+
Y29sb3IoKSwgb3MsIG93LCBvdyk7Ci0KLSAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3ND
b250ZXh0LCB0eCAtIG93LCB0eSArIGgsIHR4ICsgdyArIG93LCB0eSArIGggKyBvdywKLSAgICAg
ICAgICAgICAgIEJTQm90dG9tLCBDb2xvcihvYyksIHN0eWxlLT5jb2xvcigpLCBvcywgb3csIG93
KTsKKyAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCAtIG93LCB0eSAt
IG93LCB0eCwgdHkgKyBoICsgb3csIEJTTGVmdCwgb2MsIG9zLCBvdywgb3cpOworICAgIGRyYXdM
aW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4IC0gb3csIHR5IC0gb3csIHR4ICsgdyAr
IG93LCB0eSwgQlNUb3AsIG9jLCBvcywgb3csIG93KTsKKyAgICBkcmF3TGluZUZvckJveFNpZGUo
Z3JhcGhpY3NDb250ZXh0LCB0eCArIHcsIHR5IC0gb3csIHR4ICsgdyArIG93LCB0eSArIGggKyBv
dywgQlNSaWdodCwgb2MsIG9zLCBvdywgb3cpOworICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFw
aGljc0NvbnRleHQsIHR4IC0gb3csIHR5ICsgaCwgdHggKyB3ICsgb3csIHR5ICsgaCArIG93LCBC
U0JvdHRvbSwgb2MsIG9zLCBvdywgb3cpOwogfQogCiBJbnRSZWN0IFJlbmRlck9iamVjdDo6YWJz
b2x1dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zKQpAQCAtMjIwMywyMSArMjE4
MSwxNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJPYmplY3Q6OmdlCiAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBDb2xvciBkZWNvcmF0aW9uQ29sb3Io
UmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIENvbG9yIGRlY29yYXRpb25Db2xvcihSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQogewogICAgIENvbG9yIHJlc3VsdDsKLSAgICBpZiAoc3R5bGUtPnRl
eHRTdHJva2VXaWR0aCgpID4gMCkgeworICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS0+dGV4dFN0
cm9rZVdpZHRoKCkgPiAwKSB7CiAgICAgICAgIC8vIFByZWZlciBzdHJva2UgY29sb3IgaWYgcG9z
c2libGUgYnV0IG5vdCBpZiBpdCdzIGZ1bGx5IHRyYW5zcGFyZW50LgotICAgICAgICByZXN1bHQg
PSBzdHlsZS0+dGV4dFN0cm9rZUNvbG9yKCk7Ci0gICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQo
KSkKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0eWxlLT5jb2xvcigpOworICAgICAgICByZXN1bHQg
PSByZW5kZXJlci0+dmlzaXRlZERlcGVuZGVudENvbG9yKHJlbmRlcmVyLT5zdHlsZSgpLCBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcik7CiAgICAgICAgIGlmIChyZXN1bHQuYWxwaGEo
KSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIHJlc3VsdCA9
IHN0eWxlLT50ZXh0RmlsbENvbG9yKCk7Ci0gICAgaWYgKCFyZXN1bHQuaXNWYWxpZCgpKQotICAg
ICAgICByZXN1bHQgPSBzdHlsZS0+Y29sb3IoKTsKKyAgICByZXN1bHQgPSByZW5kZXJlci0+dmlz
aXRlZERlcGVuZGVudENvbG9yKHJlbmRlcmVyLT5zdHlsZSgpLCBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRGaWxsQ29sb3IpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIyMzAsMTUgKzIyMDQs
MTUgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sbwogICAgICAgICBp
ZiAoY3VyckRlY3MpIHsKICAgICAgICAgICAgIGlmIChjdXJyRGVjcyAmIFVOREVSTElORSkgewog
ICAgICAgICAgICAgICAgIGRlY29yYXRpb25zICY9IH5VTkRFUkxJTkU7Ci0gICAgICAgICAgICAg
ICAgdW5kZXJsaW5lID0gZGVjb3JhdGlvbkNvbG9yKGN1cnItPnN0eWxlKCkpOworICAgICAgICAg
ICAgICAgIHVuZGVybGluZSA9IGRlY29yYXRpb25Db2xvcihjdXJyKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChjdXJyRGVjcyAmIE9WRVJMSU5FKSB7CiAgICAgICAgICAgICAgICAg
ZGVjb3JhdGlvbnMgJj0gfk9WRVJMSU5FOwotICAgICAgICAgICAgICAgIG92ZXJsaW5lID0gZGVj
b3JhdGlvbkNvbG9yKGN1cnItPnN0eWxlKCkpOworICAgICAgICAgICAgICAgIG92ZXJsaW5lID0g
ZGVjb3JhdGlvbkNvbG9yKGN1cnIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGN1
cnJEZWNzICYgTElORV9USFJPVUdIKSB7CiAgICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMgJj0g
fkxJTkVfVEhST1VHSDsKLSAgICAgICAgICAgICAgICBsaW5ldGhyb3VnaCA9IGRlY29yYXRpb25D
b2xvcihjdXJyLT5zdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBsaW5ldGhyb3VnaCA9IGRlY29y
YXRpb25Db2xvcihjdXJyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBjdXJy
ID0gY3Vyci0+cGFyZW50KCk7CkBAIC0yMjUwLDEyICsyMjI0LDg2IEBAIHZvaWQgUmVuZGVyT2Jq
ZWN0OjpnZXRUZXh0RGVjb3JhdGlvbkNvbG8KICAgICAvLyBJZiB3ZSBiYWlsZWQgb3V0LCB1c2Ug
dGhlIGVsZW1lbnQgd2UgYmFpbGVkIG91dCBhdCAodHlwaWNhbGx5IGEgPGZvbnQ+IG9yIDxhPiBl
bGVtZW50KS4KICAgICBpZiAoZGVjb3JhdGlvbnMgJiYgY3VycikgewogICAgICAgICBpZiAoZGVj
b3JhdGlvbnMgJiBVTkRFUkxJTkUpCi0gICAgICAgICAgICB1bmRlcmxpbmUgPSBkZWNvcmF0aW9u
Q29sb3IoY3Vyci0+c3R5bGUoKSk7CisgICAgICAgICAgICB1bmRlcmxpbmUgPSBkZWNvcmF0aW9u
Q29sb3IoY3Vycik7CiAgICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIE9WRVJMSU5FKQotICAgICAg
ICAgICAgb3ZlcmxpbmUgPSBkZWNvcmF0aW9uQ29sb3IoY3Vyci0+c3R5bGUoKSk7CisgICAgICAg
ICAgICBvdmVybGluZSA9IGRlY29yYXRpb25Db2xvcihjdXJyKTsKICAgICAgICAgaWYgKGRlY29y
YXRpb25zICYgTElORV9USFJPVUdIKQotICAgICAgICAgICAgbGluZXRocm91Z2ggPSBkZWNvcmF0
aW9uQ29sb3IoY3Vyci0+c3R5bGUoKSk7CisgICAgICAgICAgICBsaW5ldGhyb3VnaCA9IGRlY29y
YXRpb25Db2xvcihjdXJyKTsKKyAgICB9Cit9CisKK3N0YXRpYyBDb2xvciBjb2xvckluY2x1ZGlu
Z0ZhbGxiYWNrKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgaW50IGNvbG9yUHJvcGVydHkpCit7
CisgICAgQ29sb3IgcmVzdWx0OworICAgIEVCb3JkZXJTdHlsZSBib3JkZXJTdHlsZTsKKyAgICBz
d2l0Y2ggKGNvbG9yUHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yOgorICAgICAgICByZXR1cm4gc3R5bGUtPmJhY2tncm91bmRDb2xvcigpOyAvLyBCYWNrZ3Jv
dW5kIGNvbG9yIGRvZXNuJ3QgZmFsbCBiYWNrLgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0Q29sb3I6CisgICAgICAgIHJlc3VsdCA9IHN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKTsKKyAg
ICAgICAgYm9yZGVyU3R5bGUgPSBzdHlsZS0+Ym9yZGVyTGVmdFN0eWxlKCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yOgorICAgICAgICByZXN1
bHQgPSBzdHlsZS0+Ym9yZGVyUmlnaHRDb2xvcigpOworICAgICAgICBib3JkZXJTdHlsZSA9IHN0
eWxlLT5ib3JkZXJSaWdodFN0eWxlKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJUb3BDb2xvcjoKKyAgICAgICAgcmVzdWx0ID0gc3R5bGUtPmJvcmRlclRvcENv
bG9yKCk7CisgICAgICAgIGJvcmRlclN0eWxlID0gc3R5bGUtPmJvcmRlclRvcFN0eWxlKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcjoKKyAg
ICAgICAgcmVzdWx0ID0gc3R5bGUtPmJvcmRlckJvdHRvbUNvbG9yKCk7CisgICAgICAgIGJvcmRl
clN0eWxlID0gc3R5bGUtPmJvcmRlckJvdHRvbVN0eWxlKCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoKKyAgICAgICAgcmVzdWx0ID0gc3R5bGUtPmNvbG9yKCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6CisgICAg
ICAgIHJlc3VsdCA9IHN0eWxlLT5vdXRsaW5lQ29sb3IoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcjoKKyAgICAgICAgcmVzdWx0ID0g
c3R5bGUtPmNvbHVtblJ1bGVDb2xvcigpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKKyAgICAgICAgcmVzdWx0ID0gc3R5bGUtPnRleHRG
aWxsQ29sb3IoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTdHJva2VDb2xvcjoKKyAgICAgICAgcmVzdWx0ID0gc3R5bGUtPnRleHRTdHJva2VDb2xvcigp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBGSVhNRTogQWRkIFNW
RyBmaWxsIGFuZCBzdHJva2UuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBicmVhazsKICAgICB9CisKKyAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpIHsKKyAgICAgICAg
aWYgKChjb2xvclByb3BlcnR5ID09IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yIHx8IGNvbG9y
UHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yIHx8CisgICAgICAgICAgICAg
Y29sb3JQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yIHx8IGNvbG9yUHJvcGVy
dHkgPT0gQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcikgJiYKKyAgICAgICAgICAgIChib3Jk
ZXJTdHlsZSA9PSBJTlNFVCB8fCBib3JkZXJTdHlsZSA9PSBPVVRTRVQgfHwgYm9yZGVyU3R5bGUg
PT0gUklER0UgfHwgYm9yZGVyU3R5bGUgPT0gR1JPT1ZFKSkKKyAgICAgICAgICAgIHJlc3VsdC5z
ZXRSR0IoMjM4LCAyMzgsIDIzOCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9
IHN0eWxlLT5jb2xvcigpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NvbG9y
IFJlbmRlck9iamVjdDo6dmlzaXRlZERlcGVuZGVudENvbG9yKGNvbnN0IFJlbmRlclN0eWxlKiB1
bnZpc2l0ZWRTdHlsZSwgaW50IGNvbG9yUHJvcGVydHkpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6
IEZldGNoIGJvdGggdmlzaXRlZCBhbmQgdW52aXNpdGVkIHN0eWxlcy4gIE1lcmdlIGNvbG9ycyBi
eSBnZXR0aW5nIHRoZSBSR0IgZnJvbSB0aGUgdmlzaXRlZCBzdHlsZQorICAgIC8vIGFuZCB0aGUg
QSBmcm9tIHRoZSB1bnZpc2l0ZWQuICBJZiBhIGNvbG9yIGlzIG5vdCB2YWxpZCwgbmVlZCB0byBm
YWxsIGJhY2sgdG8gY29sb3IgaW4gc29tZSBjYXNlcyAodGV4dCBmaWxsLCBzdHJva2UsIGJvcmRl
ciksCisgICAgLy8gc28gaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgd2hlbiBhdHRlbXB0aW5n
IGEgbWVyZ2UpLgorICAgIENvbG9yIHVudmlzaXRlZENvbG9yID0gY29sb3JJbmNsdWRpbmdGYWxs
YmFjayh1bnZpc2l0ZWRTdHlsZSwgY29sb3JQcm9wZXJ0eSk7CisgICAgaWYgKCF1bnZpc2l0ZWRT
dHlsZS0+aW5zaWRlTGluaygpKQorICAgICAgICByZXR1cm4gdW52aXNpdGVkQ29sb3I7CisKKyAg
ICBSZW5kZXJTdHlsZSogdmlzaXRlZFN0eWxlID0gdW52aXNpdGVkU3R5bGUtPmdldENhY2hlZFBz
ZXVkb1N0eWxlKFZJU0lURURfTElOSyk7CisgICAgaWYgKCF2aXNpdGVkU3R5bGUpCisgICAgICAg
IHJldHVybiB1bnZpc2l0ZWRDb2xvcjsKKyAgICBDb2xvciB2aXNpdGVkQ29sb3IgPSBjb2xvcklu
Y2x1ZGluZ0ZhbGxiYWNrKHZpc2l0ZWRTdHlsZSwgY29sb3JQcm9wZXJ0eSk7CisKKyAgICAvLyBU
YWtlIHRoZSBhbHBoYSBmcm9tIHRoZSB1bnZpc2l0ZWQgY29sb3IsIGJ1dCBnZXQgdGhlIFJHQiB2
YWx1ZXMgZnJvbSB0aGUgdmlzaXRlZCBjb2xvci4KKyAgICByZXR1cm4gQ29sb3IodmlzaXRlZENv
bG9yLnJlZCgpLCB2aXNpdGVkQ29sb3IuZ3JlZW4oKSwgdmlzaXRlZENvbG9yLmJsdWUoKSwgdW52
aXNpdGVkQ29sb3IuYWxwaGEoKSk7CiB9CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQp
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDA4LDkgKzQw
OCw5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc01hc2soKSBjb25zdCB7IHJldHVybiBzdHlsZSgp
ICYmIHN0eWxlKCktPmhhc01hc2soKTsgfQogCiAgICAgdm9pZCBkcmF3TGluZUZvckJveFNpZGUo
R3JhcGhpY3NDb250ZXh0KiwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBCb3hTaWRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yLCBjb25zdCBDb2xvciYgdGV4dGNv
bG9yLCBFQm9yZGVyU3R5bGUsIGludCBhZGpidzEsIGludCBhZGpidzIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvbG9yLCBFQm9yZGVyU3R5bGUsIGludCBhZGpidzEsIGludCBhZGpi
dzIpOwogICAgIHZvaWQgZHJhd0FyY0ZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0KiwgaW50IHgs
IGludCB5LCBmbG9hdCB0aGlja25lc3MsIEludFNpemUgcmFkaXVzLCBpbnQgYW5nbGVTdGFydCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbmdsZVNwYW4sIEJveFNpZGUsIENvbG9y
LCBjb25zdCBDb2xvciYgdGV4dGNvbG9yLCBFQm9yZGVyU3R5bGUsIGJvb2wgZmlyc3RDb3JuZXIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFuZ2xlU3BhbiwgQm94U2lkZSwgQ29s
b3IsIEVCb3JkZXJTdHlsZSwgYm9vbCBmaXJzdENvcm5lcik7CiAKIHB1YmxpYzoKICAgICAvLyBU
aGUgcHNldWRvIGVsZW1lbnQgc3R5bGUgY2FuIGJlIGNhY2hlZCBvciB1bmNhY2hlZC4gIFVzZSB0
aGUgY2FjaGVkIG1ldGhvZCBpZiB0aGUgcHNldWRvIGVsZW1lbnQgZG9lc24ndCByZXNwZWN0CkBA
IC01OTksNiArNTk5LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgZ2V0VGV4dERlY29yYXRp
b25Db2xvcnMoaW50IGRlY29yYXRpb25zLCBDb2xvciYgdW5kZXJsaW5lLCBDb2xvciYgb3Zlcmxp
bmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciYgbGluZXRocm91Z2gs
IGJvb2wgcXVpcmtzTW9kZSA9IGZhbHNlKTsKKyAgICBDb2xvciB2aXNpdGVkRGVwZW5kZW50Q29s
b3IoY29uc3QgUmVuZGVyU3R5bGUqIHVudmlzaXRlZFN0eWxlLCBpbnQgY29sb3JQcm9wZXJ0eSkg
Y29uc3Q7CiAKICAgICAvLyBSZXR1cm4gdGhlIFJlbmRlckJveCBpbiB0aGUgY29udGFpbmVyIGNo
YWluIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyB0aGlzIG9iamVjdCwgb3IgMAog
ICAgIC8vIGlmIHBhaW50aW5nIGlzIHJvb3QtcmVsYXRpdmUuIFRoaXMgaXMgdGhlIGNvbnRhaW5l
ciB0aGF0IHNob3VsZCBiZSBwYXNzZWQgdG8gdGhlICdmb3JSZXBhaW50JwpAQCAtNzg0LDcgKzc4
NSw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBPdmVycmlkZXMgc2hvdWxkIGNhbGwgdGhlIHN1cGVy
Y2xhc3MgYXQgdGhlIHN0YXJ0CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKIAotICAgIHZvaWQgcGFp
bnRPdXRsaW5lKEdyYXBoaWNzQ29udGV4dCosIGludCB0eCwgaW50IHR5LCBpbnQgdywgaW50IGgs
IGNvbnN0IFJlbmRlclN0eWxlKik7CisgICAgdm9pZCBwYWludE91dGxpbmUoR3JhcGhpY3NDb250
ZXh0KiwgaW50IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCk7CiAgICAgdm9pZCBhZGRQREZVUkxS
ZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgSW50
UmVjdCB2aWV3UmVjdCgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHAJKHJl
dmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIFJlbmRlclBhdGg6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJCiAKICAgICAgICAgaWYgKGRyYXdzT3V0bGluZSkKICAgICAgICAgICAgIHBh
aW50T3V0bGluZShjaGlsZFBhaW50SW5mby5jb250ZXh0LCBzdGF0aWNfY2FzdDxpbnQ+KGJvdW5k
aW5nQm94LngoKSksIHN0YXRpY19jYXN0PGludD4oYm91bmRpbmdCb3gueSgpKSwKLSAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGJvdW5kaW5nQm94LndpZHRoKCkpLCBzdGF0aWNfY2Fz
dDxpbnQ+KGJvdW5kaW5nQm94LmhlaWdodCgpKSwgc3R5bGUoKSk7CisgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8aW50Pihib3VuZGluZ0JveC53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8aW50Pihi
b3VuZGluZ0JveC5oZWlnaHQoKSkpOwogICAgICAgICAKICAgICAgICAgY2hpbGRQYWludEluZm8u
Y29udGV4dC0+cmVzdG9yZSgpOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBSZW5kZXJS
ZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYQogICAgIH0KIAogICAgIGlmICgocGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBo
YXNlU2VsZk91dGxpbmUpICYmIHN0eWxlKCktPm91dGxpbmVXaWR0aCgpKQotICAgICAgICBwYWlu
dE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0KCksIHN0
eWxlKCkpOworICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIHR4LCB0eSwg
d2lkdGgoKSwgaGVpZ2h0KCkpOwogICAgIAogICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFp
bnRQaGFzZUZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rp
b24pCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0Nv
bnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29u
dGFpbmVyLmNwcAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBS
ZW5kZXJTVkdDb250YWluZXI6OnBhaW50KFBhaW50SW5mbwogICAgIC8vIFdlIHNob3VsZCBpbnN0
ZWFkIGRpc2FibGUgb3VyIGNsaXAgZHVyaW5nIFBhaW50UGhhc2VPdXRsaW5lCiAgICAgSW50UmVj
dCBwYWludFJlY3RJblBhcmVudCA9IGVuY2xvc2luZ0ludFJlY3QobG9jYWxUb1BhcmVudFRyYW5z
Zm9ybSgpLm1hcFJlY3QocmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSkpOwogICAgIGlm
ICgocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYmIHN0eWxlKCktPm91dGxpbmVXaWR0aCgpICYm
IHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQotICAgICAgICBwYWludE91dGxpbmUo
cGFpbnRJbmZvLmNvbnRleHQsIHBhaW50UmVjdEluUGFyZW50LngoKSwgcGFpbnRSZWN0SW5QYXJl
bnQueSgpLCBwYWludFJlY3RJblBhcmVudC53aWR0aCgpLCBwYWludFJlY3RJblBhcmVudC5oZWln
aHQoKSwgc3R5bGUoKSk7CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwg
cGFpbnRSZWN0SW5QYXJlbnQueCgpLCBwYWludFJlY3RJblBhcmVudC55KCksIHBhaW50UmVjdElu
UGFyZW50LndpZHRoKCksIHBhaW50UmVjdEluUGFyZW50LmhlaWdodCgpKTsKIH0KIAogLy8gYWRk
Rm9jdXNSaW5nUmVjdHMgaXMgY2FsbGVkIGZyb20gcGFpbnRPdXRsaW5lIGFuZCBuZWVkcyB0byBi
ZSBpbiB0aGUgc2FtZSBjb29yZGluYXRlcyBhcyB0aGUgcGFpbnRPdWxpbmUgY2FsbApJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcg
Kzk1LDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYQogICAgIH0K
IAogICAgIGlmICgocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50
SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYmIHN0eWxlKCktPm91dGxpbmVX
aWR0aCgpKQotICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIDAsIDAsIHdp
ZHRoKCksIGhlaWdodCgpLCBzdHlsZSgpKTsKKyAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5m
by5jb250ZXh0LCAwLCAwLCB3aWR0aCgpLCBoZWlnaHQoKSk7CiAKICAgICBwYWludEluZm8uY29u
dGV4dC0+cmVzdG9yZSgpOwogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9v
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAJ
KHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OnBh
aW50KFBhaW50SW5mbyYgcGFpCiAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgp
OwogCiAgICAgaWYgKChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFp
bnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+b3V0bGlu
ZVdpZHRoKCkgJiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCi0gICAgICAgIHBh
aW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgYm9yZGVyQm94T3JpZ2luSW5Db250YWluZXIu
eCgpLCBib3JkZXJCb3hPcmlnaW5JbkNvbnRhaW5lci55KCksIHdpZHRoKCksIGhlaWdodCgpLCBz
dHlsZSgpKTsKKyAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCBib3JkZXJC
b3hPcmlnaW5JbkNvbnRhaW5lci54KCksIGJvcmRlckJveE9yaWdpbkluQ29udGFpbmVyLnkoKSwg
d2lkdGgoKSwgaGVpZ2h0KCkpOwogfQogCiB2b2lkIFJlbmRlclNWR1Jvb3Q6OmRlc3Ryb3koKQpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiA1Njg1OSkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzOCwyMiArMzM4LDI1IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2Vs
bDo6Y28KICAgICAKICAgICAvLyBGb3IgYm9yZGVyIGxlZnQsIHdlIG5lZWQgdG8gY2hlY2ssIGlu
IG9yZGVyIG9mIHByZWNlZGVuY2U6CiAgICAgLy8gKDEpIE91ciBsZWZ0IGJvcmRlci4KLSAgICBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQoJnN0eWxlKCktPmJvcmRlckxlZnQoKSwgQkNFTEwp
OworICAgIGludCBsZWZ0ID0gQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I7CisgICAgaW50IHJp
Z2h0ID0gQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yOworICAgIENvbGxhcHNlZEJvcmRlclZh
bHVlIHJlc3VsdCgmc3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCB2aXNpdGVkRGVwZW5kZW50Q29sb3Io
c3R5bGUoKSwgbGVmdCksIEJDRUxMKTsKICAgICAKICAgICAvLyAoMikgVGhlIHJpZ2h0IGJvcmRl
ciBvZiB0aGUgY2VsbCB0byB0aGUgbGVmdC4KICAgICBSZW5kZXJUYWJsZUNlbGwqIHByZXZDZWxs
ID0gcnRsID8gdGFibGVFbHQtPmNlbGxBZnRlcih0aGlzKSA6IHRhYmxlRWx0LT5jZWxsQmVmb3Jl
KHRoaXMpOwogICAgIGlmIChwcmV2Q2VsbCkgewotICAgICAgICByZXN1bHQgPSBydGwgPyBjb21w
YXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZwcmV2Q2VsbC0+c3R5bGUo
KS0+Ym9yZGVyUmlnaHQoKSwgQkNFTEwpKSA6IGNvbXBhcmVCb3JkZXJzKENvbGxhcHNlZEJvcmRl
clZhbHVlKCZwcmV2Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgQkNFTEwpLCByZXN1bHQp
OworICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBwcmV2Q2VsbEJvcmRlciA9IENvbGxhcHNl
ZEJvcmRlclZhbHVlKCZwcmV2Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgcHJldkNlbGwt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcihwcmV2Q2VsbC0+c3R5bGUoKSwgcmlnaHQpLCBCQ0VMTCk7
CisgICAgICAgIHJlc3VsdCA9IHJ0bCA/IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgcHJldkNlbGxC
b3JkZXIpIDogY29tcGFyZUJvcmRlcnMocHJldkNlbGxCb3JkZXIsIHJlc3VsdCk7CiAgICAgICAg
IGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
IGVsc2UgaWYgKGxlZnRtb3N0Q29sdW1uKSB7CiAgICAgICAgIC8vICgzKSBPdXIgcm93J3MgbGVm
dCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFw
c2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIEJST1cpKTsK
KyAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSgmcGFyZW50KCktPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgcGFyZW50KCktPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihwYXJlbnQoKS0+c3R5bGUoKSwgbGVmdCksIEJST1cpKTsKICAgICAgICAg
aWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICAKICAgICAgICAgLy8gKDQpIE91ciByb3cgZ3JvdXAncyBsZWZ0IGJvcmRlci4KLSAgICAgICAg
cmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmc2Vj
dGlvbigpLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIEJST1dHUk9VUCkpOworICAgICAgICByZXN1
bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZzZWN0aW9u
KCktPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgc2VjdGlvbigpLT52aXNpdGVkRGVwZW5kZW50Q29s
b3Ioc2VjdGlvbigpLT5zdHlsZSgpLCBsZWZ0KSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICgh
cmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0z
NjMsMTEgKzM2NiwxMSBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNv
CiAgICAgYm9vbCBlbmRDb2xFZGdlOwogICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0YWJs
ZUVsdC0+Y29sRWxlbWVudChjb2woKSArIChydGwgPyBjb2xTcGFuKCkgLSAxIDogMCksICZzdGFy
dENvbEVkZ2UsICZlbmRDb2xFZGdlKTsKICAgICBpZiAoY29sRWx0ICYmICghcnRsID8gc3RhcnRD
b2xFZGdlIDogZW5kQ29sRWRnZSkpIHsKLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMo
cmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJMZWZ0
KCksIEJDT0wpKTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIGNvbEVsdC0+
dmlzaXRlZERlcGVuZGVudENvbG9yKGNvbEVsdC0+c3R5bGUoKSwgbGVmdCksIEJDT0wpKTsKICAg
ICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICBpZiAoY29sRWx0LT5wYXJlbnQoKS0+aXNUYWJsZUNvbCgpICYmICghcnRsID8gIWNv
bEVsdC0+cHJldmlvdXNTaWJsaW5nKCkgOiAhY29sRWx0LT5uZXh0U2libGluZygpKSkgewotICAg
ICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBCQ09MR1JPVVAp
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUoJmNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgY29s
RWx0LT5wYXJlbnQoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGNvbEVsdC0+cGFyZW50KCktPnN0
eWxlKCksIGxlZnQpLCBCQ09MR1JPVVApKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0
cygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTM3Nywx
MyArMzgwLDE0IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KICAg
ICBpZiAoIWxlZnRtb3N0Q29sdW1uKSB7CiAgICAgICAgIGNvbEVsdCA9IHRhYmxlRWx0LT5jb2xF
bGVtZW50KGNvbCgpICsgKHJ0bCA/IGNvbFNwYW4oKSA6IC0xKSwgJnN0YXJ0Q29sRWRnZSwgJmVu
ZENvbEVkZ2UpOwogICAgICAgICBpZiAoY29sRWx0ICYmICghcnRsID8gZW5kQ29sRWRnZSA6IHN0
YXJ0Q29sRWRnZSkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ0bCA/IGNvbXBhcmVCb3JkZXJz
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyUmln
aHQoKSwgQkNPTCkpIDogY29tcGFyZUJvcmRlcnMoQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVs
dC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgQkNPTCksIHJlc3VsdCk7CisgICAgICAgICAgICBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSByaWdodEJvcmRlciA9IENvbGxhcHNlZEJvcmRlclZhbHVlKCZj
b2xFbHQtPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIGNvbEVsdC0+dmlzaXRlZERlcGVuZGVudENv
bG9yKGNvbEVsdC0+c3R5bGUoKSwgcmlnaHQpLCBCQ09MKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IHJ0bCA/IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgcmlnaHRCb3JkZXIpIDogY29tcGFyZUJvcmRl
cnMocmlnaHRCb3JkZXIsIHJlc3VsdCk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKICAgICAgICAgLy8gKDcpIFRoZSB0YWJsZSdzIGxlZnQgYm9yZGVyLgotICAgICAgICByZXN1
bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZ0YWJsZUVs
dC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBCVEFCTEUpKTsKKyAgICAgICAgcmVzdWx0ID0gY29t
cGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmdGFibGVFbHQtPnN0eWxl
KCktPmJvcmRlckxlZnQoKSwgdGFibGVFbHQtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0YWJsZUVs
dC0+c3R5bGUoKSwgbGVmdCksIEJUQUJMRSkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMo
KSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNDA0LDI0ICs0MDgsMjcg
QEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjbwogICAgIAogICAgIC8v
IEZvciBib3JkZXIgcmlnaHQsIHdlIG5lZWQgdG8gY2hlY2ssIGluIG9yZGVyIG9mIHByZWNlZGVu
Y2U6CiAgICAgLy8gKDEpIE91ciByaWdodCBib3JkZXIuCi0gICAgQ29sbGFwc2VkQm9yZGVyVmFs
dWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnN0eWxlKCktPmJvcmRlclJpZ2h0KCks
IEJDRUxMKTsKKyAgICBpbnQgbGVmdCA9IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOworICAg
IGludCByaWdodCA9IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjsKKyAgICBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSByZXN1bHQgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmc3R5bGUoKS0+Ym9yZGVy
UmlnaHQoKSwgdmlzaXRlZERlcGVuZGVudENvbG9yKHN0eWxlKCksIHJpZ2h0KSwgQkNFTEwpOwog
ICAgIAogICAgIC8vICgyKSBUaGUgbGVmdCBib3JkZXIgb2YgdGhlIGNlbGwgdG8gdGhlIHJpZ2h0
LgogICAgIGlmICghcmlnaHRtb3N0Q29sdW1uKSB7CiAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCog
bmV4dENlbGwgPSBydGwgPyB0YWJsZUVsdC0+Y2VsbEJlZm9yZSh0aGlzKSA6IHRhYmxlRWx0LT5j
ZWxsQWZ0ZXIodGhpcyk7CiAgICAgICAgIGlmIChuZXh0Q2VsbCAmJiBuZXh0Q2VsbC0+c3R5bGUo
KSkgewotICAgICAgICAgICAgcmVzdWx0ID0gcnRsID8gY29tcGFyZUJvcmRlcnMoQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUoJm5leHRDZWxsLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIEJDRUxMKSwgcmVz
dWx0KSA6IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJm5leHRD
ZWxsLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIEJDRUxMKSk7CisgICAgICAgICAgICBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSBsZWZ0Qm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoJm5leHRDZWxs
LT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIG5leHRDZWxsLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
bmV4dENlbGwtPnN0eWxlKCksIGxlZnQpLCBCQ0VMTCk7CisgICAgICAgICAgICByZXN1bHQgPSBy
dGwgPyBjb21wYXJlQm9yZGVycyhsZWZ0Qm9yZGVyLCByZXN1bHQpIDogY29tcGFyZUJvcmRlcnMo
cmVzdWx0LCBsZWZ0Qm9yZGVyKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQog
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyAoMykgT3VyIHJvdydzIHJpZ2h0IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0g
Y29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcGFyZW50KCktPnN0
eWxlKCktPmJvcmRlclJpZ2h0KCksIEJST1cpKTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJv
cmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxlKCktPmJv
cmRlclJpZ2h0KCksIHBhcmVudCgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IocGFyZW50KCktPnN0
eWxlKCksIHJpZ2h0KSwgQlJPVykpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIAogICAgICAgICAvLyAoNCkgT3VyIHJv
dyBncm91cCdzIHJpZ2h0IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMo
cmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmc2VjdGlvbigpLT5zdHlsZSgpLT5ib3JkZXJS
aWdodCgpLCBCUk9XR1JPVVApKTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVz
dWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmc2VjdGlvbigpLT5zdHlsZSgpLT5ib3JkZXJSaWdo
dCgpLCBzZWN0aW9uKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzZWN0aW9uKCktPnN0eWxlKCks
IHJpZ2h0KSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC00MzEsMTEgKzQzOCwxMSBAQCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvCiAgICAgYm9vbCBlbmRDb2xFZGdl
OwogICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0YWJsZUVsdC0+Y29sRWxlbWVudChjb2wo
KSArIChydGwgPyAwIDogY29sU3BhbigpIC0gMSksICZzdGFydENvbEVkZ2UsICZlbmRDb2xFZGdl
KTsKICAgICBpZiAoY29sRWx0ICYmICghcnRsID8gZW5kQ29sRWRnZSA6IHN0YXJ0Q29sRWRnZSkp
IHsKLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBCQ09MKSk7CisgICAgICAg
IHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNv
bEVsdC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgY29sRWx0LT52aXNpdGVkRGVwZW5kZW50Q29s
b3IoY29sRWx0LT5zdHlsZSgpLCByaWdodCksIEJDT0wpKTsKICAgICAgICAgaWYgKCFyZXN1bHQu
ZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICBpZiAoY29sRWx0
LT5wYXJlbnQoKS0+aXNUYWJsZUNvbCgpICYmICghcnRsID8gIWNvbEVsdC0+bmV4dFNpYmxpbmco
KSA6ICFjb2xFbHQtPnByZXZpb3VzU2libGluZygpKSkgewotICAgICAgICAgICAgcmVzdWx0ID0g
Y29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJl
bnQoKS0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xF
bHQtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBjb2xFbHQtPnBhcmVudCgpLT52
aXNpdGVkRGVwZW5kZW50Q29sb3IoY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKSwgcmlnaHQpLCBC
Q09MR1JPVVApKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTQ0NSwxMyArNDUyLDE0IEBAIENv
bGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KICAgICBpZiAoIXJpZ2h0bW9z
dENvbHVtbikgewogICAgICAgICBjb2xFbHQgPSB0YWJsZUVsdC0+Y29sRWxlbWVudChjb2woKSAr
IChydGwgPyAtMSA6IGNvbFNwYW4oKSksICZzdGFydENvbEVkZ2UsICZlbmRDb2xFZGdlKTsKICAg
ICAgICAgaWYgKGNvbEVsdCAmJiAoIXJ0bCA/IHN0YXJ0Q29sRWRnZSA6IGVuZENvbEVkZ2UpKSB7
Ci0gICAgICAgICAgICByZXN1bHQgPSBydGwgPyBjb21wYXJlQm9yZGVycyhDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIEJDT0wpLCByZXN1bHQpIDog
Y29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHls
ZSgpLT5ib3JkZXJMZWZ0KCksIEJDT0wpKTsKKyAgICAgICAgICAgIENvbGxhcHNlZEJvcmRlclZh
bHVlIGxlZnRCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5i
b3JkZXJMZWZ0KCksIGNvbEVsdC0+dmlzaXRlZERlcGVuZGVudENvbG9yKGNvbEVsdC0+c3R5bGUo
KSwgbGVmdCksIEJDT0wpOworICAgICAgICAgICAgcmVzdWx0ID0gcnRsID8gY29tcGFyZUJvcmRl
cnMobGVmdEJvcmRlciwgcmVzdWx0KSA6IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgbGVmdEJvcmRl
cik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gKDcpIFRo
ZSB0YWJsZSdzIHJpZ2h0IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMo
cmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmdGFibGVFbHQtPnN0eWxlKCktPmJvcmRlclJp
Z2h0KCksIEJUQUJMRSkpOworICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQs
IENvbGxhcHNlZEJvcmRlclZhbHVlKCZ0YWJsZUVsdC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwg
dGFibGVFbHQtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0YWJsZUVsdC0+c3R5bGUoKSwgcmlnaHQp
LCBCVEFCTEUpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTQ2MywxOCArNDcxLDIwIEBAIENvbGxhcHNlZEJvcmRl
clZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KIHsKICAgICAvLyBGb3IgYm9yZGVyIHRvcCwgd2Ug
bmVlZCB0byBjaGVjaywgaW4gb3JkZXIgb2YgcHJlY2VkZW5jZToKICAgICAvLyAoMSkgT3VyIHRv
cCBib3JkZXIuCi0gICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9y
ZGVyVmFsdWUoJnN0eWxlKCktPmJvcmRlclRvcCgpLCBCQ0VMTCk7CisgICAgaW50IHRvcCA9IENT
U1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I7CisgICAgaW50IGJvdHRvbSA9IENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tQ29sb3I7CisgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFw
c2VkQm9yZGVyVmFsdWUoJnN0eWxlKCktPmJvcmRlclRvcCgpLCB2aXNpdGVkRGVwZW5kZW50Q29s
b3Ioc3R5bGUoKSwgdG9wKSwgQkNFTEwpOwogICAgIAogICAgIFJlbmRlclRhYmxlQ2VsbCogcHJl
dkNlbGwgPSB0YWJsZSgpLT5jZWxsQWJvdmUodGhpcyk7CiAgICAgaWYgKHByZXZDZWxsKSB7CiAg
ICAgICAgIC8vICgyKSBBIHByZXZpb3VzIGNlbGwncyBib3R0b20gYm9yZGVyLgotICAgICAgICBy
ZXN1bHQgPSBjb21wYXJlQm9yZGVycyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcHJldkNlbGwtPnN0
eWxlKCktPmJvcmRlckJvdHRvbSgpLCBCQ0VMTCksIHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCA9
IGNvbXBhcmVCb3JkZXJzKENvbGxhcHNlZEJvcmRlclZhbHVlKCZwcmV2Q2VsbC0+c3R5bGUoKS0+
Ym9yZGVyQm90dG9tKCksIHByZXZDZWxsLT52aXNpdGVkRGVwZW5kZW50Q29sb3IocHJldkNlbGwt
PnN0eWxlKCksIGJvdHRvbSksIEJDRUxMKSwgcmVzdWx0KTsKICAgICAgICAgaWYgKCFyZXN1bHQu
ZXhpc3RzKCkpIAogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAg
Ly8gKDMpIE91ciByb3cncyB0b3AgYm9yZGVyLgotICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJz
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJU
b3AoKSwgQlJPVykpOworICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFw
c2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgcGFyZW50KCkt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcihwYXJlbnQoKS0+c3R5bGUoKSwgdG9wKSwgQlJPVykpOwog
ICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIApA
QCAtNDg3LDcgKzQ5Nyw3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6
Y28KICAgICAgICAgICAgIHByZXZSb3cgPSBwcmV2Q2VsbC0+c2VjdGlvbigpLT5sYXN0Q2hpbGQo
KTsKICAgICAKICAgICAgICAgaWYgKHByZXZSb3cpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNv
bXBhcmVCb3JkZXJzKENvbGxhcHNlZEJvcmRlclZhbHVlKCZwcmV2Um93LT5zdHlsZSgpLT5ib3Jk
ZXJCb3R0b20oKSwgQlJPVyksIHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQgPSBjb21wYXJl
Qm9yZGVycyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcHJldlJvdy0+c3R5bGUoKS0+Ym9yZGVyQm90
dG9tKCksIHByZXZSb3ctPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihwcmV2Um93LT5zdHlsZSgpLCBi
b3R0b20pLCBCUk9XKSwgcmVzdWx0KTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygp
KQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTQ5NywxNCAr
NTA3LDE0IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KICAgICBS
ZW5kZXJUYWJsZVNlY3Rpb24qIGN1cnJTZWN0aW9uID0gc2VjdGlvbigpOwogICAgIGlmICghcm93
KCkpIHsKICAgICAgICAgLy8gKDUpIE91ciByb3cgZ3JvdXAncyB0b3AgYm9yZGVyLgotICAgICAg
ICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZj
dXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIEJST1dHUk9VUCkpOworICAgICAgICBy
ZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjdXJy
U2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIGN1cnJTZWN0aW9uLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoY3VyclNlY3Rpb24tPnN0eWxlKCksIHRvcCksIEJST1dHUk9VUCkpOwogICAgICAg
ICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIAogICAgICAgICAvLyAoNikgUHJldmlvdXMgcm93IGdyb3VwJ3MgYm90dG9tIGJvcmRlci4K
ICAgICAgICAgY3VyclNlY3Rpb24gPSB0YWJsZSgpLT5zZWN0aW9uQWJvdmUoY3VyclNlY3Rpb24p
OwogICAgICAgICBpZiAoY3VyclNlY3Rpb24pIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBh
cmVCb3JkZXJzKENvbGxhcHNlZEJvcmRlclZhbHVlKCZjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9y
ZGVyQm90dG9tKCksIEJST1dHUk9VUCksIHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQgPSBj
b21wYXJlQm9yZGVycyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCkt
PmJvcmRlckJvdHRvbSgpLCBjdXJyU2VjdGlvbi0+dmlzaXRlZERlcGVuZGVudENvbG9yKGN1cnJT
ZWN0aW9uLT5zdHlsZSgpLCBib3R0b20pLCBCUk9XR1JPVVApLCByZXN1bHQpOwogICAgICAgICAg
ICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgfQpAQCAtNTE0LDE4ICs1MjQsMTkgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVu
ZGVyVGFibGVDZWxsOjpjbwogICAgICAgICAvLyAoOCkgT3VyIGNvbHVtbiBhbmQgY29sdW1uIGdy
b3VwJ3MgdG9wIGJvcmRlcnMuCiAgICAgICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0YWJs
ZSgpLT5jb2xFbGVtZW50KGNvbCgpKTsKICAgICAgICAgaWYgKGNvbEVsdCkgewotICAgICAgICAg
ICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgm
Y29sRWx0LT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgQkNPTCkpOworICAgICAgICAgICAgcmVzdWx0
ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5z
dHlsZSgpLT5ib3JkZXJUb3AoKSwgY29sRWx0LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoY29sRWx0
LT5zdHlsZSgpLCB0b3ApLCBCQ09MKSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgaWYgKGNvbEVs
dC0+cGFyZW50KCktPmlzVGFibGVDb2woKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNv
bXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+cGFyZW50
KCktPnN0eWxlKCktPmJvcmRlclRvcCgpLCBCQ09MR1JPVVApKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xF
bHQtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgY29sRWx0LT5wYXJlbnQoKS0+dmlz
aXRlZERlcGVuZGVudENvbG9yKGNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCksIHRvcCksIEJDT0xH
Uk9VUCkpOwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICAvLyAoOSkgVGhlIHRhYmxlJ3MgdG9wIGJvcmRlci4KLSAgICAgICAgcmVz
dWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmdGFibGUo
KS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIEJUQUJMRSkpOworICAgICAgICBSZW5kZXJUYWJsZSog
ZW5jbG9zaW5nVGFibGUgPSB0YWJsZSgpOworICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVy
cyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZlbmNsb3NpbmdUYWJsZS0+c3R5bGUoKS0+
Ym9yZGVyVG9wKCksIGVuY2xvc2luZ1RhYmxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5jbG9z
aW5nVGFibGUtPnN0eWxlKCksIHRvcCksIEJUQUJMRSkpOwogICAgICAgICBpZiAoIXJlc3VsdC5l
eGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNTM3LDI0ICs1
NDgsMjYgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjbwogewogICAg
IC8vIEZvciBib3JkZXIgdG9wLCB3ZSBuZWVkIHRvIGNoZWNrLCBpbiBvcmRlciBvZiBwcmVjZWRl
bmNlOgogICAgIC8vICgxKSBPdXIgYm90dG9tIGJvcmRlci4KLSAgICBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSByZXN1bHQgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmc3R5bGUoKS0+Ym9yZGVyQm90dG9t
KCksIEJDRUxMKTsKKyAgICBpbnQgdG9wID0gQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcjsKKyAg
ICBpbnQgYm90dG9tID0gQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcjsKKyAgICBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSByZXN1bHQgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmc3R5bGUoKS0+Ym9y
ZGVyQm90dG9tKCksIHZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdHlsZSgpLCBib3R0b20pLCBCQ0VM
TCk7CiAgICAgCiAgICAgUmVuZGVyVGFibGVDZWxsKiBuZXh0Q2VsbCA9IHRhYmxlKCktPmNlbGxC
ZWxvdyh0aGlzKTsKICAgICBpZiAobmV4dENlbGwpIHsKICAgICAgICAgLy8gKDIpIEEgZm9sbG93
aW5nIGNlbGwncyB0b3AgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhy
ZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZuZXh0Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyVG9w
KCksIEJDRUxMKSk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29s
bGFwc2VkQm9yZGVyVmFsdWUoJm5leHRDZWxsLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgbmV4dENl
bGwtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihuZXh0Q2VsbC0+c3R5bGUoKSwgdG9wKSwgQkNFTEwp
KTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KICAgICAKICAgICAvLyAoMykgT3VyIHJvdydzIGJvdHRvbSBib3JkZXIuIChG
SVhNRTogRGVhbCB3aXRoIHJvd3NwYW4hKQotICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJl
c3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJCb3R0
b20oKSwgQlJPVykpOworICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFw
c2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgcGFyZW50
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihwYXJlbnQoKS0+c3R5bGUoKSwgYm90dG9tKSwgQlJP
VykpOwogICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIAogICAgIC8vICg0KSBUaGUgbmV4dCByb3cncyB0b3AgYm9yZGVyLgogICAgIGlmIChuZXh0
Q2VsbCkgewotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNl
ZEJvcmRlclZhbHVlKCZuZXh0Q2VsbC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlclRvcCgpLCBC
Uk9XKSk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUoJm5leHRDZWxsLT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIG5l
eHRDZWxsLT5wYXJlbnQoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKG5leHRDZWxsLT5wYXJlbnQo
KS0+c3R5bGUoKSwgdG9wKSwgQlJPVykpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNTYzLDE0ICs1NzYsMTQgQEAg
Q29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjbwogICAgIFJlbmRlclRhYmxl
U2VjdGlvbiogY3VyclNlY3Rpb24gPSBzZWN0aW9uKCk7CiAgICAgaWYgKHJvdygpICsgcm93U3Bh
bigpID49IGN1cnJTZWN0aW9uLT5udW1Sb3dzKCkpIHsKICAgICAgICAgLy8gKDUpIE91ciByb3cg
Z3JvdXAncyBib3R0b20gYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhy
ZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVy
Qm90dG9tKCksIEJST1dHUk9VUCkpOworICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhy
ZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVy
Qm90dG9tKCksIGN1cnJTZWN0aW9uLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoY3VyclNlY3Rpb24t
PnN0eWxlKCksIGJvdHRvbSksIEJST1dHUk9VUCkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlz
dHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIAogICAgICAgICAvLyAo
NikgRm9sbG93aW5nIHJvdyBncm91cCdzIHRvcCBib3JkZXIuCiAgICAgICAgIGN1cnJTZWN0aW9u
ID0gdGFibGUoKS0+c2VjdGlvbkJlbG93KGN1cnJTZWN0aW9uKTsKICAgICAgICAgaWYgKGN1cnJT
ZWN0aW9uKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENv
bGxhcHNlZEJvcmRlclZhbHVlKCZjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIEJS
T1dHUk9VUCkpOworICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlclRvcCgpLCBj
dXJyU2VjdGlvbi0+dmlzaXRlZERlcGVuZGVudENvbG9yKGN1cnJTZWN0aW9uLT5zdHlsZSgpLCB0
b3ApLCBCUk9XR1JPVVApKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTU4MCwxNyArNTkzLDE4
IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KICAgICAgICAgLy8g
KDgpIE91ciBjb2x1bW4gYW5kIGNvbHVtbiBncm91cCdzIGJvdHRvbSBib3JkZXJzLgogICAgICAg
ICBSZW5kZXJUYWJsZUNvbCogY29sRWx0ID0gdGFibGUoKS0+Y29sRWxlbWVudChjb2woKSk7CiAg
ICAgICAgIGlmIChjb2xFbHQpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJz
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyQm90
dG9tKCksIEJDT0wpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3Vs
dCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCks
IGNvbEVsdC0+dmlzaXRlZERlcGVuZGVudENvbG9yKGNvbEVsdC0+c3R5bGUoKSwgYm90dG9tKSwg
QkNPTCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpIHJldHVybiByZXN1bHQ7
CiAgICAgICAgICAgICBpZiAoY29sRWx0LT5wYXJlbnQoKS0+aXNUYWJsZUNvbCgpKSB7Ci0gICAg
ICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIEJDT0xH
Uk9VUCkpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwg
Q29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlckJv
dHRvbSgpLCBjb2xFbHQtPnBhcmVudCgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoY29sRWx0LT5w
YXJlbnQoKS0+c3R5bGUoKSwgYm90dG9tKSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAgICAgICAg
aWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vICg5KSBUaGUg
dGFibGUncyBib3R0b20gYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhy
ZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZ0YWJsZSgpLT5zdHlsZSgpLT5ib3JkZXJCb3R0
b20oKSwgQlRBQkxFKSk7CisgICAgICAgIFJlbmRlclRhYmxlKiBlbmNsb3NpbmdUYWJsZSA9IHRh
YmxlKCk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUoJmVuY2xvc2luZ1RhYmxlLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgZW5j
bG9zaW5nVGFibGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmNsb3NpbmdUYWJsZS0+c3R5bGUo
KSwgYm90dG9tKSwgQlRBQkxFKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC04MDgsNyArODIyLDcgQEAgdm9pZCBS
ZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2VkQm9yZAogICAgIGZvciAoQ29sbGFwc2VkQm9y
ZGVyKiBib3JkZXIgPSBib3JkZXJzLm5leHRCb3JkZXIoKTsgYm9yZGVyOyBib3JkZXIgPSBib3Jk
ZXJzLm5leHRCb3JkZXIoKSkgewogICAgICAgICBpZiAoYm9yZGVyLT5ib3JkZXJWYWx1ZSA9PSAq
dGFibGUoKS0+Y3VycmVudEJvcmRlclN0eWxlKCkpCiAgICAgICAgICAgICBkcmF3TGluZUZvckJv
eFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXItPngxLCBib3JkZXItPnkxLCBib3JkZXItPngy
LCBib3JkZXItPnkyLCBib3JkZXItPnNpZGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvcmRlci0+Ym9yZGVyVmFsdWUuY29sb3IoKSwgc3R5bGUoKS0+Y29sb3IoKSwgYm9yZGVy
LT5zdHlsZSwgMCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLT5i
b3JkZXJWYWx1ZS5jb2xvcigpLCBib3JkZXItPnN0eWxlLCAwLCAwKTsKICAgICB9CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbGxhcHNlZEJvcmRlclZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFsdWUuaAko
cmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db2xsYXBzZWRCb3Jk
ZXJWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw5IEBAIHN0cnVjdCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSB7CiAgICAgewogICAgIH0KIAotICAgIENvbGxhcHNlZEJvcmRlclZhbHVl
KGNvbnN0IEJvcmRlclZhbHVlKiBiLCBFQm9yZGVyUHJlY2VkZW5jZSBwKQorICAgIENvbGxhcHNl
ZEJvcmRlclZhbHVlKGNvbnN0IEJvcmRlclZhbHVlKiBiLCBDb2xvciBjLCBFQm9yZGVyUHJlY2Vk
ZW5jZSBwKQogICAgICAgICA6IGJvcmRlcihiKQorICAgICAgICAsIGJvcmRlckNvbG9yKGMpCiAg
ICAgICAgICwgcHJlY2VkZW5jZShwKQogICAgIHsKICAgICB9CkBAIC00NSw3ICs0Niw3IEBAIHN0
cnVjdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSB7CiAgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1
cm4gYm9yZGVyICYmIGJvcmRlci0+bm9uWmVybygpID8gYm9yZGVyLT53aWR0aCA6IDA7IH0KICAg
ICBFQm9yZGVyU3R5bGUgc3R5bGUoKSBjb25zdCB7IHJldHVybiBib3JkZXIgPyBib3JkZXItPnN0
eWxlKCkgOiBCSElEREVOOyB9CiAgICAgYm9vbCBleGlzdHMoKSBjb25zdCB7IHJldHVybiBib3Jk
ZXI7IH0KLSAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIGJvcmRlciA/IGJvcmRlci0+
Y29sb3IgOiBDb2xvcigpOyB9CisgICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBib3Jk
ZXJDb2xvcjsgfQogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRl
ciA/IGJvcmRlci0+aXNUcmFuc3BhcmVudCgpIDogdHJ1ZTsgfQogICAgIAogICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSYgbykgY29uc3QKQEAgLTU0LDEwICs1
NSwxMSBAQCBzdHJ1Y3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUgewogICAgICAgICAgICAgcmV0dXJu
ICFvLmJvcmRlcjsKICAgICAgICAgaWYgKCFvLmJvcmRlcikKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgcmV0dXJuICpib3JkZXIgPT0gKm8uYm9yZGVyICYmIHByZWNlZGVuY2Ug
PT0gby5wcmVjZWRlbmNlOworICAgICAgICByZXR1cm4gKmJvcmRlciA9PSAqby5ib3JkZXIgJiYg
Ym9yZGVyQ29sb3IgPT0gby5ib3JkZXJDb2xvciAmJiBwcmVjZWRlbmNlID09IG8ucHJlY2VkZW5j
ZTsKICAgICB9CiAgICAgCiAgICAgY29uc3QgQm9yZGVyVmFsdWUqIGJvcmRlcjsKKyAgICBDb2xv
ciBib3JkZXJDb2xvcjsKICAgICBFQm9yZGVyUHJlY2VkZW5jZSBwcmVjZWRlbmNlOyAgICAKIH07
CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9u
IDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDIsNiArNTAyLDcgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlclN0eWxl
OjpkaWZmKGNvbnN0IAogICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX3Zpc2liaWxpdHkgIT0gb3Ro
ZXItPmluaGVyaXRlZF9mbGFncy5fdmlzaWJpbGl0eSB8fAogICAgICAgICBpbmhlcml0ZWRfZmxh
Z3MuX3RleHRfZGVjb3JhdGlvbnMgIT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNv
cmF0aW9ucyB8fAogICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3Rv
X3doaXRlICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3do
aXRlIHx8CisgICAgICAgIGluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluayAhPSBvdGhlci0+aW5o
ZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rIHx8CiAgICAgICAgIHN1cnJvdW5kLT5ib3JkZXIgIT0g
b3RoZXItPnN1cnJvdW5kLT5ib3JkZXIgfHwKICAgICAgICAgKmJhY2tncm91bmQuZ2V0KCkgIT0g
Km90aGVyLT5iYWNrZ3JvdW5kLmdldCgpIHx8CiAgICAgICAgIHZpc3VhbC0+dGV4dERlY29yYXRp
b24gIT0gb3RoZXItPnZpc3VhbC0+dGV4dERlY29yYXRpb24gfHwKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDgg
QEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgICAgICAgIChfdmlzdWFsbHlPcmRlcmVkID09IG90
aGVyLl92aXN1YWxseU9yZGVyZWQpICYmCiAgICAgICAgICAgICAgICAgICAgKF9odG1sSGFja3Mg
PT0gb3RoZXIuX2h0bWxIYWNrcykgJiYKICAgICAgICAgICAgICAgICAgICAoX2ZvcmNlX2JhY2tn
cm91bmRzX3RvX3doaXRlID09IG90aGVyLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSkgJiYK
LSAgICAgICAgICAgICAgICAgICAoX3BvaW50ZXJFdmVudHMgPT0gb3RoZXIuX3BvaW50ZXJFdmVu
dHMpOworICAgICAgICAgICAgICAgICAgIChfcG9pbnRlckV2ZW50cyA9PSBvdGhlci5fcG9pbnRl
ckV2ZW50cykgJiYKKyAgICAgICAgICAgICAgICAgICAoX2luc2lkZUxpbmsgPT0gb3RoZXIuX2lu
c2lkZUxpbmspOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElu
aGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0K
QEAgLTIwMSw2ICsyMDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGJvb2wgX2h0bWxIYWNrcyA6
IDE7CiAgICAgICAgIGJvb2wgX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlIDogMTsKICAgICAg
ICAgdW5zaWduZWQgX3BvaW50ZXJFdmVudHMgOiA0OyAvLyBFUG9pbnRlckV2ZW50cworICAgICAg
ICBib29sIF9pbnNpZGVMaW5rIDogMTsgLy8gV2hldGhlciBvciBub3Qgd2UgYXJlIGNvbnRhaW5l
ZCBpbnNpZGUgYSBsaW5rLgogICAgICAgICAvLyA0MSBiaXRzCiAgICAgfSBpbmhlcml0ZWRfZmxh
Z3M7CiAKQEAgLTI0NCw3ICsyNDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHVuc2lnbmVkIF9w
YWdlX2JyZWFrX2FmdGVyIDogMjsgLy8gRVBhZ2VCcmVhawogICAgICAgICB1bnNpZ25lZCBfcGFn
ZV9icmVha19pbnNpZGUgOiAyOyAvLyBFUGFnZUJyZWFrCiAKLSAgICAgICAgdW5zaWduZWQgX3N0
eWxlVHlwZSA6IDU7IC8vIFBzZXVkb0lkCisgICAgICAgIHVuc2lnbmVkIF9zdHlsZVR5cGUgOiA2
OyAvLyBQc2V1ZG9JZAogICAgICAgICBib29sIF9hZmZlY3RlZEJ5SG92ZXIgOiAxOwogICAgICAg
ICBib29sIF9hZmZlY3RlZEJ5QWN0aXZlIDogMTsKICAgICAgICAgYm9vbCBfYWZmZWN0ZWRCeURy
YWcgOiAxOwpAQCAtMjc1LDYgKzI3Nyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgaW5oZXJpdGVk
X2ZsYWdzLl9ib3hfZGlyZWN0aW9uID0gaW5pdGlhbEJveERpcmVjdGlvbigpOwogICAgICAgICBp
bmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlID0gZmFsc2U7CiAgICAg
ICAgIGluaGVyaXRlZF9mbGFncy5fcG9pbnRlckV2ZW50cyA9IGluaXRpYWxQb2ludGVyRXZlbnRz
KCk7CisgICAgICAgIGluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluayA9IGluaXRpYWxJbnNpZGVM
aW5rKCk7CiAKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9lZmZlY3RpdmVEaXNwbGF5ID0g
bm9uaW5oZXJpdGVkX2ZsYWdzLl9vcmlnaW5hbERpc3BsYXkgPSBpbml0aWFsRGlzcGxheSgpOwog
ICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3MuX292ZXJmbG93WCA9IGluaXRpYWxPdmVyZmxvd1go
KTsKQEAgLTU4Nyw2ICs1OTAsOCBAQCBwdWJsaWM6CiAKICAgICBDdXJzb3JMaXN0KiBjdXJzb3Jz
KCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5jdXJzb3JEYXRhLmdldCgpOyB9CiAKKyAgICBi
b29sIGluc2lkZUxpbmsoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxp
bms7IH0KKwogICAgIHNob3J0IHdpZG93cygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+d2lk
b3dzOyB9CiAgICAgc2hvcnQgb3JwaGFucygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+b3Jw
aGFuczsgfQogICAgIEVQYWdlQnJlYWsgcGFnZUJyZWFrSW5zaWRlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RVBhZ2VCcmVhaz4obm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2lu
c2lkZSk7IH0KQEAgLTkxMiw2ICs5MTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJzb3JM
aXN0KFBhc3NSZWZQdHI8Q3Vyc29yTGlzdD4pOwogICAgIHZvaWQgY2xlYXJDdXJzb3JMaXN0KCk7
CiAKKyAgICB2b2lkIHNldEluc2lkZUxpbmsoYm9vbCBiKSB7IGluaGVyaXRlZF9mbGFncy5faW5z
aWRlTGluayA9IGI7IH0KKyAgICAKICAgICBib29sIGZvcmNlQmFja2dyb3VuZHNUb1doaXRlKCkg
Y29uc3QgeyByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0
ZTsgfQogICAgIHZvaWQgc2V0Rm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoYm9vbCBiPXRydWUpIHsg
aW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSA9IGI7IH0KIApAQCAt
MTE4NCw2ICsxMTkxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFRyYW5z
Zm9ybU9yaWdpblgoKSB7IHJldHVybiBMZW5ndGgoNTAuMCwgUGVyY2VudCk7IH0KICAgICBzdGF0
aWMgTGVuZ3RoIGluaXRpYWxUcmFuc2Zvcm1PcmlnaW5ZKCkgeyByZXR1cm4gTGVuZ3RoKDUwLjAs
IFBlcmNlbnQpOyB9CiAgICAgc3RhdGljIEVQb2ludGVyRXZlbnRzIGluaXRpYWxQb2ludGVyRXZl
bnRzKCkgeyByZXR1cm4gUEVfQVVUTzsgfQorICAgIHN0YXRpYyBib29sIGluaXRpYWxJbnNpZGVM
aW5rKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbFRyYW5zZm9y
bU9yaWdpblooKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIEVUcmFuc2Zvcm1TdHlsZTNEIGlu
aXRpYWxUcmFuc2Zvcm1TdHlsZTNEKCkgeyByZXR1cm4gVHJhbnNmb3JtU3R5bGUzREZsYXQ7IH0K
ICAgICBzdGF0aWMgRUJhY2tmYWNlVmlzaWJpbGl0eSBpbml0aWFsQmFja2ZhY2VWaXNpYmlsaXR5
KCkgeyByZXR1cm4gQmFja2ZhY2VWaXNpYmlsaXR5VmlzaWJsZTsgfQpJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCShyZXZpc2lvbiA1Njg1
OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgZW51bSBQc2V1ZG9JZCB7CiAgICAgTUVESUFf
Q09OVFJPTFNfU0VFS19CQUNLX0JVVFRPTiwgTUVESUFfQ09OVFJPTFNfU0VFS19GT1JXQVJEX0JV
VFRPTiwgTUVESUFfQ09OVFJPTFNfRlVMTFNDUkVFTl9CVVRUT04sIE1FRElBX0NPTlRST0xTX1JF
V0lORF9CVVRUT04sIAogICAgIE1FRElBX0NPTlRST0xTX1JFVFVSTl9UT19SRUFMVElNRV9CVVRU
T04sIE1FRElBX0NPTlRST0xTX1RPR0dMRV9DTE9TRURfQ0FQVElPTlNfQlVUVE9OLAogICAgIE1F
RElBX0NPTlRST0xTX1NUQVRVU19ESVNQTEFZLCBTQ1JPTExCQVJfVEhVTUIsIFNDUk9MTEJBUl9C
VVRUT04sIFNDUk9MTEJBUl9UUkFDSywgU0NST0xMQkFSX1RSQUNLX1BJRUNFLCBTQ1JPTExCQVJf
Q09STkVSLCBSRVNJWkVSLAotICAgIElOUFVUX0xJU1RfQlVUVE9OLCBJTk5FUl9TUElOX0JVVFRP
TiwgT1VURVJfU1BJTl9CVVRUT04sCisgICAgSU5QVVRfTElTVF9CVVRUT04sIElOTkVSX1NQSU5f
QlVUVE9OLCBPVVRFUl9TUElOX0JVVFRPTiwgVklTSVRFRF9MSU5LLAogCiAgICAgQUZURVJfTEFT
VF9JTlRFUk5BTF9QU0VVRE9JRCwKICAgICBGSVJTVF9QVUJMSUNfUFNFVURPSUQgPSBGSVJTVF9M
SU5FLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52572</attachid>
            <date>2010-04-05 14:22:20 -0700</date>
            <delta_ts>2010-04-05 15:38:39 -0700</delta_ts>
            <desc>Add SVG fill/stroke support</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>94802</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzYsNiArODc2
LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpTZWxlYwogICAgICwgbV9j
b2xsZWN0UnVsZXNPbmx5KGZhbHNlKQogICAgICwgbV9wc2V1ZG9TdHlsZShOT1BTRVVETykKICAg
ICAsIG1fZG9jdW1lbnRJc0hUTUwoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpCisgICAgLCBt
X21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzKGZhbHNlKQogewogfQogCkBAIC04ODUsNyArODg2LDcg
QEAgUHNldWRvU3RhdGUgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaAogICAgIGlmICghYXR0
ciB8fCBhdHRyLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFBzZXVkb05vbmU7CiAKLSAgICBp
ZiAoIWNoZWNrVmlzaXRlZCkKKyAgICBpZiAoIWNoZWNrVmlzaXRlZCB8fCAhbV9tYXRjaFZpc2l0
ZWRQc2V1ZG9DbGFzcykKICAgICAgICAgcmV0dXJuIFBzZXVkb0FueUxpbms7CiAKICNpZiBQTEFU
Rk9STShRVCkKQEAgLTEwMzAsMjIgKzEwMzEsOCBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNh
blNoYXJlU3R5bGVXaXRoCiAgICAgICAgICAgICAgICAgYm9vbCBtYXBwZWRBdHRyc01hdGNoID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAocy0+aGFzTWFwcGVkQXR0cmlidXRlcygpKQogICAg
ICAgICAgICAgICAgICAgICBtYXBwZWRBdHRyc01hdGNoID0gcy0+bWFwcGVkQXR0cmlidXRlcygp
LT5tYXBzRXF1aXZhbGVudChtX3N0eWxlZEVsZW1lbnQtPm1hcHBlZEF0dHJpYnV0ZXMoKSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1hcHBlZEF0dHJzTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICAg
ICAgYm9vbCBsaW5rc01hdGNoID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAocy0+
aXNMaW5rKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sg
dG8gc2VlIGlmIHRoZSB2aXNpdGVkIHN0YXRlIG1hdGNoZXMuCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNldWRvVW5rbm93bikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENvbG9yJiBsaW5rQ29sb3IgPSBtX2VsZW1lbnQtPmRvY3VtZW50
KCktPmxpbmtDb2xvcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbG9y
JiB2aXNpdGVkQ29sb3IgPSBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnZpc2l0ZWRMaW5rQ29sb3Io
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG9TdGF0ZSA9IG1fY2hlY2tlci5j
aGVja1BzZXVkb1N0YXRlKG1fZWxlbWVudCwgc3R5bGUtPnBzZXVkb1N0YXRlKCkgIT0gUHNldWRv
QW55TGluayB8fCBsaW5rQ29sb3IgIT0gdmlzaXRlZENvbG9yKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzTWF0Y2ggPSAocHNldWRvU3Rh
dGUgPT0gc3R5bGUtPnBzZXVkb1N0YXRlKCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAobGlua3NNYXRjaCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBpZiAobWFwcGVkQXR0cnNNYXRjaCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTM0LDcg
KzExMjEsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAvLyBJ
ZiByZXNvbHZlRm9yUm9vdERlZmF1bHQgaXMgdHJ1ZSwgc3R5bGUgYmFzZWQgb24gdXNlciBhZ2Vu
dCBzdHlsZSBzaGVldCBvbmx5LiBUaGlzIGlzIHVzZWQgaW4gbWVkaWEgcXVlcmllcywgd2hlcmUK
IC8vIHJlbGF0aXZlIHVuaXRzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gZG9jdW1lbnQg
cm9vdCBlbGVtZW50IHN0eWxlLCBzdHlsZWQgb25seSB3aXRoIFVBIHN0eWxlc2hlZXQKIAotUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVs
ZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBkZWZhdWx0UGFyZW50LCBib29sIGFsbG93U2hhcmluZywg
Ym9vbCByZXNvbHZlRm9yUm9vdERlZmF1bHQpCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NT
dHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIGRl
ZmF1bHRQYXJlbnQsIGJvb2wgYWxsb3dTaGFyaW5nLCBib29sIHJlc29sdmVGb3JSb290RGVmYXVs
dCwgYm9vbCBtYXRjaFZpc2l0ZWRSdWxlcykKIHsKICAgICAvLyBPbmNlIGFuIGVsZW1lbnQgaGFz
IGEgcmVuZGVyZXIsIHdlIGRvbid0IHRyeSB0byBkZXN0cm95IGl0LCBzaW5jZSBvdGhlcndpc2Ug
dGhlIHJlbmRlcmVyCiAgICAgLy8gd2lsbCB2YW5pc2ggaWYgYSBzdHlsZSByZWNhbGMgaGFwcGVu
cyBkdXJpbmcgbG9hZGluZy4KQEAgLTExNTcsNiArMTE0NCw4IEBAIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IENTU1N0eWxlU2VsZWN0b3IKICAgICAgICAgICAgIHJldHVybiBzaGFyZWRTdHlsZTsK
ICAgICB9CiAgICAgaW5pdEZvclN0eWxlUmVzb2x2ZShlLCBkZWZhdWx0UGFyZW50KTsKKyAgICAK
KyAgICBtX2NoZWNrZXIubV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IG1hdGNoVmlzaXRlZFJ1
bGVzOwogCiAgICAgbV9zdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKIApAQCAtMTMxOSwx
MyArMTMwOCwzMSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAg
ICAgYWRqdXN0UmVuZGVyU3R5bGUoc3R5bGUoKSwgZSk7CiAKICAgICAvLyBJZiB3ZSBhcmUgYSBs
aW5rLCBjYWNoZSB0aGUgZGV0ZXJtaW5lZCBwc2V1ZG8tc3RhdGUuCi0gICAgaWYgKGUtPmlzTGlu
aygpKQorICAgIGJvb2wgaXNMaW5rID0gZS0+aXNMaW5rKCk7CisgICAgaWYgKGlzTGluaykKICAg
ICAgICAgbV9zdHlsZS0+c2V0UHNldWRvU3RhdGUocHNldWRvU3RhdGUpOwogCiAgICAgLy8gSWYg
d2UgaGF2ZSBmaXJzdC1sZXR0ZXIgcHNldWRvIHN0eWxlLCBkbyBub3Qgc2hhcmUgdGhpcyBzdHls
ZQogICAgIGlmIChtX3N0eWxlLT5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MRVRURVIpKQogICAgICAg
ICBtX3N0eWxlLT5zZXRVbmlxdWUoKTsKIAorICAgIC8vIENvbXB1dGUgb3VyIHN0eWxlIGFsbG93
aW5nIDp2aXNpdGVkIHRvIG1hdGNoLgorICAgIGlmICghbWF0Y2hWaXNpdGVkUnVsZXMgJiYgbV9z
dHlsZS0+aW5zaWRlTGluaygpKSB7CisgICAgICAgIC8vIEZldGNoIG91ciBwYXJlbnQgc3R5bGUu
CisgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IG1fcGFyZW50U3R5bGU7CisgICAg
ICAgIGlmICghaXNMaW5rKSB7CisgICAgICAgICAgICAvLyBVc2UgdGhlIHBhcmVudCdzIHZpc2l0
ZWQgc3R5bGUgaWYgb25lIGV4aXN0cy4KKyAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRW
aXNpdGVkU3R5bGUgPSBtX3BhcmVudFN0eWxlLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShWSVNJVEVE
X0xJTkspOworICAgICAgICAgICAgaWYgKHBhcmVudFZpc2l0ZWRTdHlsZSkKKyAgICAgICAgICAg
ICAgICBwYXJlbnRTdHlsZSA9IHBhcmVudFZpc2l0ZWRTdHlsZTsKKyAgICAgICAgfQorICAgICAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJlc3VsdFN0eWxlID0gbV9zdHlsZS5yZWxlYXNlKCk7Cisg
ICAgICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHZpc2l0ZWRTdHlsZSA9IHN0eWxlRm9yRWxl
bWVudChlLCBwYXJlbnRTdHlsZSwgZmFsc2UsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgdmlzaXRl
ZFN0eWxlLT5zZXRTdHlsZVR5cGUoVklTSVRFRF9MSU5LKTsKKyAgICAgICAgcmVzdWx0U3R5bGUt
PmFkZENhY2hlZFBzZXVkb1N0eWxlKHZpc2l0ZWRTdHlsZSk7CisgICAgICAgIHJldHVybiByZXN1
bHRTdHlsZS5yZWxlYXNlKCk7CisgICAgfQorCiAgICAgLy8gTm93IHJldHVybiB0aGUgc3R5bGUu
CiAgICAgcmV0dXJuIG1fc3R5bGUucmVsZWFzZSgpOwogfQpAQCAtMTQxMiw3ICsxNDE5LDcgQEAg
dm9pZCBDU1NTdHlsZVNlbGVjdG9yOjprZXlmcmFtZVN0eWxlc0ZvcgogICAgICAgICBsaXN0LmNs
ZWFyKCk7CiB9CiAKLVBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnBz
ZXVkb1N0eWxlRm9yRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG8sIEVsZW1lbnQqIGUsIFJlbmRlclN0
eWxlKiBwYXJlbnRTdHlsZSkKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0
b3I6OnBzZXVkb1N0eWxlRm9yRWxlbWVudChQc2V1ZG9JZCBwc2V1ZG8sIEVsZW1lbnQqIGUsIFJl
bmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgYm9vbCBtYXRjaFZpc2l0ZWRMaW5rcykKIHsKICAgICBp
ZiAoIWUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTQ0MCw3ICsxNDQ3LDcgQEAgUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3RvcgogICAgIGlmIChwYXJlbnRTdHlsZSkKICAg
ICAgICAgbV9zdHlsZS0+aW5oZXJpdEZyb20ocGFyZW50U3R5bGUpOwogCi0gICAgbV9zdHlsZS0+
bm9uaW5oZXJpdGVkX2ZsYWdzLl9zdHlsZVR5cGUgPSBwc2V1ZG87CisgICAgbV9zdHlsZS0+c2V0
U3R5bGVUeXBlKHBzZXVkbyk7CiAgICAgCiAgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSAwOwogICAg
IC8vIEhpZ2gtcHJpb3JpdHkgcHJvcGVydGllcy4KQEAgLTE0NzUsNiArMTQ4MiwyMiBAQCBQYXNz
UmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAgICAgLy8gQ2xlYW4gdXAgb3Vy
IHN0eWxlIG9iamVjdCdzIGRpc3BsYXkgYW5kIHRleHQgZGVjb3JhdGlvbnMgKGFtb25nIG90aGVy
IGZpeHVwcykuCiAgICAgYWRqdXN0UmVuZGVyU3R5bGUoc3R5bGUoKSwgMCk7CiAKKyAgICAvLyBD
b21wdXRlIG91ciA6dmlzaXRlZCBzdHlsZS4KKyAgICBpZiAoIW1hdGNoVmlzaXRlZExpbmtzICYm
IG1fc3R5bGUtPmluc2lkZUxpbmsoKSkgeworICAgICAgICAvLyBGZXRjaCBvdXIgcGFyZW50IHN0
eWxlLgorICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBtX3BhcmVudFN0eWxlOwor
ICAgICAgICBpZiAocGFyZW50U3R5bGUpIHsKKyAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJl
bnRWaXNpdGVkU3R5bGUgPSBtX3BhcmVudFN0eWxlLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShWSVNJ
VEVEX0xJTkspOworICAgICAgICAgICAgaWYgKHBhcmVudFZpc2l0ZWRTdHlsZSkKKyAgICAgICAg
ICAgICAgICBwYXJlbnRTdHlsZSA9IHBhcmVudFZpc2l0ZWRTdHlsZTsKKyAgICAgICAgfQorICAg
ICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJlc3VsdFN0eWxlID0gbV9zdHlsZS5yZWxlYXNlKCk7
CisgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gdmlzaXRlZFN0eWxlID0gcHNldWRvU3R5bGVG
b3JFbGVtZW50KHBzZXVkbywgZSwgcGFyZW50U3R5bGUsIHRydWUpOworICAgICAgICB2aXNpdGVk
U3R5bGUtPnNldFN0eWxlVHlwZShWSVNJVEVEX0xJTkspOworICAgICAgICByZXN1bHRTdHlsZS0+
YWRkQ2FjaGVkUHNldWRvU3R5bGUodmlzaXRlZFN0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgIHJl
dHVybiByZXN1bHRTdHlsZS5yZWxlYXNlKCk7CisgICAgfQorCiAgICAgLy8gTm93IHJldHVybiB0
aGUgc3R5bGUuCiAgICAgcmV0dXJuIG1fc3R5bGUucmVsZWFzZSgpOwogfQpAQCAtMTc2Myw3ICsx
Nzg2LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjdG9yKENTUwogICAgIG1f
ZHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOwogCiAgICAgLy8gQ2hlY2sgdGhlIHNlbGVjdG9yCi0g
ICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IG1fY2hlY2tlci5jaGVja1NlbGVjdG9yKHNlbCwgbV9l
bGVtZW50LCAmbV9zZWxlY3RvckF0dHJzLCBtX2R5bmFtaWNQc2V1ZG8sIHRydWUsIGZhbHNlLCBz
dHlsZSgpLCBtX3BhcmVudFN0eWxlKTsKKyAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVj
a2VyLmNoZWNrU2VsZWN0b3Ioc2VsLCBtX2VsZW1lbnQsICZtX3NlbGVjdG9yQXR0cnMsIG1fZHlu
YW1pY1BzZXVkbywgZmFsc2UsIGZhbHNlLCBzdHlsZSgpLCBtX3BhcmVudFN0eWxlKTsKICAgICBp
ZiAobWF0Y2ggIT0gU2VsZWN0b3JNYXRjaGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTE3NzgsNyArMTgwMSw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3RvcihD
U1MKIC8vICogU2VsZWN0b3JNYXRjaGVzICAgICAgICAgLSB0aGUgc2VsZWN0b3IgbWF0Y2hlcyB0
aGUgZWxlbWVudCBlCiAvLyAqIFNlbGVjdG9yRmFpbHNMb2NhbGx5ICAgIC0gdGhlIHNlbGVjdG9y
IGZhaWxzIGZvciB0aGUgZWxlbWVudCBlCiAvLyAqIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5IC0g
dGhlIHNlbGVjdG9yIGZhaWxzIGZvciBlIGFuZCBhbnkgc2libGluZyBvciBhbmNlc3RvciBvZiBl
Ci1DU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBI
YXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFt
aWNQc2V1ZG8sIGJvb2wgaXNBbmNlc3RvciwgYm9vbCBpc1N1YlNlbGVjdG9yLCBSZW5kZXJTdHls
ZSogZWxlbWVudFN0eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAor
Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgSGFz
aFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWlj
UHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJT
dHlsZSogZWxlbWVudFN0eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25z
dAogewogI2lmIEVOQUJMRShTVkcpCiAgICAgLy8gU3BlYzogQ1NTMiBzZWxlY3RvcnMgY2Fubm90
IGJlIGFwcGxpZWQgdG8gdGhlIChjb25jZXB0dWFsbHkpIGNsb25lZCBET00gdHJlZQpAQCAtMTc4
OCw3ICsxODExLDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQog
I2VuZGlmCiAKICAgICAvLyBmaXJzdCBzZWxlY3RvciBoYXMgdG8gbWF0Y2gKLSAgICBpZiAoIWNo
ZWNrT25lU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc0Fu
Y2VzdG9yLCBpc1N1YlNlbGVjdG9yLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkp
CisgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1p
Y1BzZXVkbywgaXNTdWJTZWxlY3RvciwgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUp
KQogICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0xvY2FsbHk7CiAKICAgICAvLyBUaGUgcmVz
dCBvZiB0aGUgc2VsZWN0b3JzIGhhcyB0byBtYXRjaApAQCAtMTgwNCw2ICsxODI3LDE3IEBAIENT
U1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGUKICAgICAgICAgaWYgKG1fcHNl
dWRvU3R5bGUgIT0gTk9QU0VVRE8gJiYgbV9wc2V1ZG9TdHlsZSAhPSBkeW5hbWljUHNldWRvKQog
ICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogCisgICAgLy8gQ2hl
Y2sgZm9yIG5lc3RlZCBsaW5rcy4KKyAgICBpZiAobV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcykg
eworICAgICAgICBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlID0gZWxlbWVudFN0eWxlID8gZWxl
bWVudFN0eWxlIDogZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgaWYgKGN1cnJlbnRTdHlsZSAm
JiBjdXJyZW50U3R5bGUtPmluc2lkZUxpbmsoKSAmJiBlLT5pc0xpbmsoKSkgeworICAgICAgICAg
ICAgaWYgKGVuY291bnRlcmVkTGluaykKKyAgICAgICAgICAgICAgICBtX21hdGNoVmlzaXRlZFBz
ZXVkb0NsYXNzID0gZmFsc2U7IC8vIFRoaXMgbGluayBpcyBub3QgcmVsZXZhbnQgdG8gdGhlIHN0
eWxlIGJlaW5nIHJlc29sdmVkLCBzbyBkaXNhYmxlIG1hdGNoaW5nLgorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGVuY291bnRlcmVkTGluayA9IHRydWU7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBzd2l0Y2ggKHJlbGF0aW9uKSB7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OkRlc2NlbmRhbnQ6CiAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTgxMSw3ICsxODQ1
LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAg
ICAgICAgIGlmICghbiB8fCAhbi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAgICAgICAgICAgICAgICAgZSA9IHN0
YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1h
dGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8s
IHRydWUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hl
Y2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBl
bmNvdW50ZXJlZExpbmspOwogICAgICAgICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckZh
aWxzTG9jYWxseSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAgICAg
ICAgfQpAQCAtMTgyMiw3ICsxODU2LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRj
aCBDU1NTdHlsZQogICAgICAgICAgICAgaWYgKCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAg
ICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgIHJldHVybiBjaGVj
a1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZmFs
c2UpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0
dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rKTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudDoKICAgICAgICAgewpAQCAt
MTgzNyw3ICsxODcxLDggQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHls
ZQogICAgICAgICAgICAgaWYgKCFuKQogICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZh
aWxzTG9jYWxseTsKICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0g
ICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5
bmFtaWNQc2V1ZG8sIGZhbHNlLCBmYWxzZSk7IAorICAgICAgICAgICAgbV9tYXRjaFZpc2l0ZWRQ
c2V1ZG9DbGFzcyA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2Vs
LCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5r
KTsgCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2Vu
dDoKICAgICAgICAgICAgIGlmICghbV9jb2xsZWN0UnVsZXNPbmx5ICYmIGUtPnBhcmVudE5vZGUo
KSAmJiBlLT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSkgewpAQCAtMTg1Miw3ICsxODg3
LDggQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAg
ICAgICAgIGlmICghbikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNM
b2NhbGx5OwogICAgICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0g
ICAgICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBl
LCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAg
ICAgICAgIG1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0
cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOwogICAgICAgICAgICAg
ICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckZhaWxzTG9jYWxseSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1hdGNoOwogICAgICAgICAgICAgfTsKQEAgLTE4NjQsNyArMTkwMCw3IEBAIENT
U1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGUKICAgICAgICAgICAgIGlmICgo
ZWxlbWVudFN0eWxlIHx8IG1fY29sbGVjdFJ1bGVzT25seSkgJiYgZHluYW1pY1BzZXVkbyAhPSBO
T1BTRVVETyAmJiBkeW5hbWljUHNldWRvICE9IFNFTEVDVElPTiAmJgogICAgICAgICAgICAgICAg
ICEoKFJlbmRlclNjcm9sbGJhcjo6c2Nyb2xsYmFyRm9yU3R5bGVSZXNvbHZlKCkgfHwgZHluYW1p
Y1BzZXVkbyA9PSBTQ1JPTExCQVJfQ09STkVSIHx8IGR5bmFtaWNQc2V1ZG8gPT0gUkVTSVpFUikg
JiYgc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwotICAgICAgICAgICAgcmV0dXJu
IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc0Fu
Y2VzdG9yLCB0cnVlLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSk7CisgICAgICAg
ICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQ
c2V1ZG8sIHRydWUsIGVuY291bnRlcmVkTGluaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50
U3R5bGUpOwogICAgIH0KIAogICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKQEAg
LTE5MzcsNyArMTk3Myw3IEBAIHN0YXRpYyBib29sIGh0bWxBdHRyaWJ1dGVIYXNDYXNlSW5zZW5z
aXQKICAgICByZXR1cm4gaXNQb3NzaWJsZUhUTUxBdHRyICYmIGh0bWxDYXNlSW5zZW5zaXRpdmVB
dHRyaWJ1dGVzU2V0LT5jb250YWlucyhhdHRyLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKLWJv
b2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENT
U1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGUsIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBz
ZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc0FuY2VzdG9yLCBi
b29sIGlzU3ViU2VsZWN0b3IsIFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxl
KiBlbGVtZW50UGFyZW50U3R5bGUpIGNvbnN0Citib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVj
dG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBl
LCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5
bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHls
ZSwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSkgY29uc3QKIHsKICAgICBpZiAoIWUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwMzgsNyArMjA3NCw3IEBAIGJvb2wgQ1NTU3R5
bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAgICAgICAvLyB0aGUgcGFy
c2VyIGVuZm9yY2VzIHRoYXQgdGhpcyBuZXZlciBvY2N1cnMKICAgICAgICAgICAgICAgICBBU1NF
UlQoIXN1YlNlbC0+c2ltcGxlU2VsZWN0b3IoKSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoIWNo
ZWNrT25lU2VsZWN0b3Ioc3ViU2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBp
c0FuY2VzdG9yLCB0cnVlLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisgICAg
ICAgICAgICAgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHN1YlNlbCwgZSwgc2VsZWN0b3JBdHRy
cywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlIGlmIChkeW5hbWljUHNldWRvICE9IE5PUFNFVURPICYmIChSZW5kZXJTY3JvbGxi
YXI6OnNjcm9sbGJhckZvclN0eWxlUmVzb2x2ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xM
QkFSX0NPUk5FUiB8fCBkeW5hbWljUHNldWRvID09IFJFU0laRVIpKSB7CkBAIC0yMzQ2LDEwICsy
MzgyLDE2IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9BbnlMaW5rOgotICAgICAgICAgICAgICAg
IGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9Vbmtub3duKQotICAgICAgICAgICAgICAgICAgICBw
c2V1ZG9TdGF0ZSA9IGNoZWNrUHNldWRvU3RhdGUoZSwgZmFsc2UpOwotICAgICAgICAgICAgICAg
IGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9BbnlMaW5rIHx8IHBzZXVkb1N0YXRlID09IFBzZXVk
b0xpbmsgfHwgcHNldWRvU3RhdGUgPT0gUHNldWRvVmlzaXRlZCkKKyAgICAgICAgICAgICAgICBp
ZiAocHNldWRvU3RhdGUgPT0gUHNldWRvVW5rbm93bikgeworICAgICAgICAgICAgICAgICAgICBj
b25zdCBDb2xvciYgbGlua0NvbG9yID0gZS0+ZG9jdW1lbnQoKS0+bGlua0NvbG9yKCk7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENvbG9yJiB2aXNpdGVkQ29sb3IgPSBlLT5kb2N1bWVudCgp
LT52aXNpdGVkTGlua0NvbG9yKCk7CisgICAgICAgICAgICAgICAgICAgIHBzZXVkb1N0YXRlID0g
Y2hlY2tQc2V1ZG9TdGF0ZShlLCBsaW5rQ29sb3IgIT0gdmlzaXRlZENvbG9yKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb0FueUxp
bmsgfHwgcHNldWRvU3RhdGUgPT0gUHNldWRvTGluayB8fCBwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9W
aXNpdGVkKSB7CisgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0g
ZWxlbWVudFN0eWxlID8gZWxlbWVudFN0eWxlIDogZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgY2hpbGRTdHlsZS0+c2V0SW5zaWRlTGluayh0cnVlKTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQXV0b2ZpbGw6IHsK
ICAgICAgICAgICAgICAgICBpZiAoIWUgfHwgIWUtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCkBA
IC0yMzYxLDE0ICsyNDAzLDIwIEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVj
a2VyOjoKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xpbms6CiAgICAgICAg
ICAgICAgICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb1Vua25vd24gfHwgcHNldWRvU3RhdGUg
PT0gUHNldWRvQW55TGluaykKICAgICAgICAgICAgICAgICAgICAgcHNldWRvU3RhdGUgPSBjaGVj
a1BzZXVkb1N0YXRlKGUpOwotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1
ZG9MaW5rKQorICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9BbnlMaW5r
IHx8IHBzZXVkb1N0YXRlID09IFBzZXVkb0xpbmspIHsKKyAgICAgICAgICAgICAgICAgICAgUmVu
ZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBlbGVtZW50U3R5bGUgPyBlbGVtZW50U3R5bGUgOiBlLT5y
ZW5kZXJTdHlsZSgpOworICAgICAgICAgICAgICAgICAgICBjaGlsZFN0eWxlLT5zZXRJbnNpZGVM
aW5rKHRydWUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9WaXNpdGVkOgogICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQ
c2V1ZG9Vbmtub3duIHx8IHBzZXVkb1N0YXRlID09IFBzZXVkb0FueUxpbmspCiAgICAgICAgICAg
ICAgICAgICAgIHBzZXVkb1N0YXRlID0gY2hlY2tQc2V1ZG9TdGF0ZShlKTsKLSAgICAgICAgICAg
ICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNldWRvVmlzaXRlZCkKKyAgICAgICAgICAgICAgICBp
ZiAocHNldWRvU3RhdGUgPT0gUHNldWRvVmlzaXRlZCkgeworICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogY2hpbGRTdHlsZSA9IGVsZW1lbnRTdHlsZSA/IGVsZW1lbnRTdHlsZSA6IGUt
PnJlbmRlclN0eWxlKCk7CisgICAgICAgICAgICAgICAgICAgIGNoaWxkU3R5bGUtPnNldEluc2lk
ZUxpbmsodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0RyYWc6IHsKICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudFN0eWxlKQpA
QCAtNjA1Myw5ICs2MTAxLDkgQEAgQ29sb3IgQ1NTU3R5bGVTZWxlY3Rvcjo6Z2V0Q29sb3JGcm9t
UHJpbQogICAgICAgICAgICAgaWYgKGxpbmtDb2xvciA9PSB2aXNpdGVkQ29sb3IpCiAgICAgICAg
ICAgICAgICAgY29sID0gbGlua0NvbG9yOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb1Vua25vd24gfHwgcHNldWRvU3RhdGUgPT0g
UHNldWRvQW55TGluaykKKyAgICAgICAgICAgICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNldWRv
VW5rbm93bikKICAgICAgICAgICAgICAgICAgICAgcHNldWRvU3RhdGUgPSBtX2NoZWNrZXIuY2hl
Y2tQc2V1ZG9TdGF0ZShtX2VsZW1lbnQpOwotICAgICAgICAgICAgICAgIGNvbCA9IChwc2V1ZG9T
dGF0ZSA9PSBQc2V1ZG9MaW5rKSA/IGxpbmtDb2xvciA6IHZpc2l0ZWRDb2xvcjsKKyAgICAgICAg
ICAgICAgICBjb2wgPSAocHNldWRvU3RhdGUgPT0gUHNldWRvVmlzaXRlZCkgPyB2aXNpdGVkQ29s
b3IgOiBsaW5rQ29sb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoaWRlbnQg
PT0gQ1NTVmFsdWVXZWJraXRBY3RpdmVsaW5rKQogICAgICAgICAgICAgY29sID0gbV9lbGVtZW50
LT5kb2N1bWVudCgpLT5hY3RpdmVMaW5rQ29sb3IoKTsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmgJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC04NywxMCArODcsMTAgQEAgcHVibGljOgogCiAgICAgICAgIHZvaWQg
aW5pdEVsZW1lbnRBbmRQc2V1ZG9TdGF0ZShFbGVtZW50Kik7CiAgICAgICAgIHZvaWQgaW5pdEZv
clN0eWxlUmVzb2x2ZShFbGVtZW50KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCwgUHNl
dWRvSWQgPSBOT1BTRVVETyk7Ci0gICAgICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxl
Rm9yRWxlbWVudChFbGVtZW50KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCwgYm9vbCBh
bGxvd1NoYXJpbmcgPSB0cnVlLCBib29sIHJlc29sdmVGb3JSb290RGVmYXVsdCA9IGZhbHNlKTsK
KyAgICAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50KEVsZW1lbnQq
LCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwLCBib29sIGFsbG93U2hhcmluZyA9IHRydWUs
IGJvb2wgcmVzb2x2ZUZvclJvb3REZWZhdWx0ID0gZmFsc2UsIGJvb2wgbWF0Y2hWaXNpdGVkTGlu
a3MgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQga2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oRWxl
bWVudCosIGNvbnN0IFJlbmRlclN0eWxlKiwgS2V5ZnJhbWVMaXN0JiBsaXN0KTsKIAotICAgICAg
ICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZUZvckVsZW1lbnQoUHNldWRvSWQs
IEVsZW1lbnQqLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwKTsKKyAgICAgICAgUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGVGb3JFbGVtZW50KFBzZXVkb0lkLCBFbGVtZW50
KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCwgYm9vbCBtYXRjaFZpc2l0ZWRMaW5rcyA9
IGZhbHNlKTsKIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVG
b3JEb2N1bWVudChEb2N1bWVudCopOwogCkBAIC0xOTYsOCArMTk2LDggQEAgcHVibGljOgogICAg
ICAgICAgICAgU2VsZWN0b3JDaGVja2VyKERvY3VtZW50KiwgYm9vbCBzdHJpY3RQYXJzaW5nKTsK
IAogICAgICAgICAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCop
IGNvbnN0OwotICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKENTU1NlbGVj
dG9yKiwgRWxlbWVudCosIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJz
LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc0FuY2VzdG9yLCBib29sIGlzU3ViU2Vs
ZWN0b3IsIFJlbmRlclN0eWxlKiA9IDAsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUg
PSAwKSBjb25zdDsKLSAgICAgICAgICAgIGJvb2wgY2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rv
ciosIEVsZW1lbnQqLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywg
UHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNBbmNlc3RvciwgYm9vbCBpc1N1YlNlbGVj
dG9yLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNvbnN0
OworICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwg
RWxlbWVudCosIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1
ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVk
TGluaywgUmVuZGVyU3R5bGUqID0gMCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9
IDApIGNvbnN0OworICAgICAgICAgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9y
KiwgRWxlbWVudCosIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQ
c2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBSZW5kZXJTdHlsZSos
IFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNvbnN0OwogICAgICAgICAgICAgUHNl
dWRvU3RhdGUgY2hlY2tQc2V1ZG9TdGF0ZShFbGVtZW50KiwgYm9vbCBjaGVja1Zpc2l0ZWQgPSB0
cnVlKSBjb25zdDsKICAgICAgICAgICAgIGJvb2wgY2hlY2tTY3JvbGxiYXJQc2V1ZG9DbGFzcyhD
U1NTZWxlY3RvciosIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvKSBjb25zdDsKIApAQCAtMjA5LDYg
KzIwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJvb2wgbV9jb2xsZWN0UnVsZXNPbmx5Owog
ICAgICAgICAgICAgUHNldWRvSWQgbV9wc2V1ZG9TdHlsZTsKICAgICAgICAgICAgIGJvb2wgbV9k
b2N1bWVudElzSFRNTDsKKyAgICAgICAgICAgIG11dGFibGUgYm9vbCBtX21hdGNoVmlzaXRlZFBz
ZXVkb0NsYXNzOwogICAgICAgICAgICAgbXV0YWJsZSBIYXNoU2V0PExpbmtIYXNoLCBMaW5rSGFz
aEhhc2g+IG1fbGlua3NDaGVja2VkRm9yVmlzaXRlZFN0YXRlOwogICAgICAgICB9OwogCkBAIC0y
NzksNyArMjgwLDcgQEAgcHVibGljOgogICAgICAgICBDU1NWYWx1ZSogbV9saW5lSGVpZ2h0VmFs
dWU7CiAgICAgICAgIGJvb2wgbV9mb250RGlydHk7CiAgICAgICAgIGJvb2wgbV9tYXRjaEF1dGhv
ckFuZFVzZXJTdHlsZXM7Ci0KKyAgICAgICAgCiAgICAgICAgIFJlZlB0cjxDU1NGb250U2VsZWN0
b3I+IG1fZm9udFNlbGVjdG9yOwogICAgICAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBt
X3NlbGVjdG9yQXR0cnM7CiAgICAgICAgIFZlY3RvcjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bio+IG1fYWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxlRGVjbHM7CkluZGV4OiBXZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNp
b24gNTY4NTkpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODY3LDExICs4NjcsMTYgQEAgYm9vbCBFbGVtZW50Ojpwc2V1ZG9TdHlsZUNhY2hlSXNJbnZhbGlk
KAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FjaGVTaXplOyArK2kpIHsKICAgICAgICAg
UmVmUHRyPFJlbmRlclN0eWxlPiBuZXdQc2V1ZG9TdHlsZTsKICAgICAgICAgUHNldWRvSWQgcHNl
dWRvSWQgPSBwc2V1ZG9TdHlsZUNhY2hlW2ldLT5zdHlsZVR5cGUoKTsKLSAgICAgICAgaWYgKHBz
ZXVkb0lkID09IEZJUlNUX0xJTkUgfHwgcHNldWRvSWQgPT0gRklSU1RfTElORV9JTkhFUklURUQp
CisgICAgICAgIGlmIChwc2V1ZG9JZCA9PSBWSVNJVEVEX0xJTkspIHsKKyAgICAgICAgICAgIG5l
d1BzZXVkb1N0eWxlID0gIG5ld1N0eWxlLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShWSVNJVEVEX0xJ
TkspOyAvLyBUaGlzIHBzZXVkby1zdHlsZSB3YXMgYWdncmVzc2l2ZWx5IGNvbXB1dGVkIGFscmVh
ZHkgd2hlbiB3ZSBmaXJzdCBjYWxsZWQgc3R5bGVGb3JFbGVtZW50IG9uIHRoZSBuZXcgc3R5bGUu
CisgICAgICAgICAgICBpZiAoIW5ld1BzZXVkb1N0eWxlIHx8ICpuZXdQc2V1ZG9TdHlsZSAhPSAq
cHNldWRvU3R5bGVDYWNoZVtpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfSBlbHNlIGlmIChwc2V1ZG9JZCA9PSBGSVJTVF9MSU5FIHx8IHBzZXVkb0lkID09IEZJUlNU
X0xJTkVfSU5IRVJJVEVEKQogICAgICAgICAgICAgbmV3UHNldWRvU3R5bGUgPSByZW5kZXJlcigp
LT51bmNhY2hlZEZpcnN0TGluZVN0eWxlKG5ld1N0eWxlKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbmV3UHNldWRvU3R5bGUgPSByZW5kZXJlcigpLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxl
KHBzZXVkb0lkLCBuZXdTdHlsZSwgbmV3U3R5bGUpOwotCisgICAgICAgIGlmICghbmV3UHNldWRv
U3R5bGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCpuZXdQc2V1ZG9T
dHlsZSAhPSAqcHNldWRvU3R5bGVDYWNoZVtpXSkgewogICAgICAgICAgICAgaWYgKHBzZXVkb0lk
IDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpCiAgICAgICAgICAgICAgICAgbmV3U3R5bGUtPnNl
dEhhc1BzZXVkb1N0eWxlKHBzZXVkb0lkKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vTGlua0hh
c2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guY3BwCShyZXZp
c2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTQsMTAgKzE1NCwxMSBAQCBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3Qg
VUNoYXIqIHVyCiAKIHZvaWQgdmlzaXRlZFVSTChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCwgVmVjdG9yPFVDaGFyLCA1MTI+JiBidWZmZXIpCiB7Cisg
ICAgaWYgKGF0dHJpYnV0ZVVSTC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBhdHRyaWJ1dGVVUkwuY2hhcmFjdGVycygpOwogICAgIHVu
c2lnbmVkIGxlbmd0aCA9IGF0dHJpYnV0ZVVSTC5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkK
LSAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyBpcyBhIHBvb3IgbWFuJ3MgY29tcGxldGVV
UkwuIEZhc3RlciB3aXRoIGxlc3MgbWVtb3J5IGFsbG9jYXRpb24uCiAgICAgLy8gRklYTUU6IEl0
J3MgbWlzc2luZyBhIGxvdCBvZiB3aGF0IGNvbXBsZXRlVVJMIGRvZXMgYW5kIGEgbG90IG9mIHdo
YXQgS1VSTCBkb2VzLgpAQCAtMTg2LDE2ICsxODcsMjAgQEAgdm9pZCB2aXNpdGVkVVJMKGNvbnN0
IEtVUkwmIGJhc2UsIGNvbnN0IAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3dpdGNo
IChjaGFyYWN0ZXJzWzBdKSB7Ci0gICAgICAgIGNhc2UgJy8nOgotICAgICAgICAgICAgYnVmZmVy
LmFwcGVuZChiYXNlLnN0cmluZygpLmNoYXJhY3RlcnMoKSwgYmFzZS5wYXRoU3RhcnQoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnIyc6Ci0gICAgICAgICAgICBidWZmZXIu
YXBwZW5kKGJhc2Uuc3RyaW5nKCkuY2hhcmFjdGVycygpLCBiYXNlLnBhdGhFbmQoKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJ1ZmZlci5hcHBl
bmQoYmFzZS5zdHJpbmcoKS5jaGFyYWN0ZXJzKCksIGJhc2UucGF0aEFmdGVyTGFzdFNsYXNoKCkp
OwotICAgICAgICAgICAgYnJlYWs7CisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIGJ1ZmZlci5h
cHBlbmQoYmFzZS5zdHJpbmcoKS5jaGFyYWN0ZXJzKCksIGJhc2Uuc3RyaW5nKCkubGVuZ3RoKCkp
OworICAgIGVsc2UgeworICAgICAgICBzd2l0Y2ggKGNoYXJhY3RlcnNbMF0pIHsKKyAgICAgICAg
ICAgIGNhc2UgJy8nOgorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoYmFzZS5zdHJpbmco
KS5jaGFyYWN0ZXJzKCksIGJhc2UucGF0aFN0YXJ0KCkpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSAnIyc6CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChi
YXNlLnN0cmluZygpLmNoYXJhY3RlcnMoKSwgYmFzZS5wYXRoRW5kKCkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBidWZmZXIu
YXBwZW5kKGJhc2Uuc3RyaW5nKCkuY2hhcmFjdGVycygpLCBiYXNlLnBhdGhBZnRlckxhc3RTbGFz
aCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KICAgICBidWZm
ZXIuYXBwZW5kKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgY2xlYW5QYXRoKGJ1ZmZlcik7Cklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAkocmV2aXNpb24gNTY4NTkpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEs
NiArMjEsNyBAQAogI2luY2x1ZGUgIklubGluZUZsb3dCb3guaCIKIAogI2luY2x1ZGUgIkNhY2hl
ZEltYWdlLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRWxsaXBzaXNCb3guaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKQEAgLTc2MCw3ICs3NjEsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94RGVj
b3JhdGlvbnMoCiAgICAgICAgIGlmIChzdHlsZVRvVXNlLT5ib3hTaGFkb3coKSkKICAgICAgICAg
ICAgIHBhaW50Qm94U2hhZG93KGNvbnRleHQsIHN0eWxlVG9Vc2UsIE5vcm1hbCwgdHgsIHR5LCB3
LCBoKTsKIAotICAgICAgICBDb2xvciBjID0gc3R5bGVUb1VzZS0+YmFja2dyb3VuZENvbG9yKCk7
CisgICAgICAgIENvbG9yIGMgPSByZW5kZXJlcigpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3R5
bGVUb1VzZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgICAgICBwYWludEZpbGxM
YXllcnMocGFpbnRJbmZvLCBjLCBzdHlsZVRvVXNlLT5iYWNrZ3JvdW5kTGF5ZXJzKCksIHR4LCB0
eSwgdywgaCk7CiAKICAgICAgICAgaWYgKHN0eWxlVG9Vc2UtPmJveFNoYWRvdygpKQpAQCAtOTU3
LDcgKzk1OCw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRUZXh0RGVjb3JhdGlvbnMKICAg
ICAgICAgdHggKz0gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKTsKIAogICAgICAgICBDb2xv
ciB1bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3VnaDsKLSAgICAgICAgdW5kZXJsaW5lID0g
b3ZlcmxpbmUgPSBsaW5ldGhyb3VnaCA9IHN0eWxlVG9Vc2UtPmNvbG9yKCk7CisgICAgICAgIHVu
ZGVybGluZSA9IG92ZXJsaW5lID0gbGluZXRocm91Z2ggPSByZW5kZXJlcigpLT52aXNpdGVkRGVw
ZW5kZW50Q29sb3Ioc3R5bGVUb1VzZSwgQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgICAgIGlmICgh
cGFyZW50KCkpCiAgICAgICAgICAgICByZW5kZXJlcigpLT5nZXRUZXh0RGVjb3JhdGlvbkNvbG9y
cyhkZWNvLCB1bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3VnaCk7CiAKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTEsMTggKzQxMSwx
NCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFJlbmRlck9iamVjdDo6CiAgICAgICAgIHRl
eHRGaWxsQ29sb3IgPSBDb2xvcjo6YmxhY2s7CiAgICAgICAgIHRleHRTdHJva2VDb2xvciA9IENv
bG9yOjpibGFjazsKICAgICB9IGVsc2UgewotICAgICAgICB0ZXh0RmlsbENvbG9yID0gc3R5bGVU
b1VzZS0+dGV4dEZpbGxDb2xvcigpOwotICAgICAgICBpZiAoIXRleHRGaWxsQ29sb3IuaXNWYWxp
ZCgpKQotICAgICAgICAgICAgdGV4dEZpbGxDb2xvciA9IHN0eWxlVG9Vc2UtPmNvbG9yKCk7Ci0K
KyAgICAgICAgdGV4dEZpbGxDb2xvciA9IHJlbmRlcmVyKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihzdHlsZVRvVXNlLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpOworICAgICAgICAK
ICAgICAgICAgLy8gTWFrZSB0aGUgdGV4dCBmaWxsIGNvbG9yIGxlZ2libGUgYWdhaW5zdCBhIHdo
aXRlIGJhY2tncm91bmQKICAgICAgICAgaWYgKHN0eWxlVG9Vc2UtPmZvcmNlQmFja2dyb3VuZHNU
b1doaXRlKCkpCiAgICAgICAgICAgICB0ZXh0RmlsbENvbG9yID0gY29ycmVjdGVkVGV4dENvbG9y
KHRleHRGaWxsQ29sb3IsIENvbG9yOjp3aGl0ZSk7CiAKLSAgICAgICAgdGV4dFN0cm9rZUNvbG9y
ID0gc3R5bGVUb1VzZS0+dGV4dFN0cm9rZUNvbG9yKCk7Ci0gICAgICAgIGlmICghdGV4dFN0cm9r
ZUNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHRleHRTdHJva2VDb2xvciA9IHN0eWxlVG9V
c2UtPmNvbG9yKCk7Ci0KKyAgICAgICAgdGV4dFN0cm9rZUNvbG9yID0gcmVuZGVyZXIoKS0+dmlz
aXRlZERlcGVuZGVudENvbG9yKHN0eWxlVG9Vc2UsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9r
ZUNvbG9yKTsKKyAgICAgICAgCiAgICAgICAgIC8vIE1ha2UgdGhlIHRleHQgc3Ryb2tlIGNvbG9y
IGxlZ2libGUgYWdhaW5zdCBhIHdoaXRlIGJhY2tncm91bmQKICAgICAgICAgaWYgKHN0eWxlVG9V
c2UtPmZvcmNlQmFja2dyb3VuZHNUb1doaXRlKCkpCiAgICAgICAgICAgICB0ZXh0U3Ryb2tlQ29s
b3IgPSBjb3JyZWN0ZWRUZXh0Q29sb3IodGV4dFN0cm9rZUNvbG9yLCBDb2xvcjo6d2hpdGUpOwpA
QCAtNTE3LDcgKzUxMyw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUmVuZGVyT2JqZWN0
OjoKIAogICAgIC8vIFBhaW50IGRlY29yYXRpb25zCiAgICAgaWYgKGQgIT0gVEROT05FICYmIHBh
aW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlU2VsZWN0aW9uICYmIHN0eWxlVG9Vc2UtPmh0bWxI
YWNrcygpKSB7Ci0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHN0eWxlVG9Vc2UtPmNv
bG9yKCksIHN0eWxlVG9Vc2UtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKHJlbmRlcmVyKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdHlsZVRvVXNlLCBD
U1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGVUb1VzZS0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgcGFp
bnREZWNvcmF0aW9uKGNvbnRleHQsIHR4LCB0eSwgZCwgdGV4dFNoYWRvdyk7CiAgICAgfQogCkBA
IC01NzcsNyArNTczLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbihHcmFw
aAogICAgIGlmIChzUG9zID49IGVQb3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbG9yIHRl
eHRDb2xvciA9IHN0eWxlLT5jb2xvcigpOworICAgIENvbG9yIHRleHRDb2xvciA9IHJlbmRlcmVy
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdHlsZSwgQ1NTUHJvcGVydHlDb2xvcik7CiAgICAg
Q29sb3IgYyA9IHJlbmRlcmVyKCktPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOwogICAgIGlm
ICghYy5pc1ZhbGlkKCkgfHwgYy5hbHBoYSgpID09IDApCiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQ2LDcgKzE1NDYs
NyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludChQYWludEluZm8mIHBhaW50CiAKIHZvaWQgUmVu
ZGVyQmxvY2s6OnBhaW50Q29sdW1uUnVsZXMoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwg
aW50IHR5KQogewotICAgIGNvbnN0IENvbG9yJiBydWxlQ29sb3IgPSBzdHlsZSgpLT5jb2x1bW5S
dWxlQ29sb3IoKTsKKyAgICBjb25zdCBDb2xvciYgcnVsZUNvbG9yID0gdmlzaXRlZERlcGVuZGVu
dENvbG9yKHN0eWxlKCksIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yKTsKICAgICBi
b29sIHJ1bGVUcmFuc3BhcmVudCA9IHN0eWxlKCktPmNvbHVtblJ1bGVJc1RyYW5zcGFyZW50KCk7
CiAgICAgRUJvcmRlclN0eWxlIHJ1bGVTdHlsZSA9IHN0eWxlKCktPmNvbHVtblJ1bGVTdHlsZSgp
OwogICAgIGludCBydWxlV2lkdGggPSBzdHlsZSgpLT5jb2x1bW5SdWxlV2lkdGgoKTsKQEAgLTE1
ODEsNyArMTU4MSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50Q29sdW1uUnVsZXMoUGFpbnQK
ICAgICAgICAgICAgIGludCBydWxlVG9wID0gdHkgKyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3Ao
KTsKICAgICAgICAgICAgIGludCBydWxlQm90dG9tID0gcnVsZVRvcCArIGNvbnRlbnRIZWlnaHQo
KTsKICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShwYWludEluZm8uY29udGV4dCwgcnVs
ZVN0YXJ0LCBydWxlVG9wLCBydWxlRW5kLCBydWxlQm90dG9tLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUiA/IEJTTGVmdCA6IEJTUmln
aHQsIHJ1bGVDb2xvciwgc3R5bGUoKS0+Y29sb3IoKSwgcnVsZVN0eWxlLCAwLCAwKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIgPyBC
U0xlZnQgOiBCU1JpZ2h0LCBydWxlQ29sb3IsIHJ1bGVTdHlsZSwgMCwgMCk7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIHJ1bGVYID0gY3VyclhPZmZzZXQ7CkBAIC0xNzYwLDcgKzE3NjAs
NyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mCiAKICAgICAvLyA1
LiBwYWludCBvdXRsaW5lLgogICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlT3V0bGlu
ZSB8fCBwYWludFBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgaGFzT3V0bGluZSgp
ICYmIHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQotICAgICAgICBwYWludE91dGxp
bmUocGFpbnRJbmZvLmNvbnRleHQsIHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0KCksIHN0eWxlKCkp
OworICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIHR4LCB0eSwgd2lkdGgo
KSwgaGVpZ2h0KCkpOwogCiAgICAgLy8gNi4gcGFpbnQgY29udGludWF0aW9uIG91dGxpbmVzLgog
ICAgIGlmICgocGFpbnRQaGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludFBoYXNlID09
IFBhaW50UGhhc2VDaGlsZE91dGxpbmVzKSkgewpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzMywxNSAr
OTMzLDE1IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWMKIH0KIAog
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGludCB0eCwgaW50IHR5LCBpbnQgdywgaW50IGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBib29sIGJlZ2lu
LCBib29sIGVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJlbmRlclN0eWxlKiBzdHlsZSwgYm9vbCBiZWdpbiwgYm9vbCBlbmQpCiB7CiAgICAgaWYgKHBh
aW50TmluZVBpZWNlSW1hZ2UoZ3JhcGhpY3NDb250ZXh0LCB0eCwgdHksIHcsIGgsIHN0eWxlLCBz
dHlsZS0+Ym9yZGVySW1hZ2UoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IENvbG9y
JiB0b3BDb2xvciA9IHN0eWxlLT5ib3JkZXJUb3BDb2xvcigpOwotICAgIGNvbnN0IENvbG9yJiBi
b3R0b21Db2xvciA9IHN0eWxlLT5ib3JkZXJCb3R0b21Db2xvcigpOwotICAgIGNvbnN0IENvbG9y
JiBsZWZ0Q29sb3IgPSBzdHlsZS0+Ym9yZGVyTGVmdENvbG9yKCk7Ci0gICAgY29uc3QgQ29sb3Im
IHJpZ2h0Q29sb3IgPSBzdHlsZS0+Ym9yZGVyUmlnaHRDb2xvcigpOworICAgIGNvbnN0IENvbG9y
JiB0b3BDb2xvciA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdHlsZSwgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BDb2xvcik7CisgICAgY29uc3QgQ29sb3ImIGJvdHRvbUNvbG9yID0gdmlzaXRlZERlcGVu
ZGVudENvbG9yKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yKTsKKyAgICBjb25z
dCBDb2xvciYgbGVmdENvbG9yID0gdmlzaXRlZERlcGVuZGVudENvbG9yKHN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlckxlZnRDb2xvcik7CisgICAgY29uc3QgQ29sb3ImIHJpZ2h0Q29sb3IgPSB2aXNp
dGVkRGVwZW5kZW50Q29sb3Ioc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcik7CiAK
ICAgICBib29sIHRvcFRyYW5zcGFyZW50ID0gc3R5bGUtPmJvcmRlclRvcElzVHJhbnNwYXJlbnQo
KTsKICAgICBib29sIGJvdHRvbVRyYW5zcGFyZW50ID0gc3R5bGUtPmJvcmRlckJvdHRvbUlzVHJh
bnNwYXJlbnQoKTsKQEAgLTEwMDYsNyArMTAwNiw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKEcKICAgICAgICAgICAgIHgyIC09IHRvcFJpZ2h0LndpZHRoKCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4
LCB0eSwgeDIsIHR5ICsgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIEJTVG9wLCB0b3BDb2xvciwg
c3R5bGUtPmNvbG9yKCksIHRvcFN0eWxlLAorICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3Jh
cGhpY3NDb250ZXh0LCB4LCB0eSwgeDIsIHR5ICsgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIEJT
VG9wLCB0b3BDb2xvciwgdG9wU3R5bGUsCiAgICAgICAgICAgICAgICAgICAgaWdub3JlX2xlZnQg
PyAwIDogc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBpZ25vcmVfcmlnaHQgPyAwIDogc3R5bGUt
PmJvcmRlclJpZ2h0V2lkdGgoKSk7CiAKICAgICAgICAgaWYgKHJlbmRlclJhZGlpKSB7CkBAIC0x
MDM0LDcgKzEwMzQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihH
CiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IHVwcGVyIGxlZnQgYXJjCiAgICAgICAgICAgICAg
ICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBsZWZ0WCwgbGVmdFksIHRoaWNr
bmVzcywgdG9wTGVmdCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJTVG9wLCB0b3BDb2xvciwgc3R5bGUtPmNvbG9yKCksIHRv
cFN0eWxlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTVG9wLCB0b3BD
b2xvciwgdG9wU3R5bGUsIHRydWUpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseUxlZnRJbm5l
ckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwog
ICAgICAgICAgICAgfQpAQCAtMTA2MCw3ICsxMDYwLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3JkZXIoRwogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyB1cHBlciByaWdo
dCBhcmMKICAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQs
IHJpZ2h0WCwgbGVmdFksIHRoaWNrbmVzcywgdG9wUmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNl
Y29uZEFuZ2xlU3BhbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTVG9wLCB0b3BD
b2xvciwgc3R5bGUtPmNvbG9yKCksIHRvcFN0eWxlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBCU1RvcCwgdG9wQ29sb3IsIHRvcFN0eWxlLCBmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgaWYgKGFwcGx5UmlnaHRJbm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICAgICAgfQpAQCAtMTA4Myw3ICsxMDgz
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoRwogICAgICAgICAg
ICAgeDIgLT0gYm90dG9tUmlnaHQud2lkdGgoKTsKICAgICAgICAgfQogCi0gICAgICAgIGRyYXdM
aW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgsIHR5ICsgaCAtIHN0eWxlLT5ib3JkZXJC
b3R0b21XaWR0aCgpLCB4MiwgdHkgKyBoLCBCU0JvdHRvbSwgYm90dG9tQ29sb3IsIHN0eWxlLT5j
b2xvcigpLCBib3R0b21TdHlsZSwKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwgeCwgdHkgKyBoIC0gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHgyLCB0eSAr
IGgsIEJTQm90dG9tLCBib3R0b21Db2xvciwgYm90dG9tU3R5bGUsCiAgICAgICAgICAgICAgICAg
ICAgaWdub3JlX2xlZnQgPyAwIDogc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBpZ25vcmVfcmln
aHQgPyAwIDogc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSk7CiAKICAgICAgICAgaWYgKHJlbmRl
clJhZGlpKSB7CkBAIC0xMTExLDcgKzExMTEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEJvcmRlcihHCiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IGxvd2VyIGxlZnQgYXJj
CiAgICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBsZWZ0
WCwgbGVmdFksIHRoaWNrbmVzcywgYm90dG9tTGVmdCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFu
Z2xlU3BhbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTQm90dG9tLCBib3R0b21D
b2xvciwgc3R5bGUtPmNvbG9yKCksIGJvdHRvbVN0eWxlLCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJTQm90dG9tLCBib3R0b21Db2xvciwgYm90dG9tU3R5bGUsIHRydWUp
OwogICAgICAgICAgICAgICAgIGlmIChhcHBseUxlZnRJbm5lckNsaXApCiAgICAgICAgICAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICAgICAgfQpAQCAtMTEz
Myw3ICsxMTMzLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoRwog
CiAgICAgICAgICAgICAgICAgLy8gRHJhdyBsb3dlciByaWdodCBhcmMKICAgICAgICAgICAgICAg
ICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHJpZ2h0WCwgcmlnaHRZLCB0aGlj
a25lc3MsIGJvdHRvbVJpZ2h0LCBzZWNvbmRBbmdsZVN0YXJ0LCBzZWNvbmRBbmdsZVNwYW4sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU0JvdHRvbSwgYm90dG9tQ29sb3IsIHN0eWxl
LT5jb2xvcigpLCBib3R0b21TdHlsZSwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQlNCb3R0b20sIGJvdHRvbUNvbG9yLCBib3R0b21TdHlsZSwgZmFsc2UpOwogICAgICAg
ICAgICAgICAgIGlmIChhcHBseVJpZ2h0SW5uZXJDbGlwKQogICAgICAgICAgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KQEAgLTExNTYsNyArMTE1
Niw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEcKICAgICAgICAg
ICAgIHkyIC09IGJvdHRvbUxlZnQuaGVpZ2h0KCk7CiAgICAgICAgIH0KIAotICAgICAgICBkcmF3
TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCwgeSwgdHggKyBzdHlsZS0+Ym9yZGVy
TGVmdFdpZHRoKCksIHkyLCBCU0xlZnQsIGxlZnRDb2xvciwgc3R5bGUtPmNvbG9yKCksIGxlZnRT
dHlsZSwKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHgsIHks
IHR4ICsgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCB5MiwgQlNMZWZ0LCBsZWZ0Q29sb3IsIGxl
ZnRTdHlsZSwKICAgICAgICAgICAgICAgICAgICBpZ25vcmVfdG9wID8gMCA6IHN0eWxlLT5ib3Jk
ZXJUb3BXaWR0aCgpLCBpZ25vcmVfYm90dG9tID8gMCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0
aCgpKTsKIAogICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgKCF1cHBlckxlZnRCb3JkZXJTdHls
ZXNNYXRjaCB8fCAhbG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gpKSB7CkBAIC0xMTc5LDcgKzEx
NzksNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHCiAKICAgICAg
ICAgICAgICAgICAvLyBEcmF3IHRvcCBsZWZ0IGFyYwogICAgICAgICAgICAgICAgIGRyYXdBcmNG
b3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdG9wWCwgdG9wWSwgdGhpY2tuZXNzLCB0b3BMZWZ0
LCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQlNMZWZ0LCBsZWZ0Q29sb3IsIHN0eWxlLT5jb2xvcigpLCBsZWZ0U3R5bGUsIHRy
dWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNMZWZ0LCBsZWZ0Q29sb3IsIGxl
ZnRTdHlsZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5VG9wSW5uZXJDbGlwKQog
ICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAg
ICAgIH0KQEAgLTEyMDAsNyArMTIwMCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50Qm9yZGVyKEcKIAogICAgICAgICAgICAgICAgIC8vIERyYXcgYm90dG9tIGxlZnQgYXJjCiAg
ICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCBi
b3R0b21ZLCB0aGlja25lc3MsIGJvdHRvbUxlZnQsIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFu
Z2xlU3BhbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTTGVmdCwgbGVmdENvbG9y
LCBzdHlsZS0+Y29sb3IoKSwgbGVmdFN0eWxlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBCU0xlZnQsIGxlZnRDb2xvciwgbGVmdFN0eWxlLCBmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgaWYgKGFwcGx5Qm90dG9tSW5uZXJDbGlwKQogICAgICAgICAgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KQEAgLTEyMjUsNyArMTIy
NSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEcKICAgICAgICAg
ICAgIHkyIC09IGJvdHRvbVJpZ2h0LmhlaWdodCgpOwogICAgICAgICB9CiAKLSAgICAgICAgZHJh
d0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggKyB3IC0gc3R5bGUtPmJvcmRlclJp
Z2h0V2lkdGgoKSwgeSwgdHggKyB3LCB5MiwgQlNSaWdodCwgcmlnaHRDb2xvciwgc3R5bGUtPmNv
bG9yKCksIHJpZ2h0U3R5bGUsCisgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0Nv
bnRleHQsIHR4ICsgdyAtIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCksIHksIHR4ICsgdywgeTIs
IEJTUmlnaHQsIHJpZ2h0Q29sb3IsIHJpZ2h0U3R5bGUsCiAgICAgICAgICAgICAgICAgICAgaWdu
b3JlX3RvcCA/IDAgOiBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgaWdub3JlX2JvdHRvbSA/IDAg
OiBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7CiAKICAgICAgICAgaWYgKHJlbmRlclJhZGlp
ICYmICghdXBwZXJSaWdodEJvcmRlclN0eWxlc01hdGNoIHx8ICFsb3dlclJpZ2h0Qm9yZGVyU3R5
bGVzTWF0Y2gpKSB7CkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJvcmRlcihHCiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IHRvcCByaWdodCBh
cmMKICAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHRv
cFgsIHRvcFksIHRoaWNrbmVzcywgdG9wUmlnaHQsIGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmds
ZVNwYW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1JpZ2h0LCByaWdodENvbG9y
LCBzdHlsZS0+Y29sb3IoKSwgcmlnaHRTdHlsZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBCU1JpZ2h0LCByaWdodENvbG9yLCByaWdodFN0eWxlLCB0cnVlKTsKICAgICAg
ICAgICAgICAgICBpZiAoYXBwbHlUb3BJbm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICAgICAgfQpAQCAtMTI3MCw3ICsxMjcw
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoRwogCiAgICAgICAg
ICAgICAgICAgLy8gRHJhdyBib3R0b20gcmlnaHQgYXJjCiAgICAgICAgICAgICAgICAgZHJhd0Fy
Y0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBib3R0b21YLCBib3R0b21ZLCB0aGlja25lc3Ms
IGJvdHRvbVJpZ2h0LCBzZWNvbmRBbmdsZVN0YXJ0LCBzZWNvbmRBbmdsZVNwYW4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCU1JpZ2h0LCByaWdodENvbG9yLCBzdHlsZS0+Y29sb3Io
KSwgcmlnaHRTdHlsZSwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNS
aWdodCwgcmlnaHRDb2xvciwgcmlnaHRTdHlsZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgIGlm
IChhcHBseUJvdHRvbUlubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWVsZHNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmllbGRzZXQuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZpZWxkc2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlckZpZWxkc2V0LmgiCiAKKyNpbmNsdWRlICJDU1NQ
cm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAKQEAgLTE4MSw4ICsxODIsOCBAQCB2b2lkIFJlbmRlckZpZWxkc2V0Ojpw
YWludE1hc2soUGFpbnRJbmZvCiB2b2lkIFJlbmRlckZpZWxkc2V0OjpwYWludEJvcmRlck1pbnVz
TGVnZW5kKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsIGludCB0eSwg
aW50IHcsIGludCBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGludCBseCwgaW50IGx3LCBpbnQgbGIpCiB7Ci0g
ICAgY29uc3QgQ29sb3ImIHRjID0gc3R5bGUtPmJvcmRlclRvcENvbG9yKCk7Ci0gICAgY29uc3Qg
Q29sb3ImIGJjID0gc3R5bGUtPmJvcmRlckJvdHRvbUNvbG9yKCk7CisgICAgY29uc3QgQ29sb3Im
IHRjID0gdmlzaXRlZERlcGVuZGVudENvbG9yKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENv
bG9yKTsKKyAgICBjb25zdCBDb2xvciYgYmMgPSB2aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IpOwogCiAgICAgRUJvcmRlclN0eWxlIHRzID0g
c3R5bGUtPmJvcmRlclRvcFN0eWxlKCk7CiAgICAgRUJvcmRlclN0eWxlIGJzID0gc3R5bGUtPmJv
cmRlckJvdHRvbVN0eWxlKCk7CkBAIC0xOTksMjIgKzIwMCwyMiBAQCB2b2lkIFJlbmRlckZpZWxk
c2V0OjpwYWludEJvcmRlck1pbnVzTGVnCiAKICAgICBpZiAocmVuZGVyX3QpIHsKICAgICAgICAg
aWYgKGx4ID49IGJvcmRlckxlZnRXaWR0aCkKLSAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lk
ZShncmFwaGljc0NvbnRleHQsIHR4LCB0eSwgdHggKyBtaW4obHgsIHcpLCB0eSArIHN0eWxlLT5i
b3JkZXJUb3BXaWR0aCgpLCBCU1RvcCwgdGMsIHN0eWxlLT5jb2xvcigpLCB0cywKKyAgICAgICAg
ICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4LCB0eSwgdHggKyBtaW4o
bHgsIHcpLCB0eSArIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBCU1RvcCwgdGMsIHRzLAogICAg
ICAgICAgICAgICAgICAgICAgICAocmVuZGVyX2wgJiYgKGxzID09IERPVFRFRCB8fCBscyA9PSBE
QVNIRUQgfHwgbHMgPT0gRE9VQkxFKSA/IGJvcmRlckxlZnRXaWR0aCA6IDApLAogICAgICAgICAg
ICAgICAgICAgICAgICAobHggPj0gdyAmJiByZW5kZXJfciAmJiAocnMgPT0gRE9UVEVEIHx8IHJz
ID09IERBU0hFRCB8fCBycyA9PSBET1VCTEUpID8gYm9yZGVyUmlnaHRXaWR0aCA6IDApKTsKICAg
ICAgICAgaWYgKGx4ICsgbHcgPD0gIHcgLSBib3JkZXJSaWdodFdpZHRoKQotICAgICAgICAgICAg
ZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggKyBtYXgoMCwgbHggKyBsdyks
IHR5LCB0eCArIHcsIHR5ICsgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIEJTVG9wLCB0Yywgc3R5
bGUtPmNvbG9yKCksIHRzLAorICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwgdHggKyBtYXgoMCwgbHggKyBsdyksIHR5LCB0eCArIHcsIHR5ICsgc3R5bGUtPmJv
cmRlclRvcFdpZHRoKCksIEJTVG9wLCB0YywgdHMsCiAgICAgICAgICAgICAgICAgICAgICAgIChs
eCArIGx3IDw9IDAgJiYgcmVuZGVyX2wgJiYgKGxzID09IERPVFRFRCB8fCBscyA9PSBEQVNIRUQg
fHwgbHMgPT0gRE9VQkxFKSA/IGJvcmRlckxlZnRXaWR0aCA6IDApLAogICAgICAgICAgICAgICAg
ICAgICAgICAocmVuZGVyX3IgJiYgKHJzID09IERPVFRFRCB8fCBycyA9PSBEQVNIRUQgfHwgcnMg
PT0gRE9VQkxFKSA/IGJvcmRlclJpZ2h0V2lkdGggOiAwKSk7CiAgICAgfQogCiAgICAgaWYgKHJl
bmRlcl9iKQotICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCwg
dHkgKyBoIC0gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHR4ICsgdywgdHkgKyBoLCBCU0Jv
dHRvbSwgYmMsIHN0eWxlLT5jb2xvcigpLCBicywKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRl
KGdyYXBoaWNzQ29udGV4dCwgdHgsIHR5ICsgaCAtIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgp
LCB0eCArIHcsIHR5ICsgaCwgQlNCb3R0b20sIGJjLCBicywKICAgICAgICAgICAgICAgICAgICAo
cmVuZGVyX2wgJiYgKGxzID09IERPVFRFRCB8fCBscyA9PSBEQVNIRUQgfHwgbHMgPT0gRE9VQkxF
KSA/IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA6IDApLAogICAgICAgICAgICAgICAgICAgIChy
ZW5kZXJfciAmJiAocnMgPT0gRE9UVEVEIHx8IHJzID09IERBU0hFRCB8fCBycyA9PSBET1VCTEUp
ID8gc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSA6IDApKTsKIAogICAgIGlmIChyZW5kZXJfbCkg
ewotICAgICAgICBjb25zdCBDb2xvciYgbGMgPSBzdHlsZS0+Ym9yZGVyTGVmdENvbG9yKCk7Cisg
ICAgICAgIGNvbnN0IENvbG9yJiBsYyA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdHlsZSwgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpOwogICAgICAgICBpbnQgc3RhcnRZID0gdHk7CiAKICAg
ICAgICAgYm9vbCBpZ25vcmVfdG9wID0KQEAgLTIzMyw4ICsyMzQsOCBAQCB2b2lkIFJlbmRlckZp
ZWxkc2V0OjpwYWludEJvcmRlck1pbnVzTGVnCiAgICAgICAgICAgICBzdGFydFkgPSBsYjsKICAg
ICAgICAgfQogCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4
LCBzdGFydFksIHR4ICsgYm9yZGVyTGVmdFdpZHRoLCB0eSArIGgsIEJTTGVmdCwgbGMsIHN0eWxl
LT5jb2xvcigpLCBscywKLSAgICAgICAgICAgICAgICAgICBpZ25vcmVfdG9wID8gMCA6IHN0eWxl
LT5ib3JkZXJUb3BXaWR0aCgpLCBpZ25vcmVfYm90dG9tID8gMCA6IHN0eWxlLT5ib3JkZXJCb3R0
b21XaWR0aCgpKTsKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwg
dHgsIHN0YXJ0WSwgdHggKyBib3JkZXJMZWZ0V2lkdGgsIHR5ICsgaCwgQlNMZWZ0LCBsYywgbHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVfdG9wID8gMCA6IHN0eWxlLT5ib3Jk
ZXJUb3BXaWR0aCgpLCBpZ25vcmVfYm90dG9tID8gMCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0
aCgpKTsKICAgICB9CiAKICAgICBpZiAocmVuZGVyX3IpIHsKQEAgLTI1Nyw3ICsyNTgsNyBAQCB2
b2lkIFJlbmRlckZpZWxkc2V0OjpwYWludEJvcmRlck1pbnVzTGVnCiAgICAgICAgICAgICBzdGFy
dFkgPSBsYjsKICAgICAgICAgfQogCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGlj
c0NvbnRleHQsIHR4ICsgdyAtIGJvcmRlclJpZ2h0V2lkdGgsIHN0YXJ0WSwgdHggKyB3LCB0eSAr
IGgsIEJTUmlnaHQsIHJjLCBzdHlsZS0+Y29sb3IoKSwgcnMsCisgICAgICAgIGRyYXdMaW5lRm9y
Qm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4ICsgdyAtIGJvcmRlclJpZ2h0V2lkdGgsIHN0YXJ0
WSwgdHggKyB3LCB0eSArIGgsIEJTUmlnaHQsIHJjLCBycywKICAgICAgICAgICAgICAgICAgICBp
Z25vcmVfdG9wID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBpZ25vcmVfYm90dG9tID8g
MCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAgICB9CiB9CkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcwLDcgKzQ3MCw3IEBAIHZvaWQg
UmVuZGVySW1hZ2U6OnBhaW50Rm9jdXNSaW5ncyhQYWludEkKICAgICAgICAgCiAgICAgICAgIFZl
Y3RvcjxQYXRoPiBmb2N1c1JpbmdQYXRoczsKICAgICAgICAgZm9jdXNSaW5nUGF0aHMuYXBwZW5k
KGFyZWFFbGVtZW50LT5nZXRQYXRoKHRoaXMpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUGF0aHMsIHN0eWxlLT5vdXRsaW5lV2lkdGgoKSwgc3R5
bGUtPm91dGxpbmVPZmZzZXQoKSwgc3R5bGUtPm91dGxpbmVDb2xvcigpKTsKKyAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUGF0aHMsIHN0eWxlLT5vdXRs
aW5lV2lkdGgoKSwgc3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgdmlzaXRlZERlcGVuZGVudENvbG9y
KHN0eWxlLCBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcikpOwogICAgICAgICBicmVhazsKICAgICB9
CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHJldmlzaW9uIDU2ODU5KQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTY1LDIxICs5NjUsMjAgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZShHcmFwaGlj
cwogICAgIGlmICghaGFzT3V0bGluZSgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYg
KHN0eWxlKCktPm91dGxpbmVTdHlsZUlzQXV0bygpIHx8IGhhc091dGxpbmVBbm5vdGF0aW9uKCkp
IHsKLSAgICAgICAgaW50IG93ID0gc3R5bGUoKS0+b3V0bGluZVdpZHRoKCk7Ci0gICAgICAgIENv
bG9yIG9jID0gc3R5bGUoKS0+b3V0bGluZUNvbG9yKCk7Ci0gICAgICAgIGlmICghb2MuaXNWYWxp
ZCgpKQotICAgICAgICAgICAgb2MgPSBzdHlsZSgpLT5jb2xvcigpOworICAgIFJlbmRlclN0eWxl
KiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKKyAgICBpZiAoc3R5bGVUb1VzZS0+b3V0bGluZVN0eWxl
SXNBdXRvKCkgfHwgaGFzT3V0bGluZUFubm90YXRpb24oKSkgeworICAgICAgICBpbnQgb3cgPSBz
dHlsZVRvVXNlLT5vdXRsaW5lV2lkdGgoKTsKKyAgICAgICAgQ29sb3Igb2MgPSB2aXNpdGVkRGVw
ZW5kZW50Q29sb3Ioc3R5bGVUb1VzZSwgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpOwogCiAgICAg
ICAgIFZlY3RvcjxJbnRSZWN0PiBmb2N1c1JpbmdSZWN0czsKICAgICAgICAgYWRkRm9jdXNSaW5n
UmVjdHMoZm9jdXNSaW5nUmVjdHMsIHR4LCB0eSk7Ci0gICAgICAgIGlmIChzdHlsZSgpLT5vdXRs
aW5lU3R5bGVJc0F1dG8oKSkKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ZvY3Vz
UmluZyhmb2N1c1JpbmdSZWN0cywgb3csIHN0eWxlKCktPm91dGxpbmVPZmZzZXQoKSwgb2MpOwor
ICAgICAgICBpZiAoc3R5bGVUb1VzZS0+b3V0bGluZVN0eWxlSXNBdXRvKCkpCisgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUmVjdHMsIG93LCBzdHls
ZVRvVXNlLT5vdXRsaW5lT2Zmc2V0KCksIG9jKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
YWRkUERGVVJMUmVjdChncmFwaGljc0NvbnRleHQsIHVuaW9uUmVjdChmb2N1c1JpbmdSZWN0cykp
OwogICAgIH0KIAotICAgIGlmIChzdHlsZSgpLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBzdHls
ZSgpLT5vdXRsaW5lU3R5bGUoKSA9PSBCTk9ORSkKKyAgICBpZiAoc3R5bGVUb1VzZS0+b3V0bGlu
ZVN0eWxlSXNBdXRvKCkgfHwgc3R5bGVUb1VzZS0+b3V0bGluZVN0eWxlKCkgPT0gQk5PTkUpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0czsKQEAgLTEwMDAsMTEg
Kzk5OSwxMCBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKEdyYXBoaWNzCiB2b2lk
IFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBsYXN0bGluZSwgY29uc3QgSW50UmVjdCYgdGhpc2xp
bmUsIGNvbnN0IEludFJlY3QmIG5leHRsaW5lKQogewotICAgIGludCBvdyA9IHN0eWxlKCktPm91
dGxpbmVXaWR0aCgpOwotICAgIEVCb3JkZXJTdHlsZSBvcyA9IHN0eWxlKCktPm91dGxpbmVTdHls
ZSgpOwotICAgIENvbG9yIG9jID0gc3R5bGUoKS0+b3V0bGluZUNvbG9yKCk7Ci0gICAgaWYgKCFv
Yy5pc1ZhbGlkKCkpCi0gICAgICAgIG9jID0gc3R5bGUoKS0+Y29sb3IoKTsKKyAgICBSZW5kZXJT
dHlsZSogc3R5bGVUb1VzZSA9IHN0eWxlKCk7CisgICAgaW50IG93ID0gc3R5bGVUb1VzZS0+b3V0
bGluZVdpZHRoKCk7CisgICAgRUJvcmRlclN0eWxlIG9zID0gc3R5bGVUb1VzZS0+b3V0bGluZVN0
eWxlKCk7CisgICAgQ29sb3Igb2MgPSB2aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3R5bGVUb1VzZSwg
Q1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpOwogCiAgICAgaW50IG9mZnNldCA9IHN0eWxlKCktPm91
dGxpbmVPZmZzZXQoKTsKIApAQCAtMTAyMCw3ICsxMDE4LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6
OnBhaW50T3V0bGluZUZvckxpbmUoRwogICAgICAgICAgICAgICAgbCwKICAgICAgICAgICAgICAg
IGIgKyAobmV4dGxpbmUuaXNFbXB0eSgpIHx8IHRoaXNsaW5lLngoKSA8PSBuZXh0bGluZS54KCkg
fHwgKG5leHRsaW5lLnJpZ2h0KCkgLSAxKSA8PSB0aGlzbGluZS54KCkgPyBvdyA6IDApLAogICAg
ICAgICAgICAgICAgQlNMZWZ0LAotICAgICAgICAgICAgICAgb2MsIHN0eWxlKCktPmNvbG9yKCks
IG9zLAorICAgICAgICAgICAgICAgb2MsIG9zLAogICAgICAgICAgICAgICAgKGxhc3RsaW5lLmlz
RW1wdHkoKSB8fCB0aGlzbGluZS54KCkgPCBsYXN0bGluZS54KCkgfHwgKGxhc3RsaW5lLnJpZ2h0
KCkgLSAxKSA8PSB0aGlzbGluZS54KCkgPyBvdyA6IC1vdyksCiAgICAgICAgICAgICAgICAobmV4
dGxpbmUuaXNFbXB0eSgpIHx8IHRoaXNsaW5lLngoKSA8PSBuZXh0bGluZS54KCkgfHwgKG5leHRs
aW5lLnJpZ2h0KCkgLSAxKSA8PSB0aGlzbGluZS54KCkgPyBvdyA6IC1vdykpOwogICAgIApAQCAt
MTAzMSw3ICsxMDI5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUo
RwogICAgICAgICAgICAgICAgciArIG93LAogICAgICAgICAgICAgICAgYiArIChuZXh0bGluZS5p
c0VtcHR5KCkgfHwgbmV4dGxpbmUucmlnaHQoKSA8PSB0aGlzbGluZS5yaWdodCgpIHx8ICh0aGlz
bGluZS5yaWdodCgpIC0gMSkgPD0gbmV4dGxpbmUueCgpID8gb3cgOiAwKSwKICAgICAgICAgICAg
ICAgIEJTUmlnaHQsCi0gICAgICAgICAgICAgICBvYywgc3R5bGUoKS0+Y29sb3IoKSwgb3MsCisg
ICAgICAgICAgICAgICBvYywgb3MsCiAgICAgICAgICAgICAgICAobGFzdGxpbmUuaXNFbXB0eSgp
IHx8IGxhc3RsaW5lLnJpZ2h0KCkgPCB0aGlzbGluZS5yaWdodCgpIHx8ICh0aGlzbGluZS5yaWdo
dCgpIC0gMSkgPD0gbGFzdGxpbmUueCgpID8gb3cgOiAtb3cpLAogICAgICAgICAgICAgICAgKG5l
eHRsaW5lLmlzRW1wdHkoKSB8fCBuZXh0bGluZS5yaWdodCgpIDw9IHRoaXNsaW5lLnJpZ2h0KCkg
fHwgKHRoaXNsaW5lLnJpZ2h0KCkgLSAxKSA8PSBuZXh0bGluZS54KCkgPyBvdyA6IC1vdykpOwog
ICAgIC8vIHVwcGVyIGVkZ2UKQEAgLTEwNDEsNyArMTAzOSw3IEBAIHZvaWQgUmVuZGVySW5saW5l
OjpwYWludE91dGxpbmVGb3JMaW5lKEcKICAgICAgICAgICAgICAgICAgICB0IC0gb3csCiAgICAg
ICAgICAgICAgICAgICAgbWluKHIrb3csIChsYXN0bGluZS5pc0VtcHR5KCkgPyAxMDAwMDAwIDog
dHggKyBsYXN0bGluZS54KCkpKSwKICAgICAgICAgICAgICAgICAgICB0ICwKLSAgICAgICAgICAg
ICAgICAgICBCU1RvcCwgb2MsIHN0eWxlKCktPmNvbG9yKCksIG9zLAorICAgICAgICAgICAgICAg
ICAgIEJTVG9wLCBvYywgb3MsCiAgICAgICAgICAgICAgICAgICAgb3csCiAgICAgICAgICAgICAg
ICAgICAgKCFsYXN0bGluZS5pc0VtcHR5KCkgJiYgdHggKyBsYXN0bGluZS54KCkgKyAxIDwgciAr
IG93KSA/IC1vdyA6IG93KTsKICAgICAKQEAgLTEwNTEsNyArMTA0OSw3IEBAIHZvaWQgUmVuZGVy
SW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEcKICAgICAgICAgICAgICAgICAgICB0IC0gb3cs
CiAgICAgICAgICAgICAgICAgICAgciArIG93LAogICAgICAgICAgICAgICAgICAgIHQgLAotICAg
ICAgICAgICAgICAgICAgIEJTVG9wLCBvYywgc3R5bGUoKS0+Y29sb3IoKSwgb3MsCisgICAgICAg
ICAgICAgICAgICAgQlNUb3AsIG9jLCBvcywKICAgICAgICAgICAgICAgICAgICAoIWxhc3RsaW5l
LmlzRW1wdHkoKSAmJiBsIC0gb3cgPCB0eCArIGxhc3RsaW5lLnJpZ2h0KCkpID8gLW93IDogb3cs
CiAgICAgICAgICAgICAgICAgICAgb3cpOwogICAgIApAQCAtMTA2Miw3ICsxMDYwLDcgQEAgdm9p
ZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoRwogICAgICAgICAgICAgICAgICAg
IGIsCiAgICAgICAgICAgICAgICAgICAgbWluKHIgKyBvdywgIW5leHRsaW5lLmlzRW1wdHkoKSA/
IHR4ICsgbmV4dGxpbmUueCgpICsgMSA6IDEwMDAwMDApLAogICAgICAgICAgICAgICAgICAgIGIg
KyBvdywKLSAgICAgICAgICAgICAgICAgICBCU0JvdHRvbSwgb2MsIHN0eWxlKCktPmNvbG9yKCks
IG9zLAorICAgICAgICAgICAgICAgICAgIEJTQm90dG9tLCBvYywgb3MsCiAgICAgICAgICAgICAg
ICAgICAgb3csCiAgICAgICAgICAgICAgICAgICAgKCFuZXh0bGluZS5pc0VtcHR5KCkgJiYgdHgg
KyBuZXh0bGluZS54KCkgKyAxIDwgciArIG93KSA/IC1vdyA6IG93KTsKICAgICAKQEAgLTEwNzIs
NyArMTA3MCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEcKICAg
ICAgICAgICAgICAgICAgICBiLAogICAgICAgICAgICAgICAgICAgIHIgKyBvdywKICAgICAgICAg
ICAgICAgICAgICBiICsgb3csCi0gICAgICAgICAgICAgICAgICAgQlNCb3R0b20sIG9jLCBzdHls
ZSgpLT5jb2xvcigpLCBvcywKKyAgICAgICAgICAgICAgICAgICBCU0JvdHRvbSwgb2MsIG9zLAog
ICAgICAgICAgICAgICAgICAgICghbmV4dGxpbmUuaXNFbXB0eSgpICYmIGwgLSBvdyA8IHR4ICsg
bmV4dGxpbmUucmlnaHQoKSkgPyAtb3cgOiBvdywKICAgICAgICAgICAgICAgICAgICBvdyk7CiB9
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjk4
LDcgKzY5OCw3IEBAIGJvb2wgUmVuZGVyT2JqZWN0OjptdXN0UmVwYWludEJhY2tncm91bmQKIH0K
IAogdm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3hTaWRlIHMsIENvbG9yIGMsIGNvbnN0
IENvbG9yJiB0ZXh0Y29sb3IsIEVCb3JkZXJTdHlsZSBzdHlsZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQm94U2lkZSBzLCBDb2xvciBjLCBFQm9yZGVyU3R5bGUgc3R5
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhZGpidzEsIGlu
dCBhZGpidzIpCiB7CiAgICAgaW50IHdpZHRoID0gKHMgPT0gQlNUb3AgfHwgcyA9PSBCU0JvdHRv
bSA/IHkyIC0geTEgOiB4MiAtIHgxKTsKQEAgLTcwNiwxMyArNzA2LDYgQEAgdm9pZCBSZW5kZXJP
YmplY3Q6OmRyYXdMaW5lRm9yQm94U2lkZShHcgogICAgIGlmIChzdHlsZSA9PSBET1VCTEUgJiYg
d2lkdGggPCAzKQogICAgICAgICBzdHlsZSA9IFNPTElEOwogCi0gICAgaWYgKCFjLmlzVmFsaWQo
KSkgewotICAgICAgICBpZiAoc3R5bGUgPT0gSU5TRVQgfHwgc3R5bGUgPT0gT1VUU0VUIHx8IHN0
eWxlID09IFJJREdFIHx8IHN0eWxlID09IEdST09WRSkKLSAgICAgICAgICAgIGMuc2V0UkdCKDIz
OCwgMjM4LCAyMzgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjID0gdGV4dGNvbG9yOwot
ICAgIH0KLQogICAgIHN3aXRjaCAoc3R5bGUpIHsKICAgICAgICAgY2FzZSBCTk9ORToKICAgICAg
ICAgY2FzZSBCSElEREVOOgpAQCAtNzY0LDM0ICs3NTcsMzQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6
OmRyYXdMaW5lRm9yQm94U2lkZShHcgogICAgICAgICAgICAgICAgICAgICBjYXNlIEJTVG9wOgog
ICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4
dCwgeDEgKyBtYXgoKC1hZGpidzEgKiAyICsgMSkgLyAzLCAwKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeTEsIHgyIC0gbWF4KCgtYWRqYncyICogMiArIDEpIC8gMywgMCks
IHkxICsgdGhpcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRl
eHRjb2xvciwgU09MSUQsIGFkamJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIFNPTElELCBhZGpidzFiaWd0aGlyZCwg
YWRqYncyYmlndGhpcmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgeDEgKyBtYXgoKGFkamJ3MSAqIDIgKyAxKSAvIDMsIDApLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MiAtIHRoaXJkLCB4MiAtIG1heCgo
YWRqYncyICogMiArIDEpIC8gMywgMCksIHkyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmln
dGhpcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCBTT0xJRCwg
YWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEJTTGVmdDoKICAgICAgICAgICAgICAg
ICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgxLCB5MSArIG1h
eCgoLWFkamJ3MSAqIDIgKyAxKSAvIDMsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MSArIHRoaXJkLCB5MiAtIG1heCgoLWFkamJ3MiAqIDIgKyAxKSAvIDMsIDApLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNPTElE
LCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzLCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJk
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0Nv
bnRleHQsIHgyIC0gdGhpcmQsIHkxICsgbWF4KChhZGpidzEgKiAyICsgMSkgLyAzLCAwKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsIHkyIC0gbWF4KChhZGpidzIgKiAy
ICsgMSkgLyAzLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywg
dGV4dGNvbG9yLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgU09MSUQsIGFkamJ3MWJpZ3RoaXJk
LCBhZGpidzJiaWd0aGlyZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBCU0JvdHRvbToKICAgICAgICAgICAgICAgICAgICAgICAgIGRy
YXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgxICsgbWF4KChhZGpidzEgKiAyICsg
MSkgLyAzLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTEsIHgyIC0g
bWF4KChhZGpidzIgKiAyICsgMSkgLyAzLCAwKSwgeTEgKyB0aGlyZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNvbG9yLCBTT0xJRCwgYWRqYncxYmlndGhp
cmQsIGFkamJ3MmJpZ3RoaXJkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cywgYywgU09MSUQsIGFkamJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSArIG1h
eCgoLWFkamJ3MSAqIDIgKyAxKSAvIDMsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB5MiAtIHRoaXJkLCB4MiAtIG1heCgoLWFkamJ3MiAqIDIgKyAxKSAvIDMsIDApLCB5
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNvbG9yLCBT
T0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcywgYywgU09MSUQsIGFkamJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0
aGlyZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBCU1JpZ2h0OgogICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgeDEsIHkxICsgbWF4KChhZGpidzEgKiAyICsgMSkgLyAzLCAw
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEgKyB0aGlyZCwgeTIgLSBt
YXgoKGFkamJ3MiAqIDIgKyAxKSAvIDMsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmln
dGhpcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCBTT0xJRCwg
YWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgyIC0gdGhpcmQsIHkxICsgbWF4
KCgtYWRqYncxICogMiArIDEpIC8gMywgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHgyLCB5MiAtIG1heCgoLWFkamJ3MiAqIDIgKyAxKSAvIDMsIDApLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNPTElELCBhZGpidzFi
aWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzLCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04MTgsMjcgKzgxMSwyNyBAQCB2b2lk
IFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyCiAgICAgICAgICAgICBzd2l0Y2gg
KHMpIHsKICAgICAgICAgICAgICAgICBjYXNlIEJTVG9wOgogICAgICAgICAgICAgICAgICAgICBk
cmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSArIG1heCgtYWRqYncxLCAwKSAv
IDIsIHkxLCB4MiAtIG1heCgtYWRqYncyLCAwKSAvIDIsICh5MSArIHkyICsgMSkgLyAyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xvciwgczEsIGFkamJ3MWJp
Z2hhbGYsIGFkamJ3MmJpZ2hhbGYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMs
IGMsIHMxLCBhZGpidzFiaWdoYWxmLCBhZGpidzJiaWdoYWxmKTsKICAgICAgICAgICAgICAgICAg
ICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEgKyBtYXgoYWRqYncxICsg
MSwgMCkgLyAyLCAoeTEgKyB5MiArIDEpIC8gMiwgeDIgLSBtYXgoYWRqYncyICsgMSwgMCkgLyAy
LCB5MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIHMy
LCBhZGpidzEgLyAyLCBhZGpidzIgLyAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzLCBjLCBzMiwgYWRqYncxIC8gMiwgYWRqYncyIC8gMik7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQlNMZWZ0OgogICAgICAgICAgICAgICAgICAg
ICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSwgeTEgKyBtYXgoLWFkamJ3
MSwgMCkgLyAyLCAoeDEgKyB4MiArIDEpIC8gMiwgeTIgLSBtYXgoLWFkamJ3MiwgMCkgLyAyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xvciwgczEsIGFkamJ3
MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHMsIGMsIHMxLCBhZGpidzFiaWdoYWxmLCBhZGpidzJiaWdoYWxmKTsKICAgICAgICAgICAgICAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgKHgxICsgeDIgKyAxKSAv
IDIsIHkxICsgbWF4KGFkamJ3MSArIDEsIDApIC8gMiwgeDIsIHkyIC0gbWF4KGFkamJ3MiArIDEs
IDApIC8gMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29sb3Is
IHMyLCBhZGpidzEgLyAyLCBhZGpidzIgLyAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzLCBjLCBzMiwgYWRqYncxIC8gMiwgYWRqYncyIC8gMik7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQlNCb3R0b206CiAgICAgICAgICAgICAg
ICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgxICsgbWF4KGFkamJ3
MSwgMCkgLyAyLCB5MSwgeDIgLSBtYXgoYWRqYncyLCAwKSAvIDIsICh5MSArIHkyICsgMSkgLyAy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xvciwgczIsIGFk
amJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHMsIGMsIHMyLCBhZGpidzFiaWdoYWxmLCBhZGpidzJiaWdoYWxmKTsKICAgICAgICAgICAg
ICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEgKyBtYXgoLWFk
amJ3MSArIDEsIDApIC8gMiwgKHkxICsgeTIgKyAxKSAvIDIsIHgyIC0gbWF4KC1hZGpidzIgKyAx
LCAwKSAvIDIsIHkyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRj
b2xvciwgczEsIGFkamJ3MS8yLCBhZGpidzIvMik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcywgYywgczEsIGFkamJ3MS8yLCBhZGpidzIvMik7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQlNSaWdodDoKICAgICAgICAgICAgICAgICAg
ICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEsIHkxICsgbWF4KGFkamJ3
MSwgMCkgLyAyLCAoeDEgKyB4MiArIDEpIC8gMiwgeTIgLSBtYXgoYWRqYncyLCAwKSAvIDIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNvbG9yLCBzMiwgYWRqYncx
YmlnaGFsZiwgYWRqYncyYmlnaGFsZik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cywgYywgczIsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOwogICAgICAgICAgICAgICAg
ICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCAoeDEgKyB4MiArIDEpIC8g
MiwgeTEgKyBtYXgoLWFkamJ3MSArIDEsIDApIC8gMiwgeDIsIHkyIC0gbWF4KC1hZGpidzIgKyAx
LCAwKSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNvbG9y
LCBzMSwgYWRqYncxLzIsIGFkamJ3Mi8yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzLCBjLCBzMSwgYWRqYncxLzIsIGFkamJ3Mi8yKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTg5NCwxOSArODg3LDEy
IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3TGluZUZvckJveFNpZGUoR3IKIH0KIAogdm9pZCBS
ZW5kZXJPYmplY3Q6OmRyYXdBcmNGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBpbnQgeCwgaW50IHksIGZsb2F0IHRoaWNrbmVzcywgSW50U2l6ZSByYWRpdXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFuZ2xlU3RhcnQsIGludCBh
bmdsZVNwYW4sIEJveFNpZGUgcywgQ29sb3IgYywgY29uc3QgQ29sb3ImIHRleHRDb2xvciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYW5nbGVTdGFydCwgaW50IGFu
Z2xlU3BhbiwgQm94U2lkZSBzLCBDb2xvciBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVCb3JkZXJTdHlsZSBzdHlsZSwgYm9vbCBmaXJzdENvcm5lcikKIHsKICAgICBp
ZiAoKHN0eWxlID09IERPVUJMRSAmJiB0aGlja25lc3MgLyAyIDwgMykgfHwgKChzdHlsZSA9PSBS
SURHRSB8fCBzdHlsZSA9PSBHUk9PVkUpICYmIHRoaWNrbmVzcyAvIDIgPCAyKSkKICAgICAgICAg
c3R5bGUgPSBTT0xJRDsKIAotICAgIGlmICghYy5pc1ZhbGlkKCkpIHsKLSAgICAgICAgaWYgKHN0
eWxlID09IElOU0VUIHx8IHN0eWxlID09IE9VVFNFVCB8fCBzdHlsZSA9PSBSSURHRSB8fCBzdHls
ZSA9PSBHUk9PVkUpCi0gICAgICAgICAgICBjLnNldFJHQigyMzgsIDIzOCwgMjM4KTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgYyA9IHRleHRDb2xvcjsKLSAgICB9Ci0KICAgICBzd2l0Y2gg
KHN0eWxlKSB7CiAgICAgICAgIGNhc2UgQk5PTkU6CiAgICAgICAgIGNhc2UgQkhJRERFTjoKQEAg
LTk5NCwzMyArOTgwLDMyIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRQREZVUkxSZWN0KEdyYXBo
aWMKICAgICBjb250ZXh0LT5zZXRVUkxGb3JSZWN0KG4tPmRvY3VtZW50KCktPmNvbXBsZXRlVVJM
KGhyZWYpLCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0bGluZShHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHksIGludCB3LCBpbnQg
aCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQordm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0
bGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHksIGlu
dCB3LCBpbnQgaCkKIHsKICAgICBpZiAoIWhhc091dGxpbmUoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaW50IG93ID0gc3R5bGUtPm91dGxpbmVXaWR0aCgpOwotICAgIEVCb3JkZXJTdHlsZSBv
cyA9IHN0eWxlLT5vdXRsaW5lU3R5bGUoKTsKKyAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9
IHN0eWxlKCk7CisgICAgaW50IG93ID0gc3R5bGVUb1VzZS0+b3V0bGluZVdpZHRoKCk7CisgICAg
RUJvcmRlclN0eWxlIG9zID0gc3R5bGVUb1VzZS0+b3V0bGluZVN0eWxlKCk7CiAKLSAgICBDb2xv
ciBvYyA9IHN0eWxlLT5vdXRsaW5lQ29sb3IoKTsKLSAgICBpZiAoIW9jLmlzVmFsaWQoKSkKLSAg
ICAgICAgb2MgPSBzdHlsZS0+Y29sb3IoKTsKKyAgICBDb2xvciBvYyA9IHZpc2l0ZWREZXBlbmRl
bnRDb2xvcihzdHlsZVRvVXNlLCBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcik7CiAKLSAgICBpbnQg
b2Zmc2V0ID0gc3R5bGUtPm91dGxpbmVPZmZzZXQoKTsKKyAgICBpbnQgb2Zmc2V0ID0gc3R5bGVU
b1VzZS0+b3V0bGluZU9mZnNldCgpOwogCi0gICAgaWYgKHN0eWxlLT5vdXRsaW5lU3R5bGVJc0F1
dG8oKSB8fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpKSB7Ci0gICAgICAgIGlmICghdGhlbWUoKS0+
c3VwcG9ydHNGb2N1c1Jpbmcoc3R5bGUpKSB7CisgICAgaWYgKHN0eWxlVG9Vc2UtPm91dGxpbmVT
dHlsZUlzQXV0bygpIHx8IGhhc091dGxpbmVBbm5vdGF0aW9uKCkpIHsKKyAgICAgICAgaWYgKCF0
aGVtZSgpLT5zdXBwb3J0c0ZvY3VzUmluZyhzdHlsZVRvVXNlKSkgewogICAgICAgICAgICAgLy8g
T25seSBwYWludCB0aGUgZm9jdXMgcmluZyBieSBoYW5kIGlmIHRoZSB0aGVtZSBpc24ndCBhYmxl
IHRvIGRyYXcgdGhlIGZvY3VzIHJpbmcuCiAgICAgICAgICAgICBWZWN0b3I8SW50UmVjdD4gZm9j
dXNSaW5nUmVjdHM7CiAgICAgICAgICAgICBhZGRGb2N1c1JpbmdSZWN0cyhmb2N1c1JpbmdSZWN0
cywgdHgsIHR5KTsKLSAgICAgICAgICAgIGlmIChzdHlsZS0+b3V0bGluZVN0eWxlSXNBdXRvKCkp
CisgICAgICAgICAgICBpZiAoc3R5bGVUb1VzZS0+b3V0bGluZVN0eWxlSXNBdXRvKCkpCiAgICAg
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3Rz
LCBvdywgb2Zmc2V0LCBvYyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYWRk
UERGVVJMUmVjdChncmFwaGljc0NvbnRleHQsIHVuaW9uUmVjdChmb2N1c1JpbmdSZWN0cykpOwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHN0eWxlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8
fCBzdHlsZS0+b3V0bGluZVN0eWxlKCkgPT0gQk5PTkUpCisgICAgaWYgKHN0eWxlVG9Vc2UtPm91
dGxpbmVTdHlsZUlzQXV0bygpIHx8IHN0eWxlVG9Vc2UtPm91dGxpbmVTdHlsZSgpID09IEJOT05F
KQogICAgICAgICByZXR1cm47CiAKICAgICB0eCAtPSBvZmZzZXQ7CkBAIC0xMDMxLDE3ICsxMDE2
LDEwIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpwYWludE91dGxpbmUoR3JhcGhpY3MKICAgICBpZiAo
aCA8IDAgfHwgdyA8IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIGRyYXdMaW5lRm9yQm94U2lk
ZShncmFwaGljc0NvbnRleHQsIHR4IC0gb3csIHR5IC0gb3csIHR4LCB0eSArIGggKyBvdywKLSAg
ICAgICAgICAgICAgIEJTTGVmdCwgQ29sb3Iob2MpLCBzdHlsZS0+Y29sb3IoKSwgb3MsIG93LCBv
dyk7Ci0KLSAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCAtIG93LCB0
eSAtIG93LCB0eCArIHcgKyBvdywgdHksCi0gICAgICAgICAgICAgICBCU1RvcCwgQ29sb3Iob2Mp
LCBzdHlsZS0+Y29sb3IoKSwgb3MsIG93LCBvdyk7Ci0KLSAgICBkcmF3TGluZUZvckJveFNpZGUo
Z3JhcGhpY3NDb250ZXh0LCB0eCArIHcsIHR5IC0gb3csIHR4ICsgdyArIG93LCB0eSArIGggKyBv
dywKLSAgICAgICAgICAgICAgIEJTUmlnaHQsIENvbG9yKG9jKSwgc3R5bGUtPmNvbG9yKCksIG9z
LCBvdywgb3cpOwotCi0gICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHgg
LSBvdywgdHkgKyBoLCB0eCArIHcgKyBvdywgdHkgKyBoICsgb3csCi0gICAgICAgICAgICAgICBC
U0JvdHRvbSwgQ29sb3Iob2MpLCBzdHlsZS0+Y29sb3IoKSwgb3MsIG93LCBvdyk7CisgICAgZHJh
d0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggLSBvdywgdHkgLSBvdywgdHgsIHR5
ICsgaCArIG93LCBCU0xlZnQsIG9jLCBvcywgb3csIG93KTsKKyAgICBkcmF3TGluZUZvckJveFNp
ZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCAtIG93LCB0eSAtIG93LCB0eCArIHcgKyBvdywgdHksIEJT
VG9wLCBvYywgb3MsIG93LCBvdyk7CisgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29u
dGV4dCwgdHggKyB3LCB0eSAtIG93LCB0eCArIHcgKyBvdywgdHkgKyBoICsgb3csIEJTUmlnaHQs
IG9jLCBvcywgb3csIG93KTsKKyAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0
LCB0eCAtIG93LCB0eSArIGgsIHR4ICsgdyArIG93LCB0eSArIGggKyBvdywgQlNCb3R0b20sIG9j
LCBvcywgb3csIG93KTsKIH0KIAogSW50UmVjdCBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRp
bmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtcykKQEAgLTIyMDMsMjEgKzIxODEsMTcgQEAgUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyT2JqZWN0OjpnZQogICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZSgpOwogfQogCi1zdGF0aWMgQ29sb3IgZGVjb3JhdGlvbkNvbG9yKFJlbmRlclN0eWxl
KiBzdHlsZSkKK3N0YXRpYyBDb2xvciBkZWNvcmF0aW9uQ29sb3IoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikKIHsKICAgICBDb2xvciByZXN1bHQ7Ci0gICAgaWYgKHN0eWxlLT50ZXh0U3Ryb2tlV2lk
dGgoKSA+IDApIHsKKyAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnRleHRTdHJva2VXaWR0aCgp
ID4gMCkgewogICAgICAgICAvLyBQcmVmZXIgc3Ryb2tlIGNvbG9yIGlmIHBvc3NpYmxlIGJ1dCBu
b3QgaWYgaXQncyBmdWxseSB0cmFuc3BhcmVudC4KLSAgICAgICAgcmVzdWx0ID0gc3R5bGUtPnRl
eHRTdHJva2VDb2xvcigpOwotICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCi0gICAgICAg
ICAgICByZXN1bHQgPSBzdHlsZS0+Y29sb3IoKTsKKyAgICAgICAgcmVzdWx0ID0gcmVuZGVyZXIt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcihyZW5kZXJlci0+c3R5bGUoKSwgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U3Ryb2tlQ29sb3IpOwogICAgICAgICBpZiAocmVzdWx0LmFscGhhKCkpCiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICByZXN1bHQgPSBzdHlsZS0+dGV4
dEZpbGxDb2xvcigpOwotICAgIGlmICghcmVzdWx0LmlzVmFsaWQoKSkKLSAgICAgICAgcmVzdWx0
ID0gc3R5bGUtPmNvbG9yKCk7CisgICAgcmVzdWx0ID0gcmVuZGVyZXItPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihyZW5kZXJlci0+c3R5bGUoKSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9y
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMjMwLDE1ICsyMjA0LDE1IEBAIHZvaWQg
UmVuZGVyT2JqZWN0OjpnZXRUZXh0RGVjb3JhdGlvbkNvbG8KICAgICAgICAgaWYgKGN1cnJEZWNz
KSB7CiAgICAgICAgICAgICBpZiAoY3VyckRlY3MgJiBVTkRFUkxJTkUpIHsKICAgICAgICAgICAg
ICAgICBkZWNvcmF0aW9ucyAmPSB+VU5ERVJMSU5FOwotICAgICAgICAgICAgICAgIHVuZGVybGlu
ZSA9IGRlY29yYXRpb25Db2xvcihjdXJyLT5zdHlsZSgpKTsKKyAgICAgICAgICAgICAgICB1bmRl
cmxpbmUgPSBkZWNvcmF0aW9uQ29sb3IoY3Vycik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAoY3VyckRlY3MgJiBPVkVSTElORSkgewogICAgICAgICAgICAgICAgIGRlY29yYXRpb25z
ICY9IH5PVkVSTElORTsKLSAgICAgICAgICAgICAgICBvdmVybGluZSA9IGRlY29yYXRpb25Db2xv
cihjdXJyLT5zdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBvdmVybGluZSA9IGRlY29yYXRpb25D
b2xvcihjdXJyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjdXJyRGVjcyAmIExJ
TkVfVEhST1VHSCkgewogICAgICAgICAgICAgICAgIGRlY29yYXRpb25zICY9IH5MSU5FX1RIUk9V
R0g7Ci0gICAgICAgICAgICAgICAgbGluZXRocm91Z2ggPSBkZWNvcmF0aW9uQ29sb3IoY3Vyci0+
c3R5bGUoKSk7CisgICAgICAgICAgICAgICAgbGluZXRocm91Z2ggPSBkZWNvcmF0aW9uQ29sb3Io
Y3Vycik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgY3VyciA9IGN1cnItPnBh
cmVudCgpOwpAQCAtMjI1MCwxMiArMjIyNCwxMDkgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRl
eHREZWNvcmF0aW9uQ29sbwogICAgIC8vIElmIHdlIGJhaWxlZCBvdXQsIHVzZSB0aGUgZWxlbWVu
dCB3ZSBiYWlsZWQgb3V0IGF0ICh0eXBpY2FsbHkgYSA8Zm9udD4gb3IgPGE+IGVsZW1lbnQpLgog
ICAgIGlmIChkZWNvcmF0aW9ucyAmJiBjdXJyKSB7CiAgICAgICAgIGlmIChkZWNvcmF0aW9ucyAm
IFVOREVSTElORSkKLSAgICAgICAgICAgIHVuZGVybGluZSA9IGRlY29yYXRpb25Db2xvcihjdXJy
LT5zdHlsZSgpKTsKKyAgICAgICAgICAgIHVuZGVybGluZSA9IGRlY29yYXRpb25Db2xvcihjdXJy
KTsKICAgICAgICAgaWYgKGRlY29yYXRpb25zICYgT1ZFUkxJTkUpCi0gICAgICAgICAgICBvdmVy
bGluZSA9IGRlY29yYXRpb25Db2xvcihjdXJyLT5zdHlsZSgpKTsKKyAgICAgICAgICAgIG92ZXJs
aW5lID0gZGVjb3JhdGlvbkNvbG9yKGN1cnIpOwogICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBM
SU5FX1RIUk9VR0gpCi0gICAgICAgICAgICBsaW5ldGhyb3VnaCA9IGRlY29yYXRpb25Db2xvcihj
dXJyLT5zdHlsZSgpKTsKKyAgICAgICAgICAgIGxpbmV0aHJvdWdoID0gZGVjb3JhdGlvbkNvbG9y
KGN1cnIpOworICAgIH0KK30KKworc3RhdGljIEVCb3JkZXJTdHlsZSBib3JkZXJTdHlsZUZvckNv
bG9yUHJvcGVydHkoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBpbnQgY29sb3JQcm9wZXJ0eSkK
K3sKKyAgICBFQm9yZGVyU3R5bGUgYm9yZGVyU3R5bGU7CisgICAgc3dpdGNoIChjb2xvclByb3Bl
cnR5KSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcjoKKyAgICAgICAgYm9y
ZGVyU3R5bGUgPSBzdHlsZS0+Ym9yZGVyTGVmdFN0eWxlKCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yOgorICAgICAgICBib3JkZXJTdHlsZSA9
IHN0eWxlLT5ib3JkZXJSaWdodFN0eWxlKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJUb3BDb2xvcjoKKyAgICAgICAgYm9yZGVyU3R5bGUgPSBzdHlsZS0+Ym9y
ZGVyVG9wU3R5bGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbUNvbG9yOgorICAgICAgICBib3JkZXJTdHlsZSA9IHN0eWxlLT5ib3JkZXJCb3R0b21T
dHlsZSgpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBib3JkZXJTdHls
ZSA9IEJOT05FOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGJvcmRlclN0eWxl
OworfQorCitzdGF0aWMgQ29sb3IgY29sb3JJbmNsdWRpbmdGYWxsYmFjayhjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUsIGludCBjb2xvclByb3BlcnR5LCBFQm9yZGVyU3R5bGUgYm9yZGVyU3R5bGUp
Cit7CisgICAgQ29sb3IgcmVzdWx0OworICAgIHN3aXRjaCAoY29sb3JQcm9wZXJ0eSkgeworICAg
IGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6CisgICAgICAgIHJldHVybiBzdHlsZS0+
YmFja2dyb3VuZENvbG9yKCk7IC8vIEJhY2tncm91bmQgY29sb3IgZG9lc24ndCBmYWxsIGJhY2su
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcjoKKyAgICAgICAgcmVzdWx0ID0g
c3R5bGUtPmJvcmRlckxlZnRDb2xvcigpOworICAgICAgICBib3JkZXJTdHlsZSA9IHN0eWxlLT5i
b3JkZXJMZWZ0U3R5bGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0Q29sb3I6CisgICAgICAgIHJlc3VsdCA9IHN0eWxlLT5ib3JkZXJSaWdodENvbG9y
KCk7CisgICAgICAgIGJvcmRlclN0eWxlID0gc3R5bGUtPmJvcmRlclJpZ2h0U3R5bGUoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yOgorICAgICAg
ICByZXN1bHQgPSBzdHlsZS0+Ym9yZGVyVG9wQ29sb3IoKTsKKyAgICAgICAgYm9yZGVyU3R5bGUg
PSBzdHlsZS0+Ym9yZGVyVG9wU3R5bGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yOgorICAgICAgICByZXN1bHQgPSBzdHlsZS0+Ym9yZGVy
Qm90dG9tQ29sb3IoKTsKKyAgICAgICAgYm9yZGVyU3R5bGUgPSBzdHlsZS0+Ym9yZGVyQm90dG9t
U3R5bGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgorICAg
ICAgICByZXN1bHQgPSBzdHlsZS0+Y29sb3IoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eU91dGxpbmVDb2xvcjoKKyAgICAgICAgcmVzdWx0ID0gc3R5bGUtPm91dGxpbmVD
b2xvcigpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
UnVsZUNvbG9yOgorICAgICAgICByZXN1bHQgPSBzdHlsZS0+Y29sdW1uUnVsZUNvbG9yKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yOgor
ICAgICAgICByZXN1bHQgPSBzdHlsZS0+dGV4dEZpbGxDb2xvcigpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgorICAgICAgICByZXN1
bHQgPSBzdHlsZS0+dGV4dFN0cm9rZUNvbG9yKCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIC8vIEZJWE1FOiBBZGQgU1ZHIGZpbGwgYW5kIHN0cm9rZS4KKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGlmICgh
cmVzdWx0LmlzVmFsaWQoKSkgeworICAgICAgICBpZiAoKGNvbG9yUHJvcGVydHkgPT0gQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0Q29sb3IgfHwgY29sb3JQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0Q29sb3IgfHwKKyAgICAgICAgICAgICBjb2xvclByb3BlcnR5ID09IENTU1Byb3BlcnR5
Qm9yZGVyVG9wQ29sb3IgfHwgY29sb3JQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bUNvbG9yKSAmJgorICAgICAgICAgICAgKGJvcmRlclN0eWxlID09IElOU0VUIHx8IGJvcmRlclN0
eWxlID09IE9VVFNFVCB8fCBib3JkZXJTdHlsZSA9PSBSSURHRSB8fCBib3JkZXJTdHlsZSA9PSBH
Uk9PVkUpKQorICAgICAgICAgICAgcmVzdWx0LnNldFJHQigyMzgsIDIzOCwgMjM4KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gc3R5bGUtPmNvbG9yKCk7CisgICAgfQorCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ29sb3IgUmVuZGVyT2JqZWN0Ojp2aXNpdGVkRGVwZW5k
ZW50Q29sb3IoY29uc3QgUmVuZGVyU3R5bGUqIHVudmlzaXRlZFN0eWxlLCBpbnQgY29sb3JQcm9w
ZXJ0eSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogRmV0Y2ggYm90aCB2aXNpdGVkIGFuZCB1bnZp
c2l0ZWQgc3R5bGVzLiAgTWVyZ2UgY29sb3JzIGJ5IGdldHRpbmcgdGhlIFJHQiBmcm9tIHRoZSB2
aXNpdGVkIHN0eWxlCisgICAgLy8gYW5kIHRoZSBBIGZyb20gdGhlIHVudmlzaXRlZC4gIElmIGEg
Y29sb3IgaXMgbm90IHZhbGlkLCBuZWVkIHRvIGZhbGwgYmFjayB0byBjb2xvciBpbiBzb21lIGNh
c2VzICh0ZXh0IGZpbGwsIHN0cm9rZSwgYm9yZGVyKSwKKyAgICAvLyBzbyBpbXBvcnRhbnQgdG8g
cmVtZW1iZXIgdGhhdCB3aGVuIGF0dGVtcHRpbmcgYSBtZXJnZSkuCisgICAgRUJvcmRlclN0eWxl
IGJvcmRlclN0eWxlID0gYm9yZGVyU3R5bGVGb3JDb2xvclByb3BlcnR5KHVudmlzaXRlZFN0eWxl
LCBjb2xvclByb3BlcnR5KTsKKyAgICBDb2xvciB1bnZpc2l0ZWRDb2xvciA9IGNvbG9ySW5jbHVk
aW5nRmFsbGJhY2sodW52aXNpdGVkU3R5bGUsIGNvbG9yUHJvcGVydHksIGJvcmRlclN0eWxlKTsK
KyAgICBpZiAoIXVudmlzaXRlZFN0eWxlLT5pbnNpZGVMaW5rKCkpCisgICAgICAgIHJldHVybiB1
bnZpc2l0ZWRDb2xvcjsKKworICAgIFJlbmRlclN0eWxlKiB2aXNpdGVkU3R5bGUgPSB1bnZpc2l0
ZWRTdHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUoVklTSVRFRF9MSU5LKTsKKyAgICBpZiAoIXZp
c2l0ZWRTdHlsZSkKKyAgICAgICAgcmV0dXJuIHVudmlzaXRlZENvbG9yOworICAgIENvbG9yIHZp
c2l0ZWRDb2xvciA9IGNvbG9ySW5jbHVkaW5nRmFsbGJhY2sodmlzaXRlZFN0eWxlLCBjb2xvclBy
b3BlcnR5LCBib3JkZXJTdHlsZSk7CisKKyAgICAvLyBUYWtlIHRoZSBhbHBoYSBmcm9tIHRoZSB1
bnZpc2l0ZWQgY29sb3IsIGJ1dCBnZXQgdGhlIFJHQiB2YWx1ZXMgZnJvbSB0aGUgdmlzaXRlZCBj
b2xvci4KKyAgICByZXR1cm4gQ29sb3IodmlzaXRlZENvbG9yLnJlZCgpLCB2aXNpdGVkQ29sb3Iu
Z3JlZW4oKSwgdmlzaXRlZENvbG9yLmJsdWUoKSwgdW52aXNpdGVkQ29sb3IuYWxwaGEoKSk7CiB9
CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDA4LDkgKzQwOCw5IEBAIHB1YmxpYzoKICAgICBib29s
IGhhc01hc2soKSBjb25zdCB7IHJldHVybiBzdHlsZSgpICYmIHN0eWxlKCktPmhhc01hc2soKTsg
fQogCiAgICAgdm9pZCBkcmF3TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0KiwgaW50IHgx
LCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBCb3hTaWRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENvbG9yLCBjb25zdCBDb2xvciYgdGV4dGNvbG9yLCBFQm9yZGVyU3R5bGUsIGludCBh
ZGpidzEsIGludCBhZGpidzIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yLCBF
Qm9yZGVyU3R5bGUsIGludCBhZGpidzEsIGludCBhZGpidzIpOwogICAgIHZvaWQgZHJhd0FyY0Zv
ckJveFNpZGUoR3JhcGhpY3NDb250ZXh0KiwgaW50IHgsIGludCB5LCBmbG9hdCB0aGlja25lc3Ms
IEludFNpemUgcmFkaXVzLCBpbnQgYW5nbGVTdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBhbmdsZVNwYW4sIEJveFNpZGUsIENvbG9yLCBjb25zdCBDb2xvciYgdGV4dGNvbG9y
LCBFQm9yZGVyU3R5bGUsIGJvb2wgZmlyc3RDb3JuZXIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGFuZ2xlU3BhbiwgQm94U2lkZSwgQ29sb3IsIEVCb3JkZXJTdHlsZSwgYm9vbCBm
aXJzdENvcm5lcik7CiAKIHB1YmxpYzoKICAgICAvLyBUaGUgcHNldWRvIGVsZW1lbnQgc3R5bGUg
Y2FuIGJlIGNhY2hlZCBvciB1bmNhY2hlZC4gIFVzZSB0aGUgY2FjaGVkIG1ldGhvZCBpZiB0aGUg
cHNldWRvIGVsZW1lbnQgZG9lc24ndCByZXNwZWN0CkBAIC01OTksNiArNTk5LDcgQEAgcHVibGlj
OgogICAgIAogICAgIHZvaWQgZ2V0VGV4dERlY29yYXRpb25Db2xvcnMoaW50IGRlY29yYXRpb25z
LCBDb2xvciYgdW5kZXJsaW5lLCBDb2xvciYgb3ZlcmxpbmUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDb2xvciYgbGluZXRocm91Z2gsIGJvb2wgcXVpcmtzTW9kZSA9IGZhbHNl
KTsKKyAgICBDb2xvciB2aXNpdGVkRGVwZW5kZW50Q29sb3IoY29uc3QgUmVuZGVyU3R5bGUqIHVu
dmlzaXRlZFN0eWxlLCBpbnQgY29sb3JQcm9wZXJ0eSkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm4g
dGhlIFJlbmRlckJveCBpbiB0aGUgY29udGFpbmVyIGNoYWluIHdoaWNoIGlzIHJlc3BvbnNpYmxl
IGZvciBwYWludGluZyB0aGlzIG9iamVjdCwgb3IgMAogICAgIC8vIGlmIHBhaW50aW5nIGlzIHJv
b3QtcmVsYXRpdmUuIFRoaXMgaXMgdGhlIGNvbnRhaW5lciB0aGF0IHNob3VsZCBiZSBwYXNzZWQg
dG8gdGhlICdmb3JSZXBhaW50JwpAQCAtNzg0LDcgKzc4NSw3IEBAIHByb3RlY3RlZDoKICAgICAv
LyBPdmVycmlkZXMgc2hvdWxkIGNhbGwgdGhlIHN1cGVyY2xhc3MgYXQgdGhlIHN0YXJ0CiAgICAg
dmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlKTsKIAotICAgIHZvaWQgcGFpbnRPdXRsaW5lKEdyYXBoaWNzQ29udGV4
dCosIGludCB0eCwgaW50IHR5LCBpbnQgdywgaW50IGgsIGNvbnN0IFJlbmRlclN0eWxlKik7Cisg
ICAgdm9pZCBwYWludE91dGxpbmUoR3JhcGhpY3NDb250ZXh0KiwgaW50IHR4LCBpbnQgdHksIGlu
dCB3LCBpbnQgaCk7CiAgICAgdm9pZCBhZGRQREZVUkxSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgSW50UmVjdCB2aWV3UmVjdCgpIGNvbnN0OwpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw3ICsyNDUs
NyBAQCB2b2lkIFJlbmRlclBhdGg6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJCiAKICAgICAgICAg
aWYgKGRyYXdzT3V0bGluZSkKICAgICAgICAgICAgIHBhaW50T3V0bGluZShjaGlsZFBhaW50SW5m
by5jb250ZXh0LCBzdGF0aWNfY2FzdDxpbnQ+KGJvdW5kaW5nQm94LngoKSksIHN0YXRpY19jYXN0
PGludD4oYm91bmRpbmdCb3gueSgpKSwKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+
KGJvdW5kaW5nQm94LndpZHRoKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KGJvdW5kaW5nQm94LmhlaWdo
dCgpKSwgc3R5bGUoKSk7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihib3VuZGlu
Z0JveC53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8aW50Pihib3VuZGluZ0JveC5oZWlnaHQoKSkpOwog
ICAgICAgICAKICAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogICAg
IH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAJKHJldmlzaW9uIDU2ODU5
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZv
JiBwYQogICAgIH0KIAogICAgIGlmICgocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VPdXRs
aW5lIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYmIHN0eWxl
KCktPm91dGxpbmVXaWR0aCgpKQotICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNvbnRl
eHQsIHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0KCksIHN0eWxlKCkpOworICAgICAgICBwYWludE91
dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0KCkpOwogICAg
IAogICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgJiYgcGFp
bnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkocmV2aXNpb24gNTY4
NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OnBhaW50
KFBhaW50SW5mbwogICAgIC8vIFdlIHNob3VsZCBpbnN0ZWFkIGRpc2FibGUgb3VyIGNsaXAgZHVy
aW5nIFBhaW50UGhhc2VPdXRsaW5lCiAgICAgSW50UmVjdCBwYWludFJlY3RJblBhcmVudCA9IGVu
Y2xvc2luZ0ludFJlY3QobG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLm1hcFJlY3QocmVwYWludFJl
Y3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSkpOwogICAgIGlmICgocGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VPdXRsaW5lIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxp
bmUpICYmIHN0eWxlKCktPm91dGxpbmVXaWR0aCgpICYmIHN0eWxlKCktPnZpc2liaWxpdHkoKSA9
PSBWSVNJQkxFKQotICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50
UmVjdEluUGFyZW50LngoKSwgcGFpbnRSZWN0SW5QYXJlbnQueSgpLCBwYWludFJlY3RJblBhcmVu
dC53aWR0aCgpLCBwYWludFJlY3RJblBhcmVudC5oZWlnaHQoKSwgc3R5bGUoKSk7CisgICAgICAg
IHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgcGFpbnRSZWN0SW5QYXJlbnQueCgpLCBw
YWludFJlY3RJblBhcmVudC55KCksIHBhaW50UmVjdEluUGFyZW50LndpZHRoKCksIHBhaW50UmVj
dEluUGFyZW50LmhlaWdodCgpKTsKIH0KIAogLy8gYWRkRm9jdXNSaW5nUmVjdHMgaXMgY2FsbGVk
IGZyb20gcGFpbnRPdXRsaW5lIGFuZCBuZWVkcyB0byBiZSBpbiB0aGUgc2FtZSBjb29yZGluYXRl
cyBhcyB0aGUgcGFpbnRPdWxpbmUgY2FsbApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0lt
YWdlLmNwcAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJ
bWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBSZW5kZXJTVkdJ
bWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYQogICAgIH0KIAogICAgIGlmICgocGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNl
U2VsZk91dGxpbmUpICYmIHN0eWxlKCktPm91dGxpbmVXaWR0aCgpKQotICAgICAgICBwYWludE91
dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIDAsIDAsIHdpZHRoKCksIGhlaWdodCgpLCBzdHlsZSgp
KTsKKyAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCAwLCAwLCB3aWR0aCgp
LCBoZWlnaHQoKSk7CiAKICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogfQpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3
ICsxODIsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAgICAg
Y2hpbGRQYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogCiAgICAgaWYgKChwYWludEluZm8u
cGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhh
c2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+b3V0bGluZVdpZHRoKCkgJiYgc3R5bGUoKS0+dmlz
aWJpbGl0eSgpID09IFZJU0lCTEUpCi0gICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29u
dGV4dCwgYm9yZGVyQm94T3JpZ2luSW5Db250YWluZXIueCgpLCBib3JkZXJCb3hPcmlnaW5JbkNv
bnRhaW5lci55KCksIHdpZHRoKCksIGhlaWdodCgpLCBzdHlsZSgpKTsKKyAgICAgICAgcGFpbnRP
dXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCBib3JkZXJCb3hPcmlnaW5JbkNvbnRhaW5lci54KCks
IGJvcmRlckJveE9yaWdpbkluQ29udGFpbmVyLnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpOwogfQog
CiB2b2lkIFJlbmRlclNWR1Jvb3Q6OmRlc3Ryb3koKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOCwyMiArMzM4LDI1IEBAIENv
bGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KICAgICAKICAgICAvLyBGb3Ig
Ym9yZGVyIGxlZnQsIHdlIG5lZWQgdG8gY2hlY2ssIGluIG9yZGVyIG9mIHByZWNlZGVuY2U6CiAg
ICAgLy8gKDEpIE91ciBsZWZ0IGJvcmRlci4KLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1
bHQoJnN0eWxlKCktPmJvcmRlckxlZnQoKSwgQkNFTEwpOworICAgIGludCBsZWZ0ID0gQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0Q29sb3I7CisgICAgaW50IHJpZ2h0ID0gQ1NTUHJvcGVydHlCb3JkZXJS
aWdodENvbG9yOworICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHJlc3VsdCgmc3R5bGUoKS0+Ym9y
ZGVyTGVmdCgpLCB2aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3R5bGUoKSwgbGVmdCksIEJDRUxMKTsK
ICAgICAKICAgICAvLyAoMikgVGhlIHJpZ2h0IGJvcmRlciBvZiB0aGUgY2VsbCB0byB0aGUgbGVm
dC4KICAgICBSZW5kZXJUYWJsZUNlbGwqIHByZXZDZWxsID0gcnRsID8gdGFibGVFbHQtPmNlbGxB
ZnRlcih0aGlzKSA6IHRhYmxlRWx0LT5jZWxsQmVmb3JlKHRoaXMpOwogICAgIGlmIChwcmV2Q2Vs
bCkgewotICAgICAgICByZXN1bHQgPSBydGwgPyBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxh
cHNlZEJvcmRlclZhbHVlKCZwcmV2Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgQkNFTEwp
KSA6IGNvbXBhcmVCb3JkZXJzKENvbGxhcHNlZEJvcmRlclZhbHVlKCZwcmV2Q2VsbC0+c3R5bGUo
KS0+Ym9yZGVyUmlnaHQoKSwgQkNFTEwpLCByZXN1bHQpOworICAgICAgICBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSBwcmV2Q2VsbEJvcmRlciA9IENvbGxhcHNlZEJvcmRlclZhbHVlKCZwcmV2Q2VsbC0+
c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgcHJldkNlbGwtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihw
cmV2Q2VsbC0+c3R5bGUoKSwgcmlnaHQpLCBCQ0VMTCk7CisgICAgICAgIHJlc3VsdCA9IHJ0bCA/
IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgcHJldkNlbGxCb3JkZXIpIDogY29tcGFyZUJvcmRlcnMo
cHJldkNlbGxCb3JkZXIsIHJlc3VsdCk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9IGVsc2UgaWYgKGxlZnRtb3N0Q29sdW1u
KSB7CiAgICAgICAgIC8vICgzKSBPdXIgcm93J3MgbGVmdCBib3JkZXIuCi0gICAgICAgIHJlc3Vs
dCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgp
LT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIEJST1cpKTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFy
ZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxlKCkt
PmJvcmRlckxlZnQoKSwgcGFyZW50KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihwYXJlbnQoKS0+
c3R5bGUoKSwgbGVmdCksIEJST1cpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAKICAgICAgICAgLy8gKDQpIE91ciBy
b3cgZ3JvdXAncyBsZWZ0IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMo
cmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmc2VjdGlvbigpLT5zdHlsZSgpLT5ib3JkZXJM
ZWZ0KCksIEJST1dHUk9VUCkpOworICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1
bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZzZWN0aW9uKCktPnN0eWxlKCktPmJvcmRlckxlZnQo
KSwgc2VjdGlvbigpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc2VjdGlvbigpLT5zdHlsZSgpLCBs
ZWZ0KSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0zNjMsMTEgKzM2NiwxMSBAQCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvCiAgICAgYm9vbCBlbmRDb2xFZGdlOwog
ICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0YWJsZUVsdC0+Y29sRWxlbWVudChjb2woKSAr
IChydGwgPyBjb2xTcGFuKCkgLSAxIDogMCksICZzdGFydENvbEVkZ2UsICZlbmRDb2xFZGdlKTsK
ICAgICBpZiAoY29sRWx0ICYmICghcnRsID8gc3RhcnRDb2xFZGdlIDogZW5kQ29sRWRnZSkpIHsK
LSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIEJDT0wpKTsKKyAgICAgICAgcmVz
dWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0
LT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIGNvbEVsdC0+dmlzaXRlZERlcGVuZGVudENvbG9yKGNv
bEVsdC0+c3R5bGUoKSwgbGVmdCksIEJDT0wpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3Rz
KCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICBpZiAoY29sRWx0LT5wYXJl
bnQoKS0+aXNUYWJsZUNvbCgpICYmICghcnRsID8gIWNvbEVsdC0+cHJldmlvdXNTaWJsaW5nKCkg
OiAhY29sRWx0LT5uZXh0U2libGluZygpKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFy
ZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+
c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBCQ09MR1JPVVApKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+cGFy
ZW50KCktPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgY29sRWx0LT5wYXJlbnQoKS0+dmlzaXRlZERl
cGVuZGVudENvbG9yKGNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCksIGxlZnQpLCBCQ09MR1JPVVAp
KTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTM3NywxMyArMzgwLDE0IEBAIENvbGxhcHNlZEJv
cmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KICAgICBpZiAoIWxlZnRtb3N0Q29sdW1uKSB7
CiAgICAgICAgIGNvbEVsdCA9IHRhYmxlRWx0LT5jb2xFbGVtZW50KGNvbCgpICsgKHJ0bCA/IGNv
bFNwYW4oKSA6IC0xKSwgJnN0YXJ0Q29sRWRnZSwgJmVuZENvbEVkZ2UpOwogICAgICAgICBpZiAo
Y29sRWx0ICYmICghcnRsID8gZW5kQ29sRWRnZSA6IHN0YXJ0Q29sRWRnZSkpIHsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IHJ0bCA/IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVy
VmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgQkNPTCkpIDogY29tcGFyZUJv
cmRlcnMoQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQo
KSwgQkNPTCksIHJlc3VsdCk7CisgICAgICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByaWdo
dEJvcmRlciA9IENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnN0eWxlKCktPmJvcmRlclJp
Z2h0KCksIGNvbEVsdC0+dmlzaXRlZERlcGVuZGVudENvbG9yKGNvbEVsdC0+c3R5bGUoKSwgcmln
aHQpLCBCQ09MKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ0bCA/IGNvbXBhcmVCb3JkZXJzKHJl
c3VsdCwgcmlnaHRCb3JkZXIpIDogY29tcGFyZUJvcmRlcnMocmlnaHRCb3JkZXIsIHJlc3VsdCk7
CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gKDcpIFRoZSB0
YWJsZSdzIGxlZnQgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1
bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZ0YWJsZUVsdC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgp
LCBCVEFCTEUpKTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSgmdGFibGVFbHQtPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgdGFibGVF
bHQtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0YWJsZUVsdC0+c3R5bGUoKSwgbGVmdCksIEJUQUJM
RSkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpAQCAtNDA0LDI0ICs0MDgsMjcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUg
UmVuZGVyVGFibGVDZWxsOjpjbwogICAgIAogICAgIC8vIEZvciBib3JkZXIgcmlnaHQsIHdlIG5l
ZWQgdG8gY2hlY2ssIGluIG9yZGVyIG9mIHByZWNlZGVuY2U6CiAgICAgLy8gKDEpIE91ciByaWdo
dCBib3JkZXIuCi0gICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9y
ZGVyVmFsdWUoJnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIEJDRUxMKTsKKyAgICBpbnQgbGVmdCA9
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOworICAgIGludCByaWdodCA9IENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRDb2xvcjsKKyAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQgPSBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSgmc3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgdmlzaXRlZERlcGVuZGVu
dENvbG9yKHN0eWxlKCksIHJpZ2h0KSwgQkNFTEwpOwogICAgIAogICAgIC8vICgyKSBUaGUgbGVm
dCBib3JkZXIgb2YgdGhlIGNlbGwgdG8gdGhlIHJpZ2h0LgogICAgIGlmICghcmlnaHRtb3N0Q29s
dW1uKSB7CiAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCogbmV4dENlbGwgPSBydGwgPyB0YWJsZUVs
dC0+Y2VsbEJlZm9yZSh0aGlzKSA6IHRhYmxlRWx0LT5jZWxsQWZ0ZXIodGhpcyk7CiAgICAgICAg
IGlmIChuZXh0Q2VsbCAmJiBuZXh0Q2VsbC0+c3R5bGUoKSkgewotICAgICAgICAgICAgcmVzdWx0
ID0gcnRsID8gY29tcGFyZUJvcmRlcnMoQ29sbGFwc2VkQm9yZGVyVmFsdWUoJm5leHRDZWxsLT5z
dHlsZSgpLT5ib3JkZXJMZWZ0KCksIEJDRUxMKSwgcmVzdWx0KSA6IGNvbXBhcmVCb3JkZXJzKHJl
c3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJm5leHRDZWxsLT5zdHlsZSgpLT5ib3JkZXJMZWZ0
KCksIEJDRUxMKSk7CisgICAgICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBsZWZ0Qm9yZGVy
ID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoJm5leHRDZWxsLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCks
IG5leHRDZWxsLT52aXNpdGVkRGVwZW5kZW50Q29sb3IobmV4dENlbGwtPnN0eWxlKCksIGxlZnQp
LCBCQ0VMTCk7CisgICAgICAgICAgICByZXN1bHQgPSBydGwgPyBjb21wYXJlQm9yZGVycyhsZWZ0
Qm9yZGVyLCByZXN1bHQpIDogY29tcGFyZUJvcmRlcnMocmVzdWx0LCBsZWZ0Qm9yZGVyKTsKICAg
ICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyAoMykgT3VyIHJvdydz
IHJpZ2h0IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIEJS
T1cpKTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIHBhcmVudCgpLT52
aXNpdGVkRGVwZW5kZW50Q29sb3IocGFyZW50KCktPnN0eWxlKCksIHJpZ2h0KSwgQlJPVykpOwog
ICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgIAogICAgICAgICAvLyAoNCkgT3VyIHJvdyBncm91cCdzIHJpZ2h0IGJvcmRlci4K
LSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSgmc2VjdGlvbigpLT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBCUk9XR1JPVVApKTsKKyAg
ICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSgmc2VjdGlvbigpLT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBzZWN0aW9uKCktPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihzZWN0aW9uKCktPnN0eWxlKCksIHJpZ2h0KSwgQlJPV0dST1VQKSk7CiAg
ICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CkBAIC00MzEsMTEgKzQzOCwxMSBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJU
YWJsZUNlbGw6OmNvCiAgICAgYm9vbCBlbmRDb2xFZGdlOwogICAgIFJlbmRlclRhYmxlQ29sKiBj
b2xFbHQgPSB0YWJsZUVsdC0+Y29sRWxlbWVudChjb2woKSArIChydGwgPyAwIDogY29sU3Bhbigp
IC0gMSksICZzdGFydENvbEVkZ2UsICZlbmRDb2xFZGdlKTsKICAgICBpZiAoY29sRWx0ICYmICgh
cnRsID8gZW5kQ29sRWRnZSA6IHN0YXJ0Q29sRWRnZSkpIHsKLSAgICAgICAgcmVzdWx0ID0gY29t
cGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgp
LT5ib3JkZXJSaWdodCgpLCBCQ09MKSk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJz
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyUmln
aHQoKSwgY29sRWx0LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoY29sRWx0LT5zdHlsZSgpLCByaWdo
dCksIEJDT0wpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICBpZiAoY29sRWx0LT5wYXJlbnQoKS0+aXNUYWJsZUNvbCgp
ICYmICghcnRsID8gIWNvbEVsdC0+bmV4dFNpYmxpbmcoKSA6ICFjb2xFbHQtPnByZXZpb3VzU2li
bGluZygpKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyUmln
aHQoKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhy
ZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT5i
b3JkZXJSaWdodCgpLCBjb2xFbHQtPnBhcmVudCgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoY29s
RWx0LT5wYXJlbnQoKS0+c3R5bGUoKSwgcmlnaHQpLCBCQ09MR1JPVVApKTsKICAgICAgICAgICAg
IGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgIH0KQEAgLTQ0NSwxMyArNDUyLDE0IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRl
clRhYmxlQ2VsbDo6Y28KICAgICBpZiAoIXJpZ2h0bW9zdENvbHVtbikgewogICAgICAgICBjb2xF
bHQgPSB0YWJsZUVsdC0+Y29sRWxlbWVudChjb2woKSArIChydGwgPyAtMSA6IGNvbFNwYW4oKSks
ICZzdGFydENvbEVkZ2UsICZlbmRDb2xFZGdlKTsKICAgICAgICAgaWYgKGNvbEVsdCAmJiAoIXJ0
bCA/IHN0YXJ0Q29sRWRnZSA6IGVuZENvbEVkZ2UpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBy
dGwgPyBjb21wYXJlQm9yZGVycyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgp
LT5ib3JkZXJMZWZ0KCksIEJDT0wpLCByZXN1bHQpIDogY29tcGFyZUJvcmRlcnMocmVzdWx0LCBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIEJDT0wp
KTsKKyAgICAgICAgICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGxlZnRCb3JkZXIgPSBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIGNvbEVsdC0+dmlz
aXRlZERlcGVuZGVudENvbG9yKGNvbEVsdC0+c3R5bGUoKSwgbGVmdCksIEJDT0wpOworICAgICAg
ICAgICAgcmVzdWx0ID0gcnRsID8gY29tcGFyZUJvcmRlcnMobGVmdEJvcmRlciwgcmVzdWx0KSA6
IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgbGVmdEJvcmRlcik7CiAgICAgICAgICAgICBpZiAoIXJl
c3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gKDcpIFRoZSB0YWJsZSdzIHJpZ2h0IGJvcmRlci4K
LSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSgmdGFibGVFbHQtPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIEJUQUJMRSkpOworICAgICAg
ICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZ0
YWJsZUVsdC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgdGFibGVFbHQtPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcih0YWJsZUVsdC0+c3R5bGUoKSwgcmlnaHQpLCBCVEFCTEUpKTsKICAgICAgICAgaWYg
KCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAg
LTQ2MywxOCArNDcxLDIwIEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6
Y28KIHsKICAgICAvLyBGb3IgYm9yZGVyIHRvcCwgd2UgbmVlZCB0byBjaGVjaywgaW4gb3JkZXIg
b2YgcHJlY2VkZW5jZToKICAgICAvLyAoMSkgT3VyIHRvcCBib3JkZXIuCi0gICAgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnN0eWxlKCktPmJvcmRl
clRvcCgpLCBCQ0VMTCk7CisgICAgaW50IHRvcCA9IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I7
CisgICAgaW50IGJvdHRvbSA9IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I7CisgICAgQ29s
bGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnN0eWxlKCkt
PmJvcmRlclRvcCgpLCB2aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3R5bGUoKSwgdG9wKSwgQkNFTEwp
OwogICAgIAogICAgIFJlbmRlclRhYmxlQ2VsbCogcHJldkNlbGwgPSB0YWJsZSgpLT5jZWxsQWJv
dmUodGhpcyk7CiAgICAgaWYgKHByZXZDZWxsKSB7CiAgICAgICAgIC8vICgyKSBBIHByZXZpb3Vz
IGNlbGwncyBib3R0b20gYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhD
b2xsYXBzZWRCb3JkZXJWYWx1ZSgmcHJldkNlbGwtPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBC
Q0VMTCksIHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKENvbGxhcHNl
ZEJvcmRlclZhbHVlKCZwcmV2Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIHByZXZDZWxs
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IocHJldkNlbGwtPnN0eWxlKCksIGJvdHRvbSksIEJDRUxM
KSwgcmVzdWx0KTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpIAogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgLy8gKDMpIE91ciByb3cncyB0b3AgYm9y
ZGVyLgotICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVy
VmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgQlJPVykpOworICAgIHJlc3Vs
dCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgp
LT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgcGFyZW50KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihw
YXJlbnQoKS0+c3R5bGUoKSwgdG9wKSwgQlJPVykpOwogICAgIGlmICghcmVzdWx0LmV4aXN0cygp
KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIApAQCAtNDg3LDcgKzQ5Nyw3IEBAIENvbGxh
cHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KICAgICAgICAgICAgIHByZXZSb3cg
PSBwcmV2Q2VsbC0+c2VjdGlvbigpLT5sYXN0Q2hpbGQoKTsKICAgICAKICAgICAgICAgaWYgKHBy
ZXZSb3cpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKENvbGxhcHNlZEJv
cmRlclZhbHVlKCZwcmV2Um93LT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgQlJPVyksIHJlc3Vs
dCk7CisgICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhDb2xsYXBzZWRCb3JkZXJW
YWx1ZSgmcHJldlJvdy0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIHByZXZSb3ctPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihwcmV2Um93LT5zdHlsZSgpLCBib3R0b20pLCBCUk9XKSwgcmVzdWx0KTsK
ICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTQ5NywxNCArNTA3LDE0IEBAIENvbGxhcHNlZEJvcmRl
clZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGN1cnJT
ZWN0aW9uID0gc2VjdGlvbigpOwogICAgIGlmICghcm93KCkpIHsKICAgICAgICAgLy8gKDUpIE91
ciByb3cgZ3JvdXAncyB0b3AgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVy
cyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9y
ZGVyVG9wKCksIEJST1dHUk9VUCkpOworICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhy
ZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVy
VG9wKCksIGN1cnJTZWN0aW9uLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoY3VyclNlY3Rpb24tPnN0
eWxlKCksIHRvcCksIEJST1dHUk9VUCkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIAogICAgICAgICAvLyAoNikgUHJl
dmlvdXMgcm93IGdyb3VwJ3MgYm90dG9tIGJvcmRlci4KICAgICAgICAgY3VyclNlY3Rpb24gPSB0
YWJsZSgpLT5zZWN0aW9uQWJvdmUoY3VyclNlY3Rpb24pOwogICAgICAgICBpZiAoY3VyclNlY3Rp
b24pIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKENvbGxhcHNlZEJvcmRl
clZhbHVlKCZjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIEJST1dHUk9VUCks
IHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhDb2xsYXBzZWRC
b3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBjdXJyU2Vj
dGlvbi0+dmlzaXRlZERlcGVuZGVudENvbG9yKGN1cnJTZWN0aW9uLT5zdHlsZSgpLCBib3R0b20p
LCBCUk9XR1JPVVApLCByZXN1bHQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtNTE0LDE4ICs1
MjQsMTkgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjbwogICAgICAg
ICAvLyAoOCkgT3VyIGNvbHVtbiBhbmQgY29sdW1uIGdyb3VwJ3MgdG9wIGJvcmRlcnMuCiAgICAg
ICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0YWJsZSgpLT5jb2xFbGVtZW50KGNvbCgpKTsK
ICAgICAgICAgaWYgKGNvbEVsdCkgewotICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRl
cnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJU
b3AoKSwgQkNPTCkpOworICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0
LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgY29s
RWx0LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoY29sRWx0LT5zdHlsZSgpLCB0b3ApLCBCQ09MKSk7
CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICAgICAgaWYgKGNvbEVsdC0+cGFyZW50KCktPmlzVGFibGVDb2wo
KSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29s
bGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlclRvcCgp
LCBCQ09MR1JPVVApKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhy
ZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT5i
b3JkZXJUb3AoKSwgY29sRWx0LT5wYXJlbnQoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGNvbEVs
dC0+cGFyZW50KCktPnN0eWxlKCksIHRvcCksIEJDT0xHUk9VUCkpOwogICAgICAgICAgICAgICAg
IGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyAoOSkgVGhl
IHRhYmxlJ3MgdG9wIGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVz
dWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmdGFibGUoKS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCks
IEJUQUJMRSkpOworICAgICAgICBSZW5kZXJUYWJsZSogZW5jbG9zaW5nVGFibGUgPSB0YWJsZSgp
OworICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRl
clZhbHVlKCZlbmNsb3NpbmdUYWJsZS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIGVuY2xvc2luZ1Rh
YmxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5jbG9zaW5nVGFibGUtPnN0eWxlKCksIHRvcCks
IEJUQUJMRSkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNTM3LDI0ICs1NDgsMjYgQEAgQ29sbGFwc2VkQm9yZGVy
VmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjbwogewogICAgIC8vIEZvciBib3JkZXIgdG9wLCB3ZSBu
ZWVkIHRvIGNoZWNrLCBpbiBvcmRlciBvZiBwcmVjZWRlbmNlOgogICAgIC8vICgxKSBPdXIgYm90
dG9tIGJvcmRlci4KLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQgPSBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSgmc3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIEJDRUxMKTsKKyAgICBpbnQgdG9w
ID0gQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcjsKKyAgICBpbnQgYm90dG9tID0gQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21Db2xvcjsKKyAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQgPSBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSgmc3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIHZpc2l0ZWREZXBl
bmRlbnRDb2xvcihzdHlsZSgpLCBib3R0b20pLCBCQ0VMTCk7CiAgICAgCiAgICAgUmVuZGVyVGFi
bGVDZWxsKiBuZXh0Q2VsbCA9IHRhYmxlKCktPmNlbGxCZWxvdyh0aGlzKTsKICAgICBpZiAobmV4
dENlbGwpIHsKICAgICAgICAgLy8gKDIpIEEgZm9sbG93aW5nIGNlbGwncyB0b3AgYm9yZGVyLgot
ICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZh
bHVlKCZuZXh0Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIEJDRUxMKSk7CisgICAgICAgIHJl
c3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJm5leHRD
ZWxsLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgbmV4dENlbGwtPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihuZXh0Q2VsbC0+c3R5bGUoKSwgdG9wKSwgQkNFTEwpKTsKICAgICAgICAgaWYgKCFyZXN1bHQu
ZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICAv
LyAoMykgT3VyIHJvdydzIGJvdHRvbSBib3JkZXIuIChGSVhNRTogRGVhbCB3aXRoIHJvd3NwYW4h
KQotICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFs
dWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgQlJPVykpOworICAgIHJlc3Vs
dCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgp
LT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgcGFyZW50KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihwYXJlbnQoKS0+c3R5bGUoKSwgYm90dG9tKSwgQlJPVykpOwogICAgIGlmICghcmVzdWx0LmV4
aXN0cygpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIAogICAgIC8vICg0KSBUaGUgbmV4
dCByb3cncyB0b3AgYm9yZGVyLgogICAgIGlmIChuZXh0Q2VsbCkgewotICAgICAgICByZXN1bHQg
PSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZuZXh0Q2VsbC0+
cGFyZW50KCktPnN0eWxlKCktPmJvcmRlclRvcCgpLCBCUk9XKSk7CisgICAgICAgIHJlc3VsdCA9
IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJm5leHRDZWxsLT5w
YXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIG5leHRDZWxsLT5wYXJlbnQoKS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKG5leHRDZWxsLT5wYXJlbnQoKS0+c3R5bGUoKSwgdG9wKSwgQlJPVykp
OwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQpAQCAtNTYzLDE0ICs1NzYsMTQgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVu
ZGVyVGFibGVDZWxsOjpjbwogICAgIFJlbmRlclRhYmxlU2VjdGlvbiogY3VyclNlY3Rpb24gPSBz
ZWN0aW9uKCk7CiAgICAgaWYgKHJvdygpICsgcm93U3BhbigpID49IGN1cnJTZWN0aW9uLT5udW1S
b3dzKCkpIHsKICAgICAgICAgLy8gKDUpIE91ciByb3cgZ3JvdXAncyBib3R0b20gYm9yZGVyLgot
ICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZh
bHVlKCZjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIEJST1dHUk9VUCkpOwor
ICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZh
bHVlKCZjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIGN1cnJTZWN0aW9uLT52
aXNpdGVkRGVwZW5kZW50Q29sb3IoY3VyclNlY3Rpb24tPnN0eWxlKCksIGJvdHRvbSksIEJST1dH
Uk9VUCkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIAogICAgICAgICAvLyAoNikgRm9sbG93aW5nIHJvdyBncm91cCdz
IHRvcCBib3JkZXIuCiAgICAgICAgIGN1cnJTZWN0aW9uID0gdGFibGUoKS0+c2VjdGlvbkJlbG93
KGN1cnJTZWN0aW9uKTsKICAgICAgICAgaWYgKGN1cnJTZWN0aW9uKSB7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjdXJy
U2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIEJST1dHUk9VUCkpOworICAgICAgICAgICAg
cmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3Vy
clNlY3Rpb24tPnN0eWxlKCktPmJvcmRlclRvcCgpLCBjdXJyU2VjdGlvbi0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKGN1cnJTZWN0aW9uLT5zdHlsZSgpLCB0b3ApLCBCUk9XR1JPVVApKTsKICAgICAg
ICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KQEAgLTU4MCwxNyArNTkzLDE4IEBAIENvbGxhcHNlZEJvcmRlclZhbHVl
IFJlbmRlclRhYmxlQ2VsbDo6Y28KICAgICAgICAgLy8gKDgpIE91ciBjb2x1bW4gYW5kIGNvbHVt
biBncm91cCdzIGJvdHRvbSBib3JkZXJzLgogICAgICAgICBSZW5kZXJUYWJsZUNvbCogY29sRWx0
ID0gdGFibGUoKS0+Y29sRWxlbWVudChjb2woKSk7CiAgICAgICAgIGlmIChjb2xFbHQpIHsKLSAg
ICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVy
VmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIEJDT0wpKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUo
JmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIGNvbEVsdC0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKGNvbEVsdC0+c3R5bGUoKSwgYm90dG9tKSwgQkNPTCkpOwogICAgICAgICAgICAgaWYg
KCFyZXN1bHQuZXhpc3RzKCkpIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICBpZiAoY29sRWx0
LT5wYXJlbnQoKS0+aXNUYWJsZUNvbCgpKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY29t
cGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQo
KS0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIEJDT0xHUk9VUCkpOworICAgICAgICAgICAgICAg
IHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNv
bEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBjb2xFbHQtPnBhcmVudCgp
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKSwgYm90dG9t
KSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIC8vICg5KSBUaGUgdGFibGUncyBib3R0b20gYm9yZGVyLgot
ICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZh
bHVlKCZ0YWJsZSgpLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgQlRBQkxFKSk7CisgICAgICAg
IFJlbmRlclRhYmxlKiBlbmNsb3NpbmdUYWJsZSA9IHRhYmxlKCk7CisgICAgICAgIHJlc3VsdCA9
IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmVuY2xvc2luZ1Rh
YmxlLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgZW5jbG9zaW5nVGFibGUtPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihlbmNsb3NpbmdUYWJsZS0+c3R5bGUoKSwgYm90dG9tKSwgQlRBQkxFKSk7CiAg
ICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CkBAIC04MDgsNyArODIyLDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29s
bGFwc2VkQm9yZAogICAgIGZvciAoQ29sbGFwc2VkQm9yZGVyKiBib3JkZXIgPSBib3JkZXJzLm5l
eHRCb3JkZXIoKTsgYm9yZGVyOyBib3JkZXIgPSBib3JkZXJzLm5leHRCb3JkZXIoKSkgewogICAg
ICAgICBpZiAoYm9yZGVyLT5ib3JkZXJWYWx1ZSA9PSAqdGFibGUoKS0+Y3VycmVudEJvcmRlclN0
eWxlKCkpCiAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBi
b3JkZXItPngxLCBib3JkZXItPnkxLCBib3JkZXItPngyLCBib3JkZXItPnkyLCBib3JkZXItPnNp
ZGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci0+Ym9yZGVyVmFsdWUu
Y29sb3IoKSwgc3R5bGUoKS0+Y29sb3IoKSwgYm9yZGVyLT5zdHlsZSwgMCwgMCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLT5ib3JkZXJWYWx1ZS5jb2xvcigpLCBib3Jk
ZXItPnN0eWxlLCAwLCAwKTsKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0NvbGxhcHNlZEJvcmRlclZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFsdWUuaAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9Db2xsYXBzZWRCb3JkZXJWYWx1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw4ICszNiw5IEBAIHN0cnVjdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSB7CiAgICAgewog
ICAgIH0KIAotICAgIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbnN0IEJvcmRlclZhbHVlKiBiLCBF
Qm9yZGVyUHJlY2VkZW5jZSBwKQorICAgIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbnN0IEJvcmRl
clZhbHVlKiBiLCBDb2xvciBjLCBFQm9yZGVyUHJlY2VkZW5jZSBwKQogICAgICAgICA6IGJvcmRl
cihiKQorICAgICAgICAsIGJvcmRlckNvbG9yKGMpCiAgICAgICAgICwgcHJlY2VkZW5jZShwKQog
ICAgIHsKICAgICB9CkBAIC00NSw3ICs0Niw3IEBAIHN0cnVjdCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSB7CiAgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gYm9yZGVyICYmIGJvcmRlci0+bm9u
WmVybygpID8gYm9yZGVyLT53aWR0aCA6IDA7IH0KICAgICBFQm9yZGVyU3R5bGUgc3R5bGUoKSBj
b25zdCB7IHJldHVybiBib3JkZXIgPyBib3JkZXItPnN0eWxlKCkgOiBCSElEREVOOyB9CiAgICAg
Ym9vbCBleGlzdHMoKSBjb25zdCB7IHJldHVybiBib3JkZXI7IH0KLSAgICBDb2xvciBjb2xvcigp
IGNvbnN0IHsgcmV0dXJuIGJvcmRlciA/IGJvcmRlci0+Y29sb3IgOiBDb2xvcigpOyB9CisgICAg
Q29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBib3JkZXJDb2xvcjsgfQogICAgIGJvb2wgaXNU
cmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlciA/IGJvcmRlci0+aXNUcmFuc3BhcmVu
dCgpIDogdHJ1ZTsgfQogICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSYgbykgY29uc3QKQEAgLTU0LDEwICs1NSwxMSBAQCBzdHJ1Y3QgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUgewogICAgICAgICAgICAgcmV0dXJuICFvLmJvcmRlcjsKICAgICAgICAgaWYg
KCFvLmJvcmRlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuICpi
b3JkZXIgPT0gKm8uYm9yZGVyICYmIHByZWNlZGVuY2UgPT0gby5wcmVjZWRlbmNlOworICAgICAg
ICByZXR1cm4gKmJvcmRlciA9PSAqby5ib3JkZXIgJiYgYm9yZGVyQ29sb3IgPT0gby5ib3JkZXJD
b2xvciAmJiBwcmVjZWRlbmNlID09IG8ucHJlY2VkZW5jZTsKICAgICB9CiAgICAgCiAgICAgY29u
c3QgQm9yZGVyVmFsdWUqIGJvcmRlcjsKKyAgICBDb2xvciBib3JkZXJDb2xvcjsKICAgICBFQm9y
ZGVyUHJlY2VkZW5jZSBwcmVjZWRlbmNlOyAgICAKIH07CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNiArNTAy
LDcgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlclN0eWxlOjpkaWZmKGNvbnN0IAogICAgICAgICBp
bmhlcml0ZWRfZmxhZ3MuX3Zpc2liaWxpdHkgIT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5fdmlz
aWJpbGl0eSB8fAogICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX3RleHRfZGVjb3JhdGlvbnMgIT0g
b3RoZXItPmluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyB8fAogICAgICAgICBpbmhl
cml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlICE9IG90aGVyLT5pbmhlcml0
ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlIHx8CisgICAgICAgIGluaGVyaXRl
ZF9mbGFncy5faW5zaWRlTGluayAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5r
IHx8CiAgICAgICAgIHN1cnJvdW5kLT5ib3JkZXIgIT0gb3RoZXItPnN1cnJvdW5kLT5ib3JkZXIg
fHwKICAgICAgICAgKmJhY2tncm91bmQuZ2V0KCkgIT0gKm90aGVyLT5iYWNrZ3JvdW5kLmdldCgp
IHx8CiAgICAgICAgIHZpc3VhbC0+dGV4dERlY29yYXRpb24gIT0gb3RoZXItPnZpc3VhbC0+dGV4
dERlY29yYXRpb24gfHwKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAko
cmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNyArMTc2LDggQEAgcHJvdGVjdGVkOgogICAgICAgICAg
ICAgICAgICAgIChfdmlzdWFsbHlPcmRlcmVkID09IG90aGVyLl92aXN1YWxseU9yZGVyZWQpICYm
CiAgICAgICAgICAgICAgICAgICAgKF9odG1sSGFja3MgPT0gb3RoZXIuX2h0bWxIYWNrcykgJiYK
ICAgICAgICAgICAgICAgICAgICAoX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlID09IG90aGVy
Ll9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSkgJiYKLSAgICAgICAgICAgICAgICAgICAoX3Bv
aW50ZXJFdmVudHMgPT0gb3RoZXIuX3BvaW50ZXJFdmVudHMpOworICAgICAgICAgICAgICAgICAg
IChfcG9pbnRlckV2ZW50cyA9PSBvdGhlci5fcG9pbnRlckV2ZW50cykgJiYKKyAgICAgICAgICAg
ICAgICAgICAoX2luc2lkZUxpbmsgPT0gb3RoZXIuX2luc2lkZUxpbmspOwogICAgICAgICB9CiAK
ICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KQEAgLTIwMSw2ICsyMDIsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIGJvb2wgX2h0bWxIYWNrcyA6IDE7CiAgICAgICAgIGJvb2wgX2ZvcmNl
X2JhY2tncm91bmRzX3RvX3doaXRlIDogMTsKICAgICAgICAgdW5zaWduZWQgX3BvaW50ZXJFdmVu
dHMgOiA0OyAvLyBFUG9pbnRlckV2ZW50cworICAgICAgICBib29sIF9pbnNpZGVMaW5rIDogMTsg
Ly8gV2hldGhlciBvciBub3Qgd2UgYXJlIGNvbnRhaW5lZCBpbnNpZGUgYSBsaW5rLgogICAgICAg
ICAvLyA0MSBiaXRzCiAgICAgfSBpbmhlcml0ZWRfZmxhZ3M7CiAKQEAgLTI0NCw3ICsyNDYsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIHVuc2lnbmVkIF9wYWdlX2JyZWFrX2FmdGVyIDogMjsgLy8g
RVBhZ2VCcmVhawogICAgICAgICB1bnNpZ25lZCBfcGFnZV9icmVha19pbnNpZGUgOiAyOyAvLyBF
UGFnZUJyZWFrCiAKLSAgICAgICAgdW5zaWduZWQgX3N0eWxlVHlwZSA6IDU7IC8vIFBzZXVkb0lk
CisgICAgICAgIHVuc2lnbmVkIF9zdHlsZVR5cGUgOiA2OyAvLyBQc2V1ZG9JZAogICAgICAgICBi
b29sIF9hZmZlY3RlZEJ5SG92ZXIgOiAxOwogICAgICAgICBib29sIF9hZmZlY3RlZEJ5QWN0aXZl
IDogMTsKICAgICAgICAgYm9vbCBfYWZmZWN0ZWRCeURyYWcgOiAxOwpAQCAtMjc1LDYgKzI3Nyw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uID0g
aW5pdGlhbEJveERpcmVjdGlvbigpOwogICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2Jh
Y2tncm91bmRzX3RvX3doaXRlID0gZmFsc2U7CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5fcG9p
bnRlckV2ZW50cyA9IGluaXRpYWxQb2ludGVyRXZlbnRzKCk7CisgICAgICAgIGluaGVyaXRlZF9m
bGFncy5faW5zaWRlTGluayA9IGluaXRpYWxJbnNpZGVMaW5rKCk7CiAKICAgICAgICAgbm9uaW5o
ZXJpdGVkX2ZsYWdzLl9lZmZlY3RpdmVEaXNwbGF5ID0gbm9uaW5oZXJpdGVkX2ZsYWdzLl9vcmln
aW5hbERpc3BsYXkgPSBpbml0aWFsRGlzcGxheSgpOwogICAgICAgICBub25pbmhlcml0ZWRfZmxh
Z3MuX292ZXJmbG93WCA9IGluaXRpYWxPdmVyZmxvd1goKTsKQEAgLTU4Nyw2ICs1OTAsOCBAQCBw
dWJsaWM6CiAKICAgICBDdXJzb3JMaXN0KiBjdXJzb3JzKCkgY29uc3QgeyByZXR1cm4gaW5oZXJp
dGVkLT5jdXJzb3JEYXRhLmdldCgpOyB9CiAKKyAgICBib29sIGluc2lkZUxpbmsoKSBjb25zdCB7
IHJldHVybiBpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxpbms7IH0KKwogICAgIHNob3J0IHdpZG93
cygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+d2lkb3dzOyB9CiAgICAgc2hvcnQgb3JwaGFu
cygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+b3JwaGFuczsgfQogICAgIEVQYWdlQnJlYWsg
cGFnZUJyZWFrSW5zaWRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBhZ2VCcmVhaz4o
bm9uaW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2luc2lkZSk7IH0KQEAgLTkxMiw2ICs5MTcs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJzb3JMaXN0KFBhc3NSZWZQdHI8Q3Vyc29yTGlz
dD4pOwogICAgIHZvaWQgY2xlYXJDdXJzb3JMaXN0KCk7CiAKKyAgICB2b2lkIHNldEluc2lkZUxp
bmsoYm9vbCBiKSB7IGluaGVyaXRlZF9mbGFncy5faW5zaWRlTGluayA9IGI7IH0KKyAgICAKICAg
ICBib29sIGZvcmNlQmFja2dyb3VuZHNUb1doaXRlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVk
X2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZTsgfQogICAgIHZvaWQgc2V0Rm9yY2VC
YWNrZ3JvdW5kc1RvV2hpdGUoYm9vbCBiPXRydWUpIHsgaW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9i
YWNrZ3JvdW5kc190b193aGl0ZSA9IGI7IH0KIApAQCAtMTE4NCw2ICsxMTkxLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFRyYW5zZm9ybU9yaWdpblgoKSB7IHJldHVybiBM
ZW5ndGgoNTAuMCwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxUcmFuc2Zv
cm1PcmlnaW5ZKCkgeyByZXR1cm4gTGVuZ3RoKDUwLjAsIFBlcmNlbnQpOyB9CiAgICAgc3RhdGlj
IEVQb2ludGVyRXZlbnRzIGluaXRpYWxQb2ludGVyRXZlbnRzKCkgeyByZXR1cm4gUEVfQVVUTzsg
fQorICAgIHN0YXRpYyBib29sIGluaXRpYWxJbnNpZGVMaW5rKCkgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbFRyYW5zZm9ybU9yaWdpblooKSB7IHJldHVybiAwOyB9
CiAgICAgc3RhdGljIEVUcmFuc2Zvcm1TdHlsZTNEIGluaXRpYWxUcmFuc2Zvcm1TdHlsZTNEKCkg
eyByZXR1cm4gVHJhbnNmb3JtU3R5bGUzREZsYXQ7IH0KICAgICBzdGF0aWMgRUJhY2tmYWNlVmlz
aWJpbGl0eSBpbml0aWFsQmFja2ZhY2VWaXNpYmlsaXR5KCkgeyByZXR1cm4gQmFja2ZhY2VWaXNp
YmlsaXR5VmlzaWJsZTsgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGVDb25zdGFudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZUNvbnN0YW50cy5oCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0
LDcgQEAgZW51bSBQc2V1ZG9JZCB7CiAgICAgTUVESUFfQ09OVFJPTFNfU0VFS19CQUNLX0JVVFRP
TiwgTUVESUFfQ09OVFJPTFNfU0VFS19GT1JXQVJEX0JVVFRPTiwgTUVESUFfQ09OVFJPTFNfRlVM
TFNDUkVFTl9CVVRUT04sIE1FRElBX0NPTlRST0xTX1JFV0lORF9CVVRUT04sIAogICAgIE1FRElB
X0NPTlRST0xTX1JFVFVSTl9UT19SRUFMVElNRV9CVVRUT04sIE1FRElBX0NPTlRST0xTX1RPR0dM
RV9DTE9TRURfQ0FQVElPTlNfQlVUVE9OLAogICAgIE1FRElBX0NPTlRST0xTX1NUQVRVU19ESVNQ
TEFZLCBTQ1JPTExCQVJfVEhVTUIsIFNDUk9MTEJBUl9CVVRUT04sIFNDUk9MTEJBUl9UUkFDSywg
U0NST0xMQkFSX1RSQUNLX1BJRUNFLCBTQ1JPTExCQVJfQ09STkVSLCBSRVNJWkVSLAotICAgIElO
UFVUX0xJU1RfQlVUVE9OLCBJTk5FUl9TUElOX0JVVFRPTiwgT1VURVJfU1BJTl9CVVRUT04sCisg
ICAgSU5QVVRfTElTVF9CVVRUT04sIElOTkVSX1NQSU5fQlVUVE9OLCBPVVRFUl9TUElOX0JVVFRP
TiwgVklTSVRFRF9MSU5LLAogCiAgICAgQUZURVJfTEFTVF9JTlRFUk5BTF9QU0VVRE9JRCwKICAg
ICBGSVJTVF9QVUJMSUNfUFNFVURPSUQgPSBGSVJTVF9MSU5FLApJbmRleDogV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR1BhaW50U2VydmVyLmNwcAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdQYWludFNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5
LDcgQEAgU1ZHUGFpbnRTZXJ2ZXIqIFNWR1BhaW50U2VydmVyOjpmaWxsUGFpbgogICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIFNWR1BhaW50KiBmaWxsID0gc3R5bGUtPnN2Z1N0eWxlKCktPmZpbGxQ
YWludCgpOwotCisgICAgICAgIAogICAgIFNWR1BhaW50U2VydmVyKiBmaWxsUGFpbnRTZXJ2ZXIg
PSAwOwogICAgIFNWR1BhaW50OjpTVkdQYWludFR5cGUgcGFpbnRUeXBlID0gZmlsbC0+cGFpbnRU
eXBlKCk7CiAgICAgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9VUkkg
fHwKQEAgLTk4LDEwICs5OCwyOSBAQCBTVkdQYWludFNlcnZlciogU1ZHUGFpbnRTZXJ2ZXI6OmZp
bGxQYWluCiAgICAgaWYgKHBhaW50VHlwZSAhPSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9VUkkg
JiYgIWZpbGxQYWludFNlcnZlcikgewogICAgICAgICBmaWxsUGFpbnRTZXJ2ZXIgPSBzaGFyZWRT
b2xpZFBhaW50U2VydmVyKCk7CiAgICAgICAgIFNWR1BhaW50U2VydmVyU29saWQqIGZpbGxQYWlu
dFNlcnZlclNvbGlkID0gc3RhdGljX2Nhc3Q8U1ZHUGFpbnRTZXJ2ZXJTb2xpZCo+KGZpbGxQYWlu
dFNlcnZlcik7CisgICAgICAgIAorICAgICAgICBDb2xvciBmaWxsQ29sb3I7CiAgICAgICAgIGlm
IChwYWludFR5cGUgPT0gU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SKQotICAg
ICAgICAgICAgZmlsbFBhaW50U2VydmVyU29saWQtPnNldENvbG9yKHN0eWxlLT5jb2xvcigpKTsK
KyAgICAgICAgICAgIGZpbGxDb2xvciA9IHN0eWxlLT5jb2xvcigpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBmaWxsUGFpbnRTZXJ2ZXJTb2xpZC0+c2V0Q29sb3IoZmlsbC0+Y29sb3IoKSk7
CisgICAgICAgICAgICBmaWxsQ29sb3IgPSBmaWxsLT5jb2xvcigpOworCisgICAgICAgIGlmIChz
dHlsZS0+aW5zaWRlTGluaygpKSB7CisgICAgICAgICAgICBSZW5kZXJTdHlsZSogdmlzaXRlZFN0
eWxlID0gc3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxlKFZJU0lURURfTElOSyk7CisgICAgICAg
ICAgICBTVkdQYWludCogdmlzaXRlZEZpbGwgPSB2aXNpdGVkU3R5bGUtPnN2Z1N0eWxlKCktPmZp
bGxQYWludCgpOworICAgICAgICAgICAgQ29sb3IgdmlzaXRlZEZpbGxDb2xvcjsKKyAgICAgICAg
ICAgIGlmICh2aXNpdGVkRmlsbC0+cGFpbnRUeXBlKCkgIT0gU1ZHUGFpbnQ6OlNWR19QQUlOVFRZ
UEVfVVJJKSB7CisgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRGaWxsLT5wYWludFR5cGUoKSA9
PSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IpCisgICAgICAgICAgICAgICAg
ICAgIHZpc2l0ZWRGaWxsQ29sb3IgPSB2aXNpdGVkU3R5bGUtPmNvbG9yKCk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB2aXNpdGVkRmlsbENvbG9yID0gdmlzaXRl
ZEZpbGwtPmNvbG9yKCk7CisgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRGaWxsQ29sb3IuaXNW
YWxpZCgpKQorICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3IgPSBDb2xvcih2aXNpdGVkRmls
bENvbG9yLnJlZCgpLCB2aXNpdGVkRmlsbENvbG9yLmdyZWVuKCksIHZpc2l0ZWRGaWxsQ29sb3Iu
Ymx1ZSgpLCBmaWxsQ29sb3IuYWxwaGEoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBmaWxsUGFpbnRTZXJ2ZXJTb2xpZC0+c2V0Q29sb3IoZmlsbENvbG9yKTsKKyAgICAg
ICAgCiAgICAgICAgIC8vIEZJWE1FOiBJZGVhbGx5IGludmFsaWQgY29sb3JzIHdvdWxkIG5ldmVy
IGdldCBzZXQgb24gdGhlIFJlbmRlclN0eWxlIGFuZCB0aGlzIGNvdWxkIHR1cm4gaW50byBhbiBB
U1NFUlQKICAgICAgICAgaWYgKCFmaWxsUGFpbnRTZXJ2ZXJTb2xpZC0+Y29sb3IoKS5pc1ZhbGlk
KCkpCiAgICAgICAgICAgICBmaWxsUGFpbnRTZXJ2ZXIgPSAwOwpAQCAtMTQxLDEwICsxNjAsMjkg
QEAgU1ZHUGFpbnRTZXJ2ZXIqIFNWR1BhaW50U2VydmVyOjpzdHJva2VQYQogICAgIGlmIChwYWlu
dFR5cGUgIT0gU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfVVJJICYmICFzdHJva2VQYWludFNlcnZl
cikgewogICAgICAgICBzdHJva2VQYWludFNlcnZlciA9IHNoYXJlZFNvbGlkUGFpbnRTZXJ2ZXIo
KTsKICAgICAgICAgU1ZHUGFpbnRTZXJ2ZXJTb2xpZCogc3Ryb2tlUGFpbnRTZXJ2ZXJTb2xpZCA9
IHN0YXRpY19jYXN0PFNWR1BhaW50U2VydmVyU29saWQqPihzdHJva2VQYWludFNlcnZlcik7Cisg
ICAgICAgIAorICAgICAgICBDb2xvciBzdHJva2VDb2xvcjsKICAgICAgICAgaWYgKHBhaW50VHlw
ZSA9PSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IpCi0gICAgICAgICAgICBz
dHJva2VQYWludFNlcnZlclNvbGlkLT5zZXRDb2xvcihzdHlsZS0+Y29sb3IoKSk7CisgICAgICAg
ICAgICBzdHJva2VDb2xvciA9IHN0eWxlLT5jb2xvcigpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBzdHJva2VQYWludFNlcnZlclNvbGlkLT5zZXRDb2xvcihzdHJva2UtPmNvbG9yKCkpOwor
ICAgICAgICAgICAgc3Ryb2tlQ29sb3IgPSBzdHJva2UtPmNvbG9yKCk7CisKKyAgICAgICAgaWYg
KHN0eWxlLT5pbnNpZGVMaW5rKCkpIHsKKyAgICAgICAgICAgIFJlbmRlclN0eWxlKiB2aXNpdGVk
U3R5bGUgPSBzdHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUoVklTSVRFRF9MSU5LKTsKKyAgICAg
ICAgICAgIFNWR1BhaW50KiB2aXNpdGVkU3Ryb2tlID0gdmlzaXRlZFN0eWxlLT5zdmdTdHlsZSgp
LT5zdHJva2VQYWludCgpOworICAgICAgICAgICAgQ29sb3IgdmlzaXRlZFN0cm9rZUNvbG9yOwor
ICAgICAgICAgICAgaWYgKHZpc2l0ZWRTdHJva2UtPnBhaW50VHlwZSgpICE9IFNWR1BhaW50OjpT
VkdfUEFJTlRUWVBFX1VSSSkgeworICAgICAgICAgICAgICAgIGlmICh2aXNpdGVkU3Ryb2tlLT5w
YWludFR5cGUoKSA9PSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IpCisgICAg
ICAgICAgICAgICAgICAgIHZpc2l0ZWRTdHJva2VDb2xvciA9IHZpc2l0ZWRTdHlsZS0+Y29sb3Io
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRTdHJv
a2VDb2xvciA9IHZpc2l0ZWRTdHJva2UtPmNvbG9yKCk7CisgICAgICAgICAgICAgICAgaWYgKHZp
c2l0ZWRTdHJva2VDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgIHN0cm9rZUNv
bG9yID0gQ29sb3IodmlzaXRlZFN0cm9rZUNvbG9yLnJlZCgpLCB2aXNpdGVkU3Ryb2tlQ29sb3Iu
Z3JlZW4oKSwgdmlzaXRlZFN0cm9rZUNvbG9yLmJsdWUoKSwgc3Ryb2tlQ29sb3IuYWxwaGEoKSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzdHJva2VQYWludFNlcnZlclNv
bGlkLT5zZXRDb2xvcihzdHJva2VDb2xvcik7CisKICAgICAgICAgLy8gRklYTUU6IElkZWFsbHkg
aW52YWxpZCBjb2xvcnMgd291bGQgbmV2ZXIgZ2V0IHNldCBvbiB0aGUgUmVuZGVyU3R5bGUgYW5k
IHRoaXMgY291bGQgdHVybiBpbnRvIGFuIEFTU0VSVAogICAgICAgICBpZiAoIXN0cm9rZVBhaW50
U2VydmVyU29saWQtPmNvbG9yKCkuaXNWYWxpZCgpKQogICAgICAgICAgICAgc3Ryb2tlUGFpbnRT
ZXJ2ZXIgPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52582</attachid>
            <date>2010-04-05 15:38:39 -0700</date>
            <delta_ts>2010-04-07 08:39:50 -0700</delta_ts>
            <desc>Ready for a first review pass</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>104050</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzk0LDcgKzE3
OTQsOCBAQCBLVVJMIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnVybCgpIGNvCiAKIGJvb2wg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNWaXNpdGVkKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9yZW5kZXJlci0+c3R5bGUoKS0+cHNldWRvU3RhdGUoKSA9PSBQc2V1ZG9WaXNpdGVkOwor
ICAgIC8vIEZJWE1FOiBJcyBpdCBhIHByaXZhY3kgdmlvbGF0aW9uIHRvIGV4cG9zZSB2aXNpdGVk
IGluZm9ybWF0aW9uIHRvIGFjY2Vzc2liaWxpdHkgQVBJcz8KKyAgICByZXR1cm4gbV9yZW5kZXJl
ci0+c3R5bGUoKS0+aXNMaW5rKCkgJiYgbV9yZW5kZXJlci0+c3R5bGUoKS0+aW5zaWRlTGluaygp
ID09IEluc2lkZVZpc2l0ZWRMaW5rOwogfQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojppc0V4cGFuZGVkKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zODIsOCArMzgyLDYgQEAgc3RhdGljIENTU1N0eWxlU2hlZXQqIHNp
bXBsZURlZmF1bHRTdHlsZQogCiBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6c19zdHls
ZU5vdFlldEF2YWlsYWJsZTsKIAotc3RhdGljIFBzZXVkb1N0YXRlIHBzZXVkb1N0YXRlOwotCiBz
dGF0aWMgdm9pZCBsb2FkRnVsbERlZmF1bHRTdHlsZSgpOwogc3RhdGljIHZvaWQgbG9hZFNpbXBs
ZURlZmF1bHRTdHlsZSgpOwogLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHNvbWUg
bWVjaGFuaXNtIHRoYXQgZ3VhcmFudGVlcyB0aGlzIGlzIGluIHN5bmMgd2l0aCB0aGUgcmVhbCBV
QSBzdHlsZXNoZWV0LgpAQCAtODAyLDE0ICs4MDAsMTAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9y
Ojpzb3J0TWF0Y2hlZFJ1bGVzKAogICAgICAgICBtX21hdGNoZWRSdWxlc1tpXSA9IHJ1bGVzTWVy
Z2VCdWZmZXJbaSAtIHN0YXJ0XTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjppbml0RWxl
bWVudEFuZFBzZXVkb1N0YXRlKEVsZW1lbnQqIGUpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6Omlu
aXRFbGVtZW50KEVsZW1lbnQqIGUpCiB7CiAgICAgbV9lbGVtZW50ID0gZTsKLSAgICBpZiAobV9l
bGVtZW50ICYmIG1fZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkpCi0gICAgICAgIG1fc3R5bGVk
RWxlbWVudCA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihtX2VsZW1lbnQpOwotICAgIGVs
c2UKLSAgICAgICAgbV9zdHlsZWRFbGVtZW50ID0gMDsKLSAgICBwc2V1ZG9TdGF0ZSA9IFBzZXVk
b1Vua25vd247CisgICAgbV9zdHlsZWRFbGVtZW50ID0gbV9lbGVtZW50ICYmIG1fZWxlbWVudC0+
aXNTdHlsZWRFbGVtZW50KCkgPyBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4obV9lbGVtZW50
KSA6IDA7CiB9CiAKIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW5pdEZvclN0eWxlUmVzb2x2ZShF
bGVtZW50KiBlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIFBzZXVkb0lkIHBzZXVkb0lEKQpA
QCAtODc2LDIzICs4NzAsMjQgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpT
ZWxlYwogICAgICwgbV9jb2xsZWN0UnVsZXNPbmx5KGZhbHNlKQogICAgICwgbV9wc2V1ZG9TdHls
ZShOT1BTRVVETykKICAgICAsIG1fZG9jdW1lbnRJc0hUTUwoZG9jdW1lbnQtPmlzSFRNTERvY3Vt
ZW50KCkpCisgICAgLCBtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzKGZhbHNlKQogewogfQogCi1Q
c2V1ZG9TdGF0ZSBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrUHNldWRv
U3RhdGUoRWxlbWVudCogZWxlbWVudCwgYm9vbCBjaGVja1Zpc2l0ZWQpIGNvbnN0CitFSW5zaWRl
TGluayBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtTdGF0
ZShFbGVtZW50KiBlbGVtZW50KSBjb25zdAogeworICAgIGlmICghZWxlbWVudC0+aXNMaW5rKCkp
CisgICAgICAgIHJldHVybiBOb3RJbnNpZGVMaW5rOworICAgIAogICAgIGNvbnN0IEF0b21pY1N0
cmluZyogYXR0ciA9IGxpbmtBdHRyaWJ1dGUoZWxlbWVudCk7CiAgICAgaWYgKCFhdHRyIHx8IGF0
dHItPmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gUHNldWRvTm9uZTsKLQotICAgIGlmICghY2hl
Y2tWaXNpdGVkKQotICAgICAgICByZXR1cm4gUHNldWRvQW55TGluazsKKyAgICAgICAgcmV0dXJu
IE5vdEluc2lkZUxpbms7CiAKICNpZiBQTEFURk9STShRVCkKICAgICBWZWN0b3I8VUNoYXIsIDUx
Mj4gdXJsOwogICAgIHZpc2l0ZWRVUkwobV9kb2N1bWVudC0+YmFzZVVSTCgpLCAqYXR0ciwgdXJs
KTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFBzZXVkb0xpbms7Cisg
ICAgICAgIHJldHVybiBJbnNpZGVVbnZpc2l0ZWRMaW5rOwogCiAgICAgLy8gSWYgdGhlIFF0NC40
IGludGVyZmFjZSBmb3IgdGhlIGhpc3RvcnkgaXMgdXNlZCwgd2Ugd2lsbCBoYXZlIHRvIGZhbGxi
YWNrCiAgICAgLy8gdG8gdGhlIG9sZCBnbG9iYWwgaGlzdG9yeS4KQEAgLTkwMiwyOCArODk3LDI3
IEBAIFBzZXVkb1N0YXRlIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2gKIAogICAgIExpbmtI
YXNoIGhhc2ggPSB2aXNpdGVkTGlua0hhc2godXJsLmRhdGEoKSwgdXJsLnNpemUoKSk7CiAgICAg
aWYgKCFoYXNoKQotICAgICAgICByZXR1cm4gUHNldWRvTGluazsKKyAgICAgICAgcmV0dXJuIElu
c2lkZVVudmlzaXRlZExpbms7CiAjZWxzZQogICAgIExpbmtIYXNoIGhhc2ggPSB2aXNpdGVkTGlu
a0hhc2gobV9kb2N1bWVudC0+YmFzZVVSTCgpLCAqYXR0cik7CiAgICAgaWYgKCFoYXNoKQotICAg
ICAgICByZXR1cm4gUHNldWRvTGluazsKKyAgICAgICAgcmV0dXJuIEluc2lkZVVudmlzaXRlZExp
bms7CiAjZW5kaWYKIAogICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIFBzZXVkb0xpbms7CisgICAgICAgIHJldHVy
biBJbnNpZGVVbnZpc2l0ZWRMaW5rOwogCiAgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7
CiAgICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gUHNldWRvTGluazsKKyAgICAgICAgcmV0
dXJuIEluc2lkZVVudmlzaXRlZExpbms7CiAKICAgICBtX2xpbmtzQ2hlY2tlZEZvclZpc2l0ZWRT
dGF0ZS5hZGQoaGFzaCk7Ci0gICAgcmV0dXJuIHBhZ2UtPmdyb3VwKCkuaXNMaW5rVmlzaXRlZCho
YXNoKSA/IFBzZXVkb1Zpc2l0ZWQgOiBQc2V1ZG9MaW5rOworICAgIHJldHVybiBwYWdlLT5ncm91
cCgpLmlzTGlua1Zpc2l0ZWQoaGFzaCkgPyBJbnNpZGVWaXNpdGVkTGluayA6IEluc2lkZVVudmlz
aXRlZExpbms7CiB9CiAKIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpj
aGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7
Ci0gICAgcHNldWRvU3RhdGUgPSBQc2V1ZG9Vbmtub3duOwogICAgIFBzZXVkb0lkIGR5bmFtaWNQ
c2V1ZG8gPSBOT1BTRVVETzsKIAogICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZWxlbWVu
dCwgMCwgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZmFsc2UpID09IFNlbGVjdG9yTWF0Y2hlczsKQEAg
LTEwMzEsMjAgKzEwMjUsMTEgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjYW5TaGFyZVN0eWxl
V2l0aAogICAgICAgICAgICAgICAgIGlmIChzLT5oYXNNYXBwZWRBdHRyaWJ1dGVzKCkpCiAgICAg
ICAgICAgICAgICAgICAgIG1hcHBlZEF0dHJzTWF0Y2ggPSBzLT5tYXBwZWRBdHRyaWJ1dGVzKCkt
Pm1hcHNFcXVpdmFsZW50KG1fc3R5bGVkRWxlbWVudC0+bWFwcGVkQXR0cmlidXRlcygpKTsKICAg
ICAgICAgICAgICAgICBpZiAobWFwcGVkQXR0cnNNYXRjaCkgewotICAgICAgICAgICAgICAgICAg
ICBib29sIGxpbmtzTWF0Y2ggPSB0cnVlOwotCiAgICAgICAgICAgICAgICAgICAgIGlmIChzLT5p
c0xpbmsoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayB0
byBzZWUgaWYgdGhlIHZpc2l0ZWQgc3RhdGUgbWF0Y2hlcy4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9Vbmtub3duKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ29sb3ImIGxpbmtDb2xvciA9IG1fZWxlbWVudC0+ZG9jdW1lbnQo
KS0+bGlua0NvbG9yKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29sb3Im
IHZpc2l0ZWRDb2xvciA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+dmlzaXRlZExpbmtDb2xvcigp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzZXVkb1N0YXRlID0gbV9jaGVja2VyLmNo
ZWNrUHNldWRvU3RhdGUobV9lbGVtZW50LCBzdHlsZS0+cHNldWRvU3RhdGUoKSAhPSBQc2V1ZG9B
bnlMaW5rIHx8IGxpbmtDb2xvciAhPSB2aXNpdGVkQ29sb3IpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgbGlua3NNYXRjaCA9IChwc2V1ZG9TdGF0
ZSA9PSBzdHlsZS0+cHNldWRvU3RhdGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bV9jaGVja2VyLmRldGVybWluZUxpbmtTdGF0ZShtX2VsZW1lbnQpICE9IHN0eWxlLT5pbnNpZGVM
aW5rKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICBpZiAobGlua3NNYXRjaCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExMzQsNyArMTExOSw3IEBAIFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3IKIC8vIElmIHJlc29sdmVGb3JSb290RGVmYXVsdCBp
cyB0cnVlLCBzdHlsZSBiYXNlZCBvbiB1c2VyIGFnZW50IHN0eWxlIHNoZWV0IG9ubHkuIFRoaXMg
aXMgdXNlZCBpbiBtZWRpYSBxdWVyaWVzLCB3aGVyZQogLy8gcmVsYXRpdmUgdW5pdHMgYXJlIGlu
dGVycHJldGVkIGFjY29yZGluZyB0byBkb2N1bWVudCByb290IGVsZW1lbnQgc3R5bGUsIHN0eWxl
ZCBvbmx5IHdpdGggVUEgc3R5bGVzaGVldAogCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NT
dHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIGRl
ZmF1bHRQYXJlbnQsIGJvb2wgYWxsb3dTaGFyaW5nLCBib29sIHJlc29sdmVGb3JSb290RGVmYXVs
dCkKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxl
bWVudChFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogZGVmYXVsdFBhcmVudCwgYm9vbCBhbGxvd1No
YXJpbmcsIGJvb2wgcmVzb2x2ZUZvclJvb3REZWZhdWx0LCBib29sIG1hdGNoVmlzaXRlZFJ1bGVz
KQogewogICAgIC8vIE9uY2UgYW4gZWxlbWVudCBoYXMgYSByZW5kZXJlciwgd2UgZG9uJ3QgdHJ5
IHRvIGRlc3Ryb3kgaXQsIHNpbmNlIG90aGVyd2lzZSB0aGUgcmVuZGVyZXIKICAgICAvLyB3aWxs
IHZhbmlzaCBpZiBhIHN0eWxlIHJlY2FsYyBoYXBwZW5zIGR1cmluZyBsb2FkaW5nLgpAQCAtMTE1
MCwxMyArMTEzNSwxNSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9y
CiAgICAgICAgIHJldHVybiBzX3N0eWxlTm90WWV0QXZhaWxhYmxlOwogICAgIH0KIAotICAgIGlu
aXRFbGVtZW50QW5kUHNldWRvU3RhdGUoZSk7CisgICAgaW5pdEVsZW1lbnQoZSk7CiAgICAgaWYg
KGFsbG93U2hhcmluZykgewogICAgICAgICBSZW5kZXJTdHlsZSogc2hhcmVkU3R5bGUgPSBsb2Nh
dGVTaGFyZWRTdHlsZSgpOwogICAgICAgICBpZiAoc2hhcmVkU3R5bGUpCiAgICAgICAgICAgICBy
ZXR1cm4gc2hhcmVkU3R5bGU7CiAgICAgfQogICAgIGluaXRGb3JTdHlsZVJlc29sdmUoZSwgZGVm
YXVsdFBhcmVudCk7CisgICAgCisgICAgbV9jaGVja2VyLm1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xh
c3MgPSBtYXRjaFZpc2l0ZWRSdWxlczsKIAogICAgIG1fc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3Jl
YXRlKCk7CiAKQEAgLTExNjUsNiArMTE1MiwxMSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBD
U1NTdHlsZVNlbGVjdG9yCiAgICAgZWxzZQogICAgICAgICBtX3BhcmVudFN0eWxlID0gc3R5bGUo
KTsKIAorICAgIGlmIChlLT5pc0xpbmsoKSkgeworICAgICAgICBtX3N0eWxlLT5zZXRJc0xpbmso
dHJ1ZSk7CisgICAgICAgIG1fc3R5bGUtPnNldEluc2lkZUxpbmsobV9jaGVja2VyLmRldGVybWlu
ZUxpbmtTdGF0ZShlKSk7CisgICAgfQorICAgIAogICAgIGlmIChzaW1wbGVEZWZhdWx0U3R5bGVT
aGVldCAmJiAhZWxlbWVudENhblVzZVNpbXBsZURlZmF1bHRTdHlsZShlKSkKICAgICAgICAgbG9h
ZEZ1bGxEZWZhdWx0U3R5bGUoKTsKIApAQCAtMTI3Niw2ICsxMjY4LDkgQEAgUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3RvcgogICAgICAgICB9CiAgICAgfQogCisgICAgLy8g
UmVzZXQgdGhlIHZhbHVlIGJhY2sgYmVmb3JlIGFwcGx5aW5nIHByb3BlcnRpZXMsIHNvIHRoYXQg
LXdlYmtpdC1saW5rIGtub3dzIHdoYXQgY29sb3IgdG8gdXNlLgorICAgIG1fY2hlY2tlci5tX21h
dGNoVmlzaXRlZFBzZXVkb0NsYXNzID0gbWF0Y2hWaXNpdGVkUnVsZXM7CisgICAgCiAgICAgLy8g
Tm93IHdlIGhhdmUgYWxsIG9mIHRoZSBtYXRjaGVkIHJ1bGVzIGluIHRoZSBhcHByb3ByaWF0ZSBv
cmRlci4gIFdhbGsgdGhlIHJ1bGVzIGFuZCBhcHBseQogICAgIC8vIGhpZ2gtcHJpb3JpdHkgcHJv
cGVydGllcyBmaXJzdCwgaS5lLiwgdGhvc2UgcHJvcGVydGllcyB0aGF0IG90aGVyIHByb3BlcnRp
ZXMgZGVwZW5kIG9uLgogICAgIC8vIFRoZSBvcmRlciBpcyAoMSkgaGlnaC1wcmlvcml0eSBub3Qg
aW1wb3J0YW50LCAoMikgaGlnaC1wcmlvcml0eSBpbXBvcnRhbnQsICgzKSBub3JtYWwgbm90IGlt
cG9ydGFudApAQCAtMTMxOCwxNCArMTMxMywyNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBD
U1NTdHlsZVNlbGVjdG9yCiAgICAgLy8gQ2xlYW4gdXAgb3VyIHN0eWxlIG9iamVjdCdzIGRpc3Bs
YXkgYW5kIHRleHQgZGVjb3JhdGlvbnMgKGFtb25nIG90aGVyIGZpeHVwcykuCiAgICAgYWRqdXN0
UmVuZGVyU3R5bGUoc3R5bGUoKSwgZSk7CiAKLSAgICAvLyBJZiB3ZSBhcmUgYSBsaW5rLCBjYWNo
ZSB0aGUgZGV0ZXJtaW5lZCBwc2V1ZG8tc3RhdGUuCi0gICAgaWYgKGUtPmlzTGluaygpKQotICAg
ICAgICBtX3N0eWxlLT5zZXRQc2V1ZG9TdGF0ZShwc2V1ZG9TdGF0ZSk7Ci0KICAgICAvLyBJZiB3
ZSBoYXZlIGZpcnN0LWxldHRlciBwc2V1ZG8gc3R5bGUsIGRvIG5vdCBzaGFyZSB0aGlzIHN0eWxl
CiAgICAgaWYgKG1fc3R5bGUtPmhhc1BzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUikpCiAgICAgICAg
IG1fc3R5bGUtPnNldFVuaXF1ZSgpOwogCisgICAgLy8gQ29tcHV0ZSBvdXIgc3R5bGUgYWxsb3dp
bmcgOnZpc2l0ZWQgdG8gbWF0Y2guCisgICAgaWYgKCFtYXRjaFZpc2l0ZWRSdWxlcyAmJiBtX3N0
eWxlLT5pbnNpZGVMaW5rKCkpIHsKKyAgICAgICAgLy8gRmV0Y2ggb3VyIHBhcmVudCBzdHlsZS4K
KyAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gbV9wYXJlbnRTdHlsZTsKKyAgICAg
ICAgaWYgKCFtX3N0eWxlLT5pc0xpbmsoKSkgeworICAgICAgICAgICAgLy8gVXNlIHRoZSBwYXJl
bnQncyB2aXNpdGVkIHN0eWxlIGlmIG9uZSBleGlzdHMuCisgICAgICAgICAgICBSZW5kZXJTdHls
ZSogcGFyZW50VmlzaXRlZFN0eWxlID0gbV9wYXJlbnRTdHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5
bGUoVklTSVRFRF9MSU5LKTsKKyAgICAgICAgICAgIGlmIChwYXJlbnRWaXNpdGVkU3R5bGUpCisg
ICAgICAgICAgICAgICAgcGFyZW50U3R5bGUgPSBwYXJlbnRWaXNpdGVkU3R5bGU7CisgICAgICAg
IH0KKyAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiByZXN1bHRTdHlsZSA9IG1fc3R5bGUucmVs
ZWFzZSgpOworICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiB2aXNpdGVkU3R5bGUgPSBz
dHlsZUZvckVsZW1lbnQoZSwgcGFyZW50U3R5bGUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7CisgICAg
ICAgIHZpc2l0ZWRTdHlsZS0+c2V0U3R5bGVUeXBlKFZJU0lURURfTElOSyk7CisgICAgICAgIHJl
c3VsdFN0eWxlLT5hZGRDYWNoZWRQc2V1ZG9TdHlsZSh2aXNpdGVkU3R5bGUpOworICAgICAgICBy
ZXR1cm4gcmVzdWx0U3R5bGUucmVsZWFzZSgpOworICAgIH0KKwogICAgIC8vIE5vdyByZXR1cm4g
dGhlIHN0eWxlLgogICAgIHJldHVybiBtX3N0eWxlLnJlbGVhc2UoKTsKIH0KQEAgLTEzNDgsNyAr
MTM1Niw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6a2V5ZnJhbWVTdHlsZXNGb3IKICAgICAv
LyBDb25zdHJ1Y3QgYW5kIHBvcHVsYXRlIHRoZSBzdHlsZSBmb3IgZWFjaCBrZXlmcmFtZQogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlLT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAg
IC8vIEFwcGx5IHRoZSBkZWNsYXJhdGlvbiB0byB0aGUgc3R5bGUuIFRoaXMgaXMgYSBzaW1wbGlm
aWVkIHZlcnNpb24gb2YgdGhlIGxvZ2ljIGluIHN0eWxlRm9yRWxlbWVudAotICAgICAgICBpbml0
RWxlbWVudEFuZFBzZXVkb1N0YXRlKGUpOworICAgICAgICBpbml0RWxlbWVudChlKTsKICAgICAg
ICAgaW5pdEZvclN0eWxlUmVzb2x2ZShlKTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IFdlYktp
dENTU0tleWZyYW1lUnVsZSoga2YgPSBydWxlLT5pdGVtKGkpOwpAQCAtMTQxMiwxMiArMTQyMCwx
MiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmtleWZyYW1lU3R5bGVzRm9yCiAgICAgICAgIGxp
c3QuY2xlYXIoKTsKIH0KIAotUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rv
cjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KFBzZXVkb0lkIHBzZXVkbywgRWxlbWVudCogZSwgUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlKQorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVT
ZWxlY3Rvcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KFBzZXVkb0lkIHBzZXVkbywgRWxlbWVudCog
ZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBib29sIG1hdGNoVmlzaXRlZExpbmtzKQogewog
ICAgIGlmICghZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpbml0RWxlbWVudEFuZFBzZXVk
b1N0YXRlKGUpOworICAgIGluaXRFbGVtZW50KGUpOwogICAgIGluaXRGb3JTdHlsZVJlc29sdmUo
ZSwgcGFyZW50U3R5bGUsIHBzZXVkbyk7CiAgICAgbV9zdHlsZSA9IHBhcmVudFN0eWxlOwogICAg
IApAQCAtMTQ0MCw3ICsxNDQ4LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVT
ZWxlY3RvcgogICAgIGlmIChwYXJlbnRTdHlsZSkKICAgICAgICAgbV9zdHlsZS0+aW5oZXJpdEZy
b20ocGFyZW50U3R5bGUpOwogCi0gICAgbV9zdHlsZS0+bm9uaW5oZXJpdGVkX2ZsYWdzLl9zdHls
ZVR5cGUgPSBwc2V1ZG87CisgICAgbV9zdHlsZS0+c2V0U3R5bGVUeXBlKHBzZXVkbyk7CiAgICAg
CiAgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSAwOwogICAgIC8vIEhpZ2gtcHJpb3JpdHkgcHJvcGVy
dGllcy4KQEAgLTE0NzUsNiArMTQ4MywyMiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NT
dHlsZVNlbGVjdG9yCiAgICAgLy8gQ2xlYW4gdXAgb3VyIHN0eWxlIG9iamVjdCdzIGRpc3BsYXkg
YW5kIHRleHQgZGVjb3JhdGlvbnMgKGFtb25nIG90aGVyIGZpeHVwcykuCiAgICAgYWRqdXN0UmVu
ZGVyU3R5bGUoc3R5bGUoKSwgMCk7CiAKKyAgICAvLyBDb21wdXRlIG91ciA6dmlzaXRlZCBzdHls
ZS4KKyAgICBpZiAoIW1hdGNoVmlzaXRlZExpbmtzICYmIG1fc3R5bGUtPmluc2lkZUxpbmsoKSkg
eworICAgICAgICAvLyBGZXRjaCBvdXIgcGFyZW50IHN0eWxlLgorICAgICAgICBSZW5kZXJTdHls
ZSogcGFyZW50U3R5bGUgPSBtX3BhcmVudFN0eWxlOworICAgICAgICBpZiAocGFyZW50U3R5bGUp
IHsKKyAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRWaXNpdGVkU3R5bGUgPSBtX3BhcmVu
dFN0eWxlLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShWSVNJVEVEX0xJTkspOworICAgICAgICAgICAg
aWYgKHBhcmVudFZpc2l0ZWRTdHlsZSkKKyAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZSA9IHBh
cmVudFZpc2l0ZWRTdHlsZTsKKyAgICAgICAgfQorICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+
IHJlc3VsdFN0eWxlID0gbV9zdHlsZS5yZWxlYXNlKCk7CisgICAgICAgIFJlZlB0cjxSZW5kZXJT
dHlsZT4gdmlzaXRlZFN0eWxlID0gcHNldWRvU3R5bGVGb3JFbGVtZW50KHBzZXVkbywgZSwgcGFy
ZW50U3R5bGUsIHRydWUpOworICAgICAgICB2aXNpdGVkU3R5bGUtPnNldFN0eWxlVHlwZShWSVNJ
VEVEX0xJTkspOworICAgICAgICByZXN1bHRTdHlsZS0+YWRkQ2FjaGVkUHNldWRvU3R5bGUodmlz
aXRlZFN0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiByZXN1bHRTdHlsZS5yZWxlYXNl
KCk7CisgICAgfQorCiAgICAgLy8gTm93IHJldHVybiB0aGUgc3R5bGUuCiAgICAgcmV0dXJuIG1f
c3R5bGUucmVsZWFzZSgpOwogfQpAQCAtMTczMiw3ICsxNzU2LDcgQEAgUGFzc1JlZlB0cjxDU1NS
dWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3RvcgogCiAgICAgbV9jaGVja2VyLm1fY29sbGVjdFJ1bGVz
T25seSA9IHRydWU7CiAKLSAgICBpbml0RWxlbWVudEFuZFBzZXVkb1N0YXRlKGUpOworICAgIGlu
aXRFbGVtZW50KGUpOwogICAgIGluaXRGb3JTdHlsZVJlc29sdmUoZSwgMCwgcHNldWRvSWQpOwog
CiAgICAgaWYgKCFhdXRob3JPbmx5KSB7CkBAIC0xNzYzLDcgKzE3ODcsNyBAQCBib29sIENTU1N0
eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0b3IoQ1NTCiAgICAgbV9keW5hbWljUHNldWRvID0gTk9Q
U0VVRE87CiAKICAgICAvLyBDaGVjayB0aGUgc2VsZWN0b3IKLSAgICBTZWxlY3Rvck1hdGNoIG1h
dGNoID0gbV9jaGVja2VyLmNoZWNrU2VsZWN0b3Ioc2VsLCBtX2VsZW1lbnQsICZtX3NlbGVjdG9y
QXR0cnMsIG1fZHluYW1pY1BzZXVkbywgdHJ1ZSwgZmFsc2UsIHN0eWxlKCksIG1fcGFyZW50U3R5
bGUpOworICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBtX2NoZWNrZXIuY2hlY2tTZWxlY3Rvcihz
ZWwsIG1fZWxlbWVudCwgJm1fc2VsZWN0b3JBdHRycywgbV9keW5hbWljUHNldWRvLCBmYWxzZSwg
ZmFsc2UsIHN0eWxlKCksIG1fcGFyZW50U3R5bGUpOwogICAgIGlmIChtYXRjaCAhPSBTZWxlY3Rv
ck1hdGNoZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTc3OCw3ICsxODAyLDcgQEAg
Ym9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjdG9yKENTUwogLy8gKiBTZWxlY3Rvck1h
dGNoZXMgICAgICAgICAtIHRoZSBzZWxlY3RvciBtYXRjaGVzIHRoZSBlbGVtZW50IGUKIC8vICog
U2VsZWN0b3JGYWlsc0xvY2FsbHkgICAgLSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIHRoZSBlbGVt
ZW50IGUKIC8vICogU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgLSB0aGUgc2VsZWN0b3IgZmFpbHMg
Zm9yIGUgYW5kIGFueSBzaWJsaW5nIG9yIGFuY2VzdG9yIG9mIGUKLUNTU1N0eWxlU2VsZWN0b3I6
OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1Nl
bGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGUsIEhhc2hTZXQ8QXRvbWljU3RyaW5n
SW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc0Fu
Y2VzdG9yLCBib29sIGlzU3ViU2VsZWN0b3IsIFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIFJl
bmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNvbnN0CitDU1NTdHlsZVNlbGVjdG9yOjpT
ZWxlY3Rvck1hdGNoIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxl
Y3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0cmluZ0lt
cGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJT
ZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUs
IFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNW
RykKICAgICAvLyBTcGVjOiBDU1MyIHNlbGVjdG9ycyBjYW5ub3QgYmUgYXBwbGllZCB0byB0aGUg
KGNvbmNlcHR1YWxseSkgY2xvbmVkIERPTSB0cmVlCkBAIC0xNzg4LDcgKzE4MTIsNyBAQCBDU1NT
dHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlCiAjZW5kaWYKIAogICAgIC8vIGZp
cnN0IHNlbGVjdG9yIGhhcyB0byBtYXRjaAotICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzZWws
IGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGlzQW5jZXN0b3IsIGlzU3ViU2VsZWN0
b3IsIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxlKSkKKyAgICBpZiAoIWNoZWNrT25l
U2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc1N1YlNlbGVj
dG9yLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCiAgICAgICAgIHJldHVybiBT
ZWxlY3RvckZhaWxzTG9jYWxseTsKIAogICAgIC8vIFRoZSByZXN0IG9mIHRoZSBzZWxlY3RvcnMg
aGFzIHRvIG1hdGNoCkBAIC0xODA0LDYgKzE4MjgsMTcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICBpZiAobV9wc2V1ZG9TdHlsZSAhPSBOT1BTRVVE
TyAmJiBtX3BzZXVkb1N0eWxlICE9IGR5bmFtaWNQc2V1ZG8pCiAgICAgICAgICAgICByZXR1cm4g
U2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAKKyAgICAvLyBDaGVjayBmb3IgbmVzdGVkIGxpbmtz
LgorICAgIGlmIChtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzKSB7CisgICAgICAgIFJlbmRlclN0
eWxlKiBjdXJyZW50U3R5bGUgPSBlbGVtZW50U3R5bGUgPyBlbGVtZW50U3R5bGUgOiBlLT5yZW5k
ZXJTdHlsZSgpOworICAgICAgICBpZiAoY3VycmVudFN0eWxlICYmIGN1cnJlbnRTdHlsZS0+aW5z
aWRlTGluaygpICYmIGUtPmlzTGluaygpKSB7CisgICAgICAgICAgICBpZiAoZW5jb3VudGVyZWRM
aW5rKQorICAgICAgICAgICAgICAgIG1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3MgPSBmYWxzZTsg
Ly8gVGhpcyBsaW5rIGlzIG5vdCByZWxldmFudCB0byB0aGUgc3R5bGUgYmVpbmcgcmVzb2x2ZWQs
IHNvIGRpc2FibGUgbWF0Y2hpbmcuCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ZW5jb3VudGVyZWRMaW5rID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHN3aXRjaCAo
cmVsYXRpb24pIHsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudDoKICAgICAg
ICAgICAgIHdoaWxlICh0cnVlKSB7CkBAIC0xODExLDcgKzE4NDYsNyBAQCBDU1NTdHlsZVNlbGVj
dG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlCiAgICAgICAgICAgICAgICAgaWYgKCFuIHx8ICFu
LT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZh
aWxzQ29tcGxldGVseTsKICAgICAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KG4pOwotICAgICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9y
KHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZmFsc2UpOworICAg
ICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwg
c2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluayk7CiAg
ICAgICAgICAgICAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yRmFpbHNMb2NhbGx5KQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CiAgICAgICAgICAgICB9CkBAIC0xODIyLDcgKzE4
NTcsNyBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlCiAgICAgICAg
ICAgICBpZiAoIW4gfHwgIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBz
ZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCB0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICBy
ZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8s
IGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OkRpcmVjdEFkamFjZW50OgogICAgICAgICB7CkBAIC0xODM3LDcgKzE4NzIsOCBAQCBD
U1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlCiAgICAgICAgICAgICBpZiAo
IW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5OwogICAgICAg
ICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgIHJldHVybiBj
aGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgZmFsc2Us
IGZhbHNlKTsgCisgICAgICAgICAgICBtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzID0gZmFsc2U7
CisgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMs
IGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOyAKICAgICAgICAgfQogICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OgogICAgICAgICAgICAgaWYg
KCFtX2NvbGxlY3RSdWxlc09ubHkgJiYgZS0+cGFyZW50Tm9kZSgpICYmIGUtPnBhcmVudE5vZGUo
KS0+aXNFbGVtZW50Tm9kZSgpKSB7CkBAIC0xODUyLDcgKzE4ODgsOCBAQCBDU1NTdHlsZVNlbGVj
dG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlCiAgICAgICAgICAgICAgICAgaWYgKCFuKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0xvY2FsbHk7CiAgICAgICAgICAg
ICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgICAgICBTZWxl
Y3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5
bmFtaWNQc2V1ZG8sIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgbV9tYXRjaFZpc2l0
ZWRQc2V1ZG9DbGFzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0
Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywg
ZmFsc2UsIGVuY291bnRlcmVkTGluayk7CiAgICAgICAgICAgICAgICAgaWYgKG1hdGNoICE9IFNl
bGVjdG9yRmFpbHNMb2NhbGx5KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CiAg
ICAgICAgICAgICB9OwpAQCAtMTg2NCw3ICsxOTAxLDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JNYXRjaCBDU1NTdHlsZQogICAgICAgICAgICAgaWYgKChlbGVtZW50U3R5bGUgfHwgbV9j
b2xsZWN0UnVsZXNPbmx5KSAmJiBkeW5hbWljUHNldWRvICE9IE5PUFNFVURPICYmIGR5bmFtaWNQ
c2V1ZG8gIT0gU0VMRUNUSU9OICYmCiAgICAgICAgICAgICAgICAgISgoUmVuZGVyU2Nyb2xsYmFy
OjpzY3JvbGxiYXJGb3JTdHlsZVJlc29sdmUoKSB8fCBkeW5hbWljUHNldWRvID09IFNDUk9MTEJB
Ul9DT1JORVIgfHwgZHluYW1pY1BzZXVkbyA9PSBSRVNJWkVSKSAmJiBzZWwtPm1fbWF0Y2ggPT0g
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKSkKICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0
b3JGYWlsc0NvbXBsZXRlbHk7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWws
IGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGlzQW5jZXN0b3IsIHRydWUsIGVsZW1l
bnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1Nl
bGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3Vu
dGVyZWRMaW5rLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwpAQCAtMTkzNyw3ICsxOTc0LDcgQEAg
c3RhdGljIGJvb2wgaHRtbEF0dHJpYnV0ZUhhc0Nhc2VJbnNlbnNpdAogICAgIHJldHVybiBpc1Bv
c3NpYmxlSFRNTEF0dHIgJiYgaHRtbENhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZXNTZXQtPmNvbnRh
aW5zKGF0dHIubG9jYWxOYW1lKCkuaW1wbCgpKTsKIH0KIAotYm9vbCBDU1NTdHlsZVNlbGVjdG9y
OjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxl
bWVudCogZSwgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVk
b0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzQW5jZXN0b3IsIGJvb2wgaXNTdWJTZWxlY3Rvciwg
UmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHls
ZSkgY29uc3QKK2Jvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGUsIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBp
c1N1YlNlbGVjdG9yLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5kZXJTdHlsZSogZWxl
bWVudFBhcmVudFN0eWxlKSBjb25zdAogewogICAgIGlmICghZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjAzOCw3ICsyMDc1LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rv
ckNoZWNrZXI6OgogICAgICAgICAgICAgICAgIC8vIHRoZSBwYXJzZXIgZW5mb3JjZXMgdGhhdCB0
aGlzIG5ldmVyIG9jY3VycwogICAgICAgICAgICAgICAgIEFTU0VSVCghc3ViU2VsLT5zaW1wbGVT
ZWxlY3RvcigpKTsKIAotICAgICAgICAgICAgICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzdWJT
ZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGlzQW5jZXN0b3IsIHRydWUsIGVs
ZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxlKSkKKyAgICAgICAgICAgICAgICBpZiAoIWNo
ZWNrT25lU2VsZWN0b3Ioc3ViU2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCB0
cnVlLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGR5bmFt
aWNQc2V1ZG8gIT0gTk9QU0VVRE8gJiYgKFJlbmRlclNjcm9sbGJhcjo6c2Nyb2xsYmFyRm9yU3R5
bGVSZXNvbHZlKCkgfHwgZHluYW1pY1BzZXVkbyA9PSBTQ1JPTExCQVJfQ09STkVSIHx8IGR5bmFt
aWNQc2V1ZG8gPT0gUkVTSVpFUikpIHsKQEAgLTIzNDYsOSArMjM4Myw3IEBAIGJvb2wgQ1NTU3R5
bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9BbnlMaW5rOgotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQ
c2V1ZG9Vbmtub3duKQotICAgICAgICAgICAgICAgICAgICBwc2V1ZG9TdGF0ZSA9IGNoZWNrUHNl
dWRvU3RhdGUoZSwgZmFsc2UpOwotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQ
c2V1ZG9BbnlMaW5rIHx8IHBzZXVkb1N0YXRlID09IFBzZXVkb0xpbmsgfHwgcHNldWRvU3RhdGUg
PT0gUHNldWRvVmlzaXRlZCkKKyAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLT5pc0xpbmsoKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9BdXRvZmlsbDogewpAQCAtMjM1
OSwxNiArMjM5NCwxMiBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9MaW5rOgotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0
ZSA9PSBQc2V1ZG9Vbmtub3duIHx8IHBzZXVkb1N0YXRlID09IFBzZXVkb0FueUxpbmspCi0gICAg
ICAgICAgICAgICAgICAgIHBzZXVkb1N0YXRlID0gY2hlY2tQc2V1ZG9TdGF0ZShlKTsKLSAgICAg
ICAgICAgICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNldWRvTGluaykKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgaWYgKGUgJiYgZS0+aXNMaW5rKCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAhbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzczsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBz
ZXVkb1Zpc2l0ZWQ6Ci0gICAgICAgICAgICAgICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb1Vu
a25vd24gfHwgcHNldWRvU3RhdGUgPT0gUHNldWRvQW55TGluaykKLSAgICAgICAgICAgICAgICAg
ICAgcHNldWRvU3RhdGUgPSBjaGVja1BzZXVkb1N0YXRlKGUpOwotICAgICAgICAgICAgICAgIGlm
IChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9WaXNpdGVkKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLT5pc0xpbmsoKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3M7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9EcmFnOiB7
CiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRTdHlsZSkKQEAgLTI5NTQsNyArMjk4NSw3IEBA
IHN0YXRpYyB2b2lkIGFwcGx5Q291bnRlckxpc3QoUmVuZGVyU3R5bGUKIAogdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjphcHBseVByb3BlcnR5VG9TdHlsZShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSwg
UmVuZGVyU3R5bGUqIHN0eWxlKQogewotICAgIGluaXRFbGVtZW50QW5kUHNldWRvU3RhdGUoMCk7
CisgICAgaW5pdEVsZW1lbnQoMCk7CiAgICAgaW5pdEZvclN0eWxlUmVzb2x2ZSgwLCBzdHlsZSk7
CiAgICAgbV9zdHlsZSA9IHN0eWxlOwogICAgIGFwcGx5UHJvcGVydHkoaWQsIHZhbHVlKTsKQEAg
LTYwNDcsMTcgKzYwNzgsOSBAQCBDb2xvciBDU1NTdHlsZVNlbGVjdG9yOjpnZXRDb2xvckZyb21Q
cmltCiAgICAgaWYgKGlkZW50KSB7CiAgICAgICAgIGlmIChpZGVudCA9PSBDU1NWYWx1ZVdlYmtp
dFRleHQpCiAgICAgICAgICAgICBjb2wgPSBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnRleHRDb2xv
cigpOwotICAgICAgICBlbHNlIGlmIChpZGVudCA9PSBDU1NWYWx1ZVdlYmtpdExpbmspIHsKLSAg
ICAgICAgICAgIGNvbnN0IENvbG9yJiBsaW5rQ29sb3IgPSBtX2VsZW1lbnQtPmRvY3VtZW50KCkt
PmxpbmtDb2xvcigpOwotICAgICAgICAgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRDb2xvciA9IG1f
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+dmlzaXRlZExpbmtDb2xvcigpOwotICAgICAgICAgICAgaWYg
KGxpbmtDb2xvciA9PSB2aXNpdGVkQ29sb3IpCi0gICAgICAgICAgICAgICAgY29sID0gbGlua0Nv
bG9yOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBzZXVkb1N0YXRl
ID09IFBzZXVkb1Vua25vd24gfHwgcHNldWRvU3RhdGUgPT0gUHNldWRvQW55TGluaykKLSAgICAg
ICAgICAgICAgICAgICAgcHNldWRvU3RhdGUgPSBtX2NoZWNrZXIuY2hlY2tQc2V1ZG9TdGF0ZSht
X2VsZW1lbnQpOwotICAgICAgICAgICAgICAgIGNvbCA9IChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9M
aW5rKSA/IGxpbmtDb2xvciA6IHZpc2l0ZWRDb2xvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSBlbHNlIGlmIChpZGVudCA9PSBDU1NWYWx1ZVdlYmtpdEFjdGl2ZWxpbmspCisgICAgICAgIGVs
c2UgaWYgKGlkZW50ID09IENTU1ZhbHVlV2Via2l0TGluaykKKyAgICAgICAgICAgIGNvbCA9IG1f
ZWxlbWVudC0+aXNMaW5rKCkgJiYgbV9jaGVja2VyLm1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3Mg
PyBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnZpc2l0ZWRMaW5rQ29sb3IoKSA6IG1fZWxlbWVudC0+
ZG9jdW1lbnQoKS0+bGlua0NvbG9yKCk7CisgICAgICAgIGVsc2UgaWYgKGlkZW50ID09IENTU1Zh
bHVlV2Via2l0QWN0aXZlbGluaykKICAgICAgICAgICAgIGNvbCA9IG1fZWxlbWVudC0+ZG9jdW1l
bnQoKS0+YWN0aXZlTGlua0NvbG9yKCk7CiAgICAgICAgIGVsc2UgaWYgKGlkZW50ID09IENTU1Zh
bHVlV2Via2l0Rm9jdXNSaW5nQ29sb3IpCiAgICAgICAgICAgICBjb2wgPSBSZW5kZXJUaGVtZTo6
Zm9jdXNSaW5nQ29sb3IoKTsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJldmlzaW9uIDU2
ODU5KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC04NSwxMiArODUsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
c3RyaWN0UGFyc2luZywgYm9vbCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpOwogICAgICAgICB+
Q1NTU3R5bGVTZWxlY3RvcigpOwogCi0gICAgICAgIHZvaWQgaW5pdEVsZW1lbnRBbmRQc2V1ZG9T
dGF0ZShFbGVtZW50Kik7CisgICAgICAgIHZvaWQgaW5pdEVsZW1lbnQoRWxlbWVudCopOwogICAg
ICAgICB2b2lkIGluaXRGb3JTdHlsZVJlc29sdmUoRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJl
bnRTdHlsZSA9IDAsIFBzZXVkb0lkID0gTk9QU0VVRE8pOwotICAgICAgICBQYXNzUmVmUHRyPFJl
bmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnQoRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSA9IDAsIGJvb2wgYWxsb3dTaGFyaW5nID0gdHJ1ZSwgYm9vbCByZXNvbHZlRm9yUm9vdERl
ZmF1bHQgPSBmYWxzZSk7CisgICAgICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9y
RWxlbWVudChFbGVtZW50KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCwgYm9vbCBhbGxv
d1NoYXJpbmcgPSB0cnVlLCBib29sIHJlc29sdmVGb3JSb290RGVmYXVsdCA9IGZhbHNlLCBib29s
IG1hdGNoVmlzaXRlZExpbmtzID0gZmFsc2UpOwogICAgICAgICB2b2lkIGtleWZyYW1lU3R5bGVz
Rm9yQW5pbWF0aW9uKEVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSosIEtleWZyYW1lTGlzdCYg
bGlzdCk7CiAKLSAgICAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGVGb3JF
bGVtZW50KFBzZXVkb0lkLCBFbGVtZW50KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCk7
CisgICAgICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHBzZXVkb1N0eWxlRm9yRWxlbWVudChQ
c2V1ZG9JZCwgRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IDAsIGJvb2wgbWF0
Y2hWaXNpdGVkTGlua3MgPSBmYWxzZSk7CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlRm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKIApAQCAtMTk2LDExICsxOTYs
MTEgQEAgcHVibGljOgogICAgICAgICAgICAgU2VsZWN0b3JDaGVja2VyKERvY3VtZW50KiwgYm9v
bCBzdHJpY3RQYXJzaW5nKTsKIAogICAgICAgICAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENTU1Nl
bGVjdG9yKiwgRWxlbWVudCopIGNvbnN0OwotICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBjaGVj
a1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1w
bCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc0FuY2Vz
dG9yLCBib29sIGlzU3ViU2VsZWN0b3IsIFJlbmRlclN0eWxlKiA9IDAsIFJlbmRlclN0eWxlKiBl
bGVtZW50UGFyZW50U3R5bGUgPSAwKSBjb25zdDsKLSAgICAgICAgICAgIGJvb2wgY2hlY2tPbmVT
ZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwq
Piogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNBbmNlc3Rv
ciwgYm9vbCBpc1N1YlNlbGVjdG9yLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBlbGVtZW50
UGFyZW50U3R5bGUpIGNvbnN0OwotICAgICAgICAgICAgUHNldWRvU3RhdGUgY2hlY2tQc2V1ZG9T
dGF0ZShFbGVtZW50KiwgYm9vbCBjaGVja1Zpc2l0ZWQgPSB0cnVlKSBjb25zdDsKKyAgICAgICAg
ICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBI
YXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFt
aWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJlbmRl
clN0eWxlKiA9IDAsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUgPSAwKSBjb25zdDsK
KyAgICAgICAgICAgIGJvb2wgY2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQq
LCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5
bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHls
ZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdDsKICAgICAgICAgICAgIGJvb2wgY2hlY2tTY3Jv
bGxiYXJQc2V1ZG9DbGFzcyhDU1NTZWxlY3RvciosIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvKSBj
b25zdDsKIAorICAgICAgICAgICAgRUluc2lkZUxpbmsgZGV0ZXJtaW5lTGlua1N0YXRlKEVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0OwogICAgICAgICAgICAgdm9pZCBhbGxWaXNpdGVkU3RhdGVDaGFu
Z2VkKCk7CiAgICAgICAgICAgICB2b2lkIHZpc2l0ZWRTdGF0ZUNoYW5nZWQoTGlua0hhc2ggdmlz
aXRlZEhhc2gpOwogCkBAIC0yMDksNiArMjA5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgYm9v
bCBtX2NvbGxlY3RSdWxlc09ubHk7CiAgICAgICAgICAgICBQc2V1ZG9JZCBtX3BzZXVkb1N0eWxl
OwogICAgICAgICAgICAgYm9vbCBtX2RvY3VtZW50SXNIVE1MOworICAgICAgICAgICAgbXV0YWJs
ZSBib29sIG1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3M7CiAgICAgICAgICAgICBtdXRhYmxlIEhh
c2hTZXQ8TGlua0hhc2gsIExpbmtIYXNoSGFzaD4gbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3Rh
dGU7CiAgICAgICAgIH07CiAKQEAgLTI3OSw3ICsyODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIENT
U1ZhbHVlKiBtX2xpbmVIZWlnaHRWYWx1ZTsKICAgICAgICAgYm9vbCBtX2ZvbnREaXJ0eTsKICAg
ICAgICAgYm9vbCBtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlczsKLQorICAgICAgICAKICAgICAg
ICAgUmVmUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7CiAgICAgICAgIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nSW1wbCo+IG1fc2VsZWN0b3JBdHRyczsKICAgICAgICAgVmVjdG9yPENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uKj4gbV9hZGRpdGlvbmFsQXR0cmlidXRlU3R5bGVEZWNs
czsKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjcsMTEgKzg2NywxNiBAQCBib29sIEVsZW1lbnQ6OnBz
ZXVkb1N0eWxlQ2FjaGVJc0ludmFsaWQoCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWNo
ZVNpemU7ICsraSkgewogICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1BzZXVkb1N0eWxl
OwogICAgICAgICBQc2V1ZG9JZCBwc2V1ZG9JZCA9IHBzZXVkb1N0eWxlQ2FjaGVbaV0tPnN0eWxl
VHlwZSgpOwotICAgICAgICBpZiAocHNldWRvSWQgPT0gRklSU1RfTElORSB8fCBwc2V1ZG9JZCA9
PSBGSVJTVF9MSU5FX0lOSEVSSVRFRCkKKyAgICAgICAgaWYgKHBzZXVkb0lkID09IFZJU0lURURf
TElOSykgeworICAgICAgICAgICAgbmV3UHNldWRvU3R5bGUgPSAgbmV3U3R5bGUtPmdldENhY2hl
ZFBzZXVkb1N0eWxlKFZJU0lURURfTElOSyk7IC8vIFRoaXMgcHNldWRvLXN0eWxlIHdhcyBhZ2dy
ZXNzaXZlbHkgY29tcHV0ZWQgYWxyZWFkeSB3aGVuIHdlIGZpcnN0IGNhbGxlZCBzdHlsZUZvckVs
ZW1lbnQgb24gdGhlIG5ldyBzdHlsZS4KKyAgICAgICAgICAgIGlmICghbmV3UHNldWRvU3R5bGUg
fHwgKm5ld1BzZXVkb1N0eWxlICE9ICpwc2V1ZG9TdHlsZUNhY2hlW2ldKQorICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKHBzZXVkb0lkID09IEZJUlNUX0xJ
TkUgfHwgcHNldWRvSWQgPT0gRklSU1RfTElORV9JTkhFUklURUQpCiAgICAgICAgICAgICBuZXdQ
c2V1ZG9TdHlsZSA9IHJlbmRlcmVyKCktPnVuY2FjaGVkRmlyc3RMaW5lU3R5bGUobmV3U3R5bGUp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBuZXdQc2V1ZG9TdHlsZSA9IHJlbmRlcmVyKCkt
PmdldFVuY2FjaGVkUHNldWRvU3R5bGUocHNldWRvSWQsIG5ld1N0eWxlLCBuZXdTdHlsZSk7Ci0K
KyAgICAgICAgaWYgKCFuZXdQc2V1ZG9TdHlsZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBpZiAoKm5ld1BzZXVkb1N0eWxlICE9ICpwc2V1ZG9TdHlsZUNhY2hlW2ldKSB7CiAg
ICAgICAgICAgICBpZiAocHNldWRvSWQgPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCkKICAgICAg
ICAgICAgICAgICBuZXdTdHlsZS0+c2V0SGFzUHNldWRvU3R5bGUocHNldWRvSWQpOwpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9MaW5rSGFzaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9MaW5rSGFzaC5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9M
aW5rSGFzaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCwxMCArMTU0LDExIEBAIExpbmtIYXNo
IHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVQ2hhciogdXIKIAogdm9pZCB2aXNpdGVkVVJMKGNvbnN0
IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMLCBWZWN0b3I8VUNo
YXIsIDUxMj4mIGJ1ZmZlcikKIHsKKyAgICBpZiAoYXR0cmlidXRlVVJMLmlzTnVsbCgpKQorICAg
ICAgICByZXR1cm47CisKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IGF0dHJpYnV0ZVVS
TC5jaGFyYWN0ZXJzKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRlVVJMLmxlbmd0
aCgpOwotICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGlzIGlz
IGEgcG9vciBtYW4ncyBjb21wbGV0ZVVSTC4gRmFzdGVyIHdpdGggbGVzcyBtZW1vcnkgYWxsb2Nh
dGlvbi4KICAgICAvLyBGSVhNRTogSXQncyBtaXNzaW5nIGEgbG90IG9mIHdoYXQgY29tcGxldGVV
UkwgZG9lcyBhbmQgYSBsb3Qgb2Ygd2hhdCBLVVJMIGRvZXMuCkBAIC0xODYsMTYgKzE4NywyMCBA
QCB2b2lkIHZpc2l0ZWRVUkwoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBzd2l0Y2ggKGNoYXJhY3RlcnNbMF0pIHsKLSAgICAgICAgY2FzZSAn
Lyc6Ci0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKGJhc2Uuc3RyaW5nKCkuY2hhcmFjdGVycygp
LCBiYXNlLnBhdGhTdGFydCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICcj
JzoKLSAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoYmFzZS5zdHJpbmcoKS5jaGFyYWN0ZXJzKCks
IGJhc2UucGF0aEVuZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChiYXNlLnN0cmluZygpLmNoYXJhY3RlcnMoKSwgYmFz
ZS5wYXRoQWZ0ZXJMYXN0U2xhc2goKSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBpZiAoIWxl
bmd0aCkKKyAgICAgICAgYnVmZmVyLmFwcGVuZChiYXNlLnN0cmluZygpLmNoYXJhY3RlcnMoKSwg
YmFzZS5zdHJpbmcoKS5sZW5ndGgoKSk7CisgICAgZWxzZSB7CisgICAgICAgIHN3aXRjaCAoY2hh
cmFjdGVyc1swXSkgeworICAgICAgICAgICAgY2FzZSAnLyc6CisgICAgICAgICAgICAgICAgYnVm
ZmVyLmFwcGVuZChiYXNlLnN0cmluZygpLmNoYXJhY3RlcnMoKSwgYmFzZS5wYXRoU3RhcnQoKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICcjJzoKKyAgICAgICAg
ICAgICAgICBidWZmZXIuYXBwZW5kKGJhc2Uuc3RyaW5nKCkuY2hhcmFjdGVycygpLCBiYXNlLnBh
dGhFbmQoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoYmFzZS5zdHJpbmcoKS5jaGFyYWN0ZXJzKCks
IGJhc2UucGF0aEFmdGVyTGFzdFNsYXNoKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAgICAgfQogICAgIGJ1ZmZlci5hcHBlbmQoY2hhcmFjdGVycywgbGVuZ3RoKTsKICAg
ICBjbGVhblBhdGgoYnVmZmVyKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
CShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiSW5saW5lRmxvd0Jv
eC5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5h
bWVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGxpcHNpc0JveC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNzYwLDcgKzc2MSw3IEBAIHZvaWQgSW5s
aW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucygKICAgICAgICAgaWYgKHN0eWxlVG9Vc2Ut
PmJveFNoYWRvdygpKQogICAgICAgICAgICAgcGFpbnRCb3hTaGFkb3coY29udGV4dCwgc3R5bGVU
b1VzZSwgTm9ybWFsLCB0eCwgdHksIHcsIGgpOwogCi0gICAgICAgIENvbG9yIGMgPSBzdHlsZVRv
VXNlLT5iYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgQ29sb3IgYyA9IHJlbmRlcmVyKCktPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihzdHlsZVRvVXNlLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cik7CiAgICAgICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGMsIHN0eWxlVG9Vc2UtPmJh
Y2tncm91bmRMYXllcnMoKSwgdHgsIHR5LCB3LCBoKTsKIAogICAgICAgICBpZiAoc3R5bGVUb1Vz
ZS0+Ym94U2hhZG93KCkpCkBAIC05NTcsNyArOTU4LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojpw
YWludFRleHREZWNvcmF0aW9ucwogICAgICAgICB0eCArPSBib3JkZXJMZWZ0KCkgKyBwYWRkaW5n
TGVmdCgpOwogCiAgICAgICAgIENvbG9yIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJvdWdo
OwotICAgICAgICB1bmRlcmxpbmUgPSBvdmVybGluZSA9IGxpbmV0aHJvdWdoID0gc3R5bGVUb1Vz
ZS0+Y29sb3IoKTsKKyAgICAgICAgdW5kZXJsaW5lID0gb3ZlcmxpbmUgPSBsaW5ldGhyb3VnaCA9
IHJlbmRlcmVyKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdHlsZVRvVXNlLCBDU1NQcm9wZXJ0
eUNvbG9yKTsKICAgICAgICAgaWYgKCFwYXJlbnQoKSkKICAgICAgICAgICAgIHJlbmRlcmVyKCkt
PmdldFRleHREZWNvcmF0aW9uQ29sb3JzKGRlY28sIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0
aHJvdWdoKTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9u
IDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxMSwxOCArNDExLDE0IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUmVu
ZGVyT2JqZWN0OjoKICAgICAgICAgdGV4dEZpbGxDb2xvciA9IENvbG9yOjpibGFjazsKICAgICAg
ICAgdGV4dFN0cm9rZUNvbG9yID0gQ29sb3I6OmJsYWNrOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IHRleHRGaWxsQ29sb3IgPSBzdHlsZVRvVXNlLT50ZXh0RmlsbENvbG9yKCk7Ci0gICAgICAgIGlm
ICghdGV4dEZpbGxDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgICAgICB0ZXh0RmlsbENvbG9yID0g
c3R5bGVUb1VzZS0+Y29sb3IoKTsKLQorICAgICAgICB0ZXh0RmlsbENvbG9yID0gcmVuZGVyZXIo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHN0eWxlVG9Vc2UsIENTU1Byb3BlcnR5V2Via2l0VGV4
dEZpbGxDb2xvcik7CisgICAgICAgIAogICAgICAgICAvLyBNYWtlIHRoZSB0ZXh0IGZpbGwgY29s
b3IgbGVnaWJsZSBhZ2FpbnN0IGEgd2hpdGUgYmFja2dyb3VuZAogICAgICAgICBpZiAoc3R5bGVU
b1VzZS0+Zm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoKSkKICAgICAgICAgICAgIHRleHRGaWxsQ29s
b3IgPSBjb3JyZWN0ZWRUZXh0Q29sb3IodGV4dEZpbGxDb2xvciwgQ29sb3I6OndoaXRlKTsKIAot
ICAgICAgICB0ZXh0U3Ryb2tlQ29sb3IgPSBzdHlsZVRvVXNlLT50ZXh0U3Ryb2tlQ29sb3IoKTsK
LSAgICAgICAgaWYgKCF0ZXh0U3Ryb2tlQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICAgICAgdGV4
dFN0cm9rZUNvbG9yID0gc3R5bGVUb1VzZS0+Y29sb3IoKTsKLQorICAgICAgICB0ZXh0U3Ryb2tl
Q29sb3IgPSByZW5kZXJlcigpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3R5bGVUb1VzZSwgQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IpOworICAgICAgICAKICAgICAgICAgLy8gTWFr
ZSB0aGUgdGV4dCBzdHJva2UgY29sb3IgbGVnaWJsZSBhZ2FpbnN0IGEgd2hpdGUgYmFja2dyb3Vu
ZAogICAgICAgICBpZiAoc3R5bGVUb1VzZS0+Zm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoKSkKICAg
ICAgICAgICAgIHRleHRTdHJva2VDb2xvciA9IGNvcnJlY3RlZFRleHRDb2xvcih0ZXh0U3Ryb2tl
Q29sb3IsIENvbG9yOjp3aGl0ZSk7CkBAIC01MTcsNyArNTEzLDcgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludChSZW5kZXJPYmplY3Q6OgogCiAgICAgLy8gUGFpbnQgZGVjb3JhdGlvbnMKICAg
ICBpZiAoZCAhPSBURE5PTkUgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rp
b24gJiYgc3R5bGVUb1VzZS0+aHRtbEhhY2tzKCkpIHsKLSAgICAgICAgY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3Ioc3R5bGVUb1VzZS0+Y29sb3IoKSwgc3R5bGVUb1VzZS0+Y29sb3JTcGFjZSgpKTsK
KyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IocmVuZGVyZXIoKS0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKHN0eWxlVG9Vc2UsIENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZVRvVXNlLT5jb2xv
clNwYWNlKCkpOwogICAgICAgICBwYWludERlY29yYXRpb24oY29udGV4dCwgdHgsIHR5LCBkLCB0
ZXh0U2hhZG93KTsKICAgICB9CiAKQEAgLTU3Nyw3ICs1NzMsNyBAQCB2b2lkIElubGluZVRleHRC
b3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoCiAgICAgaWYgKHNQb3MgPj0gZVBvcykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQ29sb3IgdGV4dENvbG9yID0gc3R5bGUtPmNvbG9yKCk7CisgICAgQ29s
b3IgdGV4dENvbG9yID0gcmVuZGVyZXIoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHN0eWxlLCBD
U1NQcm9wZXJ0eUNvbG9yKTsKICAgICBDb2xvciBjID0gcmVuZGVyZXIoKS0+c2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCk7CiAgICAgaWYgKCFjLmlzVmFsaWQoKSB8fCBjLmFscGhhKCkgPT0gMCkK
ICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNp
b24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1NDYsNyArMTU0Niw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnQKIAogdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDb2x1bW5SdWxlcyhQYWludElu
Zm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiB7Ci0gICAgY29uc3QgQ29sb3ImIHJ1bGVD
b2xvciA9IHN0eWxlKCktPmNvbHVtblJ1bGVDb2xvcigpOworICAgIGNvbnN0IENvbG9yJiBydWxl
Q29sb3IgPSB2aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3R5bGUoKSwgQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5SdWxlQ29sb3IpOwogICAgIGJvb2wgcnVsZVRyYW5zcGFyZW50ID0gc3R5bGUoKS0+Y29s
dW1uUnVsZUlzVHJhbnNwYXJlbnQoKTsKICAgICBFQm9yZGVyU3R5bGUgcnVsZVN0eWxlID0gc3R5
bGUoKS0+Y29sdW1uUnVsZVN0eWxlKCk7CiAgICAgaW50IHJ1bGVXaWR0aCA9IHN0eWxlKCktPmNv
bHVtblJ1bGVXaWR0aCgpOwpAQCAtMTU4MSw3ICsxNTgxLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6
cGFpbnRDb2x1bW5SdWxlcyhQYWludAogICAgICAgICAgICAgaW50IHJ1bGVUb3AgPSB0eSArIGJv
cmRlclRvcCgpICsgcGFkZGluZ1RvcCgpOwogICAgICAgICAgICAgaW50IHJ1bGVCb3R0b20gPSBy
dWxlVG9wICsgY29udGVudEhlaWdodCgpOwogICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRl
KHBhaW50SW5mby5jb250ZXh0LCBydWxlU3RhcnQsIHJ1bGVUb3AsIHJ1bGVFbmQsIHJ1bGVCb3R0
b20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUoKS0+ZGlyZWN0aW9uKCkg
PT0gTFRSID8gQlNMZWZ0IDogQlNSaWdodCwgcnVsZUNvbG9yLCBzdHlsZSgpLT5jb2xvcigpLCBy
dWxlU3R5bGUsIDAsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlKCkt
PmRpcmVjdGlvbigpID09IExUUiA/IEJTTGVmdCA6IEJTUmlnaHQsIHJ1bGVDb2xvciwgcnVsZVN0
eWxlLCAwLCAwKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcnVsZVggPSBjdXJyWE9m
ZnNldDsKQEAgLTE3NjAsNyArMTc2MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0
KFBhaW50SW5mbyYKIAogICAgIC8vIDUuIHBhaW50IG91dGxpbmUuCiAgICAgaWYgKChwYWludFBo
YXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZP
dXRsaW5lKSAmJiBoYXNPdXRsaW5lKCkgJiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lC
TEUpCi0gICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgdHgsIHR5LCB3aWR0
aCgpLCBoZWlnaHQoKSwgc3R5bGUoKSk7CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8u
Y29udGV4dCwgdHgsIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSk7CiAKICAgICAvLyA2LiBwYWludCBj
b250aW51YXRpb24gb3V0bGluZXMuCiAgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VP
dXRsaW5lIHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkT3V0bGluZXMpKSB7CkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiA1
Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTMzLDE1ICs5MzMsMTUgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnROaW5lUGllYwogfQogCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
cmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHksIGlu
dCB3LCBpbnQgaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUsIGJvb2wgYmVnaW4sIGJvb2wgZW5kKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBib29sIGJlZ2luLCBi
b29sIGVuZCkKIHsKICAgICBpZiAocGFpbnROaW5lUGllY2VJbWFnZShncmFwaGljc0NvbnRleHQs
IHR4LCB0eSwgdywgaCwgc3R5bGUsIHN0eWxlLT5ib3JkZXJJbWFnZSgpKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgY29uc3QgQ29sb3ImIHRvcENvbG9yID0gc3R5bGUtPmJvcmRlclRvcENvbG9y
KCk7Ci0gICAgY29uc3QgQ29sb3ImIGJvdHRvbUNvbG9yID0gc3R5bGUtPmJvcmRlckJvdHRvbUNv
bG9yKCk7Ci0gICAgY29uc3QgQ29sb3ImIGxlZnRDb2xvciA9IHN0eWxlLT5ib3JkZXJMZWZ0Q29s
b3IoKTsKLSAgICBjb25zdCBDb2xvciYgcmlnaHRDb2xvciA9IHN0eWxlLT5ib3JkZXJSaWdodENv
bG9yKCk7CisgICAgY29uc3QgQ29sb3ImIHRvcENvbG9yID0gdmlzaXRlZERlcGVuZGVudENvbG9y
KHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKTsKKyAgICBjb25zdCBDb2xvciYgYm90
dG9tQ29sb3IgPSB2aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tQ29sb3IpOworICAgIGNvbnN0IENvbG9yJiBsZWZ0Q29sb3IgPSB2aXNpdGVkRGVwZW5k
ZW50Q29sb3Ioc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKTsKKyAgICBjb25zdCBD
b2xvciYgcmlnaHRDb2xvciA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdHlsZSwgQ1NTUHJvcGVy
dHlCb3JkZXJSaWdodENvbG9yKTsKIAogICAgIGJvb2wgdG9wVHJhbnNwYXJlbnQgPSBzdHlsZS0+
Ym9yZGVyVG9wSXNUcmFuc3BhcmVudCgpOwogICAgIGJvb2wgYm90dG9tVHJhbnNwYXJlbnQgPSBz
dHlsZS0+Ym9yZGVyQm90dG9tSXNUcmFuc3BhcmVudCgpOwpAQCAtMTAwNiw3ICsxMDA2LDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoRwogICAgICAgICAgICAgeDIg
LT0gdG9wUmlnaHQud2lkdGgoKTsKICAgICAgICAgfQogCi0gICAgICAgIGRyYXdMaW5lRm9yQm94
U2lkZShncmFwaGljc0NvbnRleHQsIHgsIHR5LCB4MiwgdHkgKyBzdHlsZS0+Ym9yZGVyVG9wV2lk
dGgoKSwgQlNUb3AsIHRvcENvbG9yLCBzdHlsZS0+Y29sb3IoKSwgdG9wU3R5bGUsCisgICAgICAg
IGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgsIHR5LCB4MiwgdHkgKyBzdHls
ZS0+Ym9yZGVyVG9wV2lkdGgoKSwgQlNUb3AsIHRvcENvbG9yLCB0b3BTdHlsZSwKICAgICAgICAg
ICAgICAgICAgICBpZ25vcmVfbGVmdCA/IDAgOiBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIGln
bm9yZV9yaWdodCA/IDAgOiBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKIAogICAgICAgICBp
ZiAocmVuZGVyUmFkaWkpIHsKQEAgLTEwMzQsNyArMTAzNCw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEcKIAogICAgICAgICAgICAgICAgIC8vIERyYXcgdXBwZXIg
bGVmdCBhcmMKICAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRl
eHQsIGxlZnRYLCBsZWZ0WSwgdGhpY2tuZXNzLCB0b3BMZWZ0LCBmaXJzdEFuZ2xlU3RhcnQsIGZp
cnN0QW5nbGVTcGFuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNUb3AsIHRvcENv
bG9yLCBzdHlsZS0+Y29sb3IoKSwgdG9wU3R5bGUsIHRydWUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQlNUb3AsIHRvcENvbG9yLCB0b3BTdHlsZSwgdHJ1ZSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGFwcGx5TGVmdElubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CkBAIC0xMDYwLDcgKzEwNjAsNyBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHCiAKICAgICAgICAgICAg
ICAgICAvLyBEcmF3IHVwcGVyIHJpZ2h0IGFyYwogICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JC
b3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgcmlnaHRYLCBsZWZ0WSwgdGhpY2tuZXNzLCB0b3BSaWdo
dCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQlNUb3AsIHRvcENvbG9yLCBzdHlsZS0+Y29sb3IoKSwgdG9wU3R5bGUsIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTVG9wLCB0b3BDb2xvciwgdG9w
U3R5bGUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlSaWdodElubmVyQ2xpcCkK
ICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAg
ICAgICB9CkBAIC0xMDgzLDcgKzEwODMsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEJvcmRlcihHCiAgICAgICAgICAgICB4MiAtPSBib3R0b21SaWdodC53aWR0aCgpOwogICAg
ICAgICB9CiAKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeCwg
dHkgKyBoIC0gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHgyLCB0eSArIGgsIEJTQm90dG9t
LCBib3R0b21Db2xvciwgc3R5bGUtPmNvbG9yKCksIGJvdHRvbVN0eWxlLAorICAgICAgICBkcmF3
TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4LCB0eSArIGggLSBzdHlsZS0+Ym9yZGVy
Qm90dG9tV2lkdGgoKSwgeDIsIHR5ICsgaCwgQlNCb3R0b20sIGJvdHRvbUNvbG9yLCBib3R0b21T
dHlsZSwKICAgICAgICAgICAgICAgICAgICBpZ25vcmVfbGVmdCA/IDAgOiBzdHlsZS0+Ym9yZGVy
TGVmdFdpZHRoKCksIGlnbm9yZV9yaWdodCA/IDAgOiBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgp
KTsKIAogICAgICAgICBpZiAocmVuZGVyUmFkaWkpIHsKQEAgLTExMTEsNyArMTExMSw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEcKIAogICAgICAgICAgICAgICAg
IC8vIERyYXcgbG93ZXIgbGVmdCBhcmMKICAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lk
ZShncmFwaGljc0NvbnRleHQsIGxlZnRYLCBsZWZ0WSwgdGhpY2tuZXNzLCBib3R0b21MZWZ0LCBm
aXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQlNCb3R0b20sIGJvdHRvbUNvbG9yLCBzdHlsZS0+Y29sb3IoKSwgYm90dG9tU3R5bGUs
IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNCb3R0b20sIGJvdHRvbUNv
bG9yLCBib3R0b21TdHlsZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5TGVmdElu
bmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7
CiAgICAgICAgICAgICB9CkBAIC0xMTMzLDcgKzExMzMsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEJvcmRlcihHCiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IGxvd2VyIHJp
Z2h0IGFyYwogICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4
dCwgcmlnaHRYLCByaWdodFksIHRoaWNrbmVzcywgYm90dG9tUmlnaHQsIHNlY29uZEFuZ2xlU3Rh
cnQsIHNlY29uZEFuZ2xlU3BhbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTQm90
dG9tLCBib3R0b21Db2xvciwgc3R5bGUtPmNvbG9yKCksIGJvdHRvbVN0eWxlLCBmYWxzZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU0JvdHRvbSwgYm90dG9tQ29sb3IsIGJvdHRv
bVN0eWxlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5UmlnaHRJbm5lckNsaXAp
CiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAg
ICAgICAgfQpAQCAtMTE1Niw3ICsxMTU2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRCb3JkZXIoRwogICAgICAgICAgICAgeTIgLT0gYm90dG9tTGVmdC5oZWlnaHQoKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4
LCB5LCB0eCArIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgeTIsIEJTTGVmdCwgbGVmdENvbG9y
LCBzdHlsZS0+Y29sb3IoKSwgbGVmdFN0eWxlLAorICAgICAgICBkcmF3TGluZUZvckJveFNpZGUo
Z3JhcGhpY3NDb250ZXh0LCB0eCwgeSwgdHggKyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHky
LCBCU0xlZnQsIGxlZnRDb2xvciwgbGVmdFN0eWxlLAogICAgICAgICAgICAgICAgICAgIGlnbm9y
ZV90b3AgPyAwIDogc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIGlnbm9yZV9ib3R0b20gPyAwIDog
c3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOwogCiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSAm
JiAoIXVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoIHx8ICFsb3dlckxlZnRCb3JkZXJTdHlsZXNN
YXRjaCkpIHsKQEAgLTExNzksNyArMTE3OSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm9yZGVyKEcKIAogICAgICAgICAgICAgICAgIC8vIERyYXcgdG9wIGxlZnQgYXJjCiAg
ICAgICAgICAgICAgICAgZHJhd0FyY0ZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCB0
b3BZLCB0aGlja25lc3MsIHRvcExlZnQsIGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU0xlZnQsIGxlZnRDb2xvciwgc3R5bGUt
PmNvbG9yKCksIGxlZnRTdHlsZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCU0xlZnQsIGxlZnRDb2xvciwgbGVmdFN0eWxlLCB0cnVlKTsKICAgICAgICAgICAgICAgICBp
ZiAoYXBwbHlUb3BJbm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+cmVzdG9yZSgpOwogICAgICAgICAgICAgfQpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoRwogCiAgICAgICAgICAgICAgICAgLy8g
RHJhdyBib3R0b20gbGVmdCBhcmMKICAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShn
cmFwaGljc0NvbnRleHQsIHRvcFgsIGJvdHRvbVksIHRoaWNrbmVzcywgYm90dG9tTGVmdCwgc2Vj
b25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQlNMZWZ0LCBsZWZ0Q29sb3IsIHN0eWxlLT5jb2xvcigpLCBsZWZ0U3R5bGUsIGZhbHNl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTTGVmdCwgbGVmdENvbG9yLCBsZWZ0
U3R5bGUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlCb3R0b21Jbm5lckNsaXAp
CiAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAg
ICAgICAgfQpAQCAtMTIyNSw3ICsxMjI1LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRCb3JkZXIoRwogICAgICAgICAgICAgeTIgLT0gYm90dG9tUmlnaHQuaGVpZ2h0KCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0
eCArIHcgLSBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCB5LCB0eCArIHcsIHkyLCBCU1JpZ2h0
LCByaWdodENvbG9yLCBzdHlsZS0+Y29sb3IoKSwgcmlnaHRTdHlsZSwKKyAgICAgICAgZHJhd0xp
bmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggKyB3IC0gc3R5bGUtPmJvcmRlclJpZ2h0
V2lkdGgoKSwgeSwgdHggKyB3LCB5MiwgQlNSaWdodCwgcmlnaHRDb2xvciwgcmlnaHRTdHlsZSwK
ICAgICAgICAgICAgICAgICAgICBpZ25vcmVfdG9wID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0
aCgpLCBpZ25vcmVfYm90dG9tID8gMCA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKIAog
ICAgICAgICBpZiAocmVuZGVyUmFkaWkgJiYgKCF1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gg
fHwgIWxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCkpIHsKQEAgLTEyNDgsNyArMTI0OCw3IEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEcKIAogICAgICAgICAgICAg
ICAgIC8vIERyYXcgdG9wIHJpZ2h0IGFyYwogICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgdG9wWCwgdG9wWSwgdGhpY2tuZXNzLCB0b3BSaWdodCwgZmly
c3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEJTUmlnaHQsIHJpZ2h0Q29sb3IsIHN0eWxlLT5jb2xvcigpLCByaWdodFN0eWxlLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTUmlnaHQsIHJpZ2h0Q29sb3IsIHJp
Z2h0U3R5bGUsIHRydWUpOwogICAgICAgICAgICAgICAgIGlmIChhcHBseVRvcElubmVyQ2xpcCkK
ICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAg
ICAgICB9CkBAIC0xMjcwLDcgKzEyNzAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEJvcmRlcihHCiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IGJvdHRvbSByaWdodCBhcmMK
ICAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGJvdHRv
bVgsIGJvdHRvbVksIHRoaWNrbmVzcywgYm90dG9tUmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNl
Y29uZEFuZ2xlU3BhbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTUmlnaHQsIHJp
Z2h0Q29sb3IsIHN0eWxlLT5jb2xvcigpLCByaWdodFN0eWxlLCBmYWxzZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCU1JpZ2h0LCByaWdodENvbG9yLCByaWdodFN0eWxlLCBmYWxz
ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5Qm90dG9tSW5uZXJDbGlwKQogICAgICAgICAg
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmllbGRz
ZXQuaCIKIAorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIApAQCAtMTgxLDggKzE4Miw4IEBA
IHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50TWFzayhQYWludEluZm8KIHZvaWQgUmVuZGVyRmll
bGRzZXQ6OnBhaW50Qm9yZGVyTWludXNMZWdlbmQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGludCB0eCwgaW50IHR5LCBpbnQgdywgaW50IGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgaW50IGx4
LCBpbnQgbHcsIGludCBsYikKIHsKLSAgICBjb25zdCBDb2xvciYgdGMgPSBzdHlsZS0+Ym9yZGVy
VG9wQ29sb3IoKTsKLSAgICBjb25zdCBDb2xvciYgYmMgPSBzdHlsZS0+Ym9yZGVyQm90dG9tQ29s
b3IoKTsKKyAgICBjb25zdCBDb2xvciYgdGMgPSB2aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpOworICAgIGNvbnN0IENvbG9yJiBiYyA9IHZpc2l0
ZWREZXBlbmRlbnRDb2xvcihzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcik7CiAK
ICAgICBFQm9yZGVyU3R5bGUgdHMgPSBzdHlsZS0+Ym9yZGVyVG9wU3R5bGUoKTsKICAgICBFQm9y
ZGVyU3R5bGUgYnMgPSBzdHlsZS0+Ym9yZGVyQm90dG9tU3R5bGUoKTsKQEAgLTE5OSwyMiArMjAw
LDIyIEBAIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm9yZGVyTWludXNMZWcKIAogICAgIGlm
IChyZW5kZXJfdCkgewogICAgICAgICBpZiAobHggPj0gYm9yZGVyTGVmdFdpZHRoKQotICAgICAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHgsIHR5LCB0eCArIG1p
bihseCwgdyksIHR5ICsgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIEJTVG9wLCB0Yywgc3R5bGUt
PmNvbG9yKCksIHRzLAorICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29u
dGV4dCwgdHgsIHR5LCB0eCArIG1pbihseCwgdyksIHR5ICsgc3R5bGUtPmJvcmRlclRvcFdpZHRo
KCksIEJTVG9wLCB0YywgdHMsCiAgICAgICAgICAgICAgICAgICAgICAgIChyZW5kZXJfbCAmJiAo
bHMgPT0gRE9UVEVEIHx8IGxzID09IERBU0hFRCB8fCBscyA9PSBET1VCTEUpID8gYm9yZGVyTGVm
dFdpZHRoIDogMCksCiAgICAgICAgICAgICAgICAgICAgICAgIChseCA+PSB3ICYmIHJlbmRlcl9y
ICYmIChycyA9PSBET1RURUQgfHwgcnMgPT0gREFTSEVEIHx8IHJzID09IERPVUJMRSkgPyBib3Jk
ZXJSaWdodFdpZHRoIDogMCkpOwogICAgICAgICBpZiAobHggKyBsdyA8PSAgdyAtIGJvcmRlclJp
Z2h0V2lkdGgpCi0gICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0
LCB0eCArIG1heCgwLCBseCArIGx3KSwgdHksIHR4ICsgdywgdHkgKyBzdHlsZS0+Ym9yZGVyVG9w
V2lkdGgoKSwgQlNUb3AsIHRjLCBzdHlsZS0+Y29sb3IoKSwgdHMsCisgICAgICAgICAgICBkcmF3
TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCArIG1heCgwLCBseCArIGx3KSwgdHks
IHR4ICsgdywgdHkgKyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgQlNUb3AsIHRjLCB0cywKICAg
ICAgICAgICAgICAgICAgICAgICAgKGx4ICsgbHcgPD0gMCAmJiByZW5kZXJfbCAmJiAobHMgPT0g
RE9UVEVEIHx8IGxzID09IERBU0hFRCB8fCBscyA9PSBET1VCTEUpID8gYm9yZGVyTGVmdFdpZHRo
IDogMCksCiAgICAgICAgICAgICAgICAgICAgICAgIChyZW5kZXJfciAmJiAocnMgPT0gRE9UVEVE
IHx8IHJzID09IERBU0hFRCB8fCBycyA9PSBET1VCTEUpID8gYm9yZGVyUmlnaHRXaWR0aCA6IDAp
KTsKICAgICB9CiAKICAgICBpZiAocmVuZGVyX2IpCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lk
ZShncmFwaGljc0NvbnRleHQsIHR4LCB0eSArIGggLSBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgo
KSwgdHggKyB3LCB0eSArIGgsIEJTQm90dG9tLCBiYywgc3R5bGUtPmNvbG9yKCksIGJzLAorICAg
ICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCwgdHkgKyBoIC0gc3R5
bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIHR4ICsgdywgdHkgKyBoLCBCU0JvdHRvbSwgYmMsIGJz
LAogICAgICAgICAgICAgICAgICAgIChyZW5kZXJfbCAmJiAobHMgPT0gRE9UVEVEIHx8IGxzID09
IERBU0hFRCB8fCBscyA9PSBET1VCTEUpID8gc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIDogMCks
CiAgICAgICAgICAgICAgICAgICAgKHJlbmRlcl9yICYmIChycyA9PSBET1RURUQgfHwgcnMgPT0g
REFTSEVEIHx8IHJzID09IERPVUJMRSkgPyBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDogMCkp
OwogCiAgICAgaWYgKHJlbmRlcl9sKSB7Ci0gICAgICAgIGNvbnN0IENvbG9yJiBsYyA9IHN0eWxl
LT5ib3JkZXJMZWZ0Q29sb3IoKTsKKyAgICAgICAgY29uc3QgQ29sb3ImIGxjID0gdmlzaXRlZERl
cGVuZGVudENvbG9yKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcik7CiAgICAgICAg
IGludCBzdGFydFkgPSB0eTsKIAogICAgICAgICBib29sIGlnbm9yZV90b3AgPQpAQCAtMjMzLDgg
KzIzNCw4IEBAIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm9yZGVyTWludXNMZWcKICAgICAg
ICAgICAgIHN0YXJ0WSA9IGxiOwogICAgICAgICB9CiAKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgdHgsIHN0YXJ0WSwgdHggKyBib3JkZXJMZWZ0V2lkdGgsIHR5
ICsgaCwgQlNMZWZ0LCBsYywgc3R5bGUtPmNvbG9yKCksIGxzLAotICAgICAgICAgICAgICAgICAg
IGlnbm9yZV90b3AgPyAwIDogc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIGlnbm9yZV9ib3R0b20g
PyAwIDogc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOworICAgICAgICBkcmF3TGluZUZvckJv
eFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCwgc3RhcnRZLCB0eCArIGJvcmRlckxlZnRXaWR0aCwg
dHkgKyBoLCBCU0xlZnQsIGxjLCBscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9y
ZV90b3AgPyAwIDogc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIGlnbm9yZV9ib3R0b20gPyAwIDog
c3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOwogICAgIH0KIAogICAgIGlmIChyZW5kZXJfcikg
ewpAQCAtMjU3LDcgKzI1OCw3IEBAIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm9yZGVyTWlu
dXNMZWcKICAgICAgICAgICAgIHN0YXJ0WSA9IGxiOwogICAgICAgICB9CiAKLSAgICAgICAgZHJh
d0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggKyB3IC0gYm9yZGVyUmlnaHRXaWR0
aCwgc3RhcnRZLCB0eCArIHcsIHR5ICsgaCwgQlNSaWdodCwgcmMsIHN0eWxlLT5jb2xvcigpLCBy
cywKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggKyB3IC0g
Ym9yZGVyUmlnaHRXaWR0aCwgc3RhcnRZLCB0eCArIHcsIHR5ICsgaCwgQlNSaWdodCwgcmMsIHJz
LAogICAgICAgICAgICAgICAgICAgIGlnbm9yZV90b3AgPyAwIDogc3R5bGUtPmJvcmRlclRvcFdp
ZHRoKCksIGlnbm9yZV9ib3R0b20gPyAwIDogc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOwog
ICAgIH0KIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDU2ODU5
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NzAsNyArNDcwLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRGb2N1c1JpbmdzKFBhaW50
SQogICAgICAgICAKICAgICAgICAgVmVjdG9yPFBhdGg+IGZvY3VzUmluZ1BhdGhzOwogICAgICAg
ICBmb2N1c1JpbmdQYXRocy5hcHBlbmQoYXJlYUVsZW1lbnQtPmdldFBhdGgodGhpcykpOwotICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdQYXRocywgc3R5
bGUtPm91dGxpbmVXaWR0aCgpLCBzdHlsZS0+b3V0bGluZU9mZnNldCgpLCBzdHlsZS0+b3V0bGlu
ZUNvbG9yKCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1
c1JpbmdQYXRocywgc3R5bGUtPm91dGxpbmVXaWR0aCgpLCBzdHlsZS0+b3V0bGluZU9mZnNldCgp
LCB2aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3R5bGUsIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NjUsMjEgKzk2NSwyMCBAQCB2b2lkIFJlbmRlcklubGlu
ZTo6cGFpbnRPdXRsaW5lKEdyYXBoaWNzCiAgICAgaWYgKCFoYXNPdXRsaW5lKCkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBpZiAoc3R5bGUoKS0+b3V0bGluZVN0eWxlSXNBdXRvKCkgfHwg
aGFzT3V0bGluZUFubm90YXRpb24oKSkgewotICAgICAgICBpbnQgb3cgPSBzdHlsZSgpLT5vdXRs
aW5lV2lkdGgoKTsKLSAgICAgICAgQ29sb3Igb2MgPSBzdHlsZSgpLT5vdXRsaW5lQ29sb3IoKTsK
LSAgICAgICAgaWYgKCFvYy5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBvYyA9IHN0eWxlKCktPmNv
bG9yKCk7CisgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOworICAgIGlmIChz
dHlsZVRvVXNlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigp
KSB7CisgICAgICAgIGludCBvdyA9IHN0eWxlVG9Vc2UtPm91dGxpbmVXaWR0aCgpOworICAgICAg
ICBDb2xvciBvYyA9IHZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdHlsZVRvVXNlLCBDU1NQcm9wZXJ0
eU91dGxpbmVDb2xvcik7CiAKICAgICAgICAgVmVjdG9yPEludFJlY3Q+IGZvY3VzUmluZ1JlY3Rz
OwogICAgICAgICBhZGRGb2N1c1JpbmdSZWN0cyhmb2N1c1JpbmdSZWN0cywgdHgsIHR5KTsKLSAg
ICAgICAgaWYgKHN0eWxlKCktPm91dGxpbmVTdHlsZUlzQXV0bygpKQotICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5kcmF3Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3RzLCBvdywgc3R5bGUoKS0+
b3V0bGluZU9mZnNldCgpLCBvYyk7CisgICAgICAgIGlmIChzdHlsZVRvVXNlLT5vdXRsaW5lU3R5
bGVJc0F1dG8oKSkKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ZvY3VzUmluZyhm
b2N1c1JpbmdSZWN0cywgb3csIHN0eWxlVG9Vc2UtPm91dGxpbmVPZmZzZXQoKSwgb2MpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBhZGRQREZVUkxSZWN0KGdyYXBoaWNzQ29udGV4dCwgdW5p
b25SZWN0KGZvY3VzUmluZ1JlY3RzKSk7CiAgICAgfQogCi0gICAgaWYgKHN0eWxlKCktPm91dGxp
bmVTdHlsZUlzQXV0bygpIHx8IHN0eWxlKCktPm91dGxpbmVTdHlsZSgpID09IEJOT05FKQorICAg
IGlmIChzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBzdHlsZVRvVXNlLT5vdXRs
aW5lU3R5bGUoKSA9PSBCTk9ORSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPEludFJl
Y3Q+IHJlY3RzOwpAQCAtMTAwMCwxMSArOTk5LDEwIEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWlu
dE91dGxpbmUoR3JhcGhpY3MKIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5l
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsIGludCB0eSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGxhc3RsaW5l
LCBjb25zdCBJbnRSZWN0JiB0aGlzbGluZSwgY29uc3QgSW50UmVjdCYgbmV4dGxpbmUpCiB7Ci0g
ICAgaW50IG93ID0gc3R5bGUoKS0+b3V0bGluZVdpZHRoKCk7Ci0gICAgRUJvcmRlclN0eWxlIG9z
ID0gc3R5bGUoKS0+b3V0bGluZVN0eWxlKCk7Ci0gICAgQ29sb3Igb2MgPSBzdHlsZSgpLT5vdXRs
aW5lQ29sb3IoKTsKLSAgICBpZiAoIW9jLmlzVmFsaWQoKSkKLSAgICAgICAgb2MgPSBzdHlsZSgp
LT5jb2xvcigpOworICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKKyAgICBp
bnQgb3cgPSBzdHlsZVRvVXNlLT5vdXRsaW5lV2lkdGgoKTsKKyAgICBFQm9yZGVyU3R5bGUgb3Mg
PSBzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGUoKTsKKyAgICBDb2xvciBvYyA9IHZpc2l0ZWREZXBl
bmRlbnRDb2xvcihzdHlsZVRvVXNlLCBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcik7CiAKICAgICBp
bnQgb2Zmc2V0ID0gc3R5bGUoKS0+b3V0bGluZU9mZnNldCgpOwogCkBAIC0xMDIwLDcgKzEwMTgs
NyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHCiAgICAgICAgICAg
ICAgICBsLAogICAgICAgICAgICAgICAgYiArIChuZXh0bGluZS5pc0VtcHR5KCkgfHwgdGhpc2xp
bmUueCgpIDw9IG5leHRsaW5lLngoKSB8fCAobmV4dGxpbmUucmlnaHQoKSAtIDEpIDw9IHRoaXNs
aW5lLngoKSA/IG93IDogMCksCiAgICAgICAgICAgICAgICBCU0xlZnQsCi0gICAgICAgICAgICAg
ICBvYywgc3R5bGUoKS0+Y29sb3IoKSwgb3MsCisgICAgICAgICAgICAgICBvYywgb3MsCiAgICAg
ICAgICAgICAgICAobGFzdGxpbmUuaXNFbXB0eSgpIHx8IHRoaXNsaW5lLngoKSA8IGxhc3RsaW5l
LngoKSB8fCAobGFzdGxpbmUucmlnaHQoKSAtIDEpIDw9IHRoaXNsaW5lLngoKSA/IG93IDogLW93
KSwKICAgICAgICAgICAgICAgIChuZXh0bGluZS5pc0VtcHR5KCkgfHwgdGhpc2xpbmUueCgpIDw9
IG5leHRsaW5lLngoKSB8fCAobmV4dGxpbmUucmlnaHQoKSAtIDEpIDw9IHRoaXNsaW5lLngoKSA/
IG93IDogLW93KSk7CiAgICAgCkBAIC0xMDMxLDcgKzEwMjksNyBAQCB2b2lkIFJlbmRlcklubGlu
ZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHCiAgICAgICAgICAgICAgICByICsgb3csCiAgICAgICAg
ICAgICAgICBiICsgKG5leHRsaW5lLmlzRW1wdHkoKSB8fCBuZXh0bGluZS5yaWdodCgpIDw9IHRo
aXNsaW5lLnJpZ2h0KCkgfHwgKHRoaXNsaW5lLnJpZ2h0KCkgLSAxKSA8PSBuZXh0bGluZS54KCkg
PyBvdyA6IDApLAogICAgICAgICAgICAgICAgQlNSaWdodCwKLSAgICAgICAgICAgICAgIG9jLCBz
dHlsZSgpLT5jb2xvcigpLCBvcywKKyAgICAgICAgICAgICAgIG9jLCBvcywKICAgICAgICAgICAg
ICAgIChsYXN0bGluZS5pc0VtcHR5KCkgfHwgbGFzdGxpbmUucmlnaHQoKSA8IHRoaXNsaW5lLnJp
Z2h0KCkgfHwgKHRoaXNsaW5lLnJpZ2h0KCkgLSAxKSA8PSBsYXN0bGluZS54KCkgPyBvdyA6IC1v
dyksCiAgICAgICAgICAgICAgICAobmV4dGxpbmUuaXNFbXB0eSgpIHx8IG5leHRsaW5lLnJpZ2h0
KCkgPD0gdGhpc2xpbmUucmlnaHQoKSB8fCAodGhpc2xpbmUucmlnaHQoKSAtIDEpIDw9IG5leHRs
aW5lLngoKSA/IG93IDogLW93KSk7CiAgICAgLy8gdXBwZXIgZWRnZQpAQCAtMTA0MSw3ICsxMDM5
LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoRwogICAgICAgICAg
ICAgICAgICAgIHQgLSBvdywKICAgICAgICAgICAgICAgICAgICBtaW4ocitvdywgKGxhc3RsaW5l
LmlzRW1wdHkoKSA/IDEwMDAwMDAgOiB0eCArIGxhc3RsaW5lLngoKSkpLAogICAgICAgICAgICAg
ICAgICAgIHQgLAotICAgICAgICAgICAgICAgICAgIEJTVG9wLCBvYywgc3R5bGUoKS0+Y29sb3Io
KSwgb3MsCisgICAgICAgICAgICAgICAgICAgQlNUb3AsIG9jLCBvcywKICAgICAgICAgICAgICAg
ICAgICBvdywKICAgICAgICAgICAgICAgICAgICAoIWxhc3RsaW5lLmlzRW1wdHkoKSAmJiB0eCAr
IGxhc3RsaW5lLngoKSArIDEgPCByICsgb3cpID8gLW93IDogb3cpOwogICAgIApAQCAtMTA1MSw3
ICsxMDQ5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoRwogICAg
ICAgICAgICAgICAgICAgIHQgLSBvdywKICAgICAgICAgICAgICAgICAgICByICsgb3csCiAgICAg
ICAgICAgICAgICAgICAgdCAsCi0gICAgICAgICAgICAgICAgICAgQlNUb3AsIG9jLCBzdHlsZSgp
LT5jb2xvcigpLCBvcywKKyAgICAgICAgICAgICAgICAgICBCU1RvcCwgb2MsIG9zLAogICAgICAg
ICAgICAgICAgICAgICghbGFzdGxpbmUuaXNFbXB0eSgpICYmIGwgLSBvdyA8IHR4ICsgbGFzdGxp
bmUucmlnaHQoKSkgPyAtb3cgOiBvdywKICAgICAgICAgICAgICAgICAgICBvdyk7CiAgICAgCkBA
IC0xMDYyLDcgKzEwNjAsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGlu
ZShHCiAgICAgICAgICAgICAgICAgICAgYiwKICAgICAgICAgICAgICAgICAgICBtaW4ociArIG93
LCAhbmV4dGxpbmUuaXNFbXB0eSgpID8gdHggKyBuZXh0bGluZS54KCkgKyAxIDogMTAwMDAwMCks
CiAgICAgICAgICAgICAgICAgICAgYiArIG93LAotICAgICAgICAgICAgICAgICAgIEJTQm90dG9t
LCBvYywgc3R5bGUoKS0+Y29sb3IoKSwgb3MsCisgICAgICAgICAgICAgICAgICAgQlNCb3R0b20s
IG9jLCBvcywKICAgICAgICAgICAgICAgICAgICBvdywKICAgICAgICAgICAgICAgICAgICAoIW5l
eHRsaW5lLmlzRW1wdHkoKSAmJiB0eCArIG5leHRsaW5lLngoKSArIDEgPCByICsgb3cpID8gLW93
IDogb3cpOwogICAgIApAQCAtMTA3Miw3ICsxMDcwLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBh
aW50T3V0bGluZUZvckxpbmUoRwogICAgICAgICAgICAgICAgICAgIGIsCiAgICAgICAgICAgICAg
ICAgICAgciArIG93LAogICAgICAgICAgICAgICAgICAgIGIgKyBvdywKLSAgICAgICAgICAgICAg
ICAgICBCU0JvdHRvbSwgb2MsIHN0eWxlKCktPmNvbG9yKCksIG9zLAorICAgICAgICAgICAgICAg
ICAgIEJTQm90dG9tLCBvYywgb3MsCiAgICAgICAgICAgICAgICAgICAgKCFuZXh0bGluZS5pc0Vt
cHR5KCkgJiYgbCAtIG93IDwgdHggKyBuZXh0bGluZS5yaWdodCgpKSA/IC1vdyA6IG93LAogICAg
ICAgICAgICAgICAgICAgIG93KTsKIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02OTgsNyArNjk4LDcgQEAgYm9vbCBSZW5kZXJPYmplY3Q6Om11
c3RSZXBhaW50QmFja2dyb3VuZAogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JC
b3hTaWRlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgeDEsIGludCB5MSwg
aW50IHgyLCBpbnQgeTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJv
eFNpZGUgcywgQ29sb3IgYywgY29uc3QgQ29sb3ImIHRleHRjb2xvciwgRUJvcmRlclN0eWxlIHN0
eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3hTaWRlIHMsIENv
bG9yIGMsIEVCb3JkZXJTdHlsZSBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGFkamJ3MSwgaW50IGFkamJ3MikKIHsKICAgICBpbnQgd2lkdGggPSAocyA9
PSBCU1RvcCB8fCBzID09IEJTQm90dG9tID8geTIgLSB5MSA6IHgyIC0geDEpOwpAQCAtNzA2LDEz
ICs3MDYsNiBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyCiAgICAg
aWYgKHN0eWxlID09IERPVUJMRSAmJiB3aWR0aCA8IDMpCiAgICAgICAgIHN0eWxlID0gU09MSUQ7
CiAKLSAgICBpZiAoIWMuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGlmIChzdHlsZSA9PSBJTlNFVCB8
fCBzdHlsZSA9PSBPVVRTRVQgfHwgc3R5bGUgPT0gUklER0UgfHwgc3R5bGUgPT0gR1JPT1ZFKQot
ICAgICAgICAgICAgYy5zZXRSR0IoMjM4LCAyMzgsIDIzOCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGMgPSB0ZXh0Y29sb3I7Ci0gICAgfQotCiAgICAgc3dpdGNoIChzdHlsZSkgewogICAg
ICAgICBjYXNlIEJOT05FOgogICAgICAgICBjYXNlIEJISURERU46CkBAIC03NjQsMzQgKzc1Nywz
NCBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyCiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQlNUb3A6CiAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZv
ckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSArIG1heCgoLWFkamJ3MSAqIDIgKyAxKSAvIDMs
IDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MSwgeDIgLSBtYXgoKC1h
ZGpidzIgKiAyICsgMSkgLyAzLCAwKSwgeTEgKyB0aGlyZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcywgYywgdGV4dGNvbG9yLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFk
amJ3MmJpZ3RoaXJkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywg
U09MSUQsIGFkamJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSArIG1heCgoYWRq
YncxICogMiArIDEpIC8gMywgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHkyIC0gdGhpcmQsIHgyIC0gbWF4KChhZGpidzIgKiAyICsgMSkgLyAzLCAwKSwgeTIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xvciwgU09MSUQsIGFk
amJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHMsIGMsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
QlNMZWZ0OgogICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBo
aWNzQ29udGV4dCwgeDEsIHkxICsgbWF4KCgtYWRqYncxICogMiArIDEpIC8gMywgMCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxICsgdGhpcmQsIHkyIC0gbWF4KCgtYWRq
YncyICogMiArIDEpIC8gMywgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHMsIGMsIHRleHRjb2xvciwgU09MSUQsIGFkamJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIFNPTElELCBhZGpidzFi
aWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xp
bmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDIgLSB0aGlyZCwgeTEgKyBtYXgoKGFkamJ3
MSAqIDIgKyAxKSAvIDMsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
MiwgeTIgLSBtYXgoKGFkamJ3MiAqIDIgKyAxKSAvIDMsIDApLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNPTElELCBhZGpidzFiaWd0aGlyZCwg
YWRqYncyYmlndGhpcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBj
LCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEJTQm90dG9tOgogICAg
ICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwg
eDEgKyBtYXgoKGFkamJ3MSAqIDIgKyAxKSAvIDMsIDApLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB5MSwgeDIgLSBtYXgoKGFkamJ3MiAqIDIgKyAxKSAvIDMsIDApLCB5MSAr
IHRoaXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29s
b3IsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3
MmJpZ3RoaXJkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShn
cmFwaGljc0NvbnRleHQsIHgxICsgbWF4KCgtYWRqYncxICogMiArIDEpIC8gMywgMCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkyIC0gdGhpcmQsIHgyIC0gbWF4KCgtYWRq
YncyICogMiArIDEpIC8gMywgMCksIHkyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhp
cmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCBTT0xJRCwgYWRq
YncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEJTUmlnaHQ6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSwgeTEgKyBtYXgo
KGFkamJ3MSAqIDIgKyAxKSAvIDMsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4MSArIHRoaXJkLCB5MiAtIG1heCgoYWRqYncyICogMiArIDEpIC8gMywgMCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xvciwgU09MSUQsIGFk
amJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHMsIGMsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4
dCwgeDIgLSB0aGlyZCwgeTEgKyBtYXgoKC1hZGpidzEgKiAyICsgMSkgLyAzLCAwKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsIHkyIC0gbWF4KCgtYWRqYncyICogMiAr
IDEpIC8gMywgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRl
eHRjb2xvciwgU09MSUQsIGFkamJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIFNPTElELCBhZGpidzFiaWd0aGlyZCwg
YWRqYncyYmlndGhpcmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTgxOCwyNyArODExLDI3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3TGluZUZvckJveFNpZGUo
R3IKICAgICAgICAgICAgIHN3aXRjaCAocykgewogICAgICAgICAgICAgICAgIGNhc2UgQlNUb3A6
CiAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQs
IHgxICsgbWF4KC1hZGpidzEsIDApIC8gMiwgeTEsIHgyIC0gbWF4KC1hZGpidzIsIDApIC8gMiwg
KHkxICsgeTIgKyAxKSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywg
dGV4dGNvbG9yLCBzMSwgYWRqYncxYmlnaGFsZiwgYWRqYncyYmlnaGFsZik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcywgYywgczEsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hh
bGYpOwogICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250
ZXh0LCB4MSArIG1heChhZGpidzEgKyAxLCAwKSAvIDIsICh5MSArIHkyICsgMSkgLyAyLCB4MiAt
IG1heChhZGpidzIgKyAxLCAwKSAvIDIsIHkyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHMsIGMsIHRleHRjb2xvciwgczIsIGFkamJ3MSAvIDIsIGFkamJ3MiAvIDIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHMyLCBhZGpidzEgLyAyLCBhZGpidzIgLyAy
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBCU0xl
ZnQ6CiAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRl
eHQsIHgxLCB5MSArIG1heCgtYWRqYncxLCAwKSAvIDIsICh4MSArIHgyICsgMSkgLyAyLCB5MiAt
IG1heCgtYWRqYncyLCAwKSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywg
YywgdGV4dGNvbG9yLCBzMSwgYWRqYncxYmlnaGFsZiwgYWRqYncyYmlnaGFsZik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgczEsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJp
Z2hhbGYpOwogICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3ND
b250ZXh0LCAoeDEgKyB4MiArIDEpIC8gMiwgeTEgKyBtYXgoYWRqYncxICsgMSwgMCkgLyAyLCB4
MiwgeTIgLSBtYXgoYWRqYncyICsgMSwgMCkgLyAyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHMsIGMsIHRleHRjb2xvciwgczIsIGFkamJ3MSAvIDIsIGFkamJ3MiAvIDIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHMyLCBhZGpidzEgLyAyLCBhZGpidzIg
LyAyKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBC
U0JvdHRvbToKICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwgeDEgKyBtYXgoYWRqYncxLCAwKSAvIDIsIHkxLCB4MiAtIG1heChhZGpidzIsIDAp
IC8gMiwgKHkxICsgeTIgKyAxKSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cywgYywgdGV4dGNvbG9yLCBzMiwgYWRqYncxYmlnaGFsZiwgYWRqYncyYmlnaGFsZik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgczIsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3
MmJpZ2hhbGYpOwogICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhp
Y3NDb250ZXh0LCB4MSArIG1heCgtYWRqYncxICsgMSwgMCkgLyAyLCAoeTEgKyB5MiArIDEpIC8g
MiwgeDIgLSBtYXgoLWFkamJ3MiArIDEsIDApIC8gMiwgeTIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcywgYywgdGV4dGNvbG9yLCBzMSwgYWRqYncxLzIsIGFkamJ3Mi8yKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCBzMSwgYWRqYncxLzIsIGFkamJ3Mi8y
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBCU1Jp
Z2h0OgogICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250
ZXh0LCB4MSwgeTEgKyBtYXgoYWRqYncxLCAwKSAvIDIsICh4MSArIHgyICsgMSkgLyAyLCB5MiAt
IG1heChhZGpidzIsIDApIC8gMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBj
LCB0ZXh0Y29sb3IsIHMyLCBhZGpidzFiaWdoYWxmLCBhZGpidzJiaWdoYWxmKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCBzMiwgYWRqYncxYmlnaGFsZiwgYWRqYncyYmln
aGFsZik7CiAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0Nv
bnRleHQsICh4MSArIHgyICsgMSkgLyAyLCB5MSArIG1heCgtYWRqYncxICsgMSwgMCkgLyAyLCB4
MiwgeTIgLSBtYXgoLWFkamJ3MiArIDEsIDApIC8gMiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIHMxLCBhZGpidzEvMiwgYWRqYncyLzIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHMxLCBhZGpidzEvMiwgYWRqYncyLzIpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtODk0LDE5ICs4ODcsMTIgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdMaW5lRm9y
Qm94U2lkZShHcgogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0FyY0ZvckJveFNpZGUoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB4LCBpbnQgeSwgZmxvYXQgdGhpY2tu
ZXNzLCBJbnRTaXplIHJhZGl1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgYW5nbGVTdGFydCwgaW50IGFuZ2xlU3BhbiwgQm94U2lkZSBzLCBDb2xvciBjLCBjb25z
dCBDb2xvciYgdGV4dENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBhbmdsZVN0YXJ0LCBpbnQgYW5nbGVTcGFuLCBCb3hTaWRlIHMsIENvbG9yIGMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUJvcmRlclN0eWxlIHN0eWxlLCBib29s
IGZpcnN0Q29ybmVyKQogewogICAgIGlmICgoc3R5bGUgPT0gRE9VQkxFICYmIHRoaWNrbmVzcyAv
IDIgPCAzKSB8fCAoKHN0eWxlID09IFJJREdFIHx8IHN0eWxlID09IEdST09WRSkgJiYgdGhpY2tu
ZXNzIC8gMiA8IDIpKQogICAgICAgICBzdHlsZSA9IFNPTElEOwogCi0gICAgaWYgKCFjLmlzVmFs
aWQoKSkgewotICAgICAgICBpZiAoc3R5bGUgPT0gSU5TRVQgfHwgc3R5bGUgPT0gT1VUU0VUIHx8
IHN0eWxlID09IFJJREdFIHx8IHN0eWxlID09IEdST09WRSkKLSAgICAgICAgICAgIGMuc2V0UkdC
KDIzOCwgMjM4LCAyMzgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjID0gdGV4dENvbG9y
OwotICAgIH0KLQogICAgIHN3aXRjaCAoc3R5bGUpIHsKICAgICAgICAgY2FzZSBCTk9ORToKICAg
ICAgICAgY2FzZSBCSElEREVOOgpAQCAtOTk0LDMzICs5ODAsMzIgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OmFkZFBERlVSTFJlY3QoR3JhcGhpYwogICAgIGNvbnRleHQtPnNldFVSTEZvclJlY3Qobi0+
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoaHJlZiksIHJlY3QpOwogfQogCi12b2lkIFJlbmRlck9i
amVjdDo6cGFpbnRPdXRsaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQg
dHgsIGludCB0eSwgaW50IHcsIGludCBoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCit2b2lk
IFJlbmRlck9iamVjdDo6cGFpbnRPdXRsaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBpbnQgdHgsIGludCB0eSwgaW50IHcsIGludCBoKQogewogICAgIGlmICghaGFzT3V0bGlu
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnQgb3cgPSBzdHlsZS0+b3V0bGluZVdpZHRo
KCk7Ci0gICAgRUJvcmRlclN0eWxlIG9zID0gc3R5bGUtPm91dGxpbmVTdHlsZSgpOworICAgIFJl
bmRlclN0eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKKyAgICBpbnQgb3cgPSBzdHlsZVRvVXNl
LT5vdXRsaW5lV2lkdGgoKTsKKyAgICBFQm9yZGVyU3R5bGUgb3MgPSBzdHlsZVRvVXNlLT5vdXRs
aW5lU3R5bGUoKTsKIAotICAgIENvbG9yIG9jID0gc3R5bGUtPm91dGxpbmVDb2xvcigpOwotICAg
IGlmICghb2MuaXNWYWxpZCgpKQotICAgICAgICBvYyA9IHN0eWxlLT5jb2xvcigpOworICAgIENv
bG9yIG9jID0gdmlzaXRlZERlcGVuZGVudENvbG9yKHN0eWxlVG9Vc2UsIENTU1Byb3BlcnR5T3V0
bGluZUNvbG9yKTsKIAotICAgIGludCBvZmZzZXQgPSBzdHlsZS0+b3V0bGluZU9mZnNldCgpOwor
ICAgIGludCBvZmZzZXQgPSBzdHlsZVRvVXNlLT5vdXRsaW5lT2Zmc2V0KCk7CiAKLSAgICBpZiAo
c3R5bGUtPm91dGxpbmVTdHlsZUlzQXV0bygpIHx8IGhhc091dGxpbmVBbm5vdGF0aW9uKCkpIHsK
LSAgICAgICAgaWYgKCF0aGVtZSgpLT5zdXBwb3J0c0ZvY3VzUmluZyhzdHlsZSkpIHsKKyAgICBp
ZiAoc3R5bGVUb1VzZS0+b3V0bGluZVN0eWxlSXNBdXRvKCkgfHwgaGFzT3V0bGluZUFubm90YXRp
b24oKSkgeworICAgICAgICBpZiAoIXRoZW1lKCktPnN1cHBvcnRzRm9jdXNSaW5nKHN0eWxlVG9V
c2UpKSB7CiAgICAgICAgICAgICAvLyBPbmx5IHBhaW50IHRoZSBmb2N1cyByaW5nIGJ5IGhhbmQg
aWYgdGhlIHRoZW1lIGlzbid0IGFibGUgdG8gZHJhdyB0aGUgZm9jdXMgcmluZy4KICAgICAgICAg
ICAgIFZlY3RvcjxJbnRSZWN0PiBmb2N1c1JpbmdSZWN0czsKICAgICAgICAgICAgIGFkZEZvY3Vz
UmluZ1JlY3RzKGZvY3VzUmluZ1JlY3RzLCB0eCwgdHkpOwotICAgICAgICAgICAgaWYgKHN0eWxl
LT5vdXRsaW5lU3R5bGVJc0F1dG8oKSkKKyAgICAgICAgICAgIGlmIChzdHlsZVRvVXNlLT5vdXRs
aW5lU3R5bGVJc0F1dG8oKSkKICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdG
b2N1c1JpbmcoZm9jdXNSaW5nUmVjdHMsIG93LCBvZmZzZXQsIG9jKTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBhZGRQREZVUkxSZWN0KGdyYXBoaWNzQ29udGV4dCwgdW5pb25S
ZWN0KGZvY3VzUmluZ1JlY3RzKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoc3R5bGUt
Pm91dGxpbmVTdHlsZUlzQXV0bygpIHx8IHN0eWxlLT5vdXRsaW5lU3R5bGUoKSA9PSBCTk9ORSkK
KyAgICBpZiAoc3R5bGVUb1VzZS0+b3V0bGluZVN0eWxlSXNBdXRvKCkgfHwgc3R5bGVUb1VzZS0+
b3V0bGluZVN0eWxlKCkgPT0gQk5PTkUpCiAgICAgICAgIHJldHVybjsKIAogICAgIHR4IC09IG9m
ZnNldDsKQEAgLTEwMzEsMTcgKzEwMTYsMTAgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0
bGluZShHcmFwaGljcwogICAgIGlmIChoIDwgMCB8fCB3IDwgMCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggLSBvdywgdHkgLSBv
dywgdHgsIHR5ICsgaCArIG93LAotICAgICAgICAgICAgICAgQlNMZWZ0LCBDb2xvcihvYyksIHN0
eWxlLT5jb2xvcigpLCBvcywgb3csIG93KTsKLQotICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFw
aGljc0NvbnRleHQsIHR4IC0gb3csIHR5IC0gb3csIHR4ICsgdyArIG93LCB0eSwKLSAgICAgICAg
ICAgICAgIEJTVG9wLCBDb2xvcihvYyksIHN0eWxlLT5jb2xvcigpLCBvcywgb3csIG93KTsKLQot
ICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4ICsgdywgdHkgLSBvdywg
dHggKyB3ICsgb3csIHR5ICsgaCArIG93LAotICAgICAgICAgICAgICAgQlNSaWdodCwgQ29sb3Io
b2MpLCBzdHlsZS0+Y29sb3IoKSwgb3MsIG93LCBvdyk7Ci0KLSAgICBkcmF3TGluZUZvckJveFNp
ZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCAtIG93LCB0eSArIGgsIHR4ICsgdyArIG93LCB0eSArIGgg
KyBvdywKLSAgICAgICAgICAgICAgIEJTQm90dG9tLCBDb2xvcihvYyksIHN0eWxlLT5jb2xvcigp
LCBvcywgb3csIG93KTsKKyAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0
eCAtIG93LCB0eSAtIG93LCB0eCwgdHkgKyBoICsgb3csIEJTTGVmdCwgb2MsIG9zLCBvdywgb3cp
OworICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4IC0gb3csIHR5IC0g
b3csIHR4ICsgdyArIG93LCB0eSwgQlNUb3AsIG9jLCBvcywgb3csIG93KTsKKyAgICBkcmF3TGlu
ZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCArIHcsIHR5IC0gb3csIHR4ICsgdyArIG93
LCB0eSArIGggKyBvdywgQlNSaWdodCwgb2MsIG9zLCBvdywgb3cpOworICAgIGRyYXdMaW5lRm9y
Qm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4IC0gb3csIHR5ICsgaCwgdHggKyB3ICsgb3csIHR5
ICsgaCArIG93LCBCU0JvdHRvbSwgb2MsIG9zLCBvdywgb3cpOwogfQogCiBJbnRSZWN0IFJlbmRl
ck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zKQpAQCAt
MjIwMywyMSArMjE4MSwxNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJPYmplY3Q6
OmdlCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBDb2xvciBkZWNv
cmF0aW9uQ29sb3IoUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIENvbG9yIGRlY29yYXRpb25D
b2xvcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIENvbG9yIHJlc3VsdDsKLSAgICBp
ZiAoc3R5bGUtPnRleHRTdHJva2VXaWR0aCgpID4gMCkgeworICAgIGlmIChyZW5kZXJlci0+c3R5
bGUoKS0+dGV4dFN0cm9rZVdpZHRoKCkgPiAwKSB7CiAgICAgICAgIC8vIFByZWZlciBzdHJva2Ug
Y29sb3IgaWYgcG9zc2libGUgYnV0IG5vdCBpZiBpdCdzIGZ1bGx5IHRyYW5zcGFyZW50LgotICAg
ICAgICByZXN1bHQgPSBzdHlsZS0+dGV4dFN0cm9rZUNvbG9yKCk7Ci0gICAgICAgIGlmICghcmVz
dWx0LmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0eWxlLT5jb2xvcigpOworICAg
ICAgICByZXN1bHQgPSByZW5kZXJlci0+dmlzaXRlZERlcGVuZGVudENvbG9yKHJlbmRlcmVyLT5z
dHlsZSgpLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcik7CiAgICAgICAgIGlmIChy
ZXN1bHQuYWxwaGEoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAot
ICAgIHJlc3VsdCA9IHN0eWxlLT50ZXh0RmlsbENvbG9yKCk7Ci0gICAgaWYgKCFyZXN1bHQuaXNW
YWxpZCgpKQotICAgICAgICByZXN1bHQgPSBzdHlsZS0+Y29sb3IoKTsKKyAgICByZXN1bHQgPSBy
ZW5kZXJlci0+dmlzaXRlZERlcGVuZGVudENvbG9yKHJlbmRlcmVyLT5zdHlsZSgpLCBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIy
MzAsMTUgKzIyMDQsMTUgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29s
bwogICAgICAgICBpZiAoY3VyckRlY3MpIHsKICAgICAgICAgICAgIGlmIChjdXJyRGVjcyAmIFVO
REVSTElORSkgewogICAgICAgICAgICAgICAgIGRlY29yYXRpb25zICY9IH5VTkRFUkxJTkU7Ci0g
ICAgICAgICAgICAgICAgdW5kZXJsaW5lID0gZGVjb3JhdGlvbkNvbG9yKGN1cnItPnN0eWxlKCkp
OworICAgICAgICAgICAgICAgIHVuZGVybGluZSA9IGRlY29yYXRpb25Db2xvcihjdXJyKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjdXJyRGVjcyAmIE9WRVJMSU5FKSB7CiAgICAg
ICAgICAgICAgICAgZGVjb3JhdGlvbnMgJj0gfk9WRVJMSU5FOwotICAgICAgICAgICAgICAgIG92
ZXJsaW5lID0gZGVjb3JhdGlvbkNvbG9yKGN1cnItPnN0eWxlKCkpOworICAgICAgICAgICAgICAg
IG92ZXJsaW5lID0gZGVjb3JhdGlvbkNvbG9yKGN1cnIpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKGN1cnJEZWNzICYgTElORV9USFJPVUdIKSB7CiAgICAgICAgICAgICAgICAgZGVj
b3JhdGlvbnMgJj0gfkxJTkVfVEhST1VHSDsKLSAgICAgICAgICAgICAgICBsaW5ldGhyb3VnaCA9
IGRlY29yYXRpb25Db2xvcihjdXJyLT5zdHlsZSgpKTsKKyAgICAgICAgICAgICAgICBsaW5ldGhy
b3VnaCA9IGRlY29yYXRpb25Db2xvcihjdXJyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7CkBAIC0yMjUwLDEyICsyMjI0LDEwOSBAQCB2
b2lkIFJlbmRlck9iamVjdDo6Z2V0VGV4dERlY29yYXRpb25Db2xvCiAgICAgLy8gSWYgd2UgYmFp
bGVkIG91dCwgdXNlIHRoZSBlbGVtZW50IHdlIGJhaWxlZCBvdXQgYXQgKHR5cGljYWxseSBhIDxm
b250PiBvciA8YT4gZWxlbWVudCkuCiAgICAgaWYgKGRlY29yYXRpb25zICYmIGN1cnIpIHsKICAg
ICAgICAgaWYgKGRlY29yYXRpb25zICYgVU5ERVJMSU5FKQotICAgICAgICAgICAgdW5kZXJsaW5l
ID0gZGVjb3JhdGlvbkNvbG9yKGN1cnItPnN0eWxlKCkpOworICAgICAgICAgICAgdW5kZXJsaW5l
ID0gZGVjb3JhdGlvbkNvbG9yKGN1cnIpOwogICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBPVkVS
TElORSkKLSAgICAgICAgICAgIG92ZXJsaW5lID0gZGVjb3JhdGlvbkNvbG9yKGN1cnItPnN0eWxl
KCkpOworICAgICAgICAgICAgb3ZlcmxpbmUgPSBkZWNvcmF0aW9uQ29sb3IoY3Vycik7CiAgICAg
ICAgIGlmIChkZWNvcmF0aW9ucyAmIExJTkVfVEhST1VHSCkKLSAgICAgICAgICAgIGxpbmV0aHJv
dWdoID0gZGVjb3JhdGlvbkNvbG9yKGN1cnItPnN0eWxlKCkpOworICAgICAgICAgICAgbGluZXRo
cm91Z2ggPSBkZWNvcmF0aW9uQ29sb3IoY3Vycik7CisgICAgfQorfQorCitzdGF0aWMgRUJvcmRl
clN0eWxlIGJvcmRlclN0eWxlRm9yQ29sb3JQcm9wZXJ0eShjb25zdCBSZW5kZXJTdHlsZSogc3R5
bGUsIGludCBjb2xvclByb3BlcnR5KQoreworICAgIEVCb3JkZXJTdHlsZSBib3JkZXJTdHlsZTsK
KyAgICBzd2l0Y2ggKGNvbG9yUHJvcGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
TGVmdENvbG9yOgorICAgICAgICBib3JkZXJTdHlsZSA9IHN0eWxlLT5ib3JkZXJMZWZ0U3R5bGUo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I6
CisgICAgICAgIGJvcmRlclN0eWxlID0gc3R5bGUtPmJvcmRlclJpZ2h0U3R5bGUoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yOgorICAgICAgICBi
b3JkZXJTdHlsZSA9IHN0eWxlLT5ib3JkZXJUb3BTdHlsZSgpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I6CisgICAgICAgIGJvcmRlclN0eWxl
ID0gc3R5bGUtPmJvcmRlckJvdHRvbVN0eWxlKCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIGJvcmRlclN0eWxlID0gQk5PTkU7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICByZXR1cm4gYm9yZGVyU3R5bGU7Cit9CisKK3N0YXRpYyBDb2xvciBjb2xvckluY2x1ZGlu
Z0ZhbGxiYWNrKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgaW50IGNvbG9yUHJvcGVydHksIEVC
b3JkZXJTdHlsZSBib3JkZXJTdHlsZSkKK3sKKyAgICBDb2xvciByZXN1bHQ7CisgICAgc3dpdGNo
IChjb2xvclByb3BlcnR5KSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoK
KyAgICAgICAgcmV0dXJuIHN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKTsgLy8gQmFja2dyb3VuZCBj
b2xvciBkb2Vzbid0IGZhbGwgYmFjay4KKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENv
bG9yOgorICAgICAgICByZXN1bHQgPSBzdHlsZS0+Ym9yZGVyTGVmdENvbG9yKCk7CisgICAgICAg
IGJvcmRlclN0eWxlID0gc3R5bGUtPmJvcmRlckxlZnRTdHlsZSgpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjoKKyAgICAgICAgcmVzdWx0ID0g
c3R5bGUtPmJvcmRlclJpZ2h0Q29sb3IoKTsKKyAgICAgICAgYm9yZGVyU3R5bGUgPSBzdHlsZS0+
Ym9yZGVyUmlnaHRTdHlsZSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyVG9wQ29sb3I6CisgICAgICAgIHJlc3VsdCA9IHN0eWxlLT5ib3JkZXJUb3BDb2xvcigp
OworICAgICAgICBib3JkZXJTdHlsZSA9IHN0eWxlLT5ib3JkZXJUb3BTdHlsZSgpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I6CisgICAgICAg
IHJlc3VsdCA9IHN0eWxlLT5ib3JkZXJCb3R0b21Db2xvcigpOworICAgICAgICBib3JkZXJTdHls
ZSA9IHN0eWxlLT5ib3JkZXJCb3R0b21TdHlsZSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5Q29sb3I6CisgICAgICAgIHJlc3VsdCA9IHN0eWxlLT5jb2xvcigpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yOgorICAgICAgICBy
ZXN1bHQgPSBzdHlsZS0+b3V0bGluZUNvbG9yKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3I6CisgICAgICAgIHJlc3VsdCA9IHN0eWxl
LT5jb2x1bW5SdWxlQ29sb3IoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRGaWxsQ29sb3I6CisgICAgICAgIHJlc3VsdCA9IHN0eWxlLT50ZXh0RmlsbENv
bG9yKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlQ29sb3I6CisgICAgICAgIHJlc3VsdCA9IHN0eWxlLT50ZXh0U3Ryb2tlQ29sb3IoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gRklYTUU6IEFkZCBTVkcgZmls
bCBhbmQgc3Ryb2tlLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgfQorCisgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCgpKSB7CisgICAgICAgIGlmICgo
Y29sb3JQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciB8fCBjb2xvclByb3Bl
cnR5ID09IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciB8fAorICAgICAgICAgICAgIGNvbG9y
UHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciB8fCBjb2xvclByb3BlcnR5ID09
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IpICYmCisgICAgICAgICAgICAoYm9yZGVyU3R5
bGUgPT0gSU5TRVQgfHwgYm9yZGVyU3R5bGUgPT0gT1VUU0VUIHx8IGJvcmRlclN0eWxlID09IFJJ
REdFIHx8IGJvcmRlclN0eWxlID09IEdST09WRSkpCisgICAgICAgICAgICByZXN1bHQuc2V0UkdC
KDIzOCwgMjM4LCAyMzgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBzdHls
ZS0+Y29sb3IoKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitDb2xvciBSZW5k
ZXJPYmplY3Q6OnZpc2l0ZWREZXBlbmRlbnRDb2xvcihjb25zdCBSZW5kZXJTdHlsZSogdW52aXNp
dGVkU3R5bGUsIGludCBjb2xvclByb3BlcnR5KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBGZXRj
aCBib3RoIHZpc2l0ZWQgYW5kIHVudmlzaXRlZCBzdHlsZXMuICBNZXJnZSBjb2xvcnMgYnkgZ2V0
dGluZyB0aGUgUkdCIGZyb20gdGhlIHZpc2l0ZWQgc3R5bGUKKyAgICAvLyBhbmQgdGhlIEEgZnJv
bSB0aGUgdW52aXNpdGVkLiAgSWYgYSBjb2xvciBpcyBub3QgdmFsaWQsIG5lZWQgdG8gZmFsbCBi
YWNrIHRvIGNvbG9yIGluIHNvbWUgY2FzZXMgKHRleHQgZmlsbCwgc3Ryb2tlLCBib3JkZXIpLAor
ICAgIC8vIHNvIGltcG9ydGFudCB0byByZW1lbWJlciB0aGF0IHdoZW4gYXR0ZW1wdGluZyBhIG1l
cmdlKS4KKyAgICBFQm9yZGVyU3R5bGUgYm9yZGVyU3R5bGUgPSBib3JkZXJTdHlsZUZvckNvbG9y
UHJvcGVydHkodW52aXNpdGVkU3R5bGUsIGNvbG9yUHJvcGVydHkpOworICAgIENvbG9yIHVudmlz
aXRlZENvbG9yID0gY29sb3JJbmNsdWRpbmdGYWxsYmFjayh1bnZpc2l0ZWRTdHlsZSwgY29sb3JQ
cm9wZXJ0eSwgYm9yZGVyU3R5bGUpOworICAgIGlmICh1bnZpc2l0ZWRTdHlsZS0+aW5zaWRlTGlu
aygpICE9IEluc2lkZVZpc2l0ZWRMaW5rKQorICAgICAgICByZXR1cm4gdW52aXNpdGVkQ29sb3I7
CisKKyAgICBSZW5kZXJTdHlsZSogdmlzaXRlZFN0eWxlID0gdW52aXNpdGVkU3R5bGUtPmdldENh
Y2hlZFBzZXVkb1N0eWxlKFZJU0lURURfTElOSyk7CisgICAgaWYgKCF2aXNpdGVkU3R5bGUpCisg
ICAgICAgIHJldHVybiB1bnZpc2l0ZWRDb2xvcjsKKyAgICBDb2xvciB2aXNpdGVkQ29sb3IgPSBj
b2xvckluY2x1ZGluZ0ZhbGxiYWNrKHZpc2l0ZWRTdHlsZSwgY29sb3JQcm9wZXJ0eSwgYm9yZGVy
U3R5bGUpOworCisgICAgLy8gVGFrZSB0aGUgYWxwaGEgZnJvbSB0aGUgdW52aXNpdGVkIGNvbG9y
LCBidXQgZ2V0IHRoZSBSR0IgdmFsdWVzIGZyb20gdGhlIHZpc2l0ZWQgY29sb3IuCisgICAgcmV0
dXJuIENvbG9yKHZpc2l0ZWRDb2xvci5yZWQoKSwgdmlzaXRlZENvbG9yLmdyZWVuKCksIHZpc2l0
ZWRDb2xvci5ibHVlKCksIHVudmlzaXRlZENvbG9yLmFscGhhKCkpOwogfQogCiAjaWYgRU5BQkxF
KERBU0hCT0FSRF9TVVBQT1JUKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJldmlz
aW9uIDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQwOCw5ICs0MDgsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNNYXNrKCkgY29u
c3QgeyByZXR1cm4gc3R5bGUoKSAmJiBzdHlsZSgpLT5oYXNNYXNrKCk7IH0KIAogICAgIHZvaWQg
ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCosIGludCB4MSwgaW50IHkxLCBpbnQg
eDIsIGludCB5MiwgQm94U2lkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciwg
Y29uc3QgQ29sb3ImIHRleHRjb2xvciwgRUJvcmRlclN0eWxlLCBpbnQgYWRqYncxLCBpbnQgYWRq
YncyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciwgRUJvcmRlclN0eWxlLCBp
bnQgYWRqYncxLCBpbnQgYWRqYncyKTsKICAgICB2b2lkIGRyYXdBcmNGb3JCb3hTaWRlKEdyYXBo
aWNzQ29udGV4dCosIGludCB4LCBpbnQgeSwgZmxvYXQgdGhpY2tuZXNzLCBJbnRTaXplIHJhZGl1
cywgaW50IGFuZ2xlU3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYW5nbGVT
cGFuLCBCb3hTaWRlLCBDb2xvciwgY29uc3QgQ29sb3ImIHRleHRjb2xvciwgRUJvcmRlclN0eWxl
LCBib29sIGZpcnN0Q29ybmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbmds
ZVNwYW4sIEJveFNpZGUsIENvbG9yLCBFQm9yZGVyU3R5bGUsIGJvb2wgZmlyc3RDb3JuZXIpOwog
CiBwdWJsaWM6CiAgICAgLy8gVGhlIHBzZXVkbyBlbGVtZW50IHN0eWxlIGNhbiBiZSBjYWNoZWQg
b3IgdW5jYWNoZWQuICBVc2UgdGhlIGNhY2hlZCBtZXRob2QgaWYgdGhlIHBzZXVkbyBlbGVtZW50
IGRvZXNuJ3QgcmVzcGVjdApAQCAtNTk5LDYgKzU5OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIGdldFRleHREZWNvcmF0aW9uQ29sb3JzKGludCBkZWNvcmF0aW9ucywgQ29sb3ImIHVuZGVy
bGluZSwgQ29sb3ImIG92ZXJsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q29sb3ImIGxpbmV0aHJvdWdoLCBib29sIHF1aXJrc01vZGUgPSBmYWxzZSk7CisgICAgQ29sb3Ig
dmlzaXRlZERlcGVuZGVudENvbG9yKGNvbnN0IFJlbmRlclN0eWxlKiB1bnZpc2l0ZWRTdHlsZSwg
aW50IGNvbG9yUHJvcGVydHkpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRoZSBSZW5kZXJCb3gg
aW4gdGhlIGNvbnRhaW5lciBjaGFpbiB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcg
dGhpcyBvYmplY3QsIG9yIDAKICAgICAvLyBpZiBwYWludGluZyBpcyByb290LXJlbGF0aXZlLiBU
aGlzIGlzIHRoZSBjb250YWluZXIgdGhhdCBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSAnZm9yUmVw
YWludCcKQEAgLTc4NCw3ICs3ODUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gT3ZlcnJpZGVzIHNo
b3VsZCBjYWxsIHRoZSBzdXBlcmNsYXNzIGF0IHRoZSBzdGFydAogICAgIHZpcnR1YWwgdm9pZCBz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSk7CiAKLSAgICB2b2lkIHBhaW50T3V0bGluZShHcmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGlu
dCB0eSwgaW50IHcsIGludCBoLCBjb25zdCBSZW5kZXJTdHlsZSopOworICAgIHZvaWQgcGFpbnRP
dXRsaW5lKEdyYXBoaWNzQ29udGV4dCosIGludCB0eCwgaW50IHR5LCBpbnQgdywgaW50IGgpOwog
ICAgIHZvaWQgYWRkUERGVVJMUmVjdChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7
CiAKICAgICB2aXJ0dWFsIEludFJlY3Qgdmlld1JlY3QoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclBhdGguY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBSZW5k
ZXJQYXRoOjpwYWludChQYWludEluZm8mIHBhaW50SQogCiAgICAgICAgIGlmIChkcmF3c091dGxp
bmUpCiAgICAgICAgICAgICBwYWludE91dGxpbmUoY2hpbGRQYWludEluZm8uY29udGV4dCwgc3Rh
dGljX2Nhc3Q8aW50Pihib3VuZGluZ0JveC54KCkpLCBzdGF0aWNfY2FzdDxpbnQ+KGJvdW5kaW5n
Qm94LnkoKSksCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihib3VuZGluZ0JveC53
aWR0aCgpKSwgc3RhdGljX2Nhc3Q8aW50Pihib3VuZGluZ0JveC5oZWlnaHQoKSksIHN0eWxlKCkp
OworICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oYm91bmRpbmdCb3gud2lkdGgoKSks
IHN0YXRpY19jYXN0PGludD4oYm91bmRpbmdCb3guaGVpZ2h0KCkpKTsKICAgICAgICAgCiAgICAg
ICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKICAgICB9CkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEw
OSw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5mbyYgcGEKICAgICB9CiAK
ICAgICBpZiAoKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludElu
Zm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgpLT5vdXRsaW5lV2lk
dGgoKSkKLSAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCB0eCwgdHksIHdp
ZHRoKCksIGhlaWdodCgpLCBzdHlsZSgpKTsKKyAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5m
by5jb250ZXh0LCB0eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKTsKICAgICAKICAgICBpZiAocGFp
bnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAh
PSBQYWludFBoYXNlU2VsZWN0aW9uKQogICAgICAgICByZXR1cm47CkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIw
LDcgKzEyMCw3IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8KICAg
ICAvLyBXZSBzaG91bGQgaW5zdGVhZCBkaXNhYmxlIG91ciBjbGlwIGR1cmluZyBQYWludFBoYXNl
T3V0bGluZQogICAgIEludFJlY3QgcGFpbnRSZWN0SW5QYXJlbnQgPSBlbmNsb3NpbmdJbnRSZWN0
KGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5tYXBSZWN0KHJlcGFpbnRSZWN0SW5Mb2NhbENvb3Jk
aW5hdGVzKCkpKTsKICAgICBpZiAoKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlT3V0bGlu
ZSB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgp
LT5vdXRsaW5lV2lkdGgoKSAmJiBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKLSAg
ICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCBwYWludFJlY3RJblBhcmVudC54
KCksIHBhaW50UmVjdEluUGFyZW50LnkoKSwgcGFpbnRSZWN0SW5QYXJlbnQud2lkdGgoKSwgcGFp
bnRSZWN0SW5QYXJlbnQuaGVpZ2h0KCksIHN0eWxlKCkpOworICAgICAgICBwYWludE91dGxpbmUo
cGFpbnRJbmZvLmNvbnRleHQsIHBhaW50UmVjdEluUGFyZW50LngoKSwgcGFpbnRSZWN0SW5QYXJl
bnQueSgpLCBwYWludFJlY3RJblBhcmVudC53aWR0aCgpLCBwYWludFJlY3RJblBhcmVudC5oZWln
aHQoKSk7CiB9CiAKIC8vIGFkZEZvY3VzUmluZ1JlY3RzIGlzIGNhbGxlZCBmcm9tIHBhaW50T3V0
bGluZSBhbmQgbmVlZHMgdG8gYmUgaW4gdGhlIHNhbWUgY29vcmRpbmF0ZXMgYXMgdGhlIHBhaW50
T3VsaW5lIGNhbGwKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHJldmlz
aW9uIDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBh
aW50SW5mbyYgcGEKICAgICB9CiAKICAgICBpZiAoKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBo
YXNlT3V0bGluZSB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAm
JiBzdHlsZSgpLT5vdXRsaW5lV2lkdGgoKSkKLSAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5m
by5jb250ZXh0LCAwLCAwLCB3aWR0aCgpLCBoZWlnaHQoKSwgc3R5bGUoKSk7CisgICAgICAgIHBh
aW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgMCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCkpOwog
CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKIH0KSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1Jvb3QuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgdm9p
ZCBSZW5kZXJTVkdSb290OjpwYWludChQYWludEluZm8mIHBhaQogICAgIGNoaWxkUGFpbnRJbmZv
LmNvbnRleHQtPnJlc3RvcmUoKTsKIAogICAgIGlmICgocGFpbnRJbmZvLnBoYXNlID09IFBhaW50
UGhhc2VPdXRsaW5lIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUp
ICYmIHN0eWxlKCktPm91dGxpbmVXaWR0aCgpICYmIHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBW
SVNJQkxFKQotICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIGJvcmRlckJv
eE9yaWdpbkluQ29udGFpbmVyLngoKSwgYm9yZGVyQm94T3JpZ2luSW5Db250YWluZXIueSgpLCB3
aWR0aCgpLCBoZWlnaHQoKSwgc3R5bGUoKSk7CisgICAgICAgIHBhaW50T3V0bGluZShwYWludElu
Zm8uY29udGV4dCwgYm9yZGVyQm94T3JpZ2luSW5Db250YWluZXIueCgpLCBib3JkZXJCb3hPcmln
aW5JbkNvbnRhaW5lci55KCksIHdpZHRoKCksIGhlaWdodCgpKTsKIH0KIAogdm9pZCBSZW5kZXJT
VkdSb290OjpkZXN0cm95KCkKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNw
cAkocmV2aXNpb24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsMjIgKzMzOCwyNSBAQCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvCiAgICAgCiAgICAgLy8gRm9yIGJvcmRlciBsZWZ0LCB3
ZSBuZWVkIHRvIGNoZWNrLCBpbiBvcmRlciBvZiBwcmVjZWRlbmNlOgogICAgIC8vICgxKSBPdXIg
bGVmdCBib3JkZXIuCi0gICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0KCZzdHlsZSgpLT5i
b3JkZXJMZWZ0KCksIEJDRUxMKTsKKyAgICBpbnQgbGVmdCA9IENTU1Byb3BlcnR5Qm9yZGVyTGVm
dENvbG9yOworICAgIGludCByaWdodCA9IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjsKKyAg
ICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQoJnN0eWxlKCktPmJvcmRlckxlZnQoKSwgdmlz
aXRlZERlcGVuZGVudENvbG9yKHN0eWxlKCksIGxlZnQpLCBCQ0VMTCk7CiAgICAgCiAgICAgLy8g
KDIpIFRoZSByaWdodCBib3JkZXIgb2YgdGhlIGNlbGwgdG8gdGhlIGxlZnQuCiAgICAgUmVuZGVy
VGFibGVDZWxsKiBwcmV2Q2VsbCA9IHJ0bCA/IHRhYmxlRWx0LT5jZWxsQWZ0ZXIodGhpcykgOiB0
YWJsZUVsdC0+Y2VsbEJlZm9yZSh0aGlzKTsKICAgICBpZiAocHJldkNlbGwpIHsKLSAgICAgICAg
cmVzdWx0ID0gcnRsID8gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSgmcHJldkNlbGwtPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIEJDRUxMKSkgOiBjb21wYXJlQm9y
ZGVycyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcHJldkNlbGwtPnN0eWxlKCktPmJvcmRlclJpZ2h0
KCksIEJDRUxMKSwgcmVzdWx0KTsKKyAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcHJldkNl
bGxCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcHJldkNlbGwtPnN0eWxlKCktPmJvcmRl
clJpZ2h0KCksIHByZXZDZWxsLT52aXNpdGVkRGVwZW5kZW50Q29sb3IocHJldkNlbGwtPnN0eWxl
KCksIHJpZ2h0KSwgQkNFTEwpOworICAgICAgICByZXN1bHQgPSBydGwgPyBjb21wYXJlQm9yZGVy
cyhyZXN1bHQsIHByZXZDZWxsQm9yZGVyKSA6IGNvbXBhcmVCb3JkZXJzKHByZXZDZWxsQm9yZGVy
LCByZXN1bHQpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfSBlbHNlIGlmIChsZWZ0bW9zdENvbHVtbikgewogICAgICAgICAv
LyAoMykgT3VyIHJvdydzIGxlZnQgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9y
ZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZwYXJlbnQoKS0+c3R5bGUoKS0+Ym9y
ZGVyTGVmdCgpLCBCUk9XKSk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3Vs
dCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCks
IHBhcmVudCgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IocGFyZW50KCktPnN0eWxlKCksIGxlZnQp
LCBCUk9XKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgCiAgICAgICAgIC8vICg0KSBPdXIgcm93IGdyb3VwJ3MgbGVm
dCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFw
c2VkQm9yZGVyVmFsdWUoJnNlY3Rpb24oKS0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBCUk9XR1JP
VVApKTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSgmc2VjdGlvbigpLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIHNlY3Rpb24oKS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKHNlY3Rpb24oKS0+c3R5bGUoKSwgbGVmdCksIEJST1dHUk9V
UCkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQpAQCAtMzYzLDExICszNjYsMTEgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUg
UmVuZGVyVGFibGVDZWxsOjpjbwogICAgIGJvb2wgZW5kQ29sRWRnZTsKICAgICBSZW5kZXJUYWJs
ZUNvbCogY29sRWx0ID0gdGFibGVFbHQtPmNvbEVsZW1lbnQoY29sKCkgKyAocnRsID8gY29sU3Bh
bigpIC0gMSA6IDApLCAmc3RhcnRDb2xFZGdlLCAmZW5kQ29sRWRnZSk7CiAgICAgaWYgKGNvbEVs
dCAmJiAoIXJ0bCA/IHN0YXJ0Q29sRWRnZSA6IGVuZENvbEVkZ2UpKSB7Ci0gICAgICAgIHJlc3Vs
dCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+
c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBCQ09MKSk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVC
b3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9y
ZGVyTGVmdCgpLCBjb2xFbHQtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihjb2xFbHQtPnN0eWxlKCks
IGxlZnQpLCBCQ09MKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgaWYgKGNvbEVsdC0+cGFyZW50KCktPmlzVGFibGVD
b2woKSAmJiAoIXJ0bCA/ICFjb2xFbHQtPnByZXZpb3VzU2libGluZygpIDogIWNvbEVsdC0+bmV4
dFNpYmxpbmcoKSkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3Vs
dCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRl
ckxlZnQoKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVy
cyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgp
LT5ib3JkZXJMZWZ0KCksIGNvbEVsdC0+cGFyZW50KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihj
b2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLCBsZWZ0KSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAg
ICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICB9CkBAIC0zNzcsMTMgKzM4MCwxNCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5k
ZXJUYWJsZUNlbGw6OmNvCiAgICAgaWYgKCFsZWZ0bW9zdENvbHVtbikgewogICAgICAgICBjb2xF
bHQgPSB0YWJsZUVsdC0+Y29sRWxlbWVudChjb2woKSArIChydGwgPyBjb2xTcGFuKCkgOiAtMSks
ICZzdGFydENvbEVkZ2UsICZlbmRDb2xFZGdlKTsKICAgICAgICAgaWYgKGNvbEVsdCAmJiAoIXJ0
bCA/IGVuZENvbEVkZ2UgOiBzdGFydENvbEVkZ2UpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBy
dGwgPyBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQt
PnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIEJDT0wpKSA6IGNvbXBhcmVCb3JkZXJzKENvbGxhcHNl
ZEJvcmRlclZhbHVlKCZjb2xFbHQtPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIEJDT0wpLCByZXN1
bHQpOworICAgICAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmlnaHRCb3JkZXIgPSBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBjb2xFbHQt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcihjb2xFbHQtPnN0eWxlKCksIHJpZ2h0KSwgQkNPTCk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBydGwgPyBjb21wYXJlQm9yZGVycyhyZXN1bHQsIHJpZ2h0Qm9y
ZGVyKSA6IGNvbXBhcmVCb3JkZXJzKHJpZ2h0Qm9yZGVyLCByZXN1bHQpOwogICAgICAgICAgICAg
aWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICg3KSBUaGUgdGFibGUncyBsZWZ0IGJv
cmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSgmdGFibGVFbHQtPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgQlRBQkxFKSk7Cisg
ICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFs
dWUoJnRhYmxlRWx0LT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIHRhYmxlRWx0LT52aXNpdGVkRGVw
ZW5kZW50Q29sb3IodGFibGVFbHQtPnN0eWxlKCksIGxlZnQpLCBCVEFCTEUpKTsKICAgICAgICAg
aWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
QEAgLTQwNCwyNCArNDA4LDI3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2Vs
bDo6Y28KICAgICAKICAgICAvLyBGb3IgYm9yZGVyIHJpZ2h0LCB3ZSBuZWVkIHRvIGNoZWNrLCBp
biBvcmRlciBvZiBwcmVjZWRlbmNlOgogICAgIC8vICgxKSBPdXIgcmlnaHQgYm9yZGVyLgotICAg
IENvbGxhcHNlZEJvcmRlclZhbHVlIHJlc3VsdCA9IENvbGxhcHNlZEJvcmRlclZhbHVlKCZzdHls
ZSgpLT5ib3JkZXJSaWdodCgpLCBCQ0VMTCk7CisgICAgaW50IGxlZnQgPSBDU1NQcm9wZXJ0eUJv
cmRlckxlZnRDb2xvcjsKKyAgICBpbnQgcmlnaHQgPSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29s
b3I7CisgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9yZGVyVmFs
dWUoJnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIHZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdHlsZSgp
LCByaWdodCksIEJDRUxMKTsKICAgICAKICAgICAvLyAoMikgVGhlIGxlZnQgYm9yZGVyIG9mIHRo
ZSBjZWxsIHRvIHRoZSByaWdodC4KICAgICBpZiAoIXJpZ2h0bW9zdENvbHVtbikgewogICAgICAg
ICBSZW5kZXJUYWJsZUNlbGwqIG5leHRDZWxsID0gcnRsID8gdGFibGVFbHQtPmNlbGxCZWZvcmUo
dGhpcykgOiB0YWJsZUVsdC0+Y2VsbEFmdGVyKHRoaXMpOwogICAgICAgICBpZiAobmV4dENlbGwg
JiYgbmV4dENlbGwtPnN0eWxlKCkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ0bCA/IGNvbXBh
cmVCb3JkZXJzKENvbGxhcHNlZEJvcmRlclZhbHVlKCZuZXh0Q2VsbC0+c3R5bGUoKS0+Ym9yZGVy
TGVmdCgpLCBCQ0VMTCksIHJlc3VsdCkgOiBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNl
ZEJvcmRlclZhbHVlKCZuZXh0Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBCQ0VMTCkpOwor
ICAgICAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgbGVmdEJvcmRlciA9IENvbGxhcHNlZEJv
cmRlclZhbHVlKCZuZXh0Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBuZXh0Q2VsbC0+dmlz
aXRlZERlcGVuZGVudENvbG9yKG5leHRDZWxsLT5zdHlsZSgpLCBsZWZ0KSwgQkNFTEwpOworICAg
ICAgICAgICAgcmVzdWx0ID0gcnRsID8gY29tcGFyZUJvcmRlcnMobGVmdEJvcmRlciwgcmVzdWx0
KSA6IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgbGVmdEJvcmRlcik7CiAgICAgICAgICAgICBpZiAo
IXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gKDMpIE91ciByb3cncyByaWdodCBib3JkZXIu
Ci0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVy
VmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBCUk9XKSk7CisgICAgICAg
IHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBh
cmVudCgpLT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBwYXJlbnQoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKHBhcmVudCgpLT5zdHlsZSgpLCByaWdodCksIEJST1cpKTsKICAgICAgICAgaWYgKCFy
ZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAKICAg
ICAgICAgLy8gKDQpIE91ciByb3cgZ3JvdXAncyByaWdodCBib3JkZXIuCi0gICAgICAgIHJlc3Vs
dCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnNlY3Rpb24o
KS0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgQlJPV0dST1VQKSk7CisgICAgICAgIHJlc3VsdCA9
IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnNlY3Rpb24oKS0+
c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgc2VjdGlvbigpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
c2VjdGlvbigpLT5zdHlsZSgpLCByaWdodCksIEJST1dHUk9VUCkpOwogICAgICAgICBpZiAoIXJl
c3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNDMx
LDExICs0MzgsMTEgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjbwog
ICAgIGJvb2wgZW5kQ29sRWRnZTsKICAgICBSZW5kZXJUYWJsZUNvbCogY29sRWx0ID0gdGFibGVF
bHQtPmNvbEVsZW1lbnQoY29sKCkgKyAocnRsID8gMCA6IGNvbFNwYW4oKSAtIDEpLCAmc3RhcnRD
b2xFZGdlLCAmZW5kQ29sRWRnZSk7CiAgICAgaWYgKGNvbEVsdCAmJiAoIXJ0bCA/IGVuZENvbEVk
Z2UgOiBzdGFydENvbEVkZ2UpKSB7Ci0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJl
c3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQo
KSwgQkNPTCkpOworICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxh
cHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIGNvbEVsdC0+
dmlzaXRlZERlcGVuZGVudENvbG9yKGNvbEVsdC0+c3R5bGUoKSwgcmlnaHQpLCBCQ09MKSk7CiAg
ICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgaWYgKGNvbEVsdC0+cGFyZW50KCktPmlzVGFibGVDb2woKSAmJiAoIXJ0bCA/ICFj
b2xFbHQtPm5leHRTaWJsaW5nKCkgOiAhY29sRWx0LT5wcmV2aW91c1NpYmxpbmcoKSkpIHsKLSAg
ICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVy
VmFsdWUoJmNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIEJDT0xHUk9V
UCkpOworICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwg
Y29sRWx0LT5wYXJlbnQoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGNvbEVsdC0+cGFyZW50KCkt
PnN0eWxlKCksIHJpZ2h0KSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5l
eGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC00
NDUsMTMgKzQ1MiwxNCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNv
CiAgICAgaWYgKCFyaWdodG1vc3RDb2x1bW4pIHsKICAgICAgICAgY29sRWx0ID0gdGFibGVFbHQt
PmNvbEVsZW1lbnQoY29sKCkgKyAocnRsID8gLTEgOiBjb2xTcGFuKCkpLCAmc3RhcnRDb2xFZGdl
LCAmZW5kQ29sRWRnZSk7CiAgICAgICAgIGlmIChjb2xFbHQgJiYgKCFydGwgPyBzdGFydENvbEVk
Z2UgOiBlbmRDb2xFZGdlKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gcnRsID8gY29tcGFyZUJv
cmRlcnMoQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgp
LCBCQ09MKSwgcmVzdWx0KSA6IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVy
VmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBCQ09MKSk7CisgICAgICAgICAg
ICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBsZWZ0Qm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUo
JmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBjb2xFbHQtPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihjb2xFbHQtPnN0eWxlKCksIGxlZnQpLCBCQ09MKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IHJ0bCA/IGNvbXBhcmVCb3JkZXJzKGxlZnRCb3JkZXIsIHJlc3VsdCkgOiBjb21wYXJlQm9yZGVy
cyhyZXN1bHQsIGxlZnRCb3JkZXIpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vICg3KSBUaGUgdGFibGUncyByaWdodCBib3JkZXIuCi0gICAgICAgIHJlc3Vs
dCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnRhYmxlRWx0
LT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBCVEFCTEUpKTsKKyAgICAgICAgcmVzdWx0ID0gY29t
cGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmdGFibGVFbHQtPnN0eWxl
KCktPmJvcmRlclJpZ2h0KCksIHRhYmxlRWx0LT52aXNpdGVkRGVwZW5kZW50Q29sb3IodGFibGVF
bHQtPnN0eWxlKCksIHJpZ2h0KSwgQlRBQkxFKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0
cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC00NjMsMTggKzQ3MSwy
MCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvCiB7CiAgICAgLy8g
Rm9yIGJvcmRlciB0b3AsIHdlIG5lZWQgdG8gY2hlY2ssIGluIG9yZGVyIG9mIHByZWNlZGVuY2U6
CiAgICAgLy8gKDEpIE91ciB0b3AgYm9yZGVyLgotICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHJl
c3VsdCA9IENvbGxhcHNlZEJvcmRlclZhbHVlKCZzdHlsZSgpLT5ib3JkZXJUb3AoKSwgQkNFTEwp
OworICAgIGludCB0b3AgPSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yOworICAgIGludCBib3R0
b20gPSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yOworICAgIENvbGxhcHNlZEJvcmRlclZh
bHVlIHJlc3VsdCA9IENvbGxhcHNlZEJvcmRlclZhbHVlKCZzdHlsZSgpLT5ib3JkZXJUb3AoKSwg
dmlzaXRlZERlcGVuZGVudENvbG9yKHN0eWxlKCksIHRvcCksIEJDRUxMKTsKICAgICAKICAgICBS
ZW5kZXJUYWJsZUNlbGwqIHByZXZDZWxsID0gdGFibGUoKS0+Y2VsbEFib3ZlKHRoaXMpOwogICAg
IGlmIChwcmV2Q2VsbCkgewogICAgICAgICAvLyAoMikgQSBwcmV2aW91cyBjZWxsJ3MgYm90dG9t
IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMoQ29sbGFwc2VkQm9yZGVy
VmFsdWUoJnByZXZDZWxsLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgQkNFTEwpLCByZXN1bHQp
OworICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgm
cHJldkNlbGwtPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBwcmV2Q2VsbC0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKHByZXZDZWxsLT5zdHlsZSgpLCBib3R0b20pLCBCQ0VMTCksIHJlc3VsdCk7CiAg
ICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKSAKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogICAgIAogICAgIC8vICgzKSBPdXIgcm93J3MgdG9wIGJvcmRlci4KLSAgICByZXN1
bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZwYXJlbnQo
KS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIEJST1cpKTsKKyAgICByZXN1bHQgPSBjb21wYXJlQm9y
ZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZwYXJlbnQoKS0+c3R5bGUoKS0+Ym9y
ZGVyVG9wKCksIHBhcmVudCgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IocGFyZW50KCktPnN0eWxl
KCksIHRvcCksIEJST1cpKTsKICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAKQEAgLTQ4Nyw3ICs0OTcsNyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSBSZW5kZXJUYWJsZUNlbGw6OmNvCiAgICAgICAgICAgICBwcmV2Um93ID0gcHJldkNlbGwtPnNl
Y3Rpb24oKS0+bGFzdENoaWxkKCk7CiAgICAgCiAgICAgICAgIGlmIChwcmV2Um93KSB7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcHJl
dlJvdy0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIEJST1cpLCByZXN1bHQpOworICAgICAgICAg
ICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMoQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnByZXZSb3ct
PnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBwcmV2Um93LT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
cHJldlJvdy0+c3R5bGUoKSwgYm90dG9tKSwgQlJPVyksIHJlc3VsdCk7CiAgICAgICAgICAgICBp
ZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICB9CkBAIC00OTcsMTQgKzUwNywxNCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJU
YWJsZUNlbGw6OmNvCiAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBjdXJyU2VjdGlvbiA9IHNlY3Rp
b24oKTsKICAgICBpZiAoIXJvdygpKSB7CiAgICAgICAgIC8vICg1KSBPdXIgcm93IGdyb3VwJ3Mg
dG9wIGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlclRvcCgpLCBCUk9X
R1JPVVApKTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlclRvcCgpLCBjdXJyU2Vj
dGlvbi0+dmlzaXRlZERlcGVuZGVudENvbG9yKGN1cnJTZWN0aW9uLT5zdHlsZSgpLCB0b3ApLCBC
Uk9XR1JPVVApKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICAKICAgICAgICAgLy8gKDYpIFByZXZpb3VzIHJvdyBncm91
cCdzIGJvdHRvbSBib3JkZXIuCiAgICAgICAgIGN1cnJTZWN0aW9uID0gdGFibGUoKS0+c2VjdGlv
bkFib3ZlKGN1cnJTZWN0aW9uKTsKICAgICAgICAgaWYgKGN1cnJTZWN0aW9uKSB7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNl
Y3Rpb24tPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBCUk9XR1JPVVApLCByZXN1bHQpOworICAg
ICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMoQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmN1
cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgY3VyclNlY3Rpb24tPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihjdXJyU2VjdGlvbi0+c3R5bGUoKSwgYm90dG9tKSwgQlJPV0dST1VQKSwg
cmVzdWx0KTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTUxNCwxOCArNTI0LDE5IEBAIENvbGxh
cHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KICAgICAgICAgLy8gKDgpIE91ciBj
b2x1bW4gYW5kIGNvbHVtbiBncm91cCdzIHRvcCBib3JkZXJzLgogICAgICAgICBSZW5kZXJUYWJs
ZUNvbCogY29sRWx0ID0gdGFibGUoKS0+Y29sRWxlbWVudChjb2woKSk7CiAgICAgICAgIGlmIChj
b2xFbHQpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29s
bGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIEJDT0wpKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIGNvbEVsdC0+dmlzaXRlZERl
cGVuZGVudENvbG9yKGNvbEVsdC0+c3R5bGUoKSwgdG9wKSwgQkNPTCkpOwogICAgICAgICAgICAg
aWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgICAgIGlmIChjb2xFbHQtPnBhcmVudCgpLT5pc1RhYmxlQ29sKCkpIHsKLSAgICAgICAg
ICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZh
bHVlKCZjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgQkNPTEdST1VQKSk7
CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyVG9wKCksIGNv
bEVsdC0+cGFyZW50KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihjb2xFbHQtPnBhcmVudCgpLT5z
dHlsZSgpLCB0b3ApLCBCQ09MR1JPVVApKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5l
eGlzdHMoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gKDkpIFRoZSB0YWJsZSdzIHRvcCBi
b3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUoJnRhYmxlKCktPnN0eWxlKCktPmJvcmRlclRvcCgpLCBCVEFCTEUpKTsKKyAg
ICAgICAgUmVuZGVyVGFibGUqIGVuY2xvc2luZ1RhYmxlID0gdGFibGUoKTsKKyAgICAgICAgcmVz
dWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmZW5jbG9z
aW5nVGFibGUtPnN0eWxlKCktPmJvcmRlclRvcCgpLCBlbmNsb3NpbmdUYWJsZS0+dmlzaXRlZERl
cGVuZGVudENvbG9yKGVuY2xvc2luZ1RhYmxlLT5zdHlsZSgpLCB0b3ApLCBCVEFCTEUpKTsKICAg
ICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KQEAgLTUzNywyNCArNTQ4LDI2IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRh
YmxlQ2VsbDo6Y28KIHsKICAgICAvLyBGb3IgYm9yZGVyIHRvcCwgd2UgbmVlZCB0byBjaGVjaywg
aW4gb3JkZXIgb2YgcHJlY2VkZW5jZToKICAgICAvLyAoMSkgT3VyIGJvdHRvbSBib3JkZXIuCi0g
ICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnN0
eWxlKCktPmJvcmRlckJvdHRvbSgpLCBCQ0VMTCk7CisgICAgaW50IHRvcCA9IENTU1Byb3BlcnR5
Qm9yZGVyVG9wQ29sb3I7CisgICAgaW50IGJvdHRvbSA9IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
Q29sb3I7CisgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9yZGVy
VmFsdWUoJnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCB2aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3R5
bGUoKSwgYm90dG9tKSwgQkNFTEwpOwogICAgIAogICAgIFJlbmRlclRhYmxlQ2VsbCogbmV4dENl
bGwgPSB0YWJsZSgpLT5jZWxsQmVsb3codGhpcyk7CiAgICAgaWYgKG5leHRDZWxsKSB7CiAgICAg
ICAgIC8vICgyKSBBIGZvbGxvd2luZyBjZWxsJ3MgdG9wIGJvcmRlci4KLSAgICAgICAgcmVzdWx0
ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmbmV4dENlbGwt
PnN0eWxlKCktPmJvcmRlclRvcCgpLCBCQ0VMTCkpOworICAgICAgICByZXN1bHQgPSBjb21wYXJl
Qm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZuZXh0Q2VsbC0+c3R5bGUoKS0+
Ym9yZGVyVG9wKCksIG5leHRDZWxsLT52aXNpdGVkRGVwZW5kZW50Q29sb3IobmV4dENlbGwtPnN0
eWxlKCksIHRvcCksIEJDRUxMKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgLy8gKDMpIE91ciByb3cn
cyBib3R0b20gYm9yZGVyLiAoRklYTUU6IERlYWwgd2l0aCByb3dzcGFuISkKLSAgICByZXN1bHQg
PSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZwYXJlbnQoKS0+
c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIEJST1cpKTsKKyAgICByZXN1bHQgPSBjb21wYXJlQm9y
ZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZwYXJlbnQoKS0+c3R5bGUoKS0+Ym9y
ZGVyQm90dG9tKCksIHBhcmVudCgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IocGFyZW50KCktPnN0
eWxlKCksIGJvdHRvbSksIEJST1cpKTsKICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAKICAgICAvLyAoNCkgVGhlIG5leHQgcm93J3MgdG9wIGJv
cmRlci4KICAgICBpZiAobmV4dENlbGwpIHsKLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRl
cnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmbmV4dENlbGwtPnBhcmVudCgpLT5zdHls
ZSgpLT5ib3JkZXJUb3AoKSwgQlJPVykpOworICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVy
cyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZuZXh0Q2VsbC0+cGFyZW50KCktPnN0eWxl
KCktPmJvcmRlclRvcCgpLCBuZXh0Q2VsbC0+cGFyZW50KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihuZXh0Q2VsbC0+cGFyZW50KCktPnN0eWxlKCksIHRvcCksIEJST1cpKTsKICAgICAgICAgaWYg
KCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAg
LTU2MywxNCArNTc2LDE0IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6
Y28KICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGN1cnJTZWN0aW9uID0gc2VjdGlvbigpOwogICAg
IGlmIChyb3coKSArIHJvd1NwYW4oKSA+PSBjdXJyU2VjdGlvbi0+bnVtUm93cygpKSB7CiAgICAg
ICAgIC8vICg1KSBPdXIgcm93IGdyb3VwJ3MgYm90dG9tIGJvcmRlci4KLSAgICAgICAgcmVzdWx0
ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rp
b24tPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBCUk9XR1JPVVApKTsKKyAgICAgICAgcmVzdWx0
ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rp
b24tPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBjdXJyU2VjdGlvbi0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKGN1cnJTZWN0aW9uLT5zdHlsZSgpLCBib3R0b20pLCBCUk9XR1JPVVApKTsKICAgICAg
ICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICAKICAgICAgICAgLy8gKDYpIEZvbGxvd2luZyByb3cgZ3JvdXAncyB0b3AgYm9yZGVyLgog
ICAgICAgICBjdXJyU2VjdGlvbiA9IHRhYmxlKCktPnNlY3Rpb25CZWxvdyhjdXJyU2VjdGlvbik7
CiAgICAgICAgIGlmIChjdXJyU2VjdGlvbikgewotICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFy
ZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxl
KCktPmJvcmRlclRvcCgpLCBCUk9XR1JPVVApKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBh
cmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmN1cnJTZWN0aW9uLT5zdHls
ZSgpLT5ib3JkZXJUb3AoKSwgY3VyclNlY3Rpb24tPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihjdXJy
U2VjdGlvbi0+c3R5bGUoKSwgdG9wKSwgQlJPV0dST1VQKSk7CiAgICAgICAgICAgICBpZiAoIXJl
c3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9
CkBAIC01ODAsMTcgKzU5MywxOCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNl
bGw6OmNvCiAgICAgICAgIC8vICg4KSBPdXIgY29sdW1uIGFuZCBjb2x1bW4gZ3JvdXAncyBib3R0
b20gYm9yZGVycy4KICAgICAgICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsdCA9IHRhYmxlKCktPmNv
bEVsZW1lbnQoY29sKCkpOwogICAgICAgICBpZiAoY29sRWx0KSB7Ci0gICAgICAgICAgICByZXN1
bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQt
PnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBCQ09MKSk7CisgICAgICAgICAgICByZXN1bHQgPSBj
b21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnN0eWxl
KCktPmJvcmRlckJvdHRvbSgpLCBjb2xFbHQtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihjb2xFbHQt
PnN0eWxlKCksIGJvdHRvbSksIEJDT0wpKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0
cygpKSByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgaWYgKGNvbEVsdC0+cGFyZW50KCktPmlz
VGFibGVDb2woKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJl
c3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJv
cmRlckJvdHRvbSgpLCBCQ09MR1JPVVApKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21w
YXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnBhcmVudCgp
LT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgY29sRWx0LT5wYXJlbnQoKS0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKGNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCksIGJvdHRvbSksIEJDT0xHUk9VUCkp
OwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICAvLyAoOSkgVGhlIHRhYmxlJ3MgYm90dG9tIGJvcmRlci4KLSAgICAgICAgcmVzdWx0
ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmdGFibGUoKS0+
c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIEJUQUJMRSkpOworICAgICAgICBSZW5kZXJUYWJsZSog
ZW5jbG9zaW5nVGFibGUgPSB0YWJsZSgpOworICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVy
cyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZlbmNsb3NpbmdUYWJsZS0+c3R5bGUoKS0+
Ym9yZGVyQm90dG9tKCksIGVuY2xvc2luZ1RhYmxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5j
bG9zaW5nVGFibGUtPnN0eWxlKCksIGJvdHRvbSksIEJUQUJMRSkpOwogICAgICAgICBpZiAoIXJl
c3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtODA4
LDcgKzgyMiw3IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWludENvbGxhcHNlZEJvcmQKICAg
ICBmb3IgKENvbGxhcHNlZEJvcmRlciogYm9yZGVyID0gYm9yZGVycy5uZXh0Qm9yZGVyKCk7IGJv
cmRlcjsgYm9yZGVyID0gYm9yZGVycy5uZXh0Qm9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJvcmRl
ci0+Ym9yZGVyVmFsdWUgPT0gKnRhYmxlKCktPmN1cnJlbnRCb3JkZXJTdHlsZSgpKQogICAgICAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyLT54MSwgYm9y
ZGVyLT55MSwgYm9yZGVyLT54MiwgYm9yZGVyLT55MiwgYm9yZGVyLT5zaWRlLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItPmJvcmRlclZhbHVlLmNvbG9yKCksIHN0eWxl
KCktPmNvbG9yKCksIGJvcmRlci0+c3R5bGUsIDAsIDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvcmRlci0+Ym9yZGVyVmFsdWUuY29sb3IoKSwgYm9yZGVyLT5zdHlsZSwgMCwg
MCk7CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db2xsYXBzZWRC
b3JkZXJWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbGxh
cHNlZEJvcmRlclZhbHVlLmgJKHJldmlzaW9uIDU2ODU5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYs
OSBAQCBzdHJ1Y3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUgewogICAgIHsKICAgICB9CiAKLSAgICBD
b2xsYXBzZWRCb3JkZXJWYWx1ZShjb25zdCBCb3JkZXJWYWx1ZSogYiwgRUJvcmRlclByZWNlZGVu
Y2UgcCkKKyAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb25zdCBCb3JkZXJWYWx1ZSogYiwgQ29s
b3IgYywgRUJvcmRlclByZWNlZGVuY2UgcCkKICAgICAgICAgOiBib3JkZXIoYikKKyAgICAgICAg
LCBib3JkZXJDb2xvcihjKQogICAgICAgICAsIHByZWNlZGVuY2UocCkKICAgICB7CiAgICAgfQpA
QCAtNDUsNyArNDYsNyBAQCBzdHJ1Y3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUgewogICAgIGludCB3
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlciAmJiBib3JkZXItPm5vblplcm8oKSA/IGJvcmRl
ci0+d2lkdGggOiAwOyB9CiAgICAgRUJvcmRlclN0eWxlIHN0eWxlKCkgY29uc3QgeyByZXR1cm4g
Ym9yZGVyID8gYm9yZGVyLT5zdHlsZSgpIDogQkhJRERFTjsgfQogICAgIGJvb2wgZXhpc3RzKCkg
Y29uc3QgeyByZXR1cm4gYm9yZGVyOyB9Ci0gICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVy
biBib3JkZXIgPyBib3JkZXItPmNvbG9yIDogQ29sb3IoKTsgfQorICAgIENvbG9yIGNvbG9yKCkg
Y29uc3QgeyByZXR1cm4gYm9yZGVyQ29sb3I7IH0KICAgICBib29sIGlzVHJhbnNwYXJlbnQoKSBj
b25zdCB7IHJldHVybiBib3JkZXIgPyBib3JkZXItPmlzVHJhbnNwYXJlbnQoKSA6IHRydWU7IH0K
ICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUmIG8p
IGNvbnN0CkBAIC01NCwxMCArNTUsMTEgQEAgc3RydWN0IENvbGxhcHNlZEJvcmRlclZhbHVlIHsK
ICAgICAgICAgICAgIHJldHVybiAhby5ib3JkZXI7CiAgICAgICAgIGlmICghby5ib3JkZXIpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiAqYm9yZGVyID09ICpvLmJv
cmRlciAmJiBwcmVjZWRlbmNlID09IG8ucHJlY2VkZW5jZTsKKyAgICAgICAgcmV0dXJuICpib3Jk
ZXIgPT0gKm8uYm9yZGVyICYmIGJvcmRlckNvbG9yID09IG8uYm9yZGVyQ29sb3IgJiYgcHJlY2Vk
ZW5jZSA9PSBvLnByZWNlZGVuY2U7CiAgICAgfQogICAgIAogICAgIGNvbnN0IEJvcmRlclZhbHVl
KiBib3JkZXI7CisgICAgQ29sb3IgYm9yZGVyQ29sb3I7CiAgICAgRUJvcmRlclByZWNlZGVuY2Ug
cHJlY2VkZW5jZTsgICAgCiB9OwogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCShyZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsOCArNTgsNyBAQCBQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y2xvCiB9CiAKIFJlbmRlclN0eWxlOjpSZW5kZXJT
dHlsZSgpCi0gICAgOiBtX3BzZXVkb1N0YXRlKFBzZXVkb1Vua25vd24pCi0gICAgLCBtX2FmZmVj
dGVkQnlBdHRyaWJ1dGVTZWxlY3RvcnMoZmFsc2UpCisgICAgOiBtX2FmZmVjdGVkQnlBdHRyaWJ1
dGVTZWxlY3RvcnMoZmFsc2UpCiAgICAgLCBtX3VuaXF1ZShmYWxzZSkKICAgICAsIG1fYWZmZWN0
ZWRCeUVtcHR5KGZhbHNlKQogICAgICwgbV9lbXB0eVN0YXRlKGZhbHNlKQpAQCAtODYsOCArODUs
NyBAQCBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoKQogfQogCiBSZW5kZXJTdHlsZTo6UmVuZGVy
U3R5bGUoYm9vbCkKLSAgICA6IG1fcHNldWRvU3RhdGUoUHNldWRvVW5rbm93bikKLSAgICAsIG1f
YWZmZWN0ZWRCeUF0dHJpYnV0ZVNlbGVjdG9ycyhmYWxzZSkKKyAgICA6IG1fYWZmZWN0ZWRCeUF0
dHJpYnV0ZVNlbGVjdG9ycyhmYWxzZSkKICAgICAsIG1fdW5pcXVlKGZhbHNlKQogICAgICwgbV9h
ZmZlY3RlZEJ5RW1wdHkoZmFsc2UpCiAgICAgLCBtX2VtcHR5U3RhdGUoZmFsc2UpCkBAIC0xMjEs
NyArMTE5LDYgQEAgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGJvb2wpCiAKIFJlbmRlclN0eWxl
OjpSZW5kZXJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgbykKICAgICA6IFJlZkNvdW50ZWQ8UmVu
ZGVyU3R5bGU+KCkKLSAgICAsIG1fcHNldWRvU3RhdGUoby5tX3BzZXVkb1N0YXRlKQogICAgICwg
bV9hZmZlY3RlZEJ5QXR0cmlidXRlU2VsZWN0b3JzKGZhbHNlKQogICAgICwgbV91bmlxdWUoZmFs
c2UpCiAgICAgLCBtX2FmZmVjdGVkQnlFbXB0eShmYWxzZSkKQEAgLTUwMiw2ICs0OTksNyBAQCBT
dHlsZURpZmZlcmVuY2UgUmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgCiAgICAgICAgIGluaGVyaXRl
ZF9mbGFncy5fdmlzaWJpbGl0eSAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5
IHx8CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyAhPSBvdGhlci0+
aW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zIHx8CiAgICAgICAgIGluaGVyaXRlZF9m
bGFncy5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgIT0gb3RoZXItPmluaGVyaXRlZF9mbGFn
cy5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgfHwKKyAgICAgICAgaW5oZXJpdGVkX2ZsYWdz
Ll9pbnNpZGVMaW5rICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxpbmsgfHwKICAg
ICAgICAgc3Vycm91bmQtPmJvcmRlciAhPSBvdGhlci0+c3Vycm91bmQtPmJvcmRlciB8fAogICAg
ICAgICAqYmFja2dyb3VuZC5nZXQoKSAhPSAqb3RoZXItPmJhY2tncm91bmQuZ2V0KCkgfHwKICAg
ICAgICAgdmlzdWFsLT50ZXh0RGVjb3JhdGlvbiAhPSBvdGhlci0+dmlzdWFsLT50ZXh0RGVjb3Jh
dGlvbiB8fApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lv
biA1Njg1OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExNiw3ICsxMTYsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBUaGUgZm9s
bG93aW5nIGJpdGZpZWxkIGlzIDMyLWJpdHMgbG9uZywgd2hpY2ggb3B0aW1pemVzIHBhZGRpbmcg
d2l0aCB0aGUKICAgICAvLyBpbnQgcmVmQ291bnQgaW4gdGhlIGJhc2UgY2xhc3MuIEJld2FyZSB3
aGVuIGFkZGluZyBtb3JlIGJpdHMuCi0gICAgdW5zaWduZWQgbV9wc2V1ZG9TdGF0ZSA6IDM7IC8v
IFBzZXVkb1N0YXRlCiAgICAgYm9vbCBtX2FmZmVjdGVkQnlBdHRyaWJ1dGVTZWxlY3RvcnMgOiAx
OwogICAgIGJvb2wgbV91bmlxdWUgOiAxOwogCkBAIC0xMzMsNyArMTMyLDcgQEAgcHJvdGVjdGVk
OgogICAgIGJvb2wgbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA6
IDE7CiAgICAgYm9vbCBtX2ZpcnN0Q2hpbGRTdGF0ZSA6IDE7CiAgICAgYm9vbCBtX2xhc3RDaGls
ZFN0YXRlIDogMTsKLSAgICB1bnNpZ25lZCBtX2NoaWxkSW5kZXggOiAxODsgLy8gUGxlbnR5IG9m
IGJpdHMgdG8gY2FjaGUgYW4gaW5kZXguCisgICAgdW5zaWduZWQgbV9jaGlsZEluZGV4IDogMjE7
IC8vIFBsZW50eSBvZiBiaXRzIHRvIGNhY2hlIGFuIGluZGV4LgogCiAgICAgLy8gbm9uLWluaGVy
aXRlZCBhdHRyaWJ1dGVzCiAgICAgRGF0YVJlZjxTdHlsZUJveERhdGE+IGJveDsKQEAgLTE3Niw3
ICsxNzUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICAgICAgICAgKF92aXN1YWxseU9yZGVy
ZWQgPT0gb3RoZXIuX3Zpc3VhbGx5T3JkZXJlZCkgJiYKICAgICAgICAgICAgICAgICAgICAoX2h0
bWxIYWNrcyA9PSBvdGhlci5faHRtbEhhY2tzKSAmJgogICAgICAgICAgICAgICAgICAgIChfZm9y
Y2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgPT0gb3RoZXIuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3do
aXRlKSAmJgotICAgICAgICAgICAgICAgICAgIChfcG9pbnRlckV2ZW50cyA9PSBvdGhlci5fcG9p
bnRlckV2ZW50cyk7CisgICAgICAgICAgICAgICAgICAgKF9wb2ludGVyRXZlbnRzID09IG90aGVy
Ll9wb2ludGVyRXZlbnRzKSAmJgorICAgICAgICAgICAgICAgICAgIChfaW5zaWRlTGluayA9PSBv
dGhlci5faW5zaWRlTGluayk7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsgfQpAQCAtMjAxLDYgKzIwMSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgYm9vbCBfaHRt
bEhhY2tzIDogMTsKICAgICAgICAgYm9vbCBfZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgOiAx
OwogICAgICAgICB1bnNpZ25lZCBfcG9pbnRlckV2ZW50cyA6IDQ7IC8vIEVQb2ludGVyRXZlbnRz
CisgICAgICAgIEVJbnNpZGVMaW5rIF9pbnNpZGVMaW5rIDogMjsgLy8gV2hldGhlciBvciBub3Qg
d2UgYXJlIGNvbnRhaW5lZCBpbnNpZGUgYSBsaW5rLgogICAgICAgICAvLyA0MSBiaXRzCiAgICAg
fSBpbmhlcml0ZWRfZmxhZ3M7CiAKQEAgLTIyNSw3ICsyMjYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgICAgICAgICAgJiYgX2FmZmVjdGVkQnlBY3RpdmUgPT0gb3RoZXIuX2FmZmVjdGVkQnlBY3Rp
dmUKICAgICAgICAgICAgICAgICAmJiBfYWZmZWN0ZWRCeURyYWcgPT0gb3RoZXIuX2FmZmVjdGVk
QnlEcmFnCiAgICAgICAgICAgICAgICAgJiYgX3BzZXVkb0JpdHMgPT0gb3RoZXIuX3BzZXVkb0Jp
dHMKLSAgICAgICAgICAgICAgICAmJiBfdW5pY29kZUJpZGkgPT0gb3RoZXIuX3VuaWNvZGVCaWRp
OworICAgICAgICAgICAgICAgICYmIF91bmljb2RlQmlkaSA9PSBvdGhlci5fdW5pY29kZUJpZGkK
KyAgICAgICAgICAgICAgICAmJiBfaXNMaW5rID09IG90aGVyLl9pc0xpbms7CiAgICAgICAgIH0K
IAogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVy
KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQpAQCAtMjQ0LDEyICsyNDYsMTMg
QEAgcHJvdGVjdGVkOgogICAgICAgICB1bnNpZ25lZCBfcGFnZV9icmVha19hZnRlciA6IDI7IC8v
IEVQYWdlQnJlYWsKICAgICAgICAgdW5zaWduZWQgX3BhZ2VfYnJlYWtfaW5zaWRlIDogMjsgLy8g
RVBhZ2VCcmVhawogCi0gICAgICAgIHVuc2lnbmVkIF9zdHlsZVR5cGUgOiA1OyAvLyBQc2V1ZG9J
ZAorICAgICAgICB1bnNpZ25lZCBfc3R5bGVUeXBlIDogNjsgLy8gUHNldWRvSWQKICAgICAgICAg
Ym9vbCBfYWZmZWN0ZWRCeUhvdmVyIDogMTsKICAgICAgICAgYm9vbCBfYWZmZWN0ZWRCeUFjdGl2
ZSA6IDE7CiAgICAgICAgIGJvb2wgX2FmZmVjdGVkQnlEcmFnIDogMTsKICAgICAgICAgdW5zaWdu
ZWQgX3BzZXVkb0JpdHMgOiA3OwogICAgICAgICB1bnNpZ25lZCBfdW5pY29kZUJpZGkgOiAyOyAv
LyBFVW5pY29kZUJpZGkKKyAgICAgICAgYm9vbCBfaXNMaW5rIDogMTsKICAgICAgICAgLy8gNTAg
Yml0cwogICAgIH0gbm9uaW5oZXJpdGVkX2ZsYWdzOwogCkBAIC0yNzUsNiArMjc4LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24gPSBpbml0aWFs
Qm94RGlyZWN0aW9uKCk7CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5fZm9yY2VfYmFja2dyb3Vu
ZHNfdG9fd2hpdGUgPSBmYWxzZTsKICAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9wb2ludGVyRXZl
bnRzID0gaW5pdGlhbFBvaW50ZXJFdmVudHMoKTsKKyAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9p
bnNpZGVMaW5rID0gTm90SW5zaWRlTGluazsKIAogICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3Mu
X2VmZmVjdGl2ZURpc3BsYXkgPSBub25pbmhlcml0ZWRfZmxhZ3MuX29yaWdpbmFsRGlzcGxheSA9
IGluaXRpYWxEaXNwbGF5KCk7CiAgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fb3ZlcmZsb3dY
ID0gaW5pdGlhbE92ZXJmbG93WCgpOwpAQCAtMjkzLDYgKzI5Nyw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9hZmZlY3RlZEJ5RHJhZyA9IGZhbHNlOwogICAgICAg
ICBub25pbmhlcml0ZWRfZmxhZ3MuX3BzZXVkb0JpdHMgPSAwOwogICAgICAgICBub25pbmhlcml0
ZWRfZmxhZ3MuX3VuaWNvZGVCaWRpID0gaW5pdGlhbFVuaWNvZGVCaWRpKCk7CisgICAgICAgIG5v
bmluaGVyaXRlZF9mbGFncy5faXNMaW5rID0gZmFsc2U7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CkBA
IC01ODcsNiArNTkyLDkgQEAgcHVibGljOgogCiAgICAgQ3Vyc29yTGlzdCogY3Vyc29ycygpIGNv
bnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Y3Vyc29yRGF0YS5nZXQoKTsgfQogCisgICAgRUluc2lk
ZUxpbmsgaW5zaWRlTGluaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVJbnNpZGVMaW5r
Pihpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxpbmspOyB9CisgICAgYm9vbCBpc0xpbmsoKSBjb25z
dCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuX2lzTGluazsgfQorCiAgICAgc2hvcnQgd2lk
b3dzKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT53aWRvd3M7IH0KICAgICBzaG9ydCBvcnBo
YW5zKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5vcnBoYW5zOyB9CiAgICAgRVBhZ2VCcmVh
ayBwYWdlQnJlYWtJbnNpZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFUGFnZUJyZWFr
Pihub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfaW5zaWRlKTsgfQpAQCAtOTEyLDYgKzky
MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1cnNvckxpc3QoUGFzc1JlZlB0cjxDdXJzb3JM
aXN0Pik7CiAgICAgdm9pZCBjbGVhckN1cnNvckxpc3QoKTsKIAorICAgIHZvaWQgc2V0SW5zaWRl
TGluayhFSW5zaWRlTGluayBpbnNpZGVMaW5rKSB7IGluaGVyaXRlZF9mbGFncy5faW5zaWRlTGlu
ayA9IGluc2lkZUxpbms7IH0KKyAgICB2b2lkIHNldElzTGluayhib29sIGIpIHsgbm9uaW5oZXJp
dGVkX2ZsYWdzLl9pc0xpbmsgPSBiOyB9CisKICAgICBib29sIGZvcmNlQmFja2dyb3VuZHNUb1do
aXRlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190
b193aGl0ZTsgfQogICAgIHZvaWQgc2V0Rm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoYm9vbCBiPXRy
dWUpIHsgaW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSA9IGI7IH0K
IApAQCAtMTA2OSwxMCArMTA4MCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgIG9yaWdpbmFs
RGlzcGxheSgpID09IElOTElORV9CT1ggfHwgb3JpZ2luYWxEaXNwbGF5KCkgPT0gSU5MSU5FX1RB
QkxFOwogICAgIH0KIAotICAgIC8vIFRvIG9idGFpbiBhdCBhbnkgdGltZSB0aGUgcHNldWRvIHN0
YXRlIGZvciBhIGdpdmVuIGxpbmsuCi0gICAgUHNldWRvU3RhdGUgcHNldWRvU3RhdGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxQc2V1ZG9TdGF0ZT4obV9wc2V1ZG9TdGF0ZSk7IH0KLSAg
ICB2b2lkIHNldFBzZXVkb1N0YXRlKFBzZXVkb1N0YXRlIHMpIHsgbV9wc2V1ZG9TdGF0ZSA9IHM7
IH0KLQogICAgIC8vIFRvIHRlbGwgaWYgdGhpcyBzdHlsZSBtYXRjaGVkIGF0dHJpYnV0ZSBzZWxl
Y3RvcnMuIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBzaGFyZS4KICAgICBib29sIGFmZmVj
dGVkQnlBdHRyaWJ1dGVTZWxlY3RvcnMoKSBjb25zdCB7IHJldHVybiBtX2FmZmVjdGVkQnlBdHRy
aWJ1dGVTZWxlY3RvcnM7IH0KICAgICB2b2lkIHNldEFmZmVjdGVkQnlBdHRyaWJ1dGVTZWxlY3Rv
cnMoKSB7IG1fYWZmZWN0ZWRCeUF0dHJpYnV0ZVNlbGVjdG9ycyA9IHRydWU7IH0KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkocmV2aXNp
b24gNTY4NTkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIGVudW0gUHNldWRvSWQgewogICAg
IE1FRElBX0NPTlRST0xTX1NFRUtfQkFDS19CVVRUT04sIE1FRElBX0NPTlRST0xTX1NFRUtfRk9S
V0FSRF9CVVRUT04sIE1FRElBX0NPTlRST0xTX0ZVTExTQ1JFRU5fQlVUVE9OLCBNRURJQV9DT05U
Uk9MU19SRVdJTkRfQlVUVE9OLCAKICAgICBNRURJQV9DT05UUk9MU19SRVRVUk5fVE9fUkVBTFRJ
TUVfQlVUVE9OLCBNRURJQV9DT05UUk9MU19UT0dHTEVfQ0xPU0VEX0NBUFRJT05TX0JVVFRPTiwK
ICAgICBNRURJQV9DT05UUk9MU19TVEFUVVNfRElTUExBWSwgU0NST0xMQkFSX1RIVU1CLCBTQ1JP
TExCQVJfQlVUVE9OLCBTQ1JPTExCQVJfVFJBQ0ssIFNDUk9MTEJBUl9UUkFDS19QSUVDRSwgU0NS
T0xMQkFSX0NPUk5FUiwgUkVTSVpFUiwKLSAgICBJTlBVVF9MSVNUX0JVVFRPTiwgSU5ORVJfU1BJ
Tl9CVVRUT04sIE9VVEVSX1NQSU5fQlVUVE9OLAorICAgIElOUFVUX0xJU1RfQlVUVE9OLCBJTk5F
Ul9TUElOX0JVVFRPTiwgT1VURVJfU1BJTl9CVVRUT04sIFZJU0lURURfTElOSywKIAogICAgIEFG
VEVSX0xBU1RfSU5URVJOQUxfUFNFVURPSUQsCiAgICAgRklSU1RfUFVCTElDX1BTRVVET0lEID0g
RklSU1RfTElORSwKQEAgLTg4LDggKzg4LDYgQEAgZW51bSBFQm9yZGVyU3R5bGUgeyBCTk9ORSwg
QkhJRERFTiwgSU5TRQogCiBlbnVtIEVCb3JkZXJQcmVjZWRlbmNlIHsgQk9GRiwgQlRBQkxFLCBC
Q09MR1JPVVAsIEJDT0wsIEJST1dHUk9VUCwgQlJPVywgQkNFTEwgfTsKIAotZW51bSBQc2V1ZG9T
dGF0ZSB7IFBzZXVkb1Vua25vd24sIFBzZXVkb05vbmUsIFBzZXVkb0FueUxpbmssIFBzZXVkb0xp
bmssIFBzZXVkb1Zpc2l0ZWR9OwotCiBlbnVtIEVQb3NpdGlvbiB7CiAgICAgU3RhdGljUG9zaXRp
b24sIFJlbGF0aXZlUG9zaXRpb24sIEFic29sdXRlUG9zaXRpb24sIEZpeGVkUG9zaXRpb24KIH07
CkBAIC05OCw3ICs5Niw2IEBAIGVudW0gRUZsb2F0IHsKICAgICBGTk9ORSA9IDAsIEZMRUZULCBG
UklHSFQKIH07CiAKLQogZW51bSBFTWFyZ2luQ29sbGFwc2UgeyBNQ09MTEFQU0UsIE1TRVBBUkFU
RSwgTURJU0NBUkQgfTsKIAogLy8gQm94IGF0dHJpYnV0ZXMuIE5vdCBpbmhlcml0ZWQuCkBAIC0z
ODksNiArMzg2LDEwIEBAIGVudW0gRURpc3BsYXkgewogICAgIE5PTkUKIH07CiAKK2VudW0gRUlu
c2lkZUxpbmsgeworICAgIE5vdEluc2lkZUxpbmssIEluc2lkZVVudmlzaXRlZExpbmssIEluc2lk
ZVZpc2l0ZWRMaW5rCit9OworICAgIAogZW51bSBFUG9pbnRlckV2ZW50cyB7CiAgICAgUEVfTk9O
RSwgUEVfQVVUTywgUEVfU1RST0tFLCBQRV9GSUxMLCBQRV9QQUlOVEVELCBQRV9WSVNJQkxFLAog
ICAgIFBFX1ZJU0lCTEVfU1RST0tFLCBQRV9WSVNJQkxFX0ZJTEwsIFBFX1ZJU0lCTEVfUEFJTlRF
RCwgUEVfQUxMCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNlcnZlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXIuY3BwCShy
ZXZpc2lvbiA1Njg1OSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1BhaW50U2VydmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBTVkdQYWludFNlcnZlciogU1ZHUGFp
bnRTZXJ2ZXI6OmZpbGxQYWluCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgU1ZHUGFpbnQqIGZp
bGwgPSBzdHlsZS0+c3ZnU3R5bGUoKS0+ZmlsbFBhaW50KCk7Ci0KKyAgICAgICAgCiAgICAgU1ZH
UGFpbnRTZXJ2ZXIqIGZpbGxQYWludFNlcnZlciA9IDA7CiAgICAgU1ZHUGFpbnQ6OlNWR1BhaW50
VHlwZSBwYWludFR5cGUgPSBmaWxsLT5wYWludFR5cGUoKTsKICAgICBpZiAocGFpbnRUeXBlID09
IFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1VSSSB8fApAQCAtOTgsMTAgKzk4LDI5IEBAIFNWR1Bh
aW50U2VydmVyKiBTVkdQYWludFNlcnZlcjo6ZmlsbFBhaW4KICAgICBpZiAocGFpbnRUeXBlICE9
IFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1VSSSAmJiAhZmlsbFBhaW50U2VydmVyKSB7CiAgICAg
ICAgIGZpbGxQYWludFNlcnZlciA9IHNoYXJlZFNvbGlkUGFpbnRTZXJ2ZXIoKTsKICAgICAgICAg
U1ZHUGFpbnRTZXJ2ZXJTb2xpZCogZmlsbFBhaW50U2VydmVyU29saWQgPSBzdGF0aWNfY2FzdDxT
VkdQYWludFNlcnZlclNvbGlkKj4oZmlsbFBhaW50U2VydmVyKTsKKyAgICAgICAgCisgICAgICAg
IENvbG9yIGZpbGxDb2xvcjsKICAgICAgICAgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludDo6U1ZH
X1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IpCi0gICAgICAgICAgICBmaWxsUGFpbnRTZXJ2ZXJTb2xp
ZC0+c2V0Q29sb3Ioc3R5bGUtPmNvbG9yKCkpOworICAgICAgICAgICAgZmlsbENvbG9yID0gc3R5
bGUtPmNvbG9yKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZpbGxQYWludFNlcnZlclNv
bGlkLT5zZXRDb2xvcihmaWxsLT5jb2xvcigpKTsKKyAgICAgICAgICAgIGZpbGxDb2xvciA9IGZp
bGwtPmNvbG9yKCk7CisKKyAgICAgICAgaWYgKHN0eWxlLT5pbnNpZGVMaW5rKCkgPT0gSW5zaWRl
VmlzaXRlZExpbmspIHsKKyAgICAgICAgICAgIFJlbmRlclN0eWxlKiB2aXNpdGVkU3R5bGUgPSBz
dHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUoVklTSVRFRF9MSU5LKTsKKyAgICAgICAgICAgIFNW
R1BhaW50KiB2aXNpdGVkRmlsbCA9IHZpc2l0ZWRTdHlsZS0+c3ZnU3R5bGUoKS0+ZmlsbFBhaW50
KCk7CisgICAgICAgICAgICBDb2xvciB2aXNpdGVkRmlsbENvbG9yOworICAgICAgICAgICAgaWYg
KHZpc2l0ZWRGaWxsLT5wYWludFR5cGUoKSAhPSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9VUkkp
IHsKKyAgICAgICAgICAgICAgICBpZiAodmlzaXRlZEZpbGwtPnBhaW50VHlwZSgpID09IFNWR1Bh
aW50OjpTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUikKKyAgICAgICAgICAgICAgICAgICAgdmlz
aXRlZEZpbGxDb2xvciA9IHZpc2l0ZWRTdHlsZS0+Y29sb3IoKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRGaWxsQ29sb3IgPSB2aXNpdGVkRmlsbC0+
Y29sb3IoKTsKKyAgICAgICAgICAgICAgICBpZiAodmlzaXRlZEZpbGxDb2xvci5pc1ZhbGlkKCkp
CisgICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvciA9IENvbG9yKHZpc2l0ZWRGaWxsQ29sb3Iu
cmVkKCksIHZpc2l0ZWRGaWxsQ29sb3IuZ3JlZW4oKSwgdmlzaXRlZEZpbGxDb2xvci5ibHVlKCks
IGZpbGxDb2xvci5hbHBoYSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGZpbGxQYWludFNlcnZlclNvbGlkLT5zZXRDb2xvcihmaWxsQ29sb3IpOworICAgICAgICAKICAg
ICAgICAgLy8gRklYTUU6IElkZWFsbHkgaW52YWxpZCBjb2xvcnMgd291bGQgbmV2ZXIgZ2V0IHNl
dCBvbiB0aGUgUmVuZGVyU3R5bGUgYW5kIHRoaXMgY291bGQgdHVybiBpbnRvIGFuIEFTU0VSVAog
ICAgICAgICBpZiAoIWZpbGxQYWludFNlcnZlclNvbGlkLT5jb2xvcigpLmlzVmFsaWQoKSkKICAg
ICAgICAgICAgIGZpbGxQYWludFNlcnZlciA9IDA7CkBAIC0xNDEsMTAgKzE2MCwyOSBAQCBTVkdQ
YWludFNlcnZlciogU1ZHUGFpbnRTZXJ2ZXI6OnN0cm9rZVBhCiAgICAgaWYgKHBhaW50VHlwZSAh
PSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9VUkkgJiYgIXN0cm9rZVBhaW50U2VydmVyKSB7CiAg
ICAgICAgIHN0cm9rZVBhaW50U2VydmVyID0gc2hhcmVkU29saWRQYWludFNlcnZlcigpOwogICAg
ICAgICBTVkdQYWludFNlcnZlclNvbGlkKiBzdHJva2VQYWludFNlcnZlclNvbGlkID0gc3RhdGlj
X2Nhc3Q8U1ZHUGFpbnRTZXJ2ZXJTb2xpZCo+KHN0cm9rZVBhaW50U2VydmVyKTsKKyAgICAgICAg
CisgICAgICAgIENvbG9yIHN0cm9rZUNvbG9yOwogICAgICAgICBpZiAocGFpbnRUeXBlID09IFNW
R1BhaW50OjpTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUikKLSAgICAgICAgICAgIHN0cm9rZVBh
aW50U2VydmVyU29saWQtPnNldENvbG9yKHN0eWxlLT5jb2xvcigpKTsKKyAgICAgICAgICAgIHN0
cm9rZUNvbG9yID0gc3R5bGUtPmNvbG9yKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0
cm9rZVBhaW50U2VydmVyU29saWQtPnNldENvbG9yKHN0cm9rZS0+Y29sb3IoKSk7CisgICAgICAg
ICAgICBzdHJva2VDb2xvciA9IHN0cm9rZS0+Y29sb3IoKTsKKworICAgICAgICBpZiAoc3R5bGUt
Pmluc2lkZUxpbmsoKSA9PSBJbnNpZGVWaXNpdGVkTGluaykgeworICAgICAgICAgICAgUmVuZGVy
U3R5bGUqIHZpc2l0ZWRTdHlsZSA9IHN0eWxlLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShWSVNJVEVE
X0xJTkspOworICAgICAgICAgICAgU1ZHUGFpbnQqIHZpc2l0ZWRTdHJva2UgPSB2aXNpdGVkU3R5
bGUtPnN2Z1N0eWxlKCktPnN0cm9rZVBhaW50KCk7CisgICAgICAgICAgICBDb2xvciB2aXNpdGVk
U3Ryb2tlQ29sb3I7CisgICAgICAgICAgICBpZiAodmlzaXRlZFN0cm9rZS0+cGFpbnRUeXBlKCkg
IT0gU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfVVJJKSB7CisgICAgICAgICAgICAgICAgaWYgKHZp
c2l0ZWRTdHJva2UtPnBhaW50VHlwZSgpID09IFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX0NVUlJF
TlRDT0xPUikKKyAgICAgICAgICAgICAgICAgICAgdmlzaXRlZFN0cm9rZUNvbG9yID0gdmlzaXRl
ZFN0eWxlLT5jb2xvcigpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgdmlzaXRlZFN0cm9rZUNvbG9yID0gdmlzaXRlZFN0cm9rZS0+Y29sb3IoKTsKKyAgICAgICAg
ICAgICAgICBpZiAodmlzaXRlZFN0cm9rZUNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgc3Ryb2tlQ29sb3IgPSBDb2xvcih2aXNpdGVkU3Ryb2tlQ29sb3IucmVkKCksIHZpc2l0
ZWRTdHJva2VDb2xvci5ncmVlbigpLCB2aXNpdGVkU3Ryb2tlQ29sb3IuYmx1ZSgpLCBzdHJva2VD
b2xvci5hbHBoYSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN0cm9r
ZVBhaW50U2VydmVyU29saWQtPnNldENvbG9yKHN0cm9rZUNvbG9yKTsKKwogICAgICAgICAvLyBG
SVhNRTogSWRlYWxseSBpbnZhbGlkIGNvbG9ycyB3b3VsZCBuZXZlciBnZXQgc2V0IG9uIHRoZSBS
ZW5kZXJTdHlsZSBhbmQgdGhpcyBjb3VsZCB0dXJuIGludG8gYW4gQVNTRVJUCiAgICAgICAgIGlm
ICghc3Ryb2tlUGFpbnRTZXJ2ZXJTb2xpZC0+Y29sb3IoKS5pc1ZhbGlkKCkpCiAgICAgICAgICAg
ICBzdHJva2VQYWludFNlcnZlciA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52738</attachid>
            <date>2010-04-07 08:39:50 -0700</date>
            <delta_ts>2010-04-07 13:26:30 -0700</delta_ts>
            <desc>Patch that fixes link hashing for &lt;a href=&quot;&quot;&gt;</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>2590</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzIwOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDQtMDcgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMwMCwgZG9uJ3QgbGVhayBoaXN0
b3J5IGluZm8gdmlhIENTUyA6dmlzaXRlZC4KKworICAgICAgICBUaGlzIGlzIHByZWxpbWluYXJ5
IHdvcmsgb24gdGhhdCBidWcuICBUbyBtYWtlIGl0IGVhc2llciB0byB3cml0ZSB0ZXN0cywgbWFr
ZSBzdXJlIHRoYXQgdGhlCisgICAgICAgIDxhIGhyZWY9IiI+IGNhc2UgcHJvcGVybHkgcmVzb2x2
ZXMgdG8gdGhlIGRvY3VtZW50J3MgYmFzZSBVUkwuICBUaGlzIGFsbG93cyBhIHBhZ2UgdG8gdXNl
CisgICAgICAgIGEgc2VsZi1yZWZlcmVuY2luZyBsaW5rIHRvIGVhc2lseSB0ZXN0IDp2aXNpdGVk
IG9uIGl0c2VsZi4KKworICAgICAgICAqIHBsYXRmb3JtL0xpbmtIYXNoLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZpc2l0ZWRVUkwpOgorCiAyMDEwLTA0LTA3ICBEYXdpdCBBbGVtYXllaHUgIDxh
ZGF3aXRAa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vTGlua0hhc2guY3BwCShyZXZpc2lvbiA1NzE2NSkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vTGlua0hhc2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsMTAgKzE1NCwxMSBAQCBMaW5r
SGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVyCiAKIHZvaWQgdmlzaXRlZFVSTChj
b25zdCBLVVJMJiBiYXNlLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCwgVmVjdG9y
PFVDaGFyLCA1MTI+JiBidWZmZXIpCiB7CisgICAgaWYgKGF0dHJpYnV0ZVVSTC5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBhdHRyaWJ1
dGVVUkwuY2hhcmFjdGVycygpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGF0dHJpYnV0ZVVSTC5s
ZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhp
cyBpcyBhIHBvb3IgbWFuJ3MgY29tcGxldGVVUkwuIEZhc3RlciB3aXRoIGxlc3MgbWVtb3J5IGFs
bG9jYXRpb24uCiAgICAgLy8gRklYTUU6IEl0J3MgbWlzc2luZyBhIGxvdCBvZiB3aGF0IGNvbXBs
ZXRlVVJMIGRvZXMgYW5kIGEgbG90IG9mIHdoYXQgS1VSTCBkb2VzLgpAQCAtMTg2LDE2ICsxODcs
MjAgQEAgdm9pZCB2aXNpdGVkVVJMKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgc3dpdGNoIChjaGFyYWN0ZXJzWzBdKSB7Ci0gICAgICAgIGNh
c2UgJy8nOgotICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChiYXNlLnN0cmluZygpLmNoYXJhY3Rl
cnMoKSwgYmFzZS5wYXRoU3RhcnQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSAnIyc6Ci0gICAgICAgICAgICBidWZmZXIuYXBwZW5kKGJhc2Uuc3RyaW5nKCkuY2hhcmFjdGVy
cygpLCBiYXNlLnBhdGhFbmQoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoYmFzZS5zdHJpbmcoKS5jaGFyYWN0ZXJzKCks
IGJhc2UucGF0aEFmdGVyTGFzdFNsYXNoKCkpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgaWYg
KCFsZW5ndGgpCisgICAgICAgIGJ1ZmZlci5hcHBlbmQoYmFzZS5zdHJpbmcoKS5jaGFyYWN0ZXJz
KCksIGJhc2Uuc3RyaW5nKCkubGVuZ3RoKCkpOworICAgIGVsc2UgeworICAgICAgICBzd2l0Y2gg
KGNoYXJhY3RlcnNbMF0pIHsKKyAgICAgICAgICAgIGNhc2UgJy8nOgorICAgICAgICAgICAgICAg
IGJ1ZmZlci5hcHBlbmQoYmFzZS5zdHJpbmcoKS5jaGFyYWN0ZXJzKCksIGJhc2UucGF0aFN0YXJ0
KCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnIyc6CisgICAg
ICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChiYXNlLnN0cmluZygpLmNoYXJhY3RlcnMoKSwgYmFz
ZS5wYXRoRW5kKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGJhc2Uuc3RyaW5nKCkuY2hhcmFjdGVy
cygpLCBiYXNlLnBhdGhBZnRlckxhc3RTbGFzaCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQogICAgIH0KICAgICBidWZmZXIuYXBwZW5kKGNoYXJhY3RlcnMsIGxlbmd0aCk7
CiAgICAgY2xlYW5QYXRoKGJ1ZmZlcik7Cg==
</data>
<flag name="review"
          id="36300"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52778</attachid>
            <date>2010-04-07 13:26:30 -0700</date>
            <delta_ts>2010-04-08 14:06:46 -0700</delta_ts>
            <desc>Patch including ChangeLogs and tests</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>147560</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzIyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTM5IEBACisyMDEwLTA0LTA3ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAsIGRvbid0IGxlYWsgaGlz
dG9yeSBpbmZvIHZpYSBDU1MgOnZpc2l0ZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1l
bnRzIHRoZSBwb2xpY3kgZGVzY3JpYmVkIGJ5IERhdmlkIEJhcm9uIGhlcmU6CisgICAgICAgIAor
ICAgICAgICBodHRwOi8vZGJhcm9uLm9yZy9tb3ppbGxhL3Zpc2l0ZWQtcHJpdmFjeQorICAgICAg
ICAKKyAgICAgICAgQWRkZWQgbmV3IHRlc3RzIGluIGZhc3QvaGlzdG9yeS4KKworICAgICAgICAq
IFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgIEV4cG9zZSBmdW5jdGlvbnMgbmVlZGVkIGZvciB0
aGUgV2ViS2l0IFNQSSB1c2VkIGJ5IGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aXNWaXNpdGVkKToKKyAgICAgICAgTWFrZSBzdXJlIGFjY2Vzc2liaWxp
dHkgb2JqZWN0cyBzdGlsbCByZXR1cm4gdmlzaXRlZCBpbmZvcm1hdGlvbi4KKyAgICAgICAgCisg
ICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OkNTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246
OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVkU3R5bGUpOgorICAgICAgICBB
ZGQgYSBib29sZWFuIHRvIGNvbXB1dGVkIHN0eWxlIGRlY2xhcmF0aW9ucyB0aGF0IC0gaWYgc2V0
IC0gY2F1c2VzIHRoZSBjb21wdXRlZCBzdHlsZQorICAgICAgICB0byBzdGlsbCByZXR1cm4gOnZp
c2l0ZWQgaW5mb3JtYXRpb24uICBGb3Igbm9ybWFsIFdlYiBwYWdlcywgdGhpcyB3aWxsIGJlIGZh
bHNlLiAgSXQgaXMgc2V0CisgICAgICAgIHRvIHRydWUgZm9yIHRoZSBXZWIgSW5zcGVjdG9yIGFu
ZCBieSB0aGUgV2ViS2l0IFNQSSB1c2VkIGJ5IHRoZSBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjppbml0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjpTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNr
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hhcmVT
dHlsZVdpdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0
eWxlRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjprZXlm
cmFtZVN0eWxlc0ZvckFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVj
dG9yOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVT
ZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
dHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eVRvU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Z2V0Q29sb3JGcm9tUHJpbWl0aXZlVmFs
dWUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIFJld29yayB0
aGUgc3R5bGUgc2VsZWN0b3IgdG8gcmVzb2x2ZSB0d28gc3R5bGVzIGluc3RlYWQgb2Ygb25lLiAg
VGhlIGZpcnN0IGZvcmNlcyB0aGUgbGluayB0bworICAgICAgICBiZSB1bnZpc2l0ZWQsIGFuZCB0
aGUgc2Vjb25kIGZvcmNlcyB0aGUgbGluayB0byBiZSB2aXNpdGVkLiAgVGhlIHJlYWwgc3RhdGUg
b2YgdGhlIGxpbmsgaXMgCisgICAgICAgIGNhY2hlZCBvbiB0aGUgcHJpbmNpcGFsICh1bnZpc2l0
ZWQpIHN0eWxlLiAgVGhlIHZpc2l0ZWQgc3R5bGUgaGFuZ3Mgb2ZmIHRoZSBwcmluY2lwYWwgc3R5
bGUKKyAgICAgICAgYXMgYSBwc2V1ZG8gc3R5bGUgKFZJU0lURURfTElOSykuCisKKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpwc2V1ZG9TdHls
ZUNhY2hlSXNJbnZhbGlkKToKKyAgICAgICAgTWFrZSBzdXJlIHRvIGRlYWwgd2l0aCB0aGUgVklT
SVRFRF9MSU5LIHBzZXVkbyB0byBrbm93IHdoZW4gb25seSA6dmlzaXRlZCBzdHlsZSBpbmZvIGNo
YW5nZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldFN0eWxlcyk6CisgICAgICAgIExl
dCB0aGUgV2ViIEluc3BlY3RvciBzZWUgOnZpc2l0ZWQgY29tcHV0ZWQgc3R5bGVzIGJ5IGRlZmF1
bHQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL0xpbmtIYXNoLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnZpc2l0ZWRVUkwpOgorICAgICAgICBGaXggYW4gaXNzdWUgd2hlcmUgPGEgaHJl
Zj0iIj4gaXMgbm90IGhhc2hlZCBwcm9wZXJseSB0byB0aGUgZG9jdW1lbnQncyBiYXNlIFVSSSwg
c28gaXQgd2Fzbid0CisgICAgICAgIGNvcnJlY3RseSByZXBvcnRlZCBhcyA6dmlzaXRlZC4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklubGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRmxvd0JveDo6cGFpbnRUZXh0RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBh
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OnBhaW50T2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm9yZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRmllbGRzZXQ6OnBhaW50Qm9yZGVyTWludXNMZWdlbmQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbWFnZTo6cGFpbnRGb2N1c1JpbmdzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmRyYXdMaW5lRm9yQm94U2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmRyYXdBcmNGb3JCb3hTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6cGFpbnRPdXRsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmRlY29yYXRpb25Db2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdldFRleHREZWNvcmF0aW9uQ29sb3Jz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUGF0aDo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJSZXBsYWNlZDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
VkdDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpw
YWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRMZWZ0Qm9yZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkUmlnaHRCb3JkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRUb3BCb3JkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRCb3R0b21Cb3JkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWludENvbGxhcHNlZEJvcmRlcik6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbGxhcHNlZEJvcmRlclZhbHVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDb2xsYXBzZWRCb3JkZXJWYWx1ZTo6Q29sbGFwc2VkQm9yZGVyVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29sbGFwc2VkQm9yZGVyVmFsdWU6OmNvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbGxhcHNlZEJvcmRlclZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAgUGF0Y2gg
cGFpbnRpbmcgY29kZSB0byBmZXRjaCB2aXNpdGVkRGVwZW5kZW50Q29sb3JzIGZyb20gdGhlIFJl
bmRlclN0eWxlLiAgUHJvcGVydGllcyB0aGF0CisgICAgICAgIGFyZSBob25vcmVkIGluY2x1ZGUg
YmFja2dyb3VuZC1jb2xvciwgY29sb3IsIGJvcmRlciBjb2xvcnMsIG91dGxpbmUgY29sb3IsIGNv
bHVtbiBydWxlcywKKyAgICAgICAgYW5kIGZpbGwgYW5kIHN0cm9rZSAoYm90aCBTVkcgYW5kIG91
ciBjdXN0b20gdmVyc2lvbnMpLgorICAgIAorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmRpZmYpOgorICAgICAgICAoV2ViQ29y
ZTo6Ym9yZGVyU3R5bGVGb3JDb2xvclByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9y
SW5jbHVkaW5nRmFsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnZpc2l0
ZWREZXBlbmRlbnRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Lmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxh
Z3M6Ok5vbkluaGVyaXRlZEZsYWdzOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
aGVyaXRlZEZsYWdzOjpzZXRCaXREZWZhdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0
ZWRGbGFnczo6aW5zaWRlTGluayk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6
aXNMaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRJbnNpZGVMaW5r
KToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRJc0xpbmspOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICBDaGFu
Z2UgaG93IGxpbmsgaW5mb3JtYXRpb24gaXMgc3RvcmVkLiAgVGhlIG5vbmluaGVyaXRlZCBmbGFn
cyBub3cgaGF2ZSBhIGJpdCBzZXQgZm9yIGlmIHlvdSdyZSBhIGxpbmsKKyAgICAgICAgb3Igbm90
LiAgVGhlIGluaGVyaXRlZCBmbGFncyBub3cgY2FjaGUgd2hldGhlciB5b3UncmUgaW5zaWRlIGEg
dmlzaXRlZCBvciB1bnZpc2l0ZWQgbGluayAob3Igbm8gbGluayBhdAorICAgICAgICBhbGwpLgor
CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdQYWludFNl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludFNlcnZlcjo6ZmlsbFBhaW50U2Vy
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50U2VydmVyOjpzdHJva2VQYWludFNlcnZl
cik6CisgICAgICAgIFBhdGNoIFNWRyBmaWxsL3N0cm9rZSBwYWludGluZyB0byBob25vciA6dmlz
aXRlZC4KKwogMjAxMC0wNC0wNyAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUuYmFzZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCShyZXZp
c2lvbiA1NzE2NSkKKysrIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkod29ya2luZyBjb3B5KQpA
QCAtMzY3LDYgKzM2Nyw3IEBAIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OXRyYW5zbGF0
ZUUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0QzFFUDlDR0NvbnRleHQKIF9fWk43V2Vi
Q29yZTE1R3JhcGhpY3NDb250ZXh0RDFFdgogX19aTjdXZWJDb3JlMTVKU0RPTVdpbmRvd0Jhc2Ux
OGNvbW1vbkpTR2xvYmFsRGF0YUV2CitfX1pON1dlYkNvcmU5SlNFbGVtZW50NnNfaW5mb0UKIF9f
Wk43V2ViQ29yZTE1U2Nyb2xsQWxpZ25tZW50MTdhbGlnbkNlbnRlckFsd2F5c0UKIF9fWk43V2Vi
Q29yZTE1U2Nyb2xsQWxpZ25tZW50MTlhbGlnblRvRWRnZUlmTmVlZGVkRQogX19aTjdXZWJDb3Jl
MTVTdHJpbmdUcnVuY2F0b3IxM3JpZ2h0VHJ1bmNhdGVFUktOU182U3RyaW5nRWZSS05TXzRGb250
RWIKQEAgLTQ3Nyw2ICs0NzgsNyBAQCBfX1pON1dlYkNvcmUyNkNTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uCiBfX1pON1dlYkNvcmUyNk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyNmNyZWF0ZUVQ
TlNfNUZyYW1lRVBOU18zMk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50RQogX19aTjdX
ZWJDb3JlMjZ1c2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvckV2CiBfX1pON1dlYkNvcmUyN2FwcGxp
Y2F0aW9uSXNBZG9iZUluc3RhbGxlckV2CitfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFYgogX19aTjdXZWJDb3Jl
Mjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4ZW1wdEVpYgogX19aTjdXZWJDb3JlMjlzZXRVc2Vz
VGVzdE1vZGVGb2N1c1JpbmdDb2xvckViCiBfX1pON1dlYkNvcmUzMUNyb3NzT3JpZ2luUHJlZmxp
Z2h0UmVzdWx0Q2FjaGU1ZW1wdHlFdgpAQCAtMTAyNSw2ICsxMDI3LDcgQEAgX19aVFZON1dlYkNv
cmUxMlBsdWdpbldpZGdldEUKIF9fWlRWTjdXZWJDb3JlMTdGaWxlQ2hvb3NlckNsaWVudEUKIF9f
WlRWTjdXZWJDb3JlMTdGcmFtZUxvYWRlckNsaWVudEUKIF9fWlRWTjdXZWJDb3JlMjVIaXN0b3J5
UHJvcGVydHlMaXN0V3JpdGVyRQorX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQ
TlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTlDU1NTdHlsZURlY2xhcmF0aW9uRQogX2ZpbGVu
YW1lQnlGaXhpbmdJbGxlZ2FsQ2hhcmFjdGVycwogX2hhc0Nhc2VJbnNlbnNpdGl2ZVN1YnN0cmlu
ZwogX2hhc0Nhc2VJbnNlbnNpdGl2ZVN1ZmZpeApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDU3MTY1KQorKysgV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw3ICsyMjEs
NyBAQAogCQkxNDExNUI3MzA5Rjg0Q0Q2MDBDQTRGQzEgLyogSlNOb2RlRmlsdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDExNUI3MTA5Rjg0Q0Q2
MDBDQTRGQzEgLyogSlNOb2RlRmlsdGVyLmggKi87IH07CiAJCTE0MTlEMkM1MENFQTZGNjEwMEZG
NTA3QSAvKiBUcmVlU2hhcmVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDE5RDJDNDBDRUE2RjYxMDBGRjUwN0EgLyogVHJlZVNoYXJlZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MjAxMUI2MEEw
MDMxMzMwMDgzMDNGOSAvKiBKU0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQyMDExQjQwQTAwMzEzMzAwODMwM0Y5
IC8qIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgKi87IH07Ci0JCTE0MjAxMUI3MEEwMDMxMzMw
MDgzMDNGOSAvKiBKU0NTU1N0eWxlRGVjbGFyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MjAxMUI1MEEwMDMxMzMwMDgzMDNGOSAvKiBKU0NT
U1N0eWxlRGVjbGFyYXRpb24uaCAqLzsgfTsKKwkJMTQyMDExQjcwQTAwMzEzMzAwODMwM0Y5IC8q
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQyMDExQjUwQTAwMzEzMzAwODMwM0Y5IC8qIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTE0MzJFODQ3MEM1MTQ5MzgwMEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MzJFODQ2MEM1MTQ5MzgwMEIx
NTAwRiAvKiBHQ0NvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxNDMyRTg0OTBDNTE0OTNGMDBCMTUwMEYgLyogR0NDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MzJF
ODQ4MEM1MTQ5M0YwMEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuY3BwICovOyB9OwogCQkxNDQ5RTI0
QzEwN0Q0QTg0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NDlFMjRBMTA3RDRBODQwMEI1NzkzRiAvKiBK
U0NhbGxiYWNrRGF0YS5oICovOyB9OwpAQCAtMTIzOCw3ICsxMjM4LDcgQEAKIAkJNjVERjMxRjcw
OUQxQ0M2MDAwMEJFMzI1IC8qIEpTRE9NSW1wbGVtZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVERjMxRTMwOUQxQ0M2MDAwMEJFMzI1
IC8qIEpTRE9NSW1wbGVtZW50YXRpb24uY3BwICovOyB9OwogCQk2NURGMzFGODA5RDFDQzYwMDAw
QkUzMjUgLyogSlNET01JbXBsZW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjVERjMxRTQwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRE9NSW1w
bGVtZW50YXRpb24uaCAqLzsgfTsKIAkJNjVERjMxRjkwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NURGMzFFNTA5RDFDQzYwMDAwQkUzMjUgLyogSlNFbGVtZW50LmNwcCAqLzsgfTsKLQkJNjVERjMx
RkEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVERjMxRTYwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRWxl
bWVudC5oICovOyB9OworCQk2NURGMzFGQTA5RDFDQzYwMDAwQkUzMjUgLyogSlNFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NURGMzFFNjA5
RDFDQzYwMDAwQkUzMjUgLyogSlNFbGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjVERjMxRkIwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTXV0
YXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NURGMzFFNzA5RDFDQzYwMDAwQkUzMjUgLyogSlNNdXRhdGlvbkV2ZW50LmNwcCAqLzsg
fTsKIAkJNjVERjMxRkMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTXV0YXRpb25FdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVERjMxRTgwOUQxQ0M2
MDAwMEJFMzI1IC8qIEpTTXV0YXRpb25FdmVudC5oICovOyB9OwogCQk2NURGMzFGRDA5RDFDQzYw
MDAwQkUzMjUgLyogSlNOb3RhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NURGMzFFOTA5RDFDQzYwMDAwQkUzMjUgLyogSlNOb3RhdGlvbi5j
cHAgKi87IH07CkBAIC00NDYxLDYgKzQ0NjEsNyBAQAogCQlCQzkwNEI3NzBEMTA5OThGMDA2ODBE
MzIgLyogQ2xhc3NOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM5MDRCNzMwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCAq
LzsgfTsKIAkJQkM5MjZGODAwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzky
NkY3RTBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmNwcCAqLzsgfTsK
IAkJQkM5MjZGODEwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MjZGN0YwQzA1
NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oICovOyB9OworCQlCQzk0MzlD
MzExNkNGNDk0MDA0OEM3NTAgLyogSlNOb2RlQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk0MzlDMjExNkNGNDk0MDA0OEM3NTAgLyogSlNO
b2RlQ3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQkM5NDYyRDgxMDdBN0I0QzAwODU3MTkzIC8qIEJlZm9yZUxvYWRFdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5NDYyRDcxMDdBN0I0
QzAwODU3MTkzIC8qIEJlZm9yZUxvYWRFdmVudC5oICovOyB9OwogCQlCQzk0NjM0NjEwN0E5MzRC
MDA4NTcxOTMgLyogSlNCZWZvcmVMb2FkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5NDYzNDUxMDdBOTM0QjAwODU3MTkzIC8qIEpTQmVm
b3JlTG9hZEV2ZW50LmNwcCAqLzsgfTsKIAkJQkM5NDYzNDgxMDdBOTM2NjAwODU3MTkzIC8qIEpT
QmVmb3JlTG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzk0NjM0NzEwN0E5MzY2MDA4NTcxOTMgLyogSlNCZWZvcmVMb2FkRXZlbnQuaCAq
LzsgfTsKQEAgLTQ2MTQsNyArNDYxNSw3IEBACiAJCUJDRTk5RUMzMERDQTYyNDEwMDE4MjY4MyAv
KiBKU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U5OUVDMTBEQ0E2MjQxMDAxODI2ODMgLyogSlNYU0xU
UHJvY2Vzc29yQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQlCQ0U5OUVDNDBEQ0E2MjQxMDAxODI2
ODMgLyogSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTk5RUMyMERDQTYyNDEwMDE4MjY4MyAvKiBKU1hT
TFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5oICovOyB9OwogCQlCQ0VBNDc4RjA5N0NBQUM4MDA5NEM5
RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0NzdDMDk3Q0FBQzgwMDk0QzlFNCAvKiBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwICovOyB9OwotCQlCQ0VBNDc5MDA5N0NBQUM4
MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDc3RDA5N0NBQUM4MDA5NEM5RTQg
LyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggKi87IH07CisJCUJDRUE0NzkwMDk3Q0FB
QzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0NzdEMDk3Q0FBQzgwMDk0QzlF
NCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg1MjA5N0Q5MzAyMDA5NEM5RTQgLyog
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRUE0ODEzMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJCbG9ja0xp
bmVMYXlvdXQuY3BwICovOyB9OwogCQlCQ0VBNDg1NDA5N0Q5MzAyMDA5NEM5RTQgLyogYnJlYWtf
bGluZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNFQTQ4MTUwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmNwcCAqLzsgfTsKIAkJQkNF
QTQ4NTUwOTdEOTMwMjAwOTRDOUU0IC8qIGJyZWFrX2xpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VBNDgxNjA5N0Q5MzAyMDA5NEM5RTQgLyog
YnJlYWtfbGluZXMuaCAqLzsgfTsKQEAgLTk4MDUsNiArOTgwNiw3IEBACiAJCUJDOTA0QjczMEQx
MDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkM5MjZGN0UwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRnJhbWVTZXRFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5MjZGN0YwQzA1NTI0NzAwODI3
NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNIVE1MRnJhbWVTZXRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDOTQzOUMyMTE2Q0Y0OTQwMDQ4Qzc1MCAvKiBKU05vZGVDdXN0b20uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb2RlQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDOTQ2MkNCMTA3QTdBMzkwMDg1NzE5MyAvKiBCZWZvcmVMb2FkRXZl
bnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEJlZm9yZUxvYWRFdmVudC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOTQ2MkQ3MTA3QTdCNEMwMDg1NzE5MyAvKiBCZWZv
cmVMb2FkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmVmb3JlTG9h
ZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOTQ2MzQ1MTA3QTkzNEIw
MDg1NzE5MyAvKiBKU0JlZm9yZUxvYWRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0JlZm9yZUxvYWRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNTAwOCw2ICsxNTAxMCw3IEBACiAJCQkJQkNEOUMyNUYwQzE3QUE2NzAwNUM5
MEEyIC8qIEpTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCAqLywKIAkJCQlBOUM2RTY0ODBENzQ2NUQ4
MDA2NDQyRTkgLyogSlNOYXZpZ2F0b3JDdXN0b20uY3BwICovLAogCQkJCUJDRDlDMjYwMEMxN0FB
NjcwMDVDOTBBMiAvKiBKU05vZGVDdXN0b20uY3BwICovLAorCQkJCUJDOTQzOUMyMTE2Q0Y0OTQw
MDQ4Qzc1MCAvKiBKU05vZGVDdXN0b20uaCAqLywKIAkJCQlCQ0I3NzM2MDBDMTc4NTNEMDAxMzJC
QTQgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCAqLywKIAkJCQkxQTc1MEREMzBBOTBFNzI5MDAw
RkYyMTUgLyogSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwICovLAogCQkJCUJDRDlDMjYxMEMxN0FB
NjcwMDVDOTBBMiAvKiBKU05vZGVMaXN0Q3VzdG9tLmNwcCAqLywKQEAgLTE4ODE0LDYgKzE4ODE3
LDcgQEAKIAkJCQk4OTUyNTM1MzExNjQxQjM0MDBDQUJGMDAgLyogRmlsZVRocmVhZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTdDMDc4NTAxMTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRyZWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTI1NDJGNERCMTE2NkMyNUEwMEU4OUE4NiAvKiBVc2VyR2VzdHVy
ZUluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM5NDM5QzMxMTZDRjQ5NDAwNDhDNzUw
IC8qIEpTTm9kZUN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA1
NzE2NSkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwNiw3ICsxODA2LDggQEAgS1VSTCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojp1cmwoKSBjbwogCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmlzVmlzaXRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCkt
PnBzZXVkb1N0YXRlKCkgPT0gUHNldWRvVmlzaXRlZDsKKyAgICAvLyBGSVhNRTogSXMgaXQgYSBw
cml2YWN5IHZpb2xhdGlvbiB0byBleHBvc2UgdmlzaXRlZCBpbmZvcm1hdGlvbiB0byBhY2Nlc3Np
YmlsaXR5IEFQSXM/CisgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCktPmlzTGluaygpICYm
IG1fcmVuZGVyZXItPnN0eWxlKCktPmluc2lkZUxpbmsoKSA9PSBJbnNpZGVWaXNpdGVkTGluazsK
IH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNFeHBhbmRlZCgpIGNv
bnN0CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJ
KHJldmlzaW9uIDU3MTY1KQorKysgV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAwLDggKzUwMCw5IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBnZXRUaW1pbmdGdW4KICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9
CiAKLUNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uKFBhc3NSZWZQdHI8Tm9kZT4gbikKK0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Q1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gbiwgYm9vbCBhbGxvd1Zp
c2l0ZWRTdHlsZSkKICAgICA6IG1fbm9kZShuKQorICAgICwgbV9hbGxvd1Zpc2l0ZWRTdHlsZShh
bGxvd1Zpc2l0ZWRTdHlsZSkKIHsKIH0KIApAQCAtNjc1LDcgKzY3Niw3IEBAIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6Ci0gICAgICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9yKHN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKS5y
Z2IoKSk7CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9y
KG1fYWxsb3dWaXNpdGVkU3R5bGU/IHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IpLnJnYigpIDogc3R5bGUtPmJhY2tncm91bmRDb2xvcigpLnJn
YigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZToKICAgICAgICAg
ICAgIGlmIChzdHlsZS0+YmFja2dyb3VuZEltYWdlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHN0eWxlLT5iYWNrZ3JvdW5kSW1hZ2UoKS0+Y3NzVmFsdWUoKTsKQEAgLTczMiwxMyArNzMzLDEz
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZzoKICAgICAgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT52ZXJ0aWNhbEJvcmRlclNwYWNp
bmcoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJUb3BDb2xvcjoKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlk
Q29sb3Ioc3R5bGUuZ2V0KCksIHN0eWxlLT5ib3JkZXJUb3BDb2xvcigpKTsKKyAgICAgICAgICAg
IHJldHVybiBtX2FsbG93VmlzaXRlZFN0eWxlID8gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNv
bG9yKHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xv
cikucmdiKCkpIDogY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLmdldCgpLCBzdHlsZS0+
Ym9yZGVyVG9wQ29sb3IoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENv
bG9yOgotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZS5n
ZXQoKSwgc3R5bGUtPmJvcmRlclJpZ2h0Q29sb3IoKSk7CisgICAgICAgICAgICByZXR1cm4gbV9h
bGxvd1Zpc2l0ZWRTdHlsZSA/IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihzdHlsZS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcikucmdiKCkp
IDogY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLmdldCgpLCBzdHlsZS0+Ym9yZGVyUmln
aHRDb2xvcigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yOgot
ICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZS5nZXQoKSwg
c3R5bGUtPmJvcmRlckJvdHRvbUNvbG9yKCkpOworICAgICAgICAgICAgcmV0dXJuIG1fYWxsb3dW
aXNpdGVkU3R5bGUgPyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3Ioc3R5bGUtPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yKS5yZ2IoKSkgOiBj
dXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUuZ2V0KCksIHN0eWxlLT5ib3JkZXJCb3R0b21D
b2xvcigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcjoKLSAgICAg
ICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUuZ2V0KCksIHN0eWxl
LT5ib3JkZXJMZWZ0Q29sb3IoKSk7CisgICAgICAgICAgICByZXR1cm4gbV9hbGxvd1Zpc2l0ZWRT
dHlsZSA/IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVDb2xvcihzdHlsZS0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKS5yZ2IoKSkgOiBjdXJyZW50Q29s
b3JPclZhbGlkQ29sb3Ioc3R5bGUuZ2V0KCksIHN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZToKICAgICAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5ib3JkZXJUb3BTdHlsZSgpKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGU6CkBAIC03ODgsNyArNzg5LDcg
QEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Q2xlYXI6CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShzdHlsZS0+Y2xlYXIoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoK
LSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3Ioc3R5bGUt
PmNvbG9yKCkucmdiKCkpOworICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVDb2xvcihtX2FsbG93VmlzaXRlZFN0eWxlID8gc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUNvbG9yKS5yZ2IoKSA6IHN0eWxlLT5jb2xvcigpLnJnYigpKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50OgogICAgICAgICAgICAgaWYg
KHN0eWxlLT5oYXNBdXRvQ29sdW1uQ291bnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVBdXRvKTsKQEAgLTc5OCw3
ICs3OTksNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENT
U1ZhbHVlTm9ybWFsKTsKICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHN0eWxlLT5jb2x1bW5HYXAoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yOgotICAgICAgICAg
ICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZS5nZXQoKSwgc3R5bGUtPmNv
bHVtblJ1bGVDb2xvcigpKTsKKyAgICAgICAgICAgIHJldHVybiBtX2FsbG93VmlzaXRlZFN0eWxl
ID8gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9yKHN0eWxlLT52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpLnJnYigpKSA6IGN1cnJlbnRDb2xvck9yVmFs
aWRDb2xvcihzdHlsZS5nZXQoKSwgc3R5bGUtPmNvbHVtblJ1bGVDb2xvcigpKTsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZToKICAgICAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5jb2x1bW5SdWxlU3R5bGUoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGg6CkBAIC0xMDA4LDcg
KzEwMDksNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOgogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPm9ycGhhbnMoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yOgotICAgICAg
ICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZS5nZXQoKSwgc3R5bGUt
Pm91dGxpbmVDb2xvcigpKTsKKyAgICAgICAgICAgIHJldHVybiBtX2FsbG93VmlzaXRlZFN0eWxl
ID8gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUNvbG9yKHN0eWxlLT52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpLnJnYigpKSA6IGN1cnJlbnRDb2xvck9yVmFs
aWRDb2xvcihzdHlsZS5nZXQoKSwgc3R5bGUtPm91dGxpbmVDb2xvcigpKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZToKICAgICAgICAgICAgIGlmIChzdHlsZS0+b3V0bGlu
ZVN0eWxlSXNBdXRvKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQXV0byk7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gNTcxNjUpCisrKyBXZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyAr
MzMsNyBAQCBlbnVtIEVVcGRhdGVMYXlvdXQgeyBEb05vdFVwZGF0ZUxheW91dCA9CiAKIGNsYXNz
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBDU1NTdHlsZURlY2xhcmF0aW9u
IHsKIHB1YmxpYzoKLSAgICBmcmllbmQgUGFzc1JlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24+IGNvbXB1dGVkU3R5bGUoUGFzc1JlZlB0cjxOb2RlPik7CisgICAgZnJpZW5kIFBhc3NS
ZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb21wdXRlZFN0eWxlKFBhc3NSZWZQ
dHI8Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSBmYWxzZSk7CiAgICAgdmlydHVhbCB+
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBjc3NU
ZXh0KCkgY29uc3Q7CkBAIC02MCw3ICs2MCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJv
b2wgY3NzUHJvcGVydHlNYXRjaGVzKGNvbnN0IENTU1Byb3BlcnR5KikgY29uc3Q7CiAKIHByaXZh
dGU6Ci0gICAgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKFBhc3NSZWZQdHI8Tm9kZT4pOwor
ICAgIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbihQYXNzUmVmUHRyPE5vZGU+LCBib29sIGFs
bG93VmlzaXRlZFN0eWxlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRDc3NUZXh0KGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAtNzAsMTEgKzcwLDEyIEBAIHByaXZhdGU6CiAg
ICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0YSos
IGludCkgY29uc3Q7CiAKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOworICAgIGJvb2wgbV9hbGxv
d1Zpc2l0ZWRTdHlsZTsKIH07CiAKLWlubGluZSBQYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHlsZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUpCitpbmxpbmUg
UGFzc1JlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGUoUGFz
c1JlZlB0cjxOb2RlPiBub2RlLCBib29sIGFsbG93VmlzaXRlZFN0eWxlKQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKG5vZGUpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbihub2RlLCBhbGxv
d1Zpc2l0ZWRTdHlsZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNTcxNjUpCisrKyBXZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgyLDggKzM4Miw2IEBAIHN0YXRp
YyBDU1NTdHlsZVNoZWV0KiBzaW1wbGVEZWZhdWx0U3R5bGUKIAogUmVuZGVyU3R5bGUqIENTU1N0
eWxlU2VsZWN0b3I6OnNfc3R5bGVOb3RZZXRBdmFpbGFibGU7CiAKLXN0YXRpYyBQc2V1ZG9TdGF0
ZSBwc2V1ZG9TdGF0ZTsKLQogc3RhdGljIHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKTsKIHN0
YXRpYyB2b2lkIGxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKTsKIC8vIEZJWE1FOiBJdCB3b3VsZCBi
ZSBuaWNlIHRvIHVzZSBzb21lIG1lY2hhbmlzbSB0aGF0IGd1YXJhbnRlZXMgdGhpcyBpcyBpbiBz
eW5jIHdpdGggdGhlIHJlYWwgVUEgc3R5bGVzaGVldC4KQEAgLTgwMiwxNCArODAwLDEwIEBAIHZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6c29ydE1hdGNoZWRSdWxlcygKICAgICAgICAgbV9tYXRjaGVk
UnVsZXNbaV0gPSBydWxlc01lcmdlQnVmZmVyW2kgLSBzdGFydF07CiB9CiAKLXZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6aW5pdEVsZW1lbnRBbmRQc2V1ZG9TdGF0ZShFbGVtZW50KiBlKQordm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjppbml0RWxlbWVudChFbGVtZW50KiBlKQogewogICAgIG1fZWxlbWVu
dCA9IGU7Ci0gICAgaWYgKG1fZWxlbWVudCAmJiBtX2VsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgp
KQotICAgICAgICBtX3N0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4o
bV9lbGVtZW50KTsKLSAgICBlbHNlCi0gICAgICAgIG1fc3R5bGVkRWxlbWVudCA9IDA7Ci0gICAg
cHNldWRvU3RhdGUgPSBQc2V1ZG9Vbmtub3duOworICAgIG1fc3R5bGVkRWxlbWVudCA9IG1fZWxl
bWVudCAmJiBtX2VsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpID8gc3RhdGljX2Nhc3Q8U3R5bGVk
RWxlbWVudCo+KG1fZWxlbWVudCkgOiAwOwogfQogCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Omlu
aXRGb3JTdHlsZVJlc29sdmUoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBQ
c2V1ZG9JZCBwc2V1ZG9JRCkKQEAgLTg3Niw1NCArODcwLDU0IEBAIENTU1N0eWxlU2VsZWN0b3I6
OlNlbGVjdG9yQ2hlY2tlcjo6U2VsZWMKICAgICAsIG1fY29sbGVjdFJ1bGVzT25seShmYWxzZSkK
ICAgICAsIG1fcHNldWRvU3R5bGUoTk9QU0VVRE8pCiAgICAgLCBtX2RvY3VtZW50SXNIVE1MKGRv
Y3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKQorICAgICwgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFz
cyhmYWxzZSkKIHsKIH0KIAotUHNldWRvU3RhdGUgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JD
aGVja2VyOjpjaGVja1BzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgY2hlY2tWaXNp
dGVkKSBjb25zdAorRUluc2lkZUxpbmsgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2Vy
OjpkZXRlcm1pbmVMaW5rU3RhdGUoRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKKyAgICBpZiAo
IWVsZW1lbnQtPmlzTGluaygpKQorICAgICAgICByZXR1cm4gTm90SW5zaWRlTGluazsKKyAgICAK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcqIGF0dHIgPSBsaW5rQXR0cmlidXRlKGVsZW1lbnQpOwog
ICAgIGlmICghYXR0ciB8fCBhdHRyLT5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFBzZXVkb05v
bmU7Ci0KLSAgICBpZiAoIWNoZWNrVmlzaXRlZCkKLSAgICAgICAgcmV0dXJuIFBzZXVkb0FueUxp
bms7CisgICAgICAgIHJldHVybiBOb3RJbnNpZGVMaW5rOwogCiAjaWYgUExBVEZPUk0oUVQpCiAg
ICAgVmVjdG9yPFVDaGFyLCA1MTI+IHVybDsKICAgICB2aXNpdGVkVVJMKG1fZG9jdW1lbnQtPmJh
c2VVUkwoKSwgKmF0dHIsIHVybCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBQc2V1ZG9MaW5rOworICAgICAgICByZXR1cm4gSW5zaWRlVW52aXNpdGVkTGluazsKIAog
ICAgIC8vIElmIHRoZSBRdDQuNCBpbnRlcmZhY2UgZm9yIHRoZSBoaXN0b3J5IGlzIHVzZWQsIHdl
IHdpbGwgaGF2ZSB0byBmYWxsYmFjawogICAgIC8vIHRvIHRoZSBvbGQgZ2xvYmFsIGhpc3Rvcnku
CiAgICAgUVdlYkhpc3RvcnlJbnRlcmZhY2UqIGlmYWNlID0gUVdlYkhpc3RvcnlJbnRlcmZhY2U6
OmRlZmF1bHRJbnRlcmZhY2UoKTsKICAgICBpZiAoaWZhY2UpCi0gICAgICAgIHJldHVybiBpZmFj
ZS0+aGlzdG9yeUNvbnRhaW5zKFFTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxRQ2hhcio+KHVybC5k
YXRhKCkpLCB1cmwuc2l6ZSgpKSkgPyBQc2V1ZG9WaXNpdGVkIDogUHNldWRvTGluazsKKyAgICAg
ICAgcmV0dXJuIGlmYWNlLT5oaXN0b3J5Q29udGFpbnMoUVN0cmluZyhyZWludGVycHJldF9jYXN0
PFFDaGFyKj4odXJsLmRhdGEoKSksIHVybC5zaXplKCkpKSA/IEluc2lkZVZpc2l0ZWRMaW5rIDog
SW5zaWRlVW52aXNpdGVkTGluazsKIAogICAgIExpbmtIYXNoIGhhc2ggPSB2aXNpdGVkTGlua0hh
c2godXJsLmRhdGEoKSwgdXJsLnNpemUoKSk7CiAgICAgaWYgKCFoYXNoKQotICAgICAgICByZXR1
cm4gUHNldWRvTGluazsKKyAgICAgICAgcmV0dXJuIEluc2lkZVVudmlzaXRlZExpbms7CiAjZWxz
ZQogICAgIExpbmtIYXNoIGhhc2ggPSB2aXNpdGVkTGlua0hhc2gobV9kb2N1bWVudC0+YmFzZVVS
TCgpLCAqYXR0cik7CiAgICAgaWYgKCFoYXNoKQotICAgICAgICByZXR1cm4gUHNldWRvTGluazsK
KyAgICAgICAgcmV0dXJuIEluc2lkZVVudmlzaXRlZExpbms7CiAjZW5kaWYKIAogICAgIEZyYW1l
KiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAg
cmV0dXJuIFBzZXVkb0xpbms7CisgICAgICAgIHJldHVybiBJbnNpZGVVbnZpc2l0ZWRMaW5rOwog
CiAgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQotICAgICAg
ICByZXR1cm4gUHNldWRvTGluazsKKyAgICAgICAgcmV0dXJuIEluc2lkZVVudmlzaXRlZExpbms7
CiAKICAgICBtX2xpbmtzQ2hlY2tlZEZvclZpc2l0ZWRTdGF0ZS5hZGQoaGFzaCk7Ci0gICAgcmV0
dXJuIHBhZ2UtPmdyb3VwKCkuaXNMaW5rVmlzaXRlZChoYXNoKSA/IFBzZXVkb1Zpc2l0ZWQgOiBQ
c2V1ZG9MaW5rOworICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmlzTGlua1Zpc2l0ZWQoaGFzaCkg
PyBJbnNpZGVWaXNpdGVkTGluayA6IEluc2lkZVVudmlzaXRlZExpbms7CiB9CiAKIGJvb2wgQ1NT
U3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9y
KiBzZWwsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgcHNldWRvU3RhdGUgPSBQc2V1
ZG9Vbmtub3duOwogICAgIFBzZXVkb0lkIGR5bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKIAogICAg
IHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZWxlbWVudCwgMCwgZHluYW1pY1BzZXVkbywgdHJ1
ZSwgZmFsc2UpID09IFNlbGVjdG9yTWF0Y2hlczsKQEAgLTEwMzEsMjAgKzEwMjUsMTEgQEAgYm9v
bCBDU1NTdHlsZVNlbGVjdG9yOjpjYW5TaGFyZVN0eWxlV2l0aAogICAgICAgICAgICAgICAgIGlm
IChzLT5oYXNNYXBwZWRBdHRyaWJ1dGVzKCkpCiAgICAgICAgICAgICAgICAgICAgIG1hcHBlZEF0
dHJzTWF0Y2ggPSBzLT5tYXBwZWRBdHRyaWJ1dGVzKCktPm1hcHNFcXVpdmFsZW50KG1fc3R5bGVk
RWxlbWVudC0+bWFwcGVkQXR0cmlidXRlcygpKTsKICAgICAgICAgICAgICAgICBpZiAobWFwcGVk
QXR0cnNNYXRjaCkgewotICAgICAgICAgICAgICAgICAgICBib29sIGxpbmtzTWF0Y2ggPSB0cnVl
OwotCiAgICAgICAgICAgICAgICAgICAgIGlmIChzLT5pc0xpbmsoKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayB0byBzZWUgaWYgdGhlIHZpc2l0ZWQgc3Rh
dGUgbWF0Y2hlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQ
c2V1ZG9Vbmtub3duKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29sb3Im
IGxpbmtDb2xvciA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+bGlua0NvbG9yKCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRDb2xvciA9IG1fZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+dmlzaXRlZExpbmtDb2xvcigpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBzZXVkb1N0YXRlID0gbV9jaGVja2VyLmNoZWNrUHNldWRvU3RhdGUobV9lbGVtZW50
LCBzdHlsZS0+cHNldWRvU3RhdGUoKSAhPSBQc2V1ZG9BbnlMaW5rIHx8IGxpbmtDb2xvciAhPSB2
aXNpdGVkQ29sb3IpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgbGlua3NNYXRjaCA9IChwc2V1ZG9TdGF0ZSA9PSBzdHlsZS0+cHNldWRvU3RhdGUo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9jaGVja2VyLmRldGVybWluZUxpbmtT
dGF0ZShtX2VsZW1lbnQpICE9IHN0eWxlLT5pbnNpZGVMaW5rKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAobGlua3NNYXRjaCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTExMzQsNyArMTExOSw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0
b3IKIC8vIElmIHJlc29sdmVGb3JSb290RGVmYXVsdCBpcyB0cnVlLCBzdHlsZSBiYXNlZCBvbiB1
c2VyIGFnZW50IHN0eWxlIHNoZWV0IG9ubHkuIFRoaXMgaXMgdXNlZCBpbiBtZWRpYSBxdWVyaWVz
LCB3aGVyZQogLy8gcmVsYXRpdmUgdW5pdHMgYXJlIGludGVycHJldGVkIGFjY29yZGluZyB0byBk
b2N1bWVudCByb290IGVsZW1lbnQgc3R5bGUsIHN0eWxlZCBvbmx5IHdpdGggVUEgc3R5bGVzaGVl
dAogCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVs
ZW1lbnQoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIGRlZmF1bHRQYXJlbnQsIGJvb2wgYWxsb3dT
aGFyaW5nLCBib29sIHJlc29sdmVGb3JSb290RGVmYXVsdCkKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5
bGU+IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlLCBSZW5kZXJT
dHlsZSogZGVmYXVsdFBhcmVudCwgYm9vbCBhbGxvd1NoYXJpbmcsIGJvb2wgcmVzb2x2ZUZvclJv
b3REZWZhdWx0LCBib29sIG1hdGNoVmlzaXRlZFJ1bGVzKQogewogICAgIC8vIE9uY2UgYW4gZWxl
bWVudCBoYXMgYSByZW5kZXJlciwgd2UgZG9uJ3QgdHJ5IHRvIGRlc3Ryb3kgaXQsIHNpbmNlIG90
aGVyd2lzZSB0aGUgcmVuZGVyZXIKICAgICAvLyB3aWxsIHZhbmlzaCBpZiBhIHN0eWxlIHJlY2Fs
YyBoYXBwZW5zIGR1cmluZyBsb2FkaW5nLgpAQCAtMTE1MCwxMyArMTEzNSwxNSBAQCBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAgICAgICAgIHJldHVybiBzX3N0eWxl
Tm90WWV0QXZhaWxhYmxlOwogICAgIH0KIAotICAgIGluaXRFbGVtZW50QW5kUHNldWRvU3RhdGUo
ZSk7CisgICAgaW5pdEVsZW1lbnQoZSk7CiAgICAgaWYgKGFsbG93U2hhcmluZykgewogICAgICAg
ICBSZW5kZXJTdHlsZSogc2hhcmVkU3R5bGUgPSBsb2NhdGVTaGFyZWRTdHlsZSgpOwogICAgICAg
ICBpZiAoc2hhcmVkU3R5bGUpCiAgICAgICAgICAgICByZXR1cm4gc2hhcmVkU3R5bGU7CiAgICAg
fQogICAgIGluaXRGb3JTdHlsZVJlc29sdmUoZSwgZGVmYXVsdFBhcmVudCk7CisgICAgCisgICAg
bV9jaGVja2VyLm1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3MgPSBtYXRjaFZpc2l0ZWRSdWxlczsK
IAogICAgIG1fc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAKQEAgLTExNjUsNiArMTE1
MiwxMSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAgICAgZWxz
ZQogICAgICAgICBtX3BhcmVudFN0eWxlID0gc3R5bGUoKTsKIAorICAgIGlmIChlLT5pc0xpbmso
KSkgeworICAgICAgICBtX3N0eWxlLT5zZXRJc0xpbmsodHJ1ZSk7CisgICAgICAgIG1fc3R5bGUt
PnNldEluc2lkZUxpbmsobV9jaGVja2VyLmRldGVybWluZUxpbmtTdGF0ZShlKSk7CisgICAgfQor
ICAgIAogICAgIGlmIChzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCAmJiAhZWxlbWVudENhblVzZVNp
bXBsZURlZmF1bHRTdHlsZShlKSkKICAgICAgICAgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKTsKIApA
QCAtMTI3Niw2ICsxMjY4LDkgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxl
Y3RvcgogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gUmVzZXQgdGhlIHZhbHVlIGJhY2sgYmVm
b3JlIGFwcGx5aW5nIHByb3BlcnRpZXMsIHNvIHRoYXQgLXdlYmtpdC1saW5rIGtub3dzIHdoYXQg
Y29sb3IgdG8gdXNlLgorICAgIG1fY2hlY2tlci5tX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzID0g
bWF0Y2hWaXNpdGVkUnVsZXM7CisgICAgCiAgICAgLy8gTm93IHdlIGhhdmUgYWxsIG9mIHRoZSBt
YXRjaGVkIHJ1bGVzIGluIHRoZSBhcHByb3ByaWF0ZSBvcmRlci4gIFdhbGsgdGhlIHJ1bGVzIGFu
ZCBhcHBseQogICAgIC8vIGhpZ2gtcHJpb3JpdHkgcHJvcGVydGllcyBmaXJzdCwgaS5lLiwgdGhv
c2UgcHJvcGVydGllcyB0aGF0IG90aGVyIHByb3BlcnRpZXMgZGVwZW5kIG9uLgogICAgIC8vIFRo
ZSBvcmRlciBpcyAoMSkgaGlnaC1wcmlvcml0eSBub3QgaW1wb3J0YW50LCAoMikgaGlnaC1wcmlv
cml0eSBpbXBvcnRhbnQsICgzKSBub3JtYWwgbm90IGltcG9ydGFudApAQCAtMTMxOCwxNCArMTMx
MywyNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAgICAgLy8g
Q2xlYW4gdXAgb3VyIHN0eWxlIG9iamVjdCdzIGRpc3BsYXkgYW5kIHRleHQgZGVjb3JhdGlvbnMg
KGFtb25nIG90aGVyIGZpeHVwcykuCiAgICAgYWRqdXN0UmVuZGVyU3R5bGUoc3R5bGUoKSwgZSk7
CiAKLSAgICAvLyBJZiB3ZSBhcmUgYSBsaW5rLCBjYWNoZSB0aGUgZGV0ZXJtaW5lZCBwc2V1ZG8t
c3RhdGUuCi0gICAgaWYgKGUtPmlzTGluaygpKQotICAgICAgICBtX3N0eWxlLT5zZXRQc2V1ZG9T
dGF0ZShwc2V1ZG9TdGF0ZSk7Ci0KICAgICAvLyBJZiB3ZSBoYXZlIGZpcnN0LWxldHRlciBwc2V1
ZG8gc3R5bGUsIGRvIG5vdCBzaGFyZSB0aGlzIHN0eWxlCiAgICAgaWYgKG1fc3R5bGUtPmhhc1Bz
ZXVkb1N0eWxlKEZJUlNUX0xFVFRFUikpCiAgICAgICAgIG1fc3R5bGUtPnNldFVuaXF1ZSgpOwog
CisgICAgLy8gQ29tcHV0ZSBvdXIgc3R5bGUgYWxsb3dpbmcgOnZpc2l0ZWQgdG8gbWF0Y2guCisg
ICAgaWYgKCFtYXRjaFZpc2l0ZWRSdWxlcyAmJiBtX3N0eWxlLT5pbnNpZGVMaW5rKCkpIHsKKyAg
ICAgICAgLy8gRmV0Y2ggb3VyIHBhcmVudCBzdHlsZS4KKyAgICAgICAgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlID0gbV9wYXJlbnRTdHlsZTsKKyAgICAgICAgaWYgKCFtX3N0eWxlLT5pc0xpbmso
KSkgeworICAgICAgICAgICAgLy8gVXNlIHRoZSBwYXJlbnQncyB2aXNpdGVkIHN0eWxlIGlmIG9u
ZSBleGlzdHMuCisgICAgICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50VmlzaXRlZFN0eWxlID0g
bV9wYXJlbnRTdHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUoVklTSVRFRF9MSU5LKTsKKyAgICAg
ICAgICAgIGlmIChwYXJlbnRWaXNpdGVkU3R5bGUpCisgICAgICAgICAgICAgICAgcGFyZW50U3R5
bGUgPSBwYXJlbnRWaXNpdGVkU3R5bGU7CisgICAgICAgIH0KKyAgICAgICAgUmVmUHRyPFJlbmRl
clN0eWxlPiByZXN1bHRTdHlsZSA9IG1fc3R5bGUucmVsZWFzZSgpOworICAgICAgICBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiB2aXNpdGVkU3R5bGUgPSBzdHlsZUZvckVsZW1lbnQoZSwgcGFyZW50
U3R5bGUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHZpc2l0ZWRTdHlsZS0+c2V0U3R5
bGVUeXBlKFZJU0lURURfTElOSyk7CisgICAgICAgIHJlc3VsdFN0eWxlLT5hZGRDYWNoZWRQc2V1
ZG9TdHlsZSh2aXNpdGVkU3R5bGUpOworICAgICAgICByZXR1cm4gcmVzdWx0U3R5bGUucmVsZWFz
ZSgpOworICAgIH0KKwogICAgIC8vIE5vdyByZXR1cm4gdGhlIHN0eWxlLgogICAgIHJldHVybiBt
X3N0eWxlLnJlbGVhc2UoKTsKIH0KQEAgLTEzNDgsNyArMTM1Niw3IEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6a2V5ZnJhbWVTdHlsZXNGb3IKICAgICAvLyBDb25zdHJ1Y3QgYW5kIHBvcHVsYXRl
IHRoZSBzdHlsZSBmb3IgZWFjaCBrZXlmcmFtZQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBydWxlLT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIC8vIEFwcGx5IHRoZSBkZWNsYXJhdGlv
biB0byB0aGUgc3R5bGUuIFRoaXMgaXMgYSBzaW1wbGlmaWVkIHZlcnNpb24gb2YgdGhlIGxvZ2lj
IGluIHN0eWxlRm9yRWxlbWVudAotICAgICAgICBpbml0RWxlbWVudEFuZFBzZXVkb1N0YXRlKGUp
OworICAgICAgICBpbml0RWxlbWVudChlKTsKICAgICAgICAgaW5pdEZvclN0eWxlUmVzb2x2ZShl
KTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IFdlYktpdENTU0tleWZyYW1lUnVsZSoga2YgPSBy
dWxlLT5pdGVtKGkpOwpAQCAtMTQxMiwxMiArMTQyMCwxMiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0
b3I6OmtleWZyYW1lU3R5bGVzRm9yCiAgICAgICAgIGxpc3QuY2xlYXIoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50
KFBzZXVkb0lkIHBzZXVkbywgRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQor
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVGb3JF
bGVtZW50KFBzZXVkb0lkIHBzZXVkbywgRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlLCBib29sIG1hdGNoVmlzaXRlZExpbmtzKQogewogICAgIGlmICghZSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBpbml0RWxlbWVudEFuZFBzZXVkb1N0YXRlKGUpOworICAgIGluaXRFbGVt
ZW50KGUpOwogICAgIGluaXRGb3JTdHlsZVJlc29sdmUoZSwgcGFyZW50U3R5bGUsIHBzZXVkbyk7
CiAgICAgbV9zdHlsZSA9IHBhcmVudFN0eWxlOwogICAgIApAQCAtMTQ0MCw3ICsxNDQ4LDcgQEAg
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3RvcgogICAgIGlmIChwYXJlbnRT
dHlsZSkKICAgICAgICAgbV9zdHlsZS0+aW5oZXJpdEZyb20ocGFyZW50U3R5bGUpOwogCi0gICAg
bV9zdHlsZS0+bm9uaW5oZXJpdGVkX2ZsYWdzLl9zdHlsZVR5cGUgPSBwc2V1ZG87CisgICAgbV9z
dHlsZS0+c2V0U3R5bGVUeXBlKHBzZXVkbyk7CiAgICAgCiAgICAgbV9saW5lSGVpZ2h0VmFsdWUg
PSAwOwogICAgIC8vIEhpZ2gtcHJpb3JpdHkgcHJvcGVydGllcy4KQEAgLTE0NzUsNiArMTQ4Mywy
MiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAgICAgLy8gQ2xl
YW4gdXAgb3VyIHN0eWxlIG9iamVjdCdzIGRpc3BsYXkgYW5kIHRleHQgZGVjb3JhdGlvbnMgKGFt
b25nIG90aGVyIGZpeHVwcykuCiAgICAgYWRqdXN0UmVuZGVyU3R5bGUoc3R5bGUoKSwgMCk7CiAK
KyAgICAvLyBDb21wdXRlIG91ciA6dmlzaXRlZCBzdHlsZS4KKyAgICBpZiAoIW1hdGNoVmlzaXRl
ZExpbmtzICYmIG1fc3R5bGUtPmluc2lkZUxpbmsoKSkgeworICAgICAgICAvLyBGZXRjaCBvdXIg
cGFyZW50IHN0eWxlLgorICAgICAgICBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUgPSBtX3BhcmVu
dFN0eWxlOworICAgICAgICBpZiAocGFyZW50U3R5bGUpIHsKKyAgICAgICAgICAgIFJlbmRlclN0
eWxlKiBwYXJlbnRWaXNpdGVkU3R5bGUgPSBtX3BhcmVudFN0eWxlLT5nZXRDYWNoZWRQc2V1ZG9T
dHlsZShWSVNJVEVEX0xJTkspOworICAgICAgICAgICAgaWYgKHBhcmVudFZpc2l0ZWRTdHlsZSkK
KyAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZSA9IHBhcmVudFZpc2l0ZWRTdHlsZTsKKyAgICAg
ICAgfQorICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJlc3VsdFN0eWxlID0gbV9zdHlsZS5y
ZWxlYXNlKCk7CisgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gdmlzaXRlZFN0eWxlID0gcHNl
dWRvU3R5bGVGb3JFbGVtZW50KHBzZXVkbywgZSwgcGFyZW50U3R5bGUsIHRydWUpOworICAgICAg
ICB2aXNpdGVkU3R5bGUtPnNldFN0eWxlVHlwZShWSVNJVEVEX0xJTkspOworICAgICAgICByZXN1
bHRTdHlsZS0+YWRkQ2FjaGVkUHNldWRvU3R5bGUodmlzaXRlZFN0eWxlLnJlbGVhc2UoKSk7Cisg
ICAgICAgIHJldHVybiByZXN1bHRTdHlsZS5yZWxlYXNlKCk7CisgICAgfQorCiAgICAgLy8gTm93
IHJldHVybiB0aGUgc3R5bGUuCiAgICAgcmV0dXJuIG1fc3R5bGUucmVsZWFzZSgpOwogfQpAQCAt
MTczMiw3ICsxNzU2LDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3Rv
cgogCiAgICAgbV9jaGVja2VyLm1fY29sbGVjdFJ1bGVzT25seSA9IHRydWU7CiAKLSAgICBpbml0
RWxlbWVudEFuZFBzZXVkb1N0YXRlKGUpOworICAgIGluaXRFbGVtZW50KGUpOwogICAgIGluaXRG
b3JTdHlsZVJlc29sdmUoZSwgMCwgcHNldWRvSWQpOwogCiAgICAgaWYgKCFhdXRob3JPbmx5KSB7
CkBAIC0xNzYzLDcgKzE3ODcsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0
b3IoQ1NTCiAgICAgbV9keW5hbWljUHNldWRvID0gTk9QU0VVRE87CiAKICAgICAvLyBDaGVjayB0
aGUgc2VsZWN0b3IKLSAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVja2VyLmNoZWNrU2Vs
ZWN0b3Ioc2VsLCBtX2VsZW1lbnQsICZtX3NlbGVjdG9yQXR0cnMsIG1fZHluYW1pY1BzZXVkbywg
dHJ1ZSwgZmFsc2UsIHN0eWxlKCksIG1fcGFyZW50U3R5bGUpOworICAgIFNlbGVjdG9yTWF0Y2gg
bWF0Y2ggPSBtX2NoZWNrZXIuY2hlY2tTZWxlY3RvcihzZWwsIG1fZWxlbWVudCwgJm1fc2VsZWN0
b3JBdHRycywgbV9keW5hbWljUHNldWRvLCBmYWxzZSwgZmFsc2UsIHN0eWxlKCksIG1fcGFyZW50
U3R5bGUpOwogICAgIGlmIChtYXRjaCAhPSBTZWxlY3Rvck1hdGNoZXMpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMTc3OCw3ICsxODAyLDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpj
aGVja1NlbGVjdG9yKENTUwogLy8gKiBTZWxlY3Rvck1hdGNoZXMgICAgICAgICAtIHRoZSBzZWxl
Y3RvciBtYXRjaGVzIHRoZSBlbGVtZW50IGUKIC8vICogU2VsZWN0b3JGYWlsc0xvY2FsbHkgICAg
LSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIHRoZSBlbGVtZW50IGUKIC8vICogU2VsZWN0b3JGYWls
c0NvbXBsZXRlbHkgLSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIGUgYW5kIGFueSBzaWJsaW5nIG9y
IGFuY2VzdG9yIG9mIGUKLUNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWws
IEVsZW1lbnQqIGUsIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQ
c2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc0FuY2VzdG9yLCBib29sIGlzU3ViU2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50
U3R5bGUpIGNvbnN0CitDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlU2Vs
ZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBF
bGVtZW50KiBlLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNl
dWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJl
ZExpbmssIFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFy
ZW50U3R5bGUpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNWRykKICAgICAvLyBTcGVjOiBDU1MyIHNl
bGVjdG9ycyBjYW5ub3QgYmUgYXBwbGllZCB0byB0aGUgKGNvbmNlcHR1YWxseSkgY2xvbmVkIERP
TSB0cmVlCkBAIC0xNzg4LDcgKzE4MTIsNyBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1h
dGNoIENTU1N0eWxlCiAjZW5kaWYKIAogICAgIC8vIGZpcnN0IHNlbGVjdG9yIGhhcyB0byBtYXRj
aAotICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFt
aWNQc2V1ZG8sIGlzQW5jZXN0b3IsIGlzU3ViU2VsZWN0b3IsIGVsZW1lbnRTdHlsZSwgZWxlbWVu
dFBhcmVudFN0eWxlKSkKKyAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3Rv
ckF0dHJzLCBkeW5hbWljUHNldWRvLCBpc1N1YlNlbGVjdG9yLCBlbGVtZW50U3R5bGUsIGVsZW1l
bnRQYXJlbnRTdHlsZSkpCiAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzTG9jYWxseTsKIAog
ICAgIC8vIFRoZSByZXN0IG9mIHRoZSBzZWxlY3RvcnMgaGFzIHRvIG1hdGNoCkBAIC0xODA0LDYg
KzE4MjgsMTcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAg
ICAgICBpZiAobV9wc2V1ZG9TdHlsZSAhPSBOT1BTRVVETyAmJiBtX3BzZXVkb1N0eWxlICE9IGR5
bmFtaWNQc2V1ZG8pCiAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7
CiAKKyAgICAvLyBDaGVjayBmb3IgbmVzdGVkIGxpbmtzLgorICAgIGlmIChtX21hdGNoVmlzaXRl
ZFBzZXVkb0NsYXNzKSB7CisgICAgICAgIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUgPSBlbGVt
ZW50U3R5bGUgPyBlbGVtZW50U3R5bGUgOiBlLT5yZW5kZXJTdHlsZSgpOworICAgICAgICBpZiAo
Y3VycmVudFN0eWxlICYmIGN1cnJlbnRTdHlsZS0+aW5zaWRlTGluaygpICYmIGUtPmlzTGluaygp
KSB7CisgICAgICAgICAgICBpZiAoZW5jb3VudGVyZWRMaW5rKQorICAgICAgICAgICAgICAgIG1f
bWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3MgPSBmYWxzZTsgLy8gVGhpcyBsaW5rIGlzIG5vdCByZWxl
dmFudCB0byB0aGUgc3R5bGUgYmVpbmcgcmVzb2x2ZWQsIHNvIGRpc2FibGUgbWF0Y2hpbmcuCisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW5jb3VudGVyZWRMaW5rID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgIH0KKwogICAgIHN3aXRjaCAocmVsYXRpb24pIHsKICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudDoKICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CkBA
IC0xODExLDcgKzE4NDYsNyBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0
eWxlCiAgICAgICAgICAgICAgICAgaWYgKCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKICAgICAgICAg
ICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgICAgIFNl
bGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywg
ZHluYW1pY1BzZXVkbywgdHJ1ZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIFNlbGVjdG9yTWF0
Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1Bz
ZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluayk7CiAgICAgICAgICAgICAgICAgaWYgKG1hdGNo
ICE9IFNlbGVjdG9yRmFpbHNMb2NhbGx5KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0
Y2g7CiAgICAgICAgICAgICB9CkBAIC0xODIyLDcgKzE4NTcsNyBAQCBDU1NTdHlsZVNlbGVjdG9y
OjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlCiAgICAgICAgICAgICBpZiAoIW4gfHwgIW4tPmlzRWxl
bWVudE5vZGUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRl
bHk7CiAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwotICAgICAgICAg
ICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNl
dWRvLCB0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWws
IGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmsp
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50Ogog
ICAgICAgICB7CkBAIC0xODM3LDcgKzE4NzIsOCBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rv
ck1hdGNoIENTU1N0eWxlCiAgICAgICAgICAgICBpZiAoIW4pCiAgICAgICAgICAgICAgICAgcmV0
dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5OwogICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihuKTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2Vs
ZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGZhbHNlKTsgCisgICAgICAgICAgICBt
X21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gY2hl
Y2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBl
bmNvdW50ZXJlZExpbmspOyAKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpJ
bmRpcmVjdEFkamFjZW50OgogICAgICAgICAgICAgaWYgKCFtX2NvbGxlY3RSdWxlc09ubHkgJiYg
ZS0+cGFyZW50Tm9kZSgpICYmIGUtPnBhcmVudE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKSB7CkBA
IC0xODUyLDcgKzE4ODgsOCBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0
eWxlCiAgICAgICAgICAgICAgICAgaWYgKCFuKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
U2VsZWN0b3JGYWlsc0xvY2FsbHk7CiAgICAgICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihuKTsKLSAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tT
ZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBmYWxz
ZSk7CisgICAgICAgICAgICAgICAgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwg
ZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluayk7
CiAgICAgICAgICAgICAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yRmFpbHNMb2NhbGx5KQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CiAgICAgICAgICAgICB9OwpAQCAtMTg2NCw3
ICsxOTAxLDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZQogICAg
ICAgICAgICAgaWYgKChlbGVtZW50U3R5bGUgfHwgbV9jb2xsZWN0UnVsZXNPbmx5KSAmJiBkeW5h
bWljUHNldWRvICE9IE5PUFNFVURPICYmIGR5bmFtaWNQc2V1ZG8gIT0gU0VMRUNUSU9OICYmCiAg
ICAgICAgICAgICAgICAgISgoUmVuZGVyU2Nyb2xsYmFyOjpzY3JvbGxiYXJGb3JTdHlsZVJlc29s
dmUoKSB8fCBkeW5hbWljUHNldWRvID09IFNDUk9MTEJBUl9DT1JORVIgfHwgZHluYW1pY1BzZXVk
byA9PSBSRVNJWkVSKSAmJiBzZWwtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7Ci0gICAg
ICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFt
aWNQc2V1ZG8sIGlzQW5jZXN0b3IsIHRydWUsIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0
eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JB
dHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVyZWRMaW5rLCBlbGVtZW50U3R5bGUs
IGVsZW1lbnRQYXJlbnRTdHlsZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHND
b21wbGV0ZWx5OwpAQCAtMTkzNyw3ICsxOTc0LDcgQEAgc3RhdGljIGJvb2wgaHRtbEF0dHJpYnV0
ZUhhc0Nhc2VJbnNlbnNpdAogICAgIHJldHVybiBpc1Bvc3NpYmxlSFRNTEF0dHIgJiYgaHRtbENh
c2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZXNTZXQtPmNvbnRhaW5zKGF0dHIubG9jYWxOYW1lKCkuaW1w
bCgpKTsKIH0KIAotYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgSGFzaFNldDxBdG9taWNT
dHJpbmdJbXBsKj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29s
IGlzQW5jZXN0b3IsIGJvb2wgaXNTdWJTZWxlY3RvciwgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHls
ZSwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSkgY29uc3QKK2Jvb2wgQ1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBz
ZWwsIEVsZW1lbnQqIGUsIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJz
LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBSZW5kZXJTdHls
ZSogZWxlbWVudFN0eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAog
ewogICAgIGlmICghZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjAzOCw3ICsyMDc1LDcg
QEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OgogICAgICAgICAgICAg
ICAgIC8vIHRoZSBwYXJzZXIgZW5mb3JjZXMgdGhhdCB0aGlzIG5ldmVyIG9jY3VycwogICAgICAg
ICAgICAgICAgIEFTU0VSVCghc3ViU2VsLT5zaW1wbGVTZWxlY3RvcigpKTsKIAotICAgICAgICAg
ICAgICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzdWJTZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5
bmFtaWNQc2V1ZG8sIGlzQW5jZXN0b3IsIHRydWUsIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVu
dFN0eWxlKSkKKyAgICAgICAgICAgICAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc3ViU2VsLCBl
LCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCB0cnVlLCBlbGVtZW50U3R5bGUsIGVsZW1l
bnRQYXJlbnRTdHlsZSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGR5bmFtaWNQc2V1ZG8gIT0gTk9QU0VVRE8gJiYg
KFJlbmRlclNjcm9sbGJhcjo6c2Nyb2xsYmFyRm9yU3R5bGVSZXNvbHZlKCkgfHwgZHluYW1pY1Bz
ZXVkbyA9PSBTQ1JPTExCQVJfQ09STkVSIHx8IGR5bmFtaWNQc2V1ZG8gPT0gUkVTSVpFUikpIHsK
QEAgLTIzNDYsOSArMjM4Myw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVj
a2VyOjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9BbnlMaW5rOgotICAg
ICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9Vbmtub3duKQotICAgICAgICAg
ICAgICAgICAgICBwc2V1ZG9TdGF0ZSA9IGNoZWNrUHNldWRvU3RhdGUoZSwgZmFsc2UpOwotICAg
ICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9BbnlMaW5rIHx8IHBzZXVkb1N0
YXRlID09IFBzZXVkb0xpbmsgfHwgcHNldWRvU3RhdGUgPT0gUHNldWRvVmlzaXRlZCkKKyAgICAg
ICAgICAgICAgICBpZiAoZSAmJiBlLT5pc0xpbmsoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpQc2V1ZG9BdXRvZmlsbDogewpAQCAtMjM1OSwxNiArMjM5NCwxMiBAQCBib29sIENT
U1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MaW5r
OgotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9Vbmtub3duIHx8IHBz
ZXVkb1N0YXRlID09IFBzZXVkb0FueUxpbmspCi0gICAgICAgICAgICAgICAgICAgIHBzZXVkb1N0
YXRlID0gY2hlY2tQc2V1ZG9TdGF0ZShlKTsKLSAgICAgICAgICAgICAgICBpZiAocHNldWRvU3Rh
dGUgPT0gUHNldWRvTGluaykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgaWYgKGUgJiYgZS0+aXNMaW5rKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAhbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzczsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Zpc2l0ZWQ6Ci0gICAgICAgICAg
ICAgICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb1Vua25vd24gfHwgcHNldWRvU3RhdGUgPT0g
UHNldWRvQW55TGluaykKLSAgICAgICAgICAgICAgICAgICAgcHNldWRvU3RhdGUgPSBjaGVja1Bz
ZXVkb1N0YXRlKGUpOwotICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9W
aXNpdGVkKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBpZiAoZSAmJiBlLT5pc0xpbmsoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fbWF0
Y2hWaXNpdGVkUHNldWRvQ2xhc3M7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9EcmFnOiB7CiAgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnRTdHlsZSkKQEAgLTI5NTQsNyArMjk4NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5Q291bnRl
ckxpc3QoUmVuZGVyU3R5bGUKIAogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5
VG9TdHlsZShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewot
ICAgIGluaXRFbGVtZW50QW5kUHNldWRvU3RhdGUoMCk7CisgICAgaW5pdEVsZW1lbnQoMCk7CiAg
ICAgaW5pdEZvclN0eWxlUmVzb2x2ZSgwLCBzdHlsZSk7CiAgICAgbV9zdHlsZSA9IHN0eWxlOwog
ICAgIGFwcGx5UHJvcGVydHkoaWQsIHZhbHVlKTsKQEAgLTYwNDcsMTcgKzYwNzgsOSBAQCBDb2xv
ciBDU1NTdHlsZVNlbGVjdG9yOjpnZXRDb2xvckZyb21QcmltCiAgICAgaWYgKGlkZW50KSB7CiAg
ICAgICAgIGlmIChpZGVudCA9PSBDU1NWYWx1ZVdlYmtpdFRleHQpCiAgICAgICAgICAgICBjb2wg
PSBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnRleHRDb2xvcigpOwotICAgICAgICBlbHNlIGlmIChp
ZGVudCA9PSBDU1NWYWx1ZVdlYmtpdExpbmspIHsKLSAgICAgICAgICAgIGNvbnN0IENvbG9yJiBs
aW5rQ29sb3IgPSBtX2VsZW1lbnQtPmRvY3VtZW50KCktPmxpbmtDb2xvcigpOwotICAgICAgICAg
ICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRDb2xvciA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+dmlz
aXRlZExpbmtDb2xvcigpOwotICAgICAgICAgICAgaWYgKGxpbmtDb2xvciA9PSB2aXNpdGVkQ29s
b3IpCi0gICAgICAgICAgICAgICAgY29sID0gbGlua0NvbG9yOwotICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb1Vua25vd24gfHwgcHNl
dWRvU3RhdGUgPT0gUHNldWRvQW55TGluaykKLSAgICAgICAgICAgICAgICAgICAgcHNldWRvU3Rh
dGUgPSBtX2NoZWNrZXIuY2hlY2tQc2V1ZG9TdGF0ZShtX2VsZW1lbnQpOwotICAgICAgICAgICAg
ICAgIGNvbCA9IChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9MaW5rKSA/IGxpbmtDb2xvciA6IHZpc2l0
ZWRDb2xvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChpZGVudCA9PSBDU1NW
YWx1ZVdlYmtpdEFjdGl2ZWxpbmspCisgICAgICAgIGVsc2UgaWYgKGlkZW50ID09IENTU1ZhbHVl
V2Via2l0TGluaykKKyAgICAgICAgICAgIGNvbCA9IG1fZWxlbWVudC0+aXNMaW5rKCkgJiYgbV9j
aGVja2VyLm1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3MgPyBtX2VsZW1lbnQtPmRvY3VtZW50KCkt
PnZpc2l0ZWRMaW5rQ29sb3IoKSA6IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+bGlua0NvbG9yKCk7
CisgICAgICAgIGVsc2UgaWYgKGlkZW50ID09IENTU1ZhbHVlV2Via2l0QWN0aXZlbGluaykKICAg
ICAgICAgICAgIGNvbCA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+YWN0aXZlTGlua0NvbG9yKCk7
CiAgICAgICAgIGVsc2UgaWYgKGlkZW50ID09IENTU1ZhbHVlV2Via2l0Rm9jdXNSaW5nQ29sb3Ip
CiAgICAgICAgICAgICBjb2wgPSBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoKTsKSW5kZXg6
IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJldmlzaW9uIDU3MTY1KQorKysgV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSwxMiArODUsMTIgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3RyaWN0UGFyc2luZywgYm9vbCBtYXRj
aEF1dGhvckFuZFVzZXJTdHlsZXMpOwogICAgICAgICB+Q1NTU3R5bGVTZWxlY3RvcigpOwogCi0g
ICAgICAgIHZvaWQgaW5pdEVsZW1lbnRBbmRQc2V1ZG9TdGF0ZShFbGVtZW50Kik7CisgICAgICAg
IHZvaWQgaW5pdEVsZW1lbnQoRWxlbWVudCopOwogICAgICAgICB2b2lkIGluaXRGb3JTdHlsZVJl
c29sdmUoRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IDAsIFBzZXVkb0lkID0g
Tk9QU0VVRE8pOwotICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1l
bnQoRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IDAsIGJvb2wgYWxsb3dTaGFy
aW5nID0gdHJ1ZSwgYm9vbCByZXNvbHZlRm9yUm9vdERlZmF1bHQgPSBmYWxzZSk7CisgICAgICAg
IFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudChFbGVtZW50KiwgUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlID0gMCwgYm9vbCBhbGxvd1NoYXJpbmcgPSB0cnVlLCBib29sIHJl
c29sdmVGb3JSb290RGVmYXVsdCA9IGZhbHNlLCBib29sIG1hdGNoVmlzaXRlZExpbmtzID0gZmFs
c2UpOwogICAgICAgICB2b2lkIGtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqLCBj
b25zdCBSZW5kZXJTdHlsZSosIEtleWZyYW1lTGlzdCYgbGlzdCk7CiAKLSAgICAgICAgUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGVGb3JFbGVtZW50KFBzZXVkb0lkLCBFbGVtZW50
KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCk7CisgICAgICAgIFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IHBzZXVkb1N0eWxlRm9yRWxlbWVudChQc2V1ZG9JZCwgRWxlbWVudCosIFJlbmRl
clN0eWxlKiBwYXJlbnRTdHlsZSA9IDAsIGJvb2wgbWF0Y2hWaXNpdGVkTGlua3MgPSBmYWxzZSk7
CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRG9jdW1l
bnQoRG9jdW1lbnQqKTsKIApAQCAtMTk2LDExICsxOTYsMTEgQEAgcHVibGljOgogICAgICAgICAg
ICAgU2VsZWN0b3JDaGVja2VyKERvY3VtZW50KiwgYm9vbCBzdHJpY3RQYXJzaW5nKTsKIAogICAg
ICAgICAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCopIGNvbnN0
OwotICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwg
RWxlbWVudCosIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1
ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc0FuY2VzdG9yLCBib29sIGlzU3ViU2VsZWN0b3Is
IFJlbmRlclN0eWxlKiA9IDAsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUgPSAwKSBj
b25zdDsKLSAgICAgICAgICAgIGJvb2wgY2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3RvciosIEVs
ZW1lbnQqLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRv
SWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNBbmNlc3RvciwgYm9vbCBpc1N1YlNlbGVjdG9yLCBS
ZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNvbnN0OwotICAg
ICAgICAgICAgUHNldWRvU3RhdGUgY2hlY2tQc2V1ZG9TdGF0ZShFbGVtZW50KiwgYm9vbCBjaGVj
a1Zpc2l0ZWQgPSB0cnVlKSBjb25zdDsKKyAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tT
ZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwq
Piogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxl
Y3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJlbmRlclN0eWxlKiA9IDAsIFJlbmRlclN0eWxl
KiBlbGVtZW50UGFyZW50U3R5bGUgPSAwKSBjb25zdDsKKyAgICAgICAgICAgIGJvb2wgY2hlY2tP
bmVTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBIYXNoU2V0PEF0b21pY1N0cmluZ0lt
cGwqPiogc2VsZWN0b3JBdHRycywgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJT
ZWxlY3RvciwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBj
b25zdDsKICAgICAgICAgICAgIGJvb2wgY2hlY2tTY3JvbGxiYXJQc2V1ZG9DbGFzcyhDU1NTZWxl
Y3RvciosIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvKSBjb25zdDsKIAorICAgICAgICAgICAgRUlu
c2lkZUxpbmsgZGV0ZXJtaW5lTGlua1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0OwogICAg
ICAgICAgICAgdm9pZCBhbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKCk7CiAgICAgICAgICAgICB2b2lk
IHZpc2l0ZWRTdGF0ZUNoYW5nZWQoTGlua0hhc2ggdmlzaXRlZEhhc2gpOwogCkBAIC0yMDksNiAr
MjA5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgYm9vbCBtX2NvbGxlY3RSdWxlc09ubHk7CiAg
ICAgICAgICAgICBQc2V1ZG9JZCBtX3BzZXVkb1N0eWxlOwogICAgICAgICAgICAgYm9vbCBtX2Rv
Y3VtZW50SXNIVE1MOworICAgICAgICAgICAgbXV0YWJsZSBib29sIG1fbWF0Y2hWaXNpdGVkUHNl
dWRvQ2xhc3M7CiAgICAgICAgICAgICBtdXRhYmxlIEhhc2hTZXQ8TGlua0hhc2gsIExpbmtIYXNo
SGFzaD4gbV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGU7CiAgICAgICAgIH07CiAKQEAgLTI3
OSw3ICsyODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIENTU1ZhbHVlKiBtX2xpbmVIZWlnaHRWYWx1
ZTsKICAgICAgICAgYm9vbCBtX2ZvbnREaXJ0eTsKICAgICAgICAgYm9vbCBtX21hdGNoQXV0aG9y
QW5kVXNlclN0eWxlczsKLQorICAgICAgICAKICAgICAgICAgUmVmUHRyPENTU0ZvbnRTZWxlY3Rv
cj4gbV9mb250U2VsZWN0b3I7CiAgICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IG1f
c2VsZWN0b3JBdHRyczsKICAgICAgICAgVmVjdG9yPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
Kj4gbV9hZGRpdGlvbmFsQXR0cmlidXRlU3R5bGVEZWNsczsKSW5kZXg6IFdlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lv
biA1NzE2NSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NjgsMTEgKzg2OCwxNiBAQCBib29sIEVsZW1lbnQ6OnBzZXVkb1N0eWxlQ2FjaGVJc0ludmFsaWQo
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWNoZVNpemU7ICsraSkgewogICAgICAgICBS
ZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1BzZXVkb1N0eWxlOwogICAgICAgICBQc2V1ZG9JZCBwc2V1
ZG9JZCA9IHBzZXVkb1N0eWxlQ2FjaGVbaV0tPnN0eWxlVHlwZSgpOwotICAgICAgICBpZiAocHNl
dWRvSWQgPT0gRklSU1RfTElORSB8fCBwc2V1ZG9JZCA9PSBGSVJTVF9MSU5FX0lOSEVSSVRFRCkK
KyAgICAgICAgaWYgKHBzZXVkb0lkID09IFZJU0lURURfTElOSykgeworICAgICAgICAgICAgbmV3
UHNldWRvU3R5bGUgPSAgbmV3U3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxlKFZJU0lURURfTElO
Syk7IC8vIFRoaXMgcHNldWRvLXN0eWxlIHdhcyBhZ2dyZXNzaXZlbHkgY29tcHV0ZWQgYWxyZWFk
eSB3aGVuIHdlIGZpcnN0IGNhbGxlZCBzdHlsZUZvckVsZW1lbnQgb24gdGhlIG5ldyBzdHlsZS4K
KyAgICAgICAgICAgIGlmICghbmV3UHNldWRvU3R5bGUgfHwgKm5ld1BzZXVkb1N0eWxlICE9ICpw
c2V1ZG9TdHlsZUNhY2hlW2ldKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9IGVsc2UgaWYgKHBzZXVkb0lkID09IEZJUlNUX0xJTkUgfHwgcHNldWRvSWQgPT0gRklSU1Rf
TElORV9JTkhFUklURUQpCiAgICAgICAgICAgICBuZXdQc2V1ZG9TdHlsZSA9IHJlbmRlcmVyKCkt
PnVuY2FjaGVkRmlyc3RMaW5lU3R5bGUobmV3U3R5bGUpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBuZXdQc2V1ZG9TdHlsZSA9IHJlbmRlcmVyKCktPmdldFVuY2FjaGVkUHNldWRvU3R5bGUo
cHNldWRvSWQsIG5ld1N0eWxlLCBuZXdTdHlsZSk7Ci0KKyAgICAgICAgaWYgKCFuZXdQc2V1ZG9T
dHlsZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoKm5ld1BzZXVkb1N0
eWxlICE9ICpwc2V1ZG9TdHlsZUNhY2hlW2ldKSB7CiAgICAgICAgICAgICBpZiAocHNldWRvSWQg
PCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCkKICAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0
SGFzUHNldWRvU3R5bGUocHNldWRvSWQpOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAkocmV2aXNpb24gNTcxNjUpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwxMCBAQAogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRl
ICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1J1bGUuaCIKICNpbmNsdWRlICJDU1NSdWxl
TGlzdC5oIgotI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NT
dHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NT
U3R5bGVTaGVldC5oIgpAQCAtNzc1LDEyICs3NzUsMTIgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6Z2V0U3R5bGVzKGxvbmcgYwogICAgIH0KIAogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7Ci0gICAgUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+
IGNvbXB1dGVkU3R5bGUgPSBkZWZhdWx0Vmlldy0+Z2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAi
Iik7CisgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHls
ZUluZm8gPSBjb21wdXRlZFN0eWxlKG5vZGUsIHRydWUpOyAvLyBTdXBwb3J0IHRoZSB2aWV3aW5n
IG9mIDp2aXNpdGVkIGluZm9ybWF0aW9uIGluIGNvbXB1dGVkIHN0eWxlLgogCiAgICAgU2NyaXB0
T2JqZWN0IHJlc3VsdCA9IG1fZnJvbnRlbmQtPm5ld1NjcmlwdE9iamVjdCgpOwogICAgIGlmIChl
bGVtZW50LT5zdHlsZSgpKQogICAgICAgICByZXN1bHQuc2V0KCJpbmxpbmVTdHlsZSIsIGJ1aWxk
T2JqZWN0Rm9yU3R5bGUoZWxlbWVudC0+c3R5bGUoKSwgdHJ1ZSkpOwotICAgIHJlc3VsdC5zZXQo
ImNvbXB1dGVkU3R5bGUiLCBidWlsZE9iamVjdEZvclN0eWxlKGNvbXB1dGVkU3R5bGUuZ2V0KCks
IGZhbHNlKSk7CisgICAgcmVzdWx0LnNldCgiY29tcHV0ZWRTdHlsZSIsIGJ1aWxkT2JqZWN0Rm9y
U3R5bGUoY29tcHV0ZWRTdHlsZUluZm8uZ2V0KCksIGZhbHNlKSk7CiAKICAgICBDU1NTdHlsZVNl
bGVjdG9yKiBzZWxlY3RvciA9IGVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKS0+c3R5bGVTZWxlY3Rv
cigpOwogICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gbWF0Y2hlZFJ1bGVzID0gc2VsZWN0b3ItPnN0
eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIGF1dGhvck9ubHkpOwpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9MaW5rSGFzaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9MaW5r
SGFzaC5jcHAJKHJldmlzaW9uIDU3MTY1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSGFzaC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCwxMCArMTU0LDExIEBAIExpbmtIYXNoIHZpc2l0ZWRM
aW5rSGFzaChjb25zdCBVQ2hhciogdXIKIAogdm9pZCB2aXNpdGVkVVJMKGNvbnN0IEtVUkwmIGJh
c2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMLCBWZWN0b3I8VUNoYXIsIDUxMj4m
IGJ1ZmZlcikKIHsKKyAgICBpZiAoYXR0cmlidXRlVVJMLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm47CisKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IGF0dHJpYnV0ZVVSTC5jaGFyYWN0
ZXJzKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRlVVJMLmxlbmd0aCgpOwotICAg
IGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGlzIGlzIGEgcG9vciBt
YW4ncyBjb21wbGV0ZVVSTC4gRmFzdGVyIHdpdGggbGVzcyBtZW1vcnkgYWxsb2NhdGlvbi4KICAg
ICAvLyBGSVhNRTogSXQncyBtaXNzaW5nIGEgbG90IG9mIHdoYXQgY29tcGxldGVVUkwgZG9lcyBh
bmQgYSBsb3Qgb2Ygd2hhdCBLVVJMIGRvZXMuCkBAIC0xODYsMTYgKzE4NywyMCBAQCB2b2lkIHZp
c2l0ZWRVUkwoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBzd2l0Y2ggKGNoYXJhY3RlcnNbMF0pIHsKLSAgICAgICAgY2FzZSAnLyc6Ci0gICAg
ICAgICAgICBidWZmZXIuYXBwZW5kKGJhc2Uuc3RyaW5nKCkuY2hhcmFjdGVycygpLCBiYXNlLnBh
dGhTdGFydCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICcjJzoKLSAgICAg
ICAgICAgIGJ1ZmZlci5hcHBlbmQoYmFzZS5zdHJpbmcoKS5jaGFyYWN0ZXJzKCksIGJhc2UucGF0
aEVuZCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgYnVmZmVyLmFwcGVuZChiYXNlLnN0cmluZygpLmNoYXJhY3RlcnMoKSwgYmFzZS5wYXRoQWZ0
ZXJMYXN0U2xhc2goKSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBpZiAoIWxlbmd0aCkKKyAg
ICAgICAgYnVmZmVyLmFwcGVuZChiYXNlLnN0cmluZygpLmNoYXJhY3RlcnMoKSwgYmFzZS5zdHJp
bmcoKS5sZW5ndGgoKSk7CisgICAgZWxzZSB7CisgICAgICAgIHN3aXRjaCAoY2hhcmFjdGVyc1sw
XSkgeworICAgICAgICAgICAgY2FzZSAnLyc6CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVu
ZChiYXNlLnN0cmluZygpLmNoYXJhY3RlcnMoKSwgYmFzZS5wYXRoU3RhcnQoKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICcjJzoKKyAgICAgICAgICAgICAgICBi
dWZmZXIuYXBwZW5kKGJhc2Uuc3RyaW5nKCkuY2hhcmFjdGVycygpLCBiYXNlLnBhdGhFbmQoKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIGJ1ZmZlci5hcHBlbmQoYmFzZS5zdHJpbmcoKS5jaGFyYWN0ZXJzKCksIGJhc2UucGF0
aEFmdGVyTGFzdFNsYXNoKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgfQogICAgIGJ1ZmZlci5hcHBlbmQoY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICBjbGVhblBh
dGgoYnVmZmVyKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCShyZXZpc2lv
biA1NzE2NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiSW5saW5lRmxvd0JveC5oIgogCiAj
aW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGxpcHNpc0JveC5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNzYwLDcgKzc2MSw3IEBAIHZvaWQgSW5saW5lRmxvd0Jv
eDo6cGFpbnRCb3hEZWNvcmF0aW9ucygKICAgICAgICAgaWYgKHN0eWxlVG9Vc2UtPmJveFNoYWRv
dygpKQogICAgICAgICAgICAgcGFpbnRCb3hTaGFkb3coY29udGV4dCwgc3R5bGVUb1VzZSwgTm9y
bWFsLCB0eCwgdHksIHcsIGgpOwogCi0gICAgICAgIENvbG9yIGMgPSBzdHlsZVRvVXNlLT5iYWNr
Z3JvdW5kQ29sb3IoKTsKKyAgICAgICAgQ29sb3IgYyA9IHN0eWxlVG9Vc2UtPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIHBhaW50Rmls
bExheWVycyhwYWludEluZm8sIGMsIHN0eWxlVG9Vc2UtPmJhY2tncm91bmRMYXllcnMoKSwgdHgs
IHR5LCB3LCBoKTsKIAogICAgICAgICBpZiAoc3R5bGVUb1VzZS0+Ym94U2hhZG93KCkpCkBAIC05
NTcsNyArOTU4LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludFRleHREZWNvcmF0aW9ucwog
ICAgICAgICB0eCArPSBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpOwogCiAgICAgICAgIENv
bG9yIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJvdWdoOwotICAgICAgICB1bmRlcmxpbmUg
PSBvdmVybGluZSA9IGxpbmV0aHJvdWdoID0gc3R5bGVUb1VzZS0+Y29sb3IoKTsKKyAgICAgICAg
dW5kZXJsaW5lID0gb3ZlcmxpbmUgPSBsaW5ldGhyb3VnaCA9IHN0eWxlVG9Vc2UtPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICAgICAgaWYgKCFwYXJlbnQoKSkK
ICAgICAgICAgICAgIHJlbmRlcmVyKCktPmdldFRleHREZWNvcmF0aW9uQ29sb3JzKGRlY28sIHVu
ZGVybGluZSwgb3ZlcmxpbmUsIGxpbmV0aHJvdWdoKTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDU3MTY1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSwxOCArNDExLDE0IEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnQoUmVuZGVyT2JqZWN0OjoKICAgICAgICAgdGV4dEZpbGxDb2xv
ciA9IENvbG9yOjpibGFjazsKICAgICAgICAgdGV4dFN0cm9rZUNvbG9yID0gQ29sb3I6OmJsYWNr
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHRleHRGaWxsQ29sb3IgPSBzdHlsZVRvVXNlLT50ZXh0
RmlsbENvbG9yKCk7Ci0gICAgICAgIGlmICghdGV4dEZpbGxDb2xvci5pc1ZhbGlkKCkpCi0gICAg
ICAgICAgICB0ZXh0RmlsbENvbG9yID0gc3R5bGVUb1VzZS0+Y29sb3IoKTsKLQorICAgICAgICB0
ZXh0RmlsbENvbG9yID0gc3R5bGVUb1VzZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5V2Via2l0VGV4dEZpbGxDb2xvcik7CisgICAgICAgIAogICAgICAgICAvLyBNYWtlIHRoZSB0
ZXh0IGZpbGwgY29sb3IgbGVnaWJsZSBhZ2FpbnN0IGEgd2hpdGUgYmFja2dyb3VuZAogICAgICAg
ICBpZiAoc3R5bGVUb1VzZS0+Zm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoKSkKICAgICAgICAgICAg
IHRleHRGaWxsQ29sb3IgPSBjb3JyZWN0ZWRUZXh0Q29sb3IodGV4dEZpbGxDb2xvciwgQ29sb3I6
OndoaXRlKTsKIAotICAgICAgICB0ZXh0U3Ryb2tlQ29sb3IgPSBzdHlsZVRvVXNlLT50ZXh0U3Ry
b2tlQ29sb3IoKTsKLSAgICAgICAgaWYgKCF0ZXh0U3Ryb2tlQ29sb3IuaXNWYWxpZCgpKQotICAg
ICAgICAgICAgdGV4dFN0cm9rZUNvbG9yID0gc3R5bGVUb1VzZS0+Y29sb3IoKTsKLQorICAgICAg
ICB0ZXh0U3Ryb2tlQ29sb3IgPSBzdHlsZVRvVXNlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IpOworICAgICAgICAKICAgICAgICAgLy8gTWFr
ZSB0aGUgdGV4dCBzdHJva2UgY29sb3IgbGVnaWJsZSBhZ2FpbnN0IGEgd2hpdGUgYmFja2dyb3Vu
ZAogICAgICAgICBpZiAoc3R5bGVUb1VzZS0+Zm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoKSkKICAg
ICAgICAgICAgIHRleHRTdHJva2VDb2xvciA9IGNvcnJlY3RlZFRleHRDb2xvcih0ZXh0U3Ryb2tl
Q29sb3IsIENvbG9yOjp3aGl0ZSk7CkBAIC01MTcsNyArNTEzLDcgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludChSZW5kZXJPYmplY3Q6OgogCiAgICAgLy8gUGFpbnQgZGVjb3JhdGlvbnMKICAg
ICBpZiAoZCAhPSBURE5PTkUgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rp
b24gJiYgc3R5bGVUb1VzZS0+aHRtbEhhY2tzKCkpIHsKLSAgICAgICAgY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3Ioc3R5bGVUb1VzZS0+Y29sb3IoKSwgc3R5bGVUb1VzZS0+Y29sb3JTcGFjZSgpKTsK
KyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGVUb1VzZS0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZVRvVXNlLT5jb2xvclNwYWNlKCkpOwog
ICAgICAgICBwYWludERlY29yYXRpb24oY29udGV4dCwgdHgsIHR5LCBkLCB0ZXh0U2hhZG93KTsK
ICAgICB9CiAKQEAgLTU3Nyw3ICs1NzMsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50U2Vs
ZWN0aW9uKEdyYXBoCiAgICAgaWYgKHNQb3MgPj0gZVBvcykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQ29sb3IgdGV4dENvbG9yID0gc3R5bGUtPmNvbG9yKCk7CisgICAgQ29sb3IgdGV4dENvbG9y
ID0gc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICBD
b2xvciBjID0gcmVuZGVyZXIoKS0+c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CiAgICAgaWYg
KCFjLmlzVmFsaWQoKSB8fCBjLmFscGhhKCkgPT0gMCkKICAgICAgICAgcmV0dXJuOwpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gNTcxNjUpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NDYsNyArMTU0Niw3
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50KFBhaW50SW5mbyYgcGFpbnQKIAogdm9pZCBSZW5k
ZXJCbG9jazo6cGFpbnRDb2x1bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBp
bnQgdHkpCiB7Ci0gICAgY29uc3QgQ29sb3ImIHJ1bGVDb2xvciA9IHN0eWxlKCktPmNvbHVtblJ1
bGVDb2xvcigpOworICAgIGNvbnN0IENvbG9yJiBydWxlQ29sb3IgPSBzdHlsZSgpLT52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IpOwogICAgIGJv
b2wgcnVsZVRyYW5zcGFyZW50ID0gc3R5bGUoKS0+Y29sdW1uUnVsZUlzVHJhbnNwYXJlbnQoKTsK
ICAgICBFQm9yZGVyU3R5bGUgcnVsZVN0eWxlID0gc3R5bGUoKS0+Y29sdW1uUnVsZVN0eWxlKCk7
CiAgICAgaW50IHJ1bGVXaWR0aCA9IHN0eWxlKCktPmNvbHVtblJ1bGVXaWR0aCgpOwpAQCAtMTU4
MSw3ICsxNTgxLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDb2x1bW5SdWxlcyhQYWludAog
ICAgICAgICAgICAgaW50IHJ1bGVUb3AgPSB0eSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgp
OwogICAgICAgICAgICAgaW50IHJ1bGVCb3R0b20gPSBydWxlVG9wICsgY29udGVudEhlaWdodCgp
OwogICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKHBhaW50SW5mby5jb250ZXh0LCBydWxl
U3RhcnQsIHJ1bGVUb3AsIHJ1bGVFbmQsIHJ1bGVCb3R0b20sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gQlNMZWZ0IDogQlNSaWdo
dCwgcnVsZUNvbG9yLCBzdHlsZSgpLT5jb2xvcigpLCBydWxlU3R5bGUsIDAsIDApOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUiA/IEJT
TGVmdCA6IEJTUmlnaHQsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwKTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgcnVsZVggPSBjdXJyWE9mZnNldDsKQEAgLTE3NjAsNyArMTc2MCw3
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYKIAogICAgIC8vIDUu
IHBhaW50IG91dGxpbmUuCiAgICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5l
IHx8IHBhaW50UGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBoYXNPdXRsaW5lKCkg
JiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCi0gICAgICAgIHBhaW50T3V0bGlu
ZShwYWludEluZm8uY29udGV4dCwgdHgsIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSwgc3R5bGUoKSk7
CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgdHgsIHR5LCB3aWR0aCgp
LCBoZWlnaHQoKSk7CiAKICAgICAvLyA2LiBwYWludCBjb250aW51YXRpb24gb3V0bGluZXMuCiAg
ICAgaWYgKChwYWludFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50UGhhc2UgPT0g
UGFpbnRQaGFzZUNoaWxkT3V0bGluZXMpKSB7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiA1NzE2NSkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMzLDE1ICs5
MzMsMTUgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllYwogfQogCiB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGJvb2wgYmVnaW4s
IGJvb2wgZW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWxlLCBib29sIGJlZ2luLCBib29sIGVuZCkKIHsKICAgICBpZiAocGFp
bnROaW5lUGllY2VJbWFnZShncmFwaGljc0NvbnRleHQsIHR4LCB0eSwgdywgaCwgc3R5bGUsIHN0
eWxlLT5ib3JkZXJJbWFnZSgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgQ29sb3Im
IHRvcENvbG9yID0gc3R5bGUtPmJvcmRlclRvcENvbG9yKCk7Ci0gICAgY29uc3QgQ29sb3ImIGJv
dHRvbUNvbG9yID0gc3R5bGUtPmJvcmRlckJvdHRvbUNvbG9yKCk7Ci0gICAgY29uc3QgQ29sb3Im
IGxlZnRDb2xvciA9IHN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKTsKLSAgICBjb25zdCBDb2xvciYg
cmlnaHRDb2xvciA9IHN0eWxlLT5ib3JkZXJSaWdodENvbG9yKCk7CisgICAgY29uc3QgQ29sb3Im
IHRvcENvbG9yID0gc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRl
clRvcENvbG9yKTsKKyAgICBjb25zdCBDb2xvciYgYm90dG9tQ29sb3IgPSBzdHlsZS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IpOworICAgIGNvbnN0
IENvbG9yJiBsZWZ0Q29sb3IgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdENvbG9yKTsKKyAgICBjb25zdCBDb2xvciYgcmlnaHRDb2xvciA9IHN0eWxl
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yKTsKIAog
ICAgIGJvb2wgdG9wVHJhbnNwYXJlbnQgPSBzdHlsZS0+Ym9yZGVyVG9wSXNUcmFuc3BhcmVudCgp
OwogICAgIGJvb2wgYm90dG9tVHJhbnNwYXJlbnQgPSBzdHlsZS0+Ym9yZGVyQm90dG9tSXNUcmFu
c3BhcmVudCgpOwpAQCAtMTAwNiw3ICsxMDA2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3JkZXIoRwogICAgICAgICAgICAgeDIgLT0gdG9wUmlnaHQud2lkdGgoKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgs
IHR5LCB4MiwgdHkgKyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgQlNUb3AsIHRvcENvbG9yLCBz
dHlsZS0+Y29sb3IoKSwgdG9wU3R5bGUsCisgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFw
aGljc0NvbnRleHQsIHgsIHR5LCB4MiwgdHkgKyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgQlNU
b3AsIHRvcENvbG9yLCB0b3BTdHlsZSwKICAgICAgICAgICAgICAgICAgICBpZ25vcmVfbGVmdCA/
IDAgOiBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIGlnbm9yZV9yaWdodCA/IDAgOiBzdHlsZS0+
Ym9yZGVyUmlnaHRXaWR0aCgpKTsKIAogICAgICAgICBpZiAocmVuZGVyUmFkaWkpIHsKQEAgLTEw
MzQsNyArMTAzNCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEcK
IAogICAgICAgICAgICAgICAgIC8vIERyYXcgdXBwZXIgbGVmdCBhcmMKICAgICAgICAgICAgICAg
ICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGxlZnRYLCBsZWZ0WSwgdGhpY2tu
ZXNzLCB0b3BMZWZ0LCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQlNUb3AsIHRvcENvbG9yLCBzdHlsZS0+Y29sb3IoKSwgdG9w
U3R5bGUsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNUb3AsIHRvcENv
bG9yLCB0b3BTdHlsZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5TGVmdElubmVy
Q2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAg
ICAgICAgICAgICB9CkBAIC0xMDYwLDcgKzEwNjAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJvcmRlcihHCiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IHVwcGVyIHJpZ2h0
IGFyYwogICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwg
cmlnaHRYLCBsZWZ0WSwgdGhpY2tuZXNzLCB0b3BSaWdodCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vj
b25kQW5nbGVTcGFuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNUb3AsIHRvcENv
bG9yLCBzdHlsZS0+Y29sb3IoKSwgdG9wU3R5bGUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJTVG9wLCB0b3BDb2xvciwgdG9wU3R5bGUsIGZhbHNlKTsKICAgICAgICAg
ICAgICAgICBpZiAoYXBwbHlSaWdodElubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CkBAIC0xMDgzLDcgKzEwODMs
NyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHCiAgICAgICAgICAg
ICB4MiAtPSBib3R0b21SaWdodC53aWR0aCgpOwogICAgICAgICB9CiAKLSAgICAgICAgZHJhd0xp
bmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeCwgdHkgKyBoIC0gc3R5bGUtPmJvcmRlckJv
dHRvbVdpZHRoKCksIHgyLCB0eSArIGgsIEJTQm90dG9tLCBib3R0b21Db2xvciwgc3R5bGUtPmNv
bG9yKCksIGJvdHRvbVN0eWxlLAorICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3ND
b250ZXh0LCB4LCB0eSArIGggLSBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgeDIsIHR5ICsg
aCwgQlNCb3R0b20sIGJvdHRvbUNvbG9yLCBib3R0b21TdHlsZSwKICAgICAgICAgICAgICAgICAg
ICBpZ25vcmVfbGVmdCA/IDAgOiBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIGlnbm9yZV9yaWdo
dCA/IDAgOiBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKIAogICAgICAgICBpZiAocmVuZGVy
UmFkaWkpIHsKQEAgLTExMTEsNyArMTExMSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm9yZGVyKEcKIAogICAgICAgICAgICAgICAgIC8vIERyYXcgbG93ZXIgbGVmdCBhcmMK
ICAgICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGxlZnRY
LCBsZWZ0WSwgdGhpY2tuZXNzLCBib3R0b21MZWZ0LCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5n
bGVTcGFuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNCb3R0b20sIGJvdHRvbUNv
bG9yLCBzdHlsZS0+Y29sb3IoKSwgYm90dG9tU3R5bGUsIHRydWUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQlNCb3R0b20sIGJvdHRvbUNvbG9yLCBib3R0b21TdHlsZSwgdHJ1ZSk7
CiAgICAgICAgICAgICAgICAgaWYgKGFwcGx5TGVmdElubmVyQ2xpcCkKICAgICAgICAgICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CkBAIC0xMTMz
LDcgKzExMzMsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHCiAK
ICAgICAgICAgICAgICAgICAvLyBEcmF3IGxvd2VyIHJpZ2h0IGFyYwogICAgICAgICAgICAgICAg
IGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgcmlnaHRYLCByaWdodFksIHRoaWNr
bmVzcywgYm90dG9tUmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTQm90dG9tLCBib3R0b21Db2xvciwgc3R5bGUt
PmNvbG9yKCksIGJvdHRvbVN0eWxlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCU0JvdHRvbSwgYm90dG9tQ29sb3IsIGJvdHRvbVN0eWxlLCBmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgaWYgKGFwcGx5UmlnaHRJbm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICAgICAgfQpAQCAtMTE1Niw3ICsxMTU2
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoRwogICAgICAgICAg
ICAgeTIgLT0gYm90dG9tTGVmdC5oZWlnaHQoKTsKICAgICAgICAgfQogCi0gICAgICAgIGRyYXdM
aW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4LCB5LCB0eCArIHN0eWxlLT5ib3JkZXJM
ZWZ0V2lkdGgoKSwgeTIsIEJTTGVmdCwgbGVmdENvbG9yLCBzdHlsZS0+Y29sb3IoKSwgbGVmdFN0
eWxlLAorICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCwgeSwg
dHggKyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHkyLCBCU0xlZnQsIGxlZnRDb2xvciwgbGVm
dFN0eWxlLAogICAgICAgICAgICAgICAgICAgIGlnbm9yZV90b3AgPyAwIDogc3R5bGUtPmJvcmRl
clRvcFdpZHRoKCksIGlnbm9yZV9ib3R0b20gPyAwIDogc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRo
KCkpOwogCiAgICAgICAgIGlmIChyZW5kZXJSYWRpaSAmJiAoIXVwcGVyTGVmdEJvcmRlclN0eWxl
c01hdGNoIHx8ICFsb3dlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCkpIHsKQEAgLTExNzksNyArMTE3
OSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKEcKIAogICAgICAg
ICAgICAgICAgIC8vIERyYXcgdG9wIGxlZnQgYXJjCiAgICAgICAgICAgICAgICAgZHJhd0FyY0Zv
ckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0b3BYLCB0b3BZLCB0aGlja25lc3MsIHRvcExlZnQs
IGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCU0xlZnQsIGxlZnRDb2xvciwgc3R5bGUtPmNvbG9yKCksIGxlZnRTdHlsZSwgdHJ1
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU0xlZnQsIGxlZnRDb2xvciwgbGVm
dFN0eWxlLCB0cnVlKTsKICAgICAgICAgICAgICAgICBpZiAoYXBwbHlUb3BJbm5lckNsaXApCiAg
ICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICAg
ICAgfQpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRCb3JkZXIoRwogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyBib3R0b20gbGVmdCBhcmMKICAg
ICAgICAgICAgICAgICBkcmF3QXJjRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHRvcFgsIGJv
dHRvbVksIHRoaWNrbmVzcywgYm90dG9tTGVmdCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5n
bGVTcGFuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNMZWZ0LCBsZWZ0Q29sb3Is
IHN0eWxlLT5jb2xvcigpLCBsZWZ0U3R5bGUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJTTGVmdCwgbGVmdENvbG9yLCBsZWZ0U3R5bGUsIGZhbHNlKTsKICAgICAgICAg
ICAgICAgICBpZiAoYXBwbHlCb3R0b21Jbm5lckNsaXApCiAgICAgICAgICAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICAgICAgfQpAQCAtMTIyNSw3ICsxMjI1
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoRwogICAgICAgICAg
ICAgeTIgLT0gYm90dG9tUmlnaHQuaGVpZ2h0KCk7CiAgICAgICAgIH0KIAotICAgICAgICBkcmF3
TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCArIHcgLSBzdHlsZS0+Ym9yZGVyUmln
aHRXaWR0aCgpLCB5LCB0eCArIHcsIHkyLCBCU1JpZ2h0LCByaWdodENvbG9yLCBzdHlsZS0+Y29s
b3IoKSwgcmlnaHRTdHlsZSwKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29u
dGV4dCwgdHggKyB3IC0gc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwgeSwgdHggKyB3LCB5Miwg
QlNSaWdodCwgcmlnaHRDb2xvciwgcmlnaHRTdHlsZSwKICAgICAgICAgICAgICAgICAgICBpZ25v
cmVfdG9wID8gMCA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBpZ25vcmVfYm90dG9tID8gMCA6
IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKIAogICAgICAgICBpZiAocmVuZGVyUmFkaWkg
JiYgKCF1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggfHwgIWxvd2VyUmlnaHRCb3JkZXJTdHls
ZXNNYXRjaCkpIHsKQEAgLTEyNDgsNyArMTI0OCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKEcKIAogICAgICAgICAgICAgICAgIC8vIERyYXcgdG9wIHJpZ2h0IGFy
YwogICAgICAgICAgICAgICAgIGRyYXdBcmNGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdG9w
WCwgdG9wWSwgdGhpY2tuZXNzLCB0b3BSaWdodCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xl
U3BhbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTUmlnaHQsIHJpZ2h0Q29sb3Is
IHN0eWxlLT5jb2xvcigpLCByaWdodFN0eWxlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJTUmlnaHQsIHJpZ2h0Q29sb3IsIHJpZ2h0U3R5bGUsIHRydWUpOwogICAgICAg
ICAgICAgICAgIGlmIChhcHBseVRvcElubmVyQ2xpcCkKICAgICAgICAgICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CkBAIC0xMjcwLDcgKzEyNzAs
NyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihHCiAKICAgICAgICAg
ICAgICAgICAvLyBEcmF3IGJvdHRvbSByaWdodCBhcmMKICAgICAgICAgICAgICAgICBkcmF3QXJj
Rm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIGJvdHRvbVgsIGJvdHRvbVksIHRoaWNrbmVzcywg
Ym90dG9tUmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3BhbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJTUmlnaHQsIHJpZ2h0Q29sb3IsIHN0eWxlLT5jb2xvcigp
LCByaWdodFN0eWxlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1Jp
Z2h0LCByaWdodENvbG9yLCByaWdodFN0eWxlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgaWYg
KGFwcGx5Qm90dG9tSW5uZXJDbGlwKQogICAgICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQtPnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZpZWxkc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
aWVsZHNldC5jcHAJKHJldmlzaW9uIDU3MTY1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmllbGRzZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmllbGRzZXQuaCIKIAorI2luY2x1ZGUgIkNTU1By
b3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKIApAQCAtMTgxLDggKzE4Miw4IEBAIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBh
aW50TWFzayhQYWludEluZm8KIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm9yZGVyTWludXNM
ZWdlbmQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwgaW50IHR5LCBp
bnQgdywgaW50IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgaW50IGx4LCBpbnQgbHcsIGludCBsYikKIHsKLSAg
ICBjb25zdCBDb2xvciYgdGMgPSBzdHlsZS0+Ym9yZGVyVG9wQ29sb3IoKTsKLSAgICBjb25zdCBD
b2xvciYgYmMgPSBzdHlsZS0+Ym9yZGVyQm90dG9tQ29sb3IoKTsKKyAgICBjb25zdCBDb2xvciYg
dGMgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29s
b3IpOworICAgIGNvbnN0IENvbG9yJiBiYyA9IHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcik7CiAKICAgICBFQm9yZGVyU3R5bGUgdHMgPSBz
dHlsZS0+Ym9yZGVyVG9wU3R5bGUoKTsKICAgICBFQm9yZGVyU3R5bGUgYnMgPSBzdHlsZS0+Ym9y
ZGVyQm90dG9tU3R5bGUoKTsKQEAgLTE5OSwyMiArMjAwLDIyIEBAIHZvaWQgUmVuZGVyRmllbGRz
ZXQ6OnBhaW50Qm9yZGVyTWludXNMZWcKIAogICAgIGlmIChyZW5kZXJfdCkgewogICAgICAgICBp
ZiAobHggPj0gYm9yZGVyTGVmdFdpZHRoKQotICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRl
KGdyYXBoaWNzQ29udGV4dCwgdHgsIHR5LCB0eCArIG1pbihseCwgdyksIHR5ICsgc3R5bGUtPmJv
cmRlclRvcFdpZHRoKCksIEJTVG9wLCB0Yywgc3R5bGUtPmNvbG9yKCksIHRzLAorICAgICAgICAg
ICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHgsIHR5LCB0eCArIG1pbihs
eCwgdyksIHR5ICsgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIEJTVG9wLCB0YywgdHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgIChyZW5kZXJfbCAmJiAobHMgPT0gRE9UVEVEIHx8IGxzID09IERB
U0hFRCB8fCBscyA9PSBET1VCTEUpID8gYm9yZGVyTGVmdFdpZHRoIDogMCksCiAgICAgICAgICAg
ICAgICAgICAgICAgIChseCA+PSB3ICYmIHJlbmRlcl9yICYmIChycyA9PSBET1RURUQgfHwgcnMg
PT0gREFTSEVEIHx8IHJzID09IERPVUJMRSkgPyBib3JkZXJSaWdodFdpZHRoIDogMCkpOwogICAg
ICAgICBpZiAobHggKyBsdyA8PSAgdyAtIGJvcmRlclJpZ2h0V2lkdGgpCi0gICAgICAgICAgICBk
cmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCArIG1heCgwLCBseCArIGx3KSwg
dHksIHR4ICsgdywgdHkgKyBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgQlNUb3AsIHRjLCBzdHls
ZS0+Y29sb3IoKSwgdHMsCisgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3ND
b250ZXh0LCB0eCArIG1heCgwLCBseCArIGx3KSwgdHksIHR4ICsgdywgdHkgKyBzdHlsZS0+Ym9y
ZGVyVG9wV2lkdGgoKSwgQlNUb3AsIHRjLCB0cywKICAgICAgICAgICAgICAgICAgICAgICAgKGx4
ICsgbHcgPD0gMCAmJiByZW5kZXJfbCAmJiAobHMgPT0gRE9UVEVEIHx8IGxzID09IERBU0hFRCB8
fCBscyA9PSBET1VCTEUpID8gYm9yZGVyTGVmdFdpZHRoIDogMCksCiAgICAgICAgICAgICAgICAg
ICAgICAgIChyZW5kZXJfciAmJiAocnMgPT0gRE9UVEVEIHx8IHJzID09IERBU0hFRCB8fCBycyA9
PSBET1VCTEUpID8gYm9yZGVyUmlnaHRXaWR0aCA6IDApKTsKICAgICB9CiAKICAgICBpZiAocmVu
ZGVyX2IpCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4LCB0
eSArIGggLSBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgdHggKyB3LCB0eSArIGgsIEJTQm90
dG9tLCBiYywgc3R5bGUtPmNvbG9yKCksIGJzLAorICAgICAgICBkcmF3TGluZUZvckJveFNpZGUo
Z3JhcGhpY3NDb250ZXh0LCB0eCwgdHkgKyBoIC0gc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCks
IHR4ICsgdywgdHkgKyBoLCBCU0JvdHRvbSwgYmMsIGJzLAogICAgICAgICAgICAgICAgICAgIChy
ZW5kZXJfbCAmJiAobHMgPT0gRE9UVEVEIHx8IGxzID09IERBU0hFRCB8fCBscyA9PSBET1VCTEUp
ID8gc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIDogMCksCiAgICAgICAgICAgICAgICAgICAgKHJl
bmRlcl9yICYmIChycyA9PSBET1RURUQgfHwgcnMgPT0gREFTSEVEIHx8IHJzID09IERPVUJMRSkg
PyBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDogMCkpOwogCiAgICAgaWYgKHJlbmRlcl9sKSB7
Ci0gICAgICAgIGNvbnN0IENvbG9yJiBsYyA9IHN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKTsKKyAg
ICAgICAgY29uc3QgQ29sb3ImIGxjID0gc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRDb2xvcik7CiAgICAgICAgIGludCBzdGFydFkgPSB0eTsKIAogICAg
ICAgICBib29sIGlnbm9yZV90b3AgPQpAQCAtMjMzLDggKzIzNCw4IEBAIHZvaWQgUmVuZGVyRmll
bGRzZXQ6OnBhaW50Qm9yZGVyTWludXNMZWcKICAgICAgICAgICAgIHN0YXJ0WSA9IGxiOwogICAg
ICAgICB9CiAKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHgs
IHN0YXJ0WSwgdHggKyBib3JkZXJMZWZ0V2lkdGgsIHR5ICsgaCwgQlNMZWZ0LCBsYywgc3R5bGUt
PmNvbG9yKCksIGxzLAotICAgICAgICAgICAgICAgICAgIGlnbm9yZV90b3AgPyAwIDogc3R5bGUt
PmJvcmRlclRvcFdpZHRoKCksIGlnbm9yZV9ib3R0b20gPyAwIDogc3R5bGUtPmJvcmRlckJvdHRv
bVdpZHRoKCkpOworICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0
eCwgc3RhcnRZLCB0eCArIGJvcmRlckxlZnRXaWR0aCwgdHkgKyBoLCBCU0xlZnQsIGxjLCBscywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZV90b3AgPyAwIDogc3R5bGUtPmJvcmRl
clRvcFdpZHRoKCksIGlnbm9yZV9ib3R0b20gPyAwIDogc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRo
KCkpOwogICAgIH0KIAogICAgIGlmIChyZW5kZXJfcikgewpAQCAtMjU3LDcgKzI1OCw3IEBAIHZv
aWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm9yZGVyTWludXNMZWcKICAgICAgICAgICAgIHN0YXJ0
WSA9IGxiOwogICAgICAgICB9CiAKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwgdHggKyB3IC0gYm9yZGVyUmlnaHRXaWR0aCwgc3RhcnRZLCB0eCArIHcsIHR5ICsg
aCwgQlNSaWdodCwgcmMsIHN0eWxlLT5jb2xvcigpLCBycywKKyAgICAgICAgZHJhd0xpbmVGb3JC
b3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggKyB3IC0gYm9yZGVyUmlnaHRXaWR0aCwgc3RhcnRZ
LCB0eCArIHcsIHR5ICsgaCwgQlNSaWdodCwgcmMsIHJzLAogICAgICAgICAgICAgICAgICAgIGln
bm9yZV90b3AgPyAwIDogc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIGlnbm9yZV9ib3R0b20gPyAw
IDogc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOwogICAgIH0KIH0KSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDU3MTY1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzAsNyArNDcwLDcgQEAgdm9pZCBS
ZW5kZXJJbWFnZTo6cGFpbnRGb2N1c1JpbmdzKFBhaW50SQogICAgICAgICAKICAgICAgICAgVmVj
dG9yPFBhdGg+IGZvY3VzUmluZ1BhdGhzOwogICAgICAgICBmb2N1c1JpbmdQYXRocy5hcHBlbmQo
YXJlYUVsZW1lbnQtPmdldFBhdGgodGhpcykpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+
ZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdQYXRocywgc3R5bGUtPm91dGxpbmVXaWR0aCgpLCBzdHls
ZS0+b3V0bGluZU9mZnNldCgpLCBzdHlsZS0+b3V0bGluZUNvbG9yKCkpOworICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdQYXRocywgc3R5bGUtPm91dGxp
bmVXaWR0aCgpLCBzdHlsZS0+b3V0bGluZU9mZnNldCgpLCBzdHlsZS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAkocmV2aXNpb24gNTcxNjUpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NjUsMjEgKzk2NSwyMCBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKEdyYXBoaWNz
CiAgICAgaWYgKCFoYXNPdXRsaW5lKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAo
c3R5bGUoKS0+b3V0bGluZVN0eWxlSXNBdXRvKCkgfHwgaGFzT3V0bGluZUFubm90YXRpb24oKSkg
ewotICAgICAgICBpbnQgb3cgPSBzdHlsZSgpLT5vdXRsaW5lV2lkdGgoKTsKLSAgICAgICAgQ29s
b3Igb2MgPSBzdHlsZSgpLT5vdXRsaW5lQ29sb3IoKTsKLSAgICAgICAgaWYgKCFvYy5pc1ZhbGlk
KCkpCi0gICAgICAgICAgICBvYyA9IHN0eWxlKCktPmNvbG9yKCk7CisgICAgUmVuZGVyU3R5bGUq
IHN0eWxlVG9Vc2UgPSBzdHlsZSgpOworICAgIGlmIChzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGVJ
c0F1dG8oKSB8fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpKSB7CisgICAgICAgIGludCBvdyA9IHN0
eWxlVG9Vc2UtPm91dGxpbmVXaWR0aCgpOworICAgICAgICBDb2xvciBvYyA9IHN0eWxlVG9Vc2Ut
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcik7CiAKICAgICAg
ICAgVmVjdG9yPEludFJlY3Q+IGZvY3VzUmluZ1JlY3RzOwogICAgICAgICBhZGRGb2N1c1JpbmdS
ZWN0cyhmb2N1c1JpbmdSZWN0cywgdHgsIHR5KTsKLSAgICAgICAgaWYgKHN0eWxlKCktPm91dGxp
bmVTdHlsZUlzQXV0bygpKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3Rm9jdXNS
aW5nKGZvY3VzUmluZ1JlY3RzLCBvdywgc3R5bGUoKS0+b3V0bGluZU9mZnNldCgpLCBvYyk7Cisg
ICAgICAgIGlmIChzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSkKKyAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdSZWN0cywgb3csIHN0eWxl
VG9Vc2UtPm91dGxpbmVPZmZzZXQoKSwgb2MpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBh
ZGRQREZVUkxSZWN0KGdyYXBoaWNzQ29udGV4dCwgdW5pb25SZWN0KGZvY3VzUmluZ1JlY3RzKSk7
CiAgICAgfQogCi0gICAgaWYgKHN0eWxlKCktPm91dGxpbmVTdHlsZUlzQXV0bygpIHx8IHN0eWxl
KCktPm91dGxpbmVTdHlsZSgpID09IEJOT05FKQorICAgIGlmIChzdHlsZVRvVXNlLT5vdXRsaW5l
U3R5bGVJc0F1dG8oKSB8fCBzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGUoKSA9PSBCTk9ORSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwpAQCAtMTAwMCwxMSAr
OTk5LDEwIEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoR3JhcGhpY3MKIHZvaWQg
UmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBpbnQgdHgsIGludCB0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEludFJlY3QmIGxhc3RsaW5lLCBjb25zdCBJbnRSZWN0JiB0aGlzbGlu
ZSwgY29uc3QgSW50UmVjdCYgbmV4dGxpbmUpCiB7Ci0gICAgaW50IG93ID0gc3R5bGUoKS0+b3V0
bGluZVdpZHRoKCk7Ci0gICAgRUJvcmRlclN0eWxlIG9zID0gc3R5bGUoKS0+b3V0bGluZVN0eWxl
KCk7Ci0gICAgQ29sb3Igb2MgPSBzdHlsZSgpLT5vdXRsaW5lQ29sb3IoKTsKLSAgICBpZiAoIW9j
LmlzVmFsaWQoKSkKLSAgICAgICAgb2MgPSBzdHlsZSgpLT5jb2xvcigpOworICAgIFJlbmRlclN0
eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKKyAgICBpbnQgb3cgPSBzdHlsZVRvVXNlLT5vdXRs
aW5lV2lkdGgoKTsKKyAgICBFQm9yZGVyU3R5bGUgb3MgPSBzdHlsZVRvVXNlLT5vdXRsaW5lU3R5
bGUoKTsKKyAgICBDb2xvciBvYyA9IHN0eWxlVG9Vc2UtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eU91dGxpbmVDb2xvcik7CiAKICAgICBpbnQgb2Zmc2V0ID0gc3R5bGUoKS0+b3V0
bGluZU9mZnNldCgpOwogCkBAIC0xMDIwLDcgKzEwMTgsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6
cGFpbnRPdXRsaW5lRm9yTGluZShHCiAgICAgICAgICAgICAgICBsLAogICAgICAgICAgICAgICAg
YiArIChuZXh0bGluZS5pc0VtcHR5KCkgfHwgdGhpc2xpbmUueCgpIDw9IG5leHRsaW5lLngoKSB8
fCAobmV4dGxpbmUucmlnaHQoKSAtIDEpIDw9IHRoaXNsaW5lLngoKSA/IG93IDogMCksCiAgICAg
ICAgICAgICAgICBCU0xlZnQsCi0gICAgICAgICAgICAgICBvYywgc3R5bGUoKS0+Y29sb3IoKSwg
b3MsCisgICAgICAgICAgICAgICBvYywgb3MsCiAgICAgICAgICAgICAgICAobGFzdGxpbmUuaXNF
bXB0eSgpIHx8IHRoaXNsaW5lLngoKSA8IGxhc3RsaW5lLngoKSB8fCAobGFzdGxpbmUucmlnaHQo
KSAtIDEpIDw9IHRoaXNsaW5lLngoKSA/IG93IDogLW93KSwKICAgICAgICAgICAgICAgIChuZXh0
bGluZS5pc0VtcHR5KCkgfHwgdGhpc2xpbmUueCgpIDw9IG5leHRsaW5lLngoKSB8fCAobmV4dGxp
bmUucmlnaHQoKSAtIDEpIDw9IHRoaXNsaW5lLngoKSA/IG93IDogLW93KSk7CiAgICAgCkBAIC0x
MDMxLDcgKzEwMjksNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShH
CiAgICAgICAgICAgICAgICByICsgb3csCiAgICAgICAgICAgICAgICBiICsgKG5leHRsaW5lLmlz
RW1wdHkoKSB8fCBuZXh0bGluZS5yaWdodCgpIDw9IHRoaXNsaW5lLnJpZ2h0KCkgfHwgKHRoaXNs
aW5lLnJpZ2h0KCkgLSAxKSA8PSBuZXh0bGluZS54KCkgPyBvdyA6IDApLAogICAgICAgICAgICAg
ICAgQlNSaWdodCwKLSAgICAgICAgICAgICAgIG9jLCBzdHlsZSgpLT5jb2xvcigpLCBvcywKKyAg
ICAgICAgICAgICAgIG9jLCBvcywKICAgICAgICAgICAgICAgIChsYXN0bGluZS5pc0VtcHR5KCkg
fHwgbGFzdGxpbmUucmlnaHQoKSA8IHRoaXNsaW5lLnJpZ2h0KCkgfHwgKHRoaXNsaW5lLnJpZ2h0
KCkgLSAxKSA8PSBsYXN0bGluZS54KCkgPyBvdyA6IC1vdyksCiAgICAgICAgICAgICAgICAobmV4
dGxpbmUuaXNFbXB0eSgpIHx8IG5leHRsaW5lLnJpZ2h0KCkgPD0gdGhpc2xpbmUucmlnaHQoKSB8
fCAodGhpc2xpbmUucmlnaHQoKSAtIDEpIDw9IG5leHRsaW5lLngoKSA/IG93IDogLW93KSk7CiAg
ICAgLy8gdXBwZXIgZWRnZQpAQCAtMTA0MSw3ICsxMDM5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6
OnBhaW50T3V0bGluZUZvckxpbmUoRwogICAgICAgICAgICAgICAgICAgIHQgLSBvdywKICAgICAg
ICAgICAgICAgICAgICBtaW4ocitvdywgKGxhc3RsaW5lLmlzRW1wdHkoKSA/IDEwMDAwMDAgOiB0
eCArIGxhc3RsaW5lLngoKSkpLAogICAgICAgICAgICAgICAgICAgIHQgLAotICAgICAgICAgICAg
ICAgICAgIEJTVG9wLCBvYywgc3R5bGUoKS0+Y29sb3IoKSwgb3MsCisgICAgICAgICAgICAgICAg
ICAgQlNUb3AsIG9jLCBvcywKICAgICAgICAgICAgICAgICAgICBvdywKICAgICAgICAgICAgICAg
ICAgICAoIWxhc3RsaW5lLmlzRW1wdHkoKSAmJiB0eCArIGxhc3RsaW5lLngoKSArIDEgPCByICsg
b3cpID8gLW93IDogb3cpOwogICAgIApAQCAtMTA1MSw3ICsxMDQ5LDcgQEAgdm9pZCBSZW5kZXJJ
bmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoRwogICAgICAgICAgICAgICAgICAgIHQgLSBvdywK
ICAgICAgICAgICAgICAgICAgICByICsgb3csCiAgICAgICAgICAgICAgICAgICAgdCAsCi0gICAg
ICAgICAgICAgICAgICAgQlNUb3AsIG9jLCBzdHlsZSgpLT5jb2xvcigpLCBvcywKKyAgICAgICAg
ICAgICAgICAgICBCU1RvcCwgb2MsIG9zLAogICAgICAgICAgICAgICAgICAgICghbGFzdGxpbmUu
aXNFbXB0eSgpICYmIGwgLSBvdyA8IHR4ICsgbGFzdGxpbmUucmlnaHQoKSkgPyAtb3cgOiBvdywK
ICAgICAgICAgICAgICAgICAgICBvdyk7CiAgICAgCkBAIC0xMDYyLDcgKzEwNjAsNyBAQCB2b2lk
IFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHCiAgICAgICAgICAgICAgICAgICAg
YiwKICAgICAgICAgICAgICAgICAgICBtaW4ociArIG93LCAhbmV4dGxpbmUuaXNFbXB0eSgpID8g
dHggKyBuZXh0bGluZS54KCkgKyAxIDogMTAwMDAwMCksCiAgICAgICAgICAgICAgICAgICAgYiAr
IG93LAotICAgICAgICAgICAgICAgICAgIEJTQm90dG9tLCBvYywgc3R5bGUoKS0+Y29sb3IoKSwg
b3MsCisgICAgICAgICAgICAgICAgICAgQlNCb3R0b20sIG9jLCBvcywKICAgICAgICAgICAgICAg
ICAgICBvdywKICAgICAgICAgICAgICAgICAgICAoIW5leHRsaW5lLmlzRW1wdHkoKSAmJiB0eCAr
IG5leHRsaW5lLngoKSArIDEgPCByICsgb3cpID8gLW93IDogb3cpOwogICAgIApAQCAtMTA3Miw3
ICsxMDcwLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoRwogICAg
ICAgICAgICAgICAgICAgIGIsCiAgICAgICAgICAgICAgICAgICAgciArIG93LAogICAgICAgICAg
ICAgICAgICAgIGIgKyBvdywKLSAgICAgICAgICAgICAgICAgICBCU0JvdHRvbSwgb2MsIHN0eWxl
KCktPmNvbG9yKCksIG9zLAorICAgICAgICAgICAgICAgICAgIEJTQm90dG9tLCBvYywgb3MsCiAg
ICAgICAgICAgICAgICAgICAgKCFuZXh0bGluZS5pc0VtcHR5KCkgJiYgbCAtIG93IDwgdHggKyBu
ZXh0bGluZS5yaWdodCgpKSA/IC1vdyA6IG93LAogICAgICAgICAgICAgICAgICAgIG93KTsKIH0K
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gNTcxNjUpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTgs
NyArNjk4LDcgQEAgYm9vbCBSZW5kZXJPYmplY3Q6Om11c3RSZXBhaW50QmFja2dyb3VuZAogfQog
CiB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJveFNpZGUgcywgQ29sb3IgYywgY29uc3Qg
Q29sb3ImIHRleHRjb2xvciwgRUJvcmRlclN0eWxlIHN0eWxlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCb3hTaWRlIHMsIENvbG9yIGMsIEVCb3JkZXJTdHlsZSBzdHls
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFkamJ3MSwgaW50
IGFkamJ3MikKIHsKICAgICBpbnQgd2lkdGggPSAocyA9PSBCU1RvcCB8fCBzID09IEJTQm90dG9t
ID8geTIgLSB5MSA6IHgyIC0geDEpOwpAQCAtNzA2LDEzICs3MDYsNiBAQCB2b2lkIFJlbmRlck9i
amVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyCiAgICAgaWYgKHN0eWxlID09IERPVUJMRSAmJiB3
aWR0aCA8IDMpCiAgICAgICAgIHN0eWxlID0gU09MSUQ7CiAKLSAgICBpZiAoIWMuaXNWYWxpZCgp
KSB7Ci0gICAgICAgIGlmIChzdHlsZSA9PSBJTlNFVCB8fCBzdHlsZSA9PSBPVVRTRVQgfHwgc3R5
bGUgPT0gUklER0UgfHwgc3R5bGUgPT0gR1JPT1ZFKQotICAgICAgICAgICAgYy5zZXRSR0IoMjM4
LCAyMzgsIDIzOCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGMgPSB0ZXh0Y29sb3I7Ci0g
ICAgfQotCiAgICAgc3dpdGNoIChzdHlsZSkgewogICAgICAgICBjYXNlIEJOT05FOgogICAgICAg
ICBjYXNlIEJISURERU46CkBAIC03NjQsMzQgKzc1NywzNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6
ZHJhd0xpbmVGb3JCb3hTaWRlKEdyCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQlNUb3A6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0
LCB4MSArIG1heCgoLWFkamJ3MSAqIDIgKyAxKSAvIDMsIDApLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB5MSwgeDIgLSBtYXgoKC1hZGpidzIgKiAyICsgMSkgLyAzLCAwKSwg
eTEgKyB0aGlyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4
dGNvbG9yLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgU09MSUQsIGFkamJ3MWJpZ3RoaXJkLCBh
ZGpidzJiaWd0aGlyZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNp
ZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSArIG1heCgoYWRqYncxICogMiArIDEpIC8gMywgMCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkyIC0gdGhpcmQsIHgyIC0gbWF4KChh
ZGpidzIgKiAyICsgMSkgLyAzLCAwKSwgeTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHMsIGMsIHRleHRjb2xvciwgU09MSUQsIGFkamJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0
aGlyZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIFNPTElELCBh
ZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQlNMZWZ0OgogICAgICAgICAgICAgICAg
ICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEsIHkxICsgbWF4
KCgtYWRqYncxICogMiArIDEpIC8gMywgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHgxICsgdGhpcmQsIHkyIC0gbWF4KCgtYWRqYncyICogMiArIDEpIC8gMywgMCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xvciwgU09MSUQs
IGFkamJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMsIGMsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQp
OwogICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29u
dGV4dCwgeDIgLSB0aGlyZCwgeTEgKyBtYXgoKGFkamJ3MSAqIDIgKyAxKSAvIDMsIDApLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwgeTIgLSBtYXgoKGFkamJ3MiAqIDIg
KyAxKSAvIDMsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0
ZXh0Y29sb3IsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQs
IGFkamJ3MmJpZ3RoaXJkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICBjYXNlIEJTQm90dG9tOgogICAgICAgICAgICAgICAgICAgICAgICAgZHJh
d0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEgKyBtYXgoKGFkamJ3MSAqIDIgKyAx
KSAvIDMsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MSwgeDIgLSBt
YXgoKGFkamJ3MiAqIDIgKyAxKSAvIDMsIDApLCB5MSArIHRoaXJkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNPTElELCBhZGpidzFiaWd0aGly
ZCwgYWRqYncyYmlndGhpcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
LCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3RoaXJkKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgxICsgbWF4
KCgtYWRqYncxICogMiArIDEpIC8gMywgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHkyIC0gdGhpcmQsIHgyIC0gbWF4KCgtYWRqYncyICogMiArIDEpIC8gMywgMCksIHky
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjLCB0ZXh0Y29sb3IsIFNP
TElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzLCBjLCBTT0xJRCwgYWRqYncxYmlndGhpcmQsIGFkamJ3MmJpZ3Ro
aXJkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICBjYXNlIEJTUmlnaHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNp
ZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSwgeTEgKyBtYXgoKGFkamJ3MSAqIDIgKyAxKSAvIDMsIDAp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSArIHRoaXJkLCB5MiAtIG1h
eCgoYWRqYncyICogMiArIDEpIC8gMywgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHMsIGMsIHRleHRjb2xvciwgU09MSUQsIGFkamJ3MWJpZ3RoaXJkLCBhZGpidzJiaWd0
aGlyZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIFNPTElELCBh
ZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDIgLSB0aGlyZCwgeTEgKyBtYXgo
KC1hZGpidzEgKiAyICsgMSkgLyAzLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeDIsIHkyIC0gbWF4KCgtYWRqYncyICogMiArIDEpIC8gMywgMCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xvciwgU09MSUQsIGFkamJ3MWJp
Z3RoaXJkLCBhZGpidzJiaWd0aGlyZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHMsIGMsIFNPTElELCBhZGpidzFiaWd0aGlyZCwgYWRqYncyYmlndGhpcmQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTgxOCwyNyArODExLDI3IEBAIHZvaWQg
UmVuZGVyT2JqZWN0OjpkcmF3TGluZUZvckJveFNpZGUoR3IKICAgICAgICAgICAgIHN3aXRjaCAo
cykgewogICAgICAgICAgICAgICAgIGNhc2UgQlNUb3A6CiAgICAgICAgICAgICAgICAgICAgIGRy
YXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgxICsgbWF4KC1hZGpidzEsIDApIC8g
MiwgeTEsIHgyIC0gbWF4KC1hZGpidzIsIDApIC8gMiwgKHkxICsgeTIgKyAxKSAvIDIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNvbG9yLCBzMSwgYWRqYncxYmln
aGFsZiwgYWRqYncyYmlnaGFsZik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywg
YywgczEsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOwogICAgICAgICAgICAgICAgICAg
ICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSArIG1heChhZGpidzEgKyAx
LCAwKSAvIDIsICh5MSArIHkyICsgMSkgLyAyLCB4MiAtIG1heChhZGpidzIgKyAxLCAwKSAvIDIs
IHkyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xvciwgczIs
IGFkamJ3MSAvIDIsIGFkamJ3MiAvIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHMsIGMsIHMyLCBhZGpidzEgLyAyLCBhZGpidzIgLyAyKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBCU0xlZnQ6CiAgICAgICAgICAgICAgICAgICAg
IGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgxLCB5MSArIG1heCgtYWRqYncx
LCAwKSAvIDIsICh4MSArIHgyICsgMSkgLyAyLCB5MiAtIG1heCgtYWRqYncyLCAwKSAvIDIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNvbG9yLCBzMSwgYWRqYncx
YmlnaGFsZiwgYWRqYncyYmlnaGFsZik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cywgYywgczEsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOwogICAgICAgICAgICAgICAg
ICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCAoeDEgKyB4MiArIDEpIC8g
MiwgeTEgKyBtYXgoYWRqYncxICsgMSwgMCkgLyAyLCB4MiwgeTIgLSBtYXgoYWRqYncyICsgMSwg
MCkgLyAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGMsIHRleHRjb2xvciwg
czIsIGFkamJ3MSAvIDIsIGFkamJ3MiAvIDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHMsIGMsIHMyLCBhZGpidzEgLyAyLCBhZGpidzIgLyAyKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBCU0JvdHRvbToKICAgICAgICAgICAgICAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEgKyBtYXgoYWRqYncx
LCAwKSAvIDIsIHkxLCB4MiAtIG1heChhZGpidzIsIDApIC8gMiwgKHkxICsgeTIgKyAxKSAvIDIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNvbG9yLCBzMiwgYWRq
YncxYmlnaGFsZiwgYWRqYncyYmlnaGFsZik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcywgYywgczIsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOwogICAgICAgICAgICAg
ICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSArIG1heCgtYWRq
YncxICsgMSwgMCkgLyAyLCAoeTEgKyB5MiArIDEpIC8gMiwgeDIgLSBtYXgoLWFkamJ3MiArIDEs
IDApIC8gMiwgeTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNv
bG9yLCBzMSwgYWRqYncxLzIsIGFkamJ3Mi8yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzLCBjLCBzMSwgYWRqYncxIC8gMiwgYWRqYncyIC8gMik7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQlNSaWdodDoKICAgICAgICAgICAgICAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEsIHkxICsgbWF4KGFk
amJ3MSwgMCkgLyAyLCAoeDEgKyB4MiArIDEpIC8gMiwgeTIgLSBtYXgoYWRqYncyLCAwKSAvIDIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNvbG9yLCBzMiwgYWRq
YncxYmlnaGFsZiwgYWRqYncyYmlnaGFsZik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcywgYywgczIsIGFkamJ3MWJpZ2hhbGYsIGFkamJ3MmJpZ2hhbGYpOwogICAgICAgICAgICAg
ICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCAoeDEgKyB4MiArIDEp
IC8gMiwgeTEgKyBtYXgoLWFkamJ3MSArIDEsIDApIC8gMiwgeDIsIHkyIC0gbWF4KC1hZGpidzIg
KyAxLCAwKSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgYywgdGV4dGNv
bG9yLCBzMSwgYWRqYncxLzIsIGFkamJ3Mi8yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzLCBjLCBzMSwgYWRqYncxIC8gMiwgYWRqYncyIC8gMik7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC04OTQsMTkg
Kzg4NywxMiBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyCiB9CiAK
IHZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3QXJjRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgaW50IHgsIGludCB5LCBmbG9hdCB0aGlja25lc3MsIEludFNpemUgcmFk
aXVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbmdsZVN0YXJ0
LCBpbnQgYW5nbGVTcGFuLCBCb3hTaWRlIHMsIENvbG9yIGMsIGNvbnN0IENvbG9yJiB0ZXh0Q29s
b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFuZ2xlU3RhcnQs
IGludCBhbmdsZVNwYW4sIEJveFNpZGUgcywgQ29sb3IgYywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFQm9yZGVyU3R5bGUgc3R5bGUsIGJvb2wgZmlyc3RDb3JuZXIpCiB7
CiAgICAgaWYgKChzdHlsZSA9PSBET1VCTEUgJiYgdGhpY2tuZXNzIC8gMiA8IDMpIHx8ICgoc3R5
bGUgPT0gUklER0UgfHwgc3R5bGUgPT0gR1JPT1ZFKSAmJiB0aGlja25lc3MgLyAyIDwgMikpCiAg
ICAgICAgIHN0eWxlID0gU09MSUQ7CiAKLSAgICBpZiAoIWMuaXNWYWxpZCgpKSB7Ci0gICAgICAg
IGlmIChzdHlsZSA9PSBJTlNFVCB8fCBzdHlsZSA9PSBPVVRTRVQgfHwgc3R5bGUgPT0gUklER0Ug
fHwgc3R5bGUgPT0gR1JPT1ZFKQotICAgICAgICAgICAgYy5zZXRSR0IoMjM4LCAyMzgsIDIzOCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGMgPSB0ZXh0Q29sb3I7Ci0gICAgfQotCiAgICAg
c3dpdGNoIChzdHlsZSkgewogICAgICAgICBjYXNlIEJOT05FOgogICAgICAgICBjYXNlIEJISURE
RU46CkBAIC05OTQsMzMgKzk4MCwzMiBAQCB2b2lkIFJlbmRlck9iamVjdDo6YWRkUERGVVJMUmVj
dChHcmFwaGljCiAgICAgY29udGV4dC0+c2V0VVJMRm9yUmVjdChuLT5kb2N1bWVudCgpLT5jb21w
bGV0ZVVSTChocmVmKSwgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjpwYWludE91dGxp
bmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwgaW50IHR5LCBpbnQg
dywgaW50IGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK3ZvaWQgUmVuZGVyT2JqZWN0Ojpw
YWludE91dGxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwgaW50
IHR5LCBpbnQgdywgaW50IGgpCiB7CiAgICAgaWYgKCFoYXNPdXRsaW5lKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGludCBvdyA9IHN0eWxlLT5vdXRsaW5lV2lkdGgoKTsKLSAgICBFQm9yZGVy
U3R5bGUgb3MgPSBzdHlsZS0+b3V0bGluZVN0eWxlKCk7CisgICAgUmVuZGVyU3R5bGUqIHN0eWxl
VG9Vc2UgPSBzdHlsZSgpOworICAgIGludCBvdyA9IHN0eWxlVG9Vc2UtPm91dGxpbmVXaWR0aCgp
OworICAgIEVCb3JkZXJTdHlsZSBvcyA9IHN0eWxlVG9Vc2UtPm91dGxpbmVTdHlsZSgpOwogCi0g
ICAgQ29sb3Igb2MgPSBzdHlsZS0+b3V0bGluZUNvbG9yKCk7Ci0gICAgaWYgKCFvYy5pc1ZhbGlk
KCkpCi0gICAgICAgIG9jID0gc3R5bGUtPmNvbG9yKCk7CisgICAgQ29sb3Igb2MgPSBzdHlsZVRv
VXNlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpOwogCi0g
ICAgaW50IG9mZnNldCA9IHN0eWxlLT5vdXRsaW5lT2Zmc2V0KCk7CisgICAgaW50IG9mZnNldCA9
IHN0eWxlVG9Vc2UtPm91dGxpbmVPZmZzZXQoKTsKIAotICAgIGlmIChzdHlsZS0+b3V0bGluZVN0
eWxlSXNBdXRvKCkgfHwgaGFzT3V0bGluZUFubm90YXRpb24oKSkgewotICAgICAgICBpZiAoIXRo
ZW1lKCktPnN1cHBvcnRzRm9jdXNSaW5nKHN0eWxlKSkgeworICAgIGlmIChzdHlsZVRvVXNlLT5v
dXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpKSB7CisgICAgICAg
IGlmICghdGhlbWUoKS0+c3VwcG9ydHNGb2N1c1Jpbmcoc3R5bGVUb1VzZSkpIHsKICAgICAgICAg
ICAgIC8vIE9ubHkgcGFpbnQgdGhlIGZvY3VzIHJpbmcgYnkgaGFuZCBpZiB0aGUgdGhlbWUgaXNu
J3QgYWJsZSB0byBkcmF3IHRoZSBmb2N1cyByaW5nLgogICAgICAgICAgICAgVmVjdG9yPEludFJl
Y3Q+IGZvY3VzUmluZ1JlY3RzOwogICAgICAgICAgICAgYWRkRm9jdXNSaW5nUmVjdHMoZm9jdXNS
aW5nUmVjdHMsIHR4LCB0eSk7Ci0gICAgICAgICAgICBpZiAoc3R5bGUtPm91dGxpbmVTdHlsZUlz
QXV0bygpKQorICAgICAgICAgICAgaWYgKHN0eWxlVG9Vc2UtPm91dGxpbmVTdHlsZUlzQXV0bygp
KQogICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1c1Jp
bmdSZWN0cywgb3csIG9mZnNldCwgb2MpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIGFkZFBERlVSTFJlY3QoZ3JhcGhpY3NDb250ZXh0LCB1bmlvblJlY3QoZm9jdXNSaW5nUmVj
dHMpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChzdHlsZS0+b3V0bGluZVN0eWxlSXNB
dXRvKCkgfHwgc3R5bGUtPm91dGxpbmVTdHlsZSgpID09IEJOT05FKQorICAgIGlmIChzdHlsZVRv
VXNlLT5vdXRsaW5lU3R5bGVJc0F1dG8oKSB8fCBzdHlsZVRvVXNlLT5vdXRsaW5lU3R5bGUoKSA9
PSBCTk9ORSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdHggLT0gb2Zmc2V0OwpAQCAtMTAzMSwx
NyArMTAxNiwxMCBAQCB2b2lkIFJlbmRlck9iamVjdDo6cGFpbnRPdXRsaW5lKEdyYXBoaWNzCiAg
ICAgaWYgKGggPCAwIHx8IHcgPCAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBkcmF3TGluZUZv
ckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB0eCAtIG93LCB0eSAtIG93LCB0eCwgdHkgKyBoICsg
b3csCi0gICAgICAgICAgICAgICBCU0xlZnQsIENvbG9yKG9jKSwgc3R5bGUtPmNvbG9yKCksIG9z
LCBvdywgb3cpOwotCi0gICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHgg
LSBvdywgdHkgLSBvdywgdHggKyB3ICsgb3csIHR5LAotICAgICAgICAgICAgICAgQlNUb3AsIENv
bG9yKG9jKSwgc3R5bGUtPmNvbG9yKCksIG9zLCBvdywgb3cpOwotCi0gICAgZHJhd0xpbmVGb3JC
b3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggKyB3LCB0eSAtIG93LCB0eCArIHcgKyBvdywgdHkg
KyBoICsgb3csCi0gICAgICAgICAgICAgICBCU1JpZ2h0LCBDb2xvcihvYyksIHN0eWxlLT5jb2xv
cigpLCBvcywgb3csIG93KTsKLQotICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRl
eHQsIHR4IC0gb3csIHR5ICsgaCwgdHggKyB3ICsgb3csIHR5ICsgaCArIG93LAotICAgICAgICAg
ICAgICAgQlNCb3R0b20sIENvbG9yKG9jKSwgc3R5bGUtPmNvbG9yKCksIG9zLCBvdywgb3cpOwor
ICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHR4IC0gb3csIHR5IC0gb3cs
IHR4LCB0eSArIGggKyBvdywgQlNMZWZ0LCBvYywgb3MsIG93LCBvdyk7CisgICAgZHJhd0xpbmVG
b3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgdHggLSBvdywgdHkgLSBvdywgdHggKyB3ICsgb3cs
IHR5LCBCU1RvcCwgb2MsIG9zLCBvdywgb3cpOworICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFw
aGljc0NvbnRleHQsIHR4ICsgdywgdHkgLSBvdywgdHggKyB3ICsgb3csIHR5ICsgaCArIG93LCBC
U1JpZ2h0LCBvYywgb3MsIG93LCBvdyk7CisgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwgdHggLSBvdywgdHkgKyBoLCB0eCArIHcgKyBvdywgdHkgKyBoICsgb3csIEJTQm90
dG9tLCBvYywgb3MsIG93LCBvdyk7CiB9CiAKIEludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0
ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMpCkBAIC0yMjA5LDIxICsyMTg3LDE3
IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlck9iamVjdDo6Z2UKICAgICByZXR1cm4g
cmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIENvbG9yIGRlY29yYXRpb25Db2xvcihSZW5k
ZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgQ29sb3IgZGVjb3JhdGlvbkNvbG9yKFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCiB7CiAgICAgQ29sb3IgcmVzdWx0OwotICAgIGlmIChzdHlsZS0+dGV4dFN0
cm9rZVdpZHRoKCkgPiAwKSB7CisgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT50ZXh0U3Ryb2tl
V2lkdGgoKSA+IDApIHsKICAgICAgICAgLy8gUHJlZmVyIHN0cm9rZSBjb2xvciBpZiBwb3NzaWJs
ZSBidXQgbm90IGlmIGl0J3MgZnVsbHkgdHJhbnNwYXJlbnQuCi0gICAgICAgIHJlc3VsdCA9IHN0
eWxlLT50ZXh0U3Ryb2tlQ29sb3IoKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCgpKQot
ICAgICAgICAgICAgcmVzdWx0ID0gc3R5bGUtPmNvbG9yKCk7CisgICAgICAgIHJlc3VsdCA9IHJl
bmRlcmVyLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0U3Ryb2tlQ29sb3IpOwogICAgICAgICBpZiAocmVzdWx0LmFscGhhKCkpCiAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICByZXN1bHQgPSBzdHlsZS0+dGV4dEZp
bGxDb2xvcigpOwotICAgIGlmICghcmVzdWx0LmlzVmFsaWQoKSkKLSAgICAgICAgcmVzdWx0ID0g
c3R5bGUtPmNvbG9yKCk7CisgICAgcmVzdWx0ID0gcmVuZGVyZXItPnN0eWxlKCktPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTIyMzYsMTUgKzIyMTAsMTUgQEAgdm9pZCBSZW5kZXJPYmplY3Q6
OmdldFRleHREZWNvcmF0aW9uQ29sbwogICAgICAgICBpZiAoY3VyckRlY3MpIHsKICAgICAgICAg
ICAgIGlmIChjdXJyRGVjcyAmIFVOREVSTElORSkgewogICAgICAgICAgICAgICAgIGRlY29yYXRp
b25zICY9IH5VTkRFUkxJTkU7Ci0gICAgICAgICAgICAgICAgdW5kZXJsaW5lID0gZGVjb3JhdGlv
bkNvbG9yKGN1cnItPnN0eWxlKCkpOworICAgICAgICAgICAgICAgIHVuZGVybGluZSA9IGRlY29y
YXRpb25Db2xvcihjdXJyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjdXJyRGVj
cyAmIE9WRVJMSU5FKSB7CiAgICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMgJj0gfk9WRVJMSU5F
OwotICAgICAgICAgICAgICAgIG92ZXJsaW5lID0gZGVjb3JhdGlvbkNvbG9yKGN1cnItPnN0eWxl
KCkpOworICAgICAgICAgICAgICAgIG92ZXJsaW5lID0gZGVjb3JhdGlvbkNvbG9yKGN1cnIpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGN1cnJEZWNzICYgTElORV9USFJPVUdIKSB7
CiAgICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMgJj0gfkxJTkVfVEhST1VHSDsKLSAgICAgICAg
ICAgICAgICBsaW5ldGhyb3VnaCA9IGRlY29yYXRpb25Db2xvcihjdXJyLT5zdHlsZSgpKTsKKyAg
ICAgICAgICAgICAgICBsaW5ldGhyb3VnaCA9IGRlY29yYXRpb25Db2xvcihjdXJyKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7CkBAIC0y
MjU2LDExICsyMjMwLDExIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpnZXRUZXh0RGVjb3JhdGlvbkNv
bG8KICAgICAvLyBJZiB3ZSBiYWlsZWQgb3V0LCB1c2UgdGhlIGVsZW1lbnQgd2UgYmFpbGVkIG91
dCBhdCAodHlwaWNhbGx5IGEgPGZvbnQ+IG9yIDxhPiBlbGVtZW50KS4KICAgICBpZiAoZGVjb3Jh
dGlvbnMgJiYgY3VycikgewogICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBVTkRFUkxJTkUpCi0g
ICAgICAgICAgICB1bmRlcmxpbmUgPSBkZWNvcmF0aW9uQ29sb3IoY3Vyci0+c3R5bGUoKSk7Cisg
ICAgICAgICAgICB1bmRlcmxpbmUgPSBkZWNvcmF0aW9uQ29sb3IoY3Vycik7CiAgICAgICAgIGlm
IChkZWNvcmF0aW9ucyAmIE9WRVJMSU5FKQotICAgICAgICAgICAgb3ZlcmxpbmUgPSBkZWNvcmF0
aW9uQ29sb3IoY3Vyci0+c3R5bGUoKSk7CisgICAgICAgICAgICBvdmVybGluZSA9IGRlY29yYXRp
b25Db2xvcihjdXJyKTsKICAgICAgICAgaWYgKGRlY29yYXRpb25zICYgTElORV9USFJPVUdIKQot
ICAgICAgICAgICAgbGluZXRocm91Z2ggPSBkZWNvcmF0aW9uQ29sb3IoY3Vyci0+c3R5bGUoKSk7
CisgICAgICAgICAgICBsaW5ldGhyb3VnaCA9IGRlY29yYXRpb25Db2xvcihjdXJyKTsKICAgICB9
CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiA1NzE2NSkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDgs
OSArNDA4LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTWFzaygpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCkgJiYgc3R5bGUoKS0+aGFzTWFzaygpOyB9CiAKICAgICB2b2lkIGRyYXdMaW5lRm9yQm94
U2lkZShHcmFwaGljc0NvbnRleHQqLCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIsIEJv
eFNpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IsIGNvbnN0IENvbG9yJiB0
ZXh0Y29sb3IsIEVCb3JkZXJTdHlsZSwgaW50IGFkamJ3MSwgaW50IGFkamJ3Mik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ29sb3IsIEVCb3JkZXJTdHlsZSwgaW50IGFkamJ3MSwgaW50
IGFkamJ3Mik7CiAgICAgdm9pZCBkcmF3QXJjRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQqLCBp
bnQgeCwgaW50IHksIGZsb2F0IHRoaWNrbmVzcywgSW50U2l6ZSByYWRpdXMsIGludCBhbmdsZVN0
YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFuZ2xlU3BhbiwgQm94U2lkZSwg
Q29sb3IsIGNvbnN0IENvbG9yJiB0ZXh0Y29sb3IsIEVCb3JkZXJTdHlsZSwgYm9vbCBmaXJzdENv
cm5lcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYW5nbGVTcGFuLCBCb3hTaWRl
LCBDb2xvciwgRUJvcmRlclN0eWxlLCBib29sIGZpcnN0Q29ybmVyKTsKIAogcHVibGljOgogICAg
IC8vIFRoZSBwc2V1ZG8gZWxlbWVudCBzdHlsZSBjYW4gYmUgY2FjaGVkIG9yIHVuY2FjaGVkLiAg
VXNlIHRoZSBjYWNoZWQgbWV0aG9kIGlmIHRoZSBwc2V1ZG8gZWxlbWVudCBkb2Vzbid0IHJlc3Bl
Y3QKQEAgLTc4NCw3ICs3ODQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gT3ZlcnJpZGVzIHNob3Vs
ZCBjYWxsIHRoZSBzdXBlcmNsYXNzIGF0IHRoZSBzdGFydAogICAgIHZpcnR1YWwgdm9pZCBzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7
CiAKLSAgICB2b2lkIHBhaW50T3V0bGluZShHcmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0
eSwgaW50IHcsIGludCBoLCBjb25zdCBSZW5kZXJTdHlsZSopOworICAgIHZvaWQgcGFpbnRPdXRs
aW5lKEdyYXBoaWNzQ29udGV4dCosIGludCB0eCwgaW50IHR5LCBpbnQgdywgaW50IGgpOwogICAg
IHZvaWQgYWRkUERGVVJMUmVjdChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CiAK
ICAgICB2aXJ0dWFsIEludFJlY3Qgdmlld1JlY3QoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclBhdGguY3BwCShyZXZpc2lvbiA1NzE2NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBSZW5kZXJQ
YXRoOjpwYWludChQYWludEluZm8mIHBhaW50SQogCiAgICAgICAgIGlmIChkcmF3c091dGxpbmUp
CiAgICAgICAgICAgICBwYWludE91dGxpbmUoY2hpbGRQYWludEluZm8uY29udGV4dCwgc3RhdGlj
X2Nhc3Q8aW50Pihib3VuZGluZ0JveC54KCkpLCBzdGF0aWNfY2FzdDxpbnQ+KGJvdW5kaW5nQm94
LnkoKSksCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihib3VuZGluZ0JveC53aWR0
aCgpKSwgc3RhdGljX2Nhc3Q8aW50Pihib3VuZGluZ0JveC5oZWlnaHQoKSksIHN0eWxlKCkpOwor
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oYm91bmRpbmdCb3gud2lkdGgoKSksIHN0
YXRpY19jYXN0PGludD4oYm91bmRpbmdCb3guaGVpZ2h0KCkpKTsKICAgICAgICAgCiAgICAgICAg
IGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKICAgICB9CkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCShyZXZpc2lvbiA1NzE2NSkKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3
IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5mbyYgcGEKICAgICB9CiAKICAg
ICBpZiAoKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludEluZm8u
cGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgpLT5vdXRsaW5lV2lkdGgo
KSkKLSAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCB0eCwgdHksIHdpZHRo
KCksIGhlaWdodCgpLCBzdHlsZSgpKTsKKyAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5j
b250ZXh0LCB0eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKTsKICAgICAKICAgICBpZiAocGFpbnRJ
bmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlU2VsZWN0aW9uKQogICAgICAgICByZXR1cm47CkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHJldmlzaW9uIDU3MTY1KQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcg
KzEyMCw3IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8KICAgICAv
LyBXZSBzaG91bGQgaW5zdGVhZCBkaXNhYmxlIG91ciBjbGlwIGR1cmluZyBQYWludFBoYXNlT3V0
bGluZQogICAgIEludFJlY3QgcGFpbnRSZWN0SW5QYXJlbnQgPSBlbmNsb3NpbmdJbnRSZWN0KGxv
Y2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5tYXBSZWN0KHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5h
dGVzKCkpKTsKICAgICBpZiAoKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8
fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgpLT5v
dXRsaW5lV2lkdGgoKSAmJiBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKLSAgICAg
ICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCBwYWludFJlY3RJblBhcmVudC54KCks
IHBhaW50UmVjdEluUGFyZW50LnkoKSwgcGFpbnRSZWN0SW5QYXJlbnQud2lkdGgoKSwgcGFpbnRS
ZWN0SW5QYXJlbnQuaGVpZ2h0KCksIHN0eWxlKCkpOworICAgICAgICBwYWludE91dGxpbmUocGFp
bnRJbmZvLmNvbnRleHQsIHBhaW50UmVjdEluUGFyZW50LngoKSwgcGFpbnRSZWN0SW5QYXJlbnQu
eSgpLCBwYWludFJlY3RJblBhcmVudC53aWR0aCgpLCBwYWludFJlY3RJblBhcmVudC5oZWlnaHQo
KSk7CiB9CiAKIC8vIGFkZEZvY3VzUmluZ1JlY3RzIGlzIGNhbGxlZCBmcm9tIHBhaW50T3V0bGlu
ZSBhbmQgbmVlZHMgdG8gYmUgaW4gdGhlIHNhbWUgY29vcmRpbmF0ZXMgYXMgdGhlIHBhaW50T3Vs
aW5lIGNhbGwKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHJldmlzaW9u
IDU3MTY1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50
SW5mbyYgcGEKICAgICB9CiAKICAgICBpZiAoKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNl
T3V0bGluZSB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBz
dHlsZSgpLT5vdXRsaW5lV2lkdGgoKSkKLSAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5j
b250ZXh0LCAwLCAwLCB3aWR0aCgpLCBoZWlnaHQoKSwgc3R5bGUoKSk7CisgICAgICAgIHBhaW50
T3V0bGluZShwYWludEluZm8uY29udGV4dCwgMCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCkpOwogCiAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR1Jvb3QuY3BwCShyZXZpc2lvbiA1NzE2NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBS
ZW5kZXJTVkdSb290OjpwYWludChQYWludEluZm8mIHBhaQogICAgIGNoaWxkUGFpbnRJbmZvLmNv
bnRleHQtPnJlc3RvcmUoKTsKIAogICAgIGlmICgocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhh
c2VPdXRsaW5lIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYm
IHN0eWxlKCktPm91dGxpbmVXaWR0aCgpICYmIHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJ
QkxFKQotICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIGJvcmRlckJveE9y
aWdpbkluQ29udGFpbmVyLngoKSwgYm9yZGVyQm94T3JpZ2luSW5Db250YWluZXIueSgpLCB3aWR0
aCgpLCBoZWlnaHQoKSwgc3R5bGUoKSk7CisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8u
Y29udGV4dCwgYm9yZGVyQm94T3JpZ2luSW5Db250YWluZXIueCgpLCBib3JkZXJCb3hPcmlnaW5J
bkNvbnRhaW5lci55KCksIHdpZHRoKCksIGhlaWdodCgpKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdS
b290OjpkZXN0cm95KCkKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAko
cmV2aXNpb24gNTcxNjUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsMjIgKzMzOCwyNSBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSBSZW5kZXJUYWJsZUNlbGw6OmNvCiAgICAgCiAgICAgLy8gRm9yIGJvcmRlciBsZWZ0LCB3ZSBu
ZWVkIHRvIGNoZWNrLCBpbiBvcmRlciBvZiBwcmVjZWRlbmNlOgogICAgIC8vICgxKSBPdXIgbGVm
dCBib3JkZXIuCi0gICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0KCZzdHlsZSgpLT5ib3Jk
ZXJMZWZ0KCksIEJDRUxMKTsKKyAgICBpbnQgbGVmdCA9IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENv
bG9yOworICAgIGludCByaWdodCA9IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjsKKyAgICBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQoJnN0eWxlKCktPmJvcmRlckxlZnQoKSwgc3R5bGUo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGxlZnQpLCBCQ0VMTCk7CiAgICAgCiAgICAgLy8gKDIp
IFRoZSByaWdodCBib3JkZXIgb2YgdGhlIGNlbGwgdG8gdGhlIGxlZnQuCiAgICAgUmVuZGVyVGFi
bGVDZWxsKiBwcmV2Q2VsbCA9IHJ0bCA/IHRhYmxlRWx0LT5jZWxsQWZ0ZXIodGhpcykgOiB0YWJs
ZUVsdC0+Y2VsbEJlZm9yZSh0aGlzKTsKICAgICBpZiAocHJldkNlbGwpIHsKLSAgICAgICAgcmVz
dWx0ID0gcnRsID8gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgm
cHJldkNlbGwtPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIEJDRUxMKSkgOiBjb21wYXJlQm9yZGVy
cyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcHJldkNlbGwtPnN0eWxlKCktPmJvcmRlclJpZ2h0KCks
IEJDRUxMKSwgcmVzdWx0KTsKKyAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcHJldkNlbGxC
b3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcHJldkNlbGwtPnN0eWxlKCktPmJvcmRlclJp
Z2h0KCksIHByZXZDZWxsLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IocmlnaHQpLCBC
Q0VMTCk7CisgICAgICAgIHJlc3VsdCA9IHJ0bCA/IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgcHJl
dkNlbGxCb3JkZXIpIDogY29tcGFyZUJvcmRlcnMocHJldkNlbGxCb3JkZXIsIHJlc3VsdCk7CiAg
ICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9IGVsc2UgaWYgKGxlZnRtb3N0Q29sdW1uKSB7CiAgICAgICAgIC8vICgzKSBPdXIgcm93
J3MgbGVmdCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwg
Q29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIEJS
T1cpKTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgcGFyZW50KCktPnN0
eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihsZWZ0KSwgQlJPVykpOwogICAgICAgICBpZiAo
IXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIAog
ICAgICAgICAvLyAoNCkgT3VyIHJvdyBncm91cCdzIGxlZnQgYm9yZGVyLgotICAgICAgICByZXN1
bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZzZWN0aW9u
KCktPnN0eWxlKCktPmJvcmRlckxlZnQoKSwgQlJPV0dST1VQKSk7CisgICAgICAgIHJlc3VsdCA9
IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnNlY3Rpb24oKS0+
c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBzZWN0aW9uKCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihsZWZ0KSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygp
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0zNjMsMTEgKzM2NiwxMSBA
QCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvCiAgICAgYm9vbCBlbmRD
b2xFZGdlOwogICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0YWJsZUVsdC0+Y29sRWxlbWVu
dChjb2woKSArIChydGwgPyBjb2xTcGFuKCkgLSAxIDogMCksICZzdGFydENvbEVkZ2UsICZlbmRD
b2xFZGdlKTsKICAgICBpZiAoY29sRWx0ICYmICghcnRsID8gc3RhcnRDb2xFZGdlIDogZW5kQ29s
RWRnZSkpIHsKLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIEJDT0wpKTsKKyAg
ICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKGxlZnQpLCBCQ09MKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0
cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgaWYgKGNvbEVsdC0+cGFy
ZW50KCktPmlzVGFibGVDb2woKSAmJiAoIXJ0bCA/ICFjb2xFbHQtPnByZXZpb3VzU2libGluZygp
IDogIWNvbEVsdC0+bmV4dFNpYmxpbmcoKSkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBh
cmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+cGFyZW50KCkt
PnN0eWxlKCktPmJvcmRlckxlZnQoKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICByZXN1bHQg
PSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnBh
cmVudCgpLT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIGNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCkt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcihsZWZ0KSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAgICBp
ZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICB9CkBAIC0zNzcsMTMgKzM4MCwxNCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJU
YWJsZUNlbGw6OmNvCiAgICAgaWYgKCFsZWZ0bW9zdENvbHVtbikgewogICAgICAgICBjb2xFbHQg
PSB0YWJsZUVsdC0+Y29sRWxlbWVudChjb2woKSArIChydGwgPyBjb2xTcGFuKCkgOiAtMSksICZz
dGFydENvbEVkZ2UsICZlbmRDb2xFZGdlKTsKICAgICAgICAgaWYgKGNvbEVsdCAmJiAoIXJ0bCA/
IGVuZENvbEVkZ2UgOiBzdGFydENvbEVkZ2UpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBydGwg
PyBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnN0
eWxlKCktPmJvcmRlclJpZ2h0KCksIEJDT0wpKSA6IGNvbXBhcmVCb3JkZXJzKENvbGxhcHNlZEJv
cmRlclZhbHVlKCZjb2xFbHQtPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIEJDT0wpLCByZXN1bHQp
OworICAgICAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmlnaHRCb3JkZXIgPSBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBjb2xFbHQtPnN0
eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihyaWdodCksIEJDT0wpOworICAgICAgICAgICAg
cmVzdWx0ID0gcnRsID8gY29tcGFyZUJvcmRlcnMocmVzdWx0LCByaWdodEJvcmRlcikgOiBjb21w
YXJlQm9yZGVycyhyaWdodEJvcmRlciwgcmVzdWx0KTsKICAgICAgICAgICAgIGlmICghcmVzdWx0
LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgICAvLyAoNykgVGhlIHRhYmxlJ3MgbGVmdCBib3JkZXIuCi0gICAg
ICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUo
JnRhYmxlRWx0LT5zdHlsZSgpLT5ib3JkZXJMZWZ0KCksIEJUQUJMRSkpOworICAgICAgICByZXN1
bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZ0YWJsZUVs
dC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCB0YWJsZUVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKGxlZnQpLCBCVEFCTEUpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkp
CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTQwNCwyNCArNDA4LDI3IEBA
IENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KICAgICAKICAgICAvLyBG
b3IgYm9yZGVyIHJpZ2h0LCB3ZSBuZWVkIHRvIGNoZWNrLCBpbiBvcmRlciBvZiBwcmVjZWRlbmNl
OgogICAgIC8vICgxKSBPdXIgcmlnaHQgYm9yZGVyLgotICAgIENvbGxhcHNlZEJvcmRlclZhbHVl
IHJlc3VsdCA9IENvbGxhcHNlZEJvcmRlclZhbHVlKCZzdHlsZSgpLT5ib3JkZXJSaWdodCgpLCBC
Q0VMTCk7CisgICAgaW50IGxlZnQgPSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcjsKKyAgICBp
bnQgcmlnaHQgPSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I7CisgICAgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnN0eWxlKCktPmJvcmRlclJp
Z2h0KCksIHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihyaWdodCksIEJDRUxMKTsKICAg
ICAKICAgICAvLyAoMikgVGhlIGxlZnQgYm9yZGVyIG9mIHRoZSBjZWxsIHRvIHRoZSByaWdodC4K
ICAgICBpZiAoIXJpZ2h0bW9zdENvbHVtbikgewogICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIG5l
eHRDZWxsID0gcnRsID8gdGFibGVFbHQtPmNlbGxCZWZvcmUodGhpcykgOiB0YWJsZUVsdC0+Y2Vs
bEFmdGVyKHRoaXMpOwogICAgICAgICBpZiAobmV4dENlbGwgJiYgbmV4dENlbGwtPnN0eWxlKCkp
IHsKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ0bCA/IGNvbXBhcmVCb3JkZXJzKENvbGxhcHNlZEJv
cmRlclZhbHVlKCZuZXh0Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBCQ0VMTCksIHJlc3Vs
dCkgOiBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZuZXh0Q2Vs
bC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBCQ0VMTCkpOworICAgICAgICAgICAgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUgbGVmdEJvcmRlciA9IENvbGxhcHNlZEJvcmRlclZhbHVlKCZuZXh0Q2VsbC0+
c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBuZXh0Q2VsbC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKGxlZnQpLCBCQ0VMTCk7CisgICAgICAgICAgICByZXN1bHQgPSBydGwgPyBjb21wYXJl
Qm9yZGVycyhsZWZ0Qm9yZGVyLCByZXN1bHQpIDogY29tcGFyZUJvcmRlcnMocmVzdWx0LCBsZWZ0
Qm9yZGVyKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyAo
MykgT3VyIHJvdydzIHJpZ2h0IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRl
cnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxlKCktPmJvcmRl
clJpZ2h0KCksIEJST1cpKTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0
LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxlKCktPmJvcmRlclJpZ2h0KCks
IHBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IocmlnaHQpLCBCUk9XKSk7
CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgCiAgICAgICAgIC8vICg0KSBPdXIgcm93IGdyb3VwJ3MgcmlnaHQgYm9yZGVy
LgotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRl
clZhbHVlKCZzZWN0aW9uKCktPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIEJST1dHUk9VUCkpOwor
ICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZh
bHVlKCZzZWN0aW9uKCktPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIHNlY3Rpb24oKS0+c3R5bGUo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHJpZ2h0KSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlm
ICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBA
IC00MzEsMTEgKzQzOCwxMSBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6
OmNvCiAgICAgYm9vbCBlbmRDb2xFZGdlOwogICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0
YWJsZUVsdC0+Y29sRWxlbWVudChjb2woKSArIChydGwgPyAwIDogY29sU3BhbigpIC0gMSksICZz
dGFydENvbEVkZ2UsICZlbmRDb2xFZGdlKTsKICAgICBpZiAoY29sRWx0ICYmICghcnRsID8gZW5k
Q29sRWRnZSA6IHN0YXJ0Q29sRWRnZSkpIHsKLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRl
cnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJS
aWdodCgpLCBCQ09MKSk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwg
Q29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgY29s
RWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IocmlnaHQpLCBCQ09MKSk7CiAgICAg
ICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgaWYgKGNvbEVsdC0+cGFyZW50KCktPmlzVGFibGVDb2woKSAmJiAoIXJ0bCA/ICFjb2xF
bHQtPm5leHRTaWJsaW5nKCkgOiAhY29sRWx0LT5wcmV2aW91c1NpYmxpbmcoKSkpIHsKLSAgICAg
ICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFs
dWUoJmNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlclJpZ2h0KCksIEJDT0xHUk9VUCkp
OworICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgY29s
RWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHJpZ2h0KSwgQkNP
TEdST1VQKSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC00NDUsMTMgKzQ1MiwxNCBAQCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvCiAgICAgaWYgKCFyaWdodG1vc3RD
b2x1bW4pIHsKICAgICAgICAgY29sRWx0ID0gdGFibGVFbHQtPmNvbEVsZW1lbnQoY29sKCkgKyAo
cnRsID8gLTEgOiBjb2xTcGFuKCkpLCAmc3RhcnRDb2xFZGdlLCAmZW5kQ29sRWRnZSk7CiAgICAg
ICAgIGlmIChjb2xFbHQgJiYgKCFydGwgPyBzdGFydENvbEVkZ2UgOiBlbmRDb2xFZGdlKSkgewot
ICAgICAgICAgICAgcmVzdWx0ID0gcnRsID8gY29tcGFyZUJvcmRlcnMoQ29sbGFwc2VkQm9yZGVy
VmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyTGVmdCgpLCBCQ09MKSwgcmVzdWx0KSA6IGNv
bXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUo
KS0+Ym9yZGVyTGVmdCgpLCBCQ09MKSk7CisgICAgICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSBsZWZ0Qm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9y
ZGVyTGVmdCgpLCBjb2xFbHQtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihsZWZ0KSwg
QkNPTCk7CisgICAgICAgICAgICByZXN1bHQgPSBydGwgPyBjb21wYXJlQm9yZGVycyhsZWZ0Qm9y
ZGVyLCByZXN1bHQpIDogY29tcGFyZUJvcmRlcnMocmVzdWx0LCBsZWZ0Qm9yZGVyKTsKICAgICAg
ICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyAoNykgVGhlIHRhYmxlJ3Mg
cmlnaHQgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENv
bGxhcHNlZEJvcmRlclZhbHVlKCZ0YWJsZUVsdC0+c3R5bGUoKS0+Ym9yZGVyUmlnaHQoKSwgQlRB
QkxFKSk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUoJnRhYmxlRWx0LT5zdHlsZSgpLT5ib3JkZXJSaWdodCgpLCB0YWJsZUVsdC0+
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHJpZ2h0KSwgQlRBQkxFKSk7CiAgICAgICAg
IGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CkBAIC00NjMsMTggKzQ3MSwyMCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNl
bGw6OmNvCiB7CiAgICAgLy8gRm9yIGJvcmRlciB0b3AsIHdlIG5lZWQgdG8gY2hlY2ssIGluIG9y
ZGVyIG9mIHByZWNlZGVuY2U6CiAgICAgLy8gKDEpIE91ciB0b3AgYm9yZGVyLgotICAgIENvbGxh
cHNlZEJvcmRlclZhbHVlIHJlc3VsdCA9IENvbGxhcHNlZEJvcmRlclZhbHVlKCZzdHlsZSgpLT5i
b3JkZXJUb3AoKSwgQkNFTEwpOworICAgIGludCB0b3AgPSBDU1NQcm9wZXJ0eUJvcmRlclRvcENv
bG9yOworICAgIGludCBib3R0b20gPSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yOworICAg
IENvbGxhcHNlZEJvcmRlclZhbHVlIHJlc3VsdCA9IENvbGxhcHNlZEJvcmRlclZhbHVlKCZzdHls
ZSgpLT5ib3JkZXJUb3AoKSwgc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHRvcCksIEJD
RUxMKTsKICAgICAKICAgICBSZW5kZXJUYWJsZUNlbGwqIHByZXZDZWxsID0gdGFibGUoKS0+Y2Vs
bEFib3ZlKHRoaXMpOwogICAgIGlmIChwcmV2Q2VsbCkgewogICAgICAgICAvLyAoMikgQSBwcmV2
aW91cyBjZWxsJ3MgYm90dG9tIGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRl
cnMoQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnByZXZDZWxsLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20o
KSwgQkNFTEwpLCByZXN1bHQpOworICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhDb2xs
YXBzZWRCb3JkZXJWYWx1ZSgmcHJldkNlbGwtPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBwcmV2
Q2VsbC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJvdHRvbSksIEJDRUxMKSwgcmVz
dWx0KTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpIAogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgLy8gKDMpIE91ciByb3cncyB0b3AgYm9yZGVyLgot
ICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUo
JnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgQlJPVykpOworICAgIHJlc3VsdCA9IGNv
bXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnBhcmVudCgpLT5zdHls
ZSgpLT5ib3JkZXJUb3AoKSwgcGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cih0b3ApLCBCUk9XKSk7CiAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgCkBAIC00ODcsNyArNDk3LDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUg
UmVuZGVyVGFibGVDZWxsOjpjbwogICAgICAgICAgICAgcHJldlJvdyA9IHByZXZDZWxsLT5zZWN0
aW9uKCktPmxhc3RDaGlsZCgpOwogICAgIAogICAgICAgICBpZiAocHJldlJvdykgewotICAgICAg
ICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMoQ29sbGFwc2VkQm9yZGVyVmFsdWUoJnByZXZS
b3ctPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBCUk9XKSwgcmVzdWx0KTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKENvbGxhcHNlZEJvcmRlclZhbHVlKCZwcmV2Um93LT5z
dHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgcHJldlJvdy0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKGJvdHRvbSksIEJST1cpLCByZXN1bHQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQu
ZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAt
NDk3LDE0ICs1MDcsMTQgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpj
bwogICAgIFJlbmRlclRhYmxlU2VjdGlvbiogY3VyclNlY3Rpb24gPSBzZWN0aW9uKCk7CiAgICAg
aWYgKCFyb3coKSkgewogICAgICAgICAvLyAoNSkgT3VyIHJvdyBncm91cCdzIHRvcCBib3JkZXIu
Ci0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVy
VmFsdWUoJmN1cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgQlJPV0dST1VQKSk7Cisg
ICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFs
dWUoJmN1cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgY3VyclNlY3Rpb24tPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0b3ApLCBCUk9XR1JPVVApKTsKICAgICAgICAgaWYg
KCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAK
ICAgICAgICAgLy8gKDYpIFByZXZpb3VzIHJvdyBncm91cCdzIGJvdHRvbSBib3JkZXIuCiAgICAg
ICAgIGN1cnJTZWN0aW9uID0gdGFibGUoKS0+c2VjdGlvbkFib3ZlKGN1cnJTZWN0aW9uKTsKICAg
ICAgICAgaWYgKGN1cnJTZWN0aW9uKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9y
ZGVycyhDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckJv
dHRvbSgpLCBCUk9XR1JPVVApLCByZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFy
ZUJvcmRlcnMoQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmN1cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3Jk
ZXJCb3R0b20oKSwgY3VyclNlY3Rpb24tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihi
b3R0b20pLCBCUk9XR1JPVVApLCByZXN1bHQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhp
c3RzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtNTE0
LDE4ICs1MjQsMTkgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjbwog
ICAgICAgICAvLyAoOCkgT3VyIGNvbHVtbiBhbmQgY29sdW1uIGdyb3VwJ3MgdG9wIGJvcmRlcnMu
CiAgICAgICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0YWJsZSgpLT5jb2xFbGVtZW50KGNv
bCgpKTsKICAgICAgICAgaWYgKGNvbEVsdCkgewotICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFy
ZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5i
b3JkZXJUb3AoKSwgQkNPTCkpOworICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMo
cmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJUb3Ao
KSwgY29sRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IodG9wKSwgQkNPTCkpOwog
ICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgICAgIGlmIChjb2xFbHQtPnBhcmVudCgpLT5pc1RhYmxlQ29sKCkp
IHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxh
cHNlZEJvcmRlclZhbHVlKCZjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwg
QkNPTEdST1VQKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVz
dWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9y
ZGVyVG9wKCksIGNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cih0b3ApLCBCQ09MR1JPVVApKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMo
KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gKDkpIFRoZSB0YWJsZSdzIHRvcCBib3JkZXIu
Ci0gICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVy
VmFsdWUoJnRhYmxlKCktPnN0eWxlKCktPmJvcmRlclRvcCgpLCBCVEFCTEUpKTsKKyAgICAgICAg
UmVuZGVyVGFibGUqIGVuY2xvc2luZ1RhYmxlID0gdGFibGUoKTsKKyAgICAgICAgcmVzdWx0ID0g
Y29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmZW5jbG9zaW5nVGFi
bGUtPnN0eWxlKCktPmJvcmRlclRvcCgpLCBlbmNsb3NpbmdUYWJsZS0+c3R5bGUoKS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKHRvcCksIEJUQUJMRSkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlz
dHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNTM3LDI0ICs1NDgs
MjYgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjbwogewogICAgIC8v
IEZvciBib3JkZXIgdG9wLCB3ZSBuZWVkIHRvIGNoZWNrLCBpbiBvcmRlciBvZiBwcmVjZWRlbmNl
OgogICAgIC8vICgxKSBPdXIgYm90dG9tIGJvcmRlci4KLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSByZXN1bHQgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmc3R5bGUoKS0+Ym9yZGVyQm90dG9tKCks
IEJDRUxMKTsKKyAgICBpbnQgdG9wID0gQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcjsKKyAgICBp
bnQgYm90dG9tID0gQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcjsKKyAgICBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSByZXN1bHQgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmc3R5bGUoKS0+Ym9yZGVy
Qm90dG9tKCksIHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihib3R0b20pLCBCQ0VMTCk7
CiAgICAgCiAgICAgUmVuZGVyVGFibGVDZWxsKiBuZXh0Q2VsbCA9IHRhYmxlKCktPmNlbGxCZWxv
dyh0aGlzKTsKICAgICBpZiAobmV4dENlbGwpIHsKICAgICAgICAgLy8gKDIpIEEgZm9sbG93aW5n
IGNlbGwncyB0b3AgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1
bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZuZXh0Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyVG9wKCks
IEJDRUxMKSk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFw
c2VkQm9yZGVyVmFsdWUoJm5leHRDZWxsLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgbmV4dENlbGwt
PnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0b3ApLCBCQ0VMTCkpOwogICAgICAgICBp
ZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
ICAgIAogICAgIC8vICgzKSBPdXIgcm93J3MgYm90dG9tIGJvcmRlci4gKEZJWE1FOiBEZWFsIHdp
dGggcm93c3BhbiEpCi0gICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSgmcGFyZW50KCktPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBCUk9XKSk7
CisgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSgmcGFyZW50KCktPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBwYXJlbnQoKS0+c3R5bGUoKS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKGJvdHRvbSksIEJST1cpKTsKICAgICBpZiAoIXJlc3VsdC5l
eGlzdHMoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAKICAgICAvLyAoNCkgVGhlIG5l
eHQgcm93J3MgdG9wIGJvcmRlci4KICAgICBpZiAobmV4dENlbGwpIHsKLSAgICAgICAgcmVzdWx0
ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmbmV4dENlbGwt
PnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwgQlJPVykpOworICAgICAgICByZXN1bHQg
PSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZuZXh0Q2VsbC0+
cGFyZW50KCktPnN0eWxlKCktPmJvcmRlclRvcCgpLCBuZXh0Q2VsbC0+cGFyZW50KCktPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0b3ApLCBCUk9XKSk7CiAgICAgICAgIGlmICghcmVz
dWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC01NjMs
MTQgKzU3NiwxNCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvCiAg
ICAgUmVuZGVyVGFibGVTZWN0aW9uKiBjdXJyU2VjdGlvbiA9IHNlY3Rpb24oKTsKICAgICBpZiAo
cm93KCkgKyByb3dTcGFuKCkgPj0gY3VyclNlY3Rpb24tPm51bVJvd3MoKSkgewogICAgICAgICAv
LyAoNSkgT3VyIHJvdyBncm91cCdzIGJvdHRvbSBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNv
bXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmN1cnJTZWN0aW9uLT5z
dHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgQlJPV0dST1VQKSk7CisgICAgICAgIHJlc3VsdCA9IGNv
bXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmN1cnJTZWN0aW9uLT5z
dHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgY3VyclNlY3Rpb24tPnN0eWxlKCktPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihib3R0b20pLCBCUk9XR1JPVVApKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhp
c3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAKICAgICAgICAgLy8g
KDYpIEZvbGxvd2luZyByb3cgZ3JvdXAncyB0b3AgYm9yZGVyLgogICAgICAgICBjdXJyU2VjdGlv
biA9IHRhYmxlKCktPnNlY3Rpb25CZWxvdyhjdXJyU2VjdGlvbik7CiAgICAgICAgIGlmIChjdXJy
U2VjdGlvbikgewotICAgICAgICAgICAgcmVzdWx0ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSgmY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlclRvcCgpLCBC
Uk9XR1JPVVApKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwg
Q29sbGFwc2VkQm9yZGVyVmFsdWUoJmN1cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3JkZXJUb3AoKSwg
Y3VyclNlY3Rpb24tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcih0b3ApLCBCUk9XR1JP
VVApKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTU4MCwxNyArNTkzLDE4IEBAIENvbGxhcHNl
ZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y28KICAgICAgICAgLy8gKDgpIE91ciBjb2x1
bW4gYW5kIGNvbHVtbiBncm91cCdzIGJvdHRvbSBib3JkZXJzLgogICAgICAgICBSZW5kZXJUYWJs
ZUNvbCogY29sRWx0ID0gdGFibGUoKS0+Y29sRWxlbWVudChjb2woKSk7CiAgICAgICAgIGlmIChj
b2xFbHQpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29s
bGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIEJDT0wp
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUoJmNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIGNvbEVsdC0+c3R5
bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJvdHRvbSksIEJDT0wpKTsKICAgICAgICAgICAg
IGlmICghcmVzdWx0LmV4aXN0cygpKSByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgaWYgKGNv
bEVsdC0+cGFyZW50KCktPmlzVGFibGVDb2woKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGNvbXBhcmVCb3JkZXJzKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoJmNvbEVsdC0+cGFy
ZW50KCktPnN0eWxlKCktPmJvcmRlckJvdHRvbSgpLCBCQ09MR1JPVVApKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVycyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVl
KCZjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJCb3R0b20oKSwgY29sRWx0LT5wYXJl
bnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJvdHRvbSksIEJDT0xHUk9VUCkp
OwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICAvLyAoOSkgVGhlIHRhYmxlJ3MgYm90dG9tIGJvcmRlci4KLSAgICAgICAgcmVzdWx0
ID0gY29tcGFyZUJvcmRlcnMocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgmdGFibGUoKS0+
c3R5bGUoKS0+Ym9yZGVyQm90dG9tKCksIEJUQUJMRSkpOworICAgICAgICBSZW5kZXJUYWJsZSog
ZW5jbG9zaW5nVGFibGUgPSB0YWJsZSgpOworICAgICAgICByZXN1bHQgPSBjb21wYXJlQm9yZGVy
cyhyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKCZlbmNsb3NpbmdUYWJsZS0+c3R5bGUoKS0+
Ym9yZGVyQm90dG9tKCksIGVuY2xvc2luZ1RhYmxlLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50
Q29sb3IoYm90dG9tKSwgQlRBQkxFKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC04MDgsNyArODIyLDcgQEAgdm9p
ZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2VkQm9yZAogICAgIGZvciAoQ29sbGFwc2Vk
Qm9yZGVyKiBib3JkZXIgPSBib3JkZXJzLm5leHRCb3JkZXIoKTsgYm9yZGVyOyBib3JkZXIgPSBi
b3JkZXJzLm5leHRCb3JkZXIoKSkgewogICAgICAgICBpZiAoYm9yZGVyLT5ib3JkZXJWYWx1ZSA9
PSAqdGFibGUoKS0+Y3VycmVudEJvcmRlclN0eWxlKCkpCiAgICAgICAgICAgICBkcmF3TGluZUZv
ckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXItPngxLCBib3JkZXItPnkxLCBib3JkZXIt
PngyLCBib3JkZXItPnkyLCBib3JkZXItPnNpZGUsIAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvcmRlci0+Ym9yZGVyVmFsdWUuY29sb3IoKSwgc3R5bGUoKS0+Y29sb3IoKSwgYm9y
ZGVyLT5zdHlsZSwgMCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVy
LT5ib3JkZXJWYWx1ZS5jb2xvcigpLCBib3JkZXItPnN0eWxlLCAwLCAwKTsKICAgICB9CiB9CiAK
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbGxhcHNlZEJvcmRlclZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFsdWUu
aAkocmV2aXNpb24gNTcxNjUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db2xsYXBzZWRC
b3JkZXJWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw5IEBAIHN0cnVjdCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSB7CiAgICAgewogICAgIH0KIAotICAgIENvbGxhcHNlZEJvcmRlclZh
bHVlKGNvbnN0IEJvcmRlclZhbHVlKiBiLCBFQm9yZGVyUHJlY2VkZW5jZSBwKQorICAgIENvbGxh
cHNlZEJvcmRlclZhbHVlKGNvbnN0IEJvcmRlclZhbHVlKiBiLCBDb2xvciBjLCBFQm9yZGVyUHJl
Y2VkZW5jZSBwKQogICAgICAgICA6IGJvcmRlcihiKQorICAgICAgICAsIGJvcmRlckNvbG9yKGMp
CiAgICAgICAgICwgcHJlY2VkZW5jZShwKQogICAgIHsKICAgICB9CkBAIC00NSw3ICs0Niw3IEBA
IHN0cnVjdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSB7CiAgICAgaW50IHdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gYm9yZGVyICYmIGJvcmRlci0+bm9uWmVybygpID8gYm9yZGVyLT53aWR0aCA6IDA7IH0K
ICAgICBFQm9yZGVyU3R5bGUgc3R5bGUoKSBjb25zdCB7IHJldHVybiBib3JkZXIgPyBib3JkZXIt
PnN0eWxlKCkgOiBCSElEREVOOyB9CiAgICAgYm9vbCBleGlzdHMoKSBjb25zdCB7IHJldHVybiBi
b3JkZXI7IH0KLSAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIGJvcmRlciA/IGJvcmRl
ci0+Y29sb3IgOiBDb2xvcigpOyB9CisgICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBi
b3JkZXJDb2xvcjsgfQogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIGJv
cmRlciA/IGJvcmRlci0+aXNUcmFuc3BhcmVudCgpIDogdHJ1ZTsgfQogICAgIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSYgbykgY29uc3QKQEAgLTU0LDEw
ICs1NSwxMSBAQCBzdHJ1Y3QgQ29sbGFwc2VkQm9yZGVyVmFsdWUgewogICAgICAgICAgICAgcmV0
dXJuICFvLmJvcmRlcjsKICAgICAgICAgaWYgKCFvLmJvcmRlcikKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgcmV0dXJuICpib3JkZXIgPT0gKm8uYm9yZGVyICYmIHByZWNlZGVu
Y2UgPT0gby5wcmVjZWRlbmNlOworICAgICAgICByZXR1cm4gKmJvcmRlciA9PSAqby5ib3JkZXIg
JiYgYm9yZGVyQ29sb3IgPT0gby5ib3JkZXJDb2xvciAmJiBwcmVjZWRlbmNlID09IG8ucHJlY2Vk
ZW5jZTsKICAgICB9CiAgICAgCiAgICAgY29uc3QgQm9yZGVyVmFsdWUqIGJvcmRlcjsKKyAgICBD
b2xvciBib3JkZXJDb2xvcjsKICAgICBFQm9yZGVyUHJlY2VkZW5jZSBwcmVjZWRlbmNlOyAgICAK
IH07CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlz
aW9uIDU3MTY1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU3R5bGUuaCIKIAorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNp
bmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNp
bmNsdWRlICJDb3VudGVyQ29udGVudC5oIgpAQCAtNTgsOCArNTksNyBAQCBQYXNzUmVmUHRyPFJl
bmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y2xvCiB9CiAKIFJlbmRlclN0eWxlOjpSZW5kZXJTdHls
ZSgpCi0gICAgOiBtX3BzZXVkb1N0YXRlKFBzZXVkb1Vua25vd24pCi0gICAgLCBtX2FmZmVjdGVk
QnlBdHRyaWJ1dGVTZWxlY3RvcnMoZmFsc2UpCisgICAgOiBtX2FmZmVjdGVkQnlBdHRyaWJ1dGVT
ZWxlY3RvcnMoZmFsc2UpCiAgICAgLCBtX3VuaXF1ZShmYWxzZSkKICAgICAsIG1fYWZmZWN0ZWRC
eUVtcHR5KGZhbHNlKQogICAgICwgbV9lbXB0eVN0YXRlKGZhbHNlKQpAQCAtODYsOCArODYsNyBA
QCBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoKQogfQogCiBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5
bGUoYm9vbCkKLSAgICA6IG1fcHNldWRvU3RhdGUoUHNldWRvVW5rbm93bikKLSAgICAsIG1fYWZm
ZWN0ZWRCeUF0dHJpYnV0ZVNlbGVjdG9ycyhmYWxzZSkKKyAgICA6IG1fYWZmZWN0ZWRCeUF0dHJp
YnV0ZVNlbGVjdG9ycyhmYWxzZSkKICAgICAsIG1fdW5pcXVlKGZhbHNlKQogICAgICwgbV9hZmZl
Y3RlZEJ5RW1wdHkoZmFsc2UpCiAgICAgLCBtX2VtcHR5U3RhdGUoZmFsc2UpCkBAIC0xMjEsNyAr
MTIwLDYgQEAgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGJvb2wpCiAKIFJlbmRlclN0eWxlOjpS
ZW5kZXJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgbykKICAgICA6IFJlZkNvdW50ZWQ8UmVuZGVy
U3R5bGU+KCkKLSAgICAsIG1fcHNldWRvU3RhdGUoby5tX3BzZXVkb1N0YXRlKQogICAgICwgbV9h
ZmZlY3RlZEJ5QXR0cmlidXRlU2VsZWN0b3JzKGZhbHNlKQogICAgICwgbV91bmlxdWUoZmFsc2Up
CiAgICAgLCBtX2FmZmVjdGVkQnlFbXB0eShmYWxzZSkKQEAgLTUwMiw2ICs1MDAsNyBAQCBTdHls
ZURpZmZlcmVuY2UgUmVuZGVyU3R5bGU6OmRpZmYoY29uc3QgCiAgICAgICAgIGluaGVyaXRlZF9m
bGFncy5fdmlzaWJpbGl0eSAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5IHx8
CiAgICAgICAgIGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyAhPSBvdGhlci0+aW5o
ZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zIHx8CiAgICAgICAgIGluaGVyaXRlZF9mbGFn
cy5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgIT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5f
Zm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUgfHwKKyAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9p
bnNpZGVMaW5rICE9IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxpbmsgfHwKICAgICAg
ICAgc3Vycm91bmQtPmJvcmRlciAhPSBvdGhlci0+c3Vycm91bmQtPmJvcmRlciB8fAogICAgICAg
ICAqYmFja2dyb3VuZC5nZXQoKSAhPSAqb3RoZXItPmJhY2tncm91bmQuZ2V0KCkgfHwKICAgICAg
ICAgdmlzdWFsLT50ZXh0RGVjb3JhdGlvbiAhPSBvdGhlci0+dmlzdWFsLT50ZXh0RGVjb3JhdGlv
biB8fApAQCAtOTY3LDQgKzk2Niw5OCBAQCB2b2lkIFJlbmRlclN0eWxlOjpnZXRCb3hTaGFkb3dW
ZXJ0aWNhbEV4CiAgICAgfQogfQogCitzdGF0aWMgRUJvcmRlclN0eWxlIGJvcmRlclN0eWxlRm9y
Q29sb3JQcm9wZXJ0eShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGludCBjb2xvclByb3BlcnR5
KQoreworICAgIEVCb3JkZXJTdHlsZSBib3JkZXJTdHlsZTsKKyAgICBzd2l0Y2ggKGNvbG9yUHJv
cGVydHkpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgorICAgICAgICBi
b3JkZXJTdHlsZSA9IHN0eWxlLT5ib3JkZXJMZWZ0U3R5bGUoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I6CisgICAgICAgIGJvcmRlclN0eWxl
ID0gc3R5bGUtPmJvcmRlclJpZ2h0U3R5bGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yOgorICAgICAgICBib3JkZXJTdHlsZSA9IHN0eWxlLT5i
b3JkZXJUb3BTdHlsZSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tQ29sb3I6CisgICAgICAgIGJvcmRlclN0eWxlID0gc3R5bGUtPmJvcmRlckJvdHRv
bVN0eWxlKCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJvcmRlclN0
eWxlID0gQk5PTkU7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gYm9yZGVyU3R5
bGU7Cit9CisKK3N0YXRpYyBDb2xvciBjb2xvckluY2x1ZGluZ0ZhbGxiYWNrKGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSwgaW50IGNvbG9yUHJvcGVydHksIEVCb3JkZXJTdHlsZSBib3JkZXJTdHls
ZSkKK3sKKyAgICBDb2xvciByZXN1bHQ7CisgICAgc3dpdGNoIChjb2xvclByb3BlcnR5KSB7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKKyAgICAgICAgcmV0dXJuIHN0eWxl
LT5iYWNrZ3JvdW5kQ29sb3IoKTsgLy8gQmFja2dyb3VuZCBjb2xvciBkb2Vzbid0IGZhbGwgYmFj
ay4KKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgorICAgICAgICByZXN1bHQg
PSBzdHlsZS0+Ym9yZGVyTGVmdENvbG9yKCk7CisgICAgICAgIGJvcmRlclN0eWxlID0gc3R5bGUt
PmJvcmRlckxlZnRTdHlsZSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRDb2xvcjoKKyAgICAgICAgcmVzdWx0ID0gc3R5bGUtPmJvcmRlclJpZ2h0Q29s
b3IoKTsKKyAgICAgICAgYm9yZGVyU3R5bGUgPSBzdHlsZS0+Ym9yZGVyUmlnaHRTdHlsZSgpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6CisgICAg
ICAgIHJlc3VsdCA9IHN0eWxlLT5ib3JkZXJUb3BDb2xvcigpOworICAgICAgICBib3JkZXJTdHls
ZSA9IHN0eWxlLT5ib3JkZXJUb3BTdHlsZSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I6CisgICAgICAgIHJlc3VsdCA9IHN0eWxlLT5ib3Jk
ZXJCb3R0b21Db2xvcigpOworICAgICAgICBib3JkZXJTdHlsZSA9IHN0eWxlLT5ib3JkZXJCb3R0
b21TdHlsZSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3I6Cisg
ICAgICAgIHJlc3VsdCA9IHN0eWxlLT5jb2xvcigpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5T3V0bGluZUNvbG9yOgorICAgICAgICByZXN1bHQgPSBzdHlsZS0+b3V0bGlu
ZUNvbG9yKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5SdWxlQ29sb3I6CisgICAgICAgIHJlc3VsdCA9IHN0eWxlLT5jb2x1bW5SdWxlQ29sb3IoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3I6
CisgICAgICAgIHJlc3VsdCA9IHN0eWxlLT50ZXh0RmlsbENvbG9yKCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I6CisgICAgICAgIHJl
c3VsdCA9IHN0eWxlLT50ZXh0U3Ryb2tlQ29sb3IoKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgLy8gRklYTUU6IEFkZCBTVkcgZmlsbCBhbmQgc3Ryb2tlLgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYg
KCFyZXN1bHQuaXNWYWxpZCgpKSB7CisgICAgICAgIGlmICgoY29sb3JQcm9wZXJ0eSA9PSBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRDb2xvciB8fCBjb2xvclByb3BlcnR5ID09IENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRDb2xvcgorICAgICAgICAgICAgfHwgY29sb3JQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0
eUJvcmRlclRvcENvbG9yIHx8IGNvbG9yUHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21Db2xvcikKKyAgICAgICAgICAgICYmIChib3JkZXJTdHlsZSA9PSBJTlNFVCB8fCBib3JkZXJT
dHlsZSA9PSBPVVRTRVQgfHwgYm9yZGVyU3R5bGUgPT0gUklER0UgfHwgYm9yZGVyU3R5bGUgPT0g
R1JPT1ZFKSkKKyAgICAgICAgICAgIHJlc3VsdC5zZXRSR0IoMjM4LCAyMzgsIDIzOCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IHN0eWxlLT5jb2xvcigpOworICAgIH0KKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NvbG9yIFJlbmRlclN0eWxlOjp2aXNpdGVkRGVwZW5k
ZW50Q29sb3IoaW50IGNvbG9yUHJvcGVydHkpIGNvbnN0Cit7CisgICAgRUJvcmRlclN0eWxlIGJv
cmRlclN0eWxlID0gYm9yZGVyU3R5bGVGb3JDb2xvclByb3BlcnR5KHRoaXMsIGNvbG9yUHJvcGVy
dHkpOworICAgIENvbG9yIHVudmlzaXRlZENvbG9yID0gY29sb3JJbmNsdWRpbmdGYWxsYmFjayh0
aGlzLCBjb2xvclByb3BlcnR5LCBib3JkZXJTdHlsZSk7CisgICAgaWYgKGluc2lkZUxpbmsoKSAh
PSBJbnNpZGVWaXNpdGVkTGluaykKKyAgICAgICAgcmV0dXJuIHVudmlzaXRlZENvbG9yOworCisg
ICAgUmVuZGVyU3R5bGUqIHZpc2l0ZWRTdHlsZSA9IGdldENhY2hlZFBzZXVkb1N0eWxlKFZJU0lU
RURfTElOSyk7CisgICAgaWYgKCF2aXNpdGVkU3R5bGUpCisgICAgICAgIHJldHVybiB1bnZpc2l0
ZWRDb2xvcjsKKyAgICBDb2xvciB2aXNpdGVkQ29sb3IgPSBjb2xvckluY2x1ZGluZ0ZhbGxiYWNr
KHZpc2l0ZWRTdHlsZSwgY29sb3JQcm9wZXJ0eSwgYm9yZGVyU3R5bGUpOworCisgICAgLy8gVGFr
ZSB0aGUgYWxwaGEgZnJvbSB0aGUgdW52aXNpdGVkIGNvbG9yLCBidXQgZ2V0IHRoZSBSR0IgdmFs
dWVzIGZyb20gdGhlIHZpc2l0ZWQgY29sb3IuCisgICAgcmV0dXJuIENvbG9yKHZpc2l0ZWRDb2xv
ci5yZWQoKSwgdmlzaXRlZENvbG9yLmdyZWVuKCksIHZpc2l0ZWRDb2xvci5ibHVlKCksIHVudmlz
aXRlZENvbG9yLmFscGhhKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDU3MTY1KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2
LDcgKzExNiw2IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgYml0ZmllbGQg
aXMgMzItYml0cyBsb25nLCB3aGljaCBvcHRpbWl6ZXMgcGFkZGluZyB3aXRoIHRoZQogICAgIC8v
IGludCByZWZDb3VudCBpbiB0aGUgYmFzZSBjbGFzcy4gQmV3YXJlIHdoZW4gYWRkaW5nIG1vcmUg
Yml0cy4KLSAgICB1bnNpZ25lZCBtX3BzZXVkb1N0YXRlIDogMzsgLy8gUHNldWRvU3RhdGUKICAg
ICBib29sIG1fYWZmZWN0ZWRCeUF0dHJpYnV0ZVNlbGVjdG9ycyA6IDE7CiAgICAgYm9vbCBtX3Vu
aXF1ZSA6IDE7CiAKQEAgLTEzMyw3ICsxMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2No
aWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIDogMTsKICAgICBib29sIG1f
Zmlyc3RDaGlsZFN0YXRlIDogMTsKICAgICBib29sIG1fbGFzdENoaWxkU3RhdGUgOiAxOwotICAg
IHVuc2lnbmVkIG1fY2hpbGRJbmRleCA6IDE4OyAvLyBQbGVudHkgb2YgYml0cyB0byBjYWNoZSBh
biBpbmRleC4KKyAgICB1bnNpZ25lZCBtX2NoaWxkSW5kZXggOiAyMTsgLy8gUGxlbnR5IG9mIGJp
dHMgdG8gY2FjaGUgYW4gaW5kZXguCiAKICAgICAvLyBub24taW5oZXJpdGVkIGF0dHJpYnV0ZXMK
ICAgICBEYXRhUmVmPFN0eWxlQm94RGF0YT4gYm94OwpAQCAtMTc2LDcgKzE3NSw4IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgICAgICAgICAgICAoX3Zpc3VhbGx5T3JkZXJlZCA9PSBvdGhlci5fdmlz
dWFsbHlPcmRlcmVkKSAmJgogICAgICAgICAgICAgICAgICAgIChfaHRtbEhhY2tzID09IG90aGVy
Ll9odG1sSGFja3MpICYmCiAgICAgICAgICAgICAgICAgICAgKF9mb3JjZV9iYWNrZ3JvdW5kc190
b193aGl0ZSA9PSBvdGhlci5fZm9yY2VfYmFja2dyb3VuZHNfdG9fd2hpdGUpICYmCi0gICAgICAg
ICAgICAgICAgICAgKF9wb2ludGVyRXZlbnRzID09IG90aGVyLl9wb2ludGVyRXZlbnRzKTsKKyAg
ICAgICAgICAgICAgICAgICAoX3BvaW50ZXJFdmVudHMgPT0gb3RoZXIuX3BvaW50ZXJFdmVudHMp
ICYmCisgICAgICAgICAgICAgICAgICAgKF9pbnNpZGVMaW5rID09IG90aGVyLl9pbnNpZGVMaW5r
KTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmhlcml0ZWRG
bGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CkBAIC0yMDEs
NiArMjAxLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBib29sIF9odG1sSGFja3MgOiAxOwogICAg
ICAgICBib29sIF9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSA6IDE7CiAgICAgICAgIHVuc2ln
bmVkIF9wb2ludGVyRXZlbnRzIDogNDsgLy8gRVBvaW50ZXJFdmVudHMKKyAgICAgICAgRUluc2lk
ZUxpbmsgX2luc2lkZUxpbmsgOiAyOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgY29udGFpbmVk
IGluc2lkZSBhIGxpbmsuCiAgICAgICAgIC8vIDQxIGJpdHMKICAgICB9IGluaGVyaXRlZF9mbGFn
czsKIApAQCAtMjI1LDcgKzIyNiw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICAmJiBf
YWZmZWN0ZWRCeUFjdGl2ZSA9PSBvdGhlci5fYWZmZWN0ZWRCeUFjdGl2ZQogICAgICAgICAgICAg
ICAgICYmIF9hZmZlY3RlZEJ5RHJhZyA9PSBvdGhlci5fYWZmZWN0ZWRCeURyYWcKICAgICAgICAg
ICAgICAgICAmJiBfcHNldWRvQml0cyA9PSBvdGhlci5fcHNldWRvQml0cwotICAgICAgICAgICAg
ICAgICYmIF91bmljb2RlQmlkaSA9PSBvdGhlci5fdW5pY29kZUJpZGk7CisgICAgICAgICAgICAg
ICAgJiYgX3VuaWNvZGVCaWRpID09IG90aGVyLl91bmljb2RlQmlkaQorICAgICAgICAgICAgICAg
ICYmIF9pc0xpbmsgPT0gb3RoZXIuX2lzTGluazsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOyB9CkBAIC0yNDQsMTIgKzI0NiwxMyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHVuc2lnbmVkIF9wYWdlX2JyZWFrX2FmdGVyIDogMjsgLy8gRVBhZ2VCcmVhawogICAg
ICAgICB1bnNpZ25lZCBfcGFnZV9icmVha19pbnNpZGUgOiAyOyAvLyBFUGFnZUJyZWFrCiAKLSAg
ICAgICAgdW5zaWduZWQgX3N0eWxlVHlwZSA6IDU7IC8vIFBzZXVkb0lkCisgICAgICAgIHVuc2ln
bmVkIF9zdHlsZVR5cGUgOiA2OyAvLyBQc2V1ZG9JZAogICAgICAgICBib29sIF9hZmZlY3RlZEJ5
SG92ZXIgOiAxOwogICAgICAgICBib29sIF9hZmZlY3RlZEJ5QWN0aXZlIDogMTsKICAgICAgICAg
Ym9vbCBfYWZmZWN0ZWRCeURyYWcgOiAxOwogICAgICAgICB1bnNpZ25lZCBfcHNldWRvQml0cyA6
IDc7CiAgICAgICAgIHVuc2lnbmVkIF91bmljb2RlQmlkaSA6IDI7IC8vIEVVbmljb2RlQmlkaQor
ICAgICAgICBib29sIF9pc0xpbmsgOiAxOwogICAgICAgICAvLyA1MCBiaXRzCiAgICAgfSBub25p
bmhlcml0ZWRfZmxhZ3M7CiAKQEAgLTI3NSw2ICsyNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IGluaGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlvbiA9IGluaXRpYWxCb3hEaXJlY3Rpb24oKTsK
ICAgICAgICAgaW5oZXJpdGVkX2ZsYWdzLl9mb3JjZV9iYWNrZ3JvdW5kc190b193aGl0ZSA9IGZh
bHNlOwogICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX3BvaW50ZXJFdmVudHMgPSBpbml0aWFsUG9p
bnRlckV2ZW50cygpOworICAgICAgICBpbmhlcml0ZWRfZmxhZ3MuX2luc2lkZUxpbmsgPSBOb3RJ
bnNpZGVMaW5rOwogCiAgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fZWZmZWN0aXZlRGlzcGxh
eSA9IG5vbmluaGVyaXRlZF9mbGFncy5fb3JpZ2luYWxEaXNwbGF5ID0gaW5pdGlhbERpc3BsYXko
KTsKICAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9vdmVyZmxvd1ggPSBpbml0aWFsT3ZlcmZs
b3dYKCk7CkBAIC0yOTMsNiArMjk3LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBub25pbmhlcml0
ZWRfZmxhZ3MuX2FmZmVjdGVkQnlEcmFnID0gZmFsc2U7CiAgICAgICAgIG5vbmluaGVyaXRlZF9m
bGFncy5fcHNldWRvQml0cyA9IDA7CiAgICAgICAgIG5vbmluaGVyaXRlZF9mbGFncy5fdW5pY29k
ZUJpZGkgPSBpbml0aWFsVW5pY29kZUJpZGkoKTsKKyAgICAgICAgbm9uaW5oZXJpdGVkX2ZsYWdz
Ll9pc0xpbmsgPSBmYWxzZTsKICAgICB9CiAKIHByb3RlY3RlZDoKQEAgLTU4Nyw2ICs1OTIsOSBA
QCBwdWJsaWM6CiAKICAgICBDdXJzb3JMaXN0KiBjdXJzb3JzKCkgY29uc3QgeyByZXR1cm4gaW5o
ZXJpdGVkLT5jdXJzb3JEYXRhLmdldCgpOyB9CiAKKyAgICBFSW5zaWRlTGluayBpbnNpZGVMaW5r
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUluc2lkZUxpbms+KGluaGVyaXRlZF9mbGFn
cy5faW5zaWRlTGluayk7IH0KKyAgICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIG5vbmlu
aGVyaXRlZF9mbGFncy5faXNMaW5rOyB9CisKICAgICBzaG9ydCB3aWRvd3MoKSBjb25zdCB7IHJl
dHVybiBpbmhlcml0ZWQtPndpZG93czsgfQogICAgIHNob3J0IG9ycGhhbnMoKSBjb25zdCB7IHJl
dHVybiBpbmhlcml0ZWQtPm9ycGhhbnM7IH0KICAgICBFUGFnZUJyZWFrIHBhZ2VCcmVha0luc2lk
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVQYWdlQnJlYWs+KG5vbmluaGVyaXRlZF9m
bGFncy5fcGFnZV9icmVha19pbnNpZGUpOyB9CkBAIC05MTIsNiArOTIwLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Q3Vyc29yTGlzdChQYXNzUmVmUHRyPEN1cnNvckxpc3Q+KTsKICAgICB2b2lk
IGNsZWFyQ3Vyc29yTGlzdCgpOwogCisgICAgdm9pZCBzZXRJbnNpZGVMaW5rKEVJbnNpZGVMaW5r
IGluc2lkZUxpbmspIHsgaW5oZXJpdGVkX2ZsYWdzLl9pbnNpZGVMaW5rID0gaW5zaWRlTGluazsg
fQorICAgIHZvaWQgc2V0SXNMaW5rKGJvb2wgYikgeyBub25pbmhlcml0ZWRfZmxhZ3MuX2lzTGlu
ayA9IGI7IH0KKwogICAgIGJvb2wgZm9yY2VCYWNrZ3JvdW5kc1RvV2hpdGUoKSBjb25zdCB7IHJl
dHVybiBpbmhlcml0ZWRfZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlOyB9CiAgICAg
dm9pZCBzZXRGb3JjZUJhY2tncm91bmRzVG9XaGl0ZShib29sIGI9dHJ1ZSkgeyBpbmhlcml0ZWRf
ZmxhZ3MuX2ZvcmNlX2JhY2tncm91bmRzX3RvX3doaXRlID0gYjsgfQogCkBAIC0xMDY5LDEwICsx
MDgwLDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgb3JpZ2luYWxEaXNwbGF5KCkgPT0gSU5M
SU5FX0JPWCB8fCBvcmlnaW5hbERpc3BsYXkoKSA9PSBJTkxJTkVfVEFCTEU7CiAgICAgfQogCi0g
ICAgLy8gVG8gb2J0YWluIGF0IGFueSB0aW1lIHRoZSBwc2V1ZG8gc3RhdGUgZm9yIGEgZ2l2ZW4g
bGluay4KLSAgICBQc2V1ZG9TdGF0ZSBwc2V1ZG9TdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFBzZXVkb1N0YXRlPihtX3BzZXVkb1N0YXRlKTsgfQotICAgIHZvaWQgc2V0UHNldWRv
U3RhdGUoUHNldWRvU3RhdGUgcykgeyBtX3BzZXVkb1N0YXRlID0gczsgfQotCiAgICAgLy8gVG8g
dGVsbCBpZiB0aGlzIHN0eWxlIG1hdGNoZWQgYXR0cmlidXRlIHNlbGVjdG9ycy4gVGhpcyBtYWtl
cyBpdCBpbXBvc3NpYmxlIHRvIHNoYXJlLgogICAgIGJvb2wgYWZmZWN0ZWRCeUF0dHJpYnV0ZVNl
bGVjdG9ycygpIGNvbnN0IHsgcmV0dXJuIG1fYWZmZWN0ZWRCeUF0dHJpYnV0ZVNlbGVjdG9yczsg
fQogICAgIHZvaWQgc2V0QWZmZWN0ZWRCeUF0dHJpYnV0ZVNlbGVjdG9ycygpIHsgbV9hZmZlY3Rl
ZEJ5QXR0cmlidXRlU2VsZWN0b3JzID0gdHJ1ZTsgfQpAQCAtMTEwMiw2ICsxMTA5LDggQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIGNoaWxkSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkSW5k
ZXg7IH0KICAgICB2b2lkIHNldENoaWxkSW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9jaGlsZElu
ZGV4ID0gaW5kZXg7IH0KIAorICAgIENvbG9yIHZpc2l0ZWREZXBlbmRlbnRDb2xvcihpbnQgY29s
b3JQcm9wZXJ0eSkgY29uc3Q7CisKICAgICAvLyBJbml0aWFsIHZhbHVlcyBmb3IgYWxsIHRoZSBw
cm9wZXJ0aWVzCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbEJvcmRlckNvbGxhcHNlKCkgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgRUJvcmRlclN0eWxlIGluaXRpYWxCb3JkZXJTdHlsZSgp
IHsgcmV0dXJuIEJOT05FOyB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZUNvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlQ29uc3RhbnRzLmgJKHJldmlzaW9uIDU3MTY1KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyAr
NzQsNyBAQCBlbnVtIFBzZXVkb0lkIHsKICAgICBNRURJQV9DT05UUk9MU19TRUVLX0JBQ0tfQlVU
VE9OLCBNRURJQV9DT05UUk9MU19TRUVLX0ZPUldBUkRfQlVUVE9OLCBNRURJQV9DT05UUk9MU19G
VUxMU0NSRUVOX0JVVFRPTiwgTUVESUFfQ09OVFJPTFNfUkVXSU5EX0JVVFRPTiwgCiAgICAgTUVE
SUFfQ09OVFJPTFNfUkVUVVJOX1RPX1JFQUxUSU1FX0JVVFRPTiwgTUVESUFfQ09OVFJPTFNfVE9H
R0xFX0NMT1NFRF9DQVBUSU9OU19CVVRUT04sCiAgICAgTUVESUFfQ09OVFJPTFNfU1RBVFVTX0RJ
U1BMQVksIFNDUk9MTEJBUl9USFVNQiwgU0NST0xMQkFSX0JVVFRPTiwgU0NST0xMQkFSX1RSQUNL
LCBTQ1JPTExCQVJfVFJBQ0tfUElFQ0UsIFNDUk9MTEJBUl9DT1JORVIsIFJFU0laRVIsCi0gICAg
SU5QVVRfTElTVF9CVVRUT04sIElOTkVSX1NQSU5fQlVUVE9OLCBPVVRFUl9TUElOX0JVVFRPTiwK
KyAgICBJTlBVVF9MSVNUX0JVVFRPTiwgSU5ORVJfU1BJTl9CVVRUT04sIE9VVEVSX1NQSU5fQlVU
VE9OLCBWSVNJVEVEX0xJTkssCiAKICAgICBBRlRFUl9MQVNUX0lOVEVSTkFMX1BTRVVET0lELAog
ICAgIEZJUlNUX1BVQkxJQ19QU0VVRE9JRCA9IEZJUlNUX0xJTkUsCkBAIC04OCw4ICs4OCw2IEBA
IGVudW0gRUJvcmRlclN0eWxlIHsgQk5PTkUsIEJISURERU4sIElOU0UKIAogZW51bSBFQm9yZGVy
UHJlY2VkZW5jZSB7IEJPRkYsIEJUQUJMRSwgQkNPTEdST1VQLCBCQ09MLCBCUk9XR1JPVVAsIEJS
T1csIEJDRUxMIH07CiAKLWVudW0gUHNldWRvU3RhdGUgeyBQc2V1ZG9Vbmtub3duLCBQc2V1ZG9O
b25lLCBQc2V1ZG9BbnlMaW5rLCBQc2V1ZG9MaW5rLCBQc2V1ZG9WaXNpdGVkfTsKLQogZW51bSBF
UG9zaXRpb24gewogICAgIFN0YXRpY1Bvc2l0aW9uLCBSZWxhdGl2ZVBvc2l0aW9uLCBBYnNvbHV0
ZVBvc2l0aW9uLCBGaXhlZFBvc2l0aW9uCiB9OwpAQCAtOTgsNyArOTYsNiBAQCBlbnVtIEVGbG9h
dCB7CiAgICAgRk5PTkUgPSAwLCBGTEVGVCwgRlJJR0hUCiB9OwogCi0KIGVudW0gRU1hcmdpbkNv
bGxhcHNlIHsgTUNPTExBUFNFLCBNU0VQQVJBVEUsIE1ESVNDQVJEIH07CiAKIC8vIEJveCBhdHRy
aWJ1dGVzLiBOb3QgaW5oZXJpdGVkLgpAQCAtMzg5LDYgKzM4NiwxMCBAQCBlbnVtIEVEaXNwbGF5
IHsKICAgICBOT05FCiB9OwogCitlbnVtIEVJbnNpZGVMaW5rIHsKKyAgICBOb3RJbnNpZGVMaW5r
LCBJbnNpZGVVbnZpc2l0ZWRMaW5rLCBJbnNpZGVWaXNpdGVkTGluaworfTsKKyAgICAKIGVudW0g
RVBvaW50ZXJFdmVudHMgewogICAgIFBFX05PTkUsIFBFX0FVVE8sIFBFX1NUUk9LRSwgUEVfRklM
TCwgUEVfUEFJTlRFRCwgUEVfVklTSUJMRSwKICAgICBQRV9WSVNJQkxFX1NUUk9LRSwgUEVfVklT
SUJMRV9GSUxMLCBQRV9WSVNJQkxFX1BBSU5URUQsIFBFX0FMTApJbmRleDogV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR1BhaW50U2VydmVyLmNwcAkocmV2aXNpb24gNTcxNjUpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdQYWludFNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5
LDcgQEAgU1ZHUGFpbnRTZXJ2ZXIqIFNWR1BhaW50U2VydmVyOjpmaWxsUGFpbgogICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIFNWR1BhaW50KiBmaWxsID0gc3R5bGUtPnN2Z1N0eWxlKCktPmZpbGxQ
YWludCgpOwotCisgICAgICAgIAogICAgIFNWR1BhaW50U2VydmVyKiBmaWxsUGFpbnRTZXJ2ZXIg
PSAwOwogICAgIFNWR1BhaW50OjpTVkdQYWludFR5cGUgcGFpbnRUeXBlID0gZmlsbC0+cGFpbnRU
eXBlKCk7CiAgICAgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9VUkkg
fHwKQEAgLTk4LDEwICs5OCwyOSBAQCBTVkdQYWludFNlcnZlciogU1ZHUGFpbnRTZXJ2ZXI6OmZp
bGxQYWluCiAgICAgaWYgKHBhaW50VHlwZSAhPSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9VUkkg
JiYgIWZpbGxQYWludFNlcnZlcikgewogICAgICAgICBmaWxsUGFpbnRTZXJ2ZXIgPSBzaGFyZWRT
b2xpZFBhaW50U2VydmVyKCk7CiAgICAgICAgIFNWR1BhaW50U2VydmVyU29saWQqIGZpbGxQYWlu
dFNlcnZlclNvbGlkID0gc3RhdGljX2Nhc3Q8U1ZHUGFpbnRTZXJ2ZXJTb2xpZCo+KGZpbGxQYWlu
dFNlcnZlcik7CisgICAgICAgIAorICAgICAgICBDb2xvciBmaWxsQ29sb3I7CiAgICAgICAgIGlm
IChwYWludFR5cGUgPT0gU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfQ1VSUkVOVENPTE9SKQotICAg
ICAgICAgICAgZmlsbFBhaW50U2VydmVyU29saWQtPnNldENvbG9yKHN0eWxlLT5jb2xvcigpKTsK
KyAgICAgICAgICAgIGZpbGxDb2xvciA9IHN0eWxlLT5jb2xvcigpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBmaWxsUGFpbnRTZXJ2ZXJTb2xpZC0+c2V0Q29sb3IoZmlsbC0+Y29sb3IoKSk7
CisgICAgICAgICAgICBmaWxsQ29sb3IgPSBmaWxsLT5jb2xvcigpOworCisgICAgICAgIGlmIChz
dHlsZS0+aW5zaWRlTGluaygpID09IEluc2lkZVZpc2l0ZWRMaW5rKSB7CisgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogdmlzaXRlZFN0eWxlID0gc3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxlKFZJ
U0lURURfTElOSyk7CisgICAgICAgICAgICBTVkdQYWludCogdmlzaXRlZEZpbGwgPSB2aXNpdGVk
U3R5bGUtPnN2Z1N0eWxlKCktPmZpbGxQYWludCgpOworICAgICAgICAgICAgQ29sb3IgdmlzaXRl
ZEZpbGxDb2xvcjsKKyAgICAgICAgICAgIGlmICh2aXNpdGVkRmlsbC0+cGFpbnRUeXBlKCkgIT0g
U1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfVVJJKSB7CisgICAgICAgICAgICAgICAgaWYgKHZpc2l0
ZWRGaWxsLT5wYWludFR5cGUoKSA9PSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09M
T1IpCisgICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRGaWxsQ29sb3IgPSB2aXNpdGVkU3R5bGUt
PmNvbG9yKCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB2aXNp
dGVkRmlsbENvbG9yID0gdmlzaXRlZEZpbGwtPmNvbG9yKCk7CisgICAgICAgICAgICAgICAgaWYg
KHZpc2l0ZWRGaWxsQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICBmaWxsQ29s
b3IgPSBDb2xvcih2aXNpdGVkRmlsbENvbG9yLnJlZCgpLCB2aXNpdGVkRmlsbENvbG9yLmdyZWVu
KCksIHZpc2l0ZWRGaWxsQ29sb3IuYmx1ZSgpLCBmaWxsQ29sb3IuYWxwaGEoKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmaWxsUGFpbnRTZXJ2ZXJTb2xpZC0+c2V0Q29s
b3IoZmlsbENvbG9yKTsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBJZGVhbGx5IGludmFs
aWQgY29sb3JzIHdvdWxkIG5ldmVyIGdldCBzZXQgb24gdGhlIFJlbmRlclN0eWxlIGFuZCB0aGlz
IGNvdWxkIHR1cm4gaW50byBhbiBBU1NFUlQKICAgICAgICAgaWYgKCFmaWxsUGFpbnRTZXJ2ZXJT
b2xpZC0+Y29sb3IoKS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBmaWxsUGFpbnRTZXJ2ZXIgPSAw
OwpAQCAtMTQxLDEwICsxNjAsMjkgQEAgU1ZHUGFpbnRTZXJ2ZXIqIFNWR1BhaW50U2VydmVyOjpz
dHJva2VQYQogICAgIGlmIChwYWludFR5cGUgIT0gU1ZHUGFpbnQ6OlNWR19QQUlOVFRZUEVfVVJJ
ICYmICFzdHJva2VQYWludFNlcnZlcikgewogICAgICAgICBzdHJva2VQYWludFNlcnZlciA9IHNo
YXJlZFNvbGlkUGFpbnRTZXJ2ZXIoKTsKICAgICAgICAgU1ZHUGFpbnRTZXJ2ZXJTb2xpZCogc3Ry
b2tlUGFpbnRTZXJ2ZXJTb2xpZCA9IHN0YXRpY19jYXN0PFNWR1BhaW50U2VydmVyU29saWQqPihz
dHJva2VQYWludFNlcnZlcik7CisgICAgICAgIAorICAgICAgICBDb2xvciBzdHJva2VDb2xvcjsK
ICAgICAgICAgaWYgKHBhaW50VHlwZSA9PSBTVkdQYWludDo6U1ZHX1BBSU5UVFlQRV9DVVJSRU5U
Q09MT1IpCi0gICAgICAgICAgICBzdHJva2VQYWludFNlcnZlclNvbGlkLT5zZXRDb2xvcihzdHls
ZS0+Y29sb3IoKSk7CisgICAgICAgICAgICBzdHJva2VDb2xvciA9IHN0eWxlLT5jb2xvcigpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHJva2VQYWludFNlcnZlclNvbGlkLT5zZXRDb2xv
cihzdHJva2UtPmNvbG9yKCkpOworICAgICAgICAgICAgc3Ryb2tlQ29sb3IgPSBzdHJva2UtPmNv
bG9yKCk7CisKKyAgICAgICAgaWYgKHN0eWxlLT5pbnNpZGVMaW5rKCkgPT0gSW5zaWRlVmlzaXRl
ZExpbmspIHsKKyAgICAgICAgICAgIFJlbmRlclN0eWxlKiB2aXNpdGVkU3R5bGUgPSBzdHlsZS0+
Z2V0Q2FjaGVkUHNldWRvU3R5bGUoVklTSVRFRF9MSU5LKTsKKyAgICAgICAgICAgIFNWR1BhaW50
KiB2aXNpdGVkU3Ryb2tlID0gdmlzaXRlZFN0eWxlLT5zdmdTdHlsZSgpLT5zdHJva2VQYWludCgp
OworICAgICAgICAgICAgQ29sb3IgdmlzaXRlZFN0cm9rZUNvbG9yOworICAgICAgICAgICAgaWYg
KHZpc2l0ZWRTdHJva2UtPnBhaW50VHlwZSgpICE9IFNWR1BhaW50OjpTVkdfUEFJTlRUWVBFX1VS
SSkgeworICAgICAgICAgICAgICAgIGlmICh2aXNpdGVkU3Ryb2tlLT5wYWludFR5cGUoKSA9PSBT
VkdQYWludDo6U1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IpCisgICAgICAgICAgICAgICAgICAg
IHZpc2l0ZWRTdHJva2VDb2xvciA9IHZpc2l0ZWRTdHlsZS0+Y29sb3IoKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRTdHJva2VDb2xvciA9IHZpc2l0
ZWRTdHJva2UtPmNvbG9yKCk7CisgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWRTdHJva2VDb2xv
ci5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgIHN0cm9rZUNvbG9yID0gQ29sb3Iodmlz
aXRlZFN0cm9rZUNvbG9yLnJlZCgpLCB2aXNpdGVkU3Ryb2tlQ29sb3IuZ3JlZW4oKSwgdmlzaXRl
ZFN0cm9rZUNvbG9yLmJsdWUoKSwgc3Ryb2tlQ29sb3IuYWxwaGEoKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBzdHJva2VQYWludFNlcnZlclNvbGlkLT5zZXRDb2xvcihz
dHJva2VDb2xvcik7CisKICAgICAgICAgLy8gRklYTUU6IElkZWFsbHkgaW52YWxpZCBjb2xvcnMg
d291bGQgbmV2ZXIgZ2V0IHNldCBvbiB0aGUgUmVuZGVyU3R5bGUgYW5kIHRoaXMgY291bGQgdHVy
biBpbnRvIGFuIEFTU0VSVAogICAgICAgICBpZiAoIXN0cm9rZVBhaW50U2VydmVyU29saWQtPmNv
bG9yKCkuaXNWYWxpZCgpKQogICAgICAgICAgICAgc3Ryb2tlUGFpbnRTZXJ2ZXIgPSAwOwpJbmRl
eDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU3MjI0KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNC0wNyAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzAwLCBkb24ndCBleHBv
c2UgaGlzdG9yeSBpbmZvIHZpYSBDU1MKKworICAgICAgICBBZGQgU1BJIHNvIHRoYXQgbGF5b3V0
IHRlc3RzIGNhbiBhY2Nlc3MgY29tcHV0ZWQgc3R5bGUgaW5jbHVkaW5nIDp2aXNpdGVkIGluZm9y
bWF0aW9uLgorCisgICAgICAgICogV2ViVmlldy9XZWJSZW5kZXJOb2RlLm1tOgorICAgICAgICAo
Y29weVJlbmRlck5vZGUpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV2ViVmlldyBfY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvOmZvckVsZW1lbnQ6
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTAtMDQtMDcgIEFuZHJleSBLb3N5YWtvdiAgPGNh
c2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5
LgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlbmRlck5vZGUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlbmRlck5vZGUubW0JKHJldmlzaW9uIDU3MTY1KQor
KysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlbmRlck5vZGUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTExOCw4ICsxMTgsMTUgQEAgc3RhdGljIFdlYlJlbmRlck5vZGUgKmNvcHlSZW5kZXJOb2RlKFJl
bgogICAgICAgICBJbnRSZWN0IGJveCA9IHRleHQtPmxpbmVzQm91bmRpbmdCb3goKTsKICAgICAg
ICAgd2lkdGggPSBib3gud2lkdGgoKTsKICAgICAgICAgaGVpZ2h0ID0gYm94LmhlaWdodCgpOwor
ICAgIH0gZWxzZSBpZiAobm9kZS0+aXNSZW5kZXJJbmxpbmUoKSkgeworICAgICAgICBSZW5kZXJC
b3hNb2RlbE9iamVjdCogaW5saW5lRmxvdyA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3Qobm9kZSk7
CisgICAgICAgIEludFJlY3QgYm91bmRpbmdCb3ggPSBpbmxpbmVGbG93LT5ib3JkZXJCb3VuZGlu
Z0JveCgpOworICAgICAgICB4ID0gYm91bmRpbmdCb3gueCgpOworICAgICAgICB5ID0gYm91bmRp
bmdCb3gueSgpOworICAgICAgICB3aWR0aCA9IGJvdW5kaW5nQm94LndpZHRoKCk7CisgICAgICAg
IGhlaWdodCA9IGJvdW5kaW5nQm94LmhlaWdodCgpOwogICAgIH0KLSAgICAKKwogICAgIFdlYlJl
bmRlck5vZGUgKnJlc3VsdCA9IFtbV2ViUmVuZGVyTm9kZSBhbGxvY10gX2luaXRXaXRoTmFtZTpu
YW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBvc2l0aW9uOmFic1BvcyByZWN0Ok5TTWFrZVJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b3JlRnJhbWU6ZnJhbWUgY2hpbGRyZW46Y2hpbGRyZW5dOwpJbmRleDogV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHJldmlzaW9uIDU3MTY1KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEwMSwxMCArMTAxLDEzIEBACiAjaW1wb3J0ICJXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyLmgiCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRlNldC5oPgogI2lt
cG9ydCA8Rm91bmRhdGlvbi9OU1VSTENvbm5lY3Rpb24uaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0FQSUNhc3QuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWVSZWYuaD4KICNp
bXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvQmFja0ZvcndhcmRMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NhY2hlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0NvbG9yTWFjLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRGF0YWJhc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KQEAgLTEyNCw2ICsx
MjcsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SGlzdG9yeUl0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9KU0Vs
ZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9nZ2luZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9N
SU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KQEAgLTU2OTksNiAr
NTcwNCwyNSBAQCAtICh2b2lkKV9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoRXJyb3I6KE5TCiAKIEBl
bmQKIAorQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdQcml2YXRlU3R5bGVJbmZvKQor
CistIChKU1ZhbHVlUmVmKV9jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86KEpTQ29u
dGV4dFJlZiljb250ZXh0IGZvckVsZW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWUKK3sKKyAgICBKU0xv
Y2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY29udGV4dCk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOworICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgdmFs
dWUpOworICAgIGlmICghanNWYWx1ZS5pbmhlcml0cygmSlNFbGVtZW50OjpzX2luZm8pKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgSlNFbGVtZW50
KiBqc0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxKU0VsZW1lbnQqPihhc09iamVjdChqc1ZhbHVlKSk7
CisgICAgRWxlbWVudCogZWxlbWVudCA9IGpzRWxlbWVudC0+aW1wbCgpOworICAgIFJlZlB0cjxD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gY29tcHV0ZWRTdHlsZShlbGVtZW50
LCB0cnVlKTsKKyAgICByZXR1cm4gdG9SZWYoZXhlYywgdG9KUyhleGVjLCBqc0VsZW1lbnQtPmds
b2JhbE9iamVjdCgpLCBzdHlsZS5nZXQoKSkpOworfQorCitAZW5kCisKICNpZmRlZiBCVUlMRElO
R19PTl9MRU9QQVJECiAKIHN0YXRpYyBJTVAgb3JpZ2luYWxSZWN1cnNpdmVseVJlbW92ZU1haWxB
dHRyaWJ1dGVzSW1wOwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAkocmV2
aXNpb24gNTcxNjUpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE3NCw0ICsxNzQsNiBAQCBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZp
ZXdPdGhlckludGVybmFsCiAtICh2b2lkKV9leGl0RnVsbHNjcmVlbjsKICNlbmRpZgogCistIChK
U1ZhbHVlUmVmKV9jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86KEpTQ29udGV4dFJl
Ziljb250ZXh0IGZvckVsZW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWU7CisKIEBlbmQKSW5kZXg6IFdl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiA1NzE2NSkKKysrIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTksNiArNTk5
LDEwIEBAIEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld0dlb2xvY2F0aW9uKQogLSAodm9pZClf
Z2VvbG9jYXRpb25EaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7CiBAZW5kCiAKK0Bp
bnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld1ByaXZhdGVTdHlsZUluZm8pCistIChKU1ZhbHVlUmVm
KV9jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86KEpTQ29udGV4dFJlZiljb250ZXh0
IGZvckVsZW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWU7CitAZW5kCisKIEBpbnRlcmZhY2UgTlNPYmpl
Y3QgKFdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZSkKIC0gKHZvaWQpd2ViVmlldzooV2ViVmll
dyAqKXNlbmRlciBkaWRGaXJzdExheW91dEluRnJhbWU6KFdlYkZyYW1lICopZnJhbWU7CiAKSW5k
ZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDU3MjI0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDQtMDcgIERhdmlkIEh5YXR0ICA8aHlhdHRA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMwMCwgZG9uJ3Qg
ZXhwb3NlIGhpc3RvcnkgaW5mbyB2aWEgQ1NTLiAgQWRkIGEgbmV3IG1ldGhvZCBmb3IKKyAgICAg
ICAgb2J0YWluaW5nIGNvbXB1dGVkIHN0eWxlIHdpdGggOnZpc2l0ZWQgaW5mbyBpbmNsdWRlZC4g
IFRoaXMgYWxsb3dzIGxheW91dCB0ZXN0cyB0byBhY3R1YWxseSB0ZWxsIHRoYXQKKyAgICAgICAg
OnZpc2l0ZWQgaXMgaW4gZWZmZWN0LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0
ZWRJbmZvQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1
bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y29tcHV0ZWRTdHlsZUluY2x1ZGlu
Z1Zpc2l0ZWRJbmZvKToKKwogMjAxMC0wMy0zMSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDU3MTY1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjQsNiArNDY0LDE2IEBAIHN0YXRpYyBKU1Zh
bHVlUmVmIGtlZXBXZWJIaXN0b3J5Q2FsbGJhY2sKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGNvbXB1dGVkU3R5bGVJbmNs
dWRpbmdWaXNpdGVkSW5mb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CisgICAgCisgICAgLy8gSGFzIG1hYyBpbXBsZW1lbnRhdGlvbgor
ICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0
VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJl
dHVybiBjb250cm9sbGVyLT5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29udGV4
dCwgYXJndW1lbnRzWzBdKTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgbGF5ZXJUcmVlQXNUZXh0
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMg
JiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC0xNDI3LDYgKzE0MzcsNyBAQCBKU1N0YXRpY0Z1
bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6CiAgICAgICAgIHsgImNsZWFyQmFja0Zvcndh
cmRMaXN0IiwgY2xlYXJCYWNrRm9yd2FyZExpc3RDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJjbGVhclBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldCIsIGNsZWFyUGVyc2lzdGVudFVzZXJTdHls
ZVNoZWV0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiY2xvc2VXZWJJbnNwZWN0b3IiLCBj
bG9zZVdlYkluc3BlY3RvckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImNvbXB1dGVkU3R5
bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyIsIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5m
b0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImRlY29kZUhvc3ROYW1lIiwgZGVjb2RlSG9z
dE5hbWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkaXNhYmxlSW1hZ2VMb2FkaW5nIiwg
ZGlzYWJsZUltYWdlTG9hZGluZ0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImRpc3BhdGNo
UGVuZGluZ0xvYWRSZXF1ZXN0cyIsIGRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0c0NhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDU3MTY1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNvdW50ZXJWYWx1
ZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKTsKICAgICBib29sIGlzQ29tbWFuZEVuYWJs
ZWQoSlNTdHJpbmdSZWYgbmFtZSk7CiAgICAgdm9pZCBrZWVwV2ViSGlzdG9yeSgpOworICAgIEpT
VmFsdWVSZWYgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEpTQ29udGV4dFJlZiwg
SlNWYWx1ZVJlZik7CiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAgICAgaW50IG51bWJlck9mUGFn
ZXMoZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscyk7CiAg
ICAgdm9pZCBvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYga2V5LCBKU1N0cmluZ1JlZiB2
YWx1ZSk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA1NzE2NSkKKysrIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjprZWVwV2ViSGlzdG9yCiAgICAgfQogfQogCitKU1ZhbHVlUmVmIExheW91dFRlc3RDb250cm9s
bGVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTVmFsdWVSZWYgdmFsdWUpCit7ICAgCisgICAgcmV0dXJuIFtbbWFpbkZyYW1lIHdlYlZp
ZXddIF9jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86Y29udGV4dCBmb3JFbGVtZW50
OnZhbHVlXTsKK30KKwogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9s
bGVyOjpsYXllclRyZWVBc1RleHQoKSBjb25zdAogewogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBzdHJpbmcoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1Jl
ZilbbWFpbkZyYW1lIF9sYXllclRyZWVBc1RleHRdKSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzIy
NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIw
IEBACisyMDEwLTA0LTA3ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMDAsIGRvbid0IGV4cG9zZSBoaXN0b3J5IGluZm8g
dmlhIENTUworCisgICAgICAgICogZmFzdC9oaXN0b3J5L2NsaWNrZWQtbGluay1pcy12aXNpdGVk
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L25lc3RlZC12aXNpdGVkLXRl
c3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvbmVzdGVkLXZp
c2l0ZWQtdGVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvcmVzb3VyY2Vz
L2R1bW15Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9zZWxmLWlzLXZpc2l0
ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkvc2VsZi1pcy12
aXNpdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9zaWJsaW5nLXZpc2l0
ZWQtdGVzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9zaWJs
aW5nLXZpc2l0ZWQtdGVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkvc3Vi
ZnJhbWUtaXMtdmlzaXRlZC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9o
aXN0b3J5L3N1YmZyYW1lLWlzLXZpc2l0ZWQuaHRtbDogUmVtb3ZlZC4KKwogMjAxMC0wNC0wNyAg
QWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gQmFydGguCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvY2xpY2tlZC1s
aW5rLWlzLXZpc2l0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rv
cnkvY2xpY2tlZC1saW5rLWlzLXZpc2l0ZWQuaHRtbAkocmV2aXNpb24gNTcxNjUpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2hpc3RvcnkvY2xpY2tlZC1saW5rLWlzLXZpc2l0ZWQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwyMCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdlYkhpc3Rvcnko
KTsKLX0KLWZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibXlsaW5rIik7Ci0gICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRl
RXZlbnQoIk1vdXNlRXZlbnQiKTsKLSAgICBldmVudC5pbml0RXZlbnQoImNsaWNrIiwgdHJ1ZSwg
dHJ1ZSk7Ci0gICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKLX0KLTwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCk7Ij4KLTxkaXY+PGEgaHJlZj0iaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNTAiPkJ1ZyA5MTUwIER1bXBSZW5k
ZXJUcmVlIHNob3VsZCBiZSBhYmxlIHRvIGtlZXAgVVJMIGhpc3RvcnkgZHVyaW5nIHJ1bnM8L2E+
PC9kaXY+Ci08ZGl2PlRvIHJ1biB0aGUgdGVzdCA8YSBpZD0ibXlsaW5rIiBocmVmPSIuL3Jlc291
cmNlcy9jbGlja2VkLWxpbmstaXMtdmlzaXRlZC0yLmh0bWwiPmNsaWNrIHRoaXMgbGluazwvYT4u
PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkv
bmVzdGVkLXZpc2l0ZWQtdGVzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9oaXN0b3J5L25lc3RlZC12aXNpdGVkLXRlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L25lc3RlZC12aXNpdGVkLXRlc3QtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK1RoZXNlIHR3byBsaW5rcyBz
aG91bGQgYmUgZGlmZmVyZW50IGNvbG9ycyAoZ3JlZW4gYW5kIG9yYW5nZSk6CisKK09uZSBUd28K
KworUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L25lc3RlZC12aXNpdGVkLXRl
c3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvbmVzdGVkLXZp
c2l0ZWQtdGVzdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5
L25lc3RlZC12aXNpdGVkLXRlc3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7Cisg
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rp
b24gY29tcGFyZVN0eWxlcygpCit7CisgICAgdmFyIGFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImEiKTsKKyAgICBhbmNob3IuaHJlZj0iaHR0cDovL21hZGV1cC5zaXRlLmNvbSI7Cisg
ICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgiaWQiLCAib25lIik7CisgICAgYW5jaG9yLmlubmVySFRN
TCA9ICJPbmUiOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbmNsb3N1cmUnKS5hcHBl
bmRDaGlsZChhbmNob3IpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgICB2YXIgZmlyc3RTdHlsZSA9IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5j
b21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J29uZScpKTsKKyAgICAgICAgdmFyIHNlY29uZFN0eWxlID0gd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndHdvJykpOworICAgICAgICBpZiAoZmlyc3RTdHlsZS5jb2xvciA9PSBzZWNvbmRT
dHlsZS5jb2xvcikgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3Vs
dCcpLmlubmVySFRNTCA9ICdGQUlMJzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHZhciBmaXJzdFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29uZScpLCAiIik7CisgICAgdmFyIHNlY29uZFN0eWxlID0g
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3bycpLCAi
Iik7CisgICAgaWYgKGZpcnN0U3R5bGUuY29sb3IgIT0gc2Vjb25kU3R5bGUuY29sb3IpIHsKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlM
JzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKzwvc2NyaXB0PgorPHN0eWxlPgorOmxpbmsg
eyBjb2xvcjogaW5oZXJpdCB9Cis6dmlzaXRlZCB7IGNvbG9yOiBvcmFuZ2UgfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iY29tcGFyZVN0eWxlcygpIj4KKzxpZnJhbWUgc3JjPSJy
ZXNvdXJjZXMvZHVtbXkuaHRtbCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PC9pZnJhbWU+CisKKzxw
PgorVGhlc2UgdHdvIGxpbmtzIHNob3VsZCBiZSBkaWZmZXJlbnQgY29sb3JzIChncmVlbiBhbmQg
b3JhbmdlKToKKzwvcD4KKzxwIHN0eWxlPSJjb2xvcjpncmVlbiI+Cis8YSBpZD0iZW5jbG9zdXJl
IiBocmVmPSJyZXNvdXJjZXMvZHVtbXkuaHRtbCI+PC9hPgorPGEgaHJlZj0icmVzb3VyY2VzL2R1
bW15Lmh0bWwiIGlkPSJ0d28iPlR3bzwvYT4KKzwvcD4KKworPHNjcmlwdD4KKworPC9zY3JpcHQ+
CisKKzxwIGlkPXJlc3VsdD4KK1BBU1MKKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zZWxmLWlzLXZpc2l0ZWQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zZWxmLWlzLXZpc2l0ZWQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NlbGYtaXMt
dmlzaXRlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhlc2Ug
dHdvIGxpbmtzIHNob3VsZCBiZSBkaWZmZXJlbnQgY29sb3JzIChncmVlbiBhbmQgb3JhbmdlKToK
KworT25lIFR3bworUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NlbGYtaXMt
dmlzaXRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zZWxm
LWlzLXZpc2l0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9y
eS9zZWxmLWlzLXZpc2l0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24g
Y29tcGFyZVN0eWxlcygpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgICB2YXIgZmlyc3RTdHlsZSA9IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5j
b21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J29uZScpKTsKKyAgICAgICAgdmFyIHNlY29uZFN0eWxlID0gd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndHdvJykpOworICAgICAgICBpZiAoZmlyc3RTdHlsZS5jb2xvciA9PSBzZWNvbmRT
dHlsZS5jb2xvcikgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3Vs
dCcpLmlubmVySFRNTCA9ICdGQUlMJzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICB2YXIgZmlyc3RTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvbmUnKSwgIiIpOworICAgIHZhciBzZWNvbmRTdHls
ZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0d28n
KSwgIiIpOworICAgIGlmIChmaXJzdFN0eWxlLmNvbG9yICE9IHNlY29uZFN0eWxlLmNvbG9yKSB7
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAn
RkFJTCc7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzxzdHlsZT4KKzps
aW5rIHsgY29sb3I6IGdyZWVuIH0KKzp2aXNpdGVkIHsgY29sb3I6IG9yYW5nZSB9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJjb21wYXJlU3R5bGVzKCkiPgorPGlmcmFtZSBzcmM9
InJlc291cmNlcy9kdW1teS5odG1sIiBzdHlsZT0iZGlzcGxheTpub25lIj48L2lmcmFtZT4KKwor
PHA+CitUaGVzZSB0d28gbGlua3Mgc2hvdWxkIGJlIGRpZmZlcmVudCBjb2xvcnMgKGdyZWVuIGFu
ZCBvcmFuZ2UpOgorPC9wPgorPHA+Cis8YSBocmVmPSJodHRwOi8vbWFkZXVwLnNpdGUuY29tIiBp
ZD0ib25lIj5PbmU8L2E+IAorPGEgaHJlZj0icmVzb3VyY2VzL2R1bW15Lmh0bWwiIGlkPSJ0d28i
PlR3bzwvYT48YnI+Cis8L3A+Cis8cCBpZD1yZXN1bHQ+CitQQVNTCis8L3A+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2libGluZy12aXNpdGVkLXRl
c3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9z
aWJsaW5nLXZpc2l0ZWQtdGVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2hpc3Rvcnkvc2libGluZy12aXNpdGVkLXRlc3QtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK1RoZXNlIHR3byBsaW5rcyBzaG91bGQgYmUgZGlmZmVy
ZW50IGNvbG9ycyAoZ3JlZW4gYW5kIG9yYW5nZSk6CisKK09uZSBUd28KKworUEFTUwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NpYmxpbmctdmlzaXRlZC10ZXN0Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NpYmxpbmctdmlzaXRlZC10ZXN0Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2libGluZy12aXNp
dGVkLXRlc3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gY29tcGFyZVN0
eWxlcygpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICB2YXIgZmlyc3RTdHlsZSA9IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5jb21wdXRlZFN0
eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29uZScpKTsK
KyAgICAgICAgdmFyIHNlY29uZFN0eWxlID0gd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmNv
bXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dHdvJykpOworICAgICAgICBpZiAoZmlyc3RTdHlsZS5jb2xvciA9PSBzZWNvbmRTdHlsZS5jb2xv
cikgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVy
SFRNTCA9ICdGQUlMJzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHZhciBmaXJzdFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ29uZScpLCAiIik7CisgICAgdmFyIHNlY29uZFN0eWxlID0gd2luZG93Lmdl
dENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3bycpLCAiIik7CisgICAg
aWYgKGZpcnN0U3R5bGUuY29sb3IgIT0gc2Vjb25kU3R5bGUuY29sb3IpIHsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMJzsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KK30KKzwvc2NyaXB0PgorPHN0eWxlPgorOmxpbmsgeyBjb2xvcjog
b3JhbmdlIH0KKzp2aXNpdGVkICsgOmxpbmsgeyBjb2xvcjogZ3JlZW4gfQorOnZpc2l0ZWQgeyBj
b2xvcjogZ3JlZW4gfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iY29tcGFyZVN0
eWxlcygpIj4KKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvZHVtbXkuaHRtbCIgc3R5bGU9ImRpc3Bs
YXk6bm9uZSI+PC9pZnJhbWU+CisKKzxwPgorVGhlc2UgdHdvIGxpbmtzIHNob3VsZCBiZSBkaWZm
ZXJlbnQgY29sb3JzIChncmVlbiBhbmQgb3JhbmdlKToKKzwvcD4KKzxwIHN0eWxlPSJjb2xvcjpn
cmVlbiI+Cis8YSBocmVmPSJyZXNvdXJjZXMvZHVtbXkuaHRtbCIgaWQ9Im9uZSI+T25lPC9hPgor
PGEgaHJlZj0iaHR0cDovL21hZGV1cC5zaXRlLmNvbSIgaWQ9InR3byI+VHdvPC9hPgorPC9wPgor
Cis8c2NyaXB0PgorCis8L3NjcmlwdD4KKworPHAgaWQ9cmVzdWx0PgorUEFTUworPC9wPgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3N1YmZyYW1lLWlz
LXZpc2l0ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9zdWJmcmFtZS1pcy12aXNpdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTcxNjUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc3ViZnJhbWUtaXMtdmlzaXRlZC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMCwwIEBACi1UaGVyZSBzaG91bGQgYmUgbm8gcmVk
IGxpbmsgZGlzcGxheWVkIGJlbG93LgotCi1TdWJmcmFtZSBsb2FkZWQ7IHRlc3Qgd2FzIGFibGUg
dG8gcnVuLgotCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zdWJmcmFtZS1pcy12
aXNpdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3N1YmZy
YW1lLWlzLXZpc2l0ZWQuaHRtbAkocmV2aXNpb24gNTcxNjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2hpc3Rvcnkvc3ViZnJhbWUtaXMtdmlzaXRlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU0
ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9F
TiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPgotPGh0bWw+Ci08aGVh
ZD4KLQotPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLWEgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7
IH0KLS5wZW5kaW5nIHsgZGlzcGxheTogbm9uZTsgfQotI2xpbms6dmlzaXRlZCB7IGRpc3BsYXk6
IG5vbmU7IH0KLWlmcmFtZSB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfQotPC9zdHlsZT4KLQotPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgp
OwotICAgIH0KLQotICAgIHZhciBzdWJmcmFtZUxvY2F0aW9uID0gInJlc291cmNlcy9zdWJmcmFt
ZS5odG1sPyIgKyAobmV3IERhdGUoKSkudmFsdWVPZigpOwotCi0gICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2xpbmsnKS5zZXRBdHRyaWJ1dGUoImhyZWYiLCBzdWJmcmFtZUxvY2F0aW9uKTsK
LQotICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwotICAg
IGZyYW1lLnNldEF0dHJpYnV0ZSgibmFtZSIsIHN1YmZyYW1lTG9jYXRpb24pOwotICAgIGZyYW1l
LnNldEF0dHJpYnV0ZSgic3JjIiwgc3ViZnJhbWVMb2NhdGlvbik7Ci0gICAgZnJhbWUuc2V0QXR0
cmlidXRlKCJvbmxvYWQiLCAiZnJhbWVMb2FkZWQoKSIpOwotICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJmcmFtZUhvbGRlciIpLmFwcGVuZENoaWxkKGZyYW1lKTsKLX0KLQotZnVuY3Rpb24g
ZnJhbWVMb2FkZWQoKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaW5rJykucmVt
b3ZlQXR0cmlidXRlKCdjbGFzcycpOwotCi0gICAgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnbGluaycpKTsKLQotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCds
b2FkZWRNZXNzYWdlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlN1YmZy
YW1lIGxvYWRlZDsgdGVzdCB3YXMgYWJsZSB0byBydW4uIikpOwotCi0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOwotfQotCi08L3NjcmlwdD4KLQotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJ0ZXN0KCki
PgotPHA+VGhlcmUgc2hvdWxkIGJlIG5vIHJlZCBsaW5rIGRpc3BsYXllZCBiZWxvdy48L3A+Ci08
cCBpZD0ibG9hZGVkTWVzc2FnZSI+PC9wPgotPHA+PGEgaWQ9ImxpbmsiIGNsYXNzPSJwZW5kaW5n
Ij5JZiB5b3UgY2FuIHNlZSB0aGlzIGxpbmssIHRoZSB0ZXN0IGZhaWxlZC48L2E+PC9wPgotPHAg
aWQ9ImZyYW1lSG9sZGVyIj48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2R1bW15Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9kdW1teS5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9kdW1teS5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxIEBACis8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPgo=
</data>
<flag name="review"
          id="36361"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>