<?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>107337</bug_id>
          
          <creation_ts>2013-01-18 16:20:41 -0800</creation_ts>
          <short_desc>BackgroundHTMLParser should be able to atomize well-known strings</short_desc>
          <delta_ts>2013-03-13 13:33:13 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>111645</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>nbarth</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>811136</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-18 16:20:41 -0800</bug_when>
    <thetext>BackgroundHTMLParser should be able to atomize well-known strings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811138</commentid>
    <comment_count>1</comment_count>
      <attachid>183569</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-18 16:22:07 -0800</bug_when>
    <thetext>Created attachment 183569
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811177</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-18 17:02:26 -0800</bug_when>
    <thetext>== Before patch ==

avg 464.0280999999959 ms
median 429.24000000493834 ms
stdev 134.56573926949213 ms

== After patch ==

avg 475.42640000028763 ms
median 440.3119999988121 ms
stdev 135.6254289739386 ms

Speedup: 2.4%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811179</commentid>
    <comment_count>3</comment_count>
      <attachid>183577</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-18 17:03:39 -0800</bug_when>
    <thetext>Created attachment 183577
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811430</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-19 11:08:01 -0800</bug_when>
    <thetext>I had an idea for another approach.  I&apos;ll test it out an report back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849534</commentid>
    <comment_count>5</comment_count>
      <attachid>191873</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-06 17:38:54 -0800</bug_when>
    <thetext>Created attachment 191873
alternative approach, does not work yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849542</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-06 17:44:04 -0800</bug_when>
    <thetext>This approach is not going to work with String::isSafeToSendToAnotherThread, as that only allows strings with a single ref to be sent.  We&apos;d need to make it smarter to also allow these cached strings to be sent.  Possibly by checking the exact ref count to the refs we find in the chunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849778</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-06 23:18:49 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Speedup: 2.4%

Which benchmark was this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849782</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-06 23:24:23 -0800</bug_when>
    <thetext>Your earlier patch is very interesting.  It has the potential to be significantly stronger than the one I took.  It trades 4 bytes per string pointer on CompactToken for the potential to have less memory taken up by strings.  It&apos;s probably the right tradeoff.  I also like the fact that it can be pre-populated easily with HTMLNames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849792</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-06 23:38:22 -0800</bug_when>
    <thetext>Sorry, I kinda hijacked this bug with a patch solving a related (but different) problem.

My patch addresses the idea of multiple of the same string appearing in tokens in the same chunk.

Yours addresses using known constant strings (HTMLNames currently) in any chunk.

Looking again, your patch is probably the quicker path to victory, so I may try and clean that up and re-post.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849793</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-06 23:41:11 -0800</bug_when>
    <thetext>I originally thought that your approach would add new strings to a shared table, but that&apos;s not the case. Your patch only ever &quot;uniques&quot; strings which exist in HTMLNames::getHTMLTags(), which is probably strong enough for a first pass.

It won&apos;t help us with common attribute values, or unknown tag names (so it&apos;s not as strong as a real AtomicString solution could be), but it&apos;s very simple and appears thread-safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849808</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-07 00:02:14 -0800</bug_when>
    <thetext>&gt; &gt; Speedup: 2.4%
&gt; 
&gt; Which benchmark was this?

I don&apos;t really remember, but I bet it was the threaded HTML parser benchmark that you wrote originally with the hack not to build render trees for display none iframes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849937</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-07 03:41:45 -0800</bug_when>
    <thetext>I updated your patch, will post shortly.

Before:

Running Parser/html-parser-threaded.html (1 of 1)
RESULT Parser: html-parser-threaded: Time= 441.885400002 ms
median= 443.726500002 ms, stdev= 7.25002679952 ms, min= 430.244000047 ms, max= 455.511000007 ms
RESULT Parser: html-parser-threaded: JSHeap= 3521735.4 bytes
median= 3602932.0 bytes, stdev= 623509.897211 bytes, min= 2623300.0 bytes, max= 4377948.0 bytes
RESULT Parser: html-parser-threaded: Malloc= 52747410.8 bytes
median= 56256220.0 bytes, stdev= 11587237.5555 bytes, min= 36093864.0 bytes, max= 69862568.0 bytes
Finished: 13.947144 s

After:

Running Parser/html-parser-threaded.html (1 of 1)
RESULT Parser: html-parser-threaded: Time= 451.509050003 ms
median= 451.107000001 ms, stdev= 5.71298626931 ms, min= 444.229000015 ms, max= 463.285000005 ms
RESULT Parser: html-parser-threaded: JSHeap= 3534839.0 bytes
median= 3602932.0 bytes, stdev= 638172.662467 bytes, min= 2623304.0 bytes, max= 4508988.0 bytes
RESULT Parser: html-parser-threaded: Malloc= 55495976.4 bytes
median= 57171872.0 bytes, stdev= 11837219.6543 bytes, min= 36895656.0 bytes, max= 70339216.0 bytes
Finished: 13.771727 s

We appear to be mallocing more after the patch?  I must have doen something wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849957</commentid>
    <comment_count>13</comment_count>
      <attachid>191968</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-07 04:31:21 -0800</bug_when>
    <thetext>Created attachment 191968
Updated version of Adam&apos;s HTMLIdentifier patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849962</commentid>
    <comment_count>14</comment_count>
      <attachid>191971</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-07 04:36:40 -0800</bug_when>
    <thetext>Created attachment 191971
Updated version of Adam&apos;s HTMLIdentifier patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849964</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-07 04:37:56 -0800</bug_when>
    <thetext>My limited testing seems to indicate that this patch is actually a slowdown for Parser/html-parser-threaded.html (with the display: none iframes patch applied)  I&apos;ll look more tomorrow, there may be something obvious I&apos;m missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850417</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-07 13:13:01 -0800</bug_when>
    <thetext>The data from Comment #2 is super duper old.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850425</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-07 13:20:40 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; The data from Comment #2 is super duper old.

I think my 5am patch is super-duper broken still. :)  Did find a bunch of related wins during the search however.  Including bug 111708. :)  I will look again shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850501</commentid>
    <comment_count>18</comment_count>
      <attachid>192087</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-07 14:47:52 -0800</bug_when>
    <thetext>Created attachment 192087
updated, and more busticated version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850735</commentid>
    <comment_count>19</comment_count>
      <attachid>192124</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-07 18:35:07 -0800</bug_when>
    <thetext>Created attachment 192124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850743</commentid>
    <comment_count>20</comment_count>
      <attachid>192124</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-07 18:45:52 -0800</bug_when>
    <thetext>Comment on attachment 192124
Patch

Attachment 192124 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17009461</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850746</commentid>
    <comment_count>21</comment_count>
      <attachid>192124</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-07 18:48:23 -0800</bug_when>
    <thetext>Comment on attachment 192124
Patch

Attachment 192124 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/16987302</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850752</commentid>
    <comment_count>22</comment_count>
      <attachid>192124</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 19:03:08 -0800</bug_when>
    <thetext>Comment on attachment 192124
Patch

Attachment 192124 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17037250</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850763</commentid>
    <comment_count>23</comment_count>
      <attachid>192124</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-07 19:20:12 -0800</bug_when>
    <thetext>Comment on attachment 192124
Patch

Attachment 192124 did not pass win-ews (win):
Output: http://webkit-commit-queue.appspot.com/results/17081269</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850766</commentid>
    <comment_count>24</comment_count>
      <attachid>192124</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-07 19:21:13 -0800</bug_when>
    <thetext>Comment on attachment 192124
Patch

Attachment 192124 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/16992477</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850773</commentid>
    <comment_count>25</comment_count>
      <attachid>192124</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-07 19:26:50 -0800</bug_when>
    <thetext>Comment on attachment 192124
Patch

Attachment 192124 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17009478</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850799</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-07 20:03:08 -0800</bug_when>
    <thetext>Oh, thats right.  We have non-gyp ports. :p</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850800</commentid>
    <comment_count>27</comment_count>
      <attachid>192124</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-07 20:03:30 -0800</bug_when>
    <thetext>Comment on attachment 192124
Patch

Attachment 192124 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/16992502</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850801</commentid>
    <comment_count>28</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-07 20:03:38 -0800</bug_when>
    <thetext>Could I get some code commentary before I got through the 8 rounds of EWS fixups? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850806</commentid>
    <comment_count>29</comment_count>
      <attachid>192124</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 20:07:45 -0800</bug_when>
    <thetext>Comment on attachment 192124
Patch

Attachment 192124 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16992504</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850808</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-07 20:08:28 -0800</bug_when>
    <thetext>Chromium linux, I thought you had my back.  I feel betrayed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850813</commentid>
    <comment_count>31</comment_count>
      <attachid>192136</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-07 20:23:29 -0800</bug_when>
    <thetext>Created attachment 192136
Now with more build goop</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850821</commentid>
    <comment_count>32</comment_count>
      <attachid>192136</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-07 20:30:21 -0800</bug_when>
    <thetext>Comment on attachment 192136
Now with more build goop

Attachment 192136 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17066282</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850822</commentid>
    <comment_count>33</comment_count>
      <attachid>192136</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-07 20:31:05 -0800</bug_when>
    <thetext>Comment on attachment 192136
Now with more build goop

Attachment 192136 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17054334</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850826</commentid>
    <comment_count>34</comment_count>
      <attachid>192136</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-07 20:32:38 -0800</bug_when>
    <thetext>Comment on attachment 192136
Now with more build goop

Attachment 192136 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/16987342</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850845</commentid>
    <comment_count>35</comment_count>
      <attachid>192136</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-07 20:59:54 -0800</bug_when>
    <thetext>Comment on attachment 192136
Now with more build goop

Attachment 192136 did not pass win-ews (win):
Output: http://webkit-commit-queue.appspot.com/results/17087166</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850878</commentid>
    <comment_count>36</comment_count>
      <attachid>192146</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-07 22:26:10 -0800</bug_when>
    <thetext>Created attachment 192146
Should now build with the threaded parser off</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850890</commentid>
    <comment_count>37</comment_count>
      <attachid>192149</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-07 22:46:53 -0800</bug_when>
    <thetext>Created attachment 192149
Fix Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850894</commentid>
    <comment_count>38</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-07 23:04:00 -0800</bug_when>
    <thetext>Oh, XCode.  You&apos;re so fun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850896</commentid>
    <comment_count>39</comment_count>
      <attachid>192152</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-07 23:07:38 -0800</bug_when>
    <thetext>Created attachment 192152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851339</commentid>
    <comment_count>40</comment_count>
      <attachid>192152</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-08 11:11:17 -0800</bug_when>
    <thetext>Comment on attachment 192152
Patch

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

&gt; Source/WebCore/ChangeLog:20
&gt; +        median= 443.726500002 ms, stdev= 7.25002679952 ms, min= 430.244000047 ms, max= 455.511000007 ms
&gt; +        to:
&gt; +        median= 427.849500004 ms, stdev= 9.96967058292 ms, min= 417.914000049 ms, max= 461.528000014 ms

You&apos;re reporting the median, but not the mean.  We usually work with the mean.

&gt; Source/WebCore/html/parser/BackgroundHTMLParser.cpp:125
&gt; +    // FIXME: Using CaseFoldingHash::equal instead of equalIgnoringCase, as equalIgnoringCase
&gt; +    // wants non-const StringImpl* (even though it never modifies them).

Maybe we should change equalIgnoringCase to use a const StringImpl* ?

&gt; Source/WebCore/html/parser/HTMLIdentifier.cpp:49
&gt; +    return table;

Should we ASSERT(isMainThread() || !table.isEmpty()) ?

&gt; Source/WebCore/html/parser/HTMLIdentifier.cpp:126
&gt; +        // We expect some hash collisions, but only for identical strings.
&gt; +        // Since all of these names are AtomicStrings pointers should be equal.
&gt; +        ASSERT_UNUSED(addResult, !addResult.isNewEntry || name == addResult.iterator-&gt;value.second);

Is this just dumb luck?  What happens when we happen to have two HTML tag names with the same hash value?  We should at least have a comment here that explain what to do when that happens.

&gt; Source/WebCore/html/parser/HTMLIdentifier.cpp:133
&gt; +    // This is safe to call from any thread, but must be called before
&gt; +    // using HTMLIdentifier.

I would just ASSERT(isMainThread()) since that&apos;s easier and how we plan to use it anyway.

&gt; Source/WebCore/html/parser/HTMLIdentifier.h:51
&gt; +        if (vector.size() &lt;= maxNameLength) {

Why not put this branch into findIndex?  That would simply this code dramatically.

&gt; Source/WebCore/html/parser/HTMLIdentifier.h:62
&gt; +        if (width == Likely8Bit)
&gt; +            m_string = StringImpl::create8BitIfPossible(vector);
&gt; +        else if (width == Force8Bit)
&gt; +            m_string = String::make8BitFrom16BitSource(vector);
&gt; +        else
&gt; +            m_string = String(vector);

This work should probably be done by String.  It&apos;s useful in other places.

After these two changes, this function just becomes:

m_index = findIndex(vector.data(), vector.size());
if (m_index != invalidIndex)
    return;
m_string = String(vector, width);

&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:286
&gt; +    // Note: This hash compare is not correct for all possible StringImpls, but
&gt; +    // since we&apos;re always comparing against constants, it&apos;s OK.

Why is it not correct?  How can two strings be equal if their hashes aren&apos;t equal?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851583</commentid>
    <comment_count>41</comment_count>
      <attachid>192152</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-08 15:53:17 -0800</bug_when>
    <thetext>Comment on attachment 192152
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:20
&gt;&gt; +        median= 427.849500004 ms, stdev= 9.96967058292 ms, min= 417.914000049 ms, max= 461.528000014 ms
&gt; 
&gt; You&apos;re reporting the median, but not the mean.  We usually work with the mean.

I was just copying the output from run-perf-tests.  Filed https://bugs.webkit.org/show_bug.cgi?id=111895

&gt;&gt; Source/WebCore/html/parser/BackgroundHTMLParser.cpp:125
&gt;&gt; +    // wants non-const StringImpl* (even though it never modifies them).
&gt; 
&gt; Maybe we should change equalIgnoringCase to use a const StringImpl* ?

I considered it.  I worried it would bloat this change unnecessarily.  I&apos;ve filed:
https://bugs.webkit.org/show_bug.cgi?id=111892
and have updated the comment to say so.

&gt;&gt; Source/WebCore/html/parser/HTMLIdentifier.cpp:49
&gt;&gt; +    return table;
&gt; 
&gt; Should we ASSERT(isMainThread() || !table.isEmpty()) ?

Done.

&gt;&gt; Source/WebCore/html/parser/HTMLIdentifier.cpp:126
&gt;&gt; +        ASSERT_UNUSED(addResult, !addResult.isNewEntry || name == addResult.iterator-&gt;value.second);
&gt; 
&gt; Is this just dumb luck?  What happens when we happen to have two HTML tag names with the same hash value?  We should at least have a comment here that explain what to do when that happens.

Yup. :)  There aren&apos;t that many strings in this table, so it doesn&apos;t shock me that they all have unique hashes.  I&apos;ve added a note for anyone hitting this in the future.

&gt;&gt; Source/WebCore/html/parser/HTMLIdentifier.cpp:133
&gt;&gt; +    // using HTMLIdentifier.
&gt; 
&gt; I would just ASSERT(isMainThread()) since that&apos;s easier and how we plan to use it anyway.

Done.

&gt;&gt; Source/WebCore/html/parser/HTMLIdentifier.h:51
&gt;&gt; +        if (vector.size() &lt;= maxNameLength) {
&gt; 
&gt; Why not put this branch into findIndex?  That would simply this code dramatically.

Duh.  Fixed.  I think I was trying to avoid even calling findIndex in the case where we knew we were going to malloc.  But the malloc should overshadow this function call overhead. :)

&gt;&gt; Source/WebCore/html/parser/HTMLIdentifier.h:62
&gt;&gt; +            m_string = String(vector);
&gt; 
&gt; This work should probably be done by String.  It&apos;s useful in other places.
&gt; 
&gt; After these two changes, this function just becomes:
&gt; 
&gt; m_index = findIndex(vector.data(), vector.size());
&gt; if (m_index != invalidIndex)
&gt;     return;
&gt; m_string = String(vector, width);

Excellent idea, but a much more involved change (as we need to handle more than just UChar as a char type).  Filed bug 111896.

&gt;&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:286
&gt;&gt; +    // since we&apos;re always comparing against constants, it&apos;s OK.
&gt; 
&gt; Why is it not correct?  How can two strings be equal if their hashes aren&apos;t equal?

I think it was this comment which scared me into writing that one:
http://trac.webkit.org/browser/trunk/Source/WTF/wtf/text/StringImpl.h#L312
I&apos;m happy to remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851588</commentid>
    <comment_count>42</comment_count>
      <attachid>192300</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-08 15:59:12 -0800</bug_when>
    <thetext>Created attachment 192300
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851589</commentid>
    <comment_count>43</comment_count>
      <attachid>192300</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 16:01:52 -0800</bug_when>
    <thetext>Comment on attachment 192300
Patch for landing

Rejecting attachment 192300 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;--bot-id=gce-cq-04&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 192300, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:

patching file Source/WebCore/html/parser/HTMLIdentifier.cpp
patching file Source/WebCore/html/parser/HTMLIdentifier.h
patching file Source/WebCore/html/parser/HTMLParserIdioms.cpp
patching file Source/WebCore/html/parser/HTMLParserIdioms.h
patching file Source/WebCore/html/parser/HTMLPreloadScanner.cpp
patching file Source/WebCore/html/parser/HTMLPreloadScanner.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://webkit-commit-queue.appspot.com/results/17109259</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851596</commentid>
    <comment_count>44</comment_count>
      <attachid>192304</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-08 16:23:43 -0800</bug_when>
    <thetext>Created attachment 192304
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851599</commentid>
    <comment_count>45</comment_count>
      <attachid>192304</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 16:26:34 -0800</bug_when>
    <thetext>Comment on attachment 192304
Patch for landing

Rejecting attachment 192304 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;--bot-id=gce-cq-04&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 192304, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:

patching file Source/WebCore/html/parser/HTMLIdentifier.cpp
patching file Source/WebCore/html/parser/HTMLIdentifier.h
patching file Source/WebCore/html/parser/HTMLParserIdioms.cpp
patching file Source/WebCore/html/parser/HTMLParserIdioms.h
patching file Source/WebCore/html/parser/HTMLPreloadScanner.cpp
patching file Source/WebCore/html/parser/HTMLPreloadScanner.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://webkit-commit-queue.appspot.com/results/17047463</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851616</commentid>
    <comment_count>46</comment_count>
      <attachid>192309</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-08 16:43:54 -0800</bug_when>
    <thetext>Created attachment 192309
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851630</commentid>
    <comment_count>47</comment_count>
      <attachid>192309</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 17:08:47 -0800</bug_when>
    <thetext>Comment on attachment 192309
Patch for landing

Clearing flags on attachment: 192309

Committed r145292: &lt;http://trac.webkit.org/changeset/145292&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851631</commentid>
    <comment_count>48</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 17:08:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854088</commentid>
    <comment_count>49</comment_count>
    <who name="Nils Barth">nbarth</who>
    <bug_when>2013-03-13 00:01:30 -0700</bug_when>
    <thetext>Just a note that this patch looks like it&apos;s sped up Page Cycler Moz on Win7.
Note the step down in time take after revision 145280:

http://chromium-perf.appspot.com/?tab=chromium-rel-win7-webkit&amp;graph=times&amp;trace=t_extcs1&amp;rev=187389&amp;history=80&amp;master=ChromiumWebkit&amp;testSuite=page_cycler_moz&amp;details=true
http://chromium-perf.appspot.com/?tab=chromium-rel-win7-webkit&amp;graph=times&amp;trace=t_extwr&amp;rev=187389&amp;history=80&amp;master=ChromiumWebkit&amp;testSuite=page_cycler_moz&amp;details=true

...so looks like some confirmation that it&apos;s doing some good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854118</commentid>
    <comment_count>50</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-13 01:30:44 -0700</bug_when>
    <thetext>That&apos;s exciting.  Thank you for letting us know!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854576</commentid>
    <comment_count>51</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-13 13:33:13 -0700</bug_when>
    <thetext>Thank you very much for the update Nils!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183569</attachid>
            <date>2013-01-18 16:22:07 -0800</date>
            <delta_ts>2013-01-18 17:03:35 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-107337-20130118161910.patch</filename>
            <type>text/plain</type>
            <size>14987</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEzYmE2Yjg3MDRjYzcz
ZjVkNzkwZWRjMTZiOTkxNjk4ZDg5ODY3ZC4uNWU0ZjVmNmU4ZjAwNDEyNGE5YjA1OTM3MjkyNTFl
N2M4YmIyYzg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEzLTAxLTE4ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmFja2dyb3VuZEhUTUxQYXJz
ZXIgc2hvdWxkIGJlIGFibGUgdG8gYXRvbWl6ZSB3ZWxsLWtub3duIHN0cmluZ3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzMzNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1M
UGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRN
TFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RI
VE1MVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFjdEhUTUxUb2tlbjo6aXNTYWZlVG9T
ZW5kVG9Bbm90aGVyVGhyZWFkKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRNTFRv
a2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpkYXRhKToKKyAgICAg
ICAgKENvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0
QmFja2dyb3VuZFBhcnNlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6aWRlbnRp
ZmllclRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSWRlbnRpZmllcjo6SFRNTElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6
YXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50aWZpZXI6OmluaXQpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoSFRNTElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50
aWZpZXI6OkhUTUxJZGVudGlmaWVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6QXRvbWljSFRNTFRva2VuKToK
KwogMjAxMy0wMS0xOCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW1Y4XSBSZW1vdmUgY3VzdG9tIFY4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b206OnRvVjgo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IGE1NWYwMTc2MGI2ZmYxNjA4YmUzNTVlMjJlZmU3YjUwY2Ez
ZTg5ZTEuLjJjOTk0ODc2M2FlZjEwZmFlMjdlNzU1MmYwMGZhODFjOTc2NTA5YTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTMzNTMsNiArMzM1Myw4IEBACiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIv
SFRNTEVudGl0eVRhYmxlLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0
aW5nRWxlbWVudExpc3QuY3BwJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MRm9ybWF0
dGluZ0VsZW1lbnRMaXN0LmgnLAorICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxJZGVudGlm
aWVyLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTElucHV0U3RyZWFtLmgnLAogICAgICAgICAgICAg
J2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ2h0
bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAppbmRleCBhZjBkNzhmMzA3
MTkyOTM2N2IwNzgyNWE2ZmM1MzQ1YTAyMTk3OGU2Li40YTAwOTk4ODM4NGY3NzBlMDRkZWM2Yzc2
NDNmZDA1OGY3Y2M5OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
QmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBCYWNrZ3Jv
dW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcigpCiAgICAgICAgIGNvbnN0IENvbXBhY3RIVE1M
VG9rZW4mIHRva2VuID0gbV9wZW5kaW5nVG9rZW5zLmxhc3QoKTsKIAogICAgICAgICBpZiAodG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykgewotICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOworICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpLmFzU3RyaW5nKCk7CiAgICAgICAgICAgICBpZiAo
dGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpzdmdUYWcpCiAgICAgICAgICAgICAg
ICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5hbWVzOjptYXRoVGFnKSkKICAg
ICAgICAgICAgICAgICBtX2luRm9yZWlnbkNvbnRlbnQgPSB0cnVlOwpAQCAtMTUwLDcgKzE1MCw3
IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6ZXIoKQogICAgICAgICAg
ICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlJBV1RFWFRT
dGF0ZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5U
eXBlczo6RW5kVGFnKSB7Ci0gICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tl
bi5kYXRhKCk7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRh
KCkuYXNTdHJpbmcoKTsKICAgICAgICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwg
U1ZHTmFtZXM6OnN2Z1RhZykgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5hbWVz
OjptYXRoVGFnKSkKICAgICAgICAgICAgICAgICBtX2luRm9yZWlnbkNvbnRlbnQgPSBmYWxzZTsK
ICAgICAgICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcAppbmRl
eCAwOTMyOGVlODYwZGY0MzMzNTVkYmIzMjY1ZjNlN2UxMjYwYTZkMzVhLi45Njg0MjdiZmU0ZjY0
NTYzZDZhZjJjYmE1MzViZTJlZDk2YWUyODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcApAQCAtNDEsNyArNDEsNyBAQCBDb21wYWN0SFRN
TFRva2VuOjpDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEhUTUxUb2tl
blR5cGVzOjpET0NUWVBFOgotICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9rZW4ubmFtZSgpLmRh
dGEoKSwgdG9rZW4ubmFtZSgpLnNpemUoKSk7CisgICAgICAgIG1fZGF0YSA9IEhUTUxJZGVudGlm
aWVyKHRva2VuLm5hbWUoKS5kYXRhKCksIHRva2VuLm5hbWUoKS5zaXplKCkpOwogICAgICAgICBt
X3B1YmxpY0lkZW50aWZpZXIgPSBTdHJpbmcodG9rZW4ucHVibGljSWRlbnRpZmllcigpLmRhdGEo
KSwgdG9rZW4ucHVibGljSWRlbnRpZmllcigpLnNpemUoKSk7CiAgICAgICAgIG1fc3lzdGVtSWRl
bnRpZmllciA9IFN0cmluZyh0b2tlbi5zeXN0ZW1JZGVudGlmaWVyKCkuZGF0YSgpLCB0b2tlbi5z
eXN0ZW1JZGVudGlmaWVyKCkuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CkBAIC01NywxMSArNTcs
NyBAQCBDb21wYWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tlbiYg
dG9rZW4pCiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCEKICAgICBjYXNlIEhUTUxUb2tlblR5cGVz
OjpDb21tZW50OgogICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjoKLSAgICAgICAg
aWYgKHRva2VuLmlzQWxsOEJpdERhdGEoKSkKLSAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZzo6
bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UodG9rZW4uZGF0YSgpLmRhdGEoKSwgdG9rZW4uZGF0YSgp
LnNpemUoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tl
bi5kYXRhKCkuZGF0YSgpLCB0b2tlbi5kYXRhKCkuc2l6ZSgpKTsKLSAgICAgICAgYnJlYWs7Cisg
ICAgICAgIG1fZGF0YSA9IEhUTUxJZGVudGlmaWVyKHRva2VuLm5hbWUoKS5kYXRhKCksIHRva2Vu
Lm5hbWUoKS5zaXplKCksIHRva2VuLmlzQWxsOEJpdERhdGEoKSk7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtODksOCArODUs
OSBAQCBib29sIENvbXBhY3RIVE1MVG9rZW46OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgp
IGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIGlz
U3RyaW5nU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChtX2RhdGEpCi0gICAgICAgICYmIGlzU3Ry
aW5nU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChtX3B1YmxpY0lkZW50aWZpZXIpCisgICAgLy8g
RklYTUU6IENoZWNrIG1fZGF0YS4KKworICAgIHJldHVybiBpc1N0cmluZ1NhZmVUb1NlbmRUb0Fu
b3RoZXJUaHJlYWQobV9wdWJsaWNJZGVudGlmaWVyKQogICAgICAgICAmJiBpc1N0cmluZ1NhZmVU
b1NlbmRUb0Fub3RoZXJUaHJlYWQobV9zeXN0ZW1JZGVudGlmaWVyKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCmluZGV4IDQxMDQxNWNlOTgz
ZmQyMjg1YWYwMDM3MjEzM2NmOTU2ZThkYzdmODQuLjM3MTc2Zjc3ZDVkMTYxYmY0OTZhYzNkY2Ux
NzRjZTFiNTczYWRlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Nv
bXBhY3RIVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0
SFRNTFRva2VuLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1M
X1BBUlNFUikKIAorI2luY2x1ZGUgIkhUTUxJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSFRNTFRv
a2VuVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KQEAgLTYxLDcgKzYyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTYWZlVG9TZW5k
VG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CiAKICAgICBIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgY29uc3QgSFRNTElkZW50aWZpZXImIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBib29sIHNlbGZDbG9zaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZWxmQ2xvc2luZzsgfQogICAgIGNvbnN0IFZlY3RvcjxDb21wYWN0QXR0cmlidXRl
PiYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogCkBAIC03MCw3
ICs3MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBIVE1MVG9rZW5UeXBlczo6VHlwZSBt
X3R5cGU7Ci0gICAgU3RyaW5nIG1fZGF0YTsgLy8gIm5hbWUiLCAiY2hhcmFjdGVycyIsIG9yICJk
YXRhIiBkZXBlbmRpbmcgb24gbV90eXBlCisgICAgSFRNTElkZW50aWZpZXIgbV9kYXRhOyAvLyAi
bmFtZSIsICJjaGFyYWN0ZXJzIiwgb3IgImRhdGEiIGRlcGVuZGluZyBvbiBtX3R5cGUKICAgICBi
b29sIG1fc2VsZkNsb3Npbmc7CiAgICAgVmVjdG9yPENvbXBhY3RBdHRyaWJ1dGU+IG1fYXR0cmli
dXRlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHAKaW5kZXggOWIxMjNiMzk5MTZjMmQ0OGY1NmY2ZDQ0MjA0OWM3OGU1YjBiNGFiYi4u
ZDY5OTQ1NzEzMTliNzZiNDA3MTM2ZjA4Mjg2NDdmNzE5N2E1MWVkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlclNjaGVkdWxlci5oIgogI2lu
Y2x1ZGUgIkhUTUxQYXJzZXJUaHJlYWQuaCIKQEAgLTQ1OCw2ICs0NTksOCBAQCB2b2lkIEhUTUxE
b2N1bWVudFBhcnNlcjo6c3RhcnRCYWNrZ3JvdW5kUGFyc2VyKCkKICAgICBBU1NFUlQoIW1faGF2
ZUJhY2tncm91bmRQYXJzZXIpOwogICAgIG1faGF2ZUJhY2tncm91bmRQYXJzZXIgPSB0cnVlOwog
CisgICAgSFRNTElkZW50aWZpZXI6OmluaXQoKTsKKwogICAgIFBhcnNlcklkZW50aWZpZXIgaWRl
bnRpZmllciA9IFBhcnNlck1hcDo6aWRlbnRpZmllckZvclBhcnNlcih0aGlzKTsKICAgICBwYXJz
ZXJNYXAoKS5tYWluVGhyZWFkUGFyc2VycygpLnNldChpZGVudGlmaWVyLCB0aGlzKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjMxYTVjMTA1N2EwMzA1NGI4Y2QyNDVkYzc0MDIzYzFjNGYxZTJjYWIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAKQEAgLTAs
MCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlLCBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFS
U0VSKQorCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKKworI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwor
CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZEluZGV4ID0gLTE7CisKK3R5cGVkZWYgc3Rk
OjpwYWlyPFN0cmluZ0ltcGwqLCB1bnNpZ25lZD4gSWRlbnRpZmllckVudHJ5OwordHlwZWRlZiBI
YXNoTWFwPHVuc2lnbmVkLCBWZWN0b3I8SWRlbnRpZmllckVudHJ5PiwgQWxyZWFkeUhhc2hlZD4g
SWRlbnRpZmllclRhYmxlOworCitzdGF0aWMgSWRlbnRpZmllclRhYmxlJiBpZGVudGlmaWVyVGFi
bGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSWRlbnRpZmllclRhYmxlLCB0YWJsZSwg
KCkpOworICAgIHJldHVybiB0YWJsZTsKK30KKworc3RhdGljIHVuc2lnbmVkIGZpbmRJbmRleChV
Q2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIHVuc2lnbmVkIGhhc2gg
PSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoKGNoYXJhY3RlcnMsIHNpemUpOworICAgIGNvbnN0
IElkZW50aWZpZXJUYWJsZSYgdGFibGUgPSBpZGVudGlmaWVyVGFibGUoKTsKKworICAgIElkZW50
aWZpZXJUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0YWJsZS5maW5kKGhhc2gpOworICAgIGlm
IChpdCA9PSB0YWJsZS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRJbmRleDsKKyAgICBj
b25zdCBWZWN0b3I8SWRlbnRpZmllckVudHJ5PiYgZW50cmllcyA9IGl0LnZhbHVlOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cmllcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAo
ZXF1YWxzKGVudHJpZXNbaV0uc2Vjb25kLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKQorICAgICAgICAg
ICAgcmV0dXJuIGVudHJpZXNbaV0uZmlyc3Q7CisgICAgfQorICAgIHJldHVybiBpbnZhbGlkSW5k
ZXg7Cit9CisKK0hUTUxJZGVudGlmaWVyOjpIVE1MSWRlbnRpZmllcihVQ2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoLCBib29sIGlzQWxsOEJpdERhdGEpCisgICAgOiBtX2luZGV4KGZp
bmRJbmRleChjaGFyYWN0ZXJzLCBsZW5ndGgpKQoreworICAgIGlmIChtX2luZGV4ICE9IGludmFs
aWRJbmRleCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3RyaW5nID0gaXNBbGw4Qml0RGF0YSA/
IFN0cmluZzo6bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoY2hhcmFjdGVycywgbGVuZ3RoKSA6IFN0
cmluZyhjaGFyYWN0ZXJzLCBsZW5ndGgpOworfQorCitjb25zdCBTdHJpbmcmIGFzU3RyaW5nKCkg
Y29uc3QKK3sKKyAgICBpZiAobV9pbmRleCAhPSBpbnZhbGlkSW5kZXgpCisgICAgICAgIHJldHVy
biBnZXRIVE1MVGFncygpW21faW5kZXhdLT5sb2NhbE5hbWUoKTsKKyAgICByZXR1cm4gbV9zdHJp
bmc7Cit9CisKK3N0YXRpYyB2b2lkIEhUTUxJZGVudGlmaWVyOjppbml0KCkKK3sKKyAgICBzdGF0
aWMgYm9vbCBpc0luaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKGlzSW5pdGlhbGl6ZWQpCisg
ICAgICAgIHJldHVybjsKKyAgICBpc0luaXRpYWxpemVkID0gdHJ1ZTsKKworICAgIFdlYkNvcmU6
OlF1YWxpZmllZE5hbWUqKiB0YWdzID0gZ2V0SFRNTFRhZ3MoKTsKKyAgICBJZGVudGlmaWVyVGFi
bGUmIHRhYmxlID0gaWRlbnRpZmllclRhYmxlKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgSFRNTFRhZ3NDb3VudDsgKytpKSB7CisgICAgICAgIFN0cmluZ0ltcGwqIHRhZ05hbWUg
PSB0YWdzW2ldLT5sb2NhbE5hbWUoKS5pbXBsKCk7CisgICAgICAgIHVuc2lnbmVkIGhhc2ggPSB0
YWdOYW1lLT5oYXNoKCk7CisgICAgICAgIHRhYmxlLmdldChoYXNoKS5hcHBlbmQoSWRlbnRpZmll
ckVudHJ5KGksIHRhZ05hbWUpKTsKKyAgICB9Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShU
SFJFQURFRF9IVE1MX1BBUlNFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRl
bnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwMzg0MGY1MWIxMDFjYzVlNjhkODIxNGFkYjNkNTAzMDcw
ZDM5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIVE1MSWRlbnRpZmllcl9oCisjZGVmaW5l
IEhUTUxJZGVudGlmaWVyX2gKKworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEhUTUxJZGVudGlmaWVyIHsKK3B1YmxpYzoKKyAgICBIVE1MSWRlbnRpZmllcigp
IDogbV9pbmRleCgwKSB7IH0KKyAgICBIVE1MSWRlbnRpZmllcihVQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoLCBib29sIGlzQWxsOEJpdERhdGEgPSBmYWxzZSk7CisKKyAgICBib29s
IGVxdWFscyh1bnNpZ25lZCBpbmRleCk7CisgICAgY29uc3QgU3RyaW5nJiBhc1N0cmluZygpIGNv
bnN0OworCisgICAgc3RhdGljIHZvaWQgaW5pdCgpOworCitwcml2YXRlOgorICAgIHVuc2lnbmVk
IG1faW5kZXg7CisgICAgU3RyaW5nIG1fc3RyaW5nOworfTsKKworI2VuZGlmIC8vIEVOQUJMRShU
SFJFQURFRF9IVE1MX1BBUlNFUikKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUb2tlbi5oCmluZGV4IDZlYTYzMGI2MTk0YWI3NzFjNzUxNDI3MzZhMWU5NDRkNGY5NmQ0MTgu
Ljk0NDlmMzkyNzhkNjMwMDBhNzFmYWE5ZGZjZjkyMmQzNzQ0YzJlYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEU6Ci0gICAgICAgICAgICBtX25hbWUgPSB0
b2tlbi5kYXRhKCk7CisgICAgICAgICAgICBtX25hbWUgPSB0b2tlbi5kYXRhKCkuYXNTdHJpbmco
KTsKICAgICAgICAgICAgIG1fZG9jdHlwZURhdGEgPSBhZG9wdFB0cihuZXcgSFRNTFRva2VuOjpE
b2N0eXBlRGF0YSgpKTsKICAgICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzUHVibGljSWRl
bnRpZmllciA9IHRydWU7CiAgICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50
aWZpZXIuYXBwZW5kKHRva2VuLnB1YmxpY0lkZW50aWZpZXIoKS5jaGFyYWN0ZXJzKCksIHRva2Vu
LnB1YmxpY0lkZW50aWZpZXIoKS5sZW5ndGgoKSk7CkBAIC0xMjAsMTQgKzEyMCwxNSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIQogICAgICAgICBjYXNlIEhUTUxUb2tl
blR5cGVzOjpFbmRUYWc6CiAgICAgICAgICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4uc2VsZkNs
b3NpbmcoKTsKLSAgICAgICAgICAgIG1fbmFtZSA9IEF0b21pY1N0cmluZyh0b2tlbi5kYXRhKCkp
OworICAgICAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKHRva2VuLmRhdGEoKS5hc1N0cmlu
ZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpD
b21tZW50OgotICAgICAgICAgICAgbV9kYXRhID0gdG9rZW4uZGF0YSgpOworICAgICAgICAgICAg
bV9kYXRhID0gdG9rZW4uZGF0YSgpLmFzU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgotICAgICAgICAgICAgbV9leHRl
cm5hbENoYXJhY3RlcnMgPSB0b2tlbi5kYXRhKCkuY2hhcmFjdGVycygpOwotICAgICAgICAgICAg
bV9leHRlcm5hbENoYXJhY3RlcnNMZW5ndGggPSB0b2tlbi5kYXRhKCkubGVuZ3RoKCk7CisgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIHRleHQgPSB0b2tlbi5kYXRhKCkuYXNTdHJpbmcoKTsKKyAg
ICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0gdGV4dC5jaGFyYWN0ZXJzKCk7CisgICAg
ICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aCA9IHRleHQubGVuZ3RoKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183577</attachid>
            <date>2013-01-18 17:03:39 -0800</date>
            <delta_ts>2013-03-06 17:38:52 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-107337-20130118170042.patch</filename>
            <type>text/plain</type>
            <size>15120</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEzYmE2Yjg3MDRjYzcz
ZjVkNzkwZWRjMTZiOTkxNjk4ZDg5ODY3ZC4uNWU0ZjVmNmU4ZjAwNDEyNGE5YjA1OTM3MjkyNTFl
N2M4YmIyYzg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEzLTAxLTE4ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmFja2dyb3VuZEhUTUxQYXJz
ZXIgc2hvdWxkIGJlIGFibGUgdG8gYXRvbWl6ZSB3ZWxsLWtub3duIHN0cmluZ3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzMzNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1M
UGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRN
TFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RI
VE1MVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFjdEhUTUxUb2tlbjo6aXNTYWZlVG9T
ZW5kVG9Bbm90aGVyVGhyZWFkKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRNTFRv
a2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpkYXRhKToKKyAgICAg
ICAgKENvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0
QmFja2dyb3VuZFBhcnNlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6aWRlbnRp
ZmllclRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSWRlbnRpZmllcjo6SFRNTElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6
YXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50aWZpZXI6OmluaXQpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoSFRNTElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50
aWZpZXI6OkhUTUxJZGVudGlmaWVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6QXRvbWljSFRNTFRva2VuKToK
KwogMjAxMy0wMS0xOCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW1Y4XSBSZW1vdmUgY3VzdG9tIFY4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b206OnRvVjgo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IGE1NWYwMTc2MGI2ZmYxNjA4YmUzNTVlMjJlZmU3YjUwY2Ez
ZTg5ZTEuLjJjOTk0ODc2M2FlZjEwZmFlMjdlNzU1MmYwMGZhODFjOTc2NTA5YTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTMzNTMsNiArMzM1Myw4IEBACiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIv
SFRNTEVudGl0eVRhYmxlLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0
aW5nRWxlbWVudExpc3QuY3BwJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MRm9ybWF0
dGluZ0VsZW1lbnRMaXN0LmgnLAorICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxJZGVudGlm
aWVyLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTElucHV0U3RyZWFtLmgnLAogICAgICAgICAgICAg
J2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ2h0
bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAppbmRleCBhZjBkNzhmMzA3
MTkyOTM2N2IwNzgyNWE2ZmM1MzQ1YTAyMTk3OGU2Li40YTAwOTk4ODM4NGY3NzBlMDRkZWM2Yzc2
NDNmZDA1OGY3Y2M5OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
QmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBCYWNrZ3Jv
dW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcigpCiAgICAgICAgIGNvbnN0IENvbXBhY3RIVE1M
VG9rZW4mIHRva2VuID0gbV9wZW5kaW5nVG9rZW5zLmxhc3QoKTsKIAogICAgICAgICBpZiAodG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZykgewotICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOworICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpLmFzU3RyaW5nKCk7CiAgICAgICAgICAgICBpZiAo
dGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpzdmdUYWcpCiAgICAgICAgICAgICAg
ICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5hbWVzOjptYXRoVGFnKSkKICAg
ICAgICAgICAgICAgICBtX2luRm9yZWlnbkNvbnRlbnQgPSB0cnVlOwpAQCAtMTUwLDcgKzE1MCw3
IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6ZXIoKQogICAgICAgICAg
ICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlJBV1RFWFRT
dGF0ZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5U
eXBlczo6RW5kVGFnKSB7Ci0gICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tl
bi5kYXRhKCk7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRh
KCkuYXNTdHJpbmcoKTsKICAgICAgICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwg
U1ZHTmFtZXM6OnN2Z1RhZykgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5hbWVz
OjptYXRoVGFnKSkKICAgICAgICAgICAgICAgICBtX2luRm9yZWlnbkNvbnRlbnQgPSBmYWxzZTsK
ICAgICAgICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcAppbmRl
eCAwOTMyOGVlODYwZGY0MzMzNTVkYmIzMjY1ZjNlN2UxMjYwYTZkMzVhLi45Njg0MjdiZmU0ZjY0
NTYzZDZhZjJjYmE1MzViZTJlZDk2YWUyODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcApAQCAtNDEsNyArNDEsNyBAQCBDb21wYWN0SFRN
TFRva2VuOjpDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEhUTUxUb2tl
blR5cGVzOjpET0NUWVBFOgotICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9rZW4ubmFtZSgpLmRh
dGEoKSwgdG9rZW4ubmFtZSgpLnNpemUoKSk7CisgICAgICAgIG1fZGF0YSA9IEhUTUxJZGVudGlm
aWVyKHRva2VuLm5hbWUoKS5kYXRhKCksIHRva2VuLm5hbWUoKS5zaXplKCkpOwogICAgICAgICBt
X3B1YmxpY0lkZW50aWZpZXIgPSBTdHJpbmcodG9rZW4ucHVibGljSWRlbnRpZmllcigpLmRhdGEo
KSwgdG9rZW4ucHVibGljSWRlbnRpZmllcigpLnNpemUoKSk7CiAgICAgICAgIG1fc3lzdGVtSWRl
bnRpZmllciA9IFN0cmluZyh0b2tlbi5zeXN0ZW1JZGVudGlmaWVyKCkuZGF0YSgpLCB0b2tlbi5z
eXN0ZW1JZGVudGlmaWVyKCkuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CkBAIC01NywxMSArNTcs
NyBAQCBDb21wYWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tlbiYg
dG9rZW4pCiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCEKICAgICBjYXNlIEhUTUxUb2tlblR5cGVz
OjpDb21tZW50OgogICAgIGNhc2UgSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjoKLSAgICAgICAg
aWYgKHRva2VuLmlzQWxsOEJpdERhdGEoKSkKLSAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZzo6
bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UodG9rZW4uZGF0YSgpLmRhdGEoKSwgdG9rZW4uZGF0YSgp
LnNpemUoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tl
bi5kYXRhKCkuZGF0YSgpLCB0b2tlbi5kYXRhKCkuc2l6ZSgpKTsKLSAgICAgICAgYnJlYWs7Cisg
ICAgICAgIG1fZGF0YSA9IEhUTUxJZGVudGlmaWVyKHRva2VuLm5hbWUoKS5kYXRhKCksIHRva2Vu
Lm5hbWUoKS5zaXplKCksIHRva2VuLmlzQWxsOEJpdERhdGEoKSk7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtODksOCArODUs
OSBAQCBib29sIENvbXBhY3RIVE1MVG9rZW46OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgp
IGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIGlz
U3RyaW5nU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChtX2RhdGEpCi0gICAgICAgICYmIGlzU3Ry
aW5nU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChtX3B1YmxpY0lkZW50aWZpZXIpCisgICAgLy8g
RklYTUU6IENoZWNrIG1fZGF0YS4KKworICAgIHJldHVybiBpc1N0cmluZ1NhZmVUb1NlbmRUb0Fu
b3RoZXJUaHJlYWQobV9wdWJsaWNJZGVudGlmaWVyKQogICAgICAgICAmJiBpc1N0cmluZ1NhZmVU
b1NlbmRUb0Fub3RoZXJUaHJlYWQobV9zeXN0ZW1JZGVudGlmaWVyKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCmluZGV4IDQxMDQxNWNlOTgz
ZmQyMjg1YWYwMDM3MjEzM2NmOTU2ZThkYzdmODQuLjM3MTc2Zjc3ZDVkMTYxYmY0OTZhYzNkY2Ux
NzRjZTFiNTczYWRlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Nv
bXBhY3RIVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0
SFRNTFRva2VuLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1M
X1BBUlNFUikKIAorI2luY2x1ZGUgIkhUTUxJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSFRNTFRv
a2VuVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KQEAgLTYxLDcgKzYyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTYWZlVG9TZW5k
VG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CiAKICAgICBIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgY29uc3QgSFRNTElkZW50aWZpZXImIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBib29sIHNlbGZDbG9zaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZWxmQ2xvc2luZzsgfQogICAgIGNvbnN0IFZlY3RvcjxDb21wYWN0QXR0cmlidXRl
PiYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogCkBAIC03MCw3
ICs3MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBIVE1MVG9rZW5UeXBlczo6VHlwZSBt
X3R5cGU7Ci0gICAgU3RyaW5nIG1fZGF0YTsgLy8gIm5hbWUiLCAiY2hhcmFjdGVycyIsIG9yICJk
YXRhIiBkZXBlbmRpbmcgb24gbV90eXBlCisgICAgSFRNTElkZW50aWZpZXIgbV9kYXRhOyAvLyAi
bmFtZSIsICJjaGFyYWN0ZXJzIiwgb3IgImRhdGEiIGRlcGVuZGluZyBvbiBtX3R5cGUKICAgICBi
b29sIG1fc2VsZkNsb3Npbmc7CiAgICAgVmVjdG9yPENvbXBhY3RBdHRyaWJ1dGU+IG1fYXR0cmli
dXRlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHAKaW5kZXggOWIxMjNiMzk5MTZjMmQ0OGY1NmY2ZDQ0MjA0OWM3OGU1YjBiNGFiYi4u
ZDY5OTQ1NzEzMTliNzZiNDA3MTM2ZjA4Mjg2NDdmNzE5N2E1MWVkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlclNjaGVkdWxlci5oIgogI2lu
Y2x1ZGUgIkhUTUxQYXJzZXJUaHJlYWQuaCIKQEAgLTQ1OCw2ICs0NTksOCBAQCB2b2lkIEhUTUxE
b2N1bWVudFBhcnNlcjo6c3RhcnRCYWNrZ3JvdW5kUGFyc2VyKCkKICAgICBBU1NFUlQoIW1faGF2
ZUJhY2tncm91bmRQYXJzZXIpOwogICAgIG1faGF2ZUJhY2tncm91bmRQYXJzZXIgPSB0cnVlOwog
CisgICAgSFRNTElkZW50aWZpZXI6OmluaXQoKTsKKwogICAgIFBhcnNlcklkZW50aWZpZXIgaWRl
bnRpZmllciA9IFBhcnNlck1hcDo6aWRlbnRpZmllckZvclBhcnNlcih0aGlzKTsKICAgICBwYXJz
ZXJNYXAoKS5tYWluVGhyZWFkUGFyc2VycygpLnNldChpZGVudGlmaWVyLCB0aGlzKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIxNzNjZmE3ZTM1M2IzNTAxZWE5NzJhOWI3ZjdkOGZlNTU3ZWZkZjIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAKQEAgLTAs
MCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlLCBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFS
U0VSKQorCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKKworI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGludmFsaWRJbmRleCA9IC0xOworCit0eXBlZGVmIHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5n
SW1wbCo+IElkZW50aWZpZXJFbnRyeTsKK3R5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgVmVjdG9y
PElkZW50aWZpZXJFbnRyeT4sIEFscmVhZHlIYXNoZWQ+IElkZW50aWZpZXJUYWJsZTsKKworc3Rh
dGljIElkZW50aWZpZXJUYWJsZSYgaWRlbnRpZmllclRhYmxlKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKElkZW50aWZpZXJUYWJsZSwgdGFibGUsICgpKTsKKyAgICByZXR1cm4gdGFibGU7
Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBmaW5kSW5kZXgoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICB1bnNpZ25lZCBoYXNoID0gU3RyaW5nSGFzaGVyOjpj
b21wdXRlSGFzaChjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgIGNvbnN0IElkZW50aWZpZXJUYWJs
ZSYgdGFibGUgPSBpZGVudGlmaWVyVGFibGUoKTsKKworICAgIElkZW50aWZpZXJUYWJsZTo6Y29u
c3RfaXRlcmF0b3IgaXQgPSB0YWJsZS5maW5kKGhhc2gpOworICAgIGlmIChpdCA9PSB0YWJsZS5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRJbmRleDsKKyAgICBjb25zdCBWZWN0b3I8SWRl
bnRpZmllckVudHJ5PiYgZW50cmllcyA9IGl0LT52YWx1ZTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGVudHJpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGVxdWFsKGVudHJpZXNb
aV0uc2Vjb25kLCBjaGFyYWN0ZXJzLCBsZW5ndGgpKQorICAgICAgICAgICAgcmV0dXJuIGVudHJp
ZXNbaV0uZmlyc3Q7CisgICAgfQorICAgIHJldHVybiBpbnZhbGlkSW5kZXg7Cit9CisKK0hUTUxJ
ZGVudGlmaWVyOjpIVE1MSWRlbnRpZmllcihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoLCBib29sIGlzQWxsOEJpdERhdGEpCisgICAgOiBtX2luZGV4KGZpbmRJbmRleChj
aGFyYWN0ZXJzLCBsZW5ndGgpKQoreworICAgIGlmIChtX2luZGV4ICE9IGludmFsaWRJbmRleCkK
KyAgICAgICAgcmV0dXJuOworICAgIG1fc3RyaW5nID0gaXNBbGw4Qml0RGF0YSA/IFN0cmluZzo6
bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoY2hhcmFjdGVycywgbGVuZ3RoKSA6IFN0cmluZyhjaGFy
YWN0ZXJzLCBsZW5ndGgpOworfQorCitjb25zdCBTdHJpbmcmIEhUTUxJZGVudGlmaWVyOjphc1N0
cmluZygpIGNvbnN0Cit7CisgICAgaWYgKG1faW5kZXggIT0gaW52YWxpZEluZGV4KQorICAgICAg
ICByZXR1cm4gZ2V0SFRNTFRhZ3MoKVttX2luZGV4XS0+bG9jYWxOYW1lKCk7CisgICAgcmV0dXJu
IG1fc3RyaW5nOworfQorCit2b2lkIEhUTUxJZGVudGlmaWVyOjppbml0KCkKK3sKKyAgICBzdGF0
aWMgYm9vbCBpc0luaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKGlzSW5pdGlhbGl6ZWQpCisg
ICAgICAgIHJldHVybjsKKyAgICBpc0luaXRpYWxpemVkID0gdHJ1ZTsKKworICAgIFdlYkNvcmU6
OlF1YWxpZmllZE5hbWUqKiB0YWdzID0gZ2V0SFRNTFRhZ3MoKTsKKyAgICBJZGVudGlmaWVyVGFi
bGUmIHRhYmxlID0gaWRlbnRpZmllclRhYmxlKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgSFRNTFRhZ3NDb3VudDsgKytpKSB7CisgICAgICAgIFN0cmluZ0ltcGwqIHRhZ05hbWUg
PSB0YWdzW2ldLT5sb2NhbE5hbWUoKS5pbXBsKCk7CisgICAgICAgIHVuc2lnbmVkIGhhc2ggPSB0
YWdOYW1lLT5oYXNoKCk7CisgICAgICAgIHRhYmxlLmdldChoYXNoKS5hcHBlbmQoSWRlbnRpZmll
ckVudHJ5KGksIHRhZ05hbWUpKTsKKyAgICB9Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShU
SFJFQURFRF9IVE1MX1BBUlNFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRl
bnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxMmIwYmI0MDE5OTFiMDZkZTg2YWFlOWYwYzU2ZDM2MDY2
YmU3N2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
SWRlbnRpZmllci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIVE1MSWRlbnRpZmllcl9oCisjZGVmaW5l
IEhUTUxJZGVudGlmaWVyX2gKKworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEhUTUxJZGVudGlmaWVyIHsKK3B1YmxpYzoKKyAgICBIVE1MSWRlbnRpZmllcigp
IDogbV9pbmRleCgwKSB7IH0KKyAgICBIVE1MSWRlbnRpZmllcihjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29sIGlzQWxsOEJpdERhdGEgPSBmYWxzZSk7CisKKyAg
ICBib29sIGVxdWFscyh1bnNpZ25lZCBpbmRleCk7CisgICAgY29uc3QgU3RyaW5nJiBhc1N0cmlu
ZygpIGNvbnN0OworCisgICAgc3RhdGljIHZvaWQgaW5pdCgpOworCitwcml2YXRlOgorICAgIHVu
c2lnbmVkIG1faW5kZXg7CisgICAgU3RyaW5nIG1fc3RyaW5nOworfTsKKworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRva2VuLmgKaW5kZXggNmVhNjMwYjYxOTRhYjc3MWM3NTE0MjczNmExZTk0
NGQ0Zjk2ZDQxOC4uZmFhNzFjZDcxYWEzYjY5MDk5MmJlZjFhMDJlYjY2OGE2ZGM4ODVjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRToKLSAgICAgICAgICAg
IG1fbmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAgICAgICAgIG1fbmFtZSA9IHRva2VuLmRhdGEo
KS5hc1N0cmluZygpOwogICAgICAgICAgICAgbV9kb2N0eXBlRGF0YSA9IGFkb3B0UHRyKG5ldyBI
VE1MVG9rZW46OkRvY3R5cGVEYXRhKCkpOwogICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9o
YXNQdWJsaWNJZGVudGlmaWVyID0gdHJ1ZTsKICAgICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1f
cHVibGljSWRlbnRpZmllci5hcHBlbmQodG9rZW4ucHVibGljSWRlbnRpZmllcigpLmNoYXJhY3Rl
cnMoKSwgdG9rZW4ucHVibGljSWRlbnRpZmllcigpLmxlbmd0aCgpKTsKQEAgLTEyMCwxNSArMTIw
LDE3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBGYWxsIHRocm91Z2ghCiAgICAgICAgIGNh
c2UgSFRNTFRva2VuVHlwZXM6OkVuZFRhZzoKICAgICAgICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0
b2tlbi5zZWxmQ2xvc2luZygpOwotICAgICAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKHRv
a2VuLmRhdGEoKSk7CisgICAgICAgICAgICBtX25hbWUgPSBBdG9taWNTdHJpbmcodG9rZW4uZGF0
YSgpLmFzU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSFRNTFRv
a2VuVHlwZXM6OkNvbW1lbnQ6Ci0gICAgICAgICAgICBtX2RhdGEgPSB0b2tlbi5kYXRhKCk7Cisg
ICAgICAgICAgICBtX2RhdGEgPSB0b2tlbi5kYXRhKCkuYXNTdHJpbmcoKTsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6Ci0gICAgICAg
ICAgICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9IHRva2VuLmRhdGEoKS5jaGFyYWN0ZXJzKCk7Ci0g
ICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aCA9IHRva2VuLmRhdGEoKS5sZW5n
dGgoKTsKKyAgICAgICAgY2FzZSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOiB7CisgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIHRleHQgPSB0b2tlbi5kYXRhKCkuYXNTdHJpbmcoKTsKKyAgICAg
ICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0gdGV4dC5jaGFyYWN0ZXJzKCk7CisgICAgICAg
ICAgICBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aCA9IHRleHQubGVuZ3RoKCk7CiAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191873</attachid>
            <date>2013-03-06 17:38:54 -0800</date>
            <delta_ts>2013-03-07 04:31:19 -0800</delta_ts>
            <desc>alternative approach, does not work yet</desc>
            <filename>bug-107337-20130306173459.patch</filename>
            <type>text/plain</type>
            <size>15870</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0OTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJmMjMzYWIwYTc3MTk0NTBiMzg5Njg5
Y2IyZDEzOTllNTYyNTBlOTkuLjIzYmYzNDg2MTZkOWEwYjAyOWFiOWYyYTU0YWQzZmYyODhkY2My
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDMtMDYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3
ZWJraXQub3JnPgorCisgICAgICAgIEJhY2tncm91bmRIVE1MUGFyc2VyIHNob3VsZCBiZSBhYmxl
IHRvIGF0b21pemUgd2VsbC1rbm93biBzdHJpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAg
IChXVEY6OlN0cmluZzo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKToKKwogMjAxMy0wMy0w
NiAgUGF3ZcWCIEZvcnlzaXVrICA8dHV4YXRvckBvMi5wbD4KIAogICAgICAgICBUeXBvIGluIGlu
bGluZSBmdW5jdGlvbiBpbiBCeXRlT3JkZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE3Yzc2NWI2NmI2ZTQw
MWMzYWQ0MzhiZGUxZGNlNDRhZDRkZTAyMmUuLjFmMjIxNjk1NjhkZmUxNTNlMjUwNDE3NmY3NjU4
M2ExM2E4MWE0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNSBAQAogMjAxMy0wMy0wNiAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgQmFja2dyb3VuZEhUTUxQYXJz
ZXIgc2hvdWxkIGJlIGFibGUgdG8gYXRvbWl6ZSB3ZWxsLWtub3duIHN0cmluZ3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzMzNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1M
UGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRN
TFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RI
VE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ29tcGFjdEhUTUxUb2tlbik6CisgICAgICAgICog
aHRtbC9wYXJzZXIvUGFyc2VyU3RyaW5nQ2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoVUNoYXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VUNoYXJCdWZm
ZXJUcmFuc2xhdG9yOjpoYXNoKToKKyAgICAgICAgKFVDaGFyQnVmZmVyVHJhbnNsYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I6OmVxdWFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjo6dHJhbnNsYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhcnNlclN0cmluZ0NhY2hlOjphZGQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1Bh
cnNlclN0cmluZ0NhY2hlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQ
YXJzZXJTdHJpbmdDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZXJTdHJpbmdDYWNoZTo6
YWRkKToKKworMjAxMy0wMy0wNiAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKICAg
ICAgICAgZGlzcGxheTpub25lIGlmcmFtZXMgc2hvdWxkIG5vdCBidWlsZCByZW5kZXJpbmcgdHJl
ZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzIz
NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggOGZhYzU1OTlhM2UxMDRlZDExZjYy
ZmEzNjI1MjI3YTMwMTljYTQ5Ny4uNzVlNzY5Mzg4YzkzY2JjZTk3YmUyZmUyMzc2ZThlYWE1ZTdl
ODliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtNjY1LDYgKzY2NSwxMCBAQCBi
b29sIFN0cmluZzo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3QKIHsKICAgICBp
ZiAoIWltcGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgLy8gQXRvbWljU3RyaW5ncyBh
cmUgbm90IHNhZmUgdG8gc2VuZCBiZXR3ZWVuIHRocmVhZHMgYXMgflN0cmluZ0ltcGwoKQorICAg
IC8vIHdpbGwgdHJ5IHRvIHJlbW92ZSB0aGVtIGZyb20gdGhlIHdyb25nIEF0b21pY1N0cmluZ1Rh
YmxlLgorICAgIGlmIChpbXBsKCktPmlzQXRvbWljKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoaW1wbCgpLT5oYXNPbmVSZWYoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
aWYgKGlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmMzEyMTE5YThjYmY3NmIwMGM3OGIz
M2Q2ZWQ4ODljOTI3YjIxYzUxLi43OTljMTQxNWEzYzNhMTE3OGU5OTM1NzJlNmQyMzc5NGVmMjAz
NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNTM2LDYgKzM1MzYsOCBAQAogICAgICAgICAgICAg
J2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmgnLAogICAgICAgICAgICAgJ2h0bWwv
cGFyc2VyL0lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFy
c2VyL05lc3RpbmdMZXZlbEluY3JlbWVudGVyLmgnLAorICAgICAgICAgICAgJ2h0bWwvcGFyc2Vy
L1BhcnNlclN0cmluZ0NhY2hlLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9wYXJzZXIvUGFyc2Vy
U3RyaW5nQ2FjaGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFy
c2VyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmgn
LAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL1RleHRWaWV3U291cmNlUGFyc2VyLmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5j
cHAKaW5kZXggODc0NDMyZTYwMWNhOGY2YzcxOGZlNDBjNDkyMWQ5MTk2M2QxYjM2Yy4uOWExNmM0
YzVkYTE3YWQ3ZWQ4MDI3YmVlNzI1NWJhYjRhNGU0ZGUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJUaHJlYWQuaCIKICNpbmNsdWRlICJIVE1MVG9rZW5p
emVyLmgiCiAjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKyNpbmNsdWRlICJQYXJzZXJTdHJpbmdD
YWNoZS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0yNDYsMzEgKzI0Nyw0MiBAQCBib29sIEJh
Y2tncm91bmRIVE1MUGFyc2VyOjpzaW11bGF0ZVRyZWVCdWlsZGVyKGNvbnN0IENvbXBhY3RIVE1M
VG9rZW4mIHRva2VuKQogCiB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9rZW5pemVy
KCkKIHsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBtX3NvdXJjZVRyYWNrZXIuc3RhcnQo
bV9pbnB1dC5jdXJyZW50KCksIG1fdG9rZW5pemVyLmdldCgpLCAqbV90b2tlbik7Ci0gICAgICAg
IGlmICghbV90b2tlbml6ZXItPm5leHRUb2tlbihtX2lucHV0LmN1cnJlbnQoKSwgKm1fdG9rZW4u
Z2V0KCkpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIG1fc291cmNlVHJhY2tlci5lbmQo
bV9pbnB1dC5jdXJyZW50KCksIG1fdG9rZW5pemVyLmdldCgpLCAqbV90b2tlbik7Ci0KLSAgICAg
ICAgewotICAgICAgICAgICAgVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gVGV4dFBvc2l0aW9uKG1f
aW5wdXQuY3VycmVudCgpLmN1cnJlbnRMaW5lKCksIG1faW5wdXQuY3VycmVudCgpLmN1cnJlbnRD
b2x1bW4oKSk7Ci0KLSAgICAgICAgICAgIGlmIChPd25QdHI8WFNTSW5mbz4geHNzSW5mbyA9IG1f
eHNzQXVkaXRvci0+ZmlsdGVyVG9rZW4oRmlsdGVyVG9rZW5SZXF1ZXN0KCptX3Rva2VuLCBtX3Nv
dXJjZVRyYWNrZXIsIG1fdG9rZW5pemVyLT5zaG91bGRBbGxvd0NEQVRBKCkpKSkgewotICAgICAg
ICAgICAgICAgIHhzc0luZm8tPm1fdGV4dFBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAg
ICAgICAgbV9wZW5kaW5nWFNTSW5mb3MuYXBwZW5kKHhzc0luZm8ucmVsZWFzZSgpKTsKKyAgICB7
CisgICAgICAgIC8vIEZJWE1FOiBXZSdyZSB1c2luZyBvdXIgb3duIHBvb3ItbWFuJ3MgQXRvbWlj
U3RyaW5nVGFibGUsIGJlY2F1c2UKKyAgICAgICAgLy8gQXRvbWljU3RyaW5ncyBhcmUgcGVyLXRo
cmVhZCwgYW5kIHdlIHdhbnQgdG8gcGFzcyBvd25lcnNoaXAgb2YKKyAgICAgICAgLy8gdGhlc2Ug
U3RyaW5ncyB0byB0aGUgbWFpbiB0aHJlYWQgYXMgcGFydCBvZiBDb21wYWN0SFRNTFRva2VuLgor
ICAgICAgICAvLyBXZSBjYW4ndCB1c2UgQXRvbWljU3RyaW5nIGRpcmVjdGx5LCBhcyBpdCBzZXRz
IHRoZSAiYXRvbWljIgorICAgICAgICAvLyBiaXQgb24gdGhlIFN0cmluZ0ltcGwuCisgICAgICAg
IFBhcnNlclN0cmluZ0NhY2hlIHN0cmluZ0NhY2hlOworICAgICAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICAgICAgbV9zb3VyY2VUcmFja2VyLnN0YXJ0KG1faW5wdXQuY3VycmVudCgpLCBtX3Rv
a2VuaXplci5nZXQoKSwgKm1fdG9rZW4pOworICAgICAgICAgICAgaWYgKCFtX3Rva2VuaXplci0+
bmV4dFRva2VuKG1faW5wdXQuY3VycmVudCgpLCAqbV90b2tlbi5nZXQoKSkpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBtX3NvdXJjZVRyYWNrZXIuZW5kKG1faW5wdXQuY3Vy
cmVudCgpLCBtX3Rva2VuaXplci5nZXQoKSwgKm1fdG9rZW4pOworCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gVGV4dFBvc2l0aW9uKG1faW5w
dXQuY3VycmVudCgpLmN1cnJlbnRMaW5lKCksIG1faW5wdXQuY3VycmVudCgpLmN1cnJlbnRDb2x1
bW4oKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoT3duUHRyPFhTU0luZm8+IHhzc0luZm8gPSBt
X3hzc0F1ZGl0b3ItPmZpbHRlclRva2VuKEZpbHRlclRva2VuUmVxdWVzdCgqbV90b2tlbiwgbV9z
b3VyY2VUcmFja2VyLCBtX3Rva2VuaXplci0+c2hvdWxkQWxsb3dDREFUQSgpKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgeHNzSW5mby0+bV90ZXh0UG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAg
ICAgICAgICAgICAgICAgbV9wZW5kaW5nWFNTSW5mb3MuYXBwZW5kKHhzc0luZm8ucmVsZWFzZSgp
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBUZXh0UG9zaXRpb24gdGV4
dFBvc2l0aW9uKG1faW5wdXQuY3VycmVudCgpLmN1cnJlbnRMaW5lKCksIG1faW5wdXQuY3VycmVu
dCgpLmN1cnJlbnRDb2x1bW4oKSk7CisgICAgICAgICAgICAgICAgQ29tcGFjdEhUTUxUb2tlbiB0
b2tlbigmc3RyaW5nQ2FjaGUsIG1fdG9rZW4uZ2V0KCksIHRleHRQb3NpdGlvbik7CisKKyAgICAg
ICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5zY2FuKHRva2VuLCBtX3BlbmRpbmdQcmVsb2Fk
cyk7CisKKyAgICAgICAgICAgICAgICBtX3BlbmRpbmdUb2tlbnMtPmFwcGVuZCh0b2tlbik7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIENvbXBhY3RIVE1MVG9rZW4gdG9rZW4obV90b2tl
bi5nZXQoKSwgVGV4dFBvc2l0aW9uKG1faW5wdXQuY3VycmVudCgpLmN1cnJlbnRMaW5lKCksIG1f
aW5wdXQuY3VycmVudCgpLmN1cnJlbnRDb2x1bW4oKSkpOworICAgICAgICAgICAgbV90b2tlbi0+
Y2xlYXIoKTsKIAotICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+c2Nhbih0b2tlbiwgbV9w
ZW5kaW5nUHJlbG9hZHMpOwotCi0gICAgICAgICAgICBtX3BlbmRpbmdUb2tlbnMtPmFwcGVuZCh0
b2tlbik7CisgICAgICAgICAgICBpZiAoIXNpbXVsYXRlVHJlZUJ1aWxkZXIobV9wZW5kaW5nVG9r
ZW5zLT5sYXN0KCkpIHx8IG1fcGVuZGluZ1Rva2Vucy0+c2l6ZSgpID49IHBlbmRpbmdUb2tlbkxp
bWl0KQorICAgICAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5UaHJlYWQoKTsKICAgICAgICAg
fQotCi0gICAgICAgIG1fdG9rZW4tPmNsZWFyKCk7Ci0KLSAgICAgICAgaWYgKCFzaW11bGF0ZVRy
ZWVCdWlsZGVyKG1fcGVuZGluZ1Rva2Vucy0+bGFzdCgpKSB8fCBtX3BlbmRpbmdUb2tlbnMtPnNp
emUoKSA+PSBwZW5kaW5nVG9rZW5MaW1pdCkKLSAgICAgICAgICAgIHNlbmRUb2tlbnNUb01haW5U
aHJlYWQoKTsKKyAgICAgICAgLy8gVGhlIFBhcnNlclN0cmluZ0NhY2hlIG11c3QgcmVsZWFzZSBp
dHMgcmVmcyBvbiB0aGUgY2FjaGVkIHN0cmluZ3MKKyAgICAgICAgLy8gYmVmb3JlIGl0J3Mgc2Fm
ZSB0byBzZW5kIHRoZW0gdG8gdGhlIG1haW4gdGhyZWFkLgogICAgIH0KIAogICAgIHNlbmRUb2tl
bnNUb01haW5UaHJlYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0NvbXBhY3RIVE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFj
dEhUTUxUb2tlbi5jcHAKaW5kZXggYjI5MjEwZjMxZjYyNDY3NTU2NDkyYWZlZDMwODNkMjY4NWZl
MDBkNS4uYmY3MWMyZmNiYWMxMjA3OGE2ODRmNzYyZTdlMjMwYzQwZTJlZGM3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKIAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1M
VG9rZW4uaCIKKyNpbmNsdWRlICJQYXJzZXJTdHJpbmdDYWNoZS5oIgogI2luY2x1ZGUgIlF1YWxp
ZmllZE5hbWUuaCIKICNpbmNsdWRlICJYU1NBdWRpdG9yRGVsZWdhdGUuaCIKIApAQCAtNDUsNyAr
NDYsNyBAQCBzdHJ1Y3QgU2FtZVNpemVBc0NvbXBhY3RIVE1MVG9rZW4gIHsKIAogQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKENvbXBhY3RIVE1MVG9rZW4pID09IHNpemVvZihTYW1lU2l6ZUFzQ29tcGFj
dEhUTUxUb2tlbiksIENvbXBhY3RIVE1MVG9rZW5fc2hvdWxkX3N0YXlfc21hbGwpOwogCi1Db21w
YWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tlbiogdG9rZW4sIGNv
bnN0IFRleHRQb3NpdGlvbiYgdGV4dFBvc2l0aW9uKQorQ29tcGFjdEhUTUxUb2tlbjo6Q29tcGFj
dEhUTUxUb2tlbihQYXJzZXJTdHJpbmdDYWNoZSogc3RyaW5nQ2FjaGUsIGNvbnN0IEhUTUxUb2tl
biogdG9rZW4sIGNvbnN0IFRleHRQb3NpdGlvbiYgdGV4dFBvc2l0aW9uKQogICAgIDogbV90eXBl
KHRva2VuLT50eXBlKCkpCiAgICAgLCBtX2lzQWxsOEJpdERhdGEoZmFsc2UpCiAgICAgLCBtX2Rv
Y3R5cGVGb3JjZXNRdWlya3MoZmFsc2UpCkBAIC02OCwxMiArNjksMTkgQEAgQ29tcGFjdEhUTUxU
b2tlbjo6Q29tcGFjdEhUTUxUb2tlbihjb25zdCBIVE1MVG9rZW4qIHRva2VuLCBjb25zdCBUZXh0
UG9zaXRpb24mIHQKICAgICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6CiAgICAgICAgIG1fYXR0
cmlidXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRva2VuLT5hdHRyaWJ1dGVzKCkuc2l6ZSgp
KTsKICAgICAgICAgLy8gRklYTUU6IEF0dHJpYnV0ZSBuYW1lcyBhbmQgdmFsdWVzIHNob3VsZCBi
ZSA4Yml0IHdoZW4gcG9zc2libGUuCi0gICAgICAgIGZvciAoVmVjdG9yPEhUTUxUb2tlbjo6QXR0
cmlidXRlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0b2tlbi0+YXR0cmlidXRlcygpLmJlZ2luKCk7
IGl0ICE9IHRva2VuLT5hdHRyaWJ1dGVzKCkuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBtX2F0
dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShTdHJpbmcoaXQtPm5hbWUpLCBTdHJpbmcoaXQtPnZh
bHVlKSkpOworICAgICAgICBmb3IgKFZlY3RvcjxIVE1MVG9rZW46OkF0dHJpYnV0ZT46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gdG9rZW4tPmF0dHJpYnV0ZXMoKS5iZWdpbigpOyBpdCAhPSB0b2tlbi0+
YXR0cmlidXRlcygpLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICAvLyBXZWJDb3JlOjpBdHRy
aWJ1dGUgdXNlcyBBdG9taWNTdHJpbmcgZm9yIG1fdmFsdWUuIFdlJ3JlIGFzc3VtaW5nIHZhbHVl
cyBhcmUgd29ydGggdW5pcXVpbmcgaGVyZSB0b28uCisgICAgICAgICAgICBtX2F0dHJpYnV0ZXMu
YXBwZW5kKEF0dHJpYnV0ZShzdHJpbmdDYWNoZS0+YWRkKGl0LT5uYW1lKSwgc3RyaW5nQ2FjaGUt
PmFkZChpdC0+dmFsdWUpKSk7CisgICAgICAgIH0KICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIQot
ICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6CisgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzog
ewogICAgICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4tPnNlbGZDbG9zaW5nKCk7Ci0gICAgICAg
IC8vIEZhbGwgdGhyb3VnaCEKKyAgICAgICAgbV9pc0FsbDhCaXREYXRhID0gdG9rZW4tPmlzQWxs
OEJpdERhdGEoKTsKKyAgICAgICAgLy8gbV9kYXRhIGZvciBzdGFydC9lbmQgdGFncyBpcyB0aGUg
bmFtZSBvZiB0aGUgdGFnIGFuZCBpcyBsaWtlbHkgaW4gb3VyIGNhY2hlIGFscmVhZHkuCisgICAg
ICAgIG1fZGF0YSA9IHN0cmluZ0NhY2hlLT5hZGQodG9rZW4tPm5hbWUoKSk7CisgICAgICAgIEFT
U0VSVChtX2RhdGEuaXM4Qml0KCkgPT0gbV9pc0FsbDhCaXREYXRhKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQogICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgogICAgIGNhc2UgSFRNTFRva2Vu
OjpDaGFyYWN0ZXI6CiAgICAgICAgIGlmICh0b2tlbi0+aXNBbGw4Qml0RGF0YSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgKaW5kZXggYzg5OGY2
ZTZmMTRlYzg5MTJiMzJmYTEzMTVjNzc4YTg3ZTM5ODk4My4uMThlZjM5MWY3ZDkzY2ZlYWQ0NTYw
ZWRlZTY4NmFhOGNkYzkxZjM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQ29tcGFjdEhUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Nv
bXBhY3RIVE1MVG9rZW4uaApAQCAtMzksNiArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIFBhcnNlclN0cmluZ0NhY2hlOwogY2xhc3MgUXVhbGlmaWVkTmFtZTsKIAogY2xh
c3MgQ29tcGFjdEhUTUxUb2tlbiB7CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
U3RyaW5nIHZhbHVlOwogICAgIH07CiAKLSAgICBDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxU
b2tlbiosIGNvbnN0IFRleHRQb3NpdGlvbiYpOworICAgIENvbXBhY3RIVE1MVG9rZW4oUGFyc2Vy
U3RyaW5nQ2FjaGUqLCBjb25zdCBIVE1MVG9rZW4qLCBjb25zdCBUZXh0UG9zaXRpb24mKTsKIAog
ICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1BhcnNlclN0cmluZ0NhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1BhcnNlclN0cmluZ0NhY2hlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44OGZiYTlhMjk0MDJkZjI0ODgyYmYxYWU2MjIyYTQ0M2FhNTY1MGFkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvUGFyc2VyU3RyaW5nQ2FjaGUuY3BwCkBA
IC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlLCBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdP
T0dMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxf
UEFSU0VSKQorCisjaW5jbHVkZSAiUGFyc2VyU3RyaW5nQ2FjaGUuaCIKKworI2luY2x1ZGUgPHd0
Zi9TdHJpbmdIYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFVDaGFyQnVmZmVyIHsKKyAgICBjb25zdCBVQ2hh
ciogczsKKyAgICB1bnNpZ25lZCBsZW5ndGg7Cit9OworCisvLyBGSVhNRTogVGhpcyBpcyB0aGUg
c2FtZSBhcyBXVEY6OlVDaGFyQnVmZmVyVHJhbnNsYXRvciBleGNlcHQKKy8vIGRvZXMgbm90IGNh
bGwgc2V0QXRvbWljKHRydWUpLCBzaW5jZSB3ZSBkbyBub3Qgd2FudCB0aGVzZSBTdHJpbmdJbXBs
CisvLyBtYXJrZWQgYXMgYXRvbWljLgorc3RydWN0IFVDaGFyQnVmZmVyVHJhbnNsYXRvciB7Cisg
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVUNoYXJCdWZmZXImIGJ1ZikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGJ1
Zi5zLCBidWYubGVuZ3RoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBT
dHJpbmcmIHN0ciwgY29uc3QgVUNoYXJCdWZmZXImIGJ1ZikKKyAgICB7CisgICAgICAgIHJldHVy
biBXVEY6OmVxdWFsKHN0ci5pbXBsKCksIGJ1Zi5zLCBidWYubGVuZ3RoKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoU3RyaW5nJiBsb2NhdGlvbiwgY29uc3QgVUNoYXJCdWZm
ZXImIGJ1ZiwgdW5zaWduZWQgaGFzaCkKKyAgICB7CisgICAgICAgIGxvY2F0aW9uID0gU3RyaW5n
SW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoYnVmLnMsIGJ1Zi5sZW5ndGgpOworICAgICAgICAv
LyBGSVhNRTogV2Ugd291bGQgbGlrZSB0byBjYWxsIFN0cmluZ0ltcGw6OnNldEhhc2ggaGVyZSwg
c2luY2Ugd2UganVzdAorICAgICAgICAvLyBjb21wdXRlZCB0aGUgaGFzaCEgQnV0IGl0J3Mgbm90
IHNhZmUgZm9yIFdlYkNvcmUgY29kZSB0byBncmFiIGludG8KKyAgICAgICAgLy8gU3RyaW5nSW1w
bCBpbnRlcm5hbHMgbGlrZSB0aGF0LgorICAgICAgICAvLyBsb2NhdGlvbi0+c2V0SGFzaChoYXNo
KTsKKyAgICB9Cit9OworCitjb25zdCBTdHJpbmcmIFBhcnNlclN0cmluZ0NhY2hlOjphZGQoY29u
c3QgVUNoYXIqIGNoYXJzLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKCFjaGFycykKKyAg
ICAgICAgcmV0dXJuIG51bGxBdG9tLnN0cmluZygpOworCisgICAgaWYgKCEqY2hhcnMpCisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgVUNoYXJCdWZmZXIgdmFsdWUgPSB7IGNo
YXJzLCBsZW5ndGggfTsKKyAgICByZXR1cm4gKm1fdGFibGUuYWRkPFVDaGFyQnVmZmVyLCBVQ2hh
ckJ1ZmZlclRyYW5zbGF0b3I+KHZhbHVlKS5pdGVyYXRvcjsKK30KKworfQorCisjZW5kaWYgLy8g
RU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvUGFyc2VyU3RyaW5nQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1BhcnNlclN0cmluZ0NhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUyYTBiYjkwYTFkNzljMDhiNGRk
NjdlOTFhNTQwMGNlOTFiYjM5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1BhcnNlclN0cmluZ0NhY2hlLmgKQEAgLTAsMCArMSw2MSBAQAorCisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBhcnNl
clN0cmluZ0NhY2hlX2gKKyNkZWZpbmUgUGFyc2VyU3RyaW5nQ2FjaGVfaAorCisjaWYgRU5BQkxF
KFRIUkVBREVEX0hUTUxfUEFSU0VSKQorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBQYXJzZXJTdHJpbmdDYWNoZSB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGlu
ZUNhcGFjaXR5PgorICAgIGNvbnN0IFN0cmluZyYgYWRkKFZlY3RvcjxVQ2hhciwgaW5saW5lQ2Fw
YWNpdHk+IHZlY3RvcikKKyAgICB7CisgICAgICAgIGlmICh2ZWN0b3IuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgICAgIHJldHVybiBhZGQodmVjdG9y
LmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nJiBhZGQo
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOworCitwcml2YXRlOgorICAgIC8vIEZJWE1F
OiBBdG9taWNTdHJpbmdUYWJsZSB1c2VzIFN0cmluZ0ltcGwqLCBidXQgdGhhdCBkZXBlbmRzIG9u
IH5TdHJpbmdJbXBsKCkga25vd2luZworICAgIC8vIHRvIGNhbGwgQXRvbWljU3RyaW5nOjpyZW1v
dmUoKSB3aGVuIHRoZSBpc0F0b21pYygpIGJpdCBpcyBzZXQgb24gU3RyaW5nSW1wbC4KKyAgICAv
LyBXZSBjb3VsZCBhbHNvIGF2b2lkIHRoZSByZWZDaHVybiBieSB1c2luZyBTdHJpbmdJbXBsKiwg
YnV0IHdlJ2QgaGF2ZSB0byBiZQorICAgIC8vIHZlcnkgY2FyZWZ1bCB3aXRoIFN0cmluZyBsaWZl
dGltZXMsIG1ha2luZyB0aGlzIGNsYXNzIHRyaWNreSB0byB1c2Ugc2FmZWx5LgorICAgIEhhc2hT
ZXQ8U3RyaW5nPiBtX3RhYmxlOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVE
X0hUTUxfUEFSU0VSKQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191968</attachid>
            <date>2013-03-07 04:31:21 -0800</date>
            <delta_ts>2013-03-07 04:36:38 -0800</delta_ts>
            <desc>Updated version of Adam&apos;s HTMLIdentifier patch</desc>
            <filename>bug-107337-20130307042741.patch</filename>
            <type>text/plain</type>
            <size>27329</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk1NjlmOTI3NGJkZDJm
YzkwOGZmMDA4NzIyNTRhMmFlNTdmNDM3OS4uMTA1NDBmMjgxMmUzYWJmMmRlYzU4MmYwOTA1NWMz
ZjQ1ZTE1ZGQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYyIEBACiAyMDEzLTAzLTA3ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAorICAgICAgICBCYWNrZ3JvdW5kSFRNTFBhcnNl
ciBzaG91bGQgYmUgYWJsZSB0byBhdG9taXplIHdlbGwta25vd24gc3RyaW5ncworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQXRv
bWljSFRNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OkF0b21p
Y0hUTUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9rZW5FeGl0c0ZvcmVpZ25Db250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRva2VuRXhpdHNTVkcpOgorICAgICAgICAoV2ViQ29yZTo6dG9rZW5FeGl0
c01hdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnNpbXVsYXRl
VHJlZUJ1aWxkZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByZWxvYWRTY2FubmVyOjpzY2FuKToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDU1NQcmVsb2FkU2Nhbm5lcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvQ29tcGFj
dEhUTUxUb2tlbi5jcHA6CisgICAgICAgIChTYW1lU2l6ZUFzQ29tcGFjdEhUTUxUb2tlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wYWN0SFRNTFRva2VuOjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZSk6CisgICAgICAgIChBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFjdEhUTUxUb2tlbjo6ZGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpwdWJsaWNJZGVudGlmaWVyKToKKyAgICAg
ICAgKENvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0
QmFja2dyb3VuZFBhcnNlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6aWRlbnRp
ZmllclRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjpmaW5kSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6bmFtZUZvckluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJZGVudGlmaWVyOjphc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjphZGROYW1lcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6aW5pdCk6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKEhUTUxJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjpI
VE1MSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6aXNTYWZl
VG9TZW5kVG9Bbm90aGVyVGhyZWFkKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRocmVhZFNhZmVFcXVhbCk6CisgICAgICAg
IChXZWJDb3JlOjp0aHJlYWRTYWZlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OnRhZ0lkRm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcjo6cHJvY2Vzc0F0dHJpYnV0ZXMp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oOgorCisyMDEzLTAz
LTA3ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKwogICAgICAgICBkaXNwbGF5Om5v
bmUgaWZyYW1lcyBzaG91bGQgbm90IGJ1aWxkIHJlbmRlcmluZyB0cmVlcwogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MjM2CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCA0OWQ2OTNjNWVkNjdjYTZiMzgyOTI4YmFhMTMxZjRiMzE5NjBiMTE1Li5kMDc5ZWUy
ZjI2YTM4Njc5YjU5ODQwOWM5N2UxMjdmNzM5MjgwZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0z
NTA3LDYgKzM1MDcsOCBAQAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxFbnRpdHlUYWJs
ZS5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0
LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlz
dC5oJywKKyAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAnLAorICAg
ICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmgnLAogICAgICAgICAgICAgJ2h0
bWwvcGFyc2VyL0hUTUxJbnB1dFN0cmVhbS5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9I
VE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1M
TWV0YUNoYXJzZXRQYXJzZXIuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9BdG9taWNIVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21p
Y0hUTUxUb2tlbi5oCmluZGV4IDEzODM3MTAwNTVjNWVjZGQ0YmRlMDQ4ZWYzNjlhZmYxZmU5NGU4
ZmYuLjBhMjkwZjVhN2UzMTc4ODI3NmE2YTk3ZjNhNTEzMDNjMzdmOWM1ODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCkBAIC0xODksMTAgKzE4OSwx
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6Ci0gICAgICAgICAg
ICBtX25hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgICAgICAgICBtX25hbWUgPSB0b2tlbi5kYXRh
KCkuYXNTdHJpbmcoKTsKICAgICAgICAgICAgIG1fZG9jdHlwZURhdGEgPSBhZG9wdFB0cihuZXcg
RG9jdHlwZURhdGEoKSk7CiAgICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1B1YmxpY0lk
ZW50aWZpZXIgPSB0cnVlOwotICAgICAgICAgICAgYXBwZW5kKG1fZG9jdHlwZURhdGEtPm1fcHVi
bGljSWRlbnRpZmllciwgdG9rZW4ucHVibGljSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIGFw
cGVuZChtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXIsIHRva2VuLnB1YmxpY0lkZW50
aWZpZXIoKS5hc1N0cmluZygpKTsKICAgICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzU3lz
dGVtSWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgICAgICBhcHBlbmQobV9kb2N0eXBlRGF0YS0+
bV9zeXN0ZW1JZGVudGlmaWVyLCB0b2tlbi5zeXN0ZW1JZGVudGlmaWVyKCkpOwogICAgICAgICAg
ICAgbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJrcyA9IHRva2VuLmRvY3R5cGVGb3JjZXNRdWly
a3MoKTsKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEhUTUxUb2tl
bjo6U3RhcnRUYWc6CiAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eSh0b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgpKTsKICAgICAgICAgICAgIGZvciAoVmVjdG9y
PENvbXBhY3RIVE1MVG9rZW46OkF0dHJpYnV0ZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdG9rZW4u
YXR0cmlidXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytp
dCkgewotICAgICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgbmFtZShudWxsQXRvbSwgaXQtPm5h
bWUsIG51bGxBdG9tKTsKKyAgICAgICAgICAgICAgICBRdWFsaWZpZWROYW1lIG5hbWUobnVsbEF0
b20sIGl0LT5uYW1lLmFzU3RyaW5nKCksIG51bGxBdG9tKTsKICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyBOXjIgZm9yIHRoZSBudW1iZXIgb2YgYXR0cmlidXRlcy4KICAgICAgICAg
ICAgICAgICBpZiAoIWZpbmRBdHRyaWJ1dGVJblZlY3RvcihtX2F0dHJpYnV0ZXMsIG5hbWUpKQog
ICAgICAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShuYW1lLCBp
dC0+dmFsdWUpKTsKQEAgLTIxMCwxNyArMjEwLDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAv
LyBGYWxsIHRocm91Z2ghCiAgICAgICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6CiAgICAgICAg
ICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4uc2VsZkNsb3NpbmcoKTsKLSAgICAgICAgICAgIG1f
bmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAgICAgICAgIG1fbmFtZSA9IHRva2VuLmRhdGEoKS5h
c1N0cmluZygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSFRNTFRva2VuOjpD
b21tZW50OgotICAgICAgICAgICAgbV9kYXRhID0gdG9rZW4uZGF0YSgpOworICAgICAgICAgICAg
bV9kYXRhID0gdG9rZW4uZGF0YSgpLmFzU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxD
aGFyYWN0ZXJzID0gdG9rZW4uZGF0YSgpLmNoYXJhY3RlcnMoKTsKLSAgICAgICAgICAgIG1fZXh0
ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoID0gdG9rZW4uZGF0YSgpLmxlbmd0aCgpOworICAgICAgICBj
YXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOiB7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHN0
cmluZyA9IHRva2VuLmRhdGEoKS5hc1N0cmluZygpOworICAgICAgICAgICAgbV9leHRlcm5hbENo
YXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFjdGVycygpOworICAgICAgICAgICAgbV9leHRlcm5hbENo
YXJhY3RlcnNMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgICAgICAgICBtX2lzQWxsOEJp
dERhdGEgPSB0b2tlbi5pc0FsbDhCaXREYXRhKCk7CisgICAgICAgICAgICBBU1NFUlQoc3RyaW5n
LmlzOEJpdCgpID09IHRva2VuLmlzQWxsOEJpdERhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAppbmRleCA4NzQ0MzJl
NjAxY2E4ZjZjNzE4ZmU0MGM0OTIxZDkxOTYzZDFiMzZjLi45MWYzZmRiYzY2MzBhNDQ1MDcxNTZj
YjI5MTcxZDQyY2M3YzljZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyB2b2lk
IGNoZWNrVGhhdFhTU0luZm9zQXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBYU1NJ
bmZvU3RyZWFtJiB4CiBzdGF0aWMgYm9vbCB0b2tlbkV4aXRzRm9yZWlnbkNvbnRlbnQoY29uc3Qg
Q29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgY29waWVk
IGZyb20gSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50IGFuZCBj
aGFuZ2VkIHRvIHVzZSB0aHJlYWRTYWZlTWF0Y2guCi0gICAgY29uc3QgU3RyaW5nJiB0YWdOYW1l
ID0gdG9rZW4uZGF0YSgpOworICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lID0gdG9r
ZW4uZGF0YSgpOwogICAgIHJldHVybiB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgYlRhZykKICAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJpZ1RhZykKICAgICAgICAgfHwgdGhy
ZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJsb2NrcXVvdGVUYWcpCkBAIC0xMjAsMTQgKzEyMCwxNCBA
QCBzdGF0aWMgYm9vbCB0b2tlbkV4aXRzRm9yZWlnbkNvbnRlbnQoY29uc3QgQ29tcGFjdEhUTUxU
b2tlbiYgdG9rZW4pCiAKIHN0YXRpYyBib29sIHRva2VuRXhpdHNTVkcoY29uc3QgQ29tcGFjdEhU
TUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgY29uc3QgU3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0
YSgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZSh0YWdOYW1lLCBTVkdOYW1lczo6Zm9y
ZWlnbk9iamVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgY29uc3QgSFRNTElkZW50aWZpZXImIHRh
Z05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgcmV0dXJuIHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZyk7CiB9CiAKIHN0YXRpYyBib29sIHRva2VuRXhp
dHNNYXRoKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGNvcGllZCBmcm9tIEhUTUxFbGVtZW50U3RhY2s6OmlzTWF0aE1MVGV4dEludGVncmF0
aW9uUG9pbnQgYW5kIGNoYW5nZWQgdG8gdXNlIHRocmVhZFNhZmVNYXRjaC4KLSAgICBjb25zdCBT
dHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgY29uc3QgSFRNTElkZW50aWZpZXIm
IHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CiAgICAgcmV0dXJuIHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBNYXRoTUxOYW1lczo6bWlUYWcpCiAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBNYXRoTUxOYW1lczo6bW9UYWcpCiAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBNYXRoTUxOYW1lczo6bW5UYWcpCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBCYWNrZ3Jv
dW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZSgpCiBib29sIEJhY2tncm91bmRIVE1MUGFyc2Vy
OjpzaW11bGF0ZVRyZWVCdWlsZGVyKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQogewog
ICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZykgewotICAgICAgICBj
b25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgICAgIGNvbnN0IEhUTUxJ
ZGVudGlmaWVyJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwogICAgICAgICBpZiAodGhyZWFkU2Fm
ZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpzdmdUYWcpKQogICAgICAgICAgICAgbV9uYW1lc3Bh
Y2VTdGFjay5hcHBlbmQoU1ZHKTsKICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBNYXRoTUxOYW1lczo6bWF0aFRhZykpCkBAIC0yMjUsNyArMjI1LDcgQEAgYm9vbCBCYWNrZ3Jv
dW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRlcihjb25zdCBDb21wYWN0SFRNTFRva2Vu
JiB0b2tlbikKICAgICB9CiAKICAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5k
VGFnKSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKKyAg
ICAgICAgY29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CiAgICAg
ICAgIGlmICgobV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gU1ZHICYmIHRocmVhZFNhZmVNYXRj
aCh0YWdOYW1lLCBTVkdOYW1lczo6c3ZnVGFnKSkKICAgICAgICAgICAgIHx8IChtX25hbWVzcGFj
ZVN0YWNrLmxhc3QoKSA9PSBNYXRoTUwgJiYgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhN
TE5hbWVzOjptYXRoVGFnKSkKICAgICAgICAgICAgIHx8IChtX25hbWVzcGFjZVN0YWNrLmNvbnRh
aW5zKFNWRykgJiYgbV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gSFRNTCAmJiB0b2tlbkV4aXRz
U1ZHKHRva2VuKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1By
ZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRT
Y2FubmVyLmNwcAppbmRleCAwYzY2ZmMxYWM5ZmZhNjQ5ZjUzYmQxODQzNDYzYWIyNmU0MmZkZTUx
Li40Yzg2MGZiN2RjNmYwYjFlYzMyMDI0ZWYxNDk3MTk2ZjJiMzU2MjIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiQ1NTUHJlbG9hZFNjYW5uZXIuaCIKIAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKKyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjQsOCArNjUsOSBAQCB2b2lkIENTU1ByZWxvYWRTY2FubmVyOjpzY2FuKGNvbnN0IEhUTUxU
b2tlbjo6RGF0YVZlY3RvciYgZGF0YSwgUHJlbG9hZFJlcXVlc3RTdAogICAgIHNjYW5Db21tb24o
ZGF0YS5kYXRhKCksIGRhdGEuZGF0YSgpICsgZGF0YS5zaXplKCksIHJlcXVlc3RzKTsKIH0KIAot
dm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nhbihjb25zdCBTdHJpbmcmIGRhdGEsIFByZWxvYWRS
ZXF1ZXN0U3RyZWFtJiByZXF1ZXN0cykKK3ZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OnNjYW4oY29u
c3QgSFRNTElkZW50aWZpZXImIGlkZW50aWZpZXIsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJiByZXF1
ZXN0cykKIHsKKyAgICBjb25zdCBTdHJpbmcmIGRhdGEgPSBpZGVudGlmaWVyLmFzU3RyaW5nKCk7
CiAgICAgaWYgKGRhdGEuaXM4Qml0KCkpIHsKICAgICAgICAgY29uc3QgTENoYXIqIGJlZ2luID0g
ZGF0YS5jaGFyYWN0ZXJzOCgpOwogICAgICAgICBzY2FuQ29tbW9uKGJlZ2luLCBiZWdpbiArIGRh
dGEubGVuZ3RoKCksIHJlcXVlc3RzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9D
U1NQcmVsb2FkU2Nhbm5lci5oCmluZGV4IDRiNjliYzMyMzU2YjRjMjE4MTMzZmIxM2RjYTQyMTBm
YjNiNmY2YTQuLjljMjA5MTAxMWQwNzI3ZTllYzY1Zjk3ZDVjYTlkNzAwODVhNzE0NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuaApAQCAtMzMs
NiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEhUTUxJZGVudGlmaWVy
OworCiBjbGFzcyBDU1NQcmVsb2FkU2Nhbm5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q1NTUHJlbG9hZFNjYW5uZXIpOwogcHVibGljOgpAQCAtNDIsNyArNDQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXNldCgpOwogCiAgICAgdm9pZCBzY2FuKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZl
Y3RvciYsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJik7Ci0gICAgdm9pZCBzY2FuKGNvbnN0IFN0cmlu
ZyYsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJik7CisgICAgdm9pZCBzY2FuKGNvbnN0IEhUTUxJZGVu
dGlmaWVyJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIFN0
YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1M
VG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5j
cHAKaW5kZXggYjQ3ODhhMDdlNWEwNmYyMWQ0NTgwOWVhYWY3Yjk2ZWExOGQ4MTAzNC4uNzZkZGM2
YjZjNzZlM2E1NTBjNDZlY2VkMDY5MGM5MDhhMjUzZDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVBc0NvbXBhY3RIVE1MVG9rZW4gIHsK
ICAgICB1bnNpZ25lZCBiaXRmaWVsZHM7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgSFRNTElkZW50
aWZpZXIgZGF0YTsKICAgICBWZWN0b3I8QXR0cmlidXRlPiB2ZWN0b3I7CiAgICAgVGV4dFBvc2l0
aW9uIHRleHRQb3NpdGlvbjsKIH07CkBAIC01NiwxMCArNTYsMTAgQEAgQ29tcGFjdEhUTUxUb2tl
bjo6Q29tcGFjdEhUTUxUb2tlbihjb25zdCBIVE1MVG9rZW4qIHRva2VuLCBjb25zdCBUZXh0UG9z
aXRpb24mIHQKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOiB7Ci0gICAgICAgIG1fZGF0YSA9IFN0cmluZyh0
b2tlbi0+bmFtZSgpKTsKKyAgICAgICAgbV9kYXRhID0gSFRNTElkZW50aWZpZXIodG9rZW4tPm5h
bWUoKSwgTGlrZWx5OEJpdCk7CiAgICAgICAgIC8vIFRoZXJlIGlzIG9ubHkgMSBET0NUWVBFIHRv
a2VuIHBlciBkb2N1bWVudCwgc28gdG8gYXZvaWQgaW5jcmVhc2luZyB0aGUKICAgICAgICAgLy8g
c2l6ZSBvZiBDb21wYWN0SFRNTFRva2VuLCB3ZSBqdXN0IHVzZSB0aGUgbV9hdHRyaWJ1dGVzIHZl
Y3Rvci4KLSAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoU3RyaW5nKHRva2Vu
LT5wdWJsaWNJZGVudGlmaWVyKCkpLCBTdHJpbmcodG9rZW4tPnN5c3RlbUlkZW50aWZpZXIoKSkp
KTsKKyAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoSFRNTElkZW50aWZpZXIo
dG9rZW4tPnB1YmxpY0lkZW50aWZpZXIoKSwgTGlrZWx5OEJpdCksIFN0cmluZyh0b2tlbi0+c3lz
dGVtSWRlbnRpZmllcigpKSkpOwogICAgICAgICBtX2RvY3R5cGVGb3JjZXNRdWlya3MgPSB0b2tl
bi0+Zm9yY2VRdWlya3MoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNjgsMTkgKzY4LDE3
IEBAIENvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4oY29uc3QgSFRNTFRva2VuKiB0
b2tlbiwgY29uc3QgVGV4dFBvc2l0aW9uJiB0CiAgICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFn
OgogICAgICAgICBtX2F0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b2tlbi0+YXR0
cmlidXRlcygpLnNpemUoKSk7CiAgICAgICAgIGZvciAoVmVjdG9yPEhUTUxUb2tlbjo6QXR0cmli
dXRlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0b2tlbi0+YXR0cmlidXRlcygpLmJlZ2luKCk7IGl0
ICE9IHRva2VuLT5hdHRyaWJ1dGVzKCkuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBtX2F0dHJp
YnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShp
dC0+bmFtZSksIFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKGl0LT52YWx1ZSkpKTsK
KyAgICAgICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKEhUTUxJZGVudGlmaWVy
KGl0LT5uYW1lLCBMaWtlbHk4Qml0KSwgU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUo
aXQtPnZhbHVlKSkpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2ghCiAgICAgY2FzZSBIVE1MVG9r
ZW46OkVuZFRhZzoKICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2VuLT5zZWxmQ2xvc2luZygp
OwogICAgICAgICAvLyBGYWxsIHRocm91Z2ghCiAgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6
Ci0gICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKLSAgICAgICAgaWYgKHRva2VuLT5pc0Fs
bDhCaXREYXRhKCkpIHsKLSAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZzo6bWFrZThCaXRGcm9t
MTZCaXRTb3VyY2UodG9rZW4tPmRhdGEoKSk7Ci0gICAgICAgICAgICBtX2lzQWxsOEJpdERhdGEg
PSB0cnVlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tl
bi0+ZGF0YSgpKTsKKyAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOiB7CisgICAgICAgIG1f
aXNBbGw4Qml0RGF0YSA9IHRva2VuLT5pc0FsbDhCaXREYXRhKCk7CisgICAgICAgIG1fZGF0YSA9
IEhUTUxJZGVudGlmaWVyKHRva2VuLT5kYXRhKCksIHRva2VuLT5pc0FsbDhCaXREYXRhKCkgPyBG
b3JjZThCaXQgOiBGb3JjZTE2Qml0KTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGRlZmF1
bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaAppbmRleCBjODk4ZjZl
NmYxNGVjODkxMmIzMmZhMTMxNWM3NzhhODdlMzk4OTgzLi5mZmE0YWU0M2NkMWYzZWJmMGUzZWJj
M2U4OWVhNDk0ZjYyZjUzMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9Db21wYWN0SFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29t
cGFjdEhUTUxUb2tlbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoVEhSRUFERURf
SFRNTF9QQVJTRVIpCiAKKyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkhU
TUxUb2tlbi5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgpAQCAtNDQsMTMgKzQ1LDEzIEBAIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBD
b21wYWN0SFRNTFRva2VuIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgQXR0cmlidXRlIHsKLSAgICAg
ICAgQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAg
ICAgICAgQXR0cmlidXRlKGNvbnN0IEhUTUxJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogICAgICAgICAgICAgOiBuYW1lKG5hbWUpCiAgICAgICAgICAgICAsIHZhbHVlKHZh
bHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAg
ICAgSFRNTElkZW50aWZpZXIgbmFtZTsKICAgICAgICAgU3RyaW5nIHZhbHVlOwogICAgIH07CiAK
QEAgLTU5LDcgKzYwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKCkgY29uc3Q7CiAKICAgICBIVE1MVG9rZW46OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxUb2tlbjo6VHlwZT4obV90eXBlKTsgfQotICAgIGNvbnN0IFN0
cmluZyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIGNvbnN0IEhUTUxJZGVu
dGlmaWVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgYm9vbCBzZWxmQ2xv
c2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZkNsb3Npbmc7IH0KICAgICBib29sIGlzQWxsOEJp
dERhdGEoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsOEJpdERhdGE7IH0KICAgICBjb25zdCBWZWN0
b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsg
fQpAQCAtNjgsNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVyZSBpcyBvbmx5IDEgRE9D
VFlQRSB0b2tlbiBwZXIgZG9jdW1lbnQsIHNvIHRvIGF2b2lkIGluY3JlYXNpbmcgdGhlCiAgICAg
Ly8gc2l6ZSBvZiBDb21wYWN0SFRNTFRva2VuLCB3ZSBqdXN0IHVzZSB0aGUgbV9hdHRyaWJ1dGVz
IHZlY3Rvci4KLSAgICBjb25zdCBTdHJpbmcmIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2F0dHJpYnV0ZXNbMF0ubmFtZTsgfQorICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiBw
dWJsaWNJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzWzBdLm5hbWU7IH0K
ICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2F0
dHJpYnV0ZXNbMF0udmFsdWU7IH0KICAgICBib29sIGRvY3R5cGVGb3JjZXNRdWlya3MoKSBjb25z
dCB7IHJldHVybiBtX2RvY3R5cGVGb3JjZXNRdWlya3M7IH0KIApAQCAtNzgsNyArNzksNyBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1faXNBbGw4Qml0RGF0YSA6IDE7CiAgICAgdW5zaWduZWQg
bV9kb2N0eXBlRm9yY2VzUXVpcmtzOiAxOwogCi0gICAgU3RyaW5nIG1fZGF0YTsgLy8gIm5hbWUi
LCAiY2hhcmFjdGVycyIsIG9yICJkYXRhIiBkZXBlbmRpbmcgb24gbV90eXBlCisgICAgSFRNTElk
ZW50aWZpZXIgbV9kYXRhOyAvLyAibmFtZSIsICJjaGFyYWN0ZXJzIiwgb3IgImRhdGEiIGRlcGVu
ZGluZyBvbiBtX3R5cGUKICAgICBWZWN0b3I8QXR0cmlidXRlPiBtX2F0dHJpYnV0ZXM7CiAgICAg
VGV4dFBvc2l0aW9uIG1fdGV4dFBvc2l0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDZlYzE2ODYyZWM2OGM2MGRl
NTU1NGU0NTkyMGRmY2JjYzc4MDY1MTMuLjIxZmZkOGQ1ODEwYWM2OTYyYWY4ZmY0Mzg2OWNlYWQ2
NDBmMGQ1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVy
LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
SFRNTElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1M
UGFyc2VyU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlclRocmVhZC5oIgpAQCAtNjU3
LDYgKzY1OCw4IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpzdGFydEJhY2tncm91bmRQYXJz
ZXIoKQogICAgIEFTU0VSVCghbV9oYXZlQmFja2dyb3VuZFBhcnNlcik7CiAgICAgbV9oYXZlQmFj
a2dyb3VuZFBhcnNlciA9IHRydWU7CiAKKyAgICBIVE1MSWRlbnRpZmllcjo6aW5pdCgpOworCiAg
ICAgUmVmUHRyPFdlYWtSZWZlcmVuY2U8QmFja2dyb3VuZEhUTUxQYXJzZXI+ID4gcmVmZXJlbmNl
ID0gV2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5kSFRNTFBhcnNlcj46OmNyZWF0ZVVuYm91bmQoKTsK
ICAgICBtX2JhY2tncm91bmRQYXJzZXIgPSBXZWFrUHRyPEJhY2tncm91bmRIVE1MUGFyc2VyPihy
ZWZlcmVuY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
SWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmll
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGViNThhMGM4NTE0MTJmZjc5ZTU2MWEzY2VhNDA4NGNjNDlmNjRl
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVu
dGlmaWVyLmNwcApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgR09PR0xFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
VEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5oIgorCisj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCit0eXBl
ZGVmIHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5nSW1wbCo+IElkZW50aWZpZXJFbnRyeTsKK3R5
cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgVmVjdG9yPElkZW50aWZpZXJFbnRyeT4sIEFscmVhZHlI
YXNoZWQ+IElkZW50aWZpZXJUYWJsZTsKKworc3RhdGljIElkZW50aWZpZXJUYWJsZSYgaWRlbnRp
ZmllclRhYmxlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKElkZW50aWZpZXJUYWJsZSwg
dGFibGUsICgpKTsKKyAgICByZXR1cm4gdGFibGU7Cit9CisKK3Vuc2lnbmVkIEhUTUxJZGVudGlm
aWVyOjpmaW5kSW5kZXgoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkK
K3sKKyAgICB1bnNpZ25lZCBoYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaChjaGFyYWN0
ZXJzLCBsZW5ndGgpOworICAgIGNvbnN0IElkZW50aWZpZXJUYWJsZSYgdGFibGUgPSBpZGVudGlm
aWVyVGFibGUoKTsKKyAgICBBU1NFUlQoIXRhYmxlLmlzRW1wdHkoKSk7CisKKyAgICBJZGVudGlm
aWVyVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGFibGUuZmluZChoYXNoKTsKKyAgICBpZiAo
aXQgPT0gdGFibGUuZW5kKCkpCisgICAgICAgIHJldHVybiBpbnZhbGlkSW5kZXg7CisgICAgLy8g
RklYTUU6IEFkZCBBU1NFUlRTIGR1cmluZyBpbml0aWFsaXplKCkgdG8gY2F0Y2ggaGFzaCBjb2xs
aXNpb25zCisgICAgLy8gYW5kIG1ha2Ugc3VyZSB0aGF0IHdlIG5ldmVyIGhhdmUgdG8gaGl0IHRo
aXMgY2FzZS4KKyAgICBjb25zdCBWZWN0b3I8SWRlbnRpZmllckVudHJ5PiYgZW50cmllcyA9IGl0
LT52YWx1ZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJpZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgaWYgKGVxdWFsKGVudHJpZXNbaV0uc2Vjb25kLCBjaGFyYWN0ZXJzLCBsZW5n
dGgpKQorICAgICAgICAgICAgcmV0dXJuIGVudHJpZXNbaV0uZmlyc3Q7CisgICAgfQorICAgIHJl
dHVybiBpbnZhbGlkSW5kZXg7Cit9CisKK2NvbnN0IHVuc2lnbmVkIGtIVE1MTmFtZXNJbmRleE9m
ZnNldCA9IDA7Citjb25zdCB1bnNpZ25lZCBrSFRNTEF0dHJzSW5kZXhPZmZzZXQgPSAxMDAwOwor
Q09NUElMRV9BU1NFUlQoa0hUTUxBdHRyc0luZGV4T2Zmc2V0ID4gSFRNTFRhZ3NDb3VudCk7CisK
K3N0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lRm9ySW5kZXgodW5zaWduZWQgaW5kZXgp
Cit7CisgICAgdW5zaWduZWQgYWRqdXN0ZWRJbmRleDsKKyAgICBRdWFsaWZpZWROYW1lKiogbmFt
ZXM7CisgICAgaWYgKGluZGV4IDwga0hUTUxBdHRyc0luZGV4T2Zmc2V0KSB7CisgICAgICAgIEFT
U0VSVChrSFRNTE5hbWVzSW5kZXhPZmZzZXQgPCBpbmRleCA8IGtIVE1MTmFtZXNJbmRleE9mZnNl
dCArIEhUTUxUYWdzQ291bnQpOworICAgICAgICBhZGp1c3RlZEluZGV4ID0gaW5kZXggLSBrSFRN
TE5hbWVzSW5kZXhPZmZzZXQ7CisgICAgICAgIG5hbWVzID0gZ2V0SFRNTFRhZ3MoKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBBU1NFUlQoa0hUTUxBdHRyc0luZGV4T2Zmc2V0IDwgaW5kZXggPCBr
SFRNTEF0dHJzSW5kZXhPZmZzZXQgKyBIVE1MQXR0cnNDb3VudCk7CisgICAgICAgIGFkanVzdGVk
SW5kZXggPSBpbmRleCAtIGtIVE1MQXR0cnNJbmRleE9mZnNldDsKKyAgICAgICAgbmFtZXMgPSBn
ZXRIVE1MQXR0cnMoKTsKKyAgICB9CisgICAgcmV0dXJuICpuYW1lc1thZGp1c3RlZEluZGV4XTsK
K30KKworY29uc3QgU3RyaW5nJiBIVE1MSWRlbnRpZmllcjo6YXNTdHJpbmcoKSBjb25zdAorewor
ICAgIC8vIEZJWE1FOiBBU1NFUlQoaXNNYWluVGhyZWFkKCkpIG9uY2UgcG9zc2libGUuCisgICAg
aWYgKG1faW5kZXggIT0gaW52YWxpZEluZGV4KQorICAgICAgICByZXR1cm4gbmFtZUZvckluZGV4
KG1faW5kZXgpLmxvY2FsTmFtZSgpOworICAgIHJldHVybiBtX3N0cmluZzsKK30KKworc3RhdGlj
IHZvaWQgYWRkTmFtZXMoUXVhbGlmaWVkTmFtZSoqIG5hbWVzLCB1bnNpZ25lZCBuYW1lc0NvdW50
LCB1bnNpZ25lZCBpbmRleE9mZnNldCkKK3sKKyAgICBJZGVudGlmaWVyVGFibGUmIHRhYmxlID0g
aWRlbnRpZmllclRhYmxlKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5hbWVzQ291
bnQ7ICsraSkgeworICAgICAgICBTdHJpbmdJbXBsKiBuYW1lID0gbmFtZXNbaV0tPmxvY2FsTmFt
ZSgpLmltcGwoKTsKKyAgICAgICAgdW5zaWduZWQgaGFzaCA9IG5hbWUtPmhhc2goKTsKKyAgICAg
ICAgdGFibGUuZ2V0KGhhc2gpLmFwcGVuZChJZGVudGlmaWVyRW50cnkoaSArIGluZGV4T2Zmc2V0
LCBuYW1lKSk7CisgICAgfQorfQorCit2b2lkIEhUTUxJZGVudGlmaWVyOjppbml0KCkKK3sKKyAg
ICAvLyBUaGlzIGlzIHNhZmUgdG8gY2FsbCBmcm9tIGFueSB0aHJlYWQsIGJ1dCBtdXN0IGJlIGNh
bGxlZCBiZWZvcmUKKyAgICAvLyB1c2luZyBIVE1MSWRlbnRpZmllci4KKyAgICBzdGF0aWMgYm9v
bCBpc0luaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKGlzSW5pdGlhbGl6ZWQpCisgICAgICAg
IHJldHVybjsKKyAgICBpc0luaXRpYWxpemVkID0gdHJ1ZTsKKworICAgIGFkZE5hbWVzKGdldEhU
TUxUYWdzKCksIEhUTUxUYWdzQ291bnQsIGtIVE1MTmFtZXNJbmRleE9mZnNldCk7CisgICAgYWRk
TmFtZXMoZ2V0SFRNTEF0dHJzKCksIEhUTUxBdHRyc0NvdW50LCBrSFRNTEF0dHJzSW5kZXhPZmZz
ZXQpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZjQ0ZmE4YmI3MTQ1ZGIwYWIxMmZkNmM1OWI5ODNiYTI5YmI5N2MzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaApAQCAtMCwwICsx
LDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
R09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSFRNTElkZW50aWZpZXJfaAorI2RlZmluZSBIVE1MSWRlbnRpZmllcl9oCisKKyNp
ZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIENoYXJhY3RlcldpZHRo
IHsKKyAgICBMaWtlbHk4Qml0LAorICAgIEZvcmNlOEJpdCwKKyAgICBGb3JjZTE2Qml0Cit9Owor
CitjbGFzcyBIVE1MSWRlbnRpZmllciB7CitwdWJsaWM6CisgICAgSFRNTElkZW50aWZpZXIoKSA6
IG1faW5kZXgoMCkgeyB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+Cisg
ICAgSFRNTElkZW50aWZpZXIoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIHZl
Y3RvciwgQ2hhcmFjdGVyV2lkdGggd2lkdGgpCisgICAgICAgIDogbV9pbmRleChmaW5kSW5kZXgo
dmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSkpCisgICAgeworICAgICAgICBpZiAobV9pbmRl
eCAhPSBpbnZhbGlkSW5kZXgpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh3aWR0
aCA9PSBMaWtlbHk4Qml0KQorICAgICAgICAgICAgbV9zdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVh
dGU4Qml0SWZQb3NzaWJsZSh2ZWN0b3IpOworICAgICAgICBlbHNlIGlmICh3aWR0aCA9PSBGb3Jj
ZThCaXQpCisgICAgICAgICAgICBtX3N0cmluZyA9IFN0cmluZzo6bWFrZThCaXRGcm9tMTZCaXRT
b3VyY2UodmVjdG9yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9zdHJpbmcgPSBTdHJp
bmcodmVjdG9yKTsKKyAgICB9CisKKyAgICBib29sIGVxdWFscyh1bnNpZ25lZCBpbmRleCk7Cisg
ICAgLy8gUmVmZmluZyB0aGUgcmV0dXJuZWQgc3RyaW5nIGlzIG9ubHkgc2FmZSBmcm9tIHRoZSBt
YWluIHRocmVhZC4KKyAgICBjb25zdCBTdHJpbmcmIGFzU3RyaW5nKCkgY29uc3Q7CisKKyAgICBz
dGF0aWMgdm9pZCBpbml0KCk7CisKKyAgICBib29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVh
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgp
OyB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludmFsaWRJbmRleCA9
IC0xOworICAgIHN0YXRpYyB1bnNpZ25lZCBmaW5kSW5kZXgoY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBhIHVu
aW9uLgorICAgIHVuc2lnbmVkIG1faW5kZXg7CisgICAgU3RyaW5nIG1fc3RyaW5nOworfTsKKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXgg
OTQ0N2NmZTZjOGI3NzdkMDBmMThjZjg0ZDZjN2YyZmI0OTVkZDNhYi4uMjY0MzBlZDFlMjQwODg0
ZjM2ZDA0NDhjZjBjYjE4OWNiZDljNzNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCiAKICNpbmNsdWRlICJEZWNpbWFsLmgiCisjaW5jbHVkZSAiSFRN
TElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSA8bGlt
aXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC0yNzksNiArMjgwLDEwIEBAIGJv
b2wgcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2ln
bmVkJiB2YWx1ZSkKIAogc3RhdGljIGJvb2wgdGhyZWFkU2FmZUVxdWFsKFN0cmluZ0ltcGwqIGEs
IFN0cmluZ0ltcGwqIGIpCiB7CisgICAgaWYgKGEgPT0gYikKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgLy8gTm90ZTogVGhpcyBoYXNoIGNvbXBhcmUgaXMgbm90IGNvcnJlY3QgZm9yIGFsbCBw
b3NzaWJsZSBTdHJpbmdJbXBscywgYnV0CisgICAgLy8gc2luY2Ugd2UncmUgYWx3YXlzIGNvbXBh
cmluZyBhZ2FpbnN0IGNvbnN0YW50cywgaXQncyBPSy4KICAgICBpZiAoYS0+aGFzaCgpICE9IGIt
Pmhhc2goKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBTdHJpbmdIYXNoOjpl
cXVhbChhLCBiKTsKQEAgLTI5NCw0ICsyOTksOSBAQCBib29sIHRocmVhZFNhZmVNYXRjaChjb25z
dCBTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCiAgICAgcmV0
dXJuIHRocmVhZFNhZmVFcXVhbChsb2NhbE5hbWUuaW1wbCgpLCBxTmFtZS5sb2NhbE5hbWUoKS5p
bXBsKCkpOwogfQogCitib29sIHRocmVhZFNhZmVNYXRjaChjb25zdCBIVE1MSWRlbnRpZmllciYg
bG9jYWxOYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKK3sKKyAgICByZXR1cm4gdGhy
ZWFkU2FmZUVxdWFsKGxvY2FsTmFtZS5hc1N0cmluZygpLmltcGwoKSwgcU5hbWUubG9jYWxOYW1l
KCkuaW1wbCgpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlcklkaW9tcy5oCmluZGV4IGEwMzFlNDVjZmYzMjM1M2YxNDBhMGEyMDE5NWI5ZjlmMzYzMjdi
M2UuLmM1NDgzNDQ3ZmZmZDNmOTcwOGU0YjZiNmMzOTEyNzE4MDQ1Zjg5MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKQEAgLTMyLDYgKzMyLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGVjaW1hbDsKK2NsYXNzIEhUTUxJZGVu
dGlmaWVyOwogY2xhc3MgUXVhbGlmaWVkTmFtZTsKIAogLy8gU3BhY2UgY2hhcmFjdGVycyBhcyBk
ZWZpbmVkIGJ5IHRoZSBIVE1MIHNwZWNpZmljYXRpb24uCkBAIC05NCw2ICs5NSw3IEBAIGlubGlu
ZSBib29sIGlzTm90SFRNTFNwYWNlKFVDaGFyIGNoYXJhY3RlcikKIAogYm9vbCB0aHJlYWRTYWZl
TWF0Y2goY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIGJvb2wg
dGhyZWFkU2FmZU1hdGNoKGNvbnN0IFN0cmluZyYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKK2Jv
b2wgdGhyZWFkU2FmZU1hdGNoKGNvbnN0IEhUTUxJZGVudGlmaWVyJiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJl
bG9hZFNjYW5uZXIuY3BwCmluZGV4IGE1N2M1ZDM4NWUzZTcxZTcxYjU1MWQ0M2NhZWQwNzUyMzgz
NWIzMDYuLjIzY2NmYjhhZGZjMzNmNzM3ZWZmYmFiY2Y3NjYyNGM3ZWNmNmM3ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAt
NjMsNyArNjMsNyBAQCBUb2tlblByZWxvYWRTY2FubmVyOjpUYWdJZCBUb2tlblByZWxvYWRTY2Fu
bmVyOjp0YWdJZEZvcihjb25zdCBIVE1MVG9rZW46OkRhdGFWZQogICAgIHJldHVybiBVbmtub3du
VGFnSWQ7CiB9CiAKLVRva2VuUHJlbG9hZFNjYW5uZXI6OlRhZ0lkIFRva2VuUHJlbG9hZFNjYW5u
ZXI6OnRhZ0lkRm9yKGNvbnN0IFN0cmluZyYgdGFnTmFtZSkKK1Rva2VuUHJlbG9hZFNjYW5uZXI6
OlRhZ0lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnRhZ0lkRm9yKGNvbnN0IEhUTUxJZGVudGlmaWVy
JiB0YWdOYW1lKQogewogICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaW1nVGFnKSkK
ICAgICAgICAgcmV0dXJuIEltZ1RhZ0lkOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAg
ICAgICAgaWYgKG1fdGFnSWQgPj0gVW5rbm93blRhZ0lkKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBmb3IgKFZlY3RvcjxDb21wYWN0SFRNTFRva2VuOjpBdHRyaWJ1dGU+Ojpjb25zdF9p
dGVyYXRvciBpdGVyID0gYXR0cmlidXRlcy5iZWdpbigpOyBpdGVyICE9IGF0dHJpYnV0ZXMuZW5k
KCk7ICsraXRlcikKLSAgICAgICAgICAgIHByb2Nlc3NBdHRyaWJ1dGUoaXRlci0+bmFtZSwgaXRl
ci0+dmFsdWUpOworICAgICAgICAgICAgcHJvY2Vzc0F0dHJpYnV0ZShpdGVyLT5uYW1lLmFzU3Ry
aW5nKCksIGl0ZXItPnZhbHVlKTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaAppbmRleCA0N2E1NDQ0ZjEwZThjZmRk
NmJhNzBiMDZiZTA4ZjI1NDQwNGNjMDFiLi5kMmYyYzExODljMjVmNTBkYjI5MjNmZmIzNGE3MTI2
ZTQyN2EzYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJl
bG9hZFNjYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9h
ZFNjYW5uZXIuaApAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgogICAgIGlubGluZSB2b2lkIHNj
YW5Db21tb24oY29uc3QgVG9rZW4mLCBQcmVsb2FkUmVxdWVzdFN0cmVhbSYgcmVxdWVzdHMpOwog
CiAgICAgc3RhdGljIFRhZ0lkIHRhZ0lkRm9yKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlY3RvciYp
OwotICAgIHN0YXRpYyBUYWdJZCB0YWdJZEZvcihjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMg
VGFnSWQgdGFnSWRGb3IoY29uc3QgSFRNTElkZW50aWZpZXImKTsKIAogICAgIHN0YXRpYyBTdHJp
bmcgaW5pdGlhdG9yRm9yKFRhZ0lkKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191971</attachid>
            <date>2013-03-07 04:36:40 -0800</date>
            <delta_ts>2013-03-07 14:47:49 -0800</delta_ts>
            <desc>Updated version of Adam&apos;s HTMLIdentifier patch</desc>
            <filename>bug-107337-20130307043301.patch</filename>
            <type>text/plain</type>
            <size>27388</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk1NjlmOTI3NGJkZDJm
YzkwOGZmMDA4NzIyNTRhMmFlNTdmNDM3OS4uMTA1NDBmMjgxMmUzYWJmMmRlYzU4MmYwOTA1NWMz
ZjQ1ZTE1ZGQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYyIEBACiAyMDEzLTAzLTA3ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAorICAgICAgICBCYWNrZ3JvdW5kSFRNTFBhcnNl
ciBzaG91bGQgYmUgYWJsZSB0byBhdG9taXplIHdlbGwta25vd24gc3RyaW5ncworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQXRv
bWljSFRNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OkF0b21p
Y0hUTUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9rZW5FeGl0c0ZvcmVpZ25Db250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRva2VuRXhpdHNTVkcpOgorICAgICAgICAoV2ViQ29yZTo6dG9rZW5FeGl0
c01hdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnNpbXVsYXRl
VHJlZUJ1aWxkZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByZWxvYWRTY2FubmVyOjpzY2FuKToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDU1NQcmVsb2FkU2Nhbm5lcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvQ29tcGFj
dEhUTUxUb2tlbi5jcHA6CisgICAgICAgIChTYW1lU2l6ZUFzQ29tcGFjdEhUTUxUb2tlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wYWN0SFRNTFRva2VuOjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZSk6CisgICAgICAgIChBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFjdEhUTUxUb2tlbjo6ZGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpwdWJsaWNJZGVudGlmaWVyKToKKyAgICAg
ICAgKENvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0
QmFja2dyb3VuZFBhcnNlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6aWRlbnRp
ZmllclRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjpmaW5kSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6bmFtZUZvckluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJZGVudGlmaWVyOjphc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjphZGROYW1lcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6aW5pdCk6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKEhUTUxJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjpI
VE1MSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6aXNTYWZl
VG9TZW5kVG9Bbm90aGVyVGhyZWFkKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRocmVhZFNhZmVFcXVhbCk6CisgICAgICAg
IChXZWJDb3JlOjp0aHJlYWRTYWZlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OnRhZ0lkRm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcjo6cHJvY2Vzc0F0dHJpYnV0ZXMp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oOgorCisyMDEzLTAz
LTA3ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKwogICAgICAgICBkaXNwbGF5Om5v
bmUgaWZyYW1lcyBzaG91bGQgbm90IGJ1aWxkIHJlbmRlcmluZyB0cmVlcwogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MjM2CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCA0OWQ2OTNjNWVkNjdjYTZiMzgyOTI4YmFhMTMxZjRiMzE5NjBiMTE1Li5kMDc5ZWUy
ZjI2YTM4Njc5YjU5ODQwOWM5N2UxMjdmNzM5MjgwZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0z
NTA3LDYgKzM1MDcsOCBAQAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxFbnRpdHlUYWJs
ZS5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0
LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlz
dC5oJywKKyAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAnLAorICAg
ICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmgnLAogICAgICAgICAgICAgJ2h0
bWwvcGFyc2VyL0hUTUxJbnB1dFN0cmVhbS5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9I
VE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1M
TWV0YUNoYXJzZXRQYXJzZXIuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9BdG9taWNIVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21p
Y0hUTUxUb2tlbi5oCmluZGV4IDEzODM3MTAwNTVjNWVjZGQ0YmRlMDQ4ZWYzNjlhZmYxZmU5NGU4
ZmYuLjBhMjkwZjVhN2UzMTc4ODI3NmE2YTk3ZjNhNTEzMDNjMzdmOWM1ODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCkBAIC0xODksMTAgKzE4OSwx
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6Ci0gICAgICAgICAg
ICBtX25hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgICAgICAgICBtX25hbWUgPSB0b2tlbi5kYXRh
KCkuYXNTdHJpbmcoKTsKICAgICAgICAgICAgIG1fZG9jdHlwZURhdGEgPSBhZG9wdFB0cihuZXcg
RG9jdHlwZURhdGEoKSk7CiAgICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1B1YmxpY0lk
ZW50aWZpZXIgPSB0cnVlOwotICAgICAgICAgICAgYXBwZW5kKG1fZG9jdHlwZURhdGEtPm1fcHVi
bGljSWRlbnRpZmllciwgdG9rZW4ucHVibGljSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIGFw
cGVuZChtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXIsIHRva2VuLnB1YmxpY0lkZW50
aWZpZXIoKS5hc1N0cmluZygpKTsKICAgICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzU3lz
dGVtSWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgICAgICBhcHBlbmQobV9kb2N0eXBlRGF0YS0+
bV9zeXN0ZW1JZGVudGlmaWVyLCB0b2tlbi5zeXN0ZW1JZGVudGlmaWVyKCkpOwogICAgICAgICAg
ICAgbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJrcyA9IHRva2VuLmRvY3R5cGVGb3JjZXNRdWly
a3MoKTsKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEhUTUxUb2tl
bjo6U3RhcnRUYWc6CiAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eSh0b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgpKTsKICAgICAgICAgICAgIGZvciAoVmVjdG9y
PENvbXBhY3RIVE1MVG9rZW46OkF0dHJpYnV0ZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdG9rZW4u
YXR0cmlidXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytp
dCkgewotICAgICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgbmFtZShudWxsQXRvbSwgaXQtPm5h
bWUsIG51bGxBdG9tKTsKKyAgICAgICAgICAgICAgICBRdWFsaWZpZWROYW1lIG5hbWUobnVsbEF0
b20sIGl0LT5uYW1lLmFzU3RyaW5nKCksIG51bGxBdG9tKTsKICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyBOXjIgZm9yIHRoZSBudW1iZXIgb2YgYXR0cmlidXRlcy4KICAgICAgICAg
ICAgICAgICBpZiAoIWZpbmRBdHRyaWJ1dGVJblZlY3RvcihtX2F0dHJpYnV0ZXMsIG5hbWUpKQog
ICAgICAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShuYW1lLCBp
dC0+dmFsdWUpKTsKQEAgLTIxMCwxNyArMjEwLDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAv
LyBGYWxsIHRocm91Z2ghCiAgICAgICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6CiAgICAgICAg
ICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4uc2VsZkNsb3NpbmcoKTsKLSAgICAgICAgICAgIG1f
bmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAgICAgICAgIG1fbmFtZSA9IHRva2VuLmRhdGEoKS5h
c1N0cmluZygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSFRNTFRva2VuOjpD
b21tZW50OgotICAgICAgICAgICAgbV9kYXRhID0gdG9rZW4uZGF0YSgpOworICAgICAgICAgICAg
bV9kYXRhID0gdG9rZW4uZGF0YSgpLmFzU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxD
aGFyYWN0ZXJzID0gdG9rZW4uZGF0YSgpLmNoYXJhY3RlcnMoKTsKLSAgICAgICAgICAgIG1fZXh0
ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoID0gdG9rZW4uZGF0YSgpLmxlbmd0aCgpOworICAgICAgICBj
YXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOiB7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHN0
cmluZyA9IHRva2VuLmRhdGEoKS5hc1N0cmluZygpOworICAgICAgICAgICAgbV9leHRlcm5hbENo
YXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFjdGVycygpOworICAgICAgICAgICAgbV9leHRlcm5hbENo
YXJhY3RlcnNMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgICAgICAgICBtX2lzQWxsOEJp
dERhdGEgPSB0b2tlbi5pc0FsbDhCaXREYXRhKCk7CisgICAgICAgICAgICBBU1NFUlQoc3RyaW5n
LmlzOEJpdCgpID09IHRva2VuLmlzQWxsOEJpdERhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAppbmRleCA4NzQ0MzJl
NjAxY2E4ZjZjNzE4ZmU0MGM0OTIxZDkxOTYzZDFiMzZjLi45MWYzZmRiYzY2MzBhNDQ1MDcxNTZj
YjI5MTcxZDQyY2M3YzljZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyB2b2lk
IGNoZWNrVGhhdFhTU0luZm9zQXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBYU1NJ
bmZvU3RyZWFtJiB4CiBzdGF0aWMgYm9vbCB0b2tlbkV4aXRzRm9yZWlnbkNvbnRlbnQoY29uc3Qg
Q29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgY29waWVk
IGZyb20gSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50IGFuZCBj
aGFuZ2VkIHRvIHVzZSB0aHJlYWRTYWZlTWF0Y2guCi0gICAgY29uc3QgU3RyaW5nJiB0YWdOYW1l
ID0gdG9rZW4uZGF0YSgpOworICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lID0gdG9r
ZW4uZGF0YSgpOwogICAgIHJldHVybiB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgYlRhZykKICAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJpZ1RhZykKICAgICAgICAgfHwgdGhy
ZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJsb2NrcXVvdGVUYWcpCkBAIC0xMjAsMTQgKzEyMCwxNCBA
QCBzdGF0aWMgYm9vbCB0b2tlbkV4aXRzRm9yZWlnbkNvbnRlbnQoY29uc3QgQ29tcGFjdEhUTUxU
b2tlbiYgdG9rZW4pCiAKIHN0YXRpYyBib29sIHRva2VuRXhpdHNTVkcoY29uc3QgQ29tcGFjdEhU
TUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgY29uc3QgU3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0
YSgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZSh0YWdOYW1lLCBTVkdOYW1lczo6Zm9y
ZWlnbk9iamVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAgY29uc3QgSFRNTElkZW50aWZpZXImIHRh
Z05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgcmV0dXJuIHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZyk7CiB9CiAKIHN0YXRpYyBib29sIHRva2VuRXhp
dHNNYXRoKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGNvcGllZCBmcm9tIEhUTUxFbGVtZW50U3RhY2s6OmlzTWF0aE1MVGV4dEludGVncmF0
aW9uUG9pbnQgYW5kIGNoYW5nZWQgdG8gdXNlIHRocmVhZFNhZmVNYXRjaC4KLSAgICBjb25zdCBT
dHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgY29uc3QgSFRNTElkZW50aWZpZXIm
IHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CiAgICAgcmV0dXJuIHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBNYXRoTUxOYW1lczo6bWlUYWcpCiAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBNYXRoTUxOYW1lczo6bW9UYWcpCiAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBNYXRoTUxOYW1lczo6bW5UYWcpCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBCYWNrZ3Jv
dW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZSgpCiBib29sIEJhY2tncm91bmRIVE1MUGFyc2Vy
OjpzaW11bGF0ZVRyZWVCdWlsZGVyKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQogewog
ICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZykgewotICAgICAgICBj
b25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgICAgIGNvbnN0IEhUTUxJ
ZGVudGlmaWVyJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwogICAgICAgICBpZiAodGhyZWFkU2Fm
ZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpzdmdUYWcpKQogICAgICAgICAgICAgbV9uYW1lc3Bh
Y2VTdGFjay5hcHBlbmQoU1ZHKTsKICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBNYXRoTUxOYW1lczo6bWF0aFRhZykpCkBAIC0yMjUsNyArMjI1LDcgQEAgYm9vbCBCYWNrZ3Jv
dW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRlcihjb25zdCBDb21wYWN0SFRNTFRva2Vu
JiB0b2tlbikKICAgICB9CiAKICAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5k
VGFnKSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKKyAg
ICAgICAgY29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CiAgICAg
ICAgIGlmICgobV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gU1ZHICYmIHRocmVhZFNhZmVNYXRj
aCh0YWdOYW1lLCBTVkdOYW1lczo6c3ZnVGFnKSkKICAgICAgICAgICAgIHx8IChtX25hbWVzcGFj
ZVN0YWNrLmxhc3QoKSA9PSBNYXRoTUwgJiYgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhN
TE5hbWVzOjptYXRoVGFnKSkKICAgICAgICAgICAgIHx8IChtX25hbWVzcGFjZVN0YWNrLmNvbnRh
aW5zKFNWRykgJiYgbV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gSFRNTCAmJiB0b2tlbkV4aXRz
U1ZHKHRva2VuKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1By
ZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRT
Y2FubmVyLmNwcAppbmRleCAwYzY2ZmMxYWM5ZmZhNjQ5ZjUzYmQxODQzNDYzYWIyNmU0MmZkZTUx
Li40Yzg2MGZiN2RjNmYwYjFlYzMyMDI0ZWYxNDk3MTk2ZjJiMzU2MjIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiQ1NTUHJlbG9hZFNjYW5uZXIuaCIKIAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKKyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjQsOCArNjUsOSBAQCB2b2lkIENTU1ByZWxvYWRTY2FubmVyOjpzY2FuKGNvbnN0IEhUTUxU
b2tlbjo6RGF0YVZlY3RvciYgZGF0YSwgUHJlbG9hZFJlcXVlc3RTdAogICAgIHNjYW5Db21tb24o
ZGF0YS5kYXRhKCksIGRhdGEuZGF0YSgpICsgZGF0YS5zaXplKCksIHJlcXVlc3RzKTsKIH0KIAot
dm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nhbihjb25zdCBTdHJpbmcmIGRhdGEsIFByZWxvYWRS
ZXF1ZXN0U3RyZWFtJiByZXF1ZXN0cykKK3ZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OnNjYW4oY29u
c3QgSFRNTElkZW50aWZpZXImIGlkZW50aWZpZXIsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJiByZXF1
ZXN0cykKIHsKKyAgICBjb25zdCBTdHJpbmcmIGRhdGEgPSBpZGVudGlmaWVyLmFzU3RyaW5nKCk7
CiAgICAgaWYgKGRhdGEuaXM4Qml0KCkpIHsKICAgICAgICAgY29uc3QgTENoYXIqIGJlZ2luID0g
ZGF0YS5jaGFyYWN0ZXJzOCgpOwogICAgICAgICBzY2FuQ29tbW9uKGJlZ2luLCBiZWdpbiArIGRh
dGEubGVuZ3RoKCksIHJlcXVlc3RzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9D
U1NQcmVsb2FkU2Nhbm5lci5oCmluZGV4IDRiNjliYzMyMzU2YjRjMjE4MTMzZmIxM2RjYTQyMTBm
YjNiNmY2YTQuLjljMjA5MTAxMWQwNzI3ZTllYzY1Zjk3ZDVjYTlkNzAwODVhNzE0NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuaApAQCAtMzMs
NiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEhUTUxJZGVudGlmaWVy
OworCiBjbGFzcyBDU1NQcmVsb2FkU2Nhbm5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q1NTUHJlbG9hZFNjYW5uZXIpOwogcHVibGljOgpAQCAtNDIsNyArNDQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXNldCgpOwogCiAgICAgdm9pZCBzY2FuKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZl
Y3RvciYsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJik7Ci0gICAgdm9pZCBzY2FuKGNvbnN0IFN0cmlu
ZyYsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJik7CisgICAgdm9pZCBzY2FuKGNvbnN0IEhUTUxJZGVu
dGlmaWVyJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIFN0
YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1M
VG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5j
cHAKaW5kZXggYjQ3ODhhMDdlNWEwNmYyMWQ0NTgwOWVhYWY3Yjk2ZWExOGQ4MTAzNC4uNzZkZGM2
YjZjNzZlM2E1NTBjNDZlY2VkMDY5MGM5MDhhMjUzZDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVBc0NvbXBhY3RIVE1MVG9rZW4gIHsK
ICAgICB1bnNpZ25lZCBiaXRmaWVsZHM7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgSFRNTElkZW50
aWZpZXIgZGF0YTsKICAgICBWZWN0b3I8QXR0cmlidXRlPiB2ZWN0b3I7CiAgICAgVGV4dFBvc2l0
aW9uIHRleHRQb3NpdGlvbjsKIH07CkBAIC01NiwxMCArNTYsMTAgQEAgQ29tcGFjdEhUTUxUb2tl
bjo6Q29tcGFjdEhUTUxUb2tlbihjb25zdCBIVE1MVG9rZW4qIHRva2VuLCBjb25zdCBUZXh0UG9z
aXRpb24mIHQKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOiB7Ci0gICAgICAgIG1fZGF0YSA9IFN0cmluZyh0
b2tlbi0+bmFtZSgpKTsKKyAgICAgICAgbV9kYXRhID0gSFRNTElkZW50aWZpZXIodG9rZW4tPm5h
bWUoKSwgTGlrZWx5OEJpdCk7CiAgICAgICAgIC8vIFRoZXJlIGlzIG9ubHkgMSBET0NUWVBFIHRv
a2VuIHBlciBkb2N1bWVudCwgc28gdG8gYXZvaWQgaW5jcmVhc2luZyB0aGUKICAgICAgICAgLy8g
c2l6ZSBvZiBDb21wYWN0SFRNTFRva2VuLCB3ZSBqdXN0IHVzZSB0aGUgbV9hdHRyaWJ1dGVzIHZl
Y3Rvci4KLSAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoU3RyaW5nKHRva2Vu
LT5wdWJsaWNJZGVudGlmaWVyKCkpLCBTdHJpbmcodG9rZW4tPnN5c3RlbUlkZW50aWZpZXIoKSkp
KTsKKyAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoSFRNTElkZW50aWZpZXIo
dG9rZW4tPnB1YmxpY0lkZW50aWZpZXIoKSwgTGlrZWx5OEJpdCksIFN0cmluZyh0b2tlbi0+c3lz
dGVtSWRlbnRpZmllcigpKSkpOwogICAgICAgICBtX2RvY3R5cGVGb3JjZXNRdWlya3MgPSB0b2tl
bi0+Zm9yY2VRdWlya3MoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNjgsMTkgKzY4LDE3
IEBAIENvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4oY29uc3QgSFRNTFRva2VuKiB0
b2tlbiwgY29uc3QgVGV4dFBvc2l0aW9uJiB0CiAgICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFn
OgogICAgICAgICBtX2F0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b2tlbi0+YXR0
cmlidXRlcygpLnNpemUoKSk7CiAgICAgICAgIGZvciAoVmVjdG9yPEhUTUxUb2tlbjo6QXR0cmli
dXRlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0b2tlbi0+YXR0cmlidXRlcygpLmJlZ2luKCk7IGl0
ICE9IHRva2VuLT5hdHRyaWJ1dGVzKCkuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBtX2F0dHJp
YnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShp
dC0+bmFtZSksIFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKGl0LT52YWx1ZSkpKTsK
KyAgICAgICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKEhUTUxJZGVudGlmaWVy
KGl0LT5uYW1lLCBMaWtlbHk4Qml0KSwgU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUo
aXQtPnZhbHVlKSkpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2ghCiAgICAgY2FzZSBIVE1MVG9r
ZW46OkVuZFRhZzoKICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2VuLT5zZWxmQ2xvc2luZygp
OwogICAgICAgICAvLyBGYWxsIHRocm91Z2ghCiAgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6
Ci0gICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKLSAgICAgICAgaWYgKHRva2VuLT5pc0Fs
bDhCaXREYXRhKCkpIHsKLSAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZzo6bWFrZThCaXRGcm9t
MTZCaXRTb3VyY2UodG9rZW4tPmRhdGEoKSk7Ci0gICAgICAgICAgICBtX2lzQWxsOEJpdERhdGEg
PSB0cnVlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tl
bi0+ZGF0YSgpKTsKKyAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOiB7CisgICAgICAgIG1f
aXNBbGw4Qml0RGF0YSA9IHRva2VuLT5pc0FsbDhCaXREYXRhKCk7CisgICAgICAgIG1fZGF0YSA9
IEhUTUxJZGVudGlmaWVyKHRva2VuLT5kYXRhKCksIHRva2VuLT5pc0FsbDhCaXREYXRhKCkgPyBG
b3JjZThCaXQgOiBGb3JjZTE2Qml0KTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGRlZmF1
bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaAppbmRleCBjODk4ZjZl
NmYxNGVjODkxMmIzMmZhMTMxNWM3NzhhODdlMzk4OTgzLi5mZmE0YWU0M2NkMWYzZWJmMGUzZWJj
M2U4OWVhNDk0ZjYyZjUzMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9Db21wYWN0SFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29t
cGFjdEhUTUxUb2tlbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoVEhSRUFERURf
SFRNTF9QQVJTRVIpCiAKKyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkhU
TUxUb2tlbi5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgpAQCAtNDQsMTMgKzQ1LDEzIEBAIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBD
b21wYWN0SFRNTFRva2VuIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgQXR0cmlidXRlIHsKLSAgICAg
ICAgQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAg
ICAgICAgQXR0cmlidXRlKGNvbnN0IEhUTUxJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogICAgICAgICAgICAgOiBuYW1lKG5hbWUpCiAgICAgICAgICAgICAsIHZhbHVlKHZh
bHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAg
ICAgSFRNTElkZW50aWZpZXIgbmFtZTsKICAgICAgICAgU3RyaW5nIHZhbHVlOwogICAgIH07CiAK
QEAgLTU5LDcgKzYwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKCkgY29uc3Q7CiAKICAgICBIVE1MVG9rZW46OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxUb2tlbjo6VHlwZT4obV90eXBlKTsgfQotICAgIGNvbnN0IFN0
cmluZyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIGNvbnN0IEhUTUxJZGVu
dGlmaWVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgYm9vbCBzZWxmQ2xv
c2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZkNsb3Npbmc7IH0KICAgICBib29sIGlzQWxsOEJp
dERhdGEoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsOEJpdERhdGE7IH0KICAgICBjb25zdCBWZWN0
b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsg
fQpAQCAtNjgsNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVyZSBpcyBvbmx5IDEgRE9D
VFlQRSB0b2tlbiBwZXIgZG9jdW1lbnQsIHNvIHRvIGF2b2lkIGluY3JlYXNpbmcgdGhlCiAgICAg
Ly8gc2l6ZSBvZiBDb21wYWN0SFRNTFRva2VuLCB3ZSBqdXN0IHVzZSB0aGUgbV9hdHRyaWJ1dGVz
IHZlY3Rvci4KLSAgICBjb25zdCBTdHJpbmcmIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2F0dHJpYnV0ZXNbMF0ubmFtZTsgfQorICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiBw
dWJsaWNJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzWzBdLm5hbWU7IH0K
ICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2F0
dHJpYnV0ZXNbMF0udmFsdWU7IH0KICAgICBib29sIGRvY3R5cGVGb3JjZXNRdWlya3MoKSBjb25z
dCB7IHJldHVybiBtX2RvY3R5cGVGb3JjZXNRdWlya3M7IH0KIApAQCAtNzgsNyArNzksNyBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1faXNBbGw4Qml0RGF0YSA6IDE7CiAgICAgdW5zaWduZWQg
bV9kb2N0eXBlRm9yY2VzUXVpcmtzOiAxOwogCi0gICAgU3RyaW5nIG1fZGF0YTsgLy8gIm5hbWUi
LCAiY2hhcmFjdGVycyIsIG9yICJkYXRhIiBkZXBlbmRpbmcgb24gbV90eXBlCisgICAgSFRNTElk
ZW50aWZpZXIgbV9kYXRhOyAvLyAibmFtZSIsICJjaGFyYWN0ZXJzIiwgb3IgImRhdGEiIGRlcGVu
ZGluZyBvbiBtX3R5cGUKICAgICBWZWN0b3I8QXR0cmlidXRlPiBtX2F0dHJpYnV0ZXM7CiAgICAg
VGV4dFBvc2l0aW9uIG1fdGV4dFBvc2l0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDZlYzE2ODYyZWM2OGM2MGRl
NTU1NGU0NTkyMGRmY2JjYzc4MDY1MTMuLjIxZmZkOGQ1ODEwYWM2OTYyYWY4ZmY0Mzg2OWNlYWQ2
NDBmMGQ1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVy
LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
SFRNTElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1M
UGFyc2VyU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlclRocmVhZC5oIgpAQCAtNjU3
LDYgKzY1OCw4IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpzdGFydEJhY2tncm91bmRQYXJz
ZXIoKQogICAgIEFTU0VSVCghbV9oYXZlQmFja2dyb3VuZFBhcnNlcik7CiAgICAgbV9oYXZlQmFj
a2dyb3VuZFBhcnNlciA9IHRydWU7CiAKKyAgICBIVE1MSWRlbnRpZmllcjo6aW5pdCgpOworCiAg
ICAgUmVmUHRyPFdlYWtSZWZlcmVuY2U8QmFja2dyb3VuZEhUTUxQYXJzZXI+ID4gcmVmZXJlbmNl
ID0gV2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5kSFRNTFBhcnNlcj46OmNyZWF0ZVVuYm91bmQoKTsK
ICAgICBtX2JhY2tncm91bmRQYXJzZXIgPSBXZWFrUHRyPEJhY2tncm91bmRIVE1MUGFyc2VyPihy
ZWZlcmVuY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
SWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmll
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDFmNjdmN2RjNDdjM2U1NWNjY2U3MDFhZDBjOGQ1YjM3MTRjMDlk
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVu
dGlmaWVyLmNwcApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgR09PR0xFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
VEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5oIgorCisj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCit0eXBl
ZGVmIHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5nSW1wbCo+IElkZW50aWZpZXJFbnRyeTsKK3R5
cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgVmVjdG9yPElkZW50aWZpZXJFbnRyeT4sIEFscmVhZHlI
YXNoZWQ+IElkZW50aWZpZXJUYWJsZTsKKworc3RhdGljIElkZW50aWZpZXJUYWJsZSYgaWRlbnRp
ZmllclRhYmxlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKElkZW50aWZpZXJUYWJsZSwg
dGFibGUsICgpKTsKKyAgICByZXR1cm4gdGFibGU7Cit9CisKK3Vuc2lnbmVkIEhUTUxJZGVudGlm
aWVyOjpmaW5kSW5kZXgoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkK
K3sKKyAgICB1bnNpZ25lZCBoYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaChjaGFyYWN0
ZXJzLCBsZW5ndGgpOworICAgIGNvbnN0IElkZW50aWZpZXJUYWJsZSYgdGFibGUgPSBpZGVudGlm
aWVyVGFibGUoKTsKKyAgICBBU1NFUlQoIXRhYmxlLmlzRW1wdHkoKSk7CisKKyAgICBJZGVudGlm
aWVyVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGFibGUuZmluZChoYXNoKTsKKyAgICBpZiAo
aXQgPT0gdGFibGUuZW5kKCkpCisgICAgICAgIHJldHVybiBpbnZhbGlkSW5kZXg7CisgICAgLy8g
RklYTUU6IEFkZCBBU1NFUlRTIGR1cmluZyBpbml0aWFsaXplKCkgdG8gY2F0Y2ggaGFzaCBjb2xs
aXNpb25zCisgICAgLy8gYW5kIG1ha2Ugc3VyZSB0aGF0IHdlIG5ldmVyIGhhdmUgdG8gaGl0IHRo
aXMgY2FzZS4KKyAgICBjb25zdCBWZWN0b3I8SWRlbnRpZmllckVudHJ5PiYgZW50cmllcyA9IGl0
LT52YWx1ZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJpZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgaWYgKGVxdWFsKGVudHJpZXNbaV0uc2Vjb25kLCBjaGFyYWN0ZXJzLCBsZW5n
dGgpKQorICAgICAgICAgICAgcmV0dXJuIGVudHJpZXNbaV0uZmlyc3Q7CisgICAgfQorICAgIHJl
dHVybiBpbnZhbGlkSW5kZXg7Cit9CisKK2NvbnN0IHVuc2lnbmVkIGtIVE1MTmFtZXNJbmRleE9m
ZnNldCA9IDA7Citjb25zdCB1bnNpZ25lZCBrSFRNTEF0dHJzSW5kZXhPZmZzZXQgPSAxMDAwOwor
Q09NUElMRV9BU1NFUlQoa0hUTUxBdHRyc0luZGV4T2Zmc2V0ID4gSFRNTFRhZ3NDb3VudCwga0hU
TUxBdHRyc0luZGV4T2Zmc2V0X3Nob3VsZF9iZV9sYXJnZXJfdGhhbl9IVE1MVGFnc0NvdW50KTsK
Kworc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWVGb3JJbmRleCh1bnNpZ25lZCBpbmRl
eCkKK3sKKyAgICB1bnNpZ25lZCBhZGp1c3RlZEluZGV4OworICAgIFF1YWxpZmllZE5hbWUqKiBu
YW1lczsKKyAgICBpZiAoaW5kZXggPCBrSFRNTEF0dHJzSW5kZXhPZmZzZXQpIHsKKyAgICAgICAg
QVNTRVJUKGtIVE1MTmFtZXNJbmRleE9mZnNldCA8IGluZGV4KTsKKyAgICAgICAgQVNTRVJUKGlu
ZGV4IDwga0hUTUxOYW1lc0luZGV4T2Zmc2V0ICsgSFRNTFRhZ3NDb3VudCk7CisgICAgICAgIGFk
anVzdGVkSW5kZXggPSBpbmRleCAtIGtIVE1MTmFtZXNJbmRleE9mZnNldDsKKyAgICAgICAgbmFt
ZXMgPSBnZXRIVE1MVGFncygpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChpbmRleCA8
IGtIVE1MQXR0cnNJbmRleE9mZnNldCArIEhUTUxBdHRyc0NvdW50KTsKKyAgICAgICAgYWRqdXN0
ZWRJbmRleCA9IGluZGV4IC0ga0hUTUxBdHRyc0luZGV4T2Zmc2V0OworICAgICAgICBuYW1lcyA9
IGdldEhUTUxBdHRycygpOworICAgIH0KKyAgICByZXR1cm4gKm5hbWVzW2FkanVzdGVkSW5kZXhd
OworfQorCitjb25zdCBTdHJpbmcmIEhUTUxJZGVudGlmaWVyOjphc1N0cmluZygpIGNvbnN0Cit7
CisgICAgLy8gRklYTUU6IEFTU0VSVChpc01haW5UaHJlYWQoKSkgb25jZSBwb3NzaWJsZS4KKyAg
ICBpZiAobV9pbmRleCAhPSBpbnZhbGlkSW5kZXgpCisgICAgICAgIHJldHVybiBuYW1lRm9ySW5k
ZXgobV9pbmRleCkubG9jYWxOYW1lKCk7CisgICAgcmV0dXJuIG1fc3RyaW5nOworfQorCitzdGF0
aWMgdm9pZCBhZGROYW1lcyhRdWFsaWZpZWROYW1lKiogbmFtZXMsIHVuc2lnbmVkIG5hbWVzQ291
bnQsIHVuc2lnbmVkIGluZGV4T2Zmc2V0KQoreworICAgIElkZW50aWZpZXJUYWJsZSYgdGFibGUg
PSBpZGVudGlmaWVyVGFibGUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmFtZXND
b3VudDsgKytpKSB7CisgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBuYW1lc1tpXS0+bG9jYWxO
YW1lKCkuaW1wbCgpOworICAgICAgICB1bnNpZ25lZCBoYXNoID0gbmFtZS0+aGFzaCgpOworICAg
ICAgICB0YWJsZS5nZXQoaGFzaCkuYXBwZW5kKElkZW50aWZpZXJFbnRyeShpICsgaW5kZXhPZmZz
ZXQsIG5hbWUpKTsKKyAgICB9Cit9CisKK3ZvaWQgSFRNTElkZW50aWZpZXI6OmluaXQoKQorewor
ICAgIC8vIFRoaXMgaXMgc2FmZSB0byBjYWxsIGZyb20gYW55IHRocmVhZCwgYnV0IG11c3QgYmUg
Y2FsbGVkIGJlZm9yZQorICAgIC8vIHVzaW5nIEhUTUxJZGVudGlmaWVyLgorICAgIHN0YXRpYyBi
b29sIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoaXNJbml0aWFsaXplZCkKKyAgICAg
ICAgcmV0dXJuOworICAgIGlzSW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgYWRkTmFtZXMoZ2V0
SFRNTFRhZ3MoKSwgSFRNTFRhZ3NDb3VudCwga0hUTUxOYW1lc0luZGV4T2Zmc2V0KTsKKyAgICBh
ZGROYW1lcyhnZXRIVE1MQXR0cnMoKSwgSFRNTEF0dHJzQ291bnQsIGtIVE1MQXR0cnNJbmRleE9m
ZnNldCk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZmNDRmYThiYjcxNDVkYjBhYjEyZmQ2YzU5Yjk4M2JhMjliYjk3YzMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5oCkBAIC0wLDAg
KzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlLCBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBIVE1MSWRlbnRpZmllcl9oCisjZGVmaW5lIEhUTUxJZGVudGlmaWVyX2gKKwor
I2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gQ2hhcmFjdGVyV2lk
dGggeworICAgIExpa2VseThCaXQsCisgICAgRm9yY2U4Qml0LAorICAgIEZvcmNlMTZCaXQKK307
CisKK2NsYXNzIEhUTUxJZGVudGlmaWVyIHsKK3B1YmxpYzoKKyAgICBIVE1MSWRlbnRpZmllcigp
IDogbV9pbmRleCgwKSB7IH0KKworICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4K
KyAgICBIVE1MSWRlbnRpZmllcihjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYg
dmVjdG9yLCBDaGFyYWN0ZXJXaWR0aCB3aWR0aCkKKyAgICAgICAgOiBtX2luZGV4KGZpbmRJbmRl
eCh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKSkKKyAgICB7CisgICAgICAgIGlmIChtX2lu
ZGV4ICE9IGludmFsaWRJbmRleCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHdp
ZHRoID09IExpa2VseThCaXQpCisgICAgICAgICAgICBtX3N0cmluZyA9IFN0cmluZ0ltcGw6OmNy
ZWF0ZThCaXRJZlBvc3NpYmxlKHZlY3Rvcik7CisgICAgICAgIGVsc2UgaWYgKHdpZHRoID09IEZv
cmNlOEJpdCkKKyAgICAgICAgICAgIG1fc3RyaW5nID0gU3RyaW5nOjptYWtlOEJpdEZyb20xNkJp
dFNvdXJjZSh2ZWN0b3IpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3N0cmluZyA9IFN0
cmluZyh2ZWN0b3IpOworICAgIH0KKworICAgIGJvb2wgZXF1YWxzKHVuc2lnbmVkIGluZGV4KTsK
KyAgICAvLyBSZWZmaW5nIHRoZSByZXR1cm5lZCBzdHJpbmcgaXMgb25seSBzYWZlIGZyb20gdGhl
IG1haW4gdGhyZWFkLgorICAgIGNvbnN0IFN0cmluZyYgYXNTdHJpbmcoKSBjb25zdDsKKworICAg
IHN0YXRpYyB2b2lkIGluaXQoKTsKKworICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhy
ZWFkKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFk
KCk7IH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZEluZGV4
ID0gLTE7CisgICAgc3RhdGljIHVuc2lnbmVkIGZpbmRJbmRleChjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKworICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGEg
dW5pb24uCisgICAgdW5zaWduZWQgbV9pbmRleDsKKyAgICBTdHJpbmcgbV9zdHJpbmc7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRl
eCA5NDQ3Y2ZlNmM4Yjc3N2QwMGYxOGNmODRkNmM3ZjJmYjQ5NWRkM2FiLi4yNjQzMGVkMWUyNDA4
ODRmMzZkMDQ0OGNmMGNiMTg5Y2JkOWM3M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
IkhUTUxQYXJzZXJJZGlvbXMuaCIKIAogI2luY2x1ZGUgIkRlY2ltYWwuaCIKKyNpbmNsdWRlICJI
VE1MSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlIDxs
aW1pdHM+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTI3OSw2ICsyODAsMTAgQEAg
Ym9vbCBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5z
aWduZWQmIHZhbHVlKQogCiBzdGF0aWMgYm9vbCB0aHJlYWRTYWZlRXF1YWwoU3RyaW5nSW1wbCog
YSwgU3RyaW5nSW1wbCogYikKIHsKKyAgICBpZiAoYSA9PSBiKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAvLyBOb3RlOiBUaGlzIGhhc2ggY29tcGFyZSBpcyBub3QgY29ycmVjdCBmb3IgYWxs
IHBvc3NpYmxlIFN0cmluZ0ltcGxzLCBidXQKKyAgICAvLyBzaW5jZSB3ZSdyZSBhbHdheXMgY29t
cGFyaW5nIGFnYWluc3QgY29uc3RhbnRzLCBpdCdzIE9LLgogICAgIGlmIChhLT5oYXNoKCkgIT0g
Yi0+aGFzaCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIFN0cmluZ0hhc2g6
OmVxdWFsKGEsIGIpOwpAQCAtMjk0LDQgKzI5OSw5IEBAIGJvb2wgdGhyZWFkU2FmZU1hdGNoKGNv
bnN0IFN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKICAgICBy
ZXR1cm4gdGhyZWFkU2FmZUVxdWFsKGxvY2FsTmFtZS5pbXBsKCksIHFOYW1lLmxvY2FsTmFtZSgp
LmltcGwoKSk7CiB9CiAKK2Jvb2wgdGhyZWFkU2FmZU1hdGNoKGNvbnN0IEhUTUxJZGVudGlmaWVy
JiBsb2NhbE5hbWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQoreworICAgIHJldHVybiB0
aHJlYWRTYWZlRXF1YWwobG9jYWxOYW1lLmFzU3RyaW5nKCkuaW1wbCgpLCBxTmFtZS5sb2NhbE5h
bWUoKS5pbXBsKCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmgKaW5kZXggYTAzMWU0NWNmZjMyMzUzZjE0MGEwYTIwMTk1YjlmOWYzNjMy
N2IzZS4uYzU0ODM0NDdmZmZkM2Y5NzA4ZTRiNmI2YzM5MTI3MTgwNDVmODkzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApAQCAtMzIsNiArMzIs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWNpbWFsOworY2xhc3MgSFRNTElk
ZW50aWZpZXI7CiBjbGFzcyBRdWFsaWZpZWROYW1lOwogCiAvLyBTcGFjZSBjaGFyYWN0ZXJzIGFz
IGRlZmluZWQgYnkgdGhlIEhUTUwgc3BlY2lmaWNhdGlvbi4KQEAgLTk0LDYgKzk1LDcgQEAgaW5s
aW5lIGJvb2wgaXNOb3RIVE1MU3BhY2UoVUNoYXIgY2hhcmFjdGVyKQogCiBib29sIHRocmVhZFNh
ZmVNYXRjaChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogYm9v
bCB0aHJlYWRTYWZlTWF0Y2goY29uc3QgU3RyaW5nJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
Ym9vbCB0aHJlYWRTYWZlTWF0Y2goY29uc3QgSFRNTElkZW50aWZpZXImLCBjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
cmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggYTU3YzVkMzg1ZTNlNzFlNzFiNTUxZDQzY2FlZDA3NTIz
ODM1YjMwNi4uMjNjY2ZiOGFkZmMzM2Y3MzdlZmZiYWJjZjc2NjI0YzdlY2Y2YzdkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIFRva2VuUHJlbG9hZFNjYW5uZXI6OlRhZ0lkIFRva2VuUHJlbG9hZFNj
YW5uZXI6OnRhZ0lkRm9yKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlCiAgICAgcmV0dXJuIFVua25v
d25UYWdJZDsKIH0KIAotVG9rZW5QcmVsb2FkU2Nhbm5lcjo6VGFnSWQgVG9rZW5QcmVsb2FkU2Nh
bm5lcjo6dGFnSWRGb3IoY29uc3QgU3RyaW5nJiB0YWdOYW1lKQorVG9rZW5QcmVsb2FkU2Nhbm5l
cjo6VGFnSWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6dGFnSWRGb3IoY29uc3QgSFRNTElkZW50aWZp
ZXImIHRhZ05hbWUpCiB7CiAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBpbWdUYWcp
KQogICAgICAgICByZXR1cm4gSW1nVGFnSWQ7CkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgog
ICAgICAgICBpZiAobV90YWdJZCA+PSBVbmtub3duVGFnSWQpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGZvciAoVmVjdG9yPENvbXBhY3RIVE1MVG9rZW46OkF0dHJpYnV0ZT46OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBhdHRyaWJ1dGVzLmJlZ2luKCk7IGl0ZXIgIT0gYXR0cmlidXRlcy5l
bmQoKTsgKytpdGVyKQotICAgICAgICAgICAgcHJvY2Vzc0F0dHJpYnV0ZShpdGVyLT5uYW1lLCBp
dGVyLT52YWx1ZSk7CisgICAgICAgICAgICBwcm9jZXNzQXR0cmlidXRlKGl0ZXItPm5hbWUuYXNT
dHJpbmcoKSwgaXRlci0+dmFsdWUpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oCmluZGV4IDQ3YTU0NDRmMTBlOGNm
ZGQ2YmE3MGIwNmJlMDhmMjU0NDA0Y2MwMWIuLmQyZjJjMTE4OWMyNWY1MGRiMjkyM2ZmYjM0YTcx
MjZlNDI3YTNiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
cmVsb2FkU2Nhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5oCkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgaW5saW5lIHZvaWQg
c2NhbkNvbW1vbihjb25zdCBUb2tlbiYsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJiByZXF1ZXN0cyk7
CiAKICAgICBzdGF0aWMgVGFnSWQgdGFnSWRGb3IoY29uc3QgSFRNTFRva2VuOjpEYXRhVmVjdG9y
Jik7Ci0gICAgc3RhdGljIFRhZ0lkIHRhZ0lkRm9yKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRp
YyBUYWdJZCB0YWdJZEZvcihjb25zdCBIVE1MSWRlbnRpZmllciYpOwogCiAgICAgc3RhdGljIFN0
cmluZyBpbml0aWF0b3JGb3IoVGFnSWQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192087</attachid>
            <date>2013-03-07 14:47:52 -0800</date>
            <delta_ts>2013-03-07 18:35:03 -0800</delta_ts>
            <desc>updated, and more busticated version</desc>
            <filename>bug-107337-20130307144404.patch</filename>
            <type>text/plain</type>
            <size>35652</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk1NjlmOTI3NGJkZDJm
YzkwOGZmMDA4NzIyNTRhMmFlNTdmNDM3OS4uMTA1NDBmMjgxMmUzYWJmMmRlYzU4MmYwOTA1NWMz
ZjQ1ZTE1ZGQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYyIEBACiAyMDEzLTAzLTA3ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAorICAgICAgICBCYWNrZ3JvdW5kSFRNTFBhcnNl
ciBzaG91bGQgYmUgYWJsZSB0byBhdG9taXplIHdlbGwta25vd24gc3RyaW5ncworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQXRv
bWljSFRNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OkF0b21p
Y0hUTUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9rZW5FeGl0c0ZvcmVpZ25Db250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRva2VuRXhpdHNTVkcpOgorICAgICAgICAoV2ViQ29yZTo6dG9rZW5FeGl0
c01hdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnNpbXVsYXRl
VHJlZUJ1aWxkZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByZWxvYWRTY2FubmVyOjpzY2FuKToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDU1NQcmVsb2FkU2Nhbm5lcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvQ29tcGFj
dEhUTUxUb2tlbi5jcHA6CisgICAgICAgIChTYW1lU2l6ZUFzQ29tcGFjdEhUTUxUb2tlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wYWN0SFRNTFRva2VuOjpBdHRyaWJ1dGU6OkF0dHJpYnV0ZSk6CisgICAgICAgIChBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFjdEhUTUxUb2tlbjo6ZGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpwdWJsaWNJZGVudGlmaWVyKToKKyAgICAg
ICAgKENvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0
QmFja2dyb3VuZFBhcnNlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6aWRlbnRp
ZmllclRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjpmaW5kSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6bmFtZUZvckluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJZGVudGlmaWVyOjphc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjphZGROYW1lcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6aW5pdCk6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTElkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKEhUTUxJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjpI
VE1MSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6aXNTYWZl
VG9TZW5kVG9Bbm90aGVyVGhyZWFkKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRocmVhZFNhZmVFcXVhbCk6CisgICAgICAg
IChXZWJDb3JlOjp0aHJlYWRTYWZlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OnRhZ0lkRm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcjo6cHJvY2Vzc0F0dHJpYnV0ZXMp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oOgorCisyMDEzLTAz
LTA3ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKwogICAgICAgICBkaXNwbGF5Om5v
bmUgaWZyYW1lcyBzaG91bGQgbm90IGJ1aWxkIHJlbmRlcmluZyB0cmVlcwogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MjM2CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCA0OWQ2OTNjNWVkNjdjYTZiMzgyOTI4YmFhMTMxZjRiMzE5NjBiMTE1Li5kMDc5ZWUy
ZjI2YTM4Njc5YjU5ODQwOWM5N2UxMjdmNzM5MjgwZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0z
NTA3LDYgKzM1MDcsOCBAQAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxFbnRpdHlUYWJs
ZS5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0
LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlz
dC5oJywKKyAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAnLAorICAg
ICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmgnLAogICAgICAgICAgICAgJ2h0
bWwvcGFyc2VyL0hUTUxJbnB1dFN0cmVhbS5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9I
VE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1M
TWV0YUNoYXJzZXRQYXJzZXIuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9BdG9taWNIVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21p
Y0hUTUxUb2tlbi5oCmluZGV4IDEzODM3MTAwNTVjNWVjZGQ0YmRlMDQ4ZWYzNjlhZmYxZmU5NGU4
ZmYuLjBhMjkwZjVhN2UzMTc4ODI3NmE2YTk3ZjNhNTEzMDNjMzdmOWM1ODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCkBAIC0xODksMTAgKzE4OSwx
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6Ci0gICAgICAgICAg
ICBtX25hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgICAgICAgICBtX25hbWUgPSB0b2tlbi5kYXRh
KCkuYXNTdHJpbmcoKTsKICAgICAgICAgICAgIG1fZG9jdHlwZURhdGEgPSBhZG9wdFB0cihuZXcg
RG9jdHlwZURhdGEoKSk7CiAgICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1B1YmxpY0lk
ZW50aWZpZXIgPSB0cnVlOwotICAgICAgICAgICAgYXBwZW5kKG1fZG9jdHlwZURhdGEtPm1fcHVi
bGljSWRlbnRpZmllciwgdG9rZW4ucHVibGljSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIGFw
cGVuZChtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXIsIHRva2VuLnB1YmxpY0lkZW50
aWZpZXIoKS5hc1N0cmluZygpKTsKICAgICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzU3lz
dGVtSWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgICAgICBhcHBlbmQobV9kb2N0eXBlRGF0YS0+
bV9zeXN0ZW1JZGVudGlmaWVyLCB0b2tlbi5zeXN0ZW1JZGVudGlmaWVyKCkpOwogICAgICAgICAg
ICAgbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJrcyA9IHRva2VuLmRvY3R5cGVGb3JjZXNRdWly
a3MoKTsKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEhUTUxUb2tl
bjo6U3RhcnRUYWc6CiAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eSh0b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgpKTsKICAgICAgICAgICAgIGZvciAoVmVjdG9y
PENvbXBhY3RIVE1MVG9rZW46OkF0dHJpYnV0ZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdG9rZW4u
YXR0cmlidXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytp
dCkgewotICAgICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgbmFtZShudWxsQXRvbSwgaXQtPm5h
bWUsIG51bGxBdG9tKTsKKyAgICAgICAgICAgICAgICBRdWFsaWZpZWROYW1lIG5hbWUobnVsbEF0
b20sIGl0LT5uYW1lLmFzU3RyaW5nKCksIG51bGxBdG9tKTsKICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyBOXjIgZm9yIHRoZSBudW1iZXIgb2YgYXR0cmlidXRlcy4KICAgICAgICAg
ICAgICAgICBpZiAoIWZpbmRBdHRyaWJ1dGVJblZlY3RvcihtX2F0dHJpYnV0ZXMsIG5hbWUpKQog
ICAgICAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShuYW1lLCBp
dC0+dmFsdWUpKTsKQEAgLTIxMCwxNyArMjEwLDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAv
LyBGYWxsIHRocm91Z2ghCiAgICAgICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6CiAgICAgICAg
ICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4uc2VsZkNsb3NpbmcoKTsKLSAgICAgICAgICAgIG1f
bmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAgICAgICAgIG1fbmFtZSA9IHRva2VuLmRhdGEoKS5h
c1N0cmluZygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSFRNTFRva2VuOjpD
b21tZW50OgotICAgICAgICAgICAgbV9kYXRhID0gdG9rZW4uZGF0YSgpOworICAgICAgICAgICAg
bV9kYXRhID0gdG9rZW4uZGF0YSgpLmFzU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxD
aGFyYWN0ZXJzID0gdG9rZW4uZGF0YSgpLmNoYXJhY3RlcnMoKTsKLSAgICAgICAgICAgIG1fZXh0
ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoID0gdG9rZW4uZGF0YSgpLmxlbmd0aCgpOworICAgICAgICBj
YXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOiB7CisgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHN0
cmluZyA9IHRva2VuLmRhdGEoKS5hc1N0cmluZygpOworICAgICAgICAgICAgbV9leHRlcm5hbENo
YXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFjdGVycygpOworICAgICAgICAgICAgbV9leHRlcm5hbENo
YXJhY3RlcnNMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgICAgICAgICBtX2lzQWxsOEJp
dERhdGEgPSB0b2tlbi5pc0FsbDhCaXREYXRhKCk7CisgICAgICAgICAgICBBU1NFUlQoc3RyaW5n
LmlzOEJpdCgpID09IHRva2VuLmlzQWxsOEJpdERhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAppbmRleCA4NzQ0MzJl
NjAxY2E4ZjZjNzE4ZmU0MGM0OTIxZDkxOTYzZDFiMzZjLi5kNzdjZmYwMGY0MTcyMDI3YjUwOTMx
OTM2MjlmZTQwY2Y1NGMzZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC02OSw2NSArNjksNjUgQEAgc3RhdGljIHZv
aWQgY2hlY2tUaGF0WFNTSW5mb3NBcmVTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKGNvbnN0IFhT
U0luZm9TdHJlYW0mIHgKIAogc3RhdGljIGJvb2wgdG9rZW5FeGl0c0ZvcmVpZ25Db250ZW50KGNv
bnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGNv
cGllZCBmcm9tIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCBh
bmQgY2hhbmdlZCB0byB1c2UgdGhyZWFkU2FmZU1hdGNoLgotICAgIGNvbnN0IFN0cmluZyYgdGFn
TmFtZSA9IHRva2VuLmRhdGEoKTsKLSAgICByZXR1cm4gdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUs
IGJUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBiaWdUYWcpCi0gICAg
ICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBibG9ja3F1b3RlVGFnKQotICAgICAgICB8
fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgYm9keVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2Fm
ZU1hdGNoKHRhZ05hbWUsIGJyVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFt
ZSwgY2VudGVyVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgY29kZVRh
ZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGRkVGFnKQotICAgICAgICB8
fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgZGl2VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZl
TWF0Y2godGFnTmFtZSwgZGxUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBkdFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGVtVGFnKQotICAg
ICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgZW1iZWRUYWcpCi0gICAgICAgIHx8IHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBoMVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIGgyVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaDNU
YWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBoNFRhZykKLSAgICAgICAg
fHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGg1VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZl
TWF0Y2godGFnTmFtZSwgaDZUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBoZWFkVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaHJUYWcpCi0g
ICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBpVGFnKQotICAgICAgICB8fCB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgaW1nVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2go
dGFnTmFtZSwgbGlUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBsaXN0
aW5nVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbWVudVRhZykKLSAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG1ldGFUYWcpCi0gICAgICAgIHx8IHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBub2JyVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0
Y2godGFnTmFtZSwgb2xUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBw
VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgcHJlVGFnKQotICAgICAg
ICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgcnVieVRhZykKLSAgICAgICAgfHwgdGhyZWFk
U2FmZU1hdGNoKHRhZ05hbWUsIHNUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBzbWFsbFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHNwYW5U
YWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBzdHJvbmdUYWcpCi0gICAg
ICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBzdHJpa2VUYWcpCi0gICAgICAgIHx8IHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBzdWJUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRj
aCh0YWdOYW1lLCBzdXBUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0
YWJsZVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHR0VGFnKQotICAg
ICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgdVRhZykKLSAgICAgICAgfHwgdGhyZWFk
U2FmZU1hdGNoKHRhZ05hbWUsIHVsVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFn
TmFtZSwgdmFyVGFnKQotICAgICAgICB8fCAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGZvbnRU
YWcpICYmICh0b2tlbi5nZXRBdHRyaWJ1dGVJdGVtKGNvbG9yQXR0cikgfHwgdG9rZW4uZ2V0QXR0
cmlidXRlSXRlbShmYWNlQXR0cikgfHwgdG9rZW4uZ2V0QXR0cmlidXRlSXRlbShzaXplQXR0cikp
KTsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBjb3BpZWQgZnJvbSBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQgYW5kIGNoYW5nZWQgdG8gdXNlIHRocmVhZFNhZmVI
VE1MTmFtZXNNYXRjaC4KKyAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSA9IHRva2Vu
LmRhdGEoKTsKKyAgICByZXR1cm4gdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJU
YWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiaWdUYWcp
CisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBibG9ja3F1b3Rl
VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYm9keVRh
ZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJyVGFnKQor
ICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgY2VudGVyVGFnKQor
ICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgY29kZVRhZykKKyAg
ICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGRkVGFnKQorICAgICAg
ICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZGl2VGFnKQorICAgICAgICB8
fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZGxUYWcpCisgICAgICAgIHx8IHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBkdFRhZykKKyAgICAgICAgfHwgdGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGVtVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZl
SFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZW1iZWRUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVI
VE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoMVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIGgyVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgaDNUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCBoNFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRh
Z05hbWUsIGg1VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgaDZUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBo
ZWFkVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaHJU
YWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBpVGFnKQor
ICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaW1nVGFnKQorICAg
ICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbGlUYWcpCisgICAgICAg
IHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBsaXN0aW5nVGFnKQorICAgICAg
ICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbWVudVRhZykKKyAgICAgICAg
fHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIG1ldGFUYWcpCisgICAgICAgIHx8
IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBub2JyVGFnKQorICAgICAgICB8fCB0
aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgb2xUYWcpCisgICAgICAgIHx8IHRocmVh
ZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBwVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZl
SFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgcHJlVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2godGFnTmFtZSwgcnVieVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIHNUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCBzbWFsbFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01h
dGNoKHRhZ05hbWUsIHNwYW5UYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCBzdHJvbmdUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCBzdHJpa2VUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCBzdWJUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0
YWdOYW1lLCBzdXBUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdO
YW1lLCB0YWJsZVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIHR0VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwg
dVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHVsVGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdmFyVGFnKQor
ICAgICAgICB8fCAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGZvbnRUYWcpICYm
ICh0b2tlbi5nZXRBdHRyaWJ1dGVJdGVtKGNvbG9yQXR0cikgfHwgdG9rZW4uZ2V0QXR0cmlidXRl
SXRlbShmYWNlQXR0cikgfHwgdG9rZW4uZ2V0QXR0cmlidXRlSXRlbShzaXplQXR0cikpKTsKIH0K
IAogc3RhdGljIGJvb2wgdG9rZW5FeGl0c1NWRyhjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tl
bikKIHsKLSAgICBjb25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7Ci0gICAgcmV0
dXJuIGVxdWFsSWdub3JpbmdDYXNlKHRhZ05hbWUsIFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFn
LmxvY2FsTmFtZSgpKTsKKyAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSA9IHRva2Vu
LmRhdGEoKTsKKyAgICByZXR1cm4gdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpm
b3JlaWduT2JqZWN0VGFnKTsKIH0KIAogc3RhdGljIGJvb2wgdG9rZW5FeGl0c01hdGgoY29uc3Qg
Q29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgY29waWVk
IGZyb20gSFRNTEVsZW1lbnRTdGFjazo6aXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludCBhbmQg
Y2hhbmdlZCB0byB1c2UgdGhyZWFkU2FmZU1hdGNoLgotICAgIGNvbnN0IFN0cmluZyYgdGFnTmFt
ZSA9IHRva2VuLmRhdGEoKTsKKyAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSA9IHRv
a2VuLmRhdGEoKTsKICAgICByZXR1cm4gdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5h
bWVzOjptaVRhZykKICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5h
bWVzOjptb1RhZykKICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5h
bWVzOjptblRhZykKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2Vy
OjptYXJrRW5kT2ZGaWxlKCkKIGJvb2wgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnNpbXVsYXRlVHJl
ZUJ1aWxkZXIoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgaWYgKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYg
dGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAgICAgY29uc3QgSFRNTElkZW50aWZpZXImIHRh
Z05hbWUgPSB0b2tlbi5kYXRhKCk7CiAgICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFt
ZSwgU1ZHTmFtZXM6OnN2Z1RhZykpCiAgICAgICAgICAgICBtX25hbWVzcGFjZVN0YWNrLmFwcGVu
ZChTVkcpOwogICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhNTE5hbWVz
OjptYXRoVGFnKSkKQEAgLTIwOCwzMCArMjA4LDMwIEBAIGJvb2wgQmFja2dyb3VuZEhUTUxQYXJz
ZXI6OnNpbXVsYXRlVHJlZUJ1aWxkZXIoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiAg
ICAgICAgICAgICBtX25hbWVzcGFjZVN0YWNrLmFwcGVuZChIVE1MKTsKICAgICAgICAgaWYgKCFp
bkZvcmVpZ25Db250ZW50KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGp1c3Qg
YSBjb3B5IG9mIFRva2VuaXplcjo6dXBkYXRlU3RhdGVGb3Igd2hpY2ggdXNlcyB0aHJlYWRTYWZl
TWF0Y2hlcy4KLSAgICAgICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgdGV4dGFy
ZWFUYWcpIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0aXRsZVRhZykpCisgICAgICAgICAg
ICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHRleHRhcmVhVGFnKSB8fCB0
aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdGl0bGVUYWcpKQogICAgICAgICAgICAg
ICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpSQ0RBVEFTdGF0ZSk7Ci0g
ICAgICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgcGxhaW50ZXh0VGFn
KSkKKyAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCBwbGFpbnRleHRUYWcpKQogICAgICAgICAgICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShI
VE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzY3JpcHRUYWcpKQogICAgICAgICAgICAg
ICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpTY3JpcHREYXRhU3RhdGUp
OwotICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHN0eWxlVGFn
KQotICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBpZnJhbWVUYWcp
Ci0gICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHhtcFRhZykKLSAg
ICAgICAgICAgICAgICB8fCAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG5vZW1iZWRUYWcpICYm
IG1fb3B0aW9ucy5wbHVnaW5zRW5hYmxlZCkKLSAgICAgICAgICAgICAgICB8fCB0aHJlYWRTYWZl
TWF0Y2godGFnTmFtZSwgbm9mcmFtZXNUYWcpCi0gICAgICAgICAgICAgICAgfHwgKHRocmVhZFNh
ZmVNYXRjaCh0YWdOYW1lLCBub3NjcmlwdFRhZykgJiYgbV9vcHRpb25zLnNjcmlwdEVuYWJsZWQp
KQorICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUs
IHN0eWxlVGFnKQorICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0
YWdOYW1lLCBpZnJhbWVUYWcpCisgICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1l
c01hdGNoKHRhZ05hbWUsIHhtcFRhZykKKyAgICAgICAgICAgICAgICB8fCAodGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIG5vZW1iZWRUYWcpICYmIG1fb3B0aW9ucy5wbHVnaW5zRW5h
YmxlZCkKKyAgICAgICAgICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgbm9mcmFtZXNUYWcpCisgICAgICAgICAgICAgICAgfHwgKHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCBub3NjcmlwdFRhZykgJiYgbV9vcHRpb25zLnNjcmlwdEVuYWJsZWQpKQog
ICAgICAgICAgICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpSQVdU
RVhUU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBI
VE1MVG9rZW46OkVuZFRhZykgewotICAgICAgICBjb25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tl
bi5kYXRhKCk7CisgICAgICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lID0gdG9rZW4u
ZGF0YSgpOwogICAgICAgICBpZiAoKG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IFNWRyAmJiB0
aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgU1ZHTmFtZXM6OnN2Z1RhZykpCiAgICAgICAgICAgICB8
fCAobV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gTWF0aE1MICYmIHRocmVhZFNhZmVNYXRjaCh0
YWdOYW1lLCBNYXRoTUxOYW1lczo6bWF0aFRhZykpCiAgICAgICAgICAgICB8fCAobV9uYW1lc3Bh
Y2VTdGFjay5jb250YWlucyhTVkcpICYmIG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IEhUTUwg
JiYgdG9rZW5FeGl0c1NWRyh0b2tlbikpCiAgICAgICAgICAgICB8fCAobV9uYW1lc3BhY2VTdGFj
ay5jb250YWlucyhNYXRoTUwpICYmIG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IEhUTUwgJiYg
dG9rZW5FeGl0c01hdGgodG9rZW4pKSkKICAgICAgICAgICAgIG1fbmFtZXNwYWNlU3RhY2sucmVt
b3ZlTGFzdCgpOwotICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHNjcmlwdFRh
ZykpIHsKKyAgICAgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzY3Jp
cHRUYWcpKSB7CiAgICAgICAgICAgICBpZiAoIWluRm9yZWlnbkNvbnRlbnQoKSkKICAgICAgICAg
ICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAppbmRleCAwYzY2ZmMxYWM5ZmZhNjQ5ZjUzYmQxODQz
NDYzYWIyNmU0MmZkZTUxLi40Yzg2MGZiN2RjNmYwYjFlYzMyMDI0ZWYxNDk3MTk2ZjJiMzU2MjIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTUHJlbG9hZFNjYW5uZXIuaCIKIAog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKKyNpbmNsdWRlICJI
VE1MSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNjQsOCArNjUsOSBAQCB2b2lkIENTU1ByZWxvYWRTY2FubmVyOjpz
Y2FuKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlY3RvciYgZGF0YSwgUHJlbG9hZFJlcXVlc3RTdAog
ICAgIHNjYW5Db21tb24oZGF0YS5kYXRhKCksIGRhdGEuZGF0YSgpICsgZGF0YS5zaXplKCksIHJl
cXVlc3RzKTsKIH0KIAotdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nhbihjb25zdCBTdHJpbmcm
IGRhdGEsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJiByZXF1ZXN0cykKK3ZvaWQgQ1NTUHJlbG9hZFNj
YW5uZXI6OnNjYW4oY29uc3QgSFRNTElkZW50aWZpZXImIGlkZW50aWZpZXIsIFByZWxvYWRSZXF1
ZXN0U3RyZWFtJiByZXF1ZXN0cykKIHsKKyAgICBjb25zdCBTdHJpbmcmIGRhdGEgPSBpZGVudGlm
aWVyLmFzU3RyaW5nKCk7CiAgICAgaWYgKGRhdGEuaXM4Qml0KCkpIHsKICAgICAgICAgY29uc3Qg
TENoYXIqIGJlZ2luID0gZGF0YS5jaGFyYWN0ZXJzOCgpOwogICAgICAgICBzY2FuQ29tbW9uKGJl
Z2luLCBiZWdpbiArIGRhdGEubGVuZ3RoKCksIHJlcXVlc3RzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5oCmluZGV4IDRiNjliYzMyMzU2YjRjMjE4
MTMzZmIxM2RjYTQyMTBmYjNiNmY2YTQuLjljMjA5MTAxMWQwNzI3ZTllYzY1Zjk3ZDVjYTlkNzAw
ODVhNzE0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxv
YWRTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNj
YW5uZXIuaApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IEhUTUxJZGVudGlmaWVyOworCiBjbGFzcyBDU1NQcmVsb2FkU2Nhbm5lciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ1NTUHJlbG9hZFNjYW5uZXIpOwogcHVibGljOgpAQCAtNDIsNyArNDQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgpOwogCiAgICAgdm9pZCBzY2FuKGNvbnN0IEhU
TUxUb2tlbjo6RGF0YVZlY3RvciYsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJik7Ci0gICAgdm9pZCBz
Y2FuKGNvbnN0IFN0cmluZyYsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJik7CisgICAgdm9pZCBzY2Fu
KGNvbnN0IEhUTUxJZGVudGlmaWVyJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mKTsKIAogcHJpdmF0
ZToKICAgICBlbnVtIFN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29t
cGFjdEhUTUxUb2tlbi5jcHAKaW5kZXggYjQ3ODhhMDdlNWEwNmYyMWQ0NTgwOWVhYWY3Yjk2ZWEx
OGQ4MTAzNC4uNzZkZGM2YjZjNzZlM2E1NTBjNDZlY2VkMDY5MGM5MDhhMjUzZDdkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKQEAgLTM4
LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVBc0NvbXBh
Y3RIVE1MVG9rZW4gIHsKICAgICB1bnNpZ25lZCBiaXRmaWVsZHM7Ci0gICAgU3RyaW5nIG5hbWU7
CisgICAgSFRNTElkZW50aWZpZXIgZGF0YTsKICAgICBWZWN0b3I8QXR0cmlidXRlPiB2ZWN0b3I7
CiAgICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbjsKIH07CkBAIC01NiwxMCArNTYsMTAgQEAg
Q29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbihjb25zdCBIVE1MVG9rZW4qIHRva2Vu
LCBjb25zdCBUZXh0UG9zaXRpb24mIHQKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOiB7Ci0gICAgICAgIG1f
ZGF0YSA9IFN0cmluZyh0b2tlbi0+bmFtZSgpKTsKKyAgICAgICAgbV9kYXRhID0gSFRNTElkZW50
aWZpZXIodG9rZW4tPm5hbWUoKSwgTGlrZWx5OEJpdCk7CiAgICAgICAgIC8vIFRoZXJlIGlzIG9u
bHkgMSBET0NUWVBFIHRva2VuIHBlciBkb2N1bWVudCwgc28gdG8gYXZvaWQgaW5jcmVhc2luZyB0
aGUKICAgICAgICAgLy8gc2l6ZSBvZiBDb21wYWN0SFRNTFRva2VuLCB3ZSBqdXN0IHVzZSB0aGUg
bV9hdHRyaWJ1dGVzIHZlY3Rvci4KLSAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1
dGUoU3RyaW5nKHRva2VuLT5wdWJsaWNJZGVudGlmaWVyKCkpLCBTdHJpbmcodG9rZW4tPnN5c3Rl
bUlkZW50aWZpZXIoKSkpKTsKKyAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUo
SFRNTElkZW50aWZpZXIodG9rZW4tPnB1YmxpY0lkZW50aWZpZXIoKSwgTGlrZWx5OEJpdCksIFN0
cmluZyh0b2tlbi0+c3lzdGVtSWRlbnRpZmllcigpKSkpOwogICAgICAgICBtX2RvY3R5cGVGb3Jj
ZXNRdWlya3MgPSB0b2tlbi0+Zm9yY2VRdWlya3MoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtNjgsMTkgKzY4LDE3IEBAIENvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4oY29u
c3QgSFRNTFRva2VuKiB0b2tlbiwgY29uc3QgVGV4dFBvc2l0aW9uJiB0CiAgICAgY2FzZSBIVE1M
VG9rZW46OlN0YXJ0VGFnOgogICAgICAgICBtX2F0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eSh0b2tlbi0+YXR0cmlidXRlcygpLnNpemUoKSk7CiAgICAgICAgIGZvciAoVmVjdG9yPEhU
TUxUb2tlbjo6QXR0cmlidXRlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0b2tlbi0+YXR0cmlidXRl
cygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLT5hdHRyaWJ1dGVzKCkuZW5kKCk7ICsraXQpCi0gICAg
ICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShTdHJpbmdJbXBsOjpjcmVhdGU4
Qml0SWZQb3NzaWJsZShpdC0+bmFtZSksIFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxl
KGl0LT52YWx1ZSkpKTsKKyAgICAgICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRl
KEhUTUxJZGVudGlmaWVyKGl0LT5uYW1lLCBMaWtlbHk4Qml0KSwgU3RyaW5nSW1wbDo6Y3JlYXRl
OEJpdElmUG9zc2libGUoaXQtPnZhbHVlKSkpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2ghCiAg
ICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzoKICAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2Vu
LT5zZWxmQ2xvc2luZygpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2ghCiAgICAgY2FzZSBIVE1M
VG9rZW46OkNvbW1lbnQ6Ci0gICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKLSAgICAgICAg
aWYgKHRva2VuLT5pc0FsbDhCaXREYXRhKCkpIHsKLSAgICAgICAgICAgIG1fZGF0YSA9IFN0cmlu
Zzo6bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UodG9rZW4tPmRhdGEoKSk7Ci0gICAgICAgICAgICBt
X2lzQWxsOEJpdERhdGEgPSB0cnVlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fZGF0
YSA9IFN0cmluZyh0b2tlbi0+ZGF0YSgpKTsKKyAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVy
OiB7CisgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IHRva2VuLT5pc0FsbDhCaXREYXRhKCk7Cisg
ICAgICAgIG1fZGF0YSA9IEhUTUxJZGVudGlmaWVyKHRva2VuLT5kYXRhKCksIHRva2VuLT5pc0Fs
bDhCaXREYXRhKCkgPyBGb3JjZThCaXQgOiBGb3JjZTE2Qml0KTsKICAgICAgICAgYnJlYWs7Cisg
ICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RI
VE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4u
aAppbmRleCBjODk4ZjZlNmYxNGVjODkxMmIzMmZhMTMxNWM3NzhhODdlMzk4OTgzLi5mZmE0YWU0
M2NkMWYzZWJmMGUzZWJjM2U4OWVhNDk0ZjYyZjUzMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBF
TkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAKKyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtNDQsMTMgKzQ1LDEzIEBAIGNsYXNzIFF1YWxpZmll
ZE5hbWU7CiBjbGFzcyBDb21wYWN0SFRNTFRva2VuIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgQXR0
cmlidXRlIHsKLSAgICAgICAgQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKKyAgICAgICAgQXR0cmlidXRlKGNvbnN0IEhUTUxJZGVudGlmaWVyJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICAgICAgOiBuYW1lKG5hbWUpCiAgICAgICAg
ICAgICAsIHZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTdHJp
bmcgbmFtZTsKKyAgICAgICAgSFRNTElkZW50aWZpZXIgbmFtZTsKICAgICAgICAgU3RyaW5nIHZh
bHVlOwogICAgIH07CiAKQEAgLTU5LDcgKzYwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTYWZl
VG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CiAKICAgICBIVE1MVG9rZW46OlR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUb2tlbjo6VHlwZT4obV90eXBlKTsg
fQotICAgIGNvbnN0IFN0cmluZyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAg
IGNvbnN0IEhUTUxJZGVudGlmaWVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAg
ICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZkNsb3Npbmc7IH0KICAg
ICBib29sIGlzQWxsOEJpdERhdGEoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsOEJpdERhdGE7IH0K
ICAgICBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJu
IG1fYXR0cmlidXRlczsgfQpAQCAtNjgsNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVy
ZSBpcyBvbmx5IDEgRE9DVFlQRSB0b2tlbiBwZXIgZG9jdW1lbnQsIHNvIHRvIGF2b2lkIGluY3Jl
YXNpbmcgdGhlCiAgICAgLy8gc2l6ZSBvZiBDb21wYWN0SFRNTFRva2VuLCB3ZSBqdXN0IHVzZSB0
aGUgbV9hdHRyaWJ1dGVzIHZlY3Rvci4KLSAgICBjb25zdCBTdHJpbmcmIHB1YmxpY0lkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXNbMF0ubmFtZTsgfQorICAgIGNvbnN0IEhU
TUxJZGVudGlmaWVyJiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1
dGVzWzBdLm5hbWU7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2F0dHJpYnV0ZXNbMF0udmFsdWU7IH0KICAgICBib29sIGRvY3R5cGVGb3Jj
ZXNRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX2RvY3R5cGVGb3JjZXNRdWlya3M7IH0KIApAQCAt
NzgsNyArNzksNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faXNBbGw4Qml0RGF0YSA6IDE7
CiAgICAgdW5zaWduZWQgbV9kb2N0eXBlRm9yY2VzUXVpcmtzOiAxOwogCi0gICAgU3RyaW5nIG1f
ZGF0YTsgLy8gIm5hbWUiLCAiY2hhcmFjdGVycyIsIG9yICJkYXRhIiBkZXBlbmRpbmcgb24gbV90
eXBlCisgICAgSFRNTElkZW50aWZpZXIgbV9kYXRhOyAvLyAibmFtZSIsICJjaGFyYWN0ZXJzIiwg
b3IgImRhdGEiIGRlcGVuZGluZyBvbiBtX3R5cGUKICAgICBWZWN0b3I8QXR0cmlidXRlPiBtX2F0
dHJpYnV0ZXM7CiAgICAgVGV4dFBvc2l0aW9uIG1fdGV4dFBvc2l0aW9uOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDZl
YzE2ODYyZWM2OGM2MGRlNTU1NGU0NTkyMGRmY2JjYzc4MDY1MTMuLjIxZmZkOGQ1ODEwYWM2OTYy
YWY4ZmY0Mzg2OWNlYWQ2NDBmMGQ1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJIVE1MUGFyc2VyU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlclRo
cmVhZC5oIgpAQCAtNjU3LDYgKzY1OCw4IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpzdGFy
dEJhY2tncm91bmRQYXJzZXIoKQogICAgIEFTU0VSVCghbV9oYXZlQmFja2dyb3VuZFBhcnNlcik7
CiAgICAgbV9oYXZlQmFja2dyb3VuZFBhcnNlciA9IHRydWU7CiAKKyAgICBIVE1MSWRlbnRpZmll
cjo6aW5pdCgpOworCiAgICAgUmVmUHRyPFdlYWtSZWZlcmVuY2U8QmFja2dyb3VuZEhUTUxQYXJz
ZXI+ID4gcmVmZXJlbmNlID0gV2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5kSFRNTFBhcnNlcj46OmNy
ZWF0ZVVuYm91bmQoKTsKICAgICBtX2JhY2tncm91bmRQYXJzZXIgPSBXZWFrUHRyPEJhY2tncm91
bmRIVE1MUGFyc2VyPihyZWZlcmVuY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MSWRlbnRpZmllci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBhOTg0Mjk4NDE2OTdhMTA5MmEyYjlh
YzRmYzZhZDE1NmIyMDIzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcApAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyNpbmNsdWRlICJIVE1MSWRl
bnRpZmllci5oIgorCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOworCit0eXBlZGVmIHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3RyaW5nSW1wbCo+IElkZW50
aWZpZXJFbnRyeTsKK3R5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgSWRlbnRpZmllckVudHJ5LCBB
bHJlYWR5SGFzaGVkPiBJZGVudGlmaWVyVGFibGU7CisKK3N0YXRpYyBJZGVudGlmaWVyVGFibGUm
IGlkZW50aWZpZXJUYWJsZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChJZGVudGlmaWVy
VGFibGUsIHRhYmxlLCAoKSk7CisgICAgcmV0dXJuIHRhYmxlOworfQorCitib29sIEhUTUxJZGVu
dGlmaWVyOjpoYXNJbmRleChjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcpCit7CisgICAgY29uc3Qg
SWRlbnRpZmllclRhYmxlJiB0YWJsZSA9IGlkZW50aWZpZXJUYWJsZSgpOworICAgIHJldHVybiB0
YWJsZS5jb250YWlucyhzdHJpbmctPmhhc2goKSk7Cit9CisKK3Vuc2lnbmVkIEhUTUxJZGVudGlm
aWVyOjpmaW5kSW5kZXgoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkK
K3sKKyAgICB1bnNpZ25lZCBoYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaChjaGFyYWN0
ZXJzLCBsZW5ndGgpOworICAgIGNvbnN0IElkZW50aWZpZXJUYWJsZSYgdGFibGUgPSBpZGVudGlm
aWVyVGFibGUoKTsKKyAgICBBU1NFUlQoIXRhYmxlLmlzRW1wdHkoKSk7CisKKyAgICBJZGVudGlm
aWVyVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGFibGUuZmluZChoYXNoKTsKKyAgICBpZiAo
aXQgPT0gdGFibGUuZW5kKCkpCisgICAgICAgIHJldHVybiBpbnZhbGlkSW5kZXg7CisgICAgcmV0
dXJuIGl0LT52YWx1ZS5maXJzdDsKK30KKworY29uc3QgdW5zaWduZWQga0hUTUxOYW1lc0luZGV4
T2Zmc2V0ID0gMDsKK2NvbnN0IHVuc2lnbmVkIGtIVE1MQXR0cnNJbmRleE9mZnNldCA9IDEwMDA7
CitDT01QSUxFX0FTU0VSVChrSFRNTEF0dHJzSW5kZXhPZmZzZXQgPiBIVE1MVGFnc0NvdW50LCBr
SFRNTEF0dHJzSW5kZXhPZmZzZXRfc2hvdWxkX2JlX2xhcmdlcl90aGFuX0hUTUxUYWdzQ291bnQp
OworCitzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZUZvckluZGV4KHVuc2lnbmVkIGlu
ZGV4KQoreworICAgIHVuc2lnbmVkIGFkanVzdGVkSW5kZXg7CisgICAgUXVhbGlmaWVkTmFtZSoq
IG5hbWVzOworICAgIGlmIChpbmRleCA8IGtIVE1MQXR0cnNJbmRleE9mZnNldCkgeworICAgICAg
ICBBU1NFUlQoa0hUTUxOYW1lc0luZGV4T2Zmc2V0IDwgaW5kZXgpOworICAgICAgICBBU1NFUlQo
aW5kZXggPCBrSFRNTE5hbWVzSW5kZXhPZmZzZXQgKyBIVE1MVGFnc0NvdW50KTsKKyAgICAgICAg
YWRqdXN0ZWRJbmRleCA9IGluZGV4IC0ga0hUTUxOYW1lc0luZGV4T2Zmc2V0OworICAgICAgICBu
YW1lcyA9IGdldEhUTUxUYWdzKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKGluZGV4
IDwga0hUTUxBdHRyc0luZGV4T2Zmc2V0ICsgSFRNTEF0dHJzQ291bnQpOworICAgICAgICBhZGp1
c3RlZEluZGV4ID0gaW5kZXggLSBrSFRNTEF0dHJzSW5kZXhPZmZzZXQ7CisgICAgICAgIG5hbWVz
ID0gZ2V0SFRNTEF0dHJzKCk7CisgICAgfQorICAgIHJldHVybiAqbmFtZXNbYWRqdXN0ZWRJbmRl
eF07Cit9CisKK2NvbnN0IFN0cmluZyYgSFRNTElkZW50aWZpZXI6OmFzU3RyaW5nKCkgY29uc3QK
K3sKKyAgICAvLyBGSVhNRTogQVNTRVJUKGlzTWFpblRocmVhZCgpKSBvbmNlIHBvc3NpYmxlLgor
ICAgIGlmIChtX2luZGV4ICE9IGludmFsaWRJbmRleCkKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JJ
bmRleChtX2luZGV4KS5sb2NhbE5hbWUoKTsKKyAgICByZXR1cm4gbV9zdHJpbmc7Cit9CisKK3N0
YXRpYyB2b2lkIGFkZE5hbWVzKFF1YWxpZmllZE5hbWUqKiBuYW1lcywgdW5zaWduZWQgbmFtZXND
b3VudCwgdW5zaWduZWQgaW5kZXhPZmZzZXQpCit7CisgICAgSWRlbnRpZmllclRhYmxlJiB0YWJs
ZSA9IGlkZW50aWZpZXJUYWJsZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYW1l
c0NvdW50OyArK2kpIHsKKyAgICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IG5hbWVzW2ldLT5sb2Nh
bE5hbWUoKS5pbXBsKCk7CisgICAgICAgIHVuc2lnbmVkIGhhc2ggPSBuYW1lLT5oYXNoKCk7Cisg
ICAgICAgIElkZW50aWZpZXJFbnRyeSBlbnRyeSA9IHsgaGFzaCwgbmFtZSB9OworICAgICAgICBJ
ZGVudGlmaWVyVGFibGU6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSB0YWJsZS5hZGQoaGFzaCwgZW50
cnkpOworICAgICAgICAvLyBXZSBleHBlY3Qgc29tZSBoYXNoIGNvbGxpc2lvbnMsIGJ1dCBvbmx5
IGZvciBpZGVudGljYWwgc3RyaW5ncy4KKyAgICAgICAgLy8gU2luY2UgYWxsIG9mIHRoZXNlIG5h
bWVzIGFyZSBBdG9taWNTdHJpbmdzIHBvaW50ZXJzIHNob3VsZCBiZSBlcXVhbC4KKyAgICAgICAg
QVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsICFhZGRSZXN1bHQuaXNOZXdFbnRyeSB8fCBuYW1lID09
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2Vjb25kKTsKKyAgICB9Cit9CisKK3ZvaWQgSFRN
TElkZW50aWZpZXI6OmluaXQoKQoreworICAgIC8vIFRoaXMgaXMgc2FmZSB0byBjYWxsIGZyb20g
YW55IHRocmVhZCwgYnV0IG11c3QgYmUgY2FsbGVkIGJlZm9yZQorICAgIC8vIHVzaW5nIEhUTUxJ
ZGVudGlmaWVyLgorICAgIHN0YXRpYyBib29sIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBp
ZiAoaXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworICAgIGlzSW5pdGlhbGl6ZWQgPSB0
cnVlOworCisgICAgYWRkTmFtZXMoZ2V0SFRNTFRhZ3MoKSwgSFRNTFRhZ3NDb3VudCwga0hUTUxO
YW1lc0luZGV4T2Zmc2V0KTsKKyAgICBhZGROYW1lcyhnZXRIVE1MQXR0cnMoKSwgSFRNTEF0dHJz
Q291bnQsIGtIVE1MQXR0cnNJbmRleE9mZnNldCk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJM
RShUSFJFQURFRF9IVE1MX1BBUlNFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyYjExZWY5YzlkMGU2YWUwM2U1NjNlNmU2YzU1NDI3
NGMxYTdkYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIVE1MSWRlbnRpZmllcl9oCisjZGVm
aW5lIEhUTUxJZGVudGlmaWVyX2gKKworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikK
KworI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2VudW0gQ2hhcmFjdGVyV2lkdGggeworICAgIExpa2VseThCaXQsCisgICAgRm9yY2U4
Qml0LAorICAgIEZvcmNlMTZCaXQKK307CisKK2NsYXNzIEhUTUxJZGVudGlmaWVyIHsKK3B1Ymxp
YzoKKyAgICBIVE1MSWRlbnRpZmllcigpIDogbV9pbmRleCgwKSB7IH0KKworICAgIHRlbXBsYXRl
PHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBIVE1MSWRlbnRpZmllcihjb25zdCBWZWN0b3I8
VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yLCBDaGFyYWN0ZXJXaWR0aCB3aWR0aCkKKyAg
ICAgICAgOiBtX2luZGV4KGZpbmRJbmRleCh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKSkK
KyAgICB7CisgICAgICAgIGlmIChtX2luZGV4ICE9IGludmFsaWRJbmRleCkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKHdpZHRoID09IExpa2VseThCaXQpCisgICAgICAgICAgICBt
X3N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKHZlY3Rvcik7CisgICAg
ICAgIGVsc2UgaWYgKHdpZHRoID09IEZvcmNlOEJpdCkKKyAgICAgICAgICAgIG1fc3RyaW5nID0g
U3RyaW5nOjptYWtlOEJpdEZyb20xNkJpdFNvdXJjZSh2ZWN0b3IpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX3N0cmluZyA9IFN0cmluZyh2ZWN0b3IpOworICAgIH0KKworICAgIGJvb2wg
ZXF1YWxzKHVuc2lnbmVkIGluZGV4KTsKKyAgICAvLyBSZWZmaW5nIHRoZSByZXR1cm5lZCBzdHJp
bmcgaXMgb25seSBzYWZlIGZyb20gdGhlIG1haW4gdGhyZWFkLgorICAgIGNvbnN0IFN0cmluZyYg
YXNTdHJpbmcoKSBjb25zdDsKKworICAgIHN0YXRpYyB2b2lkIGluaXQoKTsKKworICAgIGJvb2wg
aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNT
YWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCk7IH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBzdGF0
aWMgYm9vbCBoYXNJbmRleChjb25zdCBTdHJpbmdJbXBsKik7CisjZW5kaWYKKworcHJpdmF0ZToK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZEluZGV4ID0gLTE7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGZpbmRJbmRleChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVu
Z3RoKTsKKworICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGEgdW5pb24uCisgICAgdW5zaWdu
ZWQgbV9pbmRleDsKKyAgICBTdHJpbmcgbV9zdHJpbmc7Cit9OworCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCA5NDQ3Y2ZlNmM4Yjc3N2Qw
MGYxOGNmODRkNmM3ZjJmYjQ5NWRkM2FiLi5mN2U2MTlhOTVlNWIyOTRkYzA1ODg3ZjIyNzg2OGJj
ODliMGEzODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMu
aCIKIAogI2luY2x1ZGUgIkRlY2ltYWwuaCIKKyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KQEAgLTI3OSw2ICsyODAsMTAgQEAgYm9vbCBwYXJzZUhUTUxOb25O
ZWdhdGl2ZUludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQmIHZhbHVlKQogCiBz
dGF0aWMgYm9vbCB0aHJlYWRTYWZlRXF1YWwoU3RyaW5nSW1wbCogYSwgU3RyaW5nSW1wbCogYikK
IHsKKyAgICBpZiAoYSA9PSBiKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBOb3RlOiBU
aGlzIGhhc2ggY29tcGFyZSBpcyBub3QgY29ycmVjdCBmb3IgYWxsIHBvc3NpYmxlIFN0cmluZ0lt
cGxzLCBidXQKKyAgICAvLyBzaW5jZSB3ZSdyZSBhbHdheXMgY29tcGFyaW5nIGFnYWluc3QgY29u
c3RhbnRzLCBpdCdzIE9LLgogICAgIGlmIChhLT5oYXNoKCkgIT0gYi0+aGFzaCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIFN0cmluZ0hhc2g6OmVxdWFsKGEsIGIpOwpAQCAt
Mjk0LDQgKzI5OSwxNyBAQCBib29sIHRocmVhZFNhZmVNYXRjaChjb25zdCBTdHJpbmcmIGxvY2Fs
TmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCiAgICAgcmV0dXJuIHRocmVhZFNhZmVF
cXVhbChsb2NhbE5hbWUuaW1wbCgpLCBxTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQogCiti
b29sIHRocmVhZFNhZmVNYXRjaChjb25zdCBIVE1MSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKK3sKKyAgICByZXR1cm4gdGhyZWFkU2FmZUVxdWFsKGxv
Y2FsTmFtZS5hc1N0cmluZygpLmltcGwoKSwgcU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKK30K
KworYm9vbCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2goY29uc3QgSFRNTElkZW50aWZpZXImIHRh
Z05hbWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQoreworICAgIC8vIFdoZW4gdGhlIFF1
YWxpZmllZE5hbWUgaXMga25vd24gdG8gSFRNTElkZW50aWZpZXIsIHRoZW4gYWxsIHdlIG5lZWQg
dG8gZG8KKyAgICAvLyBpcyBhIHBvaW50ZXIgY29tcGFyZS4KKyAgICBBU1NFUlQoSFRNTElkZW50
aWZpZXI6Omhhc0luZGV4KHFOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSkpOworICAgIHJldHVybiB0
YWdOYW1lLmFzU3RyaW5nKCkuaW1wbCgpID09IHFOYW1lLmxvY2FsTmFtZSgpLmltcGwoKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmlu
ZGV4IGEwMzFlNDVjZmYzMjM1M2YxNDBhMGEyMDE5NWI5ZjlmMzYzMjdiM2UuLmI1NGM5YTQ3NmFl
MjQ2YTk5NGIwYzllZWY2MjVmMzU3Y2UyZjEwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRGVjaW1hbDsKK2NsYXNzIEhUTUxJZGVudGlmaWVyOwogY2xhc3Mg
UXVhbGlmaWVkTmFtZTsKIAogLy8gU3BhY2UgY2hhcmFjdGVycyBhcyBkZWZpbmVkIGJ5IHRoZSBI
VE1MIHNwZWNpZmljYXRpb24uCkBAIC05NCw2ICs5NSw4IEBAIGlubGluZSBib29sIGlzTm90SFRN
TFNwYWNlKFVDaGFyIGNoYXJhY3RlcikKIAogYm9vbCB0aHJlYWRTYWZlTWF0Y2goY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIGJvb2wgdGhyZWFkU2FmZU1hdGNo
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKK2Jvb2wgdGhyZWFkU2FmZU1h
dGNoKGNvbnN0IEhUTUxJZGVudGlmaWVyJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworYm9vbCB0
aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2goY29uc3QgSFRNTElkZW50aWZpZXImLCBjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggYTU3YzVkMzg1ZTNlNzFlNzFiNTUxZDQzY2FlZDA3
NTIzODM1YjMwNi4uYzljMmU5YzEwYjVkM2QyOGQ4MzYyNzEzYWNjZGFmMjExNzIyNTRhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3Bw
CkBAIC02MywyMSArNjMsMjEgQEAgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6VGFnSWQgVG9rZW5QcmVs
b2FkU2Nhbm5lcjo6dGFnSWRGb3IoY29uc3QgSFRNTFRva2VuOjpEYXRhVmUKICAgICByZXR1cm4g
VW5rbm93blRhZ0lkOwogfQogCi1Ub2tlblByZWxvYWRTY2FubmVyOjpUYWdJZCBUb2tlblByZWxv
YWRTY2FubmVyOjp0YWdJZEZvcihjb25zdCBTdHJpbmcmIHRhZ05hbWUpCitUb2tlblByZWxvYWRT
Y2FubmVyOjpUYWdJZCBUb2tlblByZWxvYWRTY2FubmVyOjp0YWdJZEZvcihjb25zdCBIVE1MSWRl
bnRpZmllciYgdGFnTmFtZSkKIHsKLSAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGlt
Z1RhZykpCisgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBpbWdUYWcp
KQogICAgICAgICByZXR1cm4gSW1nVGFnSWQ7Ci0gICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBpbnB1dFRhZykpCisgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCBpbnB1dFRhZykpCiAgICAgICAgIHJldHVybiBJbnB1dFRhZ0lkOwotICAgIGlmICh0aHJlYWRT
YWZlTWF0Y2godGFnTmFtZSwgbGlua1RhZykpCisgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCBsaW5rVGFnKSkKICAgICAgICAgcmV0dXJuIExpbmtUYWdJZDsKLSAgICBp
ZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHNjcmlwdFRhZykpCisgICAgaWYgKHRocmVhZFNh
ZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzY3JpcHRUYWcpKQogICAgICAgICByZXR1cm4gU2Ny
aXB0VGFnSWQ7Ci0gICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBzdHlsZVRhZykpCisg
ICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzdHlsZVRhZykpCiAgICAg
ICAgIHJldHVybiBTdHlsZVRhZ0lkOwotICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwg
YmFzZVRhZykpCisgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiYXNl
VGFnKSkKICAgICAgICAgcmV0dXJuIEJhc2VUYWdJZDsKLSAgICBpZiAodGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIHRlbXBsYXRlVGFnKSkKKyAgICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNo
KHRhZ05hbWUsIHRlbXBsYXRlVGFnKSkKICAgICAgICAgcmV0dXJuIFRlbXBsYXRlVGFnSWQ7CiAg
ICAgcmV0dXJuIFVua25vd25UYWdJZDsKIH0KQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmIChtX3RhZ0lkID49IFVua25vd25UYWdJZCkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgZm9yIChWZWN0b3I8Q29tcGFjdEhUTUxUb2tlbjo6QXR0cmlidXRlPjo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IGF0dHJpYnV0ZXMuYmVnaW4oKTsgaXRlciAhPSBhdHRyaWJ1dGVzLmVu
ZCgpOyArK2l0ZXIpCi0gICAgICAgICAgICBwcm9jZXNzQXR0cmlidXRlKGl0ZXItPm5hbWUsIGl0
ZXItPnZhbHVlKTsKKyAgICAgICAgICAgIHByb2Nlc3NBdHRyaWJ1dGUoaXRlci0+bmFtZS5hc1N0
cmluZygpLCBpdGVyLT52YWx1ZSk7CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKaW5kZXggNDdhNTQ0NGYxMGU4Y2Zk
ZDZiYTcwYjA2YmUwOGYyNTQ0MDRjYzAxYi4uZDJmMmMxMTg5YzI1ZjUwZGIyOTIzZmZiMzRhNzEy
NmU0MjdhM2IyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxv
YWRTY2FubmVyLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBpbmxpbmUgdm9pZCBz
Y2FuQ29tbW9uKGNvbnN0IFRva2VuJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mIHJlcXVlc3RzKTsK
IAogICAgIHN0YXRpYyBUYWdJZCB0YWdJZEZvcihjb25zdCBIVE1MVG9rZW46OkRhdGFWZWN0b3Im
KTsKLSAgICBzdGF0aWMgVGFnSWQgdGFnSWRGb3IoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGlj
IFRhZ0lkIHRhZ0lkRm9yKGNvbnN0IEhUTUxJZGVudGlmaWVyJik7CiAKICAgICBzdGF0aWMgU3Ry
aW5nIGluaXRpYXRvckZvcihUYWdJZCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192124</attachid>
            <date>2013-03-07 18:35:07 -0800</date>
            <delta_ts>2013-03-07 20:23:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107337-20130307183126.patch</filename>
            <type>text/plain</type>
            <size>40963</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk1NjlmOTI3NGJkZDJm
YzkwOGZmMDA4NzIyNTRhMmFlNTdmNDM3OS4uNmIzNGNiNDgzODI0NGFhYzY5ZmM5ZWYwMjMzYzEx
YTUwODI5MTYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc1IEBACiAyMDEzLTAzLTA3ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAorICAgICAgICBCYWNrZ3JvdW5kSFRNTFBhcnNl
ciBzaG91bGQgYmUgYWJsZSB0byBhdG9taXplIHdlbGwta25vd24gc3RyaW5ncworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGluZyB0aGlzIHBhdGNo
IGVhc2lseSByZXF1aXJlcyBhcHBseWluZyBidWcgMTA3MjM2IGxvY2FsbHkKKyAgICAgICAgdG8g
cmVtb3ZlIGFsbCB0aGUgcmVuZGVyaW5nIG5vaXNlIGZyb20gUGFyc2VyL2h0bWwtdGhyZWFkZWQt
cGFyc2VyLmh0bWwuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGNsYXNzIEhUTUxJ
ZGVudGlmaWVyIHdoaWNoIGFsbG93cyB1cyB0byBhdm9pZAorICAgICAgICBhbGxvY2F0aW5nIHN0
cmluZ3MgZm9yIGtub3duIHRhZy9hdHRyaWJ1dGUgbmFtZXMgZnJvbSBIVE1MTmFtZXMuCisKKyAg
ICAgICAgVGhlcmUgaXMgc3RpbGwgYSBsb3Qgb2YgbWVhdCBvbiB0aGlzIGJvbmUsIGJ1dCBJIHRo
aW5rIGl0J3MgaW1wb3J0YW50IHRvCisgICAgICAgIGxhbmQgc29tZXRoaW5nICJzbWFsbGlzaCIg
dG8gc3RhcnQgYW5kIGl0ZXJhdGUgZnJvbSB0aGVyZS4KKworICAgICAgICBUaGlzIHRvb2sgUGFy
c2VyL2h0bWwtdGhyZWFkZWQtcGFyc2VyLmh0bWwgZnJvbToKKyAgICAgICAgbWVkaWFuPSA0NDMu
NzI2NTAwMDAyIG1zLCBzdGRldj0gNy4yNTAwMjY3OTk1MiBtcywgbWluPSA0MzAuMjQ0MDAwMDQ3
IG1zLCBtYXg9IDQ1NS41MTEwMDAwMDcgbXMKKyAgICAgICAgdG86CisgICAgICAgIG1lZGlhbj0g
NDI3Ljg0OTUwMDAwNCBtcywgc3RkZXY9IDkuOTY5NjcwNTgyOTIgbXMsIG1pbj0gNDE3LjkxNDAw
MDA0OSBtcywgbWF4PSA0NjEuNTI4MDAwMDE0IG1zCisgICAgICAgIG9uIG15IE1CUC4KKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBodG1sL3BhcnNlci9BdG9taWNIVE1MVG9r
ZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6QXRvbWljSFRNTFRva2Vu
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b2tlbkV4aXRzRm9yZWlnbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9rZW5FeGl0c1NWRyk6CisgICAgICAgIChXZWJDb3JlOjp0b2tlbkV4aXRzTWF0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRl
cik6CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJlbG9hZFNjYW5uZXI6OnNjYW4pOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0NTU1ByZWxvYWRTY2FubmVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENT
U1ByZWxvYWRTY2FubmVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2Vu
LmNwcDoKKyAgICAgICAgKFNhbWVTaXplQXNDb21wYWN0SFRNTFRva2VuKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBhY3RI
VE1MVG9rZW46OkF0dHJpYnV0ZTo6QXR0cmlidXRlKToKKyAgICAgICAgKEF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpkYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBhY3RIVE1MVG9rZW46OnB1YmxpY0lkZW50aWZpZXIpOgorICAgICAgICAoQ29tcGFj
dEhUTUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRCYWNrZ3JvdW5k
UGFyc2VyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjppZGVudGlmaWVyVGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50aWZpZXI6OmZpbmRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpuYW1lRm9ySW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50aWZp
ZXI6OmFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZE5hbWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJZGVudGlmaWVyOjppbml0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
SWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSFRNTElk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50aWZpZXI6OkhUTUxJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjppc1NhZmVUb1NlbmRUb0Fu
b3RoZXJUaHJlYWQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dGhyZWFkU2FmZUVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6
OnRocmVhZFNhZmVNYXRjaCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG9r
ZW5QcmVsb2FkU2Nhbm5lcjo6dGFnSWRGb3IpOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5QcmVs
b2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjpwcm9jZXNzQXR0cmlidXRlcyk6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmg6CisKKzIwMTMtMDMtMDcgIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCiAgICAgICAgIGRpc3BsYXk6bm9uZSBpZnJhbWVz
IHNob3VsZCBub3QgYnVpbGQgcmVuZGVyaW5nIHRyZWVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcyMzYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDQ5
ZDY5M2M1ZWQ2N2NhNmIzODI5MjhiYWExMzFmNGIzMTk2MGIxMTUuLmQwNzllZTJmMjZhMzg2Nzli
NTk4NDA5Yzk3ZTEyN2Y3MzkyODBlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM1MDcsNiArMzUw
Nyw4IEBACiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTEVudGl0eVRhYmxlLmgnLAogICAg
ICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwJywKICAg
ICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmgnLAorICAg
ICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcCcsCisgICAgICAgICAgICAn
aHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIv
SFRNTElucHV0U3RyZWFtLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hh
cnNldFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNl
dFBhcnNlci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21p
Y0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2Vu
LmgKaW5kZXggMTM4MzcxMDA1NWM1ZWNkZDRiZGUwNDhlZjM2OWFmZjFmZTk0ZThmZi4uNjY1NWY0
YTNkZDBlNmExNjdlMmZlYWM3M2MyNGZhNGIzN2Q4OWExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmgKQEAgLTE4OSwxMCArMTg5LDEwIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKLSAgICAgICAgICAgIG1fbmFtZSA9
IHRva2VuLmRhdGEoKTsKKyAgICAgICAgICAgIG1fbmFtZSA9IHRva2VuLmRhdGEoKS5hc1N0cmlu
ZygpOwogICAgICAgICAgICAgbV9kb2N0eXBlRGF0YSA9IGFkb3B0UHRyKG5ldyBEb2N0eXBlRGF0
YSgpKTsKICAgICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzUHVibGljSWRlbnRpZmllciA9
IHRydWU7Ci0gICAgICAgICAgICBhcHBlbmQobV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlm
aWVyLCB0b2tlbi5wdWJsaWNJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgYXBwZW5kKG1fZG9j
dHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllciwgdG9rZW4ucHVibGljSWRlbnRpZmllcigpLmFz
U3RyaW5nKCkpOwogICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9oYXNTeXN0ZW1JZGVudGlm
aWVyID0gdHJ1ZTsKICAgICAgICAgICAgIGFwcGVuZChtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlk
ZW50aWZpZXIsIHRva2VuLnN5c3RlbUlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBtX2RvY3R5
cGVEYXRhLT5tX2ZvcmNlUXVpcmtzID0gdG9rZW4uZG9jdHlwZUZvcmNlc1F1aXJrcygpOwpAQCAt
MjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRh
ZzoKICAgICAgICAgICAgIG1fYXR0cmlidXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRva2Vu
LmF0dHJpYnV0ZXMoKS5zaXplKCkpOwogICAgICAgICAgICAgZm9yIChWZWN0b3I8Q29tcGFjdEhU
TUxUb2tlbjo6QXR0cmlidXRlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0b2tlbi5hdHRyaWJ1dGVz
KCkuYmVnaW4oKTsgaXQgIT0gdG9rZW4uYXR0cmlidXRlcygpLmVuZCgpOyArK2l0KSB7Ci0gICAg
ICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBuYW1lKG51bGxBdG9tLCBpdC0+bmFtZSwgbnVsbEF0
b20pOworICAgICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgbmFtZShudWxsQXRvbSwgaXQtPm5h
bWUuYXNTdHJpbmcoKSwgbnVsbEF0b20pOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGlzIE5eMiBmb3IgdGhlIG51bWJlciBvZiBhdHRyaWJ1dGVzLgogICAgICAgICAgICAgICAgIGlm
ICghZmluZEF0dHJpYnV0ZUluVmVjdG9yKG1fYXR0cmlidXRlcywgbmFtZSkpCiAgICAgICAgICAg
ICAgICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKG5hbWUsIGl0LT52YWx1ZSkp
OwpAQCAtMjEwLDE3ICsyMTAsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIEZhbGwgdGhy
b3VnaCEKICAgICAgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzoKICAgICAgICAgICAgIG1fc2Vs
ZkNsb3NpbmcgPSB0b2tlbi5zZWxmQ2xvc2luZygpOwotICAgICAgICAgICAgbV9uYW1lID0gdG9r
ZW4uZGF0YSgpOworICAgICAgICAgICAgbV9uYW1lID0gdG9rZW4uZGF0YSgpLmFzU3RyaW5nKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6Ci0g
ICAgICAgICAgICBtX2RhdGEgPSB0b2tlbi5kYXRhKCk7CisgICAgICAgICAgICBtX2RhdGEgPSB0
b2tlbi5kYXRhKCkuYXNTdHJpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEhUTUxUb2tlbjo6Q2hhcmFjdGVyOgotICAgICAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnMg
PSB0b2tlbi5kYXRhKCkuY2hhcmFjdGVycygpOwotICAgICAgICAgICAgbV9leHRlcm5hbENoYXJh
Y3RlcnNMZW5ndGggPSB0b2tlbi5kYXRhKCkubGVuZ3RoKCk7CisgICAgICAgIGNhc2UgSFRNTFRv
a2VuOjpDaGFyYWN0ZXI6IHsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nID0gdG9r
ZW4uZGF0YSgpLmFzU3RyaW5nKCk7CisgICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9
IHN0cmluZy5jaGFyYWN0ZXJzKCk7CisgICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVyc0xl
bmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICAgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IHRv
a2VuLmlzQWxsOEJpdERhdGEoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBsaWtl
IGEgc3Ryb25nZXIgQVNTRVJUIGhlcmU6CisgICAgICAgICAgICAvLyBBU1NFUlQoc3RyaW5nLmlz
OEJpdCgpID09IHRva2VuLmlzQWxsOEJpdERhdGEoKSk7CisgICAgICAgICAgICAvLyBidXQgY3Vy
cmVudGx5IHRoYXQgZmlyZXMsIGxpa2VseSBkdWUgdG8gYnVncyBpbiBIVE1MVG9rZW5pemVyCisg
ICAgICAgICAgICAvLyBub3Qgc2V0dGluZyBpc0FsbDhCaXREYXRhIGluIGFsbCB0aGUgdGltZXMg
aXQgY291bGQuCisgICAgICAgICAgICBBU1NFUlQoIXRva2VuLmlzQWxsOEJpdERhdGEoKSB8fCBz
dHJpbmcuaXM4Qml0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
fQogICAgIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKaW5kZXggODc0NDMyZTYwMWNhOGY2YzcxOGZlNDBjNDky
MWQ5MTk2M2QxYjM2Yy4uMDViMmVlZjUyYWQ4MDk1ZmE1MTQ0ZmNhNzdmNDAwYTYyMmFkZjhhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFy
c2VyLmNwcApAQCAtNjksNjUgKzY5LDY3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFhTU0luZm9z
QXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBYU1NJbmZvU3RyZWFtJiB4CiAKIHN0
YXRpYyBib29sIHRva2VuRXhpdHNGb3JlaWduQ29udGVudChjb25zdCBDb21wYWN0SFRNTFRva2Vu
JiB0b2tlbikKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBjb3BpZWQgZnJvbSBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQgYW5kIGNoYW5nZWQgdG8gdXNlIHRo
cmVhZFNhZmVNYXRjaC4KLSAgICBjb25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7
Ci0gICAgcmV0dXJuIHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBiVGFnKQotICAgICAgICB8fCB0
aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgYmlnVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0
Y2godGFnTmFtZSwgYmxvY2txdW90ZVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRh
Z05hbWUsIGJvZHlUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBiclRh
ZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGNlbnRlclRhZykKLSAgICAg
ICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGNvZGVUYWcpCi0gICAgICAgIHx8IHRocmVh
ZFNhZmVNYXRjaCh0YWdOYW1lLCBkZFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRh
Z05hbWUsIGRpdlRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGRsVGFn
KQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgZHRUYWcpCi0gICAgICAgIHx8
IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBlbVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1h
dGNoKHRhZ05hbWUsIGVtYmVkVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFt
ZSwgaDFUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBoMlRhZykKLSAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGgzVGFnKQotICAgICAgICB8fCB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgaDRUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0
YWdOYW1lLCBoNVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGg2VGFn
KQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaGVhZFRhZykKLSAgICAgICAg
fHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGhyVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZl
TWF0Y2godGFnTmFtZSwgaVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUs
IGltZ1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGxpVGFnKQotICAg
ICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbGlzdGluZ1RhZykKLSAgICAgICAgfHwg
dGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG1lbnVUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVN
YXRjaCh0YWdOYW1lLCBtZXRhVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFt
ZSwgbm9iclRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG9sVGFnKQot
ICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgcFRhZykKLSAgICAgICAgfHwgdGhy
ZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHByZVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIHJ1YnlUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBz
VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc21hbGxUYWcpCi0gICAg
ICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBzcGFuVGFnKQotICAgICAgICB8fCB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgc3Ryb25nVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0
Y2godGFnTmFtZSwgc3RyaWtlVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFt
ZSwgc3ViVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc3VwVGFnKQot
ICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgdGFibGVUYWcpCi0gICAgICAgIHx8
IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0dFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1h
dGNoKHRhZ05hbWUsIHVUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB1
bFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHZhclRhZykKLSAgICAg
ICAgfHwgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBmb250VGFnKSAmJiAodG9rZW4uZ2V0QXR0
cmlidXRlSXRlbShjb2xvckF0dHIpIHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oZmFjZUF0dHIp
IHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oc2l6ZUF0dHIpKSk7CisgICAgLy8gRklYTUU6IFRo
aXMgaXMgY29waWVkIGZyb20gSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25D
b250ZW50IGFuZCBjaGFuZ2VkIHRvIHVzZSB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2guCisgICAg
Y29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgcmV0dXJu
IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiVGFnKQorICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYmlnVGFnKQorICAgICAgICB8fCB0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYmxvY2txdW90ZVRhZykKKyAgICAgICAgfHwgdGhy
ZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJvZHlUYWcpCisgICAgICAgIHx8IHRocmVh
ZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiclRhZykKKyAgICAgICAgfHwgdGhyZWFkU2Fm
ZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGNlbnRlclRhZykKKyAgICAgICAgfHwgdGhyZWFkU2Fm
ZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGNvZGVUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVI
VE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBkZFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIGRpdlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1l
c01hdGNoKHRhZ05hbWUsIGRsVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0
Y2godGFnTmFtZSwgZHRUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0
YWdOYW1lLCBlbVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIGVtYmVkVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgaDFUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBo
MlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGgzVGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaDRUYWcpCisg
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoNVRhZykKKyAgICAg
ICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGg2VGFnKQorICAgICAgICB8
fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaGVhZFRhZykKKyAgICAgICAgfHwg
dGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGhyVGFnKQorICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2Fm
ZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGltZ1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIGxpVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgbGlzdGluZ1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIG1lbnVUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFt
ZXNNYXRjaCh0YWdOYW1lLCBtZXRhVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgbm9iclRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01h
dGNoKHRhZ05hbWUsIG9sVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgcFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIHByZVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUs
IHJ1YnlUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBz
VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc21hbGxU
YWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzcGFuVGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3Ryb25nVGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3RyaWtlVGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3ViVGFnKQor
ICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3VwVGFnKQorICAg
ICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdGFibGVUYWcpCisgICAg
ICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0dFRhZykKKyAgICAgICAg
fHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHVUYWcpCisgICAgICAgIHx8IHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB1bFRhZykKKyAgICAgICAgfHwgdGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHZhclRhZykKKyAgICAgICAgfHwgKHRocmVhZFNh
ZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBmb250VGFnKSAmJiAodG9rZW4uZ2V0QXR0cmlidXRl
SXRlbShjb2xvckF0dHIpIHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oZmFjZUF0dHIpIHx8IHRv
a2VuLmdldEF0dHJpYnV0ZUl0ZW0oc2l6ZUF0dHIpKSk7CiB9CiAKIHN0YXRpYyBib29sIHRva2Vu
RXhpdHNTVkcoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgY29uc3QgU3Ry
aW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2Fz
ZSh0YWdOYW1lLCBTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAg
Ly8gRklYTUU6IEl0J3MgdmVyeSBmcmFnaWxlIHRoYXQgd2Ugc3BlY2lhbCBjYXNlIGZvcmVpZ25P
YmplY3QgaGVyZSB0byBiZSBjYXNlLWluc2Vuc2l0aXZlLgorICAgIC8vIEZJWE1FOiBVc2luZyBD
YXNlRm9sZGluZ0hhc2g6OmVxdWFsIGluc3RlYWQgb2YgZXF1YWxJZ25vcmluZ0Nhc2UsIGFzIGVx
dWFsSWdub3JpbmdDYXNlCisgICAgLy8gd2FudHMgbm9uLWNvbnN0IFN0cmluZ0ltcGwqIChldmVu
IHRob3VnaCBpdCBuZXZlciBtb2RpZmllcyB0aGVtKS4KKyAgICByZXR1cm4gQ2FzZUZvbGRpbmdI
YXNoOjplcXVhbCh0b2tlbi5kYXRhKCkuYXNTdHJpbmdJbXBsKCksIFNWR05hbWVzOjpmb3JlaWdu
T2JqZWN0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKIHN0YXRpYyBib29sIHRva2VuRXhp
dHNNYXRoKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGNvcGllZCBmcm9tIEhUTUxFbGVtZW50U3RhY2s6OmlzTWF0aE1MVGV4dEludGVncmF0
aW9uUG9pbnQgYW5kIGNoYW5nZWQgdG8gdXNlIHRocmVhZFNhZmVNYXRjaC4KLSAgICBjb25zdCBT
dHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgY29uc3QgSFRNTElkZW50aWZpZXIm
IHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CiAgICAgcmV0dXJuIHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBNYXRoTUxOYW1lczo6bWlUYWcpCiAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBNYXRoTUxOYW1lczo6bW9UYWcpCiAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBNYXRoTUxOYW1lczo6bW5UYWcpCkBAIC0xOTYsNyArMTk4LDcgQEAgdm9pZCBCYWNrZ3Jv
dW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZSgpCiBib29sIEJhY2tncm91bmRIVE1MUGFyc2Vy
OjpzaW11bGF0ZVRyZWVCdWlsZGVyKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQogewog
ICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZykgewotICAgICAgICBj
b25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgICAgIGNvbnN0IEhUTUxJ
ZGVudGlmaWVyJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwogICAgICAgICBpZiAodGhyZWFkU2Fm
ZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpzdmdUYWcpKQogICAgICAgICAgICAgbV9uYW1lc3Bh
Y2VTdGFjay5hcHBlbmQoU1ZHKTsKICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBNYXRoTUxOYW1lczo6bWF0aFRhZykpCkBAIC0yMDgsMzAgKzIxMCwzMCBAQCBib29sIEJhY2tn
cm91bmRIVE1MUGFyc2VyOjpzaW11bGF0ZVRyZWVCdWlsZGVyKGNvbnN0IENvbXBhY3RIVE1MVG9r
ZW4mIHRva2VuKQogICAgICAgICAgICAgbV9uYW1lc3BhY2VTdGFjay5hcHBlbmQoSFRNTCk7CiAg
ICAgICAgIGlmICghaW5Gb3JlaWduQ29udGVudCgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyBqdXN0IGEgY29weSBvZiBUb2tlbml6ZXI6OnVwZGF0ZVN0YXRlRm9yIHdoaWNoIHVz
ZXMgdGhyZWFkU2FmZU1hdGNoZXMuCi0gICAgICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRh
Z05hbWUsIHRleHRhcmVhVGFnKSB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgdGl0bGVUYWcp
KQorICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0ZXh0
YXJlYVRhZykgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHRpdGxlVGFnKSkK
ICAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkNE
QVRBU3RhdGUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUs
IHBsYWludGV4dFRhZykpCisgICAgICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgcGxhaW50ZXh0VGFnKSkKICAgICAgICAgICAgICAgICBtX3Rva2VuaXpl
ci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UExBSU5URVhUU3RhdGUpOwotICAgICAgICAgICAg
ZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHNjcmlwdFRhZykpCisgICAgICAgICAg
ICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkK
ICAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6U2Ny
aXB0RGF0YVN0YXRlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBzdHlsZVRhZykKLSAgICAgICAgICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFt
ZSwgaWZyYW1lVGFnKQotICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCB4bXBUYWcpCi0gICAgICAgICAgICAgICAgfHwgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBu
b2VtYmVkVGFnKSAmJiBtX29wdGlvbnMucGx1Z2luc0VuYWJsZWQpCi0gICAgICAgICAgICAgICAg
fHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG5vZnJhbWVzVGFnKQotICAgICAgICAgICAgICAg
IHx8ICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbm9zY3JpcHRUYWcpICYmIG1fb3B0aW9ucy5z
Y3JpcHRFbmFibGVkKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCBzdHlsZVRhZykKKyAgICAgICAgICAgICAgICB8fCB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2godGFnTmFtZSwgaWZyYW1lVGFnKQorICAgICAgICAgICAgICAgIHx8IHRocmVh
ZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB4bXBUYWcpCisgICAgICAgICAgICAgICAgfHwg
KHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBub2VtYmVkVGFnKSAmJiBtX29wdGlv
bnMucGx1Z2luc0VuYWJsZWQpCisgICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1l
c01hdGNoKHRhZ05hbWUsIG5vZnJhbWVzVGFnKQorICAgICAgICAgICAgICAgIHx8ICh0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbm9zY3JpcHRUYWcpICYmIG1fb3B0aW9ucy5zY3Jp
cHRFbmFibGVkKSkKICAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRv
a2VuaXplcjo6UkFXVEVYVFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICh0b2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpIHsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB0
YWdOYW1lID0gdG9rZW4uZGF0YSgpOworICAgICAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFn
TmFtZSA9IHRva2VuLmRhdGEoKTsKICAgICAgICAgaWYgKChtX25hbWVzcGFjZVN0YWNrLmxhc3Qo
KSA9PSBTVkcgJiYgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpzdmdUYWcpKQog
ICAgICAgICAgICAgfHwgKG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IE1hdGhNTCAmJiB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1hdGhUYWcpKQogICAgICAgICAgICAg
fHwgKG1fbmFtZXNwYWNlU3RhY2suY29udGFpbnMoU1ZHKSAmJiBtX25hbWVzcGFjZVN0YWNrLmxh
c3QoKSA9PSBIVE1MICYmIHRva2VuRXhpdHNTVkcodG9rZW4pKQogICAgICAgICAgICAgfHwgKG1f
bmFtZXNwYWNlU3RhY2suY29udGFpbnMoTWF0aE1MKSAmJiBtX25hbWVzcGFjZVN0YWNrLmxhc3Qo
KSA9PSBIVE1MICYmIHRva2VuRXhpdHNNYXRoKHRva2VuKSkpCiAgICAgICAgICAgICBtX25hbWVz
cGFjZVN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBzY3JpcHRUYWcpKSB7CisgICAgICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgc2NyaXB0VGFnKSkgewogICAgICAgICAgICAgaWYgKCFpbkZvcmVpZ25Db250ZW50
KCkpCiAgICAgICAgICAgICAgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6
OkRhdGFTdGF0ZSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggMGM2NmZjMWFjOWZm
YTY0OWY1M2JkMTg0MzQ2M2FiMjZlNDJmZGU1MS4uNjNkMDc1MDY0N2Y5MmNkMTZlNzc4MGY4YzRk
NzNjMTgyZWJiNzZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NT
UHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1By
ZWxvYWRTY2FubmVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNTU1ByZWxvYWRT
Y2FubmVyLmgiCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmgi
CisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21z
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY0LDE1ICs2NSwxNiBAQCB2b2lkIENTU1By
ZWxvYWRTY2FubmVyOjpzY2FuKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlY3RvciYgZGF0YSwgUHJl
bG9hZFJlcXVlc3RTdAogICAgIHNjYW5Db21tb24oZGF0YS5kYXRhKCksIGRhdGEuZGF0YSgpICsg
ZGF0YS5zaXplKCksIHJlcXVlc3RzKTsKIH0KIAotdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nh
bihjb25zdCBTdHJpbmcmIGRhdGEsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJiByZXF1ZXN0cykKK3Zv
aWQgQ1NTUHJlbG9hZFNjYW5uZXI6OnNjYW4oY29uc3QgSFRNTElkZW50aWZpZXImIGlkZW50aWZp
ZXIsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJiByZXF1ZXN0cykKIHsKLSAgICBpZiAoZGF0YS5pczhC
aXQoKSkgewotICAgICAgICBjb25zdCBMQ2hhciogYmVnaW4gPSBkYXRhLmNoYXJhY3RlcnM4KCk7
Ci0gICAgICAgIHNjYW5Db21tb24oYmVnaW4sIGJlZ2luICsgZGF0YS5sZW5ndGgoKSwgcmVxdWVz
dHMpOworICAgIGNvbnN0IFN0cmluZ0ltcGwqIGRhdGEgPSBpZGVudGlmaWVyLmFzU3RyaW5nSW1w
bCgpOworICAgIGlmIChkYXRhLT5pczhCaXQoKSkgeworICAgICAgICBjb25zdCBMQ2hhciogYmVn
aW4gPSBkYXRhLT5jaGFyYWN0ZXJzOCgpOworICAgICAgICBzY2FuQ29tbW9uKGJlZ2luLCBiZWdp
biArIGRhdGEtPmxlbmd0aCgpLCByZXF1ZXN0cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgY29uc3QgVUNoYXIqIGJlZ2luID0gZGF0YS5jaGFyYWN0ZXJzMTYoKTsKLSAgICBzY2FuQ29t
bW9uKGJlZ2luLCBiZWdpbiArIGRhdGEubGVuZ3RoKCksIHJlcXVlc3RzKTsKKyAgICBjb25zdCBV
Q2hhciogYmVnaW4gPSBkYXRhLT5jaGFyYWN0ZXJzMTYoKTsKKyAgICBzY2FuQ29tbW9uKGJlZ2lu
LCBiZWdpbiArIGRhdGEtPmxlbmd0aCgpLCByZXF1ZXN0cyk7CiB9CiAKIGlubGluZSB2b2lkIENT
U1ByZWxvYWRTY2FubmVyOjp0b2tlbml6ZShVQ2hhciBjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmgKaW5kZXggNGI2OWJjMzIzNTZiNGMyMTgxMzNm
YjEzZGNhNDIxMGZiM2I2ZjZhNC4uOWMyMDkxMDExZDA3MjdlOWVjNjVmOTdkNWNhOWQ3MDA4NWE3
MTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNj
YW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5l
ci5oCkBAIC0zMyw2ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSFRN
TElkZW50aWZpZXI7CisKIGNsYXNzIENTU1ByZWxvYWRTY2FubmVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDU1NQcmVsb2FkU2Nhbm5lcik7CiBwdWJsaWM6CkBAIC00Miw3ICs0NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICB2b2lkIHNjYW4oY29uc3QgSFRNTFRv
a2VuOjpEYXRhVmVjdG9yJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mKTsKLSAgICB2b2lkIHNjYW4o
Y29uc3QgU3RyaW5nJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mKTsKKyAgICB2b2lkIHNjYW4oY29u
c3QgSFRNTElkZW50aWZpZXImLCBQcmVsb2FkUmVxdWVzdFN0cmVhbSYpOwogCiBwcml2YXRlOgog
ICAgIGVudW0gU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
Q29tcGFjdEhUTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0
SFRNTFRva2VuLmNwcAppbmRleCBiNDc4OGEwN2U1YTA2ZjIxZDQ1ODA5ZWFhZjdiOTZlYTE4ZDgx
MDM0Li43NmRkYzZiNmM3NmUzYTU1MGM0NmVjZWQwNjkwYzkwOGEyNTNkN2Q5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcApAQCAtMzgsNyAr
MzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzQ29tcGFjdEhU
TUxUb2tlbiAgewogICAgIHVuc2lnbmVkIGJpdGZpZWxkczsKLSAgICBTdHJpbmcgbmFtZTsKKyAg
ICBIVE1MSWRlbnRpZmllciBkYXRhOwogICAgIFZlY3RvcjxBdHRyaWJ1dGU+IHZlY3RvcjsKICAg
ICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uOwogfTsKQEAgLTU2LDEwICs1NiwxMCBAQCBDb21w
YWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tlbiogdG9rZW4sIGNv
bnN0IFRleHRQb3NpdGlvbiYgdAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6IHsKLSAgICAgICAgbV9kYXRh
ID0gU3RyaW5nKHRva2VuLT5uYW1lKCkpOworICAgICAgICBtX2RhdGEgPSBIVE1MSWRlbnRpZmll
cih0b2tlbi0+bmFtZSgpLCBMaWtlbHk4Qml0KTsKICAgICAgICAgLy8gVGhlcmUgaXMgb25seSAx
IERPQ1RZUEUgdG9rZW4gcGVyIGRvY3VtZW50LCBzbyB0byBhdm9pZCBpbmNyZWFzaW5nIHRoZQog
ICAgICAgICAvLyBzaXplIG9mIENvbXBhY3RIVE1MVG9rZW4sIHdlIGp1c3QgdXNlIHRoZSBtX2F0
dHJpYnV0ZXMgdmVjdG9yLgotICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShT
dHJpbmcodG9rZW4tPnB1YmxpY0lkZW50aWZpZXIoKSksIFN0cmluZyh0b2tlbi0+c3lzdGVtSWRl
bnRpZmllcigpKSkpOworICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShIVE1M
SWRlbnRpZmllcih0b2tlbi0+cHVibGljSWRlbnRpZmllcigpLCBMaWtlbHk4Qml0KSwgU3RyaW5n
KHRva2VuLT5zeXN0ZW1JZGVudGlmaWVyKCkpKSk7CiAgICAgICAgIG1fZG9jdHlwZUZvcmNlc1F1
aXJrcyA9IHRva2VuLT5mb3JjZVF1aXJrcygpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC02
OCwxOSArNjgsMTcgQEAgQ29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbihjb25zdCBI
VE1MVG9rZW4qIHRva2VuLCBjb25zdCBUZXh0UG9zaXRpb24mIHQKICAgICBjYXNlIEhUTUxUb2tl
bjo6U3RhcnRUYWc6CiAgICAgICAgIG1fYXR0cmlidXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHRva2VuLT5hdHRyaWJ1dGVzKCkuc2l6ZSgpKTsKICAgICAgICAgZm9yIChWZWN0b3I8SFRNTFRv
a2VuOjpBdHRyaWJ1dGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRva2VuLT5hdHRyaWJ1dGVzKCku
YmVnaW4oKTsgaXQgIT0gdG9rZW4tPmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytpdCkKLSAgICAgICAg
ICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJ
ZlBvc3NpYmxlKGl0LT5uYW1lKSwgU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoaXQt
PnZhbHVlKSkpOworICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoSFRN
TElkZW50aWZpZXIoaXQtPm5hbWUsIExpa2VseThCaXQpLCBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0
SWZQb3NzaWJsZShpdC0+dmFsdWUpKSk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCEKICAgICBj
YXNlIEhUTUxUb2tlbjo6RW5kVGFnOgogICAgICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4tPnNl
bGZDbG9zaW5nKCk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCEKICAgICBjYXNlIEhUTUxUb2tl
bjo6Q29tbWVudDoKLSAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOgotICAgICAgICBpZiAo
dG9rZW4tPmlzQWxsOEJpdERhdGEoKSkgewotICAgICAgICAgICAgbV9kYXRhID0gU3RyaW5nOjpt
YWtlOEJpdEZyb20xNkJpdFNvdXJjZSh0b2tlbi0+ZGF0YSgpKTsKLSAgICAgICAgICAgIG1faXNB
bGw4Qml0RGF0YSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9kYXRhID0g
U3RyaW5nKHRva2VuLT5kYXRhKCkpOworICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6IHsK
KyAgICAgICAgbV9pc0FsbDhCaXREYXRhID0gdG9rZW4tPmlzQWxsOEJpdERhdGEoKTsKKyAgICAg
ICAgbV9kYXRhID0gSFRNTElkZW50aWZpZXIodG9rZW4tPmRhdGEoKSwgdG9rZW4tPmlzQWxsOEJp
dERhdGEoKSA/IEZvcmNlOEJpdCA6IEZvcmNlMTZCaXQpOwogICAgICAgICBicmVhazsKKyAgICB9
CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxU
b2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCmlu
ZGV4IGM4OThmNmU2ZjE0ZWM4OTEyYjMyZmExMzE1Yzc3OGE4N2UzOTg5ODMuLmZmYTRhZTQzY2Qx
ZjNlYmYwZTNlYmMzZTg5ZWE0OTRmNjJmNTMzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShUSFJFQURFRF9IVE1MX1BBUlNFUikKIAorI2luY2x1ZGUgIkhUTUxJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiSFRNTFRva2VuLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00NCwxMyArNDUsMTMgQEAgY2xhc3MgUXVhbGlmaWVkTmFt
ZTsKIGNsYXNzIENvbXBhY3RIVE1MVG9rZW4gewogcHVibGljOgogICAgIHN0cnVjdCBBdHRyaWJ1
dGUgewotICAgICAgICBBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQorICAgICAgICBBdHRyaWJ1dGUoY29uc3QgSFRNTElkZW50aWZpZXImIG5hbWUsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgICAgICA6IG5hbWUobmFtZSkKICAgICAgICAgICAg
ICwgdmFsdWUodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyBu
YW1lOworICAgICAgICBIVE1MSWRlbnRpZmllciBuYW1lOwogICAgICAgICBTdHJpbmcgdmFsdWU7
CiAgICAgfTsKIApAQCAtNTksNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NhZmVUb1Nl
bmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdDsKIAogICAgIEhUTUxUb2tlbjo6VHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRva2VuOjpUeXBlPihtX3R5cGUpOyB9Ci0g
ICAgY29uc3QgU3RyaW5nJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgY29u
c3QgSFRNTElkZW50aWZpZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBi
b29sIHNlbGZDbG9zaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zZWxmQ2xvc2luZzsgfQogICAgIGJv
b2wgaXNBbGw4Qml0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbGw4Qml0RGF0YTsgfQogICAg
IGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9h
dHRyaWJ1dGVzOyB9CkBAIC02OCw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXJlIGlz
IG9ubHkgMSBET0NUWVBFIHRva2VuIHBlciBkb2N1bWVudCwgc28gdG8gYXZvaWQgaW5jcmVhc2lu
ZyB0aGUKICAgICAvLyBzaXplIG9mIENvbXBhY3RIVE1MVG9rZW4sIHdlIGp1c3QgdXNlIHRoZSBt
X2F0dHJpYnV0ZXMgdmVjdG9yLgotICAgIGNvbnN0IFN0cmluZyYgcHVibGljSWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlc1swXS5uYW1lOyB9CisgICAgY29uc3QgSFRNTElk
ZW50aWZpZXImIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXNb
MF0ubmFtZTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1fYXR0cmlidXRlc1swXS52YWx1ZTsgfQogICAgIGJvb2wgZG9jdHlwZUZvcmNlc1F1
aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdHlwZUZvcmNlc1F1aXJrczsgfQogCkBAIC03OCw3
ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pc0FsbDhCaXREYXRhIDogMTsKICAg
ICB1bnNpZ25lZCBtX2RvY3R5cGVGb3JjZXNRdWlya3M6IDE7CiAKLSAgICBTdHJpbmcgbV9kYXRh
OyAvLyAibmFtZSIsICJjaGFyYWN0ZXJzIiwgb3IgImRhdGEiIGRlcGVuZGluZyBvbiBtX3R5cGUK
KyAgICBIVE1MSWRlbnRpZmllciBtX2RhdGE7IC8vICJuYW1lIiwgImNoYXJhY3RlcnMiLCBvciAi
ZGF0YSIgZGVwZW5kaW5nIG9uIG1fdHlwZQogICAgIFZlY3RvcjxBdHRyaWJ1dGU+IG1fYXR0cmli
dXRlczsKICAgICBUZXh0UG9zaXRpb24gbV90ZXh0UG9zaXRpb247CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNmVjMTY4
NjJlYzY4YzYwZGU1NTU0ZTQ1OTIwZGZjYmNjNzgwNjUxMy4uMjFmZmQ4ZDU4MTBhYzY5NjJhZjhm
ZjQzODY5Y2VhZDY0MGYwZDVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRG9j
dW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkhUTUxQYXJzZXJTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VyVGhyZWFk
LmgiCkBAIC02NTcsNiArNjU4LDggQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0QmFj
a2dyb3VuZFBhcnNlcigpCiAgICAgQVNTRVJUKCFtX2hhdmVCYWNrZ3JvdW5kUGFyc2VyKTsKICAg
ICBtX2hhdmVCYWNrZ3JvdW5kUGFyc2VyID0gdHJ1ZTsKIAorICAgIEhUTUxJZGVudGlmaWVyOjpp
bml0KCk7CisKICAgICBSZWZQdHI8V2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5kSFRNTFBhcnNlcj4g
PiByZWZlcmVuY2UgPSBXZWFrUmVmZXJlbmNlPEJhY2tncm91bmRIVE1MUGFyc2VyPjo6Y3JlYXRl
VW5ib3VuZCgpOwogICAgIG1fYmFja2dyb3VuZFBhcnNlciA9IFdlYWtQdHI8QmFja2dyb3VuZEhU
TUxQYXJzZXI+KHJlZmVyZW5jZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxJZGVudGlmaWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYWM4ZGM4MTE0MjM5NmYzOGI4NTVhNTc4N2Yx
OWJhMTQ3ZTc0YzEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTElkZW50aWZpZXIuY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKKworI2luY2x1ZGUgIkhUTUxJZGVudGlm
aWVyLmgiCisKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CisKK3R5cGVkZWYgc3RkOjpwYWlyPHVuc2lnbmVkLCBTdHJpbmdJbXBsKj4gSWRlbnRpZmll
ckVudHJ5OwordHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBJZGVudGlmaWVyRW50cnksIEFscmVh
ZHlIYXNoZWQ+IElkZW50aWZpZXJUYWJsZTsKKwordW5zaWduZWQgSFRNTElkZW50aWZpZXI6Om1h
eE5hbWVMZW5ndGggPSAwOworCitzdGF0aWMgSWRlbnRpZmllclRhYmxlJiBpZGVudGlmaWVyVGFi
bGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSWRlbnRpZmllclRhYmxlLCB0YWJsZSwg
KCkpOworICAgIHJldHVybiB0YWJsZTsKK30KKworI2lmbmRlZiBOREVCVUcKK2Jvb2wgSFRNTElk
ZW50aWZpZXI6Omhhc0luZGV4KGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZykKK3sKKyAgICBjb25z
dCBJZGVudGlmaWVyVGFibGUmIHRhYmxlID0gaWRlbnRpZmllclRhYmxlKCk7CisgICAgcmV0dXJu
IHRhYmxlLmNvbnRhaW5zKHN0cmluZy0+aGFzaCgpKTsKK30KKyNlbmRpZgorCit1bnNpZ25lZCBI
VE1MSWRlbnRpZmllcjo6ZmluZEluZGV4KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgpCit7CisgICAgLy8gY29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMgaXMgdGhlIGZ1
bmN0aW9uIFN0cmluZ0ltcGw6Omhhc2goKSB1c2VzLgorICAgIHVuc2lnbmVkIGhhc2ggPSBTdHJp
bmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnMsIGxlbmd0aCk7
CisgICAgY29uc3QgSWRlbnRpZmllclRhYmxlJiB0YWJsZSA9IGlkZW50aWZpZXJUYWJsZSgpOwor
ICAgIEFTU0VSVCghdGFibGUuaXNFbXB0eSgpKTsKKworICAgIElkZW50aWZpZXJUYWJsZTo6Y29u
c3RfaXRlcmF0b3IgaXQgPSB0YWJsZS5maW5kKGhhc2gpOworICAgIGlmIChpdCA9PSB0YWJsZS5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRJbmRleDsKKyAgICByZXR1cm4gaXQtPnZhbHVl
LmZpcnN0OworfQorCitjb25zdCB1bnNpZ25lZCBrSFRNTE5hbWVzSW5kZXhPZmZzZXQgPSAwOwor
Y29uc3QgdW5zaWduZWQga0hUTUxBdHRyc0luZGV4T2Zmc2V0ID0gMTAwMDsKK0NPTVBJTEVfQVNT
RVJUKGtIVE1MQXR0cnNJbmRleE9mZnNldCA+IEhUTUxUYWdzQ291bnQsIGtIVE1MQXR0cnNJbmRl
eE9mZnNldF9zaG91bGRfYmVfbGFyZ2VyX3RoYW5fSFRNTFRhZ3NDb3VudCk7CisKK3N0YXRpYyBj
b25zdCBTdHJpbmcmIG5hbWVGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICB1bnNpZ25l
ZCBhZGp1c3RlZEluZGV4OworICAgIFF1YWxpZmllZE5hbWUqKiBuYW1lczsKKyAgICBpZiAoaW5k
ZXggPCBrSFRNTEF0dHJzSW5kZXhPZmZzZXQpIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwga0hU
TUxOYW1lc0luZGV4T2Zmc2V0ICsgSFRNTFRhZ3NDb3VudCk7CisgICAgICAgIGFkanVzdGVkSW5k
ZXggPSBpbmRleCAtIGtIVE1MTmFtZXNJbmRleE9mZnNldDsKKyAgICAgICAgbmFtZXMgPSBnZXRI
VE1MVGFncygpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IGtIVE1MQXR0
cnNJbmRleE9mZnNldCArIEhUTUxBdHRyc0NvdW50KTsKKyAgICAgICAgYWRqdXN0ZWRJbmRleCA9
IGluZGV4IC0ga0hUTUxBdHRyc0luZGV4T2Zmc2V0OworICAgICAgICBuYW1lcyA9IGdldEhUTUxB
dHRycygpOworICAgIH0KKyAgICAvLyBIVE1MQXR0cnMgYW5kIEhUTUxOYW1lcyBtYXkgaGF2ZSBj
b2xsaXNpb25zLCBidXQKKyAgICAvLyB3ZSBzaG91bGRuJ3QgY2FyZSB3aGljaCB3ZSBlbmRlZCB1
cCBzdG9yaW5nLCBzaW5jZSB0aGVpcgorICAgIC8vIGNvbXBvbmVudHMgYXJlIGFsbCBBdG9taWNT
dHJpbmdzIGFuZCBzaG91bGQgdXNlIHRoZSBzYW1lCisgICAgLy8gdW5kZXJseWluZyBTdHJpbmdJ
bXBsKi4KKyAgICByZXR1cm4gbmFtZXNbYWRqdXN0ZWRJbmRleF0tPmxvY2FsTmFtZSgpLnN0cmlu
ZygpOworfQorCitjb25zdCBTdHJpbmcmIEhUTUxJZGVudGlmaWVyOjphc1N0cmluZygpIGNvbnN0
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pbmRleCAhPSBpbnZh
bGlkSW5kZXgpCisgICAgICAgIHJldHVybiBuYW1lRm9ySW5kZXgobV9pbmRleCk7CisgICAgcmV0
dXJuIG1fc3RyaW5nOworfQorCitjb25zdCBTdHJpbmdJbXBsKiBIVE1MSWRlbnRpZmllcjo6YXNT
dHJpbmdJbXBsKCkgY29uc3QKK3sKKyAgICBpZiAobV9pbmRleCAhPSBpbnZhbGlkSW5kZXgpCisg
ICAgICAgIHJldHVybiBuYW1lRm9ySW5kZXgobV9pbmRleCkuaW1wbCgpOworICAgIHJldHVybiBt
X3N0cmluZy5pbXBsKCk7Cit9CisKK3ZvaWQgSFRNTElkZW50aWZpZXI6OmFkZE5hbWVzKFF1YWxp
ZmllZE5hbWUqKiBuYW1lcywgdW5zaWduZWQgbmFtZXNDb3VudCwgdW5zaWduZWQgaW5kZXhPZmZz
ZXQpCit7CisgICAgSWRlbnRpZmllclRhYmxlJiB0YWJsZSA9IGlkZW50aWZpZXJUYWJsZSgpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYW1lc0NvdW50OyArK2kpIHsKKyAgICAgICAg
U3RyaW5nSW1wbCogbmFtZSA9IG5hbWVzW2ldLT5sb2NhbE5hbWUoKS5pbXBsKCk7CisgICAgICAg
IHVuc2lnbmVkIGhhc2ggPSBuYW1lLT5oYXNoKCk7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0g
aSArIGluZGV4T2Zmc2V0OworICAgICAgICBJZGVudGlmaWVyRW50cnkgZW50cnkgPSB7IGluZGV4
LCBuYW1lIH07CisgICAgICAgIElkZW50aWZpZXJUYWJsZTo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9
IHRhYmxlLmFkZChoYXNoLCBlbnRyeSk7CisgICAgICAgIG1heE5hbWVMZW5ndGggPSBzdGQ6Om1h
eChtYXhOYW1lTGVuZ3RoLCBuYW1lLT5sZW5ndGgoKSk7CisgICAgICAgIC8vIEVuc3VyZSB3ZSdy
ZSB1c2luZyB0aGUgc2FtZSBoYXNoaW5nIGFsZ29yaXRobSB0byBnZXQgYW5kIHNldC4KKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsICFhZGRSZXN1bHQuaXNOZXdFbnRyeSB8fCBIVE1M
SWRlbnRpZmllcjo6ZmluZEluZGV4KG5hbWUtPmNoYXJhY3RlcnMoKSwgbmFtZS0+bGVuZ3RoKCkp
ID09IGluZGV4KTsKKyAgICAgICAgLy8gV2UgZXhwZWN0IHNvbWUgaGFzaCBjb2xsaXNpb25zLCBi
dXQgb25seSBmb3IgaWRlbnRpY2FsIHN0cmluZ3MuCisgICAgICAgIC8vIFNpbmNlIGFsbCBvZiB0
aGVzZSBuYW1lcyBhcmUgQXRvbWljU3RyaW5ncyBwb2ludGVycyBzaG91bGQgYmUgZXF1YWwuCisg
ICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCAhYWRkUmVzdWx0LmlzTmV3RW50cnkgfHwg
bmFtZSA9PSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNlY29uZCk7CisgICAgfQorfQorCit2
b2lkIEhUTUxJZGVudGlmaWVyOjppbml0KCkKK3sKKyAgICAvLyBUaGlzIGlzIHNhZmUgdG8gY2Fs
bCBmcm9tIGFueSB0aHJlYWQsIGJ1dCBtdXN0IGJlIGNhbGxlZCBiZWZvcmUKKyAgICAvLyB1c2lu
ZyBIVE1MSWRlbnRpZmllci4KKyAgICBzdGF0aWMgYm9vbCBpc0luaXRpYWxpemVkID0gZmFsc2U7
CisgICAgaWYgKGlzSW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpc0luaXRpYWxp
emVkID0gdHJ1ZTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXRvbWl6ZSBzbWFsbCB3aGl0
ZXNwYWNlIChcbiwgXG5cbiwgZXRjLikKKyAgICBhZGROYW1lcyhnZXRIVE1MVGFncygpLCBIVE1M
VGFnc0NvdW50LCBrSFRNTE5hbWVzSW5kZXhPZmZzZXQpOworICAgIGFkZE5hbWVzKGdldEhUTUxB
dHRycygpLCBIVE1MQXR0cnNDb3VudCwga0hUTUxBdHRyc0luZGV4T2Zmc2V0KTsKK30KKworfQor
CisjZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ1OGU3MjRhZWRhNzdh
YjQ1ZDc0ZmY5MmM4ZTM3OTI0YjY2ZTBkYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhUTUxJ
ZGVudGlmaWVyX2gKKyNkZWZpbmUgSFRNTElkZW50aWZpZXJfaAorCisjaWYgRU5BQkxFKFRIUkVB
REVEX0hUTUxfUEFSU0VSKQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUXVhbGlmaWVkTmFtZTsKKworZW51bSBDaGFyYWN0
ZXJXaWR0aCB7CisgICAgTGlrZWx5OEJpdCwKKyAgICBGb3JjZThCaXQsCisgICAgRm9yY2UxNkJp
dAorfTsKKworY2xhc3MgSFRNTElkZW50aWZpZXIgeworcHVibGljOgorICAgIEhUTUxJZGVudGlm
aWVyKCkgOiBtX2luZGV4KDApIHsgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFj
aXR5PgorICAgIEhUTUxJZGVudGlmaWVyKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNp
dHk+JiB2ZWN0b3IsIENoYXJhY3RlcldpZHRoIHdpZHRoKQorICAgIHsKKyAgICAgICAgLy8gQXZv
aWQgbG9va3VwcyBvZiBsb25nIG5hbWVzIHdlIGtub3cgYXJlIGdvaW5nIHRvIGZhaWwuCisgICAg
ICAgIGlmICh2ZWN0b3Iuc2l6ZSgpIDw9IG1heE5hbWVMZW5ndGgpIHsKKyAgICAgICAgICAgIG1f
aW5kZXggPSBmaW5kSW5kZXgodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7CisgICAgICAg
ICAgICBpZiAobV9pbmRleCAhPSBpbnZhbGlkSW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1faW5kZXggPSBpbnZhbGlkSW5kZXg7Cisg
ICAgICAgIGlmICh3aWR0aCA9PSBMaWtlbHk4Qml0KQorICAgICAgICAgICAgbV9zdHJpbmcgPSBT
dHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZSh2ZWN0b3IpOworICAgICAgICBlbHNlIGlm
ICh3aWR0aCA9PSBGb3JjZThCaXQpCisgICAgICAgICAgICBtX3N0cmluZyA9IFN0cmluZzo6bWFr
ZThCaXRGcm9tMTZCaXRTb3VyY2UodmVjdG9yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bV9zdHJpbmcgPSBTdHJpbmcodmVjdG9yKTsKKyAgICB9CisKKyAgICAvLyBhc1N0cmluZyBzaG91
bGQgb25seSBiZSB1c2VkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICBjb25zdCBTdHJpbmcmIGFz
U3RyaW5nKCkgY29uc3Q7CisgICAgLy8gYXNTdHJpbmdJbXBsKCkgaXMgc2FmZSB0byBjYWxsIGZy
b20gYW55IHRocmVhZC4KKyAgICBjb25zdCBTdHJpbmdJbXBsKiBhc1N0cmluZ0ltcGwoKSBjb25z
dDsKKworICAgIHN0YXRpYyB2b2lkIGluaXQoKTsKKworICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9B
bm90aGVyVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNTYWZlVG9TZW5kVG9Bbm90
aGVyVGhyZWFkKCk7IH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBzdGF0aWMgYm9vbCBoYXNJbmRl
eChjb25zdCBTdHJpbmdJbXBsKik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgaW52YWxpZEluZGV4ID0gLTE7CisgICAgc3RhdGljIHVuc2lnbmVkIG1heE5h
bWVMZW5ndGg7CisgICAgc3RhdGljIHVuc2lnbmVkIGZpbmRJbmRleChjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBhZGROYW1lcyhRdWFs
aWZpZWROYW1lKiogbmFtZXMsIHVuc2lnbmVkIG5hbWVzQ291bnQsIHVuc2lnbmVkIGluZGV4T2Zm
c2V0KTsKKworICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGEgdW5pb24uCisgICAgdW5zaWdu
ZWQgbV9pbmRleDsKKyAgICBTdHJpbmcgbV9zdHJpbmc7Cit9OworCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCA5NDQ3Y2ZlNmM4Yjc3N2Qw
MGYxOGNmODRkNmM3ZjJmYjQ5NWRkM2FiLi5iYWUyY2Q0NDhiZTBhYzU3ODc5YzlhNzIxZmI2NDAy
ZGI0ZDFlODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMu
aCIKIAogI2luY2x1ZGUgIkRlY2ltYWwuaCIKKyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KQEAgLTI3Nyw4ICsyNzgsMTIgQEAgYm9vbCBwYXJzZUhUTUxOb25O
ZWdhdGl2ZUludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQmIHZhbHVlKQogICAg
IHJldHVybiBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXJJbnRlcm5hbChzdGFydCwgc3RhcnQg
KyBsZW5ndGgsIHZhbHVlKTsKIH0KIAotc3RhdGljIGJvb2wgdGhyZWFkU2FmZUVxdWFsKFN0cmlu
Z0ltcGwqIGEsIFN0cmluZ0ltcGwqIGIpCitzdGF0aWMgYm9vbCB0aHJlYWRTYWZlRXF1YWwoY29u
c3QgU3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikKIHsKKyAgICBpZiAoYSA9PSBi
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBOb3RlOiBUaGlzIGhhc2ggY29tcGFyZSBp
cyBub3QgY29ycmVjdCBmb3IgYWxsIHBvc3NpYmxlIFN0cmluZ0ltcGxzLCBidXQKKyAgICAvLyBz
aW5jZSB3ZSdyZSBhbHdheXMgY29tcGFyaW5nIGFnYWluc3QgY29uc3RhbnRzLCBpdCdzIE9LLgog
ICAgIGlmIChhLT5oYXNoKCkgIT0gYi0+aGFzaCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIFN0cmluZ0hhc2g6OmVxdWFsKGEsIGIpOwpAQCAtMjg5LDkgKzI5NCw5IEBAIGJv
b2wgdGhyZWFkU2FmZU1hdGNoKGNvbnN0IFF1YWxpZmllZE5hbWUmIGEsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGIpCiAgICAgcmV0dXJuIHRocmVhZFNhZmVFcXVhbChhLmxvY2FsTmFtZSgpLmltcGwo
KSwgYi5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQogCi1ib29sIHRocmVhZFNhZmVNYXRjaChjb25z
dCBTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCitib29sIHRo
cmVhZFNhZmVNYXRjaChjb25zdCBIVE1MSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBxTmFtZSkKIHsKLSAgICByZXR1cm4gdGhyZWFkU2FmZUVxdWFsKGxvY2FsTmFt
ZS5pbXBsKCksIHFOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgcmV0dXJuIHRocmVhZFNh
ZmVFcXVhbChsb2NhbE5hbWUuYXNTdHJpbmdJbXBsKCksIHFOYW1lLmxvY2FsTmFtZSgpLmltcGwo
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlv
bXMuaAppbmRleCBhMDMxZTQ1Y2ZmMzIzNTNmMTQwYTBhMjAxOTViOWY5ZjM2MzI3YjNlLi5mMjJj
NDI4NDkzNzFjYmFiM2E3NzJlZjQwODlkZTA5YzM4MzZhZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBAIC0yNSw2ICsyNSw4IEBACiAjaWZu
ZGVmIEhUTUxQYXJzZXJJZGlvbXNfaAogI2RlZmluZSBIVE1MUGFyc2VySWRpb21zX2gKIAorI2lu
Y2x1ZGUgIkhUTUxJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgpAQCAtMzIsNyArMzQsNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWNpbWFsOwotY2xhc3MgUXVhbGlmaWVkTmFtZTsKIAog
Ly8gU3BhY2UgY2hhcmFjdGVycyBhcyBkZWZpbmVkIGJ5IHRoZSBIVE1MIHNwZWNpZmljYXRpb24u
CiBib29sIGlzSFRNTFNwYWNlKFVDaGFyKTsKQEAgLTkzLDcgKzk0LDE0IEBAIGlubGluZSBib29s
IGlzTm90SFRNTFNwYWNlKFVDaGFyIGNoYXJhY3RlcikKIH0KIAogYm9vbCB0aHJlYWRTYWZlTWF0
Y2goY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLWJvb2wgdGhy
ZWFkU2FmZU1hdGNoKGNvbnN0IFN0cmluZyYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKK2Jvb2wg
dGhyZWFkU2FmZU1hdGNoKGNvbnN0IEhUTUxJZGVudGlmaWVyJiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOworaW5saW5lIGJvb2wgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKGNvbnN0IEhUTUxJZGVu
dGlmaWVyJiB0YWdOYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKK3sKKyAgICAvLyBX
aGVuIHRoZSBRdWFsaWZpZWROYW1lIGlzIGtub3duIHRvIEhUTUxJZGVudGlmaWVyLAorICAgIC8v
IGFsbCB3ZSBoYXZlIHRvIGRvIGlzIGEgcG9pbnRlciBjb21wYXJlLgorICAgIEFTU0VSVChIVE1M
SWRlbnRpZmllcjo6aGFzSW5kZXgocU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKSk7CisgICAgcmV0
dXJuIHRhZ05hbWUuYXNTdHJpbmdJbXBsKCkgPT0gcU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpOwor
fQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNj
YW5uZXIuY3BwCmluZGV4IGE1N2M1ZDM4NWUzZTcxZTcxYjU1MWQ0M2NhZWQwNzUyMzgzNWIzMDYu
LmRjZTM4NDkxYjFmMDBiODhmOTNmYjc2ZmU2ODY0N2RlOGU0MTM0ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtNjMsMjEg
KzYzLDIxIEBAIFRva2VuUHJlbG9hZFNjYW5uZXI6OlRhZ0lkIFRva2VuUHJlbG9hZFNjYW5uZXI6
OnRhZ0lkRm9yKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlCiAgICAgcmV0dXJuIFVua25vd25UYWdJ
ZDsKIH0KIAotVG9rZW5QcmVsb2FkU2Nhbm5lcjo6VGFnSWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6
dGFnSWRGb3IoY29uc3QgU3RyaW5nJiB0YWdOYW1lKQorVG9rZW5QcmVsb2FkU2Nhbm5lcjo6VGFn
SWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6dGFnSWRGb3IoY29uc3QgSFRNTElkZW50aWZpZXImIHRh
Z05hbWUpCiB7Ci0gICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBpbWdUYWcpKQorICAg
IGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaW1nVGFnKSkKICAgICAgICAg
cmV0dXJuIEltZ1RhZ0lkOwotICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaW5wdXRU
YWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaW5wdXRUYWcp
KQogICAgICAgICByZXR1cm4gSW5wdXRUYWdJZDsKLSAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRh
Z05hbWUsIGxpbmtUYWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgbGlua1RhZykpCiAgICAgICAgIHJldHVybiBMaW5rVGFnSWQ7Ci0gICAgaWYgKHRocmVhZFNh
ZmVNYXRjaCh0YWdOYW1lLCBzY3JpcHRUYWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkKICAgICAgICAgcmV0dXJuIFNjcmlwdFRhZ0lkOwot
ICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc3R5bGVUYWcpKQorICAgIGlmICh0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3R5bGVUYWcpKQogICAgICAgICByZXR1cm4g
U3R5bGVUYWdJZDsKLSAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJhc2VUYWcpKQor
ICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYmFzZVRhZykpCiAgICAg
ICAgIHJldHVybiBCYXNlVGFnSWQ7Ci0gICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0
ZW1wbGF0ZVRhZykpCisgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0
ZW1wbGF0ZVRhZykpCiAgICAgICAgIHJldHVybiBUZW1wbGF0ZVRhZ0lkOwogICAgIHJldHVybiBV
bmtub3duVGFnSWQ7CiB9CkBAIC0xNDcsMjggKzE0Nyw0MCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKICAgICB9CiAKK3N0YXRpYyBib29sIG1hdGNoKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gcU5hbWUubG9jYWxOYW1lKCkgPT0g
bmFtZTsKK30KKworc3RhdGljIGJvb2wgbWF0Y2goY29uc3QgSFRNTElkZW50aWZpZXImIG5hbWUs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQoreworICAgIHJldHVybiB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2gobmFtZSwgcU5hbWUpOworfQorCiBwcml2YXRlOgotICAgIHZvaWQgcHJvY2Vz
c0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgYXR0
cmlidXRlVmFsdWUpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTmFtZVR5cGU+CisgICAgdm9pZCBw
cm9jZXNzQXR0cmlidXRlKGNvbnN0IE5hbWVUeXBlJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBTdHJp
bmcmIGF0dHJpYnV0ZVZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaChh
dHRyaWJ1dGVOYW1lLCBjaGFyc2V0QXR0cikpCisgICAgICAgIGlmIChtYXRjaChhdHRyaWJ1dGVO
YW1lLCBjaGFyc2V0QXR0cikpCiAgICAgICAgICAgICBtX2NoYXJzZXQgPSBhdHRyaWJ1dGVWYWx1
ZTsKIAogICAgICAgICBpZiAobV90YWdJZCA9PSBTY3JpcHRUYWdJZCB8fCBtX3RhZ0lkID09IElt
Z1RhZ0lkKSB7Ci0gICAgICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUs
IHNyY0F0dHIpKQorICAgICAgICAgICAgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIHNyY0F0dHIp
KQogICAgICAgICAgICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICAg
ICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRlTmFtZSwgY3Jvc3NvcmlnaW5B
dHRyKSAmJiAhYXR0cmlidXRlVmFsdWUuaXNOdWxsKCkpCisgICAgICAgICAgICBlbHNlIGlmICht
YXRjaChhdHRyaWJ1dGVOYW1lLCBjcm9zc29yaWdpbkF0dHIpICYmICFhdHRyaWJ1dGVWYWx1ZS5p
c051bGwoKSkKICAgICAgICAgICAgICAgICBtX2Nyb3NzT3JpZ2luTW9kZSA9IHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGVWYWx1ZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAobV90YWdJZCA9PSBMaW5rVGFnSWQpIHsKLSAgICAgICAgICAgIGlmICh0aHJlYWRTYWZlTWF0
Y2goYXR0cmlidXRlTmFtZSwgaHJlZkF0dHIpKQorICAgICAgICAgICAgaWYgKG1hdGNoKGF0dHJp
YnV0ZU5hbWUsIGhyZWZBdHRyKSkKICAgICAgICAgICAgICAgICBzZXRVcmxUb0xvYWQoYXR0cmli
dXRlVmFsdWUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0
ZU5hbWUsIHJlbEF0dHIpKQorICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2goYXR0cmlidXRlTmFt
ZSwgcmVsQXR0cikpCiAgICAgICAgICAgICAgICAgbV9saW5rSXNTdHlsZVNoZWV0ID0gcmVsQXR0
cmlidXRlSXNTdHlsZVNoZWV0KGF0dHJpYnV0ZVZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KHRocmVhZFNhZmVNYXRjaChhdHRyaWJ1dGVOYW1lLCBtZWRpYUF0dHIpKQorICAgICAgICAgICAg
ZWxzZSBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgbWVkaWFBdHRyKSkKICAgICAgICAgICAgICAg
ICBtX2xpbmtNZWRpYUF0dHJpYnV0ZUlzU2NyZWVuID0gbGlua01lZGlhQXR0cmlidXRlSXNTY3Jl
ZW4oYXR0cmlidXRlVmFsdWUpOwogICAgICAgICB9IGVsc2UgaWYgKG1fdGFnSWQgPT0gSW5wdXRU
YWdJZCkgewotICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaChhdHRyaWJ1dGVOYW1lLCBz
cmNBdHRyKSkKKyAgICAgICAgICAgIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCBzcmNBdHRyKSkK
ICAgICAgICAgICAgICAgICBzZXRVcmxUb0xvYWQoYXR0cmlidXRlVmFsdWUpOwotICAgICAgICAg
ICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIHR5cGVBdHRyKSkKKyAg
ICAgICAgICAgIGVsc2UgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIHR5cGVBdHRyKSkKICAgICAg
ICAgICAgICAgICBtX2lucHV0SXNJbWFnZSA9IGVxdWFsSWdub3JpbmdDYXNlKGF0dHJpYnV0ZVZh
bHVlLCBJbnB1dFR5cGVOYW1lczo6aW1hZ2UoKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oCmluZGV4IDQ3YTU0
NDRmMTBlOGNmZGQ2YmE3MGIwNmJlMDhmMjU0NDA0Y2MwMWIuLmQyZjJjMTE4OWMyNWY1MGRiMjky
M2ZmYjM0YTcxMjZlNDI3YTNiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQcmVsb2FkU2Nhbm5lci5oCkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgaW5s
aW5lIHZvaWQgc2NhbkNvbW1vbihjb25zdCBUb2tlbiYsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJiBy
ZXF1ZXN0cyk7CiAKICAgICBzdGF0aWMgVGFnSWQgdGFnSWRGb3IoY29uc3QgSFRNTFRva2VuOjpE
YXRhVmVjdG9yJik7Ci0gICAgc3RhdGljIFRhZ0lkIHRhZ0lkRm9yKGNvbnN0IFN0cmluZyYpOwor
ICAgIHN0YXRpYyBUYWdJZCB0YWdJZEZvcihjb25zdCBIVE1MSWRlbnRpZmllciYpOwogCiAgICAg
c3RhdGljIFN0cmluZyBpbml0aWF0b3JGb3IoVGFnSWQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192136</attachid>
            <date>2013-03-07 20:23:29 -0800</date>
            <delta_ts>2013-03-07 22:26:04 -0800</delta_ts>
            <desc>Now with more build goop</desc>
            <filename>bug-107337-20130307201941.patch</filename>
            <type>text/plain</type>
            <size>45321</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk1NjlmOTI3NGJkZDJm
YzkwOGZmMDA4NzIyNTRhMmFlNTdmNDM3OS4uOTRhNTMwMmNjMTJjMTRiMjdlM2I4Y2E5YjFjOWVh
OGY4MGYxMmM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg0IEBACiAyMDEzLTAzLTA3ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAorICAgICAgICBCYWNrZ3JvdW5kSFRNTFBhcnNl
ciBzaG91bGQgYmUgYWJsZSB0byBhdG9taXplIHdlbGwta25vd24gc3RyaW5ncworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGluZyB0aGlzIHBhdGNo
IGVhc2lseSByZXF1aXJlcyBhcHBseWluZyBidWcgMTA3MjM2IGxvY2FsbHkKKyAgICAgICAgdG8g
cmVtb3ZlIGFsbCB0aGUgcmVuZGVyaW5nIG5vaXNlIGZyb20gUGFyc2VyL2h0bWwtdGhyZWFkZWQt
cGFyc2VyLmh0bWwuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGNsYXNzIEhUTUxJ
ZGVudGlmaWVyIHdoaWNoIGFsbG93cyB1cyB0byBhdm9pZAorICAgICAgICBhbGxvY2F0aW5nIHN0
cmluZ3MgZm9yIGtub3duIHRhZy9hdHRyaWJ1dGUgbmFtZXMgZnJvbSBIVE1MTmFtZXMuCisKKyAg
ICAgICAgVGhlcmUgaXMgc3RpbGwgYSBsb3Qgb2YgbWVhdCBvbiB0aGlzIGJvbmUsIGJ1dCBJIHRo
aW5rIGl0J3MgaW1wb3J0YW50IHRvCisgICAgICAgIGxhbmQgc29tZXRoaW5nICJzbWFsbGlzaCIg
dG8gc3RhcnQgYW5kIGl0ZXJhdGUgZnJvbSB0aGVyZS4KKworICAgICAgICBUaGlzIHRvb2sgUGFy
c2VyL2h0bWwtdGhyZWFkZWQtcGFyc2VyLmh0bWwgZnJvbToKKyAgICAgICAgbWVkaWFuPSA0NDMu
NzI2NTAwMDAyIG1zLCBzdGRldj0gNy4yNTAwMjY3OTk1MiBtcywgbWluPSA0MzAuMjQ0MDAwMDQ3
IG1zLCBtYXg9IDQ1NS41MTEwMDAwMDcgbXMKKyAgICAgICAgdG86CisgICAgICAgIG1lZGlhbj0g
NDI3Ljg0OTUwMDAwNCBtcywgc3RkZXY9IDkuOTY5NjcwNTgyOTIgbXMsIG1pbj0gNDE3LjkxNDAw
MDA0OSBtcywgbWF4PSA0NjEuNTI4MDAwMDE0IG1zCisgICAgICAgIG9uIG15IE1CUC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBodG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6QXRvbWljSFRNTFRva2VuKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp0b2tlbkV4aXRzRm9yZWlnbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
dG9rZW5FeGl0c1NWRyk6CisgICAgICAgIChXZWJDb3JlOjp0b2tlbkV4aXRzTWF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRlcik6
CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJlbG9hZFNjYW5uZXI6OnNjYW4pOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0NTU1ByZWxvYWRTY2FubmVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU1By
ZWxvYWRTY2FubmVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNw
cDoKKyAgICAgICAgKFNhbWVTaXplQXNDb21wYWN0SFRNTFRva2VuKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBhY3RIVE1M
VG9rZW46OkF0dHJpYnV0ZTo6QXR0cmlidXRlKToKKyAgICAgICAgKEF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXBhY3RIVE1MVG9rZW46OnB1YmxpY0lkZW50aWZpZXIpOgorICAgICAgICAoQ29tcGFjdEhU
TUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRCYWNrZ3JvdW5kUGFy
c2VyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjppZGVudGlmaWVyVGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50aWZpZXI6Omhhc0luZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJZGVudGlmaWVyOjpmaW5kSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6bmFt
ZUZvckluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjphc1N0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6YXNTdHJpbmdJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjphZGROYW1lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSWRlbnRpZmllcjo6aW5pdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTElkZW50
aWZpZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEhUTUxJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjpIVE1MSWRlbnRpZmllcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6aXNTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRocmVhZFNhZmVFcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjp0aHJl
YWRTYWZlTWF0Y2gpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dGhyZWFkU2FmZUhUTUxOYW1l
c01hdGNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6dGFnSWRGb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjptYXRjaCk6
CisgICAgICAgIChUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjpwcm9jZXNz
QXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaDoK
KworMjAxMy0wMy0wNyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKICAgICAgICAg
ZGlzcGxheTpub25lIGlmcmFtZXMgc2hvdWxkIG5vdCBidWlsZCByZW5kZXJpbmcgdHJlZXMKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzIzNgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IDAyODgyYWVhMGYwZjA2MjljNzAyODg1OGNmY2U5ZTI2Yjk2
MjNmYTQuLjc2YzQ1NWE4M2UwOTdiMjdkOWJjMDg1YTk5YmFiNmZjM2Y3Y2ZjZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0xNTU2LDYgKzE1NTYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKICAgICBodG1sL3BhcnNlci9I
VE1MUGFyc2VyVGhyZWFkLmNwcAogICAgIGh0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVu
dExpc3QuY3BwCisgICAgaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwCiAgICAgaHRtbC9w
YXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAogICAgIGh0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5jcHAKICAgICBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBmODU5ZjBiZWFjZDE0MzZkNzZiMzlh
MDVmZDQ2OTVhMDhmZDFhMWZhLi5kOWYyOGZlZjI2N2FlZmU4N2JiZTNkYzAzZTIyMzQ1MzJmZDEz
ZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM2MjEsNiArMzYyMSw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVu
dGl0eVRhYmxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5n
RWxlbWVudExpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0
dGluZ0VsZW1lbnRMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVu
dGlmaWVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElucHV0U3RyZWFtLmggXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCmluZGV4IDQxYzBlYjc5NWRiNmZkMjg2M2NlNzRmOWQ0ZGE0MmRjNWQwNWQxNzAuLjU2YzU2
ZWY5YjFhNDRiNDU0M2Y2OTQ1MDAyYzQ1ZDU4NTg3ZTc5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNzM1
LDYgKzczNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvcGFyc2VyL0hUTUxFbnRpdHlQYXJz
ZXIuY3BwIFwKICAgICBodG1sL3BhcnNlci9IVE1MRW50aXR5U2VhcmNoLmNwcCBcCiAgICAgaHRt
bC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAgXAorICAgIGh0bWwvcGFyc2Vy
L0hUTUxJZGVudGlmaWVyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFy
c2VyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgXAogICAgIGh0
bWwvcGFyc2VyL0hUTUxQYXJzZXJPcHRpb25zLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNDlk
NjkzYzVlZDY3Y2E2YjM4MjkyOGJhYTEzMWY0YjMxOTYwYjExNS4uZDA3OWVlMmYyNmEzODY3OWI1
OTg0MDljOTdlMTI3ZjczOTI4MGVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUwNyw2ICszNTA3
LDggQEAKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MRW50aXR5VGFibGUuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAnLAogICAg
ICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuaCcsCisgICAg
ICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwJywKKyAgICAgICAgICAgICdo
dG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9I
VE1MSW5wdXRTdHJlYW0uaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFy
c2V0UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0
UGFyc2VyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCA4NDQzZjllMmJhMWU4Njk0Y2Q5NGE4NjJkMzI4YzAxMzdkMTljNjFiLi4xNGYzYjk4
ZGU2YmQ3NmQwNzMwOGEzYzIzZjgyM2E3YjAzNTkyZDU2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjUwOTAsNiArNjUwOTAsMTQgQEAKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
cGFyc2VyXEhUTUxJZGVudGlmaWVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEhUTUxJZGVudGlmaWVyLmgiCisJ
CQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1s
XHBhcnNlclxIVE1MSW5wdXRTdHJlYW0uaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGY3YzY5ZTg0
MWY3YTVmYmM0NjU2NjEwMGZhMzNmMDY5MjMxMGFlNTEuLjY2YTlhZmRmMWE2OWEwNmZkYzVkZGRm
NTZkZDA4ZDRiMTUyNDU5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagpAQCAtNjkyMyw2ICs2OTIzLDcgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxFbnRpdHlQYXJzZXIuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTEVudGl0eVNlYXJjaC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MRm9ybWF0dGluZ0VsZW1l
bnRMaXN0LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhU
TUxJZGVuaXRpZmllci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBh
cnNlclxIVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caHRtbFxwYXJzZXJcSFRNTFBhcnNlcklkaW9tcy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MUGFyc2VyT3B0aW9ucy5jcHAiIC8+CkBAIC0x
MDM3Nyw2ICsxMDM3OCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNl
clxIVE1MRW50aXR5UGFyc2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1s
XHBhcnNlclxIVE1MRW50aXR5U2VhcmNoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxodG1sXHBhcnNlclxIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MSWRlbnRpZmllci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTElucHV0U3RyZWFtLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MTWV0YUNoYXJzZXRQYXJz
ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxQYXJz
ZXJJZGlvbXMuaCIgLz4KQEAgLTExMTM3LDQgKzExMTM5LDQgQEAKICAgPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdy
b3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVj
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCmluZGV4IDEzODM3MTAwNTVjNWVjZGQ0
YmRlMDQ4ZWYzNjlhZmYxZmU5NGU4ZmYuLjY2NTVmNGEzZGQwZTZhMTY3ZTJmZWFjNzNjMjRmYTRi
MzdkODlhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hU
TUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tl
bi5oCkBAIC0xODksMTAgKzE4OSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBIVE1MVG9rZW46
OkRPQ1RZUEU6Ci0gICAgICAgICAgICBtX25hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgICAgICAg
ICBtX25hbWUgPSB0b2tlbi5kYXRhKCkuYXNTdHJpbmcoKTsKICAgICAgICAgICAgIG1fZG9jdHlw
ZURhdGEgPSBhZG9wdFB0cihuZXcgRG9jdHlwZURhdGEoKSk7CiAgICAgICAgICAgICBtX2RvY3R5
cGVEYXRhLT5tX2hhc1B1YmxpY0lkZW50aWZpZXIgPSB0cnVlOwotICAgICAgICAgICAgYXBwZW5k
KG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllciwgdG9rZW4ucHVibGljSWRlbnRpZmll
cigpKTsKKyAgICAgICAgICAgIGFwcGVuZChtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZp
ZXIsIHRva2VuLnB1YmxpY0lkZW50aWZpZXIoKS5hc1N0cmluZygpKTsKICAgICAgICAgICAgIG1f
ZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgICAgICBh
cHBlbmQobV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyLCB0b2tlbi5zeXN0ZW1JZGVu
dGlmaWVyKCkpOwogICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJrcyA9IHRv
a2VuLmRvY3R5cGVGb3JjZXNRdWlya3MoKTsKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6CiAgICAgICAgICAgICBtX2F0dHJpYnV0
ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgpKTsKICAg
ICAgICAgICAgIGZvciAoVmVjdG9yPENvbXBhY3RIVE1MVG9rZW46OkF0dHJpYnV0ZT46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gdG9rZW4uYXR0cmlidXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLmF0
dHJpYnV0ZXMoKS5lbmQoKTsgKytpdCkgewotICAgICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUg
bmFtZShudWxsQXRvbSwgaXQtPm5hbWUsIG51bGxBdG9tKTsKKyAgICAgICAgICAgICAgICBRdWFs
aWZpZWROYW1lIG5hbWUobnVsbEF0b20sIGl0LT5uYW1lLmFzU3RyaW5nKCksIG51bGxBdG9tKTsK
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBOXjIgZm9yIHRoZSBudW1iZXIgb2Yg
YXR0cmlidXRlcy4KICAgICAgICAgICAgICAgICBpZiAoIWZpbmRBdHRyaWJ1dGVJblZlY3Rvciht
X2F0dHJpYnV0ZXMsIG5hbWUpKQogICAgICAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBw
ZW5kKEF0dHJpYnV0ZShuYW1lLCBpdC0+dmFsdWUpKTsKQEAgLTIxMCwxNyArMjEwLDI0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAvLyBGYWxsIHRocm91Z2ghCiAgICAgICAgIGNhc2UgSFRNTFRv
a2VuOjpFbmRUYWc6CiAgICAgICAgICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4uc2VsZkNsb3Np
bmcoKTsKLSAgICAgICAgICAgIG1fbmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAgICAgICAgIG1f
bmFtZSA9IHRva2VuLmRhdGEoKS5hc1N0cmluZygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgotICAgICAgICAgICAgbV9kYXRhID0gdG9rZW4u
ZGF0YSgpOworICAgICAgICAgICAgbV9kYXRhID0gdG9rZW4uZGF0YSgpLmFzU3RyaW5nKCk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKLSAg
ICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0gdG9rZW4uZGF0YSgpLmNoYXJhY3RlcnMo
KTsKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoID0gdG9rZW4uZGF0YSgp
Lmxlbmd0aCgpOworICAgICAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOiB7CisgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIHN0cmluZyA9IHRva2VuLmRhdGEoKS5hc1N0cmluZygpOworICAg
ICAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFjdGVycygpOworICAg
ICAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnNMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAg
ICAgICAgICAgICBtX2lzQWxsOEJpdERhdGEgPSB0b2tlbi5pc0FsbDhCaXREYXRhKCk7CisgICAg
ICAgICAgICAvLyBGSVhNRTogV2Ugd291bGQgbGlrZSBhIHN0cm9uZ2VyIEFTU0VSVCBoZXJlOgor
ICAgICAgICAgICAgLy8gQVNTRVJUKHN0cmluZy5pczhCaXQoKSA9PSB0b2tlbi5pc0FsbDhCaXRE
YXRhKCkpOworICAgICAgICAgICAgLy8gYnV0IGN1cnJlbnRseSB0aGF0IGZpcmVzLCBsaWtlbHkg
ZHVlIHRvIGJ1Z3MgaW4gSFRNTFRva2VuaXplcgorICAgICAgICAgICAgLy8gbm90IHNldHRpbmcg
aXNBbGw4Qml0RGF0YSBpbiBhbGwgdGhlIHRpbWVzIGl0IGNvdWxkLgorICAgICAgICAgICAgQVNT
RVJUKCF0b2tlbi5pc0FsbDhCaXREYXRhKCkgfHwgc3RyaW5nLmlzOEJpdCgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCmlu
ZGV4IDg3NDQzMmU2MDFjYThmNmM3MThmZTQwYzQ5MjFkOTE5NjNkMWIzNmMuLjA1YjJlZWY1MmFk
ODA5NWZhNTE0NGZjYTc3ZjQwMGE2MjJhZGY4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKQEAgLTY5LDY1ICs2OSw2NyBA
QCBzdGF0aWMgdm9pZCBjaGVja1RoYXRYU1NJbmZvc0FyZVNhZmVUb1NlbmRUb0Fub3RoZXJUaHJl
YWQoY29uc3QgWFNTSW5mb1N0cmVhbSYgeAogCiBzdGF0aWMgYm9vbCB0b2tlbkV4aXRzRm9yZWln
bkNvbnRlbnQoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgLy8gRklYTUU6
IFRoaXMgaXMgY29waWVkIGZyb20gSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVp
Z25Db250ZW50IGFuZCBjaGFuZ2VkIHRvIHVzZSB0aHJlYWRTYWZlTWF0Y2guCi0gICAgY29uc3Qg
U3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwotICAgIHJldHVybiB0aHJlYWRTYWZlTWF0
Y2godGFnTmFtZSwgYlRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJp
Z1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJsb2NrcXVvdGVUYWcp
Ci0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBib2R5VGFnKQotICAgICAgICB8
fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgYnJUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVN
YXRjaCh0YWdOYW1lLCBjZW50ZXJUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBjb2RlVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgZGRUYWcp
Ci0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBkaXZUYWcpCi0gICAgICAgIHx8
IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBkbFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1h
dGNoKHRhZ05hbWUsIGR0VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwg
ZW1UYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBlbWJlZFRhZykKLSAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGgxVGFnKQotICAgICAgICB8fCB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgaDJUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0
YWdOYW1lLCBoM1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGg0VGFn
KQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaDVUYWcpCi0gICAgICAgIHx8
IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBoNlRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1h
dGNoKHRhZ05hbWUsIGhlYWRUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBoclRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGlUYWcpCi0gICAg
ICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBpbWdUYWcpCi0gICAgICAgIHx8IHRocmVh
ZFNhZmVNYXRjaCh0YWdOYW1lLCBsaVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRh
Z05hbWUsIGxpc3RpbmdUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBt
ZW51VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbWV0YVRhZykKLSAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG5vYnJUYWcpCi0gICAgICAgIHx8IHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBvbFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIHBUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBwcmVU
YWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBydWJ5VGFnKQotICAgICAg
ICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2Fm
ZU1hdGNoKHRhZ05hbWUsIHNtYWxsVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFn
TmFtZSwgc3BhblRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHN0cm9u
Z1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHN0cmlrZVRhZykKLSAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHN1YlRhZykKLSAgICAgICAgfHwgdGhy
ZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHN1cFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIHRhYmxlVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwg
dHRUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB1VGFnKQotICAgICAg
ICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgdWxUYWcpCi0gICAgICAgIHx8IHRocmVhZFNh
ZmVNYXRjaCh0YWdOYW1lLCB2YXJUYWcpCi0gICAgICAgIHx8ICh0aHJlYWRTYWZlTWF0Y2godGFn
TmFtZSwgZm9udFRhZykgJiYgKHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oY29sb3JBdHRyKSB8fCB0
b2tlbi5nZXRBdHRyaWJ1dGVJdGVtKGZhY2VBdHRyKSB8fCB0b2tlbi5nZXRBdHRyaWJ1dGVJdGVt
KHNpemVBdHRyKSkpOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGNvcGllZCBmcm9tIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCBhbmQgY2hhbmdlZCB0byB1c2Ug
dGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoLgorICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdO
YW1lID0gdG9rZW4uZGF0YSgpOworICAgIHJldHVybiB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgYlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIGJpZ1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUs
IGJsb2NrcXVvdGVUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdO
YW1lLCBib2R5VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgYnJUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBj
ZW50ZXJUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBj
b2RlVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZGRU
YWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBkaXZUYWcp
CisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBkbFRhZykKKyAg
ICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGR0VGFnKQorICAgICAg
ICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZW1UYWcpCisgICAgICAgIHx8
IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBlbWJlZFRhZykKKyAgICAgICAgfHwg
dGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGgxVGFnKQorICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaDJUYWcpCisgICAgICAgIHx8IHRocmVhZFNh
ZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoM1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIGg0VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgaDVUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCBoNlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNo
KHRhZ05hbWUsIGhlYWRUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0
YWdOYW1lLCBoclRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIGlUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBp
bWdUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBsaVRh
ZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGxpc3RpbmdU
YWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBtZW51VGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbWV0YVRhZykK
KyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIG5vYnJUYWcpCisg
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBvbFRhZykKKyAgICAg
ICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHBUYWcpCisgICAgICAgIHx8
IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBwcmVUYWcpCisgICAgICAgIHx8IHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBydWJ5VGFnKQorICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2Fm
ZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHNtYWxsVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZl
SFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3BhblRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIHN0cm9uZ1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIHN0cmlrZVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIHN1YlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIHN1cFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1l
c01hdGNoKHRhZ05hbWUsIHRhYmxlVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgdHRUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCB1VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgdWxUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCB2YXJUYWcpCisgICAgICAgIHx8ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwg
Zm9udFRhZykgJiYgKHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oY29sb3JBdHRyKSB8fCB0b2tlbi5n
ZXRBdHRyaWJ1dGVJdGVtKGZhY2VBdHRyKSB8fCB0b2tlbi5nZXRBdHRyaWJ1dGVJdGVtKHNpemVB
dHRyKSkpOwogfQogCiBzdGF0aWMgYm9vbCB0b2tlbkV4aXRzU1ZHKGNvbnN0IENvbXBhY3RIVE1M
VG9rZW4mIHRva2VuKQogewotICAgIGNvbnN0IFN0cmluZyYgdGFnTmFtZSA9IHRva2VuLmRhdGEo
KTsKLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UodGFnTmFtZSwgU1ZHTmFtZXM6OmZvcmVp
Z25PYmplY3RUYWcubG9jYWxOYW1lKCkpOworICAgIC8vIEZJWE1FOiBJdCdzIHZlcnkgZnJhZ2ls
ZSB0aGF0IHdlIHNwZWNpYWwgY2FzZSBmb3JlaWduT2JqZWN0IGhlcmUgdG8gYmUgY2FzZS1pbnNl
bnNpdGl2ZS4KKyAgICAvLyBGSVhNRTogVXNpbmcgQ2FzZUZvbGRpbmdIYXNoOjplcXVhbCBpbnN0
ZWFkIG9mIGVxdWFsSWdub3JpbmdDYXNlLCBhcyBlcXVhbElnbm9yaW5nQ2FzZQorICAgIC8vIHdh
bnRzIG5vbi1jb25zdCBTdHJpbmdJbXBsKiAoZXZlbiB0aG91Z2ggaXQgbmV2ZXIgbW9kaWZpZXMg
dGhlbSkuCisgICAgcmV0dXJuIENhc2VGb2xkaW5nSGFzaDo6ZXF1YWwodG9rZW4uZGF0YSgpLmFz
U3RyaW5nSW1wbCgpLCBTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZy5sb2NhbE5hbWUoKS5pbXBs
KCkpOwogfQogCiBzdGF0aWMgYm9vbCB0b2tlbkV4aXRzTWF0aChjb25zdCBDb21wYWN0SFRNTFRv
a2VuJiB0b2tlbikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBjb3BpZWQgZnJvbSBIVE1MRWxl
bWVudFN0YWNrOjppc01hdGhNTFRleHRJbnRlZ3JhdGlvblBvaW50IGFuZCBjaGFuZ2VkIHRvIHVz
ZSB0aHJlYWRTYWZlTWF0Y2guCi0gICAgY29uc3QgU3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0
YSgpOworICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwog
ICAgIHJldHVybiB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1pVGFnKQog
ICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1vVGFnKQog
ICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1uVGFnKQpA
QCAtMTk2LDcgKzE5OCw3IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6Om1hcmtFbmRPZkZp
bGUoKQogYm9vbCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRlcihjb25z
dCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBpZiAodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6U3RhcnRUYWcpIHsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB0YWdOYW1lID0gdG9r
ZW4uZGF0YSgpOworICAgICAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSA9IHRva2Vu
LmRhdGEoKTsKICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBTVkdOYW1lczo6
c3ZnVGFnKSkKICAgICAgICAgICAgIG1fbmFtZXNwYWNlU3RhY2suYXBwZW5kKFNWRyk7CiAgICAg
ICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1hdGhUYWcpKQpA
QCAtMjA4LDMwICsyMTAsMzAgQEAgYm9vbCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVU
cmVlQnVpbGRlcihjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIG1f
bmFtZXNwYWNlU3RhY2suYXBwZW5kKEhUTUwpOwogICAgICAgICBpZiAoIWluRm9yZWlnbkNvbnRl
bnQoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIGNvcHkgb2YgVG9r
ZW5pemVyOjp1cGRhdGVTdGF0ZUZvciB3aGljaCB1c2VzIHRocmVhZFNhZmVNYXRjaGVzLgotICAg
ICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0ZXh0YXJlYVRhZykgfHwgdGhy
ZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHRpdGxlVGFnKSkKKyAgICAgICAgICAgIGlmICh0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdGV4dGFyZWFUYWcpIHx8IHRocmVhZFNhZmVIVE1M
TmFtZXNNYXRjaCh0YWdOYW1lLCB0aXRsZVRhZykpCiAgICAgICAgICAgICAgICAgbV90b2tlbml6
ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0YXRlKTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBwbGFpbnRleHRUYWcpKQorICAgICAgICAg
ICAgZWxzZSBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHBsYWludGV4dFRh
ZykpCiAgICAgICAgICAgICAgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6
OlBMQUlOVEVYVFN0YXRlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRjaCh0
YWdOYW1lLCBzY3JpcHRUYWcpKQorICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIHNjcmlwdFRhZykpCiAgICAgICAgICAgICAgICAgbV90b2tlbml6
ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFTdGF0ZSk7Ci0gICAgICAgICAg
ICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc3R5bGVUYWcpCi0gICAgICAgICAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGlmcmFtZVRhZykKLSAgICAgICAgICAg
ICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgeG1wVGFnKQotICAgICAgICAgICAgICAg
IHx8ICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbm9lbWJlZFRhZykgJiYgbV9vcHRpb25zLnBs
dWdpbnNFbmFibGVkKQotICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBub2ZyYW1lc1RhZykKLSAgICAgICAgICAgICAgICB8fCAodGhyZWFkU2FmZU1hdGNoKHRhZ05h
bWUsIG5vc2NyaXB0VGFnKSAmJiBtX29wdGlvbnMuc2NyaXB0RW5hYmxlZCkpCisgICAgICAgICAg
ICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3R5bGVUYWcpCisg
ICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGlmcmFt
ZVRhZykKKyAgICAgICAgICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgeG1wVGFnKQorICAgICAgICAgICAgICAgIHx8ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgbm9lbWJlZFRhZykgJiYgbV9vcHRpb25zLnBsdWdpbnNFbmFibGVkKQorICAgICAg
ICAgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBub2ZyYW1lc1Rh
ZykKKyAgICAgICAgICAgICAgICB8fCAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUs
IG5vc2NyaXB0VGFnKSAmJiBtX29wdGlvbnMuc2NyaXB0RW5hYmxlZCkpCiAgICAgICAgICAgICAg
ICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0ZSk7CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5k
VGFnKSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKKyAg
ICAgICAgY29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CiAgICAg
ICAgIGlmICgobV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gU1ZHICYmIHRocmVhZFNhZmVNYXRj
aCh0YWdOYW1lLCBTVkdOYW1lczo6c3ZnVGFnKSkKICAgICAgICAgICAgIHx8IChtX25hbWVzcGFj
ZVN0YWNrLmxhc3QoKSA9PSBNYXRoTUwgJiYgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhN
TE5hbWVzOjptYXRoVGFnKSkKICAgICAgICAgICAgIHx8IChtX25hbWVzcGFjZVN0YWNrLmNvbnRh
aW5zKFNWRykgJiYgbV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gSFRNTCAmJiB0b2tlbkV4aXRz
U1ZHKHRva2VuKSkKICAgICAgICAgICAgIHx8IChtX25hbWVzcGFjZVN0YWNrLmNvbnRhaW5zKE1h
dGhNTCkgJiYgbV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gSFRNTCAmJiB0b2tlbkV4aXRzTWF0
aCh0b2tlbikpKQogICAgICAgICAgICAgbV9uYW1lc3BhY2VTdGFjay5yZW1vdmVMYXN0KCk7Ci0g
ICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkgeworICAgICAg
ICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHNjcmlwdFRhZykpIHsKICAg
ICAgICAgICAgIGlmICghaW5Gb3JlaWduQ29udGVudCgpKQogICAgICAgICAgICAgICAgIG1fdG9r
ZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NT
UHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9h
ZFNjYW5uZXIuY3BwCmluZGV4IDBjNjZmYzFhYzlmZmE2NDlmNTNiZDE4NDM0NjNhYjI2ZTQyZmRl
NTEuLjYzZDA3NTA2NDdmOTJjZDE2ZTc3ODBmOGM0ZDczYzE4MmViYjc2YTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJDU1NQcmVsb2FkU2Nhbm5lci5oIgogCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgorI2luY2x1ZGUgIkhUTUxJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC02NCwxNSArNjUsMTYgQEAgdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nhbihjb25zdCBI
VE1MVG9rZW46OkRhdGFWZWN0b3ImIGRhdGEsIFByZWxvYWRSZXF1ZXN0U3QKICAgICBzY2FuQ29t
bW9uKGRhdGEuZGF0YSgpLCBkYXRhLmRhdGEoKSArIGRhdGEuc2l6ZSgpLCByZXF1ZXN0cyk7CiB9
CiAKLXZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OnNjYW4oY29uc3QgU3RyaW5nJiBkYXRhLCBQcmVs
b2FkUmVxdWVzdFN0cmVhbSYgcmVxdWVzdHMpCit2b2lkIENTU1ByZWxvYWRTY2FubmVyOjpzY2Fu
KGNvbnN0IEhUTUxJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBQcmVsb2FkUmVxdWVzdFN0cmVhbSYg
cmVxdWVzdHMpCiB7Ci0gICAgaWYgKGRhdGEuaXM4Qml0KCkpIHsKLSAgICAgICAgY29uc3QgTENo
YXIqIGJlZ2luID0gZGF0YS5jaGFyYWN0ZXJzOCgpOwotICAgICAgICBzY2FuQ29tbW9uKGJlZ2lu
LCBiZWdpbiArIGRhdGEubGVuZ3RoKCksIHJlcXVlc3RzKTsKKyAgICBjb25zdCBTdHJpbmdJbXBs
KiBkYXRhID0gaWRlbnRpZmllci5hc1N0cmluZ0ltcGwoKTsKKyAgICBpZiAoZGF0YS0+aXM4Qml0
KCkpIHsKKyAgICAgICAgY29uc3QgTENoYXIqIGJlZ2luID0gZGF0YS0+Y2hhcmFjdGVyczgoKTsK
KyAgICAgICAgc2NhbkNvbW1vbihiZWdpbiwgYmVnaW4gKyBkYXRhLT5sZW5ndGgoKSwgcmVxdWVz
dHMpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNvbnN0IFVDaGFyKiBiZWdpbiA9IGRh
dGEuY2hhcmFjdGVyczE2KCk7Ci0gICAgc2NhbkNvbW1vbihiZWdpbiwgYmVnaW4gKyBkYXRhLmxl
bmd0aCgpLCByZXF1ZXN0cyk7CisgICAgY29uc3QgVUNoYXIqIGJlZ2luID0gZGF0YS0+Y2hhcmFj
dGVyczE2KCk7CisgICAgc2NhbkNvbW1vbihiZWdpbiwgYmVnaW4gKyBkYXRhLT5sZW5ndGgoKSwg
cmVxdWVzdHMpOwogfQogCiBpbmxpbmUgdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6dG9rZW5pemUo
VUNoYXIgYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxv
YWRTY2FubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5l
ci5oCmluZGV4IDRiNjliYzMyMzU2YjRjMjE4MTMzZmIxM2RjYTQyMTBmYjNiNmY2YTQuLjljMjA5
MTAxMWQwNzI3ZTllYzY1Zjk3ZDVjYTlkNzAwODVhNzE0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuaApAQCAtMzMsNiArMzMsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEhUTUxJZGVudGlmaWVyOworCiBjbGFzcyBDU1NQ
cmVsb2FkU2Nhbm5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTUHJlbG9hZFNjYW5u
ZXIpOwogcHVibGljOgpAQCAtNDIsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgp
OwogCiAgICAgdm9pZCBzY2FuKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlY3RvciYsIFByZWxvYWRS
ZXF1ZXN0U3RyZWFtJik7Ci0gICAgdm9pZCBzY2FuKGNvbnN0IFN0cmluZyYsIFByZWxvYWRSZXF1
ZXN0U3RyZWFtJik7CisgICAgdm9pZCBzY2FuKGNvbnN0IEhUTUxJZGVudGlmaWVyJiwgUHJlbG9h
ZFJlcXVlc3RTdHJlYW0mKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIFN0YXRlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKaW5kZXggYjQ3ODhh
MDdlNWEwNmYyMWQ0NTgwOWVhYWY3Yjk2ZWExOGQ4MTAzNC4uNzZkZGM2YjZjNzZlM2E1NTBjNDZl
Y2VkMDY5MGM5MDhhMjUzZDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
Q29tcGFjdEhUTUxUb2tlbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdHJ1Y3QgU2FtZVNpemVBc0NvbXBhY3RIVE1MVG9rZW4gIHsKICAgICB1bnNpZ25lZCBi
aXRmaWVsZHM7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgSFRNTElkZW50aWZpZXIgZGF0YTsKICAg
ICBWZWN0b3I8QXR0cmlidXRlPiB2ZWN0b3I7CiAgICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlv
bjsKIH07CkBAIC01NiwxMCArNTYsMTAgQEAgQ29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxU
b2tlbihjb25zdCBIVE1MVG9rZW4qIHRva2VuLCBjb25zdCBUZXh0UG9zaXRpb24mIHQKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSFRNTFRv
a2VuOjpET0NUWVBFOiB7Ci0gICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi0+bmFtZSgpKTsK
KyAgICAgICAgbV9kYXRhID0gSFRNTElkZW50aWZpZXIodG9rZW4tPm5hbWUoKSwgTGlrZWx5OEJp
dCk7CiAgICAgICAgIC8vIFRoZXJlIGlzIG9ubHkgMSBET0NUWVBFIHRva2VuIHBlciBkb2N1bWVu
dCwgc28gdG8gYXZvaWQgaW5jcmVhc2luZyB0aGUKICAgICAgICAgLy8gc2l6ZSBvZiBDb21wYWN0
SFRNTFRva2VuLCB3ZSBqdXN0IHVzZSB0aGUgbV9hdHRyaWJ1dGVzIHZlY3Rvci4KLSAgICAgICAg
bV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoU3RyaW5nKHRva2VuLT5wdWJsaWNJZGVudGlm
aWVyKCkpLCBTdHJpbmcodG9rZW4tPnN5c3RlbUlkZW50aWZpZXIoKSkpKTsKKyAgICAgICAgbV9h
dHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoSFRNTElkZW50aWZpZXIodG9rZW4tPnB1YmxpY0lk
ZW50aWZpZXIoKSwgTGlrZWx5OEJpdCksIFN0cmluZyh0b2tlbi0+c3lzdGVtSWRlbnRpZmllcigp
KSkpOwogICAgICAgICBtX2RvY3R5cGVGb3JjZXNRdWlya3MgPSB0b2tlbi0+Zm9yY2VRdWlya3Mo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNjgsMTkgKzY4LDE3IEBAIENvbXBhY3RIVE1M
VG9rZW46OkNvbXBhY3RIVE1MVG9rZW4oY29uc3QgSFRNTFRva2VuKiB0b2tlbiwgY29uc3QgVGV4
dFBvc2l0aW9uJiB0CiAgICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFnOgogICAgICAgICBtX2F0
dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b2tlbi0+YXR0cmlidXRlcygpLnNpemUo
KSk7CiAgICAgICAgIGZvciAoVmVjdG9yPEhUTUxUb2tlbjo6QXR0cmlidXRlPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSB0b2tlbi0+YXR0cmlidXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLT5hdHRy
aWJ1dGVzKCkuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0
dHJpYnV0ZShTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShpdC0+bmFtZSksIFN0cmlu
Z0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKGl0LT52YWx1ZSkpKTsKKyAgICAgICAgICAgIG1f
YXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKEhUTUxJZGVudGlmaWVyKGl0LT5uYW1lLCBMaWtl
bHk4Qml0KSwgU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoaXQtPnZhbHVlKSkpOwog
ICAgICAgICAvLyBGYWxsIHRocm91Z2ghCiAgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzoKICAg
ICAgICAgbV9zZWxmQ2xvc2luZyA9IHRva2VuLT5zZWxmQ2xvc2luZygpOwogICAgICAgICAvLyBG
YWxsIHRocm91Z2ghCiAgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6Ci0gICAgY2FzZSBIVE1M
VG9rZW46OkNoYXJhY3RlcjoKLSAgICAgICAgaWYgKHRva2VuLT5pc0FsbDhCaXREYXRhKCkpIHsK
LSAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZzo6bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UodG9r
ZW4tPmRhdGEoKSk7Ci0gICAgICAgICAgICBtX2lzQWxsOEJpdERhdGEgPSB0cnVlOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi0+ZGF0YSgpKTsKKyAg
ICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOiB7CisgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9
IHRva2VuLT5pc0FsbDhCaXREYXRhKCk7CisgICAgICAgIG1fZGF0YSA9IEhUTUxJZGVudGlmaWVy
KHRva2VuLT5kYXRhKCksIHRva2VuLT5pc0FsbDhCaXREYXRhKCkgPyBGb3JjZThCaXQgOiBGb3Jj
ZTE2Qml0KTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaAppbmRleCBjODk4ZjZlNmYxNGVjODkxMmIzMmZh
MTMxNWM3NzhhODdlMzk4OTgzLi5mZmE0YWU0M2NkMWYzZWJmMGUzZWJjM2U4OWVhNDk0ZjYyZjUz
MzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRv
a2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAK
KyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtNDQs
MTMgKzQ1LDEzIEBAIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBDb21wYWN0SFRNTFRva2Vu
IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgQXR0cmlidXRlIHsKLSAgICAgICAgQXR0cmlidXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICAgICAgQXR0cmlidXRl
KGNvbnN0IEhUTUxJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAg
ICAgICAgOiBuYW1lKG5hbWUpCiAgICAgICAgICAgICAsIHZhbHVlKHZhbHVlKQogICAgICAgICB7
CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgSFRNTElkZW50aWZp
ZXIgbmFtZTsKICAgICAgICAgU3RyaW5nIHZhbHVlOwogICAgIH07CiAKQEAgLTU5LDcgKzYwLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7
CiAKICAgICBIVE1MVG9rZW46OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEhUTUxUb2tlbjo6VHlwZT4obV90eXBlKTsgfQotICAgIGNvbnN0IFN0cmluZyYgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0IHsg
cmV0dXJuIG1fc2VsZkNsb3Npbmc7IH0KICAgICBib29sIGlzQWxsOEJpdERhdGEoKSBjb25zdCB7
IHJldHVybiBtX2lzQWxsOEJpdERhdGE7IH0KICAgICBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYg
YXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQpAQCAtNjgsNyArNjks
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVyZSBpcyBvbmx5IDEgRE9DVFlQRSB0b2tlbiBwZXIg
ZG9jdW1lbnQsIHNvIHRvIGF2b2lkIGluY3JlYXNpbmcgdGhlCiAgICAgLy8gc2l6ZSBvZiBDb21w
YWN0SFRNTFRva2VuLCB3ZSBqdXN0IHVzZSB0aGUgbV9hdHRyaWJ1dGVzIHZlY3Rvci4KLSAgICBj
b25zdCBTdHJpbmcmIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0
ZXNbMF0ubmFtZTsgfQorICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiBwdWJsaWNJZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzWzBdLm5hbWU7IH0KICAgICBjb25zdCBTdHJp
bmcmIHN5c3RlbUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXNbMF0udmFs
dWU7IH0KICAgICBib29sIGRvY3R5cGVGb3JjZXNRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX2Rv
Y3R5cGVGb3JjZXNRdWlya3M7IH0KIApAQCAtNzgsNyArNzksNyBAQCBwcml2YXRlOgogICAgIHVu
c2lnbmVkIG1faXNBbGw4Qml0RGF0YSA6IDE7CiAgICAgdW5zaWduZWQgbV9kb2N0eXBlRm9yY2Vz
UXVpcmtzOiAxOwogCi0gICAgU3RyaW5nIG1fZGF0YTsgLy8gIm5hbWUiLCAiY2hhcmFjdGVycyIs
IG9yICJkYXRhIiBkZXBlbmRpbmcgb24gbV90eXBlCisgICAgSFRNTElkZW50aWZpZXIgbV9kYXRh
OyAvLyAibmFtZSIsICJjaGFyYWN0ZXJzIiwgb3IgImRhdGEiIGRlcGVuZGluZyBvbiBtX3R5cGUK
ICAgICBWZWN0b3I8QXR0cmlidXRlPiBtX2F0dHJpYnV0ZXM7CiAgICAgVGV4dFBvc2l0aW9uIG1f
dGV4dFBvc2l0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDZlYzE2ODYyZWM2OGM2MGRlNTU1NGU0NTkyMGRmY2Jj
Yzc4MDY1MTMuLjIxZmZkOGQ1ODEwYWM2OTYyYWY4ZmY0Mzg2OWNlYWQ2NDBmMGQ1ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAi
RWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VyU2NoZWR1bGVy
LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlclRocmVhZC5oIgpAQCAtNjU3LDYgKzY1OCw4IEBAIHZv
aWQgSFRNTERvY3VtZW50UGFyc2VyOjpzdGFydEJhY2tncm91bmRQYXJzZXIoKQogICAgIEFTU0VS
VCghbV9oYXZlQmFja2dyb3VuZFBhcnNlcik7CiAgICAgbV9oYXZlQmFja2dyb3VuZFBhcnNlciA9
IHRydWU7CiAKKyAgICBIVE1MSWRlbnRpZmllcjo6aW5pdCgpOworCiAgICAgUmVmUHRyPFdlYWtS
ZWZlcmVuY2U8QmFja2dyb3VuZEhUTUxQYXJzZXI+ID4gcmVmZXJlbmNlID0gV2Vha1JlZmVyZW5j
ZTxCYWNrZ3JvdW5kSFRNTFBhcnNlcj46OmNyZWF0ZVVuYm91bmQoKTsKICAgICBtX2JhY2tncm91
bmRQYXJzZXIgPSBXZWFrUHRyPEJhY2tncm91bmRIVE1MUGFyc2VyPihyZWZlcmVuY2UpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmJjYzY3NzMwZWRkMTQ1ZWYzMDZmODZmMmE1ZjM0MmNkMmVmYjc5MQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcApAQCAt
MCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgR09P
R0xFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9Q
QVJTRVIpCisKKyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5oIgorCisjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCit0eXBlZGVmIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgU3RyaW5nSW1wbCo+IElkZW50aWZpZXJFbnRyeTsKK3R5cGVkZWYgSGFzaE1hcDx1
bnNpZ25lZCwgSWRlbnRpZmllckVudHJ5LCBBbHJlYWR5SGFzaGVkPiBJZGVudGlmaWVyVGFibGU7
CisKK3Vuc2lnbmVkIEhUTUxJZGVudGlmaWVyOjptYXhOYW1lTGVuZ3RoID0gMDsKKworc3RhdGlj
IElkZW50aWZpZXJUYWJsZSYgaWRlbnRpZmllclRhYmxlKCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKElkZW50aWZpZXJUYWJsZSwgdGFibGUsICgpKTsKKyAgICByZXR1cm4gdGFibGU7Cit9
CisKKyNpZm5kZWYgTkRFQlVHCitib29sIEhUTUxJZGVudGlmaWVyOjpoYXNJbmRleChjb25zdCBT
dHJpbmdJbXBsKiBzdHJpbmcpCit7CisgICAgY29uc3QgSWRlbnRpZmllclRhYmxlJiB0YWJsZSA9
IGlkZW50aWZpZXJUYWJsZSgpOworICAgIHJldHVybiB0YWJsZS5jb250YWlucyhzdHJpbmctPmhh
c2goKSk7Cit9CisjZW5kaWYKKwordW5zaWduZWQgSFRNTElkZW50aWZpZXI6OmZpbmRJbmRleChj
b25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIC8vIGNvbXB1
dGVIYXNoQW5kTWFza1RvcDhCaXRzIGlzIHRoZSBmdW5jdGlvbiBTdHJpbmdJbXBsOjpoYXNoKCkg
dXNlcy4KKyAgICB1bnNpZ25lZCBoYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1h
c2tUb3A4Qml0cyhjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgIGNvbnN0IElkZW50aWZpZXJUYWJs
ZSYgdGFibGUgPSBpZGVudGlmaWVyVGFibGUoKTsKKyAgICBBU1NFUlQoIXRhYmxlLmlzRW1wdHko
KSk7CisKKyAgICBJZGVudGlmaWVyVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGFibGUuZmlu
ZChoYXNoKTsKKyAgICBpZiAoaXQgPT0gdGFibGUuZW5kKCkpCisgICAgICAgIHJldHVybiBpbnZh
bGlkSW5kZXg7CisgICAgcmV0dXJuIGl0LT52YWx1ZS5maXJzdDsKK30KKworY29uc3QgdW5zaWdu
ZWQga0hUTUxOYW1lc0luZGV4T2Zmc2V0ID0gMDsKK2NvbnN0IHVuc2lnbmVkIGtIVE1MQXR0cnNJ
bmRleE9mZnNldCA9IDEwMDA7CitDT01QSUxFX0FTU0VSVChrSFRNTEF0dHJzSW5kZXhPZmZzZXQg
PiBIVE1MVGFnc0NvdW50LCBrSFRNTEF0dHJzSW5kZXhPZmZzZXRfc2hvdWxkX2JlX2xhcmdlcl90
aGFuX0hUTUxUYWdzQ291bnQpOworCitzdGF0aWMgY29uc3QgU3RyaW5nJiBuYW1lRm9ySW5kZXgo
dW5zaWduZWQgaW5kZXgpCit7CisgICAgdW5zaWduZWQgYWRqdXN0ZWRJbmRleDsKKyAgICBRdWFs
aWZpZWROYW1lKiogbmFtZXM7CisgICAgaWYgKGluZGV4IDwga0hUTUxBdHRyc0luZGV4T2Zmc2V0
KSB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IGtIVE1MTmFtZXNJbmRleE9mZnNldCArIEhUTUxU
YWdzQ291bnQpOworICAgICAgICBhZGp1c3RlZEluZGV4ID0gaW5kZXggLSBrSFRNTE5hbWVzSW5k
ZXhPZmZzZXQ7CisgICAgICAgIG5hbWVzID0gZ2V0SFRNTFRhZ3MoKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBBU1NFUlQoaW5kZXggPCBrSFRNTEF0dHJzSW5kZXhPZmZzZXQgKyBIVE1MQXR0cnND
b3VudCk7CisgICAgICAgIGFkanVzdGVkSW5kZXggPSBpbmRleCAtIGtIVE1MQXR0cnNJbmRleE9m
ZnNldDsKKyAgICAgICAgbmFtZXMgPSBnZXRIVE1MQXR0cnMoKTsKKyAgICB9CisgICAgLy8gSFRN
TEF0dHJzIGFuZCBIVE1MTmFtZXMgbWF5IGhhdmUgY29sbGlzaW9ucywgYnV0CisgICAgLy8gd2Ug
c2hvdWxkbid0IGNhcmUgd2hpY2ggd2UgZW5kZWQgdXAgc3RvcmluZywgc2luY2UgdGhlaXIKKyAg
ICAvLyBjb21wb25lbnRzIGFyZSBhbGwgQXRvbWljU3RyaW5ncyBhbmQgc2hvdWxkIHVzZSB0aGUg
c2FtZQorICAgIC8vIHVuZGVybHlpbmcgU3RyaW5nSW1wbCouCisgICAgcmV0dXJuIG5hbWVzW2Fk
anVzdGVkSW5kZXhdLT5sb2NhbE5hbWUoKS5zdHJpbmcoKTsKK30KKworY29uc3QgU3RyaW5nJiBI
VE1MSWRlbnRpZmllcjo6YXNTdHJpbmcoKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgaWYgKG1faW5kZXggIT0gaW52YWxpZEluZGV4KQorICAgICAgICByZXR1cm4g
bmFtZUZvckluZGV4KG1faW5kZXgpOworICAgIHJldHVybiBtX3N0cmluZzsKK30KKworY29uc3Qg
U3RyaW5nSW1wbCogSFRNTElkZW50aWZpZXI6OmFzU3RyaW5nSW1wbCgpIGNvbnN0Cit7CisgICAg
aWYgKG1faW5kZXggIT0gaW52YWxpZEluZGV4KQorICAgICAgICByZXR1cm4gbmFtZUZvckluZGV4
KG1faW5kZXgpLmltcGwoKTsKKyAgICByZXR1cm4gbV9zdHJpbmcuaW1wbCgpOworfQorCit2b2lk
IEhUTUxJZGVudGlmaWVyOjphZGROYW1lcyhRdWFsaWZpZWROYW1lKiogbmFtZXMsIHVuc2lnbmVk
IG5hbWVzQ291bnQsIHVuc2lnbmVkIGluZGV4T2Zmc2V0KQoreworICAgIElkZW50aWZpZXJUYWJs
ZSYgdGFibGUgPSBpZGVudGlmaWVyVGFibGUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbmFtZXNDb3VudDsgKytpKSB7CisgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBuYW1lc1tp
XS0+bG9jYWxOYW1lKCkuaW1wbCgpOworICAgICAgICB1bnNpZ25lZCBoYXNoID0gbmFtZS0+aGFz
aCgpOworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGkgKyBpbmRleE9mZnNldDsKKyAgICAgICAg
SWRlbnRpZmllckVudHJ5IGVudHJ5KGluZGV4LCBuYW1lKTsKKyAgICAgICAgSWRlbnRpZmllclRh
YmxlOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gdGFibGUuYWRkKGhhc2gsIGVudHJ5KTsKKyAgICAg
ICAgbWF4TmFtZUxlbmd0aCA9IHN0ZDo6bWF4KG1heE5hbWVMZW5ndGgsIG5hbWUtPmxlbmd0aCgp
KTsKKyAgICAgICAgLy8gRW5zdXJlIHdlJ3JlIHVzaW5nIHRoZSBzYW1lIGhhc2hpbmcgYWxnb3Jp
dGhtIHRvIGdldCBhbmQgc2V0LgorICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgIWFk
ZFJlc3VsdC5pc05ld0VudHJ5IHx8IEhUTUxJZGVudGlmaWVyOjpmaW5kSW5kZXgobmFtZS0+Y2hh
cmFjdGVycygpLCBuYW1lLT5sZW5ndGgoKSkgPT0gaW5kZXgpOworICAgICAgICAvLyBXZSBleHBl
Y3Qgc29tZSBoYXNoIGNvbGxpc2lvbnMsIGJ1dCBvbmx5IGZvciBpZGVudGljYWwgc3RyaW5ncy4K
KyAgICAgICAgLy8gU2luY2UgYWxsIG9mIHRoZXNlIG5hbWVzIGFyZSBBdG9taWNTdHJpbmdzIHBv
aW50ZXJzIHNob3VsZCBiZSBlcXVhbC4KKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
ICFhZGRSZXN1bHQuaXNOZXdFbnRyeSB8fCBuYW1lID09IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuc2Vjb25kKTsKKyAgICB9Cit9CisKK3ZvaWQgSFRNTElkZW50aWZpZXI6OmluaXQoKQorewor
ICAgIC8vIFRoaXMgaXMgc2FmZSB0byBjYWxsIGZyb20gYW55IHRocmVhZCwgYnV0IG11c3QgYmUg
Y2FsbGVkIGJlZm9yZQorICAgIC8vIHVzaW5nIEhUTUxJZGVudGlmaWVyLgorICAgIHN0YXRpYyBi
b29sIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoaXNJbml0aWFsaXplZCkKKyAgICAg
ICAgcmV0dXJuOworICAgIGlzSW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBhdG9taXplIHNtYWxsIHdoaXRlc3BhY2UgKFxuLCBcblxuLCBldGMuKQorICAgIGFk
ZE5hbWVzKGdldEhUTUxUYWdzKCksIEhUTUxUYWdzQ291bnQsIGtIVE1MTmFtZXNJbmRleE9mZnNl
dCk7CisgICAgYWRkTmFtZXMoZ2V0SFRNTEF0dHJzKCksIEhUTUxBdHRyc0NvdW50LCBrSFRNTEF0
dHJzSW5kZXhPZmZzZXQpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRN
TF9QQVJTRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRl
bnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41ZDU4ZTcyNGFlZGE3N2FiNDVkNzRmZjkyYzhlMzc5MjRiNjZlMGRhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIu
aApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSFRNTElkZW50aWZpZXJfaAorI2RlZmluZSBIVE1MSWRlbnRp
Zmllcl9oCisKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBRdWFs
aWZpZWROYW1lOworCitlbnVtIENoYXJhY3RlcldpZHRoIHsKKyAgICBMaWtlbHk4Qml0LAorICAg
IEZvcmNlOEJpdCwKKyAgICBGb3JjZTE2Qml0Cit9OworCitjbGFzcyBIVE1MSWRlbnRpZmllciB7
CitwdWJsaWM6CisgICAgSFRNTElkZW50aWZpZXIoKSA6IG1faW5kZXgoMCkgeyB9CisKKyAgICB0
ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CisgICAgSFRNTElkZW50aWZpZXIoY29uc3Qg
VmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvciwgQ2hhcmFjdGVyV2lkdGggd2lk
dGgpCisgICAgeworICAgICAgICAvLyBBdm9pZCBsb29rdXBzIG9mIGxvbmcgbmFtZXMgd2Uga25v
dyBhcmUgZ29pbmcgdG8gZmFpbC4KKyAgICAgICAgaWYgKHZlY3Rvci5zaXplKCkgPD0gbWF4TmFt
ZUxlbmd0aCkgeworICAgICAgICAgICAgbV9pbmRleCA9IGZpbmRJbmRleCh2ZWN0b3IuZGF0YSgp
LCB2ZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgIGlmIChtX2luZGV4ICE9IGludmFsaWRJbmRl
eCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
bV9pbmRleCA9IGludmFsaWRJbmRleDsKKyAgICAgICAgaWYgKHdpZHRoID09IExpa2VseThCaXQp
CisgICAgICAgICAgICBtX3N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxl
KHZlY3Rvcik7CisgICAgICAgIGVsc2UgaWYgKHdpZHRoID09IEZvcmNlOEJpdCkKKyAgICAgICAg
ICAgIG1fc3RyaW5nID0gU3RyaW5nOjptYWtlOEJpdEZyb20xNkJpdFNvdXJjZSh2ZWN0b3IpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3N0cmluZyA9IFN0cmluZyh2ZWN0b3IpOworICAg
IH0KKworICAgIC8vIGFzU3RyaW5nIHNob3VsZCBvbmx5IGJlIHVzZWQgb24gdGhlIG1haW4gdGhy
ZWFkLgorICAgIGNvbnN0IFN0cmluZyYgYXNTdHJpbmcoKSBjb25zdDsKKyAgICAvLyBhc1N0cmlu
Z0ltcGwoKSBpcyBzYWZlIHRvIGNhbGwgZnJvbSBhbnkgdGhyZWFkLgorICAgIGNvbnN0IFN0cmlu
Z0ltcGwqIGFzU3RyaW5nSW1wbCgpIGNvbnN0OworCisgICAgc3RhdGljIHZvaWQgaW5pdCgpOwor
CisgICAgYm9vbCBpc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZy5pc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKTsgfQorCisjaWZuZGVmIE5ERUJV
RworICAgIHN0YXRpYyBib29sIGhhc0luZGV4KGNvbnN0IFN0cmluZ0ltcGwqKTsKKyNlbmRpZgor
Citwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnZhbGlkSW5kZXggPSAtMTsK
KyAgICBzdGF0aWMgdW5zaWduZWQgbWF4TmFtZUxlbmd0aDsKKyAgICBzdGF0aWMgdW5zaWduZWQg
ZmluZEluZGV4KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOworICAg
IHN0YXRpYyB2b2lkIGFkZE5hbWVzKFF1YWxpZmllZE5hbWUqKiBuYW1lcywgdW5zaWduZWQgbmFt
ZXNDb3VudCwgdW5zaWduZWQgaW5kZXhPZmZzZXQpOworCisgICAgLy8gRklYTUU6IFRoaXMgY291
bGQgYmUgYSB1bmlvbi4KKyAgICB1bnNpZ25lZCBtX2luZGV4OworICAgIFN0cmluZyBtX3N0cmlu
ZzsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
Y3BwCmluZGV4IDk0NDdjZmU2YzhiNzc3ZDAwZjE4Y2Y4NGQ2YzdmMmZiNDk1ZGQzYWIuLmJhZTJj
ZDQ0OGJlMGFjNTc4NzljOWE3MjFmYjY0MDJkYjRkMWU4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogCiAjaW5jbHVkZSAiRGVjaW1hbC5oIgorI2lu
Y2x1ZGUgIkhUTUxJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2lu
Y2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMjc3LDggKzI3
OCwxMiBAQCBib29sIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihjb25zdCBTdHJpbmcmIGlu
cHV0LCB1bnNpZ25lZCYgdmFsdWUpCiAgICAgcmV0dXJuIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50
ZWdlckludGVybmFsKHN0YXJ0LCBzdGFydCArIGxlbmd0aCwgdmFsdWUpOwogfQogCi1zdGF0aWMg
Ym9vbCB0aHJlYWRTYWZlRXF1YWwoU3RyaW5nSW1wbCogYSwgU3RyaW5nSW1wbCogYikKK3N0YXRp
YyBib29sIHRocmVhZFNhZmVFcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJ
bXBsKiBiKQogeworICAgIGlmIChhID09IGIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIC8v
IE5vdGU6IFRoaXMgaGFzaCBjb21wYXJlIGlzIG5vdCBjb3JyZWN0IGZvciBhbGwgcG9zc2libGUg
U3RyaW5nSW1wbHMsIGJ1dAorICAgIC8vIHNpbmNlIHdlJ3JlIGFsd2F5cyBjb21wYXJpbmcgYWdh
aW5zdCBjb25zdGFudHMsIGl0J3MgT0suCiAgICAgaWYgKGEtPmhhc2goKSAhPSBiLT5oYXNoKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gU3RyaW5nSGFzaDo6ZXF1YWwoYSwg
Yik7CkBAIC0yODksOSArMjk0LDkgQEAgYm9vbCB0aHJlYWRTYWZlTWF0Y2goY29uc3QgUXVhbGlm
aWVkTmFtZSYgYSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYikKICAgICByZXR1cm4gdGhyZWFkU2Fm
ZUVxdWFsKGEubG9jYWxOYW1lKCkuaW1wbCgpLCBiLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAK
LWJvb2wgdGhyZWFkU2FmZU1hdGNoKGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBxTmFtZSkKK2Jvb2wgdGhyZWFkU2FmZU1hdGNoKGNvbnN0IEhUTUxJZGVudGlm
aWVyJiBsb2NhbE5hbWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQogewotICAgIHJldHVy
biB0aHJlYWRTYWZlRXF1YWwobG9jYWxOYW1lLmltcGwoKSwgcU5hbWUubG9jYWxOYW1lKCkuaW1w
bCgpKTsKKyAgICByZXR1cm4gdGhyZWFkU2FmZUVxdWFsKGxvY2FsTmFtZS5hc1N0cmluZ0ltcGwo
KSwgcU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmluZGV4IGEwMzFlNDVjZmYzMjM1M2YxNDBh
MGEyMDE5NWI5ZjlmMzYzMjdiM2UuLmYyMmM0Mjg0OTM3MWNiYWIzYTc3MmVmNDA4OWRlMDljMzgz
NmFlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmgKQEAgLTI1LDYgKzI1LDggQEAKICNpZm5kZWYgSFRNTFBhcnNlcklkaW9tc19oCiAjZGVmaW5l
IEhUTUxQYXJzZXJJZGlvbXNfaAogCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKKyNpbmNs
dWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+
CkBAIC0zMiw3ICszNCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERlY2ltYWw7
Ci1jbGFzcyBRdWFsaWZpZWROYW1lOwogCiAvLyBTcGFjZSBjaGFyYWN0ZXJzIGFzIGRlZmluZWQg
YnkgdGhlIEhUTUwgc3BlY2lmaWNhdGlvbi4KIGJvb2wgaXNIVE1MU3BhY2UoVUNoYXIpOwpAQCAt
OTMsNyArOTQsMTQgQEAgaW5saW5lIGJvb2wgaXNOb3RIVE1MU3BhY2UoVUNoYXIgY2hhcmFjdGVy
KQogfQogCiBib29sIHRocmVhZFNhZmVNYXRjaChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwotYm9vbCB0aHJlYWRTYWZlTWF0Y2goY29uc3QgU3RyaW5nJiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYpOworYm9vbCB0aHJlYWRTYWZlTWF0Y2goY29uc3QgSFRNTElkZW50
aWZpZXImLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CitpbmxpbmUgYm9vbCB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2goY29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHFOYW1lKQoreworICAgIC8vIFdoZW4gdGhlIFF1YWxpZmllZE5hbWUgaXMga25vd24g
dG8gSFRNTElkZW50aWZpZXIsCisgICAgLy8gYWxsIHdlIGhhdmUgdG8gZG8gaXMgYSBwb2ludGVy
IGNvbXBhcmUuCisgICAgQVNTRVJUKEhUTUxJZGVudGlmaWVyOjpoYXNJbmRleChxTmFtZS5sb2Nh
bE5hbWUoKS5pbXBsKCkpKTsKKyAgICByZXR1cm4gdGFnTmFtZS5hc1N0cmluZ0ltcGwoKSA9PSBx
TmFtZS5sb2NhbE5hbWUoKS5pbXBsKCk7Cit9CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggYTU3YzVkMzg1ZTNlNzFl
NzFiNTUxZDQzY2FlZDA3NTIzODM1YjMwNi4uZGNlMzg0OTFiMWYwMGI4OGY5M2ZiNzZmZTY4NjQ3
ZGU4ZTQxMzRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJl
bG9hZFNjYW5uZXIuY3BwCkBAIC02MywyMSArNjMsMjEgQEAgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6
VGFnSWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6dGFnSWRGb3IoY29uc3QgSFRNTFRva2VuOjpEYXRh
VmUKICAgICByZXR1cm4gVW5rbm93blRhZ0lkOwogfQogCi1Ub2tlblByZWxvYWRTY2FubmVyOjpU
YWdJZCBUb2tlblByZWxvYWRTY2FubmVyOjp0YWdJZEZvcihjb25zdCBTdHJpbmcmIHRhZ05hbWUp
CitUb2tlblByZWxvYWRTY2FubmVyOjpUYWdJZCBUb2tlblByZWxvYWRTY2FubmVyOjp0YWdJZEZv
cihjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSkKIHsKLSAgICBpZiAodGhyZWFkU2FmZU1h
dGNoKHRhZ05hbWUsIGltZ1RhZykpCisgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0
YWdOYW1lLCBpbWdUYWcpKQogICAgICAgICByZXR1cm4gSW1nVGFnSWQ7Ci0gICAgaWYgKHRocmVh
ZFNhZmVNYXRjaCh0YWdOYW1lLCBpbnB1dFRhZykpCisgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFt
ZXNNYXRjaCh0YWdOYW1lLCBpbnB1dFRhZykpCiAgICAgICAgIHJldHVybiBJbnB1dFRhZ0lkOwot
ICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbGlua1RhZykpCisgICAgaWYgKHRocmVh
ZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBsaW5rVGFnKSkKICAgICAgICAgcmV0dXJuIExp
bmtUYWdJZDsKLSAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHNjcmlwdFRhZykpCisg
ICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzY3JpcHRUYWcpKQogICAg
ICAgICByZXR1cm4gU2NyaXB0VGFnSWQ7Ci0gICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBzdHlsZVRhZykpCisgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBz
dHlsZVRhZykpCiAgICAgICAgIHJldHVybiBTdHlsZVRhZ0lkOwotICAgIGlmICh0aHJlYWRTYWZl
TWF0Y2godGFnTmFtZSwgYmFzZVRhZykpCisgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCBiYXNlVGFnKSkKICAgICAgICAgcmV0dXJuIEJhc2VUYWdJZDsKLSAgICBpZiAo
dGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHRlbXBsYXRlVGFnKSkKKyAgICBpZiAodGhyZWFkU2Fm
ZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHRlbXBsYXRlVGFnKSkKICAgICAgICAgcmV0dXJuIFRl
bXBsYXRlVGFnSWQ7CiAgICAgcmV0dXJuIFVua25vd25UYWdJZDsKIH0KQEAgLTE0NywyOCArMTQ3
LDQwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogICAgIH0K
IAorc3RhdGljIGJvb2wgbWF0Y2goY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBxTmFtZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHJl
dHVybiBxTmFtZS5sb2NhbE5hbWUoKSA9PSBuYW1lOworfQorCitzdGF0aWMgYm9vbCBtYXRjaChj
b25zdCBIVE1MSWRlbnRpZmllciYgbmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCit7
CisgICAgcmV0dXJuIHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaChuYW1lLCBxTmFtZSk7Cit9CisK
IHByaXZhdGU6Ci0gICAgdm9pZCBwcm9jZXNzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgYXR0cmli
dXRlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBOYW1lVHlwZT4KKyAgICB2b2lkIHByb2Nlc3NBdHRyaWJ1dGUoY29uc3QgTmFtZVR5cGUm
IGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCiAgICAgewotICAg
ICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIGNoYXJzZXRBdHRyKSkKKyAg
ICAgICAgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIGNoYXJzZXRBdHRyKSkKICAgICAgICAgICAg
IG1fY2hhcnNldCA9IGF0dHJpYnV0ZVZhbHVlOwogCiAgICAgICAgIGlmIChtX3RhZ0lkID09IFNj
cmlwdFRhZ0lkIHx8IG1fdGFnSWQgPT0gSW1nVGFnSWQpIHsKLSAgICAgICAgICAgIGlmICh0aHJl
YWRTYWZlTWF0Y2goYXR0cmlidXRlTmFtZSwgc3JjQXR0cikpCisgICAgICAgICAgICBpZiAobWF0
Y2goYXR0cmlidXRlTmFtZSwgc3JjQXR0cikpCiAgICAgICAgICAgICAgICAgc2V0VXJsVG9Mb2Fk
KGF0dHJpYnV0ZVZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRjaChh
dHRyaWJ1dGVOYW1lLCBjcm9zc29yaWdpbkF0dHIpICYmICFhdHRyaWJ1dGVWYWx1ZS5pc051bGwo
KSkKKyAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIGNyb3Nzb3JpZ2lu
QXR0cikgJiYgIWF0dHJpYnV0ZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIG1fY3Jv
c3NPcmlnaW5Nb2RlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0
ZVZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmIChtX3RhZ0lkID09IExpbmtUYWdJZCkgewotICAg
ICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaChhdHRyaWJ1dGVOYW1lLCBocmVmQXR0cikpCisg
ICAgICAgICAgICBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgaHJlZkF0dHIpKQogICAgICAgICAg
ICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICAgICAgICBlbHNlIGlm
ICh0aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRlTmFtZSwgcmVsQXR0cikpCisgICAgICAgICAgICBl
bHNlIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCByZWxBdHRyKSkKICAgICAgICAgICAgICAgICBt
X2xpbmtJc1N0eWxlU2hlZXQgPSByZWxBdHRyaWJ1dGVJc1N0eWxlU2hlZXQoYXR0cmlidXRlVmFs
dWUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUs
IG1lZGlhQXR0cikpCisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCBt
ZWRpYUF0dHIpKQogICAgICAgICAgICAgICAgIG1fbGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW4g
PSBsaW5rTWVkaWFBdHRyaWJ1dGVJc1NjcmVlbihhdHRyaWJ1dGVWYWx1ZSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAobV90YWdJZCA9PSBJbnB1dFRhZ0lkKSB7Ci0gICAgICAgICAgICBpZiAodGhyZWFk
U2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIHNyY0F0dHIpKQorICAgICAgICAgICAgaWYgKG1hdGNo
KGF0dHJpYnV0ZU5hbWUsIHNyY0F0dHIpKQogICAgICAgICAgICAgICAgIHNldFVybFRvTG9hZChh
dHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2goYXR0
cmlidXRlTmFtZSwgdHlwZUF0dHIpKQorICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2goYXR0cmli
dXRlTmFtZSwgdHlwZUF0dHIpKQogICAgICAgICAgICAgICAgIG1faW5wdXRJc0ltYWdlID0gZXF1
YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlVmFsdWUsIElucHV0VHlwZU5hbWVzOjppbWFnZSgpKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQcmVsb2FkU2Nhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmgKaW5kZXggNDdhNTQ0NGYxMGU4Y2ZkZDZiYTcwYjA2YmUwOGYyNTQ0MDRj
YzAxYi4uZDJmMmMxMTg5YzI1ZjUwZGIyOTIzZmZiMzRhNzEyNmU0MjdhM2IyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKQEAgLTg2LDcg
Kzg2LDcgQEAgcHJpdmF0ZToKICAgICBpbmxpbmUgdm9pZCBzY2FuQ29tbW9uKGNvbnN0IFRva2Vu
JiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mIHJlcXVlc3RzKTsKIAogICAgIHN0YXRpYyBUYWdJZCB0
YWdJZEZvcihjb25zdCBIVE1MVG9rZW46OkRhdGFWZWN0b3ImKTsKLSAgICBzdGF0aWMgVGFnSWQg
dGFnSWRGb3IoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFRhZ0lkIHRhZ0lkRm9yKGNvbnN0
IEhUTUxJZGVudGlmaWVyJik7CiAKICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYXRvckZvcihUYWdJ
ZCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192146</attachid>
            <date>2013-03-07 22:26:10 -0800</date>
            <delta_ts>2013-03-07 22:46:46 -0800</delta_ts>
            <desc>Should now build with the threaded parser off</desc>
            <filename>bug-107337-20130307222223.patch</filename>
            <type>text/plain</type>
            <size>45595</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk1NjlmOTI3NGJkZDJm
YzkwOGZmMDA4NzIyNTRhMmFlNTdmNDM3OS4uOTRhNTMwMmNjMTJjMTRiMjdlM2I4Y2E5YjFjOWVh
OGY4MGYxMmM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg0IEBACiAyMDEzLTAzLTA3ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAorICAgICAgICBCYWNrZ3JvdW5kSFRNTFBhcnNl
ciBzaG91bGQgYmUgYWJsZSB0byBhdG9taXplIHdlbGwta25vd24gc3RyaW5ncworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGluZyB0aGlzIHBhdGNo
IGVhc2lseSByZXF1aXJlcyBhcHBseWluZyBidWcgMTA3MjM2IGxvY2FsbHkKKyAgICAgICAgdG8g
cmVtb3ZlIGFsbCB0aGUgcmVuZGVyaW5nIG5vaXNlIGZyb20gUGFyc2VyL2h0bWwtdGhyZWFkZWQt
cGFyc2VyLmh0bWwuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGNsYXNzIEhUTUxJ
ZGVudGlmaWVyIHdoaWNoIGFsbG93cyB1cyB0byBhdm9pZAorICAgICAgICBhbGxvY2F0aW5nIHN0
cmluZ3MgZm9yIGtub3duIHRhZy9hdHRyaWJ1dGUgbmFtZXMgZnJvbSBIVE1MTmFtZXMuCisKKyAg
ICAgICAgVGhlcmUgaXMgc3RpbGwgYSBsb3Qgb2YgbWVhdCBvbiB0aGlzIGJvbmUsIGJ1dCBJIHRo
aW5rIGl0J3MgaW1wb3J0YW50IHRvCisgICAgICAgIGxhbmQgc29tZXRoaW5nICJzbWFsbGlzaCIg
dG8gc3RhcnQgYW5kIGl0ZXJhdGUgZnJvbSB0aGVyZS4KKworICAgICAgICBUaGlzIHRvb2sgUGFy
c2VyL2h0bWwtdGhyZWFkZWQtcGFyc2VyLmh0bWwgZnJvbToKKyAgICAgICAgbWVkaWFuPSA0NDMu
NzI2NTAwMDAyIG1zLCBzdGRldj0gNy4yNTAwMjY3OTk1MiBtcywgbWluPSA0MzAuMjQ0MDAwMDQ3
IG1zLCBtYXg9IDQ1NS41MTEwMDAwMDcgbXMKKyAgICAgICAgdG86CisgICAgICAgIG1lZGlhbj0g
NDI3Ljg0OTUwMDAwNCBtcywgc3RkZXY9IDkuOTY5NjcwNTgyOTIgbXMsIG1pbj0gNDE3LjkxNDAw
MDA0OSBtcywgbWF4PSA0NjEuNTI4MDAwMDE0IG1zCisgICAgICAgIG9uIG15IE1CUC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBodG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6QXRvbWljSFRNTFRva2VuKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp0b2tlbkV4aXRzRm9yZWlnbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
dG9rZW5FeGl0c1NWRyk6CisgICAgICAgIChXZWJDb3JlOjp0b2tlbkV4aXRzTWF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRlcik6
CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJlbG9hZFNjYW5uZXI6OnNjYW4pOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0NTU1ByZWxvYWRTY2FubmVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU1By
ZWxvYWRTY2FubmVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNw
cDoKKyAgICAgICAgKFNhbWVTaXplQXNDb21wYWN0SFRNTFRva2VuKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBhY3RIVE1M
VG9rZW46OkF0dHJpYnV0ZTo6QXR0cmlidXRlKToKKyAgICAgICAgKEF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXBhY3RIVE1MVG9rZW46OnB1YmxpY0lkZW50aWZpZXIpOgorICAgICAgICAoQ29tcGFjdEhU
TUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRCYWNrZ3JvdW5kUGFy
c2VyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjppZGVudGlmaWVyVGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50aWZpZXI6Omhhc0luZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJZGVudGlmaWVyOjpmaW5kSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6bmFt
ZUZvckluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjphc1N0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6YXNTdHJpbmdJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjphZGROYW1lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSWRlbnRpZmllcjo6aW5pdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTElkZW50
aWZpZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEhUTUxJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjpIVE1MSWRlbnRpZmllcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6aXNTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRocmVhZFNhZmVFcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjp0aHJl
YWRTYWZlTWF0Y2gpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dGhyZWFkU2FmZUhUTUxOYW1l
c01hdGNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6dGFnSWRGb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjptYXRjaCk6
CisgICAgICAgIChUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjpwcm9jZXNz
QXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaDoK
KworMjAxMy0wMy0wNyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKICAgICAgICAg
ZGlzcGxheTpub25lIGlmcmFtZXMgc2hvdWxkIG5vdCBidWlsZCByZW5kZXJpbmcgdHJlZXMKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzIzNgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IDAyODgyYWVhMGYwZjA2MjljNzAyODg1OGNmY2U5ZTI2Yjk2
MjNmYTQuLjc2YzQ1NWE4M2UwOTdiMjdkOWJjMDg1YTk5YmFiNmZjM2Y3Y2ZjZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0xNTU2LDYgKzE1NTYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKICAgICBodG1sL3BhcnNlci9I
VE1MUGFyc2VyVGhyZWFkLmNwcAogICAgIGh0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVu
dExpc3QuY3BwCisgICAgaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwCiAgICAgaHRtbC9w
YXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAogICAgIGh0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5jcHAKICAgICBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBmODU5ZjBiZWFjZDE0MzZkNzZiMzlh
MDVmZDQ2OTVhMDhmZDFhMWZhLi5kOWYyOGZlZjI2N2FlZmU4N2JiZTNkYzAzZTIyMzQ1MzJmZDEz
ZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM2MjEsNiArMzYyMSw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVu
dGl0eVRhYmxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5n
RWxlbWVudExpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0
dGluZ0VsZW1lbnRMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVu
dGlmaWVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElucHV0U3RyZWFtLmggXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCmluZGV4IDQxYzBlYjc5NWRiNmZkMjg2M2NlNzRmOWQ0ZGE0MmRjNWQwNWQxNzAuLjU2YzU2
ZWY5YjFhNDRiNDU0M2Y2OTQ1MDAyYzQ1ZDU4NTg3ZTc5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNzM1
LDYgKzczNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvcGFyc2VyL0hUTUxFbnRpdHlQYXJz
ZXIuY3BwIFwKICAgICBodG1sL3BhcnNlci9IVE1MRW50aXR5U2VhcmNoLmNwcCBcCiAgICAgaHRt
bC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAgXAorICAgIGh0bWwvcGFyc2Vy
L0hUTUxJZGVudGlmaWVyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFy
c2VyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgXAogICAgIGh0
bWwvcGFyc2VyL0hUTUxQYXJzZXJPcHRpb25zLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNDlk
NjkzYzVlZDY3Y2E2YjM4MjkyOGJhYTEzMWY0YjMxOTYwYjExNS4uZDA3OWVlMmYyNmEzODY3OWI1
OTg0MDljOTdlMTI3ZjczOTI4MGVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUwNyw2ICszNTA3
LDggQEAKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MRW50aXR5VGFibGUuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAnLAogICAg
ICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuaCcsCisgICAg
ICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwJywKKyAgICAgICAgICAgICdo
dG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9I
VE1MSW5wdXRTdHJlYW0uaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFy
c2V0UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0
UGFyc2VyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCA4NDQzZjllMmJhMWU4Njk0Y2Q5NGE4NjJkMzI4YzAxMzdkMTljNjFiLi4xNGYzYjk4
ZGU2YmQ3NmQwNzMwOGEzYzIzZjgyM2E3YjAzNTkyZDU2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjUwOTAsNiArNjUwOTAsMTQgQEAKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
cGFyc2VyXEhUTUxJZGVudGlmaWVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEhUTUxJZGVudGlmaWVyLmgiCisJ
CQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1s
XHBhcnNlclxIVE1MSW5wdXRTdHJlYW0uaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGY3YzY5ZTg0
MWY3YTVmYmM0NjU2NjEwMGZhMzNmMDY5MjMxMGFlNTEuLjY2YTlhZmRmMWE2OWEwNmZkYzVkZGRm
NTZkZDA4ZDRiMTUyNDU5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagpAQCAtNjkyMyw2ICs2OTIzLDcgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxFbnRpdHlQYXJzZXIuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTEVudGl0eVNlYXJjaC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MRm9ybWF0dGluZ0VsZW1l
bnRMaXN0LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhU
TUxJZGVuaXRpZmllci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBh
cnNlclxIVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caHRtbFxwYXJzZXJcSFRNTFBhcnNlcklkaW9tcy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MUGFyc2VyT3B0aW9ucy5jcHAiIC8+CkBAIC0x
MDM3Nyw2ICsxMDM3OCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNl
clxIVE1MRW50aXR5UGFyc2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1s
XHBhcnNlclxIVE1MRW50aXR5U2VhcmNoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxodG1sXHBhcnNlclxIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MSWRlbnRpZmllci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTElucHV0U3RyZWFtLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MTWV0YUNoYXJzZXRQYXJz
ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxQYXJz
ZXJJZGlvbXMuaCIgLz4KQEAgLTExMTM3LDQgKzExMTM5LDQgQEAKICAgPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdy
b3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVj
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCmluZGV4IDEzODM3MTAwNTVjNWVjZGQ0
YmRlMDQ4ZWYzNjlhZmYxZmU5NGU4ZmYuLjY2NTVmNGEzZGQwZTZhMTY3ZTJmZWFjNzNjMjRmYTRi
MzdkODlhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hU
TUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tl
bi5oCkBAIC0xODksMTAgKzE4OSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBIVE1MVG9rZW46
OkRPQ1RZUEU6Ci0gICAgICAgICAgICBtX25hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgICAgICAg
ICBtX25hbWUgPSB0b2tlbi5kYXRhKCkuYXNTdHJpbmcoKTsKICAgICAgICAgICAgIG1fZG9jdHlw
ZURhdGEgPSBhZG9wdFB0cihuZXcgRG9jdHlwZURhdGEoKSk7CiAgICAgICAgICAgICBtX2RvY3R5
cGVEYXRhLT5tX2hhc1B1YmxpY0lkZW50aWZpZXIgPSB0cnVlOwotICAgICAgICAgICAgYXBwZW5k
KG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllciwgdG9rZW4ucHVibGljSWRlbnRpZmll
cigpKTsKKyAgICAgICAgICAgIGFwcGVuZChtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZp
ZXIsIHRva2VuLnB1YmxpY0lkZW50aWZpZXIoKS5hc1N0cmluZygpKTsKICAgICAgICAgICAgIG1f
ZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmllciA9IHRydWU7CiAgICAgICAgICAgICBh
cHBlbmQobV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyLCB0b2tlbi5zeXN0ZW1JZGVu
dGlmaWVyKCkpOwogICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9mb3JjZVF1aXJrcyA9IHRv
a2VuLmRvY3R5cGVGb3JjZXNRdWlya3MoKTsKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6CiAgICAgICAgICAgICBtX2F0dHJpYnV0
ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgpKTsKICAg
ICAgICAgICAgIGZvciAoVmVjdG9yPENvbXBhY3RIVE1MVG9rZW46OkF0dHJpYnV0ZT46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gdG9rZW4uYXR0cmlidXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLmF0
dHJpYnV0ZXMoKS5lbmQoKTsgKytpdCkgewotICAgICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUg
bmFtZShudWxsQXRvbSwgaXQtPm5hbWUsIG51bGxBdG9tKTsKKyAgICAgICAgICAgICAgICBRdWFs
aWZpZWROYW1lIG5hbWUobnVsbEF0b20sIGl0LT5uYW1lLmFzU3RyaW5nKCksIG51bGxBdG9tKTsK
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBOXjIgZm9yIHRoZSBudW1iZXIgb2Yg
YXR0cmlidXRlcy4KICAgICAgICAgICAgICAgICBpZiAoIWZpbmRBdHRyaWJ1dGVJblZlY3Rvciht
X2F0dHJpYnV0ZXMsIG5hbWUpKQogICAgICAgICAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBw
ZW5kKEF0dHJpYnV0ZShuYW1lLCBpdC0+dmFsdWUpKTsKQEAgLTIxMCwxNyArMjEwLDI0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAvLyBGYWxsIHRocm91Z2ghCiAgICAgICAgIGNhc2UgSFRNTFRv
a2VuOjpFbmRUYWc6CiAgICAgICAgICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4uc2VsZkNsb3Np
bmcoKTsKLSAgICAgICAgICAgIG1fbmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAgICAgICAgIG1f
bmFtZSA9IHRva2VuLmRhdGEoKS5hc1N0cmluZygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgotICAgICAgICAgICAgbV9kYXRhID0gdG9rZW4u
ZGF0YSgpOworICAgICAgICAgICAgbV9kYXRhID0gdG9rZW4uZGF0YSgpLmFzU3RyaW5nKCk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKLSAg
ICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzID0gdG9rZW4uZGF0YSgpLmNoYXJhY3RlcnMo
KTsKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoID0gdG9rZW4uZGF0YSgp
Lmxlbmd0aCgpOworICAgICAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOiB7CisgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIHN0cmluZyA9IHRva2VuLmRhdGEoKS5hc1N0cmluZygpOworICAg
ICAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFjdGVycygpOworICAg
ICAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnNMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAg
ICAgICAgICAgICBtX2lzQWxsOEJpdERhdGEgPSB0b2tlbi5pc0FsbDhCaXREYXRhKCk7CisgICAg
ICAgICAgICAvLyBGSVhNRTogV2Ugd291bGQgbGlrZSBhIHN0cm9uZ2VyIEFTU0VSVCBoZXJlOgor
ICAgICAgICAgICAgLy8gQVNTRVJUKHN0cmluZy5pczhCaXQoKSA9PSB0b2tlbi5pc0FsbDhCaXRE
YXRhKCkpOworICAgICAgICAgICAgLy8gYnV0IGN1cnJlbnRseSB0aGF0IGZpcmVzLCBsaWtlbHkg
ZHVlIHRvIGJ1Z3MgaW4gSFRNTFRva2VuaXplcgorICAgICAgICAgICAgLy8gbm90IHNldHRpbmcg
aXNBbGw4Qml0RGF0YSBpbiBhbGwgdGhlIHRpbWVzIGl0IGNvdWxkLgorICAgICAgICAgICAgQVNT
RVJUKCF0b2tlbi5pc0FsbDhCaXREYXRhKCkgfHwgc3RyaW5nLmlzOEJpdCgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCmlu
ZGV4IDg3NDQzMmU2MDFjYThmNmM3MThmZTQwYzQ5MjFkOTE5NjNkMWIzNmMuLjA1YjJlZWY1MmFk
ODA5NWZhNTE0NGZjYTc3ZjQwMGE2MjJhZGY4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKQEAgLTY5LDY1ICs2OSw2NyBA
QCBzdGF0aWMgdm9pZCBjaGVja1RoYXRYU1NJbmZvc0FyZVNhZmVUb1NlbmRUb0Fub3RoZXJUaHJl
YWQoY29uc3QgWFNTSW5mb1N0cmVhbSYgeAogCiBzdGF0aWMgYm9vbCB0b2tlbkV4aXRzRm9yZWln
bkNvbnRlbnQoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgLy8gRklYTUU6
IFRoaXMgaXMgY29waWVkIGZyb20gSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVp
Z25Db250ZW50IGFuZCBjaGFuZ2VkIHRvIHVzZSB0aHJlYWRTYWZlTWF0Y2guCi0gICAgY29uc3Qg
U3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwotICAgIHJldHVybiB0aHJlYWRTYWZlTWF0
Y2godGFnTmFtZSwgYlRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJp
Z1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJsb2NrcXVvdGVUYWcp
Ci0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBib2R5VGFnKQotICAgICAgICB8
fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgYnJUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVN
YXRjaCh0YWdOYW1lLCBjZW50ZXJUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBjb2RlVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgZGRUYWcp
Ci0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBkaXZUYWcpCi0gICAgICAgIHx8
IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBkbFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1h
dGNoKHRhZ05hbWUsIGR0VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwg
ZW1UYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBlbWJlZFRhZykKLSAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGgxVGFnKQotICAgICAgICB8fCB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgaDJUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0
YWdOYW1lLCBoM1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGg0VGFn
KQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaDVUYWcpCi0gICAgICAgIHx8
IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBoNlRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1h
dGNoKHRhZ05hbWUsIGhlYWRUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBoclRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGlUYWcpCi0gICAg
ICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBpbWdUYWcpCi0gICAgICAgIHx8IHRocmVh
ZFNhZmVNYXRjaCh0YWdOYW1lLCBsaVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRh
Z05hbWUsIGxpc3RpbmdUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBt
ZW51VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbWV0YVRhZykKLSAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG5vYnJUYWcpCi0gICAgICAgIHx8IHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBvbFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIHBUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBwcmVU
YWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBydWJ5VGFnKQotICAgICAg
ICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2Fm
ZU1hdGNoKHRhZ05hbWUsIHNtYWxsVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFn
TmFtZSwgc3BhblRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHN0cm9u
Z1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHN0cmlrZVRhZykKLSAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHN1YlRhZykKLSAgICAgICAgfHwgdGhy
ZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHN1cFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIHRhYmxlVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwg
dHRUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB1VGFnKQotICAgICAg
ICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgdWxUYWcpCi0gICAgICAgIHx8IHRocmVhZFNh
ZmVNYXRjaCh0YWdOYW1lLCB2YXJUYWcpCi0gICAgICAgIHx8ICh0aHJlYWRTYWZlTWF0Y2godGFn
TmFtZSwgZm9udFRhZykgJiYgKHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oY29sb3JBdHRyKSB8fCB0
b2tlbi5nZXRBdHRyaWJ1dGVJdGVtKGZhY2VBdHRyKSB8fCB0b2tlbi5nZXRBdHRyaWJ1dGVJdGVt
KHNpemVBdHRyKSkpOworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGNvcGllZCBmcm9tIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCBhbmQgY2hhbmdlZCB0byB1c2Ug
dGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoLgorICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdO
YW1lID0gdG9rZW4uZGF0YSgpOworICAgIHJldHVybiB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgYlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIGJpZ1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUs
IGJsb2NrcXVvdGVUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdO
YW1lLCBib2R5VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgYnJUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBj
ZW50ZXJUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBj
b2RlVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZGRU
YWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBkaXZUYWcp
CisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBkbFRhZykKKyAg
ICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGR0VGFnKQorICAgICAg
ICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZW1UYWcpCisgICAgICAgIHx8
IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBlbWJlZFRhZykKKyAgICAgICAgfHwg
dGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGgxVGFnKQorICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaDJUYWcpCisgICAgICAgIHx8IHRocmVhZFNh
ZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoM1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIGg0VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgaDVUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCBoNlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNo
KHRhZ05hbWUsIGhlYWRUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0
YWdOYW1lLCBoclRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIGlUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBp
bWdUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBsaVRh
ZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGxpc3RpbmdU
YWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBtZW51VGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbWV0YVRhZykK
KyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIG5vYnJUYWcpCisg
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBvbFRhZykKKyAgICAg
ICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHBUYWcpCisgICAgICAgIHx8
IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBwcmVUYWcpCisgICAgICAgIHx8IHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBydWJ5VGFnKQorICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2Fm
ZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHNtYWxsVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZl
SFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3BhblRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIHN0cm9uZ1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIHN0cmlrZVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIHN1YlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIHN1cFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1l
c01hdGNoKHRhZ05hbWUsIHRhYmxlVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgdHRUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCB1VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgdWxUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCB2YXJUYWcpCisgICAgICAgIHx8ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwg
Zm9udFRhZykgJiYgKHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oY29sb3JBdHRyKSB8fCB0b2tlbi5n
ZXRBdHRyaWJ1dGVJdGVtKGZhY2VBdHRyKSB8fCB0b2tlbi5nZXRBdHRyaWJ1dGVJdGVtKHNpemVB
dHRyKSkpOwogfQogCiBzdGF0aWMgYm9vbCB0b2tlbkV4aXRzU1ZHKGNvbnN0IENvbXBhY3RIVE1M
VG9rZW4mIHRva2VuKQogewotICAgIGNvbnN0IFN0cmluZyYgdGFnTmFtZSA9IHRva2VuLmRhdGEo
KTsKLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UodGFnTmFtZSwgU1ZHTmFtZXM6OmZvcmVp
Z25PYmplY3RUYWcubG9jYWxOYW1lKCkpOworICAgIC8vIEZJWE1FOiBJdCdzIHZlcnkgZnJhZ2ls
ZSB0aGF0IHdlIHNwZWNpYWwgY2FzZSBmb3JlaWduT2JqZWN0IGhlcmUgdG8gYmUgY2FzZS1pbnNl
bnNpdGl2ZS4KKyAgICAvLyBGSVhNRTogVXNpbmcgQ2FzZUZvbGRpbmdIYXNoOjplcXVhbCBpbnN0
ZWFkIG9mIGVxdWFsSWdub3JpbmdDYXNlLCBhcyBlcXVhbElnbm9yaW5nQ2FzZQorICAgIC8vIHdh
bnRzIG5vbi1jb25zdCBTdHJpbmdJbXBsKiAoZXZlbiB0aG91Z2ggaXQgbmV2ZXIgbW9kaWZpZXMg
dGhlbSkuCisgICAgcmV0dXJuIENhc2VGb2xkaW5nSGFzaDo6ZXF1YWwodG9rZW4uZGF0YSgpLmFz
U3RyaW5nSW1wbCgpLCBTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZy5sb2NhbE5hbWUoKS5pbXBs
KCkpOwogfQogCiBzdGF0aWMgYm9vbCB0b2tlbkV4aXRzTWF0aChjb25zdCBDb21wYWN0SFRNTFRv
a2VuJiB0b2tlbikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBjb3BpZWQgZnJvbSBIVE1MRWxl
bWVudFN0YWNrOjppc01hdGhNTFRleHRJbnRlZ3JhdGlvblBvaW50IGFuZCBjaGFuZ2VkIHRvIHVz
ZSB0aHJlYWRTYWZlTWF0Y2guCi0gICAgY29uc3QgU3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0
YSgpOworICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwog
ICAgIHJldHVybiB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1pVGFnKQog
ICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1vVGFnKQog
ICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1uVGFnKQpA
QCAtMTk2LDcgKzE5OCw3IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6Om1hcmtFbmRPZkZp
bGUoKQogYm9vbCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRlcihjb25z
dCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBpZiAodG9rZW4udHlwZSgpID09IEhU
TUxUb2tlbjo6U3RhcnRUYWcpIHsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB0YWdOYW1lID0gdG9r
ZW4uZGF0YSgpOworICAgICAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSA9IHRva2Vu
LmRhdGEoKTsKICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBTVkdOYW1lczo6
c3ZnVGFnKSkKICAgICAgICAgICAgIG1fbmFtZXNwYWNlU3RhY2suYXBwZW5kKFNWRyk7CiAgICAg
ICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1hdGhUYWcpKQpA
QCAtMjA4LDMwICsyMTAsMzAgQEAgYm9vbCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVU
cmVlQnVpbGRlcihjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIG1f
bmFtZXNwYWNlU3RhY2suYXBwZW5kKEhUTUwpOwogICAgICAgICBpZiAoIWluRm9yZWlnbkNvbnRl
bnQoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIGNvcHkgb2YgVG9r
ZW5pemVyOjp1cGRhdGVTdGF0ZUZvciB3aGljaCB1c2VzIHRocmVhZFNhZmVNYXRjaGVzLgotICAg
ICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0ZXh0YXJlYVRhZykgfHwgdGhy
ZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHRpdGxlVGFnKSkKKyAgICAgICAgICAgIGlmICh0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdGV4dGFyZWFUYWcpIHx8IHRocmVhZFNhZmVIVE1M
TmFtZXNNYXRjaCh0YWdOYW1lLCB0aXRsZVRhZykpCiAgICAgICAgICAgICAgICAgbV90b2tlbml6
ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0YXRlKTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBwbGFpbnRleHRUYWcpKQorICAgICAgICAg
ICAgZWxzZSBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHBsYWludGV4dFRh
ZykpCiAgICAgICAgICAgICAgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6
OlBMQUlOVEVYVFN0YXRlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRjaCh0
YWdOYW1lLCBzY3JpcHRUYWcpKQorICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIHNjcmlwdFRhZykpCiAgICAgICAgICAgICAgICAgbV90b2tlbml6
ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFTdGF0ZSk7Ci0gICAgICAgICAg
ICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc3R5bGVUYWcpCi0gICAgICAgICAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGlmcmFtZVRhZykKLSAgICAgICAgICAg
ICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgeG1wVGFnKQotICAgICAgICAgICAgICAg
IHx8ICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbm9lbWJlZFRhZykgJiYgbV9vcHRpb25zLnBs
dWdpbnNFbmFibGVkKQotICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBub2ZyYW1lc1RhZykKLSAgICAgICAgICAgICAgICB8fCAodGhyZWFkU2FmZU1hdGNoKHRhZ05h
bWUsIG5vc2NyaXB0VGFnKSAmJiBtX29wdGlvbnMuc2NyaXB0RW5hYmxlZCkpCisgICAgICAgICAg
ICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3R5bGVUYWcpCisg
ICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGlmcmFt
ZVRhZykKKyAgICAgICAgICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgeG1wVGFnKQorICAgICAgICAgICAgICAgIHx8ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgbm9lbWJlZFRhZykgJiYgbV9vcHRpb25zLnBsdWdpbnNFbmFibGVkKQorICAgICAg
ICAgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBub2ZyYW1lc1Rh
ZykKKyAgICAgICAgICAgICAgICB8fCAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUs
IG5vc2NyaXB0VGFnKSAmJiBtX29wdGlvbnMuc2NyaXB0RW5hYmxlZCkpCiAgICAgICAgICAgICAg
ICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0ZSk7CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6RW5k
VGFnKSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKKyAg
ICAgICAgY29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CiAgICAg
ICAgIGlmICgobV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gU1ZHICYmIHRocmVhZFNhZmVNYXRj
aCh0YWdOYW1lLCBTVkdOYW1lczo6c3ZnVGFnKSkKICAgICAgICAgICAgIHx8IChtX25hbWVzcGFj
ZVN0YWNrLmxhc3QoKSA9PSBNYXRoTUwgJiYgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhN
TE5hbWVzOjptYXRoVGFnKSkKICAgICAgICAgICAgIHx8IChtX25hbWVzcGFjZVN0YWNrLmNvbnRh
aW5zKFNWRykgJiYgbV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gSFRNTCAmJiB0b2tlbkV4aXRz
U1ZHKHRva2VuKSkKICAgICAgICAgICAgIHx8IChtX25hbWVzcGFjZVN0YWNrLmNvbnRhaW5zKE1h
dGhNTCkgJiYgbV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gSFRNTCAmJiB0b2tlbkV4aXRzTWF0
aCh0b2tlbikpKQogICAgICAgICAgICAgbV9uYW1lc3BhY2VTdGFjay5yZW1vdmVMYXN0KCk7Ci0g
ICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkgeworICAgICAg
ICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHNjcmlwdFRhZykpIHsKICAg
ICAgICAgICAgIGlmICghaW5Gb3JlaWduQ29udGVudCgpKQogICAgICAgICAgICAgICAgIG1fdG9r
ZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NT
UHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9h
ZFNjYW5uZXIuY3BwCmluZGV4IDBjNjZmYzFhYzlmZmE2NDlmNTNiZDE4NDM0NjNhYjI2ZTQyZmRl
NTEuLmE2MGI5MGNkZDU4NDE0YzMzYmUzOWVjNGI0NWFkNzJkM2YzYjZkNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJDU1NQcmVsb2FkU2Nhbm5lci5oIgogCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgorI2luY2x1ZGUgIkhUTUxJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC02NCwxNiArNjUsMTkgQEAgdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nhbihjb25zdCBI
VE1MVG9rZW46OkRhdGFWZWN0b3ImIGRhdGEsIFByZWxvYWRSZXF1ZXN0U3QKICAgICBzY2FuQ29t
bW9uKGRhdGEuZGF0YSgpLCBkYXRhLmRhdGEoKSArIGRhdGEuc2l6ZSgpLCByZXF1ZXN0cyk7CiB9
CiAKLXZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OnNjYW4oY29uc3QgU3RyaW5nJiBkYXRhLCBQcmVs
b2FkUmVxdWVzdFN0cmVhbSYgcmVxdWVzdHMpCisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFS
U0VSKQordm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nhbihjb25zdCBIVE1MSWRlbnRpZmllciYg
aWRlbnRpZmllciwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mIHJlcXVlc3RzKQogewotICAgIGlmIChk
YXRhLmlzOEJpdCgpKSB7Ci0gICAgICAgIGNvbnN0IExDaGFyKiBiZWdpbiA9IGRhdGEuY2hhcmFj
dGVyczgoKTsKLSAgICAgICAgc2NhbkNvbW1vbihiZWdpbiwgYmVnaW4gKyBkYXRhLmxlbmd0aCgp
LCByZXF1ZXN0cyk7CisgICAgY29uc3QgU3RyaW5nSW1wbCogZGF0YSA9IGlkZW50aWZpZXIuYXNT
dHJpbmdJbXBsKCk7CisgICAgaWYgKGRhdGEtPmlzOEJpdCgpKSB7CisgICAgICAgIGNvbnN0IExD
aGFyKiBiZWdpbiA9IGRhdGEtPmNoYXJhY3RlcnM4KCk7CisgICAgICAgIHNjYW5Db21tb24oYmVn
aW4sIGJlZ2luICsgZGF0YS0+bGVuZ3RoKCksIHJlcXVlc3RzKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBjb25zdCBVQ2hhciogYmVnaW4gPSBkYXRhLmNoYXJhY3RlcnMxNigpOwotICAg
IHNjYW5Db21tb24oYmVnaW4sIGJlZ2luICsgZGF0YS5sZW5ndGgoKSwgcmVxdWVzdHMpOworICAg
IGNvbnN0IFVDaGFyKiBiZWdpbiA9IGRhdGEtPmNoYXJhY3RlcnMxNigpOworICAgIHNjYW5Db21t
b24oYmVnaW4sIGJlZ2luICsgZGF0YS0+bGVuZ3RoKCksIHJlcXVlc3RzKTsKIH0KKyNlbmRpZgog
CiBpbmxpbmUgdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6dG9rZW5pemUoVUNoYXIgYykKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5oCmluZGV4IDRi
NjliYzMyMzU2YjRjMjE4MTMzZmIxM2RjYTQyMTBmYjNiNmY2YTQuLjljMjA5MTAxMWQwNzI3ZTll
YzY1Zjk3ZDVjYTlkNzAwODVhNzE0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQ1NTUHJlbG9hZFNjYW5uZXIuaApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIEhUTUxJZGVudGlmaWVyOworCiBjbGFzcyBDU1NQcmVsb2FkU2Nhbm5l
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTUHJlbG9hZFNjYW5uZXIpOwogcHVibGlj
OgpAQCAtNDIsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgpOwogCiAgICAgdm9p
ZCBzY2FuKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlY3RvciYsIFByZWxvYWRSZXF1ZXN0U3RyZWFt
Jik7Ci0gICAgdm9pZCBzY2FuKGNvbnN0IFN0cmluZyYsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJik7
CisgICAgdm9pZCBzY2FuKGNvbnN0IEhUTUxJZGVudGlmaWVyJiwgUHJlbG9hZFJlcXVlc3RTdHJl
YW0mKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIFN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKaW5kZXggYjQ3ODhhMDdlNWEwNmYyMWQ0
NTgwOWVhYWY3Yjk2ZWExOGQ4MTAzNC4uNzZkZGM2YjZjNzZlM2E1NTBjNDZlY2VkMDY5MGM5MDhh
MjUzZDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhU
TUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxU
b2tlbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3Qg
U2FtZVNpemVBc0NvbXBhY3RIVE1MVG9rZW4gIHsKICAgICB1bnNpZ25lZCBiaXRmaWVsZHM7Ci0g
ICAgU3RyaW5nIG5hbWU7CisgICAgSFRNTElkZW50aWZpZXIgZGF0YTsKICAgICBWZWN0b3I8QXR0
cmlidXRlPiB2ZWN0b3I7CiAgICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbjsKIH07CkBAIC01
NiwxMCArNTYsMTAgQEAgQ29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbihjb25zdCBI
VE1MVG9rZW4qIHRva2VuLCBjb25zdCBUZXh0UG9zaXRpb24mIHQKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBF
OiB7Ci0gICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi0+bmFtZSgpKTsKKyAgICAgICAgbV9k
YXRhID0gSFRNTElkZW50aWZpZXIodG9rZW4tPm5hbWUoKSwgTGlrZWx5OEJpdCk7CiAgICAgICAg
IC8vIFRoZXJlIGlzIG9ubHkgMSBET0NUWVBFIHRva2VuIHBlciBkb2N1bWVudCwgc28gdG8gYXZv
aWQgaW5jcmVhc2luZyB0aGUKICAgICAgICAgLy8gc2l6ZSBvZiBDb21wYWN0SFRNTFRva2VuLCB3
ZSBqdXN0IHVzZSB0aGUgbV9hdHRyaWJ1dGVzIHZlY3Rvci4KLSAgICAgICAgbV9hdHRyaWJ1dGVz
LmFwcGVuZChBdHRyaWJ1dGUoU3RyaW5nKHRva2VuLT5wdWJsaWNJZGVudGlmaWVyKCkpLCBTdHJp
bmcodG9rZW4tPnN5c3RlbUlkZW50aWZpZXIoKSkpKTsKKyAgICAgICAgbV9hdHRyaWJ1dGVzLmFw
cGVuZChBdHRyaWJ1dGUoSFRNTElkZW50aWZpZXIodG9rZW4tPnB1YmxpY0lkZW50aWZpZXIoKSwg
TGlrZWx5OEJpdCksIFN0cmluZyh0b2tlbi0+c3lzdGVtSWRlbnRpZmllcigpKSkpOwogICAgICAg
ICBtX2RvY3R5cGVGb3JjZXNRdWlya3MgPSB0b2tlbi0+Zm9yY2VRdWlya3MoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtNjgsMTkgKzY4LDE3IEBAIENvbXBhY3RIVE1MVG9rZW46OkNvbXBh
Y3RIVE1MVG9rZW4oY29uc3QgSFRNTFRva2VuKiB0b2tlbiwgY29uc3QgVGV4dFBvc2l0aW9uJiB0
CiAgICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFnOgogICAgICAgICBtX2F0dHJpYnV0ZXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b2tlbi0+YXR0cmlidXRlcygpLnNpemUoKSk7CiAgICAgICAg
IGZvciAoVmVjdG9yPEhUTUxUb2tlbjo6QXR0cmlidXRlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0
b2tlbi0+YXR0cmlidXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLT5hdHRyaWJ1dGVzKCkuZW5k
KCk7ICsraXQpCi0gICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShTdHJp
bmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShpdC0+bmFtZSksIFN0cmluZ0ltcGw6OmNyZWF0
ZThCaXRJZlBvc3NpYmxlKGl0LT52YWx1ZSkpKTsKKyAgICAgICAgICAgIG1fYXR0cmlidXRlcy5h
cHBlbmQoQXR0cmlidXRlKEhUTUxJZGVudGlmaWVyKGl0LT5uYW1lLCBMaWtlbHk4Qml0KSwgU3Ry
aW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoaXQtPnZhbHVlKSkpOwogICAgICAgICAvLyBG
YWxsIHRocm91Z2ghCiAgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzoKICAgICAgICAgbV9zZWxm
Q2xvc2luZyA9IHRva2VuLT5zZWxmQ2xvc2luZygpOwogICAgICAgICAvLyBGYWxsIHRocm91Z2gh
CiAgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6Ci0gICAgY2FzZSBIVE1MVG9rZW46OkNoYXJh
Y3RlcjoKLSAgICAgICAgaWYgKHRva2VuLT5pc0FsbDhCaXREYXRhKCkpIHsKLSAgICAgICAgICAg
IG1fZGF0YSA9IFN0cmluZzo6bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UodG9rZW4tPmRhdGEoKSk7
Ci0gICAgICAgICAgICBtX2lzQWxsOEJpdERhdGEgPSB0cnVlOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi0+ZGF0YSgpKTsKKyAgICBjYXNlIEhUTUxU
b2tlbjo6Q2hhcmFjdGVyOiB7CisgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IHRva2VuLT5pc0Fs
bDhCaXREYXRhKCk7CisgICAgICAgIG1fZGF0YSA9IEhUTUxJZGVudGlmaWVyKHRva2VuLT5kYXRh
KCksIHRva2VuLT5pc0FsbDhCaXREYXRhKCkgPyBGb3JjZThCaXQgOiBGb3JjZTE2Qml0KTsKICAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Nv
bXBhY3RIVE1MVG9rZW4uaAppbmRleCBjODk4ZjZlNmYxNGVjODkxMmIzMmZhMTMxNWM3NzhhODdl
Mzk4OTgzLi5mZmE0YWU0M2NkMWYzZWJmMGUzZWJjM2U4OWVhNDk0ZjYyZjUzMzA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAKKyNpbmNsdWRlICJI
VE1MSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtNDQsMTMgKzQ1LDEzIEBA
IGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBDb21wYWN0SFRNTFRva2VuIHsKIHB1YmxpYzoK
ICAgICBzdHJ1Y3QgQXR0cmlidXRlIHsKLSAgICAgICAgQXR0cmlidXRlKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICAgICAgQXR0cmlidXRlKGNvbnN0IEhUTUxJ
ZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICAgICAgOiBuYW1l
KG5hbWUpCiAgICAgICAgICAgICAsIHZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0K
IAotICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgSFRNTElkZW50aWZpZXIgbmFtZTsKICAg
ICAgICAgU3RyaW5nIHZhbHVlOwogICAgIH07CiAKQEAgLTU5LDcgKzYwLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CiAKICAgICBIVE1M
VG9rZW46OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUb2tlbjo6
VHlwZT4obV90eXBlKTsgfQotICAgIGNvbnN0IFN0cmluZyYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQorICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhOyB9CiAgICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc2Vs
ZkNsb3Npbmc7IH0KICAgICBib29sIGlzQWxsOEJpdERhdGEoKSBjb25zdCB7IHJldHVybiBtX2lz
QWxsOEJpdERhdGE7IH0KICAgICBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcygp
IGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQpAQCAtNjgsNyArNjksNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBUaGVyZSBpcyBvbmx5IDEgRE9DVFlQRSB0b2tlbiBwZXIgZG9jdW1lbnQsIHNv
IHRvIGF2b2lkIGluY3JlYXNpbmcgdGhlCiAgICAgLy8gc2l6ZSBvZiBDb21wYWN0SFRNTFRva2Vu
LCB3ZSBqdXN0IHVzZSB0aGUgbV9hdHRyaWJ1dGVzIHZlY3Rvci4KLSAgICBjb25zdCBTdHJpbmcm
IHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXNbMF0ubmFtZTsg
fQorICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdHRyaWJ1dGVzWzBdLm5hbWU7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXNbMF0udmFsdWU7IH0KICAgICBi
b29sIGRvY3R5cGVGb3JjZXNRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX2RvY3R5cGVGb3JjZXNR
dWlya3M7IH0KIApAQCAtNzgsNyArNzksNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faXNB
bGw4Qml0RGF0YSA6IDE7CiAgICAgdW5zaWduZWQgbV9kb2N0eXBlRm9yY2VzUXVpcmtzOiAxOwog
Ci0gICAgU3RyaW5nIG1fZGF0YTsgLy8gIm5hbWUiLCAiY2hhcmFjdGVycyIsIG9yICJkYXRhIiBk
ZXBlbmRpbmcgb24gbV90eXBlCisgICAgSFRNTElkZW50aWZpZXIgbV9kYXRhOyAvLyAibmFtZSIs
ICJjaGFyYWN0ZXJzIiwgb3IgImRhdGEiIGRlcGVuZGluZyBvbiBtX3R5cGUKICAgICBWZWN0b3I8
QXR0cmlidXRlPiBtX2F0dHJpYnV0ZXM7CiAgICAgVGV4dFBvc2l0aW9uIG1fdGV4dFBvc2l0aW9u
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJz
ZXIuY3BwCmluZGV4IDZlYzE2ODYyZWM2OGM2MGRlNTU1NGU0NTkyMGRmY2JjYzc4MDY1MTMuLjIx
ZmZkOGQ1ODEwYWM2OTYyYWY4ZmY0Mzg2OWNlYWQ2NDBmMGQ1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VyU2NoZWR1bGVyLmgiCiAjaW5jbHVk
ZSAiSFRNTFBhcnNlclRocmVhZC5oIgpAQCAtNjU3LDYgKzY1OCw4IEBAIHZvaWQgSFRNTERvY3Vt
ZW50UGFyc2VyOjpzdGFydEJhY2tncm91bmRQYXJzZXIoKQogICAgIEFTU0VSVCghbV9oYXZlQmFj
a2dyb3VuZFBhcnNlcik7CiAgICAgbV9oYXZlQmFja2dyb3VuZFBhcnNlciA9IHRydWU7CiAKKyAg
ICBIVE1MSWRlbnRpZmllcjo6aW5pdCgpOworCiAgICAgUmVmUHRyPFdlYWtSZWZlcmVuY2U8QmFj
a2dyb3VuZEhUTUxQYXJzZXI+ID4gcmVmZXJlbmNlID0gV2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5k
SFRNTFBhcnNlcj46OmNyZWF0ZVVuYm91bmQoKTsKICAgICBtX2JhY2tncm91bmRQYXJzZXIgPSBX
ZWFrUHRyPEJhY2tncm91bmRIVE1MUGFyc2VyPihyZWZlcmVuY2UpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJjYzY3NzMw
ZWRkMTQ1ZWYzMDZmODZmMmE1ZjM0MmNkMmVmYjc5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcApAQCAtMCwwICsxLDE0NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyNp
bmNsdWRlICJIVE1MSWRlbnRpZmllci5oIgorCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCit0eXBlZGVmIHN0ZDo6cGFpcjx1bnNpZ25lZCwgU3Ry
aW5nSW1wbCo+IElkZW50aWZpZXJFbnRyeTsKK3R5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgSWRl
bnRpZmllckVudHJ5LCBBbHJlYWR5SGFzaGVkPiBJZGVudGlmaWVyVGFibGU7CisKK3Vuc2lnbmVk
IEhUTUxJZGVudGlmaWVyOjptYXhOYW1lTGVuZ3RoID0gMDsKKworc3RhdGljIElkZW50aWZpZXJU
YWJsZSYgaWRlbnRpZmllclRhYmxlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKElkZW50
aWZpZXJUYWJsZSwgdGFibGUsICgpKTsKKyAgICByZXR1cm4gdGFibGU7Cit9CisKKyNpZm5kZWYg
TkRFQlVHCitib29sIEhUTUxJZGVudGlmaWVyOjpoYXNJbmRleChjb25zdCBTdHJpbmdJbXBsKiBz
dHJpbmcpCit7CisgICAgY29uc3QgSWRlbnRpZmllclRhYmxlJiB0YWJsZSA9IGlkZW50aWZpZXJU
YWJsZSgpOworICAgIHJldHVybiB0YWJsZS5jb250YWlucyhzdHJpbmctPmhhc2goKSk7Cit9Cisj
ZW5kaWYKKwordW5zaWduZWQgSFRNTElkZW50aWZpZXI6OmZpbmRJbmRleChjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIC8vIGNvbXB1dGVIYXNoQW5kTWFz
a1RvcDhCaXRzIGlzIHRoZSBmdW5jdGlvbiBTdHJpbmdJbXBsOjpoYXNoKCkgdXNlcy4KKyAgICB1
bnNpZ25lZCBoYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhj
aGFyYWN0ZXJzLCBsZW5ndGgpOworICAgIGNvbnN0IElkZW50aWZpZXJUYWJsZSYgdGFibGUgPSBp
ZGVudGlmaWVyVGFibGUoKTsKKyAgICBBU1NFUlQoIXRhYmxlLmlzRW1wdHkoKSk7CisKKyAgICBJ
ZGVudGlmaWVyVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGFibGUuZmluZChoYXNoKTsKKyAg
ICBpZiAoaXQgPT0gdGFibGUuZW5kKCkpCisgICAgICAgIHJldHVybiBpbnZhbGlkSW5kZXg7Cisg
ICAgcmV0dXJuIGl0LT52YWx1ZS5maXJzdDsKK30KKworY29uc3QgdW5zaWduZWQga0hUTUxOYW1l
c0luZGV4T2Zmc2V0ID0gMDsKK2NvbnN0IHVuc2lnbmVkIGtIVE1MQXR0cnNJbmRleE9mZnNldCA9
IDEwMDA7CitDT01QSUxFX0FTU0VSVChrSFRNTEF0dHJzSW5kZXhPZmZzZXQgPiBIVE1MVGFnc0Nv
dW50LCBrSFRNTEF0dHJzSW5kZXhPZmZzZXRfc2hvdWxkX2JlX2xhcmdlcl90aGFuX0hUTUxUYWdz
Q291bnQpOworCitzdGF0aWMgY29uc3QgU3RyaW5nJiBuYW1lRm9ySW5kZXgodW5zaWduZWQgaW5k
ZXgpCit7CisgICAgdW5zaWduZWQgYWRqdXN0ZWRJbmRleDsKKyAgICBRdWFsaWZpZWROYW1lKiog
bmFtZXM7CisgICAgaWYgKGluZGV4IDwga0hUTUxBdHRyc0luZGV4T2Zmc2V0KSB7CisgICAgICAg
IEFTU0VSVChpbmRleCA8IGtIVE1MTmFtZXNJbmRleE9mZnNldCArIEhUTUxUYWdzQ291bnQpOwor
ICAgICAgICBhZGp1c3RlZEluZGV4ID0gaW5kZXggLSBrSFRNTE5hbWVzSW5kZXhPZmZzZXQ7Cisg
ICAgICAgIG5hbWVzID0gZ2V0SFRNTFRhZ3MoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NF
UlQoaW5kZXggPCBrSFRNTEF0dHJzSW5kZXhPZmZzZXQgKyBIVE1MQXR0cnNDb3VudCk7CisgICAg
ICAgIGFkanVzdGVkSW5kZXggPSBpbmRleCAtIGtIVE1MQXR0cnNJbmRleE9mZnNldDsKKyAgICAg
ICAgbmFtZXMgPSBnZXRIVE1MQXR0cnMoKTsKKyAgICB9CisgICAgLy8gSFRNTEF0dHJzIGFuZCBI
VE1MTmFtZXMgbWF5IGhhdmUgY29sbGlzaW9ucywgYnV0CisgICAgLy8gd2Ugc2hvdWxkbid0IGNh
cmUgd2hpY2ggd2UgZW5kZWQgdXAgc3RvcmluZywgc2luY2UgdGhlaXIKKyAgICAvLyBjb21wb25l
bnRzIGFyZSBhbGwgQXRvbWljU3RyaW5ncyBhbmQgc2hvdWxkIHVzZSB0aGUgc2FtZQorICAgIC8v
IHVuZGVybHlpbmcgU3RyaW5nSW1wbCouCisgICAgcmV0dXJuIG5hbWVzW2FkanVzdGVkSW5kZXhd
LT5sb2NhbE5hbWUoKS5zdHJpbmcoKTsKK30KKworY29uc3QgU3RyaW5nJiBIVE1MSWRlbnRpZmll
cjo6YXNTdHJpbmcoKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
aWYgKG1faW5kZXggIT0gaW52YWxpZEluZGV4KQorICAgICAgICByZXR1cm4gbmFtZUZvckluZGV4
KG1faW5kZXgpOworICAgIHJldHVybiBtX3N0cmluZzsKK30KKworY29uc3QgU3RyaW5nSW1wbCog
SFRNTElkZW50aWZpZXI6OmFzU3RyaW5nSW1wbCgpIGNvbnN0Cit7CisgICAgaWYgKG1faW5kZXgg
IT0gaW52YWxpZEluZGV4KQorICAgICAgICByZXR1cm4gbmFtZUZvckluZGV4KG1faW5kZXgpLmlt
cGwoKTsKKyAgICByZXR1cm4gbV9zdHJpbmcuaW1wbCgpOworfQorCit2b2lkIEhUTUxJZGVudGlm
aWVyOjphZGROYW1lcyhRdWFsaWZpZWROYW1lKiogbmFtZXMsIHVuc2lnbmVkIG5hbWVzQ291bnQs
IHVuc2lnbmVkIGluZGV4T2Zmc2V0KQoreworICAgIElkZW50aWZpZXJUYWJsZSYgdGFibGUgPSBp
ZGVudGlmaWVyVGFibGUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmFtZXNDb3Vu
dDsgKytpKSB7CisgICAgICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBuYW1lc1tpXS0+bG9jYWxOYW1l
KCkuaW1wbCgpOworICAgICAgICB1bnNpZ25lZCBoYXNoID0gbmFtZS0+aGFzaCgpOworICAgICAg
ICB1bnNpZ25lZCBpbmRleCA9IGkgKyBpbmRleE9mZnNldDsKKyAgICAgICAgSWRlbnRpZmllckVu
dHJ5IGVudHJ5KGluZGV4LCBuYW1lKTsKKyAgICAgICAgSWRlbnRpZmllclRhYmxlOjpBZGRSZXN1
bHQgYWRkUmVzdWx0ID0gdGFibGUuYWRkKGhhc2gsIGVudHJ5KTsKKyAgICAgICAgbWF4TmFtZUxl
bmd0aCA9IHN0ZDo6bWF4KG1heE5hbWVMZW5ndGgsIG5hbWUtPmxlbmd0aCgpKTsKKyAgICAgICAg
Ly8gRW5zdXJlIHdlJ3JlIHVzaW5nIHRoZSBzYW1lIGhhc2hpbmcgYWxnb3JpdGhtIHRvIGdldCBh
bmQgc2V0LgorICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgIWFkZFJlc3VsdC5pc05l
d0VudHJ5IHx8IEhUTUxJZGVudGlmaWVyOjpmaW5kSW5kZXgobmFtZS0+Y2hhcmFjdGVycygpLCBu
YW1lLT5sZW5ndGgoKSkgPT0gaW5kZXgpOworICAgICAgICAvLyBXZSBleHBlY3Qgc29tZSBoYXNo
IGNvbGxpc2lvbnMsIGJ1dCBvbmx5IGZvciBpZGVudGljYWwgc3RyaW5ncy4KKyAgICAgICAgLy8g
U2luY2UgYWxsIG9mIHRoZXNlIG5hbWVzIGFyZSBBdG9taWNTdHJpbmdzIHBvaW50ZXJzIHNob3Vs
ZCBiZSBlcXVhbC4KKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsICFhZGRSZXN1bHQu
aXNOZXdFbnRyeSB8fCBuYW1lID09IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2Vjb25kKTsK
KyAgICB9Cit9CisKK3ZvaWQgSFRNTElkZW50aWZpZXI6OmluaXQoKQoreworICAgIC8vIFRoaXMg
aXMgc2FmZSB0byBjYWxsIGZyb20gYW55IHRocmVhZCwgYnV0IG11c3QgYmUgY2FsbGVkIGJlZm9y
ZQorICAgIC8vIHVzaW5nIEhUTUxJZGVudGlmaWVyLgorICAgIHN0YXRpYyBib29sIGlzSW5pdGlh
bGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoaXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlzSW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhdG9t
aXplIHNtYWxsIHdoaXRlc3BhY2UgKFxuLCBcblxuLCBldGMuKQorICAgIGFkZE5hbWVzKGdldEhU
TUxUYWdzKCksIEhUTUxUYWdzQ291bnQsIGtIVE1MTmFtZXNJbmRleE9mZnNldCk7CisgICAgYWRk
TmFtZXMoZ2V0SFRNTEF0dHJzKCksIEhUTUxBdHRyc0NvdW50LCBrSFRNTEF0dHJzSW5kZXhPZmZz
ZXQpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ZDU4ZTcyNGFlZGE3N2FiNDVkNzRmZjkyYzhlMzc5MjRiNjZlMGRhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaApAQCAtMCwwICsx
LDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
R09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSFRNTElkZW50aWZpZXJfaAorI2RlZmluZSBIVE1MSWRlbnRpZmllcl9oCisKKyNp
ZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBRdWFsaWZpZWROYW1lOwor
CitlbnVtIENoYXJhY3RlcldpZHRoIHsKKyAgICBMaWtlbHk4Qml0LAorICAgIEZvcmNlOEJpdCwK
KyAgICBGb3JjZTE2Qml0Cit9OworCitjbGFzcyBIVE1MSWRlbnRpZmllciB7CitwdWJsaWM6Cisg
ICAgSFRNTElkZW50aWZpZXIoKSA6IG1faW5kZXgoMCkgeyB9CisKKyAgICB0ZW1wbGF0ZTxzaXpl
X3QgaW5saW5lQ2FwYWNpdHk+CisgICAgSFRNTElkZW50aWZpZXIoY29uc3QgVmVjdG9yPFVDaGFy
LCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvciwgQ2hhcmFjdGVyV2lkdGggd2lkdGgpCisgICAgewor
ICAgICAgICAvLyBBdm9pZCBsb29rdXBzIG9mIGxvbmcgbmFtZXMgd2Uga25vdyBhcmUgZ29pbmcg
dG8gZmFpbC4KKyAgICAgICAgaWYgKHZlY3Rvci5zaXplKCkgPD0gbWF4TmFtZUxlbmd0aCkgewor
ICAgICAgICAgICAgbV9pbmRleCA9IGZpbmRJbmRleCh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6
ZSgpKTsKKyAgICAgICAgICAgIGlmIChtX2luZGV4ICE9IGludmFsaWRJbmRleCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9pbmRleCA9IGlu
dmFsaWRJbmRleDsKKyAgICAgICAgaWYgKHdpZHRoID09IExpa2VseThCaXQpCisgICAgICAgICAg
ICBtX3N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKHZlY3Rvcik7Cisg
ICAgICAgIGVsc2UgaWYgKHdpZHRoID09IEZvcmNlOEJpdCkKKyAgICAgICAgICAgIG1fc3RyaW5n
ID0gU3RyaW5nOjptYWtlOEJpdEZyb20xNkJpdFNvdXJjZSh2ZWN0b3IpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX3N0cmluZyA9IFN0cmluZyh2ZWN0b3IpOworICAgIH0KKworICAgIC8v
IGFzU3RyaW5nIHNob3VsZCBvbmx5IGJlIHVzZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIGNv
bnN0IFN0cmluZyYgYXNTdHJpbmcoKSBjb25zdDsKKyAgICAvLyBhc1N0cmluZ0ltcGwoKSBpcyBz
YWZlIHRvIGNhbGwgZnJvbSBhbnkgdGhyZWFkLgorICAgIGNvbnN0IFN0cmluZ0ltcGwqIGFzU3Ry
aW5nSW1wbCgpIGNvbnN0OworCisgICAgc3RhdGljIHZvaWQgaW5pdCgpOworCisgICAgYm9vbCBp
c1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc1Nh
ZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKTsgfQorCisjaWZuZGVmIE5ERUJVRworICAgIHN0YXRp
YyBib29sIGhhc0luZGV4KGNvbnN0IFN0cmluZ0ltcGwqKTsKKyNlbmRpZgorCitwcml2YXRlOgor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnZhbGlkSW5kZXggPSAtMTsKKyAgICBzdGF0aWMg
dW5zaWduZWQgbWF4TmFtZUxlbmd0aDsKKyAgICBzdGF0aWMgdW5zaWduZWQgZmluZEluZGV4KGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyB2b2lk
IGFkZE5hbWVzKFF1YWxpZmllZE5hbWUqKiBuYW1lcywgdW5zaWduZWQgbmFtZXNDb3VudCwgdW5z
aWduZWQgaW5kZXhPZmZzZXQpOworCisgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgYSB1bmlv
bi4KKyAgICB1bnNpZ25lZCBtX2luZGV4OworICAgIFN0cmluZyBtX3N0cmluZzsKK307CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4IDk0
NDdjZmU2YzhiNzc3ZDAwZjE4Y2Y4NGQ2YzdmMmZiNDk1ZGQzYWIuLjFiNGMyZDI4ZjNhNTExNDFl
Y2I3MmIzMDU2OWIwYjhhMWI3MTY5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiSFRN
TFBhcnNlcklkaW9tcy5oIgogCiAjaW5jbHVkZSAiRGVjaW1hbC5oIgorI2luY2x1ZGUgIkhUTUxJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgPGxpbWl0
cz4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMjc3LDggKzI3OCwxMiBAQCBib29s
IHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25l
ZCYgdmFsdWUpCiAgICAgcmV0dXJuIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdlckludGVybmFs
KHN0YXJ0LCBzdGFydCArIGxlbmd0aCwgdmFsdWUpOwogfQogCi1zdGF0aWMgYm9vbCB0aHJlYWRT
YWZlRXF1YWwoU3RyaW5nSW1wbCogYSwgU3RyaW5nSW1wbCogYikKK3N0YXRpYyBib29sIHRocmVh
ZFNhZmVFcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdHJpbmdJbXBsKiBiKQogewor
ICAgIGlmIChhID09IGIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIC8vIE5vdGU6IFRoaXMg
aGFzaCBjb21wYXJlIGlzIG5vdCBjb3JyZWN0IGZvciBhbGwgcG9zc2libGUgU3RyaW5nSW1wbHMs
IGJ1dAorICAgIC8vIHNpbmNlIHdlJ3JlIGFsd2F5cyBjb21wYXJpbmcgYWdhaW5zdCBjb25zdGFu
dHMsIGl0J3MgT0suCiAgICAgaWYgKGEtPmhhc2goKSAhPSBiLT5oYXNoKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gU3RyaW5nSGFzaDo6ZXF1YWwoYSwgYik7CkBAIC0yODks
OSArMjk0LDExIEBAIGJvb2wgdGhyZWFkU2FmZU1hdGNoKGNvbnN0IFF1YWxpZmllZE5hbWUmIGEs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGIpCiAgICAgcmV0dXJuIHRocmVhZFNhZmVFcXVhbChhLmxv
Y2FsTmFtZSgpLmltcGwoKSwgYi5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQogCi1ib29sIHRocmVh
ZFNhZmVNYXRjaChjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
cU5hbWUpCisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQorYm9vbCB0aHJlYWRTYWZl
TWF0Y2goY29uc3QgSFRNTElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgcU5hbWUpCiB7Ci0gICAgcmV0dXJuIHRocmVhZFNhZmVFcXVhbChsb2NhbE5hbWUuaW1wbCgp
LCBxTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgIHJldHVybiB0aHJlYWRTYWZlRXF1YWwo
bG9jYWxOYW1lLmFzU3RyaW5nSW1wbCgpLCBxTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQor
I2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlv
bXMuaAppbmRleCBhMDMxZTQ1Y2ZmMzIzNTNmMTQwYTBhMjAxOTViOWY5ZjM2MzI3YjNlLi5iYzU4
MDg5MTA2N2UwMTM5NTYyOTVlYzNjNWFiOTRlODAzZGVmN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCkBAIC0yNSw2ICsyNSw4IEBACiAjaWZu
ZGVmIEhUTUxQYXJzZXJJZGlvbXNfaAogI2RlZmluZSBIVE1MUGFyc2VySWRpb21zX2gKIAorI2lu
Y2x1ZGUgIkhUTUxJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgpAQCAtMzIsNyArMzQsNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWNpbWFsOwotY2xhc3MgUXVhbGlmaWVkTmFtZTsKIAog
Ly8gU3BhY2UgY2hhcmFjdGVycyBhcyBkZWZpbmVkIGJ5IHRoZSBIVE1MIHNwZWNpZmljYXRpb24u
CiBib29sIGlzSFRNTFNwYWNlKFVDaGFyKTsKQEAgLTkzLDcgKzk0LDE2IEBAIGlubGluZSBib29s
IGlzTm90SFRNTFNwYWNlKFVDaGFyIGNoYXJhY3RlcikKIH0KIAogYm9vbCB0aHJlYWRTYWZlTWF0
Y2goY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLWJvb2wgdGhy
ZWFkU2FmZU1hdGNoKGNvbnN0IFN0cmluZyYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyNpZiBF
TkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCitib29sIHRocmVhZFNhZmVNYXRjaChjb25zdCBI
VE1MSWRlbnRpZmllciYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKK2lubGluZSBib29sIHRocmVh
ZFNhZmVIVE1MTmFtZXNNYXRjaChjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgcU5hbWUpCit7CisgICAgLy8gV2hlbiB0aGUgUXVhbGlmaWVkTmFtZSBp
cyBrbm93biB0byBIVE1MSWRlbnRpZmllciwKKyAgICAvLyBhbGwgd2UgaGF2ZSB0byBkbyBpcyBh
IHBvaW50ZXIgY29tcGFyZS4KKyAgICBBU1NFUlQoSFRNTElkZW50aWZpZXI6Omhhc0luZGV4KHFO
YW1lLmxvY2FsTmFtZSgpLmltcGwoKSkpOworICAgIHJldHVybiB0YWdOYW1lLmFzU3RyaW5nSW1w
bCgpID09IHFOYW1lLmxvY2FsTmFtZSgpLmltcGwoKTsKK30KKyNlbmRpZgogCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4
IGE1N2M1ZDM4NWUzZTcxZTcxYjU1MWQ0M2NhZWQwNzUyMzgzNWIzMDYuLmUwMTFlYTI5YTBiZGVh
ZDdmOGY5NmFiNjBkYTlkNjRkZTYwMTZjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtNjMsMjQgKzYzLDI2IEBAIFRva2Vu
UHJlbG9hZFNjYW5uZXI6OlRhZ0lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnRhZ0lkRm9yKGNvbnN0
IEhUTUxUb2tlbjo6RGF0YVZlCiAgICAgcmV0dXJuIFVua25vd25UYWdJZDsKIH0KIAotVG9rZW5Q
cmVsb2FkU2Nhbm5lcjo6VGFnSWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6dGFnSWRGb3IoY29uc3Qg
U3RyaW5nJiB0YWdOYW1lKQorI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKK1Rva2Vu
UHJlbG9hZFNjYW5uZXI6OlRhZ0lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnRhZ0lkRm9yKGNvbnN0
IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lKQogewotICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFn
TmFtZSwgaW1nVGFnKSkKKyAgICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUs
IGltZ1RhZykpCiAgICAgICAgIHJldHVybiBJbWdUYWdJZDsKLSAgICBpZiAodGhyZWFkU2FmZU1h
dGNoKHRhZ05hbWUsIGlucHV0VGFnKSkKKyAgICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNo
KHRhZ05hbWUsIGlucHV0VGFnKSkKICAgICAgICAgcmV0dXJuIElucHV0VGFnSWQ7Ci0gICAgaWYg
KHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBsaW5rVGFnKSkKKyAgICBpZiAodGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIGxpbmtUYWcpKQogICAgICAgICByZXR1cm4gTGlua1RhZ0lk
OwotICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkKKyAgICBpZiAo
dGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHNjcmlwdFRhZykpCiAgICAgICAgIHJl
dHVybiBTY3JpcHRUYWdJZDsKLSAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHN0eWxl
VGFnKSkKKyAgICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHN0eWxlVGFn
KSkKICAgICAgICAgcmV0dXJuIFN0eWxlVGFnSWQ7Ci0gICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0
YWdOYW1lLCBiYXNlVGFnKSkKKyAgICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIGJhc2VUYWcpKQogICAgICAgICByZXR1cm4gQmFzZVRhZ0lkOwotICAgIGlmICh0aHJlYWRT
YWZlTWF0Y2godGFnTmFtZSwgdGVtcGxhdGVUYWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgdGVtcGxhdGVUYWcpKQogICAgICAgICByZXR1cm4gVGVtcGxhdGVU
YWdJZDsKICAgICByZXR1cm4gVW5rbm93blRhZ0lkOwogfQorI2VuZGlmCiAKIFN0cmluZyBUb2tl
blByZWxvYWRTY2FubmVyOjppbml0aWF0b3JGb3IoVGFnSWQgdGFnSWQpCiB7CkBAIC0xNDcsMjgg
KzE0OSw0MiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKICAg
ICB9CiAKK3N0YXRpYyBib29sIG1hdGNoKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgcU5hbWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICByZXR1cm4gcU5hbWUubG9jYWxOYW1lKCkgPT0gbmFtZTsKK30KKworI2lmIEVOQUJMRShUSFJF
QURFRF9IVE1MX1BBUlNFUikKK3N0YXRpYyBib29sIG1hdGNoKGNvbnN0IEhUTUxJZGVudGlmaWVy
JiBuYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKK3sKKyAgICByZXR1cm4gdGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKG5hbWUsIHFOYW1lKTsKK30KKyNlbmRpZgorCiBwcml2YXRlOgot
ICAgIHZvaWQgcHJvY2Vzc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIGNv
bnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTmFtZVR5
cGU+CisgICAgdm9pZCBwcm9jZXNzQXR0cmlidXRlKGNvbnN0IE5hbWVUeXBlJiBhdHRyaWJ1dGVO
YW1lLCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKHRo
cmVhZFNhZmVNYXRjaChhdHRyaWJ1dGVOYW1lLCBjaGFyc2V0QXR0cikpCisgICAgICAgIGlmICht
YXRjaChhdHRyaWJ1dGVOYW1lLCBjaGFyc2V0QXR0cikpCiAgICAgICAgICAgICBtX2NoYXJzZXQg
PSBhdHRyaWJ1dGVWYWx1ZTsKIAogICAgICAgICBpZiAobV90YWdJZCA9PSBTY3JpcHRUYWdJZCB8
fCBtX3RhZ0lkID09IEltZ1RhZ0lkKSB7Ci0gICAgICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNo
KGF0dHJpYnV0ZU5hbWUsIHNyY0F0dHIpKQorICAgICAgICAgICAgaWYgKG1hdGNoKGF0dHJpYnV0
ZU5hbWUsIHNyY0F0dHIpKQogICAgICAgICAgICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1dGVW
YWx1ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRlTmFt
ZSwgY3Jvc3NvcmlnaW5BdHRyKSAmJiAhYXR0cmlidXRlVmFsdWUuaXNOdWxsKCkpCisgICAgICAg
ICAgICBlbHNlIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCBjcm9zc29yaWdpbkF0dHIpICYmICFh
dHRyaWJ1dGVWYWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgICAgICBtX2Nyb3NzT3JpZ2luTW9k
ZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGVWYWx1ZSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAobV90YWdJZCA9PSBMaW5rVGFnSWQpIHsKLSAgICAgICAgICAgIGlm
ICh0aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRlTmFtZSwgaHJlZkF0dHIpKQorICAgICAgICAgICAg
aWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIGhyZWZBdHRyKSkKICAgICAgICAgICAgICAgICBzZXRV
cmxUb0xvYWQoYXR0cmlidXRlVmFsdWUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2Fm
ZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIHJlbEF0dHIpKQorICAgICAgICAgICAgZWxzZSBpZiAobWF0
Y2goYXR0cmlidXRlTmFtZSwgcmVsQXR0cikpCiAgICAgICAgICAgICAgICAgbV9saW5rSXNTdHls
ZVNoZWV0ID0gcmVsQXR0cmlidXRlSXNTdHlsZVNoZWV0KGF0dHJpYnV0ZVZhbHVlKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRjaChhdHRyaWJ1dGVOYW1lLCBtZWRpYUF0dHIp
KQorICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgbWVkaWFBdHRyKSkK
ICAgICAgICAgICAgICAgICBtX2xpbmtNZWRpYUF0dHJpYnV0ZUlzU2NyZWVuID0gbGlua01lZGlh
QXR0cmlidXRlSXNTY3JlZW4oYXR0cmlidXRlVmFsdWUpOwogICAgICAgICB9IGVsc2UgaWYgKG1f
dGFnSWQgPT0gSW5wdXRUYWdJZCkgewotICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaChh
dHRyaWJ1dGVOYW1lLCBzcmNBdHRyKSkKKyAgICAgICAgICAgIGlmIChtYXRjaChhdHRyaWJ1dGVO
YW1lLCBzcmNBdHRyKSkKICAgICAgICAgICAgICAgICBzZXRVcmxUb0xvYWQoYXR0cmlidXRlVmFs
dWUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUs
IHR5cGVBdHRyKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIHR5
cGVBdHRyKSkKICAgICAgICAgICAgICAgICBtX2lucHV0SXNJbWFnZSA9IGVxdWFsSWdub3JpbmdD
YXNlKGF0dHJpYnV0ZVZhbHVlLCBJbnB1dFR5cGVOYW1lczo6aW1hZ2UoKSk7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9h
ZFNjYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5l
ci5oCmluZGV4IDQ3YTU0NDRmMTBlOGNmZGQ2YmE3MGIwNmJlMDhmMjU0NDA0Y2MwMWIuLmQyZjJj
MTE4OWMyNWY1MGRiMjkyM2ZmYjM0YTcxMjZlNDI3YTNiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oCkBAIC04Niw3ICs4Niw3IEBAIHBy
aXZhdGU6CiAgICAgaW5saW5lIHZvaWQgc2NhbkNvbW1vbihjb25zdCBUb2tlbiYsIFByZWxvYWRS
ZXF1ZXN0U3RyZWFtJiByZXF1ZXN0cyk7CiAKICAgICBzdGF0aWMgVGFnSWQgdGFnSWRGb3IoY29u
c3QgSFRNTFRva2VuOjpEYXRhVmVjdG9yJik7Ci0gICAgc3RhdGljIFRhZ0lkIHRhZ0lkRm9yKGNv
bnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBUYWdJZCB0YWdJZEZvcihjb25zdCBIVE1MSWRlbnRp
ZmllciYpOwogCiAgICAgc3RhdGljIFN0cmluZyBpbml0aWF0b3JGb3IoVGFnSWQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192149</attachid>
            <date>2013-03-07 22:46:53 -0800</date>
            <delta_ts>2013-03-07 23:07:32 -0800</delta_ts>
            <desc>Fix Mac</desc>
            <filename>bug-107337-20130307224307.patch</filename>
            <type>text/plain</type>
            <size>53430</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk1NjlmOTI3NGJkZDJm
YzkwOGZmMDA4NzIyNTRhMmFlNTdmNDM3OS4uOTRhNTMwMmNjMTJjMTRiMjdlM2I4Y2E5YjFjOWVh
OGY4MGYxMmM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg0IEBACiAyMDEzLTAzLTA3ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAorICAgICAgICBCYWNrZ3JvdW5kSFRNTFBhcnNl
ciBzaG91bGQgYmUgYWJsZSB0byBhdG9taXplIHdlbGwta25vd24gc3RyaW5ncworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGluZyB0aGlzIHBhdGNo
IGVhc2lseSByZXF1aXJlcyBhcHBseWluZyBidWcgMTA3MjM2IGxvY2FsbHkKKyAgICAgICAgdG8g
cmVtb3ZlIGFsbCB0aGUgcmVuZGVyaW5nIG5vaXNlIGZyb20gUGFyc2VyL2h0bWwtdGhyZWFkZWQt
cGFyc2VyLmh0bWwuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGNsYXNzIEhUTUxJ
ZGVudGlmaWVyIHdoaWNoIGFsbG93cyB1cyB0byBhdm9pZAorICAgICAgICBhbGxvY2F0aW5nIHN0
cmluZ3MgZm9yIGtub3duIHRhZy9hdHRyaWJ1dGUgbmFtZXMgZnJvbSBIVE1MTmFtZXMuCisKKyAg
ICAgICAgVGhlcmUgaXMgc3RpbGwgYSBsb3Qgb2YgbWVhdCBvbiB0aGlzIGJvbmUsIGJ1dCBJIHRo
aW5rIGl0J3MgaW1wb3J0YW50IHRvCisgICAgICAgIGxhbmQgc29tZXRoaW5nICJzbWFsbGlzaCIg
dG8gc3RhcnQgYW5kIGl0ZXJhdGUgZnJvbSB0aGVyZS4KKworICAgICAgICBUaGlzIHRvb2sgUGFy
c2VyL2h0bWwtdGhyZWFkZWQtcGFyc2VyLmh0bWwgZnJvbToKKyAgICAgICAgbWVkaWFuPSA0NDMu
NzI2NTAwMDAyIG1zLCBzdGRldj0gNy4yNTAwMjY3OTk1MiBtcywgbWluPSA0MzAuMjQ0MDAwMDQ3
IG1zLCBtYXg9IDQ1NS41MTEwMDAwMDcgbXMKKyAgICAgICAgdG86CisgICAgICAgIG1lZGlhbj0g
NDI3Ljg0OTUwMDAwNCBtcywgc3RkZXY9IDkuOTY5NjcwNTgyOTIgbXMsIG1pbj0gNDE3LjkxNDAw
MDA0OSBtcywgbWF4PSA0NjEuNTI4MDAwMDE0IG1zCisgICAgICAgIG9uIG15IE1CUC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBodG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6QXRvbWljSFRNTFRva2VuKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp0b2tlbkV4aXRzRm9yZWlnbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
dG9rZW5FeGl0c1NWRyk6CisgICAgICAgIChXZWJDb3JlOjp0b2tlbkV4aXRzTWF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRlcik6
CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJlbG9hZFNjYW5uZXI6OnNjYW4pOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0NTU1ByZWxvYWRTY2FubmVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU1By
ZWxvYWRTY2FubmVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNw
cDoKKyAgICAgICAgKFNhbWVTaXplQXNDb21wYWN0SFRNTFRva2VuKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBhY3RIVE1M
VG9rZW46OkF0dHJpYnV0ZTo6QXR0cmlidXRlKToKKyAgICAgICAgKEF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXBhY3RIVE1MVG9rZW46OnB1YmxpY0lkZW50aWZpZXIpOgorICAgICAgICAoQ29tcGFjdEhU
TUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRCYWNrZ3JvdW5kUGFy
c2VyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjppZGVudGlmaWVyVGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50aWZpZXI6Omhhc0luZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJZGVudGlmaWVyOjpmaW5kSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6bmFt
ZUZvckluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjphc1N0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6YXNTdHJpbmdJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjphZGROYW1lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSWRlbnRpZmllcjo6aW5pdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTElkZW50
aWZpZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEhUTUxJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjpIVE1MSWRlbnRpZmllcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6aXNTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRocmVhZFNhZmVFcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjp0aHJl
YWRTYWZlTWF0Y2gpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dGhyZWFkU2FmZUhUTUxOYW1l
c01hdGNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6dGFnSWRGb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjptYXRjaCk6
CisgICAgICAgIChUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjpwcm9jZXNz
QXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaDoK
KworMjAxMy0wMy0wNyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKICAgICAgICAg
ZGlzcGxheTpub25lIGlmcmFtZXMgc2hvdWxkIG5vdCBidWlsZCByZW5kZXJpbmcgdHJlZXMKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzIzNgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IDAyODgyYWVhMGYwZjA2MjljNzAyODg1OGNmY2U5ZTI2Yjk2
MjNmYTQuLjc2YzQ1NWE4M2UwOTdiMjdkOWJjMDg1YTk5YmFiNmZjM2Y3Y2ZjZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0xNTU2LDYgKzE1NTYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKICAgICBodG1sL3BhcnNlci9I
VE1MUGFyc2VyVGhyZWFkLmNwcAogICAgIGh0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVu
dExpc3QuY3BwCisgICAgaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwCiAgICAgaHRtbC9w
YXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAogICAgIGh0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5jcHAKICAgICBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBmODU5ZjBiZWFjZDE0MzZkNzZiMzlh
MDVmZDQ2OTVhMDhmZDFhMWZhLi5kOWYyOGZlZjI2N2FlZmU4N2JiZTNkYzAzZTIyMzQ1MzJmZDEz
ZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM2MjEsNiArMzYyMSw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVu
dGl0eVRhYmxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5n
RWxlbWVudExpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0
dGluZ0VsZW1lbnRMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVu
dGlmaWVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElucHV0U3RyZWFtLmggXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCmluZGV4IDQxYzBlYjc5NWRiNmZkMjg2M2NlNzRmOWQ0ZGE0MmRjNWQwNWQxNzAuLjU2YzU2
ZWY5YjFhNDRiNDU0M2Y2OTQ1MDAyYzQ1ZDU4NTg3ZTc5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNzM1
LDYgKzczNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvcGFyc2VyL0hUTUxFbnRpdHlQYXJz
ZXIuY3BwIFwKICAgICBodG1sL3BhcnNlci9IVE1MRW50aXR5U2VhcmNoLmNwcCBcCiAgICAgaHRt
bC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAgXAorICAgIGh0bWwvcGFyc2Vy
L0hUTUxJZGVudGlmaWVyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFy
c2VyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgXAogICAgIGh0
bWwvcGFyc2VyL0hUTUxQYXJzZXJPcHRpb25zLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNDlk
NjkzYzVlZDY3Y2E2YjM4MjkyOGJhYTEzMWY0YjMxOTYwYjExNS4uZDA3OWVlMmYyNmEzODY3OWI1
OTg0MDljOTdlMTI3ZjczOTI4MGVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUwNyw2ICszNTA3
LDggQEAKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MRW50aXR5VGFibGUuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAnLAogICAg
ICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuaCcsCisgICAg
ICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwJywKKyAgICAgICAgICAgICdo
dG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9I
VE1MSW5wdXRTdHJlYW0uaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFy
c2V0UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0
UGFyc2VyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCA4NDQzZjllMmJhMWU4Njk0Y2Q5NGE4NjJkMzI4YzAxMzdkMTljNjFiLi4xNGYzYjk4
ZGU2YmQ3NmQwNzMwOGEzYzIzZjgyM2E3YjAzNTkyZDU2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjUwOTAsNiArNjUwOTAsMTQgQEAKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
cGFyc2VyXEhUTUxJZGVudGlmaWVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEhUTUxJZGVudGlmaWVyLmgiCisJ
CQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1s
XHBhcnNlclxIVE1MSW5wdXRTdHJlYW0uaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGY3YzY5ZTg0
MWY3YTVmYmM0NjU2NjEwMGZhMzNmMDY5MjMxMGFlNTEuLjY2YTlhZmRmMWE2OWEwNmZkYzVkZGRm
NTZkZDA4ZDRiMTUyNDU5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagpAQCAtNjkyMyw2ICs2OTIzLDcgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxFbnRpdHlQYXJzZXIuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTEVudGl0eVNlYXJjaC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MRm9ybWF0dGluZ0VsZW1l
bnRMaXN0LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhU
TUxJZGVuaXRpZmllci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBh
cnNlclxIVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caHRtbFxwYXJzZXJcSFRNTFBhcnNlcklkaW9tcy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MUGFyc2VyT3B0aW9ucy5jcHAiIC8+CkBAIC0x
MDM3Nyw2ICsxMDM3OCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNl
clxIVE1MRW50aXR5UGFyc2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1s
XHBhcnNlclxIVE1MRW50aXR5U2VhcmNoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxodG1sXHBhcnNlclxIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MSWRlbnRpZmllci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTElucHV0U3RyZWFtLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MTWV0YUNoYXJzZXRQYXJz
ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxQYXJz
ZXJJZGlvbXMuaCIgLz4KQEAgLTExMTM3LDQgKzExMTM5LDQgQEAKICAgPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdy
b3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVj
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGQ4ZmIwYTQ5
MGE0ZmJjNzQ2OGIzYmYzOWE3OTYzMjFmMWUwMjJlMy4uYTc5Njg5OGRlNDZjNTAwMThlODlkZDQ3
NzZkMTE2NTkzZTUyNmRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDM4MCw2ICs0MzgwLDggQEAKIAkJQTg4QUQ1MkYwOTUy
NEI5MjAwMUREMTk2IC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg1RDdBMkYwODc5RUJBOTAwNkE5MTcyIC8q
IFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovOyB9OwogCQlBODhERDQ4NzBCNDYyOUEzMDBDMDI5OTAg
LyogUGF0aFRyYXZlcnNhbFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBODhERDQ4NjBCNDYyOUEzMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0
YXRlLmggKi87IH07CiAJCUE4OERENDg5MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2Fs
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTg4REQ0ODgwQjQ2MjlCMDAwQzAyOTkwIC8qIFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgKi87IH07
CisJCUE4OTU3MDlGMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODk1NzA5RDE2RTlCRDU5
MDAxODRFNTUgLyogSFRNTElkZW50aWZpZXIuY3BwICovOyB9OworCQlBODk1NzBBMDE2RTlCRDU5
MDAxODRFNTUgLyogSFRNTElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4OTU3MDlFMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRp
Zmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUE4OTk0MzI4MEI0MjMzODgwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg5OTQzMjYwQjQyMzM4NzAwRDdDODAy
IC8qIEJpdG1hcEltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTg5OTQzMjkwQjQyMzM4ODAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4OTk0MzI3MEI0
MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgKi87IH07CiAJCUE4OUNDQzUyMEY0NEU5
ODEwMEI1REExMCAvKiBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODlDQ0M1MDBGNDRFOTgxMDBCNURB
MTAgLyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwICovOyB9OwpAQCAtOTU3MCw4ICs5
NTcyLDggQEAKIAkJN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dl
ZEluZGljYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaW5k
b3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3RTk5QUY1NDBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRvd0ZvY3VzQWxsb3dlZElu
ZGljYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUEzMEY2MjE2REZENjI3
MDAyNTdEMEIgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5pZGw7IHBhdGggPSBjYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUFUQy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTdFQTMwRjY3MTZERkZFNzUwMDI1N0QwQiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDLmNwcDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdFQTMwRjY4MTZERkZFNzUwMDI1N0QwQiAv
KiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmg7IHBhdGggPSBKU1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVBVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0VBMzBG
NjcxNkRGRkU3NTAwMjU3RDBCIC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVBVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RUEzMEY2ODE2REZGRTc1
MDAyNTdEMEIgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ0QzEyRDI2RTM4MDBFNzk0MTUgLyogQXV0aGVu
dGljYXRpb25DRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRo
ZW50aWNhdGlvbkNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NEQx
MkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ0YuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RUU2ODQ0RTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNzkwLDYgKzExNzkyLDgg
QEAKIAkJQTg4NkNEQzIxNEZCQkFBMzAwRDI3OUY0IC8qIFdvcmtlckNvbnRleHRXZWJTb2NrZXQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdvcmtlckNvbnRleHRXZWJTb2NrZXQuaWRsOyBw
YXRoID0gTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlckNvbnRleHRXZWJTb2NrZXQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODhERDQ4NjBCNDYyOUEzMDBDMDI5OTAgLyogUGF0
aFRyYXZlcnNhbFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhdGhU
cmF2ZXJzYWxTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODhERDQ4ODBC
NDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE4OTU3MDlEMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRp
Zmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIVE1MSWRlbnRp
Zmllci5jcHA7IHBhdGggPSBwYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBODk1NzA5RTE2RTlCRDU5MDAxODRFNTUgLyogSFRNTElkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSFRNTElkZW50aWZpZXIuaDsg
cGF0aCA9IHBhcnNlci9IVE1MSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBODk5NDMyNjBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0bWFwSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTg5OTQzMjcwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdG1hcEltYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg5Q0NDNTAwRjQ0RTk4MTAwQjVEQTEwIC8qIFJl
cGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE4ODE5LDYgKzE4ODIzLDcgQEAKIAkJOTdDMUY1NTExMjI4NTU4ODAw
RURFNjE2IC8qIHBhcnNlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE3IC8qIEF0b21pY0hUTUxUb2tlbi5oICov
LAogCQkJCTk3REM2OUU5MTZCOUY1MEUwMDhDRkQ2RiAvKiBCYWNrZ3JvdW5kSFRNTElucHV0U3Ry
ZWFtLmNwcCAqLywKIAkJCQk5N0RDNjlFQTE2QjlGNTBFMDA4Q0ZENkYgLyogQmFja2dyb3VuZEhU
TUxJbnB1dFN0cmVhbS5oICovLAogCQkJCTk3OURDMDMxMTZBNzk5MjEwMDgwNzc5NCAvKiBCYWNr
Z3JvdW5kSFRNTFBhcnNlci5jcHAgKi8sCkBAIC0xODg0MSw2ICsxODg0Niw4IEBACiAJCQkJOTc3
QjM4NTQxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxFbnRpdHlUYWJsZS5oICovLAogCQkJCTk3N0Iz
ODU1MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcCAqLywK
IAkJCQk5NzdCMzg1NjEyMjg4M0U5MDBCODFGRjggLyogSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlz
dC5oICovLAorCQkJCUE4OTU3MDlEMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5j
cHAgKi8sCisJCQkJQTg5NTcwOUUxNkU5QkQ1OTAwMTg0RTU1IC8qIEhUTUxJZGVudGlmaWVyLmgg
Ki8sCiAJCQkJOTdCQzg0OUExMjM3MEE0QjAwMEM2MTYxIC8qIEhUTUxJbnB1dFN0cmVhbS5oICov
LAogCQkJCTJCRThFMkM4MTJBNThBMDEwMEZBRDU1MCAvKiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIu
Y3BwICovLAogCQkJCTJCRThFMkM2MTJBNTg5RUMwMEZBRDU1MCAvKiBIVE1MTWV0YUNoYXJzZXRQ
YXJzZXIuaCAqLywKQEAgLTE4ODY1LDcgKzE4ODcyLDYgQEAKIAkJCQk5N0MxRjU1MjEyMjg1NUNC
MDBFREU2MTYgLyogSFRNTFRva2VuLmggKi8sCiAJCQkJOTc3QjM4NUUxMjI4ODNFOTAwQjgxRkY4
IC8qIEhUTUxUb2tlbml6ZXIuY3BwICovLAogCQkJCTk3N0IzODVGMTIyODgzRTkwMEI4MUZGOCAv
KiBIVE1MVG9rZW5pemVyLmggKi8sCi0JCQkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE3IC8qIEF0
b21pY0hUTUxUb2tlbi5oICovLAogCQkJCTk3N0IzNzIxMTIyODcyMTcwMEI4MUZGOCAvKiBIVE1M
VHJlZUJ1aWxkZXIuY3BwICovLAogCQkJCTk3N0IzNzIyMTIyODcyMTcwMEI4MUZGOCAvKiBIVE1M
VHJlZUJ1aWxkZXIuaCAqLywKIAkJCQk5NzdCMzg2MDEyMjg4M0U5MDBCODFGRjggLyogSFRNTFZp
ZXdTb3VyY2VQYXJzZXIuY3BwICovLApAQCAtMjY2ODQsNyArMjY2OTAsOCBAQAogCQkJCUUxODcw
NTYzMTZFNTRBMEQwMDU4NUU5NyAvKiBNYWluVGhyZWFkVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0U2NkUyMzQxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdFQTMwRjZBMTZERkZFNzUwMDI1N0QwQiAvKiBKU1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVBVEMuaCBpbiBIZWFkZXJzICovLAotIAkJCQkyRDgyODdGNzE2RTRB
MDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDgy
ODdGNzE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQlBODk1NzBBMDE2RTlCRDU5MDAxODRFNTUgLyogSFRNTElkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMjk4ODYsNyArMjk4OTMsOCBAQAogCQkJCUEzMUM0RTUyMTZFMDJCMDgwMDJG
Nzk1NyAvKiBKU09FU1RleHR1cmVIYWxmRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U2
NkUyMzMxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0VBMzBGNjkxNkRGRkU3NTAwMjU3RDBCIC8qIEpTV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFUQy5jcHAgaW4gU291cmNlcyAqLywKLSAJCQkJMkQ4Mjg3RjYxNkU0QTAz
ODAwODZCRDAwIC8qIEhpdFRlc3RMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyRDgy
ODdGNjE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUE4OTU3MDlGMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21p
Y0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2Vu
LmgKaW5kZXggMTM4MzcxMDA1NWM1ZWNkZDRiZGUwNDhlZjM2OWFmZjFmZTk0ZThmZi4uNjY1NWY0
YTNkZDBlNmExNjdlMmZlYWM3M2MyNGZhNGIzN2Q4OWExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmgKQEAgLTE4OSwxMCArMTg5LDEwIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKLSAgICAgICAgICAgIG1fbmFtZSA9
IHRva2VuLmRhdGEoKTsKKyAgICAgICAgICAgIG1fbmFtZSA9IHRva2VuLmRhdGEoKS5hc1N0cmlu
ZygpOwogICAgICAgICAgICAgbV9kb2N0eXBlRGF0YSA9IGFkb3B0UHRyKG5ldyBEb2N0eXBlRGF0
YSgpKTsKICAgICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzUHVibGljSWRlbnRpZmllciA9
IHRydWU7Ci0gICAgICAgICAgICBhcHBlbmQobV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlm
aWVyLCB0b2tlbi5wdWJsaWNJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgYXBwZW5kKG1fZG9j
dHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllciwgdG9rZW4ucHVibGljSWRlbnRpZmllcigpLmFz
U3RyaW5nKCkpOwogICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9oYXNTeXN0ZW1JZGVudGlm
aWVyID0gdHJ1ZTsKICAgICAgICAgICAgIGFwcGVuZChtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlk
ZW50aWZpZXIsIHRva2VuLnN5c3RlbUlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBtX2RvY3R5
cGVEYXRhLT5tX2ZvcmNlUXVpcmtzID0gdG9rZW4uZG9jdHlwZUZvcmNlc1F1aXJrcygpOwpAQCAt
MjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRh
ZzoKICAgICAgICAgICAgIG1fYXR0cmlidXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRva2Vu
LmF0dHJpYnV0ZXMoKS5zaXplKCkpOwogICAgICAgICAgICAgZm9yIChWZWN0b3I8Q29tcGFjdEhU
TUxUb2tlbjo6QXR0cmlidXRlPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0b2tlbi5hdHRyaWJ1dGVz
KCkuYmVnaW4oKTsgaXQgIT0gdG9rZW4uYXR0cmlidXRlcygpLmVuZCgpOyArK2l0KSB7Ci0gICAg
ICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBuYW1lKG51bGxBdG9tLCBpdC0+bmFtZSwgbnVsbEF0
b20pOworICAgICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgbmFtZShudWxsQXRvbSwgaXQtPm5h
bWUuYXNTdHJpbmcoKSwgbnVsbEF0b20pOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGlzIE5eMiBmb3IgdGhlIG51bWJlciBvZiBhdHRyaWJ1dGVzLgogICAgICAgICAgICAgICAgIGlm
ICghZmluZEF0dHJpYnV0ZUluVmVjdG9yKG1fYXR0cmlidXRlcywgbmFtZSkpCiAgICAgICAgICAg
ICAgICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKG5hbWUsIGl0LT52YWx1ZSkp
OwpAQCAtMjEwLDE3ICsyMTAsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIEZhbGwgdGhy
b3VnaCEKICAgICAgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzoKICAgICAgICAgICAgIG1fc2Vs
ZkNsb3NpbmcgPSB0b2tlbi5zZWxmQ2xvc2luZygpOwotICAgICAgICAgICAgbV9uYW1lID0gdG9r
ZW4uZGF0YSgpOworICAgICAgICAgICAgbV9uYW1lID0gdG9rZW4uZGF0YSgpLmFzU3RyaW5nKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6Ci0g
ICAgICAgICAgICBtX2RhdGEgPSB0b2tlbi5kYXRhKCk7CisgICAgICAgICAgICBtX2RhdGEgPSB0
b2tlbi5kYXRhKCkuYXNTdHJpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEhUTUxUb2tlbjo6Q2hhcmFjdGVyOgotICAgICAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnMg
PSB0b2tlbi5kYXRhKCkuY2hhcmFjdGVycygpOwotICAgICAgICAgICAgbV9leHRlcm5hbENoYXJh
Y3RlcnNMZW5ndGggPSB0b2tlbi5kYXRhKCkubGVuZ3RoKCk7CisgICAgICAgIGNhc2UgSFRNTFRv
a2VuOjpDaGFyYWN0ZXI6IHsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nID0gdG9r
ZW4uZGF0YSgpLmFzU3RyaW5nKCk7CisgICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVycyA9
IHN0cmluZy5jaGFyYWN0ZXJzKCk7CisgICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVyc0xl
bmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICAgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IHRv
a2VuLmlzQWxsOEJpdERhdGEoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBsaWtl
IGEgc3Ryb25nZXIgQVNTRVJUIGhlcmU6CisgICAgICAgICAgICAvLyBBU1NFUlQoc3RyaW5nLmlz
OEJpdCgpID09IHRva2VuLmlzQWxsOEJpdERhdGEoKSk7CisgICAgICAgICAgICAvLyBidXQgY3Vy
cmVudGx5IHRoYXQgZmlyZXMsIGxpa2VseSBkdWUgdG8gYnVncyBpbiBIVE1MVG9rZW5pemVyCisg
ICAgICAgICAgICAvLyBub3Qgc2V0dGluZyBpc0FsbDhCaXREYXRhIGluIGFsbCB0aGUgdGltZXMg
aXQgY291bGQuCisgICAgICAgICAgICBBU1NFUlQoIXRva2VuLmlzQWxsOEJpdERhdGEoKSB8fCBz
dHJpbmcuaXM4Qml0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
fQogICAgIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKaW5kZXggODc0NDMyZTYwMWNhOGY2YzcxOGZlNDBjNDky
MWQ5MTk2M2QxYjM2Yy4uMDViMmVlZjUyYWQ4MDk1ZmE1MTQ0ZmNhNzdmNDAwYTYyMmFkZjhhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFy
c2VyLmNwcApAQCAtNjksNjUgKzY5LDY3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFhTU0luZm9z
QXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBYU1NJbmZvU3RyZWFtJiB4CiAKIHN0
YXRpYyBib29sIHRva2VuRXhpdHNGb3JlaWduQ29udGVudChjb25zdCBDb21wYWN0SFRNTFRva2Vu
JiB0b2tlbikKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBjb3BpZWQgZnJvbSBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQgYW5kIGNoYW5nZWQgdG8gdXNlIHRo
cmVhZFNhZmVNYXRjaC4KLSAgICBjb25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7
Ci0gICAgcmV0dXJuIHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBiVGFnKQotICAgICAgICB8fCB0
aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgYmlnVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0
Y2godGFnTmFtZSwgYmxvY2txdW90ZVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRh
Z05hbWUsIGJvZHlUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBiclRh
ZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGNlbnRlclRhZykKLSAgICAg
ICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGNvZGVUYWcpCi0gICAgICAgIHx8IHRocmVh
ZFNhZmVNYXRjaCh0YWdOYW1lLCBkZFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRh
Z05hbWUsIGRpdlRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGRsVGFn
KQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgZHRUYWcpCi0gICAgICAgIHx8
IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBlbVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1h
dGNoKHRhZ05hbWUsIGVtYmVkVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFt
ZSwgaDFUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBoMlRhZykKLSAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGgzVGFnKQotICAgICAgICB8fCB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgaDRUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0
YWdOYW1lLCBoNVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGg2VGFn
KQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaGVhZFRhZykKLSAgICAgICAg
fHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGhyVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZl
TWF0Y2godGFnTmFtZSwgaVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUs
IGltZ1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGxpVGFnKQotICAg
ICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbGlzdGluZ1RhZykKLSAgICAgICAgfHwg
dGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG1lbnVUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVN
YXRjaCh0YWdOYW1lLCBtZXRhVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFt
ZSwgbm9iclRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG9sVGFnKQot
ICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgcFRhZykKLSAgICAgICAgfHwgdGhy
ZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHByZVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIHJ1YnlUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBz
VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc21hbGxUYWcpCi0gICAg
ICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBzcGFuVGFnKQotICAgICAgICB8fCB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgc3Ryb25nVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0
Y2godGFnTmFtZSwgc3RyaWtlVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFt
ZSwgc3ViVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc3VwVGFnKQot
ICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgdGFibGVUYWcpCi0gICAgICAgIHx8
IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0dFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1h
dGNoKHRhZ05hbWUsIHVUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB1
bFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHZhclRhZykKLSAgICAg
ICAgfHwgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBmb250VGFnKSAmJiAodG9rZW4uZ2V0QXR0
cmlidXRlSXRlbShjb2xvckF0dHIpIHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oZmFjZUF0dHIp
IHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oc2l6ZUF0dHIpKSk7CisgICAgLy8gRklYTUU6IFRo
aXMgaXMgY29waWVkIGZyb20gSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25D
b250ZW50IGFuZCBjaGFuZ2VkIHRvIHVzZSB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2guCisgICAg
Y29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgcmV0dXJu
IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiVGFnKQorICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYmlnVGFnKQorICAgICAgICB8fCB0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYmxvY2txdW90ZVRhZykKKyAgICAgICAgfHwgdGhy
ZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJvZHlUYWcpCisgICAgICAgIHx8IHRocmVh
ZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiclRhZykKKyAgICAgICAgfHwgdGhyZWFkU2Fm
ZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGNlbnRlclRhZykKKyAgICAgICAgfHwgdGhyZWFkU2Fm
ZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGNvZGVUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVI
VE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBkZFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIGRpdlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1l
c01hdGNoKHRhZ05hbWUsIGRsVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0
Y2godGFnTmFtZSwgZHRUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0
YWdOYW1lLCBlbVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIGVtYmVkVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgaDFUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBo
MlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGgzVGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaDRUYWcpCisg
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoNVRhZykKKyAgICAg
ICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGg2VGFnKQorICAgICAgICB8
fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaGVhZFRhZykKKyAgICAgICAgfHwg
dGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGhyVGFnKQorICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2Fm
ZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGltZ1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIGxpVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgbGlzdGluZ1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIG1lbnVUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFt
ZXNNYXRjaCh0YWdOYW1lLCBtZXRhVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgbm9iclRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01h
dGNoKHRhZ05hbWUsIG9sVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgcFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIHByZVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUs
IHJ1YnlUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBz
VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc21hbGxU
YWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzcGFuVGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3Ryb25nVGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3RyaWtlVGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3ViVGFnKQor
ICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3VwVGFnKQorICAg
ICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdGFibGVUYWcpCisgICAg
ICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0dFRhZykKKyAgICAgICAg
fHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHVUYWcpCisgICAgICAgIHx8IHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB1bFRhZykKKyAgICAgICAgfHwgdGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHZhclRhZykKKyAgICAgICAgfHwgKHRocmVhZFNh
ZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBmb250VGFnKSAmJiAodG9rZW4uZ2V0QXR0cmlidXRl
SXRlbShjb2xvckF0dHIpIHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oZmFjZUF0dHIpIHx8IHRv
a2VuLmdldEF0dHJpYnV0ZUl0ZW0oc2l6ZUF0dHIpKSk7CiB9CiAKIHN0YXRpYyBib29sIHRva2Vu
RXhpdHNTVkcoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgY29uc3QgU3Ry
aW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2Fz
ZSh0YWdOYW1lLCBTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZy5sb2NhbE5hbWUoKSk7CisgICAg
Ly8gRklYTUU6IEl0J3MgdmVyeSBmcmFnaWxlIHRoYXQgd2Ugc3BlY2lhbCBjYXNlIGZvcmVpZ25P
YmplY3QgaGVyZSB0byBiZSBjYXNlLWluc2Vuc2l0aXZlLgorICAgIC8vIEZJWE1FOiBVc2luZyBD
YXNlRm9sZGluZ0hhc2g6OmVxdWFsIGluc3RlYWQgb2YgZXF1YWxJZ25vcmluZ0Nhc2UsIGFzIGVx
dWFsSWdub3JpbmdDYXNlCisgICAgLy8gd2FudHMgbm9uLWNvbnN0IFN0cmluZ0ltcGwqIChldmVu
IHRob3VnaCBpdCBuZXZlciBtb2RpZmllcyB0aGVtKS4KKyAgICByZXR1cm4gQ2FzZUZvbGRpbmdI
YXNoOjplcXVhbCh0b2tlbi5kYXRhKCkuYXNTdHJpbmdJbXBsKCksIFNWR05hbWVzOjpmb3JlaWdu
T2JqZWN0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKIHN0YXRpYyBib29sIHRva2VuRXhp
dHNNYXRoKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGNvcGllZCBmcm9tIEhUTUxFbGVtZW50U3RhY2s6OmlzTWF0aE1MVGV4dEludGVncmF0
aW9uUG9pbnQgYW5kIGNoYW5nZWQgdG8gdXNlIHRocmVhZFNhZmVNYXRjaC4KLSAgICBjb25zdCBT
dHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgY29uc3QgSFRNTElkZW50aWZpZXIm
IHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CiAgICAgcmV0dXJuIHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBNYXRoTUxOYW1lczo6bWlUYWcpCiAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBNYXRoTUxOYW1lczo6bW9UYWcpCiAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBNYXRoTUxOYW1lczo6bW5UYWcpCkBAIC0xOTYsNyArMTk4LDcgQEAgdm9pZCBCYWNrZ3Jv
dW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZSgpCiBib29sIEJhY2tncm91bmRIVE1MUGFyc2Vy
OjpzaW11bGF0ZVRyZWVCdWlsZGVyKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQogewog
ICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZykgewotICAgICAgICBj
b25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgICAgIGNvbnN0IEhUTUxJ
ZGVudGlmaWVyJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwogICAgICAgICBpZiAodGhyZWFkU2Fm
ZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpzdmdUYWcpKQogICAgICAgICAgICAgbV9uYW1lc3Bh
Y2VTdGFjay5hcHBlbmQoU1ZHKTsKICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBNYXRoTUxOYW1lczo6bWF0aFRhZykpCkBAIC0yMDgsMzAgKzIxMCwzMCBAQCBib29sIEJhY2tn
cm91bmRIVE1MUGFyc2VyOjpzaW11bGF0ZVRyZWVCdWlsZGVyKGNvbnN0IENvbXBhY3RIVE1MVG9r
ZW4mIHRva2VuKQogICAgICAgICAgICAgbV9uYW1lc3BhY2VTdGFjay5hcHBlbmQoSFRNTCk7CiAg
ICAgICAgIGlmICghaW5Gb3JlaWduQ29udGVudCgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyBqdXN0IGEgY29weSBvZiBUb2tlbml6ZXI6OnVwZGF0ZVN0YXRlRm9yIHdoaWNoIHVz
ZXMgdGhyZWFkU2FmZU1hdGNoZXMuCi0gICAgICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRh
Z05hbWUsIHRleHRhcmVhVGFnKSB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgdGl0bGVUYWcp
KQorICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0ZXh0
YXJlYVRhZykgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHRpdGxlVGFnKSkK
ICAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkNE
QVRBU3RhdGUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUs
IHBsYWludGV4dFRhZykpCisgICAgICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgcGxhaW50ZXh0VGFnKSkKICAgICAgICAgICAgICAgICBtX3Rva2VuaXpl
ci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UExBSU5URVhUU3RhdGUpOwotICAgICAgICAgICAg
ZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHNjcmlwdFRhZykpCisgICAgICAgICAg
ICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkK
ICAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6U2Ny
aXB0RGF0YVN0YXRlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBzdHlsZVRhZykKLSAgICAgICAgICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFt
ZSwgaWZyYW1lVGFnKQotICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCB4bXBUYWcpCi0gICAgICAgICAgICAgICAgfHwgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBu
b2VtYmVkVGFnKSAmJiBtX29wdGlvbnMucGx1Z2luc0VuYWJsZWQpCi0gICAgICAgICAgICAgICAg
fHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG5vZnJhbWVzVGFnKQotICAgICAgICAgICAgICAg
IHx8ICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbm9zY3JpcHRUYWcpICYmIG1fb3B0aW9ucy5z
Y3JpcHRFbmFibGVkKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCBzdHlsZVRhZykKKyAgICAgICAgICAgICAgICB8fCB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2godGFnTmFtZSwgaWZyYW1lVGFnKQorICAgICAgICAgICAgICAgIHx8IHRocmVh
ZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB4bXBUYWcpCisgICAgICAgICAgICAgICAgfHwg
KHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBub2VtYmVkVGFnKSAmJiBtX29wdGlv
bnMucGx1Z2luc0VuYWJsZWQpCisgICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1l
c01hdGNoKHRhZ05hbWUsIG5vZnJhbWVzVGFnKQorICAgICAgICAgICAgICAgIHx8ICh0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbm9zY3JpcHRUYWcpICYmIG1fb3B0aW9ucy5zY3Jp
cHRFbmFibGVkKSkKICAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRv
a2VuaXplcjo6UkFXVEVYVFN0YXRlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICh0b2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpIHsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB0
YWdOYW1lID0gdG9rZW4uZGF0YSgpOworICAgICAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFn
TmFtZSA9IHRva2VuLmRhdGEoKTsKICAgICAgICAgaWYgKChtX25hbWVzcGFjZVN0YWNrLmxhc3Qo
KSA9PSBTVkcgJiYgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpzdmdUYWcpKQog
ICAgICAgICAgICAgfHwgKG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IE1hdGhNTCAmJiB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1hdGhUYWcpKQogICAgICAgICAgICAg
fHwgKG1fbmFtZXNwYWNlU3RhY2suY29udGFpbnMoU1ZHKSAmJiBtX25hbWVzcGFjZVN0YWNrLmxh
c3QoKSA9PSBIVE1MICYmIHRva2VuRXhpdHNTVkcodG9rZW4pKQogICAgICAgICAgICAgfHwgKG1f
bmFtZXNwYWNlU3RhY2suY29udGFpbnMoTWF0aE1MKSAmJiBtX25hbWVzcGFjZVN0YWNrLmxhc3Qo
KSA9PSBIVE1MICYmIHRva2VuRXhpdHNNYXRoKHRva2VuKSkpCiAgICAgICAgICAgICBtX25hbWVz
cGFjZVN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBzY3JpcHRUYWcpKSB7CisgICAgICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgc2NyaXB0VGFnKSkgewogICAgICAgICAgICAgaWYgKCFpbkZvcmVpZ25Db250ZW50
KCkpCiAgICAgICAgICAgICAgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6
OkRhdGFTdGF0ZSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggMGM2NmZjMWFjOWZm
YTY0OWY1M2JkMTg0MzQ2M2FiMjZlNDJmZGU1MS4uYTYwYjkwY2RkNTg0MTRjMzNiZTM5ZWM0YjQ1
YWQ3MmQzZjNiNmQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NT
UHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1By
ZWxvYWRTY2FubmVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNTU1ByZWxvYWRT
Y2FubmVyLmgiCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmgi
CisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21z
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY0LDE2ICs2NSwxOSBAQCB2b2lkIENTU1By
ZWxvYWRTY2FubmVyOjpzY2FuKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlY3RvciYgZGF0YSwgUHJl
bG9hZFJlcXVlc3RTdAogICAgIHNjYW5Db21tb24oZGF0YS5kYXRhKCksIGRhdGEuZGF0YSgpICsg
ZGF0YS5zaXplKCksIHJlcXVlc3RzKTsKIH0KIAotdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nh
bihjb25zdCBTdHJpbmcmIGRhdGEsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJiByZXF1ZXN0cykKKyNp
ZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCit2b2lkIENTU1ByZWxvYWRTY2FubmVyOjpz
Y2FuKGNvbnN0IEhUTUxJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBQcmVsb2FkUmVxdWVzdFN0cmVh
bSYgcmVxdWVzdHMpCiB7Ci0gICAgaWYgKGRhdGEuaXM4Qml0KCkpIHsKLSAgICAgICAgY29uc3Qg
TENoYXIqIGJlZ2luID0gZGF0YS5jaGFyYWN0ZXJzOCgpOwotICAgICAgICBzY2FuQ29tbW9uKGJl
Z2luLCBiZWdpbiArIGRhdGEubGVuZ3RoKCksIHJlcXVlc3RzKTsKKyAgICBjb25zdCBTdHJpbmdJ
bXBsKiBkYXRhID0gaWRlbnRpZmllci5hc1N0cmluZ0ltcGwoKTsKKyAgICBpZiAoZGF0YS0+aXM4
Qml0KCkpIHsKKyAgICAgICAgY29uc3QgTENoYXIqIGJlZ2luID0gZGF0YS0+Y2hhcmFjdGVyczgo
KTsKKyAgICAgICAgc2NhbkNvbW1vbihiZWdpbiwgYmVnaW4gKyBkYXRhLT5sZW5ndGgoKSwgcmVx
dWVzdHMpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNvbnN0IFVDaGFyKiBiZWdpbiA9
IGRhdGEuY2hhcmFjdGVyczE2KCk7Ci0gICAgc2NhbkNvbW1vbihiZWdpbiwgYmVnaW4gKyBkYXRh
Lmxlbmd0aCgpLCByZXF1ZXN0cyk7CisgICAgY29uc3QgVUNoYXIqIGJlZ2luID0gZGF0YS0+Y2hh
cmFjdGVyczE2KCk7CisgICAgc2NhbkNvbW1vbihiZWdpbiwgYmVnaW4gKyBkYXRhLT5sZW5ndGgo
KSwgcmVxdWVzdHMpOwogfQorI2VuZGlmCiAKIGlubGluZSB2b2lkIENTU1ByZWxvYWRTY2FubmVy
Ojp0b2tlbml6ZShVQ2hhciBjKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NT
U1ByZWxvYWRTY2FubmVyLmgKaW5kZXggNGI2OWJjMzIzNTZiNGMyMTgxMzNmYjEzZGNhNDIxMGZi
M2I2ZjZhNC4uOWMyMDkxMDExZDA3MjdlOWVjNjVmOTdkNWNhOWQ3MDA4NWE3MTQ0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5oCkBAIC0zMyw2
ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSFRNTElkZW50aWZpZXI7
CisKIGNsYXNzIENTU1ByZWxvYWRTY2FubmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
U1NQcmVsb2FkU2Nhbm5lcik7CiBwdWJsaWM6CkBAIC00Miw3ICs0NCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlc2V0KCk7CiAKICAgICB2b2lkIHNjYW4oY29uc3QgSFRNTFRva2VuOjpEYXRhVmVj
dG9yJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mKTsKLSAgICB2b2lkIHNjYW4oY29uc3QgU3RyaW5n
JiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mKTsKKyAgICB2b2lkIHNjYW4oY29uc3QgSFRNTElkZW50
aWZpZXImLCBQcmVsb2FkUmVxdWVzdFN0cmVhbSYpOwogCiBwcml2YXRlOgogICAgIGVudW0gU3Rh
dGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxU
b2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNw
cAppbmRleCBiNDc4OGEwN2U1YTA2ZjIxZDQ1ODA5ZWFhZjdiOTZlYTE4ZDgxMDM0Li43NmRkYzZi
NmM3NmUzYTU1MGM0NmVjZWQwNjkwYzkwOGEyNTNkN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzQ29tcGFjdEhUTUxUb2tlbiAgewog
ICAgIHVuc2lnbmVkIGJpdGZpZWxkczsKLSAgICBTdHJpbmcgbmFtZTsKKyAgICBIVE1MSWRlbnRp
ZmllciBkYXRhOwogICAgIFZlY3RvcjxBdHRyaWJ1dGU+IHZlY3RvcjsKICAgICBUZXh0UG9zaXRp
b24gdGV4dFBvc2l0aW9uOwogfTsKQEAgLTU2LDEwICs1NiwxMCBAQCBDb21wYWN0SFRNTFRva2Vu
OjpDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tlbiogdG9rZW4sIGNvbnN0IFRleHRQb3Np
dGlvbiYgdAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6IHsKLSAgICAgICAgbV9kYXRhID0gU3RyaW5nKHRv
a2VuLT5uYW1lKCkpOworICAgICAgICBtX2RhdGEgPSBIVE1MSWRlbnRpZmllcih0b2tlbi0+bmFt
ZSgpLCBMaWtlbHk4Qml0KTsKICAgICAgICAgLy8gVGhlcmUgaXMgb25seSAxIERPQ1RZUEUgdG9r
ZW4gcGVyIGRvY3VtZW50LCBzbyB0byBhdm9pZCBpbmNyZWFzaW5nIHRoZQogICAgICAgICAvLyBz
aXplIG9mIENvbXBhY3RIVE1MVG9rZW4sIHdlIGp1c3QgdXNlIHRoZSBtX2F0dHJpYnV0ZXMgdmVj
dG9yLgotICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShTdHJpbmcodG9rZW4t
PnB1YmxpY0lkZW50aWZpZXIoKSksIFN0cmluZyh0b2tlbi0+c3lzdGVtSWRlbnRpZmllcigpKSkp
OworICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShIVE1MSWRlbnRpZmllcih0
b2tlbi0+cHVibGljSWRlbnRpZmllcigpLCBMaWtlbHk4Qml0KSwgU3RyaW5nKHRva2VuLT5zeXN0
ZW1JZGVudGlmaWVyKCkpKSk7CiAgICAgICAgIG1fZG9jdHlwZUZvcmNlc1F1aXJrcyA9IHRva2Vu
LT5mb3JjZVF1aXJrcygpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC02OCwxOSArNjgsMTcg
QEAgQ29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbihjb25zdCBIVE1MVG9rZW4qIHRv
a2VuLCBjb25zdCBUZXh0UG9zaXRpb24mIHQKICAgICBjYXNlIEhUTUxUb2tlbjo6U3RhcnRUYWc6
CiAgICAgICAgIG1fYXR0cmlidXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRva2VuLT5hdHRy
aWJ1dGVzKCkuc2l6ZSgpKTsKICAgICAgICAgZm9yIChWZWN0b3I8SFRNTFRva2VuOjpBdHRyaWJ1
dGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRva2VuLT5hdHRyaWJ1dGVzKCkuYmVnaW4oKTsgaXQg
IT0gdG9rZW4tPmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytpdCkKLSAgICAgICAgICAgIG1fYXR0cmli
dXRlcy5hcHBlbmQoQXR0cmlidXRlKFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKGl0
LT5uYW1lKSwgU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoaXQtPnZhbHVlKSkpOwor
ICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoSFRNTElkZW50aWZpZXIo
aXQtPm5hbWUsIExpa2VseThCaXQpLCBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShp
dC0+dmFsdWUpKSk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCEKICAgICBjYXNlIEhUTUxUb2tl
bjo6RW5kVGFnOgogICAgICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4tPnNlbGZDbG9zaW5nKCk7
CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCEKICAgICBjYXNlIEhUTUxUb2tlbjo6Q29tbWVudDoK
LSAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOgotICAgICAgICBpZiAodG9rZW4tPmlzQWxs
OEJpdERhdGEoKSkgewotICAgICAgICAgICAgbV9kYXRhID0gU3RyaW5nOjptYWtlOEJpdEZyb20x
NkJpdFNvdXJjZSh0b2tlbi0+ZGF0YSgpKTsKLSAgICAgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9
IHRydWU7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9kYXRhID0gU3RyaW5nKHRva2Vu
LT5kYXRhKCkpOworICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6IHsKKyAgICAgICAgbV9p
c0FsbDhCaXREYXRhID0gdG9rZW4tPmlzQWxsOEJpdERhdGEoKTsKKyAgICAgICAgbV9kYXRhID0g
SFRNTElkZW50aWZpZXIodG9rZW4tPmRhdGEoKSwgdG9rZW4tPmlzQWxsOEJpdERhdGEoKSA/IEZv
cmNlOEJpdCA6IEZvcmNlMTZCaXQpOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgZGVmYXVs
dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCmluZGV4IGM4OThmNmU2
ZjE0ZWM4OTEyYjMyZmExMzE1Yzc3OGE4N2UzOTg5ODMuLmZmYTRhZTQzY2QxZjNlYmYwZTNlYmMz
ZTg5ZWE0OTRmNjJmNTMzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0NvbXBhY3RIVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21w
YWN0SFRNTFRva2VuLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShUSFJFQURFRF9I
VE1MX1BBUlNFUikKIAorI2luY2x1ZGUgIkhUTUxJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSFRN
TFRva2VuLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CkBAIC00NCwxMyArNDUsMTMgQEAgY2xhc3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIENv
bXBhY3RIVE1MVG9rZW4gewogcHVibGljOgogICAgIHN0cnVjdCBBdHRyaWJ1dGUgewotICAgICAg
ICBBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorICAg
ICAgICBBdHRyaWJ1dGUoY29uc3QgSFRNTElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCiAgICAgICAgICAgICA6IG5hbWUobmFtZSkKICAgICAgICAgICAgICwgdmFsdWUodmFs
dWUpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyBuYW1lOworICAgICAg
ICBIVE1MSWRlbnRpZmllciBuYW1lOwogICAgICAgICBTdHJpbmcgdmFsdWU7CiAgICAgfTsKIApA
QCAtNTksNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NhZmVUb1NlbmRUb0Fub3RoZXJU
aHJlYWQoKSBjb25zdDsKIAogICAgIEhUTUxUb2tlbjo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8SFRNTFRva2VuOjpUeXBlPihtX3R5cGUpOyB9Ci0gICAgY29uc3QgU3Ry
aW5nJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgY29uc3QgSFRNTElkZW50
aWZpZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBib29sIHNlbGZDbG9z
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zZWxmQ2xvc2luZzsgfQogICAgIGJvb2wgaXNBbGw4Qml0
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbGw4Qml0RGF0YTsgfQogICAgIGNvbnN0IFZlY3Rv
cjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9
CkBAIC02OCw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXJlIGlzIG9ubHkgMSBET0NU
WVBFIHRva2VuIHBlciBkb2N1bWVudCwgc28gdG8gYXZvaWQgaW5jcmVhc2luZyB0aGUKICAgICAv
LyBzaXplIG9mIENvbXBhY3RIVE1MVG9rZW4sIHdlIGp1c3QgdXNlIHRoZSBtX2F0dHJpYnV0ZXMg
dmVjdG9yLgotICAgIGNvbnN0IFN0cmluZyYgcHVibGljSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fYXR0cmlidXRlc1swXS5uYW1lOyB9CisgICAgY29uc3QgSFRNTElkZW50aWZpZXImIHB1
YmxpY0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXNbMF0ubmFtZTsgfQog
ICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0
cmlidXRlc1swXS52YWx1ZTsgfQogICAgIGJvb2wgZG9jdHlwZUZvcmNlc1F1aXJrcygpIGNvbnN0
IHsgcmV0dXJuIG1fZG9jdHlwZUZvcmNlc1F1aXJrczsgfQogCkBAIC03OCw3ICs3OSw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9pc0FsbDhCaXREYXRhIDogMTsKICAgICB1bnNpZ25lZCBt
X2RvY3R5cGVGb3JjZXNRdWlya3M6IDE7CiAKLSAgICBTdHJpbmcgbV9kYXRhOyAvLyAibmFtZSIs
ICJjaGFyYWN0ZXJzIiwgb3IgImRhdGEiIGRlcGVuZGluZyBvbiBtX3R5cGUKKyAgICBIVE1MSWRl
bnRpZmllciBtX2RhdGE7IC8vICJuYW1lIiwgImNoYXJhY3RlcnMiLCBvciAiZGF0YSIgZGVwZW5k
aW5nIG9uIG1fdHlwZQogICAgIFZlY3RvcjxBdHRyaWJ1dGU+IG1fYXR0cmlidXRlczsKICAgICBU
ZXh0UG9zaXRpb24gbV90ZXh0UG9zaXRpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNmVjMTY4NjJlYzY4YzYwZGU1
NTU0ZTQ1OTIwZGZjYmNjNzgwNjUxMy4uMjFmZmQ4ZDU4MTBhYzY5NjJhZjhmZjQzODY5Y2VhZDY0
MGYwZDVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1l
bnRQYXJzZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIu
aCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJI
VE1MSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQ
YXJzZXJTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VyVGhyZWFkLmgiCkBAIC02NTcs
NiArNjU4LDggQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0QmFja2dyb3VuZFBhcnNl
cigpCiAgICAgQVNTRVJUKCFtX2hhdmVCYWNrZ3JvdW5kUGFyc2VyKTsKICAgICBtX2hhdmVCYWNr
Z3JvdW5kUGFyc2VyID0gdHJ1ZTsKIAorICAgIEhUTUxJZGVudGlmaWVyOjppbml0KCk7CisKICAg
ICBSZWZQdHI8V2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5kSFRNTFBhcnNlcj4gPiByZWZlcmVuY2Ug
PSBXZWFrUmVmZXJlbmNlPEJhY2tncm91bmRIVE1MUGFyc2VyPjo6Y3JlYXRlVW5ib3VuZCgpOwog
ICAgIG1fYmFja2dyb3VuZFBhcnNlciA9IFdlYWtQdHI8QmFja2dyb3VuZEhUTUxQYXJzZXI+KHJl
ZmVyZW5jZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJ
ZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYmNjNjc3MzBlZGQxNDVlZjMwNmY4NmYyYTVmMzQyY2QyZWZiNzkx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50
aWZpZXIuY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdv
b2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShU
SFJFQURFRF9IVE1MX1BBUlNFUikKKworI2luY2x1ZGUgIkhUTUxJZGVudGlmaWVyLmgiCisKKyNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK3R5cGVk
ZWYgc3RkOjpwYWlyPHVuc2lnbmVkLCBTdHJpbmdJbXBsKj4gSWRlbnRpZmllckVudHJ5OwordHlw
ZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBJZGVudGlmaWVyRW50cnksIEFscmVhZHlIYXNoZWQ+IElk
ZW50aWZpZXJUYWJsZTsKKwordW5zaWduZWQgSFRNTElkZW50aWZpZXI6Om1heE5hbWVMZW5ndGgg
PSAwOworCitzdGF0aWMgSWRlbnRpZmllclRhYmxlJiBpZGVudGlmaWVyVGFibGUoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoSWRlbnRpZmllclRhYmxlLCB0YWJsZSwgKCkpOworICAgIHJl
dHVybiB0YWJsZTsKK30KKworI2lmbmRlZiBOREVCVUcKK2Jvb2wgSFRNTElkZW50aWZpZXI6Omhh
c0luZGV4KGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZykKK3sKKyAgICBjb25zdCBJZGVudGlmaWVy
VGFibGUmIHRhYmxlID0gaWRlbnRpZmllclRhYmxlKCk7CisgICAgcmV0dXJuIHRhYmxlLmNvbnRh
aW5zKHN0cmluZy0+aGFzaCgpKTsKK30KKyNlbmRpZgorCit1bnNpZ25lZCBIVE1MSWRlbnRpZmll
cjo6ZmluZEluZGV4KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCit7
CisgICAgLy8gY29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMgaXMgdGhlIGZ1bmN0aW9uIFN0cmlu
Z0ltcGw6Omhhc2goKSB1c2VzLgorICAgIHVuc2lnbmVkIGhhc2ggPSBTdHJpbmdIYXNoZXI6OmNv
bXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgY29uc3Qg
SWRlbnRpZmllclRhYmxlJiB0YWJsZSA9IGlkZW50aWZpZXJUYWJsZSgpOworICAgIEFTU0VSVCgh
dGFibGUuaXNFbXB0eSgpKTsKKworICAgIElkZW50aWZpZXJUYWJsZTo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSB0YWJsZS5maW5kKGhhc2gpOworICAgIGlmIChpdCA9PSB0YWJsZS5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuIGludmFsaWRJbmRleDsKKyAgICByZXR1cm4gaXQtPnZhbHVlLmZpcnN0OworfQor
Citjb25zdCB1bnNpZ25lZCBrSFRNTE5hbWVzSW5kZXhPZmZzZXQgPSAwOworY29uc3QgdW5zaWdu
ZWQga0hUTUxBdHRyc0luZGV4T2Zmc2V0ID0gMTAwMDsKK0NPTVBJTEVfQVNTRVJUKGtIVE1MQXR0
cnNJbmRleE9mZnNldCA+IEhUTUxUYWdzQ291bnQsIGtIVE1MQXR0cnNJbmRleE9mZnNldF9zaG91
bGRfYmVfbGFyZ2VyX3RoYW5fSFRNTFRhZ3NDb3VudCk7CisKK3N0YXRpYyBjb25zdCBTdHJpbmcm
IG5hbWVGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICB1bnNpZ25lZCBhZGp1c3RlZElu
ZGV4OworICAgIFF1YWxpZmllZE5hbWUqKiBuYW1lczsKKyAgICBpZiAoaW5kZXggPCBrSFRNTEF0
dHJzSW5kZXhPZmZzZXQpIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwga0hUTUxOYW1lc0luZGV4
T2Zmc2V0ICsgSFRNTFRhZ3NDb3VudCk7CisgICAgICAgIGFkanVzdGVkSW5kZXggPSBpbmRleCAt
IGtIVE1MTmFtZXNJbmRleE9mZnNldDsKKyAgICAgICAgbmFtZXMgPSBnZXRIVE1MVGFncygpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IGtIVE1MQXR0cnNJbmRleE9mZnNl
dCArIEhUTUxBdHRyc0NvdW50KTsKKyAgICAgICAgYWRqdXN0ZWRJbmRleCA9IGluZGV4IC0ga0hU
TUxBdHRyc0luZGV4T2Zmc2V0OworICAgICAgICBuYW1lcyA9IGdldEhUTUxBdHRycygpOworICAg
IH0KKyAgICAvLyBIVE1MQXR0cnMgYW5kIEhUTUxOYW1lcyBtYXkgaGF2ZSBjb2xsaXNpb25zLCBi
dXQKKyAgICAvLyB3ZSBzaG91bGRuJ3QgY2FyZSB3aGljaCB3ZSBlbmRlZCB1cCBzdG9yaW5nLCBz
aW5jZSB0aGVpcgorICAgIC8vIGNvbXBvbmVudHMgYXJlIGFsbCBBdG9taWNTdHJpbmdzIGFuZCBz
aG91bGQgdXNlIHRoZSBzYW1lCisgICAgLy8gdW5kZXJseWluZyBTdHJpbmdJbXBsKi4KKyAgICBy
ZXR1cm4gbmFtZXNbYWRqdXN0ZWRJbmRleF0tPmxvY2FsTmFtZSgpLnN0cmluZygpOworfQorCitj
b25zdCBTdHJpbmcmIEhUTUxJZGVudGlmaWVyOjphc1N0cmluZygpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pbmRleCAhPSBpbnZhbGlkSW5kZXgpCisg
ICAgICAgIHJldHVybiBuYW1lRm9ySW5kZXgobV9pbmRleCk7CisgICAgcmV0dXJuIG1fc3RyaW5n
OworfQorCitjb25zdCBTdHJpbmdJbXBsKiBIVE1MSWRlbnRpZmllcjo6YXNTdHJpbmdJbXBsKCkg
Y29uc3QKK3sKKyAgICBpZiAobV9pbmRleCAhPSBpbnZhbGlkSW5kZXgpCisgICAgICAgIHJldHVy
biBuYW1lRm9ySW5kZXgobV9pbmRleCkuaW1wbCgpOworICAgIHJldHVybiBtX3N0cmluZy5pbXBs
KCk7Cit9CisKK3ZvaWQgSFRNTElkZW50aWZpZXI6OmFkZE5hbWVzKFF1YWxpZmllZE5hbWUqKiBu
YW1lcywgdW5zaWduZWQgbmFtZXNDb3VudCwgdW5zaWduZWQgaW5kZXhPZmZzZXQpCit7CisgICAg
SWRlbnRpZmllclRhYmxlJiB0YWJsZSA9IGlkZW50aWZpZXJUYWJsZSgpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBuYW1lc0NvdW50OyArK2kpIHsKKyAgICAgICAgU3RyaW5nSW1wbCog
bmFtZSA9IG5hbWVzW2ldLT5sb2NhbE5hbWUoKS5pbXBsKCk7CisgICAgICAgIHVuc2lnbmVkIGhh
c2ggPSBuYW1lLT5oYXNoKCk7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gaSArIGluZGV4T2Zm
c2V0OworICAgICAgICBJZGVudGlmaWVyRW50cnkgZW50cnkoaW5kZXgsIG5hbWUpOworICAgICAg
ICBJZGVudGlmaWVyVGFibGU6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSB0YWJsZS5hZGQoaGFzaCwg
ZW50cnkpOworICAgICAgICBtYXhOYW1lTGVuZ3RoID0gc3RkOjptYXgobWF4TmFtZUxlbmd0aCwg
bmFtZS0+bGVuZ3RoKCkpOworICAgICAgICAvLyBFbnN1cmUgd2UncmUgdXNpbmcgdGhlIHNhbWUg
aGFzaGluZyBhbGdvcml0aG0gdG8gZ2V0IGFuZCBzZXQuCisgICAgICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCAhYWRkUmVzdWx0LmlzTmV3RW50cnkgfHwgSFRNTElkZW50aWZpZXI6OmZpbmRJ
bmRleChuYW1lLT5jaGFyYWN0ZXJzKCksIG5hbWUtPmxlbmd0aCgpKSA9PSBpbmRleCk7CisgICAg
ICAgIC8vIFdlIGV4cGVjdCBzb21lIGhhc2ggY29sbGlzaW9ucywgYnV0IG9ubHkgZm9yIGlkZW50
aWNhbCBzdHJpbmdzLgorICAgICAgICAvLyBTaW5jZSBhbGwgb2YgdGhlc2UgbmFtZXMgYXJlIEF0
b21pY1N0cmluZ3MgcG9pbnRlcnMgc2hvdWxkIGJlIGVxdWFsLgorICAgICAgICBBU1NFUlRfVU5V
U0VEKGFkZFJlc3VsdCwgIWFkZFJlc3VsdC5pc05ld0VudHJ5IHx8IG5hbWUgPT0gYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5zZWNvbmQpOworICAgIH0KK30KKwordm9pZCBIVE1MSWRlbnRpZmll
cjo6aW5pdCgpCit7CisgICAgLy8gVGhpcyBpcyBzYWZlIHRvIGNhbGwgZnJvbSBhbnkgdGhyZWFk
LCBidXQgbXVzdCBiZSBjYWxsZWQgYmVmb3JlCisgICAgLy8gdXNpbmcgSFRNTElkZW50aWZpZXIu
CisgICAgc3RhdGljIGJvb2wgaXNJbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmIChpc0luaXRp
YWxpemVkKQorICAgICAgICByZXR1cm47CisgICAgaXNJbml0aWFsaXplZCA9IHRydWU7CisKKyAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGF0b21pemUgc21hbGwgd2hpdGVzcGFjZSAoXG4sIFxuXG4s
IGV0Yy4pCisgICAgYWRkTmFtZXMoZ2V0SFRNTFRhZ3MoKSwgSFRNTFRhZ3NDb3VudCwga0hUTUxO
YW1lc0luZGV4T2Zmc2V0KTsKKyAgICBhZGROYW1lcyhnZXRIVE1MQXR0cnMoKSwgSFRNTEF0dHJz
Q291bnQsIGtIVE1MQXR0cnNJbmRleE9mZnNldCk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJM
RShUSFJFQURFRF9IVE1MX1BBUlNFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkNThlNzI0YWVkYTc3YWI0NWQ3NGZmOTJjOGUzNzky
NGI2NmUwZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIVE1MSWRlbnRpZmllcl9oCisjZGVm
aW5lIEhUTUxJZGVudGlmaWVyX2gKKworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikK
KworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFF1YWxpZmllZE5hbWU7CisKK2VudW0gQ2hhcmFjdGVyV2lkdGggeworICAgIExp
a2VseThCaXQsCisgICAgRm9yY2U4Qml0LAorICAgIEZvcmNlMTZCaXQKK307CisKK2NsYXNzIEhU
TUxJZGVudGlmaWVyIHsKK3B1YmxpYzoKKyAgICBIVE1MSWRlbnRpZmllcigpIDogbV9pbmRleCgw
KSB7IH0KKworICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KKyAgICBIVE1MSWRl
bnRpZmllcihjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgdmVjdG9yLCBDaGFy
YWN0ZXJXaWR0aCB3aWR0aCkKKyAgICB7CisgICAgICAgIC8vIEF2b2lkIGxvb2t1cHMgb2YgbG9u
ZyBuYW1lcyB3ZSBrbm93IGFyZSBnb2luZyB0byBmYWlsLgorICAgICAgICBpZiAodmVjdG9yLnNp
emUoKSA8PSBtYXhOYW1lTGVuZ3RoKSB7CisgICAgICAgICAgICBtX2luZGV4ID0gZmluZEluZGV4
KHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpOworICAgICAgICAgICAgaWYgKG1faW5kZXgg
IT0gaW52YWxpZEluZGV4KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBtX2luZGV4ID0gaW52YWxpZEluZGV4OworICAgICAgICBpZiAod2lkdGgg
PT0gTGlrZWx5OEJpdCkKKyAgICAgICAgICAgIG1fc3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRl
OEJpdElmUG9zc2libGUodmVjdG9yKTsKKyAgICAgICAgZWxzZSBpZiAod2lkdGggPT0gRm9yY2U4
Qml0KQorICAgICAgICAgICAgbV9zdHJpbmcgPSBTdHJpbmc6Om1ha2U4Qml0RnJvbTE2Qml0U291
cmNlKHZlY3Rvcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fc3RyaW5nID0gU3RyaW5n
KHZlY3Rvcik7CisgICAgfQorCisgICAgLy8gYXNTdHJpbmcgc2hvdWxkIG9ubHkgYmUgdXNlZCBv
biB0aGUgbWFpbiB0aHJlYWQuCisgICAgY29uc3QgU3RyaW5nJiBhc1N0cmluZygpIGNvbnN0Owor
ICAgIC8vIGFzU3RyaW5nSW1wbCgpIGlzIHNhZmUgdG8gY2FsbCBmcm9tIGFueSB0aHJlYWQuCisg
ICAgY29uc3QgU3RyaW5nSW1wbCogYXNTdHJpbmdJbXBsKCkgY29uc3Q7CisKKyAgICBzdGF0aWMg
dm9pZCBpbml0KCk7CisKKyAgICBib29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpOyB9CisK
KyNpZm5kZWYgTkRFQlVHCisgICAgc3RhdGljIGJvb2wgaGFzSW5kZXgoY29uc3QgU3RyaW5nSW1w
bCopOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludmFs
aWRJbmRleCA9IC0xOworICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhOYW1lTGVuZ3RoOworICAgIHN0
YXRpYyB1bnNpZ25lZCBmaW5kSW5kZXgoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgYWRkTmFtZXMoUXVhbGlmaWVkTmFtZSoqIG5hbWVz
LCB1bnNpZ25lZCBuYW1lc0NvdW50LCB1bnNpZ25lZCBpbmRleE9mZnNldCk7CisKKyAgICAvLyBG
SVhNRTogVGhpcyBjb3VsZCBiZSBhIHVuaW9uLgorICAgIHVuc2lnbmVkIG1faW5kZXg7CisgICAg
U3RyaW5nIG1fc3RyaW5nOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX0hU
TUxfUEFSU0VSKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFBhcnNlcklkaW9tcy5jcHAKaW5kZXggOTQ0N2NmZTZjOGI3NzdkMDBmMThjZjg0ZDZjN2YyZmI0
OTVkZDNhYi4uMWI0YzJkMjhmM2E1MTE0MWVjYjcyYjMwNTY5YjBiOGExYjcxNjkyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAKICNpbmNsdWRlICJE
ZWNpbWFsLmgiCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJRdWFsaWZp
ZWROYW1lLmgiCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CkBAIC0yNzcsOCArMjc4LDEyIEBAIGJvb2wgcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGNv
bnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkJiB2YWx1ZSkKICAgICByZXR1cm4gcGFyc2VIVE1M
Tm9uTmVnYXRpdmVJbnRlZ2VySW50ZXJuYWwoc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoLCB2YWx1ZSk7
CiB9CiAKLXN0YXRpYyBib29sIHRocmVhZFNhZmVFcXVhbChTdHJpbmdJbXBsKiBhLCBTdHJpbmdJ
bXBsKiBiKQorc3RhdGljIGJvb2wgdGhyZWFkU2FmZUVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEs
IGNvbnN0IFN0cmluZ0ltcGwqIGIpCiB7CisgICAgaWYgKGEgPT0gYikKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgLy8gTm90ZTogVGhpcyBoYXNoIGNvbXBhcmUgaXMgbm90IGNvcnJlY3QgZm9y
IGFsbCBwb3NzaWJsZSBTdHJpbmdJbXBscywgYnV0CisgICAgLy8gc2luY2Ugd2UncmUgYWx3YXlz
IGNvbXBhcmluZyBhZ2FpbnN0IGNvbnN0YW50cywgaXQncyBPSy4KICAgICBpZiAoYS0+aGFzaCgp
ICE9IGItPmhhc2goKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBTdHJpbmdI
YXNoOjplcXVhbChhLCBiKTsKQEAgLTI4OSw5ICsyOTQsMTEgQEAgYm9vbCB0aHJlYWRTYWZlTWF0
Y2goY29uc3QgUXVhbGlmaWVkTmFtZSYgYSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYikKICAgICBy
ZXR1cm4gdGhyZWFkU2FmZUVxdWFsKGEubG9jYWxOYW1lKCkuaW1wbCgpLCBiLmxvY2FsTmFtZSgp
LmltcGwoKSk7CiB9CiAKLWJvb2wgdGhyZWFkU2FmZU1hdGNoKGNvbnN0IFN0cmluZyYgbG9jYWxO
YW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRN
TF9QQVJTRVIpCitib29sIHRocmVhZFNhZmVNYXRjaChjb25zdCBIVE1MSWRlbnRpZmllciYgbG9j
YWxOYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKIHsKLSAgICByZXR1cm4gdGhyZWFk
U2FmZUVxdWFsKGxvY2FsTmFtZS5pbXBsKCksIHFOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7Cisg
ICAgcmV0dXJuIHRocmVhZFNhZmVFcXVhbChsb2NhbE5hbWUuYXNTdHJpbmdJbXBsKCksIHFOYW1l
LmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CisjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmluZGV4IGEwMzFlNDVjZmYzMjM1M2YxNDBh
MGEyMDE5NWI5ZjlmMzYzMjdiM2UuLmJjNTgwODkxMDY3ZTAxMzk1NjI5NWVjM2M1YWI5NGU4MDNk
ZWY3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmgKQEAgLTI1LDYgKzI1LDggQEAKICNpZm5kZWYgSFRNTFBhcnNlcklkaW9tc19oCiAjZGVmaW5l
IEhUTUxQYXJzZXJJZGlvbXNfaAogCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKKyNpbmNs
dWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+
CkBAIC0zMiw3ICszNCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERlY2ltYWw7
Ci1jbGFzcyBRdWFsaWZpZWROYW1lOwogCiAvLyBTcGFjZSBjaGFyYWN0ZXJzIGFzIGRlZmluZWQg
YnkgdGhlIEhUTUwgc3BlY2lmaWNhdGlvbi4KIGJvb2wgaXNIVE1MU3BhY2UoVUNoYXIpOwpAQCAt
OTMsNyArOTQsMTYgQEAgaW5saW5lIGJvb2wgaXNOb3RIVE1MU3BhY2UoVUNoYXIgY2hhcmFjdGVy
KQogfQogCiBib29sIHRocmVhZFNhZmVNYXRjaChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwotYm9vbCB0aHJlYWRTYWZlTWF0Y2goY29uc3QgU3RyaW5nJiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYpOworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKK2Jv
b2wgdGhyZWFkU2FmZU1hdGNoKGNvbnN0IEhUTUxJZGVudGlmaWVyJiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworaW5saW5lIGJvb2wgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKGNvbnN0IEhUTUxJ
ZGVudGlmaWVyJiB0YWdOYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKK3sKKyAgICAv
LyBXaGVuIHRoZSBRdWFsaWZpZWROYW1lIGlzIGtub3duIHRvIEhUTUxJZGVudGlmaWVyLAorICAg
IC8vIGFsbCB3ZSBoYXZlIHRvIGRvIGlzIGEgcG9pbnRlciBjb21wYXJlLgorICAgIEFTU0VSVChI
VE1MSWRlbnRpZmllcjo6aGFzSW5kZXgocU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKSk7CisgICAg
cmV0dXJuIHRhZ05hbWUuYXNTdHJpbmdJbXBsKCkgPT0gcU5hbWUubG9jYWxOYW1lKCkuaW1wbCgp
OworfQorI2VuZGlmCiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggYTU3YzVkMzg1ZTNlNzFlNzFiNTUxZDQzY2FlZDA3
NTIzODM1YjMwNi4uZTAxMWVhMjlhMGJkZWFkN2Y4Zjk2YWI2MGRhOWQ2NGRlNjAxNmM5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3Bw
CkBAIC02MywyNCArNjMsMjYgQEAgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6VGFnSWQgVG9rZW5QcmVs
b2FkU2Nhbm5lcjo6dGFnSWRGb3IoY29uc3QgSFRNTFRva2VuOjpEYXRhVmUKICAgICByZXR1cm4g
VW5rbm93blRhZ0lkOwogfQogCi1Ub2tlblByZWxvYWRTY2FubmVyOjpUYWdJZCBUb2tlblByZWxv
YWRTY2FubmVyOjp0YWdJZEZvcihjb25zdCBTdHJpbmcmIHRhZ05hbWUpCisjaWYgRU5BQkxFKFRI
UkVBREVEX0hUTUxfUEFSU0VSKQorVG9rZW5QcmVsb2FkU2Nhbm5lcjo6VGFnSWQgVG9rZW5QcmVs
b2FkU2Nhbm5lcjo6dGFnSWRGb3IoY29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUpCiB7Ci0g
ICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBpbWdUYWcpKQorICAgIGlmICh0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaW1nVGFnKSkKICAgICAgICAgcmV0dXJuIEltZ1Rh
Z0lkOwotICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaW5wdXRUYWcpKQorICAgIGlm
ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaW5wdXRUYWcpKQogICAgICAgICBy
ZXR1cm4gSW5wdXRUYWdJZDsKLSAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGxpbmtU
YWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbGlua1RhZykp
CiAgICAgICAgIHJldHVybiBMaW5rVGFnSWQ7Ci0gICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBzY3JpcHRUYWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgc2NyaXB0VGFnKSkKICAgICAgICAgcmV0dXJuIFNjcmlwdFRhZ0lkOwotICAgIGlmICh0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgc3R5bGVUYWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgc3R5bGVUYWcpKQogICAgICAgICByZXR1cm4gU3R5bGVUYWdJZDsK
LSAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJhc2VUYWcpKQorICAgIGlmICh0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYmFzZVRhZykpCiAgICAgICAgIHJldHVybiBC
YXNlVGFnSWQ7Ci0gICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0ZW1wbGF0ZVRhZykp
CisgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0ZW1wbGF0ZVRhZykp
CiAgICAgICAgIHJldHVybiBUZW1wbGF0ZVRhZ0lkOwogICAgIHJldHVybiBVbmtub3duVGFnSWQ7
CiB9CisjZW5kaWYKIAogU3RyaW5nIFRva2VuUHJlbG9hZFNjYW5uZXI6OmluaXRpYXRvckZvcihU
YWdJZCB0YWdJZCkKIHsKQEAgLTE0NywyOCArMTQ5LDQyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogICAgIH0KIAorc3RhdGljIGJvb2wgbWF0Y2goY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHJldHVybiBxTmFtZS5sb2NhbE5hbWUoKSA9PSBu
YW1lOworfQorCisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQorc3RhdGljIGJvb2wg
bWF0Y2goY29uc3QgSFRNTElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHFO
YW1lKQoreworICAgIHJldHVybiB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2gobmFtZSwgcU5hbWUp
OworfQorI2VuZGlmCisKIHByaXZhdGU6Ci0gICAgdm9pZCBwcm9jZXNzQXR0cmlidXRlKGNvbnN0
IFN0cmluZyYgYXR0cmlidXRlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBOYW1lVHlwZT4KKyAgICB2b2lkIHByb2Nlc3NBdHRyaWJ1dGUo
Y29uc3QgTmFtZVR5cGUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFs
dWUpCiAgICAgewotICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIGNo
YXJzZXRBdHRyKSkKKyAgICAgICAgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIGNoYXJzZXRBdHRy
KSkKICAgICAgICAgICAgIG1fY2hhcnNldCA9IGF0dHJpYnV0ZVZhbHVlOwogCiAgICAgICAgIGlm
IChtX3RhZ0lkID09IFNjcmlwdFRhZ0lkIHx8IG1fdGFnSWQgPT0gSW1nVGFnSWQpIHsKLSAgICAg
ICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRlTmFtZSwgc3JjQXR0cikpCisgICAg
ICAgICAgICBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgc3JjQXR0cikpCiAgICAgICAgICAgICAg
ICAgc2V0VXJsVG9Mb2FkKGF0dHJpYnV0ZVZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRo
cmVhZFNhZmVNYXRjaChhdHRyaWJ1dGVOYW1lLCBjcm9zc29yaWdpbkF0dHIpICYmICFhdHRyaWJ1
dGVWYWx1ZS5pc051bGwoKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoKGF0dHJpYnV0ZU5h
bWUsIGNyb3Nzb3JpZ2luQXR0cikgJiYgIWF0dHJpYnV0ZVZhbHVlLmlzTnVsbCgpKQogICAgICAg
ICAgICAgICAgIG1fY3Jvc3NPcmlnaW5Nb2RlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKGF0dHJpYnV0ZVZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmIChtX3RhZ0lkID09IExp
bmtUYWdJZCkgewotICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaChhdHRyaWJ1dGVOYW1l
LCBocmVmQXR0cikpCisgICAgICAgICAgICBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgaHJlZkF0
dHIpKQogICAgICAgICAgICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAg
ICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRlTmFtZSwgcmVsQXR0cikp
CisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCByZWxBdHRyKSkKICAg
ICAgICAgICAgICAgICBtX2xpbmtJc1N0eWxlU2hlZXQgPSByZWxBdHRyaWJ1dGVJc1N0eWxlU2hl
ZXQoYXR0cmlidXRlVmFsdWUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNo
KGF0dHJpYnV0ZU5hbWUsIG1lZGlhQXR0cikpCisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaChh
dHRyaWJ1dGVOYW1lLCBtZWRpYUF0dHIpKQogICAgICAgICAgICAgICAgIG1fbGlua01lZGlhQXR0
cmlidXRlSXNTY3JlZW4gPSBsaW5rTWVkaWFBdHRyaWJ1dGVJc1NjcmVlbihhdHRyaWJ1dGVWYWx1
ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAobV90YWdJZCA9PSBJbnB1dFRhZ0lkKSB7Ci0gICAgICAg
ICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIHNyY0F0dHIpKQorICAgICAg
ICAgICAgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIHNyY0F0dHIpKQogICAgICAgICAgICAgICAg
IHNldFVybFRvTG9hZChhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aHJl
YWRTYWZlTWF0Y2goYXR0cmlidXRlTmFtZSwgdHlwZUF0dHIpKQorICAgICAgICAgICAgZWxzZSBp
ZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgdHlwZUF0dHIpKQogICAgICAgICAgICAgICAgIG1faW5w
dXRJc0ltYWdlID0gZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlVmFsdWUsIElucHV0VHlwZU5h
bWVzOjppbWFnZSgpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKaW5kZXggNDdhNTQ0NGYxMGU4Y2ZkZDZiYTcw
YjA2YmUwOGYyNTQ0MDRjYzAxYi4uZDJmMmMxMTg5YzI1ZjUwZGIyOTIzZmZiMzRhNzEyNmU0Mjdh
M2IyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2Fu
bmVyLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBpbmxpbmUgdm9pZCBzY2FuQ29t
bW9uKGNvbnN0IFRva2VuJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mIHJlcXVlc3RzKTsKIAogICAg
IHN0YXRpYyBUYWdJZCB0YWdJZEZvcihjb25zdCBIVE1MVG9rZW46OkRhdGFWZWN0b3ImKTsKLSAg
ICBzdGF0aWMgVGFnSWQgdGFnSWRGb3IoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFRhZ0lk
IHRhZ0lkRm9yKGNvbnN0IEhUTUxJZGVudGlmaWVyJik7CiAKICAgICBzdGF0aWMgU3RyaW5nIGlu
aXRpYXRvckZvcihUYWdJZCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192152</attachid>
            <date>2013-03-07 23:07:38 -0800</date>
            <delta_ts>2013-03-08 15:59:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107337-20130307230352.patch</filename>
            <type>text/plain</type>
            <size>50940</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJlOGYzYWE3YTUyMjVi
NDI0ZDYxYWU2NTg0YmIwYjk0NDc0Njc2My4uZWM0OGYzMjMxNzJhZWM5MDNlNTZiZmRmZDVhZjA0
M2FlNzcxOTBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg0IEBACiAyMDEzLTAzLTA3ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAorICAgICAgICBCYWNrZ3JvdW5kSFRNTFBhcnNl
ciBzaG91bGQgYmUgYWJsZSB0byBhdG9taXplIHdlbGwta25vd24gc3RyaW5ncworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGluZyB0aGlzIHBhdGNo
IGVhc2lseSByZXF1aXJlcyBhcHBseWluZyBidWcgMTA3MjM2IGxvY2FsbHkKKyAgICAgICAgdG8g
cmVtb3ZlIGFsbCB0aGUgcmVuZGVyaW5nIG5vaXNlIGZyb20gUGFyc2VyL2h0bWwtdGhyZWFkZWQt
cGFyc2VyLmh0bWwuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IGNsYXNzIEhUTUxJ
ZGVudGlmaWVyIHdoaWNoIGFsbG93cyB1cyB0byBhdm9pZAorICAgICAgICBhbGxvY2F0aW5nIHN0
cmluZ3MgZm9yIGtub3duIHRhZy9hdHRyaWJ1dGUgbmFtZXMgZnJvbSBIVE1MTmFtZXMuCisKKyAg
ICAgICAgVGhlcmUgaXMgc3RpbGwgYSBsb3Qgb2YgbWVhdCBvbiB0aGlzIGJvbmUsIGJ1dCBJIHRo
aW5rIGl0J3MgaW1wb3J0YW50IHRvCisgICAgICAgIGxhbmQgc29tZXRoaW5nICJzbWFsbGlzaCIg
dG8gc3RhcnQgYW5kIGl0ZXJhdGUgZnJvbSB0aGVyZS4KKworICAgICAgICBUaGlzIHRvb2sgUGFy
c2VyL2h0bWwtdGhyZWFkZWQtcGFyc2VyLmh0bWwgZnJvbToKKyAgICAgICAgbWVkaWFuPSA0NDMu
NzI2NTAwMDAyIG1zLCBzdGRldj0gNy4yNTAwMjY3OTk1MiBtcywgbWluPSA0MzAuMjQ0MDAwMDQ3
IG1zLCBtYXg9IDQ1NS41MTEwMDAwMDcgbXMKKyAgICAgICAgdG86CisgICAgICAgIG1lZGlhbj0g
NDI3Ljg0OTUwMDAwNCBtcywgc3RkZXY9IDkuOTY5NjcwNTgyOTIgbXMsIG1pbj0gNDE3LjkxNDAw
MDA0OSBtcywgbWF4PSA0NjEuNTI4MDAwMDE0IG1zCisgICAgICAgIG9uIG15IE1CUC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBodG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4u
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6QXRvbWljSFRNTFRva2VuKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp0b2tlbkV4aXRzRm9yZWlnbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
dG9rZW5FeGl0c1NWRyk6CisgICAgICAgIChXZWJDb3JlOjp0b2tlbkV4aXRzTWF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRlcik6
CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJlbG9hZFNjYW5uZXI6OnNjYW4pOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0NTU1ByZWxvYWRTY2FubmVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU1By
ZWxvYWRTY2FubmVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNw
cDoKKyAgICAgICAgKFNhbWVTaXplQXNDb21wYWN0SFRNTFRva2VuKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBhY3RIVE1M
VG9rZW46OkF0dHJpYnV0ZTo6QXR0cmlidXRlKToKKyAgICAgICAgKEF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXBhY3RIVE1MVG9rZW46OnB1YmxpY0lkZW50aWZpZXIpOgorICAgICAgICAoQ29tcGFjdEhU
TUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRCYWNrZ3JvdW5kUGFy
c2VyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjppZGVudGlmaWVyVGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50aWZpZXI6Omhhc0luZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJZGVudGlmaWVyOjpmaW5kSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6bmFt
ZUZvckluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjphc1N0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6YXNTdHJpbmdJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjphZGROYW1lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSWRlbnRpZmllcjo6aW5pdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTElkZW50
aWZpZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEhUTUxJZGVudGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjpIVE1MSWRlbnRpZmllcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6aXNTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRocmVhZFNhZmVFcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjp0aHJl
YWRTYWZlTWF0Y2gpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dGhyZWFkU2FmZUhUTUxOYW1l
c01hdGNoKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6dGFnSWRGb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjptYXRjaCk6
CisgICAgICAgIChUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjpwcm9jZXNz
QXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaDoK
KworMjAxMy0wMy0wNyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKICAgICAgICAg
ZGlzcGxheTpub25lIGlmcmFtZXMgc2hvdWxkIG5vdCBidWlsZCByZW5kZXJpbmcgdHJlZXMKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzIzNgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGRlNThhMmE2MDI3NjJjZWUyNTVhODBmNTMwZDk3MzkwYmM5
MmJiMWQuLjY3MmQ3OGFlODY3NGI0ZGZlNWUzNDM0NzgyYjVkMmZkMjIyMmZhYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0xNTU2LDYgKzE1NTYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKICAgICBodG1sL3BhcnNlci9I
VE1MUGFyc2VyVGhyZWFkLmNwcAogICAgIGh0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVu
dExpc3QuY3BwCisgICAgaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwCiAgICAgaHRtbC9w
YXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAogICAgIGh0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5jcHAKICAgICBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5ZjQ1NmZkZGRkNjY4N2YxZGMyNjg3
ZmNlMTk4ZDVmODExN2ExNDI2Li4wMjg4YTNhZjJiY2ZmZjQyMDA0YTViNjAxMzdjOWUzYzIyN2E2
MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM2MjEsNiArMzYyMSw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVu
dGl0eVRhYmxlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5n
RWxlbWVudExpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0
dGluZ0VsZW1lbnRMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVu
dGlmaWVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElucHV0U3RyZWFtLmggXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCmluZGV4IDFiNjU1ZmJlMDU0MGRiNDNmYTFiYTg1ZTI1ZWVlZGI1N2M2MDc2NzguLjI0NGJj
YjFhMzBjZjc3YTcwNmIyMTJmZmRmZjU2ZjM4OTA5MzMwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNzM1
LDYgKzczNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvcGFyc2VyL0hUTUxFbnRpdHlQYXJz
ZXIuY3BwIFwKICAgICBodG1sL3BhcnNlci9IVE1MRW50aXR5U2VhcmNoLmNwcCBcCiAgICAgaHRt
bC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAgXAorICAgIGh0bWwvcGFyc2Vy
L0hUTUxJZGVudGlmaWVyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFy
c2VyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgXAogICAgIGh0
bWwvcGFyc2VyL0hUTUxQYXJzZXJPcHRpb25zLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZmNj
MWRiZTNiZDRhMmNmYzZjYzJlYjllN2E3NTVmMzk0MTk5NWMzZi4uNTM3MTVlNTExYjNjZTI2YTI2
Mjc4MjNlMDU3OGFmNzAyMGJmZTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUwOCw2ICszNTA4
LDggQEAKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MRW50aXR5VGFibGUuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAnLAogICAg
ICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuaCcsCisgICAg
ICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwJywKKyAgICAgICAgICAgICdo
dG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9I
VE1MSW5wdXRTdHJlYW0uaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFy
c2V0UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0
UGFyc2VyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCBlZGQwMDE1ZDRmNTJiNzNkMWVkZWYzNGQ5MzAzOGJhNGNiNmU1MDkzLi5jNjRiZWE5
NjYyMDg5N2FiZTUxNzJmZjNlNmYzYjNjZjYyYTEwNzhkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjUwOTAsNiArNjUwOTAsMTQgQEAKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
cGFyc2VyXEhUTUxJZGVudGlmaWVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEhUTUxJZGVudGlmaWVyLmgiCisJ
CQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1s
XHBhcnNlclxIVE1MSW5wdXRTdHJlYW0uaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGMxZWZmM2Jk
YzI3MDIxMTg1ZGYxMmUyYTUzZGE3YmY4ZGE4YTljYWMuLmVjNDgyMTc5M2EzNTJkM2U5NjMyYTIx
ZDgzNjNmM2MzYjgxMzdkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagpAQCAtNjkyMyw2ICs2OTIzLDcgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxFbnRpdHlQYXJzZXIuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTEVudGl0eVNlYXJjaC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MRm9ybWF0dGluZ0VsZW1l
bnRMaXN0LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhU
TUxJZGVuaXRpZmllci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBh
cnNlclxIVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caHRtbFxwYXJzZXJcSFRNTFBhcnNlcklkaW9tcy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MUGFyc2VyT3B0aW9ucy5jcHAiIC8+CkBAIC0x
MDM3OCw2ICsxMDM3OSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNl
clxIVE1MRW50aXR5UGFyc2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1s
XHBhcnNlclxIVE1MRW50aXR5U2VhcmNoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxodG1sXHBhcnNlclxIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MSWRlbnRpZmllci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTElucHV0U3RyZWFtLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MTWV0YUNoYXJzZXRQYXJz
ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxQYXJz
ZXJJZGlvbXMuaCIgLz4KQEAgLTExMTM5LDQgKzExMTQxLDQgQEAKICAgPEltcG9ydCBQcm9qZWN0
PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdy
b3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVj
dD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTY3OWY2MjI5
NzI0NDVkNjQxMzBiNTAxZWYwYjZkYzUwNDBjNDBmYi4uMTdjYWUzMTA1YjQyYTc5N2Q0MTMyNjcx
NjMwYTNjNzJiNzUxNDRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDM4MCw2ICs0MzgwLDggQEAKIAkJQTg4QUQ1MkYwOTUy
NEI5MjAwMUREMTk2IC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg1RDdBMkYwODc5RUJBOTAwNkE5MTcyIC8q
IFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovOyB9OwogCQlBODhERDQ4NzBCNDYyOUEzMDBDMDI5OTAg
LyogUGF0aFRyYXZlcnNhbFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBODhERDQ4NjBCNDYyOUEzMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0
YXRlLmggKi87IH07CiAJCUE4OERENDg5MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2Fs
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTg4REQ0ODgwQjQ2MjlCMDAwQzAyOTkwIC8qIFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgKi87IH07
CisJCUE4OTU3MDlGMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODk1NzA5RDE2RTlCRDU5
MDAxODRFNTUgLyogSFRNTElkZW50aWZpZXIuY3BwICovOyB9OworCQlBODk1NzBBMDE2RTlCRDU5
MDAxODRFNTUgLyogSFRNTElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4OTU3MDlFMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRp
Zmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUE4OTk0MzI4MEI0MjMzODgwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg5OTQzMjYwQjQyMzM4NzAwRDdDODAy
IC8qIEJpdG1hcEltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTg5OTQzMjkwQjQyMzM4ODAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4OTk0MzI3MEI0
MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgKi87IH07CiAJCUE4OUNDQzUyMEY0NEU5
ODEwMEI1REExMCAvKiBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODlDQ0M1MDBGNDRFOTgxMDBCNURB
MTAgLyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwICovOyB9OwpAQCAtMTE3OTIsNiAr
MTE3OTQsOCBAQAogCQlBODg2Q0RDMjE0RkJCQUEzMDBEMjc5RjQgLyogV29ya2VyQ29udGV4dFdl
YlNvY2tldC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV29ya2VyQ29udGV4dFdlYlNvY2tl
dC5pZGw7IHBhdGggPSBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyQ29udGV4dFdlYlNvY2tldC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4OERENDg2MEI0NjI5QTMwMEMwMjk5
MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGF0aFRyYXZlcnNhbFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4
OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF0aFRyYXZlcnNhbFN0YXRlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTg5NTcwOUQxNkU5QkQ1OTAwMTg0RTU1IC8qIEhU
TUxJZGVudGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhU
TUxJZGVudGlmaWVyLmNwcDsgcGF0aCA9IHBhcnNlci9IVE1MSWRlbnRpZmllci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4OTU3MDlFMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1M
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MSWRlbnRp
Zmllci5oOyBwYXRoID0gcGFyc2VyL0hUTUxJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE4OTk0MzI2MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaXRtYXBJbWFnZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBODk5NDMyNzBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1h
Z2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0bWFwSW1hZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODlDQ0M1MDBGNDRFOTgxMDBCNURB
MTAgLyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg4MjUsNiArMTg4MjksNyBAQAogCQk5N0MxRjU1MTEy
Mjg1NTg4MDBFREU2MTYgLyogcGFyc2VyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk5N0MxRjU1MjEyMjg1NUNCMDBFREU2MTcgLyogQXRvbWljSFRNTFRv
a2VuLmggKi8sCiAJCQkJOTdEQzY5RTkxNkI5RjUwRTAwOENGRDZGIC8qIEJhY2tncm91bmRIVE1M
SW5wdXRTdHJlYW0uY3BwICovLAogCQkJCTk3REM2OUVBMTZCOUY1MEUwMDhDRkQ2RiAvKiBCYWNr
Z3JvdW5kSFRNTElucHV0U3RyZWFtLmggKi8sCiAJCQkJOTc5REMwMzExNkE3OTkyMTAwODA3Nzk0
IC8qIEJhY2tncm91bmRIVE1MUGFyc2VyLmNwcCAqLywKQEAgLTE4ODQ3LDYgKzE4ODUyLDggQEAK
IAkJCQk5NzdCMzg1NDEyMjg4M0U5MDBCODFGRjggLyogSFRNTEVudGl0eVRhYmxlLmggKi8sCiAJ
CQkJOTc3QjM4NTUxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Qu
Y3BwICovLAogCQkJCTk3N0IzODU2MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MRm9ybWF0dGluZ0Vs
ZW1lbnRMaXN0LmggKi8sCisJCQkJQTg5NTcwOUQxNkU5QkQ1OTAwMTg0RTU1IC8qIEhUTUxJZGVu
dGlmaWVyLmNwcCAqLywKKwkJCQlBODk1NzA5RTE2RTlCRDU5MDAxODRFNTUgLyogSFRNTElkZW50
aWZpZXIuaCAqLywKIAkJCQk5N0JDODQ5QTEyMzcwQTRCMDAwQzYxNjEgLyogSFRNTElucHV0U3Ry
ZWFtLmggKi8sCiAJCQkJMkJFOEUyQzgxMkE1OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNl
dFBhcnNlci5jcHAgKi8sCiAJCQkJMkJFOEUyQzYxMkE1ODlFQzAwRkFENTUwIC8qIEhUTUxNZXRh
Q2hhcnNldFBhcnNlci5oICovLApAQCAtMTg4NzEsNyArMTg4NzgsNiBAQAogCQkJCTk3QzFGNTUy
MTIyODU1Q0IwMEVERTYxNiAvKiBIVE1MVG9rZW4uaCAqLywKIAkJCQk5NzdCMzg1RTEyMjg4M0U5
MDBCODFGRjggLyogSFRNTFRva2VuaXplci5jcHAgKi8sCiAJCQkJOTc3QjM4NUYxMjI4ODNFOTAw
QjgxRkY4IC8qIEhUTUxUb2tlbml6ZXIuaCAqLywKLQkJCQk5N0MxRjU1MjEyMjg1NUNCMDBFREU2
MTcgLyogQXRvbWljSFRNTFRva2VuLmggKi8sCiAJCQkJOTc3QjM3MjExMjI4NzIxNzAwQjgxRkY4
IC8qIEhUTUxUcmVlQnVpbGRlci5jcHAgKi8sCiAJCQkJOTc3QjM3MjIxMjI4NzIxNzAwQjgxRkY4
IC8qIEhUTUxUcmVlQnVpbGRlci5oICovLAogCQkJCTk3N0IzODYwMTIyODgzRTkwMEI4MUZGOCAv
KiBIVE1MVmlld1NvdXJjZVBhcnNlci5jcHAgKi8sCkBAIC0yNjY5Miw2ICsyNjY5OCw3IEBACiAJ
CQkJN0U2NkUyMzQxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdFQTMwRjZBMTZERkZFNzUwMDI1N0QwQiAvKiBKU1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVBVEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEODI4N0Y3MTZFNEEw
MzgwMDg2QkQwMCAvKiBIaXRUZXN0TG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE4OTU3
MEEwMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0yOTg5NSw2ICsyOTkwMiw3IEBACiAJCQkJN0U2NkUyMzMxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VBMzBGNjkx
NkRGRkU3NTAwMjU3RDBCIC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDgyODdGNjE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4OTU3MDlGMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1M
SWRlbnRpZmllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQXRvbWljSFRNTFRva2VuLmgKaW5kZXggMTM4MzcxMDA1NWM1ZWNkZDRiZGUwNDhlZjM2OWFm
ZjFmZTk0ZThmZi4uNjY1NWY0YTNkZDBlNmExNjdlMmZlYWM3M2MyNGZhNGIzN2Q4OWExOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmgKQEAgLTE4OSwx
MCArMTg5LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKLSAg
ICAgICAgICAgIG1fbmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAgICAgICAgIG1fbmFtZSA9IHRv
a2VuLmRhdGEoKS5hc1N0cmluZygpOwogICAgICAgICAgICAgbV9kb2N0eXBlRGF0YSA9IGFkb3B0
UHRyKG5ldyBEb2N0eXBlRGF0YSgpKTsKICAgICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFz
UHVibGljSWRlbnRpZmllciA9IHRydWU7Ci0gICAgICAgICAgICBhcHBlbmQobV9kb2N0eXBlRGF0
YS0+bV9wdWJsaWNJZGVudGlmaWVyLCB0b2tlbi5wdWJsaWNJZGVudGlmaWVyKCkpOworICAgICAg
ICAgICAgYXBwZW5kKG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllciwgdG9rZW4ucHVi
bGljSWRlbnRpZmllcigpLmFzU3RyaW5nKCkpOwogICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+
bV9oYXNTeXN0ZW1JZGVudGlmaWVyID0gdHJ1ZTsKICAgICAgICAgICAgIGFwcGVuZChtX2RvY3R5
cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIsIHRva2VuLnN5c3RlbUlkZW50aWZpZXIoKSk7CiAg
ICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzID0gdG9rZW4uZG9jdHlwZUZv
cmNlc1F1aXJrcygpOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
SFRNTFRva2VuOjpTdGFydFRhZzoKICAgICAgICAgICAgIG1fYXR0cmlidXRlcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHRva2VuLmF0dHJpYnV0ZXMoKS5zaXplKCkpOwogICAgICAgICAgICAgZm9y
IChWZWN0b3I8Q29tcGFjdEhUTUxUb2tlbjo6QXR0cmlidXRlPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSB0b2tlbi5hdHRyaWJ1dGVzKCkuYmVnaW4oKTsgaXQgIT0gdG9rZW4uYXR0cmlidXRlcygpLmVu
ZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBuYW1lKG51bGxBdG9t
LCBpdC0+bmFtZSwgbnVsbEF0b20pOworICAgICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgbmFt
ZShudWxsQXRvbSwgaXQtPm5hbWUuYXNTdHJpbmcoKSwgbnVsbEF0b20pOwogICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIE5eMiBmb3IgdGhlIG51bWJlciBvZiBhdHRyaWJ1dGVzLgog
ICAgICAgICAgICAgICAgIGlmICghZmluZEF0dHJpYnV0ZUluVmVjdG9yKG1fYXR0cmlidXRlcywg
bmFtZSkpCiAgICAgICAgICAgICAgICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRl
KG5hbWUsIGl0LT52YWx1ZSkpOwpAQCAtMjEwLDE3ICsyMTAsMjQgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIC8vIEZhbGwgdGhyb3VnaCEKICAgICAgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzoK
ICAgICAgICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0b2tlbi5zZWxmQ2xvc2luZygpOwotICAgICAg
ICAgICAgbV9uYW1lID0gdG9rZW4uZGF0YSgpOworICAgICAgICAgICAgbV9uYW1lID0gdG9rZW4u
ZGF0YSgpLmFzU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBIVE1M
VG9rZW46OkNvbW1lbnQ6Ci0gICAgICAgICAgICBtX2RhdGEgPSB0b2tlbi5kYXRhKCk7CisgICAg
ICAgICAgICBtX2RhdGEgPSB0b2tlbi5kYXRhKCkuYXNTdHJpbmcoKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOgotICAgICAgICAgICAgbV9l
eHRlcm5hbENoYXJhY3RlcnMgPSB0b2tlbi5kYXRhKCkuY2hhcmFjdGVycygpOwotICAgICAgICAg
ICAgbV9leHRlcm5hbENoYXJhY3RlcnNMZW5ndGggPSB0b2tlbi5kYXRhKCkubGVuZ3RoKCk7Cisg
ICAgICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6IHsKKyAgICAgICAgICAgIGNvbnN0IFN0
cmluZyYgc3RyaW5nID0gdG9rZW4uZGF0YSgpLmFzU3RyaW5nKCk7CisgICAgICAgICAgICBtX2V4
dGVybmFsQ2hhcmFjdGVycyA9IHN0cmluZy5jaGFyYWN0ZXJzKCk7CisgICAgICAgICAgICBtX2V4
dGVybmFsQ2hhcmFjdGVyc0xlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICAgICAgICAgIG1f
aXNBbGw4Qml0RGF0YSA9IHRva2VuLmlzQWxsOEJpdERhdGEoKTsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSB3b3VsZCBsaWtlIGEgc3Ryb25nZXIgQVNTRVJUIGhlcmU6CisgICAgICAgICAgICAv
LyBBU1NFUlQoc3RyaW5nLmlzOEJpdCgpID09IHRva2VuLmlzQWxsOEJpdERhdGEoKSk7CisgICAg
ICAgICAgICAvLyBidXQgY3VycmVudGx5IHRoYXQgZmlyZXMsIGxpa2VseSBkdWUgdG8gYnVncyBp
biBIVE1MVG9rZW5pemVyCisgICAgICAgICAgICAvLyBub3Qgc2V0dGluZyBpc0FsbDhCaXREYXRh
IGluIGFsbCB0aGUgdGltZXMgaXQgY291bGQuCisgICAgICAgICAgICBBU1NFUlQoIXRva2VuLmlz
QWxsOEJpdERhdGEoKSB8fCBzdHJpbmcuaXM4Qml0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKaW5kZXggODc0NDMyZTYw
MWNhOGY2YzcxOGZlNDBjNDkyMWQ5MTk2M2QxYjM2Yy4uMDViMmVlZjUyYWQ4MDk1ZmE1MTQ0ZmNh
NzdmNDAwYTYyMmFkZjhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
QmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcApAQCAtNjksNjUgKzY5LDY3IEBAIHN0YXRpYyB2b2lk
IGNoZWNrVGhhdFhTU0luZm9zQXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBYU1NJ
bmZvU3RyZWFtJiB4CiAKIHN0YXRpYyBib29sIHRva2VuRXhpdHNGb3JlaWduQ29udGVudChjb25z
dCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBjb3Bp
ZWQgZnJvbSBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQgYW5k
IGNoYW5nZWQgdG8gdXNlIHRocmVhZFNhZmVNYXRjaC4KLSAgICBjb25zdCBTdHJpbmcmIHRhZ05h
bWUgPSB0b2tlbi5kYXRhKCk7Ci0gICAgcmV0dXJuIHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBi
VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgYmlnVGFnKQotICAgICAg
ICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgYmxvY2txdW90ZVRhZykKLSAgICAgICAgfHwg
dGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJvZHlUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVN
YXRjaCh0YWdOYW1lLCBiclRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUs
IGNlbnRlclRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGNvZGVUYWcp
Ci0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBkZFRhZykKLSAgICAgICAgfHwg
dGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGRpdlRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1h
dGNoKHRhZ05hbWUsIGRsVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwg
ZHRUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBlbVRhZykKLSAgICAg
ICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGVtYmVkVGFnKQotICAgICAgICB8fCB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgaDFUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0
YWdOYW1lLCBoMlRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGgzVGFn
KQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaDRUYWcpCi0gICAgICAgIHx8
IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBoNVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1h
dGNoKHRhZ05hbWUsIGg2VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwg
aGVhZFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGhyVGFnKQotICAg
ICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaVRhZykKLSAgICAgICAgfHwgdGhyZWFk
U2FmZU1hdGNoKHRhZ05hbWUsIGltZ1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRh
Z05hbWUsIGxpVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbGlzdGlu
Z1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG1lbnVUYWcpCi0gICAg
ICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBtZXRhVGFnKQotICAgICAgICB8fCB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgbm9iclRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIG9sVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgcFRh
ZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHByZVRhZykKLSAgICAgICAg
fHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHJ1YnlUYWcpCi0gICAgICAgIHx8IHRocmVhZFNh
ZmVNYXRjaCh0YWdOYW1lLCBzVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFt
ZSwgc21hbGxUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBzcGFuVGFn
KQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc3Ryb25nVGFnKQotICAgICAg
ICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc3RyaWtlVGFnKQotICAgICAgICB8fCB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgc3ViVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2go
dGFnTmFtZSwgc3VwVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgdGFi
bGVUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0dFRhZykKLSAgICAg
ICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHVUYWcpCi0gICAgICAgIHx8IHRocmVhZFNh
ZmVNYXRjaCh0YWdOYW1lLCB1bFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05h
bWUsIHZhclRhZykKLSAgICAgICAgfHwgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBmb250VGFn
KSAmJiAodG9rZW4uZ2V0QXR0cmlidXRlSXRlbShjb2xvckF0dHIpIHx8IHRva2VuLmdldEF0dHJp
YnV0ZUl0ZW0oZmFjZUF0dHIpIHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oc2l6ZUF0dHIpKSk7
CisgICAgLy8gRklYTUU6IFRoaXMgaXMgY29waWVkIGZyb20gSFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50IGFuZCBjaGFuZ2VkIHRvIHVzZSB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2guCisgICAgY29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUgPSB0b2tlbi5k
YXRhKCk7CisgICAgcmV0dXJuIHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiVGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYmlnVGFnKQor
ICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYmxvY2txdW90ZVRh
ZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJvZHlUYWcp
CisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiclRhZykKKyAg
ICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGNlbnRlclRhZykKKyAg
ICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGNvZGVUYWcpCisgICAg
ICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBkZFRhZykKKyAgICAgICAg
fHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGRpdlRhZykKKyAgICAgICAgfHwg
dGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGRsVGFnKQorICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZHRUYWcpCisgICAgICAgIHx8IHRocmVhZFNh
ZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBlbVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIGVtYmVkVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2godGFnTmFtZSwgaDFUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFt
ZXNNYXRjaCh0YWdOYW1lLCBoMlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01h
dGNoKHRhZ05hbWUsIGgzVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgaDRUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdO
YW1lLCBoNVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUs
IGg2VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaGVh
ZFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGhyVGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaVRhZykKKyAg
ICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGltZ1RhZykKKyAgICAg
ICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGxpVGFnKQorICAgICAgICB8
fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbGlzdGluZ1RhZykKKyAgICAgICAg
fHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIG1lbnVUYWcpCisgICAgICAgIHx8
IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBtZXRhVGFnKQorICAgICAgICB8fCB0
aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbm9iclRhZykKKyAgICAgICAgfHwgdGhy
ZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIG9sVGFnKQorICAgICAgICB8fCB0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgcFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIHByZVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIHJ1YnlUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFt
ZXNNYXRjaCh0YWdOYW1lLCBzVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0
Y2godGFnTmFtZSwgc21hbGxUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCBzcGFuVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgc3Ryb25nVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgc3RyaWtlVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgc3ViVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgc3VwVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgdGFibGVUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCB0dFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHVU
YWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB1bFRhZykK
KyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHZhclRhZykKKyAg
ICAgICAgfHwgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBmb250VGFnKSAmJiAo
dG9rZW4uZ2V0QXR0cmlidXRlSXRlbShjb2xvckF0dHIpIHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0
ZW0oZmFjZUF0dHIpIHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oc2l6ZUF0dHIpKSk7CiB9CiAK
IHN0YXRpYyBib29sIHRva2VuRXhpdHNTVkcoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4p
CiB7Ci0gICAgY29uc3QgU3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwotICAgIHJldHVy
biBlcXVhbElnbm9yaW5nQ2FzZSh0YWdOYW1lLCBTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZy5s
b2NhbE5hbWUoKSk7CisgICAgLy8gRklYTUU6IEl0J3MgdmVyeSBmcmFnaWxlIHRoYXQgd2Ugc3Bl
Y2lhbCBjYXNlIGZvcmVpZ25PYmplY3QgaGVyZSB0byBiZSBjYXNlLWluc2Vuc2l0aXZlLgorICAg
IC8vIEZJWE1FOiBVc2luZyBDYXNlRm9sZGluZ0hhc2g6OmVxdWFsIGluc3RlYWQgb2YgZXF1YWxJ
Z25vcmluZ0Nhc2UsIGFzIGVxdWFsSWdub3JpbmdDYXNlCisgICAgLy8gd2FudHMgbm9uLWNvbnN0
IFN0cmluZ0ltcGwqIChldmVuIHRob3VnaCBpdCBuZXZlciBtb2RpZmllcyB0aGVtKS4KKyAgICBy
ZXR1cm4gQ2FzZUZvbGRpbmdIYXNoOjplcXVhbCh0b2tlbi5kYXRhKCkuYXNTdHJpbmdJbXBsKCks
IFNWR05hbWVzOjpmb3JlaWduT2JqZWN0VGFnLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKIHN0
YXRpYyBib29sIHRva2VuRXhpdHNNYXRoKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQog
ewogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGNvcGllZCBmcm9tIEhUTUxFbGVtZW50U3RhY2s6Omlz
TWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQgYW5kIGNoYW5nZWQgdG8gdXNlIHRocmVhZFNhZmVN
YXRjaC4KLSAgICBjb25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgY29u
c3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CiAgICAgcmV0dXJuIHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6bWlUYWcpCiAgICAgICAgIHx8IHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6bW9UYWcpCiAgICAgICAgIHx8IHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6bW5UYWcpCkBAIC0xOTYsNyArMTk4
LDcgQEAgdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6bWFya0VuZE9mRmlsZSgpCiBib29sIEJh
Y2tncm91bmRIVE1MUGFyc2VyOjpzaW11bGF0ZVRyZWVCdWlsZGVyKGNvbnN0IENvbXBhY3RIVE1M
VG9rZW4mIHRva2VuKQogewogICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFy
dFRhZykgewotICAgICAgICBjb25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7Cisg
ICAgICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwogICAg
ICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIFNWR05hbWVzOjpzdmdUYWcpKQogICAg
ICAgICAgICAgbV9uYW1lc3BhY2VTdGFjay5hcHBlbmQoU1ZHKTsKICAgICAgICAgaWYgKHRocmVh
ZFNhZmVNYXRjaCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6bWF0aFRhZykpCkBAIC0yMDgsMzAgKzIx
MCwzMCBAQCBib29sIEJhY2tncm91bmRIVE1MUGFyc2VyOjpzaW11bGF0ZVRyZWVCdWlsZGVyKGNv
bnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgbV9uYW1lc3BhY2VTdGFj
ay5hcHBlbmQoSFRNTCk7CiAgICAgICAgIGlmICghaW5Gb3JlaWduQ29udGVudCgpKSB7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgY29weSBvZiBUb2tlbml6ZXI6OnVwZGF0
ZVN0YXRlRm9yIHdoaWNoIHVzZXMgdGhyZWFkU2FmZU1hdGNoZXMuCi0gICAgICAgICAgICBpZiAo
dGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHRleHRhcmVhVGFnKSB8fCB0aHJlYWRTYWZlTWF0Y2go
dGFnTmFtZSwgdGl0bGVUYWcpKQorICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCB0ZXh0YXJlYVRhZykgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRh
Z05hbWUsIHRpdGxlVGFnKSkKICAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUo
SFRNTFRva2VuaXplcjo6UkNEQVRBU3RhdGUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFk
U2FmZU1hdGNoKHRhZ05hbWUsIHBsYWludGV4dFRhZykpCisgICAgICAgICAgICBlbHNlIGlmICh0
aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgcGxhaW50ZXh0VGFnKSkKICAgICAgICAg
ICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UExBSU5URVhUU3Rh
dGUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHNjcmlw
dFRhZykpCisgICAgICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgc2NyaXB0VGFnKSkKICAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUo
SFRNTFRva2VuaXplcjo6U2NyaXB0RGF0YVN0YXRlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBzdHlsZVRhZykKLSAgICAgICAgICAgICAgICB8fCB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgaWZyYW1lVGFnKQotICAgICAgICAgICAgICAgIHx8IHRocmVh
ZFNhZmVNYXRjaCh0YWdOYW1lLCB4bXBUYWcpCi0gICAgICAgICAgICAgICAgfHwgKHRocmVhZFNh
ZmVNYXRjaCh0YWdOYW1lLCBub2VtYmVkVGFnKSAmJiBtX29wdGlvbnMucGx1Z2luc0VuYWJsZWQp
Ci0gICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG5vZnJhbWVzVGFn
KQotICAgICAgICAgICAgICAgIHx8ICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbm9zY3JpcHRU
YWcpICYmIG1fb3B0aW9ucy5zY3JpcHRFbmFibGVkKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzdHlsZVRhZykKKyAgICAgICAgICAgICAg
ICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaWZyYW1lVGFnKQorICAgICAg
ICAgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB4bXBUYWcpCisg
ICAgICAgICAgICAgICAgfHwgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBub2Vt
YmVkVGFnKSAmJiBtX29wdGlvbnMucGx1Z2luc0VuYWJsZWQpCisgICAgICAgICAgICAgICAgfHwg
dGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIG5vZnJhbWVzVGFnKQorICAgICAgICAg
ICAgICAgIHx8ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbm9zY3JpcHRUYWcp
ICYmIG1fb3B0aW9ucy5zY3JpcHRFbmFibGVkKSkKICAgICAgICAgICAgICAgICBtX3Rva2VuaXpl
ci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkFXVEVYVFN0YXRlKTsKICAgICAgICAgfQogICAg
IH0KIAogICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpIHsKLSAgICAg
ICAgY29uc3QgU3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOworICAgICAgICBjb25zdCBI
VE1MSWRlbnRpZmllciYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKICAgICAgICAgaWYgKChtX25h
bWVzcGFjZVN0YWNrLmxhc3QoKSA9PSBTVkcgJiYgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIFNW
R05hbWVzOjpzdmdUYWcpKQogICAgICAgICAgICAgfHwgKG1fbmFtZXNwYWNlU3RhY2subGFzdCgp
ID09IE1hdGhNTCAmJiB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1hdGhU
YWcpKQogICAgICAgICAgICAgfHwgKG1fbmFtZXNwYWNlU3RhY2suY29udGFpbnMoU1ZHKSAmJiBt
X25hbWVzcGFjZVN0YWNrLmxhc3QoKSA9PSBIVE1MICYmIHRva2VuRXhpdHNTVkcodG9rZW4pKQog
ICAgICAgICAgICAgfHwgKG1fbmFtZXNwYWNlU3RhY2suY29udGFpbnMoTWF0aE1MKSAmJiBtX25h
bWVzcGFjZVN0YWNrLmxhc3QoKSA9PSBIVE1MICYmIHRva2VuRXhpdHNNYXRoKHRva2VuKSkpCiAg
ICAgICAgICAgICBtX25hbWVzcGFjZVN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgaWYgKHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBzY3JpcHRUYWcpKSB7CisgICAgICAgIGlmICh0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkgewogICAgICAgICAgICAgaWYg
KCFpbkZvcmVpZ25Db250ZW50KCkpCiAgICAgICAgICAgICAgICAgbV90b2tlbml6ZXItPnNldFN0
YXRlKEhUTUxUb2tlbml6ZXI6OkRhdGFTdGF0ZSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAK
aW5kZXggMGM2NmZjMWFjOWZmYTY0OWY1M2JkMTg0MzQ2M2FiMjZlNDJmZGU1MS4uYTYwYjkwY2Rk
NTg0MTRjMzNiZTM5ZWM0YjQ1YWQ3MmQzZjNiNmQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkNTU1ByZWxvYWRTY2FubmVyLmgiCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJl
cXVlc3RJbml0aWF0b3JzLmgiCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJIVE1MUGFyc2VySWRpb21zLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY0LDE2ICs2
NSwxOSBAQCB2b2lkIENTU1ByZWxvYWRTY2FubmVyOjpzY2FuKGNvbnN0IEhUTUxUb2tlbjo6RGF0
YVZlY3RvciYgZGF0YSwgUHJlbG9hZFJlcXVlc3RTdAogICAgIHNjYW5Db21tb24oZGF0YS5kYXRh
KCksIGRhdGEuZGF0YSgpICsgZGF0YS5zaXplKCksIHJlcXVlc3RzKTsKIH0KIAotdm9pZCBDU1NQ
cmVsb2FkU2Nhbm5lcjo6c2Nhbihjb25zdCBTdHJpbmcmIGRhdGEsIFByZWxvYWRSZXF1ZXN0U3Ry
ZWFtJiByZXF1ZXN0cykKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCit2b2lkIENT
U1ByZWxvYWRTY2FubmVyOjpzY2FuKGNvbnN0IEhUTUxJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBQ
cmVsb2FkUmVxdWVzdFN0cmVhbSYgcmVxdWVzdHMpCiB7Ci0gICAgaWYgKGRhdGEuaXM4Qml0KCkp
IHsKLSAgICAgICAgY29uc3QgTENoYXIqIGJlZ2luID0gZGF0YS5jaGFyYWN0ZXJzOCgpOwotICAg
ICAgICBzY2FuQ29tbW9uKGJlZ2luLCBiZWdpbiArIGRhdGEubGVuZ3RoKCksIHJlcXVlc3RzKTsK
KyAgICBjb25zdCBTdHJpbmdJbXBsKiBkYXRhID0gaWRlbnRpZmllci5hc1N0cmluZ0ltcGwoKTsK
KyAgICBpZiAoZGF0YS0+aXM4Qml0KCkpIHsKKyAgICAgICAgY29uc3QgTENoYXIqIGJlZ2luID0g
ZGF0YS0+Y2hhcmFjdGVyczgoKTsKKyAgICAgICAgc2NhbkNvbW1vbihiZWdpbiwgYmVnaW4gKyBk
YXRhLT5sZW5ndGgoKSwgcmVxdWVzdHMpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNv
bnN0IFVDaGFyKiBiZWdpbiA9IGRhdGEuY2hhcmFjdGVyczE2KCk7Ci0gICAgc2NhbkNvbW1vbihi
ZWdpbiwgYmVnaW4gKyBkYXRhLmxlbmd0aCgpLCByZXF1ZXN0cyk7CisgICAgY29uc3QgVUNoYXIq
IGJlZ2luID0gZGF0YS0+Y2hhcmFjdGVyczE2KCk7CisgICAgc2NhbkNvbW1vbihiZWdpbiwgYmVn
aW4gKyBkYXRhLT5sZW5ndGgoKSwgcmVxdWVzdHMpOwogfQorI2VuZGlmCiAKIGlubGluZSB2b2lk
IENTU1ByZWxvYWRTY2FubmVyOjp0b2tlbml6ZShVQ2hhciBjKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmgKaW5kZXggNGI2OWJjMzIzNTZiNGMy
MTgxMzNmYjEzZGNhNDIxMGZiM2I2ZjZhNC4uOWMyMDkxMDExZDA3MjdlOWVjNjVmOTdkNWNhOWQ3
MDA4NWE3MTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJl
bG9hZFNjYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2Fk
U2Nhbm5lci5oCkBAIC0zMyw2ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgSFRNTElkZW50aWZpZXI7CisKIGNsYXNzIENTU1ByZWxvYWRTY2FubmVyIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShDU1NQcmVsb2FkU2Nhbm5lcik7CiBwdWJsaWM6CkBAIC00Miw3ICs0
NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICB2b2lkIHNjYW4oY29uc3Qg
SFRNTFRva2VuOjpEYXRhVmVjdG9yJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mKTsKLSAgICB2b2lk
IHNjYW4oY29uc3QgU3RyaW5nJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mKTsKKyAgICB2b2lkIHNj
YW4oY29uc3QgSFRNTElkZW50aWZpZXImLCBQcmVsb2FkUmVxdWVzdFN0cmVhbSYpOwogCiBwcml2
YXRlOgogICAgIGVudW0gU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9D
b21wYWN0SFRNTFRva2VuLmNwcAppbmRleCBiNDc4OGEwN2U1YTA2ZjIxZDQ1ODA5ZWFhZjdiOTZl
YTE4ZDgxMDM0Li43NmRkYzZiNmM3NmUzYTU1MGM0NmVjZWQwNjkwYzkwOGEyNTNkN2Q5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcApAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzQ29t
cGFjdEhUTUxUb2tlbiAgewogICAgIHVuc2lnbmVkIGJpdGZpZWxkczsKLSAgICBTdHJpbmcgbmFt
ZTsKKyAgICBIVE1MSWRlbnRpZmllciBkYXRhOwogICAgIFZlY3RvcjxBdHRyaWJ1dGU+IHZlY3Rv
cjsKICAgICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uOwogfTsKQEAgLTU2LDEwICs1NiwxMCBA
QCBDb21wYWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tlbiogdG9r
ZW4sIGNvbnN0IFRleHRQb3NpdGlvbiYgdAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBIVE1MVG9rZW46OkRPQ1RZUEU6IHsKLSAgICAgICAg
bV9kYXRhID0gU3RyaW5nKHRva2VuLT5uYW1lKCkpOworICAgICAgICBtX2RhdGEgPSBIVE1MSWRl
bnRpZmllcih0b2tlbi0+bmFtZSgpLCBMaWtlbHk4Qml0KTsKICAgICAgICAgLy8gVGhlcmUgaXMg
b25seSAxIERPQ1RZUEUgdG9rZW4gcGVyIGRvY3VtZW50LCBzbyB0byBhdm9pZCBpbmNyZWFzaW5n
IHRoZQogICAgICAgICAvLyBzaXplIG9mIENvbXBhY3RIVE1MVG9rZW4sIHdlIGp1c3QgdXNlIHRo
ZSBtX2F0dHJpYnV0ZXMgdmVjdG9yLgotICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJp
YnV0ZShTdHJpbmcodG9rZW4tPnB1YmxpY0lkZW50aWZpZXIoKSksIFN0cmluZyh0b2tlbi0+c3lz
dGVtSWRlbnRpZmllcigpKSkpOworICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0
ZShIVE1MSWRlbnRpZmllcih0b2tlbi0+cHVibGljSWRlbnRpZmllcigpLCBMaWtlbHk4Qml0KSwg
U3RyaW5nKHRva2VuLT5zeXN0ZW1JZGVudGlmaWVyKCkpKSk7CiAgICAgICAgIG1fZG9jdHlwZUZv
cmNlc1F1aXJrcyA9IHRva2VuLT5mb3JjZVF1aXJrcygpOwogICAgICAgICBicmVhazsKICAgICB9
CkBAIC02OCwxOSArNjgsMTcgQEAgQ29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbihj
b25zdCBIVE1MVG9rZW4qIHRva2VuLCBjb25zdCBUZXh0UG9zaXRpb24mIHQKICAgICBjYXNlIEhU
TUxUb2tlbjo6U3RhcnRUYWc6CiAgICAgICAgIG1fYXR0cmlidXRlcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHRva2VuLT5hdHRyaWJ1dGVzKCkuc2l6ZSgpKTsKICAgICAgICAgZm9yIChWZWN0b3I8
SFRNTFRva2VuOjpBdHRyaWJ1dGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRva2VuLT5hdHRyaWJ1
dGVzKCkuYmVnaW4oKTsgaXQgIT0gdG9rZW4tPmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytpdCkKLSAg
ICAgICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKFN0cmluZ0ltcGw6OmNyZWF0
ZThCaXRJZlBvc3NpYmxlKGl0LT5uYW1lKSwgU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2li
bGUoaXQtPnZhbHVlKSkpOworICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1
dGUoSFRNTElkZW50aWZpZXIoaXQtPm5hbWUsIExpa2VseThCaXQpLCBTdHJpbmdJbXBsOjpjcmVh
dGU4Qml0SWZQb3NzaWJsZShpdC0+dmFsdWUpKSk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCEK
ICAgICBjYXNlIEhUTUxUb2tlbjo6RW5kVGFnOgogICAgICAgICBtX3NlbGZDbG9zaW5nID0gdG9r
ZW4tPnNlbGZDbG9zaW5nKCk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCEKICAgICBjYXNlIEhU
TUxUb2tlbjo6Q29tbWVudDoKLSAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOgotICAgICAg
ICBpZiAodG9rZW4tPmlzQWxsOEJpdERhdGEoKSkgewotICAgICAgICAgICAgbV9kYXRhID0gU3Ry
aW5nOjptYWtlOEJpdEZyb20xNkJpdFNvdXJjZSh0b2tlbi0+ZGF0YSgpKTsKLSAgICAgICAgICAg
IG1faXNBbGw4Qml0RGF0YSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9k
YXRhID0gU3RyaW5nKHRva2VuLT5kYXRhKCkpOworICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0
ZXI6IHsKKyAgICAgICAgbV9pc0FsbDhCaXREYXRhID0gdG9rZW4tPmlzQWxsOEJpdERhdGEoKTsK
KyAgICAgICAgbV9kYXRhID0gSFRNTElkZW50aWZpZXIodG9rZW4tPmRhdGEoKSwgdG9rZW4tPmlz
QWxsOEJpdERhdGEoKSA/IEZvcmNlOEJpdCA6IEZvcmNlMTZCaXQpOwogICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFj
dEhUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tl
bi5oCmluZGV4IGM4OThmNmU2ZjE0ZWM4OTEyYjMyZmExMzE1Yzc3OGE4N2UzOTg5ODMuLmZmYTRh
ZTQzY2QxZjNlYmYwZTNlYmMzZTg5ZWE0OTRmNjJmNTMzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKIAorI2luY2x1ZGUgIkhUTUxJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00NCwxMyArNDUsMTMgQEAgY2xhc3MgUXVhbGlm
aWVkTmFtZTsKIGNsYXNzIENvbXBhY3RIVE1MVG9rZW4gewogcHVibGljOgogICAgIHN0cnVjdCBB
dHRyaWJ1dGUgewotICAgICAgICBBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQorICAgICAgICBBdHRyaWJ1dGUoY29uc3QgSFRNTElkZW50aWZpZXImIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgICAgICA6IG5hbWUobmFtZSkKICAgICAg
ICAgICAgICwgdmFsdWUodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFN0
cmluZyBuYW1lOworICAgICAgICBIVE1MSWRlbnRpZmllciBuYW1lOwogICAgICAgICBTdHJpbmcg
dmFsdWU7CiAgICAgfTsKIApAQCAtNTksNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Nh
ZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdDsKIAogICAgIEhUTUxUb2tlbjo6VHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRva2VuOjpUeXBlPihtX3R5cGUp
OyB9Ci0gICAgY29uc3QgU3RyaW5nJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9Cisg
ICAgY29uc3QgSFRNTElkZW50aWZpZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0K
ICAgICBib29sIHNlbGZDbG9zaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zZWxmQ2xvc2luZzsgfQog
ICAgIGJvb2wgaXNBbGw4Qml0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbGw4Qml0RGF0YTsg
fQogICAgIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1
cm4gbV9hdHRyaWJ1dGVzOyB9CkBAIC02OCw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRo
ZXJlIGlzIG9ubHkgMSBET0NUWVBFIHRva2VuIHBlciBkb2N1bWVudCwgc28gdG8gYXZvaWQgaW5j
cmVhc2luZyB0aGUKICAgICAvLyBzaXplIG9mIENvbXBhY3RIVE1MVG9rZW4sIHdlIGp1c3QgdXNl
IHRoZSBtX2F0dHJpYnV0ZXMgdmVjdG9yLgotICAgIGNvbnN0IFN0cmluZyYgcHVibGljSWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlc1swXS5uYW1lOyB9CisgICAgY29uc3Qg
SFRNTElkZW50aWZpZXImIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJp
YnV0ZXNbMF0ubmFtZTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlc1swXS52YWx1ZTsgfQogICAgIGJvb2wgZG9jdHlwZUZv
cmNlc1F1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdHlwZUZvcmNlc1F1aXJrczsgfQogCkBA
IC03OCw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pc0FsbDhCaXREYXRhIDog
MTsKICAgICB1bnNpZ25lZCBtX2RvY3R5cGVGb3JjZXNRdWlya3M6IDE7CiAKLSAgICBTdHJpbmcg
bV9kYXRhOyAvLyAibmFtZSIsICJjaGFyYWN0ZXJzIiwgb3IgImRhdGEiIGRlcGVuZGluZyBvbiBt
X3R5cGUKKyAgICBIVE1MSWRlbnRpZmllciBtX2RhdGE7IC8vICJuYW1lIiwgImNoYXJhY3RlcnMi
LCBvciAiZGF0YSIgZGVwZW5kaW5nIG9uIG1fdHlwZQogICAgIFZlY3RvcjxBdHRyaWJ1dGU+IG1f
YXR0cmlidXRlczsKICAgICBUZXh0UG9zaXRpb24gbV90ZXh0UG9zaXRpb247CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXgg
NmVjMTY4NjJlYzY4YzYwZGU1NTU0ZTQ1OTIwZGZjYmNjNzgwNjUxMy4uMjFmZmQ4ZDU4MTBhYzY5
NjJhZjhmZjQzODY5Y2VhZDY0MGYwZDVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkhUTUxQYXJzZXJTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJIVE1MUGFyc2Vy
VGhyZWFkLmgiCkBAIC02NTcsNiArNjU4LDggQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnN0
YXJ0QmFja2dyb3VuZFBhcnNlcigpCiAgICAgQVNTRVJUKCFtX2hhdmVCYWNrZ3JvdW5kUGFyc2Vy
KTsKICAgICBtX2hhdmVCYWNrZ3JvdW5kUGFyc2VyID0gdHJ1ZTsKIAorICAgIEhUTUxJZGVudGlm
aWVyOjppbml0KCk7CisKICAgICBSZWZQdHI8V2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5kSFRNTFBh
cnNlcj4gPiByZWZlcmVuY2UgPSBXZWFrUmVmZXJlbmNlPEJhY2tncm91bmRIVE1MUGFyc2VyPjo6
Y3JlYXRlVW5ib3VuZCgpOwogICAgIG1fYmFja2dyb3VuZFBhcnNlciA9IFdlYWtQdHI8QmFja2dy
b3VuZEhUTUxQYXJzZXI+KHJlZmVyZW5jZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxJZGVudGlmaWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmNjNjc3MzBlZGQxNDVlZjMwNmY4
NmYyYTVmMzQyY2QyZWZiNzkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKKworI2luY2x1ZGUgIkhUTUxJ
ZGVudGlmaWVyLmgiCisKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CisKK3R5cGVkZWYgc3RkOjpwYWlyPHVuc2lnbmVkLCBTdHJpbmdJbXBsKj4gSWRl
bnRpZmllckVudHJ5OwordHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBJZGVudGlmaWVyRW50cnks
IEFscmVhZHlIYXNoZWQ+IElkZW50aWZpZXJUYWJsZTsKKwordW5zaWduZWQgSFRNTElkZW50aWZp
ZXI6Om1heE5hbWVMZW5ndGggPSAwOworCitzdGF0aWMgSWRlbnRpZmllclRhYmxlJiBpZGVudGlm
aWVyVGFibGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSWRlbnRpZmllclRhYmxlLCB0
YWJsZSwgKCkpOworICAgIHJldHVybiB0YWJsZTsKK30KKworI2lmbmRlZiBOREVCVUcKK2Jvb2wg
SFRNTElkZW50aWZpZXI6Omhhc0luZGV4KGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZykKK3sKKyAg
ICBjb25zdCBJZGVudGlmaWVyVGFibGUmIHRhYmxlID0gaWRlbnRpZmllclRhYmxlKCk7CisgICAg
cmV0dXJuIHRhYmxlLmNvbnRhaW5zKHN0cmluZy0+aGFzaCgpKTsKK30KKyNlbmRpZgorCit1bnNp
Z25lZCBIVE1MSWRlbnRpZmllcjo6ZmluZEluZGV4KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgpCit7CisgICAgLy8gY29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMgaXMg
dGhlIGZ1bmN0aW9uIFN0cmluZ0ltcGw6Omhhc2goKSB1c2VzLgorICAgIHVuc2lnbmVkIGhhc2gg
PSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnMsIGxl
bmd0aCk7CisgICAgY29uc3QgSWRlbnRpZmllclRhYmxlJiB0YWJsZSA9IGlkZW50aWZpZXJUYWJs
ZSgpOworICAgIEFTU0VSVCghdGFibGUuaXNFbXB0eSgpKTsKKworICAgIElkZW50aWZpZXJUYWJs
ZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0YWJsZS5maW5kKGhhc2gpOworICAgIGlmIChpdCA9PSB0
YWJsZS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRJbmRleDsKKyAgICByZXR1cm4gaXQt
PnZhbHVlLmZpcnN0OworfQorCitjb25zdCB1bnNpZ25lZCBrSFRNTE5hbWVzSW5kZXhPZmZzZXQg
PSAwOworY29uc3QgdW5zaWduZWQga0hUTUxBdHRyc0luZGV4T2Zmc2V0ID0gMTAwMDsKK0NPTVBJ
TEVfQVNTRVJUKGtIVE1MQXR0cnNJbmRleE9mZnNldCA+IEhUTUxUYWdzQ291bnQsIGtIVE1MQXR0
cnNJbmRleE9mZnNldF9zaG91bGRfYmVfbGFyZ2VyX3RoYW5fSFRNTFRhZ3NDb3VudCk7CisKK3N0
YXRpYyBjb25zdCBTdHJpbmcmIG5hbWVGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICB1
bnNpZ25lZCBhZGp1c3RlZEluZGV4OworICAgIFF1YWxpZmllZE5hbWUqKiBuYW1lczsKKyAgICBp
ZiAoaW5kZXggPCBrSFRNTEF0dHJzSW5kZXhPZmZzZXQpIHsKKyAgICAgICAgQVNTRVJUKGluZGV4
IDwga0hUTUxOYW1lc0luZGV4T2Zmc2V0ICsgSFRNTFRhZ3NDb3VudCk7CisgICAgICAgIGFkanVz
dGVkSW5kZXggPSBpbmRleCAtIGtIVE1MTmFtZXNJbmRleE9mZnNldDsKKyAgICAgICAgbmFtZXMg
PSBnZXRIVE1MVGFncygpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IGtI
VE1MQXR0cnNJbmRleE9mZnNldCArIEhUTUxBdHRyc0NvdW50KTsKKyAgICAgICAgYWRqdXN0ZWRJ
bmRleCA9IGluZGV4IC0ga0hUTUxBdHRyc0luZGV4T2Zmc2V0OworICAgICAgICBuYW1lcyA9IGdl
dEhUTUxBdHRycygpOworICAgIH0KKyAgICAvLyBIVE1MQXR0cnMgYW5kIEhUTUxOYW1lcyBtYXkg
aGF2ZSBjb2xsaXNpb25zLCBidXQKKyAgICAvLyB3ZSBzaG91bGRuJ3QgY2FyZSB3aGljaCB3ZSBl
bmRlZCB1cCBzdG9yaW5nLCBzaW5jZSB0aGVpcgorICAgIC8vIGNvbXBvbmVudHMgYXJlIGFsbCBB
dG9taWNTdHJpbmdzIGFuZCBzaG91bGQgdXNlIHRoZSBzYW1lCisgICAgLy8gdW5kZXJseWluZyBT
dHJpbmdJbXBsKi4KKyAgICByZXR1cm4gbmFtZXNbYWRqdXN0ZWRJbmRleF0tPmxvY2FsTmFtZSgp
LnN0cmluZygpOworfQorCitjb25zdCBTdHJpbmcmIEhUTUxJZGVudGlmaWVyOjphc1N0cmluZygp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pbmRleCAh
PSBpbnZhbGlkSW5kZXgpCisgICAgICAgIHJldHVybiBuYW1lRm9ySW5kZXgobV9pbmRleCk7Cisg
ICAgcmV0dXJuIG1fc3RyaW5nOworfQorCitjb25zdCBTdHJpbmdJbXBsKiBIVE1MSWRlbnRpZmll
cjo6YXNTdHJpbmdJbXBsKCkgY29uc3QKK3sKKyAgICBpZiAobV9pbmRleCAhPSBpbnZhbGlkSW5k
ZXgpCisgICAgICAgIHJldHVybiBuYW1lRm9ySW5kZXgobV9pbmRleCkuaW1wbCgpOworICAgIHJl
dHVybiBtX3N0cmluZy5pbXBsKCk7Cit9CisKK3ZvaWQgSFRNTElkZW50aWZpZXI6OmFkZE5hbWVz
KFF1YWxpZmllZE5hbWUqKiBuYW1lcywgdW5zaWduZWQgbmFtZXNDb3VudCwgdW5zaWduZWQgaW5k
ZXhPZmZzZXQpCit7CisgICAgSWRlbnRpZmllclRhYmxlJiB0YWJsZSA9IGlkZW50aWZpZXJUYWJs
ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYW1lc0NvdW50OyArK2kpIHsKKyAg
ICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IG5hbWVzW2ldLT5sb2NhbE5hbWUoKS5pbXBsKCk7Cisg
ICAgICAgIHVuc2lnbmVkIGhhc2ggPSBuYW1lLT5oYXNoKCk7CisgICAgICAgIHVuc2lnbmVkIGlu
ZGV4ID0gaSArIGluZGV4T2Zmc2V0OworICAgICAgICBJZGVudGlmaWVyRW50cnkgZW50cnkoaW5k
ZXgsIG5hbWUpOworICAgICAgICBJZGVudGlmaWVyVGFibGU6OkFkZFJlc3VsdCBhZGRSZXN1bHQg
PSB0YWJsZS5hZGQoaGFzaCwgZW50cnkpOworICAgICAgICBtYXhOYW1lTGVuZ3RoID0gc3RkOjpt
YXgobWF4TmFtZUxlbmd0aCwgbmFtZS0+bGVuZ3RoKCkpOworICAgICAgICAvLyBFbnN1cmUgd2Un
cmUgdXNpbmcgdGhlIHNhbWUgaGFzaGluZyBhbGdvcml0aG0gdG8gZ2V0IGFuZCBzZXQuCisgICAg
ICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCAhYWRkUmVzdWx0LmlzTmV3RW50cnkgfHwgSFRN
TElkZW50aWZpZXI6OmZpbmRJbmRleChuYW1lLT5jaGFyYWN0ZXJzKCksIG5hbWUtPmxlbmd0aCgp
KSA9PSBpbmRleCk7CisgICAgICAgIC8vIFdlIGV4cGVjdCBzb21lIGhhc2ggY29sbGlzaW9ucywg
YnV0IG9ubHkgZm9yIGlkZW50aWNhbCBzdHJpbmdzLgorICAgICAgICAvLyBTaW5jZSBhbGwgb2Yg
dGhlc2UgbmFtZXMgYXJlIEF0b21pY1N0cmluZ3MgcG9pbnRlcnMgc2hvdWxkIGJlIGVxdWFsLgor
ICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgIWFkZFJlc3VsdC5pc05ld0VudHJ5IHx8
IG5hbWUgPT0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zZWNvbmQpOworICAgIH0KK30KKwor
dm9pZCBIVE1MSWRlbnRpZmllcjo6aW5pdCgpCit7CisgICAgLy8gVGhpcyBpcyBzYWZlIHRvIGNh
bGwgZnJvbSBhbnkgdGhyZWFkLCBidXQgbXVzdCBiZSBjYWxsZWQgYmVmb3JlCisgICAgLy8gdXNp
bmcgSFRNTElkZW50aWZpZXIuCisgICAgc3RhdGljIGJvb2wgaXNJbml0aWFsaXplZCA9IGZhbHNl
OworICAgIGlmIChpc0luaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisgICAgaXNJbml0aWFs
aXplZCA9IHRydWU7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGF0b21pemUgc21hbGwgd2hp
dGVzcGFjZSAoXG4sIFxuXG4sIGV0Yy4pCisgICAgYWRkTmFtZXMoZ2V0SFRNTFRhZ3MoKSwgSFRN
TFRhZ3NDb3VudCwga0hUTUxOYW1lc0luZGV4T2Zmc2V0KTsKKyAgICBhZGROYW1lcyhnZXRIVE1M
QXR0cnMoKSwgSFRNTEF0dHJzQ291bnQsIGtIVE1MQXR0cnNJbmRleE9mZnNldCk7Cit9CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkNThlNzI0YWVkYTc3
YWI0NWQ3NGZmOTJjOGUzNzkyNGI2NmUwZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIVE1M
SWRlbnRpZmllcl9oCisjZGVmaW5lIEhUTUxJZGVudGlmaWVyX2gKKworI2lmIEVOQUJMRShUSFJF
QURFRF9IVE1MX1BBUlNFUikKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFF1YWxpZmllZE5hbWU7CisKK2VudW0gQ2hhcmFj
dGVyV2lkdGggeworICAgIExpa2VseThCaXQsCisgICAgRm9yY2U4Qml0LAorICAgIEZvcmNlMTZC
aXQKK307CisKK2NsYXNzIEhUTUxJZGVudGlmaWVyIHsKK3B1YmxpYzoKKyAgICBIVE1MSWRlbnRp
ZmllcigpIDogbV9pbmRleCgwKSB7IH0KKworICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4KKyAgICBIVE1MSWRlbnRpZmllcihjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFj
aXR5PiYgdmVjdG9yLCBDaGFyYWN0ZXJXaWR0aCB3aWR0aCkKKyAgICB7CisgICAgICAgIC8vIEF2
b2lkIGxvb2t1cHMgb2YgbG9uZyBuYW1lcyB3ZSBrbm93IGFyZSBnb2luZyB0byBmYWlsLgorICAg
ICAgICBpZiAodmVjdG9yLnNpemUoKSA8PSBtYXhOYW1lTGVuZ3RoKSB7CisgICAgICAgICAgICBt
X2luZGV4ID0gZmluZEluZGV4KHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpOworICAgICAg
ICAgICAgaWYgKG1faW5kZXggIT0gaW52YWxpZEluZGV4KQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2luZGV4ID0gaW52YWxpZEluZGV4Owor
ICAgICAgICBpZiAod2lkdGggPT0gTGlrZWx5OEJpdCkKKyAgICAgICAgICAgIG1fc3RyaW5nID0g
U3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUodmVjdG9yKTsKKyAgICAgICAgZWxzZSBp
ZiAod2lkdGggPT0gRm9yY2U4Qml0KQorICAgICAgICAgICAgbV9zdHJpbmcgPSBTdHJpbmc6Om1h
a2U4Qml0RnJvbTE2Qml0U291cmNlKHZlY3Rvcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fc3RyaW5nID0gU3RyaW5nKHZlY3Rvcik7CisgICAgfQorCisgICAgLy8gYXNTdHJpbmcgc2hv
dWxkIG9ubHkgYmUgdXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgY29uc3QgU3RyaW5nJiBh
c1N0cmluZygpIGNvbnN0OworICAgIC8vIGFzU3RyaW5nSW1wbCgpIGlzIHNhZmUgdG8gY2FsbCBm
cm9tIGFueSB0aHJlYWQuCisgICAgY29uc3QgU3RyaW5nSW1wbCogYXNTdHJpbmdJbXBsKCkgY29u
c3Q7CisKKyAgICBzdGF0aWMgdm9pZCBpbml0KCk7CisKKyAgICBib29sIGlzU2FmZVRvU2VuZFRv
QW5vdGhlclRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzU2FmZVRvU2VuZFRvQW5v
dGhlclRocmVhZCgpOyB9CisKKyNpZm5kZWYgTkRFQlVHCisgICAgc3RhdGljIGJvb2wgaGFzSW5k
ZXgoY29uc3QgU3RyaW5nSW1wbCopOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGludmFsaWRJbmRleCA9IC0xOworICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhO
YW1lTGVuZ3RoOworICAgIHN0YXRpYyB1bnNpZ25lZCBmaW5kSW5kZXgoY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgYWRkTmFtZXMoUXVh
bGlmaWVkTmFtZSoqIG5hbWVzLCB1bnNpZ25lZCBuYW1lc0NvdW50LCB1bnNpZ25lZCBpbmRleE9m
ZnNldCk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBhIHVuaW9uLgorICAgIHVuc2ln
bmVkIG1faW5kZXg7CisgICAgU3RyaW5nIG1fc3RyaW5nOworfTsKKworfQorCisjZW5kaWYgLy8g
RU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggOTQ0N2NmZTZjOGI3Nzdk
MDBmMThjZjg0ZDZjN2YyZmI0OTVkZDNhYi4uMWI0YzJkMjhmM2E1MTE0MWVjYjcyYjMwNTY5YjBi
OGExYjcxNjkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
cklkaW9tcy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21z
LmgiCiAKICNpbmNsdWRlICJEZWNpbWFsLmgiCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC0yNzcsOCArMjc4LDEyIEBAIGJvb2wgcGFyc2VIVE1MTm9u
TmVnYXRpdmVJbnRlZ2VyKGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkJiB2YWx1ZSkKICAg
ICByZXR1cm4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VySW50ZXJuYWwoc3RhcnQsIHN0YXJ0
ICsgbGVuZ3RoLCB2YWx1ZSk7CiB9CiAKLXN0YXRpYyBib29sIHRocmVhZFNhZmVFcXVhbChTdHJp
bmdJbXBsKiBhLCBTdHJpbmdJbXBsKiBiKQorc3RhdGljIGJvb2wgdGhyZWFkU2FmZUVxdWFsKGNv
bnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IFN0cmluZ0ltcGwqIGIpCiB7CisgICAgaWYgKGEgPT0g
YikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgLy8gTm90ZTogVGhpcyBoYXNoIGNvbXBhcmUg
aXMgbm90IGNvcnJlY3QgZm9yIGFsbCBwb3NzaWJsZSBTdHJpbmdJbXBscywgYnV0CisgICAgLy8g
c2luY2Ugd2UncmUgYWx3YXlzIGNvbXBhcmluZyBhZ2FpbnN0IGNvbnN0YW50cywgaXQncyBPSy4K
ICAgICBpZiAoYS0+aGFzaCgpICE9IGItPmhhc2goKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJldHVybiBTdHJpbmdIYXNoOjplcXVhbChhLCBiKTsKQEAgLTI4OSw5ICsyOTQsMTEgQEAg
Ym9vbCB0aHJlYWRTYWZlTWF0Y2goY29uc3QgUXVhbGlmaWVkTmFtZSYgYSwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgYikKICAgICByZXR1cm4gdGhyZWFkU2FmZUVxdWFsKGEubG9jYWxOYW1lKCkuaW1w
bCgpLCBiLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKLWJvb2wgdGhyZWFkU2FmZU1hdGNoKGNv
bnN0IFN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKKyNpZiBF
TkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCitib29sIHRocmVhZFNhZmVNYXRjaChjb25zdCBI
VE1MSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKIHsK
LSAgICByZXR1cm4gdGhyZWFkU2FmZUVxdWFsKGxvY2FsTmFtZS5pbXBsKCksIHFOYW1lLmxvY2Fs
TmFtZSgpLmltcGwoKSk7CisgICAgcmV0dXJuIHRocmVhZFNhZmVFcXVhbChsb2NhbE5hbWUuYXNT
dHJpbmdJbXBsKCksIHFOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CisjZW5kaWYKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmluZGV4IGEw
MzFlNDVjZmYzMjM1M2YxNDBhMGEyMDE5NWI5ZjlmMzYzMjdiM2UuLmJjNTgwODkxMDY3ZTAxMzk1
NjI5NWVjM2M1YWI5NGU4MDNkZWY3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUGFyc2VySWRpb21zLmgKQEAgLTI1LDYgKzI1LDggQEAKICNpZm5kZWYgSFRNTFBhcnNl
cklkaW9tc19oCiAjZGVmaW5lIEhUTUxQYXJzZXJJZGlvbXNfaAogCisjaW5jbHVkZSAiSFRNTElk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dW5pY29kZS9Vbmljb2RlLmg+CkBAIC0zMiw3ICszNCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIERlY2ltYWw7Ci1jbGFzcyBRdWFsaWZpZWROYW1lOwogCiAvLyBTcGFjZSBjaGFy
YWN0ZXJzIGFzIGRlZmluZWQgYnkgdGhlIEhUTUwgc3BlY2lmaWNhdGlvbi4KIGJvb2wgaXNIVE1M
U3BhY2UoVUNoYXIpOwpAQCAtOTMsNyArOTQsMTYgQEAgaW5saW5lIGJvb2wgaXNOb3RIVE1MU3Bh
Y2UoVUNoYXIgY2hhcmFjdGVyKQogfQogCiBib29sIHRocmVhZFNhZmVNYXRjaChjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotYm9vbCB0aHJlYWRTYWZlTWF0Y2go
Y29uc3QgU3RyaW5nJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworI2lmIEVOQUJMRShUSFJFQURF
RF9IVE1MX1BBUlNFUikKK2Jvb2wgdGhyZWFkU2FmZU1hdGNoKGNvbnN0IEhUTUxJZGVudGlmaWVy
JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworaW5saW5lIGJvb2wgdGhyZWFkU2FmZUhUTUxOYW1l
c01hdGNoKGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lLCBjb25zdCBRdWFsaWZpZWROYW1l
JiBxTmFtZSkKK3sKKyAgICAvLyBXaGVuIHRoZSBRdWFsaWZpZWROYW1lIGlzIGtub3duIHRvIEhU
TUxJZGVudGlmaWVyLAorICAgIC8vIGFsbCB3ZSBoYXZlIHRvIGRvIGlzIGEgcG9pbnRlciBjb21w
YXJlLgorICAgIEFTU0VSVChIVE1MSWRlbnRpZmllcjo6aGFzSW5kZXgocU5hbWUubG9jYWxOYW1l
KCkuaW1wbCgpKSk7CisgICAgcmV0dXJuIHRhZ05hbWUuYXNTdHJpbmdJbXBsKCkgPT0gcU5hbWUu
bG9jYWxOYW1lKCkuaW1wbCgpOworfQorI2VuZGlmCiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggYTU3YzVkMzg1ZTNl
NzFlNzFiNTUxZDQzY2FlZDA3NTIzODM1YjMwNi4uZTAxMWVhMjlhMGJkZWFkN2Y4Zjk2YWI2MGRh
OWQ2NGRlNjAxNmM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UHJlbG9hZFNjYW5uZXIuY3BwCkBAIC02MywyNCArNjMsMjYgQEAgVG9rZW5QcmVsb2FkU2Nhbm5l
cjo6VGFnSWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6dGFnSWRGb3IoY29uc3QgSFRNTFRva2VuOjpE
YXRhVmUKICAgICByZXR1cm4gVW5rbm93blRhZ0lkOwogfQogCi1Ub2tlblByZWxvYWRTY2FubmVy
OjpUYWdJZCBUb2tlblByZWxvYWRTY2FubmVyOjp0YWdJZEZvcihjb25zdCBTdHJpbmcmIHRhZ05h
bWUpCisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQorVG9rZW5QcmVsb2FkU2Nhbm5l
cjo6VGFnSWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6dGFnSWRGb3IoY29uc3QgSFRNTElkZW50aWZp
ZXImIHRhZ05hbWUpCiB7Ci0gICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBpbWdUYWcp
KQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaW1nVGFnKSkKICAg
ICAgICAgcmV0dXJuIEltZ1RhZ0lkOwotICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwg
aW5wdXRUYWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaW5w
dXRUYWcpKQogICAgICAgICByZXR1cm4gSW5wdXRUYWdJZDsKLSAgICBpZiAodGhyZWFkU2FmZU1h
dGNoKHRhZ05hbWUsIGxpbmtUYWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgbGlua1RhZykpCiAgICAgICAgIHJldHVybiBMaW5rVGFnSWQ7Ci0gICAgaWYgKHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBzY3JpcHRUYWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkKICAgICAgICAgcmV0dXJuIFNjcmlwdFRh
Z0lkOwotICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc3R5bGVUYWcpKQorICAgIGlm
ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3R5bGVUYWcpKQogICAgICAgICBy
ZXR1cm4gU3R5bGVUYWdJZDsKLSAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJhc2VU
YWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYmFzZVRhZykp
CiAgICAgICAgIHJldHVybiBCYXNlVGFnSWQ7Ci0gICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCB0ZW1wbGF0ZVRhZykpCisgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdO
YW1lLCB0ZW1wbGF0ZVRhZykpCiAgICAgICAgIHJldHVybiBUZW1wbGF0ZVRhZ0lkOwogICAgIHJl
dHVybiBVbmtub3duVGFnSWQ7CiB9CisjZW5kaWYKIAogU3RyaW5nIFRva2VuUHJlbG9hZFNjYW5u
ZXI6OmluaXRpYXRvckZvcihUYWdJZCB0YWdJZCkKIHsKQEAgLTE0NywyOCArMTQ5LDQyIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogICAgIH0KIAorc3RhdGlj
IGJvb2wgbWF0Y2goY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBRdWFsaWZpZWROYW1l
JiBxTmFtZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHJldHVybiBxTmFt
ZS5sb2NhbE5hbWUoKSA9PSBuYW1lOworfQorCisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFS
U0VSKQorc3RhdGljIGJvb2wgbWF0Y2goY29uc3QgSFRNTElkZW50aWZpZXImIG5hbWUsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHFOYW1lKQoreworICAgIHJldHVybiB0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2gobmFtZSwgcU5hbWUpOworfQorI2VuZGlmCisKIHByaXZhdGU6Ci0gICAgdm9pZCBwcm9j
ZXNzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlTmFtZSwgY29uc3QgU3RyaW5nJiBh
dHRyaWJ1dGVWYWx1ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOYW1lVHlwZT4KKyAgICB2b2lk
IHByb2Nlc3NBdHRyaWJ1dGUoY29uc3QgTmFtZVR5cGUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0
cmluZyYgYXR0cmlidXRlVmFsdWUpCiAgICAgewotICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNo
KGF0dHJpYnV0ZU5hbWUsIGNoYXJzZXRBdHRyKSkKKyAgICAgICAgaWYgKG1hdGNoKGF0dHJpYnV0
ZU5hbWUsIGNoYXJzZXRBdHRyKSkKICAgICAgICAgICAgIG1fY2hhcnNldCA9IGF0dHJpYnV0ZVZh
bHVlOwogCiAgICAgICAgIGlmIChtX3RhZ0lkID09IFNjcmlwdFRhZ0lkIHx8IG1fdGFnSWQgPT0g
SW1nVGFnSWQpIHsKLSAgICAgICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRlTmFt
ZSwgc3JjQXR0cikpCisgICAgICAgICAgICBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgc3JjQXR0
cikpCiAgICAgICAgICAgICAgICAgc2V0VXJsVG9Mb2FkKGF0dHJpYnV0ZVZhbHVlKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRjaChhdHRyaWJ1dGVOYW1lLCBjcm9zc29yaWdp
bkF0dHIpICYmICFhdHRyaWJ1dGVWYWx1ZS5pc051bGwoKSkKKyAgICAgICAgICAgIGVsc2UgaWYg
KG1hdGNoKGF0dHJpYnV0ZU5hbWUsIGNyb3Nzb3JpZ2luQXR0cikgJiYgIWF0dHJpYnV0ZVZhbHVl
LmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIG1fY3Jvc3NPcmlnaW5Nb2RlID0gc3RyaXBMZWFk
aW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZVZhbHVlKTsKICAgICAgICAgfSBlbHNl
IGlmIChtX3RhZ0lkID09IExpbmtUYWdJZCkgewotICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVN
YXRjaChhdHRyaWJ1dGVOYW1lLCBocmVmQXR0cikpCisgICAgICAgICAgICBpZiAobWF0Y2goYXR0
cmlidXRlTmFtZSwgaHJlZkF0dHIpKQogICAgICAgICAgICAgICAgIHNldFVybFRvTG9hZChhdHRy
aWJ1dGVWYWx1ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2goYXR0cmli
dXRlTmFtZSwgcmVsQXR0cikpCisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaChhdHRyaWJ1dGVO
YW1lLCByZWxBdHRyKSkKICAgICAgICAgICAgICAgICBtX2xpbmtJc1N0eWxlU2hlZXQgPSByZWxB
dHRyaWJ1dGVJc1N0eWxlU2hlZXQoYXR0cmlidXRlVmFsdWUpOwotICAgICAgICAgICAgZWxzZSBp
ZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIG1lZGlhQXR0cikpCisgICAgICAgICAg
ICBlbHNlIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCBtZWRpYUF0dHIpKQogICAgICAgICAgICAg
ICAgIG1fbGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW4gPSBsaW5rTWVkaWFBdHRyaWJ1dGVJc1Nj
cmVlbihhdHRyaWJ1dGVWYWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAobV90YWdJZCA9PSBJbnB1
dFRhZ0lkKSB7Ci0gICAgICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUs
IHNyY0F0dHIpKQorICAgICAgICAgICAgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIHNyY0F0dHIp
KQogICAgICAgICAgICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICAg
ICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRlTmFtZSwgdHlwZUF0dHIpKQor
ICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgdHlwZUF0dHIpKQogICAg
ICAgICAgICAgICAgIG1faW5wdXRJc0ltYWdlID0gZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRl
VmFsdWUsIElucHV0VHlwZU5hbWVzOjppbWFnZSgpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKaW5kZXggNDdh
NTQ0NGYxMGU4Y2ZkZDZiYTcwYjA2YmUwOGYyNTQ0MDRjYzAxYi4uZDJmMmMxMTg5YzI1ZjUwZGIy
OTIzZmZiMzRhNzEyNmU0MjdhM2IyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBp
bmxpbmUgdm9pZCBzY2FuQ29tbW9uKGNvbnN0IFRva2VuJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0m
IHJlcXVlc3RzKTsKIAogICAgIHN0YXRpYyBUYWdJZCB0YWdJZEZvcihjb25zdCBIVE1MVG9rZW46
OkRhdGFWZWN0b3ImKTsKLSAgICBzdGF0aWMgVGFnSWQgdGFnSWRGb3IoY29uc3QgU3RyaW5nJik7
CisgICAgc3RhdGljIFRhZ0lkIHRhZ0lkRm9yKGNvbnN0IEhUTUxJZGVudGlmaWVyJik7CiAKICAg
ICBzdGF0aWMgU3RyaW5nIGluaXRpYXRvckZvcihUYWdJZCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192300</attachid>
            <date>2013-03-08 15:59:12 -0800</date>
            <delta_ts>2013-03-08 16:23:37 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-107337-20130308155515.patch</filename>
            <type>text/plain</type>
            <size>51252</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Mjc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ5MjM2MzdkMWVkNGJh
Mjk1NThjZDQ4ZmM5MTBkYjE1MTVjYTE1Yy4uM2IyMDRiMTQzODQwM2FiZDZlN2JlMzc5MGM1YjBi
NDFjNDE4YjYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw5ICsxLDg4IEBACisyMDEzLTAzLTA4ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBCYWNrZ3JvdW5kSFRNTFBhcnNl
ciBzaG91bGQgYmUgYWJsZSB0byBhdG9taXplIHdlbGwta25vd24gc3RyaW5ncworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBUZXN0aW5nIHRoaXMgcGF0Y2ggZWFz
aWx5IHJlcXVpcmVzIGFwcGx5aW5nIGJ1ZyAxMDcyMzYgbG9jYWxseQorICAgICAgICB0byByZW1v
dmUgYWxsIHRoZSByZW5kZXJpbmcgbm9pc2UgZnJvbSBQYXJzZXIvaHRtbC10aHJlYWRlZC1wYXJz
ZXIuaHRtbC4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgY2xhc3MgSFRNTElkZW50
aWZpZXIgd2hpY2ggYWxsb3dzIHVzIHRvIGF2b2lkCisgICAgICAgIGFsbG9jYXRpbmcgc3RyaW5n
cyBmb3Iga25vd24gdGFnL2F0dHJpYnV0ZSBuYW1lcyBmcm9tIEhUTUxOYW1lcy4KKworICAgICAg
ICBUaGVyZSBpcyBzdGlsbCBhIGxvdCBvZiBtZWF0IG9uIHRoaXMgYm9uZSwgYnV0IEkgdGhpbmsg
aXQncyBpbXBvcnRhbnQgdG8KKyAgICAgICAgbGFuZCBzb21ldGhpbmcgInNtYWxsaXNoIiB0byBz
dGFydCBhbmQgaXRlcmF0ZSBmcm9tIHRoZXJlLgorCisgICAgICAgIFRoaXMgdG9vayBQYXJzZXIv
aHRtbC10aHJlYWRlZC1wYXJzZXIuaHRtbCBmcm9tOgorICAgICAgICBtZWRpYW49IDQ0My43MjY1
MDAwMDIgbXMsIHN0ZGV2PSA3LjI1MDAyNjc5OTUyIG1zLCBtaW49IDQzMC4yNDQwMDAwNDcgbXMs
IG1heD0gNDU1LjUxMTAwMDAwNyBtcworICAgICAgICB0bzoKKyAgICAgICAgbWVkaWFuPSA0Mjcu
ODQ5NTAwMDA0IG1zLCBzdGRldj0gOS45Njk2NzA1ODI5MiBtcywgbWluPSA0MTcuOTE0MDAwMDQ5
IG1zLCBtYXg9IDQ2MS41MjgwMDAwMTQgbXMKKyAgICAgICAgb24gbXkgTUJQLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpBdG9taWNIVE1MVG9rZW4pOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRva2VuRXhpdHNGb3JlaWduQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjp0b2tl
bkV4aXRzU1ZHKToKKyAgICAgICAgKFdlYkNvcmU6OnRva2VuRXhpdHNNYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2VyOjpzaW11bGF0ZVRyZWVCdWlsZGVyKToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nhbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NT
UHJlbG9hZFNjYW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ1NTUHJlbG9h
ZFNjYW5uZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwOgor
ICAgICAgICAoU2FtZVNpemVBc0NvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvQ29tcGFjdEhUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFjdEhUTUxUb2tl
bjo6QXR0cmlidXRlOjpBdHRyaWJ1dGUpOgorICAgICAgICAoQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBhY3RIVE1MVG9rZW46OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cGFjdEhUTUxUb2tlbjo6cHVibGljSWRlbnRpZmllcik6CisgICAgICAgIChDb21wYWN0SFRNTFRv
a2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpzdGFydEJhY2tncm91bmRQYXJzZXIp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmlkZW50aWZpZXJUYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6aGFzSW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElkZW50aWZpZXI6OmZpbmRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpuYW1lRm9y
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50aWZpZXI6OmFzU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjphc1N0cmluZ0ltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElkZW50aWZpZXI6OmFkZE5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJZGVudGlmaWVyOjppbml0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MSWRlbnRpZmll
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSFRNTElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50aWZpZXI6OkhUTUxJZGVudGlmaWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJl
YWQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dGhyZWFkU2FmZUVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OnRocmVhZFNh
ZmVNYXRjaCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0aHJlYWRTYWZlSFRNTE5hbWVzTWF0
Y2gpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjp0YWdJZEZvcik6CisgICAgICAgIChX
ZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXI6Om1hdGNoKToKKyAg
ICAgICAgKFRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXI6OnByb2Nlc3NBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oOgorCiAy
MDEzLTAzLTA2ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBkaXNw
bGF5Om5vbmUgaWZyYW1lcyBzaG91bGQgbm90IGJ1aWxkIHJlbmRlcmluZyB0cmVlcwogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MjM2CiAKLSAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCiAKICAgICAgICAgVGhleSBkaWRuJ3QgdXNlZCB0byBidWlsZCByZW5kZXJpbmcgdHJl
ZXMuICBBdCBzb21lIHBvaW50IHRoaXMKICAgICAgICAgY2hhbmdlZCwgYW5kIGhhcyBtYWRlIHRo
ZSBQZXJmb3JtYW5jZVRlc3RzL1BhcnNlci9odG1sLXBhcnNlci5odG1sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGRlNThhMmE2MDI3NjJjZWUyNTVhODBmNTMwZDk3MzkwYmM5MmJiMWQuLjY3MmQ3
OGFlODY3NGI0ZGZlNWUzNDM0NzgyYjVkMmZkMjIyMmZhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0xNTU2LDYgKzE1NTYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKICAgICBodG1sL3BhcnNlci9IVE1MUGFyc2VyVGhy
ZWFkLmNwcAogICAgIGh0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCisg
ICAgaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvSFRNTE1l
dGFDaGFyc2V0UGFyc2VyLmNwcAogICAgIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHAKICAgICBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCA5ZjQ1NmZkZGRkNjY4N2YxZGMyNjg3ZmNlMTk4ZDVmODEx
N2ExNDI2Li4wMjg4YTNhZjJiY2ZmZjQyMDA0YTViNjAxMzdjOWUzYzIyN2E2MDNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM2MjEsNiArMzYyMSw4IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVudGl0eVRhYmxlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Qu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElucHV0U3RyZWFtLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDFi
NjU1ZmJlMDU0MGRiNDNmYTFiYTg1ZTI1ZWVlZGI1N2M2MDc2NzguLjI0NGJjYjFhMzBjZjc3YTcw
NmIyMTJmZmRmZjU2ZjM4OTA5MzMwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNzM1LDYgKzczNSw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIGh0bWwvcGFyc2VyL0hUTUxFbnRpdHlQYXJzZXIuY3BwIFwKICAg
ICBodG1sL3BhcnNlci9IVE1MRW50aXR5U2VhcmNoLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvSFRN
TEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAgXAorICAgIGh0bWwvcGFyc2VyL0hUTUxJZGVudGlm
aWVyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcCBcCiAg
ICAgaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgXAogICAgIGh0bWwvcGFyc2VyL0hU
TUxQYXJzZXJPcHRpb25zLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZmNjMWRiZTNiZDRhMmNm
YzZjYzJlYjllN2E3NTVmMzk0MTk5NWMzZi4uNTM3MTVlNTExYjNjZTI2YTI2Mjc4MjNlMDU3OGFm
NzAyMGJmZTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUwOCw2ICszNTA4LDggQEAKICAgICAg
ICAgICAgICdodG1sL3BhcnNlci9IVE1MRW50aXR5VGFibGUuaCcsCiAgICAgICAgICAgICAnaHRt
bC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAnLAogICAgICAgICAgICAgJ2h0
bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuaCcsCisgICAgICAgICAgICAnaHRt
bC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwJywKKyAgICAgICAgICAgICdodG1sL3BhcnNlci9I
VE1MSWRlbnRpZmllci5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MSW5wdXRTdHJl
YW0uaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNw
cCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmgnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBlZGQw
MDE1ZDRmNTJiNzNkMWVkZWYzNGQ5MzAzOGJhNGNiNmU1MDkzLi5jNjRiZWE5NjYyMDg5N2FiZTUx
NzJmZjNlNmYzYjNjZjYyYTEwNzhkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNjUwOTAsNiArNjUwOTAsMTQgQEAKIAkJCQkJPgogCQkJCTwv
RmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEhUTUxJ
ZGVudGlmaWVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEhUTUxJZGVudGlmaWVyLmgiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHBhcnNlclxIVE1M
SW5wdXRTdHJlYW0uaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGMxZWZmM2JkYzI3MDIxMTg1ZGYx
MmUyYTUzZGE3YmY4ZGE4YTljYWMuLmVjNDgyMTc5M2EzNTJkM2U5NjMyYTIxZDgzNjNmM2MzYjgx
MzdkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvagpAQCAtNjkyMyw2ICs2OTIzLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0
bWxccGFyc2VyXEhUTUxFbnRpdHlQYXJzZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caHRtbFxwYXJzZXJcSFRNTEVudGl0eVNlYXJjaC5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxJZGVuaXRpZmll
ci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MTWV0
YUNoYXJzZXRQYXJzZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxw
YXJzZXJcSFRNTFBhcnNlcklkaW9tcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxodG1sXHBhcnNlclxIVE1MUGFyc2VyT3B0aW9ucy5jcHAiIC8+CkBAIC0xMDM3OCw2ICsxMDM3
OSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MRW50aXR5
UGFyc2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1M
RW50aXR5U2VhcmNoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNl
clxIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxodG1sXHBhcnNlclxIVE1MSWRlbnRpZmllci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTElucHV0U3RyZWFtLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MTWV0YUNoYXJzZXRQYXJzZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxQYXJzZXJJZGlvbXMuaCIg
Lz4KQEAgLTExMTM5LDQgKzExMTQxLDQgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0
c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJF
eHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTY3OWY2MjI5NzI0NDVkNjQxMzBi
NTAxZWYwYjZkYzUwNDBjNDBmYi4uMTdjYWUzMTA1YjQyYTc5N2Q0MTMyNjcxNjMwYTNjNzJiNzUx
NDRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNDM4MCw2ICs0MzgwLDggQEAKIAkJQTg4QUQ1MkYwOTUyNEI5MjAwMUREMTk2
IC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTg1RDdBMkYwODc5RUJBOTAwNkE5MTcyIC8qIFF1YXJ0ekNvcmUu
ZnJhbWV3b3JrICovOyB9OwogCQlBODhERDQ4NzBCNDYyOUEzMDBDMDI5OTAgLyogUGF0aFRyYXZl
cnNhbFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBODhERDQ4NjBCNDYyOUEzMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmggKi87IH07
CiAJCUE4OERENDg5MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg4REQ0ODgwQjQ2
MjlCMDAwQzAyOTkwIC8qIFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgKi87IH07CisJCUE4OTU3MDlG
MTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODk1NzA5RDE2RTlCRDU5MDAxODRFNTUgLyog
SFRNTElkZW50aWZpZXIuY3BwICovOyB9OworCQlBODk1NzBBMDE2RTlCRDU5MDAxODRFNTUgLyog
SFRNTElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4OTU3MDlFMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4OTk0MzI4MEI0
MjMzODgwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTg5OTQzMjYwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcElt
YWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTg5OTQzMjkwQjQyMzM4ODAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4OTk0MzI3MEI0MjMzODcwMEQ3Qzgw
MiAvKiBCaXRtYXBJbWFnZS5jcHAgKi87IH07CiAJCUE4OUNDQzUyMEY0NEU5ODEwMEI1REExMCAv
KiBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODlDQ0M1MDBGNDRFOTgxMDBCNURBMTAgLyogUmVwbGFj
ZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwICovOyB9OwpAQCAtMTE3OTIsNiArMTE3OTQsOCBAQAog
CQlBODg2Q0RDMjE0RkJCQUEzMDBEMjc5RjQgLyogV29ya2VyQ29udGV4dFdlYlNvY2tldC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV29ya2VyQ29udGV4dFdlYlNvY2tldC5pZGw7IHBhdGgg
PSBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyQ29udGV4dFdlYlNvY2tldC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4OERENDg2MEI0NjI5QTMwMEMwMjk5MCAvKiBQYXRoVHJh
dmVyc2FsU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF0aFRyYXZl
cnNhbFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4OERENDg4MEI0NjI5
QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGF0aFRyYXZlcnNhbFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTg5NTcwOUQxNkU5QkQ1OTAwMTg0RTU1IC8qIEhUTUxJZGVudGlmaWVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhUTUxJZGVudGlmaWVy
LmNwcDsgcGF0aCA9IHBhcnNlci9IVE1MSWRlbnRpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE4OTU3MDlFMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MSWRlbnRpZmllci5oOyBwYXRo
ID0gcGFyc2VyL0hUTUxJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4OTk0MzI2MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCaXRtYXBJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBODk5NDMyNzBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0bWFwSW1hZ2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBODlDQ0M1MDBGNDRFOTgxMDBCNURBMTAgLyogUmVwbGFj
ZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTg4MjUsNiArMTg4MjksNyBAQAogCQk5N0MxRjU1MTEyMjg1NTg4MDBFREU2
MTYgLyogcGFyc2VyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQk5N0MxRjU1MjEyMjg1NUNCMDBFREU2MTcgLyogQXRvbWljSFRNTFRva2VuLmggKi8sCiAJ
CQkJOTdEQzY5RTkxNkI5RjUwRTAwOENGRDZGIC8qIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0u
Y3BwICovLAogCQkJCTk3REM2OUVBMTZCOUY1MEUwMDhDRkQ2RiAvKiBCYWNrZ3JvdW5kSFRNTElu
cHV0U3RyZWFtLmggKi8sCiAJCQkJOTc5REMwMzExNkE3OTkyMTAwODA3Nzk0IC8qIEJhY2tncm91
bmRIVE1MUGFyc2VyLmNwcCAqLywKQEAgLTE4ODQ3LDYgKzE4ODUyLDggQEAKIAkJCQk5NzdCMzg1
NDEyMjg4M0U5MDBCODFGRjggLyogSFRNTEVudGl0eVRhYmxlLmggKi8sCiAJCQkJOTc3QjM4NTUx
MjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwICovLAogCQkJ
CTk3N0IzODU2MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lmgg
Ki8sCisJCQkJQTg5NTcwOUQxNkU5QkQ1OTAwMTg0RTU1IC8qIEhUTUxJZGVudGlmaWVyLmNwcCAq
LywKKwkJCQlBODk1NzA5RTE2RTlCRDU5MDAxODRFNTUgLyogSFRNTElkZW50aWZpZXIuaCAqLywK
IAkJCQk5N0JDODQ5QTEyMzcwQTRCMDAwQzYxNjEgLyogSFRNTElucHV0U3RyZWFtLmggKi8sCiAJ
CQkJMkJFOEUyQzgxMkE1OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAg
Ki8sCiAJCQkJMkJFOEUyQzYxMkE1ODlFQzAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNl
ci5oICovLApAQCAtMTg4NzEsNyArMTg4NzgsNiBAQAogCQkJCTk3QzFGNTUyMTIyODU1Q0IwMEVE
RTYxNiAvKiBIVE1MVG9rZW4uaCAqLywKIAkJCQk5NzdCMzg1RTEyMjg4M0U5MDBCODFGRjggLyog
SFRNTFRva2VuaXplci5jcHAgKi8sCiAJCQkJOTc3QjM4NUYxMjI4ODNFOTAwQjgxRkY4IC8qIEhU
TUxUb2tlbml6ZXIuaCAqLywKLQkJCQk5N0MxRjU1MjEyMjg1NUNCMDBFREU2MTcgLyogQXRvbWlj
SFRNTFRva2VuLmggKi8sCiAJCQkJOTc3QjM3MjExMjI4NzIxNzAwQjgxRkY4IC8qIEhUTUxUcmVl
QnVpbGRlci5jcHAgKi8sCiAJCQkJOTc3QjM3MjIxMjI4NzIxNzAwQjgxRkY4IC8qIEhUTUxUcmVl
QnVpbGRlci5oICovLAogCQkJCTk3N0IzODYwMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVmlld1Nv
dXJjZVBhcnNlci5jcHAgKi8sCkBAIC0yNjY5Miw2ICsyNjY5OCw3IEBACiAJCQkJN0U2NkUyMzQx
NkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdFQTMwRjZBMTZERkZFNzUwMDI1N0QwQiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEODI4N0Y3MTZFNEEwMzgwMDg2QkQwMCAv
KiBIaXRUZXN0TG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE4OTU3MEEwMTZFOUJENTkw
MDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yOTg5NSw2ICsy
OTkwMiw3IEBACiAJCQkJN0U2NkUyMzMxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VBMzBGNjkxNkRGRkU3NTAwMjU3
RDBCIC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyRDgyODdGNjE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUE4OTU3MDlGMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0F0b21pY0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRvbWljSFRN
TFRva2VuLmgKaW5kZXggYTZkMjM3ZDE4OTVkZTBhYjUzZjlmNzMxOTkwMDY0NmYxNjZiZGQyOS4u
NDE1YjBkMjZjNDA0OGQ0YTcyODMzZjgzMGMzYmM2MzYwOTk0ZTM4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmgKQEAgLTE2MywxMCArMTYzLDEwIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOgotICAgICAgICAgICAgbV9u
YW1lID0gdG9rZW4uZGF0YSgpOworICAgICAgICAgICAgbV9uYW1lID0gdG9rZW4uZGF0YSgpLmFz
U3RyaW5nKCk7CiAgICAgICAgICAgICBtX2RvY3R5cGVEYXRhID0gYWRvcHRQdHIobmV3IERvY3R5
cGVEYXRhKCkpOwogICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9oYXNQdWJsaWNJZGVudGlm
aWVyID0gdHJ1ZTsKLSAgICAgICAgICAgIGFwcGVuZChtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lk
ZW50aWZpZXIsIHRva2VuLnB1YmxpY0lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBhcHBlbmQo
bV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyLCB0b2tlbi5wdWJsaWNJZGVudGlmaWVy
KCkuYXNTdHJpbmcoKSk7CiAgICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlk
ZW50aWZpZXIgPSB0cnVlOwogICAgICAgICAgICAgYXBwZW5kKG1fZG9jdHlwZURhdGEtPm1fc3lz
dGVtSWRlbnRpZmllciwgdG9rZW4uc3lzdGVtSWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIG1f
ZG9jdHlwZURhdGEtPm1fZm9yY2VRdWlya3MgPSB0b2tlbi5kb2N0eXBlRm9yY2VzUXVpcmtzKCk7
CkBAIC0xNzYsNyArMTc2LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEhUTUxUb2tlbjo6U3Rh
cnRUYWc6CiAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0
b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgpKTsKICAgICAgICAgICAgIGZvciAoVmVjdG9yPENvbXBh
Y3RIVE1MVG9rZW46OkF0dHJpYnV0ZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdG9rZW4uYXR0cmli
dXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytpdCkgewot
ICAgICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgbmFtZShudWxsQXRvbSwgaXQtPm5hbWUsIG51
bGxBdG9tKTsKKyAgICAgICAgICAgICAgICBRdWFsaWZpZWROYW1lIG5hbWUobnVsbEF0b20sIGl0
LT5uYW1lLmFzU3RyaW5nKCksIG51bGxBdG9tKTsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyBOXjIgZm9yIHRoZSBudW1iZXIgb2YgYXR0cmlidXRlcy4KICAgICAgICAgICAgICAg
ICBpZiAoIWZpbmRBdHRyaWJ1dGVJblZlY3RvcihtX2F0dHJpYnV0ZXMsIG5hbWUpKQogICAgICAg
ICAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShuYW1lLCBpdC0+dmFs
dWUpKTsKQEAgLTE4NCwxNyArMTg0LDI0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIEZhbGwg
dGhyb3VnaCEKICAgICAgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzoKICAgICAgICAgICAgIG1f
c2VsZkNsb3NpbmcgPSB0b2tlbi5zZWxmQ2xvc2luZygpOwotICAgICAgICAgICAgbV9uYW1lID0g
dG9rZW4uZGF0YSgpOworICAgICAgICAgICAgbV9uYW1lID0gdG9rZW4uZGF0YSgpLmFzU3RyaW5n
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6
Ci0gICAgICAgICAgICBtX2RhdGEgPSB0b2tlbi5kYXRhKCk7CisgICAgICAgICAgICBtX2RhdGEg
PSB0b2tlbi5kYXRhKCkuYXNTdHJpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOgotICAgICAgICAgICAgbV9leHRlcm5hbENoYXJhY3Rl
cnMgPSB0b2tlbi5kYXRhKCkuY2hhcmFjdGVycygpOwotICAgICAgICAgICAgbV9leHRlcm5hbENo
YXJhY3RlcnNMZW5ndGggPSB0b2tlbi5kYXRhKCkubGVuZ3RoKCk7CisgICAgICAgIGNhc2UgSFRN
TFRva2VuOjpDaGFyYWN0ZXI6IHsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nID0g
dG9rZW4uZGF0YSgpLmFzU3RyaW5nKCk7CisgICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVy
cyA9IHN0cmluZy5jaGFyYWN0ZXJzKCk7CisgICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVy
c0xlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICAgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9
IHRva2VuLmlzQWxsOEJpdERhdGEoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBs
aWtlIGEgc3Ryb25nZXIgQVNTRVJUIGhlcmU6CisgICAgICAgICAgICAvLyBBU1NFUlQoc3RyaW5n
LmlzOEJpdCgpID09IHRva2VuLmlzQWxsOEJpdERhdGEoKSk7CisgICAgICAgICAgICAvLyBidXQg
Y3VycmVudGx5IHRoYXQgZmlyZXMsIGxpa2VseSBkdWUgdG8gYnVncyBpbiBIVE1MVG9rZW5pemVy
CisgICAgICAgICAgICAvLyBub3Qgc2V0dGluZyBpc0FsbDhCaXREYXRhIGluIGFsbCB0aGUgdGlt
ZXMgaXQgY291bGQuCisgICAgICAgICAgICBBU1NFUlQoIXRva2VuLmlzQWxsOEJpdERhdGEoKSB8
fCBzdHJpbmcuaXM4Qml0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAg
ICAgfQogICAgIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKaW5kZXggODc0NDMyZTYwMWNhOGY2YzcxOGZlNDBj
NDkyMWQ5MTk2M2QxYjM2Yy4uNDYyMThiMjdjOGIxZTg2NTRjYjQ2ZWQ0ZDk4MTZjYzY4ZjFlOWJm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1M
UGFyc2VyLmNwcApAQCAtNjksNjUgKzY5LDY4IEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFhTU0lu
Zm9zQXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBYU1NJbmZvU3RyZWFtJiB4CiAK
IHN0YXRpYyBib29sIHRva2VuRXhpdHNGb3JlaWduQ29udGVudChjb25zdCBDb21wYWN0SFRNTFRv
a2VuJiB0b2tlbikKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBjb3BpZWQgZnJvbSBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQgYW5kIGNoYW5nZWQgdG8gdXNl
IHRocmVhZFNhZmVNYXRjaC4KLSAgICBjb25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRh
KCk7Ci0gICAgcmV0dXJuIHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBiVGFnKQotICAgICAgICB8
fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgYmlnVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZl
TWF0Y2godGFnTmFtZSwgYmxvY2txdW90ZVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIGJvZHlUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBi
clRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGNlbnRlclRhZykKLSAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGNvZGVUYWcpCi0gICAgICAgIHx8IHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBkZFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIGRpdlRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGRs
VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgZHRUYWcpCi0gICAgICAg
IHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBlbVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2Fm
ZU1hdGNoKHRhZ05hbWUsIGVtYmVkVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFn
TmFtZSwgaDFUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBoMlRhZykK
LSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGgzVGFnKQotICAgICAgICB8fCB0
aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaDRUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRj
aCh0YWdOYW1lLCBoNVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGg2
VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaGVhZFRhZykKLSAgICAg
ICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGhyVGFnKQotICAgICAgICB8fCB0aHJlYWRT
YWZlTWF0Y2godGFnTmFtZSwgaVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05h
bWUsIGltZ1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGxpVGFnKQot
ICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbGlzdGluZ1RhZykKLSAgICAgICAg
fHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG1lbnVUYWcpCi0gICAgICAgIHx8IHRocmVhZFNh
ZmVNYXRjaCh0YWdOYW1lLCBtZXRhVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFn
TmFtZSwgbm9iclRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG9sVGFn
KQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgcFRhZykKLSAgICAgICAgfHwg
dGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHByZVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1h
dGNoKHRhZ05hbWUsIHJ1YnlUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBzVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc21hbGxUYWcpCi0g
ICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBzcGFuVGFnKQotICAgICAgICB8fCB0
aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc3Ryb25nVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZl
TWF0Y2godGFnTmFtZSwgc3RyaWtlVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFn
TmFtZSwgc3ViVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc3VwVGFn
KQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgdGFibGVUYWcpCi0gICAgICAg
IHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0dFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2Fm
ZU1hdGNoKHRhZ05hbWUsIHVUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCB1bFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHZhclRhZykKLSAg
ICAgICAgfHwgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBmb250VGFnKSAmJiAodG9rZW4uZ2V0
QXR0cmlidXRlSXRlbShjb2xvckF0dHIpIHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oZmFjZUF0
dHIpIHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oc2l6ZUF0dHIpKSk7CisgICAgLy8gRklYTUU6
IFRoaXMgaXMgY29waWVkIGZyb20gSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVp
Z25Db250ZW50IGFuZCBjaGFuZ2VkIHRvIHVzZSB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2guCisg
ICAgY29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgcmV0
dXJuIHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiVGFnKQorICAgICAgICB8fCB0
aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYmlnVGFnKQorICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYmxvY2txdW90ZVRhZykKKyAgICAgICAgfHwg
dGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJvZHlUYWcpCisgICAgICAgIHx8IHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiclRhZykKKyAgICAgICAgfHwgdGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGNlbnRlclRhZykKKyAgICAgICAgfHwgdGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGNvZGVUYWcpCisgICAgICAgIHx8IHRocmVhZFNh
ZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBkZFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIGRpdlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIGRsVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgZHRUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCBlbVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRh
Z05hbWUsIGVtYmVkVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgaDFUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCBoMlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGgz
VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaDRUYWcp
CisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoNVRhZykKKyAg
ICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGg2VGFnKQorICAgICAg
ICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaGVhZFRhZykKKyAgICAgICAg
fHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGhyVGFnKQorICAgICAgICB8fCB0
aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaVRhZykKKyAgICAgICAgfHwgdGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGltZ1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2Fm
ZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGxpVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2godGFnTmFtZSwgbGlzdGluZ1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIG1lbnVUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1M
TmFtZXNNYXRjaCh0YWdOYW1lLCBtZXRhVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgbm9iclRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1l
c01hdGNoKHRhZ05hbWUsIG9sVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0
Y2godGFnTmFtZSwgcFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRh
Z05hbWUsIHByZVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIHJ1YnlUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCBzVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc21h
bGxUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzcGFu
VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3Ryb25n
VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3RyaWtl
VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3ViVGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3VwVGFnKQor
ICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdGFibGVUYWcpCisg
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0dFRhZykKKyAgICAg
ICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHVUYWcpCisgICAgICAgIHx8
IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB1bFRhZykKKyAgICAgICAgfHwgdGhy
ZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHZhclRhZykKKyAgICAgICAgfHwgKHRocmVh
ZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBmb250VGFnKSAmJiAodG9rZW4uZ2V0QXR0cmli
dXRlSXRlbShjb2xvckF0dHIpIHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oZmFjZUF0dHIpIHx8
IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oc2l6ZUF0dHIpKSk7CiB9CiAKIHN0YXRpYyBib29sIHRv
a2VuRXhpdHNTVkcoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgY29uc3Qg
U3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5n
Q2FzZSh0YWdOYW1lLCBTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZy5sb2NhbE5hbWUoKSk7Cisg
ICAgLy8gRklYTUU6IEl0J3MgdmVyeSBmcmFnaWxlIHRoYXQgd2Ugc3BlY2lhbCBjYXNlIGZvcmVp
Z25PYmplY3QgaGVyZSB0byBiZSBjYXNlLWluc2Vuc2l0aXZlLgorICAgIC8vIEZJWE1FOiBVc2lu
ZyBDYXNlRm9sZGluZ0hhc2g6OmVxdWFsIGluc3RlYWQgb2YgZXF1YWxJZ25vcmluZ0Nhc2UsIGFz
IGVxdWFsSWdub3JpbmdDYXNlCisgICAgLy8gd2FudHMgbm9uLWNvbnN0IFN0cmluZ0ltcGwqIChl
dmVuIHRob3VnaCBpdCBuZXZlciBtb2RpZmllcyB0aGVtKS4KKyAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExODkyIGlzIGZvciBmaXhpbmcgZXF1YWxJZ25v
cmluZ0Nhc2UuCisgICAgcmV0dXJuIENhc2VGb2xkaW5nSGFzaDo6ZXF1YWwodG9rZW4uZGF0YSgp
LmFzU3RyaW5nSW1wbCgpLCBTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZy5sb2NhbE5hbWUoKS5p
bXBsKCkpOwogfQogCiBzdGF0aWMgYm9vbCB0b2tlbkV4aXRzTWF0aChjb25zdCBDb21wYWN0SFRN
TFRva2VuJiB0b2tlbikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBjb3BpZWQgZnJvbSBIVE1M
RWxlbWVudFN0YWNrOjppc01hdGhNTFRleHRJbnRlZ3JhdGlvblBvaW50IGFuZCBjaGFuZ2VkIHRv
IHVzZSB0aHJlYWRTYWZlTWF0Y2guCi0gICAgY29uc3QgU3RyaW5nJiB0YWdOYW1lID0gdG9rZW4u
ZGF0YSgpOworICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgp
OwogICAgIHJldHVybiB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1pVGFn
KQogICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1vVGFn
KQogICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1uVGFn
KQpAQCAtMTk2LDcgKzE5OSw3IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6Om1hcmtFbmRP
ZkZpbGUoKQogYm9vbCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRlcihj
b25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBpZiAodG9rZW4udHlwZSgpID09
IEhUTUxUb2tlbjo6U3RhcnRUYWcpIHsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB0YWdOYW1lID0g
dG9rZW4uZGF0YSgpOworICAgICAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSA9IHRv
a2VuLmRhdGEoKTsKICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBTVkdOYW1l
czo6c3ZnVGFnKSkKICAgICAgICAgICAgIG1fbmFtZXNwYWNlU3RhY2suYXBwZW5kKFNWRyk7CiAg
ICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1hdGhUYWcp
KQpAQCAtMjA4LDMwICsyMTEsMzAgQEAgYm9vbCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxh
dGVUcmVlQnVpbGRlcihjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAg
IG1fbmFtZXNwYWNlU3RhY2suYXBwZW5kKEhUTUwpOwogICAgICAgICBpZiAoIWluRm9yZWlnbkNv
bnRlbnQoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIGNvcHkgb2Yg
VG9rZW5pemVyOjp1cGRhdGVTdGF0ZUZvciB3aGljaCB1c2VzIHRocmVhZFNhZmVNYXRjaGVzLgot
ICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0ZXh0YXJlYVRhZykgfHwg
dGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHRpdGxlVGFnKSkKKyAgICAgICAgICAgIGlmICh0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdGV4dGFyZWFUYWcpIHx8IHRocmVhZFNhZmVI
VE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0aXRsZVRhZykpCiAgICAgICAgICAgICAgICAgbV90b2tl
bml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0YXRlKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBwbGFpbnRleHRUYWcpKQorICAgICAg
ICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHBsYWludGV4
dFRhZykpCiAgICAgICAgICAgICAgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6
ZXI6OlBMQUlOVEVYVFN0YXRlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRj
aCh0YWdOYW1lLCBzY3JpcHRUYWcpKQorICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIHNjcmlwdFRhZykpCiAgICAgICAgICAgICAgICAgbV90b2tl
bml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFTdGF0ZSk7Ci0gICAgICAg
ICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc3R5bGVUYWcpCi0gICAgICAg
ICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGlmcmFtZVRhZykKLSAgICAgICAg
ICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgeG1wVGFnKQotICAgICAgICAgICAg
ICAgIHx8ICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbm9lbWJlZFRhZykgJiYgbV9vcHRpb25z
LnBsdWdpbnNFbmFibGVkKQotICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBub2ZyYW1lc1RhZykKLSAgICAgICAgICAgICAgICB8fCAodGhyZWFkU2FmZU1hdGNoKHRh
Z05hbWUsIG5vc2NyaXB0VGFnKSAmJiBtX29wdGlvbnMuc2NyaXB0RW5hYmxlZCkpCisgICAgICAg
ICAgICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3R5bGVUYWcp
CisgICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGlm
cmFtZVRhZykKKyAgICAgICAgICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgeG1wVGFnKQorICAgICAgICAgICAgICAgIHx8ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0
Y2godGFnTmFtZSwgbm9lbWJlZFRhZykgJiYgbV9vcHRpb25zLnBsdWdpbnNFbmFibGVkKQorICAg
ICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBub2ZyYW1l
c1RhZykKKyAgICAgICAgICAgICAgICB8fCAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIG5vc2NyaXB0VGFnKSAmJiBtX29wdGlvbnMuc2NyaXB0RW5hYmxlZCkpCiAgICAgICAgICAg
ICAgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0ZSk7
CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6
RW5kVGFnKSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsK
KyAgICAgICAgY29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CiAg
ICAgICAgIGlmICgobV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gU1ZHICYmIHRocmVhZFNhZmVN
YXRjaCh0YWdOYW1lLCBTVkdOYW1lczo6c3ZnVGFnKSkKICAgICAgICAgICAgIHx8IChtX25hbWVz
cGFjZVN0YWNrLmxhc3QoKSA9PSBNYXRoTUwgJiYgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1h
dGhNTE5hbWVzOjptYXRoVGFnKSkKICAgICAgICAgICAgIHx8IChtX25hbWVzcGFjZVN0YWNrLmNv
bnRhaW5zKFNWRykgJiYgbV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gSFRNTCAmJiB0b2tlbkV4
aXRzU1ZHKHRva2VuKSkKICAgICAgICAgICAgIHx8IChtX25hbWVzcGFjZVN0YWNrLmNvbnRhaW5z
KE1hdGhNTCkgJiYgbV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gSFRNTCAmJiB0b2tlbkV4aXRz
TWF0aCh0b2tlbikpKQogICAgICAgICAgICAgbV9uYW1lc3BhY2VTdGFjay5yZW1vdmVMYXN0KCk7
Ci0gICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkgeworICAg
ICAgICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHNjcmlwdFRhZykpIHsK
ICAgICAgICAgICAgIGlmICghaW5Gb3JlaWduQ29udGVudCgpKQogICAgICAgICAgICAgICAgIG1f
dG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
Q1NTUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJl
bG9hZFNjYW5uZXIuY3BwCmluZGV4IDBjNjZmYzFhYzlmZmE2NDlmNTNiZDE4NDM0NjNhYjI2ZTQy
ZmRlNTEuLmE2MGI5MGNkZDU4NDE0YzMzYmUzOWVjNGI0NWFkNzJkM2YzYjZkNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDU1NQcmVsb2FkU2Nhbm5lci5oIgogCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgorI2luY2x1ZGUgIkhUTUxJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC02NCwxNiArNjUsMTkgQEAgdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nhbihjb25z
dCBIVE1MVG9rZW46OkRhdGFWZWN0b3ImIGRhdGEsIFByZWxvYWRSZXF1ZXN0U3QKICAgICBzY2Fu
Q29tbW9uKGRhdGEuZGF0YSgpLCBkYXRhLmRhdGEoKSArIGRhdGEuc2l6ZSgpLCByZXF1ZXN0cyk7
CiB9CiAKLXZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OnNjYW4oY29uc3QgU3RyaW5nJiBkYXRhLCBQ
cmVsb2FkUmVxdWVzdFN0cmVhbSYgcmVxdWVzdHMpCisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxf
UEFSU0VSKQordm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nhbihjb25zdCBIVE1MSWRlbnRpZmll
ciYgaWRlbnRpZmllciwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mIHJlcXVlc3RzKQogewotICAgIGlm
IChkYXRhLmlzOEJpdCgpKSB7Ci0gICAgICAgIGNvbnN0IExDaGFyKiBiZWdpbiA9IGRhdGEuY2hh
cmFjdGVyczgoKTsKLSAgICAgICAgc2NhbkNvbW1vbihiZWdpbiwgYmVnaW4gKyBkYXRhLmxlbmd0
aCgpLCByZXF1ZXN0cyk7CisgICAgY29uc3QgU3RyaW5nSW1wbCogZGF0YSA9IGlkZW50aWZpZXIu
YXNTdHJpbmdJbXBsKCk7CisgICAgaWYgKGRhdGEtPmlzOEJpdCgpKSB7CisgICAgICAgIGNvbnN0
IExDaGFyKiBiZWdpbiA9IGRhdGEtPmNoYXJhY3RlcnM4KCk7CisgICAgICAgIHNjYW5Db21tb24o
YmVnaW4sIGJlZ2luICsgZGF0YS0+bGVuZ3RoKCksIHJlcXVlc3RzKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBjb25zdCBVQ2hhciogYmVnaW4gPSBkYXRhLmNoYXJhY3RlcnMxNigpOwot
ICAgIHNjYW5Db21tb24oYmVnaW4sIGJlZ2luICsgZGF0YS5sZW5ndGgoKSwgcmVxdWVzdHMpOwor
ICAgIGNvbnN0IFVDaGFyKiBiZWdpbiA9IGRhdGEtPmNoYXJhY3RlcnMxNigpOworICAgIHNjYW5D
b21tb24oYmVnaW4sIGJlZ2luICsgZGF0YS0+bGVuZ3RoKCksIHJlcXVlc3RzKTsKIH0KKyNlbmRp
ZgogCiBpbmxpbmUgdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6dG9rZW5pemUoVUNoYXIgYykKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5oCmluZGV4
IDRiNjliYzMyMzU2YjRjMjE4MTMzZmIxM2RjYTQyMTBmYjNiNmY2YTQuLjljMjA5MTAxMWQwNzI3
ZTllYzY1Zjk3ZDVjYTlkNzAwODVhNzE0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuaApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIEhUTUxJZGVudGlmaWVyOworCiBjbGFzcyBDU1NQcmVsb2FkU2Nh
bm5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTUHJlbG9hZFNjYW5uZXIpOwogcHVi
bGljOgpAQCAtNDIsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgpOwogCiAgICAg
dm9pZCBzY2FuKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlY3RvciYsIFByZWxvYWRSZXF1ZXN0U3Ry
ZWFtJik7Ci0gICAgdm9pZCBzY2FuKGNvbnN0IFN0cmluZyYsIFByZWxvYWRSZXF1ZXN0U3RyZWFt
Jik7CisgICAgdm9pZCBzY2FuKGNvbnN0IEhUTUxJZGVudGlmaWVyJiwgUHJlbG9hZFJlcXVlc3RT
dHJlYW0mKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIFN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKaW5kZXggYjQ3ODhhMDdlNWEwNmYy
MWQ0NTgwOWVhYWY3Yjk2ZWExOGQ4MTAzNC4uNzZkZGM2YjZjNzZlM2E1NTBjNDZlY2VkMDY5MGM5
MDhhMjUzZDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFj
dEhUTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhU
TUxUb2tlbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgU2FtZVNpemVBc0NvbXBhY3RIVE1MVG9rZW4gIHsKICAgICB1bnNpZ25lZCBiaXRmaWVsZHM7
Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgSFRNTElkZW50aWZpZXIgZGF0YTsKICAgICBWZWN0b3I8
QXR0cmlidXRlPiB2ZWN0b3I7CiAgICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbjsKIH07CkBA
IC01NiwxMCArNTYsMTAgQEAgQ29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbihjb25z
dCBIVE1MVG9rZW4qIHRva2VuLCBjb25zdCBUZXh0UG9zaXRpb24mIHQKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSFRNTFRva2VuOjpET0NU
WVBFOiB7Ci0gICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi0+bmFtZSgpKTsKKyAgICAgICAg
bV9kYXRhID0gSFRNTElkZW50aWZpZXIodG9rZW4tPm5hbWUoKSwgTGlrZWx5OEJpdCk7CiAgICAg
ICAgIC8vIFRoZXJlIGlzIG9ubHkgMSBET0NUWVBFIHRva2VuIHBlciBkb2N1bWVudCwgc28gdG8g
YXZvaWQgaW5jcmVhc2luZyB0aGUKICAgICAgICAgLy8gc2l6ZSBvZiBDb21wYWN0SFRNTFRva2Vu
LCB3ZSBqdXN0IHVzZSB0aGUgbV9hdHRyaWJ1dGVzIHZlY3Rvci4KLSAgICAgICAgbV9hdHRyaWJ1
dGVzLmFwcGVuZChBdHRyaWJ1dGUoU3RyaW5nKHRva2VuLT5wdWJsaWNJZGVudGlmaWVyKCkpLCBT
dHJpbmcodG9rZW4tPnN5c3RlbUlkZW50aWZpZXIoKSkpKTsKKyAgICAgICAgbV9hdHRyaWJ1dGVz
LmFwcGVuZChBdHRyaWJ1dGUoSFRNTElkZW50aWZpZXIodG9rZW4tPnB1YmxpY0lkZW50aWZpZXIo
KSwgTGlrZWx5OEJpdCksIFN0cmluZyh0b2tlbi0+c3lzdGVtSWRlbnRpZmllcigpKSkpOwogICAg
ICAgICBtX2RvY3R5cGVGb3JjZXNRdWlya3MgPSB0b2tlbi0+Zm9yY2VRdWlya3MoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpAQCAtNjgsMTkgKzY4LDE3IEBAIENvbXBhY3RIVE1MVG9rZW46OkNv
bXBhY3RIVE1MVG9rZW4oY29uc3QgSFRNTFRva2VuKiB0b2tlbiwgY29uc3QgVGV4dFBvc2l0aW9u
JiB0CiAgICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFnOgogICAgICAgICBtX2F0dHJpYnV0ZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b2tlbi0+YXR0cmlidXRlcygpLnNpemUoKSk7CiAgICAg
ICAgIGZvciAoVmVjdG9yPEhUTUxUb2tlbjo6QXR0cmlidXRlPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSB0b2tlbi0+YXR0cmlidXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLT5hdHRyaWJ1dGVzKCku
ZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShT
dHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShpdC0+bmFtZSksIFN0cmluZ0ltcGw6OmNy
ZWF0ZThCaXRJZlBvc3NpYmxlKGl0LT52YWx1ZSkpKTsKKyAgICAgICAgICAgIG1fYXR0cmlidXRl
cy5hcHBlbmQoQXR0cmlidXRlKEhUTUxJZGVudGlmaWVyKGl0LT5uYW1lLCBMaWtlbHk4Qml0KSwg
U3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoaXQtPnZhbHVlKSkpOwogICAgICAgICAv
LyBGYWxsIHRocm91Z2ghCiAgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzoKICAgICAgICAgbV9z
ZWxmQ2xvc2luZyA9IHRva2VuLT5zZWxmQ2xvc2luZygpOwogICAgICAgICAvLyBGYWxsIHRocm91
Z2ghCiAgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6Ci0gICAgY2FzZSBIVE1MVG9rZW46OkNo
YXJhY3RlcjoKLSAgICAgICAgaWYgKHRva2VuLT5pc0FsbDhCaXREYXRhKCkpIHsKLSAgICAgICAg
ICAgIG1fZGF0YSA9IFN0cmluZzo6bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UodG9rZW4tPmRhdGEo
KSk7Ci0gICAgICAgICAgICBtX2lzQWxsOEJpdERhdGEgPSB0cnVlOwotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi0+ZGF0YSgpKTsKKyAgICBjYXNlIEhU
TUxUb2tlbjo6Q2hhcmFjdGVyOiB7CisgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IHRva2VuLT5p
c0FsbDhCaXREYXRhKCk7CisgICAgICAgIG1fZGF0YSA9IEhUTUxJZGVudGlmaWVyKHRva2VuLT5k
YXRhKCksIHRva2VuLT5pc0FsbDhCaXREYXRhKCkgPyBGb3JjZThCaXQgOiBGb3JjZTE2Qml0KTsK
ICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0NvbXBhY3RIVE1MVG9rZW4uaAppbmRleCBjODk4ZjZlNmYxNGVjODkxMmIzMmZhMTMxNWM3Nzhh
ODdlMzk4OTgzLi5mZmE0YWU0M2NkMWYzZWJmMGUzZWJjM2U4OWVhNDk0ZjYyZjUzMzA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAKKyNpbmNsdWRl
ICJIVE1MSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtNDQsMTMgKzQ1LDEz
IEBAIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBDb21wYWN0SFRNTFRva2VuIHsKIHB1Ymxp
YzoKICAgICBzdHJ1Y3QgQXR0cmlidXRlIHsKLSAgICAgICAgQXR0cmlidXRlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICAgICAgQXR0cmlidXRlKGNvbnN0IEhU
TUxJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICAgICAgOiBu
YW1lKG5hbWUpCiAgICAgICAgICAgICAsIHZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgSFRNTElkZW50aWZpZXIgbmFtZTsK
ICAgICAgICAgU3RyaW5nIHZhbHVlOwogICAgIH07CiAKQEAgLTU5LDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CiAKICAgICBI
VE1MVG9rZW46OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUb2tl
bjo6VHlwZT4obV90eXBlKTsgfQotICAgIGNvbnN0IFN0cmluZyYgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YTsgfQorICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhOyB9CiAgICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0IHsgcmV0dXJuIG1f
c2VsZkNsb3Npbmc7IH0KICAgICBib29sIGlzQWxsOEJpdERhdGEoKSBjb25zdCB7IHJldHVybiBt
X2lzQWxsOEJpdERhdGE7IH0KICAgICBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQpAQCAtNjgsNyArNjksNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBUaGVyZSBpcyBvbmx5IDEgRE9DVFlQRSB0b2tlbiBwZXIgZG9jdW1lbnQs
IHNvIHRvIGF2b2lkIGluY3JlYXNpbmcgdGhlCiAgICAgLy8gc2l6ZSBvZiBDb21wYWN0SFRNTFRv
a2VuLCB3ZSBqdXN0IHVzZSB0aGUgbV9hdHRyaWJ1dGVzIHZlY3Rvci4KLSAgICBjb25zdCBTdHJp
bmcmIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXNbMF0ubmFt
ZTsgfQorICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9hdHRyaWJ1dGVzWzBdLm5hbWU7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3Rl
bUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXNbMF0udmFsdWU7IH0KICAg
ICBib29sIGRvY3R5cGVGb3JjZXNRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX2RvY3R5cGVGb3Jj
ZXNRdWlya3M7IH0KIApAQCAtNzgsNyArNzksNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
aXNBbGw4Qml0RGF0YSA6IDE7CiAgICAgdW5zaWduZWQgbV9kb2N0eXBlRm9yY2VzUXVpcmtzOiAx
OwogCi0gICAgU3RyaW5nIG1fZGF0YTsgLy8gIm5hbWUiLCAiY2hhcmFjdGVycyIsIG9yICJkYXRh
IiBkZXBlbmRpbmcgb24gbV90eXBlCisgICAgSFRNTElkZW50aWZpZXIgbV9kYXRhOyAvLyAibmFt
ZSIsICJjaGFyYWN0ZXJzIiwgb3IgImRhdGEiIGRlcGVuZGluZyBvbiBtX3R5cGUKICAgICBWZWN0
b3I8QXR0cmlidXRlPiBtX2F0dHJpYnV0ZXM7CiAgICAgVGV4dFBvc2l0aW9uIG1fdGV4dFBvc2l0
aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCmluZGV4IDM5NDBlODk1NGEwNTBlNzhlZTNlOWRjNThjNjllMzkwZDYwNzE1MDMu
LjIyODZkNTIyMGMyNTRhYmQzMjdlNjhmOWU3NzEzZTE3OWRlN2Q0YWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VyU2NoZWR1bGVyLmgiCiAjaW5j
bHVkZSAiSFRNTFBhcnNlclRocmVhZC5oIgpAQCAtNjUwLDYgKzY1MSw4IEBAIHZvaWQgSFRNTERv
Y3VtZW50UGFyc2VyOjpzdGFydEJhY2tncm91bmRQYXJzZXIoKQogICAgIEFTU0VSVCghbV9oYXZl
QmFja2dyb3VuZFBhcnNlcik7CiAgICAgbV9oYXZlQmFja2dyb3VuZFBhcnNlciA9IHRydWU7CiAK
KyAgICBIVE1MSWRlbnRpZmllcjo6aW5pdCgpOworCiAgICAgUmVmUHRyPFdlYWtSZWZlcmVuY2U8
QmFja2dyb3VuZEhUTUxQYXJzZXI+ID4gcmVmZXJlbmNlID0gV2Vha1JlZmVyZW5jZTxCYWNrZ3Jv
dW5kSFRNTFBhcnNlcj46OmNyZWF0ZVVuYm91bmQoKTsKICAgICBtX2JhY2tncm91bmRQYXJzZXIg
PSBXZWFrUHRyPEJhY2tncm91bmRIVE1MUGFyc2VyPihyZWZlcmVuY2UpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E4ZWM2
ZDA3NDI5NzNmZWFjMGZhNzZhMTlkMWZmZTlmNmM3NTUyZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcApAQCAtMCwwICsxLDE1
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdP
T0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisK
KyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5oIgorCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCit0eXBlZGVmIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
U3RyaW5nSW1wbCo+IElkZW50aWZpZXJFbnRyeTsKK3R5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwg
SWRlbnRpZmllckVudHJ5LCBBbHJlYWR5SGFzaGVkPiBJZGVudGlmaWVyVGFibGU7CisKK3Vuc2ln
bmVkIEhUTUxJZGVudGlmaWVyOjptYXhOYW1lTGVuZ3RoID0gMDsKKworc3RhdGljIElkZW50aWZp
ZXJUYWJsZSYgaWRlbnRpZmllclRhYmxlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKElk
ZW50aWZpZXJUYWJsZSwgdGFibGUsICgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkgfHwg
IXRhYmxlLmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIHRhYmxlOworfQorCisjaWZuZGVmIE5ERUJV
RworYm9vbCBIVE1MSWRlbnRpZmllcjo6aGFzSW5kZXgoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5n
KQoreworICAgIGNvbnN0IElkZW50aWZpZXJUYWJsZSYgdGFibGUgPSBpZGVudGlmaWVyVGFibGUo
KTsKKyAgICByZXR1cm4gdGFibGUuY29udGFpbnMoc3RyaW5nLT5oYXNoKCkpOworfQorI2VuZGlm
CisKK3Vuc2lnbmVkIEhUTUxJZGVudGlmaWVyOjpmaW5kSW5kZXgoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHRyeSBo
YXNoaW5nIGlmIHdlIGtub3cgdGhlIHN0cmluZyBpcyB0b28gbG9uZy4KKyAgICBpZiAobGVuZ3Ro
ID4gbWF4TmFtZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGludmFsaWRJbmRleDsKKyAgICAvLyBj
b21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyBpcyB0aGUgZnVuY3Rpb24gU3RyaW5nSW1wbDo6aGFz
aCgpIHVzZXMuCisgICAgdW5zaWduZWQgaGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hB
bmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICBjb25zdCBJZGVudGlmaWVy
VGFibGUmIHRhYmxlID0gaWRlbnRpZmllclRhYmxlKCk7CisgICAgQVNTRVJUKCF0YWJsZS5pc0Vt
cHR5KCkpOworCisgICAgSWRlbnRpZmllclRhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IHRhYmxl
LmZpbmQoaGFzaCk7CisgICAgaWYgKGl0ID09IHRhYmxlLmVuZCgpKQorICAgICAgICByZXR1cm4g
aW52YWxpZEluZGV4OworICAgIHJldHVybiBpdC0+dmFsdWUuZmlyc3Q7Cit9CisKK2NvbnN0IHVu
c2lnbmVkIGtIVE1MTmFtZXNJbmRleE9mZnNldCA9IDA7Citjb25zdCB1bnNpZ25lZCBrSFRNTEF0
dHJzSW5kZXhPZmZzZXQgPSAxMDAwOworQ09NUElMRV9BU1NFUlQoa0hUTUxBdHRyc0luZGV4T2Zm
c2V0ID4gSFRNTFRhZ3NDb3VudCwga0hUTUxBdHRyc0luZGV4T2Zmc2V0X3Nob3VsZF9iZV9sYXJn
ZXJfdGhhbl9IVE1MVGFnc0NvdW50KTsKKworc3RhdGljIGNvbnN0IFN0cmluZyYgbmFtZUZvcklu
ZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIHVuc2lnbmVkIGFkanVzdGVkSW5kZXg7CisgICAg
UXVhbGlmaWVkTmFtZSoqIG5hbWVzOworICAgIGlmIChpbmRleCA8IGtIVE1MQXR0cnNJbmRleE9m
ZnNldCkgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBrSFRNTE5hbWVzSW5kZXhPZmZzZXQgKyBI
VE1MVGFnc0NvdW50KTsKKyAgICAgICAgYWRqdXN0ZWRJbmRleCA9IGluZGV4IC0ga0hUTUxOYW1l
c0luZGV4T2Zmc2V0OworICAgICAgICBuYW1lcyA9IGdldEhUTUxUYWdzKCk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwga0hUTUxBdHRyc0luZGV4T2Zmc2V0ICsgSFRNTEF0
dHJzQ291bnQpOworICAgICAgICBhZGp1c3RlZEluZGV4ID0gaW5kZXggLSBrSFRNTEF0dHJzSW5k
ZXhPZmZzZXQ7CisgICAgICAgIG5hbWVzID0gZ2V0SFRNTEF0dHJzKCk7CisgICAgfQorICAgIC8v
IEhUTUxBdHRycyBhbmQgSFRNTE5hbWVzIG1heSBoYXZlIGNvbGxpc2lvbnMsIGJ1dAorICAgIC8v
IHdlIHNob3VsZG4ndCBjYXJlIHdoaWNoIHdlIGVuZGVkIHVwIHN0b3JpbmcsIHNpbmNlIHRoZWly
CisgICAgLy8gY29tcG9uZW50cyBhcmUgYWxsIEF0b21pY1N0cmluZ3MgYW5kIHNob3VsZCB1c2Ug
dGhlIHNhbWUKKyAgICAvLyB1bmRlcmx5aW5nIFN0cmluZ0ltcGwqLgorICAgIHJldHVybiBuYW1l
c1thZGp1c3RlZEluZGV4XS0+bG9jYWxOYW1lKCkuc3RyaW5nKCk7Cit9CisKK2NvbnN0IFN0cmlu
ZyYgSFRNTElkZW50aWZpZXI6OmFzU3RyaW5nKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIGlmIChtX2luZGV4ICE9IGludmFsaWRJbmRleCkKKyAgICAgICAgcmV0
dXJuIG5hbWVGb3JJbmRleChtX2luZGV4KTsKKyAgICByZXR1cm4gbV9zdHJpbmc7Cit9CisKK2Nv
bnN0IFN0cmluZ0ltcGwqIEhUTUxJZGVudGlmaWVyOjphc1N0cmluZ0ltcGwoKSBjb25zdAorewor
ICAgIGlmIChtX2luZGV4ICE9IGludmFsaWRJbmRleCkKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JJ
bmRleChtX2luZGV4KS5pbXBsKCk7CisgICAgcmV0dXJuIG1fc3RyaW5nLmltcGwoKTsKK30KKwor
dm9pZCBIVE1MSWRlbnRpZmllcjo6YWRkTmFtZXMoUXVhbGlmaWVkTmFtZSoqIG5hbWVzLCB1bnNp
Z25lZCBuYW1lc0NvdW50LCB1bnNpZ25lZCBpbmRleE9mZnNldCkKK3sKKyAgICBJZGVudGlmaWVy
VGFibGUmIHRhYmxlID0gaWRlbnRpZmllclRhYmxlKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG5hbWVzQ291bnQ7ICsraSkgeworICAgICAgICBTdHJpbmdJbXBsKiBuYW1lID0gbmFt
ZXNbaV0tPmxvY2FsTmFtZSgpLmltcGwoKTsKKyAgICAgICAgdW5zaWduZWQgaGFzaCA9IG5hbWUt
Pmhhc2goKTsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBpICsgaW5kZXhPZmZzZXQ7CisgICAg
ICAgIElkZW50aWZpZXJFbnRyeSBlbnRyeShpbmRleCwgbmFtZSk7CisgICAgICAgIElkZW50aWZp
ZXJUYWJsZTo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IHRhYmxlLmFkZChoYXNoLCBlbnRyeSk7Cisg
ICAgICAgIG1heE5hbWVMZW5ndGggPSBzdGQ6Om1heChtYXhOYW1lTGVuZ3RoLCBuYW1lLT5sZW5n
dGgoKSk7CisgICAgICAgIC8vIEVuc3VyZSB3ZSdyZSB1c2luZyB0aGUgc2FtZSBoYXNoaW5nIGFs
Z29yaXRobSB0byBnZXQgYW5kIHNldC4KKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
ICFhZGRSZXN1bHQuaXNOZXdFbnRyeSB8fCBIVE1MSWRlbnRpZmllcjo6ZmluZEluZGV4KG5hbWUt
PmNoYXJhY3RlcnMoKSwgbmFtZS0+bGVuZ3RoKCkpID09IGluZGV4KTsKKyAgICAgICAgLy8gV2Ug
ZXhwZWN0IHNvbWUgaGFzaCBjb2xsaXNpb25zLCBidXQgb25seSBmb3IgaWRlbnRpY2FsIHN0cmlu
Z3MuCisgICAgICAgIC8vIFNpbmNlIGFsbCBvZiB0aGVzZSBuYW1lcyBhcmUgQXRvbWljU3RyaW5n
cyBwb2ludGVycyBzaG91bGQgYmUgZXF1YWwuCisgICAgICAgIC8vIE5vdGU6IElmIHlvdSBoaXQg
dGhpcyBBU1NFUlQsIHRoZW4gd2UgaGFkIGEgaGFzaCBjb2xsaXNpb24gYW1vbmcKKyAgICAgICAg
Ly8gSFRNTE5hbWVzIHN0cmluZ3MsIGFuZCB3ZSBuZWVkIHRvIHJlLWRlc2lnbiBob3cgd2UgdXNl
IHRoaXMgaGFzaCEKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsICFhZGRSZXN1bHQu
aXNOZXdFbnRyeSB8fCBuYW1lID09IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2Vjb25kKTsK
KyAgICB9Cit9CisKK3ZvaWQgSFRNTElkZW50aWZpZXI6OmluaXQoKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7IC8vIE5vdCB0ZWNobmljYWxseSBuZWNlc3NhcnksIGJ1dCB0aGlzIGlz
IG91ciBjdXJyZW50IGV4cGVjdGVkIHVzYWdlLgorICAgIHN0YXRpYyBib29sIGlzSW5pdGlhbGl6
ZWQgPSBmYWxzZTsKKyAgICBpZiAoaXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworICAg
IGlzSW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhdG9taXpl
IHNtYWxsIHdoaXRlc3BhY2UgKFxuLCBcblxuLCBldGMuKQorICAgIGFkZE5hbWVzKGdldEhUTUxU
YWdzKCksIEhUTUxUYWdzQ291bnQsIGtIVE1MTmFtZXNJbmRleE9mZnNldCk7CisgICAgYWRkTmFt
ZXMoZ2V0SFRNTEF0dHJzKCksIEhUTUxBdHRyc0NvdW50LCBrSFRNTEF0dHJzSW5kZXhPZmZzZXQp
OworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjFm
NzQ3NGJmNTQ2ZjM0NzNlMzI1MjM0NDk4Y2QxZTI5Nzk2MDZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaApAQCAtMCwwICsxLDg5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09P
R0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSFRNTElkZW50aWZpZXJfaAorI2RlZmluZSBIVE1MSWRlbnRpZmllcl9oCisKKyNpZiBF
TkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBRdWFsaWZpZWROYW1lOworCitl
bnVtIENoYXJhY3RlcldpZHRoIHsKKyAgICBMaWtlbHk4Qml0LAorICAgIEZvcmNlOEJpdCwKKyAg
ICBGb3JjZTE2Qml0Cit9OworCitjbGFzcyBIVE1MSWRlbnRpZmllciB7CitwdWJsaWM6CisgICAg
SFRNTElkZW50aWZpZXIoKSA6IG1faW5kZXgoMCkgeyB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+CisgICAgSFRNTElkZW50aWZpZXIoY29uc3QgVmVjdG9yPFVDaGFyLCBp
bmxpbmVDYXBhY2l0eT4mIHZlY3RvciwgQ2hhcmFjdGVyV2lkdGggd2lkdGgpCisgICAgICAgIDog
bV9pbmRleChmaW5kSW5kZXgodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSkpCisgICAgewor
ICAgICAgICBpZiAobV9pbmRleCAhPSBpbnZhbGlkSW5kZXgpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGlmICh3aWR0aCA9PSBMaWtlbHk4Qml0KQorICAgICAgICAgICAgbV9zdHJpbmcg
PSBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZSh2ZWN0b3IpOworICAgICAgICBlbHNl
IGlmICh3aWR0aCA9PSBGb3JjZThCaXQpCisgICAgICAgICAgICBtX3N0cmluZyA9IFN0cmluZzo6
bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UodmVjdG9yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9zdHJpbmcgPSBTdHJpbmcodmVjdG9yKTsKKyAgICB9CisKKyAgICAvLyBhc1N0cmluZyBz
aG91bGQgb25seSBiZSB1c2VkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICBjb25zdCBTdHJpbmcm
IGFzU3RyaW5nKCkgY29uc3Q7CisgICAgLy8gYXNTdHJpbmdJbXBsKCkgaXMgc2FmZSB0byBjYWxs
IGZyb20gYW55IHRocmVhZC4KKyAgICBjb25zdCBTdHJpbmdJbXBsKiBhc1N0cmluZ0ltcGwoKSBj
b25zdDsKKworICAgIHN0YXRpYyB2b2lkIGluaXQoKTsKKworICAgIGJvb2wgaXNTYWZlVG9TZW5k
VG9Bbm90aGVyVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNTYWZlVG9TZW5kVG9B
bm90aGVyVGhyZWFkKCk7IH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBzdGF0aWMgYm9vbCBoYXNJ
bmRleChjb25zdCBTdHJpbmdJbXBsKik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaW52YWxpZEluZGV4ID0gLTE7CisgICAgc3RhdGljIHVuc2lnbmVkIG1h
eE5hbWVMZW5ndGg7CisgICAgc3RhdGljIHVuc2lnbmVkIGZpbmRJbmRleChjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBhZGROYW1lcyhR
dWFsaWZpZWROYW1lKiogbmFtZXMsIHVuc2lnbmVkIG5hbWVzQ291bnQsIHVuc2lnbmVkIGluZGV4
T2Zmc2V0KTsKKworICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGEgdW5pb24uCisgICAgdW5z
aWduZWQgbV9pbmRleDsKKyAgICBTdHJpbmcgbV9zdHJpbmc7Cit9OworCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCA5NDQ3Y2ZlNmM4Yjc3
N2QwMGYxOGNmODRkNmM3ZjJmYjQ5NWRkM2FiLi5iNzdkNThiMjQ3NjM1NTNiMWEyMjUzMWNmYmUx
NmYwMzdmZDYwNDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlv
bXMuaCIKIAogI2luY2x1ZGUgIkRlY2ltYWwuaCIKKyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTI3Nyw4ICsyNzgsMTAgQEAgYm9vbCBwYXJzZUhUTUxO
b25OZWdhdGl2ZUludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQmIHZhbHVlKQog
ICAgIHJldHVybiBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXJJbnRlcm5hbChzdGFydCwgc3Rh
cnQgKyBsZW5ndGgsIHZhbHVlKTsKIH0KIAotc3RhdGljIGJvb2wgdGhyZWFkU2FmZUVxdWFsKFN0
cmluZ0ltcGwqIGEsIFN0cmluZ0ltcGwqIGIpCitzdGF0aWMgYm9vbCB0aHJlYWRTYWZlRXF1YWwo
Y29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikKIHsKKyAgICBpZiAoYSA9
PSBiKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoYS0+aGFzaCgpICE9IGItPmhhc2go
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBTdHJpbmdIYXNoOjplcXVhbChh
LCBiKTsKQEAgLTI4OSw5ICsyOTIsMTEgQEAgYm9vbCB0aHJlYWRTYWZlTWF0Y2goY29uc3QgUXVh
bGlmaWVkTmFtZSYgYSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYikKICAgICByZXR1cm4gdGhyZWFk
U2FmZUVxdWFsKGEubG9jYWxOYW1lKCkuaW1wbCgpLCBiLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9
CiAKLWJvb2wgdGhyZWFkU2FmZU1hdGNoKGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBR
dWFsaWZpZWROYW1lJiBxTmFtZSkKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiti
b29sIHRocmVhZFNhZmVNYXRjaChjb25zdCBIVE1MSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKIHsKLSAgICByZXR1cm4gdGhyZWFkU2FmZUVxdWFsKGxv
Y2FsTmFtZS5pbXBsKCksIHFOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgcmV0dXJuIHRo
cmVhZFNhZmVFcXVhbChsb2NhbE5hbWUuYXNTdHJpbmdJbXBsKCksIHFOYW1lLmxvY2FsTmFtZSgp
LmltcGwoKSk7CiB9CisjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5oCmluZGV4IGEwMzFlNDVjZmYzMjM1M2YxNDBhMGEyMDE5NWI5Zjlm
MzYzMjdiM2UuLmJjNTgwODkxMDY3ZTAxMzk1NjI5NWVjM2M1YWI5NGU4MDNkZWY3ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKQEAgLTI1LDYg
KzI1LDggQEAKICNpZm5kZWYgSFRNTFBhcnNlcklkaW9tc19oCiAjZGVmaW5lIEhUTUxQYXJzZXJJ
ZGlvbXNfaAogCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJRdWFsaWZp
ZWROYW1lLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CkBAIC0zMiw3ICsz
NCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERlY2ltYWw7Ci1jbGFzcyBRdWFs
aWZpZWROYW1lOwogCiAvLyBTcGFjZSBjaGFyYWN0ZXJzIGFzIGRlZmluZWQgYnkgdGhlIEhUTUwg
c3BlY2lmaWNhdGlvbi4KIGJvb2wgaXNIVE1MU3BhY2UoVUNoYXIpOwpAQCAtOTMsNyArOTQsMTYg
QEAgaW5saW5lIGJvb2wgaXNOb3RIVE1MU3BhY2UoVUNoYXIgY2hhcmFjdGVyKQogfQogCiBib29s
IHRocmVhZFNhZmVNYXRjaChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotYm9vbCB0aHJlYWRTYWZlTWF0Y2goY29uc3QgU3RyaW5nJiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKK2Jvb2wgdGhyZWFkU2Fm
ZU1hdGNoKGNvbnN0IEhUTUxJZGVudGlmaWVyJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworaW5s
aW5lIGJvb2wgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0
YWdOYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKK3sKKyAgICAvLyBXaGVuIHRoZSBR
dWFsaWZpZWROYW1lIGlzIGtub3duIHRvIEhUTUxJZGVudGlmaWVyLAorICAgIC8vIGFsbCB3ZSBo
YXZlIHRvIGRvIGlzIGEgcG9pbnRlciBjb21wYXJlLgorICAgIEFTU0VSVChIVE1MSWRlbnRpZmll
cjo6aGFzSW5kZXgocU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKSk7CisgICAgcmV0dXJuIHRhZ05h
bWUuYXNTdHJpbmdJbXBsKCkgPT0gcU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpOworfQorI2VuZGlm
CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxv
YWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHAKaW5kZXggYTU3YzVkMzg1ZTNlNzFlNzFiNTUxZDQzY2FlZDA3NTIzODM1YjMwNi4u
ZTAxMWVhMjlhMGJkZWFkN2Y4Zjk2YWI2MGRhOWQ2NGRlNjAxNmM5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC02MywyNCAr
NjMsMjYgQEAgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6VGFnSWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6
dGFnSWRGb3IoY29uc3QgSFRNTFRva2VuOjpEYXRhVmUKICAgICByZXR1cm4gVW5rbm93blRhZ0lk
OwogfQogCi1Ub2tlblByZWxvYWRTY2FubmVyOjpUYWdJZCBUb2tlblByZWxvYWRTY2FubmVyOjp0
YWdJZEZvcihjb25zdCBTdHJpbmcmIHRhZ05hbWUpCisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxf
UEFSU0VSKQorVG9rZW5QcmVsb2FkU2Nhbm5lcjo6VGFnSWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6
dGFnSWRGb3IoY29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUpCiB7Ci0gICAgaWYgKHRocmVh
ZFNhZmVNYXRjaCh0YWdOYW1lLCBpbWdUYWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgaW1nVGFnKSkKICAgICAgICAgcmV0dXJuIEltZ1RhZ0lkOwotICAgIGlm
ICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaW5wdXRUYWcpKQorICAgIGlmICh0aHJlYWRTYWZl
SFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaW5wdXRUYWcpKQogICAgICAgICByZXR1cm4gSW5wdXRU
YWdJZDsKLSAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGxpbmtUYWcpKQorICAgIGlm
ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbGlua1RhZykpCiAgICAgICAgIHJl
dHVybiBMaW5rVGFnSWQ7Ci0gICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBzY3JpcHRU
YWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFn
KSkKICAgICAgICAgcmV0dXJuIFNjcmlwdFRhZ0lkOwotICAgIGlmICh0aHJlYWRTYWZlTWF0Y2go
dGFnTmFtZSwgc3R5bGVUYWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgc3R5bGVUYWcpKQogICAgICAgICByZXR1cm4gU3R5bGVUYWdJZDsKLSAgICBpZiAodGhy
ZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJhc2VUYWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgYmFzZVRhZykpCiAgICAgICAgIHJldHVybiBCYXNlVGFnSWQ7Ci0g
ICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0ZW1wbGF0ZVRhZykpCisgICAgaWYgKHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0ZW1wbGF0ZVRhZykpCiAgICAgICAgIHJl
dHVybiBUZW1wbGF0ZVRhZ0lkOwogICAgIHJldHVybiBVbmtub3duVGFnSWQ7CiB9CisjZW5kaWYK
IAogU3RyaW5nIFRva2VuUHJlbG9hZFNjYW5uZXI6OmluaXRpYXRvckZvcihUYWdJZCB0YWdJZCkK
IHsKQEAgLTE0NywyOCArMTQ5LDQyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlcXVlc3Qu
cmVsZWFzZSgpOwogICAgIH0KIAorc3RhdGljIGJvb2wgbWF0Y2goY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIHJldHVybiBxTmFtZS5sb2NhbE5hbWUoKSA9PSBuYW1lOworfQorCisj
aWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQorc3RhdGljIGJvb2wgbWF0Y2goY29uc3Qg
SFRNTElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQoreworICAg
IHJldHVybiB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2gobmFtZSwgcU5hbWUpOworfQorI2VuZGlm
CisKIHByaXZhdGU6Ci0gICAgdm9pZCBwcm9jZXNzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgYXR0
cmlidXRlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBOYW1lVHlwZT4KKyAgICB2b2lkIHByb2Nlc3NBdHRyaWJ1dGUoY29uc3QgTmFtZVR5
cGUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCiAgICAgewot
ICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIGNoYXJzZXRBdHRyKSkK
KyAgICAgICAgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIGNoYXJzZXRBdHRyKSkKICAgICAgICAg
ICAgIG1fY2hhcnNldCA9IGF0dHJpYnV0ZVZhbHVlOwogCiAgICAgICAgIGlmIChtX3RhZ0lkID09
IFNjcmlwdFRhZ0lkIHx8IG1fdGFnSWQgPT0gSW1nVGFnSWQpIHsKLSAgICAgICAgICAgIGlmICh0
aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRlTmFtZSwgc3JjQXR0cikpCisgICAgICAgICAgICBpZiAo
bWF0Y2goYXR0cmlidXRlTmFtZSwgc3JjQXR0cikpCiAgICAgICAgICAgICAgICAgc2V0VXJsVG9M
b2FkKGF0dHJpYnV0ZVZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRj
aChhdHRyaWJ1dGVOYW1lLCBjcm9zc29yaWdpbkF0dHIpICYmICFhdHRyaWJ1dGVWYWx1ZS5pc051
bGwoKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIGNyb3Nzb3Jp
Z2luQXR0cikgJiYgIWF0dHJpYnV0ZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIG1f
Y3Jvc3NPcmlnaW5Nb2RlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJp
YnV0ZVZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmIChtX3RhZ0lkID09IExpbmtUYWdJZCkgewot
ICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaChhdHRyaWJ1dGVOYW1lLCBocmVmQXR0cikp
CisgICAgICAgICAgICBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgaHJlZkF0dHIpKQogICAgICAg
ICAgICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICAgICAgICBlbHNl
IGlmICh0aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRlTmFtZSwgcmVsQXR0cikpCisgICAgICAgICAg
ICBlbHNlIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCByZWxBdHRyKSkKICAgICAgICAgICAgICAg
ICBtX2xpbmtJc1N0eWxlU2hlZXQgPSByZWxBdHRyaWJ1dGVJc1N0eWxlU2hlZXQoYXR0cmlidXRl
VmFsdWUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5h
bWUsIG1lZGlhQXR0cikpCisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1l
LCBtZWRpYUF0dHIpKQogICAgICAgICAgICAgICAgIG1fbGlua01lZGlhQXR0cmlidXRlSXNTY3Jl
ZW4gPSBsaW5rTWVkaWFBdHRyaWJ1dGVJc1NjcmVlbihhdHRyaWJ1dGVWYWx1ZSk7CiAgICAgICAg
IH0gZWxzZSBpZiAobV90YWdJZCA9PSBJbnB1dFRhZ0lkKSB7Ci0gICAgICAgICAgICBpZiAodGhy
ZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIHNyY0F0dHIpKQorICAgICAgICAgICAgaWYgKG1h
dGNoKGF0dHJpYnV0ZU5hbWUsIHNyY0F0dHIpKQogICAgICAgICAgICAgICAgIHNldFVybFRvTG9h
ZChhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2go
YXR0cmlidXRlTmFtZSwgdHlwZUF0dHIpKQorICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2goYXR0
cmlidXRlTmFtZSwgdHlwZUF0dHIpKQogICAgICAgICAgICAgICAgIG1faW5wdXRJc0ltYWdlID0g
ZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlVmFsdWUsIElucHV0VHlwZU5hbWVzOjppbWFnZSgp
KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFByZWxvYWRTY2FubmVyLmgKaW5kZXggNDdhNTQ0NGYxMGU4Y2ZkZDZiYTcwYjA2YmUwOGYyNTQ0
MDRjYzAxYi4uZDJmMmMxMTg5YzI1ZjUwZGIyOTIzZmZiMzRhNzEyNmU0MjdhM2IyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKQEAgLTg2
LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBpbmxpbmUgdm9pZCBzY2FuQ29tbW9uKGNvbnN0IFRv
a2VuJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mIHJlcXVlc3RzKTsKIAogICAgIHN0YXRpYyBUYWdJ
ZCB0YWdJZEZvcihjb25zdCBIVE1MVG9rZW46OkRhdGFWZWN0b3ImKTsKLSAgICBzdGF0aWMgVGFn
SWQgdGFnSWRGb3IoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFRhZ0lkIHRhZ0lkRm9yKGNv
bnN0IEhUTUxJZGVudGlmaWVyJik7CiAKICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYXRvckZvcihU
YWdJZCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192304</attachid>
            <date>2013-03-08 16:23:43 -0800</date>
            <delta_ts>2013-03-08 16:43:49 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-107337-20130308161946.patch</filename>
            <type>text/plain</type>
            <size>51252</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAyZTUyNDk5YzBjZGY2
ODk0ZjQ5MTRkNjQ5ZTE5M2FkYzYyMzQ4Ny4uNDYwNzEyNzEyYWFiMGU5MWNjYjdkMDU1MWYwY2E4
YTc4MjgxYjA5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw5ICsxLDg4IEBACisyMDEzLTAzLTA4ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBCYWNrZ3JvdW5kSFRNTFBhcnNl
ciBzaG91bGQgYmUgYWJsZSB0byBhdG9taXplIHdlbGwta25vd24gc3RyaW5ncworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBUZXN0aW5nIHRoaXMgcGF0Y2ggZWFz
aWx5IHJlcXVpcmVzIGFwcGx5aW5nIGJ1ZyAxMDcyMzYgbG9jYWxseQorICAgICAgICB0byByZW1v
dmUgYWxsIHRoZSByZW5kZXJpbmcgbm9pc2UgZnJvbSBQYXJzZXIvaHRtbC10aHJlYWRlZC1wYXJz
ZXIuaHRtbC4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgY2xhc3MgSFRNTElkZW50
aWZpZXIgd2hpY2ggYWxsb3dzIHVzIHRvIGF2b2lkCisgICAgICAgIGFsbG9jYXRpbmcgc3RyaW5n
cyBmb3Iga25vd24gdGFnL2F0dHJpYnV0ZSBuYW1lcyBmcm9tIEhUTUxOYW1lcy4KKworICAgICAg
ICBUaGVyZSBpcyBzdGlsbCBhIGxvdCBvZiBtZWF0IG9uIHRoaXMgYm9uZSwgYnV0IEkgdGhpbmsg
aXQncyBpbXBvcnRhbnQgdG8KKyAgICAgICAgbGFuZCBzb21ldGhpbmcgInNtYWxsaXNoIiB0byBz
dGFydCBhbmQgaXRlcmF0ZSBmcm9tIHRoZXJlLgorCisgICAgICAgIFRoaXMgdG9vayBQYXJzZXIv
aHRtbC10aHJlYWRlZC1wYXJzZXIuaHRtbCBmcm9tOgorICAgICAgICBtZWRpYW49IDQ0My43MjY1
MDAwMDIgbXMsIHN0ZGV2PSA3LjI1MDAyNjc5OTUyIG1zLCBtaW49IDQzMC4yNDQwMDAwNDcgbXMs
IG1heD0gNDU1LjUxMTAwMDAwNyBtcworICAgICAgICB0bzoKKyAgICAgICAgbWVkaWFuPSA0Mjcu
ODQ5NTAwMDA0IG1zLCBzdGRldj0gOS45Njk2NzA1ODI5MiBtcywgbWluPSA0MTcuOTE0MDAwMDQ5
IG1zLCBtYXg9IDQ2MS41MjgwMDAwMTQgbXMKKyAgICAgICAgb24gbXkgTUJQLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpBdG9taWNIVE1MVG9rZW4pOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRva2VuRXhpdHNGb3JlaWduQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjp0b2tl
bkV4aXRzU1ZHKToKKyAgICAgICAgKFdlYkNvcmU6OnRva2VuRXhpdHNNYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2VyOjpzaW11bGF0ZVRyZWVCdWlsZGVyKToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nhbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NT
UHJlbG9hZFNjYW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ1NTUHJlbG9h
ZFNjYW5uZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwOgor
ICAgICAgICAoU2FtZVNpemVBc0NvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvQ29tcGFjdEhUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFjdEhUTUxUb2tl
bjo6QXR0cmlidXRlOjpBdHRyaWJ1dGUpOgorICAgICAgICAoQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBhY3RIVE1MVG9rZW46OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cGFjdEhUTUxUb2tlbjo6cHVibGljSWRlbnRpZmllcik6CisgICAgICAgIChDb21wYWN0SFRNTFRv
a2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpzdGFydEJhY2tncm91bmRQYXJzZXIp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmlkZW50aWZpZXJUYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6aGFzSW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElkZW50aWZpZXI6OmZpbmRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpuYW1lRm9y
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50aWZpZXI6OmFzU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjphc1N0cmluZ0ltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElkZW50aWZpZXI6OmFkZE5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJZGVudGlmaWVyOjppbml0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MSWRlbnRpZmll
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSFRNTElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50aWZpZXI6OkhUTUxJZGVudGlmaWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJl
YWQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dGhyZWFkU2FmZUVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OnRocmVhZFNh
ZmVNYXRjaCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0aHJlYWRTYWZlSFRNTE5hbWVzTWF0
Y2gpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjp0YWdJZEZvcik6CisgICAgICAgIChX
ZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXI6Om1hdGNoKToKKyAg
ICAgICAgKFRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXI6OnByb2Nlc3NBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oOgorCiAy
MDEzLTAzLTA2ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBkaXNw
bGF5Om5vbmUgaWZyYW1lcyBzaG91bGQgbm90IGJ1aWxkIHJlbmRlcmluZyB0cmVlcwogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MjM2CiAKLSAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCiAKICAgICAgICAgVGhleSBkaWRuJ3QgdXNlZCB0byBidWlsZCByZW5kZXJpbmcgdHJl
ZXMuICBBdCBzb21lIHBvaW50IHRoaXMKICAgICAgICAgY2hhbmdlZCwgYW5kIGhhcyBtYWRlIHRo
ZSBQZXJmb3JtYW5jZVRlc3RzL1BhcnNlci9odG1sLXBhcnNlci5odG1sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGYzYmRiN2MyOGEwZTQ0NWY2YTFhNDI0ZTFmZDI5MjhmYWNiZmNiMjMuLjY0NWJi
ZmRlNDQyZjRmY2E5MjhlMmVhMjNiYjM4OGU3NWI3NGEwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0xNTU0LDYgKzE1NTQsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKICAgICBodG1sL3BhcnNlci9IVE1MUGFyc2VyVGhy
ZWFkLmNwcAogICAgIGh0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCisg
ICAgaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvSFRNTE1l
dGFDaGFyc2V0UGFyc2VyLmNwcAogICAgIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHAKICAgICBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCBmNTY5ZmQxODA2NzcxMTZkZjc3ZGRjODU0OGI3M2UyNjQx
NDhmMWIwLi4zMDg3N2Q2NTgyZDIwYjg5NDliMDNhNzJkZDEyZTk2MDU2NjgzZTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM2MTYsNiArMzYxNiw4IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVudGl0eVRhYmxlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3Qu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElucHV0U3RyZWFtLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDFi
NjU1ZmJlMDU0MGRiNDNmYTFiYTg1ZTI1ZWVlZGI1N2M2MDc2NzguLjI0NGJjYjFhMzBjZjc3YTcw
NmIyMTJmZmRmZjU2ZjM4OTA5MzMwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNzM1LDYgKzczNSw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIGh0bWwvcGFyc2VyL0hUTUxFbnRpdHlQYXJzZXIuY3BwIFwKICAg
ICBodG1sL3BhcnNlci9IVE1MRW50aXR5U2VhcmNoLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvSFRN
TEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAgXAorICAgIGh0bWwvcGFyc2VyL0hUTUxJZGVudGlm
aWVyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcCBcCiAg
ICAgaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgXAogICAgIGh0bWwvcGFyc2VyL0hU
TUxQYXJzZXJPcHRpb25zLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTgwYWFmNGMxMzJmOGQz
NmMwNDk0ZDk5ZDNmOWU2NTBkMTgyMWZhZi4uOThkM2FlZmYxODhmZmMxMzJhMjMyODhhN2Y2ZjFk
MGVmMTZhZjg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzUwNSw2ICszNTA1LDggQEAKICAgICAg
ICAgICAgICdodG1sL3BhcnNlci9IVE1MRW50aXR5VGFibGUuaCcsCiAgICAgICAgICAgICAnaHRt
bC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAnLAogICAgICAgICAgICAgJ2h0
bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuaCcsCisgICAgICAgICAgICAnaHRt
bC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwJywKKyAgICAgICAgICAgICdodG1sL3BhcnNlci9I
VE1MSWRlbnRpZmllci5oJywKICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MSW5wdXRTdHJl
YW0uaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNw
cCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmgnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBlZGQw
MDE1ZDRmNTJiNzNkMWVkZWYzNGQ5MzAzOGJhNGNiNmU1MDkzLi5jNjRiZWE5NjYyMDg5N2FiZTUx
NzJmZjNlNmYzYjNjZjYyYTEwNzhkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNjUwOTAsNiArNjUwOTAsMTQgQEAKIAkJCQkJPgogCQkJCTwv
RmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEhUTUxJ
ZGVudGlmaWVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXEhUTUxJZGVudGlmaWVyLmgiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHBhcnNlclxIVE1M
SW5wdXRTdHJlYW0uaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGMxZWZmM2JkYzI3MDIxMTg1ZGYx
MmUyYTUzZGE3YmY4ZGE4YTljYWMuLmVjNDgyMTc5M2EzNTJkM2U5NjMyYTIxZDgzNjNmM2MzYjgx
MzdkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvagpAQCAtNjkyMyw2ICs2OTIzLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0
bWxccGFyc2VyXEhUTUxFbnRpdHlQYXJzZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caHRtbFxwYXJzZXJcSFRNTEVudGl0eVNlYXJjaC5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxJZGVuaXRpZmll
ci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MTWV0
YUNoYXJzZXRQYXJzZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxw
YXJzZXJcSFRNTFBhcnNlcklkaW9tcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxodG1sXHBhcnNlclxIVE1MUGFyc2VyT3B0aW9ucy5jcHAiIC8+CkBAIC0xMDM3OCw2ICsxMDM3
OSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MRW50aXR5
UGFyc2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1M
RW50aXR5U2VhcmNoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNl
clxIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxodG1sXHBhcnNlclxIVE1MSWRlbnRpZmllci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTElucHV0U3RyZWFtLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MTWV0YUNoYXJzZXRQYXJzZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxQYXJzZXJJZGlvbXMuaCIg
Lz4KQEAgLTExMTM5LDQgKzExMTQxLDQgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0
c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJF
eHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTY3OWY2MjI5NzI0NDVkNjQxMzBi
NTAxZWYwYjZkYzUwNDBjNDBmYi4uMTdjYWUzMTA1YjQyYTc5N2Q0MTMyNjcxNjMwYTNjNzJiNzUx
NDRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNDM4MCw2ICs0MzgwLDggQEAKIAkJQTg4QUQ1MkYwOTUyNEI5MjAwMUREMTk2
IC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTg1RDdBMkYwODc5RUJBOTAwNkE5MTcyIC8qIFF1YXJ0ekNvcmUu
ZnJhbWV3b3JrICovOyB9OwogCQlBODhERDQ4NzBCNDYyOUEzMDBDMDI5OTAgLyogUGF0aFRyYXZl
cnNhbFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBODhERDQ4NjBCNDYyOUEzMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmggKi87IH07
CiAJCUE4OERENDg5MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg4REQ0ODgwQjQ2
MjlCMDAwQzAyOTkwIC8qIFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgKi87IH07CisJCUE4OTU3MDlG
MTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODk1NzA5RDE2RTlCRDU5MDAxODRFNTUgLyog
SFRNTElkZW50aWZpZXIuY3BwICovOyB9OworCQlBODk1NzBBMDE2RTlCRDU5MDAxODRFNTUgLyog
SFRNTElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4OTU3MDlFMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4OTk0MzI4MEI0
MjMzODgwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTg5OTQzMjYwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcElt
YWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTg5OTQzMjkwQjQyMzM4ODAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4OTk0MzI3MEI0MjMzODcwMEQ3Qzgw
MiAvKiBCaXRtYXBJbWFnZS5jcHAgKi87IH07CiAJCUE4OUNDQzUyMEY0NEU5ODEwMEI1REExMCAv
KiBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODlDQ0M1MDBGNDRFOTgxMDBCNURBMTAgLyogUmVwbGFj
ZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwICovOyB9OwpAQCAtMTE3OTIsNiArMTE3OTQsOCBAQAog
CQlBODg2Q0RDMjE0RkJCQUEzMDBEMjc5RjQgLyogV29ya2VyQ29udGV4dFdlYlNvY2tldC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV29ya2VyQ29udGV4dFdlYlNvY2tldC5pZGw7IHBhdGgg
PSBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyQ29udGV4dFdlYlNvY2tldC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4OERENDg2MEI0NjI5QTMwMEMwMjk5MCAvKiBQYXRoVHJh
dmVyc2FsU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF0aFRyYXZl
cnNhbFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4OERENDg4MEI0NjI5
QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGF0aFRyYXZlcnNhbFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTg5NTcwOUQxNkU5QkQ1OTAwMTg0RTU1IC8qIEhUTUxJZGVudGlmaWVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhUTUxJZGVudGlmaWVy
LmNwcDsgcGF0aCA9IHBhcnNlci9IVE1MSWRlbnRpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE4OTU3MDlFMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MSWRlbnRpZmllci5oOyBwYXRo
ID0gcGFyc2VyL0hUTUxJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4OTk0MzI2MEI0MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCaXRtYXBJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBODk5NDMyNzBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0bWFwSW1hZ2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBODlDQ0M1MDBGNDRFOTgxMDBCNURBMTAgLyogUmVwbGFj
ZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTg4MjUsNiArMTg4MjksNyBAQAogCQk5N0MxRjU1MTEyMjg1NTg4MDBFREU2
MTYgLyogcGFyc2VyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQk5N0MxRjU1MjEyMjg1NUNCMDBFREU2MTcgLyogQXRvbWljSFRNTFRva2VuLmggKi8sCiAJ
CQkJOTdEQzY5RTkxNkI5RjUwRTAwOENGRDZGIC8qIEJhY2tncm91bmRIVE1MSW5wdXRTdHJlYW0u
Y3BwICovLAogCQkJCTk3REM2OUVBMTZCOUY1MEUwMDhDRkQ2RiAvKiBCYWNrZ3JvdW5kSFRNTElu
cHV0U3RyZWFtLmggKi8sCiAJCQkJOTc5REMwMzExNkE3OTkyMTAwODA3Nzk0IC8qIEJhY2tncm91
bmRIVE1MUGFyc2VyLmNwcCAqLywKQEAgLTE4ODQ3LDYgKzE4ODUyLDggQEAKIAkJCQk5NzdCMzg1
NDEyMjg4M0U5MDBCODFGRjggLyogSFRNTEVudGl0eVRhYmxlLmggKi8sCiAJCQkJOTc3QjM4NTUx
MjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwICovLAogCQkJ
CTk3N0IzODU2MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0Lmgg
Ki8sCisJCQkJQTg5NTcwOUQxNkU5QkQ1OTAwMTg0RTU1IC8qIEhUTUxJZGVudGlmaWVyLmNwcCAq
LywKKwkJCQlBODk1NzA5RTE2RTlCRDU5MDAxODRFNTUgLyogSFRNTElkZW50aWZpZXIuaCAqLywK
IAkJCQk5N0JDODQ5QTEyMzcwQTRCMDAwQzYxNjEgLyogSFRNTElucHV0U3RyZWFtLmggKi8sCiAJ
CQkJMkJFOEUyQzgxMkE1OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAg
Ki8sCiAJCQkJMkJFOEUyQzYxMkE1ODlFQzAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNl
ci5oICovLApAQCAtMTg4NzEsNyArMTg4NzgsNiBAQAogCQkJCTk3QzFGNTUyMTIyODU1Q0IwMEVE
RTYxNiAvKiBIVE1MVG9rZW4uaCAqLywKIAkJCQk5NzdCMzg1RTEyMjg4M0U5MDBCODFGRjggLyog
SFRNTFRva2VuaXplci5jcHAgKi8sCiAJCQkJOTc3QjM4NUYxMjI4ODNFOTAwQjgxRkY4IC8qIEhU
TUxUb2tlbml6ZXIuaCAqLywKLQkJCQk5N0MxRjU1MjEyMjg1NUNCMDBFREU2MTcgLyogQXRvbWlj
SFRNTFRva2VuLmggKi8sCiAJCQkJOTc3QjM3MjExMjI4NzIxNzAwQjgxRkY4IC8qIEhUTUxUcmVl
QnVpbGRlci5jcHAgKi8sCiAJCQkJOTc3QjM3MjIxMjI4NzIxNzAwQjgxRkY4IC8qIEhUTUxUcmVl
QnVpbGRlci5oICovLAogCQkJCTk3N0IzODYwMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVmlld1Nv
dXJjZVBhcnNlci5jcHAgKi8sCkBAIC0yNjY5Miw2ICsyNjY5OCw3IEBACiAJCQkJN0U2NkUyMzQx
NkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdFQTMwRjZBMTZERkZFNzUwMDI1N0QwQiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEODI4N0Y3MTZFNEEwMzgwMDg2QkQwMCAv
KiBIaXRUZXN0TG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE4OTU3MEEwMTZFOUJENTkw
MDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yOTg5NSw2ICsy
OTkwMiw3IEBACiAJCQkJN0U2NkUyMzMxNkQ2RUI2QzAwRjdFN0ZGIC8qIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VBMzBGNjkxNkRGRkU3NTAwMjU3
RDBCIC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyRDgyODdGNjE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUE4OTU3MDlGMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1MSWRlbnRpZmllci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0F0b21pY0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRvbWljSFRN
TFRva2VuLmgKaW5kZXggYTZkMjM3ZDE4OTVkZTBhYjUzZjlmNzMxOTkwMDY0NmYxNjZiZGQyOS4u
NDE1YjBkMjZjNDA0OGQ0YTcyODMzZjgzMGMzYmM2MzYwOTk0ZTM4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmgKQEAgLTE2MywxMCArMTYzLDEwIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgSFRNTFRva2VuOjpET0NUWVBFOgotICAgICAgICAgICAgbV9u
YW1lID0gdG9rZW4uZGF0YSgpOworICAgICAgICAgICAgbV9uYW1lID0gdG9rZW4uZGF0YSgpLmFz
U3RyaW5nKCk7CiAgICAgICAgICAgICBtX2RvY3R5cGVEYXRhID0gYWRvcHRQdHIobmV3IERvY3R5
cGVEYXRhKCkpOwogICAgICAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9oYXNQdWJsaWNJZGVudGlm
aWVyID0gdHJ1ZTsKLSAgICAgICAgICAgIGFwcGVuZChtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lk
ZW50aWZpZXIsIHRva2VuLnB1YmxpY0lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBhcHBlbmQo
bV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyLCB0b2tlbi5wdWJsaWNJZGVudGlmaWVy
KCkuYXNTdHJpbmcoKSk7CiAgICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlk
ZW50aWZpZXIgPSB0cnVlOwogICAgICAgICAgICAgYXBwZW5kKG1fZG9jdHlwZURhdGEtPm1fc3lz
dGVtSWRlbnRpZmllciwgdG9rZW4uc3lzdGVtSWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIG1f
ZG9jdHlwZURhdGEtPm1fZm9yY2VRdWlya3MgPSB0b2tlbi5kb2N0eXBlRm9yY2VzUXVpcmtzKCk7
CkBAIC0xNzYsNyArMTc2LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEhUTUxUb2tlbjo6U3Rh
cnRUYWc6CiAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0
b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgpKTsKICAgICAgICAgICAgIGZvciAoVmVjdG9yPENvbXBh
Y3RIVE1MVG9rZW46OkF0dHJpYnV0ZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdG9rZW4uYXR0cmli
dXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytpdCkgewot
ICAgICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgbmFtZShudWxsQXRvbSwgaXQtPm5hbWUsIG51
bGxBdG9tKTsKKyAgICAgICAgICAgICAgICBRdWFsaWZpZWROYW1lIG5hbWUobnVsbEF0b20sIGl0
LT5uYW1lLmFzU3RyaW5nKCksIG51bGxBdG9tKTsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyBOXjIgZm9yIHRoZSBudW1iZXIgb2YgYXR0cmlidXRlcy4KICAgICAgICAgICAgICAg
ICBpZiAoIWZpbmRBdHRyaWJ1dGVJblZlY3RvcihtX2F0dHJpYnV0ZXMsIG5hbWUpKQogICAgICAg
ICAgICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShuYW1lLCBpdC0+dmFs
dWUpKTsKQEAgLTE4NCwxNyArMTg0LDI0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIEZhbGwg
dGhyb3VnaCEKICAgICAgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzoKICAgICAgICAgICAgIG1f
c2VsZkNsb3NpbmcgPSB0b2tlbi5zZWxmQ2xvc2luZygpOwotICAgICAgICAgICAgbV9uYW1lID0g
dG9rZW4uZGF0YSgpOworICAgICAgICAgICAgbV9uYW1lID0gdG9rZW4uZGF0YSgpLmFzU3RyaW5n
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6
Ci0gICAgICAgICAgICBtX2RhdGEgPSB0b2tlbi5kYXRhKCk7CisgICAgICAgICAgICBtX2RhdGEg
PSB0b2tlbi5kYXRhKCkuYXNTdHJpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOgotICAgICAgICAgICAgbV9leHRlcm5hbENoYXJhY3Rl
cnMgPSB0b2tlbi5kYXRhKCkuY2hhcmFjdGVycygpOwotICAgICAgICAgICAgbV9leHRlcm5hbENo
YXJhY3RlcnNMZW5ndGggPSB0b2tlbi5kYXRhKCkubGVuZ3RoKCk7CisgICAgICAgIGNhc2UgSFRN
TFRva2VuOjpDaGFyYWN0ZXI6IHsKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nID0g
dG9rZW4uZGF0YSgpLmFzU3RyaW5nKCk7CisgICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVy
cyA9IHN0cmluZy5jaGFyYWN0ZXJzKCk7CisgICAgICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVy
c0xlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICAgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9
IHRva2VuLmlzQWxsOEJpdERhdGEoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBs
aWtlIGEgc3Ryb25nZXIgQVNTRVJUIGhlcmU6CisgICAgICAgICAgICAvLyBBU1NFUlQoc3RyaW5n
LmlzOEJpdCgpID09IHRva2VuLmlzQWxsOEJpdERhdGEoKSk7CisgICAgICAgICAgICAvLyBidXQg
Y3VycmVudGx5IHRoYXQgZmlyZXMsIGxpa2VseSBkdWUgdG8gYnVncyBpbiBIVE1MVG9rZW5pemVy
CisgICAgICAgICAgICAvLyBub3Qgc2V0dGluZyBpc0FsbDhCaXREYXRhIGluIGFsbCB0aGUgdGlt
ZXMgaXQgY291bGQuCisgICAgICAgICAgICBBU1NFUlQoIXRva2VuLmlzQWxsOEJpdERhdGEoKSB8
fCBzdHJpbmcuaXM4Qml0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAg
ICAgfQogICAgIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKaW5kZXggNjkyNWUxMDMxOTBiZDI4ZWEzNDE3OTMy
MGY5YWU5M2VjMmI3MDZjNC4uZWVmMjkzYWE1ZWNlNWUyNTVjODQ0NmI5ZjczMWJiNmFkZTliMWU4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1M
UGFyc2VyLmNwcApAQCAtNjksNjUgKzY5LDY4IEBAIHN0YXRpYyB2b2lkIGNoZWNrVGhhdFhTU0lu
Zm9zQXJlU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBYU1NJbmZvU3RyZWFtJiB4CiAK
IHN0YXRpYyBib29sIHRva2VuRXhpdHNGb3JlaWduQ29udGVudChjb25zdCBDb21wYWN0SFRNTFRv
a2VuJiB0b2tlbikKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBjb3BpZWQgZnJvbSBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQgYW5kIGNoYW5nZWQgdG8gdXNl
IHRocmVhZFNhZmVNYXRjaC4KLSAgICBjb25zdCBTdHJpbmcmIHRhZ05hbWUgPSB0b2tlbi5kYXRh
KCk7Ci0gICAgcmV0dXJuIHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBiVGFnKQotICAgICAgICB8
fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgYmlnVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZl
TWF0Y2godGFnTmFtZSwgYmxvY2txdW90ZVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIGJvZHlUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBi
clRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGNlbnRlclRhZykKLSAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGNvZGVUYWcpCi0gICAgICAgIHx8IHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBkZFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIGRpdlRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGRs
VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgZHRUYWcpCi0gICAgICAg
IHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBlbVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2Fm
ZU1hdGNoKHRhZ05hbWUsIGVtYmVkVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFn
TmFtZSwgaDFUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBoMlRhZykK
LSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGgzVGFnKQotICAgICAgICB8fCB0
aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaDRUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRj
aCh0YWdOYW1lLCBoNVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGg2
VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaGVhZFRhZykKLSAgICAg
ICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGhyVGFnKQotICAgICAgICB8fCB0aHJlYWRT
YWZlTWF0Y2godGFnTmFtZSwgaVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05h
bWUsIGltZ1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGxpVGFnKQot
ICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbGlzdGluZ1RhZykKLSAgICAgICAg
fHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG1lbnVUYWcpCi0gICAgICAgIHx8IHRocmVhZFNh
ZmVNYXRjaCh0YWdOYW1lLCBtZXRhVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFn
TmFtZSwgbm9iclRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG9sVGFn
KQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgcFRhZykKLSAgICAgICAgfHwg
dGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHByZVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1h
dGNoKHRhZ05hbWUsIHJ1YnlUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBzVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc21hbGxUYWcpCi0g
ICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBzcGFuVGFnKQotICAgICAgICB8fCB0
aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc3Ryb25nVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZl
TWF0Y2godGFnTmFtZSwgc3RyaWtlVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFn
TmFtZSwgc3ViVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc3VwVGFn
KQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgdGFibGVUYWcpCi0gICAgICAg
IHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0dFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2Fm
ZU1hdGNoKHRhZ05hbWUsIHVUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCB1bFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHZhclRhZykKLSAg
ICAgICAgfHwgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBmb250VGFnKSAmJiAodG9rZW4uZ2V0
QXR0cmlidXRlSXRlbShjb2xvckF0dHIpIHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oZmFjZUF0
dHIpIHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oc2l6ZUF0dHIpKSk7CisgICAgLy8gRklYTUU6
IFRoaXMgaXMgY29waWVkIGZyb20gSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVp
Z25Db250ZW50IGFuZCBjaGFuZ2VkIHRvIHVzZSB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2guCisg
ICAgY29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CisgICAgcmV0
dXJuIHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiVGFnKQorICAgICAgICB8fCB0
aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYmlnVGFnKQorICAgICAgICB8fCB0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYmxvY2txdW90ZVRhZykKKyAgICAgICAgfHwg
dGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJvZHlUYWcpCisgICAgICAgIHx8IHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBiclRhZykKKyAgICAgICAgfHwgdGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGNlbnRlclRhZykKKyAgICAgICAgfHwgdGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGNvZGVUYWcpCisgICAgICAgIHx8IHRocmVhZFNh
ZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBkZFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIGRpdlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxO
YW1lc01hdGNoKHRhZ05hbWUsIGRsVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgZHRUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRj
aCh0YWdOYW1lLCBlbVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRh
Z05hbWUsIGVtYmVkVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgaDFUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCBoMlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGgz
VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaDRUYWcp
CisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoNVRhZykKKyAg
ICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGg2VGFnKQorICAgICAg
ICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaGVhZFRhZykKKyAgICAgICAg
fHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGhyVGFnKQorICAgICAgICB8fCB0
aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaVRhZykKKyAgICAgICAgfHwgdGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGltZ1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2Fm
ZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGxpVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRN
TE5hbWVzTWF0Y2godGFnTmFtZSwgbGlzdGluZ1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIG1lbnVUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1M
TmFtZXNNYXRjaCh0YWdOYW1lLCBtZXRhVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgbm9iclRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1l
c01hdGNoKHRhZ05hbWUsIG9sVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0
Y2godGFnTmFtZSwgcFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRh
Z05hbWUsIHByZVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIHJ1YnlUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCBzVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc21h
bGxUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzcGFu
VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3Ryb25n
VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3RyaWtl
VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3ViVGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3VwVGFnKQor
ICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdGFibGVUYWcpCisg
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0dFRhZykKKyAgICAg
ICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHVUYWcpCisgICAgICAgIHx8
IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB1bFRhZykKKyAgICAgICAgfHwgdGhy
ZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHZhclRhZykKKyAgICAgICAgfHwgKHRocmVh
ZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBmb250VGFnKSAmJiAodG9rZW4uZ2V0QXR0cmli
dXRlSXRlbShjb2xvckF0dHIpIHx8IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oZmFjZUF0dHIpIHx8
IHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oc2l6ZUF0dHIpKSk7CiB9CiAKIHN0YXRpYyBib29sIHRv
a2VuRXhpdHNTVkcoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgY29uc3Qg
U3RyaW5nJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5n
Q2FzZSh0YWdOYW1lLCBTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZy5sb2NhbE5hbWUoKSk7Cisg
ICAgLy8gRklYTUU6IEl0J3MgdmVyeSBmcmFnaWxlIHRoYXQgd2Ugc3BlY2lhbCBjYXNlIGZvcmVp
Z25PYmplY3QgaGVyZSB0byBiZSBjYXNlLWluc2Vuc2l0aXZlLgorICAgIC8vIEZJWE1FOiBVc2lu
ZyBDYXNlRm9sZGluZ0hhc2g6OmVxdWFsIGluc3RlYWQgb2YgZXF1YWxJZ25vcmluZ0Nhc2UsIGFz
IGVxdWFsSWdub3JpbmdDYXNlCisgICAgLy8gd2FudHMgbm9uLWNvbnN0IFN0cmluZ0ltcGwqIChl
dmVuIHRob3VnaCBpdCBuZXZlciBtb2RpZmllcyB0aGVtKS4KKyAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExODkyIGlzIGZvciBmaXhpbmcgZXF1YWxJZ25v
cmluZ0Nhc2UuCisgICAgcmV0dXJuIENhc2VGb2xkaW5nSGFzaDo6ZXF1YWwodG9rZW4uZGF0YSgp
LmFzU3RyaW5nSW1wbCgpLCBTVkdOYW1lczo6Zm9yZWlnbk9iamVjdFRhZy5sb2NhbE5hbWUoKS5p
bXBsKCkpOwogfQogCiBzdGF0aWMgYm9vbCB0b2tlbkV4aXRzTWF0aChjb25zdCBDb21wYWN0SFRN
TFRva2VuJiB0b2tlbikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBjb3BpZWQgZnJvbSBIVE1M
RWxlbWVudFN0YWNrOjppc01hdGhNTFRleHRJbnRlZ3JhdGlvblBvaW50IGFuZCBjaGFuZ2VkIHRv
IHVzZSB0aHJlYWRTYWZlTWF0Y2guCi0gICAgY29uc3QgU3RyaW5nJiB0YWdOYW1lID0gdG9rZW4u
ZGF0YSgpOworICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lID0gdG9rZW4uZGF0YSgp
OwogICAgIHJldHVybiB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1pVGFn
KQogICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1vVGFn
KQogICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1uVGFn
KQpAQCAtMjAzLDcgKzIwNiw3IEBAIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6Om1hcmtFbmRP
ZkZpbGUoKQogYm9vbCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRlcihj
b25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBpZiAodG9rZW4udHlwZSgpID09
IEhUTUxUb2tlbjo6U3RhcnRUYWcpIHsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB0YWdOYW1lID0g
dG9rZW4uZGF0YSgpOworICAgICAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFtZSA9IHRv
a2VuLmRhdGEoKTsKICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBTVkdOYW1l
czo6c3ZnVGFnKSkKICAgICAgICAgICAgIG1fbmFtZXNwYWNlU3RhY2suYXBwZW5kKFNWRyk7CiAg
ICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgTWF0aE1MTmFtZXM6Om1hdGhUYWcp
KQpAQCAtMjE1LDMwICsyMTgsMzAgQEAgYm9vbCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxh
dGVUcmVlQnVpbGRlcihjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAg
IG1fbmFtZXNwYWNlU3RhY2suYXBwZW5kKEhUTUwpOwogICAgICAgICBpZiAoIWluRm9yZWlnbkNv
bnRlbnQoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIGNvcHkgb2Yg
VG9rZW5pemVyOjp1cGRhdGVTdGF0ZUZvciB3aGljaCB1c2VzIHRocmVhZFNhZmVNYXRjaGVzLgot
ICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0ZXh0YXJlYVRhZykgfHwg
dGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHRpdGxlVGFnKSkKKyAgICAgICAgICAgIGlmICh0aHJl
YWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdGV4dGFyZWFUYWcpIHx8IHRocmVhZFNhZmVI
VE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0aXRsZVRhZykpCiAgICAgICAgICAgICAgICAgbV90b2tl
bml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJDREFUQVN0YXRlKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBwbGFpbnRleHRUYWcpKQorICAgICAg
ICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHBsYWludGV4
dFRhZykpCiAgICAgICAgICAgICAgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6
ZXI6OlBMQUlOVEVYVFN0YXRlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRj
aCh0YWdOYW1lLCBzY3JpcHRUYWcpKQorICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIHNjcmlwdFRhZykpCiAgICAgICAgICAgICAgICAgbV90b2tl
bml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlNjcmlwdERhdGFTdGF0ZSk7Ci0gICAgICAg
ICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc3R5bGVUYWcpCi0gICAgICAg
ICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGlmcmFtZVRhZykKLSAgICAgICAg
ICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgeG1wVGFnKQotICAgICAgICAgICAg
ICAgIHx8ICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbm9lbWJlZFRhZykgJiYgbV9vcHRpb25z
LnBsdWdpbnNFbmFibGVkKQotICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCBub2ZyYW1lc1RhZykKLSAgICAgICAgICAgICAgICB8fCAodGhyZWFkU2FmZU1hdGNoKHRh
Z05hbWUsIG5vc2NyaXB0VGFnKSAmJiBtX29wdGlvbnMuc2NyaXB0RW5hYmxlZCkpCisgICAgICAg
ICAgICBlbHNlIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc3R5bGVUYWcp
CisgICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGlm
cmFtZVRhZykKKyAgICAgICAgICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgeG1wVGFnKQorICAgICAgICAgICAgICAgIHx8ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0
Y2godGFnTmFtZSwgbm9lbWJlZFRhZykgJiYgbV9vcHRpb25zLnBsdWdpbnNFbmFibGVkKQorICAg
ICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBub2ZyYW1l
c1RhZykKKyAgICAgICAgICAgICAgICB8fCAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIG5vc2NyaXB0VGFnKSAmJiBtX29wdGlvbnMuc2NyaXB0RW5hYmxlZCkpCiAgICAgICAgICAg
ICAgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRTdGF0ZSk7
CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6
RW5kVGFnKSB7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsK
KyAgICAgICAgY29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CiAg
ICAgICAgIGlmICgobV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gU1ZHICYmIHRocmVhZFNhZmVN
YXRjaCh0YWdOYW1lLCBTVkdOYW1lczo6c3ZnVGFnKSkKICAgICAgICAgICAgIHx8IChtX25hbWVz
cGFjZVN0YWNrLmxhc3QoKSA9PSBNYXRoTUwgJiYgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1h
dGhNTE5hbWVzOjptYXRoVGFnKSkKICAgICAgICAgICAgIHx8IChtX25hbWVzcGFjZVN0YWNrLmNv
bnRhaW5zKFNWRykgJiYgbV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gSFRNTCAmJiB0b2tlbkV4
aXRzU1ZHKHRva2VuKSkKICAgICAgICAgICAgIHx8IChtX25hbWVzcGFjZVN0YWNrLmNvbnRhaW5z
KE1hdGhNTCkgJiYgbV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gSFRNTCAmJiB0b2tlbkV4aXRz
TWF0aCh0b2tlbikpKQogICAgICAgICAgICAgbV9uYW1lc3BhY2VTdGFjay5yZW1vdmVMYXN0KCk7
Ci0gICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkgeworICAg
ICAgICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHNjcmlwdFRhZykpIHsK
ICAgICAgICAgICAgIGlmICghaW5Gb3JlaWduQ29udGVudCgpKQogICAgICAgICAgICAgICAgIG1f
dG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpEYXRhU3RhdGUpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
Q1NTUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJl
bG9hZFNjYW5uZXIuY3BwCmluZGV4IDBjNjZmYzFhYzlmZmE2NDlmNTNiZDE4NDM0NjNhYjI2ZTQy
ZmRlNTEuLmE2MGI5MGNkZDU4NDE0YzMzYmUzOWVjNGI0NWFkNzJkM2YzYjZkNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDU1NQcmVsb2FkU2Nhbm5lci5oIgogCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgorI2luY2x1ZGUgIkhUTUxJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC02NCwxNiArNjUsMTkgQEAgdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nhbihjb25z
dCBIVE1MVG9rZW46OkRhdGFWZWN0b3ImIGRhdGEsIFByZWxvYWRSZXF1ZXN0U3QKICAgICBzY2Fu
Q29tbW9uKGRhdGEuZGF0YSgpLCBkYXRhLmRhdGEoKSArIGRhdGEuc2l6ZSgpLCByZXF1ZXN0cyk7
CiB9CiAKLXZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OnNjYW4oY29uc3QgU3RyaW5nJiBkYXRhLCBQ
cmVsb2FkUmVxdWVzdFN0cmVhbSYgcmVxdWVzdHMpCisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxf
UEFSU0VSKQordm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nhbihjb25zdCBIVE1MSWRlbnRpZmll
ciYgaWRlbnRpZmllciwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mIHJlcXVlc3RzKQogewotICAgIGlm
IChkYXRhLmlzOEJpdCgpKSB7Ci0gICAgICAgIGNvbnN0IExDaGFyKiBiZWdpbiA9IGRhdGEuY2hh
cmFjdGVyczgoKTsKLSAgICAgICAgc2NhbkNvbW1vbihiZWdpbiwgYmVnaW4gKyBkYXRhLmxlbmd0
aCgpLCByZXF1ZXN0cyk7CisgICAgY29uc3QgU3RyaW5nSW1wbCogZGF0YSA9IGlkZW50aWZpZXIu
YXNTdHJpbmdJbXBsKCk7CisgICAgaWYgKGRhdGEtPmlzOEJpdCgpKSB7CisgICAgICAgIGNvbnN0
IExDaGFyKiBiZWdpbiA9IGRhdGEtPmNoYXJhY3RlcnM4KCk7CisgICAgICAgIHNjYW5Db21tb24o
YmVnaW4sIGJlZ2luICsgZGF0YS0+bGVuZ3RoKCksIHJlcXVlc3RzKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBjb25zdCBVQ2hhciogYmVnaW4gPSBkYXRhLmNoYXJhY3RlcnMxNigpOwot
ICAgIHNjYW5Db21tb24oYmVnaW4sIGJlZ2luICsgZGF0YS5sZW5ndGgoKSwgcmVxdWVzdHMpOwor
ICAgIGNvbnN0IFVDaGFyKiBiZWdpbiA9IGRhdGEtPmNoYXJhY3RlcnMxNigpOworICAgIHNjYW5D
b21tb24oYmVnaW4sIGJlZ2luICsgZGF0YS0+bGVuZ3RoKCksIHJlcXVlc3RzKTsKIH0KKyNlbmRp
ZgogCiBpbmxpbmUgdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6dG9rZW5pemUoVUNoYXIgYykKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5oCmluZGV4
IDRiNjliYzMyMzU2YjRjMjE4MTMzZmIxM2RjYTQyMTBmYjNiNmY2YTQuLjljMjA5MTAxMWQwNzI3
ZTllYzY1Zjk3ZDVjYTlkNzAwODVhNzE0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuaApAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIEhUTUxJZGVudGlmaWVyOworCiBjbGFzcyBDU1NQcmVsb2FkU2Nh
bm5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTUHJlbG9hZFNjYW5uZXIpOwogcHVi
bGljOgpAQCAtNDIsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgpOwogCiAgICAg
dm9pZCBzY2FuKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlY3RvciYsIFByZWxvYWRSZXF1ZXN0U3Ry
ZWFtJik7Ci0gICAgdm9pZCBzY2FuKGNvbnN0IFN0cmluZyYsIFByZWxvYWRSZXF1ZXN0U3RyZWFt
Jik7CisgICAgdm9pZCBzY2FuKGNvbnN0IEhUTUxJZGVudGlmaWVyJiwgUHJlbG9hZFJlcXVlc3RT
dHJlYW0mKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIFN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKaW5kZXggYjQ3ODhhMDdlNWEwNmYy
MWQ0NTgwOWVhYWY3Yjk2ZWExOGQ4MTAzNC4uNzZkZGM2YjZjNzZlM2E1NTBjNDZlY2VkMDY5MGM5
MDhhMjUzZDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFj
dEhUTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhU
TUxUb2tlbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgU2FtZVNpemVBc0NvbXBhY3RIVE1MVG9rZW4gIHsKICAgICB1bnNpZ25lZCBiaXRmaWVsZHM7
Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgSFRNTElkZW50aWZpZXIgZGF0YTsKICAgICBWZWN0b3I8
QXR0cmlidXRlPiB2ZWN0b3I7CiAgICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbjsKIH07CkBA
IC01NiwxMCArNTYsMTAgQEAgQ29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbihjb25z
dCBIVE1MVG9rZW4qIHRva2VuLCBjb25zdCBUZXh0UG9zaXRpb24mIHQKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSFRNTFRva2VuOjpET0NU
WVBFOiB7Ci0gICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi0+bmFtZSgpKTsKKyAgICAgICAg
bV9kYXRhID0gSFRNTElkZW50aWZpZXIodG9rZW4tPm5hbWUoKSwgTGlrZWx5OEJpdCk7CiAgICAg
ICAgIC8vIFRoZXJlIGlzIG9ubHkgMSBET0NUWVBFIHRva2VuIHBlciBkb2N1bWVudCwgc28gdG8g
YXZvaWQgaW5jcmVhc2luZyB0aGUKICAgICAgICAgLy8gc2l6ZSBvZiBDb21wYWN0SFRNTFRva2Vu
LCB3ZSBqdXN0IHVzZSB0aGUgbV9hdHRyaWJ1dGVzIHZlY3Rvci4KLSAgICAgICAgbV9hdHRyaWJ1
dGVzLmFwcGVuZChBdHRyaWJ1dGUoU3RyaW5nKHRva2VuLT5wdWJsaWNJZGVudGlmaWVyKCkpLCBT
dHJpbmcodG9rZW4tPnN5c3RlbUlkZW50aWZpZXIoKSkpKTsKKyAgICAgICAgbV9hdHRyaWJ1dGVz
LmFwcGVuZChBdHRyaWJ1dGUoSFRNTElkZW50aWZpZXIodG9rZW4tPnB1YmxpY0lkZW50aWZpZXIo
KSwgTGlrZWx5OEJpdCksIFN0cmluZyh0b2tlbi0+c3lzdGVtSWRlbnRpZmllcigpKSkpOwogICAg
ICAgICBtX2RvY3R5cGVGb3JjZXNRdWlya3MgPSB0b2tlbi0+Zm9yY2VRdWlya3MoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpAQCAtNjgsMTkgKzY4LDE3IEBAIENvbXBhY3RIVE1MVG9rZW46OkNv
bXBhY3RIVE1MVG9rZW4oY29uc3QgSFRNTFRva2VuKiB0b2tlbiwgY29uc3QgVGV4dFBvc2l0aW9u
JiB0CiAgICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFnOgogICAgICAgICBtX2F0dHJpYnV0ZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b2tlbi0+YXR0cmlidXRlcygpLnNpemUoKSk7CiAgICAg
ICAgIGZvciAoVmVjdG9yPEhUTUxUb2tlbjo6QXR0cmlidXRlPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSB0b2tlbi0+YXR0cmlidXRlcygpLmJlZ2luKCk7IGl0ICE9IHRva2VuLT5hdHRyaWJ1dGVzKCku
ZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShT
dHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShpdC0+bmFtZSksIFN0cmluZ0ltcGw6OmNy
ZWF0ZThCaXRJZlBvc3NpYmxlKGl0LT52YWx1ZSkpKTsKKyAgICAgICAgICAgIG1fYXR0cmlidXRl
cy5hcHBlbmQoQXR0cmlidXRlKEhUTUxJZGVudGlmaWVyKGl0LT5uYW1lLCBMaWtlbHk4Qml0KSwg
U3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoaXQtPnZhbHVlKSkpOwogICAgICAgICAv
LyBGYWxsIHRocm91Z2ghCiAgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzoKICAgICAgICAgbV9z
ZWxmQ2xvc2luZyA9IHRva2VuLT5zZWxmQ2xvc2luZygpOwogICAgICAgICAvLyBGYWxsIHRocm91
Z2ghCiAgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6Ci0gICAgY2FzZSBIVE1MVG9rZW46OkNo
YXJhY3RlcjoKLSAgICAgICAgaWYgKHRva2VuLT5pc0FsbDhCaXREYXRhKCkpIHsKLSAgICAgICAg
ICAgIG1fZGF0YSA9IFN0cmluZzo6bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UodG9rZW4tPmRhdGEo
KSk7Ci0gICAgICAgICAgICBtX2lzQWxsOEJpdERhdGEgPSB0cnVlOwotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi0+ZGF0YSgpKTsKKyAgICBjYXNlIEhU
TUxUb2tlbjo6Q2hhcmFjdGVyOiB7CisgICAgICAgIG1faXNBbGw4Qml0RGF0YSA9IHRva2VuLT5p
c0FsbDhCaXREYXRhKCk7CisgICAgICAgIG1fZGF0YSA9IEhUTUxJZGVudGlmaWVyKHRva2VuLT5k
YXRhKCksIHRva2VuLT5pc0FsbDhCaXREYXRhKCkgPyBGb3JjZThCaXQgOiBGb3JjZTE2Qml0KTsK
ICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0NvbXBhY3RIVE1MVG9rZW4uaAppbmRleCBjODk4ZjZlNmYxNGVjODkxMmIzMmZhMTMxNWM3Nzhh
ODdlMzk4OTgzLi5mZmE0YWU0M2NkMWYzZWJmMGUzZWJjM2U4OWVhNDk0ZjYyZjUzMzA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAKKyNpbmNsdWRl
ICJIVE1MSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtNDQsMTMgKzQ1LDEz
IEBAIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBDb21wYWN0SFRNTFRva2VuIHsKIHB1Ymxp
YzoKICAgICBzdHJ1Y3QgQXR0cmlidXRlIHsKLSAgICAgICAgQXR0cmlidXRlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICAgICAgQXR0cmlidXRlKGNvbnN0IEhU
TUxJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICAgICAgOiBu
YW1lKG5hbWUpCiAgICAgICAgICAgICAsIHZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgSFRNTElkZW50aWZpZXIgbmFtZTsK
ICAgICAgICAgU3RyaW5nIHZhbHVlOwogICAgIH07CiAKQEAgLTU5LDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CiAKICAgICBI
VE1MVG9rZW46OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUb2tl
bjo6VHlwZT4obV90eXBlKTsgfQotICAgIGNvbnN0IFN0cmluZyYgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YTsgfQorICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhOyB9CiAgICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0IHsgcmV0dXJuIG1f
c2VsZkNsb3Npbmc7IH0KICAgICBib29sIGlzQWxsOEJpdERhdGEoKSBjb25zdCB7IHJldHVybiBt
X2lzQWxsOEJpdERhdGE7IH0KICAgICBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQpAQCAtNjgsNyArNjksNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBUaGVyZSBpcyBvbmx5IDEgRE9DVFlQRSB0b2tlbiBwZXIgZG9jdW1lbnQs
IHNvIHRvIGF2b2lkIGluY3JlYXNpbmcgdGhlCiAgICAgLy8gc2l6ZSBvZiBDb21wYWN0SFRNTFRv
a2VuLCB3ZSBqdXN0IHVzZSB0aGUgbV9hdHRyaWJ1dGVzIHZlY3Rvci4KLSAgICBjb25zdCBTdHJp
bmcmIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXNbMF0ubmFt
ZTsgfQorICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9hdHRyaWJ1dGVzWzBdLm5hbWU7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3Rl
bUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXNbMF0udmFsdWU7IH0KICAg
ICBib29sIGRvY3R5cGVGb3JjZXNRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX2RvY3R5cGVGb3Jj
ZXNRdWlya3M7IH0KIApAQCAtNzgsNyArNzksNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
aXNBbGw4Qml0RGF0YSA6IDE7CiAgICAgdW5zaWduZWQgbV9kb2N0eXBlRm9yY2VzUXVpcmtzOiAx
OwogCi0gICAgU3RyaW5nIG1fZGF0YTsgLy8gIm5hbWUiLCAiY2hhcmFjdGVycyIsIG9yICJkYXRh
IiBkZXBlbmRpbmcgb24gbV90eXBlCisgICAgSFRNTElkZW50aWZpZXIgbV9kYXRhOyAvLyAibmFt
ZSIsICJjaGFyYWN0ZXJzIiwgb3IgImRhdGEiIGRlcGVuZGluZyBvbiBtX3R5cGUKICAgICBWZWN0
b3I8QXR0cmlidXRlPiBtX2F0dHJpYnV0ZXM7CiAgICAgVGV4dFBvc2l0aW9uIG1fdGV4dFBvc2l0
aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCmluZGV4IGIwNGVmNWI4NWY5MjZjMTk3ZTkwMmQwZDk5N2JmZjAzZDg0ZTg5ZmYu
LjI2M2M0ZWY3ZmExNDBjODVkYjYzZWY3YWQwYjQwNDQ1MGU3NDJmZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VyU2NoZWR1bGVyLmgiCiAjaW5j
bHVkZSAiSFRNTFBhcnNlclRocmVhZC5oIgpAQCAtNjYzLDYgKzY2NCw4IEBAIHZvaWQgSFRNTERv
Y3VtZW50UGFyc2VyOjpzdGFydEJhY2tncm91bmRQYXJzZXIoKQogICAgIEFTU0VSVCghbV9oYXZl
QmFja2dyb3VuZFBhcnNlcik7CiAgICAgbV9oYXZlQmFja2dyb3VuZFBhcnNlciA9IHRydWU7CiAK
KyAgICBIVE1MSWRlbnRpZmllcjo6aW5pdCgpOworCiAgICAgUmVmUHRyPFdlYWtSZWZlcmVuY2U8
QmFja2dyb3VuZEhUTUxQYXJzZXI+ID4gcmVmZXJlbmNlID0gV2Vha1JlZmVyZW5jZTxCYWNrZ3Jv
dW5kSFRNTFBhcnNlcj46OmNyZWF0ZVVuYm91bmQoKTsKICAgICBtX2JhY2tncm91bmRQYXJzZXIg
PSBXZWFrUHRyPEJhY2tncm91bmRIVE1MUGFyc2VyPihyZWZlcmVuY2UpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E4ZWM2
ZDA3NDI5NzNmZWFjMGZhNzZhMTlkMWZmZTlmNmM3NTUyZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcApAQCAtMCwwICsxLDE1
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdP
T0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisK
KyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5oIgorCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCit0eXBlZGVmIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
U3RyaW5nSW1wbCo+IElkZW50aWZpZXJFbnRyeTsKK3R5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwg
SWRlbnRpZmllckVudHJ5LCBBbHJlYWR5SGFzaGVkPiBJZGVudGlmaWVyVGFibGU7CisKK3Vuc2ln
bmVkIEhUTUxJZGVudGlmaWVyOjptYXhOYW1lTGVuZ3RoID0gMDsKKworc3RhdGljIElkZW50aWZp
ZXJUYWJsZSYgaWRlbnRpZmllclRhYmxlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKElk
ZW50aWZpZXJUYWJsZSwgdGFibGUsICgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkgfHwg
IXRhYmxlLmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIHRhYmxlOworfQorCisjaWZuZGVmIE5ERUJV
RworYm9vbCBIVE1MSWRlbnRpZmllcjo6aGFzSW5kZXgoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5n
KQoreworICAgIGNvbnN0IElkZW50aWZpZXJUYWJsZSYgdGFibGUgPSBpZGVudGlmaWVyVGFibGUo
KTsKKyAgICByZXR1cm4gdGFibGUuY29udGFpbnMoc3RyaW5nLT5oYXNoKCkpOworfQorI2VuZGlm
CisKK3Vuc2lnbmVkIEhUTUxJZGVudGlmaWVyOjpmaW5kSW5kZXgoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHRyeSBo
YXNoaW5nIGlmIHdlIGtub3cgdGhlIHN0cmluZyBpcyB0b28gbG9uZy4KKyAgICBpZiAobGVuZ3Ro
ID4gbWF4TmFtZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGludmFsaWRJbmRleDsKKyAgICAvLyBj
b21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyBpcyB0aGUgZnVuY3Rpb24gU3RyaW5nSW1wbDo6aGFz
aCgpIHVzZXMuCisgICAgdW5zaWduZWQgaGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hB
bmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICBjb25zdCBJZGVudGlmaWVy
VGFibGUmIHRhYmxlID0gaWRlbnRpZmllclRhYmxlKCk7CisgICAgQVNTRVJUKCF0YWJsZS5pc0Vt
cHR5KCkpOworCisgICAgSWRlbnRpZmllclRhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IHRhYmxl
LmZpbmQoaGFzaCk7CisgICAgaWYgKGl0ID09IHRhYmxlLmVuZCgpKQorICAgICAgICByZXR1cm4g
aW52YWxpZEluZGV4OworICAgIHJldHVybiBpdC0+dmFsdWUuZmlyc3Q7Cit9CisKK2NvbnN0IHVu
c2lnbmVkIGtIVE1MTmFtZXNJbmRleE9mZnNldCA9IDA7Citjb25zdCB1bnNpZ25lZCBrSFRNTEF0
dHJzSW5kZXhPZmZzZXQgPSAxMDAwOworQ09NUElMRV9BU1NFUlQoa0hUTUxBdHRyc0luZGV4T2Zm
c2V0ID4gSFRNTFRhZ3NDb3VudCwga0hUTUxBdHRyc0luZGV4T2Zmc2V0X3Nob3VsZF9iZV9sYXJn
ZXJfdGhhbl9IVE1MVGFnc0NvdW50KTsKKworc3RhdGljIGNvbnN0IFN0cmluZyYgbmFtZUZvcklu
ZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIHVuc2lnbmVkIGFkanVzdGVkSW5kZXg7CisgICAg
UXVhbGlmaWVkTmFtZSoqIG5hbWVzOworICAgIGlmIChpbmRleCA8IGtIVE1MQXR0cnNJbmRleE9m
ZnNldCkgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBrSFRNTE5hbWVzSW5kZXhPZmZzZXQgKyBI
VE1MVGFnc0NvdW50KTsKKyAgICAgICAgYWRqdXN0ZWRJbmRleCA9IGluZGV4IC0ga0hUTUxOYW1l
c0luZGV4T2Zmc2V0OworICAgICAgICBuYW1lcyA9IGdldEhUTUxUYWdzKCk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwga0hUTUxBdHRyc0luZGV4T2Zmc2V0ICsgSFRNTEF0
dHJzQ291bnQpOworICAgICAgICBhZGp1c3RlZEluZGV4ID0gaW5kZXggLSBrSFRNTEF0dHJzSW5k
ZXhPZmZzZXQ7CisgICAgICAgIG5hbWVzID0gZ2V0SFRNTEF0dHJzKCk7CisgICAgfQorICAgIC8v
IEhUTUxBdHRycyBhbmQgSFRNTE5hbWVzIG1heSBoYXZlIGNvbGxpc2lvbnMsIGJ1dAorICAgIC8v
IHdlIHNob3VsZG4ndCBjYXJlIHdoaWNoIHdlIGVuZGVkIHVwIHN0b3JpbmcsIHNpbmNlIHRoZWly
CisgICAgLy8gY29tcG9uZW50cyBhcmUgYWxsIEF0b21pY1N0cmluZ3MgYW5kIHNob3VsZCB1c2Ug
dGhlIHNhbWUKKyAgICAvLyB1bmRlcmx5aW5nIFN0cmluZ0ltcGwqLgorICAgIHJldHVybiBuYW1l
c1thZGp1c3RlZEluZGV4XS0+bG9jYWxOYW1lKCkuc3RyaW5nKCk7Cit9CisKK2NvbnN0IFN0cmlu
ZyYgSFRNTElkZW50aWZpZXI6OmFzU3RyaW5nKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIGlmIChtX2luZGV4ICE9IGludmFsaWRJbmRleCkKKyAgICAgICAgcmV0
dXJuIG5hbWVGb3JJbmRleChtX2luZGV4KTsKKyAgICByZXR1cm4gbV9zdHJpbmc7Cit9CisKK2Nv
bnN0IFN0cmluZ0ltcGwqIEhUTUxJZGVudGlmaWVyOjphc1N0cmluZ0ltcGwoKSBjb25zdAorewor
ICAgIGlmIChtX2luZGV4ICE9IGludmFsaWRJbmRleCkKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JJ
bmRleChtX2luZGV4KS5pbXBsKCk7CisgICAgcmV0dXJuIG1fc3RyaW5nLmltcGwoKTsKK30KKwor
dm9pZCBIVE1MSWRlbnRpZmllcjo6YWRkTmFtZXMoUXVhbGlmaWVkTmFtZSoqIG5hbWVzLCB1bnNp
Z25lZCBuYW1lc0NvdW50LCB1bnNpZ25lZCBpbmRleE9mZnNldCkKK3sKKyAgICBJZGVudGlmaWVy
VGFibGUmIHRhYmxlID0gaWRlbnRpZmllclRhYmxlKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG5hbWVzQ291bnQ7ICsraSkgeworICAgICAgICBTdHJpbmdJbXBsKiBuYW1lID0gbmFt
ZXNbaV0tPmxvY2FsTmFtZSgpLmltcGwoKTsKKyAgICAgICAgdW5zaWduZWQgaGFzaCA9IG5hbWUt
Pmhhc2goKTsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBpICsgaW5kZXhPZmZzZXQ7CisgICAg
ICAgIElkZW50aWZpZXJFbnRyeSBlbnRyeShpbmRleCwgbmFtZSk7CisgICAgICAgIElkZW50aWZp
ZXJUYWJsZTo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IHRhYmxlLmFkZChoYXNoLCBlbnRyeSk7Cisg
ICAgICAgIG1heE5hbWVMZW5ndGggPSBzdGQ6Om1heChtYXhOYW1lTGVuZ3RoLCBuYW1lLT5sZW5n
dGgoKSk7CisgICAgICAgIC8vIEVuc3VyZSB3ZSdyZSB1c2luZyB0aGUgc2FtZSBoYXNoaW5nIGFs
Z29yaXRobSB0byBnZXQgYW5kIHNldC4KKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
ICFhZGRSZXN1bHQuaXNOZXdFbnRyeSB8fCBIVE1MSWRlbnRpZmllcjo6ZmluZEluZGV4KG5hbWUt
PmNoYXJhY3RlcnMoKSwgbmFtZS0+bGVuZ3RoKCkpID09IGluZGV4KTsKKyAgICAgICAgLy8gV2Ug
ZXhwZWN0IHNvbWUgaGFzaCBjb2xsaXNpb25zLCBidXQgb25seSBmb3IgaWRlbnRpY2FsIHN0cmlu
Z3MuCisgICAgICAgIC8vIFNpbmNlIGFsbCBvZiB0aGVzZSBuYW1lcyBhcmUgQXRvbWljU3RyaW5n
cyBwb2ludGVycyBzaG91bGQgYmUgZXF1YWwuCisgICAgICAgIC8vIE5vdGU6IElmIHlvdSBoaXQg
dGhpcyBBU1NFUlQsIHRoZW4gd2UgaGFkIGEgaGFzaCBjb2xsaXNpb24gYW1vbmcKKyAgICAgICAg
Ly8gSFRNTE5hbWVzIHN0cmluZ3MsIGFuZCB3ZSBuZWVkIHRvIHJlLWRlc2lnbiBob3cgd2UgdXNl
IHRoaXMgaGFzaCEKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsICFhZGRSZXN1bHQu
aXNOZXdFbnRyeSB8fCBuYW1lID09IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2Vjb25kKTsK
KyAgICB9Cit9CisKK3ZvaWQgSFRNTElkZW50aWZpZXI6OmluaXQoKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7IC8vIE5vdCB0ZWNobmljYWxseSBuZWNlc3NhcnksIGJ1dCB0aGlzIGlz
IG91ciBjdXJyZW50IGV4cGVjdGVkIHVzYWdlLgorICAgIHN0YXRpYyBib29sIGlzSW5pdGlhbGl6
ZWQgPSBmYWxzZTsKKyAgICBpZiAoaXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworICAg
IGlzSW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhdG9taXpl
IHNtYWxsIHdoaXRlc3BhY2UgKFxuLCBcblxuLCBldGMuKQorICAgIGFkZE5hbWVzKGdldEhUTUxU
YWdzKCksIEhUTUxUYWdzQ291bnQsIGtIVE1MTmFtZXNJbmRleE9mZnNldCk7CisgICAgYWRkTmFt
ZXMoZ2V0SFRNTEF0dHJzKCksIEhUTUxBdHRyc0NvdW50LCBrSFRNTEF0dHJzSW5kZXhPZmZzZXQp
OworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjFm
NzQ3NGJmNTQ2ZjM0NzNlMzI1MjM0NDk4Y2QxZTI5Nzk2MDZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaApAQCAtMCwwICsxLDg5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09P
R0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSFRNTElkZW50aWZpZXJfaAorI2RlZmluZSBIVE1MSWRlbnRpZmllcl9oCisKKyNpZiBF
TkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBRdWFsaWZpZWROYW1lOworCitl
bnVtIENoYXJhY3RlcldpZHRoIHsKKyAgICBMaWtlbHk4Qml0LAorICAgIEZvcmNlOEJpdCwKKyAg
ICBGb3JjZTE2Qml0Cit9OworCitjbGFzcyBIVE1MSWRlbnRpZmllciB7CitwdWJsaWM6CisgICAg
SFRNTElkZW50aWZpZXIoKSA6IG1faW5kZXgoMCkgeyB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3Qg
aW5saW5lQ2FwYWNpdHk+CisgICAgSFRNTElkZW50aWZpZXIoY29uc3QgVmVjdG9yPFVDaGFyLCBp
bmxpbmVDYXBhY2l0eT4mIHZlY3RvciwgQ2hhcmFjdGVyV2lkdGggd2lkdGgpCisgICAgICAgIDog
bV9pbmRleChmaW5kSW5kZXgodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSkpCisgICAgewor
ICAgICAgICBpZiAobV9pbmRleCAhPSBpbnZhbGlkSW5kZXgpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGlmICh3aWR0aCA9PSBMaWtlbHk4Qml0KQorICAgICAgICAgICAgbV9zdHJpbmcg
PSBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZSh2ZWN0b3IpOworICAgICAgICBlbHNl
IGlmICh3aWR0aCA9PSBGb3JjZThCaXQpCisgICAgICAgICAgICBtX3N0cmluZyA9IFN0cmluZzo6
bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UodmVjdG9yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbV9zdHJpbmcgPSBTdHJpbmcodmVjdG9yKTsKKyAgICB9CisKKyAgICAvLyBhc1N0cmluZyBz
aG91bGQgb25seSBiZSB1c2VkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICBjb25zdCBTdHJpbmcm
IGFzU3RyaW5nKCkgY29uc3Q7CisgICAgLy8gYXNTdHJpbmdJbXBsKCkgaXMgc2FmZSB0byBjYWxs
IGZyb20gYW55IHRocmVhZC4KKyAgICBjb25zdCBTdHJpbmdJbXBsKiBhc1N0cmluZ0ltcGwoKSBj
b25zdDsKKworICAgIHN0YXRpYyB2b2lkIGluaXQoKTsKKworICAgIGJvb2wgaXNTYWZlVG9TZW5k
VG9Bbm90aGVyVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNTYWZlVG9TZW5kVG9B
bm90aGVyVGhyZWFkKCk7IH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBzdGF0aWMgYm9vbCBoYXNJ
bmRleChjb25zdCBTdHJpbmdJbXBsKik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaW52YWxpZEluZGV4ID0gLTE7CisgICAgc3RhdGljIHVuc2lnbmVkIG1h
eE5hbWVMZW5ndGg7CisgICAgc3RhdGljIHVuc2lnbmVkIGZpbmRJbmRleChjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBhZGROYW1lcyhR
dWFsaWZpZWROYW1lKiogbmFtZXMsIHVuc2lnbmVkIG5hbWVzQ291bnQsIHVuc2lnbmVkIGluZGV4
T2Zmc2V0KTsKKworICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGEgdW5pb24uCisgICAgdW5z
aWduZWQgbV9pbmRleDsKKyAgICBTdHJpbmcgbV9zdHJpbmc7Cit9OworCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCA5NDQ3Y2ZlNmM4Yjc3
N2QwMGYxOGNmODRkNmM3ZjJmYjQ5NWRkM2FiLi5iNzdkNThiMjQ3NjM1NTNiMWEyMjUzMWNmYmUx
NmYwMzdmZDYwNDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlv
bXMuaCIKIAogI2luY2x1ZGUgIkRlY2ltYWwuaCIKKyNpbmNsdWRlICJIVE1MSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTI3Nyw4ICsyNzgsMTAgQEAgYm9vbCBwYXJzZUhUTUxO
b25OZWdhdGl2ZUludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQmIHZhbHVlKQog
ICAgIHJldHVybiBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXJJbnRlcm5hbChzdGFydCwgc3Rh
cnQgKyBsZW5ndGgsIHZhbHVlKTsKIH0KIAotc3RhdGljIGJvb2wgdGhyZWFkU2FmZUVxdWFsKFN0
cmluZ0ltcGwqIGEsIFN0cmluZ0ltcGwqIGIpCitzdGF0aWMgYm9vbCB0aHJlYWRTYWZlRXF1YWwo
Y29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgU3RyaW5nSW1wbCogYikKIHsKKyAgICBpZiAoYSA9
PSBiKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoYS0+aGFzaCgpICE9IGItPmhhc2go
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBTdHJpbmdIYXNoOjplcXVhbChh
LCBiKTsKQEAgLTI4OSw5ICsyOTIsMTEgQEAgYm9vbCB0aHJlYWRTYWZlTWF0Y2goY29uc3QgUXVh
bGlmaWVkTmFtZSYgYSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYikKICAgICByZXR1cm4gdGhyZWFk
U2FmZUVxdWFsKGEubG9jYWxOYW1lKCkuaW1wbCgpLCBiLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9
CiAKLWJvb2wgdGhyZWFkU2FmZU1hdGNoKGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBR
dWFsaWZpZWROYW1lJiBxTmFtZSkKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiti
b29sIHRocmVhZFNhZmVNYXRjaChjb25zdCBIVE1MSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKIHsKLSAgICByZXR1cm4gdGhyZWFkU2FmZUVxdWFsKGxv
Y2FsTmFtZS5pbXBsKCksIHFOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgcmV0dXJuIHRo
cmVhZFNhZmVFcXVhbChsb2NhbE5hbWUuYXNTdHJpbmdJbXBsKCksIHFOYW1lLmxvY2FsTmFtZSgp
LmltcGwoKSk7CiB9CisjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5oCmluZGV4IGEwMzFlNDVjZmYzMjM1M2YxNDBhMGEyMDE5NWI5Zjlm
MzYzMjdiM2UuLmJjNTgwODkxMDY3ZTAxMzk1NjI5NWVjM2M1YWI5NGU4MDNkZWY3ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKQEAgLTI1LDYg
KzI1LDggQEAKICNpZm5kZWYgSFRNTFBhcnNlcklkaW9tc19oCiAjZGVmaW5lIEhUTUxQYXJzZXJJ
ZGlvbXNfaAogCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJRdWFsaWZp
ZWROYW1lLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CkBAIC0zMiw3ICsz
NCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERlY2ltYWw7Ci1jbGFzcyBRdWFs
aWZpZWROYW1lOwogCiAvLyBTcGFjZSBjaGFyYWN0ZXJzIGFzIGRlZmluZWQgYnkgdGhlIEhUTUwg
c3BlY2lmaWNhdGlvbi4KIGJvb2wgaXNIVE1MU3BhY2UoVUNoYXIpOwpAQCAtOTMsNyArOTQsMTYg
QEAgaW5saW5lIGJvb2wgaXNOb3RIVE1MU3BhY2UoVUNoYXIgY2hhcmFjdGVyKQogfQogCiBib29s
IHRocmVhZFNhZmVNYXRjaChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotYm9vbCB0aHJlYWRTYWZlTWF0Y2goY29uc3QgU3RyaW5nJiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKK2Jvb2wgdGhyZWFkU2Fm
ZU1hdGNoKGNvbnN0IEhUTUxJZGVudGlmaWVyJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworaW5s
aW5lIGJvb2wgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0
YWdOYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKK3sKKyAgICAvLyBXaGVuIHRoZSBR
dWFsaWZpZWROYW1lIGlzIGtub3duIHRvIEhUTUxJZGVudGlmaWVyLAorICAgIC8vIGFsbCB3ZSBo
YXZlIHRvIGRvIGlzIGEgcG9pbnRlciBjb21wYXJlLgorICAgIEFTU0VSVChIVE1MSWRlbnRpZmll
cjo6aGFzSW5kZXgocU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKSk7CisgICAgcmV0dXJuIHRhZ05h
bWUuYXNTdHJpbmdJbXBsKCkgPT0gcU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpOworfQorI2VuZGlm
CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxv
YWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHAKaW5kZXggYTU3YzVkMzg1ZTNlNzFlNzFiNTUxZDQzY2FlZDA3NTIzODM1YjMwNi4u
ZTAxMWVhMjlhMGJkZWFkN2Y4Zjk2YWI2MGRhOWQ2NGRlNjAxNmM5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC02MywyNCAr
NjMsMjYgQEAgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6VGFnSWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6
dGFnSWRGb3IoY29uc3QgSFRNTFRva2VuOjpEYXRhVmUKICAgICByZXR1cm4gVW5rbm93blRhZ0lk
OwogfQogCi1Ub2tlblByZWxvYWRTY2FubmVyOjpUYWdJZCBUb2tlblByZWxvYWRTY2FubmVyOjp0
YWdJZEZvcihjb25zdCBTdHJpbmcmIHRhZ05hbWUpCisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxf
UEFSU0VSKQorVG9rZW5QcmVsb2FkU2Nhbm5lcjo6VGFnSWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6
dGFnSWRGb3IoY29uc3QgSFRNTElkZW50aWZpZXImIHRhZ05hbWUpCiB7Ci0gICAgaWYgKHRocmVh
ZFNhZmVNYXRjaCh0YWdOYW1lLCBpbWdUYWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVz
TWF0Y2godGFnTmFtZSwgaW1nVGFnKSkKICAgICAgICAgcmV0dXJuIEltZ1RhZ0lkOwotICAgIGlm
ICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaW5wdXRUYWcpKQorICAgIGlmICh0aHJlYWRTYWZl
SFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgaW5wdXRUYWcpKQogICAgICAgICByZXR1cm4gSW5wdXRU
YWdJZDsKLSAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGxpbmtUYWcpKQorICAgIGlm
ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbGlua1RhZykpCiAgICAgICAgIHJl
dHVybiBMaW5rVGFnSWQ7Ci0gICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBzY3JpcHRU
YWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFn
KSkKICAgICAgICAgcmV0dXJuIFNjcmlwdFRhZ0lkOwotICAgIGlmICh0aHJlYWRTYWZlTWF0Y2go
dGFnTmFtZSwgc3R5bGVUYWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgc3R5bGVUYWcpKQogICAgICAgICByZXR1cm4gU3R5bGVUYWdJZDsKLSAgICBpZiAodGhy
ZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJhc2VUYWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgYmFzZVRhZykpCiAgICAgICAgIHJldHVybiBCYXNlVGFnSWQ7Ci0g
ICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0ZW1wbGF0ZVRhZykpCisgICAgaWYgKHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB0ZW1wbGF0ZVRhZykpCiAgICAgICAgIHJl
dHVybiBUZW1wbGF0ZVRhZ0lkOwogICAgIHJldHVybiBVbmtub3duVGFnSWQ7CiB9CisjZW5kaWYK
IAogU3RyaW5nIFRva2VuUHJlbG9hZFNjYW5uZXI6OmluaXRpYXRvckZvcihUYWdJZCB0YWdJZCkK
IHsKQEAgLTE0NywyOCArMTQ5LDQyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlcXVlc3Qu
cmVsZWFzZSgpOwogICAgIH0KIAorc3RhdGljIGJvb2wgbWF0Y2goY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIHJldHVybiBxTmFtZS5sb2NhbE5hbWUoKSA9PSBuYW1lOworfQorCisj
aWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQorc3RhdGljIGJvb2wgbWF0Y2goY29uc3Qg
SFRNTElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQoreworICAg
IHJldHVybiB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2gobmFtZSwgcU5hbWUpOworfQorI2VuZGlm
CisKIHByaXZhdGU6Ci0gICAgdm9pZCBwcm9jZXNzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgYXR0
cmlidXRlTmFtZSwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBOYW1lVHlwZT4KKyAgICB2b2lkIHByb2Nlc3NBdHRyaWJ1dGUoY29uc3QgTmFtZVR5
cGUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCiAgICAgewot
ICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIGNoYXJzZXRBdHRyKSkK
KyAgICAgICAgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIGNoYXJzZXRBdHRyKSkKICAgICAgICAg
ICAgIG1fY2hhcnNldCA9IGF0dHJpYnV0ZVZhbHVlOwogCiAgICAgICAgIGlmIChtX3RhZ0lkID09
IFNjcmlwdFRhZ0lkIHx8IG1fdGFnSWQgPT0gSW1nVGFnSWQpIHsKLSAgICAgICAgICAgIGlmICh0
aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRlTmFtZSwgc3JjQXR0cikpCisgICAgICAgICAgICBpZiAo
bWF0Y2goYXR0cmlidXRlTmFtZSwgc3JjQXR0cikpCiAgICAgICAgICAgICAgICAgc2V0VXJsVG9M
b2FkKGF0dHJpYnV0ZVZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVNYXRj
aChhdHRyaWJ1dGVOYW1lLCBjcm9zc29yaWdpbkF0dHIpICYmICFhdHRyaWJ1dGVWYWx1ZS5pc051
bGwoKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIGNyb3Nzb3Jp
Z2luQXR0cikgJiYgIWF0dHJpYnV0ZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIG1f
Y3Jvc3NPcmlnaW5Nb2RlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJp
YnV0ZVZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmIChtX3RhZ0lkID09IExpbmtUYWdJZCkgewot
ICAgICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaChhdHRyaWJ1dGVOYW1lLCBocmVmQXR0cikp
CisgICAgICAgICAgICBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgaHJlZkF0dHIpKQogICAgICAg
ICAgICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICAgICAgICBlbHNl
IGlmICh0aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRlTmFtZSwgcmVsQXR0cikpCisgICAgICAgICAg
ICBlbHNlIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCByZWxBdHRyKSkKICAgICAgICAgICAgICAg
ICBtX2xpbmtJc1N0eWxlU2hlZXQgPSByZWxBdHRyaWJ1dGVJc1N0eWxlU2hlZXQoYXR0cmlidXRl
VmFsdWUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5h
bWUsIG1lZGlhQXR0cikpCisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1l
LCBtZWRpYUF0dHIpKQogICAgICAgICAgICAgICAgIG1fbGlua01lZGlhQXR0cmlidXRlSXNTY3Jl
ZW4gPSBsaW5rTWVkaWFBdHRyaWJ1dGVJc1NjcmVlbihhdHRyaWJ1dGVWYWx1ZSk7CiAgICAgICAg
IH0gZWxzZSBpZiAobV90YWdJZCA9PSBJbnB1dFRhZ0lkKSB7Ci0gICAgICAgICAgICBpZiAodGhy
ZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIHNyY0F0dHIpKQorICAgICAgICAgICAgaWYgKG1h
dGNoKGF0dHJpYnV0ZU5hbWUsIHNyY0F0dHIpKQogICAgICAgICAgICAgICAgIHNldFVybFRvTG9h
ZChhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2go
YXR0cmlidXRlTmFtZSwgdHlwZUF0dHIpKQorICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2goYXR0
cmlidXRlTmFtZSwgdHlwZUF0dHIpKQogICAgICAgICAgICAgICAgIG1faW5wdXRJc0ltYWdlID0g
ZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlVmFsdWUsIElucHV0VHlwZU5hbWVzOjppbWFnZSgp
KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFByZWxvYWRTY2FubmVyLmgKaW5kZXggNDdhNTQ0NGYxMGU4Y2ZkZDZiYTcwYjA2YmUwOGYyNTQ0
MDRjYzAxYi4uZDJmMmMxMTg5YzI1ZjUwZGIyOTIzZmZiMzRhNzEyNmU0MjdhM2IyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKQEAgLTg2
LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBpbmxpbmUgdm9pZCBzY2FuQ29tbW9uKGNvbnN0IFRv
a2VuJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mIHJlcXVlc3RzKTsKIAogICAgIHN0YXRpYyBUYWdJ
ZCB0YWdJZEZvcihjb25zdCBIVE1MVG9rZW46OkRhdGFWZWN0b3ImKTsKLSAgICBzdGF0aWMgVGFn
SWQgdGFnSWRGb3IoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFRhZ0lkIHRhZ0lkRm9yKGNv
bnN0IEhUTUxJZGVudGlmaWVyJik7CiAKICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYXRvckZvcihU
YWdJZCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192309</attachid>
            <date>2013-03-08 16:43:54 -0800</date>
            <delta_ts>2013-03-08 17:08:47 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-107337-20130308163957.patch</filename>
            <type>text/plain</type>
            <size>50983</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Mjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRlZDc1ZTYxMTNiZmQ0
NWYzMzhhNGViMWU0ZDAyMGI3MGZkYzllNS4uNWJkYTFhOGUxMjBkMmJiYmFkNWJlZDg5YzlhZWEy
YzVhOTJkNjAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTAzLTA4ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBCYWNrZ3JvdW5kSFRNTFBhcnNl
ciBzaG91bGQgYmUgYWJsZSB0byBhdG9taXplIHdlbGwta25vd24gc3RyaW5ncworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBUZXN0aW5nIHRoaXMgcGF0Y2ggZWFz
aWx5IHJlcXVpcmVzIGFwcGx5aW5nIGJ1ZyAxMDcyMzYgbG9jYWxseQorICAgICAgICB0byByZW1v
dmUgYWxsIHRoZSByZW5kZXJpbmcgbm9pc2UgZnJvbSBQYXJzZXIvaHRtbC10aHJlYWRlZC1wYXJz
ZXIuaHRtbC4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgY2xhc3MgSFRNTElkZW50
aWZpZXIgd2hpY2ggYWxsb3dzIHVzIHRvIGF2b2lkCisgICAgICAgIGFsbG9jYXRpbmcgc3RyaW5n
cyBmb3Iga25vd24gdGFnL2F0dHJpYnV0ZSBuYW1lcyBmcm9tIEhUTUxOYW1lcy4KKworICAgICAg
ICBUaGVyZSBpcyBzdGlsbCBhIGxvdCBvZiBtZWF0IG9uIHRoaXMgYm9uZSwgYnV0IEkgdGhpbmsg
aXQncyBpbXBvcnRhbnQgdG8KKyAgICAgICAgbGFuZCBzb21ldGhpbmcgInNtYWxsaXNoIiB0byBz
dGFydCBhbmQgaXRlcmF0ZSBmcm9tIHRoZXJlLgorCisgICAgICAgIFRoaXMgdG9vayBQYXJzZXIv
aHRtbC10aHJlYWRlZC1wYXJzZXIuaHRtbCBmcm9tOgorICAgICAgICBtZWRpYW49IDQ0My43MjY1
MDAwMDIgbXMsIHN0ZGV2PSA3LjI1MDAyNjc5OTUyIG1zLCBtaW49IDQzMC4yNDQwMDAwNDcgbXMs
IG1heD0gNDU1LjUxMTAwMDAwNyBtcworICAgICAgICB0bzoKKyAgICAgICAgbWVkaWFuPSA0Mjcu
ODQ5NTAwMDA0IG1zLCBzdGRldj0gOS45Njk2NzA1ODI5MiBtcywgbWluPSA0MTcuOTE0MDAwMDQ5
IG1zLCBtYXg9IDQ2MS41MjgwMDAwMTQgbXMKKyAgICAgICAgb24gbXkgTUJQLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRNTFRva2VuOjpBdG9taWNIVE1MVG9rZW4pOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRva2VuRXhpdHNGb3JlaWduQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjp0b2tl
bkV4aXRzU1ZHKToKKyAgICAgICAgKFdlYkNvcmU6OnRva2VuRXhpdHNNYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2VyOjpzaW11bGF0ZVRyZWVCdWlsZGVyKToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nhbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NT
UHJlbG9hZFNjYW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ1NTUHJlbG9h
ZFNjYW5uZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwOgor
ICAgICAgICAoU2FtZVNpemVBc0NvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvQ29tcGFjdEhUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFjdEhUTUxUb2tl
bjo6QXR0cmlidXRlOjpBdHRyaWJ1dGUpOgorICAgICAgICAoQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBhY3RIVE1MVG9rZW46OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cGFjdEhUTUxUb2tlbjo6cHVibGljSWRlbnRpZmllcik6CisgICAgICAgIChDb21wYWN0SFRNTFRv
a2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpzdGFydEJhY2tncm91bmRQYXJzZXIp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmlkZW50aWZpZXJUYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSWRlbnRpZmllcjo6aGFzSW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElkZW50aWZpZXI6OmZpbmRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpuYW1lRm9y
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50aWZpZXI6OmFzU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjphc1N0cmluZ0ltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElkZW50aWZpZXI6OmFkZE5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJZGVudGlmaWVyOjppbml0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MSWRlbnRpZmll
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSFRNTElkZW50aWZpZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElkZW50aWZpZXI6OkhUTUxJZGVudGlmaWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJZGVudGlmaWVyOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJl
YWQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dGhyZWFkU2FmZUVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OnRocmVhZFNh
ZmVNYXRjaCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0aHJlYWRTYWZlSFRNTE5hbWVzTWF0
Y2gpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjp0YWdJZEZvcik6CisgICAgICAgIChX
ZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXI6Om1hdGNoKToKKyAg
ICAgICAgKFRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXI6OnByb2Nlc3NBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oOgorCiAy
MDEzLTAzLTA4ICBCcmFuZG9uIEpvbmVzICA8YmFqb25lc0Bnb29nbGUuY29tPgogCiAgICAgICAg
IENoZWNrIHRvIGVuc3VyZSBNdWx0aXNhbXBsZVJlbmRlcmJ1ZmZlciBjcmVhdGlvbiBzdWNjZWVk
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmM2JkYjdjMjhhMGU0NDVmNmExYTQyNGUxZmQyOTI4
ZmFjYmZjYjIzLi42NDViYmZkZTQ0MmY0ZmNhOTI4ZTJlYTIzYmIzODhlNzViNzRhMGY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtMTU1NCw2ICsxNTU0LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCiAgICAgaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlclRocmVhZC5jcHAKICAgICBodG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0Vs
ZW1lbnRMaXN0LmNwcAorICAgIGh0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcAogICAgIGh0
bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKICAgICBodG1sL3BhcnNlci9IVE1M
UHJlbG9hZFNjYW5uZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZjU2OWZkMTgwNjc3MTE2ZGY3
N2RkYzg1NDhiNzNlMjY0MTQ4ZjFiMC4uMzA4NzdkNjU4MmQyMGI4OTQ5YjAzYTcyZGQxMmU5NjA1
NjY4M2U1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zNjE2LDYgKzM2MTYs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxFbnRpdHlUYWJsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0
dGluZ0VsZW1lbnRMaXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZv
cm1hdHRpbmdFbGVtZW50TGlzdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
SWRlbnRpZmllci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlm
aWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJbnB1dFN0cmVhbS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQppbmRleCAxYjY1NWZiZTA1NDBkYjQzZmExYmE4NWUyNWVlZWRiNTdjNjA3Njc4Li4y
NDRiY2IxYTMwY2Y3N2E3MDZiMjEyZmZkZmY1NmYzODkwOTMzMDlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAg
LTczNSw2ICs3MzUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1sL3BhcnNlci9IVE1MRW50aXR5
UGFyc2VyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTEVudGl0eVNlYXJjaC5jcHAgXAogICAg
IGh0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwIFwKKyAgICBodG1sL3Bh
cnNlci9IVE1MSWRlbnRpZmllci5jcHAgXAogICAgIGh0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNl
dFBhcnNlci5jcHAgXAogICAgIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIFwKICAg
ICBodG1sL3BhcnNlci9IVE1MUGFyc2VyT3B0aW9ucy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IGU4MGFhZjRjMTMyZjhkMzZjMDQ5NGQ5OWQzZjllNjUwZDE4MjFmYWYuLjk4ZDNhZWZmMTg4ZmZj
MTMyYTIzMjg4YTdmNmYxZDBlZjE2YWY4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM1MDUsNiAr
MzUwNSw4IEBACiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTEVudGl0eVRhYmxlLmgnLAog
ICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwJywK
ICAgICAgICAgICAgICdodG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmgnLAor
ICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmNwcCcsCisgICAgICAgICAg
ICAnaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJz
ZXIvSFRNTElucHV0U3RyZWFtLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxNZXRh
Q2hhcnNldFBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hh
cnNldFBhcnNlci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKaW5kZXggZWRkMDAxNWQ0ZjUyYjczZDFlZGVmMzRkOTMwMzhiYTRjYjZlNTA5My4uYzY0
YmVhOTY2MjA4OTdhYmU1MTcyZmYzZTZmM2IzY2Y2MmExMDc4ZCAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY1MDkwLDYgKzY1MDkwLDE0IEBA
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxo
dG1sXHBhcnNlclxIVE1MSWRlbnRpZmllci5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHBhcnNlclxIVE1MSWRlbnRpZmllci5o
IgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFxwYXJzZXJcSFRNTElucHV0U3RyZWFtLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCBjMWVm
ZjNiZGMyNzAyMTE4NWRmMTJlMmE1M2RhN2JmOGRhOGE5Y2FjLi5lYzQ4MjE3OTNhMzUyZDNlOTYz
MmEyMWQ4MzYzZjNjM2I4MTM3ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTY5MjMsNiArNjkyMyw3IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1MRW50aXR5UGFyc2VyLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxFbnRpdHlTZWFyY2guY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTEZvcm1hdHRpbmdF
bGVtZW50TGlzdC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNl
clxIVE1MSWRlbml0aWZpZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRt
bFxwYXJzZXJcSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxQYXJzZXJJZGlvbXMuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTFBhcnNlck9wdGlvbnMuY3BwIiAvPgpA
QCAtMTAzNzgsNiArMTAzNzksNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxw
YXJzZXJcSFRNTEVudGl0eVBhcnNlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aHRtbFxwYXJzZXJcSFRNTEVudGl0eVNlYXJjaC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caHRtbFxwYXJzZXJcSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5oIiAvPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTElkZW50aWZpZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxJbnB1dFN0cmVhbS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTE1ldGFDaGFyc2V0
UGFyc2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNlclxIVE1M
UGFyc2VySWRpb21zLmgiIC8+CkBAIC0xMTEzOSw0ICsxMTE0MSw0IEBACiAgIDxJbXBvcnQgUHJv
amVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBv
cnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1By
b2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk2Nzlm
NjIyOTcyNDQ1ZDY0MTMwYjUwMWVmMGI2ZGM1MDQwYzQwZmIuLjE3Y2FlMzEwNWI0MmE3OTdkNDEz
MjY3MTYzMGEzYzcyYjc1MTQ0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQzODAsNiArNDM4MCw4IEBACiAJCUE4OEFENTJG
MDk1MjRCOTIwMDFERDE5NiAvKiBRdWFydHpDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NUQ3QTJGMDg3OUVCQTkwMDZBOTE3
MiAvKiBRdWFydHpDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJQTg4REQ0ODcwQjQ2MjlBMzAwQzAy
OTkwIC8qIFBhdGhUcmF2ZXJzYWxTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTg4REQ0ODYwQjQ2MjlBMzAwQzAyOTkwIC8qIFBhdGhUcmF2ZXJz
YWxTdGF0ZS5oICovOyB9OwogCQlBODhERDQ4OTBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZl
cnNhbFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwICov
OyB9OworCQlBODk1NzA5RjE2RTlCRDU5MDAxODRFNTUgLyogSFRNTElkZW50aWZpZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg5NTcwOUQxNkU5
QkQ1OTAwMTg0RTU1IC8qIEhUTUxJZGVudGlmaWVyLmNwcCAqLzsgfTsKKwkJQTg5NTcwQTAxNkU5
QkQ1OTAwMTg0RTU1IC8qIEhUTUxJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODk1NzA5RTE2RTlCRDU5MDAxODRFNTUgLyogSFRNTElk
ZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBODk5NDMyODBCNDIzMzg4MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4OTk0MzI2MEI0MjMzODcwMEQ3
QzgwMiAvKiBCaXRtYXBJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE4OTk0MzI5MEI0MjMzODgwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODk5NDMy
NzBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2UuY3BwICovOyB9OwogCQlBODlDQ0M1MjBG
NDRFOTgxMDBCNURBMTAgLyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg5Q0NDNTAwRjQ0RTk4MTAw
QjVEQTEwIC8qIFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcCAqLzsgfTsKQEAgLTExNzky
LDYgKzExNzk0LDggQEAKIAkJQTg4NkNEQzIxNEZCQkFBMzAwRDI3OUY0IC8qIFdvcmtlckNvbnRl
eHRXZWJTb2NrZXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdvcmtlckNvbnRleHRXZWJT
b2NrZXQuaWRsOyBwYXRoID0gTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlckNvbnRleHRXZWJTb2Nr
ZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODhERDQ4NjBCNDYyOUEzMDBD
MDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhdGhUcmF2ZXJzYWxTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4OTU3MDlEMTZFOUJENTkwMDE4NEU1NSAv
KiBIVE1MSWRlbnRpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBIVE1MSWRlbnRpZmllci5jcHA7IHBhdGggPSBwYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBODk1NzA5RTE2RTlCRDU5MDAxODRFNTUgLyog
SFRNTElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSFRNTElk
ZW50aWZpZXIuaDsgcGF0aCA9IHBhcnNlci9IVE1MSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBODk5NDMyNjBCNDIzMzg3MDBEN0M4MDIgLyogQml0bWFwSW1hZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0bWFwSW1hZ2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg5OTQzMjcwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1h
cEltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdG1hcElt
YWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg5Q0NDNTAwRjQ0RTk4MTAw
QjVEQTEwIC8qIFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4ODI1LDYgKzE4ODI5LDcgQEAKIAkJOTdDMUY1
NTExMjI4NTU4ODAwRURFNjE2IC8qIHBhcnNlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE3IC8qIEF0b21pY0hU
TUxUb2tlbi5oICovLAogCQkJCTk3REM2OUU5MTZCOUY1MEUwMDhDRkQ2RiAvKiBCYWNrZ3JvdW5k
SFRNTElucHV0U3RyZWFtLmNwcCAqLywKIAkJCQk5N0RDNjlFQTE2QjlGNTBFMDA4Q0ZENkYgLyog
QmFja2dyb3VuZEhUTUxJbnB1dFN0cmVhbS5oICovLAogCQkJCTk3OURDMDMxMTZBNzk5MjEwMDgw
Nzc5NCAvKiBCYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAgKi8sCkBAIC0xODg0Nyw2ICsxODg1Miw4
IEBACiAJCQkJOTc3QjM4NTQxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxFbnRpdHlUYWJsZS5oICov
LAogCQkJCTk3N0IzODU1MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0LmNwcCAqLywKIAkJCQk5NzdCMzg1NjEyMjg4M0U5MDBCODFGRjggLyogSFRNTEZvcm1hdHRp
bmdFbGVtZW50TGlzdC5oICovLAorCQkJCUE4OTU3MDlEMTZFOUJENTkwMDE4NEU1NSAvKiBIVE1M
SWRlbnRpZmllci5jcHAgKi8sCisJCQkJQTg5NTcwOUUxNkU5QkQ1OTAwMTg0RTU1IC8qIEhUTUxJ
ZGVudGlmaWVyLmggKi8sCiAJCQkJOTdCQzg0OUExMjM3MEE0QjAwMEM2MTYxIC8qIEhUTUxJbnB1
dFN0cmVhbS5oICovLAogCQkJCTJCRThFMkM4MTJBNThBMDEwMEZBRDU1MCAvKiBIVE1MTWV0YUNo
YXJzZXRQYXJzZXIuY3BwICovLAogCQkJCTJCRThFMkM2MTJBNTg5RUMwMEZBRDU1MCAvKiBIVE1M
TWV0YUNoYXJzZXRQYXJzZXIuaCAqLywKQEAgLTE4ODcxLDcgKzE4ODc4LDYgQEAKIAkJCQk5N0Mx
RjU1MjEyMjg1NUNCMDBFREU2MTYgLyogSFRNTFRva2VuLmggKi8sCiAJCQkJOTc3QjM4NUUxMjI4
ODNFOTAwQjgxRkY4IC8qIEhUTUxUb2tlbml6ZXIuY3BwICovLAogCQkJCTk3N0IzODVGMTIyODgz
RTkwMEI4MUZGOCAvKiBIVE1MVG9rZW5pemVyLmggKi8sCi0JCQkJOTdDMUY1NTIxMjI4NTVDQjAw
RURFNjE3IC8qIEF0b21pY0hUTUxUb2tlbi5oICovLAogCQkJCTk3N0IzNzIxMTIyODcyMTcwMEI4
MUZGOCAvKiBIVE1MVHJlZUJ1aWxkZXIuY3BwICovLAogCQkJCTk3N0IzNzIyMTIyODcyMTcwMEI4
MUZGOCAvKiBIVE1MVHJlZUJ1aWxkZXIuaCAqLywKIAkJCQk5NzdCMzg2MDEyMjg4M0U5MDBCODFG
RjggLyogSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwICovLApAQCAtMjY2OTIsNiArMjY2OTgsNyBA
QAogCQkJCTdFNjZFMjM0MTZENkVCNkMwMEY3RTdGRiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUEzMEY2QTE2REZGRTc1MDAyNTdEMEIgLyogSlNX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDgyODdGNzE2
RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
ODk1NzBBMDE2RTlCRDU5MDAxODRFNTUgLyogSFRNTElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMjk4OTUsNiArMjk5MDIsNyBAQAogCQkJCTdFNjZFMjMzMTZENkVCNkMwMEY3RTdGRiAv
KiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFQTMw
RjY5MTZERkZFNzUwMDI1N0QwQiAvKiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkQ4Mjg3RjYxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2Nh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBODk1NzA5RjE2RTlCRDU5MDAxODRFNTUgLyog
SFRNTElkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCmluZGV4IGE2ZDIzN2QxODk1ZGUwYWI1M2Y5ZjczMTk5
MDA2NDZmMTY2YmRkMjkuLjQxNWIwZDI2YzQwNDhkNGE3MjgzM2Y4MzBjM2JjNjM2MDk5NGUzODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oCkBAIC0x
NjMsMTAgKzE2MywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRToK
LSAgICAgICAgICAgIG1fbmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAgICAgICAgIG1fbmFtZSA9
IHRva2VuLmRhdGEoKS5hc1N0cmluZygpOwogICAgICAgICAgICAgbV9kb2N0eXBlRGF0YSA9IGFk
b3B0UHRyKG5ldyBEb2N0eXBlRGF0YSgpKTsKICAgICAgICAgICAgIG1fZG9jdHlwZURhdGEtPm1f
aGFzUHVibGljSWRlbnRpZmllciA9IHRydWU7Ci0gICAgICAgICAgICBhcHBlbmQobV9kb2N0eXBl
RGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyLCB0b2tlbi5wdWJsaWNJZGVudGlmaWVyKCkpOworICAg
ICAgICAgICAgYXBwZW5kKG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllciwgdG9rZW4u
cHVibGljSWRlbnRpZmllcigpLmFzU3RyaW5nKCkpOwogICAgICAgICAgICAgbV9kb2N0eXBlRGF0
YS0+bV9oYXNTeXN0ZW1JZGVudGlmaWVyID0gdHJ1ZTsKICAgICAgICAgICAgIGFwcGVuZChtX2Rv
Y3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIsIHRva2VuLnN5c3RlbUlkZW50aWZpZXIoKSk7
CiAgICAgICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2ZvcmNlUXVpcmtzID0gdG9rZW4uZG9jdHlw
ZUZvcmNlc1F1aXJrcygpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgY2Fz
ZSBIVE1MVG9rZW46OlN0YXJ0VGFnOgogICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkodG9rZW4uYXR0cmlidXRlcygpLnNpemUoKSk7CiAgICAgICAgICAgICBm
b3IgKFZlY3RvcjxDb21wYWN0SFRNTFRva2VuOjpBdHRyaWJ1dGU+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IHRva2VuLmF0dHJpYnV0ZXMoKS5iZWdpbigpOyBpdCAhPSB0b2tlbi5hdHRyaWJ1dGVzKCku
ZW5kKCk7ICsraXQpIHsKLSAgICAgICAgICAgICAgICBRdWFsaWZpZWROYW1lIG5hbWUobnVsbEF0
b20sIGl0LT5uYW1lLCBudWxsQXRvbSk7CisgICAgICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBu
YW1lKG51bGxBdG9tLCBpdC0+bmFtZS5hc1N0cmluZygpLCBudWxsQXRvbSk7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgaXMgTl4yIGZvciB0aGUgbnVtYmVyIG9mIGF0dHJpYnV0ZXMu
CiAgICAgICAgICAgICAgICAgaWYgKCFmaW5kQXR0cmlidXRlSW5WZWN0b3IobV9hdHRyaWJ1dGVz
LCBuYW1lKSkKICAgICAgICAgICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1
dGUobmFtZSwgaXQtPnZhbHVlKSk7CkBAIC0xODQsMTcgKzE4NCwyNCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAvLyBGYWxsIHRocm91Z2ghCiAgICAgICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6
CiAgICAgICAgICAgICBtX3NlbGZDbG9zaW5nID0gdG9rZW4uc2VsZkNsb3NpbmcoKTsKLSAgICAg
ICAgICAgIG1fbmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAgICAgICAgIG1fbmFtZSA9IHRva2Vu
LmRhdGEoKS5hc1N0cmluZygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSFRN
TFRva2VuOjpDb21tZW50OgotICAgICAgICAgICAgbV9kYXRhID0gdG9rZW4uZGF0YSgpOworICAg
ICAgICAgICAgbV9kYXRhID0gdG9rZW4uZGF0YSgpLmFzU3RyaW5nKCk7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKLSAgICAgICAgICAgIG1f
ZXh0ZXJuYWxDaGFyYWN0ZXJzID0gdG9rZW4uZGF0YSgpLmNoYXJhY3RlcnMoKTsKLSAgICAgICAg
ICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoID0gdG9rZW4uZGF0YSgpLmxlbmd0aCgpOwor
ICAgICAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOiB7CisgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIHN0cmluZyA9IHRva2VuLmRhdGEoKS5hc1N0cmluZygpOworICAgICAgICAgICAgbV9l
eHRlcm5hbENoYXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFjdGVycygpOworICAgICAgICAgICAgbV9l
eHRlcm5hbENoYXJhY3RlcnNMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgICAgICAgICBt
X2lzQWxsOEJpdERhdGEgPSB0b2tlbi5pc0FsbDhCaXREYXRhKCk7CisgICAgICAgICAgICAvLyBG
SVhNRTogV2Ugd291bGQgbGlrZSBhIHN0cm9uZ2VyIEFTU0VSVCBoZXJlOgorICAgICAgICAgICAg
Ly8gQVNTRVJUKHN0cmluZy5pczhCaXQoKSA9PSB0b2tlbi5pc0FsbDhCaXREYXRhKCkpOworICAg
ICAgICAgICAgLy8gYnV0IGN1cnJlbnRseSB0aGF0IGZpcmVzLCBsaWtlbHkgZHVlIHRvIGJ1Z3Mg
aW4gSFRNTFRva2VuaXplcgorICAgICAgICAgICAgLy8gbm90IHNldHRpbmcgaXNBbGw4Qml0RGF0
YSBpbiBhbGwgdGhlIHRpbWVzIGl0IGNvdWxkLgorICAgICAgICAgICAgQVNTRVJUKCF0b2tlbi5p
c0FsbDhCaXREYXRhKCkgfHwgc3RyaW5nLmlzOEJpdCgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCmluZGV4IDY5MjVlMTAz
MTkwYmQyOGVhMzQxNzkzMjBmOWFlOTNlYzJiNzA2YzQuLmVlZjI5M2FhNWVjZTVlMjU1Yzg0NDZi
OWY3MzFiYjZhZGU5YjFlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKQEAgLTY5LDY1ICs2OSw2OCBAQCBzdGF0aWMgdm9p
ZCBjaGVja1RoYXRYU1NJbmZvc0FyZVNhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoY29uc3QgWFNT
SW5mb1N0cmVhbSYgeAogCiBzdGF0aWMgYm9vbCB0b2tlbkV4aXRzRm9yZWlnbkNvbnRlbnQoY29u
c3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgY29w
aWVkIGZyb20gSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50IGFu
ZCBjaGFuZ2VkIHRvIHVzZSB0aHJlYWRTYWZlTWF0Y2guCi0gICAgY29uc3QgU3RyaW5nJiB0YWdO
YW1lID0gdG9rZW4uZGF0YSgpOwotICAgIHJldHVybiB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwg
YlRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJpZ1RhZykKLSAgICAg
ICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGJsb2NrcXVvdGVUYWcpCi0gICAgICAgIHx8
IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBib2R5VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZl
TWF0Y2godGFnTmFtZSwgYnJUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1l
LCBjZW50ZXJUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBjb2RlVGFn
KQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgZGRUYWcpCi0gICAgICAgIHx8
IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBkaXZUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVN
YXRjaCh0YWdOYW1lLCBkbFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUs
IGR0VGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgZW1UYWcpCi0gICAg
ICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBlbWJlZFRhZykKLSAgICAgICAgfHwgdGhy
ZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGgxVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2go
dGFnTmFtZSwgaDJUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBoM1Rh
ZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGg0VGFnKQotICAgICAgICB8
fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaDVUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVN
YXRjaCh0YWdOYW1lLCBoNlRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUs
IGhlYWRUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBoclRhZykKLSAg
ICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGlUYWcpCi0gICAgICAgIHx8IHRocmVh
ZFNhZmVNYXRjaCh0YWdOYW1lLCBpbWdUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0
YWdOYW1lLCBsaVRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGxpc3Rp
bmdUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBtZW51VGFnKQotICAg
ICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgbWV0YVRhZykKLSAgICAgICAgfHwgdGhy
ZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG5vYnJUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRj
aCh0YWdOYW1lLCBvbFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHBU
YWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBwcmVUYWcpCi0gICAgICAg
IHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBydWJ5VGFnKQotICAgICAgICB8fCB0aHJlYWRT
YWZlTWF0Y2godGFnTmFtZSwgc1RhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05h
bWUsIHNtYWxsVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc3BhblRh
ZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHN0cm9uZ1RhZykKLSAgICAg
ICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHN0cmlrZVRhZykKLSAgICAgICAgfHwgdGhy
ZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHN1YlRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNo
KHRhZ05hbWUsIHN1cFRhZykKLSAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHRh
YmxlVGFnKQotICAgICAgICB8fCB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgdHRUYWcpCi0gICAg
ICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB1VGFnKQotICAgICAgICB8fCB0aHJlYWRT
YWZlTWF0Y2godGFnTmFtZSwgdWxUYWcpCi0gICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdO
YW1lLCB2YXJUYWcpCi0gICAgICAgIHx8ICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgZm9udFRh
ZykgJiYgKHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oY29sb3JBdHRyKSB8fCB0b2tlbi5nZXRBdHRy
aWJ1dGVJdGVtKGZhY2VBdHRyKSB8fCB0b2tlbi5nZXRBdHRyaWJ1dGVJdGVtKHNpemVBdHRyKSkp
OworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGNvcGllZCBmcm9tIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCBhbmQgY2hhbmdlZCB0byB1c2UgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoLgorICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lID0gdG9rZW4u
ZGF0YSgpOworICAgIHJldHVybiB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYlRh
ZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJpZ1RhZykK
KyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJsb2NrcXVvdGVU
YWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBib2R5VGFn
KQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgYnJUYWcpCisg
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBjZW50ZXJUYWcpCisg
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBjb2RlVGFnKQorICAg
ICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZGRUYWcpCisgICAgICAg
IHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBkaXZUYWcpCisgICAgICAgIHx8
IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBkbFRhZykKKyAgICAgICAgfHwgdGhy
ZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGR0VGFnKQorICAgICAgICB8fCB0aHJlYWRT
YWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZW1UYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVI
VE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBlbWJlZFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIGgxVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgaDJUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCBoM1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNo
KHRhZ05hbWUsIGg0VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFn
TmFtZSwgaDVUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCBoNlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGhl
YWRUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBoclRh
ZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGlUYWcpCisg
ICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBpbWdUYWcpCisgICAg
ICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBsaVRhZykKKyAgICAgICAg
fHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGxpc3RpbmdUYWcpCisgICAgICAg
IHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBtZW51VGFnKQorICAgICAgICB8
fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgbWV0YVRhZykKKyAgICAgICAgfHwg
dGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIG5vYnJUYWcpCisgICAgICAgIHx8IHRo
cmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBvbFRhZykKKyAgICAgICAgfHwgdGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHBUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVI
VE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBwcmVUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1M
TmFtZXNNYXRjaCh0YWdOYW1lLCBydWJ5VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5h
bWVzTWF0Y2godGFnTmFtZSwgc1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01h
dGNoKHRhZ05hbWUsIHNtYWxsVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0
Y2godGFnTmFtZSwgc3BhblRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNo
KHRhZ05hbWUsIHN0cm9uZ1RhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNo
KHRhZ05hbWUsIHN0cmlrZVRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNo
KHRhZ05hbWUsIHN1YlRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRh
Z05hbWUsIHN1cFRhZykKKyAgICAgICAgfHwgdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05h
bWUsIHRhYmxlVGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFt
ZSwgdHRUYWcpCisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB1
VGFnKQorICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdWxUYWcp
CisgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCB2YXJUYWcpCisg
ICAgICAgIHx8ICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgZm9udFRhZykgJiYg
KHRva2VuLmdldEF0dHJpYnV0ZUl0ZW0oY29sb3JBdHRyKSB8fCB0b2tlbi5nZXRBdHRyaWJ1dGVJ
dGVtKGZhY2VBdHRyKSB8fCB0b2tlbi5nZXRBdHRyaWJ1dGVJdGVtKHNpemVBdHRyKSkpOwogfQog
CiBzdGF0aWMgYm9vbCB0b2tlbkV4aXRzU1ZHKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mIHRva2Vu
KQogewotICAgIGNvbnN0IFN0cmluZyYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKLSAgICByZXR1
cm4gZXF1YWxJZ25vcmluZ0Nhc2UodGFnTmFtZSwgU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RUYWcu
bG9jYWxOYW1lKCkpOworICAgIC8vIEZJWE1FOiBJdCdzIHZlcnkgZnJhZ2lsZSB0aGF0IHdlIHNw
ZWNpYWwgY2FzZSBmb3JlaWduT2JqZWN0IGhlcmUgdG8gYmUgY2FzZS1pbnNlbnNpdGl2ZS4KKyAg
ICAvLyBGSVhNRTogVXNpbmcgQ2FzZUZvbGRpbmdIYXNoOjplcXVhbCBpbnN0ZWFkIG9mIGVxdWFs
SWdub3JpbmdDYXNlLCBhcyBlcXVhbElnbm9yaW5nQ2FzZQorICAgIC8vIHdhbnRzIG5vbi1jb25z
dCBTdHJpbmdJbXBsKiAoZXZlbiB0aG91Z2ggaXQgbmV2ZXIgbW9kaWZpZXMgdGhlbSkuCisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTg5MiBpcyBmb3Ig
Zml4aW5nIGVxdWFsSWdub3JpbmdDYXNlLgorICAgIHJldHVybiBDYXNlRm9sZGluZ0hhc2g6OmVx
dWFsKHRva2VuLmRhdGEoKS5hc1N0cmluZ0ltcGwoKSwgU1ZHTmFtZXM6OmZvcmVpZ25PYmplY3RU
YWcubG9jYWxOYW1lKCkuaW1wbCgpKTsKIH0KIAogc3RhdGljIGJvb2wgdG9rZW5FeGl0c01hdGgo
Y29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMg
Y29waWVkIGZyb20gSFRNTEVsZW1lbnRTdGFjazo6aXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2lu
dCBhbmQgY2hhbmdlZCB0byB1c2UgdGhyZWFkU2FmZU1hdGNoLgotICAgIGNvbnN0IFN0cmluZyYg
dGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgdGFnTmFt
ZSA9IHRva2VuLmRhdGEoKTsKICAgICByZXR1cm4gdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1h
dGhNTE5hbWVzOjptaVRhZykKICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1h
dGhNTE5hbWVzOjptb1RhZykKICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1h
dGhNTE5hbWVzOjptblRhZykKQEAgLTIwMyw3ICsyMDYsNyBAQCB2b2lkIEJhY2tncm91bmRIVE1M
UGFyc2VyOjptYXJrRW5kT2ZGaWxlKCkKIGJvb2wgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnNpbXVs
YXRlVHJlZUJ1aWxkZXIoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgaWYg
KHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKSB7Ci0gICAgICAgIGNvbnN0IFN0
cmluZyYgdGFnTmFtZSA9IHRva2VuLmRhdGEoKTsKKyAgICAgICAgY29uc3QgSFRNTElkZW50aWZp
ZXImIHRhZ05hbWUgPSB0b2tlbi5kYXRhKCk7CiAgICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2go
dGFnTmFtZSwgU1ZHTmFtZXM6OnN2Z1RhZykpCiAgICAgICAgICAgICBtX25hbWVzcGFjZVN0YWNr
LmFwcGVuZChTVkcpOwogICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIE1hdGhN
TE5hbWVzOjptYXRoVGFnKSkKQEAgLTIxNSwzMCArMjE4LDMwIEBAIGJvb2wgQmFja2dyb3VuZEhU
TUxQYXJzZXI6OnNpbXVsYXRlVHJlZUJ1aWxkZXIoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9r
ZW4pCiAgICAgICAgICAgICBtX25hbWVzcGFjZVN0YWNrLmFwcGVuZChIVE1MKTsKICAgICAgICAg
aWYgKCFpbkZvcmVpZ25Db250ZW50KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlz
IGp1c3QgYSBjb3B5IG9mIFRva2VuaXplcjo6dXBkYXRlU3RhdGVGb3Igd2hpY2ggdXNlcyB0aHJl
YWRTYWZlTWF0Y2hlcy4KLSAgICAgICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwg
dGV4dGFyZWFUYWcpIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCB0aXRsZVRhZykpCisgICAg
ICAgICAgICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIHRleHRhcmVhVGFn
KSB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdGl0bGVUYWcpKQogICAgICAg
ICAgICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpSQ0RBVEFTdGF0
ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgcGxhaW50
ZXh0VGFnKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0
YWdOYW1lLCBwbGFpbnRleHRUYWcpKQogICAgICAgICAgICAgICAgIG1fdG9rZW5pemVyLT5zZXRT
dGF0ZShIVE1MVG9rZW5pemVyOjpQTEFJTlRFWFRTdGF0ZSk7Ci0gICAgICAgICAgICBlbHNlIGlm
ICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgc2NyaXB0VGFnKSkKKyAgICAgICAgICAgIGVsc2Ug
aWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1lLCBzY3JpcHRUYWcpKQogICAgICAg
ICAgICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpTY3JpcHREYXRh
U3RhdGUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHN0
eWxlVGFnKQotICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBpZnJh
bWVUYWcpCi0gICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHhtcFRh
ZykKLSAgICAgICAgICAgICAgICB8fCAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIG5vZW1iZWRU
YWcpICYmIG1fb3B0aW9ucy5wbHVnaW5zRW5hYmxlZCkKLSAgICAgICAgICAgICAgICB8fCB0aHJl
YWRTYWZlTWF0Y2godGFnTmFtZSwgbm9mcmFtZXNUYWcpCi0gICAgICAgICAgICAgICAgfHwgKHRo
cmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBub3NjcmlwdFRhZykgJiYgbV9vcHRpb25zLnNjcmlwdEVu
YWJsZWQpKQorICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRh
Z05hbWUsIHN0eWxlVGFnKQorICAgICAgICAgICAgICAgIHx8IHRocmVhZFNhZmVIVE1MTmFtZXNN
YXRjaCh0YWdOYW1lLCBpZnJhbWVUYWcpCisgICAgICAgICAgICAgICAgfHwgdGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIHhtcFRhZykKKyAgICAgICAgICAgICAgICB8fCAodGhyZWFk
U2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIG5vZW1iZWRUYWcpICYmIG1fb3B0aW9ucy5wbHVn
aW5zRW5hYmxlZCkKKyAgICAgICAgICAgICAgICB8fCB0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2go
dGFnTmFtZSwgbm9mcmFtZXNUYWcpCisgICAgICAgICAgICAgICAgfHwgKHRocmVhZFNhZmVIVE1M
TmFtZXNNYXRjaCh0YWdOYW1lLCBub3NjcmlwdFRhZykgJiYgbV9vcHRpb25zLnNjcmlwdEVuYWJs
ZWQpKQogICAgICAgICAgICAgICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVy
OjpSQVdURVhUU3RhdGUpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW46OkVuZFRhZykgewotICAgICAgICBjb25zdCBTdHJpbmcmIHRhZ05hbWUg
PSB0b2tlbi5kYXRhKCk7CisgICAgICAgIGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lID0g
dG9rZW4uZGF0YSgpOwogICAgICAgICBpZiAoKG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IFNW
RyAmJiB0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgU1ZHTmFtZXM6OnN2Z1RhZykpCiAgICAgICAg
ICAgICB8fCAobV9uYW1lc3BhY2VTdGFjay5sYXN0KCkgPT0gTWF0aE1MICYmIHRocmVhZFNhZmVN
YXRjaCh0YWdOYW1lLCBNYXRoTUxOYW1lczo6bWF0aFRhZykpCiAgICAgICAgICAgICB8fCAobV9u
YW1lc3BhY2VTdGFjay5jb250YWlucyhTVkcpICYmIG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09
IEhUTUwgJiYgdG9rZW5FeGl0c1NWRyh0b2tlbikpCiAgICAgICAgICAgICB8fCAobV9uYW1lc3Bh
Y2VTdGFjay5jb250YWlucyhNYXRoTUwpICYmIG1fbmFtZXNwYWNlU3RhY2subGFzdCgpID09IEhU
TUwgJiYgdG9rZW5FeGl0c01hdGgodG9rZW4pKSkKICAgICAgICAgICAgIG1fbmFtZXNwYWNlU3Rh
Y2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHNj
cmlwdFRhZykpIHsKKyAgICAgICAgaWYgKHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaCh0YWdOYW1l
LCBzY3JpcHRUYWcpKSB7CiAgICAgICAgICAgICBpZiAoIWluRm9yZWlnbkNvbnRlbnQoKSkKICAg
ICAgICAgICAgICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6RGF0YVN0
YXRlKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAppbmRleCAwYzY2ZmMxYWM5ZmZhNjQ5ZjUz
YmQxODQzNDYzYWIyNmU0MmZkZTUxLi5hNjBiOTBjZGQ1ODQxNGMzM2JlMzllYzRiNDVhZDcyZDNm
M2I2ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2Fk
U2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNj
YW5uZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTUHJlbG9hZFNjYW5uZXIu
aCIKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKKyNpbmNs
dWRlICJIVE1MSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjQsMTYgKzY1LDE5IEBAIHZvaWQgQ1NTUHJlbG9hZFNj
YW5uZXI6OnNjYW4oY29uc3QgSFRNTFRva2VuOjpEYXRhVmVjdG9yJiBkYXRhLCBQcmVsb2FkUmVx
dWVzdFN0CiAgICAgc2NhbkNvbW1vbihkYXRhLmRhdGEoKSwgZGF0YS5kYXRhKCkgKyBkYXRhLnNp
emUoKSwgcmVxdWVzdHMpOwogfQogCi12b2lkIENTU1ByZWxvYWRTY2FubmVyOjpzY2FuKGNvbnN0
IFN0cmluZyYgZGF0YSwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mIHJlcXVlc3RzKQorI2lmIEVOQUJM
RShUSFJFQURFRF9IVE1MX1BBUlNFUikKK3ZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OnNjYW4oY29u
c3QgSFRNTElkZW50aWZpZXImIGlkZW50aWZpZXIsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJiByZXF1
ZXN0cykKIHsKLSAgICBpZiAoZGF0YS5pczhCaXQoKSkgewotICAgICAgICBjb25zdCBMQ2hhciog
YmVnaW4gPSBkYXRhLmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgIHNjYW5Db21tb24oYmVnaW4sIGJl
Z2luICsgZGF0YS5sZW5ndGgoKSwgcmVxdWVzdHMpOworICAgIGNvbnN0IFN0cmluZ0ltcGwqIGRh
dGEgPSBpZGVudGlmaWVyLmFzU3RyaW5nSW1wbCgpOworICAgIGlmIChkYXRhLT5pczhCaXQoKSkg
eworICAgICAgICBjb25zdCBMQ2hhciogYmVnaW4gPSBkYXRhLT5jaGFyYWN0ZXJzOCgpOworICAg
ICAgICBzY2FuQ29tbW9uKGJlZ2luLCBiZWdpbiArIGRhdGEtPmxlbmd0aCgpLCByZXF1ZXN0cyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY29uc3QgVUNoYXIqIGJlZ2luID0gZGF0YS5j
aGFyYWN0ZXJzMTYoKTsKLSAgICBzY2FuQ29tbW9uKGJlZ2luLCBiZWdpbiArIGRhdGEubGVuZ3Ro
KCksIHJlcXVlc3RzKTsKKyAgICBjb25zdCBVQ2hhciogYmVnaW4gPSBkYXRhLT5jaGFyYWN0ZXJz
MTYoKTsKKyAgICBzY2FuQ29tbW9uKGJlZ2luLCBiZWdpbiArIGRhdGEtPmxlbmd0aCgpLCByZXF1
ZXN0cyk7CiB9CisjZW5kaWYKIAogaW5saW5lIHZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OnRva2Vu
aXplKFVDaGFyIGMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9D
U1NQcmVsb2FkU2Nhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9h
ZFNjYW5uZXIuaAppbmRleCA0YjY5YmMzMjM1NmI0YzIxODEzM2ZiMTNkY2E0MjEwZmIzYjZmNmE0
Li45YzIwOTEwMTFkMDcyN2U5ZWM2NWY5N2Q1Y2E5ZDcwMDg1YTcxNDQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmgKQEAgLTMzLDYgKzMzLDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIVE1MSWRlbnRpZmllcjsKKwogY2xh
c3MgQ1NTUHJlbG9hZFNjYW5uZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1ByZWxv
YWRTY2FubmVyKTsKIHB1YmxpYzoKQEAgLTQyLDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVzZXQoKTsKIAogICAgIHZvaWQgc2Nhbihjb25zdCBIVE1MVG9rZW46OkRhdGFWZWN0b3ImLCBQ
cmVsb2FkUmVxdWVzdFN0cmVhbSYpOwotICAgIHZvaWQgc2Nhbihjb25zdCBTdHJpbmcmLCBQcmVs
b2FkUmVxdWVzdFN0cmVhbSYpOworICAgIHZvaWQgc2Nhbihjb25zdCBIVE1MSWRlbnRpZmllciYs
IFByZWxvYWRSZXF1ZXN0U3RyZWFtJik7CiAKIHByaXZhdGU6CiAgICAgZW51bSBTdGF0ZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwCmluZGV4
IGI0Nzg4YTA3ZTVhMDZmMjFkNDU4MDllYWFmN2I5NmVhMThkODEwMzQuLjc2ZGRjNmI2Yzc2ZTNh
NTUwYzQ2ZWNlZDA2OTBjOTA4YTI1M2Q3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RydWN0IFNhbWVTaXplQXNDb21wYWN0SFRNTFRva2VuICB7CiAgICAgdW5z
aWduZWQgYml0ZmllbGRzOwotICAgIFN0cmluZyBuYW1lOworICAgIEhUTUxJZGVudGlmaWVyIGRh
dGE7CiAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gdmVjdG9yOwogICAgIFRleHRQb3NpdGlvbiB0ZXh0
UG9zaXRpb247CiB9OwpAQCAtNTYsMTAgKzU2LDEwIEBAIENvbXBhY3RIVE1MVG9rZW46OkNvbXBh
Y3RIVE1MVG9rZW4oY29uc3QgSFRNTFRva2VuKiB0b2tlbiwgY29uc3QgVGV4dFBvc2l0aW9uJiB0
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEhUTUxUb2tlbjo6RE9DVFlQRTogewotICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9rZW4tPm5h
bWUoKSk7CisgICAgICAgIG1fZGF0YSA9IEhUTUxJZGVudGlmaWVyKHRva2VuLT5uYW1lKCksIExp
a2VseThCaXQpOwogICAgICAgICAvLyBUaGVyZSBpcyBvbmx5IDEgRE9DVFlQRSB0b2tlbiBwZXIg
ZG9jdW1lbnQsIHNvIHRvIGF2b2lkIGluY3JlYXNpbmcgdGhlCiAgICAgICAgIC8vIHNpemUgb2Yg
Q29tcGFjdEhUTUxUb2tlbiwgd2UganVzdCB1c2UgdGhlIG1fYXR0cmlidXRlcyB2ZWN0b3IuCi0g
ICAgICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKFN0cmluZyh0b2tlbi0+cHVibGlj
SWRlbnRpZmllcigpKSwgU3RyaW5nKHRva2VuLT5zeXN0ZW1JZGVudGlmaWVyKCkpKSk7CisgICAg
ICAgIG1fYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKEhUTUxJZGVudGlmaWVyKHRva2VuLT5w
dWJsaWNJZGVudGlmaWVyKCksIExpa2VseThCaXQpLCBTdHJpbmcodG9rZW4tPnN5c3RlbUlkZW50
aWZpZXIoKSkpKTsKICAgICAgICAgbV9kb2N0eXBlRm9yY2VzUXVpcmtzID0gdG9rZW4tPmZvcmNl
UXVpcmtzKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTY4LDE5ICs2OCwxNyBAQCBDb21w
YWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tlbiogdG9rZW4sIGNv
bnN0IFRleHRQb3NpdGlvbiYgdAogICAgIGNhc2UgSFRNTFRva2VuOjpTdGFydFRhZzoKICAgICAg
ICAgbV9hdHRyaWJ1dGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodG9rZW4tPmF0dHJpYnV0ZXMo
KS5zaXplKCkpOwogICAgICAgICBmb3IgKFZlY3RvcjxIVE1MVG9rZW46OkF0dHJpYnV0ZT46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gdG9rZW4tPmF0dHJpYnV0ZXMoKS5iZWdpbigpOyBpdCAhPSB0b2tl
bi0+YXR0cmlidXRlcygpLmVuZCgpOyArK2l0KQotICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLmFw
cGVuZChBdHRyaWJ1dGUoU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUoaXQtPm5hbWUp
LCBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShpdC0+dmFsdWUpKSk7CisgICAgICAg
ICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShIVE1MSWRlbnRpZmllcihpdC0+bmFt
ZSwgTGlrZWx5OEJpdCksIFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3NpYmxlKGl0LT52YWx1
ZSkpKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIQogICAgIGNhc2UgSFRNTFRva2VuOjpFbmRU
YWc6CiAgICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0b2tlbi0+c2VsZkNsb3NpbmcoKTsKICAgICAg
ICAgLy8gRmFsbCB0aHJvdWdoIQogICAgIGNhc2UgSFRNTFRva2VuOjpDb21tZW50OgotICAgIGNh
c2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6Ci0gICAgICAgIGlmICh0b2tlbi0+aXNBbGw4Qml0RGF0
YSgpKSB7Ci0gICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmc6Om1ha2U4Qml0RnJvbTE2Qml0U291
cmNlKHRva2VuLT5kYXRhKCkpOwotICAgICAgICAgICAgbV9pc0FsbDhCaXREYXRhID0gdHJ1ZTsK
LSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9rZW4tPmRhdGEo
KSk7CisgICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjogeworICAgICAgICBtX2lzQWxsOEJp
dERhdGEgPSB0b2tlbi0+aXNBbGw4Qml0RGF0YSgpOworICAgICAgICBtX2RhdGEgPSBIVE1MSWRl
bnRpZmllcih0b2tlbi0+ZGF0YSgpLCB0b2tlbi0+aXNBbGw4Qml0RGF0YSgpID8gRm9yY2U4Qml0
IDogRm9yY2UxNkJpdCk7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBkZWZhdWx0OgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgKaW5kZXggYzg5OGY2ZTZmMTRlYzg5
MTJiMzJmYTEzMTVjNzc4YTg3ZTM5ODk4My4uZmZhNGFlNDNjZDFmM2ViZjBlM2ViYzNlODllYTQ5
NGY2MmY1MzMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFj
dEhUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1M
VG9rZW4uaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFS
U0VSKQogCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJIVE1MVG9rZW4u
aCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
QEAgLTQ0LDEzICs0NSwxMyBAQCBjbGFzcyBRdWFsaWZpZWROYW1lOwogY2xhc3MgQ29tcGFjdEhU
TUxUb2tlbiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IEF0dHJpYnV0ZSB7Ci0gICAgICAgIEF0dHJp
YnV0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgICAgIEF0
dHJpYnV0ZShjb25zdCBIVE1MSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICAgICAgICAgIDogbmFtZShuYW1lKQogICAgICAgICAgICAgLCB2YWx1ZSh2YWx1ZSkKICAg
ICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAgIEhUTUxJ
ZGVudGlmaWVyIG5hbWU7CiAgICAgICAgIFN0cmluZyB2YWx1ZTsKICAgICB9OwogCkBAIC01OSw3
ICs2MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgp
IGNvbnN0OwogCiAgICAgSFRNTFRva2VuOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxIVE1MVG9rZW46OlR5cGU+KG1fdHlwZSk7IH0KLSAgICBjb25zdCBTdHJpbmcmIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBjb25zdCBIVE1MSWRlbnRpZmllciYg
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGJvb2wgc2VsZkNsb3NpbmcoKSBj
b25zdCB7IHJldHVybiBtX3NlbGZDbG9zaW5nOyB9CiAgICAgYm9vbCBpc0FsbDhCaXREYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0FsbDhCaXREYXRhOyB9CiAgICAgY29uc3QgVmVjdG9yPEF0dHJp
YnV0ZT4mIGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KQEAgLTY4
LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhlcmUgaXMgb25seSAxIERPQ1RZUEUgdG9r
ZW4gcGVyIGRvY3VtZW50LCBzbyB0byBhdm9pZCBpbmNyZWFzaW5nIHRoZQogICAgIC8vIHNpemUg
b2YgQ29tcGFjdEhUTUxUb2tlbiwgd2UganVzdCB1c2UgdGhlIG1fYXR0cmlidXRlcyB2ZWN0b3Iu
Ci0gICAgY29uc3QgU3RyaW5nJiBwdWJsaWNJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9h
dHRyaWJ1dGVzWzBdLm5hbWU7IH0KKyAgICBjb25zdCBIVE1MSWRlbnRpZmllciYgcHVibGljSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlc1swXS5uYW1lOyB9CiAgICAgY29u
c3QgU3RyaW5nJiBzeXN0ZW1JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVz
WzBdLnZhbHVlOyB9CiAgICAgYm9vbCBkb2N0eXBlRm9yY2VzUXVpcmtzKCkgY29uc3QgeyByZXR1
cm4gbV9kb2N0eXBlRm9yY2VzUXVpcmtzOyB9CiAKQEAgLTc4LDcgKzc5LDcgQEAgcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBtX2lzQWxsOEJpdERhdGEgOiAxOwogICAgIHVuc2lnbmVkIG1fZG9jdHlw
ZUZvcmNlc1F1aXJrczogMTsKIAotICAgIFN0cmluZyBtX2RhdGE7IC8vICJuYW1lIiwgImNoYXJh
Y3RlcnMiLCBvciAiZGF0YSIgZGVwZW5kaW5nIG9uIG1fdHlwZQorICAgIEhUTUxJZGVudGlmaWVy
IG1fZGF0YTsgLy8gIm5hbWUiLCAiY2hhcmFjdGVycyIsIG9yICJkYXRhIiBkZXBlbmRpbmcgb24g
bV90eXBlCiAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gbV9hdHRyaWJ1dGVzOwogICAgIFRleHRQb3Np
dGlvbiBtX3RleHRQb3NpdGlvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCBiMDRlZjViODVmOTI2YzE5N2U5MDJkMGQ5
OTdiZmYwM2Q4NGU4OWZmLi4yNjNjNGVmN2ZhMTQwYzg1ZGI2M2VmN2FkMGI0MDQ0NTBlNzQyZmRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlclNj
aGVkdWxlci5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJUaHJlYWQuaCIKQEAgLTY2Myw2ICs2NjQs
OCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRCYWNrZ3JvdW5kUGFyc2VyKCkKICAg
ICBBU1NFUlQoIW1faGF2ZUJhY2tncm91bmRQYXJzZXIpOwogICAgIG1faGF2ZUJhY2tncm91bmRQ
YXJzZXIgPSB0cnVlOwogCisgICAgSFRNTElkZW50aWZpZXI6OmluaXQoKTsKKwogICAgIFJlZlB0
cjxXZWFrUmVmZXJlbmNlPEJhY2tncm91bmRIVE1MUGFyc2VyPiA+IHJlZmVyZW5jZSA9IFdlYWtS
ZWZlcmVuY2U8QmFja2dyb3VuZEhUTUxQYXJzZXI+OjpjcmVhdGVVbmJvdW5kKCk7CiAgICAgbV9i
YWNrZ3JvdW5kUGFyc2VyID0gV2Vha1B0cjxCYWNrZ3JvdW5kSFRNTFBhcnNlcj4ocmVmZXJlbmNl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZp
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElkZW50aWZpZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdhOGVjNmQwNzQyOTczZmVhYzBmYTc2YTE5ZDFmZmU5ZjZjNzU1MmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MSWRlbnRpZmllci5j
cHAKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlLCBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFRIUkVBREVE
X0hUTUxfUEFSU0VSKQorCisjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKKworI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwordHlwZWRlZiBzdGQ6
OnBhaXI8dW5zaWduZWQsIFN0cmluZ0ltcGwqPiBJZGVudGlmaWVyRW50cnk7Cit0eXBlZGVmIEhh
c2hNYXA8dW5zaWduZWQsIElkZW50aWZpZXJFbnRyeSwgQWxyZWFkeUhhc2hlZD4gSWRlbnRpZmll
clRhYmxlOworCit1bnNpZ25lZCBIVE1MSWRlbnRpZmllcjo6bWF4TmFtZUxlbmd0aCA9IDA7CisK
K3N0YXRpYyBJZGVudGlmaWVyVGFibGUmIGlkZW50aWZpZXJUYWJsZSgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChJZGVudGlmaWVyVGFibGUsIHRhYmxlLCAoKSk7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpIHx8ICF0YWJsZS5pc0VtcHR5KCkpOworICAgIHJldHVybiB0YWJsZTsKK30K
KworI2lmbmRlZiBOREVCVUcKK2Jvb2wgSFRNTElkZW50aWZpZXI6Omhhc0luZGV4KGNvbnN0IFN0
cmluZ0ltcGwqIHN0cmluZykKK3sKKyAgICBjb25zdCBJZGVudGlmaWVyVGFibGUmIHRhYmxlID0g
aWRlbnRpZmllclRhYmxlKCk7CisgICAgcmV0dXJuIHRhYmxlLmNvbnRhaW5zKHN0cmluZy0+aGFz
aCgpKTsKK30KKyNlbmRpZgorCit1bnNpZ25lZCBIVE1MSWRlbnRpZmllcjo6ZmluZEluZGV4KGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgLy8gV2UgZG9u
J3QgbmVlZCB0byB0cnkgaGFzaGluZyBpZiB3ZSBrbm93IHRoZSBzdHJpbmcgaXMgdG9vIGxvbmcu
CisgICAgaWYgKGxlbmd0aCA+IG1heE5hbWVMZW5ndGgpCisgICAgICAgIHJldHVybiBpbnZhbGlk
SW5kZXg7CisgICAgLy8gY29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMgaXMgdGhlIGZ1bmN0aW9u
IFN0cmluZ0ltcGw6Omhhc2goKSB1c2VzLgorICAgIHVuc2lnbmVkIGhhc2ggPSBTdHJpbmdIYXNo
ZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAg
Y29uc3QgSWRlbnRpZmllclRhYmxlJiB0YWJsZSA9IGlkZW50aWZpZXJUYWJsZSgpOworICAgIEFT
U0VSVCghdGFibGUuaXNFbXB0eSgpKTsKKworICAgIElkZW50aWZpZXJUYWJsZTo6Y29uc3RfaXRl
cmF0b3IgaXQgPSB0YWJsZS5maW5kKGhhc2gpOworICAgIGlmIChpdCA9PSB0YWJsZS5lbmQoKSkK
KyAgICAgICAgcmV0dXJuIGludmFsaWRJbmRleDsKKyAgICByZXR1cm4gaXQtPnZhbHVlLmZpcnN0
OworfQorCitjb25zdCB1bnNpZ25lZCBrSFRNTE5hbWVzSW5kZXhPZmZzZXQgPSAwOworY29uc3Qg
dW5zaWduZWQga0hUTUxBdHRyc0luZGV4T2Zmc2V0ID0gMTAwMDsKK0NPTVBJTEVfQVNTRVJUKGtI
VE1MQXR0cnNJbmRleE9mZnNldCA+IEhUTUxUYWdzQ291bnQsIGtIVE1MQXR0cnNJbmRleE9mZnNl
dF9zaG91bGRfYmVfbGFyZ2VyX3RoYW5fSFRNTFRhZ3NDb3VudCk7CisKK3N0YXRpYyBjb25zdCBT
dHJpbmcmIG5hbWVGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICB1bnNpZ25lZCBhZGp1
c3RlZEluZGV4OworICAgIFF1YWxpZmllZE5hbWUqKiBuYW1lczsKKyAgICBpZiAoaW5kZXggPCBr
SFRNTEF0dHJzSW5kZXhPZmZzZXQpIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwga0hUTUxOYW1l
c0luZGV4T2Zmc2V0ICsgSFRNTFRhZ3NDb3VudCk7CisgICAgICAgIGFkanVzdGVkSW5kZXggPSBp
bmRleCAtIGtIVE1MTmFtZXNJbmRleE9mZnNldDsKKyAgICAgICAgbmFtZXMgPSBnZXRIVE1MVGFn
cygpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IGtIVE1MQXR0cnNJbmRl
eE9mZnNldCArIEhUTUxBdHRyc0NvdW50KTsKKyAgICAgICAgYWRqdXN0ZWRJbmRleCA9IGluZGV4
IC0ga0hUTUxBdHRyc0luZGV4T2Zmc2V0OworICAgICAgICBuYW1lcyA9IGdldEhUTUxBdHRycygp
OworICAgIH0KKyAgICAvLyBIVE1MQXR0cnMgYW5kIEhUTUxOYW1lcyBtYXkgaGF2ZSBjb2xsaXNp
b25zLCBidXQKKyAgICAvLyB3ZSBzaG91bGRuJ3QgY2FyZSB3aGljaCB3ZSBlbmRlZCB1cCBzdG9y
aW5nLCBzaW5jZSB0aGVpcgorICAgIC8vIGNvbXBvbmVudHMgYXJlIGFsbCBBdG9taWNTdHJpbmdz
IGFuZCBzaG91bGQgdXNlIHRoZSBzYW1lCisgICAgLy8gdW5kZXJseWluZyBTdHJpbmdJbXBsKi4K
KyAgICByZXR1cm4gbmFtZXNbYWRqdXN0ZWRJbmRleF0tPmxvY2FsTmFtZSgpLnN0cmluZygpOwor
fQorCitjb25zdCBTdHJpbmcmIEhUTUxJZGVudGlmaWVyOjphc1N0cmluZygpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pbmRleCAhPSBpbnZhbGlkSW5k
ZXgpCisgICAgICAgIHJldHVybiBuYW1lRm9ySW5kZXgobV9pbmRleCk7CisgICAgcmV0dXJuIG1f
c3RyaW5nOworfQorCitjb25zdCBTdHJpbmdJbXBsKiBIVE1MSWRlbnRpZmllcjo6YXNTdHJpbmdJ
bXBsKCkgY29uc3QKK3sKKyAgICBpZiAobV9pbmRleCAhPSBpbnZhbGlkSW5kZXgpCisgICAgICAg
IHJldHVybiBuYW1lRm9ySW5kZXgobV9pbmRleCkuaW1wbCgpOworICAgIHJldHVybiBtX3N0cmlu
Zy5pbXBsKCk7Cit9CisKK3ZvaWQgSFRNTElkZW50aWZpZXI6OmFkZE5hbWVzKFF1YWxpZmllZE5h
bWUqKiBuYW1lcywgdW5zaWduZWQgbmFtZXNDb3VudCwgdW5zaWduZWQgaW5kZXhPZmZzZXQpCit7
CisgICAgSWRlbnRpZmllclRhYmxlJiB0YWJsZSA9IGlkZW50aWZpZXJUYWJsZSgpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYW1lc0NvdW50OyArK2kpIHsKKyAgICAgICAgU3RyaW5n
SW1wbCogbmFtZSA9IG5hbWVzW2ldLT5sb2NhbE5hbWUoKS5pbXBsKCk7CisgICAgICAgIHVuc2ln
bmVkIGhhc2ggPSBuYW1lLT5oYXNoKCk7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gaSArIGlu
ZGV4T2Zmc2V0OworICAgICAgICBJZGVudGlmaWVyRW50cnkgZW50cnkoaW5kZXgsIG5hbWUpOwor
ICAgICAgICBJZGVudGlmaWVyVGFibGU6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSB0YWJsZS5hZGQo
aGFzaCwgZW50cnkpOworICAgICAgICBtYXhOYW1lTGVuZ3RoID0gc3RkOjptYXgobWF4TmFtZUxl
bmd0aCwgbmFtZS0+bGVuZ3RoKCkpOworICAgICAgICAvLyBFbnN1cmUgd2UncmUgdXNpbmcgdGhl
IHNhbWUgaGFzaGluZyBhbGdvcml0aG0gdG8gZ2V0IGFuZCBzZXQuCisgICAgICAgIEFTU0VSVF9V
TlVTRUQoYWRkUmVzdWx0LCAhYWRkUmVzdWx0LmlzTmV3RW50cnkgfHwgSFRNTElkZW50aWZpZXI6
OmZpbmRJbmRleChuYW1lLT5jaGFyYWN0ZXJzKCksIG5hbWUtPmxlbmd0aCgpKSA9PSBpbmRleCk7
CisgICAgICAgIC8vIFdlIGV4cGVjdCBzb21lIGhhc2ggY29sbGlzaW9ucywgYnV0IG9ubHkgZm9y
IGlkZW50aWNhbCBzdHJpbmdzLgorICAgICAgICAvLyBTaW5jZSBhbGwgb2YgdGhlc2UgbmFtZXMg
YXJlIEF0b21pY1N0cmluZ3MgcG9pbnRlcnMgc2hvdWxkIGJlIGVxdWFsLgorICAgICAgICAvLyBO
b3RlOiBJZiB5b3UgaGl0IHRoaXMgQVNTRVJULCB0aGVuIHdlIGhhZCBhIGhhc2ggY29sbGlzaW9u
IGFtb25nCisgICAgICAgIC8vIEhUTUxOYW1lcyBzdHJpbmdzLCBhbmQgd2UgbmVlZCB0byByZS1k
ZXNpZ24gaG93IHdlIHVzZSB0aGlzIGhhc2ghCisgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCAhYWRkUmVzdWx0LmlzTmV3RW50cnkgfHwgbmFtZSA9PSBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlLnNlY29uZCk7CisgICAgfQorfQorCit2b2lkIEhUTUxJZGVudGlmaWVyOjppbml0KCkK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAvLyBOb3QgdGVjaG5pY2FsbHkgbmVjZXNz
YXJ5LCBidXQgdGhpcyBpcyBvdXIgY3VycmVudCBleHBlY3RlZCB1c2FnZS4KKyAgICBzdGF0aWMg
Ym9vbCBpc0luaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKGlzSW5pdGlhbGl6ZWQpCisgICAg
ICAgIHJldHVybjsKKyAgICBpc0luaXRpYWxpemVkID0gdHJ1ZTsKKworICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYXRvbWl6ZSBzbWFsbCB3aGl0ZXNwYWNlIChcbiwgXG5cbiwgZXRjLikKKyAgICBh
ZGROYW1lcyhnZXRIVE1MVGFncygpLCBIVE1MVGFnc0NvdW50LCBrSFRNTE5hbWVzSW5kZXhPZmZz
ZXQpOworICAgIGFkZE5hbWVzKGdldEhUTUxBdHRycygpLCBIVE1MQXR0cnNDb3VudCwga0hUTUxB
dHRyc0luZGV4T2Zmc2V0KTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX0hU
TUxfUEFSU0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElk
ZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzIxZjc0NzRiZjU0NmYzNDczZTMyNTIzNDQ5OGNkMWUyOTc5NjA2ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxJZGVudGlmaWVy
LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgR09PR0xFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEhUTUxJZGVudGlmaWVyX2gKKyNkZWZpbmUgSFRNTElkZW50
aWZpZXJfaAorCisjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQorCisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUXVh
bGlmaWVkTmFtZTsKKworZW51bSBDaGFyYWN0ZXJXaWR0aCB7CisgICAgTGlrZWx5OEJpdCwKKyAg
ICBGb3JjZThCaXQsCisgICAgRm9yY2UxNkJpdAorfTsKKworY2xhc3MgSFRNTElkZW50aWZpZXIg
eworcHVibGljOgorICAgIEhUTUxJZGVudGlmaWVyKCkgOiBtX2luZGV4KDApIHsgfQorCisgICAg
dGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgorICAgIEhUTUxJZGVudGlmaWVyKGNvbnN0
IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IsIENoYXJhY3RlcldpZHRoIHdp
ZHRoKQorICAgICAgICA6IG1faW5kZXgoZmluZEluZGV4KHZlY3Rvci5kYXRhKCksIHZlY3Rvci5z
aXplKCkpKQorICAgIHsKKyAgICAgICAgaWYgKG1faW5kZXggIT0gaW52YWxpZEluZGV4KQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAod2lkdGggPT0gTGlrZWx5OEJpdCkKKyAgICAg
ICAgICAgIG1fc3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlOEJpdElmUG9zc2libGUodmVjdG9y
KTsKKyAgICAgICAgZWxzZSBpZiAod2lkdGggPT0gRm9yY2U4Qml0KQorICAgICAgICAgICAgbV9z
dHJpbmcgPSBTdHJpbmc6Om1ha2U4Qml0RnJvbTE2Qml0U291cmNlKHZlY3Rvcik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1fc3RyaW5nID0gU3RyaW5nKHZlY3Rvcik7CisgICAgfQorCisg
ICAgLy8gYXNTdHJpbmcgc2hvdWxkIG9ubHkgYmUgdXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisg
ICAgY29uc3QgU3RyaW5nJiBhc1N0cmluZygpIGNvbnN0OworICAgIC8vIGFzU3RyaW5nSW1wbCgp
IGlzIHNhZmUgdG8gY2FsbCBmcm9tIGFueSB0aHJlYWQuCisgICAgY29uc3QgU3RyaW5nSW1wbCog
YXNTdHJpbmdJbXBsKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgdm9pZCBpbml0KCk7CisKKyAgICBi
b29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
LmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpOyB9CisKKyNpZm5kZWYgTkRFQlVHCisgICAg
c3RhdGljIGJvb2wgaGFzSW5kZXgoY29uc3QgU3RyaW5nSW1wbCopOworI2VuZGlmCisKK3ByaXZh
dGU6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludmFsaWRJbmRleCA9IC0xOworICAgIHN0
YXRpYyB1bnNpZ25lZCBtYXhOYW1lTGVuZ3RoOworICAgIHN0YXRpYyB1bnNpZ25lZCBmaW5kSW5k
ZXgoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGlj
IHZvaWQgYWRkTmFtZXMoUXVhbGlmaWVkTmFtZSoqIG5hbWVzLCB1bnNpZ25lZCBuYW1lc0NvdW50
LCB1bnNpZ25lZCBpbmRleE9mZnNldCk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBh
IHVuaW9uLgorICAgIHVuc2lnbmVkIG1faW5kZXg7CisgICAgU3RyaW5nIG1fc3RyaW5nOworfTsK
KworfQorCisjZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5k
ZXggOTQ0N2NmZTZjOGI3NzdkMDBmMThjZjg0ZDZjN2YyZmI0OTVkZDNhYi4uYjc3ZDU4YjI0NzYz
NTUzYjFhMjI1MzFjZmJlMTZmMDM3ZmQ2MDQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJIVE1MUGFyc2VySWRpb21zLmgiCiAKICNpbmNsdWRlICJEZWNpbWFsLmgiCisjaW5jbHVkZSAi
SFRNTElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSA8
bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC0yNzcsOCArMjc4LDEwIEBA
IGJvb2wgcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGNvbnN0IFN0cmluZyYgaW5wdXQsIHVu
c2lnbmVkJiB2YWx1ZSkKICAgICByZXR1cm4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VySW50
ZXJuYWwoc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoLCB2YWx1ZSk7CiB9CiAKLXN0YXRpYyBib29sIHRo
cmVhZFNhZmVFcXVhbChTdHJpbmdJbXBsKiBhLCBTdHJpbmdJbXBsKiBiKQorc3RhdGljIGJvb2wg
dGhyZWFkU2FmZUVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEsIGNvbnN0IFN0cmluZ0ltcGwqIGIp
CiB7CisgICAgaWYgKGEgPT0gYikKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGEtPmhh
c2goKSAhPSBiLT5oYXNoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gU3Ry
aW5nSGFzaDo6ZXF1YWwoYSwgYik7CkBAIC0yODksOSArMjkyLDExIEBAIGJvb2wgdGhyZWFkU2Fm
ZU1hdGNoKGNvbnN0IFF1YWxpZmllZE5hbWUmIGEsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGIpCiAg
ICAgcmV0dXJuIHRocmVhZFNhZmVFcXVhbChhLmxvY2FsTmFtZSgpLmltcGwoKSwgYi5sb2NhbE5h
bWUoKS5pbXBsKCkpOwogfQogCi1ib29sIHRocmVhZFNhZmVNYXRjaChjb25zdCBTdHJpbmcmIGxv
Y2FsTmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCisjaWYgRU5BQkxFKFRIUkVBREVE
X0hUTUxfUEFSU0VSKQorYm9vbCB0aHJlYWRTYWZlTWF0Y2goY29uc3QgSFRNTElkZW50aWZpZXIm
IGxvY2FsTmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCiB7Ci0gICAgcmV0dXJuIHRo
cmVhZFNhZmVFcXVhbChsb2NhbE5hbWUuaW1wbCgpLCBxTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkp
OworICAgIHJldHVybiB0aHJlYWRTYWZlRXF1YWwobG9jYWxOYW1lLmFzU3RyaW5nSW1wbCgpLCBx
TmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQorI2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAppbmRleCBhMDMxZTQ1Y2ZmMzIzNTNm
MTQwYTBhMjAxOTViOWY5ZjM2MzI3YjNlLi5iYzU4MDg5MTA2N2UwMTM5NTYyOTVlYzNjNWFiOTRl
ODAzZGVmN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5oCkBAIC0yNSw2ICsyNSw4IEBACiAjaWZuZGVmIEhUTUxQYXJzZXJJZGlvbXNfaAogI2Rl
ZmluZSBIVE1MUGFyc2VySWRpb21zX2gKIAorI2luY2x1ZGUgIkhUTUxJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29k
ZS5oPgpAQCAtMzIsNyArMzQsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWNp
bWFsOwotY2xhc3MgUXVhbGlmaWVkTmFtZTsKIAogLy8gU3BhY2UgY2hhcmFjdGVycyBhcyBkZWZp
bmVkIGJ5IHRoZSBIVE1MIHNwZWNpZmljYXRpb24uCiBib29sIGlzSFRNTFNwYWNlKFVDaGFyKTsK
QEAgLTkzLDcgKzk0LDE2IEBAIGlubGluZSBib29sIGlzTm90SFRNTFNwYWNlKFVDaGFyIGNoYXJh
Y3RlcikKIH0KIAogYm9vbCB0aHJlYWRTYWZlTWF0Y2goY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKLWJvb2wgdGhyZWFkU2FmZU1hdGNoKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIp
Citib29sIHRocmVhZFNhZmVNYXRjaChjb25zdCBIVE1MSWRlbnRpZmllciYsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKK2lubGluZSBib29sIHRocmVhZFNhZmVIVE1MTmFtZXNNYXRjaChjb25zdCBI
VE1MSWRlbnRpZmllciYgdGFnTmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCit7Cisg
ICAgLy8gV2hlbiB0aGUgUXVhbGlmaWVkTmFtZSBpcyBrbm93biB0byBIVE1MSWRlbnRpZmllciwK
KyAgICAvLyBhbGwgd2UgaGF2ZSB0byBkbyBpcyBhIHBvaW50ZXIgY29tcGFyZS4KKyAgICBBU1NF
UlQoSFRNTElkZW50aWZpZXI6Omhhc0luZGV4KHFOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSkpOwor
ICAgIHJldHVybiB0YWdOYW1lLmFzU3RyaW5nSW1wbCgpID09IHFOYW1lLmxvY2FsTmFtZSgpLmlt
cGwoKTsKK30KKyNlbmRpZgogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IGE1N2M1ZDM4NWUzZTcxZTcxYjU1MWQ0M2Nh
ZWQwNzUyMzgzNWIzMDYuLmUwMTFlYTI5YTBiZGVhZDdmOGY5NmFiNjBkYTlkNjRkZTYwMTZjOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVy
LmNwcApAQCAtNjMsMjQgKzYzLDI2IEBAIFRva2VuUHJlbG9hZFNjYW5uZXI6OlRhZ0lkIFRva2Vu
UHJlbG9hZFNjYW5uZXI6OnRhZ0lkRm9yKGNvbnN0IEhUTUxUb2tlbjo6RGF0YVZlCiAgICAgcmV0
dXJuIFVua25vd25UYWdJZDsKIH0KIAotVG9rZW5QcmVsb2FkU2Nhbm5lcjo6VGFnSWQgVG9rZW5Q
cmVsb2FkU2Nhbm5lcjo6dGFnSWRGb3IoY29uc3QgU3RyaW5nJiB0YWdOYW1lKQorI2lmIEVOQUJM
RShUSFJFQURFRF9IVE1MX1BBUlNFUikKK1Rva2VuUHJlbG9hZFNjYW5uZXI6OlRhZ0lkIFRva2Vu
UHJlbG9hZFNjYW5uZXI6OnRhZ0lkRm9yKGNvbnN0IEhUTUxJZGVudGlmaWVyJiB0YWdOYW1lKQog
ewotICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgaW1nVGFnKSkKKyAgICBpZiAodGhy
ZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGltZ1RhZykpCiAgICAgICAgIHJldHVybiBJ
bWdUYWdJZDsKLSAgICBpZiAodGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIGlucHV0VGFnKSkKKyAg
ICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGlucHV0VGFnKSkKICAgICAg
ICAgcmV0dXJuIElucHV0VGFnSWQ7Ci0gICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBs
aW5rVGFnKSkKKyAgICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGxpbmtU
YWcpKQogICAgICAgICByZXR1cm4gTGlua1RhZ0lkOwotICAgIGlmICh0aHJlYWRTYWZlTWF0Y2go
dGFnTmFtZSwgc2NyaXB0VGFnKSkKKyAgICBpZiAodGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRh
Z05hbWUsIHNjcmlwdFRhZykpCiAgICAgICAgIHJldHVybiBTY3JpcHRUYWdJZDsKLSAgICBpZiAo
dGhyZWFkU2FmZU1hdGNoKHRhZ05hbWUsIHN0eWxlVGFnKSkKKyAgICBpZiAodGhyZWFkU2FmZUhU
TUxOYW1lc01hdGNoKHRhZ05hbWUsIHN0eWxlVGFnKSkKICAgICAgICAgcmV0dXJuIFN0eWxlVGFn
SWQ7Ci0gICAgaWYgKHRocmVhZFNhZmVNYXRjaCh0YWdOYW1lLCBiYXNlVGFnKSkKKyAgICBpZiAo
dGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKHRhZ05hbWUsIGJhc2VUYWcpKQogICAgICAgICByZXR1
cm4gQmFzZVRhZ0lkOwotICAgIGlmICh0aHJlYWRTYWZlTWF0Y2godGFnTmFtZSwgdGVtcGxhdGVU
YWcpKQorICAgIGlmICh0aHJlYWRTYWZlSFRNTE5hbWVzTWF0Y2godGFnTmFtZSwgdGVtcGxhdGVU
YWcpKQogICAgICAgICByZXR1cm4gVGVtcGxhdGVUYWdJZDsKICAgICByZXR1cm4gVW5rbm93blRh
Z0lkOwogfQorI2VuZGlmCiAKIFN0cmluZyBUb2tlblByZWxvYWRTY2FubmVyOjppbml0aWF0b3JG
b3IoVGFnSWQgdGFnSWQpCiB7CkBAIC0xNDcsMjggKzE0OSw0MiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKICAgICB9CiAKK3N0YXRpYyBib29sIG1hdGNoKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gcU5hbWUubG9jYWxOYW1lKCkg
PT0gbmFtZTsKK30KKworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKK3N0YXRpYyBi
b29sIG1hdGNoKGNvbnN0IEhUTUxJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBRdWFsaWZpZWROYW1l
JiBxTmFtZSkKK3sKKyAgICByZXR1cm4gdGhyZWFkU2FmZUhUTUxOYW1lc01hdGNoKG5hbWUsIHFO
YW1lKTsKK30KKyNlbmRpZgorCiBwcml2YXRlOgotICAgIHZvaWQgcHJvY2Vzc0F0dHJpYnV0ZShj
b25zdCBTdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTmFtZVR5cGU+CisgICAgdm9pZCBwcm9jZXNzQXR0cmli
dXRlKGNvbnN0IE5hbWVUeXBlJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0
ZVZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaChhdHRyaWJ1dGVOYW1l
LCBjaGFyc2V0QXR0cikpCisgICAgICAgIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCBjaGFyc2V0
QXR0cikpCiAgICAgICAgICAgICBtX2NoYXJzZXQgPSBhdHRyaWJ1dGVWYWx1ZTsKIAogICAgICAg
ICBpZiAobV90YWdJZCA9PSBTY3JpcHRUYWdJZCB8fCBtX3RhZ0lkID09IEltZ1RhZ0lkKSB7Ci0g
ICAgICAgICAgICBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIHNyY0F0dHIpKQor
ICAgICAgICAgICAgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIHNyY0F0dHIpKQogICAgICAgICAg
ICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1dGVWYWx1ZSk7Ci0gICAgICAgICAgICBlbHNlIGlm
ICh0aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRlTmFtZSwgY3Jvc3NvcmlnaW5BdHRyKSAmJiAhYXR0
cmlidXRlVmFsdWUuaXNOdWxsKCkpCisgICAgICAgICAgICBlbHNlIGlmIChtYXRjaChhdHRyaWJ1
dGVOYW1lLCBjcm9zc29yaWdpbkF0dHIpICYmICFhdHRyaWJ1dGVWYWx1ZS5pc051bGwoKSkKICAg
ICAgICAgICAgICAgICBtX2Nyb3NzT3JpZ2luTW9kZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyhhdHRyaWJ1dGVWYWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAobV90YWdJZCA9
PSBMaW5rVGFnSWQpIHsKLSAgICAgICAgICAgIGlmICh0aHJlYWRTYWZlTWF0Y2goYXR0cmlidXRl
TmFtZSwgaHJlZkF0dHIpKQorICAgICAgICAgICAgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIGhy
ZWZBdHRyKSkKICAgICAgICAgICAgICAgICBzZXRVcmxUb0xvYWQoYXR0cmlidXRlVmFsdWUpOwot
ICAgICAgICAgICAgZWxzZSBpZiAodGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIHJlbEF0
dHIpKQorICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgcmVsQXR0cikp
CiAgICAgICAgICAgICAgICAgbV9saW5rSXNTdHlsZVNoZWV0ID0gcmVsQXR0cmlidXRlSXNTdHls
ZVNoZWV0KGF0dHJpYnV0ZVZhbHVlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRocmVhZFNhZmVN
YXRjaChhdHRyaWJ1dGVOYW1lLCBtZWRpYUF0dHIpKQorICAgICAgICAgICAgZWxzZSBpZiAobWF0
Y2goYXR0cmlidXRlTmFtZSwgbWVkaWFBdHRyKSkKICAgICAgICAgICAgICAgICBtX2xpbmtNZWRp
YUF0dHJpYnV0ZUlzU2NyZWVuID0gbGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW4oYXR0cmlidXRl
VmFsdWUpOwogICAgICAgICB9IGVsc2UgaWYgKG1fdGFnSWQgPT0gSW5wdXRUYWdJZCkgewotICAg
ICAgICAgICAgaWYgKHRocmVhZFNhZmVNYXRjaChhdHRyaWJ1dGVOYW1lLCBzcmNBdHRyKSkKKyAg
ICAgICAgICAgIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCBzcmNBdHRyKSkKICAgICAgICAgICAg
ICAgICBzZXRVcmxUb0xvYWQoYXR0cmlidXRlVmFsdWUpOwotICAgICAgICAgICAgZWxzZSBpZiAo
dGhyZWFkU2FmZU1hdGNoKGF0dHJpYnV0ZU5hbWUsIHR5cGVBdHRyKSkKKyAgICAgICAgICAgIGVs
c2UgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIHR5cGVBdHRyKSkKICAgICAgICAgICAgICAgICBt
X2lucHV0SXNJbWFnZSA9IGVxdWFsSWdub3JpbmdDYXNlKGF0dHJpYnV0ZVZhbHVlLCBJbnB1dFR5
cGVOYW1lczo6aW1hZ2UoKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oCmluZGV4IDQ3YTU0NDRmMTBlOGNmZGQ2
YmE3MGIwNmJlMDhmMjU0NDA0Y2MwMWIuLmQyZjJjMTE4OWMyNWY1MGRiMjkyM2ZmYjM0YTcxMjZl
NDI3YTNiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5oCkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgaW5saW5lIHZvaWQgc2Nh
bkNvbW1vbihjb25zdCBUb2tlbiYsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJiByZXF1ZXN0cyk7CiAK
ICAgICBzdGF0aWMgVGFnSWQgdGFnSWRGb3IoY29uc3QgSFRNTFRva2VuOjpEYXRhVmVjdG9yJik7
Ci0gICAgc3RhdGljIFRhZ0lkIHRhZ0lkRm9yKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBU
YWdJZCB0YWdJZEZvcihjb25zdCBIVE1MSWRlbnRpZmllciYpOwogCiAgICAgc3RhdGljIFN0cmlu
ZyBpbml0aWF0b3JGb3IoVGFnSWQpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>