<?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>186698</bug_id>
          
          <creation_ts>2018-06-15 14:57:37 -0700</creation_ts>
          <short_desc>Make it possible to track call sites that waste Vector and HashMap capacity</short_desc>
          <delta_ts>2023-02-03 21:04:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>annulen</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>lforschler</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>rbuis</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1433567</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-15 14:57:37 -0700</bug_when>
    <thetext>We should have tooling that we can enable that allows us to find call sites that waste vector capacity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433568</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-15 14:58:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/41173203&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433638</commentid>
    <comment_count>2</comment_count>
      <attachid>342860</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-15 17:32:48 -0700</bug_when>
    <thetext>Created attachment 342860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433639</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-15 17:34:00 -0700</bug_when>
    <thetext>Attachment 342860 did not pass style-queue:


ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:40:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:64:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:65:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433640</commentid>
    <comment_count>4</comment_count>
      <attachid>342861</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-15 17:43:04 -0700</bug_when>
    <thetext>Created attachment 342861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433641</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-15 17:44:53 -0700</bug_when>
    <thetext>Attachment 342861 did not pass style-queue:


ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:40:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:64:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:65:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433642</commentid>
    <comment_count>6</comment_count>
      <attachid>342862</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-15 17:52:43 -0700</bug_when>
    <thetext>Created attachment 342862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433643</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-15 17:54:17 -0700</bug_when>
    <thetext>Attachment 342862 did not pass style-queue:


ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:40:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:64:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:65:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433759</commentid>
    <comment_count>8</comment_count>
      <attachid>342886</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-16 12:09:05 -0700</bug_when>
    <thetext>Created attachment 342886
Track Vector and HashTable capacity</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433760</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-16 12:11:58 -0700</bug_when>
    <thetext>Attachment 342886 did not pass style-queue:


ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:40:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:64:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:65:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433812</commentid>
    <comment_count>10</comment_count>
      <attachid>342887</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-16 13:03:09 -0700</bug_when>
    <thetext>Created attachment 342887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433813</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-16 13:04:48 -0700</bug_when>
    <thetext>Attachment 342887 did not pass style-queue:


ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:40:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:64:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:65:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433815</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-16 13:35:50 -0700</bug_when>
    <thetext>This builds for me on clang 900.0.39. I wonder what version the bots are using.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433819</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-16 13:54:07 -0700</bug_when>
    <thetext>Also builds for me locally if I pass -std=gnu++1y which the bots are doing. My local build uses -std=gnu++14 by default. Why are we not using the same arguments everywhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433820</commentid>
    <comment_count>14</comment_count>
      <attachid>342889</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-16 13:55:43 -0700</bug_when>
    <thetext>Created attachment 342889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433821</commentid>
    <comment_count>15</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-16 13:57:51 -0700</bug_when>
    <thetext>Attachment 342889 did not pass style-queue:


ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:40:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:64:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:65:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433831</commentid>
    <comment_count>16</comment_count>
      <attachid>342893</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-16 16:23:33 -0700</bug_when>
    <thetext>Created attachment 342893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433832</commentid>
    <comment_count>17</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-16 16:25:21 -0700</bug_when>
    <thetext>Attachment 342893 did not pass style-queue:


ERROR: Source/WTF/wtf/ContainerCapacityTracker.cpp:114:  Use &apos;WTFMove()&apos; instead of &apos;std::move()&apos;.  [runtime/wtf_move] [4]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:40:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:64:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/ContainerCapacityTracker.h:65:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 5 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433864</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-06-17 01:41:58 -0700</bug_when>
    <thetext>Mac bots where this fails have Xcode 8.3.3, and pass no special options (it&apos;s just build-webkit through webkit-patch). 8.3.3 is the newest version that exists for macOS Sierra.

&gt; Also builds for me locally if I pass -std=gnu++1y which the bots are doing. My local build uses -std=gnu++14 by default. Why are we not using the same arguments everywhere?

IIRC Yusuke found that different option names are needed for Xcode 8.3 and for Xcode 9.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433890</commentid>
    <comment_count>19</comment_count>
      <attachid>342893</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-06-17 11:14:41 -0700</bug_when>
    <thetext>Comment on attachment 342893
Patch

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

&gt; Source/WTF/wtf/Vector.h:952
&gt; +#if TRACK_VECTOR_CAPACITY
&gt; +    vectorTracker().recordSizeAndCapacity(m_trackedID, sizeInBytes(), capacityInBytes());
&gt; +#endif

This should be a single member function, with an empty inline definition for when TRACK_VECTOR_CAPACITY is off. So we don’t need to paste this three line idiom in all the functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434147</commentid>
    <comment_count>20</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-18 13:40:21 -0700</bug_when>
    <thetext>Are EWS using the most recent version of the tools that we need to support, or can we update them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1434156</commentid>
    <comment_count>21</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-06-18 13:51:28 -0700</bug_when>
    <thetext>That&apos;s what needs to be supported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469063</commentid>
    <comment_count>22</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2018-10-14 13:59:54 -0700</bug_when>
    <thetext>The patch does not apply for me 100% (I use git svn), just a tiny conflict in StackShot.h.
How about doing this to filter out the 0 byte waste announcements for Vector?:
diff --git a/Source/WTF/wtf/Vector.cpp b/Source/WTF/wtf/Vector.cpp
index 9abb6df014f..547e92afe5e 100644
--- a/Source/WTF/wtf/Vector.cpp
+++ b/Source/WTF/wtf/Vector.cpp
@@ -46,7 +46,7 @@ static void dumpWastedVectorCapacity()
     // Make a vector of raw pointers so we can sort them.
     std::vector&lt;AllocationCallSiteData*&gt; callSitePtrs;
     for (const auto&amp; siteData : callSiteData) {
-        if (!siteData.capacity)
+        if (!siteData.capacity || (siteData.capacity == siteData.usedSize))
             continue;
         callSitePtrs.push_back(const_cast&lt;AllocationCallSiteData*&gt;(&amp;siteData));
     }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469141</commentid>
    <comment_count>23</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-10-14 22:18:35 -0700</bug_when>
    <thetext>(In reply to Rob Buis from comment #22)
&gt; The patch does not apply for me 100% (I use git svn), just a tiny conflict
&gt; in StackShot.h.
&gt; How about doing this to filter out the 0 byte waste announcements for
&gt; Vector?:
&gt; diff --git a/Source/WTF/wtf/Vector.cpp b/Source/WTF/wtf/Vector.cpp
&gt; index 9abb6df014f..547e92afe5e 100644
&gt; --- a/Source/WTF/wtf/Vector.cpp
&gt; +++ b/Source/WTF/wtf/Vector.cpp
&gt; @@ -46,7 +46,7 @@ static void dumpWastedVectorCapacity()
&gt;      // Make a vector of raw pointers so we can sort them.
&gt;      std::vector&lt;AllocationCallSiteData*&gt; callSitePtrs;
&gt;      for (const auto&amp; siteData : callSiteData) {
&gt; -        if (!siteData.capacity)
&gt; +        if (!siteData.capacity || (siteData.capacity == siteData.usedSize))
&gt;              continue;
&gt;         
&gt; callSitePtrs.push_back(const_cast&lt;AllocationCallSiteData*&gt;(&amp;siteData));
&gt;      }

Sure. Feel free to attach a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469339</commentid>
    <comment_count>24</comment_count>
      <attachid>352346</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2018-10-15 11:28:05 -0700</bug_when>
    <thetext>Created attachment 352346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475042</commentid>
    <comment_count>25</comment_count>
      <attachid>352346</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-11-05 05:25:48 -0800</bug_when>
    <thetext>Comment on attachment 352346
Patch

It seems this patch does not build on non-Cocoa platforms?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613594</commentid>
    <comment_count>26</comment_count>
      <attachid>389418</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-31 14:44:54 -0800</bug_when>
    <thetext>Created attachment 389418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746788</commentid>
    <comment_count>27</comment_count>
      <attachid>425098</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-04-03 10:18:44 -0700</bug_when>
    <thetext>Created attachment 425098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1930354</commentid>
    <comment_count>28</comment_count>
      <attachid>464809</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2023-02-01 21:54:29 -0800</bug_when>
    <thetext>Created attachment 464809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1930680</commentid>
    <comment_count>29</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2023-02-02 16:16:17 -0800</bug_when>
    <thetext>*** Bug 186699 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1931081</commentid>
    <comment_count>30</comment_count>
      <attachid>464831</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2023-02-03 21:04:25 -0800</bug_when>
    <thetext>Created attachment 464831
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342860</attachid>
            <date>2018-06-15 17:32:48 -0700</date>
            <delta_ts>2018-06-15 17:43:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186698-20180615173247.patch</filename>
            <type>text/plain</type>
            <size>44304</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRmMWMzMTZhNzkwZTAwYmExODRkOWVm
NjYwMjE1ZmQ2NDk0ZDRlMDQuLmEyZjExMDZmODc0MmY5NWJkYzJmOGFkZmRkOTlkNjZjOGQ2NzQz
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTgtMDYtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0cmFjayBj
YWxsIHNpdGVzIHRoYXQgd2FzdGUgVmVjdG9yIGNhcGFjaXR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY2OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZCBDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIgd2hpY2ggY2FuIGFnZ3JlZ2F0ZSBkYXRhIG9uIGEgcGVyLWNhbGwgc2l0ZSBiYXNp
cyAoYnkgdGFraW5nCisgICAgICAgIGEgc3RhY2tzaG90IE4gZnJhbWVzIGRlZXAsIGFuZCBoYXNo
aW5nIGl0KSwgYW5kIGlzIGluZm9ybWVkIGFib3V0IGFsbG9jYXRpb25zLCBzaXplIGFuZCAKKyAg
ICAgICAgY2FwYWNpdHkgY2hhbmdlcywgYW5kIGZyZWVzIG9mIGNvbnRhaW5lciB0eXBlcyAoZS5n
LiBWZWN0b3IgYW5kIEhhc2hNYXApLgorICAgICAgICAKKyAgICAgICAgV2hlbiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkgaXMgZGVmaW5lZCBpbiBWZWN0b3IuaCwgYSBzaW5nbGV0b24gQ29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyCisgICAgICAgIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiBhbGwgVmVj
dG9ycyBhbmQgdGhlaXIgc2l6ZSBhbmQgY2FwYWNpdHkgY2hhbmdlcy4gVmVjdG9yIGdhaW5zCisg
ICAgICAgIGFuIG1fdHJhY2tlZElEIG1lbWJlciB2YXJpYWJsZSB0byBhbGxvdyB0cmFja2luZyAo
VmVjdG9ycyBjYW4gYmUgV1RGTW92ZWQgYW5kIHN0ZDo6c3dhcHBlZCwKKyAgICAgICAgc28gd2Ug
Y2FuJ3QgcmVseSBvbiB0aGVpciBhZGRyZXNzIHRvIHRyYWNrIHRoZW0pLgorICAgICAgICAKKyAg
ICAgICAgRGF0YSBhYm91dCBsaXZlIFZlY3RvcnMgY2FuIHRoZW4gYmUgZHVtcGVkIHdpdGggIm5v
dGlmeXV0aWwgLXAgY29tLmFwcGxlLldlYktpdC5kdW1wVmVjdG9yQ2FwYWNpdHkiLAorICAgICAg
ICB2aWEgY29kZSBpbiBWZWN0b3IuY3BwLgorICAgICAgICAKKyAgICAgICAgQ29udGFpbmVyQ2Fw
YWNpdHlUcmFja2VyIHRha2VzIGNhcmUgdG8gYXZvaWQgcmUtZW50cmFuY3kgKGFsbG93IGl0IHRv
IHVzZSB0aGUgY29udGFpbmVyIHR5cGVzKQorICAgICAgICB3aGlsZSBiZWluZyBjYWxsYWJsZSBm
cm9tIGRpZmZlcmVudCB0aHJlYWRzLgorICAgICAgICAKKyAgICAgICAgKiBXVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAqIHd0
Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaDogQWRkZWQuCisgICAgICAgICogd3RmL1NpemVM
aW1pdHMuY3BwOgorICAgICAgICAqIHd0Zi9TdGFja1Nob3QuaDoKKyAgICAgICAgKiB3dGYvVmVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OmR1bXBXYXN0ZWRWZWN0b3JDYXBhY2l0eSk6
CisgICAgICAgIChXVEY6OnZlY3RvclRyYWNrZXIpOgorICAgICAgICAqIHd0Zi9WZWN0b3IuaDoK
KyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6Y2FwYWNpdHlJbkJ5dGVzIGNvbnN0KToK
KyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6c2l6ZUluQnl0ZXMgY29uc3QpOgorICAg
ICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjpWZWN0b3JCdWZmZXJCYXNlKToKKyAgICAgICAg
KFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6flZlY3RvckJ1ZmZlckJhc2UpOgorICAgICAgICAoV1RG
OjpWZWN0b3JCdWZmZXI6OnN3YXApOgorICAgICAgICAoV1RGOjpWZWN0b3I6OmZyb20pOgorICAg
ICAgICAoV1RGOjpWZWN0b3I6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdURjo6VmVj
dG9yOjpjYXBhY2l0eUluQnl0ZXMgY29uc3QpOgorICAgICAgICAoV1RGOjpWZWN0b3I6OnN3YXAp
OgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OlZlY3Rvcik6CisgICAgICAgIChXVEY6Oj0p
OgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmZpbGwpOgorICAgICAgICAoV1RGOjptaW5D
YXBhY2l0eT46OnJlc2l6ZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6c2hyaW5rKToK
KyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojpncm93KToKKyAgICAgICAgKFdURjo6bWluQ2Fw
YWNpdHk+OjpyZXNlcnZlQ2FwYWNpdHkpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnRy
eVJlc2VydmVDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6c2hyaW5rQ2FwYWNp
dHkpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmFwcGVuZCk6CisgICAgICAgIChXVEY6
Om1pbkNhcGFjaXR5Pjo6dHJ5QXBwZW5kKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojpj
b25zdHJ1Y3RBbmRBcHBlbmQpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnRyeUNvbnN0
cnVjdEFuZEFwcGVuZCk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6YXBwZW5kU2xvd0Nh
c2UpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmNvbnN0cnVjdEFuZEFwcGVuZFNsb3dD
YXNlKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojp0cnlDb25zdHJ1Y3RBbmRBcHBlbmRT
bG93Q2FzZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6dW5jaGVja2VkQXBwZW5kKToK
KyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+OjppbnNlcnQpOgorICAgICAgICAoV1RGOjptaW5D
YXBhY2l0eT46OnJlbW92ZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVtb3ZlQWxs
TWF0Y2hpbmcpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnJlbGVhc2VCdWZmZXIpOgor
CiAyMDE4LTA2LTEzICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEF1dG9tYXRpY1RocmVhZCBzaG91bGQgaGF2ZSBhIHdheSB0byBwcm92aWRlIGEgdGhy
ZWFkIG5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVm
MWIzM2I3ZmUwNzgyZjFkODc0MDU5OTNmNmY0MTA2YjEwNjZlMjAuLjE5NWIwN2E2NTM3YjRmYjFm
N2Y0ZmRiZWZkM2E2ZGVkOTNiZGY5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjQsNiArMjQsNyBAQAogCQkwRjMwQkE5MDFFNzg3MDhFMDAyQ0E4NDcg
LyogR2xvYmFsVmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjMwQkE4QTFFNzg3MDhFMDAyQ0E4NDcgLyogR2xvYmFsVmVyc2lvbi5jcHAg
Ki87IH07CiAJCTBGMzBDQjVBMUZDREYxMzQwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNl
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMw
Q0I1ODFGQ0RGMTMzMDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwICovOyB9Owog
CQkwRjQzRDhGMTFEQjVBRERDMDAxMDhGQjYgLyogQXV0b21hdGljVGhyZWFkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDNEOEVGMURCNUFEREMw
MDEwOEZCNiAvKiBBdXRvbWF0aWNUaHJlYWQuY3BwICovOyB9OworCQkwRjVCNERGQTIwRDBERTE4
MDBENkY1MTAgLyogQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUI0REY5MjBEMERFMTcwMEQ2RjUxMCAv
KiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwICovOyB9OwogCQkwRjVCRjE3NjFGMjNENDlB
MDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1QkYxNzQxRjIzRDQ5QTAwMjlEOTFEIC8qIEdpZ2FjYWdlLmNwcCAq
LzsgfTsKIAkJMEY2MEYzMkYxREZDQkQxQjAwNDE2RDZDIC8qIExvY2tlZFByaW50U3RyZWFtLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjBGMzJE
MURGQ0JEMUIwMDQxNkQ2QyAvKiBMb2NrZWRQcmludFN0cmVhbS5jcHAgKi87IH07CiAJCTBGNjZC
MjhBMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NkIyODAxREM5N0JBQjAwNEExRDNGIC8qIENs
b2NrVHlwZS5jcHAgKi87IH07CkBAIC0zOCw2ICszOSw3IEBACiAJCTBGOEYyQjkyMTcyRTAxMDMw
MDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGMkI4RjE3MkUwMEYwMDA3REJEQTUgLyogQ29tcGls
YXRpb25UaHJlYWQuY3BwICovOyB9OwogCQkwRjlEMzM2MDE2NURCQTczMDA1QUQzODcgLyogRmls
ZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOUQzMzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwICov
OyB9OwogCQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUQxNjVEQkE3
MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCAqLzsgfTsKKwkJMEZENzNDQkIyMEQ0NzU4NDAw
RkM3QTI5IC8qIFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkQ3M0NCQTIwRDQ3NTgzMDBGQzdBMjkgLyogVmVjdG9yLmNwcCAqLzsgfTsK
IAkJMEZEREJGQTcxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRERCRkE1MTY2NkRG
QTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5jcHAgKi87IH07CiAJCTBGRTE2NDZBMUI2
RkZDOTYwMDQwMEU3QyAvKiBMb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRTE2NDY4MUI2RkZDOTYwMDQwMEU3QyAvKiBMb2NrLmNwcCAqLzsg
fTsKIAkJMEZFNDQ3OUMxQjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTQ0NzlBMUI3QUFBMDMwMDk0
OThFQiAvKiBXb3JkTG9jay5jcHAgKi87IH07CkBAIC0yMDAsNiArMjAyLDggQEAKIAkJMEY0NTcw
NDIxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRG9taW5hdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjQ1NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCdWJibGVTb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNEQ4QzcxMUZDMUU3Q0UwMDFEMzJBQyAvKiBTaW5nbHlMaW5rZWRMaXN0V2l0aFRhaWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2luZ2x5TGlua2VkTGlzdFdpdGhU
YWlsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNUI0REY4MjBEMERFMTcwMEQ2
RjUxMCAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNUI0REY5MjBEMERFMTcwMEQ2RjUxMCAvKiBDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGFp
bmVyQ2FwYWNpdHlUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1
QkYxNjUxRjIzMTc4MzAwMjlEOTFEIC8qIE5hdHVyYWxMb29wcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
YXR1cmFsTG9vcHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QkYxNzQxRjIz
RDQ5QTAwMjlEOTFEIC8qIEdpZ2FjYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdpZ2FjYWdl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QkYxNzUxRjIzRDQ5QTAwMjlE
OTFEIC8qIEdpZ2FjYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdpZ2FjYWdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNDYsNiArMjUwLDcgQEAKIAkJMEZCNDY3ODMxRkRFMjgyQzAw
M0ZDQjA5IC8qIENvbmN1cnJlbnRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29uY3VycmVudFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkM0NDg4MjE2RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkM0RURFNTE2OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQcmludGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hUHJpbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkQ3M0NCQTIwRDQ3NTgzMDBGQzdBMjkgLyogVmVjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RCaXRWZWN0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEQjY5OEQxQjdDNjQzQTAwMEMxMDc4IC8qIENv
bmRpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25kaXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEREJGQTUxNjY2REZBMzAwQzU1RkVGIC8q
IFN0cmluZ1ByaW50U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN0cmluZ1ByaW50U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTg0NCw2ICs4NDksOCBAQAogCQkJCTBGMzBDQjU5MUZDREYxMzMwMDRCNTMyMyAvKiBDb25jdXJy
ZW50UHRySGFzaFNldC5oICovLAogCQkJCTBGQjQ2NzgzMUZERTI4MkMwMDNGQ0IwOSAvKiBDb25j
dXJyZW50VmVjdG9yLmggKi8sCiAJCQkJMEZEQjY5OEQxQjdDNjQzQTAwMEMxMDc4IC8qIENvbmRp
dGlvbi5oICovLAorCQkJCTBGNUI0REY5MjBEMERFMTcwMEQ2RjUxMCAvKiBDb250YWluZXJDYXBh
Y2l0eVRyYWNrZXIuY3BwICovLAorCQkJCTBGNUI0REY4MjBEMERFMTcwMEQ2RjUxMCAvKiBDb250
YWluZXJDYXBhY2l0eVRyYWNrZXIuaCAqLywKIAkJCQkwRjhFODVEQTFGRDQ4NUIwMDA2OTE4ODkg
LyogQ291bnRpbmdMb2NrLmNwcCAqLywKIAkJCQkwRkZCQ0JGQTFGRDM3RTBGMDA3MkFBRjAgLyog
Q291bnRpbmdMb2NrLmggKi8sCiAJCQkJRTM4QzQxMjYxRUI0RTA2ODAwNDI5NTdEIC8qIENQVVRp
bWUuY3BwICovLApAQCAtMTExOCw2ICsxMTI1LDcgQEAKIAkJCQk3QUZFQzZBRTFFQjIyQUM2MDBE
QURFMzYgLyogVVVJRC5oICovLAogCQkJCUE4QTQ3MzZGMTUxQTgyNUIwMDQxMjNGRiAvKiBWYWx1
ZUNoZWNrLmggKi8sCiAJCQkJN0NEMEQ1QTcxRDU1MzIyQTAwMENDOUUxIC8qIFZhcmlhbnQuaCAq
LywKKwkJCQkwRkQ3M0NCQTIwRDQ3NTgzMDBGQzdBMjkgLyogVmVjdG9yLmNwcCAqLywKIAkJCQlB
OEE0NzM3MDE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yLmggKi8sCiAJCQkJQThBNDczNzExNTFB
ODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oICovLAogCQkJCUE4QTQ3MzcyMTUxQTgyNUIw
MDQxMjNGRiAvKiBWTVRhZ3MuaCAqLywKQEAgLTE0NjEsNiArMTQ2OSw3IEBACiAJCQkJQThBNDc0
NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGOEYyQjkyMTcyRTAxMDMwMDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjMwQ0I1QTFGQ0RGMTM0MDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhh
c2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY1QjRERkEyMEQwREUxODAwRDZGNTEwIC8q
IENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhFODVE
QjFGRDQ4NUIwMDA2OTE4ODkgLyogQ291bnRpbmdMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUzOEM0MTI4MUVCNEUwNjgwMDQyOTU3RCAvKiBDUFVUaW1lLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUzOEM0MTI1MUVCNEUwNEMwMDQyOTU3RCAvKiBDUFVUaW1lQ29jb2EubW0gaW4gU291cmNl
cyAqLywKQEAgLTE1NjQsNiArMTU3Myw3IEBACiAJCQkJMUMxODFDOTMxRDMwN0FCODAwRjVGQTE2
IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2OTE1
MUE4MjVCMDA0MTIzRkYgLyogVVRGOC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUZFQzZCMTFF
QjIyQjU5MDBEQURFMzYgLyogVVVJRC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkQ3M0NCQjIw
RDQ3NTg0MDBGQzdBMjkgLyogVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjZCMjky
MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxRkE0
N0M4QTE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVhZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkU0NDc5QzFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDBmOWY0ZTFmMmRhMTZjMzEyYzBkZDUyZDhkYmU5
NTNiNTU0ZDM0NGQuLjNkYzdhZmZkNjEwNmIxYzg4OTYxZDJmZDMxMDQ1ZmY2ZGM2ZmEyNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CkBAIC0zNSw2ICszNSw3IEBAIHNldChXVEZfUFVCTElDX0hFQURF
UlMKICAgICBDb25jdXJyZW50UHRySGFzaFNldC5oCiAgICAgQ29uY3VycmVudFZlY3Rvci5oCiAg
ICAgQ29uZGl0aW9uLmgKKyAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaAogICAgIENvdW50
aW5nTG9jay5oCiAgICAgQ3Jvc3NUaHJlYWRDb3BpZXIuaAogICAgIENyb3NzVGhyZWFkUXVldWUu
aApAQCAtMzMxLDYgKzMzMiw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIENsb2NrVHlwZS5jcHAK
ICAgICBDb21waWxhdGlvblRocmVhZC5jcHAKICAgICBDb25jdXJyZW50UHRySGFzaFNldC5jcHAK
KyAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwCiAgICAgQ291bnRpbmdMb2NrLmNwcAog
ICAgIENyb3NzVGhyZWFkQ29waWVyLmNwcAogICAgIENyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3Bw
CkBAIC0zODcsNiArMzg5LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgVGltZVdpdGhEeW5hbWlj
Q2xvY2tUeXBlLmNwcAogICAgIFRpbWluZ1Njb3BlLmNwcAogICAgIFVVSUQuY3BwCisgICAgVmVj
dG9yLmNwcAogICAgIFdURkFzc2VydGlvbnMuY3BwCiAgICAgV2FsbFRpbWUuY3BwCiAgICAgV29y
ZExvY2suY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0eVRy
YWNrZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMDEyNWFhZmQ2MTZmNzNiMDZlODU4ZTE1NTg5MmVlYjE4M2QwYmMyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNw
cApAQCAtMCwwICsxLDE5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1N0
YWNrU2hvdC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworQWxsb2NhdGlvbkNhbGxTaXRlRGF0YTo6
QWxsb2NhdGlvbkNhbGxTaXRlRGF0YShzaXplX3Qgc3RhY2tEZXB0aCwgc2l6ZV90IGluVXNlZFNp
emUsIHNpemVfdCBpbkNhcGFjaXR5KQorICAgIDogdXNlZFNpemUoaW5Vc2VkU2l6ZSkKKyAgICAs
IGNhcGFjaXR5KGluQ2FwYWNpdHkpCisgICAgLCBtX3N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8U3Rh
Y2tTaG90PihzdGFja0RlcHRoKSkKK3sKK30KKworQWxsb2NhdGlvbkNhbGxTaXRlRGF0YTo6QWxs
b2NhdGlvbkNhbGxTaXRlRGF0YShjb25zdCBTdGFja1Nob3QmIHN0YWNrKQorICAgIDogbV9zdGFj
ayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hvdD4oc3RhY2spKQoreworfQorCitBbGxvY2F0aW9u
Q2FsbFNpdGVEYXRhOjpBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKGNvbnN0IEFsbG9jYXRpb25DYWxs
U2l0ZURhdGEmIG90aGVyKQorICAgIDogY291bnQob3RoZXIuY291bnQpCisgICAgLCB1c2VkU2l6
ZShvdGhlci51c2VkU2l6ZSkKKyAgICAsIGNhcGFjaXR5KG90aGVyLmNhcGFjaXR5KQorICAgICwg
bV9zdGFjayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hvdD4ob3RoZXIuc3RhY2soKSkpCit7Cit9
CisKK0FsbG9jYXRpb25DYWxsU2l0ZURhdGE6On5BbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKCkgPSBk
ZWZhdWx0OworCitzdHJ1Y3QgQ29udGFpbmVyQWxsb2NhdGlvbkRhdGEgeworICAgIENvbnRhaW5l
ckFsbG9jYXRpb25EYXRhKHNpemVfdCBzdGFja1Nob3RTaXplLCBzaXplX3QgaW5TaXplLCBzaXpl
X3QgaW5DYXBhY2l0eSkKKyAgICAgICAgOiBhbGxvY2F0aW9uU3RhY2soc3RhY2tTaG90U2l6ZSkK
KyAgICAgICAgLCBzaXplKGluU2l6ZSkKKyAgICAgICAgLCBjYXBhY2l0eShpbkNhcGFjaXR5KQor
ICAgIHsKKyAgICAKKyAgICB9CisgICAgU3RhY2tTaG90IGFsbG9jYXRpb25TdGFjazsKKyAgICBz
aXplX3Qgc2l6ZTsKKyAgICBzaXplX3QgY2FwYWNpdHk7Cit9OworCitzdHJ1Y3QgQ29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyOjpDb250YWluZXJDYXBhY2l0eVRyYWNrZXJJbXBsIHsKKyAgICBIYXNo
TWFwPFRyYWNrZWRJRCwgc3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lckFsbG9jYXRpb25EYXRhPj4g
bV90cmFja2VkSURUb0NvbnRhaW5lckRhdGE7CisgICAgYm9vbCogbV9hdm9pZFJlZW50cmFuY3kg
eyBudWxscHRyIH07Cit9OworCisvLyBUbyBwcmV2ZW50IHBlci10aHJlYWQgcmUtZW50cmFuY3kg
d2UgdGFrZSBhIHBvaW50ZXIgdG8gYW4gb2JqZWN0IG9uIHRoZSBzdGFjaywgaW5zaWRlIG1fbXV0
ZXggbG9jayBzY29wZS4KK2NsYXNzIEF2b2lkUmVjb3JkaW5nU2NvcGUgeworcHVibGljOgorICAg
IEF2b2lkUmVjb3JkaW5nU2NvcGUoQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpDb250YWluZXJD
YXBhY2l0eVRyYWNrZXJJbXBsJiBpbXBsLCBib29sKiBzdGFja09iamVjdCkKKyAgICAgICAgOiBt
X2ltcGwoaW1wbCkKKyAgICB7CisgICAgICAgIG1faW1wbC5tX2F2b2lkUmVlbnRyYW5jeSA9IHN0
YWNrT2JqZWN0OworICAgIH0KKworICAgIH5Bdm9pZFJlY29yZGluZ1Njb3BlKCkKKyAgICB7Cisg
ICAgICAgIG1faW1wbC5tX2F2b2lkUmVlbnRyYW5jeSA9IG51bGxwdHI7CisgICAgfQorcHJpdmF0
ZToKKyAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tl
ckltcGwmIG1faW1wbDsKK307CisKK0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlcjo6Q29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyKHNpemVfdCBhZ2dyZWdhdGlvblN0YWNrRGVwdGgpCisgICAgOiBtX2lt
cGwoc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXJDYXBhY2l0eVRyYWNrZXJJbXBsPigpKQorICAg
ICwgbV9hZ2dyZWdhdGlvblN0YWNrRGVwdGgoYWdncmVnYXRpb25TdGFja0RlcHRoKQoreworfQor
CitUcmFja2VkSUQgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpyZWNvcmRBbGxvY2F0aW9uKHNp
emVfdCBzaXplLCBzaXplX3QgY2FwYWNpdHkpCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6
cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1fbXV0ZXgpOworCisgICAgaWYgKG1faW1wbC0+
bV9hdm9pZFJlZW50cmFuY3kpCisgICAgICAgIHJldHVybiAwOworCisgICAgYm9vbCBhdm9pZFJl
ZW50cmFuY3kgPSB0cnVlOworICAgIEF2b2lkUmVjb3JkaW5nU2NvcGUgc2NvcGUoKm1faW1wbCwg
JmF2b2lkUmVlbnRyYW5jeSk7CisKKyAgICBUcmFja2VkSUQgb2JqZWN0SUQgPSArK21fbmV4dElE
OworCisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJE
YXRhLmFkZChvYmplY3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXJBbGxvY2F0aW9uRGF0
YT4obV9hZ2dyZWdhdGlvblN0YWNrRGVwdGgsIHNpemUsIGNhcGFjaXR5KSk7CisgICAgaWYgKCFh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRhaW5lckNh
cGFjaXR5VHJhY2tlcjo6cmVjb3JkQWxsb2NhdGlvbiBzYXcgb2JqZWN0ICV1IGZvciB0aGUgc2Vj
b25kIHRpbWUiLCBvYmplY3RJRCk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiV2FzIHByZXZpb3Vz
bHkgYWxsb2NhdGVkIGF0OiIpOworICAgICAgICBhdXRvJiBjYWxsU2l0ZURhdGEgPSAqYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgY29uc3Qgc2l6ZV90IGZyYW1lc1RvU2tpcCA9
IDA7CisgICAgICAgIFdURlByaW50QmFja3RyYWNlKGNhbGxTaXRlRGF0YS5hbGxvY2F0aW9uU3Rh
Y2suYXJyYXkoKSArIGZyYW1lc1RvU2tpcCwgY2FsbFNpdGVEYXRhLmFsbG9jYXRpb25TdGFjay5z
aXplKCkgLSBmcmFtZXNUb1NraXApOworICAgIH0KKworICAgIHJldHVybiBvYmplY3RJRDsKK30K
Kwordm9pZCBDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29yZFNpemVBbmRDYXBhY2l0eShU
cmFja2VkSUQgb2JqZWN0SUQsIHNpemVfdCBzaXplLCBzaXplX3QgY2FwYWNpdHkpCit7CisgICAg
QVNTRVJUKHNpemUgPD0gY2FwYWNpdHkpOworCisgICAgaWYgKCFvYmplY3RJRCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2Nr
SG9sZGVyKG1fbXV0ZXgpOworCisgICAgaWYgKG1faW1wbC0+bV9hdm9pZFJlZW50cmFuY3kpCisg
ICAgICAgIHJldHVybjsKKworICAgIGJvb2wgYXZvaWRSZWVudHJhbmN5ID0gdHJ1ZTsKKyAgICBB
dm9pZFJlY29yZGluZ1Njb3BlIHNjb3BlKCptX2ltcGwsICZhdm9pZFJlZW50cmFuY3kpOworCisg
ICAgYXV0byBpdCA9IG1faW1wbC0+bV90cmFja2VkSURUb0NvbnRhaW5lckRhdGEuZmluZChvYmpl
Y3RJRCk7CisgICAgaWYgKGl0ICE9IG1faW1wbC0+bV90cmFja2VkSURUb0NvbnRhaW5lckRhdGEu
ZW5kKCkpIHsKKyAgICAgICAgaXQtPnZhbHVlLT5zaXplID0gc2l6ZTsKKyAgICAgICAgaXQtPnZh
bHVlLT5jYXBhY2l0eSA9IGNhcGFjaXR5OworICAgIH0gZWxzZQorICAgICAgICBXVEZMb2dBbHdh
eXMoIkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlciAlcCByZWNvcmRTaXplQW5kQ2FwYWNpdHkgZmFp
bGVkIHRvIGZpbmQgb2JqZWN0ICV1IiwgdGhpcywgb2JqZWN0SUQpOworfQorCit2b2lkIENvbnRh
aW5lckNhcGFjaXR5VHJhY2tlcjo6cmVjb3JkRnJlZShUcmFja2VkSUQgb2JqZWN0SUQpCit7Cisg
ICAgaWYgKCFvYmplY3RJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RkOjpsb2NrX2d1YXJk
PHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1fbXV0ZXgpOworCisgICAgaWYgKG1f
aW1wbC0+bV9hdm9pZFJlZW50cmFuY3kpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgYXZv
aWRSZWVudHJhbmN5ID0gdHJ1ZTsKKyAgICBBdm9pZFJlY29yZGluZ1Njb3BlIHNjb3BlKCptX2lt
cGwsICZhdm9pZFJlZW50cmFuY3kpOworCisgICAgYm9vbCByZW1vdmVkID0gbV9pbXBsLT5tX3Ry
YWNrZWRJRFRvQ29udGFpbmVyRGF0YS5yZW1vdmUob2JqZWN0SUQpOworICAgIGlmICghcmVtb3Zl
ZCkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29y
ZEZyZWUgZ290IGlkICV1IGZvciB3aGljaCB0aGVyZSBpcyBubyBlbnRyeSIsIG9iamVjdElEKTsK
K30KKworc3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4gQ29udGFpbmVyQ2FwYWNp
dHlUcmFja2VyOjphZ2dyZWdhdGVCeUNhbGxTaXRlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChU
cmFja2VkSUQsIEFsbG9jYXRpb25DYWxsU2l0ZURhdGEmKT4mIHBlck9iamVjdENhbGxiYWNrKQor
eworICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6OnJlY3Vyc2l2ZV9tdXRleD4gbG9ja0hvbGRlciht
X211dGV4KTsKKworICAgIGJvb2wgYXZvaWRSZWVudHJhbmN5ID0gdHJ1ZTsKKyAgICBBdm9pZFJl
Y29yZGluZ1Njb3BlIHNjb3BlKCptX2ltcGwsICZhdm9pZFJlZW50cmFuY3kpOworCisgICAgdHlw
ZWRlZiB1bnNpZ25lZCBTdGFja1Nob3RIYXNoOworICAgIEhhc2hNYXA8U3RhY2tTaG90SGFzaCwg
c3RkOjp1bmlxdWVfcHRyPEFsbG9jYXRpb25DYWxsU2l0ZURhdGE+PiBjYWxsU2l0ZVRvQWxsb2Nh
dGlvbkFnZ3JlZ2F0ZTsKKworICAgIGZvciAoY29uc3QgYXV0byYgaXQgOiBtX2ltcGwtPm1fdHJh
Y2tlZElEVG9Db250YWluZXJEYXRhKSB7CisgICAgICAgIGNvbnN0IENvbnRhaW5lckFsbG9jYXRp
b25EYXRhJiBhbGxvY2F0aW9uRGF0YSA9ICppdC52YWx1ZTsKKworICAgICAgICBhdXRvIGFkZFJl
c3VsdCA9IGNhbGxTaXRlVG9BbGxvY2F0aW9uQWdncmVnYXRlLmVuc3VyZShhbGxvY2F0aW9uRGF0
YS5hbGxvY2F0aW9uU3RhY2suaGFzaCgpLCBbJl0gKCkgeworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4oYWxsb2NhdGlvbkRhdGEuYWxs
b2NhdGlvblN0YWNrKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byYgY2FsbFNpdGVEYXRh
ID0gKmFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICsrY2FsbFNpdGVEYXRhLmNv
dW50OworICAgICAgICBjYWxsU2l0ZURhdGEudXNlZFNpemUgKz0gYWxsb2NhdGlvbkRhdGEuc2l6
ZTsKKyAgICAgICAgY2FsbFNpdGVEYXRhLmNhcGFjaXR5ICs9IGFsbG9jYXRpb25EYXRhLmNhcGFj
aXR5OworCisgICAgICAgIHBlck9iamVjdENhbGxiYWNrKGl0LmtleSwgY2FsbFNpdGVEYXRhKTsK
KyAgICB9CisKKyAgICBzdGQ6OnZlY3RvcjxBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhPiByZXN1bHQ7
CisgICAgZm9yIChhdXRvJiBpdCA6IGNhbGxTaXRlVG9BbGxvY2F0aW9uQWdncmVnYXRlKQorICAg
ICAgICByZXN1bHQucHVzaF9iYWNrKEFsbG9jYXRpb25DYWxsU2l0ZURhdGEoKml0LnZhbHVlKSk7
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oIGIvU291cmNlL1dU
Ri93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNiNGUyOTE5YTEx
MjlkMmE0YmUzNjBlZDVmMWViZWUwN2IwN2I5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdURl9Db250
YWluZXJDYXBhY2l0eVRyYWNrZXJfaAorI2RlZmluZSBXVEZfQ29udGFpbmVyQ2FwYWNpdHlUcmFj
a2VyX2gKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx2
ZWN0b3I+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4K
KworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFN0YWNrU2hvdDsKKworc3RydWN0IEFsbG9jYXRp
b25DYWxsU2l0ZURhdGEgeworICAgIEFsbG9jYXRpb25DYWxsU2l0ZURhdGEoc2l6ZV90IHN0YWNr
RGVwdGggPSAwLCBzaXplX3Qgc2l6ZSA9IDAsIHNpemVfdCBjYXBhY2l0eSA9IDApOworICAgIEFs
bG9jYXRpb25DYWxsU2l0ZURhdGEoY29uc3QgU3RhY2tTaG90Jik7CisgICAgQWxsb2NhdGlvbkNh
bGxTaXRlRGF0YShjb25zdCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIH5BbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKCk7CisKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgY29uc3QgU3RhY2tTaG90JiBzdGFjaygpIGNvbnN0OworCisgICAgc2l6ZV90IGNvdW50
IHsgMCB9OworICAgIHNpemVfdCB1c2VkU2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgY2FwYWNpdHkg
eyAwIH07CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrU2hvdD4gbV9zdGFj
azsgLy8gTmVlZGVkIHRvIGhpZGUgU3RhY2tTaG90IHRvIGF2b2lkIGNpcmN1bGFyIGluY2x1ZGVz
LgorfTsKKwordHlwZWRlZiB1bnNpZ25lZCBUcmFja2VkSUQ7CisKK2NsYXNzIENvbnRhaW5lckNh
cGFjaXR5VHJhY2tlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGFpbmVyQ2FwYWNp
dHlUcmFja2VyKTsKKyAgICBmcmllbmQgY2xhc3MgQXZvaWRSZWNvcmRpbmdTY29wZTsKK3B1Ymxp
YzoKKyAgICAvLyBDYWxsIHNpdGVzIGFyZSBhZ2dyZWdhdGVkIGJ5IGNhbGwgc3RhY2ssIHVzaW5n
IGFnZ3JlZ2F0aW9uU3RhY2tEZXB0aCBmcmFtZXMuCisgICAgQ29udGFpbmVyQ2FwYWNpdHlUcmFj
a2VyKHNpemVfdCBhZ2dyZWdhdGlvblN0YWNrRGVwdGggPSAxNSk7CisgICAgCisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFRyYWNrZWRJRCByZWNvcmRBbGxvY2F0aW9uKHNpemVfdCBzaXplLCBzaXpl
X3QgY2FwYWNpdHkpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlY29yZFNpemVBbmRD
YXBhY2l0eShUcmFja2VkSUQsIHNpemVfdCBzaXplLCBzaXplX3QgY2FwYWNpdHkpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlY29yZEZyZWUoVHJhY2tlZElEKTsKKyAgICAKKyAgICAv
LyBSZXR1cm4gYSB2ZWN0b3Igb2YgcGVyIGNhbGxzaXRlIGRhdGE7IHNpemUgYW5kIGNhcGFjaXR5
IGFyZSBzdW1tZWQgZm9yIGFsbCBhbGxvY2F0aW9ucyB3aXRoIGEgZ2l2ZW4gY2FsbCBzaXRlLgor
ICAgIC8vIFRoZSBwYXNzZWQgZnVuY3Rpb24gYWxsb3dzIHRoZSBjYWxsZXIgdG8gZG8gYWRkaXRp
b25hbCBwcm9jZXNzaW5nIHBlciBhbGxvY2F0aW9uLgorICAgIHN0ZDo6dmVjdG9yPEFsbG9jYXRp
b25DYWxsU2l0ZURhdGE+IGFnZ3JlZ2F0ZUJ5Q2FsbFNpdGUoY29uc3QgV1RGOjpGdW5jdGlvbjx2
b2lkKFRyYWNrZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYpPiYpOworCitwcml2YXRlOgor
ICAgIC8vIFVzZSBhIHBpbXBsIHRvIGF2b2lkIGNpcmN1bGFyIGluY2x1ZGVzIGJldHdlZW4gb3Vy
IGhlYWRlciBhbmQgdGhlIGNvbnRhaW5lciBjbGFzcyBoZWFkZXJzLgorICAgIHN0cnVjdCBDb250
YWluZXJDYXBhY2l0eVRyYWNrZXJJbXBsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250YWluZXJD
YXBhY2l0eVRyYWNrZXJJbXBsPiBtX2ltcGw7CisgICAgc3RkOjpyZWN1cnNpdmVfbXV0ZXggbV9t
dXRleDsKKyAgICBUcmFja2VkSUQgbV9uZXh0SUQgeyAwIH07CisgICAgY29uc3Qgc2l6ZV90IG1f
YWdncmVnYXRpb25TdGFja0RlcHRoOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5n
IFdURjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOworCisjZW5kaWYgLy8gV1RGX0NvbnRhaW5l
ckNhcGFjaXR5VHJhY2tlcl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NpemVMaW1p
dHMuY3BwIGIvU291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAKaW5kZXggYjBhZDE0MDQ0ZjNi
ODQxMTY4NmQzYTFhYThlYWZiNGRhYjc3Nzg1Yy4uZmJlZDY1ZmUwMTAyMmM4ODBlN2U2NjkwMDJh
YmQ4ZmUwYWY5ZDEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAKQEAgLTgxLDkgKzgxLDEyIEBAIHB1
YmxpYzoKICAgICB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2YoVCksIHN0ZDo6
YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZT46OnR5cGUgaW5saW5lQnVmZmVyW2lubGluZUNhcGFjaXR5
XTsKIH07CiAKKyNpZiAhVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCiBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihWZWN0b3I8aW50PikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNp
dHk8aW50PiksICJWZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7CiBzdGF0aWNfYXNzZXJ0KHNp
emVvZihWZWN0b3I8aW50LCAxPikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5l
Q2FwYWNpdHk8aW50LCAxPiksICJWZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7CiBzdGF0aWNf
YXNzZXJ0KHNpemVvZihWZWN0b3I8aW50LCAyPikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JX
aXRoSW5saW5lQ2FwYWNpdHk8aW50LCAyPiksICJWZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7
CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihWZWN0b3I8aW50LCAzPikgPT0gc2l6ZW9mKFNhbWVTaXpl
QXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNpdHk8aW50LCAzPiksICJWZWN0b3Igc2hvdWxkIHN0YXkg
c21hbGwhIik7CisjZW5kaWYKKwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9TdGFja1Nob3QuaCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oCmluZGV4IDdlMzJhMzVi
YWUzYzdiNTZhOGJlODViN2QxOGQxZTU1NzlhMGIzZmMuLmZjN2NmYTZhNjYyNDgxY2VkNGM0YWRj
ZjU1Yzg1NmY1N2Q1ZjA2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdU
RiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuY3BwIGIvU291cmNlL1dURi93
dGYvVmVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YWJiNmRmMDE0ZmY2YjU2ZmJlN2EwNzVkNWI4NGY1
MTI5MDkwMjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmNwcApA
QCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlZlY3Rvci5oIgorCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisjaW5jbHVkZSA8d3Rm
L0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8bm90aWZ5Lmg+CisjaW5jbHVk
ZSA8d3RmL1N0YWNrU2hvdC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgUExB
VEZPUk0oQ09DT0EpCitzdGF0aWMgdm9pZCBkdW1wV2FzdGVkVmVjdG9yQ2FwYWNpdHkoKQorewor
ICAgIGF1dG8gY2FsbFNpdGVEYXRhID0gdmVjdG9yVHJhY2tlcigpLmFnZ3JlZ2F0ZUJ5Q2FsbFNp
dGUoW10gKFRyYWNrZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYpIHsKKyAgICB9KTsKKwor
ICAgIC8vIE1ha2UgYSB2ZWN0b3Igb2YgcmF3IHBvaW50ZXJzIHNvIHdlIGNhbiBzb3J0IHRoZW0u
CisgICAgc3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSo+IGNhbGxTaXRlUHRyczsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIHNpdGVEYXRhIDogY2FsbFNpdGVEYXRhKSB7CisgICAgICAg
IGlmICghc2l0ZURhdGEuY2FwYWNpdHkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
Y2FsbFNpdGVQdHJzLnB1c2hfYmFjayhjb25zdF9jYXN0PEFsbG9jYXRpb25DYWxsU2l0ZURhdGEq
Pigmc2l0ZURhdGEpKTsKKyAgICB9CisKKyAgICAvLyBTb3J0IGJ5IHJldmVyc2Ugd2FzdGFnZS4K
KyAgICBzdGQ6OnNvcnQoY2FsbFNpdGVQdHJzLmJlZ2luKCksIGNhbGxTaXRlUHRycy5lbmQoKSwg
W10gKGNvbnN0IEFsbG9jYXRpb25DYWxsU2l0ZURhdGEqIGEsIGNvbnN0IEFsbG9jYXRpb25DYWxs
U2l0ZURhdGEqIGIpIHsKKyAgICAgICAgc2l6ZV90IGFXYXN0YWdlID0gYS0+Y2FwYWNpdHkgLSBh
LT51c2VkU2l6ZTsKKyAgICAgICAgc2l6ZV90IGJXYXN0YWdlID0gYi0+Y2FwYWNpdHkgLSBiLT51
c2VkU2l6ZTsKKyAgICAgICAgcmV0dXJuIGFXYXN0YWdlID4gYldhc3RhZ2U7CisgICAgfSk7CisK
KyAgICBjb25zdCBzaXplX3QgbWF4Q291bnQgPSAxMDA7CisKKyAgICBXVEZMb2dBbHdheXMoIiVs
dSBjYWxsIHNpdGVzIGNyZWF0ZWQgdmVjdG9ycy4gU2hvd2luZyAlbHUgc2l0ZXMgd2l0aCBtb3N0
IHdhc3RhZ2U6XG4iLCBjYWxsU2l0ZURhdGEuc2l6ZSgpLCBtYXhDb3VudCk7CisKKyAgICBzaXpl
X3QgY291bnQgPSAwOworICAgIGZvciAoYXV0byBzaXRlRGF0YSA6IGNhbGxTaXRlUHRycykgewor
ICAgICAgICBpZiAoY291bnQrKyA9PSBtYXhDb3VudCkKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiV2FzdGVkIGNhcGFjaXR5OiAlbHUgYnl0ZXMgKHVzZWQgJWx1
IG9mICVsdSBieXRlcywgdXRpbGl6YXRpb246ICUuMmYlJSkgLSAlbHUgYWxsb2NhdGlvbnNcbiIs
CisgICAgICAgICAgICBzaXRlRGF0YS0+Y2FwYWNpdHkgLSBzaXRlRGF0YS0+dXNlZFNpemUsCisg
ICAgICAgICAgICBzaXRlRGF0YS0+dXNlZFNpemUsIHNpdGVEYXRhLT5jYXBhY2l0eSwgMTAwLjAg
KiBzaXRlRGF0YS0+dXNlZFNpemUgLyBzaXRlRGF0YS0+Y2FwYWNpdHksCisgICAgICAgICAgICBz
aXRlRGF0YS0+Y291bnQpOworICAgICAgICBjb25zdCBzaXplX3QgZnJhbWVzVG9Ta2lwID0gNzsK
KyAgICAgICAgV1RGUHJpbnRCYWNrdHJhY2Uoc2l0ZURhdGEtPnN0YWNrKCkuYXJyYXkoKSArIGZy
YW1lc1RvU2tpcCwgc2l0ZURhdGEtPnN0YWNrKCkuc2l6ZSgpIC0gZnJhbWVzVG9Ta2lwKTsKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCJcbiIpOworICAgIH0KK30KKyNlbmRpZgorCitDb250YWluZXJD
YXBhY2l0eVRyYWNrZXImIHZlY3RvclRyYWNrZXIoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxf
b25jZShpbml0aWFsaXplT25jZSwgW10geworICAgICAgICBpbnQgdG9rZW47CisgICAgICAgIG5v
dGlmeV9yZWdpc3Rlcl9kaXNwYXRjaCgiY29tLmFwcGxlLldlYktpdC5kdW1wVmVjdG9yQ2FwYWNp
dHkiLCAmdG9rZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oaW50KSB7CisgICAgICAg
ICAgICBkdW1wV2FzdGVkVmVjdG9yQ2FwYWNpdHkoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cisj
ZW5kaWYKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OkNvbnRhaW5lckNhcGFjaXR5
VHJhY2tlcj4gdHJhY2tlcjsKKyAgICByZXR1cm4gdHJhY2tlcjsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKKyNlbmRpZiAvLyBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1ZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggNjZl
M2JlMmFlNjg4YjBmZDVlMzQ4YzA3NGE1YzNmNTRmODkwYTM4NC4uZTdmN2E0MDhhOTI0NzAyZmUz
MzQ2MDA1NGRmM2ZiNTVhMGQ4ZjBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9y
LmgKKysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKQEAgLTM3LDEyICszNywyNCBAQAogI2lu
Y2x1ZGUgPHd0Zi9WYWx1ZUNoZWNrLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3RvclRyYWl0cy5oPgog
CisvLyBFbmFibGUgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZIHRvIHRyYWNrIGNhbGwgc2l0ZXMgdGhh
dCB3YXN0ZSB2ZWN0b3IgY2FwYWNpdHkuIE9uIENvY29hIHBsYXRmb3JtcywgdGhlIGRhdGEgY2Fu
IGJlIGR1bXBlZAorLy8gYnkgcnVubmluZyAibm90aWZ5dXRpbCAtcCBjb20uYXBwbGUuV2ViS2l0
LmR1bXBWZWN0b3JDYXBhY2l0eSIuCisvLyAjZGVmaW5lIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWSAx
CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyNpbmNsdWRlIDx3dGYvQ29udGFpbmVyQ2Fw
YWNpdHlUcmFja2VyLmg+CisjZW5kaWYKKwogI2lmIEFTQU5fRU5BQkxFRAogZXh0ZXJuICJDIiB2
b2lkIF9fc2FuaXRpemVyX2Fubm90YXRlX2NvbnRpZ3VvdXNfY29udGFpbmVyKGNvbnN0IHZvaWQq
IGJlZ2luLCBjb25zdCB2b2lkKiBlbmQsIGNvbnN0IHZvaWQqIG9sZF9taWQsIGNvbnN0IHZvaWQq
IG5ld19taWQpOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXVEYgewogCisjaWYgVFJBQ0tfVkVDVE9S
X0NBUEFDSVRZCitXVEZfRVhQT1JUX1BSSVZBVEUgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyJiB2
ZWN0b3JUcmFja2VyKCk7CisjZW5kaWYKKyAgICAKIHRlbXBsYXRlIDxib29sIG5lZWRzRGVzdHJ1
Y3Rpb24sIHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgVmVjdG9yRGVzdHJ1Y3RvcjsKIApAQCAtMzM5LDYg
KzM1MSwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHB0cmRpZmZfdCBidWZmZXJNZW1vcnlPZmZz
ZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVmVjdG9yQnVmZmVyQmFzZSwgbV9idWZmZXIp
OyB9CiAgICAgc2l6ZV90IGNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9jYXBhY2l0eTsgfQog
CisgICAgc2l6ZV90IGNhcGFjaXR5SW5CeXRlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gY2FwYWNpdHkoKSAqIHNpemVvZihUKTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZUluQnl0
ZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2l6ZSAqIHNpemVvZihUKTsKKyAg
ICB9CisKICAgICBNYWxsb2NQdHI8VD4gcmVsZWFzZUJ1ZmZlcigpCiAgICAgewogICAgICAgICBU
KiBidWZmZXIgPSBtX2J1ZmZlcjsKQEAgLTM1Myw2ICszNzUsOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgICwgbV9jYXBhY2l0eSgwKQogICAgICAgICAsIG1fc2l6ZSgwKQogICAgIHsKKyNpZiBUUkFD
S19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgbV90cmFja2VkSUQgPSB2ZWN0b3JUcmFja2VyKCku
cmVjb3JkQWxsb2NhdGlvbigwLCAwKTsKKyNlbmRpZgogICAgIH0KIAogICAgIFZlY3RvckJ1ZmZl
ckJhc2UoVCogYnVmZmVyLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBzaXplKQpAQCAtMzYwLDE2
ICszODUsMjYgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1fY2FwYWNpdHkoY2FwYWNpdHkpCiAg
ICAgICAgICwgbV9zaXplKHNpemUpCiAgICAgeworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQor
ICAgICAgICBtX3RyYWNrZWRJRCA9IHZlY3RvclRyYWNrZXIoKS5yZWNvcmRBbGxvY2F0aW9uKHNp
emVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIH5W
ZWN0b3JCdWZmZXJCYXNlKCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBu
aWNlIHRvIGZpbmQgYSB3YXkgdG8gQVNTRVJUIHRoYXQgbV9idWZmZXIgaGFzbid0IGxlYWtlZCBo
ZXJlLgorI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICB2ZWN0b3JUcmFja2VyKCku
cmVjb3JkRnJlZShtX3RyYWNrZWRJRCk7CisgICAgICAgIG1fdHJhY2tlZElEID0gMDsKKyNlbmRp
ZgogICAgIH0KIAogICAgIFQqIG1fYnVmZmVyOwogICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7CiAg
ICAgdW5zaWduZWQgbV9zaXplOyAvLyBPbmx5IHVzZWQgYnkgdGhlIFZlY3RvciBzdWJjbGFzcywg
YnV0IHBsYWNlZCBoZXJlIHRvIGF2b2lkIHBhZGRpbmcgdGhlIHN0cnVjdC4KKyNpZiBUUkFDS19W
RUNUT1JfQ0FQQUNJVFkKKyAgICBUcmFja2VkSUQgbV90cmFja2VkSUQgeyAwIH07CisjZW5kaWYK
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KQEAgLTQw
Miw2ICs0MzcsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGQ6OnN3YXAobV9idWZmZXIs
IG90aGVyLm1fYnVmZmVyKTsKICAgICAgICAgc3RkOjpzd2FwKG1fY2FwYWNpdHksIG90aGVyLm1f
Y2FwYWNpdHkpOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBzdGQ6OnN3YXAo
bV90cmFja2VkSUQsIG90aGVyLm1fdHJhY2tlZElEKTsKKyNlbmRpZgogICAgIH0KICAgICAKICAg
ICB2b2lkIHJlc3RvcmVJbmxpbmVCdWZmZXJJZk5lZWRlZCgpIHsgfQpAQCAtNDIzLDEwICs0NjEs
MTYgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5OwogICAgIHVzaW5nIEJhc2U6
OmJ1ZmZlck1lbW9yeU9mZnNldDsKIAorICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5SW5CeXRlczsK
KyAgICB1c2luZyBCYXNlOjpzaXplSW5CeXRlczsKKwogICAgIHVzaW5nIEJhc2U6OnJlbGVhc2VC
dWZmZXI7CiAKIHByb3RlY3RlZDoKICAgICB1c2luZyBCYXNlOjptX3NpemU7CisjaWYgVFJBQ0tf
VkVDVE9SX0NBUEFDSVRZCisgICAgdXNpbmcgQmFzZTo6bV90cmFja2VkSUQ7CisjZW5kaWYKIAog
cHJpdmF0ZToKICAgICB1c2luZyBCYXNlOjptX2J1ZmZlcjsKQEAgLTUxNCw2ICs1NTgsMTAgQEAg
cHVibGljOgogICAgICAgICAgICAgc3RkOjpzd2FwKG1fYnVmZmVyLCBvdGhlci5tX2J1ZmZlcik7
CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3RoZXIubV9jYXBhY2l0eSk7CiAg
ICAgICAgIH0KKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBzdGQ6OnN3YXAo
bV90cmFja2VkSUQsIG90aGVyLm1fdHJhY2tlZElEKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZv
aWQgcmVzdG9yZUlubGluZUJ1ZmZlcklmTmVlZGVkKCkKQEAgLTU0MCw2ICs1ODgsOCBAQCBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZTo6YnVmZmVyOwogICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5Owog
ICAgIHVzaW5nIEJhc2U6OmJ1ZmZlck1lbW9yeU9mZnNldDsKKyAgICB1c2luZyBCYXNlOjpjYXBh
Y2l0eUluQnl0ZXM7CisgICAgdXNpbmcgQmFzZTo6c2l6ZUluQnl0ZXM7CiAKICAgICBNYWxsb2NQ
dHI8VD4gcmVsZWFzZUJ1ZmZlcigpCiAgICAgewpAQCAtNTUwLDYgKzYwMCw5IEBAIHB1YmxpYzoK
IAogcHJvdGVjdGVkOgogICAgIHVzaW5nIEJhc2U6Om1fc2l6ZTsKKyNpZiBUUkFDS19WRUNUT1Jf
Q0FQQUNJVFkKKyAgICB1c2luZyBCYXNlOjptX3RyYWNrZWRJRDsKKyNlbmRpZgogCiBwcml2YXRl
OgogICAgIHVzaW5nIEJhc2U6Om1fYnVmZmVyOwpAQCAtNjU4LDYgKzcxMSwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIHJlc3VsdC5tX3NpemUgPSBzaXplOwogCiAgICAgICAgIHJlc3VsdC51bmNoZWNr
ZWRJbml0aWFsaXplPDA+KHN0ZDo6Zm9yd2FyZDxJdGVtcz4oaXRlbXMpLi4uKTsKKworI2lmIFRS
QUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFu
ZENhcGFjaXR5KHJlc3VsdC5tX3RyYWNrZWRJRCwgcmVzdWx0LnNpemVJbkJ5dGVzKCksIHJlc3Vs
dC5jYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKQEAgLTY4NSw2ICs3NDIsOSBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGNhcGFjaXR5KCkg
Y29uc3QgeyByZXR1cm4gQmFzZTo6Y2FwYWNpdHkoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuICFzaXplKCk7IH0KIAorICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0
IHsgcmV0dXJuIEJhc2U6OnNpemVJbkJ5dGVzKCk7IH0KKyAgICBzaXplX3QgY2FwYWNpdHlJbkJ5
dGVzKCkgY29uc3QgeyByZXR1cm4gQmFzZTo6Y2FwYWNpdHlJbkJ5dGVzKCk7IH0KKwogICAgIFQm
IGF0KHNpemVfdCBpKQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKGkgPj0gc2l6ZSgpKSkK
QEAgLTgwOCw5ICs4NjgsMTcgQEAgcHVibGljOgogCiAgICAgICAgIEJhc2U6OnN3YXAob3RoZXIs
IG1fc2l6ZSwgb3RoZXIubV9zaXplKTsKICAgICAgICAgc3RkOjpzd2FwKG1fc2l6ZSwgb3RoZXIu
bV9zaXplKTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgc3RkOjpzd2FwKG1f
dHJhY2tlZElELCBvdGhlci5tX3RyYWNrZWRJRCk7CisjZW5kaWYKIAogICAgICAgICBhc2FuU2V0
SW5pdGlhbEJ1ZmZlclNpemVUbyhtX3NpemUpOwogICAgICAgICBvdGhlci5hc2FuU2V0SW5pdGlh
bEJ1ZmZlclNpemVUbyhvdGhlci5tX3NpemUpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZ
CisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2Vk
SUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyAgICAgICAgdmVjdG9yVHJh
Y2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShvdGhlci5tX3RyYWNrZWRJRCwgb3RoZXIuc2l6
ZUluQnl0ZXMoKSwgb3RoZXIuY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQogCiAg
ICAgdm9pZCByZXZlcnNlKCk7CkBAIC04NjAsNiArOTI4LDExIEBAIHByaXZhdGU6CiAgICAgdXNp
bmcgQmFzZTo6cmVhbGxvY2F0ZUJ1ZmZlcjsKICAgICB1c2luZyBCYXNlOjpyZXN0b3JlSW5saW5l
QnVmZmVySWZOZWVkZWQ7CiAgICAgdXNpbmcgQmFzZTo6cmVsZWFzZUJ1ZmZlcjsKKworI2lmIFRS
QUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHVzaW5nIEJhc2U6Om1fdHJhY2tlZElEOworI2VuZGlm
CisKICNpZiBBU0FOX0VOQUJMRUQKICAgICB1c2luZyBCYXNlOjplbmRPZkJ1ZmZlcjsKICNlbmRp
ZgpAQCAtODczLDYgKzk0NiwxMCBAQCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpWZWN0b3IoY29uc3QgVmVjdG9yJiBvdAogCiAgICAgaWYg
KGJlZ2luKCkpCiAgICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhl
ci5iZWdpbigpLCBvdGhlci5lbmQoKSwgYmVnaW4oKSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQ
QUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tl
ZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxv
d0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTg4NCw2ICs5NjEsMTAgQEAgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6VmVjdG9y
KGNvbnN0IFZlY3RvcjxULAogCiAgICAgaWYgKGJlZ2luKCkpCiAgICAgICAgIFR5cGVPcGVyYXRp
b25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpLCBvdGhlci5lbmQoKSwgYmVnaW4o
KSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVj
b3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUlu
Qnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4K
QEAgLTkwNiw2ICs5ODcsMTAgQEAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXIsIG1pbkNhcGFjaXR5PiYgVmVjdG9yPFQsIGlubGluZUNhcGFjaXQKICAgICBUeXBlT3Bl
cmF0aW9uczo6dW5pbml0aWFsaXplZENvcHkob3RoZXIuYmVnaW4oKSArIHNpemUoKSwgb3RoZXIu
ZW5kKCksIGVuZCgpKTsKICAgICBtX3NpemUgPSBvdGhlci5zaXplKCk7CiAKKyNpZiBUUkFDS19W
RUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5
KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYK
KwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtOTM0LDYgKzEwMTksMTAgQEAgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXQKICAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0aWFsaXplZENvcHkob3Ro
ZXIuYmVnaW4oKSArIHNpemUoKSwgb3RoZXIuZW5kKCksIGVuZCgpKTsKICAgICBtX3NpemUgPSBv
dGhlci5zaXplKCk7CiAKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFj
a2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBj
YXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKKwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAt
MTAxNSw2ICsxMTA0LDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxv
d0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6ZmlsbChjb25zdCBUJiB2YWwsCiAgICAgc3RkOjpmaWxs
KGJlZ2luKCksIGVuZCgpLCB2YWwpOwogICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVk
RmlsbChlbmQoKSwgYmVnaW4oKSArIG5ld1NpemUsIHZhbCk7CiAgICAgbV9zaXplID0gbmV3U2l6
ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNv
cmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5C
eXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpA
QCAtMTA4Niw2ICsxMTc5LDEwIEBAIGlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJlc2l6ZShzaXplCiAgICAgfQogICAg
IAogICAgIG1fc2l6ZSA9IHNpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2
ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5C
eXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNp
emVfdCBtaW5DYXBhY2l0eT4KQEAgLTExMDIsNiArMTE5OSwxMCBAQCB2b2lkIFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnNocmluayhzaXpl
X3Qgc2l6ZQogICAgIFR5cGVPcGVyYXRpb25zOjpkZXN0cnVjdChiZWdpbigpICsgc2l6ZSwgZW5k
KCkpOwogICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKHNpemUpOwogICAgIG1fc2l6ZSA9
IHNpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCku
cmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0
eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0
eT4KQEAgLTExMTQsNiArMTIxNSwxMCBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwg
T3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46Omdyb3coc2l6ZV90IHNpemUpCiAgICAgaWYg
KGJlZ2luKCkpCiAgICAgICAgIFR5cGVPcGVyYXRpb25zOjppbml0aWFsaXplSWZOb25QT0QoZW5k
KCksIGJlZ2luKCkgKyBzaXplKTsKICAgICBtX3NpemUgPSBzaXplOworCisjaWYgVFJBQ0tfVkVD
VE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eSht
X3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xMTc3LDYgKzEyODIsMTAg
QEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2Fw
YWNpdHk+OjpyZXNlcnZlQ2FwYWNpdHkoc2kKIAogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlKG9s
ZEJ1ZmZlciwgb2xkRW5kLCBiZWdpbigpKTsKICAgICBCYXNlOjpkZWFsbG9jYXRlQnVmZmVyKG9s
ZEJ1ZmZlcik7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2Vy
KCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBh
Y2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBh
Y2l0eT4KQEAgLTExOTksNiArMTMwOCwxMCBAQCBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnRyeVJlc2VydmVDYXBhY2l0eQogCiAg
ICAgVHlwZU9wZXJhdGlvbnM6Om1vdmUob2xkQnVmZmVyLCBvbGRFbmQsIGJlZ2luKCkpOwogICAg
IEJhc2U6OmRlYWxsb2NhdGVCdWZmZXIob2xkQnVmZmVyKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9D
QVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFj
a2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0xMjA5LDYgKzEzMjIsMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVzZXJ2
ZUluaXQKICAgICBBU1NFUlQoY2FwYWNpdHkoKSA9PSBpbmxpbmVDYXBhY2l0eSk7CiAgICAgaWYg
KGluaXRpYWxDYXBhY2l0eSA+IGlubGluZUNhcGFjaXR5KQogICAgICAgICBCYXNlOjphbGxvY2F0
ZUJ1ZmZlcihpbml0aWFsQ2FwYWNpdHkpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisg
ICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6
ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
LCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xMjI3LDYgKzEzNDQsOSBAQCB2b2lkIFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnNocmlua0Nh
cGFjaXR5KHNpegogICAgICAgICBpZiAoQmFzZTo6c2hvdWxkUmVhbGxvY2F0ZUJ1ZmZlcihuZXdD
YXBhY2l0eSkpIHsKICAgICAgICAgICAgIEJhc2U6OnJlYWxsb2NhdGVCdWZmZXIobmV3Q2FwYWNp
dHkpOwogICAgICAgICAgICAgYXNhblNldEluaXRpYWxCdWZmZXJTaXplVG8oc2l6ZSgpKTsKKyNp
ZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNv
cmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5C
eXRlcygpKTsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEy
NDAsNiArMTM2MCwxMCBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyLCBtaW5DYXBhY2l0eT46OnNocmlua0NhcGFjaXR5KHNpegogICAgIEJhc2U6OnJlc3Rv
cmVJbmxpbmVCdWZmZXJJZk5lZWRlZCgpOwogCiAgICAgYXNhblNldEluaXRpYWxCdWZmZXJTaXpl
VG8oc2l6ZSgpKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNr
ZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNh
cGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNh
cGFjaXR5PgpAQCAtMTI1Nyw2ICsxMzgxLDEwIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjphcHBlCiAg
ICAgVCogZGVzdCA9IGVuZCgpOwogICAgIFZlY3RvckNvcGllcjxzdGQ6OmlzX3RyaXZpYWw8VD46
OnZhbHVlLCBVPjo6dW5pbml0aWFsaXplZENvcHkoZGF0YSwgc3RkOjphZGRyZXNzb2YoZGF0YVtk
YXRhU2l6ZV0pLCBkZXN0KTsKICAgICBtX3NpemUgPSBuZXdTaXplOworCisjaWYgVFJBQ0tfVkVD
VE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eSht
X3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xMjc2LDYgKzE0MDQsMTAg
QEAgQUxXQVlTX0lOTElORSBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyLCBtaW5DYXBhY2l0eT46OnRyeUEKICAgICBUKiBkZXN0ID0gZW5kKCk7CiAgICAgVmVj
dG9yQ29waWVyPHN0ZDo6aXNfdHJpdmlhbDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRpYWxpemVkQ29w
eShkYXRhLCBzdGQ6OmFkZHJlc3NvZihkYXRhW2RhdGFTaXplXSksIGRlc3QpOwogICAgIG1fc2l6
ZSA9IG5ld1NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFj
a2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBj
YXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTI4
Nyw2ICsxNDE5LDkgQEAgQUxXQVlTX0lOTElORSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmFwcGUKICAgICAgICAgYXNhbkJ1ZmZl
clNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAgICAgICAgIG5ldyAoTm90TnVsbCwgZW5k
KCkpIFQoc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7CiAgICAgICAgICsrbV9zaXplOworI2lmIFRS
QUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFu
ZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7
CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTMwMSw2ICsxNDM2LDkgQEAg
QUxXQVlTX0lOTElORSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyLCBtaW5DYXBhY2l0eT46OmNvbnMKICAgICAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdl
VG8obV9zaXplICsgMSk7CiAgICAgICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKICAgICAgICAgKyttX3NpemU7CisjaWYgVFJBQ0tfVkVDVE9S
X0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHko
bV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzE1LDYgKzE0NTMsOSBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNh
cGFjaXR5Pjo6dHJ5QwogICAgICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUg
KyAxKTsKICAgICAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pOwogICAgICAgICArK21fc2l6ZTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkK
KyAgICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJ
RCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTEzMzQsNiArMTQ3NSwxMCBAQCB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmFwcGVu
ZFNsb3dDYXNlKFUmJgogICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEp
OwogICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJkPFU+KCpwdHIpKTsKICAg
ICArK21fc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNr
ZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNh
cGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNh
cGFjaXR5PgpAQCAtMTM0OCw2ICsxNDkzLDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFj
aXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6Y29uc3RydWN0QW5kQXBwZW5kCiAg
ICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAgICAgbmV3IChOb3RO
dWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgICsrbV9zaXpl
OworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29y
ZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5
dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBA
IC0xMzYzLDYgKzE1MTIsMTAgQEAgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojp0cnlDb25zdHJ1Y3RBbmRBcHAKICAgICBhc2FuQnVm
ZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICBuZXcgKE5vdE51bGwsIGVuZCgp
KSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgICAgKyttX3NpemU7CisKKyNpZiBU
UkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENh
cGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7Cisj
ZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTM3OSw2ICsxNTMyLDEwIEBAIEFMV0FZ
U19JTkxJTkUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwg
bWluQ2FwYWNpdHk+Ojp1bmNoCiAKICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9y
d2FyZDxVPih2YWx1ZSkpOwogICAgICsrbV9zaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFD
SVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJ
RCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dI
YW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xNDA1LDYgKzE1NjIsMTAgQEAgdm9pZCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojpp
bnNlcnQoc2l6ZV90IHBvc2kKICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKHNw
b3QsIGVuZCgpLCBzcG90ICsgZGF0YVNpemUpOwogICAgIFZlY3RvckNvcGllcjxzdGQ6OmlzX3Ry
aXZpYWw8VD46OnZhbHVlLCBVPjo6dW5pbml0aWFsaXplZENvcHkoZGF0YSwgc3RkOjphZGRyZXNz
b2YoZGF0YVtkYXRhU2l6ZV0pLCBzcG90KTsKICAgICBtX3NpemUgPSBuZXdTaXplOworCisjaWYg
VFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRD
YXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOwor
I2VuZGlmCiB9CiAgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHks
IHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTQyNSw2
ICsxNTg2LDEwIEBAIGlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46Omluc2VydChzaXplCiAgICAgVHlwZU9wZXJhdGlvbnM6
Om1vdmVPdmVybGFwcGluZyhzcG90LCBlbmQoKSwgc3BvdCArIDEpOwogICAgIG5ldyAoTm90TnVs
bCwgc3BvdCkgVChzdGQ6OmZvcndhcmQ8VT4oKnB0cikpOwogICAgICsrbV9zaXplOworCisjaWYg
VFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRD
YXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOwor
I2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwg
dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xNDQzLDYg
KzE2MDgsMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxv
d0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVtb3ZlKHNpemUKICAgICBUeXBlT3BlcmF0aW9uczo6
bW92ZU92ZXJsYXBwaW5nKHNwb3QgKyAxLCBlbmQoKSwgc3BvdCk7CiAgICAgYXNhbkJ1ZmZlclNp
emVXaWxsQ2hhbmdlVG8obV9zaXplIC0gMSk7CiAgICAgLS1tX3NpemU7CisKKyNpZiBUUkFDS19W
RUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5
KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTE0NTYsNiArMTYyNSwx
MCBAQCBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
ciwgbWluQ2FwYWNpdHk+OjpyZW1vdmUoc2l6ZQogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3Zl
cmxhcHBpbmcoZW5kU3BvdCwgZW5kKCksIGJlZ2luU3BvdCk7CiAgICAgYXNhbkJ1ZmZlclNpemVX
aWxsQ2hhbmdlVG8obV9zaXplIC0gbGVuZ3RoKTsKICAgICBtX3NpemUgLT0gbGVuZ3RoOworCisj
aWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVB
bmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkp
OworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xNTEz
LDYgKzE2ODYsMTAgQEAgaW5saW5lIHVuc2lnbmVkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwg
T3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJlbW92ZUEKICAgICAgICAgVHlwZU9wZXJh
dGlvbnM6Om1vdmVPdmVybGFwcGluZyhob2xlRW5kLCBlbmQoKSwgaG9sZUJlZ2luKTsKICAgICBh
c2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgLSBtYXRjaENvdW50KTsKICAgICBtX3Np
emUgLT0gbWF0Y2hDb3VudDsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3Rv
clRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVz
KCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIHJldHVybiBtYXRjaENvdW50Owog
fQogCkBAIC0xNTUzLDYgKzE3MzAsMTAgQEAgaW5saW5lIE1hbGxvY1B0cjxUPiBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpyZWwKICAgICB9
CiAgICAgbV9zaXplID0gMDsKICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNhbGwgQmFzZTo6cmVz
dG9yZUlubGluZUJ1ZmZlcklmTmVlZGVkKCkgaGVyZT8KKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBB
Q0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2Vk
SUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIHJldHVy
biBidWZmZXI7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342861</attachid>
            <date>2018-06-15 17:43:04 -0700</date>
            <delta_ts>2018-06-15 17:52:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186698-20180615174303.patch</filename>
            <type>text/plain</type>
            <size>44301</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRmMWMzMTZhNzkwZTAwYmExODRkOWVm
NjYwMjE1ZmQ2NDk0ZDRlMDQuLmEyZjExMDZmODc0MmY5NWJkYzJmOGFkZmRkOTlkNjZjOGQ2NzQz
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTgtMDYtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0cmFjayBj
YWxsIHNpdGVzIHRoYXQgd2FzdGUgVmVjdG9yIGNhcGFjaXR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY2OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZCBDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIgd2hpY2ggY2FuIGFnZ3JlZ2F0ZSBkYXRhIG9uIGEgcGVyLWNhbGwgc2l0ZSBiYXNp
cyAoYnkgdGFraW5nCisgICAgICAgIGEgc3RhY2tzaG90IE4gZnJhbWVzIGRlZXAsIGFuZCBoYXNo
aW5nIGl0KSwgYW5kIGlzIGluZm9ybWVkIGFib3V0IGFsbG9jYXRpb25zLCBzaXplIGFuZCAKKyAg
ICAgICAgY2FwYWNpdHkgY2hhbmdlcywgYW5kIGZyZWVzIG9mIGNvbnRhaW5lciB0eXBlcyAoZS5n
LiBWZWN0b3IgYW5kIEhhc2hNYXApLgorICAgICAgICAKKyAgICAgICAgV2hlbiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkgaXMgZGVmaW5lZCBpbiBWZWN0b3IuaCwgYSBzaW5nbGV0b24gQ29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyCisgICAgICAgIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiBhbGwgVmVj
dG9ycyBhbmQgdGhlaXIgc2l6ZSBhbmQgY2FwYWNpdHkgY2hhbmdlcy4gVmVjdG9yIGdhaW5zCisg
ICAgICAgIGFuIG1fdHJhY2tlZElEIG1lbWJlciB2YXJpYWJsZSB0byBhbGxvdyB0cmFja2luZyAo
VmVjdG9ycyBjYW4gYmUgV1RGTW92ZWQgYW5kIHN0ZDo6c3dhcHBlZCwKKyAgICAgICAgc28gd2Ug
Y2FuJ3QgcmVseSBvbiB0aGVpciBhZGRyZXNzIHRvIHRyYWNrIHRoZW0pLgorICAgICAgICAKKyAg
ICAgICAgRGF0YSBhYm91dCBsaXZlIFZlY3RvcnMgY2FuIHRoZW4gYmUgZHVtcGVkIHdpdGggIm5v
dGlmeXV0aWwgLXAgY29tLmFwcGxlLldlYktpdC5kdW1wVmVjdG9yQ2FwYWNpdHkiLAorICAgICAg
ICB2aWEgY29kZSBpbiBWZWN0b3IuY3BwLgorICAgICAgICAKKyAgICAgICAgQ29udGFpbmVyQ2Fw
YWNpdHlUcmFja2VyIHRha2VzIGNhcmUgdG8gYXZvaWQgcmUtZW50cmFuY3kgKGFsbG93IGl0IHRv
IHVzZSB0aGUgY29udGFpbmVyIHR5cGVzKQorICAgICAgICB3aGlsZSBiZWluZyBjYWxsYWJsZSBm
cm9tIGRpZmZlcmVudCB0aHJlYWRzLgorICAgICAgICAKKyAgICAgICAgKiBXVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAqIHd0
Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaDogQWRkZWQuCisgICAgICAgICogd3RmL1NpemVM
aW1pdHMuY3BwOgorICAgICAgICAqIHd0Zi9TdGFja1Nob3QuaDoKKyAgICAgICAgKiB3dGYvVmVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OmR1bXBXYXN0ZWRWZWN0b3JDYXBhY2l0eSk6
CisgICAgICAgIChXVEY6OnZlY3RvclRyYWNrZXIpOgorICAgICAgICAqIHd0Zi9WZWN0b3IuaDoK
KyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6Y2FwYWNpdHlJbkJ5dGVzIGNvbnN0KToK
KyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6c2l6ZUluQnl0ZXMgY29uc3QpOgorICAg
ICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjpWZWN0b3JCdWZmZXJCYXNlKToKKyAgICAgICAg
KFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6flZlY3RvckJ1ZmZlckJhc2UpOgorICAgICAgICAoV1RG
OjpWZWN0b3JCdWZmZXI6OnN3YXApOgorICAgICAgICAoV1RGOjpWZWN0b3I6OmZyb20pOgorICAg
ICAgICAoV1RGOjpWZWN0b3I6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdURjo6VmVj
dG9yOjpjYXBhY2l0eUluQnl0ZXMgY29uc3QpOgorICAgICAgICAoV1RGOjpWZWN0b3I6OnN3YXAp
OgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OlZlY3Rvcik6CisgICAgICAgIChXVEY6Oj0p
OgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmZpbGwpOgorICAgICAgICAoV1RGOjptaW5D
YXBhY2l0eT46OnJlc2l6ZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6c2hyaW5rKToK
KyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojpncm93KToKKyAgICAgICAgKFdURjo6bWluQ2Fw
YWNpdHk+OjpyZXNlcnZlQ2FwYWNpdHkpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnRy
eVJlc2VydmVDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6c2hyaW5rQ2FwYWNp
dHkpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmFwcGVuZCk6CisgICAgICAgIChXVEY6
Om1pbkNhcGFjaXR5Pjo6dHJ5QXBwZW5kKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojpj
b25zdHJ1Y3RBbmRBcHBlbmQpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnRyeUNvbnN0
cnVjdEFuZEFwcGVuZCk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6YXBwZW5kU2xvd0Nh
c2UpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmNvbnN0cnVjdEFuZEFwcGVuZFNsb3dD
YXNlKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojp0cnlDb25zdHJ1Y3RBbmRBcHBlbmRT
bG93Q2FzZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6dW5jaGVja2VkQXBwZW5kKToK
KyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+OjppbnNlcnQpOgorICAgICAgICAoV1RGOjptaW5D
YXBhY2l0eT46OnJlbW92ZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVtb3ZlQWxs
TWF0Y2hpbmcpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnJlbGVhc2VCdWZmZXIpOgor
CiAyMDE4LTA2LTEzICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEF1dG9tYXRpY1RocmVhZCBzaG91bGQgaGF2ZSBhIHdheSB0byBwcm92aWRlIGEgdGhy
ZWFkIG5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVm
MWIzM2I3ZmUwNzgyZjFkODc0MDU5OTNmNmY0MTA2YjEwNjZlMjAuLjE5NWIwN2E2NTM3YjRmYjFm
N2Y0ZmRiZWZkM2E2ZGVkOTNiZGY5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjQsNiArMjQsNyBAQAogCQkwRjMwQkE5MDFFNzg3MDhFMDAyQ0E4NDcg
LyogR2xvYmFsVmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjMwQkE4QTFFNzg3MDhFMDAyQ0E4NDcgLyogR2xvYmFsVmVyc2lvbi5jcHAg
Ki87IH07CiAJCTBGMzBDQjVBMUZDREYxMzQwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNl
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMw
Q0I1ODFGQ0RGMTMzMDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwICovOyB9Owog
CQkwRjQzRDhGMTFEQjVBRERDMDAxMDhGQjYgLyogQXV0b21hdGljVGhyZWFkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDNEOEVGMURCNUFEREMw
MDEwOEZCNiAvKiBBdXRvbWF0aWNUaHJlYWQuY3BwICovOyB9OworCQkwRjVCNERGQTIwRDBERTE4
MDBENkY1MTAgLyogQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUI0REY5MjBEMERFMTcwMEQ2RjUxMCAv
KiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwICovOyB9OwogCQkwRjVCRjE3NjFGMjNENDlB
MDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1QkYxNzQxRjIzRDQ5QTAwMjlEOTFEIC8qIEdpZ2FjYWdlLmNwcCAq
LzsgfTsKIAkJMEY2MEYzMkYxREZDQkQxQjAwNDE2RDZDIC8qIExvY2tlZFByaW50U3RyZWFtLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjBGMzJE
MURGQ0JEMUIwMDQxNkQ2QyAvKiBMb2NrZWRQcmludFN0cmVhbS5jcHAgKi87IH07CiAJCTBGNjZC
MjhBMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NkIyODAxREM5N0JBQjAwNEExRDNGIC8qIENs
b2NrVHlwZS5jcHAgKi87IH07CkBAIC0zOCw2ICszOSw3IEBACiAJCTBGOEYyQjkyMTcyRTAxMDMw
MDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGMkI4RjE3MkUwMEYwMDA3REJEQTUgLyogQ29tcGls
YXRpb25UaHJlYWQuY3BwICovOyB9OwogCQkwRjlEMzM2MDE2NURCQTczMDA1QUQzODcgLyogRmls
ZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOUQzMzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwICov
OyB9OwogCQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUQxNjVEQkE3
MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCAqLzsgfTsKKwkJMEZENzNDQkIyMEQ0NzU4NDAw
RkM3QTI5IC8qIFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkQ3M0NCQTIwRDQ3NTgzMDBGQzdBMjkgLyogVmVjdG9yLmNwcCAqLzsgfTsK
IAkJMEZEREJGQTcxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRERCRkE1MTY2NkRG
QTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5jcHAgKi87IH07CiAJCTBGRTE2NDZBMUI2
RkZDOTYwMDQwMEU3QyAvKiBMb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRTE2NDY4MUI2RkZDOTYwMDQwMEU3QyAvKiBMb2NrLmNwcCAqLzsg
fTsKIAkJMEZFNDQ3OUMxQjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTQ0NzlBMUI3QUFBMDMwMDk0
OThFQiAvKiBXb3JkTG9jay5jcHAgKi87IH07CkBAIC0yMDAsNiArMjAyLDggQEAKIAkJMEY0NTcw
NDIxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRG9taW5hdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjQ1NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCdWJibGVTb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNEQ4QzcxMUZDMUU3Q0UwMDFEMzJBQyAvKiBTaW5nbHlMaW5rZWRMaXN0V2l0aFRhaWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2luZ2x5TGlua2VkTGlzdFdpdGhU
YWlsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNUI0REY4MjBEMERFMTcwMEQ2
RjUxMCAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNUI0REY5MjBEMERFMTcwMEQ2RjUxMCAvKiBDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGFp
bmVyQ2FwYWNpdHlUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1
QkYxNjUxRjIzMTc4MzAwMjlEOTFEIC8qIE5hdHVyYWxMb29wcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
YXR1cmFsTG9vcHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QkYxNzQxRjIz
RDQ5QTAwMjlEOTFEIC8qIEdpZ2FjYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdpZ2FjYWdl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QkYxNzUxRjIzRDQ5QTAwMjlE
OTFEIC8qIEdpZ2FjYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdpZ2FjYWdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNDYsNiArMjUwLDcgQEAKIAkJMEZCNDY3ODMxRkRFMjgyQzAw
M0ZDQjA5IC8qIENvbmN1cnJlbnRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29uY3VycmVudFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkM0NDg4MjE2RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkM0RURFNTE2OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQcmludGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hUHJpbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkQ3M0NCQTIwRDQ3NTgzMDBGQzdBMjkgLyogVmVjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RCaXRWZWN0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEQjY5OEQxQjdDNjQzQTAwMEMxMDc4IC8qIENv
bmRpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25kaXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEREJGQTUxNjY2REZBMzAwQzU1RkVGIC8q
IFN0cmluZ1ByaW50U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN0cmluZ1ByaW50U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTg0NCw2ICs4NDksOCBAQAogCQkJCTBGMzBDQjU5MUZDREYxMzMwMDRCNTMyMyAvKiBDb25jdXJy
ZW50UHRySGFzaFNldC5oICovLAogCQkJCTBGQjQ2NzgzMUZERTI4MkMwMDNGQ0IwOSAvKiBDb25j
dXJyZW50VmVjdG9yLmggKi8sCiAJCQkJMEZEQjY5OEQxQjdDNjQzQTAwMEMxMDc4IC8qIENvbmRp
dGlvbi5oICovLAorCQkJCTBGNUI0REY5MjBEMERFMTcwMEQ2RjUxMCAvKiBDb250YWluZXJDYXBh
Y2l0eVRyYWNrZXIuY3BwICovLAorCQkJCTBGNUI0REY4MjBEMERFMTcwMEQ2RjUxMCAvKiBDb250
YWluZXJDYXBhY2l0eVRyYWNrZXIuaCAqLywKIAkJCQkwRjhFODVEQTFGRDQ4NUIwMDA2OTE4ODkg
LyogQ291bnRpbmdMb2NrLmNwcCAqLywKIAkJCQkwRkZCQ0JGQTFGRDM3RTBGMDA3MkFBRjAgLyog
Q291bnRpbmdMb2NrLmggKi8sCiAJCQkJRTM4QzQxMjYxRUI0RTA2ODAwNDI5NTdEIC8qIENQVVRp
bWUuY3BwICovLApAQCAtMTExOCw2ICsxMTI1LDcgQEAKIAkJCQk3QUZFQzZBRTFFQjIyQUM2MDBE
QURFMzYgLyogVVVJRC5oICovLAogCQkJCUE4QTQ3MzZGMTUxQTgyNUIwMDQxMjNGRiAvKiBWYWx1
ZUNoZWNrLmggKi8sCiAJCQkJN0NEMEQ1QTcxRDU1MzIyQTAwMENDOUUxIC8qIFZhcmlhbnQuaCAq
LywKKwkJCQkwRkQ3M0NCQTIwRDQ3NTgzMDBGQzdBMjkgLyogVmVjdG9yLmNwcCAqLywKIAkJCQlB
OEE0NzM3MDE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yLmggKi8sCiAJCQkJQThBNDczNzExNTFB
ODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oICovLAogCQkJCUE4QTQ3MzcyMTUxQTgyNUIw
MDQxMjNGRiAvKiBWTVRhZ3MuaCAqLywKQEAgLTE0NjEsNiArMTQ2OSw3IEBACiAJCQkJQThBNDc0
NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGOEYyQjkyMTcyRTAxMDMwMDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjMwQ0I1QTFGQ0RGMTM0MDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhh
c2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY1QjRERkEyMEQwREUxODAwRDZGNTEwIC8q
IENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhFODVE
QjFGRDQ4NUIwMDA2OTE4ODkgLyogQ291bnRpbmdMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUzOEM0MTI4MUVCNEUwNjgwMDQyOTU3RCAvKiBDUFVUaW1lLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUzOEM0MTI1MUVCNEUwNEMwMDQyOTU3RCAvKiBDUFVUaW1lQ29jb2EubW0gaW4gU291cmNl
cyAqLywKQEAgLTE1NjQsNiArMTU3Myw3IEBACiAJCQkJMUMxODFDOTMxRDMwN0FCODAwRjVGQTE2
IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2OTE1
MUE4MjVCMDA0MTIzRkYgLyogVVRGOC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUZFQzZCMTFF
QjIyQjU5MDBEQURFMzYgLyogVVVJRC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkQ3M0NCQjIw
RDQ3NTg0MDBGQzdBMjkgLyogVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjZCMjky
MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxRkE0
N0M4QTE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVhZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkU0NDc5QzFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDBmOWY0ZTFmMmRhMTZjMzEyYzBkZDUyZDhkYmU5
NTNiNTU0ZDM0NGQuLjNkYzdhZmZkNjEwNmIxYzg4OTYxZDJmZDMxMDQ1ZmY2ZGM2ZmEyNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CkBAIC0zNSw2ICszNSw3IEBAIHNldChXVEZfUFVCTElDX0hFQURF
UlMKICAgICBDb25jdXJyZW50UHRySGFzaFNldC5oCiAgICAgQ29uY3VycmVudFZlY3Rvci5oCiAg
ICAgQ29uZGl0aW9uLmgKKyAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaAogICAgIENvdW50
aW5nTG9jay5oCiAgICAgQ3Jvc3NUaHJlYWRDb3BpZXIuaAogICAgIENyb3NzVGhyZWFkUXVldWUu
aApAQCAtMzMxLDYgKzMzMiw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIENsb2NrVHlwZS5jcHAK
ICAgICBDb21waWxhdGlvblRocmVhZC5jcHAKICAgICBDb25jdXJyZW50UHRySGFzaFNldC5jcHAK
KyAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwCiAgICAgQ291bnRpbmdMb2NrLmNwcAog
ICAgIENyb3NzVGhyZWFkQ29waWVyLmNwcAogICAgIENyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3Bw
CkBAIC0zODcsNiArMzg5LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgVGltZVdpdGhEeW5hbWlj
Q2xvY2tUeXBlLmNwcAogICAgIFRpbWluZ1Njb3BlLmNwcAogICAgIFVVSUQuY3BwCisgICAgVmVj
dG9yLmNwcAogICAgIFdURkFzc2VydGlvbnMuY3BwCiAgICAgV2FsbFRpbWUuY3BwCiAgICAgV29y
ZExvY2suY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0eVRy
YWNrZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMDEyNWFhZmQ2MTZmNzNiMDZlODU4ZTE1NTg5MmVlYjE4M2QwYmMyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNw
cApAQCAtMCwwICsxLDE5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1N0
YWNrU2hvdC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworQWxsb2NhdGlvbkNhbGxTaXRlRGF0YTo6
QWxsb2NhdGlvbkNhbGxTaXRlRGF0YShzaXplX3Qgc3RhY2tEZXB0aCwgc2l6ZV90IGluVXNlZFNp
emUsIHNpemVfdCBpbkNhcGFjaXR5KQorICAgIDogdXNlZFNpemUoaW5Vc2VkU2l6ZSkKKyAgICAs
IGNhcGFjaXR5KGluQ2FwYWNpdHkpCisgICAgLCBtX3N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8U3Rh
Y2tTaG90PihzdGFja0RlcHRoKSkKK3sKK30KKworQWxsb2NhdGlvbkNhbGxTaXRlRGF0YTo6QWxs
b2NhdGlvbkNhbGxTaXRlRGF0YShjb25zdCBTdGFja1Nob3QmIHN0YWNrKQorICAgIDogbV9zdGFj
ayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hvdD4oc3RhY2spKQoreworfQorCitBbGxvY2F0aW9u
Q2FsbFNpdGVEYXRhOjpBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKGNvbnN0IEFsbG9jYXRpb25DYWxs
U2l0ZURhdGEmIG90aGVyKQorICAgIDogY291bnQob3RoZXIuY291bnQpCisgICAgLCB1c2VkU2l6
ZShvdGhlci51c2VkU2l6ZSkKKyAgICAsIGNhcGFjaXR5KG90aGVyLmNhcGFjaXR5KQorICAgICwg
bV9zdGFjayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hvdD4ob3RoZXIuc3RhY2soKSkpCit7Cit9
CisKK0FsbG9jYXRpb25DYWxsU2l0ZURhdGE6On5BbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKCkgPSBk
ZWZhdWx0OworCitzdHJ1Y3QgQ29udGFpbmVyQWxsb2NhdGlvbkRhdGEgeworICAgIENvbnRhaW5l
ckFsbG9jYXRpb25EYXRhKHNpemVfdCBzdGFja1Nob3RTaXplLCBzaXplX3QgaW5TaXplLCBzaXpl
X3QgaW5DYXBhY2l0eSkKKyAgICAgICAgOiBhbGxvY2F0aW9uU3RhY2soc3RhY2tTaG90U2l6ZSkK
KyAgICAgICAgLCBzaXplKGluU2l6ZSkKKyAgICAgICAgLCBjYXBhY2l0eShpbkNhcGFjaXR5KQor
ICAgIHsKKyAgICAKKyAgICB9CisgICAgU3RhY2tTaG90IGFsbG9jYXRpb25TdGFjazsKKyAgICBz
aXplX3Qgc2l6ZTsKKyAgICBzaXplX3QgY2FwYWNpdHk7Cit9OworCitzdHJ1Y3QgQ29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyOjpDb250YWluZXJDYXBhY2l0eVRyYWNrZXJJbXBsIHsKKyAgICBIYXNo
TWFwPFRyYWNrZWRJRCwgc3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lckFsbG9jYXRpb25EYXRhPj4g
bV90cmFja2VkSURUb0NvbnRhaW5lckRhdGE7CisgICAgYm9vbCogbV9hdm9pZFJlZW50cmFuY3kg
eyBudWxscHRyIH07Cit9OworCisvLyBUbyBwcmV2ZW50IHBlci10aHJlYWQgcmUtZW50cmFuY3kg
d2UgdGFrZSBhIHBvaW50ZXIgdG8gYW4gb2JqZWN0IG9uIHRoZSBzdGFjaywgaW5zaWRlIG1fbXV0
ZXggbG9jayBzY29wZS4KK2NsYXNzIEF2b2lkUmVjb3JkaW5nU2NvcGUgeworcHVibGljOgorICAg
IEF2b2lkUmVjb3JkaW5nU2NvcGUoQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpDb250YWluZXJD
YXBhY2l0eVRyYWNrZXJJbXBsJiBpbXBsLCBib29sKiBzdGFja09iamVjdCkKKyAgICAgICAgOiBt
X2ltcGwoaW1wbCkKKyAgICB7CisgICAgICAgIG1faW1wbC5tX2F2b2lkUmVlbnRyYW5jeSA9IHN0
YWNrT2JqZWN0OworICAgIH0KKworICAgIH5Bdm9pZFJlY29yZGluZ1Njb3BlKCkKKyAgICB7Cisg
ICAgICAgIG1faW1wbC5tX2F2b2lkUmVlbnRyYW5jeSA9IG51bGxwdHI7CisgICAgfQorcHJpdmF0
ZToKKyAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tl
ckltcGwmIG1faW1wbDsKK307CisKK0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlcjo6Q29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyKHNpemVfdCBhZ2dyZWdhdGlvblN0YWNrRGVwdGgpCisgICAgOiBtX2lt
cGwoc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXJDYXBhY2l0eVRyYWNrZXJJbXBsPigpKQorICAg
ICwgbV9hZ2dyZWdhdGlvblN0YWNrRGVwdGgoYWdncmVnYXRpb25TdGFja0RlcHRoKQoreworfQor
CitUcmFja2VkSUQgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpyZWNvcmRBbGxvY2F0aW9uKHNp
emVfdCBzaXplLCBzaXplX3QgY2FwYWNpdHkpCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6
cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1fbXV0ZXgpOworCisgICAgaWYgKG1faW1wbC0+
bV9hdm9pZFJlZW50cmFuY3kpCisgICAgICAgIHJldHVybiAwOworCisgICAgYm9vbCBhdm9pZFJl
ZW50cmFuY3kgPSB0cnVlOworICAgIEF2b2lkUmVjb3JkaW5nU2NvcGUgc2NvcGUoKm1faW1wbCwg
JmF2b2lkUmVlbnRyYW5jeSk7CisKKyAgICBUcmFja2VkSUQgb2JqZWN0SUQgPSArK21fbmV4dElE
OworCisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJE
YXRhLmFkZChvYmplY3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXJBbGxvY2F0aW9uRGF0
YT4obV9hZ2dyZWdhdGlvblN0YWNrRGVwdGgsIHNpemUsIGNhcGFjaXR5KSk7CisgICAgaWYgKCFh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRhaW5lckNh
cGFjaXR5VHJhY2tlcjo6cmVjb3JkQWxsb2NhdGlvbiBzYXcgb2JqZWN0ICV1IGZvciB0aGUgc2Vj
b25kIHRpbWUiLCBvYmplY3RJRCk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiV2FzIHByZXZpb3Vz
bHkgYWxsb2NhdGVkIGF0OiIpOworICAgICAgICBhdXRvJiBjYWxsU2l0ZURhdGEgPSAqYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgY29uc3Qgc2l6ZV90IGZyYW1lc1RvU2tpcCA9
IDA7CisgICAgICAgIFdURlByaW50QmFja3RyYWNlKGNhbGxTaXRlRGF0YS5hbGxvY2F0aW9uU3Rh
Y2suYXJyYXkoKSArIGZyYW1lc1RvU2tpcCwgY2FsbFNpdGVEYXRhLmFsbG9jYXRpb25TdGFjay5z
aXplKCkgLSBmcmFtZXNUb1NraXApOworICAgIH0KKworICAgIHJldHVybiBvYmplY3RJRDsKK30K
Kwordm9pZCBDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29yZFNpemVBbmRDYXBhY2l0eShU
cmFja2VkSUQgb2JqZWN0SUQsIHNpemVfdCBzaXplLCBzaXplX3QgY2FwYWNpdHkpCit7CisgICAg
QVNTRVJUKHNpemUgPD0gY2FwYWNpdHkpOworCisgICAgaWYgKCFvYmplY3RJRCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2Nr
SG9sZGVyKG1fbXV0ZXgpOworCisgICAgaWYgKG1faW1wbC0+bV9hdm9pZFJlZW50cmFuY3kpCisg
ICAgICAgIHJldHVybjsKKworICAgIGJvb2wgYXZvaWRSZWVudHJhbmN5ID0gdHJ1ZTsKKyAgICBB
dm9pZFJlY29yZGluZ1Njb3BlIHNjb3BlKCptX2ltcGwsICZhdm9pZFJlZW50cmFuY3kpOworCisg
ICAgYXV0byBpdCA9IG1faW1wbC0+bV90cmFja2VkSURUb0NvbnRhaW5lckRhdGEuZmluZChvYmpl
Y3RJRCk7CisgICAgaWYgKGl0ICE9IG1faW1wbC0+bV90cmFja2VkSURUb0NvbnRhaW5lckRhdGEu
ZW5kKCkpIHsKKyAgICAgICAgaXQtPnZhbHVlLT5zaXplID0gc2l6ZTsKKyAgICAgICAgaXQtPnZh
bHVlLT5jYXBhY2l0eSA9IGNhcGFjaXR5OworICAgIH0gZWxzZQorICAgICAgICBXVEZMb2dBbHdh
eXMoIkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlciAlcCByZWNvcmRTaXplQW5kQ2FwYWNpdHkgZmFp
bGVkIHRvIGZpbmQgb2JqZWN0ICV1IiwgdGhpcywgb2JqZWN0SUQpOworfQorCit2b2lkIENvbnRh
aW5lckNhcGFjaXR5VHJhY2tlcjo6cmVjb3JkRnJlZShUcmFja2VkSUQgb2JqZWN0SUQpCit7Cisg
ICAgaWYgKCFvYmplY3RJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RkOjpsb2NrX2d1YXJk
PHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1fbXV0ZXgpOworCisgICAgaWYgKG1f
aW1wbC0+bV9hdm9pZFJlZW50cmFuY3kpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgYXZv
aWRSZWVudHJhbmN5ID0gdHJ1ZTsKKyAgICBBdm9pZFJlY29yZGluZ1Njb3BlIHNjb3BlKCptX2lt
cGwsICZhdm9pZFJlZW50cmFuY3kpOworCisgICAgYm9vbCByZW1vdmVkID0gbV9pbXBsLT5tX3Ry
YWNrZWRJRFRvQ29udGFpbmVyRGF0YS5yZW1vdmUob2JqZWN0SUQpOworICAgIGlmICghcmVtb3Zl
ZCkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29y
ZEZyZWUgZ290IGlkICV1IGZvciB3aGljaCB0aGVyZSBpcyBubyBlbnRyeSIsIG9iamVjdElEKTsK
K30KKworc3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4gQ29udGFpbmVyQ2FwYWNp
dHlUcmFja2VyOjphZ2dyZWdhdGVCeUNhbGxTaXRlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChU
cmFja2VkSUQsIEFsbG9jYXRpb25DYWxsU2l0ZURhdGEmKT4mIHBlck9iamVjdENhbGxiYWNrKQor
eworICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6OnJlY3Vyc2l2ZV9tdXRleD4gbG9ja0hvbGRlciht
X211dGV4KTsKKworICAgIGJvb2wgYXZvaWRSZWVudHJhbmN5ID0gdHJ1ZTsKKyAgICBBdm9pZFJl
Y29yZGluZ1Njb3BlIHNjb3BlKCptX2ltcGwsICZhdm9pZFJlZW50cmFuY3kpOworCisgICAgdHlw
ZWRlZiB1bnNpZ25lZCBTdGFja1Nob3RIYXNoOworICAgIEhhc2hNYXA8U3RhY2tTaG90SGFzaCwg
c3RkOjp1bmlxdWVfcHRyPEFsbG9jYXRpb25DYWxsU2l0ZURhdGE+PiBjYWxsU2l0ZVRvQWxsb2Nh
dGlvbkFnZ3JlZ2F0ZTsKKworICAgIGZvciAoY29uc3QgYXV0byYgaXQgOiBtX2ltcGwtPm1fdHJh
Y2tlZElEVG9Db250YWluZXJEYXRhKSB7CisgICAgICAgIGNvbnN0IENvbnRhaW5lckFsbG9jYXRp
b25EYXRhJiBhbGxvY2F0aW9uRGF0YSA9ICppdC52YWx1ZTsKKworICAgICAgICBhdXRvIGFkZFJl
c3VsdCA9IGNhbGxTaXRlVG9BbGxvY2F0aW9uQWdncmVnYXRlLmVuc3VyZShhbGxvY2F0aW9uRGF0
YS5hbGxvY2F0aW9uU3RhY2suaGFzaCgpLCBbJl0gKCkgeworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4oYWxsb2NhdGlvbkRhdGEuYWxs
b2NhdGlvblN0YWNrKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byYgY2FsbFNpdGVEYXRh
ID0gKmFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICsrY2FsbFNpdGVEYXRhLmNv
dW50OworICAgICAgICBjYWxsU2l0ZURhdGEudXNlZFNpemUgKz0gYWxsb2NhdGlvbkRhdGEuc2l6
ZTsKKyAgICAgICAgY2FsbFNpdGVEYXRhLmNhcGFjaXR5ICs9IGFsbG9jYXRpb25EYXRhLmNhcGFj
aXR5OworCisgICAgICAgIHBlck9iamVjdENhbGxiYWNrKGl0LmtleSwgY2FsbFNpdGVEYXRhKTsK
KyAgICB9CisKKyAgICBzdGQ6OnZlY3RvcjxBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhPiByZXN1bHQ7
CisgICAgZm9yIChhdXRvJiBpdCA6IGNhbGxTaXRlVG9BbGxvY2F0aW9uQWdncmVnYXRlKQorICAg
ICAgICByZXN1bHQucHVzaF9iYWNrKEFsbG9jYXRpb25DYWxsU2l0ZURhdGEoKml0LnZhbHVlKSk7
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oIGIvU291cmNlL1dU
Ri93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNiNGUyOTE5YTEx
MjlkMmE0YmUzNjBlZDVmMWViZWUwN2IwN2I5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdURl9Db250
YWluZXJDYXBhY2l0eVRyYWNrZXJfaAorI2RlZmluZSBXVEZfQ29udGFpbmVyQ2FwYWNpdHlUcmFj
a2VyX2gKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx2
ZWN0b3I+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4K
KworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFN0YWNrU2hvdDsKKworc3RydWN0IEFsbG9jYXRp
b25DYWxsU2l0ZURhdGEgeworICAgIEFsbG9jYXRpb25DYWxsU2l0ZURhdGEoc2l6ZV90IHN0YWNr
RGVwdGggPSAwLCBzaXplX3Qgc2l6ZSA9IDAsIHNpemVfdCBjYXBhY2l0eSA9IDApOworICAgIEFs
bG9jYXRpb25DYWxsU2l0ZURhdGEoY29uc3QgU3RhY2tTaG90Jik7CisgICAgQWxsb2NhdGlvbkNh
bGxTaXRlRGF0YShjb25zdCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIH5BbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKCk7CisKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgY29uc3QgU3RhY2tTaG90JiBzdGFjaygpIGNvbnN0OworCisgICAgc2l6ZV90IGNvdW50
IHsgMCB9OworICAgIHNpemVfdCB1c2VkU2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgY2FwYWNpdHkg
eyAwIH07CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrU2hvdD4gbV9zdGFj
azsgLy8gTmVlZGVkIHRvIGhpZGUgU3RhY2tTaG90IHRvIGF2b2lkIGNpcmN1bGFyIGluY2x1ZGVz
LgorfTsKKwordHlwZWRlZiB1bnNpZ25lZCBUcmFja2VkSUQ7CisKK2NsYXNzIENvbnRhaW5lckNh
cGFjaXR5VHJhY2tlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGFpbmVyQ2FwYWNp
dHlUcmFja2VyKTsKKyAgICBmcmllbmQgY2xhc3MgQXZvaWRSZWNvcmRpbmdTY29wZTsKK3B1Ymxp
YzoKKyAgICAvLyBDYWxsIHNpdGVzIGFyZSBhZ2dyZWdhdGVkIGJ5IGNhbGwgc3RhY2ssIHVzaW5n
IGFnZ3JlZ2F0aW9uU3RhY2tEZXB0aCBmcmFtZXMuCisgICAgQ29udGFpbmVyQ2FwYWNpdHlUcmFj
a2VyKHNpemVfdCBhZ2dyZWdhdGlvblN0YWNrRGVwdGggPSAxNSk7CisgICAgCisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFRyYWNrZWRJRCByZWNvcmRBbGxvY2F0aW9uKHNpemVfdCBzaXplLCBzaXpl
X3QgY2FwYWNpdHkpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlY29yZFNpemVBbmRD
YXBhY2l0eShUcmFja2VkSUQsIHNpemVfdCBzaXplLCBzaXplX3QgY2FwYWNpdHkpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlY29yZEZyZWUoVHJhY2tlZElEKTsKKyAgICAKKyAgICAv
LyBSZXR1cm4gYSB2ZWN0b3Igb2YgcGVyIGNhbGxzaXRlIGRhdGE7IHNpemUgYW5kIGNhcGFjaXR5
IGFyZSBzdW1tZWQgZm9yIGFsbCBhbGxvY2F0aW9ucyB3aXRoIGEgZ2l2ZW4gY2FsbCBzaXRlLgor
ICAgIC8vIFRoZSBwYXNzZWQgZnVuY3Rpb24gYWxsb3dzIHRoZSBjYWxsZXIgdG8gZG8gYWRkaXRp
b25hbCBwcm9jZXNzaW5nIHBlciBhbGxvY2F0aW9uLgorICAgIHN0ZDo6dmVjdG9yPEFsbG9jYXRp
b25DYWxsU2l0ZURhdGE+IGFnZ3JlZ2F0ZUJ5Q2FsbFNpdGUoY29uc3QgV1RGOjpGdW5jdGlvbjx2
b2lkKFRyYWNrZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYpPiYpOworCitwcml2YXRlOgor
ICAgIC8vIFVzZSBhIHBpbXBsIHRvIGF2b2lkIGNpcmN1bGFyIGluY2x1ZGVzIGJldHdlZW4gb3Vy
IGhlYWRlciBhbmQgdGhlIGNvbnRhaW5lciBjbGFzcyBoZWFkZXJzLgorICAgIHN0cnVjdCBDb250
YWluZXJDYXBhY2l0eVRyYWNrZXJJbXBsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250YWluZXJD
YXBhY2l0eVRyYWNrZXJJbXBsPiBtX2ltcGw7CisgICAgc3RkOjpyZWN1cnNpdmVfbXV0ZXggbV9t
dXRleDsKKyAgICBUcmFja2VkSUQgbV9uZXh0SUQgeyAwIH07CisgICAgY29uc3Qgc2l6ZV90IG1f
YWdncmVnYXRpb25TdGFja0RlcHRoOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5n
IFdURjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOworCisjZW5kaWYgLy8gV1RGX0NvbnRhaW5l
ckNhcGFjaXR5VHJhY2tlcl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NpemVMaW1p
dHMuY3BwIGIvU291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAKaW5kZXggYjBhZDE0MDQ0ZjNi
ODQxMTY4NmQzYTFhYThlYWZiNGRhYjc3Nzg1Yy4uZmJlZDY1ZmUwMTAyMmM4ODBlN2U2NjkwMDJh
YmQ4ZmUwYWY5ZDEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAKQEAgLTgxLDkgKzgxLDEyIEBAIHB1
YmxpYzoKICAgICB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2YoVCksIHN0ZDo6
YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZT46OnR5cGUgaW5saW5lQnVmZmVyW2lubGluZUNhcGFjaXR5
XTsKIH07CiAKKyNpZiAhVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCiBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihWZWN0b3I8aW50PikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNp
dHk8aW50PiksICJWZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7CiBzdGF0aWNfYXNzZXJ0KHNp
emVvZihWZWN0b3I8aW50LCAxPikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5l
Q2FwYWNpdHk8aW50LCAxPiksICJWZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7CiBzdGF0aWNf
YXNzZXJ0KHNpemVvZihWZWN0b3I8aW50LCAyPikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JX
aXRoSW5saW5lQ2FwYWNpdHk8aW50LCAyPiksICJWZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7
CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihWZWN0b3I8aW50LCAzPikgPT0gc2l6ZW9mKFNhbWVTaXpl
QXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNpdHk8aW50LCAzPiksICJWZWN0b3Igc2hvdWxkIHN0YXkg
c21hbGwhIik7CisjZW5kaWYKKwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9TdGFja1Nob3QuaCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oCmluZGV4IDdlMzJhMzVi
YWUzYzdiNTZhOGJlODViN2QxOGQxZTU1NzlhMGIzZmMuLmZjN2NmYTZhNjYyNDgxY2VkNGM0YWRj
ZjU1Yzg1NmY1N2Q1ZjA2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdU
RiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuY3BwIGIvU291cmNlL1dURi93
dGYvVmVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YWJiNmRmMDE0ZmY2YjU2ZmJlN2EwNzVkNWI4NGY1
MTI5MDkwMjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmNwcApA
QCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlZlY3Rvci5oIgorCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisjaW5jbHVkZSA8d3Rm
L0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8bm90aWZ5Lmg+CisjaW5jbHVk
ZSA8d3RmL1N0YWNrU2hvdC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgUExB
VEZPUk0oQ09DT0EpCitzdGF0aWMgdm9pZCBkdW1wV2FzdGVkVmVjdG9yQ2FwYWNpdHkoKQorewor
ICAgIGF1dG8gY2FsbFNpdGVEYXRhID0gdmVjdG9yVHJhY2tlcigpLmFnZ3JlZ2F0ZUJ5Q2FsbFNp
dGUoW10gKFRyYWNrZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYpIHsKKyAgICB9KTsKKwor
ICAgIC8vIE1ha2UgYSB2ZWN0b3Igb2YgcmF3IHBvaW50ZXJzIHNvIHdlIGNhbiBzb3J0IHRoZW0u
CisgICAgc3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSo+IGNhbGxTaXRlUHRyczsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIHNpdGVEYXRhIDogY2FsbFNpdGVEYXRhKSB7CisgICAgICAg
IGlmICghc2l0ZURhdGEuY2FwYWNpdHkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
Y2FsbFNpdGVQdHJzLnB1c2hfYmFjayhjb25zdF9jYXN0PEFsbG9jYXRpb25DYWxsU2l0ZURhdGEq
Pigmc2l0ZURhdGEpKTsKKyAgICB9CisKKyAgICAvLyBTb3J0IGJ5IHJldmVyc2Ugd2FzdGFnZS4K
KyAgICBzdGQ6OnNvcnQoY2FsbFNpdGVQdHJzLmJlZ2luKCksIGNhbGxTaXRlUHRycy5lbmQoKSwg
W10gKGNvbnN0IEFsbG9jYXRpb25DYWxsU2l0ZURhdGEqIGEsIGNvbnN0IEFsbG9jYXRpb25DYWxs
U2l0ZURhdGEqIGIpIHsKKyAgICAgICAgc2l6ZV90IGFXYXN0YWdlID0gYS0+Y2FwYWNpdHkgLSBh
LT51c2VkU2l6ZTsKKyAgICAgICAgc2l6ZV90IGJXYXN0YWdlID0gYi0+Y2FwYWNpdHkgLSBiLT51
c2VkU2l6ZTsKKyAgICAgICAgcmV0dXJuIGFXYXN0YWdlID4gYldhc3RhZ2U7CisgICAgfSk7CisK
KyAgICBjb25zdCBzaXplX3QgbWF4Q291bnQgPSAxMDA7CisKKyAgICBXVEZMb2dBbHdheXMoIiVs
dSBjYWxsIHNpdGVzIGNyZWF0ZWQgdmVjdG9ycy4gU2hvd2luZyAlbHUgc2l0ZXMgd2l0aCBtb3N0
IHdhc3RhZ2U6XG4iLCBjYWxsU2l0ZURhdGEuc2l6ZSgpLCBtYXhDb3VudCk7CisKKyAgICBzaXpl
X3QgY291bnQgPSAwOworICAgIGZvciAoYXV0byBzaXRlRGF0YSA6IGNhbGxTaXRlUHRycykgewor
ICAgICAgICBpZiAoY291bnQrKyA9PSBtYXhDb3VudCkKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiV2FzdGVkIGNhcGFjaXR5OiAlbHUgYnl0ZXMgKHVzZWQgJWx1
IG9mICVsdSBieXRlcywgdXRpbGl6YXRpb246ICUuMmYlJSkgLSAlbHUgYWxsb2NhdGlvbnNcbiIs
CisgICAgICAgICAgICBzaXRlRGF0YS0+Y2FwYWNpdHkgLSBzaXRlRGF0YS0+dXNlZFNpemUsCisg
ICAgICAgICAgICBzaXRlRGF0YS0+dXNlZFNpemUsIHNpdGVEYXRhLT5jYXBhY2l0eSwgMTAwLjAg
KiBzaXRlRGF0YS0+dXNlZFNpemUgLyBzaXRlRGF0YS0+Y2FwYWNpdHksCisgICAgICAgICAgICBz
aXRlRGF0YS0+Y291bnQpOworICAgICAgICBjb25zdCBzaXplX3QgZnJhbWVzVG9Ta2lwID0gNzsK
KyAgICAgICAgV1RGUHJpbnRCYWNrdHJhY2Uoc2l0ZURhdGEtPnN0YWNrKCkuYXJyYXkoKSArIGZy
YW1lc1RvU2tpcCwgc2l0ZURhdGEtPnN0YWNrKCkuc2l6ZSgpIC0gZnJhbWVzVG9Ta2lwKTsKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCJcbiIpOworICAgIH0KK30KKyNlbmRpZgorCitDb250YWluZXJD
YXBhY2l0eVRyYWNrZXImIHZlY3RvclRyYWNrZXIoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxf
b25jZShpbml0aWFsaXplT25jZSwgW10geworICAgICAgICBpbnQgdG9rZW47CisgICAgICAgIG5v
dGlmeV9yZWdpc3Rlcl9kaXNwYXRjaCgiY29tLmFwcGxlLldlYktpdC5kdW1wVmVjdG9yQ2FwYWNp
dHkiLCAmdG9rZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oaW50KSB7CisgICAgICAg
ICAgICBkdW1wV2FzdGVkVmVjdG9yQ2FwYWNpdHkoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cisj
ZW5kaWYKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OkNvbnRhaW5lckNhcGFjaXR5
VHJhY2tlcj4gdHJhY2tlcjsKKyAgICByZXR1cm4gdHJhY2tlcjsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKKyNlbmRpZiAvLyBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1ZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggNjZl
M2JlMmFlNjg4YjBmZDVlMzQ4YzA3NGE1YzNmNTRmODkwYTM4NC4uYTNkOWNjYjA1MDM2OWNkMTI1
OTVhMjQ0MWQ3MzJiZDZhN2FkZGE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9y
LmgKKysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKQEAgLTM3LDEyICszNywyNCBAQAogI2lu
Y2x1ZGUgPHd0Zi9WYWx1ZUNoZWNrLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3RvclRyYWl0cy5oPgog
CisvLyBFbmFibGUgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZIHRvIHRyYWNrIGNhbGwgc2l0ZXMgdGhh
dCB3YXN0ZSB2ZWN0b3IgY2FwYWNpdHkuIE9uIENvY29hIHBsYXRmb3JtcywgdGhlIGRhdGEgY2Fu
IGJlIGR1bXBlZAorLy8gYnkgcnVubmluZyAibm90aWZ5dXRpbCAtcCBjb20uYXBwbGUuV2ViS2l0
LmR1bXBWZWN0b3JDYXBhY2l0eSIuCisjZGVmaW5lIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWSAwCisK
KyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyNpbmNsdWRlIDx3dGYvQ29udGFpbmVyQ2FwYWNp
dHlUcmFja2VyLmg+CisjZW5kaWYKKwogI2lmIEFTQU5fRU5BQkxFRAogZXh0ZXJuICJDIiB2b2lk
IF9fc2FuaXRpemVyX2Fubm90YXRlX2NvbnRpZ3VvdXNfY29udGFpbmVyKGNvbnN0IHZvaWQqIGJl
Z2luLCBjb25zdCB2b2lkKiBlbmQsIGNvbnN0IHZvaWQqIG9sZF9taWQsIGNvbnN0IHZvaWQqIG5l
d19taWQpOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXVEYgewogCisjaWYgVFJBQ0tfVkVDVE9SX0NB
UEFDSVRZCitXVEZfRVhQT1JUX1BSSVZBVEUgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyJiB2ZWN0
b3JUcmFja2VyKCk7CisjZW5kaWYKKyAgICAKIHRlbXBsYXRlIDxib29sIG5lZWRzRGVzdHJ1Y3Rp
b24sIHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgVmVjdG9yRGVzdHJ1Y3RvcjsKIApAQCAtMzM5LDYgKzM1
MSwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHB0cmRpZmZfdCBidWZmZXJNZW1vcnlPZmZzZXQo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVmVjdG9yQnVmZmVyQmFzZSwgbV9idWZmZXIpOyB9
CiAgICAgc2l6ZV90IGNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9jYXBhY2l0eTsgfQogCisg
ICAgc2l6ZV90IGNhcGFjaXR5SW5CeXRlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
Y2FwYWNpdHkoKSAqIHNpemVvZihUKTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2l6ZSAqIHNpemVvZihUKTsKKyAgICB9
CisKICAgICBNYWxsb2NQdHI8VD4gcmVsZWFzZUJ1ZmZlcigpCiAgICAgewogICAgICAgICBUKiBi
dWZmZXIgPSBtX2J1ZmZlcjsKQEAgLTM1Myw2ICszNzUsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
ICwgbV9jYXBhY2l0eSgwKQogICAgICAgICAsIG1fc2l6ZSgwKQogICAgIHsKKyNpZiBUUkFDS19W
RUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgbV90cmFja2VkSUQgPSB2ZWN0b3JUcmFja2VyKCkucmVj
b3JkQWxsb2NhdGlvbigwLCAwKTsKKyNlbmRpZgogICAgIH0KIAogICAgIFZlY3RvckJ1ZmZlckJh
c2UoVCogYnVmZmVyLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBzaXplKQpAQCAtMzYwLDE2ICsz
ODUsMjYgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1fY2FwYWNpdHkoY2FwYWNpdHkpCiAgICAg
ICAgICwgbV9zaXplKHNpemUpCiAgICAgeworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAg
ICAgICBtX3RyYWNrZWRJRCA9IHZlY3RvclRyYWNrZXIoKS5yZWNvcmRBbGxvY2F0aW9uKHNpemVJ
bkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIH5WZWN0
b3JCdWZmZXJCYXNlKCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNl
IHRvIGZpbmQgYSB3YXkgdG8gQVNTRVJUIHRoYXQgbV9idWZmZXIgaGFzbid0IGxlYWtlZCBoZXJl
LgorI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVj
b3JkRnJlZShtX3RyYWNrZWRJRCk7CisgICAgICAgIG1fdHJhY2tlZElEID0gMDsKKyNlbmRpZgog
ICAgIH0KIAogICAgIFQqIG1fYnVmZmVyOwogICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7CiAgICAg
dW5zaWduZWQgbV9zaXplOyAvLyBPbmx5IHVzZWQgYnkgdGhlIFZlY3RvciBzdWJjbGFzcywgYnV0
IHBsYWNlZCBoZXJlIHRvIGF2b2lkIHBhZGRpbmcgdGhlIHN0cnVjdC4KKyNpZiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkKKyAgICBUcmFja2VkSUQgbV90cmFja2VkSUQgeyAwIH07CisjZW5kaWYKIH07
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KQEAgLTQwMiw2
ICs0MzcsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGQ6OnN3YXAobV9idWZmZXIsIG90
aGVyLm1fYnVmZmVyKTsKICAgICAgICAgc3RkOjpzd2FwKG1fY2FwYWNpdHksIG90aGVyLm1fY2Fw
YWNpdHkpOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBzdGQ6OnN3YXAobV90
cmFja2VkSUQsIG90aGVyLm1fdHJhY2tlZElEKTsKKyNlbmRpZgogICAgIH0KICAgICAKICAgICB2
b2lkIHJlc3RvcmVJbmxpbmVCdWZmZXJJZk5lZWRlZCgpIHsgfQpAQCAtNDIzLDEwICs0NjEsMTYg
QEAgcHVibGljOgogICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5OwogICAgIHVzaW5nIEJhc2U6OmJ1
ZmZlck1lbW9yeU9mZnNldDsKIAorICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5SW5CeXRlczsKKyAg
ICB1c2luZyBCYXNlOjpzaXplSW5CeXRlczsKKwogICAgIHVzaW5nIEJhc2U6OnJlbGVhc2VCdWZm
ZXI7CiAKIHByb3RlY3RlZDoKICAgICB1c2luZyBCYXNlOjptX3NpemU7CisjaWYgVFJBQ0tfVkVD
VE9SX0NBUEFDSVRZCisgICAgdXNpbmcgQmFzZTo6bV90cmFja2VkSUQ7CisjZW5kaWYKIAogcHJp
dmF0ZToKICAgICB1c2luZyBCYXNlOjptX2J1ZmZlcjsKQEAgLTUxNCw2ICs1NTgsMTAgQEAgcHVi
bGljOgogICAgICAgICAgICAgc3RkOjpzd2FwKG1fYnVmZmVyLCBvdGhlci5tX2J1ZmZlcik7CiAg
ICAgICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3RoZXIubV9jYXBhY2l0eSk7CiAgICAg
ICAgIH0KKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBzdGQ6OnN3YXAobV90
cmFja2VkSUQsIG90aGVyLm1fdHJhY2tlZElEKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQg
cmVzdG9yZUlubGluZUJ1ZmZlcklmTmVlZGVkKCkKQEAgLTU0MCw2ICs1ODgsOCBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgQmFzZTo6YnVmZmVyOwogICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5OwogICAg
IHVzaW5nIEJhc2U6OmJ1ZmZlck1lbW9yeU9mZnNldDsKKyAgICB1c2luZyBCYXNlOjpjYXBhY2l0
eUluQnl0ZXM7CisgICAgdXNpbmcgQmFzZTo6c2l6ZUluQnl0ZXM7CiAKICAgICBNYWxsb2NQdHI8
VD4gcmVsZWFzZUJ1ZmZlcigpCiAgICAgewpAQCAtNTUwLDYgKzYwMCw5IEBAIHB1YmxpYzoKIAog
cHJvdGVjdGVkOgogICAgIHVzaW5nIEJhc2U6Om1fc2l6ZTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQ
QUNJVFkKKyAgICB1c2luZyBCYXNlOjptX3RyYWNrZWRJRDsKKyNlbmRpZgogCiBwcml2YXRlOgog
ICAgIHVzaW5nIEJhc2U6Om1fYnVmZmVyOwpAQCAtNjU4LDYgKzcxMSwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJlc3VsdC5tX3NpemUgPSBzaXplOwogCiAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRJ
bml0aWFsaXplPDA+KHN0ZDo6Zm9yd2FyZDxJdGVtcz4oaXRlbXMpLi4uKTsKKworI2lmIFRSQUNL
X1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENh
cGFjaXR5KHJlc3VsdC5tX3RyYWNrZWRJRCwgcmVzdWx0LnNpemVJbkJ5dGVzKCksIHJlc3VsdC5j
YXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAKQEAgLTY4NSw2ICs3NDIsOSBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGNhcGFjaXR5KCkgY29u
c3QgeyByZXR1cm4gQmFzZTo6Y2FwYWNpdHkoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuICFzaXplKCk7IH0KIAorICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsg
cmV0dXJuIEJhc2U6OnNpemVJbkJ5dGVzKCk7IH0KKyAgICBzaXplX3QgY2FwYWNpdHlJbkJ5dGVz
KCkgY29uc3QgeyByZXR1cm4gQmFzZTo6Y2FwYWNpdHlJbkJ5dGVzKCk7IH0KKwogICAgIFQmIGF0
KHNpemVfdCBpKQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKGkgPj0gc2l6ZSgpKSkKQEAg
LTgwOCw5ICs4NjgsMTcgQEAgcHVibGljOgogCiAgICAgICAgIEJhc2U6OnN3YXAob3RoZXIsIG1f
c2l6ZSwgb3RoZXIubV9zaXplKTsKICAgICAgICAgc3RkOjpzd2FwKG1fc2l6ZSwgb3RoZXIubV9z
aXplKTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgc3RkOjpzd2FwKG1fdHJh
Y2tlZElELCBvdGhlci5tX3RyYWNrZWRJRCk7CisjZW5kaWYKIAogICAgICAgICBhc2FuU2V0SW5p
dGlhbEJ1ZmZlclNpemVUbyhtX3NpemUpOwogICAgICAgICBvdGhlci5hc2FuU2V0SW5pdGlhbEJ1
ZmZlclNpemVUbyhvdGhlci5tX3NpemUpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisg
ICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQs
IHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyAgICAgICAgdmVjdG9yVHJhY2tl
cigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShvdGhlci5tX3RyYWNrZWRJRCwgb3RoZXIuc2l6ZUlu
Qnl0ZXMoKSwgb3RoZXIuY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAg
dm9pZCByZXZlcnNlKCk7CkBAIC04NjAsNiArOTI4LDExIEBAIHByaXZhdGU6CiAgICAgdXNpbmcg
QmFzZTo6cmVhbGxvY2F0ZUJ1ZmZlcjsKICAgICB1c2luZyBCYXNlOjpyZXN0b3JlSW5saW5lQnVm
ZmVySWZOZWVkZWQ7CiAgICAgdXNpbmcgQmFzZTo6cmVsZWFzZUJ1ZmZlcjsKKworI2lmIFRSQUNL
X1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHVzaW5nIEJhc2U6Om1fdHJhY2tlZElEOworI2VuZGlmCisK
ICNpZiBBU0FOX0VOQUJMRUQKICAgICB1c2luZyBCYXNlOjplbmRPZkJ1ZmZlcjsKICNlbmRpZgpA
QCAtODczLDYgKzk0NiwxMCBAQCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHk+OjpWZWN0b3IoY29uc3QgVmVjdG9yJiBvdAogCiAgICAgaWYgKGJl
Z2luKCkpCiAgICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlci5i
ZWdpbigpLCBvdGhlci5lbmQoKSwgYmVnaW4oKSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJ
VFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElE
LCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTg4NCw2ICs5NjEsMTAgQEAgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6VmVjdG9yKGNv
bnN0IFZlY3RvcjxULAogCiAgICAgaWYgKGJlZ2luKCkpCiAgICAgICAgIFR5cGVPcGVyYXRpb25z
Ojp1bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpLCBvdGhlci5lbmQoKSwgYmVnaW4oKSk7
CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3Jk
U2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0
ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAg
LTkwNiw2ICs5ODcsMTAgQEAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRs
ZXIsIG1pbkNhcGFjaXR5PiYgVmVjdG9yPFQsIGlubGluZUNhcGFjaXQKICAgICBUeXBlT3BlcmF0
aW9uczo6dW5pbml0aWFsaXplZENvcHkob3RoZXIuYmVnaW4oKSArIHNpemUoKSwgb3RoZXIuZW5k
KCksIGVuZCgpKTsKICAgICBtX3NpemUgPSBvdGhlci5zaXplKCk7CiAKKyNpZiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1f
dHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKKwog
ICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtOTM0LDYgKzEwMTksMTAgQEAgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXQKICAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0aWFsaXplZENvcHkob3RoZXIu
YmVnaW4oKSArIHNpemUoKSwgb3RoZXIuZW5kKCksIGVuZCgpKTsKICAgICBtX3NpemUgPSBvdGhl
ci5zaXplKCk7CiAKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2Vy
KCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBh
Y2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKKwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtMTAx
NSw2ICsxMTA0LDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXIsIG1pbkNhcGFjaXR5Pjo6ZmlsbChjb25zdCBUJiB2YWwsCiAgICAgc3RkOjpmaWxsKGJl
Z2luKCksIGVuZCgpLCB2YWwpOwogICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkRmls
bChlbmQoKSwgYmVnaW4oKSArIG5ld1NpemUsIHZhbCk7CiAgICAgbV9zaXplID0gbmV3U2l6ZTsK
KworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRT
aXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRl
cygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAt
MTA4Niw2ICsxMTc5LDEwIEBAIGlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwg
T3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJlc2l6ZShzaXplCiAgICAgfQogICAgIAog
ICAgIG1fc2l6ZSA9IHNpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0
b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRl
cygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVf
dCBtaW5DYXBhY2l0eT4KQEAgLTExMDIsNiArMTE5OSwxMCBAQCB2b2lkIFZlY3RvcjxULCBpbmxp
bmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnNocmluayhzaXplX3Qg
c2l6ZQogICAgIFR5cGVPcGVyYXRpb25zOjpkZXN0cnVjdChiZWdpbigpICsgc2l6ZSwgZW5kKCkp
OwogICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKHNpemUpOwogICAgIG1fc2l6ZSA9IHNp
emU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVj
b3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUlu
Qnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4K
QEAgLTExMTQsNiArMTIxNSwxMCBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3Zl
cmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46Omdyb3coc2l6ZV90IHNpemUpCiAgICAgaWYgKGJl
Z2luKCkpCiAgICAgICAgIFR5cGVPcGVyYXRpb25zOjppbml0aWFsaXplSWZOb25QT0QoZW5kKCks
IGJlZ2luKCkgKyBzaXplKTsKICAgICBtX3NpemUgPSBzaXplOworCisjaWYgVFJBQ0tfVkVDVE9S
X0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3Ry
YWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xMTc3LDYgKzEyODIsMTAgQEAg
dm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNp
dHk+OjpyZXNlcnZlQ2FwYWNpdHkoc2kKIAogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlKG9sZEJ1
ZmZlciwgb2xkRW5kLCBiZWdpbigpKTsKICAgICBCYXNlOjpkZWFsbG9jYXRlQnVmZmVyKG9sZEJ1
ZmZlcik7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCku
cmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0
eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0
eT4KQEAgLTExOTksNiArMTMwOCwxMCBAQCBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwg
T3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnRyeVJlc2VydmVDYXBhY2l0eQogCiAgICAg
VHlwZU9wZXJhdGlvbnM6Om1vdmUob2xkQnVmZmVyLCBvbGRFbmQsIGJlZ2luKCkpOwogICAgIEJh
c2U6OmRlYWxsb2NhdGVCdWZmZXIob2xkQnVmZmVyKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBB
Q0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2Vk
SUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xMjA5LDYgKzEzMjIsMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVzZXJ2ZUlu
aXQKICAgICBBU1NFUlQoY2FwYWNpdHkoKSA9PSBpbmxpbmVDYXBhY2l0eSk7CiAgICAgaWYgKGlu
aXRpYWxDYXBhY2l0eSA+IGlubGluZUNhcGFjaXR5KQogICAgICAgICBCYXNlOjphbGxvY2F0ZUJ1
ZmZlcihpbml0aWFsQ2FwYWNpdHkpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAg
dmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUlu
Qnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBz
aXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xMjI3LDYgKzEzNDQsOSBAQCB2b2lkIFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnNocmlua0NhcGFj
aXR5KHNpegogICAgICAgICBpZiAoQmFzZTo6c2hvdWxkUmVhbGxvY2F0ZUJ1ZmZlcihuZXdDYXBh
Y2l0eSkpIHsKICAgICAgICAgICAgIEJhc2U6OnJlYWxsb2NhdGVCdWZmZXIobmV3Q2FwYWNpdHkp
OwogICAgICAgICAgICAgYXNhblNldEluaXRpYWxCdWZmZXJTaXplVG8oc2l6ZSgpKTsKKyNpZiBU
UkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRT
aXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRl
cygpKTsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEyNDAs
NiArMTM2MCwxMCBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyLCBtaW5DYXBhY2l0eT46OnNocmlua0NhcGFjaXR5KHNpegogICAgIEJhc2U6OnJlc3RvcmVJ
bmxpbmVCdWZmZXJJZk5lZWRlZCgpOwogCiAgICAgYXNhblNldEluaXRpYWxCdWZmZXJTaXplVG8o
c2l6ZSgpKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIo
KS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFj
aXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFj
aXR5PgpAQCAtMTI1Nyw2ICsxMzgxLDEwIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjphcHBlCiAgICAg
VCogZGVzdCA9IGVuZCgpOwogICAgIFZlY3RvckNvcGllcjxzdGQ6OmlzX3RyaXZpYWw8VD46OnZh
bHVlLCBVPjo6dW5pbml0aWFsaXplZENvcHkoZGF0YSwgc3RkOjphZGRyZXNzb2YoZGF0YVtkYXRh
U2l6ZV0pLCBkZXN0KTsKICAgICBtX3NpemUgPSBuZXdTaXplOworCisjaWYgVFJBQ0tfVkVDVE9S
X0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3Ry
YWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xMjc2LDYgKzE0MDQsMTAgQEAg
QUxXQVlTX0lOTElORSBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyLCBtaW5DYXBhY2l0eT46OnRyeUEKICAgICBUKiBkZXN0ID0gZW5kKCk7CiAgICAgVmVjdG9y
Q29waWVyPHN0ZDo6aXNfdHJpdmlhbDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRpYWxpemVkQ29weShk
YXRhLCBzdGQ6OmFkZHJlc3NvZihkYXRhW2RhdGFTaXplXSksIGRlc3QpOwogICAgIG1fc2l6ZSA9
IG5ld1NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2Vy
KCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBh
Y2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTI4Nyw2
ICsxNDE5LDkgQEAgQUxXQVlTX0lOTElORSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwg
T3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmFwcGUKICAgICAgICAgYXNhbkJ1ZmZlclNp
emVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAgICAgICAgIG5ldyAoTm90TnVsbCwgZW5kKCkp
IFQoc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7CiAgICAgICAgICsrbV9zaXplOworI2lmIFRSQUNL
X1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENh
cGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7Cisj
ZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTMwMSw2ICsxNDM2LDkgQEAgQUxX
QVlTX0lOTElORSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eT46OmNvbnMKICAgICAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8o
bV9zaXplICsgMSk7CiAgICAgICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKICAgICAgICAgKyttX3NpemU7CisjaWYgVFJBQ0tfVkVDVE9SX0NB
UEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90
cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzE1LDYgKzE0NTMsOSBAQCBBTFdBWVNfSU5MSU5F
IGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFj
aXR5Pjo6dHJ5QwogICAgICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAx
KTsKICAgICAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pOwogICAgICAgICArK21fc2l6ZTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAg
ICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwg
c2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICAKQEAgLTEzMzQsNiArMTQ3NSwxMCBAQCB2b2lkIFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmFwcGVuZFNs
b3dDYXNlKFUmJgogICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEpOwog
ICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJkPFU+KCpwdHIpKTsKICAgICAr
K21fc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIo
KS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFj
aXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFj
aXR5PgpAQCAtMTM0OCw2ICsxNDkzLDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6Y29uc3RydWN0QW5kQXBwZW5kCiAgICAg
YXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAgICAgbmV3IChOb3ROdWxs
LCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgICsrbV9zaXplOwor
CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNp
emVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVz
KCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0x
MzYzLDYgKzE1MTIsMTAgQEAgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojp0cnlDb25zdHJ1Y3RBbmRBcHAKICAgICBhc2FuQnVmZmVy
U2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBU
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgICAgKyttX3NpemU7CisKKyNpZiBUUkFD
S19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFj
aXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5k
aWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTM3OSw2ICsxNTMyLDEwIEBAIEFMV0FZU19J
TkxJTkUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWlu
Q2FwYWNpdHk+Ojp1bmNoCiAKICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2Fy
ZDxVPih2YWx1ZSkpOwogICAgICsrbV9zaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZ
CisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwg
c2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5k
bGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xNDA1LDYgKzE1NjIsMTAgQEAgdm9pZCBWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjppbnNl
cnQoc2l6ZV90IHBvc2kKICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKHNwb3Qs
IGVuZCgpLCBzcG90ICsgZGF0YVNpemUpOwogICAgIFZlY3RvckNvcGllcjxzdGQ6OmlzX3RyaXZp
YWw8VD46OnZhbHVlLCBVPjo6dW5pbml0aWFsaXplZENvcHkoZGF0YSwgc3RkOjphZGRyZXNzb2Yo
ZGF0YVtkYXRhU2l6ZV0pLCBzcG90KTsKICAgICBtX3NpemUgPSBuZXdTaXplOworCisjaWYgVFJB
Q0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBh
Y2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2Vu
ZGlmCiB9CiAgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTQyNSw2ICsx
NTg2LDEwIEBAIGlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyLCBtaW5DYXBhY2l0eT46Omluc2VydChzaXplCiAgICAgVHlwZU9wZXJhdGlvbnM6Om1v
dmVPdmVybGFwcGluZyhzcG90LCBlbmQoKSwgc3BvdCArIDEpOwogICAgIG5ldyAoTm90TnVsbCwg
c3BvdCkgVChzdGQ6OmZvcndhcmQ8VT4oKnB0cikpOwogICAgICsrbV9zaXplOworCisjaWYgVFJB
Q0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBh
Y2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2Vu
ZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlw
ZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xNDQzLDYgKzE2
MDgsMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVtb3ZlKHNpemUKICAgICBUeXBlT3BlcmF0aW9uczo6bW92
ZU92ZXJsYXBwaW5nKHNwb3QgKyAxLCBlbmQoKSwgc3BvdCk7CiAgICAgYXNhbkJ1ZmZlclNpemVX
aWxsQ2hhbmdlVG8obV9zaXplIC0gMSk7CiAgICAgLS1tX3NpemU7CisKKyNpZiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1f
dHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBP
dmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTE0NTYsNiArMTYyNSwxMCBA
QCBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwg
bWluQ2FwYWNpdHk+OjpyZW1vdmUoc2l6ZQogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3Zlcmxh
cHBpbmcoZW5kU3BvdCwgZW5kKCksIGJlZ2luU3BvdCk7CiAgICAgYXNhbkJ1ZmZlclNpemVXaWxs
Q2hhbmdlVG8obV9zaXplIC0gbGVuZ3RoKTsKICAgICBtX3NpemUgLT0gbGVuZ3RoOworCisjaWYg
VFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRD
YXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOwor
I2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwg
dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xNTEzLDYg
KzE2ODYsMTAgQEAgaW5saW5lIHVuc2lnbmVkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3Zl
cmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJlbW92ZUEKICAgICAgICAgVHlwZU9wZXJhdGlv
bnM6Om1vdmVPdmVybGFwcGluZyhob2xlRW5kLCBlbmQoKSwgaG9sZUJlZ2luKTsKICAgICBhc2Fu
QnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgLSBtYXRjaENvdW50KTsKICAgICBtX3NpemUg
LT0gbWF0Y2hDb3VudDsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRy
YWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCks
IGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIHJldHVybiBtYXRjaENvdW50OwogfQog
CkBAIC0xNTUzLDYgKzE3MzAsMTAgQEAgaW5saW5lIE1hbGxvY1B0cjxUPiBWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpyZWwKICAgICB9CiAg
ICAgbV9zaXplID0gMDsKICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNhbGwgQmFzZTo6cmVzdG9y
ZUlubGluZUJ1ZmZlcklmTmVlZGVkKCkgaGVyZT8KKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lU
WQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQs
IHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIHJldHVybiBi
dWZmZXI7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342862</attachid>
            <date>2018-06-15 17:52:43 -0700</date>
            <delta_ts>2018-06-16 12:09:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186698-20180615175242.patch</filename>
            <type>text/plain</type>
            <size>44387</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRmMWMzMTZhNzkwZTAwYmExODRkOWVm
NjYwMjE1ZmQ2NDk0ZDRlMDQuLmEyZjExMDZmODc0MmY5NWJkYzJmOGFkZmRkOTlkNjZjOGQ2NzQz
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTgtMDYtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0cmFjayBj
YWxsIHNpdGVzIHRoYXQgd2FzdGUgVmVjdG9yIGNhcGFjaXR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY2OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZCBDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIgd2hpY2ggY2FuIGFnZ3JlZ2F0ZSBkYXRhIG9uIGEgcGVyLWNhbGwgc2l0ZSBiYXNp
cyAoYnkgdGFraW5nCisgICAgICAgIGEgc3RhY2tzaG90IE4gZnJhbWVzIGRlZXAsIGFuZCBoYXNo
aW5nIGl0KSwgYW5kIGlzIGluZm9ybWVkIGFib3V0IGFsbG9jYXRpb25zLCBzaXplIGFuZCAKKyAg
ICAgICAgY2FwYWNpdHkgY2hhbmdlcywgYW5kIGZyZWVzIG9mIGNvbnRhaW5lciB0eXBlcyAoZS5n
LiBWZWN0b3IgYW5kIEhhc2hNYXApLgorICAgICAgICAKKyAgICAgICAgV2hlbiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkgaXMgZGVmaW5lZCBpbiBWZWN0b3IuaCwgYSBzaW5nbGV0b24gQ29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyCisgICAgICAgIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiBhbGwgVmVj
dG9ycyBhbmQgdGhlaXIgc2l6ZSBhbmQgY2FwYWNpdHkgY2hhbmdlcy4gVmVjdG9yIGdhaW5zCisg
ICAgICAgIGFuIG1fdHJhY2tlZElEIG1lbWJlciB2YXJpYWJsZSB0byBhbGxvdyB0cmFja2luZyAo
VmVjdG9ycyBjYW4gYmUgV1RGTW92ZWQgYW5kIHN0ZDo6c3dhcHBlZCwKKyAgICAgICAgc28gd2Ug
Y2FuJ3QgcmVseSBvbiB0aGVpciBhZGRyZXNzIHRvIHRyYWNrIHRoZW0pLgorICAgICAgICAKKyAg
ICAgICAgRGF0YSBhYm91dCBsaXZlIFZlY3RvcnMgY2FuIHRoZW4gYmUgZHVtcGVkIHdpdGggIm5v
dGlmeXV0aWwgLXAgY29tLmFwcGxlLldlYktpdC5kdW1wVmVjdG9yQ2FwYWNpdHkiLAorICAgICAg
ICB2aWEgY29kZSBpbiBWZWN0b3IuY3BwLgorICAgICAgICAKKyAgICAgICAgQ29udGFpbmVyQ2Fw
YWNpdHlUcmFja2VyIHRha2VzIGNhcmUgdG8gYXZvaWQgcmUtZW50cmFuY3kgKGFsbG93IGl0IHRv
IHVzZSB0aGUgY29udGFpbmVyIHR5cGVzKQorICAgICAgICB3aGlsZSBiZWluZyBjYWxsYWJsZSBm
cm9tIGRpZmZlcmVudCB0aHJlYWRzLgorICAgICAgICAKKyAgICAgICAgKiBXVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAqIHd0
Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaDogQWRkZWQuCisgICAgICAgICogd3RmL1NpemVM
aW1pdHMuY3BwOgorICAgICAgICAqIHd0Zi9TdGFja1Nob3QuaDoKKyAgICAgICAgKiB3dGYvVmVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OmR1bXBXYXN0ZWRWZWN0b3JDYXBhY2l0eSk6
CisgICAgICAgIChXVEY6OnZlY3RvclRyYWNrZXIpOgorICAgICAgICAqIHd0Zi9WZWN0b3IuaDoK
KyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6Y2FwYWNpdHlJbkJ5dGVzIGNvbnN0KToK
KyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6c2l6ZUluQnl0ZXMgY29uc3QpOgorICAg
ICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjpWZWN0b3JCdWZmZXJCYXNlKToKKyAgICAgICAg
KFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6flZlY3RvckJ1ZmZlckJhc2UpOgorICAgICAgICAoV1RG
OjpWZWN0b3JCdWZmZXI6OnN3YXApOgorICAgICAgICAoV1RGOjpWZWN0b3I6OmZyb20pOgorICAg
ICAgICAoV1RGOjpWZWN0b3I6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdURjo6VmVj
dG9yOjpjYXBhY2l0eUluQnl0ZXMgY29uc3QpOgorICAgICAgICAoV1RGOjpWZWN0b3I6OnN3YXAp
OgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OlZlY3Rvcik6CisgICAgICAgIChXVEY6Oj0p
OgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmZpbGwpOgorICAgICAgICAoV1RGOjptaW5D
YXBhY2l0eT46OnJlc2l6ZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6c2hyaW5rKToK
KyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojpncm93KToKKyAgICAgICAgKFdURjo6bWluQ2Fw
YWNpdHk+OjpyZXNlcnZlQ2FwYWNpdHkpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnRy
eVJlc2VydmVDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6c2hyaW5rQ2FwYWNp
dHkpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmFwcGVuZCk6CisgICAgICAgIChXVEY6
Om1pbkNhcGFjaXR5Pjo6dHJ5QXBwZW5kKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojpj
b25zdHJ1Y3RBbmRBcHBlbmQpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnRyeUNvbnN0
cnVjdEFuZEFwcGVuZCk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6YXBwZW5kU2xvd0Nh
c2UpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmNvbnN0cnVjdEFuZEFwcGVuZFNsb3dD
YXNlKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojp0cnlDb25zdHJ1Y3RBbmRBcHBlbmRT
bG93Q2FzZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6dW5jaGVja2VkQXBwZW5kKToK
KyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+OjppbnNlcnQpOgorICAgICAgICAoV1RGOjptaW5D
YXBhY2l0eT46OnJlbW92ZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVtb3ZlQWxs
TWF0Y2hpbmcpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnJlbGVhc2VCdWZmZXIpOgor
CiAyMDE4LTA2LTEzICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEF1dG9tYXRpY1RocmVhZCBzaG91bGQgaGF2ZSBhIHdheSB0byBwcm92aWRlIGEgdGhy
ZWFkIG5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVm
MWIzM2I3ZmUwNzgyZjFkODc0MDU5OTNmNmY0MTA2YjEwNjZlMjAuLjE5NWIwN2E2NTM3YjRmYjFm
N2Y0ZmRiZWZkM2E2ZGVkOTNiZGY5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjQsNiArMjQsNyBAQAogCQkwRjMwQkE5MDFFNzg3MDhFMDAyQ0E4NDcg
LyogR2xvYmFsVmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjMwQkE4QTFFNzg3MDhFMDAyQ0E4NDcgLyogR2xvYmFsVmVyc2lvbi5jcHAg
Ki87IH07CiAJCTBGMzBDQjVBMUZDREYxMzQwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNl
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMw
Q0I1ODFGQ0RGMTMzMDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwICovOyB9Owog
CQkwRjQzRDhGMTFEQjVBRERDMDAxMDhGQjYgLyogQXV0b21hdGljVGhyZWFkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDNEOEVGMURCNUFEREMw
MDEwOEZCNiAvKiBBdXRvbWF0aWNUaHJlYWQuY3BwICovOyB9OworCQkwRjVCNERGQTIwRDBERTE4
MDBENkY1MTAgLyogQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUI0REY5MjBEMERFMTcwMEQ2RjUxMCAv
KiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwICovOyB9OwogCQkwRjVCRjE3NjFGMjNENDlB
MDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1QkYxNzQxRjIzRDQ5QTAwMjlEOTFEIC8qIEdpZ2FjYWdlLmNwcCAq
LzsgfTsKIAkJMEY2MEYzMkYxREZDQkQxQjAwNDE2RDZDIC8qIExvY2tlZFByaW50U3RyZWFtLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjBGMzJE
MURGQ0JEMUIwMDQxNkQ2QyAvKiBMb2NrZWRQcmludFN0cmVhbS5jcHAgKi87IH07CiAJCTBGNjZC
MjhBMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NkIyODAxREM5N0JBQjAwNEExRDNGIC8qIENs
b2NrVHlwZS5jcHAgKi87IH07CkBAIC0zOCw2ICszOSw3IEBACiAJCTBGOEYyQjkyMTcyRTAxMDMw
MDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGMkI4RjE3MkUwMEYwMDA3REJEQTUgLyogQ29tcGls
YXRpb25UaHJlYWQuY3BwICovOyB9OwogCQkwRjlEMzM2MDE2NURCQTczMDA1QUQzODcgLyogRmls
ZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOUQzMzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwICov
OyB9OwogCQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUQxNjVEQkE3
MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCAqLzsgfTsKKwkJMEZENzNDQkIyMEQ0NzU4NDAw
RkM3QTI5IC8qIFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkQ3M0NCQTIwRDQ3NTgzMDBGQzdBMjkgLyogVmVjdG9yLmNwcCAqLzsgfTsK
IAkJMEZEREJGQTcxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRERCRkE1MTY2NkRG
QTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5jcHAgKi87IH07CiAJCTBGRTE2NDZBMUI2
RkZDOTYwMDQwMEU3QyAvKiBMb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRTE2NDY4MUI2RkZDOTYwMDQwMEU3QyAvKiBMb2NrLmNwcCAqLzsg
fTsKIAkJMEZFNDQ3OUMxQjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTQ0NzlBMUI3QUFBMDMwMDk0
OThFQiAvKiBXb3JkTG9jay5jcHAgKi87IH07CkBAIC0yMDAsNiArMjAyLDggQEAKIAkJMEY0NTcw
NDIxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRG9taW5hdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjQ1NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCdWJibGVTb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNEQ4QzcxMUZDMUU3Q0UwMDFEMzJBQyAvKiBTaW5nbHlMaW5rZWRMaXN0V2l0aFRhaWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2luZ2x5TGlua2VkTGlzdFdpdGhU
YWlsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNUI0REY4MjBEMERFMTcwMEQ2
RjUxMCAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNUI0REY5MjBEMERFMTcwMEQ2RjUxMCAvKiBDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGFp
bmVyQ2FwYWNpdHlUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1
QkYxNjUxRjIzMTc4MzAwMjlEOTFEIC8qIE5hdHVyYWxMb29wcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
YXR1cmFsTG9vcHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QkYxNzQxRjIz
RDQ5QTAwMjlEOTFEIC8qIEdpZ2FjYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdpZ2FjYWdl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QkYxNzUxRjIzRDQ5QTAwMjlE
OTFEIC8qIEdpZ2FjYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdpZ2FjYWdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNDYsNiArMjUwLDcgQEAKIAkJMEZCNDY3ODMxRkRFMjgyQzAw
M0ZDQjA5IC8qIENvbmN1cnJlbnRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29uY3VycmVudFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkM0NDg4MjE2RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkM0RURFNTE2OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQcmludGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hUHJpbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRkQ3M0NCQTIwRDQ3NTgzMDBGQzdBMjkgLyogVmVjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RCaXRWZWN0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEQjY5OEQxQjdDNjQzQTAwMEMxMDc4IC8qIENv
bmRpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25kaXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEREJGQTUxNjY2REZBMzAwQzU1RkVGIC8q
IFN0cmluZ1ByaW50U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN0cmluZ1ByaW50U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTg0NCw2ICs4NDksOCBAQAogCQkJCTBGMzBDQjU5MUZDREYxMzMwMDRCNTMyMyAvKiBDb25jdXJy
ZW50UHRySGFzaFNldC5oICovLAogCQkJCTBGQjQ2NzgzMUZERTI4MkMwMDNGQ0IwOSAvKiBDb25j
dXJyZW50VmVjdG9yLmggKi8sCiAJCQkJMEZEQjY5OEQxQjdDNjQzQTAwMEMxMDc4IC8qIENvbmRp
dGlvbi5oICovLAorCQkJCTBGNUI0REY5MjBEMERFMTcwMEQ2RjUxMCAvKiBDb250YWluZXJDYXBh
Y2l0eVRyYWNrZXIuY3BwICovLAorCQkJCTBGNUI0REY4MjBEMERFMTcwMEQ2RjUxMCAvKiBDb250
YWluZXJDYXBhY2l0eVRyYWNrZXIuaCAqLywKIAkJCQkwRjhFODVEQTFGRDQ4NUIwMDA2OTE4ODkg
LyogQ291bnRpbmdMb2NrLmNwcCAqLywKIAkJCQkwRkZCQ0JGQTFGRDM3RTBGMDA3MkFBRjAgLyog
Q291bnRpbmdMb2NrLmggKi8sCiAJCQkJRTM4QzQxMjYxRUI0RTA2ODAwNDI5NTdEIC8qIENQVVRp
bWUuY3BwICovLApAQCAtMTExOCw2ICsxMTI1LDcgQEAKIAkJCQk3QUZFQzZBRTFFQjIyQUM2MDBE
QURFMzYgLyogVVVJRC5oICovLAogCQkJCUE4QTQ3MzZGMTUxQTgyNUIwMDQxMjNGRiAvKiBWYWx1
ZUNoZWNrLmggKi8sCiAJCQkJN0NEMEQ1QTcxRDU1MzIyQTAwMENDOUUxIC8qIFZhcmlhbnQuaCAq
LywKKwkJCQkwRkQ3M0NCQTIwRDQ3NTgzMDBGQzdBMjkgLyogVmVjdG9yLmNwcCAqLywKIAkJCQlB
OEE0NzM3MDE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yLmggKi8sCiAJCQkJQThBNDczNzExNTFB
ODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oICovLAogCQkJCUE4QTQ3MzcyMTUxQTgyNUIw
MDQxMjNGRiAvKiBWTVRhZ3MuaCAqLywKQEAgLTE0NjEsNiArMTQ2OSw3IEBACiAJCQkJQThBNDc0
NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGOEYyQjkyMTcyRTAxMDMwMDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjMwQ0I1QTFGQ0RGMTM0MDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhh
c2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY1QjRERkEyMEQwREUxODAwRDZGNTEwIC8q
IENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhFODVE
QjFGRDQ4NUIwMDA2OTE4ODkgLyogQ291bnRpbmdMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUzOEM0MTI4MUVCNEUwNjgwMDQyOTU3RCAvKiBDUFVUaW1lLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUzOEM0MTI1MUVCNEUwNEMwMDQyOTU3RCAvKiBDUFVUaW1lQ29jb2EubW0gaW4gU291cmNl
cyAqLywKQEAgLTE1NjQsNiArMTU3Myw3IEBACiAJCQkJMUMxODFDOTMxRDMwN0FCODAwRjVGQTE2
IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2OTE1
MUE4MjVCMDA0MTIzRkYgLyogVVRGOC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUZFQzZCMTFF
QjIyQjU5MDBEQURFMzYgLyogVVVJRC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkQ3M0NCQjIw
RDQ3NTg0MDBGQzdBMjkgLyogVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjZCMjky
MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxRkE0
N0M4QTE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVhZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkU0NDc5QzFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDBmOWY0ZTFmMmRhMTZjMzEyYzBkZDUyZDhkYmU5
NTNiNTU0ZDM0NGQuLjNkYzdhZmZkNjEwNmIxYzg4OTYxZDJmZDMxMDQ1ZmY2ZGM2ZmEyNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CkBAIC0zNSw2ICszNSw3IEBAIHNldChXVEZfUFVCTElDX0hFQURF
UlMKICAgICBDb25jdXJyZW50UHRySGFzaFNldC5oCiAgICAgQ29uY3VycmVudFZlY3Rvci5oCiAg
ICAgQ29uZGl0aW9uLmgKKyAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaAogICAgIENvdW50
aW5nTG9jay5oCiAgICAgQ3Jvc3NUaHJlYWRDb3BpZXIuaAogICAgIENyb3NzVGhyZWFkUXVldWUu
aApAQCAtMzMxLDYgKzMzMiw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIENsb2NrVHlwZS5jcHAK
ICAgICBDb21waWxhdGlvblRocmVhZC5jcHAKICAgICBDb25jdXJyZW50UHRySGFzaFNldC5jcHAK
KyAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwCiAgICAgQ291bnRpbmdMb2NrLmNwcAog
ICAgIENyb3NzVGhyZWFkQ29waWVyLmNwcAogICAgIENyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3Bw
CkBAIC0zODcsNiArMzg5LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgVGltZVdpdGhEeW5hbWlj
Q2xvY2tUeXBlLmNwcAogICAgIFRpbWluZ1Njb3BlLmNwcAogICAgIFVVSUQuY3BwCisgICAgVmVj
dG9yLmNwcAogICAgIFdURkFzc2VydGlvbnMuY3BwCiAgICAgV2FsbFRpbWUuY3BwCiAgICAgV29y
ZExvY2suY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0eVRy
YWNrZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42MTE4MzkxYzcxM2M2OWVmNDYxZGMzY2I0NDRjNDQ3OGU5ZDBhNmY1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNw
cApAQCAtMCwwICsxLDE5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1N0
YWNrU2hvdC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworQWxsb2NhdGlvbkNhbGxTaXRlRGF0YTo6
QWxsb2NhdGlvbkNhbGxTaXRlRGF0YShzaXplX3Qgc3RhY2tEZXB0aCwgc2l6ZV90IGluVXNlZFNp
emUsIHNpemVfdCBpbkNhcGFjaXR5KQorICAgIDogdXNlZFNpemUoaW5Vc2VkU2l6ZSkKKyAgICAs
IGNhcGFjaXR5KGluQ2FwYWNpdHkpCisgICAgLCBtX3N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8U3Rh
Y2tTaG90PihzdGFja0RlcHRoKSkKK3sKK30KKworQWxsb2NhdGlvbkNhbGxTaXRlRGF0YTo6QWxs
b2NhdGlvbkNhbGxTaXRlRGF0YShjb25zdCBTdGFja1Nob3QmIHN0YWNrKQorICAgIDogbV9zdGFj
ayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hvdD4oc3RhY2spKQoreworfQorCitBbGxvY2F0aW9u
Q2FsbFNpdGVEYXRhOjpBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKGNvbnN0IEFsbG9jYXRpb25DYWxs
U2l0ZURhdGEmIG90aGVyKQorICAgIDogY291bnQob3RoZXIuY291bnQpCisgICAgLCB1c2VkU2l6
ZShvdGhlci51c2VkU2l6ZSkKKyAgICAsIGNhcGFjaXR5KG90aGVyLmNhcGFjaXR5KQorICAgICwg
bV9zdGFjayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hvdD4ob3RoZXIuc3RhY2soKSkpCit7Cit9
CisKK0FsbG9jYXRpb25DYWxsU2l0ZURhdGE6On5BbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKCkgPSBk
ZWZhdWx0OworCitjb25zdCBTdGFja1Nob3QmIEFsbG9jYXRpb25DYWxsU2l0ZURhdGE6OnN0YWNr
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gKm1fc3RhY2s7Cit9CisKK3N0cnVjdCBDb250YWluZXJB
bGxvY2F0aW9uRGF0YSB7CisgICAgQ29udGFpbmVyQWxsb2NhdGlvbkRhdGEoc2l6ZV90IHN0YWNr
U2hvdFNpemUsIHNpemVfdCBpblNpemUsIHNpemVfdCBpbkNhcGFjaXR5KQorICAgICAgICA6IGFs
bG9jYXRpb25TdGFjayhzdGFja1Nob3RTaXplKQorICAgICAgICAsIHNpemUoaW5TaXplKQorICAg
ICAgICAsIGNhcGFjaXR5KGluQ2FwYWNpdHkpCisgICAgeworICAgIAorICAgIH0KKyAgICBTdGFj
a1Nob3QgYWxsb2NhdGlvblN0YWNrOworICAgIHNpemVfdCBzaXplOworICAgIHNpemVfdCBjYXBh
Y2l0eTsKK307CisKK3N0cnVjdCBDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OkNvbnRhaW5lckNh
cGFjaXR5VHJhY2tlckltcGwgeworICAgIEhhc2hNYXA8VHJhY2tlZElELCBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGFpbmVyQWxsb2NhdGlvbkRhdGE+PiBtX3RyYWNrZWRJRFRvQ29udGFpbmVyRGF0YTsK
KyAgICBib29sKiBtX2F2b2lkUmVlbnRyYW5jeSB7IG51bGxwdHIgfTsKK307CisKKy8vIFRvIHBy
ZXZlbnQgcGVyLXRocmVhZCByZS1lbnRyYW5jeSB3ZSB0YWtlIGEgcG9pbnRlciB0byBhbiBvYmpl
Y3Qgb24gdGhlIHN0YWNrLCBpbnNpZGUgbV9tdXRleCBsb2NrIHNjb3BlLgorY2xhc3MgQXZvaWRS
ZWNvcmRpbmdTY29wZSB7CitwdWJsaWM6CisgICAgQXZvaWRSZWNvcmRpbmdTY29wZShDb250YWlu
ZXJDYXBhY2l0eVRyYWNrZXI6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGwmIGltcGwsIGJv
b2wqIHN0YWNrT2JqZWN0KQorICAgICAgICA6IG1faW1wbChpbXBsKQorICAgIHsKKyAgICAgICAg
bV9pbXBsLm1fYXZvaWRSZWVudHJhbmN5ID0gc3RhY2tPYmplY3Q7CisgICAgfQorCisgICAgfkF2
b2lkUmVjb3JkaW5nU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9pbXBsLm1fYXZvaWRSZWVudHJh
bmN5ID0gbnVsbHB0cjsKKyAgICB9Citwcml2YXRlOgorICAgIENvbnRhaW5lckNhcGFjaXR5VHJh
Y2tlcjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VySW1wbCYgbV9pbXBsOworfTsKKworQ29udGFp
bmVyQ2FwYWNpdHlUcmFja2VyOjpDb250YWluZXJDYXBhY2l0eVRyYWNrZXIoc2l6ZV90IGFnZ3Jl
Z2F0aW9uU3RhY2tEZXB0aCkKKyAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5l
ckNhcGFjaXR5VHJhY2tlckltcGw+KCkpCisgICAgLCBtX2FnZ3JlZ2F0aW9uU3RhY2tEZXB0aChh
Z2dyZWdhdGlvblN0YWNrRGVwdGgpCit7Cit9CisKK1RyYWNrZWRJRCBDb250YWluZXJDYXBhY2l0
eVRyYWNrZXI6OnJlY29yZEFsbG9jYXRpb24oc2l6ZV90IHNpemUsIHNpemVfdCBjYXBhY2l0eSkK
K3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjpyZWN1cnNpdmVfbXV0ZXg+IGxvY2tIb2xkZXIo
bV9tdXRleCk7CisKKyAgICBpZiAobV9pbXBsLT5tX2F2b2lkUmVlbnRyYW5jeSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBib29sIGF2b2lkUmVlbnRyYW5jeSA9IHRydWU7CisgICAgQXZvaWRS
ZWNvcmRpbmdTY29wZSBzY29wZSgqbV9pbXBsLCAmYXZvaWRSZWVudHJhbmN5KTsKKworICAgIFRy
YWNrZWRJRCBvYmplY3RJRCA9ICsrbV9uZXh0SUQ7CisKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
aW1wbC0+bV90cmFja2VkSURUb0NvbnRhaW5lckRhdGEuYWRkKG9iamVjdElELCBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnRhaW5lckFsbG9jYXRpb25EYXRhPihtX2FnZ3JlZ2F0aW9uU3RhY2tEZXB0aCwg
c2l6ZSwgY2FwYWNpdHkpKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpyZWNvcmRBbGxvY2F0
aW9uIHNhdyBvYmplY3QgJXUgZm9yIHRoZSBzZWNvbmQgdGltZSIsIG9iamVjdElEKTsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJXYXMgcHJldmlvdXNseSBhbGxvY2F0ZWQgYXQ6Iik7CisgICAgICAg
IGF1dG8mIGNhbGxTaXRlRGF0YSA9ICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAg
ICBjb25zdCBzaXplX3QgZnJhbWVzVG9Ta2lwID0gMDsKKyAgICAgICAgV1RGUHJpbnRCYWNrdHJh
Y2UoY2FsbFNpdGVEYXRhLmFsbG9jYXRpb25TdGFjay5hcnJheSgpICsgZnJhbWVzVG9Ta2lwLCBj
YWxsU2l0ZURhdGEuYWxsb2NhdGlvblN0YWNrLnNpemUoKSAtIGZyYW1lc1RvU2tpcCk7CisgICAg
fQorCisgICAgcmV0dXJuIG9iamVjdElEOworfQorCit2b2lkIENvbnRhaW5lckNhcGFjaXR5VHJh
Y2tlcjo6cmVjb3JkU2l6ZUFuZENhcGFjaXR5KFRyYWNrZWRJRCBvYmplY3RJRCwgc2l6ZV90IHNp
emUsIHNpemVfdCBjYXBhY2l0eSkKK3sKKyAgICBBU1NFUlQoc2l6ZSA8PSBjYXBhY2l0eSk7CisK
KyAgICBpZiAoIW9iamVjdElEKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8c3RkOjpyZWN1cnNpdmVfbXV0ZXg+IGxvY2tIb2xkZXIobV9tdXRleCk7CisKKyAgICBpZiAo
bV9pbXBsLT5tX2F2b2lkUmVlbnRyYW5jeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBh
dm9pZFJlZW50cmFuY3kgPSB0cnVlOworICAgIEF2b2lkUmVjb3JkaW5nU2NvcGUgc2NvcGUoKm1f
aW1wbCwgJmF2b2lkUmVlbnRyYW5jeSk7CisKKyAgICBhdXRvIGl0ID0gbV9pbXBsLT5tX3RyYWNr
ZWRJRFRvQ29udGFpbmVyRGF0YS5maW5kKG9iamVjdElEKTsKKyAgICBpZiAoaXQgIT0gbV9pbXBs
LT5tX3RyYWNrZWRJRFRvQ29udGFpbmVyRGF0YS5lbmQoKSkgeworICAgICAgICBpdC0+dmFsdWUt
PnNpemUgPSBzaXplOworICAgICAgICBpdC0+dmFsdWUtPmNhcGFjaXR5ID0gY2FwYWNpdHk7Cisg
ICAgfSBlbHNlCisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGFpbmVyQ2FwYWNpdHlUcmFja2Vy
ICVwIHJlY29yZFNpemVBbmRDYXBhY2l0eSBmYWlsZWQgdG8gZmluZCBvYmplY3QgJXUiLCB0aGlz
LCBvYmplY3RJRCk7Cit9CisKK3ZvaWQgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpyZWNvcmRG
cmVlKFRyYWNrZWRJRCBvYmplY3RJRCkKK3sKKyAgICBpZiAoIW9iamVjdElEKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjpyZWN1cnNpdmVfbXV0ZXg+IGxvY2tI
b2xkZXIobV9tdXRleCk7CisKKyAgICBpZiAobV9pbXBsLT5tX2F2b2lkUmVlbnRyYW5jeSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYm9vbCBhdm9pZFJlZW50cmFuY3kgPSB0cnVlOworICAgIEF2
b2lkUmVjb3JkaW5nU2NvcGUgc2NvcGUoKm1faW1wbCwgJmF2b2lkUmVlbnRyYW5jeSk7CisKKyAg
ICBib29sIHJlbW92ZWQgPSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJEYXRhLnJlbW92
ZShvYmplY3RJRCk7CisgICAgaWYgKCFyZW1vdmVkKQorICAgICAgICBXVEZMb2dBbHdheXMoIkNv
bnRhaW5lckNhcGFjaXR5VHJhY2tlcjo6cmVjb3JkRnJlZSBnb3QgaWQgJXUgZm9yIHdoaWNoIHRo
ZXJlIGlzIG5vIGVudHJ5Iiwgb2JqZWN0SUQpOworfQorCitzdGQ6OnZlY3RvcjxBbGxvY2F0aW9u
Q2FsbFNpdGVEYXRhPiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OmFnZ3JlZ2F0ZUJ5Q2FsbFNp
dGUoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFRyYWNrZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRl
RGF0YSYpPiYgcGVyT2JqZWN0Q2FsbGJhY2spCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6
cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1fbXV0ZXgpOworCisgICAgYm9vbCBhdm9pZFJl
ZW50cmFuY3kgPSB0cnVlOworICAgIEF2b2lkUmVjb3JkaW5nU2NvcGUgc2NvcGUoKm1faW1wbCwg
JmF2b2lkUmVlbnRyYW5jeSk7CisKKyAgICB0eXBlZGVmIHVuc2lnbmVkIFN0YWNrU2hvdEhhc2g7
CisgICAgSGFzaE1hcDxTdGFja1Nob3RIYXNoLCBzdGQ6OnVuaXF1ZV9wdHI8QWxsb2NhdGlvbkNh
bGxTaXRlRGF0YT4+IGNhbGxTaXRlVG9BbGxvY2F0aW9uQWdncmVnYXRlOworCisgICAgZm9yIChj
b25zdCBhdXRvJiBpdCA6IG1faW1wbC0+bV90cmFja2VkSURUb0NvbnRhaW5lckRhdGEpIHsKKyAg
ICAgICAgY29uc3QgQ29udGFpbmVyQWxsb2NhdGlvbkRhdGEmIGFsbG9jYXRpb25EYXRhID0gKml0
LnZhbHVlOworCisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gY2FsbFNpdGVUb0FsbG9jYXRpb25B
Z2dyZWdhdGUuZW5zdXJlKGFsbG9jYXRpb25EYXRhLmFsbG9jYXRpb25TdGFjay5oYXNoKCksIFsm
XSAoKSB7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBbGxvY2F0aW9uQ2Fs
bFNpdGVEYXRhPihhbGxvY2F0aW9uRGF0YS5hbGxvY2F0aW9uU3RhY2spOworICAgICAgICB9KTsK
KworICAgICAgICBhdXRvJiBjYWxsU2l0ZURhdGEgPSAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZTsKKyAgICAgICAgKytjYWxsU2l0ZURhdGEuY291bnQ7CisgICAgICAgIGNhbGxTaXRlRGF0YS51
c2VkU2l6ZSArPSBhbGxvY2F0aW9uRGF0YS5zaXplOworICAgICAgICBjYWxsU2l0ZURhdGEuY2Fw
YWNpdHkgKz0gYWxsb2NhdGlvbkRhdGEuY2FwYWNpdHk7CisKKyAgICAgICAgcGVyT2JqZWN0Q2Fs
bGJhY2soaXQua2V5LCBjYWxsU2l0ZURhdGEpOworICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPEFs
bG9jYXRpb25DYWxsU2l0ZURhdGE+IHJlc3VsdDsKKyAgICBmb3IgKGF1dG8mIGl0IDogY2FsbFNp
dGVUb0FsbG9jYXRpb25BZ2dyZWdhdGUpCisgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soQWxsb2Nh
dGlvbkNhbGxTaXRlRGF0YSgqaXQudmFsdWUpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNr
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iY2I0ZTI5MTlhMTEyOWQyYTRiZTM2MGVkNWYxZWJlZTA3YjA3Yjkw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFj
a2VyLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV1RGX0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlcl9oCisjZGVm
aW5lIFdURl9Db250YWluZXJDYXBhY2l0eVRyYWNrZXJfaAorCisjaW5jbHVkZSA8bWVtb3J5Pgor
I2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3Mg
U3RhY2tTaG90OworCitzdHJ1Y3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSB7CisgICAgQWxsb2Nh
dGlvbkNhbGxTaXRlRGF0YShzaXplX3Qgc3RhY2tEZXB0aCA9IDAsIHNpemVfdCBzaXplID0gMCwg
c2l6ZV90IGNhcGFjaXR5ID0gMCk7CisgICAgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YShjb25zdCBT
dGFja1Nob3QmKTsKKyAgICBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKGNvbnN0IEFsbG9jYXRpb25D
YWxsU2l0ZURhdGEmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkFsbG9jYXRpb25DYWxsU2l0
ZURhdGEoKTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBjb25zdCBTdGFja1Nob3QmIHN0YWNr
KCkgY29uc3Q7CisKKyAgICBzaXplX3QgY291bnQgeyAwIH07CisgICAgc2l6ZV90IHVzZWRTaXpl
IHsgMCB9OworICAgIHNpemVfdCBjYXBhY2l0eSB7IDAgfTsKKworcHJpdmF0ZToKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U3RhY2tTaG90PiBtX3N0YWNrOyAvLyBOZWVkZWQgdG8gaGlkZSBTdGFja1No
b3QgdG8gYXZvaWQgY2lyY3VsYXIgaW5jbHVkZXMuCit9OworCit0eXBlZGVmIHVuc2lnbmVkIFRy
YWNrZWRJRDsKKworY2xhc3MgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShDb250YWluZXJDYXBhY2l0eVRyYWNrZXIpOworICAgIGZyaWVuZCBjbGFz
cyBBdm9pZFJlY29yZGluZ1Njb3BlOworcHVibGljOgorICAgIC8vIENhbGwgc2l0ZXMgYXJlIGFn
Z3JlZ2F0ZWQgYnkgY2FsbCBzdGFjaywgdXNpbmcgYWdncmVnYXRpb25TdGFja0RlcHRoIGZyYW1l
cy4KKyAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIoc2l6ZV90IGFnZ3JlZ2F0aW9uU3RhY2tE
ZXB0aCA9IDE1KTsKKyAgICAKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVHJhY2tlZElEIHJlY29y
ZEFsbG9jYXRpb24oc2l6ZV90IHNpemUsIHNpemVfdCBjYXBhY2l0eSk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgcmVjb3JkU2l6ZUFuZENhcGFjaXR5KFRyYWNrZWRJRCwgc2l6ZV90IHNp
emUsIHNpemVfdCBjYXBhY2l0eSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVjb3Jk
RnJlZShUcmFja2VkSUQpOworICAgIAorICAgIC8vIFJldHVybiBhIHZlY3RvciBvZiBwZXIgY2Fs
bHNpdGUgZGF0YTsgc2l6ZSBhbmQgY2FwYWNpdHkgYXJlIHN1bW1lZCBmb3IgYWxsIGFsbG9jYXRp
b25zIHdpdGggYSBnaXZlbiBjYWxsIHNpdGUuCisgICAgLy8gVGhlIHBhc3NlZCBmdW5jdGlvbiBh
bGxvd3MgdGhlIGNhbGxlciB0byBkbyBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgcGVyIGFsbG9jYXRp
b24uCisgICAgc3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4gYWdncmVnYXRlQnlD
YWxsU2l0ZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoVHJhY2tlZElELCBBbGxvY2F0aW9uQ2Fs
bFNpdGVEYXRhJik+Jik7CisKK3ByaXZhdGU6CisgICAgLy8gVXNlIGEgcGltcGwgdG8gYXZvaWQg
Y2lyY3VsYXIgaW5jbHVkZXMgYmV0d2VlbiBvdXIgaGVhZGVyIGFuZCB0aGUgY29udGFpbmVyIGNs
YXNzIGhlYWRlcnMuCisgICAgc3RydWN0IENvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGw7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGw+IG1faW1wbDsK
KyAgICBzdGQ6OnJlY3Vyc2l2ZV9tdXRleCBtX211dGV4OworICAgIFRyYWNrZWRJRCBtX25leHRJ
RCB7IDAgfTsKKyAgICBjb25zdCBzaXplX3QgbV9hZ2dyZWdhdGlvblN0YWNrRGVwdGg7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDb250YWluZXJDYXBhY2l0eVRyYWNr
ZXI7CisKKyNlbmRpZiAvLyBXVEZfQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyX2gKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9TaXpl
TGltaXRzLmNwcAppbmRleCBiMGFkMTQwNDRmM2I4NDExNjg2ZDNhMWFhOGVhZmI0ZGFiNzc3ODVj
Li5mYmVkNjVmZTAxMDIyYzg4MGU3ZTY2OTAwMmFiZDhmZTBhZjlkMTJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9TaXplTGltaXRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TaXplTGlt
aXRzLmNwcApAQCAtODEsOSArODEsMTIgQEAgcHVibGljOgogICAgIHR5cGVuYW1lIHN0ZDo6YWxp
Z25lZF9zdG9yYWdlPHNpemVvZihUKSwgc3RkOjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlPjo6dHlw
ZSBpbmxpbmVCdWZmZXJbaW5saW5lQ2FwYWNpdHldOwogfTsKIAorI2lmICFUUkFDS19WRUNUT1Jf
Q0FQQUNJVFkKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQ+KSA9PSBzaXplb2YoU2Ft
ZVNpemVBc1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxpbnQ+KSwgIlZlY3RvciBzaG91bGQgc3Rh
eSBzbWFsbCEiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQsIDE+KSA9PSBzaXpl
b2YoU2FtZVNpemVBc1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxpbnQsIDE+KSwgIlZlY3RvciBz
aG91bGQgc3RheSBzbWFsbCEiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQsIDI+
KSA9PSBzaXplb2YoU2FtZVNpemVBc1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxpbnQsIDI+KSwg
IlZlY3RvciBzaG91bGQgc3RheSBzbWFsbCEiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3Rv
cjxpbnQsIDM+KSA9PSBzaXplb2YoU2FtZVNpemVBc1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxp
bnQsIDM+KSwgIlZlY3RvciBzaG91bGQgc3RheSBzbWFsbCEiKTsKKyNlbmRpZgorCiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oIGIvU291cmNlL1dURi93
dGYvU3RhY2tTaG90LmgKaW5kZXggN2UzMmEzNWJhZTNjN2I1NmE4YmU4NWI3ZDE4ZDFlNTU3OWEw
YjNmYy4uZmM3Y2ZhNmE2NjI0ODFjZWQ0YzRhZGNmNTVjODU2ZjU3ZDVmMDZmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKKysrIGIvU291cmNlL1dURi93dGYvU3RhY2tT
aG90LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9V
bmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1ZlY3Rvci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlh
YmI2ZGYwMTRmZjZiNTZmYmU3YTA3NWQ1Yjg0ZjUxMjkwOTAyMTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuY3BwCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmVjdG9yLmgiCisKKyNpZiBUUkFDS19W
RUNUT1JfQ0FQQUNJVFkKKyNpbmNsdWRlIDx3dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg+
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkK
KyNpbmNsdWRlIDxub3RpZnkuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tTaG90Lmg+CisjZW5kaWYK
KworbmFtZXNwYWNlIFdURiB7CisKKyNpZiBQTEFURk9STShDT0NPQSkKK3N0YXRpYyB2b2lkIGR1
bXBXYXN0ZWRWZWN0b3JDYXBhY2l0eSgpCit7CisgICAgYXV0byBjYWxsU2l0ZURhdGEgPSB2ZWN0
b3JUcmFja2VyKCkuYWdncmVnYXRlQnlDYWxsU2l0ZShbXSAoVHJhY2tlZElELCBBbGxvY2F0aW9u
Q2FsbFNpdGVEYXRhJikgeworICAgIH0pOworCisgICAgLy8gTWFrZSBhIHZlY3RvciBvZiByYXcg
cG9pbnRlcnMgc28gd2UgY2FuIHNvcnQgdGhlbS4KKyAgICBzdGQ6OnZlY3RvcjxBbGxvY2F0aW9u
Q2FsbFNpdGVEYXRhKj4gY2FsbFNpdGVQdHJzOworICAgIGZvciAoY29uc3QgYXV0byYgc2l0ZURh
dGEgOiBjYWxsU2l0ZURhdGEpIHsKKyAgICAgICAgaWYgKCFzaXRlRGF0YS5jYXBhY2l0eSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYWxsU2l0ZVB0cnMucHVzaF9iYWNrKGNvbnN0
X2Nhc3Q8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSo+KCZzaXRlRGF0YSkpOworICAgIH0KKworICAg
IC8vIFNvcnQgYnkgcmV2ZXJzZSB3YXN0YWdlLgorICAgIHN0ZDo6c29ydChjYWxsU2l0ZVB0cnMu
YmVnaW4oKSwgY2FsbFNpdGVQdHJzLmVuZCgpLCBbXSAoY29uc3QgQWxsb2NhdGlvbkNhbGxTaXRl
RGF0YSogYSwgY29uc3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogYikgeworICAgICAgICBzaXpl
X3QgYVdhc3RhZ2UgPSBhLT5jYXBhY2l0eSAtIGEtPnVzZWRTaXplOworICAgICAgICBzaXplX3Qg
Yldhc3RhZ2UgPSBiLT5jYXBhY2l0eSAtIGItPnVzZWRTaXplOworICAgICAgICByZXR1cm4gYVdh
c3RhZ2UgPiBiV2FzdGFnZTsKKyAgICB9KTsKKworICAgIGNvbnN0IHNpemVfdCBtYXhDb3VudCA9
IDEwMDsKKworICAgIFdURkxvZ0Fsd2F5cygiJWx1IGNhbGwgc2l0ZXMgY3JlYXRlZCB2ZWN0b3Jz
LiBTaG93aW5nICVsdSBzaXRlcyB3aXRoIG1vc3Qgd2FzdGFnZTpcbiIsIGNhbGxTaXRlRGF0YS5z
aXplKCksIG1heENvdW50KTsKKworICAgIHNpemVfdCBjb3VudCA9IDA7CisgICAgZm9yIChhdXRv
IHNpdGVEYXRhIDogY2FsbFNpdGVQdHJzKSB7CisgICAgICAgIGlmIChjb3VudCsrID09IG1heENv
dW50KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJXYXN0ZWQg
Y2FwYWNpdHk6ICVsdSBieXRlcyAodXNlZCAlbHUgb2YgJWx1IGJ5dGVzLCB1dGlsaXphdGlvbjog
JS4yZiUlKSAtICVsdSBhbGxvY2F0aW9uc1xuIiwKKyAgICAgICAgICAgIHNpdGVEYXRhLT5jYXBh
Y2l0eSAtIHNpdGVEYXRhLT51c2VkU2l6ZSwKKyAgICAgICAgICAgIHNpdGVEYXRhLT51c2VkU2l6
ZSwgc2l0ZURhdGEtPmNhcGFjaXR5LCAxMDAuMCAqIHNpdGVEYXRhLT51c2VkU2l6ZSAvIHNpdGVE
YXRhLT5jYXBhY2l0eSwKKyAgICAgICAgICAgIHNpdGVEYXRhLT5jb3VudCk7CisgICAgICAgIGNv
bnN0IHNpemVfdCBmcmFtZXNUb1NraXAgPSA3OworICAgICAgICBXVEZQcmludEJhY2t0cmFjZShz
aXRlRGF0YS0+c3RhY2soKS5hcnJheSgpICsgZnJhbWVzVG9Ta2lwLCBzaXRlRGF0YS0+c3RhY2so
KS5zaXplKCkgLSBmcmFtZXNUb1NraXApOworICAgICAgICBXVEZMb2dBbHdheXMoIlxuIik7Cisg
ICAgfQorfQorI2VuZGlmCisKK0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlciYgdmVjdG9yVHJhY2tl
cigpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGlu
aXRpYWxpemVPbmNlOworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlLCBbXSB7Cisg
ICAgICAgIGludCB0b2tlbjsKKyAgICAgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJjb20u
YXBwbGUuV2ViS2l0LmR1bXBWZWN0b3JDYXBhY2l0eSIsICZ0b2tlbiwgZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXihpbnQpIHsKKyAgICAgICAgICAgIGR1bXBXYXN0ZWRWZWN0b3JDYXBhY2l0
eSgpOworICAgICAgICB9KTsKKyAgICB9KTsKKyNlbmRpZgorCisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFdURjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyPiB0cmFja2VyOworICAgIHJldHVy
biB0cmFja2VyOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFRSQUNLX1ZF
Q1RPUl9DQVBBQ0lUWQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRleCA2NmUzYmUyYWU2ODhiMGZkNWUzNDhjMDc0YTVjM2Y1
NGY4OTBhMzg0Li5hM2Q5Y2NiMDUwMzY5Y2QxMjU5NWEyNDQxZDczMmJkNmE3YWRkYTdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0
b3IuaApAQCAtMzcsMTIgKzM3LDI0IEBACiAjaW5jbHVkZSA8d3RmL1ZhbHVlQ2hlY2suaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yVHJhaXRzLmg+CiAKKy8vIEVuYWJsZSBUUkFDS19WRUNUT1JfQ0FQ
QUNJVFkgdG8gdHJhY2sgY2FsbCBzaXRlcyB0aGF0IHdhc3RlIHZlY3RvciBjYXBhY2l0eS4gT24g
Q29jb2EgcGxhdGZvcm1zLCB0aGUgZGF0YSBjYW4gYmUgZHVtcGVkCisvLyBieSBydW5uaW5nICJu
b3RpZnl1dGlsIC1wIGNvbS5hcHBsZS5XZWJLaXQuZHVtcFZlY3RvckNhcGFjaXR5Ii4KKyNkZWZp
bmUgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZIDAKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQor
I2luY2x1ZGUgPHd0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaD4KKyNlbmRpZgorCiAjaWYg
QVNBTl9FTkFCTEVECiBleHRlcm4gIkMiIHZvaWQgX19zYW5pdGl6ZXJfYW5ub3RhdGVfY29udGln
dW91c19jb250YWluZXIoY29uc3Qgdm9pZCogYmVnaW4sIGNvbnN0IHZvaWQqIGVuZCwgY29uc3Qg
dm9pZCogb2xkX21pZCwgY29uc3Qgdm9pZCogbmV3X21pZCk7CiAjZW5kaWYKIAogbmFtZXNwYWNl
IFdURiB7CiAKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKK1dURl9FWFBPUlRfUFJJVkFURSBD
b250YWluZXJDYXBhY2l0eVRyYWNrZXImIHZlY3RvclRyYWNrZXIoKTsKKyNlbmRpZgorICAgIAog
dGVtcGxhdGUgPGJvb2wgbmVlZHNEZXN0cnVjdGlvbiwgdHlwZW5hbWUgVD4KIHN0cnVjdCBWZWN0
b3JEZXN0cnVjdG9yOwogCkBAIC0zMzksNiArMzUxLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
cHRyZGlmZl90IGJ1ZmZlck1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihW
ZWN0b3JCdWZmZXJCYXNlLCBtX2J1ZmZlcik7IH0KICAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25z
dCB7IHJldHVybiBtX2NhcGFjaXR5OyB9CiAKKyAgICBzaXplX3QgY2FwYWNpdHlJbkJ5dGVzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjYXBhY2l0eSgpICogc2l6ZW9mKFQpOworICAg
IH0KKworICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9zaXplICogc2l6ZW9mKFQpOworICAgIH0KKwogICAgIE1hbGxvY1B0cjxUPiByZWxlYXNl
QnVmZmVyKCkKICAgICB7CiAgICAgICAgIFQqIGJ1ZmZlciA9IG1fYnVmZmVyOwpAQCAtMzUzLDYg
KzM3NSw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX2NhcGFjaXR5KDApCiAgICAgICAgICwg
bV9zaXplKDApCiAgICAgeworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBtX3Ry
YWNrZWRJRCA9IHZlY3RvclRyYWNrZXIoKS5yZWNvcmRBbGxvY2F0aW9uKDAsIDApOworI2VuZGlm
CiAgICAgfQogCiAgICAgVmVjdG9yQnVmZmVyQmFzZShUKiBidWZmZXIsIHNpemVfdCBjYXBhY2l0
eSwgc2l6ZV90IHNpemUpCkBAIC0zNjAsMTYgKzM4NSwyNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
ICwgbV9jYXBhY2l0eShjYXBhY2l0eSkKICAgICAgICAgLCBtX3NpemUoc2l6ZSkKICAgICB7Cisj
aWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIG1fdHJhY2tlZElEID0gdmVjdG9yVHJh
Y2tlcigpLnJlY29yZEFsbG9jYXRpb24oc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkp
OworI2VuZGlmCiAgICAgfQogCiAgICAgflZlY3RvckJ1ZmZlckJhc2UoKQogICAgIHsKICAgICAg
ICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gZmluZCBhIHdheSB0byBBU1NFUlQgdGhh
dCBtX2J1ZmZlciBoYXNuJ3QgbGVha2VkIGhlcmUuCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZ
CisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRGcmVlKG1fdHJhY2tlZElEKTsKKyAgICAg
ICAgbV90cmFja2VkSUQgPSAwOworI2VuZGlmCiAgICAgfQogCiAgICAgVCogbV9idWZmZXI7CiAg
ICAgdW5zaWduZWQgbV9jYXBhY2l0eTsKICAgICB1bnNpZ25lZCBtX3NpemU7IC8vIE9ubHkgdXNl
ZCBieSB0aGUgVmVjdG9yIHN1YmNsYXNzLCBidXQgcGxhY2VkIGhlcmUgdG8gYXZvaWQgcGFkZGlu
ZyB0aGUgc3RydWN0LgorI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIFRyYWNrZWRJRCBt
X3RyYWNrZWRJRCB7IDAgfTsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5PgpAQCAtNDAyLDYgKzQzNyw5IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHN0ZDo6c3dhcChtX2J1ZmZlciwgb3RoZXIubV9idWZmZXIpOwogICAgICAgICBzdGQ6
OnN3YXAobV9jYXBhY2l0eSwgb3RoZXIubV9jYXBhY2l0eSk7CisjaWYgVFJBQ0tfVkVDVE9SX0NB
UEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcChtX3RyYWNrZWRJRCwgb3RoZXIubV90cmFja2VkSUQp
OworI2VuZGlmCiAgICAgfQogICAgIAogICAgIHZvaWQgcmVzdG9yZUlubGluZUJ1ZmZlcklmTmVl
ZGVkKCkgeyB9CkBAIC00MjMsMTAgKzQ2MSwxNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6
Y2FwYWNpdHk7CiAgICAgdXNpbmcgQmFzZTo6YnVmZmVyTWVtb3J5T2Zmc2V0OwogCisgICAgdXNp
bmcgQmFzZTo6Y2FwYWNpdHlJbkJ5dGVzOworICAgIHVzaW5nIEJhc2U6OnNpemVJbkJ5dGVzOwor
CiAgICAgdXNpbmcgQmFzZTo6cmVsZWFzZUJ1ZmZlcjsKIAogcHJvdGVjdGVkOgogICAgIHVzaW5n
IEJhc2U6Om1fc2l6ZTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB1c2luZyBCYXNl
OjptX3RyYWNrZWRJRDsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIHVzaW5nIEJhc2U6Om1fYnVm
ZmVyOwpAQCAtNTE0LDYgKzU1OCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdGQ6OnN3YXAo
bV9idWZmZXIsIG90aGVyLm1fYnVmZmVyKTsKICAgICAgICAgICAgIHN0ZDo6c3dhcChtX2NhcGFj
aXR5LCBvdGhlci5tX2NhcGFjaXR5KTsKICAgICAgICAgfQorCisjaWYgVFJBQ0tfVkVDVE9SX0NB
UEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcChtX3RyYWNrZWRJRCwgb3RoZXIubV90cmFja2VkSUQp
OworI2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCByZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQo
KQpAQCAtNTQwLDYgKzU4OCw4IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlOjpidWZmZXI7CiAg
ICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CiAgICAgdXNpbmcgQmFzZTo6YnVmZmVyTWVtb3J5T2Zm
c2V0OworICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5SW5CeXRlczsKKyAgICB1c2luZyBCYXNlOjpz
aXplSW5CeXRlczsKIAogICAgIE1hbGxvY1B0cjxUPiByZWxlYXNlQnVmZmVyKCkKICAgICB7CkBA
IC01NTAsNiArNjAwLDkgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdXNpbmcgQmFzZTo6
bV9zaXplOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHVzaW5nIEJhc2U6Om1fdHJh
Y2tlZElEOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgdXNpbmcgQmFzZTo6bV9idWZmZXI7CkBA
IC02NTgsNiArNzExLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0Lm1fc2l6ZSA9IHNpemU7
CiAKICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEluaXRpYWxpemU8MD4oc3RkOjpmb3J3YXJkPEl0
ZW1zPihpdGVtcykuLi4pOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZl
Y3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkocmVzdWx0Lm1fdHJhY2tlZElELCBy
ZXN1bHQuc2l6ZUluQnl0ZXMoKSwgcmVzdWx0LmNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtNjg1LDYgKzc0Miw5IEBAIHB1Ymxp
YzoKICAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBCYXNlOjpjYXBhY2l0eSgp
OyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQogCisgICAg
c2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gQmFzZTo6c2l6ZUluQnl0ZXMoKTsg
fQorICAgIHNpemVfdCBjYXBhY2l0eUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBCYXNlOjpjYXBh
Y2l0eUluQnl0ZXMoKTsgfQorCiAgICAgVCYgYXQoc2l6ZV90IGkpCiAgICAgewogICAgICAgICBp
ZiAoVU5MSUtFTFkoaSA+PSBzaXplKCkpKQpAQCAtODA4LDkgKzg2OCwxNyBAQCBwdWJsaWM6CiAK
ICAgICAgICAgQmFzZTo6c3dhcChvdGhlciwgbV9zaXplLCBvdGhlci5tX3NpemUpOwogICAgICAg
ICBzdGQ6OnN3YXAobV9zaXplLCBvdGhlci5tX3NpemUpOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBB
Q0lUWQorICAgICAgICBzdGQ6OnN3YXAobV90cmFja2VkSUQsIG90aGVyLm1fdHJhY2tlZElEKTsK
KyNlbmRpZgogCiAgICAgICAgIGFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRvKG1fc2l6ZSk7CiAg
ICAgICAgIG90aGVyLmFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRvKG90aGVyLm1fc2l6ZSk7CisK
KyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29y
ZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5
dGVzKCkpOworICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG90
aGVyLm1fdHJhY2tlZElELCBvdGhlci5zaXplSW5CeXRlcygpLCBvdGhlci5jYXBhY2l0eUluQnl0
ZXMoKSk7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIHJldmVyc2UoKTsKQEAgLTg2MCw2ICs5
MjgsMTEgQEAgcHJpdmF0ZToKICAgICB1c2luZyBCYXNlOjpyZWFsbG9jYXRlQnVmZmVyOwogICAg
IHVzaW5nIEJhc2U6OnJlc3RvcmVJbmxpbmVCdWZmZXJJZk5lZWRlZDsKICAgICB1c2luZyBCYXNl
OjpyZWxlYXNlQnVmZmVyOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdXNpbmcg
QmFzZTo6bV90cmFja2VkSUQ7CisjZW5kaWYKKwogI2lmIEFTQU5fRU5BQkxFRAogICAgIHVzaW5n
IEJhc2U6OmVuZE9mQnVmZmVyOwogI2VuZGlmCkBAIC04NzMsNiArOTQ2LDEwIEBAIFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OlZlY3Rvcihj
b25zdCBWZWN0b3ImIG90CiAKICAgICBpZiAoYmVnaW4oKSkKICAgICAgICAgVHlwZU9wZXJhdGlv
bnM6OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJlZ2luKCksIG90aGVyLmVuZCgpLCBiZWdpbigp
KTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNv
cmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5C
eXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpA
QCAtODg0LDYgKzk2MSwxMCBAQCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHk+OjpWZWN0b3IoY29uc3QgVmVjdG9yPFQsCiAKICAgICBpZiAoYmVn
aW4oKSkKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJl
Z2luKCksIG90aGVyLmVuZCgpLCBiZWdpbigpKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lU
WQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQs
IHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFu
ZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtOTA2LDYgKzk4NywxMCBAQCBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdAogICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhl
ci5iZWdpbigpICsgc2l6ZSgpLCBvdGhlci5lbmQoKSwgZW5kKCkpOwogICAgIG1fc2l6ZSA9IG90
aGVyLnNpemUoKTsKIAorI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNr
ZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNh
cGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC05
MzQsNiArMTAxOSwxMCBAQCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
ciwgbWluQ2FwYWNpdHk+JiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdAogICAgIFR5cGVPcGVyYXRp
b25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpICsgc2l6ZSgpLCBvdGhlci5lbmQo
KSwgZW5kKCkpOwogICAgIG1fc2l6ZSA9IG90aGVyLnNpemUoKTsKIAorI2lmIFRSQUNLX1ZFQ1RP
Ul9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90
cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAg
ICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC0xMDE1LDYgKzExMDQsMTAgQEAgdm9pZCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpmaWxsKGNv
bnN0IFQmIHZhbCwKICAgICBzdGQ6OmZpbGwoYmVnaW4oKSwgZW5kKCksIHZhbCk7CiAgICAgVHlw
ZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRGaWxsKGVuZCgpLCBiZWdpbigpICsgbmV3U2l6ZSwg
dmFsKTsKICAgICBtX3NpemUgPSBuZXdTaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZ
CisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwg
c2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5k
bGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xMDg2LDYgKzExNzksMTAgQEAgaW5saW5lIHZv
aWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5
Pjo6cmVzaXplKHNpemUKICAgICB9CiAgICAgCiAgICAgbV9zaXplID0gc2l6ZTsKKworI2lmIFRS
QUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2Fw
YWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNl
bmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTEwMiw2ICsx
MTk5LDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5Pjo6c2hyaW5rKHNpemVfdCBzaXplCiAgICAgVHlwZU9wZXJhdGlvbnM6OmRl
c3RydWN0KGJlZ2luKCkgKyBzaXplLCBlbmQoKSk7CiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hh
bmdlVG8oc2l6ZSk7CiAgICAgbV9zaXplID0gc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBB
Q0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2Vk
SUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93
SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTExNCw2ICsxMjE1LDEwIEBAIHZvaWQg
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6
Z3JvdyhzaXplX3Qgc2l6ZSkKICAgICBpZiAoYmVnaW4oKSkKICAgICAgICAgVHlwZU9wZXJhdGlv
bnM6OmluaXRpYWxpemVJZk5vblBPRChlbmQoKSwgYmVnaW4oKSArIHNpemUpOwogICAgIG1fc2l6
ZSA9IHNpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2Vy
KCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBh
Y2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBh
Y2l0eT4KQEAgLTExNzcsNiArMTI4MiwxMCBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJlc2VydmVDYXBhY2l0eShzaQogCiAg
ICAgVHlwZU9wZXJhdGlvbnM6Om1vdmUob2xkQnVmZmVyLCBvbGRFbmQsIGJlZ2luKCkpOwogICAg
IEJhc2U6OmRlYWxsb2NhdGVCdWZmZXIob2xkQnVmZmVyKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9D
QVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFj
a2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJm
bG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTE5OSw2ICsxMzA4LDEwIEBAIGJv
b2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5
Pjo6dHJ5UmVzZXJ2ZUNhcGFjaXR5CiAKICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZShvbGRCdWZm
ZXIsIG9sZEVuZCwgYmVnaW4oKSk7CiAgICAgQmFzZTo6ZGVhbGxvY2F0ZUJ1ZmZlcihvbGRCdWZm
ZXIpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJl
Y29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJ
bkJ5dGVzKCkpOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEyMDksNiArMTMy
MiwxMCBAQCBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHk+OjpyZXNlcnZlSW5pdAogICAgIEFTU0VSVChjYXBhY2l0eSgpID09
IGlubGluZUNhcGFjaXR5KTsKICAgICBpZiAoaW5pdGlhbENhcGFjaXR5ID4gaW5saW5lQ2FwYWNp
dHkpCiAgICAgICAgIEJhc2U6OmFsbG9jYXRlQnVmZmVyKGluaXRpYWxDYXBhY2l0eSk7CisKKyNp
ZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFu
ZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7
CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTEyMjcs
NiArMTM0NCw5IEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRs
ZXIsIG1pbkNhcGFjaXR5Pjo6c2hyaW5rQ2FwYWNpdHkoc2l6CiAgICAgICAgIGlmIChCYXNlOjpz
aG91bGRSZWFsbG9jYXRlQnVmZmVyKG5ld0NhcGFjaXR5KSkgewogICAgICAgICAgICAgQmFzZTo6
cmVhbGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0eSk7CiAgICAgICAgICAgICBhc2FuU2V0SW5pdGlh
bEJ1ZmZlclNpemVUbyhzaXplKCkpOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAg
ICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwg
c2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTI0MCw2ICsxMzYwLDEwIEBAIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6c2hyaW5rQ2Fw
YWNpdHkoc2l6CiAgICAgQmFzZTo6cmVzdG9yZUlubGluZUJ1ZmZlcklmTmVlZGVkKCk7CiAKICAg
ICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhzaXplKCkpOworCisjaWYgVFJBQ0tfVkVDVE9S
X0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3Ry
YWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xMjU3LDYgKzEzODEsMTAgQEAg
QUxXQVlTX0lOTElORSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyLCBtaW5DYXBhY2l0eT46OmFwcGUKICAgICBUKiBkZXN0ID0gZW5kKCk7CiAgICAgVmVjdG9y
Q29waWVyPHN0ZDo6aXNfdHJpdmlhbDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRpYWxpemVkQ29weShk
YXRhLCBzdGQ6OmFkZHJlc3NvZihkYXRhW2RhdGFTaXplXSksIGRlc3QpOwogICAgIG1fc2l6ZSA9
IG5ld1NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2Vy
KCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBh
Y2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBh
Y2l0eT4KQEAgLTEyNzYsNiArMTQwNCwxMCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6dHJ5QQogICAg
IFQqIGRlc3QgPSBlbmQoKTsKICAgICBWZWN0b3JDb3BpZXI8c3RkOjppc190cml2aWFsPFQ+Ojp2
YWx1ZSwgVT46OnVuaW5pdGlhbGl6ZWRDb3B5KGRhdGEsIHN0ZDo6YWRkcmVzc29mKGRhdGFbZGF0
YVNpemVdKSwgZGVzdCk7CiAgICAgbV9zaXplID0gbmV3U2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RP
Ul9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90
cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0xMjg3LDYgKzE0MTksOSBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5
Pjo6YXBwZQogICAgICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsK
ICAgICAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsK
ICAgICAgICAgKyttX3NpemU7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZl
Y3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5
dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xMzAxLDYgKzE0MzYsOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6Y29ucwogICAgICAg
ICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICAgICAgbmV3IChO
b3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgICAgICAr
K21fc2l6ZTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgdmVjdG9yVHJhY2tl
cigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2Fw
YWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEz
MTUsNiArMTQ1Myw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojp0cnlDCiAgICAgICAgIGFzYW5CdWZm
ZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEpOwogICAgICAgICBuZXcgKE5vdE51bGwsIGVu
ZCgpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgICAgICAgICsrbV9zaXplOwor
I2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3Jk
U2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0
ZXMoKSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtMTMz
NCw2ICsxNDc1LDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXIsIG1pbkNhcGFjaXR5Pjo6YXBwZW5kU2xvd0Nhc2UoVSYmCiAgICAgYXNhbkJ1ZmZlclNp
emVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChz
dGQ6OmZvcndhcmQ8VT4oKnB0cikpOwogICAgICsrbV9zaXplOworCisjaWYgVFJBQ0tfVkVDVE9S
X0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3Ry
YWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xMzQ4LDYgKzE0OTMsMTAgQEAg
dm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNp
dHk+Ojpjb25zdHJ1Y3RBbmRBcHBlbmQKICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyht
X3NpemUgKyAxKTsKICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLik7CiAgICAgKyttX3NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkK
KyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBz
aXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTEzNjMsNiArMTUxMiwxMCBAQCBib29sIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnRyeUNv
bnN0cnVjdEFuZEFwcAogICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEp
OwogICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KTsKICAgICArK21fc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3Rv
clRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVz
KCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0xMzc5LDYgKzE1MzIsMTAgQEAgQUxXQVlTX0lOTElORSB2b2lkIFZlY3RvcjxULCBpbmxpbmVD
YXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnVuY2gKIAogICAgIG5ldyAo
Tm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7CiAgICAgKyttX3NpemU7
CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3Jk
U2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0
ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAg
LTE0MDUsNiArMTU2MiwxMCBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46Omluc2VydChzaXplX3QgcG9zaQogICAgIFR5cGVPcGVy
YXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoc3BvdCwgZW5kKCksIHNwb3QgKyBkYXRhU2l6ZSk7CiAg
ICAgVmVjdG9yQ29waWVyPHN0ZDo6aXNfdHJpdmlhbDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRpYWxp
emVkQ29weShkYXRhLCBzdGQ6OmFkZHJlc3NvZihkYXRhW2RhdGFTaXplXSksIHNwb3QpOwogICAg
IG1fc2l6ZSA9IG5ld1NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0
b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRl
cygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KICAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXpl
X3QgbWluQ2FwYWNpdHk+CkBAIC0xNDI1LDYgKzE1ODYsMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6aW5zZXJ0
KHNpemUKICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKHNwb3QsIGVuZCgpLCBz
cG90ICsgMSk7CiAgICAgbmV3IChOb3ROdWxsLCBzcG90KSBUKHN0ZDo6Zm9yd2FyZDxVPigqcHRy
KSk7CiAgICAgKyttX3NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0
b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRl
cygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVf
dCBtaW5DYXBhY2l0eT4KQEAgLTE0NDMsNiArMTYwOCwxMCBAQCBpbmxpbmUgdm9pZCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpyZW1vdmUo
c2l6ZQogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoc3BvdCArIDEsIGVuZCgp
LCBzcG90KTsKICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgLSAxKTsKICAg
ICAtLW1fc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNr
ZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNh
cGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNh
cGFjaXR5PgpAQCAtMTQ1Niw2ICsxNjI1LDEwIEBAIGlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxp
bmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJlbW92ZShzaXplCiAg
ICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVybGFwcGluZyhlbmRTcG90LCBlbmQoKSwgYmVnaW5T
cG90KTsKICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgLSBsZW5ndGgpOwog
ICAgIG1fc2l6ZSAtPSBsZW5ndGg7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2
ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5C
eXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNp
emVfdCBtaW5DYXBhY2l0eT4KQEAgLTE1MTMsNiArMTY4NiwxMCBAQCBpbmxpbmUgdW5zaWduZWQg
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6
cmVtb3ZlQQogICAgICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKGhvbGVFbmQs
IGVuZCgpLCBob2xlQmVnaW4pOwogICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6
ZSAtIG1hdGNoQ291bnQpOwogICAgIG1fc2l6ZSAtPSBtYXRjaENvdW50OworCisjaWYgVFJBQ0tf
VkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0
eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlm
CiAgICAgcmV0dXJuIG1hdGNoQ291bnQ7CiB9CiAKQEAgLTE1NTMsNiArMTczMCwxMCBAQCBpbmxp
bmUgTWFsbG9jUHRyPFQ+IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eT46OnJlbAogICAgIH0KICAgICBtX3NpemUgPSAwOwogICAgIC8vIEZJWE1F
OiBTaG91bGQgd2UgY2FsbCBCYXNlOjpyZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQoKSBoZXJl
PworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29y
ZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5
dGVzKCkpOworI2VuZGlmCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342886</attachid>
            <date>2018-06-16 12:09:05 -0700</date>
            <delta_ts>2018-06-16 13:03:06 -0700</delta_ts>
            <desc>Track Vector and HashTable capacity</desc>
            <filename>track container capacity.patch</filename>
            <type>text/plain</type>
            <size>54911</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZjZhMGVlOTViMzVhYzVlZjdiZTk2YWFiZTRhODliZDY1ODI3YWY0YS4uNTE2ZTk0MGY0
YzdlZGE3NmFhN2VlYjg2ZjQ0MGJmODgyM2I5ZTViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAx
OC0wNi0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAg
ICBNYWtlIGl0IHBvc3NpYmxlIHRvIHRyYWNrIGNhbGwgc2l0ZXMgdGhhdCB3YXN0ZSBWZWN0b3Ig
Y2FwYWNpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NjY5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgQWRkIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlciB3aGljaCBjYW4gYWdncmVnYXRl
IGRhdGEgb24gYSBwZXItY2FsbCBzaXRlIGJhc2lzIChieSB0YWtpbmcKKyAgICAgICAgYSBzdGFj
a3Nob3QgTiBmcmFtZXMgZGVlcCwgYW5kIGhhc2hpbmcgaXQpLCBhbmQgaXMgaW5mb3JtZWQgYWJv
dXQgYWxsb2NhdGlvbnMsIHNpemUgYW5kIAorICAgICAgICBjYXBhY2l0eSBjaGFuZ2VzLCBhbmQg
ZnJlZXMgb2YgY29udGFpbmVyIHR5cGVzIChlLmcuIFZlY3RvciBhbmQgSGFzaE1hcCkuCisgICAg
ICAgIAorICAgICAgICBXaGVuIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWSBpcyBkZWZpbmVkIGluIFZl
Y3Rvci5oLCBhIHNpbmdsZXRvbiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIKKyAgICAgICAgaXMg
dXNlZCB0byBrZWVwIHRyYWNrIG9mIGFsbCBWZWN0b3JzIGFuZCB0aGVpciBzaXplIGFuZCBjYXBh
Y2l0eSBjaGFuZ2VzLiBWZWN0b3IgZ2FpbnMKKyAgICAgICAgYW4gbV90cmFja2VkSUQgbWVtYmVy
IHZhcmlhYmxlIHRvIGFsbG93IHRyYWNraW5nIChWZWN0b3JzIGNhbiBiZSBXVEZNb3ZlZCBhbmQg
c3RkOjpzd2FwcGVkLAorICAgICAgICBzbyB3ZSBjYW4ndCByZWx5IG9uIHRoZWlyIGFkZHJlc3Mg
dG8gdHJhY2sgdGhlbSkuCisgICAgICAgIAorICAgICAgICBEYXRhIGFib3V0IGxpdmUgVmVjdG9y
cyBjYW4gdGhlbiBiZSBkdW1wZWQgd2l0aCAibm90aWZ5dXRpbCAtcCBjb20uYXBwbGUuV2ViS2l0
LmR1bXBWZWN0b3JDYXBhY2l0eSIsCisgICAgICAgIHZpYSBjb2RlIGluIFZlY3Rvci5jcHAuCisg
ICAgICAgIAorICAgICAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIgdGFrZXMgY2FyZSB0byBh
dm9pZCByZS1lbnRyYW5jeSAoYWxsb3cgaXQgdG8gdXNlIHRoZSBjb250YWluZXIgdHlwZXMpCisg
ICAgICAgIHdoaWxlIGJlaW5nIGNhbGxhYmxlIGZyb20gZGlmZmVyZW50IHRocmVhZHMuCisgICAg
ICAgIAorICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFj
a2VyLmNwcDogQWRkZWQuCisgICAgICAgICogd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5o
OiBBZGRlZC4KKyAgICAgICAgKiB3dGYvU2l6ZUxpbWl0cy5jcHA6CisgICAgICAgICogd3RmL1N0
YWNrU2hvdC5oOgorICAgICAgICAqIHd0Zi9WZWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdU
Rjo6ZHVtcFdhc3RlZFZlY3RvckNhcGFjaXR5KToKKyAgICAgICAgKFdURjo6dmVjdG9yVHJhY2tl
cik6CisgICAgICAgICogd3RmL1ZlY3Rvci5oOgorICAgICAgICAoV1RGOjpWZWN0b3JCdWZmZXJC
YXNlOjpjYXBhY2l0eUluQnl0ZXMgY29uc3QpOgorICAgICAgICAoV1RGOjpWZWN0b3JCdWZmZXJC
YXNlOjpzaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXVEY6OlZlY3RvckJ1ZmZlckJhc2U6
OlZlY3RvckJ1ZmZlckJhc2UpOgorICAgICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjp+VmVj
dG9yQnVmZmVyQmFzZSk6CisgICAgICAgIChXVEY6OlZlY3RvckJ1ZmZlcjo6c3dhcCk6CisgICAg
ICAgIChXVEY6OlZlY3Rvcjo6ZnJvbSk6CisgICAgICAgIChXVEY6OlZlY3Rvcjo6c2l6ZUluQnl0
ZXMgY29uc3QpOgorICAgICAgICAoV1RGOjpWZWN0b3I6OmNhcGFjaXR5SW5CeXRlcyBjb25zdCk6
CisgICAgICAgIChXVEY6OlZlY3Rvcjo6c3dhcCk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5
Pjo6VmVjdG9yKToKKyAgICAgICAgKFdURjo6PSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5
Pjo6ZmlsbCk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVzaXplKToKKyAgICAgICAg
KFdURjo6bWluQ2FwYWNpdHk+OjpzaHJpbmspOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46
Omdyb3cpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnJlc2VydmVDYXBhY2l0eSk6Cisg
ICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6dHJ5UmVzZXJ2ZUNhcGFjaXR5KToKKyAgICAgICAg
KFdURjo6bWluQ2FwYWNpdHk+OjpyZXNlcnZlSW5pdGlhbENhcGFjaXR5KToKKyAgICAgICAgKFdU
Rjo6bWluQ2FwYWNpdHk+OjpzaHJpbmtDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFj
aXR5Pjo6YXBwZW5kKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojp0cnlBcHBlbmQpOgor
ICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmNvbnN0cnVjdEFuZEFwcGVuZCk6CisgICAgICAg
IChXVEY6Om1pbkNhcGFjaXR5Pjo6dHJ5Q29uc3RydWN0QW5kQXBwZW5kKToKKyAgICAgICAgKFdU
Rjo6bWluQ2FwYWNpdHk+OjphcHBlbmRTbG93Q2FzZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFj
aXR5Pjo6Y29uc3RydWN0QW5kQXBwZW5kU2xvd0Nhc2UpOgorICAgICAgICAoV1RGOjptaW5DYXBh
Y2l0eT46OnRyeUNvbnN0cnVjdEFuZEFwcGVuZFNsb3dDYXNlKToKKyAgICAgICAgKFdURjo6bWlu
Q2FwYWNpdHk+Ojp1bmNoZWNrZWRBcHBlbmQpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46
Omluc2VydCk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVtb3ZlKToKKyAgICAgICAg
KFdURjo6bWluQ2FwYWNpdHk+OjpyZW1vdmVBbGxNYXRjaGluZyk6CisgICAgICAgIChXVEY6Om1p
bkNhcGFjaXR5Pjo6cmVsZWFzZUJ1ZmZlcik6CisKIDIwMTgtMDYtMTUgIEJhc3VrZSBTdXp1a2kg
IDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gTW92ZSB1bnJl
bGF0ZWQgZmVhdHVyZXMgb2YgV29ya1F1ZXVlV2luIGludG8gSVBDOjpDb25uZWN0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlZjFiMzNiN2ZlMDc4MmYx
ZDg3NDA1OTkzZjZmNDEwNmIxMDY2ZTIwLi4xOTViMDdhNjUzN2I0ZmIxZjdmNGZkYmVmZDNhNmRl
ZDkzYmRmOTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTI0LDYgKzI0LDcgQEAKIAkJMEYzMEJBOTAxRTc4NzA4RTAwMkNBODQ3IC8qIEdsb2JhbFZlcnNp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
MEJBOEExRTc4NzA4RTAwMkNBODQ3IC8qIEdsb2JhbFZlcnNpb24uY3BwICovOyB9OwogCQkwRjMw
Q0I1QTFGQ0RGMTM0MDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMENCNTgxRkNERjEzMzAw
NEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCAqLzsgfTsKIAkJMEY0M0Q4RjExREI1
QUREQzAwMTA4RkI2IC8qIEF1dG9tYXRpY1RocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzRDhFRjFEQjVBRERDMDAxMDhGQjYgLyogQXV0
b21hdGljVGhyZWFkLmNwcCAqLzsgfTsKKwkJMEY1QjRERkEyMEQwREUxODAwRDZGNTEwIC8qIENv
bnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjVCNERGOTIwRDBERTE3MDBENkY1MTAgLyogQ29udGFpbmVyQ2Fw
YWNpdHlUcmFja2VyLmNwcCAqLzsgfTsKIAkJMEY1QkYxNzYxRjIzRDQ5QTAwMjlEOTFEIC8qIEdp
Z2FjYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNUJGMTc0MUYyM0Q0OUEwMDI5RDkxRCAvKiBHaWdhY2FnZS5jcHAgKi87IH07CiAJCTBGNjBG
MzJGMURGQ0JEMUIwMDQxNkQ2QyAvKiBMb2NrZWRQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYwRjMyRDFERkNCRDFCMDA0MTZE
NkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uY3BwICovOyB9OwogCQkwRjY2QjI4QTFEQzk3QkFCMDA0
QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjZCMjgwMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuY3BwICov
OyB9OwpAQCAtMzgsNiArMzksNyBAQAogCQkwRjhGMkI5MjE3MkUwMTAzMDA3REJEQTUgLyogQ29t
cGlsYXRpb25UaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY4RjJCOEYxNzJFMDBGMDAwN0RCREE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmNw
cCAqLzsgfTsKIAkJMEY5RDMzNjAxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM1
QjE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCAqLzsgfTsKIAkJMEY5RDMz
NjIxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVEMTY1REJBNzMwMDVBRDM4NyAvKiBQ
cmludFN0cmVhbS5jcHAgKi87IH07CisJCTBGRDczQ0JCMjBENDc1ODQwMEZDN0EyOSAvKiBWZWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZE
NzNDQkEyMEQ0NzU4MzAwRkM3QTI5IC8qIFZlY3Rvci5jcHAgKi87IH07CiAJCTBGRERCRkE3MTY2
NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkREQkZBNTE2NjZERkEzMDBDNTVGRUYgLyog
U3RyaW5nUHJpbnRTdHJlYW0uY3BwICovOyB9OwogCQkwRkUxNjQ2QTFCNkZGQzk2MDA0MDBFN0Mg
LyogTG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkUxNjQ2ODFCNkZGQzk2MDA0MDBFN0MgLyogTG9jay5jcHAgKi87IH07CiAJCTBGRTQ0NzlD
MUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU0NDc5QTFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExv
Y2suY3BwICovOyB9OwpAQCAtMjAwLDYgKzIwMiw4IEBACiAJCTBGNDU3MDQyMUJFNUI1OEYwMDYy
QTYyOSAvKiBEb21pbmF0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERv
bWluYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwNDQxQkU4MzQ0
MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnViYmxlU29ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjREOEM3MTFG
QzFFN0NFMDAxRDMyQUMgLyogU2luZ2x5TGlua2VkTGlzdFdpdGhUYWlsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbmdseUxpbmtlZExpc3RXaXRoVGFpbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjVCNERGODIwRDBERTE3MDBENkY1MTAgLyogQ29udGFp
bmVyQ2FwYWNpdHlUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bnRhaW5lckNhcGFjaXR5VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjVCNERGOTIwRDBERTE3MDBENkY1MTAgLyogQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRhaW5lckNhcGFjaXR5VHJh
Y2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUJGMTY1MUYyMzE3ODMw
MDI5RDkxRCAvKiBOYXR1cmFsTG9vcHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0dXJhbExvb3BzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUJGMTc0MUYyM0Q0OUEwMDI5RDkxRCAv
KiBHaWdhY2FnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHaWdhY2FnZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUJGMTc1MUYyM0Q0OUEwMDI5RDkxRCAvKiBHaWdhY2Fn
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHaWdhY2FnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjQ2LDYgKzI1MCw3IEBACiAJCTBGQjQ2NzgzMUZERTI4MkMwMDNGQ0IwOSAvKiBDb25j
dXJyZW50VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbmN1cnJl
bnRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDNDQ4ODIxNkZFOUZF
MTAwODQ0QkU5IC8qIFByb2Nlc3NJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQcm9jZXNzSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDNEVERTUxNjk2
MTQ5NjAwRjY1MDQxIC8qIENvbW1hUHJpbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb21tYVByaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZE
NzNDQkEyMEQ0NzU4MzAwRkM3QTI5IC8qIFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0Qml0VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGREI2OThEMUI3QzY0M0EwMDBDMTA3OCAvKiBDb25kaXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uZGl0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRERCRkE1MTY2NkRGQTMwMEM1NUZFRiAvKiBTdHJpbmdQcmludFN0
cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdQcmlu
dFN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDQsNiArODQ5LDgg
QEAKIAkJCQkwRjMwQ0I1OTFGQ0RGMTMzMDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQu
aCAqLywKIAkJCQkwRkI0Njc4MzFGREUyODJDMDAzRkNCMDkgLyogQ29uY3VycmVudFZlY3Rvci5o
ICovLAogCQkJCTBGREI2OThEMUI3QzY0M0EwMDBDMTA3OCAvKiBDb25kaXRpb24uaCAqLywKKwkJ
CQkwRjVCNERGOTIwRDBERTE3MDBENkY1MTAgLyogQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNw
cCAqLywKKwkJCQkwRjVCNERGODIwRDBERTE3MDBENkY1MTAgLyogQ29udGFpbmVyQ2FwYWNpdHlU
cmFja2VyLmggKi8sCiAJCQkJMEY4RTg1REExRkQ0ODVCMDAwNjkxODg5IC8qIENvdW50aW5nTG9j
ay5jcHAgKi8sCiAJCQkJMEZGQkNCRkExRkQzN0UwRjAwNzJBQUYwIC8qIENvdW50aW5nTG9jay5o
ICovLAogCQkJCUUzOEM0MTI2MUVCNEUwNjgwMDQyOTU3RCAvKiBDUFVUaW1lLmNwcCAqLywKQEAg
LTExMTgsNiArMTEyNSw3IEBACiAJCQkJN0FGRUM2QUUxRUIyMkFDNjAwREFERTM2IC8qIFVVSUQu
aCAqLywKIAkJCQlBOEE0NzM2RjE1MUE4MjVCMDA0MTIzRkYgLyogVmFsdWVDaGVjay5oICovLAog
CQkJCTdDRDBENUE3MUQ1NTMyMkEwMDBDQzlFMSAvKiBWYXJpYW50LmggKi8sCisJCQkJMEZENzND
QkEyMEQ0NzU4MzAwRkM3QTI5IC8qIFZlY3Rvci5jcHAgKi8sCiAJCQkJQThBNDczNzAxNTFBODI1
QjAwNDEyM0ZGIC8qIFZlY3Rvci5oICovLAogCQkJCUE4QTQ3MzcxMTUxQTgyNUIwMDQxMjNGRiAv
KiBWZWN0b3JUcmFpdHMuaCAqLywKIAkJCQlBOEE0NzM3MjE1MUE4MjVCMDA0MTIzRkYgLyogVk1U
YWdzLmggKi8sCkBAIC0xNDYxLDYgKzE0NjksNyBAQAogCQkJCUE4QTQ3NDYzMTUxQTgyNUIwMDQx
MjNGRiAvKiBDb2xsYXRvcklDVS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGMkI5MjE3MkUw
MTAzMDA3REJEQTUgLyogQ29tcGlsYXRpb25UaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYzMENCNUExRkNERjEzNDAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTBGNUI0REZBMjBEMERFMTgwMEQ2RjUxMCAvKiBDb250YWluZXJDYXBh
Y2l0eVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RTg1REIxRkQ0ODVCMDAwNjkx
ODg5IC8qIENvdW50aW5nTG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzhDNDEyODFFQjRF
MDY4MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzhDNDEyNTFF
QjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xNTY0
LDYgKzE1NzMsNyBAQAogCQkJCTFDMTgxQzkzMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3Zp
ZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NjkxNTFBODI1QjAwNDEyM0ZG
IC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FGRUM2QjExRUIyMkI1OTAwREFERTM2
IC8qIFVVSUQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZENzNDQkIyMEQ0NzU4NDAwRkM3QTI5
IC8qIFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI5MjFEQzk3QkFCMDA0QTFE
M0YgLyogV2FsbFRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUZBNDdDOEExNTI1MDJEQTAw
NTY4RDFCIC8qIFdlYkNvcmVUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFNDQ3OUMx
QjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dAppbmRleCAwZjlmNGUxZjJkYTE2YzMxMmMwZGQ1MmQ4ZGJlOTUzYjU1NGQzNDRkLi4z
ZGM3YWZmZDYxMDZiMWM4ODk2MWQyZmQzMTA0NWZmNmRjNmZhMjYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dApAQCAtMzUsNiArMzUsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgQ29uY3Vy
cmVudFB0ckhhc2hTZXQuaAogICAgIENvbmN1cnJlbnRWZWN0b3IuaAogICAgIENvbmRpdGlvbi5o
CisgICAgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmgKICAgICBDb3VudGluZ0xvY2suaAogICAg
IENyb3NzVGhyZWFkQ29waWVyLmgKICAgICBDcm9zc1RocmVhZFF1ZXVlLmgKQEAgLTMzMSw2ICsz
MzIsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBDbG9ja1R5cGUuY3BwCiAgICAgQ29tcGlsYXRp
b25UaHJlYWQuY3BwCiAgICAgQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwCisgICAgQ29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyLmNwcAogICAgIENvdW50aW5nTG9jay5jcHAKICAgICBDcm9zc1RocmVh
ZENvcGllci5jcHAKICAgICBDcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcApAQCAtMzg3LDYgKzM4
OSw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAK
ICAgICBUaW1pbmdTY29wZS5jcHAKICAgICBVVUlELmNwcAorICAgIFZlY3Rvci5jcHAKICAgICBX
VEZBc3NlcnRpb25zLmNwcAogICAgIFdhbGxUaW1lLmNwcAogICAgIFdvcmRMb2NrLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJl
OWIwN2VjYzQ0NjIxMTFlNjlkMzBlNDU2MDg2MGZlODUxZjY1ZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAKQEAgLTAsMCArMSwy
MDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmgiCisK
KyNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgorI2luY2x1ZGUgPHd0Zi9TdGFja1Nob3QuaD4KKwor
bmFtZXNwYWNlIFdURiB7CisKK0FsbG9jYXRpb25DYWxsU2l0ZURhdGE6OkFsbG9jYXRpb25DYWxs
U2l0ZURhdGEoc2l6ZV90IHN0YWNrRGVwdGgsIHNpemVfdCBpblVzZWRTaXplLCBzaXplX3QgaW5D
YXBhY2l0eSkKKyAgICA6IHVzZWRTaXplKGluVXNlZFNpemUpCisgICAgLCBjYXBhY2l0eShpbkNh
cGFjaXR5KQorICAgICwgbV9zdGFjayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hvdD4oc3RhY2tE
ZXB0aCkpCit7Cit9CisKK0FsbG9jYXRpb25DYWxsU2l0ZURhdGE6OkFsbG9jYXRpb25DYWxsU2l0
ZURhdGEoY29uc3QgU3RhY2tTaG90JiBzdGFjaykKKyAgICA6IG1fc3RhY2soc3RkOjptYWtlX3Vu
aXF1ZTxTdGFja1Nob3Q+KHN0YWNrKSkKK3sKK30KKworQWxsb2NhdGlvbkNhbGxTaXRlRGF0YTo6
QWxsb2NhdGlvbkNhbGxTaXRlRGF0YShjb25zdCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJiBvdGhl
cikKKyAgICA6IGNvdW50KG90aGVyLmNvdW50KQorICAgICwgdXNlZFNpemUob3RoZXIudXNlZFNp
emUpCisgICAgLCBjYXBhY2l0eShvdGhlci5jYXBhY2l0eSkKKyAgICAsIG1fc3RhY2soc3RkOjpt
YWtlX3VuaXF1ZTxTdGFja1Nob3Q+KG90aGVyLnN0YWNrKCkpKQoreworfQorCitBbGxvY2F0aW9u
Q2FsbFNpdGVEYXRhOjp+QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSgpID0gZGVmYXVsdDsKKworY29u
c3QgU3RhY2tTaG90JiBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhOjpzdGFjaygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICptX3N0YWNrOworfQorCitzdHJ1Y3QgQ29udGFpbmVyQWxsb2NhdGlvbkRhdGEg
eworICAgIENvbnRhaW5lckFsbG9jYXRpb25EYXRhKHNpemVfdCBzdGFja1Nob3RTaXplLCBzaXpl
X3QgaW5TaXplLCBzaXplX3QgaW5DYXBhY2l0eSkKKyAgICAgICAgOiBhbGxvY2F0aW9uU3RhY2so
c3RhY2tTaG90U2l6ZSkKKyAgICAgICAgLCBzaXplKGluU2l6ZSkKKyAgICAgICAgLCBjYXBhY2l0
eShpbkNhcGFjaXR5KQorICAgIHsKKyAgICAKKyAgICB9CisgICAgU3RhY2tTaG90IGFsbG9jYXRp
b25TdGFjazsKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBzaXplX3QgY2FwYWNpdHk7Cit9OworCitz
dHJ1Y3QgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpDb250YWluZXJDYXBhY2l0eVRyYWNrZXJJ
bXBsIHsKKyAgICBzdGQ6OnVub3JkZXJlZF9tYXA8VHJhY2tlZElELCBzdGQ6OnVuaXF1ZV9wdHI8
Q29udGFpbmVyQWxsb2NhdGlvbkRhdGE+PiBtX3RyYWNrZWRJRFRvQ29udGFpbmVyRGF0YTsKK307
CisKKy8vIFRvIHByZXZlbnQgcGVyLXRocmVhZCByZS1lbnRyYW5jeSB3ZSB0YWtlIGEgcG9pbnRl
ciB0byBhbiBvYmplY3Qgb24gdGhlIHN0YWNrLCBpbnNpZGUgbV9tdXRleCBsb2NrIHNjb3BlLgor
Y2xhc3MgQXZvaWRSZWNvcmRpbmdTY29wZSB7CitwdWJsaWM6CisgICAgQXZvaWRSZWNvcmRpbmdT
Y29wZShDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIHRyYWNrZXIsIGJvb2wqIHN0YWNrT2JqZWN0
KQorICAgICAgICA6IG1fdHJhY2tlcih0cmFja2VyKQorICAgIHsKKyAgICAgICAgbV90cmFja2Vy
Lm1fYXZvaWRSZWVudHJhbmN5ID0gc3RhY2tPYmplY3Q7CisgICAgfQorCisgICAgfkF2b2lkUmVj
b3JkaW5nU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV90cmFja2VyLm1fYXZvaWRSZWVudHJhbmN5
ID0gbnVsbHB0cjsKKyAgICB9Citwcml2YXRlOgorICAgIENvbnRhaW5lckNhcGFjaXR5VHJhY2tl
ciYgbV90cmFja2VyOworfTsKKworQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpDb250YWluZXJD
YXBhY2l0eVRyYWNrZXIoc2l6ZV90IGFnZ3JlZ2F0aW9uU3RhY2tEZXB0aCkKKyAgICA6IG1faW1w
bChzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGw+KCkpCisgICAg
LCBtX2FnZ3JlZ2F0aW9uU3RhY2tEZXB0aChhZ2dyZWdhdGlvblN0YWNrRGVwdGgpCit7Cit9CisK
K1RyYWNrZWRJRCBDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29yZEFsbG9jYXRpb24oc2l6
ZV90IHNpemUsIHNpemVfdCBjYXBhY2l0eSkKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjpy
ZWN1cnNpdmVfbXV0ZXg+IGxvY2tIb2xkZXIobV9tdXRleCk7CisKKyAgICBpZiAobV9hdm9pZFJl
ZW50cmFuY3kpCisgICAgICAgIHJldHVybiAwOworCisgICAgYm9vbCBhdm9pZFJlZW50cmFuY3kg
PSB0cnVlOworICAgIEF2b2lkUmVjb3JkaW5nU2NvcGUgc2NvcGUoKnRoaXMsICZhdm9pZFJlZW50
cmFuY3kpOworCisgICAgVHJhY2tlZElEIG9iamVjdElEID0gKyttX25leHRJRDsKKworICAgIGF1
dG8gaW5zZXJ0UmVzdWx0ID0gbV9pbXBsLT5tX3RyYWNrZWRJRFRvQ29udGFpbmVyRGF0YS5pbnNl
cnQoeyBvYmplY3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXJBbGxvY2F0aW9uRGF0YT4o
bV9hZ2dyZWdhdGlvblN0YWNrRGVwdGgsIHNpemUsIGNhcGFjaXR5KSB9KTsKKyAgICBpZiAoIWlu
c2VydFJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250YWluZXJDYXBh
Y2l0eVRyYWNrZXI6OnJlY29yZEFsbG9jYXRpb24gc2F3IG9iamVjdCAldSBmb3IgdGhlIHNlY29u
ZCB0aW1lIiwgb2JqZWN0SUQpOworICAgICAgICBXVEZMb2dBbHdheXMoIldhcyBwcmV2aW91c2x5
IGFsbG9jYXRlZCBhdDoiKTsKKyAgICAgICAgYXV0byYgY2FsbFNpdGVEYXRhID0gKmluc2VydFJl
c3VsdC5maXJzdC0+c2Vjb25kOworICAgICAgICBjb25zdCBzaXplX3QgZnJhbWVzVG9Ta2lwID0g
MDsKKyAgICAgICAgV1RGUHJpbnRCYWNrdHJhY2UoY2FsbFNpdGVEYXRhLmFsbG9jYXRpb25TdGFj
ay5hcnJheSgpICsgZnJhbWVzVG9Ta2lwLCBjYWxsU2l0ZURhdGEuYWxsb2NhdGlvblN0YWNrLnNp
emUoKSAtIGZyYW1lc1RvU2tpcCk7CisgICAgfQorCisgICAgcmV0dXJuIG9iamVjdElEOworfQor
Cit2b2lkIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlcjo6cmVjb3JkU2l6ZUFuZENhcGFjaXR5KFRy
YWNrZWRJRCBvYmplY3RJRCwgc2l6ZV90IHNpemUsIHNpemVfdCBjYXBhY2l0eSkKK3sKKyAgICBB
U1NFUlQoc2l6ZSA8PSBjYXBhY2l0eSk7CisKKyAgICBpZiAoIW9iamVjdElEKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjpyZWN1cnNpdmVfbXV0ZXg+IGxvY2tI
b2xkZXIobV9tdXRleCk7CisKKyAgICBpZiAobV9hdm9pZFJlZW50cmFuY3kpCisgICAgICAgIHJl
dHVybjsKKworICAgIGJvb2wgYXZvaWRSZWVudHJhbmN5ID0gdHJ1ZTsKKyAgICBBdm9pZFJlY29y
ZGluZ1Njb3BlIHNjb3BlKCp0aGlzLCAmYXZvaWRSZWVudHJhbmN5KTsKKworICAgIGF1dG8gaXQg
PSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJEYXRhLmZpbmQob2JqZWN0SUQpOworICAg
IGlmIChpdCAhPSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJEYXRhLmVuZCgpKSB7Cisg
ICAgICAgIGl0LT5zZWNvbmQtPnNpemUgPSBzaXplOworICAgICAgICBpdC0+c2Vjb25kLT5jYXBh
Y2l0eSA9IGNhcGFjaXR5OworICAgIH0gZWxzZQorICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRh
aW5lckNhcGFjaXR5VHJhY2tlciAlcCByZWNvcmRTaXplQW5kQ2FwYWNpdHkgZmFpbGVkIHRvIGZp
bmQgb2JqZWN0ICV1IiwgdGhpcywgb2JqZWN0SUQpOworfQorCit2b2lkIENvbnRhaW5lckNhcGFj
aXR5VHJhY2tlcjo6cmVjb3JkRnJlZShUcmFja2VkSUQgb2JqZWN0SUQpCit7CisgICAgaWYgKCFv
YmplY3RJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6cmVj
dXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1fbXV0ZXgpOworCisgICAgaWYgKG1fYXZvaWRSZWVu
dHJhbmN5KQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGF2b2lkUmVlbnRyYW5jeSA9IHRy
dWU7CisgICAgQXZvaWRSZWNvcmRpbmdTY29wZSBzY29wZSgqdGhpcywgJmF2b2lkUmVlbnRyYW5j
eSk7CisKKyAgICBhdXRvIHJlbW92ZWRDb3VudCA9IG1faW1wbC0+bV90cmFja2VkSURUb0NvbnRh
aW5lckRhdGEuZXJhc2Uob2JqZWN0SUQpOworICAgIGlmICghcmVtb3ZlZENvdW50KQorICAgICAg
ICBXVEZMb2dBbHdheXMoIkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlcjo6cmVjb3JkRnJlZSBnb3Qg
aWQgJXUgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIGVudHJ5Iiwgb2JqZWN0SUQpOworfQorCitzdGQ6
OnZlY3RvcjxBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhPiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6
OmFnZ3JlZ2F0ZUJ5Q2FsbFNpdGUoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFRyYWNrZWRJRCwg
QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYpPiYgcGVyT2JqZWN0Q2FsbGJhY2spCit7CisgICAgc3Rk
Ojpsb2NrX2d1YXJkPHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1fbXV0ZXgpOwor
CisgICAgYm9vbCBhdm9pZFJlZW50cmFuY3kgPSB0cnVlOworICAgIEF2b2lkUmVjb3JkaW5nU2Nv
cGUgc2NvcGUoKnRoaXMsICZhdm9pZFJlZW50cmFuY3kpOworCisgICAgdHlwZWRlZiB1bnNpZ25l
ZCBTdGFja1Nob3RIYXNoOworICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxTdGFja1Nob3RIYXNoLCBz
dGQ6OnVuaXF1ZV9wdHI8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4+IGNhbGxTaXRlVG9BbGxvY2F0
aW9uQWdncmVnYXRlOworCisgICAgZm9yIChjb25zdCBhdXRvJiBpdCA6IG1faW1wbC0+bV90cmFj
a2VkSURUb0NvbnRhaW5lckRhdGEpIHsKKyAgICAgICAgY29uc3QgQ29udGFpbmVyQWxsb2NhdGlv
bkRhdGEmIGFsbG9jYXRpb25EYXRhID0gKml0LnNlY29uZDsKKworICAgICAgICBBbGxvY2F0aW9u
Q2FsbFNpdGVEYXRhKiBjYWxsU2l0ZURhdGE7CisKKyAgICAgICAgYXV0byBmaW5kSXQgPSBjYWxs
U2l0ZVRvQWxsb2NhdGlvbkFnZ3JlZ2F0ZS5maW5kKGFsbG9jYXRpb25EYXRhLmFsbG9jYXRpb25T
dGFjay5oYXNoKCkpOworICAgICAgICBpZiAoZmluZEl0ID09IGNhbGxTaXRlVG9BbGxvY2F0aW9u
QWdncmVnYXRlLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRvIGluc2VydEl0ID0gY2FsbFNpdGVU
b0FsbG9jYXRpb25BZ2dyZWdhdGUuaW5zZXJ0KHsgYWxsb2NhdGlvbkRhdGEuYWxsb2NhdGlvblN0
YWNrLmhhc2goKSwgc3RkOjptYWtlX3VuaXF1ZTxBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhPihhbGxv
Y2F0aW9uRGF0YS5hbGxvY2F0aW9uU3RhY2spIH0pOworICAgICAgICAgICAgY2FsbFNpdGVEYXRh
ID0gaW5zZXJ0SXQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBjYWxsU2l0ZURhdGEgPSBmaW5kSXQtPnNlY29uZC5nZXQoKTsKKworICAgICAgICBjYWxs
U2l0ZURhdGEtPmNvdW50ICs9IDE7CisgICAgICAgIGNhbGxTaXRlRGF0YS0+dXNlZFNpemUgKz0g
YWxsb2NhdGlvbkRhdGEuc2l6ZTsKKyAgICAgICAgY2FsbFNpdGVEYXRhLT5jYXBhY2l0eSArPSBh
bGxvY2F0aW9uRGF0YS5jYXBhY2l0eTsKKworICAgICAgICBwZXJPYmplY3RDYWxsYmFjayhpdC5m
aXJzdCwgKmNhbGxTaXRlRGF0YSk7CisgICAgfQorCisgICAgc3RkOjp2ZWN0b3I8QWxsb2NhdGlv
bkNhbGxTaXRlRGF0YT4gcmVzdWx0OworICAgIGZvciAoYXV0byYgaXQgOiBjYWxsU2l0ZVRvQWxs
b2NhdGlvbkFnZ3JlZ2F0ZSkKKyAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhBbGxvY2F0aW9uQ2Fs
bFNpdGVEYXRhKCppdC5zZWNvbmQpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNp
dHlUcmFja2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jM2YxZjI5NzAzZmVhNGMyODEwMGM2NTMwZmFhODI4ZGYwYTkzMGRlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmgK
QEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV1RGX0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlcl9oCisjZGVmaW5lIFdU
Rl9Db250YWluZXJDYXBhY2l0eVRyYWNrZXJfaAorCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1
ZGUgPG11dGV4PgorI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
KyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgU3RhY2tT
aG90OworCitzdHJ1Y3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSB7CisgICAgQWxsb2NhdGlvbkNh
bGxTaXRlRGF0YShzaXplX3Qgc3RhY2tEZXB0aCA9IDAsIHNpemVfdCBzaXplID0gMCwgc2l6ZV90
IGNhcGFjaXR5ID0gMCk7CisgICAgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YShjb25zdCBTdGFja1No
b3QmKTsKKyAgICBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKGNvbnN0IEFsbG9jYXRpb25DYWxsU2l0
ZURhdGEmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkFsbG9jYXRpb25DYWxsU2l0ZURhdGEo
KTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBjb25zdCBTdGFja1Nob3QmIHN0YWNrKCkgY29u
c3Q7CisKKyAgICBzaXplX3QgY291bnQgeyAwIH07CisgICAgc2l6ZV90IHVzZWRTaXplIHsgMCB9
OworICAgIHNpemVfdCBjYXBhY2l0eSB7IDAgfTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U3RhY2tTaG90PiBtX3N0YWNrOyAvLyBOZWVkZWQgdG8gaGlkZSBTdGFja1Nob3QgdG8g
YXZvaWQgY2lyY3VsYXIgaW5jbHVkZXMuCit9OworCit0eXBlZGVmIHVuc2lnbmVkIFRyYWNrZWRJ
RDsKKworY2xhc3MgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShDb250YWluZXJDYXBhY2l0eVRyYWNrZXIpOworICAgIGZyaWVuZCBjbGFzcyBBdm9p
ZFJlY29yZGluZ1Njb3BlOworcHVibGljOgorICAgIC8vIENhbGwgc2l0ZXMgYXJlIGFnZ3JlZ2F0
ZWQgYnkgY2FsbCBzdGFjaywgdXNpbmcgYWdncmVnYXRpb25TdGFja0RlcHRoIGZyYW1lcy4KKyAg
ICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIoc2l6ZV90IGFnZ3JlZ2F0aW9uU3RhY2tEZXB0aCA9
IDE1KTsKKyAgICAKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVHJhY2tlZElEIHJlY29yZEFsbG9j
YXRpb24oc2l6ZV90IHNpemUsIHNpemVfdCBjYXBhY2l0eSk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVjb3JkU2l6ZUFuZENhcGFjaXR5KFRyYWNrZWRJRCwgc2l6ZV90IHNpemUsIHNp
emVfdCBjYXBhY2l0eSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVjb3JkRnJlZShU
cmFja2VkSUQpOworICAgIAorICAgIC8vIFJldHVybiBhIHZlY3RvciBvZiBwZXIgY2FsbHNpdGUg
ZGF0YTsgc2l6ZSBhbmQgY2FwYWNpdHkgYXJlIHN1bW1lZCBmb3IgYWxsIGFsbG9jYXRpb25zIHdp
dGggYSBnaXZlbiBjYWxsIHNpdGUuCisgICAgLy8gVGhlIHBhc3NlZCBmdW5jdGlvbiBhbGxvd3Mg
dGhlIGNhbGxlciB0byBkbyBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgcGVyIGFsbG9jYXRpb24uCisg
ICAgc3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4gYWdncmVnYXRlQnlDYWxsU2l0
ZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoVHJhY2tlZElELCBBbGxvY2F0aW9uQ2FsbFNpdGVE
YXRhJik+Jik7CisKK3ByaXZhdGU6CisgICAgLy8gVXNlIGEgcGltcGwgdG8gYXZvaWQgY2lyY3Vs
YXIgaW5jbHVkZXMgYmV0d2VlbiBvdXIgaGVhZGVyIGFuZCB0aGUgY29udGFpbmVyIGNsYXNzIGhl
YWRlcnMuCisgICAgc3RydWN0IENvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGw7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPENvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGw+IG1faW1wbDsKKyAgICBz
dGQ6OnJlY3Vyc2l2ZV9tdXRleCBtX211dGV4OworICAgIFRyYWNrZWRJRCBtX25leHRJRCB7IDAg
fTsKKyAgICBjb25zdCBzaXplX3QgbV9hZ2dyZWdhdGlvblN0YWNrRGVwdGg7CisgICAgYm9vbCog
bV9hdm9pZFJlZW50cmFuY3kgeyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYK
KwordXNpbmcgV1RGOjpDb250YWluZXJDYXBhY2l0eVRyYWNrZXI7CisKKyNlbmRpZiAvLyBXVEZf
Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
SGFzaFRhYmxlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5jcHAKaW5kZXggMGViNjAz
NmM4NjNmYjExM2ZlYzg5MTI1NmU1MDc1OTQ0MTE0YWJlMS4uOWRiMzMzMzFiMzc2NzE2ODJjODUy
N2VhYmUxODc1MzcyYjBhOGJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuY3BwCkBAIC0yMyw2ICsyMywxNSBA
QAogI2luY2x1ZGUgIkRhdGFMb2cuaCIKICNpbmNsdWRlIDxtdXRleD4KIAorI2lmIFRSQUNLX0hB
U0hUQUJMRV9DQVBBQ0lUWQorI2luY2x1ZGUgPHd0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIu
aD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2lmIFBMQVRGT1JNKENPQ09B
KQorI2luY2x1ZGUgPG5vdGlmeS5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1Nob3QuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTCkBAIC02NSw0
ICs3NCw2MyBAQCB2b2lkIEhhc2hUYWJsZVN0YXRzOjpkdW1wU3RhdHMoKQogCiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKENPQ09BKQorc3RhdGljIHZvaWQgZHVtcFdhc3RlZEhhc2hUYWJsZUNhcGFj
aXR5KCkKK3sKKyAgICBhdXRvIGNhbGxTaXRlRGF0YSA9IGhhc2hUYWJsZVRyYWNrZXIoKS5hZ2dy
ZWdhdGVCeUNhbGxTaXRlKFtdIChUcmFja2VkSUQsIEFsbG9jYXRpb25DYWxsU2l0ZURhdGEmKSB7
CisgICAgfSk7CisKKyAgICAvLyBNYWtlIGEgdmVjdG9yIG9mIHJhdyBwb2ludGVycyBzbyB3ZSBj
YW4gc29ydCB0aGVtLgorICAgIHN0ZDo6dmVjdG9yPEFsbG9jYXRpb25DYWxsU2l0ZURhdGEqPiBj
YWxsU2l0ZVB0cnM7CisgICAgZm9yIChjb25zdCBhdXRvJiBzaXRlRGF0YSA6IGNhbGxTaXRlRGF0
YSkgeworICAgICAgICBpZiAoIXNpdGVEYXRhLmNhcGFjaXR5KQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGNhbGxTaXRlUHRycy5wdXNoX2JhY2soY29uc3RfY2FzdDxBbGxvY2F0aW9u
Q2FsbFNpdGVEYXRhKj4oJnNpdGVEYXRhKSk7CisgICAgfQorCisgICAgLy8gU29ydCBieSByZXZl
cnNlIHdhc3RhZ2UuCisgICAgc3RkOjpzb3J0KGNhbGxTaXRlUHRycy5iZWdpbigpLCBjYWxsU2l0
ZVB0cnMuZW5kKCksIFtdIChjb25zdCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKiBhLCBjb25zdCBB
bGxvY2F0aW9uQ2FsbFNpdGVEYXRhKiBiKSB7CisgICAgICAgIHNpemVfdCBhV2FzdGFnZSA9IGEt
PmNhcGFjaXR5IC0gYS0+dXNlZFNpemU7CisgICAgICAgIHNpemVfdCBiV2FzdGFnZSA9IGItPmNh
cGFjaXR5IC0gYi0+dXNlZFNpemU7CisgICAgICAgIHJldHVybiBhV2FzdGFnZSA+IGJXYXN0YWdl
OworICAgIH0pOworCisgICAgY29uc3Qgc2l6ZV90IG1heENvdW50ID0gMTAwOworCisgICAgV1RG
TG9nQWx3YXlzKCIlbHUgY2FsbCBzaXRlcyBjcmVhdGVkIEhhc2hUYWJsZXMgKHZpYSBIYXNoTWFw
IG9yIEhhc2hTZXQpLiBTaG93aW5nICVsdSBzaXRlcyB3aXRoIG1vc3Qgd2FzdGFnZTpcbiIsIGNh
bGxTaXRlRGF0YS5zaXplKCksIG1heENvdW50KTsKKworICAgIHNpemVfdCBjb3VudCA9IDA7Cisg
ICAgZm9yIChhdXRvIHNpdGVEYXRhIDogY2FsbFNpdGVQdHJzKSB7CisgICAgICAgIGlmIChjb3Vu
dCsrID09IG1heENvdW50KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCJXYXN0ZWQgY2FwYWNpdHk6ICVsdSBieXRlcyAodXNlZCAlbHUgb2YgJWx1IGJ5dGVzLCB1
dGlsaXphdGlvbjogJS4yZiUlKSAtICVsdSBhbGxvY2F0aW9uc1xuIiwKKyAgICAgICAgICAgIHNp
dGVEYXRhLT5jYXBhY2l0eSAtIHNpdGVEYXRhLT51c2VkU2l6ZSwKKyAgICAgICAgICAgIHNpdGVE
YXRhLT51c2VkU2l6ZSwgc2l0ZURhdGEtPmNhcGFjaXR5LCAxMDAuMCAqIHNpdGVEYXRhLT51c2Vk
U2l6ZSAvIHNpdGVEYXRhLT5jYXBhY2l0eSwKKyAgICAgICAgICAgIHNpdGVEYXRhLT5jb3VudCk7
CisgICAgICAgIGNvbnN0IHNpemVfdCBmcmFtZXNUb1NraXAgPSA3OworICAgICAgICBXVEZQcmlu
dEJhY2t0cmFjZShzaXRlRGF0YS0+c3RhY2soKS5hcnJheSgpICsgZnJhbWVzVG9Ta2lwLCBzaXRl
RGF0YS0+c3RhY2soKS5zaXplKCkgLSBmcmFtZXNUb1NraXApOworICAgICAgICBXVEZMb2dBbHdh
eXMoIlxuIik7CisgICAgfQorfQorI2VuZGlmCisKK0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlciYg
aGFzaFRhYmxlVHJhY2tlcigpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxp
emVPbmNlLCBbXSB7CisgICAgICAgIGludCB0b2tlbjsKKyAgICAgICAgbm90aWZ5X3JlZ2lzdGVy
X2Rpc3BhdGNoKCJjb20uYXBwbGUuV2ViS2l0LmR1bXBIYXNoVGFibGVDYXBhY2l0eSIsICZ0b2tl
biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihpbnQpIHsKKyAgICAgICAgICAgIGR1bXBX
YXN0ZWRIYXNoVGFibGVDYXBhY2l0eSgpOworICAgICAgICB9KTsKKyAgICB9KTsKKyNlbmRpZgor
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdURjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2Vy
PiB0cmFja2VyOworICAgIHJldHVybiB0cmFja2VyOworfQorCisjZW5kaWYgLy8gVFJBQ0tfSEFT
SFRBQkxFX0NBUEFDSVRZCisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCBl
NmE5NTBmZDQwMDkzNmNjNGJmZjNkODY0YTI0Nzg1MmVhZGIzNWRlLi40MTI0YWFhYzNhNjMzYWJh
M2NiZWM2MzBlMzAxZmM1ZGIzYjUzOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNo
VGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtNDIsOCArNDIsMjAg
QEAKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2VuZGlmCiAKKy8vIEVuYWJsZSBUUkFDS19I
QVNIVEFCTEVfQ0FQQUNJVFkgdG8gdHJhY2sgY2FsbCBzaXRlcyB0aGF0IHdhc3RlIEhhc2hUYWJs
ZSBjYXBhY2l0eS4gT24gQ29jb2EgcGxhdGZvcm1zLCB0aGUgZGF0YSBjYW4gYmUgZHVtcGVkCisv
LyBieSBydW5uaW5nICJub3RpZnl1dGlsIC1wIGNvbS5hcHBsZS5XZWJLaXQuZHVtcEhhc2hUYWJs
ZUNhcGFjaXR5Ii4KKyNkZWZpbmUgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZIDAKKworI2lmIFRS
QUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorI2luY2x1ZGUgPHd0Zi9Db250YWluZXJDYXBhY2l0eVRy
YWNrZXIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAorI2lmIFRSQUNLX0hBU0hUQUJM
RV9DQVBBQ0lUWQorV1RGX0VYUE9SVF9QUklWQVRFIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlciYg
aGFzaFRhYmxlVHJhY2tlcigpOworI2VuZGlmCisKIC8vIEVuYWJsZXMgaW50ZXJuYWwgV1RGIGNv
bnNpc3RlbmN5IGNoZWNrcyB0aGF0IGFyZSBpbnZva2VkIGF1dG9tYXRpY2FsbHkuIE5vbi1XVEYg
Y2FsbGVycyBjYW4gY2FsbCBjaGVja1RhYmxlQ29uc2lzdGVuY3koKSBldmVuIGlmIGludGVybmFs
IGNoZWNrcyBhcmUgZGlzYWJsZWQuCiAjZGVmaW5lIENIRUNLX0hBU0hUQUJMRV9DT05TSVNURU5D
WSAwCiAKQEAgLTM2Miw2ICszNzQsMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAjaWYgQ0hFQ0tfSEFT
SFRBQkxFX1VTRV9BRlRFUl9ERVNUUlVDVElPTgogICAgICAgICAgICAgbV90YWJsZSA9IChWYWx1
ZVR5cGUqKSh1aW50cHRyX3QpMHhiYmFkYmVlZjsKICNlbmRpZgorCisjaWYgVFJBQ0tfSEFTSFRB
QkxFX0NBUEFDSVRZCisgICAgICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkRnJlZSht
X3RyYWNrZWRJRCk7CisgICAgICAgICAgICBtX3RyYWNrZWRJRCA9IDA7CisjZW5kaWYKICAgICAg
ICAgfQogCiAgICAgICAgIEhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmKTsKQEAgLTM4Myw2ICs0
MDAsOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdW5zaWduZWQgY2FwYWNpdHkoKSBjb25z
dCB7IHJldHVybiBtX3RhYmxlU2l6ZTsgfQogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiAhbV9rZXlDb3VudDsgfQogCisgICAgICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNv
bnN0OworICAgICAgICBzaXplX3QgY2FwYWNpdHlJbkJ5dGVzKCkgY29uc3Q7CisKICAgICAgICAg
QWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBhZGQ8SWRlbnRp
dHlUcmFuc2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0KHZhbHVlKSwgdmFsdWUpOyB9CiAg
ICAgICAgIEFkZFJlc3VsdCBhZGQoVmFsdWVUeXBlJiYgdmFsdWUpIHsgcmV0dXJuIGFkZDxJZGVu
dGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpLCBXVEZNb3ZlKHZh
bHVlKSk7IH0KIApAQCAtNDg5LDYgKzUwOSwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAg
dW5zaWduZWQgbV9rZXlDb3VudDsKICAgICAgICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7CiAK
KyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgVHJhY2tlZElEIG1fdHJhY2tl
ZElEIHsgMCB9OworI2VuZGlmCisKICNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAgICAg
cHVibGljOgogICAgICAgICAvLyBBbGwgYWNjZXNzIHRvIG1faXRlcmF0b3JzIHNob3VsZCBiZSBn
dWFyZGVkIHdpdGggbV9tdXRleC4KQEAgLTU1Niw2ICs1ODAsOSBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgLCBtX3N0YXRzKHN0ZDo6bWFrZV91bmlxdWU8U3RhdHM+KCkpCiAjZW5kaWYKICAg
ICB7CisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIG1fdHJhY2tlZElEID0g
aGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZEFsbG9jYXRpb24oMCwgMCk7CisjZW5kaWYKICAgICB9
CiAKICAgICBpbmxpbmUgdW5zaWduZWQgZG91YmxlSGFzaCh1bnNpZ25lZCBrZXkpCkBAIC05Mzgs
NyArOTY1LDExIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgZW50cnkgPSBleHBhbmQo
ZW50cnkpOwogCiAgICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7Ci0gICAg
ICAgIAorCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hUYWJsZVRy
YWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCks
IGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIHJldHVybiBBZGRSZXN1bHQo
bWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CiAgICAgfQogCkBAIC05NzcsNiAr
MTAwOCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVD
b25zaXN0ZW5jeSgpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhh
c2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJ
bkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIHJldHVybiBB
ZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CiAgICAgfQogCkBA
IC05OTcsNiArMTAzMiwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgbmV3RW50cnktPn5W
YWx1ZSgpOwogICAgICAgICBuZXcgKE5vdE51bGwsIG5ld0VudHJ5KSBWYWx1ZVR5cGUoV1RGTW92
ZShlbnRyeSkpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hU
YWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5
dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIHJldHVybiBuZXdF
bnRyeTsKICAgICB9CiAKQEAgLTEwNzAsNiArMTEwOSwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICAgICAgaWYgKHNob3VsZFNocmluaygpKQogICAgICAgICAgICAgc2hyaW5rKCk7CiAKKyNpZiBU
UkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29y
ZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5
dGVzKCkpOworI2VuZGlmCisKICAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3ko
KTsKICAgICB9CiAKQEAgLTExMzIsNyArMTE3NSwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAg
ICAgICBpZiAoc2hvdWxkU2hyaW5rKCkpCiAgICAgICAgICAgICBzaHJpbmsoKTsKLSAgICAgICAg
CisKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tl
cigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2Fw
YWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCisKICAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29u
c2lzdGVuY3koKTsKICAgICAgICAgcmV0dXJuIHJlbW92ZWRCdWNrZXRDb3VudDsKICAgICB9CkBA
IC0xMjIxLDYgKzEyNjgsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgZmFzdEZyZWUo
b2xkVGFibGUpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hU
YWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5
dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIGludGVybmFsQ2hl
Y2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybiBuZXdFbnRyeTsKICAgICB9CkBA
IC0xMjM4LDYgKzEyODksMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIG1fdGFibGVTaXpl
TWFzayA9IDA7CiAgICAgICAgIG1fa2V5Q291bnQgPSAwOwogICAgICAgICBtX2RlbGV0ZWRDb3Vu
dCA9IDA7CisKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgaGFzaFRhYmxl
VHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMo
KSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KQEAgLTEy
NTUsNiArMTMxMCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLCBtX3N0YXRzKHN0ZDo6
bWFrZV91bmlxdWU8U3RhdHM+KCpvdGhlci5tX3N0YXRzKSkKICNlbmRpZgogICAgIHsKKyNpZiBU
UkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgbV90cmFja2VkSUQgPSBoYXNoVGFibGVU
cmFja2VyKCkucmVjb3JkQWxsb2NhdGlvbihzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMo
KSk7CisjZW5kaWYKKwogICAgICAgICB1bnNpZ25lZCBvdGhlcktleUNvdW50ID0gb3RoZXIuc2l6
ZSgpOwogICAgICAgICBpZiAoIW90aGVyS2V5Q291bnQpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMjc2LDYgKzEzMzUsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBvdGhlclZhbHVlIDogb3RoZXIpCiAgICAgICAgICAgICBhZGRVbmlxdWVGb3JJbml0
aWFsaXphdGlvbjxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3Qob3Ro
ZXJWYWx1ZSksIG90aGVyVmFsdWUpOworCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisg
ICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2Vk
SUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+CkBAIC0xMjkwLDYgKzEzNTMsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IHN0ZDo6c3dhcChtX2tleUNvdW50LCBvdGhlci5tX2tleUNvdW50KTsKICAgICAgICAgc3RkOjpz
d2FwKG1fZGVsZXRlZENvdW50LCBvdGhlci5tX2RlbGV0ZWRDb3VudCk7CiAKKyNpZiBUUkFDS19I
QVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgc3RkOjpzd2FwKG1fdHJhY2tlZElELCBvdGhlci5t
X3RyYWNrZWRJRCk7CisKKyAgICAgICAgLy8gTm90IHN1cmUgaWYgdGhpcyBpcyBuZWNlc3Nhcnku
IE5vdGhpbmcgd2lsbCBoYXZlIGNoYW5nZWQuCisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5y
ZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5
SW5CeXRlcygpKTsKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBh
Y2l0eShvdGhlci5tX3RyYWNrZWRJRCwgb3RoZXIuc2l6ZUluQnl0ZXMoKSwgb3RoZXIuY2FwYWNp
dHlJbkJ5dGVzKCkpOworI2VuZGlmCisKICNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFC
TEUKICAgICAgICAgbV9zdGF0cy5zd2FwKG90aGVyLm1fc3RhdHMpOwogI2VuZGlmCkBAIC0xMzE4
LDYgKzEzODksMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIG1fa2V5Q291bnQgPSBvdGhl
ci5tX2tleUNvdW50OwogICAgICAgICBtX2RlbGV0ZWRDb3VudCA9IG90aGVyLm1fZGVsZXRlZENv
dW50OwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcCht
X3RyYWNrZWRJRCwgb3RoZXIubV90cmFja2VkSUQpOworI2VuZGlmCisKICAgICAgICAgb3RoZXIu
bV90YWJsZSA9IG51bGxwdHI7CiAgICAgICAgIG90aGVyLm1fdGFibGVTaXplID0gMDsKICAgICAg
ICAgb3RoZXIubV90YWJsZVNpemVNYXNrID0gMDsKQEAgLTEzMjgsNiArMTQwMywxMSBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICAgICAgbV9zdGF0cyA9IFdURk1vdmUob3RoZXIubV9zdGF0cyk7CiAg
ICAgICAgIG90aGVyLm1fc3RhdHMgPSBudWxscHRyOwogI2VuZGlmCisKKyNpZiBUUkFDS19IQVNI
VEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRD
YXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOwor
ICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG90aGVyLm1f
dHJhY2tlZElELCBvdGhlci5zaXplSW5CeXRlcygpLCBvdGhlci5jYXBhY2l0eUluQnl0ZXMoKSk7
CisjZW5kaWYKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgpAQCAtMTMzOCw2ICsxNDE4LDE4IEBAIG5hbWVz
cGFjZSBXVEYgewogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAg
ICBzaXplX3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+OjpzaXplSW5CeXRlcygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gc2l6ZSgpICogc2l6ZW9mKFZhbHVlVHlwZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAg
ICBzaXplX3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+OjpjYXBhY2l0eUluQnl0ZXMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGNhcGFjaXR5KCkgKiBzaXplb2YoVmFsdWVUeXBlKTsKKyAgICB9CisKICNpZiAh
QVNTRVJUX0RJU0FCTEVECiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
U2l6ZUxpbWl0cy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9TaXplTGltaXRzLmNwcAppbmRleCBiMGFk
MTQwNDRmM2I4NDExNjg2ZDNhMWFhOGVhZmI0ZGFiNzc3ODVjLi5mYmVkNjVmZTAxMDIyYzg4MGU3
ZTY2OTAwMmFiZDhmZTBhZjlkMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TaXplTGlt
aXRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TaXplTGltaXRzLmNwcApAQCAtODEsOSArODEs
MTIgQEAgcHVibGljOgogICAgIHR5cGVuYW1lIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVvZihU
KSwgc3RkOjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlPjo6dHlwZSBpbmxpbmVCdWZmZXJbaW5saW5l
Q2FwYWNpdHldOwogfTsKIAorI2lmICFUUkFDS19WRUNUT1JfQ0FQQUNJVFkKIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKFZlY3RvcjxpbnQ+KSA9PSBzaXplb2YoU2FtZVNpemVBc1ZlY3RvcldpdGhJbmxp
bmVDYXBhY2l0eTxpbnQ+KSwgIlZlY3RvciBzaG91bGQgc3RheSBzbWFsbCEiKTsKIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQsIDE+KSA9PSBzaXplb2YoU2FtZVNpemVBc1ZlY3Rvcldp
dGhJbmxpbmVDYXBhY2l0eTxpbnQsIDE+KSwgIlZlY3RvciBzaG91bGQgc3RheSBzbWFsbCEiKTsK
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQsIDI+KSA9PSBzaXplb2YoU2FtZVNpemVB
c1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxpbnQsIDI+KSwgIlZlY3RvciBzaG91bGQgc3RheSBz
bWFsbCEiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQsIDM+KSA9PSBzaXplb2Yo
U2FtZVNpemVBc1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxpbnQsIDM+KSwgIlZlY3RvciBzaG91
bGQgc3RheSBzbWFsbCEiKTsKKyNlbmRpZgorCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1N0YWNrU2hvdC5oIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKaW5kZXgg
N2UzMmEzNWJhZTNjN2I1NmE4YmU4NWI3ZDE4ZDFlNTU3OWEwYjNmYy4uZmM3Y2ZhNmE2NjI0ODFj
ZWQ0YzRhZGNmNTVjODU2ZjU3ZDVmMDZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3Rh
Y2tTaG90LmgKKysrIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhYmI2ZGYwMTRmZjZiNTZmYmU3YTA3
NWQ1Yjg0ZjUxMjkwOTAyMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0
b3IuY3BwCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVmVjdG9yLmgiCisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyNpbmNs
dWRlIDx3dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxub3RpZnkuaD4K
KyNpbmNsdWRlIDx3dGYvU3RhY2tTaG90Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisK
KyNpZiBQTEFURk9STShDT0NPQSkKK3N0YXRpYyB2b2lkIGR1bXBXYXN0ZWRWZWN0b3JDYXBhY2l0
eSgpCit7CisgICAgYXV0byBjYWxsU2l0ZURhdGEgPSB2ZWN0b3JUcmFja2VyKCkuYWdncmVnYXRl
QnlDYWxsU2l0ZShbXSAoVHJhY2tlZElELCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJikgeworICAg
IH0pOworCisgICAgLy8gTWFrZSBhIHZlY3RvciBvZiByYXcgcG9pbnRlcnMgc28gd2UgY2FuIHNv
cnQgdGhlbS4KKyAgICBzdGQ6OnZlY3RvcjxBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKj4gY2FsbFNp
dGVQdHJzOworICAgIGZvciAoY29uc3QgYXV0byYgc2l0ZURhdGEgOiBjYWxsU2l0ZURhdGEpIHsK
KyAgICAgICAgaWYgKCFzaXRlRGF0YS5jYXBhY2l0eSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBjYWxsU2l0ZVB0cnMucHVzaF9iYWNrKGNvbnN0X2Nhc3Q8QWxsb2NhdGlvbkNhbGxT
aXRlRGF0YSo+KCZzaXRlRGF0YSkpOworICAgIH0KKworICAgIC8vIFNvcnQgYnkgcmV2ZXJzZSB3
YXN0YWdlLgorICAgIHN0ZDo6c29ydChjYWxsU2l0ZVB0cnMuYmVnaW4oKSwgY2FsbFNpdGVQdHJz
LmVuZCgpLCBbXSAoY29uc3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogYSwgY29uc3QgQWxsb2Nh
dGlvbkNhbGxTaXRlRGF0YSogYikgeworICAgICAgICBzaXplX3QgYVdhc3RhZ2UgPSBhLT5jYXBh
Y2l0eSAtIGEtPnVzZWRTaXplOworICAgICAgICBzaXplX3QgYldhc3RhZ2UgPSBiLT5jYXBhY2l0
eSAtIGItPnVzZWRTaXplOworICAgICAgICByZXR1cm4gYVdhc3RhZ2UgPiBiV2FzdGFnZTsKKyAg
ICB9KTsKKworICAgIGNvbnN0IHNpemVfdCBtYXhDb3VudCA9IDEwMDsKKworICAgIFdURkxvZ0Fs
d2F5cygiJWx1IGNhbGwgc2l0ZXMgY3JlYXRlZCB2ZWN0b3JzLiBTaG93aW5nICVsdSBzaXRlcyB3
aXRoIG1vc3Qgd2FzdGFnZTpcbiIsIGNhbGxTaXRlRGF0YS5zaXplKCksIG1heENvdW50KTsKKwor
ICAgIHNpemVfdCBjb3VudCA9IDA7CisgICAgZm9yIChhdXRvIHNpdGVEYXRhIDogY2FsbFNpdGVQ
dHJzKSB7CisgICAgICAgIGlmIChjb3VudCsrID09IG1heENvdW50KQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJXYXN0ZWQgY2FwYWNpdHk6ICVsdSBieXRlcyAo
dXNlZCAlbHUgb2YgJWx1IGJ5dGVzLCB1dGlsaXphdGlvbjogJS4yZiUlKSAtICVsdSBhbGxvY2F0
aW9uc1xuIiwKKyAgICAgICAgICAgIHNpdGVEYXRhLT5jYXBhY2l0eSAtIHNpdGVEYXRhLT51c2Vk
U2l6ZSwKKyAgICAgICAgICAgIHNpdGVEYXRhLT51c2VkU2l6ZSwgc2l0ZURhdGEtPmNhcGFjaXR5
LCAxMDAuMCAqIHNpdGVEYXRhLT51c2VkU2l6ZSAvIHNpdGVEYXRhLT5jYXBhY2l0eSwKKyAgICAg
ICAgICAgIHNpdGVEYXRhLT5jb3VudCk7CisgICAgICAgIGNvbnN0IHNpemVfdCBmcmFtZXNUb1Nr
aXAgPSA3OworICAgICAgICBXVEZQcmludEJhY2t0cmFjZShzaXRlRGF0YS0+c3RhY2soKS5hcnJh
eSgpICsgZnJhbWVzVG9Ta2lwLCBzaXRlRGF0YS0+c3RhY2soKS5zaXplKCkgLSBmcmFtZXNUb1Nr
aXApOworICAgICAgICBXVEZMb2dBbHdheXMoIlxuIik7CisgICAgfQorfQorI2VuZGlmCisKK0Nv
bnRhaW5lckNhcGFjaXR5VHJhY2tlciYgdmVjdG9yVHJhY2tlcigpCit7CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOworICAgIHN0
ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlLCBbXSB7CisgICAgICAgIGludCB0b2tlbjsKKyAg
ICAgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJjb20uYXBwbGUuV2ViS2l0LmR1bXBWZWN0
b3JDYXBhY2l0eSIsICZ0b2tlbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihpbnQpIHsK
KyAgICAgICAgICAgIGR1bXBXYXN0ZWRWZWN0b3JDYXBhY2l0eSgpOworICAgICAgICB9KTsKKyAg
ICB9KTsKKyNlbmRpZgorCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdURjo6Q29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyPiB0cmFja2VyOworICAgIHJldHVybiB0cmFja2VyOworfQorCit9IC8v
IG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApp
bmRleCA2NmUzYmUyYWU2ODhiMGZkNWUzNDhjMDc0YTVjM2Y1NGY4OTBhMzg0Li5hM2Q5Y2NiMDUw
MzY5Y2QxMjU5NWEyNDQxZDczMmJkNmE3YWRkYTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9WZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtMzcsMTIgKzM3LDI0
IEBACiAjaW5jbHVkZSA8d3RmL1ZhbHVlQ2hlY2suaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yVHJh
aXRzLmg+CiAKKy8vIEVuYWJsZSBUUkFDS19WRUNUT1JfQ0FQQUNJVFkgdG8gdHJhY2sgY2FsbCBz
aXRlcyB0aGF0IHdhc3RlIHZlY3RvciBjYXBhY2l0eS4gT24gQ29jb2EgcGxhdGZvcm1zLCB0aGUg
ZGF0YSBjYW4gYmUgZHVtcGVkCisvLyBieSBydW5uaW5nICJub3RpZnl1dGlsIC1wIGNvbS5hcHBs
ZS5XZWJLaXQuZHVtcFZlY3RvckNhcGFjaXR5Ii4KKyNkZWZpbmUgVFJBQ0tfVkVDVE9SX0NBUEFD
SVRZIDAKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorI2luY2x1ZGUgPHd0Zi9Db250YWlu
ZXJDYXBhY2l0eVRyYWNrZXIuaD4KKyNlbmRpZgorCiAjaWYgQVNBTl9FTkFCTEVECiBleHRlcm4g
IkMiIHZvaWQgX19zYW5pdGl6ZXJfYW5ub3RhdGVfY29udGlndW91c19jb250YWluZXIoY29uc3Qg
dm9pZCogYmVnaW4sIGNvbnN0IHZvaWQqIGVuZCwgY29uc3Qgdm9pZCogb2xkX21pZCwgY29uc3Qg
dm9pZCogbmV3X21pZCk7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CiAKKyNpZiBUUkFDS19W
RUNUT1JfQ0FQQUNJVFkKK1dURl9FWFBPUlRfUFJJVkFURSBDb250YWluZXJDYXBhY2l0eVRyYWNr
ZXImIHZlY3RvclRyYWNrZXIoKTsKKyNlbmRpZgorICAgIAogdGVtcGxhdGUgPGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbiwgdHlwZW5hbWUgVD4KIHN0cnVjdCBWZWN0b3JEZXN0cnVjdG9yOwogCkBAIC0z
MzksNiArMzUxLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90IGJ1ZmZlck1lbW9y
eU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWZWN0b3JCdWZmZXJCYXNlLCBtX2J1
ZmZlcik7IH0KICAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2NhcGFjaXR5
OyB9CiAKKyAgICBzaXplX3QgY2FwYWNpdHlJbkJ5dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBjYXBhY2l0eSgpICogc2l6ZW9mKFQpOworICAgIH0KKworICAgIHNpemVfdCBzaXpl
SW5CeXRlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zaXplICogc2l6ZW9mKFQp
OworICAgIH0KKwogICAgIE1hbGxvY1B0cjxUPiByZWxlYXNlQnVmZmVyKCkKICAgICB7CiAgICAg
ICAgIFQqIGJ1ZmZlciA9IG1fYnVmZmVyOwpAQCAtMzUzLDYgKzM3NSw5IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgLCBtX2NhcGFjaXR5KDApCiAgICAgICAgICwgbV9zaXplKDApCiAgICAgeworI2lm
IFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBtX3RyYWNrZWRJRCA9IHZlY3RvclRyYWNr
ZXIoKS5yZWNvcmRBbGxvY2F0aW9uKDAsIDApOworI2VuZGlmCiAgICAgfQogCiAgICAgVmVjdG9y
QnVmZmVyQmFzZShUKiBidWZmZXIsIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IHNpemUpCkBAIC0z
NjAsMTYgKzM4NSwyNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9jYXBhY2l0eShjYXBhY2l0
eSkKICAgICAgICAgLCBtX3NpemUoc2l6ZSkKICAgICB7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFD
SVRZCisgICAgICAgIG1fdHJhY2tlZElEID0gdmVjdG9yVHJhY2tlcigpLnJlY29yZEFsbG9jYXRp
b24oc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQogCiAg
ICAgflZlY3RvckJ1ZmZlckJhc2UoKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxk
IGJlIG5pY2UgdG8gZmluZCBhIHdheSB0byBBU1NFUlQgdGhhdCBtX2J1ZmZlciBoYXNuJ3QgbGVh
a2VkIGhlcmUuCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNr
ZXIoKS5yZWNvcmRGcmVlKG1fdHJhY2tlZElEKTsKKyAgICAgICAgbV90cmFja2VkSUQgPSAwOwor
I2VuZGlmCiAgICAgfQogCiAgICAgVCogbV9idWZmZXI7CiAgICAgdW5zaWduZWQgbV9jYXBhY2l0
eTsKICAgICB1bnNpZ25lZCBtX3NpemU7IC8vIE9ubHkgdXNlZCBieSB0aGUgVmVjdG9yIHN1YmNs
YXNzLCBidXQgcGxhY2VkIGhlcmUgdG8gYXZvaWQgcGFkZGluZyB0aGUgc3RydWN0LgorI2lmIFRS
QUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIFRyYWNrZWRJRCBtX3RyYWNrZWRJRCB7IDAgfTsKKyNl
bmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgpA
QCAtNDAyLDYgKzQzNyw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN0ZDo6c3dhcChtX2J1
ZmZlciwgb3RoZXIubV9idWZmZXIpOwogICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3Ro
ZXIubV9jYXBhY2l0eSk7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHN0ZDo6
c3dhcChtX3RyYWNrZWRJRCwgb3RoZXIubV90cmFja2VkSUQpOworI2VuZGlmCiAgICAgfQogICAg
IAogICAgIHZvaWQgcmVzdG9yZUlubGluZUJ1ZmZlcklmTmVlZGVkKCkgeyB9CkBAIC00MjMsMTAg
KzQ2MSwxNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CiAgICAgdXNpbmcg
QmFzZTo6YnVmZmVyTWVtb3J5T2Zmc2V0OwogCisgICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHlJbkJ5
dGVzOworICAgIHVzaW5nIEJhc2U6OnNpemVJbkJ5dGVzOworCiAgICAgdXNpbmcgQmFzZTo6cmVs
ZWFzZUJ1ZmZlcjsKIAogcHJvdGVjdGVkOgogICAgIHVzaW5nIEJhc2U6Om1fc2l6ZTsKKyNpZiBU
UkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB1c2luZyBCYXNlOjptX3RyYWNrZWRJRDsKKyNlbmRp
ZgogCiBwcml2YXRlOgogICAgIHVzaW5nIEJhc2U6Om1fYnVmZmVyOwpAQCAtNTE0LDYgKzU1OCwx
MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV9idWZmZXIsIG90aGVyLm1fYnVm
ZmVyKTsKICAgICAgICAgICAgIHN0ZDo6c3dhcChtX2NhcGFjaXR5LCBvdGhlci5tX2NhcGFjaXR5
KTsKICAgICAgICAgfQorCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHN0ZDo6
c3dhcChtX3RyYWNrZWRJRCwgb3RoZXIubV90cmFja2VkSUQpOworI2VuZGlmCiAgICAgfQogCiAg
ICAgdm9pZCByZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQoKQpAQCAtNTQwLDYgKzU4OCw4IEBA
IHB1YmxpYzoKICAgICB1c2luZyBCYXNlOjpidWZmZXI7CiAgICAgdXNpbmcgQmFzZTo6Y2FwYWNp
dHk7CiAgICAgdXNpbmcgQmFzZTo6YnVmZmVyTWVtb3J5T2Zmc2V0OworICAgIHVzaW5nIEJhc2U6
OmNhcGFjaXR5SW5CeXRlczsKKyAgICB1c2luZyBCYXNlOjpzaXplSW5CeXRlczsKIAogICAgIE1h
bGxvY1B0cjxUPiByZWxlYXNlQnVmZmVyKCkKICAgICB7CkBAIC01NTAsNiArNjAwLDkgQEAgcHVi
bGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdXNpbmcgQmFzZTo6bV9zaXplOworI2lmIFRSQUNLX1ZF
Q1RPUl9DQVBBQ0lUWQorICAgIHVzaW5nIEJhc2U6Om1fdHJhY2tlZElEOworI2VuZGlmCiAKIHBy
aXZhdGU6CiAgICAgdXNpbmcgQmFzZTo6bV9idWZmZXI7CkBAIC02NTgsNiArNzExLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgcmVzdWx0Lm1fc2l6ZSA9IHNpemU7CiAKICAgICAgICAgcmVzdWx0LnVu
Y2hlY2tlZEluaXRpYWxpemU8MD4oc3RkOjpmb3J3YXJkPEl0ZW1zPihpdGVtcykuLi4pOworCisj
aWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRT
aXplQW5kQ2FwYWNpdHkocmVzdWx0Lm1fdHJhY2tlZElELCByZXN1bHQuc2l6ZUluQnl0ZXMoKSwg
cmVzdWx0LmNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIApAQCAtNjg1LDYgKzc0Miw5IEBAIHB1YmxpYzoKICAgICBzaXplX3QgY2FwYWNp
dHkoKSBjb25zdCB7IHJldHVybiBCYXNlOjpjYXBhY2l0eSgpOyB9CiAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQogCisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkg
Y29uc3QgeyByZXR1cm4gQmFzZTo6c2l6ZUluQnl0ZXMoKTsgfQorICAgIHNpemVfdCBjYXBhY2l0
eUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBCYXNlOjpjYXBhY2l0eUluQnl0ZXMoKTsgfQorCiAg
ICAgVCYgYXQoc2l6ZV90IGkpCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoaSA+PSBzaXpl
KCkpKQpAQCAtODA4LDkgKzg2OCwxNyBAQCBwdWJsaWM6CiAKICAgICAgICAgQmFzZTo6c3dhcChv
dGhlciwgbV9zaXplLCBvdGhlci5tX3NpemUpOwogICAgICAgICBzdGQ6OnN3YXAobV9zaXplLCBv
dGhlci5tX3NpemUpOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBzdGQ6OnN3
YXAobV90cmFja2VkSUQsIG90aGVyLm1fdHJhY2tlZElEKTsKKyNlbmRpZgogCiAgICAgICAgIGFz
YW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRvKG1fc2l6ZSk7CiAgICAgICAgIG90aGVyLmFzYW5TZXRJ
bml0aWFsQnVmZmVyU2l6ZVRvKG90aGVyLm1fc2l6ZSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQ
QUNJVFkKKyAgICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3Ry
YWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworICAgICAgICB2ZWN0
b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG90aGVyLm1fdHJhY2tlZElELCBvdGhl
ci5zaXplSW5CeXRlcygpLCBvdGhlci5jYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICB9
CiAKICAgICB2b2lkIHJldmVyc2UoKTsKQEAgLTg2MCw2ICs5MjgsMTEgQEAgcHJpdmF0ZToKICAg
ICB1c2luZyBCYXNlOjpyZWFsbG9jYXRlQnVmZmVyOwogICAgIHVzaW5nIEJhc2U6OnJlc3RvcmVJ
bmxpbmVCdWZmZXJJZk5lZWRlZDsKICAgICB1c2luZyBCYXNlOjpyZWxlYXNlQnVmZmVyOworCisj
aWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdXNpbmcgQmFzZTo6bV90cmFja2VkSUQ7Cisj
ZW5kaWYKKwogI2lmIEFTQU5fRU5BQkxFRAogICAgIHVzaW5nIEJhc2U6OmVuZE9mQnVmZmVyOwog
I2VuZGlmCkBAIC04NzMsNiArOTQ2LDEwIEBAIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3Zl
cmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OlZlY3Rvcihjb25zdCBWZWN0b3ImIG90CiAKICAg
ICBpZiAoYmVnaW4oKSkKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRDb3B5
KG90aGVyLmJlZ2luKCksIG90aGVyLmVuZCgpLCBiZWdpbigpKTsKKworI2lmIFRSQUNLX1ZFQ1RP
Ul9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90
cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92
ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtODg0LDYgKzk2MSwxMCBAQCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpW
ZWN0b3IoY29uc3QgVmVjdG9yPFQsCiAKICAgICBpZiAoYmVnaW4oKSkKICAgICAgICAgVHlwZU9w
ZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJlZ2luKCksIG90aGVyLmVuZCgpLCBi
ZWdpbigpKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIo
KS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFj
aXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFj
aXR5PgpAQCAtOTA2LDYgKzk4NywxMCBAQCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdAogICAgIFR5
cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpICsgc2l6ZSgpLCBv
dGhlci5lbmQoKSwgZW5kKCkpOwogICAgIG1fc2l6ZSA9IG90aGVyLnNpemUoKTsKIAorI2lmIFRS
QUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2Fw
YWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNl
bmRpZgorCiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC05MzQsNiArMTAxOSwxMCBAQCBWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiBWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdAogICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29w
eShvdGhlci5iZWdpbigpICsgc2l6ZSgpLCBvdGhlci5lbmQoKSwgZW5kKCkpOwogICAgIG1fc2l6
ZSA9IG90aGVyLnNpemUoKTsKIAorI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3Rv
clRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVz
KCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuICp0aGlzOwogfQog
CkBAIC0xMDE1LDYgKzExMDQsMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpmaWxsKGNvbnN0IFQmIHZhbCwKICAgICBzdGQ6
OmZpbGwoYmVnaW4oKSwgZW5kKCksIHZhbCk7CiAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlh
bGl6ZWRGaWxsKGVuZCgpLCBiZWdpbigpICsgbmV3U2l6ZSwgdmFsKTsKICAgICBtX3NpemUgPSBu
ZXdTaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigp
LnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNp
dHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNp
dHk+CkBAIC0xMDg2LDYgKzExNzksMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNh
cGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVzaXplKHNpemUKICAgICB9
CiAgICAgCiAgICAgbV9zaXplID0gc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQor
ICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNp
emVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxl
ciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTEwMiw2ICsxMTk5LDEwIEBAIHZvaWQgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6c2hyaW5r
KHNpemVfdCBzaXplCiAgICAgVHlwZU9wZXJhdGlvbnM6OmRlc3RydWN0KGJlZ2luKCkgKyBzaXpl
LCBlbmQoKSk7CiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8oc2l6ZSk7CiAgICAgbV9z
aXplID0gc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNr
ZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNh
cGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNh
cGFjaXR5PgpAQCAtMTExNCw2ICsxMjE1LDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFj
aXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6Z3JvdyhzaXplX3Qgc2l6ZSkKICAg
ICBpZiAoYmVnaW4oKSkKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OmluaXRpYWxpemVJZk5vblBP
RChlbmQoKSwgYmVnaW4oKSArIHNpemUpOwogICAgIG1fc2l6ZSA9IHNpemU7CisKKyNpZiBUUkFD
S19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFj
aXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5k
aWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBl
bmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTExNzcsNiArMTI4
MiwxMCBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBt
aW5DYXBhY2l0eT46OnJlc2VydmVDYXBhY2l0eShzaQogCiAgICAgVHlwZU9wZXJhdGlvbnM6Om1v
dmUob2xkQnVmZmVyLCBvbGRFbmQsIGJlZ2luKCkpOwogICAgIEJhc2U6OmRlYWxsb2NhdGVCdWZm
ZXIob2xkQnVmZmVyKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRy
YWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCks
IGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1p
bkNhcGFjaXR5PgpAQCAtMTE5OSw2ICsxMzA4LDEwIEBAIGJvb2wgVmVjdG9yPFQsIGlubGluZUNh
cGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6dHJ5UmVzZXJ2ZUNhcGFjaXR5
CiAKICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZShvbGRCdWZmZXIsIG9sZEVuZCwgYmVnaW4oKSk7
CiAgICAgQmFzZTo6ZGVhbGxvY2F0ZUJ1ZmZlcihvbGRCdWZmZXIpOworCisjaWYgVFJBQ0tfVkVD
VE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eSht
X3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEyMDksNiArMTMyMiwxMCBAQCBpbmxpbmUgdm9pZCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojpy
ZXNlcnZlSW5pdAogICAgIEFTU0VSVChjYXBhY2l0eSgpID09IGlubGluZUNhcGFjaXR5KTsKICAg
ICBpZiAoaW5pdGlhbENhcGFjaXR5ID4gaW5saW5lQ2FwYWNpdHkpCiAgICAgICAgIEJhc2U6OmFs
bG9jYXRlQnVmZmVyKGluaXRpYWxDYXBhY2l0eSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJ
VFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElE
LCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTEyMjcsNiArMTM0NCw5IEBAIHZvaWQgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6c2hy
aW5rQ2FwYWNpdHkoc2l6CiAgICAgICAgIGlmIChCYXNlOjpzaG91bGRSZWFsbG9jYXRlQnVmZmVy
KG5ld0NhcGFjaXR5KSkgewogICAgICAgICAgICAgQmFzZTo6cmVhbGxvY2F0ZUJ1ZmZlcihuZXdD
YXBhY2l0eSk7CiAgICAgICAgICAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhzaXplKCkp
OworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICAgICAgdmVjdG9yVHJhY2tlcigp
LnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNp
dHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtMTI0MCw2ICsxMzYwLDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6c2hyaW5rQ2FwYWNpdHkoc2l6CiAgICAgQmFzZTo6
cmVzdG9yZUlubGluZUJ1ZmZlcklmTmVlZGVkKCk7CiAKICAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZl
clNpemVUbyhzaXplKCkpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9y
VHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMo
KSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qg
bWluQ2FwYWNpdHk+CkBAIC0xMjU3LDYgKzEzODEsMTAgQEAgQUxXQVlTX0lOTElORSB2b2lkIFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmFw
cGUKICAgICBUKiBkZXN0ID0gZW5kKCk7CiAgICAgVmVjdG9yQ29waWVyPHN0ZDo6aXNfdHJpdmlh
bDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRpYWxpemVkQ29weShkYXRhLCBzdGQ6OmFkZHJlc3NvZihk
YXRhW2RhdGFTaXplXSksIGRlc3QpOwogICAgIG1fc2l6ZSA9IG5ld1NpemU7CisKKyNpZiBUUkFD
S19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFj
aXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5k
aWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBl
bmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTEyNzYsNiArMTQw
NCwxMCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6dHJ5QQogICAgIFQqIGRlc3QgPSBlbmQoKTsKICAg
ICBWZWN0b3JDb3BpZXI8c3RkOjppc190cml2aWFsPFQ+Ojp2YWx1ZSwgVT46OnVuaW5pdGlhbGl6
ZWRDb3B5KGRhdGEsIHN0ZDo6YWRkcmVzc29mKGRhdGFbZGF0YVNpemVdKSwgZGVzdCk7CiAgICAg
bV9zaXplID0gbmV3U2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3Rv
clRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVz
KCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0xMjg3LDYgKzE0MTksOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgVmVjdG9yPFQsIGlubGluZUNh
cGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6YXBwZQogICAgICAgICBhc2Fu
QnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICAgICAgbmV3IChOb3ROdWxs
LCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKICAgICAgICAgKyttX3NpemU7Cisj
aWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRT
aXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRl
cygpKTsKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzAxLDYgKzE0MzYs
OSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxv
d0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6Y29ucwogICAgICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxD
aGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgICAgICArK21fc2l6ZTsKKyNpZiBUUkFDS19W
RUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBh
Y2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2Vu
ZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzMTUsNiArMTQ1Myw5IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwg
bWluQ2FwYWNpdHk+Ojp0cnlDCiAgICAgICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1f
c2l6ZSArIDEpOwogICAgICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLik7CiAgICAgICAgICsrbV9zaXplOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBB
Q0lUWQorICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJh
Y2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtMTMzNCw2ICsxNDc1LDEwIEBAIHZvaWQg
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6
YXBwZW5kU2xvd0Nhc2UoVSYmCiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXpl
ICsgMSk7CiAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8VT4oKnB0cikp
OwogICAgICsrbV9zaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9y
VHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMo
KSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qg
bWluQ2FwYWNpdHk+CkBAIC0xMzQ4LDYgKzE0OTMsMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5l
Q2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojpjb25zdHJ1Y3RBbmRBcHBl
bmQKICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICBuZXcg
KE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgICAgKytt
X3NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCku
cmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0
eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0
eT4KQEAgLTEzNjMsNiArMTUxMiwxMCBAQCBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwg
T3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnRyeUNvbnN0cnVjdEFuZEFwcAogICAgIGFz
YW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEpOwogICAgIG5ldyAoTm90TnVsbCwg
ZW5kKCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKICAgICArK21fc2l6ZTsKKwor
I2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXpl
QW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygp
KTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMzc5LDYgKzE1MzIsMTAgQEAg
QUxXQVlTX0lOTElORSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyLCBtaW5DYXBhY2l0eT46OnVuY2gKIAogICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3Rk
Ojpmb3J3YXJkPFU+KHZhbHVlKSk7CiAgICAgKyttX3NpemU7CisKKyNpZiBUUkFDS19WRUNUT1Jf
Q0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJh
Y2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVy
Zmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTE0MDUsNiArMTU2MiwxMCBAQCB2
b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0
eT46Omluc2VydChzaXplX3QgcG9zaQogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBp
bmcoc3BvdCwgZW5kKCksIHNwb3QgKyBkYXRhU2l6ZSk7CiAgICAgVmVjdG9yQ29waWVyPHN0ZDo6
aXNfdHJpdmlhbDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRpYWxpemVkQ29weShkYXRhLCBzdGQ6OmFk
ZHJlc3NvZihkYXRhW2RhdGFTaXplXSksIHNwb3QpOwogICAgIG1fc2l6ZSA9IG5ld1NpemU7CisK
KyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6
ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMo
KSk7CisjZW5kaWYKIH0KICAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0x
NDI1LDYgKzE1ODYsMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6aW5zZXJ0KHNpemUKICAgICBUeXBlT3BlcmF0
aW9uczo6bW92ZU92ZXJsYXBwaW5nKHNwb3QsIGVuZCgpLCBzcG90ICsgMSk7CiAgICAgbmV3IChO
b3ROdWxsLCBzcG90KSBUKHN0ZDo6Zm9yd2FyZDxVPigqcHRyKSk7CiAgICAgKyttX3NpemU7CisK
KyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6
ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMo
KSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFj
aXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTE0
NDMsNiArMTYwOCwxMCBAQCBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpyZW1vdmUoc2l6ZQogICAgIFR5cGVPcGVyYXRp
b25zOjptb3ZlT3ZlcmxhcHBpbmcoc3BvdCArIDEsIGVuZCgpLCBzcG90KTsKICAgICBhc2FuQnVm
ZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgLSAxKTsKICAgICAtLW1fc2l6ZTsKKworI2lmIFRS
QUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2Fw
YWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNl
bmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTQ1Niw2ICsx
NjI1LDEwIEBAIGlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyLCBtaW5DYXBhY2l0eT46OnJlbW92ZShzaXplCiAgICAgVHlwZU9wZXJhdGlvbnM6Om1v
dmVPdmVybGFwcGluZyhlbmRTcG90LCBlbmQoKSwgYmVnaW5TcG90KTsKICAgICBhc2FuQnVmZmVy
U2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgLSBsZW5ndGgpOwogICAgIG1fc2l6ZSAtPSBsZW5ndGg7
CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3Jk
U2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0
ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAg
LTE1MTMsNiArMTY4NiwxMCBAQCBpbmxpbmUgdW5zaWduZWQgVmVjdG9yPFQsIGlubGluZUNhcGFj
aXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVtb3ZlQQogICAgICAgICBUeXBl
T3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKGhvbGVFbmQsIGVuZCgpLCBob2xlQmVnaW4pOwog
ICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSAtIG1hdGNoQ291bnQpOwogICAg
IG1fc2l6ZSAtPSBtYXRjaENvdW50OworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAg
dmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUlu
Qnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgcmV0dXJuIG1hdGNoQ291
bnQ7CiB9CiAKQEAgLTE1NTMsNiArMTczMCwxMCBAQCBpbmxpbmUgTWFsbG9jUHRyPFQ+IFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJlbAog
ICAgIH0KICAgICBtX3NpemUgPSAwOwogICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgY2FsbCBCYXNl
OjpyZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQoKSBoZXJlPworCisjaWYgVFJBQ0tfVkVDVE9S
X0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3Ry
YWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAg
cmV0dXJuIGJ1ZmZlcjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342887</attachid>
            <date>2018-06-16 13:03:09 -0700</date>
            <delta_ts>2018-06-16 13:55:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186698-20180616130308.patch</filename>
            <type>text/plain</type>
            <size>54939</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyOTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2YTBlZTk1YjM1YWM1ZWY3YmU5NmFh
YmU0YTg5YmQ2NTgyN2FmNGEuLmM5ZDU1OWNiY2JmOWIwZGZjYWM1MTBjNmIxMDdlMDk2OTM0Y2Ji
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTgtMDYtMTYgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0cmFjayBj
YWxsIHNpdGVzIHRoYXQgd2FzdGUgVmVjdG9yIGNhcGFjaXR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY2OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZCBDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIgd2hpY2ggY2FuIGFnZ3JlZ2F0ZSBkYXRhIG9uIGEgcGVyLWNhbGwgc2l0ZSBiYXNp
cyAoYnkgdGFraW5nCisgICAgICAgIGEgc3RhY2tzaG90IE4gZnJhbWVzIGRlZXAsIGFuZCBoYXNo
aW5nIGl0KSwgYW5kIGlzIGluZm9ybWVkIGFib3V0IGFsbG9jYXRpb25zLCBzaXplIGFuZCAKKyAg
ICAgICAgY2FwYWNpdHkgY2hhbmdlcywgYW5kIGZyZWVzIG9mIGNvbnRhaW5lciB0eXBlcyAoZS5n
LiBWZWN0b3IgYW5kIEhhc2hNYXApLgorICAgICAgICAKKyAgICAgICAgV2hlbiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkgaXMgZGVmaW5lZCBpbiBWZWN0b3IuaCwgYSBzaW5nbGV0b24gQ29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyCisgICAgICAgIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiBhbGwgVmVj
dG9ycyBhbmQgdGhlaXIgc2l6ZSBhbmQgY2FwYWNpdHkgY2hhbmdlcy4gVmVjdG9yIGdhaW5zCisg
ICAgICAgIGFuIG1fdHJhY2tlZElEIG1lbWJlciB2YXJpYWJsZSB0byBhbGxvdyB0cmFja2luZyAo
VmVjdG9ycyBjYW4gYmUgV1RGTW92ZWQgYW5kIHN0ZDo6c3dhcHBlZCwKKyAgICAgICAgc28gd2Ug
Y2FuJ3QgcmVseSBvbiB0aGVpciBhZGRyZXNzIHRvIHRyYWNrIHRoZW0pLgorICAgICAgICAKKyAg
ICAgICAgRGF0YSBhYm91dCBsaXZlIFZlY3RvcnMgY2FuIHRoZW4gYmUgZHVtcGVkIHdpdGggIm5v
dGlmeXV0aWwgLXAgY29tLmFwcGxlLldlYktpdC5kdW1wVmVjdG9yQ2FwYWNpdHkiLAorICAgICAg
ICB2aWEgY29kZSBpbiBWZWN0b3IuY3BwLgorICAgICAgICAKKyAgICAgICAgQ29udGFpbmVyQ2Fw
YWNpdHlUcmFja2VyIHRha2VzIGNhcmUgdG8gYXZvaWQgcmUtZW50cmFuY3kgKGFsbG93IGl0IHRv
IHVzZSB0aGUgY29udGFpbmVyIHR5cGVzKQorICAgICAgICB3aGlsZSBiZWluZyBjYWxsYWJsZSBm
cm9tIGRpZmZlcmVudCB0aHJlYWRzLgorICAgICAgICAKKyAgICAgICAgKiBXVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAqIHd0
Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaDogQWRkZWQuCisgICAgICAgICogd3RmL1NpemVM
aW1pdHMuY3BwOgorICAgICAgICAqIHd0Zi9TdGFja1Nob3QuaDoKKyAgICAgICAgKiB3dGYvVmVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OmR1bXBXYXN0ZWRWZWN0b3JDYXBhY2l0eSk6
CisgICAgICAgIChXVEY6OnZlY3RvclRyYWNrZXIpOgorICAgICAgICAqIHd0Zi9WZWN0b3IuaDoK
KyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6Y2FwYWNpdHlJbkJ5dGVzIGNvbnN0KToK
KyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6c2l6ZUluQnl0ZXMgY29uc3QpOgorICAg
ICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjpWZWN0b3JCdWZmZXJCYXNlKToKKyAgICAgICAg
KFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6flZlY3RvckJ1ZmZlckJhc2UpOgorICAgICAgICAoV1RG
OjpWZWN0b3JCdWZmZXI6OnN3YXApOgorICAgICAgICAoV1RGOjpWZWN0b3I6OmZyb20pOgorICAg
ICAgICAoV1RGOjpWZWN0b3I6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdURjo6VmVj
dG9yOjpjYXBhY2l0eUluQnl0ZXMgY29uc3QpOgorICAgICAgICAoV1RGOjpWZWN0b3I6OnN3YXAp
OgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OlZlY3Rvcik6CisgICAgICAgIChXVEY6Oj0p
OgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmZpbGwpOgorICAgICAgICAoV1RGOjptaW5D
YXBhY2l0eT46OnJlc2l6ZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6c2hyaW5rKToK
KyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojpncm93KToKKyAgICAgICAgKFdURjo6bWluQ2Fw
YWNpdHk+OjpyZXNlcnZlQ2FwYWNpdHkpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnRy
eVJlc2VydmVDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6c2hyaW5rQ2FwYWNp
dHkpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmFwcGVuZCk6CisgICAgICAgIChXVEY6
Om1pbkNhcGFjaXR5Pjo6dHJ5QXBwZW5kKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojpj
b25zdHJ1Y3RBbmRBcHBlbmQpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnRyeUNvbnN0
cnVjdEFuZEFwcGVuZCk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6YXBwZW5kU2xvd0Nh
c2UpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmNvbnN0cnVjdEFuZEFwcGVuZFNsb3dD
YXNlKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojp0cnlDb25zdHJ1Y3RBbmRBcHBlbmRT
bG93Q2FzZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6dW5jaGVja2VkQXBwZW5kKToK
KyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+OjppbnNlcnQpOgorICAgICAgICAoV1RGOjptaW5D
YXBhY2l0eT46OnJlbW92ZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVtb3ZlQWxs
TWF0Y2hpbmcpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnJlbGVhc2VCdWZmZXIpOgor
CiAyMDE4LTA2LTE1ICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KIAog
ICAgICAgICBbV2luQ2Fpcm9dIE1vdmUgdW5yZWxhdGVkIGZlYXR1cmVzIG9mIFdvcmtRdWV1ZVdp
biBpbnRvIElQQzo6Q29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZWYxYjMzYjdmZTA3ODJmMWQ4NzQwNTk5M2Y2ZjQxMDZiMTA2NmUyMC4uMTk1
YjA3YTY1MzdiNGZiMWY3ZjRmZGJlZmQzYTZkZWQ5M2JkZjkzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNCw2ICsyNCw3IEBACiAJCTBGMzBCQTkwMUU3
ODcwOEUwMDJDQTg0NyAvKiBHbG9iYWxWZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzBCQThBMUU3ODcwOEUwMDJDQTg0NyAvKiBHbG9i
YWxWZXJzaW9uLmNwcCAqLzsgfTsKIAkJMEYzMENCNUExRkNERjEzNDAwNEI1MzIzIC8qIENvbmN1
cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMzBDQjU4MUZDREYxMzMwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNl
dC5jcHAgKi87IH07CiAJCTBGNDNEOEYxMURCNUFEREMwMDEwOEZCNiAvKiBBdXRvbWF0aWNUaHJl
YWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
M0Q4RUYxREI1QUREQzAwMTA4RkI2IC8qIEF1dG9tYXRpY1RocmVhZC5jcHAgKi87IH07CisJCTBG
NUI0REZBMjBEMERFMTgwMEQ2RjUxMCAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QjRERjkyMEQw
REUxNzAwRDZGNTEwIC8qIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAgKi87IH07CiAJCTBG
NUJGMTc2MUYyM0Q0OUEwMDI5RDkxRCAvKiBHaWdhY2FnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE3NDFGMjNENDlBMDAyOUQ5MUQgLyog
R2lnYWNhZ2UuY3BwICovOyB9OwogCQkwRjYwRjMyRjFERkNCRDFCMDA0MTZENkMgLyogTG9ja2Vk
UHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2MEYzMkQxREZDQkQxQjAwNDE2RDZDIC8qIExvY2tlZFByaW50U3RyZWFtLmNwcCAq
LzsgfTsKIAkJMEY2NkIyOEExREM5N0JBQjAwNEExRDNGIC8qIENsb2NrVHlwZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2QjI4MDFEQzk3QkFC
MDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCAqLzsgfTsKQEAgLTM4LDYgKzM5LDcgQEAKIAkJMEY4
RjJCOTIxNzJFMDEwMzAwN0RCREE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEYyQjhGMTcyRTAwRjAwMDdE
QkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgKi87IH07CiAJCTBGOUQzMzYwMTY1REJBNzMw
MDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmlu
dFN0cmVhbS5jcHAgKi87IH07CiAJCTBGOUQzMzYyMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0
cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwICovOyB9OworCQkwRkQ3
M0NCQjIwRDQ3NTg0MDBGQzdBMjkgLyogVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDczQ0JBMjBENDc1ODMwMEZDN0EyOSAvKiBWZWN0
b3IuY3BwICovOyB9OwogCQkwRkREQkZBNzE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRT
dHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZEREJGQTUxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCAqLzsgfTsK
IAkJMEZFMTY0NkExQjZGRkM5NjAwNDAwRTdDIC8qIExvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMTY0NjgxQjZGRkM5NjAwNDAwRTdDIC8q
IExvY2suY3BwICovOyB9OwogCQkwRkU0NDc5QzFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNDQ3
OUExQjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmNwcCAqLzsgfTsKQEAgLTIwMCw2ICsyMDIs
OCBAQAogCQkwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb21pbmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNDU3MDQ0MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1YmJsZVNvcnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY0RDhDNzExRkMxRTdDRTAwMUQzMkFDIC8qIFNpbmdseUxpbmtl
ZExpc3RXaXRoVGFpbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW5nbHlM
aW5rZWRMaXN0V2l0aFRhaWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1QjRE
RjgyMEQwREUxNzAwRDZGNTEwIC8qIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1QjRERjkyMEQwREUxNzAwRDZGNTEwIC8qIENv
bnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjVCRjE2NTFGMjMxNzgzMDAyOUQ5MUQgLyogTmF0dXJhbExvb3BzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5hdHVyYWxMb29wcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjVCRjE3NDFGMjNENDlBMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR2lnYWNhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVCRjE3
NTFGMjNENDlBMDAyOUQ5MUQgLyogR2lnYWNhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2lnYWNhZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0Niw2ICsyNTAsNyBAQAogCQkwRkI0
Njc4MzFGREUyODJDMDAzRkNCMDkgLyogQ29uY3VycmVudFZlY3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb25jdXJyZW50VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQzQ0ODgyMTZGRTlGRTEwMDg0NEJFOSAvKiBQcm9jZXNzSUQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc0lELmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGQzRFREU1MTY5NjE0OTYwMEY2NTA0MSAvKiBDb21tYVByaW50ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFQcmludGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDczQ0JBMjBENDc1ODMwMEZDN0EyOSAvKiBWZWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmVjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8q
IEZhc3RCaXRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmFzdEJp
dFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkRCNjk4RDFCN0M2NDNB
MDAwQzEwNzggLyogQ29uZGl0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbmRpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkREQkZBNTE2NjZE
RkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nUHJpbnRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODQ0LDYgKzg0OSw4IEBACiAJCQkJMEYzMENCNTkxRkNERjEzMzAwNEI1
MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmggKi8sCiAJCQkJMEZCNDY3ODMxRkRFMjgyQzAw
M0ZDQjA5IC8qIENvbmN1cnJlbnRWZWN0b3IuaCAqLywKIAkJCQkwRkRCNjk4RDFCN0M2NDNBMDAw
QzEwNzggLyogQ29uZGl0aW9uLmggKi8sCisJCQkJMEY1QjRERjkyMEQwREUxNzAwRDZGNTEwIC8q
IENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAgKi8sCisJCQkJMEY1QjRERjgyMEQwREUxNzAw
RDZGNTEwIC8qIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oICovLAogCQkJCTBGOEU4NURBMUZE
NDg1QjAwMDY5MTg4OSAvKiBDb3VudGluZ0xvY2suY3BwICovLAogCQkJCTBGRkJDQkZBMUZEMzdF
MEYwMDcyQUFGMCAvKiBDb3VudGluZ0xvY2suaCAqLywKIAkJCQlFMzhDNDEyNjFFQjRFMDY4MDA0
Mjk1N0QgLyogQ1BVVGltZS5jcHAgKi8sCkBAIC0xMTE4LDYgKzExMjUsNyBAQAogCQkJCTdBRkVD
NkFFMUVCMjJBQzYwMERBREUzNiAvKiBVVUlELmggKi8sCiAJCQkJQThBNDczNkYxNTFBODI1QjAw
NDEyM0ZGIC8qIFZhbHVlQ2hlY2suaCAqLywKIAkJCQk3Q0QwRDVBNzFENTUzMjJBMDAwQ0M5RTEg
LyogVmFyaWFudC5oICovLAorCQkJCTBGRDczQ0JBMjBENDc1ODMwMEZDN0EyOSAvKiBWZWN0b3Iu
Y3BwICovLAogCQkJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3IuaCAqLywKIAkJ
CQlBOEE0NzM3MTE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yVHJhaXRzLmggKi8sCiAJCQkJQThB
NDczNzIxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oICovLApAQCAtMTQ2MSw2ICsxNDY5LDcg
QEAKIAkJCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJQ1UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY4RjJCOTIxNzJFMDEwMzAwN0RCREE1IC8qIENvbXBpbGF0aW9uVGhy
ZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzBDQjVBMUZDREYxMzQwMDRCNTMyMyAvKiBD
b25jdXJyZW50UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjVCNERGQTIwRDBE
RTE4MDBENkY1MTAgLyogQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGOEU4NURCMUZENDg1QjAwMDY5MTg4OSAvKiBDb3VudGluZ0xvY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTM4QzQxMjgxRUI0RTA2ODAwNDI5NTdEIC8qIENQVVRpbWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTM4QzQxMjUxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2Nv
YS5tbSBpbiBTb3VyY2VzICovLApAQCAtMTU2NCw2ICsxNTczLDcgQEAKIAkJCQkxQzE4MUM5MzFE
MzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3NDY5MTUxQTgyNUIwMDQxMjNGRiAvKiBVVEY4LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdBRkVDNkIxMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGRDczQ0JCMjBENDc1ODQwMEZDN0EyOSAvKiBWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY2NkIyOTIxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1lLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFGQTQ3QzhBMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggMGY5ZjRlMWYyZGExNmMz
MTJjMGRkNTJkOGRiZTk1M2I1NTRkMzQ0ZC4uM2RjN2FmZmQ2MTA2YjFjODg5NjFkMmZkMzEwNDVm
ZjZkYzZmYTI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTM1LDYgKzM1LDcgQEAgc2V0KFdU
Rl9QVUJMSUNfSEVBREVSUwogICAgIENvbmN1cnJlbnRQdHJIYXNoU2V0LmgKICAgICBDb25jdXJy
ZW50VmVjdG9yLmgKICAgICBDb25kaXRpb24uaAorICAgIENvbnRhaW5lckNhcGFjaXR5VHJhY2tl
ci5oCiAgICAgQ291bnRpbmdMb2NrLmgKICAgICBDcm9zc1RocmVhZENvcGllci5oCiAgICAgQ3Jv
c3NUaHJlYWRRdWV1ZS5oCkBAIC0zMzEsNiArMzMyLDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAg
Q2xvY2tUeXBlLmNwcAogICAgIENvbXBpbGF0aW9uVGhyZWFkLmNwcAogICAgIENvbmN1cnJlbnRQ
dHJIYXNoU2V0LmNwcAorICAgIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAKICAgICBDb3Vu
dGluZ0xvY2suY3BwCiAgICAgQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiAgICAgQ3Jvc3NUaHJlYWRU
YXNrSGFuZGxlci5jcHAKQEAgLTM4Nyw2ICszODksNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBU
aW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3BwCiAgICAgVGltaW5nU2NvcGUuY3BwCiAgICAgVVVJ
RC5jcHAKKyAgICBWZWN0b3IuY3BwCiAgICAgV1RGQXNzZXJ0aW9ucy5jcHAKICAgICBXYWxsVGlt
ZS5jcHAKICAgICBXb3JkTG9jay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbnRh
aW5lckNhcGFjaXR5VHJhY2tlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0
eVRyYWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyZTliMDdlY2M0NDYyMTExZTY5ZDMwZTQ1NjA4NjBm
ZTg1MWY2NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBh
Y2l0eVRyYWNrZXIuY3BwCkBAIC0wLDAgKzEsMjAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNv
bnRhaW5lckNhcGFjaXR5VHJhY2tlci5oIgorCisjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyNp
bmNsdWRlIDx3dGYvU3RhY2tTaG90Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitBbGxvY2F0aW9u
Q2FsbFNpdGVEYXRhOjpBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKHNpemVfdCBzdGFja0RlcHRoLCBz
aXplX3QgaW5Vc2VkU2l6ZSwgc2l6ZV90IGluQ2FwYWNpdHkpCisgICAgOiB1c2VkU2l6ZShpblVz
ZWRTaXplKQorICAgICwgY2FwYWNpdHkoaW5DYXBhY2l0eSkKKyAgICAsIG1fc3RhY2soc3RkOjpt
YWtlX3VuaXF1ZTxTdGFja1Nob3Q+KHN0YWNrRGVwdGgpKQoreworfQorCitBbGxvY2F0aW9uQ2Fs
bFNpdGVEYXRhOjpBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKGNvbnN0IFN0YWNrU2hvdCYgc3RhY2sp
CisgICAgOiBtX3N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8U3RhY2tTaG90PihzdGFjaykpCit7Cit9
CisKK0FsbG9jYXRpb25DYWxsU2l0ZURhdGE6OkFsbG9jYXRpb25DYWxsU2l0ZURhdGEoY29uc3Qg
QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYgb3RoZXIpCisgICAgOiBjb3VudChvdGhlci5jb3VudCkK
KyAgICAsIHVzZWRTaXplKG90aGVyLnVzZWRTaXplKQorICAgICwgY2FwYWNpdHkob3RoZXIuY2Fw
YWNpdHkpCisgICAgLCBtX3N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8U3RhY2tTaG90PihvdGhlci5z
dGFjaygpKSkKK3sKK30KKworQWxsb2NhdGlvbkNhbGxTaXRlRGF0YTo6fkFsbG9jYXRpb25DYWxs
U2l0ZURhdGEoKSA9IGRlZmF1bHQ7CisKK2NvbnN0IFN0YWNrU2hvdCYgQWxsb2NhdGlvbkNhbGxT
aXRlRGF0YTo6c3RhY2soKSBjb25zdAoreworICAgIHJldHVybiAqbV9zdGFjazsKK30KKworc3Ry
dWN0IENvbnRhaW5lckFsbG9jYXRpb25EYXRhIHsKKyAgICBDb250YWluZXJBbGxvY2F0aW9uRGF0
YShzaXplX3Qgc3RhY2tTaG90U2l6ZSwgc2l6ZV90IGluU2l6ZSwgc2l6ZV90IGluQ2FwYWNpdHkp
CisgICAgICAgIDogYWxsb2NhdGlvblN0YWNrKHN0YWNrU2hvdFNpemUpCisgICAgICAgICwgc2l6
ZShpblNpemUpCisgICAgICAgICwgY2FwYWNpdHkoaW5DYXBhY2l0eSkKKyAgICB7CisgICAgCisg
ICAgfQorICAgIFN0YWNrU2hvdCBhbGxvY2F0aW9uU3RhY2s7CisgICAgc2l6ZV90IHNpemU7Cisg
ICAgc2l6ZV90IGNhcGFjaXR5OworfTsKKworc3RydWN0IENvbnRhaW5lckNhcGFjaXR5VHJhY2tl
cjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VySW1wbCB7CisgICAgc3RkOjp1bm9yZGVyZWRfbWFw
PFRyYWNrZWRJRCwgc3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lckFsbG9jYXRpb25EYXRhPj4gbV90
cmFja2VkSURUb0NvbnRhaW5lckRhdGE7Cit9OworCisvLyBUbyBwcmV2ZW50IHBlci10aHJlYWQg
cmUtZW50cmFuY3kgd2UgdGFrZSBhIHBvaW50ZXIgdG8gYW4gb2JqZWN0IG9uIHRoZSBzdGFjaywg
aW5zaWRlIG1fbXV0ZXggbG9jayBzY29wZS4KK2NsYXNzIEF2b2lkUmVjb3JkaW5nU2NvcGUgewor
cHVibGljOgorICAgIEF2b2lkUmVjb3JkaW5nU2NvcGUoQ29udGFpbmVyQ2FwYWNpdHlUcmFja2Vy
JiB0cmFja2VyLCBib29sKiBzdGFja09iamVjdCkKKyAgICAgICAgOiBtX3RyYWNrZXIodHJhY2tl
cikKKyAgICB7CisgICAgICAgIG1fdHJhY2tlci5tX2F2b2lkUmVlbnRyYW5jeSA9IHN0YWNrT2Jq
ZWN0OworICAgIH0KKworICAgIH5Bdm9pZFJlY29yZGluZ1Njb3BlKCkKKyAgICB7CisgICAgICAg
IG1fdHJhY2tlci5tX2F2b2lkUmVlbnRyYW5jeSA9IG51bGxwdHI7CisgICAgfQorcHJpdmF0ZToK
KyAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIG1fdHJhY2tlcjsKK307CisKK0NvbnRhaW5l
ckNhcGFjaXR5VHJhY2tlcjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyKHNpemVfdCBhZ2dyZWdh
dGlvblN0YWNrRGVwdGgpCisgICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXJD
YXBhY2l0eVRyYWNrZXJJbXBsPigpKQorICAgICwgbV9hZ2dyZWdhdGlvblN0YWNrRGVwdGgoYWdn
cmVnYXRpb25TdGFja0RlcHRoKQoreworfQorCitUcmFja2VkSUQgQ29udGFpbmVyQ2FwYWNpdHlU
cmFja2VyOjpyZWNvcmRBbGxvY2F0aW9uKHNpemVfdCBzaXplLCBzaXplX3QgY2FwYWNpdHkpCit7
CisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1f
bXV0ZXgpOworCisgICAgaWYgKG1fYXZvaWRSZWVudHJhbmN5KQorICAgICAgICByZXR1cm4gMDsK
KworICAgIGJvb2wgYXZvaWRSZWVudHJhbmN5ID0gdHJ1ZTsKKyAgICBBdm9pZFJlY29yZGluZ1Nj
b3BlIHNjb3BlKCp0aGlzLCAmYXZvaWRSZWVudHJhbmN5KTsKKworICAgIFRyYWNrZWRJRCBvYmpl
Y3RJRCA9ICsrbV9uZXh0SUQ7CisKKyAgICBhdXRvIGluc2VydFJlc3VsdCA9IG1faW1wbC0+bV90
cmFja2VkSURUb0NvbnRhaW5lckRhdGEuaW5zZXJ0KHsgb2JqZWN0SUQsIHN0ZDo6bWFrZV91bmlx
dWU8Q29udGFpbmVyQWxsb2NhdGlvbkRhdGE+KG1fYWdncmVnYXRpb25TdGFja0RlcHRoLCBzaXpl
LCBjYXBhY2l0eSkgfSk7CisgICAgaWYgKCFpbnNlcnRSZXN1bHQuc2Vjb25kKSB7CisgICAgICAg
IFdURkxvZ0Fsd2F5cygiQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpyZWNvcmRBbGxvY2F0aW9u
IHNhdyBvYmplY3QgJXUgZm9yIHRoZSBzZWNvbmQgdGltZSIsIG9iamVjdElEKTsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJXYXMgcHJldmlvdXNseSBhbGxvY2F0ZWQgYXQ6Iik7CisgICAgICAgIGF1
dG8mIGNhbGxTaXRlRGF0YSA9ICppbnNlcnRSZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAgICAgICAg
Y29uc3Qgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IDA7CisgICAgICAgIFdURlByaW50QmFja3RyYWNl
KGNhbGxTaXRlRGF0YS5hbGxvY2F0aW9uU3RhY2suYXJyYXkoKSArIGZyYW1lc1RvU2tpcCwgY2Fs
bFNpdGVEYXRhLmFsbG9jYXRpb25TdGFjay5zaXplKCkgLSBmcmFtZXNUb1NraXApOworICAgIH0K
KworICAgIHJldHVybiBvYmplY3RJRDsKK30KKwordm9pZCBDb250YWluZXJDYXBhY2l0eVRyYWNr
ZXI6OnJlY29yZFNpemVBbmRDYXBhY2l0eShUcmFja2VkSUQgb2JqZWN0SUQsIHNpemVfdCBzaXpl
LCBzaXplX3QgY2FwYWNpdHkpCit7CisgICAgQVNTRVJUKHNpemUgPD0gY2FwYWNpdHkpOworCisg
ICAgaWYgKCFvYmplY3RJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RkOjpsb2NrX2d1YXJk
PHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1fbXV0ZXgpOworCisgICAgaWYgKG1f
YXZvaWRSZWVudHJhbmN5KQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGF2b2lkUmVlbnRy
YW5jeSA9IHRydWU7CisgICAgQXZvaWRSZWNvcmRpbmdTY29wZSBzY29wZSgqdGhpcywgJmF2b2lk
UmVlbnRyYW5jeSk7CisKKyAgICBhdXRvIGl0ID0gbV9pbXBsLT5tX3RyYWNrZWRJRFRvQ29udGFp
bmVyRGF0YS5maW5kKG9iamVjdElEKTsKKyAgICBpZiAoaXQgIT0gbV9pbXBsLT5tX3RyYWNrZWRJ
RFRvQ29udGFpbmVyRGF0YS5lbmQoKSkgeworICAgICAgICBpdC0+c2Vjb25kLT5zaXplID0gc2l6
ZTsKKyAgICAgICAgaXQtPnNlY29uZC0+Y2FwYWNpdHkgPSBjYXBhY2l0eTsKKyAgICB9IGVsc2UK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250YWluZXJDYXBhY2l0eVRyYWNrZXIgJXAgcmVjb3Jk
U2l6ZUFuZENhcGFjaXR5IGZhaWxlZCB0byBmaW5kIG9iamVjdCAldSIsIHRoaXMsIG9iamVjdElE
KTsKK30KKwordm9pZCBDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29yZEZyZWUoVHJhY2tl
ZElEIG9iamVjdElEKQoreworICAgIGlmICghb2JqZWN0SUQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6OnJlY3Vyc2l2ZV9tdXRleD4gbG9ja0hvbGRlcihtX211
dGV4KTsKKworICAgIGlmIChtX2F2b2lkUmVlbnRyYW5jeSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYm9vbCBhdm9pZFJlZW50cmFuY3kgPSB0cnVlOworICAgIEF2b2lkUmVjb3JkaW5nU2NvcGUg
c2NvcGUoKnRoaXMsICZhdm9pZFJlZW50cmFuY3kpOworCisgICAgYXV0byByZW1vdmVkQ291bnQg
PSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJEYXRhLmVyYXNlKG9iamVjdElEKTsKKyAg
ICBpZiAoIXJlbW92ZWRDb3VudCkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250YWluZXJDYXBh
Y2l0eVRyYWNrZXI6OnJlY29yZEZyZWUgZ290IGlkICV1IGZvciB3aGljaCB0aGVyZSBpcyBubyBl
bnRyeSIsIG9iamVjdElEKTsKK30KKworc3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0
YT4gQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjphZ2dyZWdhdGVCeUNhbGxTaXRlKGNvbnN0IFdU
Rjo6RnVuY3Rpb248dm9pZChUcmFja2VkSUQsIEFsbG9jYXRpb25DYWxsU2l0ZURhdGEmKT4mIHBl
ck9iamVjdENhbGxiYWNrKQoreworICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6OnJlY3Vyc2l2ZV9t
dXRleD4gbG9ja0hvbGRlcihtX211dGV4KTsKKworICAgIGJvb2wgYXZvaWRSZWVudHJhbmN5ID0g
dHJ1ZTsKKyAgICBBdm9pZFJlY29yZGluZ1Njb3BlIHNjb3BlKCp0aGlzLCAmYXZvaWRSZWVudHJh
bmN5KTsKKworICAgIHR5cGVkZWYgdW5zaWduZWQgU3RhY2tTaG90SGFzaDsKKyAgICBzdGQ6OnVu
b3JkZXJlZF9tYXA8U3RhY2tTaG90SGFzaCwgc3RkOjp1bmlxdWVfcHRyPEFsbG9jYXRpb25DYWxs
U2l0ZURhdGE+PiBjYWxsU2l0ZVRvQWxsb2NhdGlvbkFnZ3JlZ2F0ZTsKKworICAgIGZvciAoY29u
c3QgYXV0byYgaXQgOiBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJEYXRhKSB7CisgICAg
ICAgIGNvbnN0IENvbnRhaW5lckFsbG9jYXRpb25EYXRhJiBhbGxvY2F0aW9uRGF0YSA9ICppdC5z
ZWNvbmQ7CisKKyAgICAgICAgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogY2FsbFNpdGVEYXRhOwor
CisgICAgICAgIGF1dG8gZmluZEl0ID0gY2FsbFNpdGVUb0FsbG9jYXRpb25BZ2dyZWdhdGUuZmlu
ZChhbGxvY2F0aW9uRGF0YS5hbGxvY2F0aW9uU3RhY2suaGFzaCgpKTsKKyAgICAgICAgaWYgKGZp
bmRJdCA9PSBjYWxsU2l0ZVRvQWxsb2NhdGlvbkFnZ3JlZ2F0ZS5lbmQoKSkgeworICAgICAgICAg
ICAgYXV0byBpbnNlcnRJdCA9IGNhbGxTaXRlVG9BbGxvY2F0aW9uQWdncmVnYXRlLmluc2VydCh7
IGFsbG9jYXRpb25EYXRhLmFsbG9jYXRpb25TdGFjay5oYXNoKCksIHN0ZDo6bWFrZV91bmlxdWU8
QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4oYWxsb2NhdGlvbkRhdGEuYWxsb2NhdGlvblN0YWNrKSB9
KTsKKyAgICAgICAgICAgIGNhbGxTaXRlRGF0YSA9IGluc2VydEl0LmZpcnN0LT5zZWNvbmQuZ2V0
KCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbFNpdGVEYXRhID0gZmluZEl0LT5z
ZWNvbmQuZ2V0KCk7CisKKyAgICAgICAgY2FsbFNpdGVEYXRhLT5jb3VudCArPSAxOworICAgICAg
ICBjYWxsU2l0ZURhdGEtPnVzZWRTaXplICs9IGFsbG9jYXRpb25EYXRhLnNpemU7CisgICAgICAg
IGNhbGxTaXRlRGF0YS0+Y2FwYWNpdHkgKz0gYWxsb2NhdGlvbkRhdGEuY2FwYWNpdHk7CisKKyAg
ICAgICAgcGVyT2JqZWN0Q2FsbGJhY2soaXQuZmlyc3QsICpjYWxsU2l0ZURhdGEpOworICAgIH0K
KworICAgIHN0ZDo6dmVjdG9yPEFsbG9jYXRpb25DYWxsU2l0ZURhdGE+IHJlc3VsdDsKKyAgICBm
b3IgKGF1dG8mIGl0IDogY2FsbFNpdGVUb0FsbG9jYXRpb25BZ2dyZWdhdGUpCisgICAgICAgIHJl
c3VsdC5wdXNoX2JhY2soQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSgqaXQuc2Vjb25kKSk7CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oIGIvU291cmNlL1dURi93dGYv
Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNmMWYyOTcwM2ZlYTRjMjgx
MDBjNjUzMGZhYTgyOGRmMGE5MzBkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdURl9Db250YWluZXJD
YXBhY2l0eVRyYWNrZXJfaAorI2RlZmluZSBXVEZfQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyX2gK
KworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx2ZWN0b3I+
CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK2NsYXNzIFN0YWNrU2hvdDsKKworc3RydWN0IEFsbG9jYXRpb25DYWxs
U2l0ZURhdGEgeworICAgIEFsbG9jYXRpb25DYWxsU2l0ZURhdGEoc2l6ZV90IHN0YWNrRGVwdGgg
PSAwLCBzaXplX3Qgc2l6ZSA9IDAsIHNpemVfdCBjYXBhY2l0eSA9IDApOworICAgIEFsbG9jYXRp
b25DYWxsU2l0ZURhdGEoY29uc3QgU3RhY2tTaG90Jik7CisgICAgQWxsb2NhdGlvbkNhbGxTaXRl
RGF0YShjb25zdCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJik7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIH5BbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKCk7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Y29uc3QgU3RhY2tTaG90JiBzdGFjaygpIGNvbnN0OworCisgICAgc2l6ZV90IGNvdW50IHsgMCB9
OworICAgIHNpemVfdCB1c2VkU2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgY2FwYWNpdHkgeyAwIH07
CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrU2hvdD4gbV9zdGFjazsgLy8g
TmVlZGVkIHRvIGhpZGUgU3RhY2tTaG90IHRvIGF2b2lkIGNpcmN1bGFyIGluY2x1ZGVzLgorfTsK
KwordHlwZWRlZiB1bnNpZ25lZCBUcmFja2VkSUQ7CisKK2NsYXNzIENvbnRhaW5lckNhcGFjaXR5
VHJhY2tlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGFpbmVyQ2FwYWNpdHlUcmFj
a2VyKTsKKyAgICBmcmllbmQgY2xhc3MgQXZvaWRSZWNvcmRpbmdTY29wZTsKK3B1YmxpYzoKKyAg
ICAvLyBDYWxsIHNpdGVzIGFyZSBhZ2dyZWdhdGVkIGJ5IGNhbGwgc3RhY2ssIHVzaW5nIGFnZ3Jl
Z2F0aW9uU3RhY2tEZXB0aCBmcmFtZXMuCisgICAgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyKHNp
emVfdCBhZ2dyZWdhdGlvblN0YWNrRGVwdGggPSAxNSk7CisgICAgCisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIFRyYWNrZWRJRCByZWNvcmRBbGxvY2F0aW9uKHNpemVfdCBzaXplLCBzaXplX3QgY2Fw
YWNpdHkpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlY29yZFNpemVBbmRDYXBhY2l0
eShUcmFja2VkSUQsIHNpemVfdCBzaXplLCBzaXplX3QgY2FwYWNpdHkpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIHJlY29yZEZyZWUoVHJhY2tlZElEKTsKKyAgICAKKyAgICAvLyBSZXR1
cm4gYSB2ZWN0b3Igb2YgcGVyIGNhbGxzaXRlIGRhdGE7IHNpemUgYW5kIGNhcGFjaXR5IGFyZSBz
dW1tZWQgZm9yIGFsbCBhbGxvY2F0aW9ucyB3aXRoIGEgZ2l2ZW4gY2FsbCBzaXRlLgorICAgIC8v
IFRoZSBwYXNzZWQgZnVuY3Rpb24gYWxsb3dzIHRoZSBjYWxsZXIgdG8gZG8gYWRkaXRpb25hbCBw
cm9jZXNzaW5nIHBlciBhbGxvY2F0aW9uLgorICAgIHN0ZDo6dmVjdG9yPEFsbG9jYXRpb25DYWxs
U2l0ZURhdGE+IGFnZ3JlZ2F0ZUJ5Q2FsbFNpdGUoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFRy
YWNrZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYpPiYpOworCitwcml2YXRlOgorICAgIC8v
IFVzZSBhIHBpbXBsIHRvIGF2b2lkIGNpcmN1bGFyIGluY2x1ZGVzIGJldHdlZW4gb3VyIGhlYWRl
ciBhbmQgdGhlIGNvbnRhaW5lciBjbGFzcyBoZWFkZXJzLgorICAgIHN0cnVjdCBDb250YWluZXJD
YXBhY2l0eVRyYWNrZXJJbXBsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250YWluZXJDYXBhY2l0
eVRyYWNrZXJJbXBsPiBtX2ltcGw7CisgICAgc3RkOjpyZWN1cnNpdmVfbXV0ZXggbV9tdXRleDsK
KyAgICBUcmFja2VkSUQgbV9uZXh0SUQgeyAwIH07CisgICAgY29uc3Qgc2l6ZV90IG1fYWdncmVn
YXRpb25TdGFja0RlcHRoOworICAgIGJvb2wqIG1fYXZvaWRSZWVudHJhbmN5IHsgbnVsbHB0ciB9
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Q29udGFpbmVyQ2FwYWNp
dHlUcmFja2VyOworCisjZW5kaWYgLy8gV1RGX0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlcl9oCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9IYXNoVGFibGUuY3BwCmluZGV4IDBlYjYwMzZjODYzZmIxMTNmZWM4OTEyNTZlNTA3NTk0NDEx
NGFiZTEuLmRlNDI0OWUyNmY5YjZjYjk0NjExODJiMzkzNjJhMGEzOGM1MjM1YjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvSGFz
aFRhYmxlLmNwcApAQCAtMjMsNiArMjMsMTUgQEAKICNpbmNsdWRlICJEYXRhTG9nLmgiCiAjaW5j
bHVkZSA8bXV0ZXg+CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyNpbmNsdWRlIDx3
dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxub3RpZnkuaD4KKyNpbmNs
dWRlIDx3dGYvU3RhY2tTaG90Lmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKICNpZiBE
VU1QX0hBU0hUQUJMRV9TVEFUUwpAQCAtNjUsNCArNzQsNjMgQEAgdm9pZCBIYXNoVGFibGVTdGF0
czo6ZHVtcFN0YXRzKCkKIAogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKK3N0YXRpYyB2
b2lkIGR1bXBXYXN0ZWRIYXNoVGFibGVDYXBhY2l0eSgpCit7CisgICAgYXV0byBjYWxsU2l0ZURh
dGEgPSBoYXNoVGFibGVUcmFja2VyKCkuYWdncmVnYXRlQnlDYWxsU2l0ZShbXSAoVHJhY2tlZElE
LCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJikgeworICAgIH0pOworCisgICAgLy8gTWFrZSBhIHZl
Y3RvciBvZiByYXcgcG9pbnRlcnMgc28gd2UgY2FuIHNvcnQgdGhlbS4KKyAgICBzdGQ6OnZlY3Rv
cjxBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKj4gY2FsbFNpdGVQdHJzOworICAgIGZvciAoY29uc3Qg
YXV0byYgc2l0ZURhdGEgOiBjYWxsU2l0ZURhdGEpIHsKKyAgICAgICAgaWYgKCFzaXRlRGF0YS5j
YXBhY2l0eSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYWxsU2l0ZVB0cnMucHVz
aF9iYWNrKGNvbnN0X2Nhc3Q8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSo+KCZzaXRlRGF0YSkpOwor
ICAgIH0KKworICAgIC8vIFNvcnQgYnkgcmV2ZXJzZSB3YXN0YWdlLgorICAgIHN0ZDo6c29ydChj
YWxsU2l0ZVB0cnMuYmVnaW4oKSwgY2FsbFNpdGVQdHJzLmVuZCgpLCBbXSAoY29uc3QgQWxsb2Nh
dGlvbkNhbGxTaXRlRGF0YSogYSwgY29uc3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogYikgewor
ICAgICAgICBzaXplX3QgYVdhc3RhZ2UgPSBhLT5jYXBhY2l0eSAtIGEtPnVzZWRTaXplOworICAg
ICAgICBzaXplX3QgYldhc3RhZ2UgPSBiLT5jYXBhY2l0eSAtIGItPnVzZWRTaXplOworICAgICAg
ICByZXR1cm4gYVdhc3RhZ2UgPiBiV2FzdGFnZTsKKyAgICB9KTsKKworICAgIGNvbnN0IHNpemVf
dCBtYXhDb3VudCA9IDEwMDsKKworICAgIFdURkxvZ0Fsd2F5cygiJWx1IGNhbGwgc2l0ZXMgY3Jl
YXRlZCBIYXNoVGFibGVzICh2aWEgSGFzaE1hcCBvciBIYXNoU2V0KS4gU2hvd2luZyAlbHUgc2l0
ZXMgd2l0aCBtb3N0IHdhc3RhZ2U6XG4iLCBjYWxsU2l0ZURhdGEuc2l6ZSgpLCBtYXhDb3VudCk7
CisKKyAgICBzaXplX3QgY291bnQgPSAwOworICAgIGZvciAoYXV0byBzaXRlRGF0YSA6IGNhbGxT
aXRlUHRycykgeworICAgICAgICBpZiAoY291bnQrKyA9PSBtYXhDb3VudCkKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIFdURkxvZ0Fsd2F5cygiV2FzdGVkIGNhcGFjaXR5OiAlbHUgYnl0
ZXMgKHVzZWQgJWx1IG9mICVsdSBieXRlcywgdXRpbGl6YXRpb246ICUuMmYlJSkgLSAlbHUgYWxs
b2NhdGlvbnNcbiIsCisgICAgICAgICAgICBzaXRlRGF0YS0+Y2FwYWNpdHkgLSBzaXRlRGF0YS0+
dXNlZFNpemUsCisgICAgICAgICAgICBzaXRlRGF0YS0+dXNlZFNpemUsIHNpdGVEYXRhLT5jYXBh
Y2l0eSwgMTAwLjAgKiBzaXRlRGF0YS0+dXNlZFNpemUgLyBzaXRlRGF0YS0+Y2FwYWNpdHksCisg
ICAgICAgICAgICBzaXRlRGF0YS0+Y291bnQpOworICAgICAgICBjb25zdCBzaXplX3QgZnJhbWVz
VG9Ta2lwID0gNzsKKyAgICAgICAgV1RGUHJpbnRCYWNrdHJhY2Uoc2l0ZURhdGEtPnN0YWNrKCku
YXJyYXkoKSArIGZyYW1lc1RvU2tpcCwgc2l0ZURhdGEtPnN0YWNrKCkuc2l6ZSgpIC0gZnJhbWVz
VG9Ta2lwKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJcbiIpOworICAgIH0KK30KKyNlbmRpZgor
CitDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIGhhc2hUYWJsZVRyYWNrZXIoKQoreworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsK
KyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgW10geworICAgICAgICBpbnQgdG9r
ZW47CisgICAgICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaCgiY29tLmFwcGxlLldlYktpdC5k
dW1wSGFzaFRhYmxlQ2FwYWNpdHkiLCAmdG9rZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IF4oaW50KSB7CisgICAgICAgICAgICBkdW1wV2FzdGVkSGFzaFRhYmxlQ2FwYWNpdHkoKTsKKyAg
ICAgICAgfSk7CisgICAgfSk7CisjZW5kaWYKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxX
VEY6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlcj4gdHJhY2tlcjsKKyAgICByZXR1cm4gdHJhY2tl
cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBUUkFDS19IQVNIVEFCTEVf
Q0FQQUNJVFkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNl
L1dURi93dGYvSGFzaFRhYmxlLmgKaW5kZXggZTZhOTUwZmQ0MDA5MzZjYzRiZmYzZDg2NGEyNDc4
NTJlYWRiMzVkZS4uNzAzNTMwY2IyNzE2MjIyZTRjMmM1NjE0NGIwZTI4MjI4YTRkNWNhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYv
SGFzaFRhYmxlLmgKQEAgLTQyLDggKzQyLDIwIEBACiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4K
ICNlbmRpZgogCisvLyBFbmFibGUgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZIHRvIHRyYWNrIGNh
bGwgc2l0ZXMgdGhhdCB3YXN0ZSBIYXNoVGFibGUgY2FwYWNpdHkuIE9uIENvY29hIHBsYXRmb3Jt
cywgdGhlIGRhdGEgY2FuIGJlIGR1bXBlZAorLy8gYnkgcnVubmluZyAibm90aWZ5dXRpbCAtcCBj
b20uYXBwbGUuV2ViS2l0LmR1bXBIYXNoVGFibGVDYXBhY2l0eSIuCisjZGVmaW5lIFRSQUNLX0hB
U0hUQUJMRV9DQVBBQ0lUWSAwCisKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyNpbmNs
dWRlIDx3dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNl
IFdURiB7CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKK1dURl9FWFBPUlRfUFJJVkFU
RSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIGhhc2hUYWJsZVRyYWNrZXIoKTsKKyNlbmRpZgor
CiAvLyBFbmFibGVzIGludGVybmFsIFdURiBjb25zaXN0ZW5jeSBjaGVja3MgdGhhdCBhcmUgaW52
b2tlZCBhdXRvbWF0aWNhbGx5LiBOb24tV1RGIGNhbGxlcnMgY2FuIGNhbGwgY2hlY2tUYWJsZUNv
bnNpc3RlbmN5KCkgZXZlbiBpZiBpbnRlcm5hbCBjaGVja3MgYXJlIGRpc2FibGVkLgogI2RlZmlu
ZSBDSEVDS19IQVNIVEFCTEVfQ09OU0lTVEVOQ1kgMAogCkBAIC0zNjIsNiArMzc0LDExIEBAIG5h
bWVzcGFjZSBXVEYgewogI2lmIENIRUNLX0hBU0hUQUJMRV9VU0VfQUZURVJfREVTVFJVQ1RJT04K
ICAgICAgICAgICAgIG1fdGFibGUgPSAoVmFsdWVUeXBlKikodWludHB0cl90KTB4YmJhZGJlZWY7
CiAjZW5kaWYKKworI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorICAgICAgICAgICAgaGFz
aFRhYmxlVHJhY2tlcigpLnJlY29yZEZyZWUobV90cmFja2VkSUQpOworICAgICAgICAgICAgbV90
cmFja2VkSUQgPSAwOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBIYXNoVGFibGUoY29u
c3QgSGFzaFRhYmxlJik7CkBAIC0zODMsNiArNDAwLDkgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
ICAgIHVuc2lnbmVkIGNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV90YWJsZVNpemU7IH0KICAg
ICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fa2V5Q291bnQ7IH0KIAorICAg
ICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsKKyAgICAgICAgc2l6ZV90IGNhcGFjaXR5
SW5CeXRlcygpIGNvbnN0OworCiAgICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgVmFsdWVUeXBl
JiB2YWx1ZSkgeyByZXR1cm4gYWRkPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4dHJhY3Rvcjo6
ZXh0cmFjdCh2YWx1ZSksIHZhbHVlKTsgfQogICAgICAgICBBZGRSZXN1bHQgYWRkKFZhbHVlVHlw
ZSYmIHZhbHVlKSB7IHJldHVybiBhZGQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0cmFjdG9y
OjpleHRyYWN0KHZhbHVlKSwgV1RGTW92ZSh2YWx1ZSkpOyB9CiAKQEAgLTQ4OSw2ICs1MDksMTAg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7CiAgICAgICAg
IHVuc2lnbmVkIG1fZGVsZXRlZENvdW50OwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZ
CisgICAgICAgIFRyYWNrZWRJRCBtX3RyYWNrZWRJRCB7IDAgfTsKKyNlbmRpZgorCiAjaWYgQ0hF
Q0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgIHB1YmxpYzoKICAgICAgICAgLy8gQWxsIGFjY2Vz
cyB0byBtX2l0ZXJhdG9ycyBzaG91bGQgYmUgZ3VhcmRlZCB3aXRoIG1fbXV0ZXguCkBAIC01NTYs
NiArNTgwLDkgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICwgbV9zdGF0cyhzdGQ6Om1ha2Vf
dW5pcXVlPFN0YXRzPigpKQogI2VuZGlmCiAgICAgeworI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBB
Q0lUWQorICAgICAgICBtX3RyYWNrZWRJRCA9IGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRBbGxv
Y2F0aW9uKDAsIDApOworI2VuZGlmCiAgICAgfQogCiAgICAgaW5saW5lIHVuc2lnbmVkIGRvdWJs
ZUhhc2godW5zaWduZWQga2V5KQpAQCAtOTM4LDcgKzk2NSwxMSBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgICAgIGVudHJ5ID0gZXhwYW5kKGVudHJ5KTsKIAogICAgICAgICBpbnRlcm5hbENo
ZWNrVGFibGVDb25zaXN0ZW5jeSgpOwotICAgICAgICAKKworI2lmIFRSQUNLX0hBU0hUQUJMRV9D
QVBBQ0lUWQorICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5
KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYK
KwogICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSks
IHRydWUpOwogICAgIH0KIApAQCAtOTc3LDYgKzEwMDgsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAK
ICAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKIAorI2lmIFRSQUNLX0hB
U0hUQUJMRV9DQVBBQ0lUWQorICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFu
ZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7
CisjZW5kaWYKKwogICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRv
cihlbnRyeSksIHRydWUpOwogICAgIH0KIApAQCAtOTk3LDYgKzEwMzIsMTAgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIG5ld0VudHJ5LT5+VmFsdWUoKTsKICAgICAgICAgbmV3IChOb3ROdWxs
LCBuZXdFbnRyeSkgVmFsdWVUeXBlKFdURk1vdmUoZW50cnkpKTsKIAorI2lmIFRSQUNLX0hBU0hU
QUJMRV9DQVBBQ0lUWQorICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENh
cGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7Cisj
ZW5kaWYKKwogICAgICAgICByZXR1cm4gbmV3RW50cnk7CiAgICAgfQogCkBAIC0xMDcwLDYgKzEx
MDksMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGlmIChzaG91bGRTaHJpbmsoKSkKICAg
ICAgICAgICAgIHNocmluaygpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAg
ICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQs
IHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIGlu
dGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgfQogCkBAIC0xMTMyLDcgKzExNzUs
MTEgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgaWYgKHNob3VsZFNocmluaygpKQogICAg
ICAgICAgICAgc2hyaW5rKCk7Ci0gICAgICAgIAorCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFD
SVRZCisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90
cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAg
ICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybiBy
ZW1vdmVkQnVja2V0Q291bnQ7CiAgICAgfQpAQCAtMTIyMSw2ICsxMjY4LDEwIEBAIG5hbWVzcGFj
ZSBXVEYgewogCiAgICAgICAgIGZhc3RGcmVlKG9sZFRhYmxlKTsKIAorI2lmIFRSQUNLX0hBU0hU
QUJMRV9DQVBBQ0lUWQorICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENh
cGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7Cisj
ZW5kaWYKKwogICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeSgpOwogICAgICAg
ICByZXR1cm4gbmV3RW50cnk7CiAgICAgfQpAQCAtMTIzOCw2ICsxMjg5LDEwIEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgICAgICBtX3RhYmxlU2l6ZU1hc2sgPSAwOwogICAgICAgICBtX2tleUNvdW50
ID0gMDsKICAgICAgICAgbV9kZWxldGVkQ291bnQgPSAwOworCisjaWYgVFJBQ0tfSEFTSFRBQkxF
X0NBUEFDSVRZCisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNp
dHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRp
ZgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5
cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRz
LCB0eXBlbmFtZSBLZXlUcmFpdHM+CkBAIC0xMjU1LDYgKzEzMTAsMTAgQEAgbmFtZXNwYWNlIFdU
RiB7CiAgICAgICAgICwgbV9zdGF0cyhzdGQ6Om1ha2VfdW5pcXVlPFN0YXRzPigqb3RoZXIubV9z
dGF0cykpCiAjZW5kaWYKICAgICB7CisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAg
ICAgIG1fdHJhY2tlZElEID0gaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZEFsbG9jYXRpb24oc2l6
ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCisKICAgICAgICAgdW5zaWdu
ZWQgb3RoZXJLZXlDb3VudCA9IG90aGVyLnNpemUoKTsKICAgICAgICAgaWYgKCFvdGhlcktleUNv
dW50KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI3Niw2ICsxMzM1LDEwIEBAIG5hbWVzcGFj
ZSBXVEYgewogCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3RoZXJWYWx1ZSA6IG90aGVyKQog
ICAgICAgICAgICAgYWRkVW5pcXVlRm9ySW5pdGlhbGl6YXRpb248SWRlbnRpdHlUcmFuc2xhdG9y
VHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0KG90aGVyVmFsdWUpLCBvdGhlclZhbHVlKTsKKworI2lm
IFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVj
b3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUlu
Qnl0ZXMoKSk7CisjZW5kaWYKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgpAQCAtMTI5MCw2ICsxMzUzLDE0
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBzdGQ6OnN3YXAobV9rZXlDb3VudCwgb3RoZXIu
bV9rZXlDb3VudCk7CiAgICAgICAgIHN0ZDo6c3dhcChtX2RlbGV0ZWRDb3VudCwgb3RoZXIubV9k
ZWxldGVkQ291bnQpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIHN0
ZDo6c3dhcChtX3RyYWNrZWRJRCwgb3RoZXIubV90cmFja2VkSUQpOworCisgICAgICAgIC8vIE5v
dCBzdXJlIGlmIHRoaXMgaXMgbmVjZXNzYXJ5LiBOb3RoaW5nIHdpbGwgaGF2ZSBjaGFuZ2VkLgor
ICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tl
ZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisgICAgICAgIGhhc2hUYWJs
ZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkob3RoZXIubV90cmFja2VkSUQsIG90aGVy
LnNpemVJbkJ5dGVzKCksIG90aGVyLmNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAjaWYg
RFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCiAgICAgICAgIG1fc3RhdHMuc3dhcChvdGhl
ci5tX3N0YXRzKTsKICNlbmRpZgpAQCAtMTMxOCw2ICsxMzg5LDEwIEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICBtX2tleUNvdW50ID0gb3RoZXIubV9rZXlDb3VudDsKICAgICAgICAgbV9kZWxl
dGVkQ291bnQgPSBvdGhlci5tX2RlbGV0ZWRDb3VudDsKIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9D
QVBBQ0lUWQorICAgICAgICBzdGQ6OnN3YXAobV90cmFja2VkSUQsIG90aGVyLm1fdHJhY2tlZElE
KTsKKyNlbmRpZgorCiAgICAgICAgIG90aGVyLm1fdGFibGUgPSBudWxscHRyOwogICAgICAgICBv
dGhlci5tX3RhYmxlU2l6ZSA9IDA7CiAgICAgICAgIG90aGVyLm1fdGFibGVTaXplTWFzayA9IDA7
CkBAIC0xMzI4LDYgKzE0MDMsMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIG1fc3RhdHMg
PSBXVEZNb3ZlKG90aGVyLm1fc3RhdHMpOwogICAgICAgICBvdGhlci5tX3N0YXRzID0gbnVsbHB0
cjsKICNlbmRpZgorCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hU
YWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5
dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJl
Y29yZFNpemVBbmRDYXBhY2l0eShvdGhlci5tX3RyYWNrZWRJRCwgb3RoZXIuc2l6ZUluQnl0ZXMo
KSwgb3RoZXIuY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
QEAgLTEzMzgsNiArMTQxOCwxOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgc2l6ZV90IEhhc2hUYWJsZTxLZXksIFZhbHVl
LCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6c2l6ZUluQnl0
ZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHNpemUoKSAqIHNpemVvZihWYWx1ZVR5
cGUpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgc2l6ZV90IEhhc2hUYWJsZTxLZXksIFZhbHVl
LCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y2FwYWNpdHlJ
bkJ5dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjYXBhY2l0eSgpICogc2l6ZW9m
KFZhbHVlVHlwZSk7CisgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBl
bmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NpemVMaW1pdHMuY3BwIGIvU291cmNlL1dURi93
dGYvU2l6ZUxpbWl0cy5jcHAKaW5kZXggYjBhZDE0MDQ0ZjNiODQxMTY4NmQzYTFhYThlYWZiNGRh
Yjc3Nzg1Yy4uZmJlZDY1ZmUwMTAyMmM4ODBlN2U2NjkwMDJhYmQ4ZmUwYWY5ZDEyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
U2l6ZUxpbWl0cy5jcHAKQEAgLTgxLDkgKzgxLDEyIEBAIHB1YmxpYzoKICAgICB0eXBlbmFtZSBz
dGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2YoVCksIHN0ZDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1
ZT46OnR5cGUgaW5saW5lQnVmZmVyW2lubGluZUNhcGFjaXR5XTsKIH07CiAKKyNpZiAhVFJBQ0tf
VkVDVE9SX0NBUEFDSVRZCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihWZWN0b3I8aW50PikgPT0gc2l6
ZW9mKFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNpdHk8aW50PiksICJWZWN0b3Igc2hv
dWxkIHN0YXkgc21hbGwhIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihWZWN0b3I8aW50LCAxPikg
PT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNpdHk8aW50LCAxPiksICJW
ZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihWZWN0b3I8
aW50LCAyPikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNpdHk8aW50
LCAyPiksICJWZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihWZWN0b3I8aW50LCAzPikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5lQ2Fw
YWNpdHk8aW50LCAzPiksICJWZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7CisjZW5kaWYKKwog
I2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1Nob3QuaCBiL1NvdXJj
ZS9XVEYvd3RmL1N0YWNrU2hvdC5oCmluZGV4IDdlMzJhMzViYWUzYzdiNTZhOGJlODViN2QxOGQx
ZTU1NzlhMGIzZmMuLmZjN2NmYTZhNjYyNDgxY2VkNGM0YWRjZjU1Yzg1NmY1N2Q1ZjA2ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1N0YWNrU2hvdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRl
IDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3IuY3BwIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45YWJiNmRmMDE0ZmY2YjU2ZmJlN2EwNzVkNWI4NGY1MTI5MDkwMjEyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmNwcApAQCAtMCwwICsxLDk5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZlY3Rvci5oIgorCisjaWYg
VFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisjaW5jbHVkZSA8d3RmL0NvbnRhaW5lckNhcGFjaXR5VHJh
Y2tlci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCisjaWYgUExBVEZPUk0o
Q09DT0EpCisjaW5jbHVkZSA8bm90aWZ5Lmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrU2hvdC5oPgor
I2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgUExBVEZPUk0oQ09DT0EpCitzdGF0aWMg
dm9pZCBkdW1wV2FzdGVkVmVjdG9yQ2FwYWNpdHkoKQoreworICAgIGF1dG8gY2FsbFNpdGVEYXRh
ID0gdmVjdG9yVHJhY2tlcigpLmFnZ3JlZ2F0ZUJ5Q2FsbFNpdGUoW10gKFRyYWNrZWRJRCwgQWxs
b2NhdGlvbkNhbGxTaXRlRGF0YSYpIHsKKyAgICB9KTsKKworICAgIC8vIE1ha2UgYSB2ZWN0b3Ig
b2YgcmF3IHBvaW50ZXJzIHNvIHdlIGNhbiBzb3J0IHRoZW0uCisgICAgc3RkOjp2ZWN0b3I8QWxs
b2NhdGlvbkNhbGxTaXRlRGF0YSo+IGNhbGxTaXRlUHRyczsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IHNpdGVEYXRhIDogY2FsbFNpdGVEYXRhKSB7CisgICAgICAgIGlmICghc2l0ZURhdGEuY2FwYWNp
dHkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY2FsbFNpdGVQdHJzLnB1c2hfYmFj
ayhjb25zdF9jYXN0PEFsbG9jYXRpb25DYWxsU2l0ZURhdGEqPigmc2l0ZURhdGEpKTsKKyAgICB9
CisKKyAgICAvLyBTb3J0IGJ5IHJldmVyc2Ugd2FzdGFnZS4KKyAgICBzdGQ6OnNvcnQoY2FsbFNp
dGVQdHJzLmJlZ2luKCksIGNhbGxTaXRlUHRycy5lbmQoKSwgW10gKGNvbnN0IEFsbG9jYXRpb25D
YWxsU2l0ZURhdGEqIGEsIGNvbnN0IEFsbG9jYXRpb25DYWxsU2l0ZURhdGEqIGIpIHsKKyAgICAg
ICAgc2l6ZV90IGFXYXN0YWdlID0gYS0+Y2FwYWNpdHkgLSBhLT51c2VkU2l6ZTsKKyAgICAgICAg
c2l6ZV90IGJXYXN0YWdlID0gYi0+Y2FwYWNpdHkgLSBiLT51c2VkU2l6ZTsKKyAgICAgICAgcmV0
dXJuIGFXYXN0YWdlID4gYldhc3RhZ2U7CisgICAgfSk7CisKKyAgICBjb25zdCBzaXplX3QgbWF4
Q291bnQgPSAxMDA7CisKKyAgICBXVEZMb2dBbHdheXMoIiVsdSBjYWxsIHNpdGVzIGNyZWF0ZWQg
dmVjdG9ycy4gU2hvd2luZyAlbHUgc2l0ZXMgd2l0aCBtb3N0IHdhc3RhZ2U6XG4iLCBjYWxsU2l0
ZURhdGEuc2l6ZSgpLCBtYXhDb3VudCk7CisKKyAgICBzaXplX3QgY291bnQgPSAwOworICAgIGZv
ciAoYXV0byBzaXRlRGF0YSA6IGNhbGxTaXRlUHRycykgeworICAgICAgICBpZiAoY291bnQrKyA9
PSBtYXhDb3VudCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIFdURkxvZ0Fsd2F5cygi
V2FzdGVkIGNhcGFjaXR5OiAlbHUgYnl0ZXMgKHVzZWQgJWx1IG9mICVsdSBieXRlcywgdXRpbGl6
YXRpb246ICUuMmYlJSkgLSAlbHUgYWxsb2NhdGlvbnNcbiIsCisgICAgICAgICAgICBzaXRlRGF0
YS0+Y2FwYWNpdHkgLSBzaXRlRGF0YS0+dXNlZFNpemUsCisgICAgICAgICAgICBzaXRlRGF0YS0+
dXNlZFNpemUsIHNpdGVEYXRhLT5jYXBhY2l0eSwgMTAwLjAgKiBzaXRlRGF0YS0+dXNlZFNpemUg
LyBzaXRlRGF0YS0+Y2FwYWNpdHksCisgICAgICAgICAgICBzaXRlRGF0YS0+Y291bnQpOworICAg
ICAgICBjb25zdCBzaXplX3QgZnJhbWVzVG9Ta2lwID0gNzsKKyAgICAgICAgV1RGUHJpbnRCYWNr
dHJhY2Uoc2l0ZURhdGEtPnN0YWNrKCkuYXJyYXkoKSArIGZyYW1lc1RvU2tpcCwgc2l0ZURhdGEt
PnN0YWNrKCkuc2l6ZSgpIC0gZnJhbWVzVG9Ta2lwKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJc
biIpOworICAgIH0KK30KKyNlbmRpZgorCitDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIHZlY3Rv
clRyYWNrZXIoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBpbml0aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwg
W10geworICAgICAgICBpbnQgdG9rZW47CisgICAgICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRj
aCgiY29tLmFwcGxlLldlYktpdC5kdW1wVmVjdG9yQ2FwYWNpdHkiLCAmdG9rZW4sIGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIF4oaW50KSB7CisgICAgICAgICAgICBkdW1wV2FzdGVkVmVjdG9y
Q2FwYWNpdHkoKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisjZW5kaWYKKworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxXVEY6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlcj4gdHJhY2tlcjsKKyAg
ICByZXR1cm4gdHJhY2tlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBU
UkFDS19WRUNUT1JfQ0FQQUNJVFkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5o
IGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggNjZlM2JlMmFlNjg4YjBmZDVlMzQ4YzA3
NGE1YzNmNTRmODkwYTM4NC4uYTNkOWNjYjA1MDM2OWNkMTI1OTVhMjQ0MWQ3MzJiZDZhN2FkZGE3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93
dGYvVmVjdG9yLmgKQEAgLTM3LDEyICszNywyNCBAQAogI2luY2x1ZGUgPHd0Zi9WYWx1ZUNoZWNr
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3RvclRyYWl0cy5oPgogCisvLyBFbmFibGUgVFJBQ0tfVkVD
VE9SX0NBUEFDSVRZIHRvIHRyYWNrIGNhbGwgc2l0ZXMgdGhhdCB3YXN0ZSB2ZWN0b3IgY2FwYWNp
dHkuIE9uIENvY29hIHBsYXRmb3JtcywgdGhlIGRhdGEgY2FuIGJlIGR1bXBlZAorLy8gYnkgcnVu
bmluZyAibm90aWZ5dXRpbCAtcCBjb20uYXBwbGUuV2ViS2l0LmR1bXBWZWN0b3JDYXBhY2l0eSIu
CisjZGVmaW5lIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWSAwCisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQ
QUNJVFkKKyNpbmNsdWRlIDx3dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg+CisjZW5kaWYK
KwogI2lmIEFTQU5fRU5BQkxFRAogZXh0ZXJuICJDIiB2b2lkIF9fc2FuaXRpemVyX2Fubm90YXRl
X2NvbnRpZ3VvdXNfY29udGFpbmVyKGNvbnN0IHZvaWQqIGJlZ2luLCBjb25zdCB2b2lkKiBlbmQs
IGNvbnN0IHZvaWQqIG9sZF9taWQsIGNvbnN0IHZvaWQqIG5ld19taWQpOwogI2VuZGlmCiAKIG5h
bWVzcGFjZSBXVEYgewogCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCitXVEZfRVhQT1JUX1BS
SVZBVEUgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyJiB2ZWN0b3JUcmFja2VyKCk7CisjZW5kaWYK
KyAgICAKIHRlbXBsYXRlIDxib29sIG5lZWRzRGVzdHJ1Y3Rpb24sIHR5cGVuYW1lIFQ+CiBzdHJ1
Y3QgVmVjdG9yRGVzdHJ1Y3RvcjsKIApAQCAtMzM5LDYgKzM1MSwxNiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIHB0cmRpZmZfdCBidWZmZXJNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoVmVjdG9yQnVmZmVyQmFzZSwgbV9idWZmZXIpOyB9CiAgICAgc2l6ZV90IGNhcGFjaXR5
KCkgY29uc3QgeyByZXR1cm4gbV9jYXBhY2l0eTsgfQogCisgICAgc2l6ZV90IGNhcGFjaXR5SW5C
eXRlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY2FwYWNpdHkoKSAqIHNpemVvZihU
KTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fc2l6ZSAqIHNpemVvZihUKTsKKyAgICB9CisKICAgICBNYWxsb2NQdHI8VD4g
cmVsZWFzZUJ1ZmZlcigpCiAgICAgewogICAgICAgICBUKiBidWZmZXIgPSBtX2J1ZmZlcjsKQEAg
LTM1Myw2ICszNzUsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9jYXBhY2l0eSgwKQogICAg
ICAgICAsIG1fc2l6ZSgwKQogICAgIHsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAg
ICAgbV90cmFja2VkSUQgPSB2ZWN0b3JUcmFja2VyKCkucmVjb3JkQWxsb2NhdGlvbigwLCAwKTsK
KyNlbmRpZgogICAgIH0KIAogICAgIFZlY3RvckJ1ZmZlckJhc2UoVCogYnVmZmVyLCBzaXplX3Qg
Y2FwYWNpdHksIHNpemVfdCBzaXplKQpAQCAtMzYwLDE2ICszODUsMjYgQEAgcHJvdGVjdGVkOgog
ICAgICAgICAsIG1fY2FwYWNpdHkoY2FwYWNpdHkpCiAgICAgICAgICwgbV9zaXplKHNpemUpCiAg
ICAgeworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBtX3RyYWNrZWRJRCA9IHZl
Y3RvclRyYWNrZXIoKS5yZWNvcmRBbGxvY2F0aW9uKHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5C
eXRlcygpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIH5WZWN0b3JCdWZmZXJCYXNlKCkKICAgICB7
CiAgICAgICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIHRvIGZpbmQgYSB3YXkgdG8gQVNT
RVJUIHRoYXQgbV9idWZmZXIgaGFzbid0IGxlYWtlZCBoZXJlLgorI2lmIFRSQUNLX1ZFQ1RPUl9D
QVBBQ0lUWQorICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkRnJlZShtX3RyYWNrZWRJRCk7
CisgICAgICAgIG1fdHJhY2tlZElEID0gMDsKKyNlbmRpZgogICAgIH0KIAogICAgIFQqIG1fYnVm
ZmVyOwogICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7CiAgICAgdW5zaWduZWQgbV9zaXplOyAvLyBP
bmx5IHVzZWQgYnkgdGhlIFZlY3RvciBzdWJjbGFzcywgYnV0IHBsYWNlZCBoZXJlIHRvIGF2b2lk
IHBhZGRpbmcgdGhlIHN0cnVjdC4KKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICBUcmFj
a2VkSUQgbV90cmFja2VkSUQgeyAwIH07CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KQEAgLTQwMiw2ICs0MzcsOSBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBzdGQ6OnN3YXAobV9idWZmZXIsIG90aGVyLm1fYnVmZmVyKTsKICAgICAg
ICAgc3RkOjpzd2FwKG1fY2FwYWNpdHksIG90aGVyLm1fY2FwYWNpdHkpOworI2lmIFRSQUNLX1ZF
Q1RPUl9DQVBBQ0lUWQorICAgICAgICBzdGQ6OnN3YXAobV90cmFja2VkSUQsIG90aGVyLm1fdHJh
Y2tlZElEKTsKKyNlbmRpZgogICAgIH0KICAgICAKICAgICB2b2lkIHJlc3RvcmVJbmxpbmVCdWZm
ZXJJZk5lZWRlZCgpIHsgfQpAQCAtNDIzLDEwICs0NjEsMTYgQEAgcHVibGljOgogICAgIHVzaW5n
IEJhc2U6OmNhcGFjaXR5OwogICAgIHVzaW5nIEJhc2U6OmJ1ZmZlck1lbW9yeU9mZnNldDsKIAor
ICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5SW5CeXRlczsKKyAgICB1c2luZyBCYXNlOjpzaXplSW5C
eXRlczsKKwogICAgIHVzaW5nIEJhc2U6OnJlbGVhc2VCdWZmZXI7CiAKIHByb3RlY3RlZDoKICAg
ICB1c2luZyBCYXNlOjptX3NpemU7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdXNp
bmcgQmFzZTo6bV90cmFja2VkSUQ7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICB1c2luZyBCYXNl
OjptX2J1ZmZlcjsKQEAgLTUxNCw2ICs1NTgsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgc3Rk
Ojpzd2FwKG1fYnVmZmVyLCBvdGhlci5tX2J1ZmZlcik7CiAgICAgICAgICAgICBzdGQ6OnN3YXAo
bV9jYXBhY2l0eSwgb3RoZXIubV9jYXBhY2l0eSk7CiAgICAgICAgIH0KKworI2lmIFRSQUNLX1ZF
Q1RPUl9DQVBBQ0lUWQorICAgICAgICBzdGQ6OnN3YXAobV90cmFja2VkSUQsIG90aGVyLm1fdHJh
Y2tlZElEKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgcmVzdG9yZUlubGluZUJ1ZmZlcklm
TmVlZGVkKCkKQEAgLTU0MCw2ICs1ODgsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6YnVm
ZmVyOwogICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5OwogICAgIHVzaW5nIEJhc2U6OmJ1ZmZlck1l
bW9yeU9mZnNldDsKKyAgICB1c2luZyBCYXNlOjpjYXBhY2l0eUluQnl0ZXM7CisgICAgdXNpbmcg
QmFzZTo6c2l6ZUluQnl0ZXM7CiAKICAgICBNYWxsb2NQdHI8VD4gcmVsZWFzZUJ1ZmZlcigpCiAg
ICAgewpAQCAtNTUwLDYgKzYwMCw5IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHVzaW5n
IEJhc2U6Om1fc2l6ZTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB1c2luZyBCYXNl
OjptX3RyYWNrZWRJRDsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIHVzaW5nIEJhc2U6Om1fYnVm
ZmVyOwpAQCAtNjU4LDYgKzcxMSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJlc3VsdC5tX3NpemUg
PSBzaXplOwogCiAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRJbml0aWFsaXplPDA+KHN0ZDo6Zm9y
d2FyZDxJdGVtcz4oaXRlbXMpLi4uKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAg
ICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KHJlc3VsdC5tX3RyYWNr
ZWRJRCwgcmVzdWx0LnNpemVJbkJ5dGVzKCksIHJlc3VsdC5jYXBhY2l0eUluQnl0ZXMoKSk7Cisj
ZW5kaWYKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTY4NSw2ICs3NDIsOSBA
QCBwdWJsaWM6CiAgICAgc2l6ZV90IGNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gQmFzZTo6Y2Fw
YWNpdHkoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0K
IAorICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OnNpemVJbkJ5
dGVzKCk7IH0KKyAgICBzaXplX3QgY2FwYWNpdHlJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gQmFz
ZTo6Y2FwYWNpdHlJbkJ5dGVzKCk7IH0KKwogICAgIFQmIGF0KHNpemVfdCBpKQogICAgIHsKICAg
ICAgICAgaWYgKFVOTElLRUxZKGkgPj0gc2l6ZSgpKSkKQEAgLTgwOCw5ICs4NjgsMTcgQEAgcHVi
bGljOgogCiAgICAgICAgIEJhc2U6OnN3YXAob3RoZXIsIG1fc2l6ZSwgb3RoZXIubV9zaXplKTsK
ICAgICAgICAgc3RkOjpzd2FwKG1fc2l6ZSwgb3RoZXIubV9zaXplKTsKKyNpZiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkKKyAgICAgICAgc3RkOjpzd2FwKG1fdHJhY2tlZElELCBvdGhlci5tX3RyYWNr
ZWRJRCk7CisjZW5kaWYKIAogICAgICAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhtX3Np
emUpOwogICAgICAgICBvdGhlci5hc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhvdGhlci5tX3Np
emUpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIo
KS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFj
aXR5SW5CeXRlcygpKTsKKyAgICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBh
Y2l0eShvdGhlci5tX3RyYWNrZWRJRCwgb3RoZXIuc2l6ZUluQnl0ZXMoKSwgb3RoZXIuY2FwYWNp
dHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCByZXZlcnNlKCk7CkBAIC04
NjAsNiArOTI4LDExIEBAIHByaXZhdGU6CiAgICAgdXNpbmcgQmFzZTo6cmVhbGxvY2F0ZUJ1ZmZl
cjsKICAgICB1c2luZyBCYXNlOjpyZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQ7CiAgICAgdXNp
bmcgQmFzZTo6cmVsZWFzZUJ1ZmZlcjsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAg
IHVzaW5nIEJhc2U6Om1fdHJhY2tlZElEOworI2VuZGlmCisKICNpZiBBU0FOX0VOQUJMRUQKICAg
ICB1c2luZyBCYXNlOjplbmRPZkJ1ZmZlcjsKICNlbmRpZgpAQCAtODczLDYgKzk0NiwxMCBAQCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpW
ZWN0b3IoY29uc3QgVmVjdG9yJiBvdAogCiAgICAgaWYgKGJlZ2luKCkpCiAgICAgICAgIFR5cGVP
cGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpLCBvdGhlci5lbmQoKSwg
YmVnaW4oKSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2Vy
KCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBh
Y2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBh
Y2l0eT4KQEAgLTg4NCw2ICs5NjEsMTAgQEAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6VmVjdG9yKGNvbnN0IFZlY3RvcjxULAogCiAgICAg
aWYgKGJlZ2luKCkpCiAgICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShv
dGhlci5iZWdpbigpLCBvdGhlci5lbmQoKSwgYmVnaW4oKSk7CisKKyNpZiBUUkFDS19WRUNUT1Jf
Q0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJh
Y2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVy
Zmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTkwNiw2ICs5ODcsMTAgQEAgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXQKICAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0aWFsaXplZENv
cHkob3RoZXIuYmVnaW4oKSArIHNpemUoKSwgb3RoZXIuZW5kKCksIGVuZCgpKTsKICAgICBtX3Np
emUgPSBvdGhlci5zaXplKCk7CiAKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0
b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRl
cygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKKwogICAgIHJldHVybiAqdGhpczsKIH0K
IApAQCAtOTM0LDYgKzEwMTksMTAgQEAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxv
d0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYgVmVjdG9yPFQsIGlubGluZUNhcGFjaXQKICAgICBUeXBl
T3BlcmF0aW9uczo6dW5pbml0aWFsaXplZENvcHkob3RoZXIuYmVnaW4oKSArIHNpemUoKSwgb3Ro
ZXIuZW5kKCksIGVuZCgpKTsKICAgICBtX3NpemUgPSBvdGhlci5zaXplKCk7CiAKKyNpZiBUUkFD
S19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFj
aXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5k
aWYKKwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtMTAxNSw2ICsxMTA0LDEwIEBAIHZvaWQg
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6
ZmlsbChjb25zdCBUJiB2YWwsCiAgICAgc3RkOjpmaWxsKGJlZ2luKCksIGVuZCgpLCB2YWwpOwog
ICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkRmlsbChlbmQoKSwgYmVnaW4oKSArIG5l
d1NpemUsIHZhbCk7CiAgICAgbV9zaXplID0gbmV3U2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9D
QVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFj
a2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJm
bG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTA4Niw2ICsxMTc5LDEwIEBAIGlu
bGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5D
YXBhY2l0eT46OnJlc2l6ZShzaXplCiAgICAgfQogICAgIAogICAgIG1fc2l6ZSA9IHNpemU7CisK
KyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6
ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMo
KSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFj
aXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTEx
MDIsNiArMTE5OSwxMCBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyLCBtaW5DYXBhY2l0eT46OnNocmluayhzaXplX3Qgc2l6ZQogICAgIFR5cGVPcGVyYXRp
b25zOjpkZXN0cnVjdChiZWdpbigpICsgc2l6ZSwgZW5kKCkpOwogICAgIGFzYW5CdWZmZXJTaXpl
V2lsbENoYW5nZVRvKHNpemUpOwogICAgIG1fc2l6ZSA9IHNpemU7CisKKyNpZiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1f
dHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBP
dmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTExMTQsNiArMTIxNSwxMCBA
QCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBh
Y2l0eT46Omdyb3coc2l6ZV90IHNpemUpCiAgICAgaWYgKGJlZ2luKCkpCiAgICAgICAgIFR5cGVP
cGVyYXRpb25zOjppbml0aWFsaXplSWZOb25QT0QoZW5kKCksIGJlZ2luKCkgKyBzaXplKTsKICAg
ICBtX3NpemUgPSBzaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9y
VHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMo
KSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qg
bWluQ2FwYWNpdHk+CkBAIC0xMTc3LDYgKzEyODIsMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5l
Q2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpyZXNlcnZlQ2FwYWNpdHko
c2kKIAogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlKG9sZEJ1ZmZlciwgb2xkRW5kLCBiZWdpbigp
KTsKICAgICBCYXNlOjpkZWFsbG9jYXRlQnVmZmVyKG9sZEJ1ZmZlcik7CisKKyNpZiBUUkFDS19W
RUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5
KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTExOTksNiArMTMwOCwx
MCBAQCBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5D
YXBhY2l0eT46OnRyeVJlc2VydmVDYXBhY2l0eQogCiAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmUo
b2xkQnVmZmVyLCBvbGRFbmQsIGJlZ2luKCkpOwogICAgIEJhc2U6OmRlYWxsb2NhdGVCdWZmZXIo
b2xkQnVmZmVyKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNr
ZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNh
cGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMjA5
LDYgKzEzMjIsMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVzZXJ2ZUluaXQKICAgICBBU1NFUlQoY2FwYWNp
dHkoKSA9PSBpbmxpbmVDYXBhY2l0eSk7CiAgICAgaWYgKGluaXRpYWxDYXBhY2l0eSA+IGlubGlu
ZUNhcGFjaXR5KQogICAgICAgICBCYXNlOjphbGxvY2F0ZUJ1ZmZlcihpbml0aWFsQ2FwYWNpdHkp
OworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29y
ZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5
dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBA
IC0xMjI3LDYgKzEzNDQsOSBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnNocmlua0NhcGFjaXR5KHNpegogICAgICAgICBpZiAo
QmFzZTo6c2hvdWxkUmVhbGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0eSkpIHsKICAgICAgICAgICAg
IEJhc2U6OnJlYWxsb2NhdGVCdWZmZXIobmV3Q2FwYWNpdHkpOwogICAgICAgICAgICAgYXNhblNl
dEluaXRpYWxCdWZmZXJTaXplVG8oc2l6ZSgpKTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkK
KyAgICAgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFj
a2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEyNDAsNiArMTM2MCwxMCBAQCB2b2lkIFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnNo
cmlua0NhcGFjaXR5KHNpegogICAgIEJhc2U6OnJlc3RvcmVJbmxpbmVCdWZmZXJJZk5lZWRlZCgp
OwogCiAgICAgYXNhblNldEluaXRpYWxCdWZmZXJTaXplVG8oc2l6ZSgpKTsKKworI2lmIFRSQUNL
X1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNp
dHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRp
ZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVu
YW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTI1Nyw2ICsxMzgx
LDEwIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjphcHBlCiAgICAgVCogZGVzdCA9IGVuZCgpOwogICAg
IFZlY3RvckNvcGllcjxzdGQ6OmlzX3RyaXZpYWw8VD46OnZhbHVlLCBVPjo6dW5pbml0aWFsaXpl
ZENvcHkoZGF0YSwgc3RkOjphZGRyZXNzb2YoZGF0YVtkYXRhU2l6ZV0pLCBkZXN0KTsKICAgICBt
X3NpemUgPSBuZXdTaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9y
VHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMo
KSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qg
bWluQ2FwYWNpdHk+CkBAIC0xMjc2LDYgKzE0MDQsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnRy
eUEKICAgICBUKiBkZXN0ID0gZW5kKCk7CiAgICAgVmVjdG9yQ29waWVyPHN0ZDo6aXNfdHJpdmlh
bDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRpYWxpemVkQ29weShkYXRhLCBzdGQ6OmFkZHJlc3NvZihk
YXRhW2RhdGFTaXplXSksIGRlc3QpOwogICAgIG1fc2l6ZSA9IG5ld1NpemU7CisKKyNpZiBUUkFD
S19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFj
aXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5k
aWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTI4Nyw2ICsxNDE5LDkgQEAgQUxXQVlTX0lO
TElORSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5D
YXBhY2l0eT46OmFwcGUKICAgICAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXpl
ICsgMSk7CiAgICAgICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJkPFU+KHZh
bHVlKSk7CiAgICAgICAgICsrbV9zaXplOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAg
ICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBz
aXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTMwMSw2ICsxNDM2LDkgQEAgQUxXQVlTX0lOTElORSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmNvbnMK
ICAgICAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAgICAgICAg
IG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKICAg
ICAgICAgKyttX3NpemU7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3Rv
clRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVz
KCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMzE1LDYgKzE0NTMsOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlubGlu
ZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6dHJ5QwogICAgICAgICBh
c2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICAgICAgbmV3IChOb3RO
dWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgICAgICArK21f
c2l6ZTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgdmVjdG9yVHJhY2tlcigp
LnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNp
dHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAK
QEAgLTEzMzQsNiArMTQ3NSwxMCBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3Zl
cmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmFwcGVuZFNsb3dDYXNlKFUmJgogICAgIGFzYW5C
dWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEpOwogICAgIG5ldyAoTm90TnVsbCwgZW5k
KCkpIFQoc3RkOjpmb3J3YXJkPFU+KCpwdHIpKTsKICAgICArK21fc2l6ZTsKKworI2lmIFRSQUNL
X1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNp
dHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRp
ZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVu
YW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTM0OCw2ICsxNDkz
LDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1p
bkNhcGFjaXR5Pjo6Y29uc3RydWN0QW5kQXBwZW5kCiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hh
bmdlVG8obV9zaXplICsgMSk7CiAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOwogICAgICsrbV9zaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NB
UEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNr
ZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZs
b3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xMzYzLDYgKzE1MTIsMTAgQEAgYm9v
bCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+
Ojp0cnlDb25zdHJ1Y3RBbmRBcHAKICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3Np
emUgKyAxKTsKICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7CiAgICAgKyttX3NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAg
ICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXpl
SW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtMTM3OSw2ICsxNTMyLDEwIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojp1bmNoCiAKICAg
ICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSkpOwogICAgICsr
bV9zaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigp
LnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNp
dHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNp
dHk+CkBAIC0xNDA1LDYgKzE1NjIsMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjppbnNlcnQoc2l6ZV90IHBvc2kKICAgICBU
eXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKHNwb3QsIGVuZCgpLCBzcG90ICsgZGF0YVNp
emUpOwogICAgIFZlY3RvckNvcGllcjxzdGQ6OmlzX3RyaXZpYWw8VD46OnZhbHVlLCBVPjo6dW5p
bml0aWFsaXplZENvcHkoZGF0YSwgc3RkOjphZGRyZXNzb2YoZGF0YVtkYXRhU2l6ZV0pLCBzcG90
KTsKICAgICBtX3NpemUgPSBuZXdTaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisg
ICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6
ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAgCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxl
ciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTQyNSw2ICsxNTg2LDEwIEBAIGlubGluZSB2b2lk
IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46
Omluc2VydChzaXplCiAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVybGFwcGluZyhzcG90LCBl
bmQoKSwgc3BvdCArIDEpOwogICAgIG5ldyAoTm90TnVsbCwgc3BvdCkgVChzdGQ6OmZvcndhcmQ8
VT4oKnB0cikpOwogICAgICsrbV9zaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisg
ICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6
ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
LCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xNDQzLDYgKzE2MDgsMTAgQEAgaW5saW5lIHZvaWQg
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6
cmVtb3ZlKHNpemUKICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKHNwb3QgKyAx
LCBlbmQoKSwgc3BvdCk7CiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplIC0g
MSk7CiAgICAgLS1tX3NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0
b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRl
cygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVf
dCBtaW5DYXBhY2l0eT4KQEAgLTE0NTYsNiArMTYyNSwxMCBAQCBpbmxpbmUgdm9pZCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpyZW1vdmUo
c2l6ZQogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoZW5kU3BvdCwgZW5kKCks
IGJlZ2luU3BvdCk7CiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplIC0gbGVu
Z3RoKTsKICAgICBtX3NpemUgLT0gbGVuZ3RoOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZ
CisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwg
c2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5k
bGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xNTEzLDYgKzE2ODYsMTAgQEAgaW5saW5lIHVu
c2lnbmVkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBh
Y2l0eT46OnJlbW92ZUEKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVybGFwcGluZyho
b2xlRW5kLCBlbmQoKSwgaG9sZUJlZ2luKTsKICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VU
byhtX3NpemUgLSBtYXRjaENvdW50KTsKICAgICBtX3NpemUgLT0gbWF0Y2hDb3VudDsKKworI2lm
IFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5k
Q2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsK
KyNlbmRpZgogICAgIHJldHVybiBtYXRjaENvdW50OwogfQogCkBAIC0xNTUzLDYgKzE3MzAsMTAg
QEAgaW5saW5lIE1hbGxvY1B0cjxUPiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpyZWwKICAgICB9CiAgICAgbV9zaXplID0gMDsKICAgICAv
LyBGSVhNRTogU2hvdWxkIHdlIGNhbGwgQmFzZTo6cmVzdG9yZUlubGluZUJ1ZmZlcklmTmVlZGVk
KCkgaGVyZT8KKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIo
KS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFj
aXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIHJldHVybiBidWZmZXI7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342889</attachid>
            <date>2018-06-16 13:55:43 -0700</date>
            <delta_ts>2018-06-16 16:23:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186698-20180616135542.patch</filename>
            <type>text/plain</type>
            <size>55076</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyOTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2YTBlZTk1YjM1YWM1ZWY3YmU5NmFh
YmU0YTg5YmQ2NTgyN2FmNGEuLjUxNmU5NDBmNGM3ZWRhNzZhYTdlZWI4NmY0NDBiZjg4MjNiOWU1
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTgtMDYtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0cmFjayBj
YWxsIHNpdGVzIHRoYXQgd2FzdGUgVmVjdG9yIGNhcGFjaXR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY2OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZCBDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIgd2hpY2ggY2FuIGFnZ3JlZ2F0ZSBkYXRhIG9uIGEgcGVyLWNhbGwgc2l0ZSBiYXNp
cyAoYnkgdGFraW5nCisgICAgICAgIGEgc3RhY2tzaG90IE4gZnJhbWVzIGRlZXAsIGFuZCBoYXNo
aW5nIGl0KSwgYW5kIGlzIGluZm9ybWVkIGFib3V0IGFsbG9jYXRpb25zLCBzaXplIGFuZCAKKyAg
ICAgICAgY2FwYWNpdHkgY2hhbmdlcywgYW5kIGZyZWVzIG9mIGNvbnRhaW5lciB0eXBlcyAoZS5n
LiBWZWN0b3IgYW5kIEhhc2hNYXApLgorICAgICAgICAKKyAgICAgICAgV2hlbiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkgaXMgZGVmaW5lZCBpbiBWZWN0b3IuaCwgYSBzaW5nbGV0b24gQ29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyCisgICAgICAgIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiBhbGwgVmVj
dG9ycyBhbmQgdGhlaXIgc2l6ZSBhbmQgY2FwYWNpdHkgY2hhbmdlcy4gVmVjdG9yIGdhaW5zCisg
ICAgICAgIGFuIG1fdHJhY2tlZElEIG1lbWJlciB2YXJpYWJsZSB0byBhbGxvdyB0cmFja2luZyAo
VmVjdG9ycyBjYW4gYmUgV1RGTW92ZWQgYW5kIHN0ZDo6c3dhcHBlZCwKKyAgICAgICAgc28gd2Ug
Y2FuJ3QgcmVseSBvbiB0aGVpciBhZGRyZXNzIHRvIHRyYWNrIHRoZW0pLgorICAgICAgICAKKyAg
ICAgICAgRGF0YSBhYm91dCBsaXZlIFZlY3RvcnMgY2FuIHRoZW4gYmUgZHVtcGVkIHdpdGggIm5v
dGlmeXV0aWwgLXAgY29tLmFwcGxlLldlYktpdC5kdW1wVmVjdG9yQ2FwYWNpdHkiLAorICAgICAg
ICB2aWEgY29kZSBpbiBWZWN0b3IuY3BwLgorICAgICAgICAKKyAgICAgICAgQ29udGFpbmVyQ2Fw
YWNpdHlUcmFja2VyIHRha2VzIGNhcmUgdG8gYXZvaWQgcmUtZW50cmFuY3kgKGFsbG93IGl0IHRv
IHVzZSB0aGUgY29udGFpbmVyIHR5cGVzKQorICAgICAgICB3aGlsZSBiZWluZyBjYWxsYWJsZSBm
cm9tIGRpZmZlcmVudCB0aHJlYWRzLgorICAgICAgICAKKyAgICAgICAgKiBXVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAqIHd0
Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaDogQWRkZWQuCisgICAgICAgICogd3RmL1NpemVM
aW1pdHMuY3BwOgorICAgICAgICAqIHd0Zi9TdGFja1Nob3QuaDoKKyAgICAgICAgKiB3dGYvVmVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OmR1bXBXYXN0ZWRWZWN0b3JDYXBhY2l0eSk6
CisgICAgICAgIChXVEY6OnZlY3RvclRyYWNrZXIpOgorICAgICAgICAqIHd0Zi9WZWN0b3IuaDoK
KyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6Y2FwYWNpdHlJbkJ5dGVzIGNvbnN0KToK
KyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6c2l6ZUluQnl0ZXMgY29uc3QpOgorICAg
ICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjpWZWN0b3JCdWZmZXJCYXNlKToKKyAgICAgICAg
KFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6flZlY3RvckJ1ZmZlckJhc2UpOgorICAgICAgICAoV1RG
OjpWZWN0b3JCdWZmZXI6OnN3YXApOgorICAgICAgICAoV1RGOjpWZWN0b3I6OmZyb20pOgorICAg
ICAgICAoV1RGOjpWZWN0b3I6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdURjo6VmVj
dG9yOjpjYXBhY2l0eUluQnl0ZXMgY29uc3QpOgorICAgICAgICAoV1RGOjpWZWN0b3I6OnN3YXAp
OgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OlZlY3Rvcik6CisgICAgICAgIChXVEY6Oj0p
OgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmZpbGwpOgorICAgICAgICAoV1RGOjptaW5D
YXBhY2l0eT46OnJlc2l6ZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6c2hyaW5rKToK
KyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojpncm93KToKKyAgICAgICAgKFdURjo6bWluQ2Fw
YWNpdHk+OjpyZXNlcnZlQ2FwYWNpdHkpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnRy
eVJlc2VydmVDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6c2hyaW5rQ2FwYWNp
dHkpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmFwcGVuZCk6CisgICAgICAgIChXVEY6
Om1pbkNhcGFjaXR5Pjo6dHJ5QXBwZW5kKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojpj
b25zdHJ1Y3RBbmRBcHBlbmQpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnRyeUNvbnN0
cnVjdEFuZEFwcGVuZCk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6YXBwZW5kU2xvd0Nh
c2UpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmNvbnN0cnVjdEFuZEFwcGVuZFNsb3dD
YXNlKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojp0cnlDb25zdHJ1Y3RBbmRBcHBlbmRT
bG93Q2FzZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6dW5jaGVja2VkQXBwZW5kKToK
KyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+OjppbnNlcnQpOgorICAgICAgICAoV1RGOjptaW5D
YXBhY2l0eT46OnJlbW92ZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVtb3ZlQWxs
TWF0Y2hpbmcpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnJlbGVhc2VCdWZmZXIpOgor
CiAyMDE4LTA2LTE1ICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KIAog
ICAgICAgICBbV2luQ2Fpcm9dIE1vdmUgdW5yZWxhdGVkIGZlYXR1cmVzIG9mIFdvcmtRdWV1ZVdp
biBpbnRvIElQQzo6Q29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZWYxYjMzYjdmZTA3ODJmMWQ4NzQwNTk5M2Y2ZjQxMDZiMTA2NmUyMC4uMTk1
YjA3YTY1MzdiNGZiMWY3ZjRmZGJlZmQzYTZkZWQ5M2JkZjkzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNCw2ICsyNCw3IEBACiAJCTBGMzBCQTkwMUU3
ODcwOEUwMDJDQTg0NyAvKiBHbG9iYWxWZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzBCQThBMUU3ODcwOEUwMDJDQTg0NyAvKiBHbG9i
YWxWZXJzaW9uLmNwcCAqLzsgfTsKIAkJMEYzMENCNUExRkNERjEzNDAwNEI1MzIzIC8qIENvbmN1
cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMzBDQjU4MUZDREYxMzMwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNl
dC5jcHAgKi87IH07CiAJCTBGNDNEOEYxMURCNUFEREMwMDEwOEZCNiAvKiBBdXRvbWF0aWNUaHJl
YWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
M0Q4RUYxREI1QUREQzAwMTA4RkI2IC8qIEF1dG9tYXRpY1RocmVhZC5jcHAgKi87IH07CisJCTBG
NUI0REZBMjBEMERFMTgwMEQ2RjUxMCAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QjRERjkyMEQw
REUxNzAwRDZGNTEwIC8qIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAgKi87IH07CiAJCTBG
NUJGMTc2MUYyM0Q0OUEwMDI5RDkxRCAvKiBHaWdhY2FnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE3NDFGMjNENDlBMDAyOUQ5MUQgLyog
R2lnYWNhZ2UuY3BwICovOyB9OwogCQkwRjYwRjMyRjFERkNCRDFCMDA0MTZENkMgLyogTG9ja2Vk
UHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2MEYzMkQxREZDQkQxQjAwNDE2RDZDIC8qIExvY2tlZFByaW50U3RyZWFtLmNwcCAq
LzsgfTsKIAkJMEY2NkIyOEExREM5N0JBQjAwNEExRDNGIC8qIENsb2NrVHlwZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2QjI4MDFEQzk3QkFC
MDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCAqLzsgfTsKQEAgLTM4LDYgKzM5LDcgQEAKIAkJMEY4
RjJCOTIxNzJFMDEwMzAwN0RCREE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEYyQjhGMTcyRTAwRjAwMDdE
QkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgKi87IH07CiAJCTBGOUQzMzYwMTY1REJBNzMw
MDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmlu
dFN0cmVhbS5jcHAgKi87IH07CiAJCTBGOUQzMzYyMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0
cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwICovOyB9OworCQkwRkQ3
M0NCQjIwRDQ3NTg0MDBGQzdBMjkgLyogVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDczQ0JBMjBENDc1ODMwMEZDN0EyOSAvKiBWZWN0
b3IuY3BwICovOyB9OwogCQkwRkREQkZBNzE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRT
dHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZEREJGQTUxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCAqLzsgfTsK
IAkJMEZFMTY0NkExQjZGRkM5NjAwNDAwRTdDIC8qIExvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMTY0NjgxQjZGRkM5NjAwNDAwRTdDIC8q
IExvY2suY3BwICovOyB9OwogCQkwRkU0NDc5QzFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNDQ3
OUExQjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmNwcCAqLzsgfTsKQEAgLTIwMCw2ICsyMDIs
OCBAQAogCQkwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb21pbmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNDU3MDQ0MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1YmJsZVNvcnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY0RDhDNzExRkMxRTdDRTAwMUQzMkFDIC8qIFNpbmdseUxpbmtl
ZExpc3RXaXRoVGFpbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW5nbHlM
aW5rZWRMaXN0V2l0aFRhaWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1QjRE
RjgyMEQwREUxNzAwRDZGNTEwIC8qIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1QjRERjkyMEQwREUxNzAwRDZGNTEwIC8qIENv
bnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjVCRjE2NTFGMjMxNzgzMDAyOUQ5MUQgLyogTmF0dXJhbExvb3BzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5hdHVyYWxMb29wcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjVCRjE3NDFGMjNENDlBMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR2lnYWNhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVCRjE3
NTFGMjNENDlBMDAyOUQ5MUQgLyogR2lnYWNhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2lnYWNhZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0Niw2ICsyNTAsNyBAQAogCQkwRkI0
Njc4MzFGREUyODJDMDAzRkNCMDkgLyogQ29uY3VycmVudFZlY3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb25jdXJyZW50VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQzQ0ODgyMTZGRTlGRTEwMDg0NEJFOSAvKiBQcm9jZXNzSUQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc0lELmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGQzRFREU1MTY5NjE0OTYwMEY2NTA0MSAvKiBDb21tYVByaW50ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFQcmludGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDczQ0JBMjBENDc1ODMwMEZDN0EyOSAvKiBWZWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmVjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8q
IEZhc3RCaXRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmFzdEJp
dFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkRCNjk4RDFCN0M2NDNB
MDAwQzEwNzggLyogQ29uZGl0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbmRpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkREQkZBNTE2NjZE
RkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nUHJpbnRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODQ0LDYgKzg0OSw4IEBACiAJCQkJMEYzMENCNTkxRkNERjEzMzAwNEI1
MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmggKi8sCiAJCQkJMEZCNDY3ODMxRkRFMjgyQzAw
M0ZDQjA5IC8qIENvbmN1cnJlbnRWZWN0b3IuaCAqLywKIAkJCQkwRkRCNjk4RDFCN0M2NDNBMDAw
QzEwNzggLyogQ29uZGl0aW9uLmggKi8sCisJCQkJMEY1QjRERjkyMEQwREUxNzAwRDZGNTEwIC8q
IENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAgKi8sCisJCQkJMEY1QjRERjgyMEQwREUxNzAw
RDZGNTEwIC8qIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oICovLAogCQkJCTBGOEU4NURBMUZE
NDg1QjAwMDY5MTg4OSAvKiBDb3VudGluZ0xvY2suY3BwICovLAogCQkJCTBGRkJDQkZBMUZEMzdF
MEYwMDcyQUFGMCAvKiBDb3VudGluZ0xvY2suaCAqLywKIAkJCQlFMzhDNDEyNjFFQjRFMDY4MDA0
Mjk1N0QgLyogQ1BVVGltZS5jcHAgKi8sCkBAIC0xMTE4LDYgKzExMjUsNyBAQAogCQkJCTdBRkVD
NkFFMUVCMjJBQzYwMERBREUzNiAvKiBVVUlELmggKi8sCiAJCQkJQThBNDczNkYxNTFBODI1QjAw
NDEyM0ZGIC8qIFZhbHVlQ2hlY2suaCAqLywKIAkJCQk3Q0QwRDVBNzFENTUzMjJBMDAwQ0M5RTEg
LyogVmFyaWFudC5oICovLAorCQkJCTBGRDczQ0JBMjBENDc1ODMwMEZDN0EyOSAvKiBWZWN0b3Iu
Y3BwICovLAogCQkJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3IuaCAqLywKIAkJ
CQlBOEE0NzM3MTE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yVHJhaXRzLmggKi8sCiAJCQkJQThB
NDczNzIxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oICovLApAQCAtMTQ2MSw2ICsxNDY5LDcg
QEAKIAkJCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJQ1UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY4RjJCOTIxNzJFMDEwMzAwN0RCREE1IC8qIENvbXBpbGF0aW9uVGhy
ZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzBDQjVBMUZDREYxMzQwMDRCNTMyMyAvKiBD
b25jdXJyZW50UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjVCNERGQTIwRDBE
RTE4MDBENkY1MTAgLyogQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGOEU4NURCMUZENDg1QjAwMDY5MTg4OSAvKiBDb3VudGluZ0xvY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTM4QzQxMjgxRUI0RTA2ODAwNDI5NTdEIC8qIENQVVRpbWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTM4QzQxMjUxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2Nv
YS5tbSBpbiBTb3VyY2VzICovLApAQCAtMTU2NCw2ICsxNTczLDcgQEAKIAkJCQkxQzE4MUM5MzFE
MzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3NDY5MTUxQTgyNUIwMDQxMjNGRiAvKiBVVEY4LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdBRkVDNkIxMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGRDczQ0JCMjBENDc1ODQwMEZDN0EyOSAvKiBWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY2NkIyOTIxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1lLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFGQTQ3QzhBMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggMGY5ZjRlMWYyZGExNmMz
MTJjMGRkNTJkOGRiZTk1M2I1NTRkMzQ0ZC4uM2RjN2FmZmQ2MTA2YjFjODg5NjFkMmZkMzEwNDVm
ZjZkYzZmYTI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTM1LDYgKzM1LDcgQEAgc2V0KFdU
Rl9QVUJMSUNfSEVBREVSUwogICAgIENvbmN1cnJlbnRQdHJIYXNoU2V0LmgKICAgICBDb25jdXJy
ZW50VmVjdG9yLmgKICAgICBDb25kaXRpb24uaAorICAgIENvbnRhaW5lckNhcGFjaXR5VHJhY2tl
ci5oCiAgICAgQ291bnRpbmdMb2NrLmgKICAgICBDcm9zc1RocmVhZENvcGllci5oCiAgICAgQ3Jv
c3NUaHJlYWRRdWV1ZS5oCkBAIC0zMzEsNiArMzMyLDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAg
Q2xvY2tUeXBlLmNwcAogICAgIENvbXBpbGF0aW9uVGhyZWFkLmNwcAogICAgIENvbmN1cnJlbnRQ
dHJIYXNoU2V0LmNwcAorICAgIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAKICAgICBDb3Vu
dGluZ0xvY2suY3BwCiAgICAgQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiAgICAgQ3Jvc3NUaHJlYWRU
YXNrSGFuZGxlci5jcHAKQEAgLTM4Nyw2ICszODksNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBU
aW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3BwCiAgICAgVGltaW5nU2NvcGUuY3BwCiAgICAgVVVJ
RC5jcHAKKyAgICBWZWN0b3IuY3BwCiAgICAgV1RGQXNzZXJ0aW9ucy5jcHAKICAgICBXYWxsVGlt
ZS5jcHAKICAgICBXb3JkTG9jay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbnRh
aW5lckNhcGFjaXR5VHJhY2tlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0
eVRyYWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1YjYwYzYxMTczM2M3NmE0MDlmMThkZTllNDc0ZDQw
ZjhkMjBkYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBh
Y2l0eVRyYWNrZXIuY3BwCkBAIC0wLDAgKzEsMjAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNv
bnRhaW5lckNhcGFjaXR5VHJhY2tlci5oIgorCisjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyNp
bmNsdWRlIDx3dGYvU3RhY2tTaG90Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitBbGxvY2F0aW9u
Q2FsbFNpdGVEYXRhOjpBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKHNpemVfdCBzdGFja0RlcHRoLCBz
aXplX3QgaW5Vc2VkU2l6ZSwgc2l6ZV90IGluQ2FwYWNpdHkpCisgICAgOiB1c2VkU2l6ZShpblVz
ZWRTaXplKQorICAgICwgY2FwYWNpdHkoaW5DYXBhY2l0eSkKKyAgICAsIG1fc3RhY2soc3RkOjpt
YWtlX3VuaXF1ZTxTdGFja1Nob3Q+KHN0YWNrRGVwdGgpKQoreworfQorCitBbGxvY2F0aW9uQ2Fs
bFNpdGVEYXRhOjpBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKGNvbnN0IFN0YWNrU2hvdCYgc3RhY2sp
CisgICAgOiBtX3N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8U3RhY2tTaG90PihzdGFjaykpCit7Cit9
CisKK0FsbG9jYXRpb25DYWxsU2l0ZURhdGE6OkFsbG9jYXRpb25DYWxsU2l0ZURhdGEoY29uc3Qg
QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYgb3RoZXIpCisgICAgOiBjb3VudChvdGhlci5jb3VudCkK
KyAgICAsIHVzZWRTaXplKG90aGVyLnVzZWRTaXplKQorICAgICwgY2FwYWNpdHkob3RoZXIuY2Fw
YWNpdHkpCisgICAgLCBtX3N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8U3RhY2tTaG90PihvdGhlci5z
dGFjaygpKSkKK3sKK30KKworQWxsb2NhdGlvbkNhbGxTaXRlRGF0YTo6fkFsbG9jYXRpb25DYWxs
U2l0ZURhdGEoKSA9IGRlZmF1bHQ7CisKK2NvbnN0IFN0YWNrU2hvdCYgQWxsb2NhdGlvbkNhbGxT
aXRlRGF0YTo6c3RhY2soKSBjb25zdAoreworICAgIHJldHVybiAqbV9zdGFjazsKK30KKworc3Ry
dWN0IENvbnRhaW5lckFsbG9jYXRpb25EYXRhIHsKKyAgICBDb250YWluZXJBbGxvY2F0aW9uRGF0
YShzaXplX3Qgc3RhY2tTaG90U2l6ZSwgc2l6ZV90IGluU2l6ZSwgc2l6ZV90IGluQ2FwYWNpdHkp
CisgICAgICAgIDogYWxsb2NhdGlvblN0YWNrKHN0YWNrU2hvdFNpemUpCisgICAgICAgICwgc2l6
ZShpblNpemUpCisgICAgICAgICwgY2FwYWNpdHkoaW5DYXBhY2l0eSkKKyAgICB7CisgICAgCisg
ICAgfQorICAgIFN0YWNrU2hvdCBhbGxvY2F0aW9uU3RhY2s7CisgICAgc2l6ZV90IHNpemU7Cisg
ICAgc2l6ZV90IGNhcGFjaXR5OworfTsKKworc3RydWN0IENvbnRhaW5lckNhcGFjaXR5VHJhY2tl
cjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VySW1wbCB7CisgICAgc3RkOjp1bm9yZGVyZWRfbWFw
PFRyYWNrZWRJRCwgc3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lckFsbG9jYXRpb25EYXRhPj4gbV90
cmFja2VkSURUb0NvbnRhaW5lckRhdGE7Cit9OworCisvLyBUbyBwcmV2ZW50IHBlci10aHJlYWQg
cmUtZW50cmFuY3kgd2UgdGFrZSBhIHBvaW50ZXIgdG8gYW4gb2JqZWN0IG9uIHRoZSBzdGFjaywg
aW5zaWRlIG1fbXV0ZXggbG9jayBzY29wZS4KK2NsYXNzIEF2b2lkUmVjb3JkaW5nU2NvcGUgewor
cHVibGljOgorICAgIEF2b2lkUmVjb3JkaW5nU2NvcGUoQ29udGFpbmVyQ2FwYWNpdHlUcmFja2Vy
JiB0cmFja2VyLCBib29sKiBzdGFja09iamVjdCkKKyAgICAgICAgOiBtX3RyYWNrZXIodHJhY2tl
cikKKyAgICB7CisgICAgICAgIG1fdHJhY2tlci5tX2F2b2lkUmVlbnRyYW5jeSA9IHN0YWNrT2Jq
ZWN0OworICAgIH0KKworICAgIH5Bdm9pZFJlY29yZGluZ1Njb3BlKCkKKyAgICB7CisgICAgICAg
IG1fdHJhY2tlci5tX2F2b2lkUmVlbnRyYW5jeSA9IG51bGxwdHI7CisgICAgfQorcHJpdmF0ZToK
KyAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIG1fdHJhY2tlcjsKK307CisKK0NvbnRhaW5l
ckNhcGFjaXR5VHJhY2tlcjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyKHNpemVfdCBhZ2dyZWdh
dGlvblN0YWNrRGVwdGgpCisgICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXJD
YXBhY2l0eVRyYWNrZXJJbXBsPigpKQorICAgICwgbV9hZ2dyZWdhdGlvblN0YWNrRGVwdGgoYWdn
cmVnYXRpb25TdGFja0RlcHRoKQoreworfQorCitUcmFja2VkSUQgQ29udGFpbmVyQ2FwYWNpdHlU
cmFja2VyOjpyZWNvcmRBbGxvY2F0aW9uKHNpemVfdCBzaXplLCBzaXplX3QgY2FwYWNpdHkpCit7
CisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1f
bXV0ZXgpOworCisgICAgaWYgKG1fYXZvaWRSZWVudHJhbmN5KQorICAgICAgICByZXR1cm4gMDsK
KworICAgIGJvb2wgYXZvaWRSZWVudHJhbmN5ID0gdHJ1ZTsKKyAgICBBdm9pZFJlY29yZGluZ1Nj
b3BlIHNjb3BlKCp0aGlzLCAmYXZvaWRSZWVudHJhbmN5KTsKKworICAgIFRyYWNrZWRJRCBvYmpl
Y3RJRCA9ICsrbV9uZXh0SUQ7CisKKyAgICBhdXRvIGluc2VydFJlc3VsdCA9IG1faW1wbC0+bV90
cmFja2VkSURUb0NvbnRhaW5lckRhdGEuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKG9iamVjdElELCBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lckFsbG9jYXRpb25EYXRhPihtX2FnZ3JlZ2F0aW9uU3Rh
Y2tEZXB0aCwgc2l6ZSwgY2FwYWNpdHkpKSk7CisgICAgaWYgKCFpbnNlcnRSZXN1bHQuc2Vjb25k
KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpyZWNv
cmRBbGxvY2F0aW9uIHNhdyBvYmplY3QgJXUgZm9yIHRoZSBzZWNvbmQgdGltZSIsIG9iamVjdElE
KTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJXYXMgcHJldmlvdXNseSBhbGxvY2F0ZWQgYXQ6Iik7
CisgICAgICAgIGF1dG8mIGNhbGxTaXRlRGF0YSA9ICppbnNlcnRSZXN1bHQuZmlyc3QtPnNlY29u
ZDsKKyAgICAgICAgY29uc3Qgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IDA7CisgICAgICAgIFdURlBy
aW50QmFja3RyYWNlKGNhbGxTaXRlRGF0YS5hbGxvY2F0aW9uU3RhY2suYXJyYXkoKSArIGZyYW1l
c1RvU2tpcCwgY2FsbFNpdGVEYXRhLmFsbG9jYXRpb25TdGFjay5zaXplKCkgLSBmcmFtZXNUb1Nr
aXApOworICAgIH0KKworICAgIHJldHVybiBvYmplY3RJRDsKK30KKwordm9pZCBDb250YWluZXJD
YXBhY2l0eVRyYWNrZXI6OnJlY29yZFNpemVBbmRDYXBhY2l0eShUcmFja2VkSUQgb2JqZWN0SUQs
IHNpemVfdCBzaXplLCBzaXplX3QgY2FwYWNpdHkpCit7CisgICAgQVNTRVJUKHNpemUgPD0gY2Fw
YWNpdHkpOworCisgICAgaWYgKCFvYmplY3RJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3Rk
Ojpsb2NrX2d1YXJkPHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1fbXV0ZXgpOwor
CisgICAgaWYgKG1fYXZvaWRSZWVudHJhbmN5KQorICAgICAgICByZXR1cm47CisKKyAgICBib29s
IGF2b2lkUmVlbnRyYW5jeSA9IHRydWU7CisgICAgQXZvaWRSZWNvcmRpbmdTY29wZSBzY29wZSgq
dGhpcywgJmF2b2lkUmVlbnRyYW5jeSk7CisKKyAgICBhdXRvIGl0ID0gbV9pbXBsLT5tX3RyYWNr
ZWRJRFRvQ29udGFpbmVyRGF0YS5maW5kKG9iamVjdElEKTsKKyAgICBpZiAoaXQgIT0gbV9pbXBs
LT5tX3RyYWNrZWRJRFRvQ29udGFpbmVyRGF0YS5lbmQoKSkgeworICAgICAgICBpdC0+c2Vjb25k
LT5zaXplID0gc2l6ZTsKKyAgICAgICAgaXQtPnNlY29uZC0+Y2FwYWNpdHkgPSBjYXBhY2l0eTsK
KyAgICB9IGVsc2UKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250YWluZXJDYXBhY2l0eVRyYWNr
ZXIgJXAgcmVjb3JkU2l6ZUFuZENhcGFjaXR5IGZhaWxlZCB0byBmaW5kIG9iamVjdCAldSIsIHRo
aXMsIG9iamVjdElEKTsKK30KKwordm9pZCBDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29y
ZEZyZWUoVHJhY2tlZElEIG9iamVjdElEKQoreworICAgIGlmICghb2JqZWN0SUQpCisgICAgICAg
IHJldHVybjsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6OnJlY3Vyc2l2ZV9tdXRleD4gbG9j
a0hvbGRlcihtX211dGV4KTsKKworICAgIGlmIChtX2F2b2lkUmVlbnRyYW5jeSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYm9vbCBhdm9pZFJlZW50cmFuY3kgPSB0cnVlOworICAgIEF2b2lkUmVj
b3JkaW5nU2NvcGUgc2NvcGUoKnRoaXMsICZhdm9pZFJlZW50cmFuY3kpOworCisgICAgYXV0byBy
ZW1vdmVkQ291bnQgPSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJEYXRhLmVyYXNlKG9i
amVjdElEKTsKKyAgICBpZiAoIXJlbW92ZWRDb3VudCkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJD
b250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29yZEZyZWUgZ290IGlkICV1IGZvciB3aGljaCB0
aGVyZSBpcyBubyBlbnRyeSIsIG9iamVjdElEKTsKK30KKworc3RkOjp2ZWN0b3I8QWxsb2NhdGlv
bkNhbGxTaXRlRGF0YT4gQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjphZ2dyZWdhdGVCeUNhbGxT
aXRlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChUcmFja2VkSUQsIEFsbG9jYXRpb25DYWxsU2l0
ZURhdGEmKT4mIHBlck9iamVjdENhbGxiYWNrKQoreworICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6
OnJlY3Vyc2l2ZV9tdXRleD4gbG9ja0hvbGRlcihtX211dGV4KTsKKworICAgIGJvb2wgYXZvaWRS
ZWVudHJhbmN5ID0gdHJ1ZTsKKyAgICBBdm9pZFJlY29yZGluZ1Njb3BlIHNjb3BlKCp0aGlzLCAm
YXZvaWRSZWVudHJhbmN5KTsKKworICAgIHR5cGVkZWYgdW5zaWduZWQgU3RhY2tTaG90SGFzaDsK
KyAgICBzdGQ6OnVub3JkZXJlZF9tYXA8U3RhY2tTaG90SGFzaCwgc3RkOjp1bmlxdWVfcHRyPEFs
bG9jYXRpb25DYWxsU2l0ZURhdGE+PiBjYWxsU2l0ZVRvQWxsb2NhdGlvbkFnZ3JlZ2F0ZTsKKwor
ICAgIGZvciAoY29uc3QgYXV0byYgaXQgOiBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJE
YXRhKSB7CisgICAgICAgIGNvbnN0IENvbnRhaW5lckFsbG9jYXRpb25EYXRhJiBhbGxvY2F0aW9u
RGF0YSA9ICppdC5zZWNvbmQ7CisKKyAgICAgICAgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogY2Fs
bFNpdGVEYXRhOworCisgICAgICAgIGF1dG8gZmluZEl0ID0gY2FsbFNpdGVUb0FsbG9jYXRpb25B
Z2dyZWdhdGUuZmluZChhbGxvY2F0aW9uRGF0YS5hbGxvY2F0aW9uU3RhY2suaGFzaCgpKTsKKyAg
ICAgICAgaWYgKGZpbmRJdCA9PSBjYWxsU2l0ZVRvQWxsb2NhdGlvbkFnZ3JlZ2F0ZS5lbmQoKSkg
eworICAgICAgICAgICAgYXV0byBpbnNlcnRJdCA9IGNhbGxTaXRlVG9BbGxvY2F0aW9uQWdncmVn
YXRlLmluc2VydCh7IGFsbG9jYXRpb25EYXRhLmFsbG9jYXRpb25TdGFjay5oYXNoKCksIHN0ZDo6
bWFrZV91bmlxdWU8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4oYWxsb2NhdGlvbkRhdGEuYWxsb2Nh
dGlvblN0YWNrKSB9KTsKKyAgICAgICAgICAgIGNhbGxTaXRlRGF0YSA9IGluc2VydEl0LmZpcnN0
LT5zZWNvbmQuZ2V0KCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbFNpdGVEYXRh
ID0gZmluZEl0LT5zZWNvbmQuZ2V0KCk7CisKKyAgICAgICAgY2FsbFNpdGVEYXRhLT5jb3VudCAr
PSAxOworICAgICAgICBjYWxsU2l0ZURhdGEtPnVzZWRTaXplICs9IGFsbG9jYXRpb25EYXRhLnNp
emU7CisgICAgICAgIGNhbGxTaXRlRGF0YS0+Y2FwYWNpdHkgKz0gYWxsb2NhdGlvbkRhdGEuY2Fw
YWNpdHk7CisKKyAgICAgICAgcGVyT2JqZWN0Q2FsbGJhY2soaXQuZmlyc3QsICpjYWxsU2l0ZURh
dGEpOworICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPEFsbG9jYXRpb25DYWxsU2l0ZURhdGE+IHJl
c3VsdDsKKyAgICBmb3IgKGF1dG8mIGl0IDogY2FsbFNpdGVUb0FsbG9jYXRpb25BZ2dyZWdhdGUp
CisgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSgqaXQuc2Vj
b25kKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oIGIvU291
cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNmMWYy
OTcwM2ZlYTRjMjgxMDBjNjUzMGZhYTgyOGRmMGE5MzBkZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oCkBAIC0wLDAgKzEsODcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdU
Rl9Db250YWluZXJDYXBhY2l0eVRyYWNrZXJfaAorI2RlZmluZSBXVEZfQ29udGFpbmVyQ2FwYWNp
dHlUcmFja2VyX2gKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNs
dWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFN0YWNrU2hvdDsKKworc3RydWN0IEFs
bG9jYXRpb25DYWxsU2l0ZURhdGEgeworICAgIEFsbG9jYXRpb25DYWxsU2l0ZURhdGEoc2l6ZV90
IHN0YWNrRGVwdGggPSAwLCBzaXplX3Qgc2l6ZSA9IDAsIHNpemVfdCBjYXBhY2l0eSA9IDApOwor
ICAgIEFsbG9jYXRpb25DYWxsU2l0ZURhdGEoY29uc3QgU3RhY2tTaG90Jik7CisgICAgQWxsb2Nh
dGlvbkNhbGxTaXRlRGF0YShjb25zdCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJik7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIH5BbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKCk7CisKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgU3RhY2tTaG90JiBzdGFjaygpIGNvbnN0OworCisgICAgc2l6ZV90
IGNvdW50IHsgMCB9OworICAgIHNpemVfdCB1c2VkU2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgY2Fw
YWNpdHkgeyAwIH07CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrU2hvdD4g
bV9zdGFjazsgLy8gTmVlZGVkIHRvIGhpZGUgU3RhY2tTaG90IHRvIGF2b2lkIGNpcmN1bGFyIGlu
Y2x1ZGVzLgorfTsKKwordHlwZWRlZiB1bnNpZ25lZCBUcmFja2VkSUQ7CisKK2NsYXNzIENvbnRh
aW5lckNhcGFjaXR5VHJhY2tlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyKTsKKyAgICBmcmllbmQgY2xhc3MgQXZvaWRSZWNvcmRpbmdTY29wZTsK
K3B1YmxpYzoKKyAgICAvLyBDYWxsIHNpdGVzIGFyZSBhZ2dyZWdhdGVkIGJ5IGNhbGwgc3RhY2ss
IHVzaW5nIGFnZ3JlZ2F0aW9uU3RhY2tEZXB0aCBmcmFtZXMuCisgICAgQ29udGFpbmVyQ2FwYWNp
dHlUcmFja2VyKHNpemVfdCBhZ2dyZWdhdGlvblN0YWNrRGVwdGggPSAxNSk7CisgICAgCisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFRyYWNrZWRJRCByZWNvcmRBbGxvY2F0aW9uKHNpemVfdCBzaXpl
LCBzaXplX3QgY2FwYWNpdHkpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlY29yZFNp
emVBbmRDYXBhY2l0eShUcmFja2VkSUQsIHNpemVfdCBzaXplLCBzaXplX3QgY2FwYWNpdHkpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlY29yZEZyZWUoVHJhY2tlZElEKTsKKyAgICAK
KyAgICAvLyBSZXR1cm4gYSB2ZWN0b3Igb2YgcGVyIGNhbGxzaXRlIGRhdGE7IHNpemUgYW5kIGNh
cGFjaXR5IGFyZSBzdW1tZWQgZm9yIGFsbCBhbGxvY2F0aW9ucyB3aXRoIGEgZ2l2ZW4gY2FsbCBz
aXRlLgorICAgIC8vIFRoZSBwYXNzZWQgZnVuY3Rpb24gYWxsb3dzIHRoZSBjYWxsZXIgdG8gZG8g
YWRkaXRpb25hbCBwcm9jZXNzaW5nIHBlciBhbGxvY2F0aW9uLgorICAgIHN0ZDo6dmVjdG9yPEFs
bG9jYXRpb25DYWxsU2l0ZURhdGE+IGFnZ3JlZ2F0ZUJ5Q2FsbFNpdGUoY29uc3QgV1RGOjpGdW5j
dGlvbjx2b2lkKFRyYWNrZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYpPiYpOworCitwcml2
YXRlOgorICAgIC8vIFVzZSBhIHBpbXBsIHRvIGF2b2lkIGNpcmN1bGFyIGluY2x1ZGVzIGJldHdl
ZW4gb3VyIGhlYWRlciBhbmQgdGhlIGNvbnRhaW5lciBjbGFzcyBoZWFkZXJzLgorICAgIHN0cnVj
dCBDb250YWluZXJDYXBhY2l0eVRyYWNrZXJJbXBsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250
YWluZXJDYXBhY2l0eVRyYWNrZXJJbXBsPiBtX2ltcGw7CisgICAgc3RkOjpyZWN1cnNpdmVfbXV0
ZXggbV9tdXRleDsKKyAgICBUcmFja2VkSUQgbV9uZXh0SUQgeyAwIH07CisgICAgY29uc3Qgc2l6
ZV90IG1fYWdncmVnYXRpb25TdGFja0RlcHRoOworICAgIGJvb2wqIG1fYXZvaWRSZWVudHJhbmN5
IHsgbnVsbHB0ciB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Q29u
dGFpbmVyQ2FwYWNpdHlUcmFja2VyOworCisjZW5kaWYgLy8gV1RGX0NvbnRhaW5lckNhcGFjaXR5
VHJhY2tlcl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuY3BwCmluZGV4IDBlYjYwMzZjODYzZmIxMTNmZWM4OTEy
NTZlNTA3NTk0NDExNGFiZTEuLmU1MjQxZWJhOWM0ZTM2ZjkyNzQ3YzlmNTMwMDE1NDU5MTk2MjYz
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvSGFzaFRhYmxlLmNwcApAQCAtMjMsNiArMjMsMTcgQEAKICNpbmNsdWRlICJEYXRh
TG9nLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkK
KyNpbmNsdWRlIDx3dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg+CisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxub3Rp
ZnkuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tTaG90Lmg+CisjZW5kaWYKKworI2VuZGlmCisKIG5h
bWVzcGFjZSBXVEYgewogCiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFMKQEAgLTYzLDYgKzc0LDY4
IEBAIHZvaWQgSGFzaFRhYmxlU3RhdHM6OmR1bXBTdGF0cygpCiAgICAgZGF0YUxvZ0YoIiVkIHJl
aW5zZXJ0c1xuIiwgbnVtUmVpbnNlcnRzLmxvYWQoKSk7CiB9CiAKKyNlbmRpZiAvLyBEVU1QX0hB
U0hUQUJMRV9TVEFUUworCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisKKyNpZiBQTEFU
Rk9STShDT0NPQSkKK3N0YXRpYyB2b2lkIGR1bXBXYXN0ZWRIYXNoVGFibGVDYXBhY2l0eSgpCit7
CisgICAgYXV0byBjYWxsU2l0ZURhdGEgPSBoYXNoVGFibGVUcmFja2VyKCkuYWdncmVnYXRlQnlD
YWxsU2l0ZShbXSAoVHJhY2tlZElELCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJikgeworICAgIH0p
OworCisgICAgLy8gTWFrZSBhIHZlY3RvciBvZiByYXcgcG9pbnRlcnMgc28gd2UgY2FuIHNvcnQg
dGhlbS4KKyAgICBzdGQ6OnZlY3RvcjxBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKj4gY2FsbFNpdGVQ
dHJzOworICAgIGZvciAoY29uc3QgYXV0byYgc2l0ZURhdGEgOiBjYWxsU2l0ZURhdGEpIHsKKyAg
ICAgICAgaWYgKCFzaXRlRGF0YS5jYXBhY2l0eSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBjYWxsU2l0ZVB0cnMucHVzaF9iYWNrKGNvbnN0X2Nhc3Q8QWxsb2NhdGlvbkNhbGxTaXRl
RGF0YSo+KCZzaXRlRGF0YSkpOworICAgIH0KKworICAgIC8vIFNvcnQgYnkgcmV2ZXJzZSB3YXN0
YWdlLgorICAgIHN0ZDo6c29ydChjYWxsU2l0ZVB0cnMuYmVnaW4oKSwgY2FsbFNpdGVQdHJzLmVu
ZCgpLCBbXSAoY29uc3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogYSwgY29uc3QgQWxsb2NhdGlv
bkNhbGxTaXRlRGF0YSogYikgeworICAgICAgICBzaXplX3QgYVdhc3RhZ2UgPSBhLT5jYXBhY2l0
eSAtIGEtPnVzZWRTaXplOworICAgICAgICBzaXplX3QgYldhc3RhZ2UgPSBiLT5jYXBhY2l0eSAt
IGItPnVzZWRTaXplOworICAgICAgICByZXR1cm4gYVdhc3RhZ2UgPiBiV2FzdGFnZTsKKyAgICB9
KTsKKworICAgIGNvbnN0IHNpemVfdCBtYXhDb3VudCA9IDEwMDsKKworICAgIFdURkxvZ0Fsd2F5
cygiJWx1IGNhbGwgc2l0ZXMgY3JlYXRlZCBIYXNoVGFibGVzICh2aWEgSGFzaE1hcCBvciBIYXNo
U2V0KS4gU2hvd2luZyAlbHUgc2l0ZXMgd2l0aCBtb3N0IHdhc3RhZ2U6XG4iLCBjYWxsU2l0ZURh
dGEuc2l6ZSgpLCBtYXhDb3VudCk7CisKKyAgICBzaXplX3QgY291bnQgPSAwOworICAgIGZvciAo
YXV0byBzaXRlRGF0YSA6IGNhbGxTaXRlUHRycykgeworICAgICAgICBpZiAoY291bnQrKyA9PSBt
YXhDb3VudCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIFdURkxvZ0Fsd2F5cygiV2Fz
dGVkIGNhcGFjaXR5OiAlbHUgYnl0ZXMgKHVzZWQgJWx1IG9mICVsdSBieXRlcywgdXRpbGl6YXRp
b246ICUuMmYlJSkgLSAlbHUgYWxsb2NhdGlvbnNcbiIsCisgICAgICAgICAgICBzaXRlRGF0YS0+
Y2FwYWNpdHkgLSBzaXRlRGF0YS0+dXNlZFNpemUsCisgICAgICAgICAgICBzaXRlRGF0YS0+dXNl
ZFNpemUsIHNpdGVEYXRhLT5jYXBhY2l0eSwgMTAwLjAgKiBzaXRlRGF0YS0+dXNlZFNpemUgLyBz
aXRlRGF0YS0+Y2FwYWNpdHksCisgICAgICAgICAgICBzaXRlRGF0YS0+Y291bnQpOworICAgICAg
ICBjb25zdCBzaXplX3QgZnJhbWVzVG9Ta2lwID0gNzsKKyAgICAgICAgV1RGUHJpbnRCYWNrdHJh
Y2Uoc2l0ZURhdGEtPnN0YWNrKCkuYXJyYXkoKSArIGZyYW1lc1RvU2tpcCwgc2l0ZURhdGEtPnN0
YWNrKCkuc2l6ZSgpIC0gZnJhbWVzVG9Ta2lwKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJcbiIp
OworICAgIH0KK30KKyNlbmRpZgorCitDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIGhhc2hUYWJs
ZVRyYWNrZXIoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBpbml0aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwg
W10geworICAgICAgICBpbnQgdG9rZW47CisgICAgICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRj
aCgiY29tLmFwcGxlLldlYktpdC5kdW1wSGFzaFRhYmxlQ2FwYWNpdHkiLCAmdG9rZW4sIGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIF4oaW50KSB7CisgICAgICAgICAgICBkdW1wV2FzdGVkSGFz
aFRhYmxlQ2FwYWNpdHkoKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiAjZW5kaWYKIAorICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlcj4gdHJhY2tl
cjsKKyAgICByZXR1cm4gdHJhY2tlcjsKK30KKworI2VuZGlmIC8vIFRSQUNLX0hBU0hUQUJMRV9D
QVBBQ0lUWQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCBlNmE5NTBm
ZDQwMDkzNmNjNGJmZjNkODY0YTI0Nzg1MmVhZGIzNWRlLi43MDM1MzBjYjI3MTYyMjJlNGMyYzU2
MTQ0YjBlMjgyMjhhNGQ1Y2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtNDIsOCArNDIsMjAgQEAKICNp
bmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2VuZGlmCiAKKy8vIEVuYWJsZSBUUkFDS19IQVNIVEFC
TEVfQ0FQQUNJVFkgdG8gdHJhY2sgY2FsbCBzaXRlcyB0aGF0IHdhc3RlIEhhc2hUYWJsZSBjYXBh
Y2l0eS4gT24gQ29jb2EgcGxhdGZvcm1zLCB0aGUgZGF0YSBjYW4gYmUgZHVtcGVkCisvLyBieSBy
dW5uaW5nICJub3RpZnl1dGlsIC1wIGNvbS5hcHBsZS5XZWJLaXQuZHVtcEhhc2hUYWJsZUNhcGFj
aXR5Ii4KKyNkZWZpbmUgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZIDAKKworI2lmIFRSQUNLX0hB
U0hUQUJMRV9DQVBBQ0lUWQorI2luY2x1ZGUgPHd0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIu
aD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBB
Q0lUWQorV1RGX0VYUE9SVF9QUklWQVRFIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlciYgaGFzaFRh
YmxlVHJhY2tlcigpOworI2VuZGlmCisKIC8vIEVuYWJsZXMgaW50ZXJuYWwgV1RGIGNvbnNpc3Rl
bmN5IGNoZWNrcyB0aGF0IGFyZSBpbnZva2VkIGF1dG9tYXRpY2FsbHkuIE5vbi1XVEYgY2FsbGVy
cyBjYW4gY2FsbCBjaGVja1RhYmxlQ29uc2lzdGVuY3koKSBldmVuIGlmIGludGVybmFsIGNoZWNr
cyBhcmUgZGlzYWJsZWQuCiAjZGVmaW5lIENIRUNLX0hBU0hUQUJMRV9DT05TSVNURU5DWSAwCiAK
QEAgLTM2Miw2ICszNzQsMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAjaWYgQ0hFQ0tfSEFTSFRBQkxF
X1VTRV9BRlRFUl9ERVNUUlVDVElPTgogICAgICAgICAgICAgbV90YWJsZSA9IChWYWx1ZVR5cGUq
KSh1aW50cHRyX3QpMHhiYmFkYmVlZjsKICNlbmRpZgorCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NB
UEFDSVRZCisgICAgICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkRnJlZShtX3RyYWNr
ZWRJRCk7CisgICAgICAgICAgICBtX3RyYWNrZWRJRCA9IDA7CisjZW5kaWYKICAgICAgICAgfQog
CiAgICAgICAgIEhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmKTsKQEAgLTM4Myw2ICs0MDAsOSBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdW5zaWduZWQgY2FwYWNpdHkoKSBjb25zdCB7IHJl
dHVybiBtX3RhYmxlU2l6ZTsgfQogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biAhbV9rZXlDb3VudDsgfQogCisgICAgICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0Owor
ICAgICAgICBzaXplX3QgY2FwYWNpdHlJbkJ5dGVzKCkgY29uc3Q7CisKICAgICAgICAgQWRkUmVz
dWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBhZGQ8SWRlbnRpdHlUcmFu
c2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0KHZhbHVlKSwgdmFsdWUpOyB9CiAgICAgICAg
IEFkZFJlc3VsdCBhZGQoVmFsdWVUeXBlJiYgdmFsdWUpIHsgcmV0dXJuIGFkZDxJZGVudGl0eVRy
YW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpLCBXVEZNb3ZlKHZhbHVlKSk7
IH0KIApAQCAtNDg5LDYgKzUwOSwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdW5zaWdu
ZWQgbV9rZXlDb3VudDsKICAgICAgICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7CiAKKyNpZiBU
UkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgVHJhY2tlZElEIG1fdHJhY2tlZElEIHsg
MCB9OworI2VuZGlmCisKICNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgcHVibGlj
OgogICAgICAgICAvLyBBbGwgYWNjZXNzIHRvIG1faXRlcmF0b3JzIHNob3VsZCBiZSBndWFyZGVk
IHdpdGggbV9tdXRleC4KQEAgLTU1Niw2ICs1ODAsOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgLCBtX3N0YXRzKHN0ZDo6bWFrZV91bmlxdWU8U3RhdHM+KCkpCiAjZW5kaWYKICAgICB7Cisj
aWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIG1fdHJhY2tlZElEID0gaGFzaFRh
YmxlVHJhY2tlcigpLnJlY29yZEFsbG9jYXRpb24oMCwgMCk7CisjZW5kaWYKICAgICB9CiAKICAg
ICBpbmxpbmUgdW5zaWduZWQgZG91YmxlSGFzaCh1bnNpZ25lZCBrZXkpCkBAIC05MzgsNyArOTY1
LDExIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgZW50cnkgPSBleHBhbmQoZW50cnkp
OwogCiAgICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7Ci0gICAgICAgIAor
CisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIo
KS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFj
aXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtu
b3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CiAgICAgfQogCkBAIC05NzcsNiArMTAwOCwx
MCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0
ZW5jeSgpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hUYWJs
ZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVz
KCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIHJldHVybiBBZGRSZXN1
bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CiAgICAgfQogCkBAIC05OTcs
NiArMTAzMiwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgbmV3RW50cnktPn5WYWx1ZSgp
OwogICAgICAgICBuZXcgKE5vdE51bGwsIG5ld0VudHJ5KSBWYWx1ZVR5cGUoV1RGTW92ZShlbnRy
eSkpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hUYWJsZVRy
YWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCks
IGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIHJldHVybiBuZXdFbnRyeTsK
ICAgICB9CiAKQEAgLTEwNzAsNiArMTEwOSwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAg
aWYgKHNob3VsZFNocmluaygpKQogICAgICAgICAgICAgc2hyaW5rKCk7CiAKKyNpZiBUUkFDS19I
QVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVB
bmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkp
OworI2VuZGlmCisKICAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKICAg
ICB9CiAKQEAgLTExMzIsNyArMTE3NSwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBp
ZiAoc2hvdWxkU2hyaW5rKCkpCiAgICAgICAgICAgICBzaHJpbmsoKTsKLSAgICAgICAgCisKKyNp
ZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJl
Y29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJ
bkJ5dGVzKCkpOworI2VuZGlmCisKICAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVu
Y3koKTsKICAgICAgICAgcmV0dXJuIHJlbW92ZWRCdWNrZXRDb3VudDsKICAgICB9CkBAIC0xMjIx
LDYgKzEyNjgsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgZmFzdEZyZWUob2xkVGFi
bGUpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hUYWJsZVRy
YWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCks
IGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIGludGVybmFsQ2hlY2tUYWJs
ZUNvbnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybiBuZXdFbnRyeTsKICAgICB9CkBAIC0xMjM4
LDYgKzEyODksMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIG1fdGFibGVTaXplTWFzayA9
IDA7CiAgICAgICAgIG1fa2V5Q291bnQgPSAwOwogICAgICAgICBtX2RlbGV0ZWRDb3VudCA9IDA7
CisKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tl
cigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2Fw
YWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KQEAgLTEyNTUsNiAr
MTMxMCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLCBtX3N0YXRzKHN0ZDo6bWFrZV91
bmlxdWU8U3RhdHM+KCpvdGhlci5tX3N0YXRzKSkKICNlbmRpZgogICAgIHsKKyNpZiBUUkFDS19I
QVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgbV90cmFja2VkSUQgPSBoYXNoVGFibGVUcmFja2Vy
KCkucmVjb3JkQWxsb2NhdGlvbihzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7Cisj
ZW5kaWYKKwogICAgICAgICB1bnNpZ25lZCBvdGhlcktleUNvdW50ID0gb3RoZXIuc2l6ZSgpOwog
ICAgICAgICBpZiAoIW90aGVyS2V5Q291bnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjc2
LDYgKzEzMzUsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBvdGhlclZhbHVlIDogb3RoZXIpCiAgICAgICAgICAgICBhZGRVbmlxdWVGb3JJbml0aWFsaXph
dGlvbjxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3Qob3RoZXJWYWx1
ZSksIG90aGVyVmFsdWUpOworCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAg
IGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNp
emVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+CkBAIC0xMjkwLDYgKzEzNTMsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHN0ZDo6
c3dhcChtX2tleUNvdW50LCBvdGhlci5tX2tleUNvdW50KTsKICAgICAgICAgc3RkOjpzd2FwKG1f
ZGVsZXRlZENvdW50LCBvdGhlci5tX2RlbGV0ZWRDb3VudCk7CiAKKyNpZiBUUkFDS19IQVNIVEFC
TEVfQ0FQQUNJVFkKKyAgICAgICAgc3RkOjpzd2FwKG1fdHJhY2tlZElELCBvdGhlci5tX3RyYWNr
ZWRJRCk7CisKKyAgICAgICAgLy8gTm90IHN1cmUgaWYgdGhpcyBpcyBuZWNlc3NhcnkuIE5vdGhp
bmcgd2lsbCBoYXZlIGNoYW5nZWQuCisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRT
aXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRl
cygpKTsKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShv
dGhlci5tX3RyYWNrZWRJRCwgb3RoZXIuc2l6ZUluQnl0ZXMoKSwgb3RoZXIuY2FwYWNpdHlJbkJ5
dGVzKCkpOworI2VuZGlmCisKICNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKICAg
ICAgICAgbV9zdGF0cy5zd2FwKG90aGVyLm1fc3RhdHMpOwogI2VuZGlmCkBAIC0xMzE4LDYgKzEz
ODksMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIG1fa2V5Q291bnQgPSBvdGhlci5tX2tl
eUNvdW50OwogICAgICAgICBtX2RlbGV0ZWRDb3VudCA9IG90aGVyLm1fZGVsZXRlZENvdW50Owog
CisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcChtX3RyYWNr
ZWRJRCwgb3RoZXIubV90cmFja2VkSUQpOworI2VuZGlmCisKICAgICAgICAgb3RoZXIubV90YWJs
ZSA9IG51bGxwdHI7CiAgICAgICAgIG90aGVyLm1fdGFibGVTaXplID0gMDsKICAgICAgICAgb3Ro
ZXIubV90YWJsZVNpemVNYXNrID0gMDsKQEAgLTEzMjgsNiArMTQwMywxMSBAQCBuYW1lc3BhY2Ug
V1RGIHsKICAgICAgICAgbV9zdGF0cyA9IFdURk1vdmUob3RoZXIubV9zdGF0cyk7CiAgICAgICAg
IG90aGVyLm1fc3RhdHMgPSBudWxscHRyOwogI2VuZGlmCisKKyNpZiBUUkFDS19IQVNIVEFCTEVf
Q0FQQUNJVFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0
eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworICAgICAg
ICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG90aGVyLm1fdHJhY2tl
ZElELCBvdGhlci5zaXplSW5CeXRlcygpLCBvdGhlci5jYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5k
aWYKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzPgpAQCAtMTMzOCw2ICsxNDE4LDE4IEBAIG5hbWVzcGFjZSBX
VEYgewogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBzaXpl
X3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OjpzaXplSW5CeXRlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
c2l6ZSgpICogc2l6ZW9mKFZhbHVlVHlwZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBzaXpl
X3QgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OjpjYXBhY2l0eUluQnl0ZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIGNhcGFjaXR5KCkgKiBzaXplb2YoVmFsdWVUeXBlKTsKKyAgICB9CisKICNpZiAhQVNTRVJU
X0RJU0FCTEVECiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2l6ZUxp
bWl0cy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9TaXplTGltaXRzLmNwcAppbmRleCBiMGFkMTQwNDRm
M2I4NDExNjg2ZDNhMWFhOGVhZmI0ZGFiNzc3ODVjLi5mYmVkNjVmZTAxMDIyYzg4MGU3ZTY2OTAw
MmFiZDhmZTBhZjlkMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TaXplTGltaXRzLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TaXplTGltaXRzLmNwcApAQCAtODEsOSArODEsMTIgQEAg
cHVibGljOgogICAgIHR5cGVuYW1lIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVvZihUKSwgc3Rk
OjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlPjo6dHlwZSBpbmxpbmVCdWZmZXJbaW5saW5lQ2FwYWNp
dHldOwogfTsKIAorI2lmICFUUkFDS19WRUNUT1JfQ0FQQUNJVFkKIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKFZlY3RvcjxpbnQ+KSA9PSBzaXplb2YoU2FtZVNpemVBc1ZlY3RvcldpdGhJbmxpbmVDYXBh
Y2l0eTxpbnQ+KSwgIlZlY3RvciBzaG91bGQgc3RheSBzbWFsbCEiKTsKIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKFZlY3RvcjxpbnQsIDE+KSA9PSBzaXplb2YoU2FtZVNpemVBc1ZlY3RvcldpdGhJbmxp
bmVDYXBhY2l0eTxpbnQsIDE+KSwgIlZlY3RvciBzaG91bGQgc3RheSBzbWFsbCEiKTsKIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQsIDI+KSA9PSBzaXplb2YoU2FtZVNpemVBc1ZlY3Rv
cldpdGhJbmxpbmVDYXBhY2l0eTxpbnQsIDI+KSwgIlZlY3RvciBzaG91bGQgc3RheSBzbWFsbCEi
KTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQsIDM+KSA9PSBzaXplb2YoU2FtZVNp
emVBc1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxpbnQsIDM+KSwgIlZlY3RvciBzaG91bGQgc3Rh
eSBzbWFsbCEiKTsKKyNlbmRpZgorCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1N0YWNrU2hvdC5oIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKaW5kZXggN2UzMmEz
NWJhZTNjN2I1NmE4YmU4NWI3ZDE4ZDFlNTU3OWEwYjNmYy4uZmM3Y2ZhNmE2NjI0ODFjZWQ0YzRh
ZGNmNTVjODU2ZjU3ZDVmMDZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RhY2tTaG90
LmgKKysrIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2Ug
V1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9WZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhYmI2ZGYwMTRmZjZiNTZmYmU3YTA3NWQ1Yjg0
ZjUxMjkwOTAyMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuY3Bw
CkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVmVjdG9yLmgiCisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyNpbmNsdWRlIDx3
dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxub3RpZnkuaD4KKyNpbmNs
dWRlIDx3dGYvU3RhY2tTaG90Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKKyNpZiBQ
TEFURk9STShDT0NPQSkKK3N0YXRpYyB2b2lkIGR1bXBXYXN0ZWRWZWN0b3JDYXBhY2l0eSgpCit7
CisgICAgYXV0byBjYWxsU2l0ZURhdGEgPSB2ZWN0b3JUcmFja2VyKCkuYWdncmVnYXRlQnlDYWxs
U2l0ZShbXSAoVHJhY2tlZElELCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJikgeworICAgIH0pOwor
CisgICAgLy8gTWFrZSBhIHZlY3RvciBvZiByYXcgcG9pbnRlcnMgc28gd2UgY2FuIHNvcnQgdGhl
bS4KKyAgICBzdGQ6OnZlY3RvcjxBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKj4gY2FsbFNpdGVQdHJz
OworICAgIGZvciAoY29uc3QgYXV0byYgc2l0ZURhdGEgOiBjYWxsU2l0ZURhdGEpIHsKKyAgICAg
ICAgaWYgKCFzaXRlRGF0YS5jYXBhY2l0eSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBjYWxsU2l0ZVB0cnMucHVzaF9iYWNrKGNvbnN0X2Nhc3Q8QWxsb2NhdGlvbkNhbGxTaXRlRGF0
YSo+KCZzaXRlRGF0YSkpOworICAgIH0KKworICAgIC8vIFNvcnQgYnkgcmV2ZXJzZSB3YXN0YWdl
LgorICAgIHN0ZDo6c29ydChjYWxsU2l0ZVB0cnMuYmVnaW4oKSwgY2FsbFNpdGVQdHJzLmVuZCgp
LCBbXSAoY29uc3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogYSwgY29uc3QgQWxsb2NhdGlvbkNh
bGxTaXRlRGF0YSogYikgeworICAgICAgICBzaXplX3QgYVdhc3RhZ2UgPSBhLT5jYXBhY2l0eSAt
IGEtPnVzZWRTaXplOworICAgICAgICBzaXplX3QgYldhc3RhZ2UgPSBiLT5jYXBhY2l0eSAtIGIt
PnVzZWRTaXplOworICAgICAgICByZXR1cm4gYVdhc3RhZ2UgPiBiV2FzdGFnZTsKKyAgICB9KTsK
KworICAgIGNvbnN0IHNpemVfdCBtYXhDb3VudCA9IDEwMDsKKworICAgIFdURkxvZ0Fsd2F5cygi
JWx1IGNhbGwgc2l0ZXMgY3JlYXRlZCB2ZWN0b3JzLiBTaG93aW5nICVsdSBzaXRlcyB3aXRoIG1v
c3Qgd2FzdGFnZTpcbiIsIGNhbGxTaXRlRGF0YS5zaXplKCksIG1heENvdW50KTsKKworICAgIHNp
emVfdCBjb3VudCA9IDA7CisgICAgZm9yIChhdXRvIHNpdGVEYXRhIDogY2FsbFNpdGVQdHJzKSB7
CisgICAgICAgIGlmIChjb3VudCsrID09IG1heENvdW50KQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJXYXN0ZWQgY2FwYWNpdHk6ICVsdSBieXRlcyAodXNlZCAl
bHUgb2YgJWx1IGJ5dGVzLCB1dGlsaXphdGlvbjogJS4yZiUlKSAtICVsdSBhbGxvY2F0aW9uc1xu
IiwKKyAgICAgICAgICAgIHNpdGVEYXRhLT5jYXBhY2l0eSAtIHNpdGVEYXRhLT51c2VkU2l6ZSwK
KyAgICAgICAgICAgIHNpdGVEYXRhLT51c2VkU2l6ZSwgc2l0ZURhdGEtPmNhcGFjaXR5LCAxMDAu
MCAqIHNpdGVEYXRhLT51c2VkU2l6ZSAvIHNpdGVEYXRhLT5jYXBhY2l0eSwKKyAgICAgICAgICAg
IHNpdGVEYXRhLT5jb3VudCk7CisgICAgICAgIGNvbnN0IHNpemVfdCBmcmFtZXNUb1NraXAgPSA3
OworICAgICAgICBXVEZQcmludEJhY2t0cmFjZShzaXRlRGF0YS0+c3RhY2soKS5hcnJheSgpICsg
ZnJhbWVzVG9Ta2lwLCBzaXRlRGF0YS0+c3RhY2soKS5zaXplKCkgLSBmcmFtZXNUb1NraXApOwor
ICAgICAgICBXVEZMb2dBbHdheXMoIlxuIik7CisgICAgfQorfQorI2VuZGlmCisKK0NvbnRhaW5l
ckNhcGFjaXR5VHJhY2tlciYgdmVjdG9yVHJhY2tlcigpCit7CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOworICAgIHN0ZDo6Y2Fs
bF9vbmNlKGluaXRpYWxpemVPbmNlLCBbXSB7CisgICAgICAgIGludCB0b2tlbjsKKyAgICAgICAg
bm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJjb20uYXBwbGUuV2ViS2l0LmR1bXBWZWN0b3JDYXBh
Y2l0eSIsICZ0b2tlbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihpbnQpIHsKKyAgICAg
ICAgICAgIGR1bXBXYXN0ZWRWZWN0b3JDYXBhY2l0eSgpOworICAgICAgICB9KTsKKyAgICB9KTsK
KyNlbmRpZgorCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdURjo6Q29udGFpbmVyQ2FwYWNp
dHlUcmFja2VyPiB0cmFja2VyOworICAgIHJldHVybiB0cmFja2VyOworfQorCit9IC8vIG5hbWVz
cGFjZSBXVEYKKworI2VuZGlmIC8vIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRleCA2
NmUzYmUyYWU2ODhiMGZkNWUzNDhjMDc0YTVjM2Y1NGY4OTBhMzg0Li5hM2Q5Y2NiMDUwMzY5Y2Qx
MjU5NWEyNDQxZDczMmJkNmE3YWRkYTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0
b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtMzcsMTIgKzM3LDI0IEBACiAj
aW5jbHVkZSA8d3RmL1ZhbHVlQ2hlY2suaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yVHJhaXRzLmg+
CiAKKy8vIEVuYWJsZSBUUkFDS19WRUNUT1JfQ0FQQUNJVFkgdG8gdHJhY2sgY2FsbCBzaXRlcyB0
aGF0IHdhc3RlIHZlY3RvciBjYXBhY2l0eS4gT24gQ29jb2EgcGxhdGZvcm1zLCB0aGUgZGF0YSBj
YW4gYmUgZHVtcGVkCisvLyBieSBydW5uaW5nICJub3RpZnl1dGlsIC1wIGNvbS5hcHBsZS5XZWJL
aXQuZHVtcFZlY3RvckNhcGFjaXR5Ii4KKyNkZWZpbmUgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZIDAK
KworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorI2luY2x1ZGUgPHd0Zi9Db250YWluZXJDYXBh
Y2l0eVRyYWNrZXIuaD4KKyNlbmRpZgorCiAjaWYgQVNBTl9FTkFCTEVECiBleHRlcm4gIkMiIHZv
aWQgX19zYW5pdGl6ZXJfYW5ub3RhdGVfY29udGlndW91c19jb250YWluZXIoY29uc3Qgdm9pZCog
YmVnaW4sIGNvbnN0IHZvaWQqIGVuZCwgY29uc3Qgdm9pZCogb2xkX21pZCwgY29uc3Qgdm9pZCog
bmV3X21pZCk7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CiAKKyNpZiBUUkFDS19WRUNUT1Jf
Q0FQQUNJVFkKK1dURl9FWFBPUlRfUFJJVkFURSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIHZl
Y3RvclRyYWNrZXIoKTsKKyNlbmRpZgorICAgIAogdGVtcGxhdGUgPGJvb2wgbmVlZHNEZXN0cnVj
dGlvbiwgdHlwZW5hbWUgVD4KIHN0cnVjdCBWZWN0b3JEZXN0cnVjdG9yOwogCkBAIC0zMzksNiAr
MzUxLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90IGJ1ZmZlck1lbW9yeU9mZnNl
dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWZWN0b3JCdWZmZXJCYXNlLCBtX2J1ZmZlcik7
IH0KICAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2NhcGFjaXR5OyB9CiAK
KyAgICBzaXplX3QgY2FwYWNpdHlJbkJ5dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBjYXBhY2l0eSgpICogc2l6ZW9mKFQpOworICAgIH0KKworICAgIHNpemVfdCBzaXplSW5CeXRl
cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zaXplICogc2l6ZW9mKFQpOworICAg
IH0KKwogICAgIE1hbGxvY1B0cjxUPiByZWxlYXNlQnVmZmVyKCkKICAgICB7CiAgICAgICAgIFQq
IGJ1ZmZlciA9IG1fYnVmZmVyOwpAQCAtMzUzLDYgKzM3NSw5IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgLCBtX2NhcGFjaXR5KDApCiAgICAgICAgICwgbV9zaXplKDApCiAgICAgeworI2lmIFRSQUNL
X1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBtX3RyYWNrZWRJRCA9IHZlY3RvclRyYWNrZXIoKS5y
ZWNvcmRBbGxvY2F0aW9uKDAsIDApOworI2VuZGlmCiAgICAgfQogCiAgICAgVmVjdG9yQnVmZmVy
QmFzZShUKiBidWZmZXIsIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IHNpemUpCkBAIC0zNjAsMTYg
KzM4NSwyNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9jYXBhY2l0eShjYXBhY2l0eSkKICAg
ICAgICAgLCBtX3NpemUoc2l6ZSkKICAgICB7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisg
ICAgICAgIG1fdHJhY2tlZElEID0gdmVjdG9yVHJhY2tlcigpLnJlY29yZEFsbG9jYXRpb24oc2l6
ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgflZl
Y3RvckJ1ZmZlckJhc2UoKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5p
Y2UgdG8gZmluZCBhIHdheSB0byBBU1NFUlQgdGhhdCBtX2J1ZmZlciBoYXNuJ3QgbGVha2VkIGhl
cmUuCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5y
ZWNvcmRGcmVlKG1fdHJhY2tlZElEKTsKKyAgICAgICAgbV90cmFja2VkSUQgPSAwOworI2VuZGlm
CiAgICAgfQogCiAgICAgVCogbV9idWZmZXI7CiAgICAgdW5zaWduZWQgbV9jYXBhY2l0eTsKICAg
ICB1bnNpZ25lZCBtX3NpemU7IC8vIE9ubHkgdXNlZCBieSB0aGUgVmVjdG9yIHN1YmNsYXNzLCBi
dXQgcGxhY2VkIGhlcmUgdG8gYXZvaWQgcGFkZGluZyB0aGUgc3RydWN0LgorI2lmIFRSQUNLX1ZF
Q1RPUl9DQVBBQ0lUWQorICAgIFRyYWNrZWRJRCBtX3RyYWNrZWRJRCB7IDAgfTsKKyNlbmRpZgog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgpAQCAtNDAy
LDYgKzQzNyw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN0ZDo6c3dhcChtX2J1ZmZlciwg
b3RoZXIubV9idWZmZXIpOwogICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3RoZXIubV9j
YXBhY2l0eSk7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcCht
X3RyYWNrZWRJRCwgb3RoZXIubV90cmFja2VkSUQpOworI2VuZGlmCiAgICAgfQogICAgIAogICAg
IHZvaWQgcmVzdG9yZUlubGluZUJ1ZmZlcklmTmVlZGVkKCkgeyB9CkBAIC00MjMsMTAgKzQ2MSwx
NiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CiAgICAgdXNpbmcgQmFzZTo6
YnVmZmVyTWVtb3J5T2Zmc2V0OwogCisgICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHlJbkJ5dGVzOwor
ICAgIHVzaW5nIEJhc2U6OnNpemVJbkJ5dGVzOworCiAgICAgdXNpbmcgQmFzZTo6cmVsZWFzZUJ1
ZmZlcjsKIAogcHJvdGVjdGVkOgogICAgIHVzaW5nIEJhc2U6Om1fc2l6ZTsKKyNpZiBUUkFDS19W
RUNUT1JfQ0FQQUNJVFkKKyAgICB1c2luZyBCYXNlOjptX3RyYWNrZWRJRDsKKyNlbmRpZgogCiBw
cml2YXRlOgogICAgIHVzaW5nIEJhc2U6Om1fYnVmZmVyOwpAQCAtNTE0LDYgKzU1OCwxMCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV9idWZmZXIsIG90aGVyLm1fYnVmZmVyKTsK
ICAgICAgICAgICAgIHN0ZDo6c3dhcChtX2NhcGFjaXR5LCBvdGhlci5tX2NhcGFjaXR5KTsKICAg
ICAgICAgfQorCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcCht
X3RyYWNrZWRJRCwgb3RoZXIubV90cmFja2VkSUQpOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9p
ZCByZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQoKQpAQCAtNTQwLDYgKzU4OCw4IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlOjpidWZmZXI7CiAgICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CiAg
ICAgdXNpbmcgQmFzZTo6YnVmZmVyTWVtb3J5T2Zmc2V0OworICAgIHVzaW5nIEJhc2U6OmNhcGFj
aXR5SW5CeXRlczsKKyAgICB1c2luZyBCYXNlOjpzaXplSW5CeXRlczsKIAogICAgIE1hbGxvY1B0
cjxUPiByZWxlYXNlQnVmZmVyKCkKICAgICB7CkBAIC01NTAsNiArNjAwLDkgQEAgcHVibGljOgog
CiBwcm90ZWN0ZWQ6CiAgICAgdXNpbmcgQmFzZTo6bV9zaXplOworI2lmIFRSQUNLX1ZFQ1RPUl9D
QVBBQ0lUWQorICAgIHVzaW5nIEJhc2U6Om1fdHJhY2tlZElEOworI2VuZGlmCiAKIHByaXZhdGU6
CiAgICAgdXNpbmcgQmFzZTo6bV9idWZmZXI7CkBAIC02NTgsNiArNzExLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgcmVzdWx0Lm1fc2l6ZSA9IHNpemU7CiAKICAgICAgICAgcmVzdWx0LnVuY2hlY2tl
ZEluaXRpYWxpemU8MD4oc3RkOjpmb3J3YXJkPEl0ZW1zPihpdGVtcykuLi4pOworCisjaWYgVFJB
Q0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5k
Q2FwYWNpdHkocmVzdWx0Lm1fdHJhY2tlZElELCByZXN1bHQuc2l6ZUluQnl0ZXMoKSwgcmVzdWx0
LmNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIApAQCAtNjg1LDYgKzc0Miw5IEBAIHB1YmxpYzoKICAgICBzaXplX3QgY2FwYWNpdHkoKSBj
b25zdCB7IHJldHVybiBCYXNlOjpjYXBhY2l0eSgpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gIXNpemUoKTsgfQogCisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qg
eyByZXR1cm4gQmFzZTo6c2l6ZUluQnl0ZXMoKTsgfQorICAgIHNpemVfdCBjYXBhY2l0eUluQnl0
ZXMoKSBjb25zdCB7IHJldHVybiBCYXNlOjpjYXBhY2l0eUluQnl0ZXMoKTsgfQorCiAgICAgVCYg
YXQoc2l6ZV90IGkpCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoaSA+PSBzaXplKCkpKQpA
QCAtODA4LDkgKzg2OCwxNyBAQCBwdWJsaWM6CiAKICAgICAgICAgQmFzZTo6c3dhcChvdGhlciwg
bV9zaXplLCBvdGhlci5tX3NpemUpOwogICAgICAgICBzdGQ6OnN3YXAobV9zaXplLCBvdGhlci5t
X3NpemUpOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBzdGQ6OnN3YXAobV90
cmFja2VkSUQsIG90aGVyLm1fdHJhY2tlZElEKTsKKyNlbmRpZgogCiAgICAgICAgIGFzYW5TZXRJ
bml0aWFsQnVmZmVyU2l6ZVRvKG1fc2l6ZSk7CiAgICAgICAgIG90aGVyLmFzYW5TZXRJbml0aWFs
QnVmZmVyU2l6ZVRvKG90aGVyLm1fc2l6ZSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkK
KyAgICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJ
RCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworICAgICAgICB2ZWN0b3JUcmFj
a2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG90aGVyLm1fdHJhY2tlZElELCBvdGhlci5zaXpl
SW5CeXRlcygpLCBvdGhlci5jYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICB9CiAKICAg
ICB2b2lkIHJldmVyc2UoKTsKQEAgLTg2MCw2ICs5MjgsMTEgQEAgcHJpdmF0ZToKICAgICB1c2lu
ZyBCYXNlOjpyZWFsbG9jYXRlQnVmZmVyOwogICAgIHVzaW5nIEJhc2U6OnJlc3RvcmVJbmxpbmVC
dWZmZXJJZk5lZWRlZDsKICAgICB1c2luZyBCYXNlOjpyZWxlYXNlQnVmZmVyOworCisjaWYgVFJB
Q0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdXNpbmcgQmFzZTo6bV90cmFja2VkSUQ7CisjZW5kaWYK
KwogI2lmIEFTQU5fRU5BQkxFRAogICAgIHVzaW5nIEJhc2U6OmVuZE9mQnVmZmVyOwogI2VuZGlm
CkBAIC04NzMsNiArOTQ2LDEwIEBAIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyLCBtaW5DYXBhY2l0eT46OlZlY3Rvcihjb25zdCBWZWN0b3ImIG90CiAKICAgICBpZiAo
YmVnaW4oKSkKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVy
LmJlZ2luKCksIG90aGVyLmVuZCgpLCBiZWdpbigpKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBB
Q0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2Vk
SUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93
SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtODg0LDYgKzk2MSwxMCBAQCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpWZWN0b3Io
Y29uc3QgVmVjdG9yPFQsCiAKICAgICBpZiAoYmVnaW4oKSkKICAgICAgICAgVHlwZU9wZXJhdGlv
bnM6OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJlZ2luKCksIG90aGVyLmVuZCgpLCBiZWdpbigp
KTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNv
cmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5C
eXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpA
QCAtOTA2LDYgKzk4NywxMCBAQCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHk+JiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdAogICAgIFR5cGVPcGVy
YXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpICsgc2l6ZSgpLCBvdGhlci5l
bmQoKSwgZW5kKCkpOwogICAgIG1fc2l6ZSA9IG90aGVyLnNpemUoKTsKIAorI2lmIFRSQUNLX1ZF
Q1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHko
bV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgor
CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC05MzQsNiArMTAxOSwxMCBAQCBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdAogICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhl
ci5iZWdpbigpICsgc2l6ZSgpLCBvdGhlci5lbmQoKSwgZW5kKCkpOwogICAgIG1fc2l6ZSA9IG90
aGVyLnNpemUoKTsKIAorI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNr
ZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNh
cGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC0x
MDE1LDYgKzExMDQsMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpmaWxsKGNvbnN0IFQmIHZhbCwKICAgICBzdGQ6OmZpbGwo
YmVnaW4oKSwgZW5kKCksIHZhbCk7CiAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRG
aWxsKGVuZCgpLCBiZWdpbigpICsgbmV3U2l6ZSwgdmFsKTsKICAgICBtX3NpemUgPSBuZXdTaXpl
OworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29y
ZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5
dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBA
IC0xMDg2LDYgKzExNzksMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVzaXplKHNpemUKICAgICB9CiAgICAg
CiAgICAgbV9zaXplID0gc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZl
Y3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5
dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6
ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTEwMiw2ICsxMTk5LDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6c2hyaW5rKHNpemVf
dCBzaXplCiAgICAgVHlwZU9wZXJhdGlvbnM6OmRlc3RydWN0KGJlZ2luKCkgKyBzaXplLCBlbmQo
KSk7CiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8oc2l6ZSk7CiAgICAgbV9zaXplID0g
c2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5y
ZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5
SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5
PgpAQCAtMTExNCw2ICsxMjE1LDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6Z3JvdyhzaXplX3Qgc2l6ZSkKICAgICBpZiAo
YmVnaW4oKSkKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OmluaXRpYWxpemVJZk5vblBPRChlbmQo
KSwgYmVnaW4oKSArIHNpemUpOwogICAgIG1fc2l6ZSA9IHNpemU7CisKKyNpZiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1f
dHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBP
dmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTExNzcsNiArMTI4MiwxMCBA
QCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBh
Y2l0eT46OnJlc2VydmVDYXBhY2l0eShzaQogCiAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmUob2xk
QnVmZmVyLCBvbGRFbmQsIGJlZ2luKCkpOwogICAgIEJhc2U6OmRlYWxsb2NhdGVCdWZmZXIob2xk
QnVmZmVyKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIo
KS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFj
aXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFj
aXR5PgpAQCAtMTE5OSw2ICsxMzA4LDEwIEBAIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6dHJ5UmVzZXJ2ZUNhcGFjaXR5CiAKICAg
ICBUeXBlT3BlcmF0aW9uczo6bW92ZShvbGRCdWZmZXIsIG9sZEVuZCwgYmVnaW4oKSk7CiAgICAg
QmFzZTo6ZGVhbGxvY2F0ZUJ1ZmZlcihvbGRCdWZmZXIpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NB
UEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNr
ZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTEyMDksNiArMTMyMiwxMCBAQCBpbmxpbmUgdm9pZCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpyZXNlcnZl
SW5pdAogICAgIEFTU0VSVChjYXBhY2l0eSgpID09IGlubGluZUNhcGFjaXR5KTsKICAgICBpZiAo
aW5pdGlhbENhcGFjaXR5ID4gaW5saW5lQ2FwYWNpdHkpCiAgICAgICAgIEJhc2U6OmFsbG9jYXRl
QnVmZmVyKGluaXRpYWxDYXBhY2l0eSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAg
ICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXpl
SW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIs
IHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTEyMjcsNiArMTM0NCw5IEBAIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6c2hyaW5rQ2Fw
YWNpdHkoc2l6CiAgICAgICAgIGlmIChCYXNlOjpzaG91bGRSZWFsbG9jYXRlQnVmZmVyKG5ld0Nh
cGFjaXR5KSkgewogICAgICAgICAgICAgQmFzZTo6cmVhbGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0
eSk7CiAgICAgICAgICAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhzaXplKCkpOworI2lm
IFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29y
ZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5
dGVzKCkpOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTI0
MCw2ICsxMzYwLDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXIsIG1pbkNhcGFjaXR5Pjo6c2hyaW5rQ2FwYWNpdHkoc2l6CiAgICAgQmFzZTo6cmVzdG9y
ZUlubGluZUJ1ZmZlcklmTmVlZGVkKCk7CiAKICAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVU
byhzaXplKCkpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tl
cigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2Fw
YWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2Fw
YWNpdHk+CkBAIC0xMjU3LDYgKzEzODEsMTAgQEAgQUxXQVlTX0lOTElORSB2b2lkIFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmFwcGUKICAg
ICBUKiBkZXN0ID0gZW5kKCk7CiAgICAgVmVjdG9yQ29waWVyPHN0ZDo6aXNfdHJpdmlhbDxUPjo6
dmFsdWUsIFU+Ojp1bmluaXRpYWxpemVkQ29weShkYXRhLCBzdGQ6OmFkZHJlc3NvZihkYXRhW2Rh
dGFTaXplXSksIGRlc3QpOwogICAgIG1fc2l6ZSA9IG5ld1NpemU7CisKKyNpZiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1f
dHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBP
dmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTEyNzYsNiArMTQwNCwxMCBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXIsIG1pbkNhcGFjaXR5Pjo6dHJ5QQogICAgIFQqIGRlc3QgPSBlbmQoKTsKICAgICBWZWN0
b3JDb3BpZXI8c3RkOjppc190cml2aWFsPFQ+Ojp2YWx1ZSwgVT46OnVuaW5pdGlhbGl6ZWRDb3B5
KGRhdGEsIHN0ZDo6YWRkcmVzc29mKGRhdGFbZGF0YVNpemVdKSwgZGVzdCk7CiAgICAgbV9zaXpl
ID0gbmV3U2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNr
ZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNh
cGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMjg3
LDYgKzE0MTksOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6YXBwZQogICAgICAgICBhc2FuQnVmZmVy
U2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICAgICAgbmV3IChOb3ROdWxsLCBlbmQo
KSkgVChzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKICAgICAgICAgKyttX3NpemU7CisjaWYgVFJB
Q0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5k
Q2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsK
KyNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzAxLDYgKzE0MzYsOSBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRs
ZXIsIG1pbkNhcGFjaXR5Pjo6Y29ucwogICAgICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VU
byhtX3NpemUgKyAxKTsKICAgICAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOwogICAgICAgICArK21fc2l6ZTsKKyNpZiBUUkFDS19WRUNUT1Jf
Q0FQQUNJVFkKKyAgICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eSht
X3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzMTUsNiArMTQ1Myw5IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2Fw
YWNpdHk+Ojp0cnlDCiAgICAgICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSAr
IDEpOwogICAgICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7CiAgICAgICAgICsrbV9zaXplOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQor
ICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElE
LCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtMTMzNCw2ICsxNDc1LDEwIEBAIHZvaWQgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6YXBwZW5k
U2xvd0Nhc2UoVSYmCiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7
CiAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8VT4oKnB0cikpOwogICAg
ICsrbV9zaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tl
cigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2Fw
YWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2Fw
YWNpdHk+CkBAIC0xMzQ4LDYgKzE0OTMsMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojpjb25zdHJ1Y3RBbmRBcHBlbmQKICAg
ICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICBuZXcgKE5vdE51
bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgICAgKyttX3NpemU7
CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3Jk
U2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0
ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAg
LTEzNjMsNiArMTUxMiwxMCBAQCBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnRyeUNvbnN0cnVjdEFuZEFwcAogICAgIGFzYW5CdWZm
ZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEpOwogICAgIG5ldyAoTm90TnVsbCwgZW5kKCkp
IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKICAgICArK21fc2l6ZTsKKworI2lmIFRS
QUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2Fw
YWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNl
bmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMzc5LDYgKzE1MzIsMTAgQEAgQUxXQVlT
X0lOTElORSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBt
aW5DYXBhY2l0eT46OnVuY2gKIAogICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3
YXJkPFU+KHZhbHVlKSk7CiAgICAgKyttX3NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJ
VFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElE
LCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTE0MDUsNiArMTU2MiwxMCBAQCB2b2lkIFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46Omlu
c2VydChzaXplX3QgcG9zaQogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoc3Bv
dCwgZW5kKCksIHNwb3QgKyBkYXRhU2l6ZSk7CiAgICAgVmVjdG9yQ29waWVyPHN0ZDo6aXNfdHJp
dmlhbDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRpYWxpemVkQ29weShkYXRhLCBzdGQ6OmFkZHJlc3Nv
ZihkYXRhW2RhdGFTaXplXSksIHNwb3QpOwogICAgIG1fc2l6ZSA9IG5ld1NpemU7CisKKyNpZiBU
UkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENh
cGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7Cisj
ZW5kaWYKIH0KICAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwg
dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xNDI1LDYg
KzE1ODYsMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxv
d0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6aW5zZXJ0KHNpemUKICAgICBUeXBlT3BlcmF0aW9uczo6
bW92ZU92ZXJsYXBwaW5nKHNwb3QsIGVuZCgpLCBzcG90ICsgMSk7CiAgICAgbmV3IChOb3ROdWxs
LCBzcG90KSBUKHN0ZDo6Zm9yd2FyZDxVPigqcHRyKSk7CiAgICAgKyttX3NpemU7CisKKyNpZiBU
UkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENh
cGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7Cisj
ZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTE0NDMsNiAr
MTYwOCwxMCBAQCBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpyZW1vdmUoc2l6ZQogICAgIFR5cGVPcGVyYXRpb25zOjpt
b3ZlT3ZlcmxhcHBpbmcoc3BvdCArIDEsIGVuZCgpLCBzcG90KTsKICAgICBhc2FuQnVmZmVyU2l6
ZVdpbGxDaGFuZ2VUbyhtX3NpemUgLSAxKTsKICAgICAtLW1fc2l6ZTsKKworI2lmIFRSQUNLX1ZF
Q1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHko
bV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTQ1Niw2ICsxNjI1LDEw
IEBAIGlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eT46OnJlbW92ZShzaXplCiAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVy
bGFwcGluZyhlbmRTcG90LCBlbmQoKSwgYmVnaW5TcG90KTsKICAgICBhc2FuQnVmZmVyU2l6ZVdp
bGxDaGFuZ2VUbyhtX3NpemUgLSBsZW5ndGgpOwogICAgIG1fc2l6ZSAtPSBsZW5ndGg7CisKKyNp
ZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFu
ZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7
CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTE1MTMs
NiArMTY4NiwxMCBAQCBpbmxpbmUgdW5zaWduZWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVtb3ZlQQogICAgICAgICBUeXBlT3BlcmF0
aW9uczo6bW92ZU92ZXJsYXBwaW5nKGhvbGVFbmQsIGVuZCgpLCBob2xlQmVnaW4pOwogICAgIGFz
YW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSAtIG1hdGNoQ291bnQpOwogICAgIG1fc2l6
ZSAtPSBtYXRjaENvdW50OworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9y
VHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMo
KSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgcmV0dXJuIG1hdGNoQ291bnQ7CiB9
CiAKQEAgLTE1NTMsNiArMTczMCwxMCBAQCBpbmxpbmUgTWFsbG9jUHRyPFQ+IFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJlbAogICAgIH0K
ICAgICBtX3NpemUgPSAwOwogICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgY2FsbCBCYXNlOjpyZXN0
b3JlSW5saW5lQnVmZmVySWZOZWVkZWQoKSBoZXJlPworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFD
SVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJ
RCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgcmV0dXJu
IGJ1ZmZlcjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342893</attachid>
            <date>2018-06-16 16:23:33 -0700</date>
            <delta_ts>2018-10-15 11:28:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186698-20180616162332.patch</filename>
            <type>text/plain</type>
            <size>55130</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyOTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2YTBlZTk1YjM1YWM1ZWY3YmU5NmFh
YmU0YTg5YmQ2NTgyN2FmNGEuLmM5ZDU1OWNiY2JmOWIwZGZjYWM1MTBjNmIxMDdlMDk2OTM0Y2Ji
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTgtMDYtMTYgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0cmFjayBj
YWxsIHNpdGVzIHRoYXQgd2FzdGUgVmVjdG9yIGNhcGFjaXR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY2OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZCBDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIgd2hpY2ggY2FuIGFnZ3JlZ2F0ZSBkYXRhIG9uIGEgcGVyLWNhbGwgc2l0ZSBiYXNp
cyAoYnkgdGFraW5nCisgICAgICAgIGEgc3RhY2tzaG90IE4gZnJhbWVzIGRlZXAsIGFuZCBoYXNo
aW5nIGl0KSwgYW5kIGlzIGluZm9ybWVkIGFib3V0IGFsbG9jYXRpb25zLCBzaXplIGFuZCAKKyAg
ICAgICAgY2FwYWNpdHkgY2hhbmdlcywgYW5kIGZyZWVzIG9mIGNvbnRhaW5lciB0eXBlcyAoZS5n
LiBWZWN0b3IgYW5kIEhhc2hNYXApLgorICAgICAgICAKKyAgICAgICAgV2hlbiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkgaXMgZGVmaW5lZCBpbiBWZWN0b3IuaCwgYSBzaW5nbGV0b24gQ29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyCisgICAgICAgIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiBhbGwgVmVj
dG9ycyBhbmQgdGhlaXIgc2l6ZSBhbmQgY2FwYWNpdHkgY2hhbmdlcy4gVmVjdG9yIGdhaW5zCisg
ICAgICAgIGFuIG1fdHJhY2tlZElEIG1lbWJlciB2YXJpYWJsZSB0byBhbGxvdyB0cmFja2luZyAo
VmVjdG9ycyBjYW4gYmUgV1RGTW92ZWQgYW5kIHN0ZDo6c3dhcHBlZCwKKyAgICAgICAgc28gd2Ug
Y2FuJ3QgcmVseSBvbiB0aGVpciBhZGRyZXNzIHRvIHRyYWNrIHRoZW0pLgorICAgICAgICAKKyAg
ICAgICAgRGF0YSBhYm91dCBsaXZlIFZlY3RvcnMgY2FuIHRoZW4gYmUgZHVtcGVkIHdpdGggIm5v
dGlmeXV0aWwgLXAgY29tLmFwcGxlLldlYktpdC5kdW1wVmVjdG9yQ2FwYWNpdHkiLAorICAgICAg
ICB2aWEgY29kZSBpbiBWZWN0b3IuY3BwLgorICAgICAgICAKKyAgICAgICAgQ29udGFpbmVyQ2Fw
YWNpdHlUcmFja2VyIHRha2VzIGNhcmUgdG8gYXZvaWQgcmUtZW50cmFuY3kgKGFsbG93IGl0IHRv
IHVzZSB0aGUgY29udGFpbmVyIHR5cGVzKQorICAgICAgICB3aGlsZSBiZWluZyBjYWxsYWJsZSBm
cm9tIGRpZmZlcmVudCB0aHJlYWRzLgorICAgICAgICAKKyAgICAgICAgKiBXVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAqIHd0
Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaDogQWRkZWQuCisgICAgICAgICogd3RmL1NpemVM
aW1pdHMuY3BwOgorICAgICAgICAqIHd0Zi9TdGFja1Nob3QuaDoKKyAgICAgICAgKiB3dGYvVmVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OmR1bXBXYXN0ZWRWZWN0b3JDYXBhY2l0eSk6
CisgICAgICAgIChXVEY6OnZlY3RvclRyYWNrZXIpOgorICAgICAgICAqIHd0Zi9WZWN0b3IuaDoK
KyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6Y2FwYWNpdHlJbkJ5dGVzIGNvbnN0KToK
KyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6c2l6ZUluQnl0ZXMgY29uc3QpOgorICAg
ICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjpWZWN0b3JCdWZmZXJCYXNlKToKKyAgICAgICAg
KFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6flZlY3RvckJ1ZmZlckJhc2UpOgorICAgICAgICAoV1RG
OjpWZWN0b3JCdWZmZXI6OnN3YXApOgorICAgICAgICAoV1RGOjpWZWN0b3I6OmZyb20pOgorICAg
ICAgICAoV1RGOjpWZWN0b3I6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdURjo6VmVj
dG9yOjpjYXBhY2l0eUluQnl0ZXMgY29uc3QpOgorICAgICAgICAoV1RGOjpWZWN0b3I6OnN3YXAp
OgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OlZlY3Rvcik6CisgICAgICAgIChXVEY6Oj0p
OgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmZpbGwpOgorICAgICAgICAoV1RGOjptaW5D
YXBhY2l0eT46OnJlc2l6ZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6c2hyaW5rKToK
KyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojpncm93KToKKyAgICAgICAgKFdURjo6bWluQ2Fw
YWNpdHk+OjpyZXNlcnZlQ2FwYWNpdHkpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnRy
eVJlc2VydmVDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6c2hyaW5rQ2FwYWNp
dHkpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmFwcGVuZCk6CisgICAgICAgIChXVEY6
Om1pbkNhcGFjaXR5Pjo6dHJ5QXBwZW5kKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojpj
b25zdHJ1Y3RBbmRBcHBlbmQpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnRyeUNvbnN0
cnVjdEFuZEFwcGVuZCk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6YXBwZW5kU2xvd0Nh
c2UpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmNvbnN0cnVjdEFuZEFwcGVuZFNsb3dD
YXNlKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojp0cnlDb25zdHJ1Y3RBbmRBcHBlbmRT
bG93Q2FzZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6dW5jaGVja2VkQXBwZW5kKToK
KyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+OjppbnNlcnQpOgorICAgICAgICAoV1RGOjptaW5D
YXBhY2l0eT46OnJlbW92ZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVtb3ZlQWxs
TWF0Y2hpbmcpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnJlbGVhc2VCdWZmZXIpOgor
CiAyMDE4LTA2LTE1ICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KIAog
ICAgICAgICBbV2luQ2Fpcm9dIE1vdmUgdW5yZWxhdGVkIGZlYXR1cmVzIG9mIFdvcmtRdWV1ZVdp
biBpbnRvIElQQzo6Q29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZWYxYjMzYjdmZTA3ODJmMWQ4NzQwNTk5M2Y2ZjQxMDZiMTA2NmUyMC4uMTk1
YjA3YTY1MzdiNGZiMWY3ZjRmZGJlZmQzYTZkZWQ5M2JkZjkzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNCw2ICsyNCw3IEBACiAJCTBGMzBCQTkwMUU3
ODcwOEUwMDJDQTg0NyAvKiBHbG9iYWxWZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzBCQThBMUU3ODcwOEUwMDJDQTg0NyAvKiBHbG9i
YWxWZXJzaW9uLmNwcCAqLzsgfTsKIAkJMEYzMENCNUExRkNERjEzNDAwNEI1MzIzIC8qIENvbmN1
cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMzBDQjU4MUZDREYxMzMwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNl
dC5jcHAgKi87IH07CiAJCTBGNDNEOEYxMURCNUFEREMwMDEwOEZCNiAvKiBBdXRvbWF0aWNUaHJl
YWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
M0Q4RUYxREI1QUREQzAwMTA4RkI2IC8qIEF1dG9tYXRpY1RocmVhZC5jcHAgKi87IH07CisJCTBG
NUI0REZBMjBEMERFMTgwMEQ2RjUxMCAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QjRERjkyMEQw
REUxNzAwRDZGNTEwIC8qIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAgKi87IH07CiAJCTBG
NUJGMTc2MUYyM0Q0OUEwMDI5RDkxRCAvKiBHaWdhY2FnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE3NDFGMjNENDlBMDAyOUQ5MUQgLyog
R2lnYWNhZ2UuY3BwICovOyB9OwogCQkwRjYwRjMyRjFERkNCRDFCMDA0MTZENkMgLyogTG9ja2Vk
UHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2MEYzMkQxREZDQkQxQjAwNDE2RDZDIC8qIExvY2tlZFByaW50U3RyZWFtLmNwcCAq
LzsgfTsKIAkJMEY2NkIyOEExREM5N0JBQjAwNEExRDNGIC8qIENsb2NrVHlwZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2QjI4MDFEQzk3QkFC
MDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCAqLzsgfTsKQEAgLTM4LDYgKzM5LDcgQEAKIAkJMEY4
RjJCOTIxNzJFMDEwMzAwN0RCREE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEYyQjhGMTcyRTAwRjAwMDdE
QkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgKi87IH07CiAJCTBGOUQzMzYwMTY1REJBNzMw
MDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmlu
dFN0cmVhbS5jcHAgKi87IH07CiAJCTBGOUQzMzYyMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0
cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwICovOyB9OworCQkwRkQ3
M0NCQjIwRDQ3NTg0MDBGQzdBMjkgLyogVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDczQ0JBMjBENDc1ODMwMEZDN0EyOSAvKiBWZWN0
b3IuY3BwICovOyB9OwogCQkwRkREQkZBNzE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRT
dHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZEREJGQTUxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCAqLzsgfTsK
IAkJMEZFMTY0NkExQjZGRkM5NjAwNDAwRTdDIC8qIExvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMTY0NjgxQjZGRkM5NjAwNDAwRTdDIC8q
IExvY2suY3BwICovOyB9OwogCQkwRkU0NDc5QzFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNDQ3
OUExQjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmNwcCAqLzsgfTsKQEAgLTIwMCw2ICsyMDIs
OCBAQAogCQkwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb21pbmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNDU3MDQ0MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1YmJsZVNvcnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY0RDhDNzExRkMxRTdDRTAwMUQzMkFDIC8qIFNpbmdseUxpbmtl
ZExpc3RXaXRoVGFpbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW5nbHlM
aW5rZWRMaXN0V2l0aFRhaWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1QjRE
RjgyMEQwREUxNzAwRDZGNTEwIC8qIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1QjRERjkyMEQwREUxNzAwRDZGNTEwIC8qIENv
bnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjVCRjE2NTFGMjMxNzgzMDAyOUQ5MUQgLyogTmF0dXJhbExvb3BzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5hdHVyYWxMb29wcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjVCRjE3NDFGMjNENDlBMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR2lnYWNhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVCRjE3
NTFGMjNENDlBMDAyOUQ5MUQgLyogR2lnYWNhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2lnYWNhZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0Niw2ICsyNTAsNyBAQAogCQkwRkI0
Njc4MzFGREUyODJDMDAzRkNCMDkgLyogQ29uY3VycmVudFZlY3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb25jdXJyZW50VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQzQ0ODgyMTZGRTlGRTEwMDg0NEJFOSAvKiBQcm9jZXNzSUQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc0lELmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGQzRFREU1MTY5NjE0OTYwMEY2NTA0MSAvKiBDb21tYVByaW50ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFQcmludGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRDczQ0JBMjBENDc1ODMwMEZDN0EyOSAvKiBWZWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmVjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8q
IEZhc3RCaXRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmFzdEJp
dFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkRCNjk4RDFCN0M2NDNB
MDAwQzEwNzggLyogQ29uZGl0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbmRpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkREQkZBNTE2NjZE
RkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nUHJpbnRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODQ0LDYgKzg0OSw4IEBACiAJCQkJMEYzMENCNTkxRkNERjEzMzAwNEI1
MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmggKi8sCiAJCQkJMEZCNDY3ODMxRkRFMjgyQzAw
M0ZDQjA5IC8qIENvbmN1cnJlbnRWZWN0b3IuaCAqLywKIAkJCQkwRkRCNjk4RDFCN0M2NDNBMDAw
QzEwNzggLyogQ29uZGl0aW9uLmggKi8sCisJCQkJMEY1QjRERjkyMEQwREUxNzAwRDZGNTEwIC8q
IENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAgKi8sCisJCQkJMEY1QjRERjgyMEQwREUxNzAw
RDZGNTEwIC8qIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oICovLAogCQkJCTBGOEU4NURBMUZE
NDg1QjAwMDY5MTg4OSAvKiBDb3VudGluZ0xvY2suY3BwICovLAogCQkJCTBGRkJDQkZBMUZEMzdF
MEYwMDcyQUFGMCAvKiBDb3VudGluZ0xvY2suaCAqLywKIAkJCQlFMzhDNDEyNjFFQjRFMDY4MDA0
Mjk1N0QgLyogQ1BVVGltZS5jcHAgKi8sCkBAIC0xMTE4LDYgKzExMjUsNyBAQAogCQkJCTdBRkVD
NkFFMUVCMjJBQzYwMERBREUzNiAvKiBVVUlELmggKi8sCiAJCQkJQThBNDczNkYxNTFBODI1QjAw
NDEyM0ZGIC8qIFZhbHVlQ2hlY2suaCAqLywKIAkJCQk3Q0QwRDVBNzFENTUzMjJBMDAwQ0M5RTEg
LyogVmFyaWFudC5oICovLAorCQkJCTBGRDczQ0JBMjBENDc1ODMwMEZDN0EyOSAvKiBWZWN0b3Iu
Y3BwICovLAogCQkJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3IuaCAqLywKIAkJ
CQlBOEE0NzM3MTE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yVHJhaXRzLmggKi8sCiAJCQkJQThB
NDczNzIxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oICovLApAQCAtMTQ2MSw2ICsxNDY5LDcg
QEAKIAkJCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJQ1UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY4RjJCOTIxNzJFMDEwMzAwN0RCREE1IC8qIENvbXBpbGF0aW9uVGhy
ZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzBDQjVBMUZDREYxMzQwMDRCNTMyMyAvKiBD
b25jdXJyZW50UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjVCNERGQTIwRDBE
RTE4MDBENkY1MTAgLyogQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGOEU4NURCMUZENDg1QjAwMDY5MTg4OSAvKiBDb3VudGluZ0xvY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTM4QzQxMjgxRUI0RTA2ODAwNDI5NTdEIC8qIENQVVRpbWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTM4QzQxMjUxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2Nv
YS5tbSBpbiBTb3VyY2VzICovLApAQCAtMTU2NCw2ICsxNTczLDcgQEAKIAkJCQkxQzE4MUM5MzFE
MzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3NDY5MTUxQTgyNUIwMDQxMjNGRiAvKiBVVEY4LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdBRkVDNkIxMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGRDczQ0JCMjBENDc1ODQwMEZDN0EyOSAvKiBWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY2NkIyOTIxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1lLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFGQTQ3QzhBMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggMGY5ZjRlMWYyZGExNmMz
MTJjMGRkNTJkOGRiZTk1M2I1NTRkMzQ0ZC4uM2RjN2FmZmQ2MTA2YjFjODg5NjFkMmZkMzEwNDVm
ZjZkYzZmYTI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTM1LDYgKzM1LDcgQEAgc2V0KFdU
Rl9QVUJMSUNfSEVBREVSUwogICAgIENvbmN1cnJlbnRQdHJIYXNoU2V0LmgKICAgICBDb25jdXJy
ZW50VmVjdG9yLmgKICAgICBDb25kaXRpb24uaAorICAgIENvbnRhaW5lckNhcGFjaXR5VHJhY2tl
ci5oCiAgICAgQ291bnRpbmdMb2NrLmgKICAgICBDcm9zc1RocmVhZENvcGllci5oCiAgICAgQ3Jv
c3NUaHJlYWRRdWV1ZS5oCkBAIC0zMzEsNiArMzMyLDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAg
Q2xvY2tUeXBlLmNwcAogICAgIENvbXBpbGF0aW9uVGhyZWFkLmNwcAogICAgIENvbmN1cnJlbnRQ
dHJIYXNoU2V0LmNwcAorICAgIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAKICAgICBDb3Vu
dGluZ0xvY2suY3BwCiAgICAgQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiAgICAgQ3Jvc3NUaHJlYWRU
YXNrSGFuZGxlci5jcHAKQEAgLTM4Nyw2ICszODksNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBU
aW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3BwCiAgICAgVGltaW5nU2NvcGUuY3BwCiAgICAgVVVJ
RC5jcHAKKyAgICBWZWN0b3IuY3BwCiAgICAgV1RGQXNzZXJ0aW9ucy5jcHAKICAgICBXYWxsVGlt
ZS5jcHAKICAgICBXb3JkTG9jay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbnRh
aW5lckNhcGFjaXR5VHJhY2tlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0
eVRyYWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyNDEzMDEyODJkNGE0YzU0YjUyMjYzZjBiM2UxYmQ0
ODgxOTc5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBh
Y2l0eVRyYWNrZXIuY3BwCkBAIC0wLDAgKzEsMjAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNv
bnRhaW5lckNhcGFjaXR5VHJhY2tlci5oIgorCisjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyNp
bmNsdWRlIDx3dGYvU3RhY2tTaG90Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitBbGxvY2F0aW9u
Q2FsbFNpdGVEYXRhOjpBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKHNpemVfdCBzdGFja0RlcHRoLCBz
aXplX3QgaW5Vc2VkU2l6ZSwgc2l6ZV90IGluQ2FwYWNpdHkpCisgICAgOiB1c2VkU2l6ZShpblVz
ZWRTaXplKQorICAgICwgY2FwYWNpdHkoaW5DYXBhY2l0eSkKKyAgICAsIG1fc3RhY2soc3RkOjpt
YWtlX3VuaXF1ZTxTdGFja1Nob3Q+KHN0YWNrRGVwdGgpKQoreworfQorCitBbGxvY2F0aW9uQ2Fs
bFNpdGVEYXRhOjpBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKGNvbnN0IFN0YWNrU2hvdCYgc3RhY2sp
CisgICAgOiBtX3N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8U3RhY2tTaG90PihzdGFjaykpCit7Cit9
CisKK0FsbG9jYXRpb25DYWxsU2l0ZURhdGE6OkFsbG9jYXRpb25DYWxsU2l0ZURhdGEoY29uc3Qg
QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYgb3RoZXIpCisgICAgOiBjb3VudChvdGhlci5jb3VudCkK
KyAgICAsIHVzZWRTaXplKG90aGVyLnVzZWRTaXplKQorICAgICwgY2FwYWNpdHkob3RoZXIuY2Fw
YWNpdHkpCisgICAgLCBtX3N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8U3RhY2tTaG90PihvdGhlci5z
dGFjaygpKSkKK3sKK30KKworQWxsb2NhdGlvbkNhbGxTaXRlRGF0YTo6fkFsbG9jYXRpb25DYWxs
U2l0ZURhdGEoKSA9IGRlZmF1bHQ7CisKK2NvbnN0IFN0YWNrU2hvdCYgQWxsb2NhdGlvbkNhbGxT
aXRlRGF0YTo6c3RhY2soKSBjb25zdAoreworICAgIHJldHVybiAqbV9zdGFjazsKK30KKworc3Ry
dWN0IENvbnRhaW5lckFsbG9jYXRpb25EYXRhIHsKKyAgICBDb250YWluZXJBbGxvY2F0aW9uRGF0
YShzaXplX3Qgc3RhY2tTaG90U2l6ZSwgc2l6ZV90IGluU2l6ZSwgc2l6ZV90IGluQ2FwYWNpdHkp
CisgICAgICAgIDogYWxsb2NhdGlvblN0YWNrKHN0YWNrU2hvdFNpemUpCisgICAgICAgICwgc2l6
ZShpblNpemUpCisgICAgICAgICwgY2FwYWNpdHkoaW5DYXBhY2l0eSkKKyAgICB7CisgICAgCisg
ICAgfQorICAgIFN0YWNrU2hvdCBhbGxvY2F0aW9uU3RhY2s7CisgICAgc2l6ZV90IHNpemU7Cisg
ICAgc2l6ZV90IGNhcGFjaXR5OworfTsKKworc3RydWN0IENvbnRhaW5lckNhcGFjaXR5VHJhY2tl
cjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VySW1wbCB7CisgICAgc3RkOjp1bm9yZGVyZWRfbWFw
PFRyYWNrZWRJRCwgc3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lckFsbG9jYXRpb25EYXRhPj4gbV90
cmFja2VkSURUb0NvbnRhaW5lckRhdGE7Cit9OworCisvLyBUbyBwcmV2ZW50IHBlci10aHJlYWQg
cmUtZW50cmFuY3kgd2UgdGFrZSBhIHBvaW50ZXIgdG8gYW4gb2JqZWN0IG9uIHRoZSBzdGFjaywg
aW5zaWRlIG1fbXV0ZXggbG9jayBzY29wZS4KK2NsYXNzIEF2b2lkUmVjb3JkaW5nU2NvcGUgewor
cHVibGljOgorICAgIEF2b2lkUmVjb3JkaW5nU2NvcGUoQ29udGFpbmVyQ2FwYWNpdHlUcmFja2Vy
JiB0cmFja2VyLCBib29sKiBzdGFja09iamVjdCkKKyAgICAgICAgOiBtX3RyYWNrZXIodHJhY2tl
cikKKyAgICB7CisgICAgICAgIG1fdHJhY2tlci5tX2F2b2lkUmVlbnRyYW5jeSA9IHN0YWNrT2Jq
ZWN0OworICAgIH0KKworICAgIH5Bdm9pZFJlY29yZGluZ1Njb3BlKCkKKyAgICB7CisgICAgICAg
IG1fdHJhY2tlci5tX2F2b2lkUmVlbnRyYW5jeSA9IG51bGxwdHI7CisgICAgfQorcHJpdmF0ZToK
KyAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIG1fdHJhY2tlcjsKK307CisKK0NvbnRhaW5l
ckNhcGFjaXR5VHJhY2tlcjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyKHNpemVfdCBhZ2dyZWdh
dGlvblN0YWNrRGVwdGgpCisgICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXJD
YXBhY2l0eVRyYWNrZXJJbXBsPigpKQorICAgICwgbV9hZ2dyZWdhdGlvblN0YWNrRGVwdGgoYWdn
cmVnYXRpb25TdGFja0RlcHRoKQoreworfQorCitUcmFja2VkSUQgQ29udGFpbmVyQ2FwYWNpdHlU
cmFja2VyOjpyZWNvcmRBbGxvY2F0aW9uKHNpemVfdCBzaXplLCBzaXplX3QgY2FwYWNpdHkpCit7
CisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1f
bXV0ZXgpOworCisgICAgaWYgKG1fYXZvaWRSZWVudHJhbmN5KQorICAgICAgICByZXR1cm4gMDsK
KworICAgIGJvb2wgYXZvaWRSZWVudHJhbmN5ID0gdHJ1ZTsKKyAgICBBdm9pZFJlY29yZGluZ1Nj
b3BlIHNjb3BlKCp0aGlzLCAmYXZvaWRSZWVudHJhbmN5KTsKKworICAgIFRyYWNrZWRJRCBvYmpl
Y3RJRCA9ICsrbV9uZXh0SUQ7CisKKyAgICBhdXRvIGFsbG9jYXRpb25EYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxDb250YWluZXJBbGxvY2F0aW9uRGF0YT4obV9hZ2dyZWdhdGlvblN0YWNrRGVwdGgs
IHNpemUsIGNhcGFjaXR5KTsKKyAgICBhdXRvIGluc2VydFJlc3VsdCA9IG1faW1wbC0+bV90cmFj
a2VkSURUb0NvbnRhaW5lckRhdGEuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKG9iamVjdElELCBzdGQ6
Om1vdmUoYWxsb2NhdGlvbkRhdGEpKSk7CisgICAgaWYgKCFpbnNlcnRSZXN1bHQuc2Vjb25kKSB7
CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpyZWNvcmRB
bGxvY2F0aW9uIHNhdyBvYmplY3QgJXUgZm9yIHRoZSBzZWNvbmQgdGltZSIsIG9iamVjdElEKTsK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJXYXMgcHJldmlvdXNseSBhbGxvY2F0ZWQgYXQ6Iik7Cisg
ICAgICAgIGF1dG8mIGNhbGxTaXRlRGF0YSA9ICppbnNlcnRSZXN1bHQuZmlyc3QtPnNlY29uZDsK
KyAgICAgICAgY29uc3Qgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IDA7CisgICAgICAgIFdURlByaW50
QmFja3RyYWNlKGNhbGxTaXRlRGF0YS5hbGxvY2F0aW9uU3RhY2suYXJyYXkoKSArIGZyYW1lc1Rv
U2tpcCwgY2FsbFNpdGVEYXRhLmFsbG9jYXRpb25TdGFjay5zaXplKCkgLSBmcmFtZXNUb1NraXAp
OworICAgIH0KKworICAgIHJldHVybiBvYmplY3RJRDsKK30KKwordm9pZCBDb250YWluZXJDYXBh
Y2l0eVRyYWNrZXI6OnJlY29yZFNpemVBbmRDYXBhY2l0eShUcmFja2VkSUQgb2JqZWN0SUQsIHNp
emVfdCBzaXplLCBzaXplX3QgY2FwYWNpdHkpCit7CisgICAgQVNTRVJUKHNpemUgPD0gY2FwYWNp
dHkpOworCisgICAgaWYgKCFvYmplY3RJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RkOjps
b2NrX2d1YXJkPHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1fbXV0ZXgpOworCisg
ICAgaWYgKG1fYXZvaWRSZWVudHJhbmN5KQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGF2
b2lkUmVlbnRyYW5jeSA9IHRydWU7CisgICAgQXZvaWRSZWNvcmRpbmdTY29wZSBzY29wZSgqdGhp
cywgJmF2b2lkUmVlbnRyYW5jeSk7CisKKyAgICBhdXRvIGl0ID0gbV9pbXBsLT5tX3RyYWNrZWRJ
RFRvQ29udGFpbmVyRGF0YS5maW5kKG9iamVjdElEKTsKKyAgICBpZiAoaXQgIT0gbV9pbXBsLT5t
X3RyYWNrZWRJRFRvQ29udGFpbmVyRGF0YS5lbmQoKSkgeworICAgICAgICBpdC0+c2Vjb25kLT5z
aXplID0gc2l6ZTsKKyAgICAgICAgaXQtPnNlY29uZC0+Y2FwYWNpdHkgPSBjYXBhY2l0eTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250YWluZXJDYXBhY2l0eVRyYWNrZXIg
JXAgcmVjb3JkU2l6ZUFuZENhcGFjaXR5IGZhaWxlZCB0byBmaW5kIG9iamVjdCAldSIsIHRoaXMs
IG9iamVjdElEKTsKK30KKwordm9pZCBDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29yZEZy
ZWUoVHJhY2tlZElEIG9iamVjdElEKQoreworICAgIGlmICghb2JqZWN0SUQpCisgICAgICAgIHJl
dHVybjsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6OnJlY3Vyc2l2ZV9tdXRleD4gbG9ja0hv
bGRlcihtX211dGV4KTsKKworICAgIGlmIChtX2F2b2lkUmVlbnRyYW5jeSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYm9vbCBhdm9pZFJlZW50cmFuY3kgPSB0cnVlOworICAgIEF2b2lkUmVjb3Jk
aW5nU2NvcGUgc2NvcGUoKnRoaXMsICZhdm9pZFJlZW50cmFuY3kpOworCisgICAgYXV0byByZW1v
dmVkQ291bnQgPSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJEYXRhLmVyYXNlKG9iamVj
dElEKTsKKyAgICBpZiAoIXJlbW92ZWRDb3VudCkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250
YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29yZEZyZWUgZ290IGlkICV1IGZvciB3aGljaCB0aGVy
ZSBpcyBubyBlbnRyeSIsIG9iamVjdElEKTsKK30KKworc3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNh
bGxTaXRlRGF0YT4gQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjphZ2dyZWdhdGVCeUNhbGxTaXRl
KGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChUcmFja2VkSUQsIEFsbG9jYXRpb25DYWxsU2l0ZURh
dGEmKT4mIHBlck9iamVjdENhbGxiYWNrKQoreworICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6OnJl
Y3Vyc2l2ZV9tdXRleD4gbG9ja0hvbGRlcihtX211dGV4KTsKKworICAgIGJvb2wgYXZvaWRSZWVu
dHJhbmN5ID0gdHJ1ZTsKKyAgICBBdm9pZFJlY29yZGluZ1Njb3BlIHNjb3BlKCp0aGlzLCAmYXZv
aWRSZWVudHJhbmN5KTsKKworICAgIHR5cGVkZWYgdW5zaWduZWQgU3RhY2tTaG90SGFzaDsKKyAg
ICBzdGQ6OnVub3JkZXJlZF9tYXA8U3RhY2tTaG90SGFzaCwgc3RkOjp1bmlxdWVfcHRyPEFsbG9j
YXRpb25DYWxsU2l0ZURhdGE+PiBjYWxsU2l0ZVRvQWxsb2NhdGlvbkFnZ3JlZ2F0ZTsKKworICAg
IGZvciAoY29uc3QgYXV0byYgaXQgOiBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJEYXRh
KSB7CisgICAgICAgIGNvbnN0IENvbnRhaW5lckFsbG9jYXRpb25EYXRhJiBhbGxvY2F0aW9uRGF0
YSA9ICppdC5zZWNvbmQ7CisKKyAgICAgICAgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogY2FsbFNp
dGVEYXRhOworCisgICAgICAgIGF1dG8gZmluZEl0ID0gY2FsbFNpdGVUb0FsbG9jYXRpb25BZ2dy
ZWdhdGUuZmluZChhbGxvY2F0aW9uRGF0YS5hbGxvY2F0aW9uU3RhY2suaGFzaCgpKTsKKyAgICAg
ICAgaWYgKGZpbmRJdCA9PSBjYWxsU2l0ZVRvQWxsb2NhdGlvbkFnZ3JlZ2F0ZS5lbmQoKSkgewor
ICAgICAgICAgICAgYXV0byBpbnNlcnRJdCA9IGNhbGxTaXRlVG9BbGxvY2F0aW9uQWdncmVnYXRl
Lmluc2VydCh7IGFsbG9jYXRpb25EYXRhLmFsbG9jYXRpb25TdGFjay5oYXNoKCksIHN0ZDo6bWFr
ZV91bmlxdWU8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4oYWxsb2NhdGlvbkRhdGEuYWxsb2NhdGlv
blN0YWNrKSB9KTsKKyAgICAgICAgICAgIGNhbGxTaXRlRGF0YSA9IGluc2VydEl0LmZpcnN0LT5z
ZWNvbmQuZ2V0KCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2FsbFNpdGVEYXRhID0g
ZmluZEl0LT5zZWNvbmQuZ2V0KCk7CisKKyAgICAgICAgY2FsbFNpdGVEYXRhLT5jb3VudCArPSAx
OworICAgICAgICBjYWxsU2l0ZURhdGEtPnVzZWRTaXplICs9IGFsbG9jYXRpb25EYXRhLnNpemU7
CisgICAgICAgIGNhbGxTaXRlRGF0YS0+Y2FwYWNpdHkgKz0gYWxsb2NhdGlvbkRhdGEuY2FwYWNp
dHk7CisKKyAgICAgICAgcGVyT2JqZWN0Q2FsbGJhY2soaXQuZmlyc3QsICpjYWxsU2l0ZURhdGEp
OworICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPEFsbG9jYXRpb25DYWxsU2l0ZURhdGE+IHJlc3Vs
dDsKKyAgICBmb3IgKGF1dG8mIGl0IDogY2FsbFNpdGVUb0FsbG9jYXRpb25BZ2dyZWdhdGUpCisg
ICAgICAgIHJlc3VsdC5wdXNoX2JhY2soQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSgqaXQuc2Vjb25k
KSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oIGIvU291cmNl
L1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNmMWYyOTcw
M2ZlYTRjMjgxMDBjNjUzMGZhYTgyOGRmMGE5MzBkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdURl9D
b250YWluZXJDYXBhY2l0eVRyYWNrZXJfaAorI2RlZmluZSBXVEZfQ29udGFpbmVyQ2FwYWNpdHlU
cmFja2VyX2gKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRl
IDx2ZWN0b3I+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0xvY2su
aD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFN0YWNrU2hvdDsKKworc3RydWN0IEFsbG9j
YXRpb25DYWxsU2l0ZURhdGEgeworICAgIEFsbG9jYXRpb25DYWxsU2l0ZURhdGEoc2l6ZV90IHN0
YWNrRGVwdGggPSAwLCBzaXplX3Qgc2l6ZSA9IDAsIHNpemVfdCBjYXBhY2l0eSA9IDApOworICAg
IEFsbG9jYXRpb25DYWxsU2l0ZURhdGEoY29uc3QgU3RhY2tTaG90Jik7CisgICAgQWxsb2NhdGlv
bkNhbGxTaXRlRGF0YShjb25zdCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJik7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIH5BbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKCk7CisKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgY29uc3QgU3RhY2tTaG90JiBzdGFjaygpIGNvbnN0OworCisgICAgc2l6ZV90IGNv
dW50IHsgMCB9OworICAgIHNpemVfdCB1c2VkU2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgY2FwYWNp
dHkgeyAwIH07CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrU2hvdD4gbV9z
dGFjazsgLy8gTmVlZGVkIHRvIGhpZGUgU3RhY2tTaG90IHRvIGF2b2lkIGNpcmN1bGFyIGluY2x1
ZGVzLgorfTsKKwordHlwZWRlZiB1bnNpZ25lZCBUcmFja2VkSUQ7CisKK2NsYXNzIENvbnRhaW5l
ckNhcGFjaXR5VHJhY2tlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGFpbmVyQ2Fw
YWNpdHlUcmFja2VyKTsKKyAgICBmcmllbmQgY2xhc3MgQXZvaWRSZWNvcmRpbmdTY29wZTsKK3B1
YmxpYzoKKyAgICAvLyBDYWxsIHNpdGVzIGFyZSBhZ2dyZWdhdGVkIGJ5IGNhbGwgc3RhY2ssIHVz
aW5nIGFnZ3JlZ2F0aW9uU3RhY2tEZXB0aCBmcmFtZXMuCisgICAgQ29udGFpbmVyQ2FwYWNpdHlU
cmFja2VyKHNpemVfdCBhZ2dyZWdhdGlvblN0YWNrRGVwdGggPSAxNSk7CisgICAgCisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFRyYWNrZWRJRCByZWNvcmRBbGxvY2F0aW9uKHNpemVfdCBzaXplLCBz
aXplX3QgY2FwYWNpdHkpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlY29yZFNpemVB
bmRDYXBhY2l0eShUcmFja2VkSUQsIHNpemVfdCBzaXplLCBzaXplX3QgY2FwYWNpdHkpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlY29yZEZyZWUoVHJhY2tlZElEKTsKKyAgICAKKyAg
ICAvLyBSZXR1cm4gYSB2ZWN0b3Igb2YgcGVyIGNhbGxzaXRlIGRhdGE7IHNpemUgYW5kIGNhcGFj
aXR5IGFyZSBzdW1tZWQgZm9yIGFsbCBhbGxvY2F0aW9ucyB3aXRoIGEgZ2l2ZW4gY2FsbCBzaXRl
LgorICAgIC8vIFRoZSBwYXNzZWQgZnVuY3Rpb24gYWxsb3dzIHRoZSBjYWxsZXIgdG8gZG8gYWRk
aXRpb25hbCBwcm9jZXNzaW5nIHBlciBhbGxvY2F0aW9uLgorICAgIHN0ZDo6dmVjdG9yPEFsbG9j
YXRpb25DYWxsU2l0ZURhdGE+IGFnZ3JlZ2F0ZUJ5Q2FsbFNpdGUoY29uc3QgV1RGOjpGdW5jdGlv
bjx2b2lkKFRyYWNrZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYpPiYpOworCitwcml2YXRl
OgorICAgIC8vIFVzZSBhIHBpbXBsIHRvIGF2b2lkIGNpcmN1bGFyIGluY2x1ZGVzIGJldHdlZW4g
b3VyIGhlYWRlciBhbmQgdGhlIGNvbnRhaW5lciBjbGFzcyBoZWFkZXJzLgorICAgIHN0cnVjdCBD
b250YWluZXJDYXBhY2l0eVRyYWNrZXJJbXBsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250YWlu
ZXJDYXBhY2l0eVRyYWNrZXJJbXBsPiBtX2ltcGw7CisgICAgc3RkOjpyZWN1cnNpdmVfbXV0ZXgg
bV9tdXRleDsKKyAgICBUcmFja2VkSUQgbV9uZXh0SUQgeyAwIH07CisgICAgY29uc3Qgc2l6ZV90
IG1fYWdncmVnYXRpb25TdGFja0RlcHRoOworICAgIGJvb2wqIG1fYXZvaWRSZWVudHJhbmN5IHsg
bnVsbHB0ciB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Q29udGFp
bmVyQ2FwYWNpdHlUcmFja2VyOworCisjZW5kaWYgLy8gV1RGX0NvbnRhaW5lckNhcGFjaXR5VHJh
Y2tlcl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoVGFibGUuY3BwCmluZGV4IDBlYjYwMzZjODYzZmIxMTNmZWM4OTEyNTZl
NTA3NTk0NDExNGFiZTEuLmU1MjQxZWJhOWM0ZTM2ZjkyNzQ3YzlmNTMwMDE1NDU5MTk2MjYzYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvSGFzaFRhYmxlLmNwcApAQCAtMjMsNiArMjMsMTcgQEAKICNpbmNsdWRlICJEYXRhTG9n
LmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyNp
bmNsdWRlIDx3dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg+CisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxub3RpZnku
aD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tTaG90Lmg+CisjZW5kaWYKKworI2VuZGlmCisKIG5hbWVz
cGFjZSBXVEYgewogCiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFMKQEAgLTYzLDYgKzc0LDY4IEBA
IHZvaWQgSGFzaFRhYmxlU3RhdHM6OmR1bXBTdGF0cygpCiAgICAgZGF0YUxvZ0YoIiVkIHJlaW5z
ZXJ0c1xuIiwgbnVtUmVpbnNlcnRzLmxvYWQoKSk7CiB9CiAKKyNlbmRpZiAvLyBEVU1QX0hBU0hU
QUJMRV9TVEFUUworCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisKKyNpZiBQTEFURk9S
TShDT0NPQSkKK3N0YXRpYyB2b2lkIGR1bXBXYXN0ZWRIYXNoVGFibGVDYXBhY2l0eSgpCit7Cisg
ICAgYXV0byBjYWxsU2l0ZURhdGEgPSBoYXNoVGFibGVUcmFja2VyKCkuYWdncmVnYXRlQnlDYWxs
U2l0ZShbXSAoVHJhY2tlZElELCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJikgeworICAgIH0pOwor
CisgICAgLy8gTWFrZSBhIHZlY3RvciBvZiByYXcgcG9pbnRlcnMgc28gd2UgY2FuIHNvcnQgdGhl
bS4KKyAgICBzdGQ6OnZlY3RvcjxBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKj4gY2FsbFNpdGVQdHJz
OworICAgIGZvciAoY29uc3QgYXV0byYgc2l0ZURhdGEgOiBjYWxsU2l0ZURhdGEpIHsKKyAgICAg
ICAgaWYgKCFzaXRlRGF0YS5jYXBhY2l0eSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBjYWxsU2l0ZVB0cnMucHVzaF9iYWNrKGNvbnN0X2Nhc3Q8QWxsb2NhdGlvbkNhbGxTaXRlRGF0
YSo+KCZzaXRlRGF0YSkpOworICAgIH0KKworICAgIC8vIFNvcnQgYnkgcmV2ZXJzZSB3YXN0YWdl
LgorICAgIHN0ZDo6c29ydChjYWxsU2l0ZVB0cnMuYmVnaW4oKSwgY2FsbFNpdGVQdHJzLmVuZCgp
LCBbXSAoY29uc3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogYSwgY29uc3QgQWxsb2NhdGlvbkNh
bGxTaXRlRGF0YSogYikgeworICAgICAgICBzaXplX3QgYVdhc3RhZ2UgPSBhLT5jYXBhY2l0eSAt
IGEtPnVzZWRTaXplOworICAgICAgICBzaXplX3QgYldhc3RhZ2UgPSBiLT5jYXBhY2l0eSAtIGIt
PnVzZWRTaXplOworICAgICAgICByZXR1cm4gYVdhc3RhZ2UgPiBiV2FzdGFnZTsKKyAgICB9KTsK
KworICAgIGNvbnN0IHNpemVfdCBtYXhDb3VudCA9IDEwMDsKKworICAgIFdURkxvZ0Fsd2F5cygi
JWx1IGNhbGwgc2l0ZXMgY3JlYXRlZCBIYXNoVGFibGVzICh2aWEgSGFzaE1hcCBvciBIYXNoU2V0
KS4gU2hvd2luZyAlbHUgc2l0ZXMgd2l0aCBtb3N0IHdhc3RhZ2U6XG4iLCBjYWxsU2l0ZURhdGEu
c2l6ZSgpLCBtYXhDb3VudCk7CisKKyAgICBzaXplX3QgY291bnQgPSAwOworICAgIGZvciAoYXV0
byBzaXRlRGF0YSA6IGNhbGxTaXRlUHRycykgeworICAgICAgICBpZiAoY291bnQrKyA9PSBtYXhD
b3VudCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIFdURkxvZ0Fsd2F5cygiV2FzdGVk
IGNhcGFjaXR5OiAlbHUgYnl0ZXMgKHVzZWQgJWx1IG9mICVsdSBieXRlcywgdXRpbGl6YXRpb246
ICUuMmYlJSkgLSAlbHUgYWxsb2NhdGlvbnNcbiIsCisgICAgICAgICAgICBzaXRlRGF0YS0+Y2Fw
YWNpdHkgLSBzaXRlRGF0YS0+dXNlZFNpemUsCisgICAgICAgICAgICBzaXRlRGF0YS0+dXNlZFNp
emUsIHNpdGVEYXRhLT5jYXBhY2l0eSwgMTAwLjAgKiBzaXRlRGF0YS0+dXNlZFNpemUgLyBzaXRl
RGF0YS0+Y2FwYWNpdHksCisgICAgICAgICAgICBzaXRlRGF0YS0+Y291bnQpOworICAgICAgICBj
b25zdCBzaXplX3QgZnJhbWVzVG9Ta2lwID0gNzsKKyAgICAgICAgV1RGUHJpbnRCYWNrdHJhY2Uo
c2l0ZURhdGEtPnN0YWNrKCkuYXJyYXkoKSArIGZyYW1lc1RvU2tpcCwgc2l0ZURhdGEtPnN0YWNr
KCkuc2l6ZSgpIC0gZnJhbWVzVG9Ta2lwKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJcbiIpOwor
ICAgIH0KK30KKyNlbmRpZgorCitDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIGhhc2hUYWJsZVRy
YWNrZXIoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBpbml0aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgW10g
eworICAgICAgICBpbnQgdG9rZW47CisgICAgICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaCgi
Y29tLmFwcGxlLldlYktpdC5kdW1wSGFzaFRhYmxlQ2FwYWNpdHkiLCAmdG9rZW4sIGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIF4oaW50KSB7CisgICAgICAgICAgICBkdW1wV2FzdGVkSGFzaFRh
YmxlQ2FwYWNpdHkoKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiAjZW5kaWYKIAorICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxXVEY6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlcj4gdHJhY2tlcjsK
KyAgICByZXR1cm4gdHJhY2tlcjsKK30KKworI2VuZGlmIC8vIFRSQUNLX0hBU0hUQUJMRV9DQVBB
Q0lUWQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
SGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCBlNmE5NTBmZDQw
MDkzNmNjNGJmZjNkODY0YTI0Nzg1MmVhZGIzNWRlLi43MDM1MzBjYjI3MTYyMjJlNGMyYzU2MTQ0
YjBlMjgyMjhhNGQ1Y2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtNDIsOCArNDIsMjAgQEAKICNpbmNs
dWRlIDx3dGYvRGF0YUxvZy5oPgogI2VuZGlmCiAKKy8vIEVuYWJsZSBUUkFDS19IQVNIVEFCTEVf
Q0FQQUNJVFkgdG8gdHJhY2sgY2FsbCBzaXRlcyB0aGF0IHdhc3RlIEhhc2hUYWJsZSBjYXBhY2l0
eS4gT24gQ29jb2EgcGxhdGZvcm1zLCB0aGUgZGF0YSBjYW4gYmUgZHVtcGVkCisvLyBieSBydW5u
aW5nICJub3RpZnl1dGlsIC1wIGNvbS5hcHBsZS5XZWJLaXQuZHVtcEhhc2hUYWJsZUNhcGFjaXR5
Ii4KKyNkZWZpbmUgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZIDAKKworI2lmIFRSQUNLX0hBU0hU
QUJMRV9DQVBBQ0lUWQorI2luY2x1ZGUgPHd0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaD4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lU
WQorV1RGX0VYUE9SVF9QUklWQVRFIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlciYgaGFzaFRhYmxl
VHJhY2tlcigpOworI2VuZGlmCisKIC8vIEVuYWJsZXMgaW50ZXJuYWwgV1RGIGNvbnNpc3RlbmN5
IGNoZWNrcyB0aGF0IGFyZSBpbnZva2VkIGF1dG9tYXRpY2FsbHkuIE5vbi1XVEYgY2FsbGVycyBj
YW4gY2FsbCBjaGVja1RhYmxlQ29uc2lzdGVuY3koKSBldmVuIGlmIGludGVybmFsIGNoZWNrcyBh
cmUgZGlzYWJsZWQuCiAjZGVmaW5lIENIRUNLX0hBU0hUQUJMRV9DT05TSVNURU5DWSAwCiAKQEAg
LTM2Miw2ICszNzQsMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX1VT
RV9BRlRFUl9ERVNUUlVDVElPTgogICAgICAgICAgICAgbV90YWJsZSA9IChWYWx1ZVR5cGUqKSh1
aW50cHRyX3QpMHhiYmFkYmVlZjsKICNlbmRpZgorCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFD
SVRZCisgICAgICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkRnJlZShtX3RyYWNrZWRJ
RCk7CisgICAgICAgICAgICBtX3RyYWNrZWRJRCA9IDA7CisjZW5kaWYKICAgICAgICAgfQogCiAg
ICAgICAgIEhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmKTsKQEAgLTM4Myw2ICs0MDAsOSBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAgICAgdW5zaWduZWQgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVy
biBtX3RhYmxlU2l6ZTsgfQogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAh
bV9rZXlDb3VudDsgfQogCisgICAgICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0OworICAg
ICAgICBzaXplX3QgY2FwYWNpdHlJbkJ5dGVzKCkgY29uc3Q7CisKICAgICAgICAgQWRkUmVzdWx0
IGFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBhZGQ8SWRlbnRpdHlUcmFuc2xh
dG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0KHZhbHVlKSwgdmFsdWUpOyB9CiAgICAgICAgIEFk
ZFJlc3VsdCBhZGQoVmFsdWVUeXBlJiYgdmFsdWUpIHsgcmV0dXJuIGFkZDxJZGVudGl0eVRyYW5z
bGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpLCBXVEZNb3ZlKHZhbHVlKSk7IH0K
IApAQCAtNDg5LDYgKzUwOSwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgdW5zaWduZWQg
bV9rZXlDb3VudDsKICAgICAgICAgdW5zaWduZWQgbV9kZWxldGVkQ291bnQ7CiAKKyNpZiBUUkFD
S19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgVHJhY2tlZElEIG1fdHJhY2tlZElEIHsgMCB9
OworI2VuZGlmCisKICNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgcHVibGljOgog
ICAgICAgICAvLyBBbGwgYWNjZXNzIHRvIG1faXRlcmF0b3JzIHNob3VsZCBiZSBndWFyZGVkIHdp
dGggbV9tdXRleC4KQEAgLTU1Niw2ICs1ODAsOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAg
LCBtX3N0YXRzKHN0ZDo6bWFrZV91bmlxdWU8U3RhdHM+KCkpCiAjZW5kaWYKICAgICB7CisjaWYg
VFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIG1fdHJhY2tlZElEID0gaGFzaFRhYmxl
VHJhY2tlcigpLnJlY29yZEFsbG9jYXRpb24oMCwgMCk7CisjZW5kaWYKICAgICB9CiAKICAgICBp
bmxpbmUgdW5zaWduZWQgZG91YmxlSGFzaCh1bnNpZ25lZCBrZXkpCkBAIC05MzgsNyArOTY1LDEx
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgZW50cnkgPSBleHBhbmQoZW50cnkpOwog
CiAgICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7Ci0gICAgICAgIAorCisj
aWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5y
ZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5
SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3du
R29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CiAgICAgfQogCkBAIC05NzcsNiArMTAwOCwxMCBA
QCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5j
eSgpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hUYWJsZVRy
YWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCks
IGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIHJldHVybiBBZGRSZXN1bHQo
bWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CiAgICAgfQogCkBAIC05OTcsNiAr
MTAzMiwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgbmV3RW50cnktPn5WYWx1ZSgpOwog
ICAgICAgICBuZXcgKE5vdE51bGwsIG5ld0VudHJ5KSBWYWx1ZVR5cGUoV1RGTW92ZShlbnRyeSkp
OwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hUYWJsZVRyYWNr
ZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNh
cGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIHJldHVybiBuZXdFbnRyeTsKICAg
ICB9CiAKQEAgLTEwNzAsNiArMTEwOSwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgaWYg
KHNob3VsZFNocmluaygpKQogICAgICAgICAgICAgc2hyaW5rKCk7CiAKKyNpZiBUUkFDS19IQVNI
VEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRD
YXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOwor
I2VuZGlmCisKICAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKICAgICB9
CiAKQEAgLTExMzIsNyArMTE3NSwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBpZiAo
c2hvdWxkU2hyaW5rKCkpCiAgICAgICAgICAgICBzaHJpbmsoKTsKLSAgICAgICAgCisKKyNpZiBU
UkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29y
ZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5
dGVzKCkpOworI2VuZGlmCisKICAgICAgICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3ko
KTsKICAgICAgICAgcmV0dXJuIHJlbW92ZWRCdWNrZXRDb3VudDsKICAgICB9CkBAIC0xMjIxLDYg
KzEyNjgsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgZmFzdEZyZWUob2xkVGFibGUp
OwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hUYWJsZVRyYWNr
ZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNh
cGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIGludGVybmFsQ2hlY2tUYWJsZUNv
bnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybiBuZXdFbnRyeTsKICAgICB9CkBAIC0xMjM4LDYg
KzEyODksMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIG1fdGFibGVTaXplTWFzayA9IDA7
CiAgICAgICAgIG1fa2V5Q291bnQgPSAwOwogICAgICAgICBtX2RlbGV0ZWRDb3VudCA9IDA7CisK
KyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigp
LnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNp
dHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5
LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rp
b25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KQEAgLTEyNTUsNiArMTMx
MCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLCBtX3N0YXRzKHN0ZDo6bWFrZV91bmlx
dWU8U3RhdHM+KCpvdGhlci5tX3N0YXRzKSkKICNlbmRpZgogICAgIHsKKyNpZiBUUkFDS19IQVNI
VEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgbV90cmFja2VkSUQgPSBoYXNoVGFibGVUcmFja2VyKCku
cmVjb3JkQWxsb2NhdGlvbihzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5k
aWYKKwogICAgICAgICB1bnNpZ25lZCBvdGhlcktleUNvdW50ID0gb3RoZXIuc2l6ZSgpOwogICAg
ICAgICBpZiAoIW90aGVyS2V5Q291bnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMjc2LDYg
KzEzMzUsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBv
dGhlclZhbHVlIDogb3RoZXIpCiAgICAgICAgICAgICBhZGRVbmlxdWVGb3JJbml0aWFsaXphdGlv
bjxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3Qob3RoZXJWYWx1ZSks
IG90aGVyVmFsdWUpOworCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhh
c2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJ
bkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+
CkBAIC0xMjkwLDYgKzEzNTMsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHN0ZDo6c3dh
cChtX2tleUNvdW50LCBvdGhlci5tX2tleUNvdW50KTsKICAgICAgICAgc3RkOjpzd2FwKG1fZGVs
ZXRlZENvdW50LCBvdGhlci5tX2RlbGV0ZWRDb3VudCk7CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVf
Q0FQQUNJVFkKKyAgICAgICAgc3RkOjpzd2FwKG1fdHJhY2tlZElELCBvdGhlci5tX3RyYWNrZWRJ
RCk7CisKKyAgICAgICAgLy8gTm90IHN1cmUgaWYgdGhpcyBpcyBuZWNlc3NhcnkuIE5vdGhpbmcg
d2lsbCBoYXZlIGNoYW5nZWQuCisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXpl
QW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygp
KTsKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShvdGhl
ci5tX3RyYWNrZWRJRCwgb3RoZXIuc2l6ZUluQnl0ZXMoKSwgb3RoZXIuY2FwYWNpdHlJbkJ5dGVz
KCkpOworI2VuZGlmCisKICNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKICAgICAg
ICAgbV9zdGF0cy5zd2FwKG90aGVyLm1fc3RhdHMpOwogI2VuZGlmCkBAIC0xMzE4LDYgKzEzODks
MTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIG1fa2V5Q291bnQgPSBvdGhlci5tX2tleUNv
dW50OwogICAgICAgICBtX2RlbGV0ZWRDb3VudCA9IG90aGVyLm1fZGVsZXRlZENvdW50OwogCisj
aWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcChtX3RyYWNrZWRJ
RCwgb3RoZXIubV90cmFja2VkSUQpOworI2VuZGlmCisKICAgICAgICAgb3RoZXIubV90YWJsZSA9
IG51bGxwdHI7CiAgICAgICAgIG90aGVyLm1fdGFibGVTaXplID0gMDsKICAgICAgICAgb3RoZXIu
bV90YWJsZVNpemVNYXNrID0gMDsKQEAgLTEzMjgsNiArMTQwMywxMSBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgbV9zdGF0cyA9IFdURk1vdmUob3RoZXIubV9zdGF0cyk7CiAgICAgICAgIG90
aGVyLm1fc3RhdHMgPSBudWxscHRyOwogI2VuZGlmCisKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQ
QUNJVFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eSht
X3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworICAgICAgICBo
YXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG90aGVyLm1fdHJhY2tlZElE
LCBvdGhlci5zaXplSW5CeXRlcygpLCBvdGhlci5jYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgpAQCAtMTMzOCw2ICsxNDE4LDE4IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBzaXplX3Qg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+OjpzaXplSW5CeXRlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc2l6
ZSgpICogc2l6ZW9mKFZhbHVlVHlwZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBzaXplX3Qg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+OjpjYXBhY2l0eUluQnl0ZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IGNhcGFjaXR5KCkgKiBzaXplb2YoVmFsdWVUeXBlKTsKKyAgICB9CisKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2l6ZUxpbWl0
cy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9TaXplTGltaXRzLmNwcAppbmRleCBiMGFkMTQwNDRmM2I4
NDExNjg2ZDNhMWFhOGVhZmI0ZGFiNzc3ODVjLi5mYmVkNjVmZTAxMDIyYzg4MGU3ZTY2OTAwMmFi
ZDhmZTBhZjlkMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TaXplTGltaXRzLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9TaXplTGltaXRzLmNwcApAQCAtODEsOSArODEsMTIgQEAgcHVi
bGljOgogICAgIHR5cGVuYW1lIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVvZihUKSwgc3RkOjph
bGlnbm1lbnRfb2Y8VD46OnZhbHVlPjo6dHlwZSBpbmxpbmVCdWZmZXJbaW5saW5lQ2FwYWNpdHld
OwogfTsKIAorI2lmICFUUkFDS19WRUNUT1JfQ0FQQUNJVFkKIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KFZlY3RvcjxpbnQ+KSA9PSBzaXplb2YoU2FtZVNpemVBc1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0
eTxpbnQ+KSwgIlZlY3RvciBzaG91bGQgc3RheSBzbWFsbCEiKTsKIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKFZlY3RvcjxpbnQsIDE+KSA9PSBzaXplb2YoU2FtZVNpemVBc1ZlY3RvcldpdGhJbmxpbmVD
YXBhY2l0eTxpbnQsIDE+KSwgIlZlY3RvciBzaG91bGQgc3RheSBzbWFsbCEiKTsKIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQsIDI+KSA9PSBzaXplb2YoU2FtZVNpemVBc1ZlY3Rvcldp
dGhJbmxpbmVDYXBhY2l0eTxpbnQsIDI+KSwgIlZlY3RvciBzaG91bGQgc3RheSBzbWFsbCEiKTsK
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQsIDM+KSA9PSBzaXplb2YoU2FtZVNpemVB
c1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxpbnQsIDM+KSwgIlZlY3RvciBzaG91bGQgc3RheSBz
bWFsbCEiKTsKKyNlbmRpZgorCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1N0YWNrU2hvdC5oIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKaW5kZXggN2UzMmEzNWJh
ZTNjN2I1NmE4YmU4NWI3ZDE4ZDFlNTU3OWEwYjNmYy4uZmM3Y2ZhNmE2NjI0ODFjZWQ0YzRhZGNm
NTVjODU2ZjU3ZDVmMDZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgK
KysrIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV1RG
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9WZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhYmI2ZGYwMTRmZjZiNTZmYmU3YTA3NWQ1Yjg0ZjUx
MjkwOTAyMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuY3BwCkBA
IC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVmVjdG9yLmgiCisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyNpbmNsdWRlIDx3dGYv
Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxub3RpZnkuaD4KKyNpbmNsdWRl
IDx3dGYvU3RhY2tTaG90Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKKyNpZiBQTEFU
Rk9STShDT0NPQSkKK3N0YXRpYyB2b2lkIGR1bXBXYXN0ZWRWZWN0b3JDYXBhY2l0eSgpCit7Cisg
ICAgYXV0byBjYWxsU2l0ZURhdGEgPSB2ZWN0b3JUcmFja2VyKCkuYWdncmVnYXRlQnlDYWxsU2l0
ZShbXSAoVHJhY2tlZElELCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJikgeworICAgIH0pOworCisg
ICAgLy8gTWFrZSBhIHZlY3RvciBvZiByYXcgcG9pbnRlcnMgc28gd2UgY2FuIHNvcnQgdGhlbS4K
KyAgICBzdGQ6OnZlY3RvcjxBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKj4gY2FsbFNpdGVQdHJzOwor
ICAgIGZvciAoY29uc3QgYXV0byYgc2l0ZURhdGEgOiBjYWxsU2l0ZURhdGEpIHsKKyAgICAgICAg
aWYgKCFzaXRlRGF0YS5jYXBhY2l0eSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBj
YWxsU2l0ZVB0cnMucHVzaF9iYWNrKGNvbnN0X2Nhc3Q8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSo+
KCZzaXRlRGF0YSkpOworICAgIH0KKworICAgIC8vIFNvcnQgYnkgcmV2ZXJzZSB3YXN0YWdlLgor
ICAgIHN0ZDo6c29ydChjYWxsU2l0ZVB0cnMuYmVnaW4oKSwgY2FsbFNpdGVQdHJzLmVuZCgpLCBb
XSAoY29uc3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogYSwgY29uc3QgQWxsb2NhdGlvbkNhbGxT
aXRlRGF0YSogYikgeworICAgICAgICBzaXplX3QgYVdhc3RhZ2UgPSBhLT5jYXBhY2l0eSAtIGEt
PnVzZWRTaXplOworICAgICAgICBzaXplX3QgYldhc3RhZ2UgPSBiLT5jYXBhY2l0eSAtIGItPnVz
ZWRTaXplOworICAgICAgICByZXR1cm4gYVdhc3RhZ2UgPiBiV2FzdGFnZTsKKyAgICB9KTsKKwor
ICAgIGNvbnN0IHNpemVfdCBtYXhDb3VudCA9IDEwMDsKKworICAgIFdURkxvZ0Fsd2F5cygiJWx1
IGNhbGwgc2l0ZXMgY3JlYXRlZCB2ZWN0b3JzLiBTaG93aW5nICVsdSBzaXRlcyB3aXRoIG1vc3Qg
d2FzdGFnZTpcbiIsIGNhbGxTaXRlRGF0YS5zaXplKCksIG1heENvdW50KTsKKworICAgIHNpemVf
dCBjb3VudCA9IDA7CisgICAgZm9yIChhdXRvIHNpdGVEYXRhIDogY2FsbFNpdGVQdHJzKSB7Cisg
ICAgICAgIGlmIChjb3VudCsrID09IG1heENvdW50KQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCJXYXN0ZWQgY2FwYWNpdHk6ICVsdSBieXRlcyAodXNlZCAlbHUg
b2YgJWx1IGJ5dGVzLCB1dGlsaXphdGlvbjogJS4yZiUlKSAtICVsdSBhbGxvY2F0aW9uc1xuIiwK
KyAgICAgICAgICAgIHNpdGVEYXRhLT5jYXBhY2l0eSAtIHNpdGVEYXRhLT51c2VkU2l6ZSwKKyAg
ICAgICAgICAgIHNpdGVEYXRhLT51c2VkU2l6ZSwgc2l0ZURhdGEtPmNhcGFjaXR5LCAxMDAuMCAq
IHNpdGVEYXRhLT51c2VkU2l6ZSAvIHNpdGVEYXRhLT5jYXBhY2l0eSwKKyAgICAgICAgICAgIHNp
dGVEYXRhLT5jb3VudCk7CisgICAgICAgIGNvbnN0IHNpemVfdCBmcmFtZXNUb1NraXAgPSA3Owor
ICAgICAgICBXVEZQcmludEJhY2t0cmFjZShzaXRlRGF0YS0+c3RhY2soKS5hcnJheSgpICsgZnJh
bWVzVG9Ta2lwLCBzaXRlRGF0YS0+c3RhY2soKS5zaXplKCkgLSBmcmFtZXNUb1NraXApOworICAg
ICAgICBXVEZMb2dBbHdheXMoIlxuIik7CisgICAgfQorfQorI2VuZGlmCisKK0NvbnRhaW5lckNh
cGFjaXR5VHJhY2tlciYgdmVjdG9yVHJhY2tlcigpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOworICAgIHN0ZDo6Y2FsbF9v
bmNlKGluaXRpYWxpemVPbmNlLCBbXSB7CisgICAgICAgIGludCB0b2tlbjsKKyAgICAgICAgbm90
aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJjb20uYXBwbGUuV2ViS2l0LmR1bXBWZWN0b3JDYXBhY2l0
eSIsICZ0b2tlbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihpbnQpIHsKKyAgICAgICAg
ICAgIGR1bXBXYXN0ZWRWZWN0b3JDYXBhY2l0eSgpOworICAgICAgICB9KTsKKyAgICB9KTsKKyNl
bmRpZgorCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdURjo6Q29udGFpbmVyQ2FwYWNpdHlU
cmFja2VyPiB0cmFja2VyOworICAgIHJldHVybiB0cmFja2VyOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXVEYKKworI2VuZGlmIC8vIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRleCA2NmUz
YmUyYWU2ODhiMGZkNWUzNDhjMDc0YTVjM2Y1NGY4OTBhMzg0Li5hM2Q5Y2NiMDUwMzY5Y2QxMjU5
NWEyNDQxZDczMmJkNmE3YWRkYTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3Iu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtMzcsMTIgKzM3LDI0IEBACiAjaW5j
bHVkZSA8d3RmL1ZhbHVlQ2hlY2suaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yVHJhaXRzLmg+CiAK
Ky8vIEVuYWJsZSBUUkFDS19WRUNUT1JfQ0FQQUNJVFkgdG8gdHJhY2sgY2FsbCBzaXRlcyB0aGF0
IHdhc3RlIHZlY3RvciBjYXBhY2l0eS4gT24gQ29jb2EgcGxhdGZvcm1zLCB0aGUgZGF0YSBjYW4g
YmUgZHVtcGVkCisvLyBieSBydW5uaW5nICJub3RpZnl1dGlsIC1wIGNvbS5hcHBsZS5XZWJLaXQu
ZHVtcFZlY3RvckNhcGFjaXR5Ii4KKyNkZWZpbmUgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZIDAKKwor
I2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorI2luY2x1ZGUgPHd0Zi9Db250YWluZXJDYXBhY2l0
eVRyYWNrZXIuaD4KKyNlbmRpZgorCiAjaWYgQVNBTl9FTkFCTEVECiBleHRlcm4gIkMiIHZvaWQg
X19zYW5pdGl6ZXJfYW5ub3RhdGVfY29udGlndW91c19jb250YWluZXIoY29uc3Qgdm9pZCogYmVn
aW4sIGNvbnN0IHZvaWQqIGVuZCwgY29uc3Qgdm9pZCogb2xkX21pZCwgY29uc3Qgdm9pZCogbmV3
X21pZCk7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CiAKKyNpZiBUUkFDS19WRUNUT1JfQ0FQ
QUNJVFkKK1dURl9FWFBPUlRfUFJJVkFURSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIHZlY3Rv
clRyYWNrZXIoKTsKKyNlbmRpZgorICAgIAogdGVtcGxhdGUgPGJvb2wgbmVlZHNEZXN0cnVjdGlv
biwgdHlwZW5hbWUgVD4KIHN0cnVjdCBWZWN0b3JEZXN0cnVjdG9yOwogCkBAIC0zMzksNiArMzUx
LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgcHRyZGlmZl90IGJ1ZmZlck1lbW9yeU9mZnNldCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWZWN0b3JCdWZmZXJCYXNlLCBtX2J1ZmZlcik7IH0K
ICAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2NhcGFjaXR5OyB9CiAKKyAg
ICBzaXplX3QgY2FwYWNpdHlJbkJ5dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBj
YXBhY2l0eSgpICogc2l6ZW9mKFQpOworICAgIH0KKworICAgIHNpemVfdCBzaXplSW5CeXRlcygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zaXplICogc2l6ZW9mKFQpOworICAgIH0K
KwogICAgIE1hbGxvY1B0cjxUPiByZWxlYXNlQnVmZmVyKCkKICAgICB7CiAgICAgICAgIFQqIGJ1
ZmZlciA9IG1fYnVmZmVyOwpAQCAtMzUzLDYgKzM3NSw5IEBAIHByb3RlY3RlZDoKICAgICAgICAg
LCBtX2NhcGFjaXR5KDApCiAgICAgICAgICwgbV9zaXplKDApCiAgICAgeworI2lmIFRSQUNLX1ZF
Q1RPUl9DQVBBQ0lUWQorICAgICAgICBtX3RyYWNrZWRJRCA9IHZlY3RvclRyYWNrZXIoKS5yZWNv
cmRBbGxvY2F0aW9uKDAsIDApOworI2VuZGlmCiAgICAgfQogCiAgICAgVmVjdG9yQnVmZmVyQmFz
ZShUKiBidWZmZXIsIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IHNpemUpCkBAIC0zNjAsMTYgKzM4
NSwyNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9jYXBhY2l0eShjYXBhY2l0eSkKICAgICAg
ICAgLCBtX3NpemUoc2l6ZSkKICAgICB7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAg
ICAgIG1fdHJhY2tlZElEID0gdmVjdG9yVHJhY2tlcigpLnJlY29yZEFsbG9jYXRpb24oc2l6ZUlu
Qnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgflZlY3Rv
ckJ1ZmZlckJhc2UoKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2Ug
dG8gZmluZCBhIHdheSB0byBBU1NFUlQgdGhhdCBtX2J1ZmZlciBoYXNuJ3QgbGVha2VkIGhlcmUu
CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNv
cmRGcmVlKG1fdHJhY2tlZElEKTsKKyAgICAgICAgbV90cmFja2VkSUQgPSAwOworI2VuZGlmCiAg
ICAgfQogCiAgICAgVCogbV9idWZmZXI7CiAgICAgdW5zaWduZWQgbV9jYXBhY2l0eTsKICAgICB1
bnNpZ25lZCBtX3NpemU7IC8vIE9ubHkgdXNlZCBieSB0aGUgVmVjdG9yIHN1YmNsYXNzLCBidXQg
cGxhY2VkIGhlcmUgdG8gYXZvaWQgcGFkZGluZyB0aGUgc3RydWN0LgorI2lmIFRSQUNLX1ZFQ1RP
Ul9DQVBBQ0lUWQorICAgIFRyYWNrZWRJRCBtX3RyYWNrZWRJRCB7IDAgfTsKKyNlbmRpZgogfTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgpAQCAtNDAyLDYg
KzQzNyw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN0ZDo6c3dhcChtX2J1ZmZlciwgb3Ro
ZXIubV9idWZmZXIpOwogICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3RoZXIubV9jYXBh
Y2l0eSk7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcChtX3Ry
YWNrZWRJRCwgb3RoZXIubV90cmFja2VkSUQpOworI2VuZGlmCiAgICAgfQogICAgIAogICAgIHZv
aWQgcmVzdG9yZUlubGluZUJ1ZmZlcklmTmVlZGVkKCkgeyB9CkBAIC00MjMsMTAgKzQ2MSwxNiBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CiAgICAgdXNpbmcgQmFzZTo6YnVm
ZmVyTWVtb3J5T2Zmc2V0OwogCisgICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHlJbkJ5dGVzOworICAg
IHVzaW5nIEJhc2U6OnNpemVJbkJ5dGVzOworCiAgICAgdXNpbmcgQmFzZTo6cmVsZWFzZUJ1ZmZl
cjsKIAogcHJvdGVjdGVkOgogICAgIHVzaW5nIEJhc2U6Om1fc2l6ZTsKKyNpZiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkKKyAgICB1c2luZyBCYXNlOjptX3RyYWNrZWRJRDsKKyNlbmRpZgogCiBwcml2
YXRlOgogICAgIHVzaW5nIEJhc2U6Om1fYnVmZmVyOwpAQCAtNTE0LDYgKzU1OCwxMCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV9idWZmZXIsIG90aGVyLm1fYnVmZmVyKTsKICAg
ICAgICAgICAgIHN0ZDo6c3dhcChtX2NhcGFjaXR5LCBvdGhlci5tX2NhcGFjaXR5KTsKICAgICAg
ICAgfQorCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcChtX3Ry
YWNrZWRJRCwgb3RoZXIubV90cmFja2VkSUQpOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCBy
ZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQoKQpAQCAtNTQwLDYgKzU4OCw4IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBCYXNlOjpidWZmZXI7CiAgICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CiAgICAg
dXNpbmcgQmFzZTo6YnVmZmVyTWVtb3J5T2Zmc2V0OworICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5
SW5CeXRlczsKKyAgICB1c2luZyBCYXNlOjpzaXplSW5CeXRlczsKIAogICAgIE1hbGxvY1B0cjxU
PiByZWxlYXNlQnVmZmVyKCkKICAgICB7CkBAIC01NTAsNiArNjAwLDkgQEAgcHVibGljOgogCiBw
cm90ZWN0ZWQ6CiAgICAgdXNpbmcgQmFzZTo6bV9zaXplOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBB
Q0lUWQorICAgIHVzaW5nIEJhc2U6Om1fdHJhY2tlZElEOworI2VuZGlmCiAKIHByaXZhdGU6CiAg
ICAgdXNpbmcgQmFzZTo6bV9idWZmZXI7CkBAIC02NTgsNiArNzExLDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgcmVzdWx0Lm1fc2l6ZSA9IHNpemU7CiAKICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZElu
aXRpYWxpemU8MD4oc3RkOjpmb3J3YXJkPEl0ZW1zPihpdGVtcykuLi4pOworCisjaWYgVFJBQ0tf
VkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2Fw
YWNpdHkocmVzdWx0Lm1fdHJhY2tlZElELCByZXN1bHQuc2l6ZUluQnl0ZXMoKSwgcmVzdWx0LmNh
cGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IApAQCAtNjg1LDYgKzc0Miw5IEBAIHB1YmxpYzoKICAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25z
dCB7IHJldHVybiBCYXNlOjpjYXBhY2l0eSgpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gIXNpemUoKTsgfQogCisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyBy
ZXR1cm4gQmFzZTo6c2l6ZUluQnl0ZXMoKTsgfQorICAgIHNpemVfdCBjYXBhY2l0eUluQnl0ZXMo
KSBjb25zdCB7IHJldHVybiBCYXNlOjpjYXBhY2l0eUluQnl0ZXMoKTsgfQorCiAgICAgVCYgYXQo
c2l6ZV90IGkpCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoaSA+PSBzaXplKCkpKQpAQCAt
ODA4LDkgKzg2OCwxNyBAQCBwdWJsaWM6CiAKICAgICAgICAgQmFzZTo6c3dhcChvdGhlciwgbV9z
aXplLCBvdGhlci5tX3NpemUpOwogICAgICAgICBzdGQ6OnN3YXAobV9zaXplLCBvdGhlci5tX3Np
emUpOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBzdGQ6OnN3YXAobV90cmFj
a2VkSUQsIG90aGVyLm1fdHJhY2tlZElEKTsKKyNlbmRpZgogCiAgICAgICAgIGFzYW5TZXRJbml0
aWFsQnVmZmVyU2l6ZVRvKG1fc2l6ZSk7CiAgICAgICAgIG90aGVyLmFzYW5TZXRJbml0aWFsQnVm
ZmVyU2l6ZVRvKG90aGVyLm1fc2l6ZSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAg
ICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwg
c2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworICAgICAgICB2ZWN0b3JUcmFja2Vy
KCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG90aGVyLm1fdHJhY2tlZElELCBvdGhlci5zaXplSW5C
eXRlcygpLCBvdGhlci5jYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICB9CiAKICAgICB2
b2lkIHJldmVyc2UoKTsKQEAgLTg2MCw2ICs5MjgsMTEgQEAgcHJpdmF0ZToKICAgICB1c2luZyBC
YXNlOjpyZWFsbG9jYXRlQnVmZmVyOwogICAgIHVzaW5nIEJhc2U6OnJlc3RvcmVJbmxpbmVCdWZm
ZXJJZk5lZWRlZDsKICAgICB1c2luZyBCYXNlOjpyZWxlYXNlQnVmZmVyOworCisjaWYgVFJBQ0tf
VkVDVE9SX0NBUEFDSVRZCisgICAgdXNpbmcgQmFzZTo6bV90cmFja2VkSUQ7CisjZW5kaWYKKwog
I2lmIEFTQU5fRU5BQkxFRAogICAgIHVzaW5nIEJhc2U6OmVuZE9mQnVmZmVyOwogI2VuZGlmCkBA
IC04NzMsNiArOTQ2LDEwIEBAIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyLCBtaW5DYXBhY2l0eT46OlZlY3Rvcihjb25zdCBWZWN0b3ImIG90CiAKICAgICBpZiAoYmVn
aW4oKSkKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJl
Z2luKCksIG90aGVyLmVuZCgpLCBiZWdpbigpKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lU
WQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQs
IHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFu
ZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtODg0LDYgKzk2MSwxMCBAQCBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpWZWN0b3IoY29u
c3QgVmVjdG9yPFQsCiAKICAgICBpZiAoYmVnaW4oKSkKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6
OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJlZ2luKCksIG90aGVyLmVuZCgpLCBiZWdpbigpKTsK
KworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRT
aXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRl
cygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAt
OTA2LDYgKzk4NywxMCBAQCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
ciwgbWluQ2FwYWNpdHk+JiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdAogICAgIFR5cGVPcGVyYXRp
b25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpICsgc2l6ZSgpLCBvdGhlci5lbmQo
KSwgZW5kKCkpOwogICAgIG1fc2l6ZSA9IG90aGVyLnNpemUoKTsKIAorI2lmIFRSQUNLX1ZFQ1RP
Ul9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90
cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAg
ICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC05MzQsNiArMTAxOSwxMCBAQCBWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiBWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdAogICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlci5i
ZWdpbigpICsgc2l6ZSgpLCBvdGhlci5lbmQoKSwgZW5kKCkpOwogICAgIG1fc2l6ZSA9IG90aGVy
LnNpemUoKTsKIAorI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIo
KS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFj
aXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC0xMDE1
LDYgKzExMDQsMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHk+OjpmaWxsKGNvbnN0IFQmIHZhbCwKICAgICBzdGQ6OmZpbGwoYmVn
aW4oKSwgZW5kKCksIHZhbCk7CiAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRGaWxs
KGVuZCgpLCBiZWdpbigpICsgbmV3U2l6ZSwgdmFsKTsKICAgICBtX3NpemUgPSBuZXdTaXplOwor
CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNp
emVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVz
KCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0x
MDg2LDYgKzExNzksMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVzaXplKHNpemUKICAgICB9CiAgICAgCiAg
ICAgbV9zaXplID0gc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3Rv
clRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVz
KCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90
IG1pbkNhcGFjaXR5PgpAQCAtMTEwMiw2ICsxMTk5LDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGlu
ZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6c2hyaW5rKHNpemVfdCBz
aXplCiAgICAgVHlwZU9wZXJhdGlvbnM6OmRlc3RydWN0KGJlZ2luKCkgKyBzaXplLCBlbmQoKSk7
CiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8oc2l6ZSk7CiAgICAgbV9zaXplID0gc2l6
ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNv
cmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5C
eXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpA
QCAtMTExNCw2ICsxMjE1LDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6Z3JvdyhzaXplX3Qgc2l6ZSkKICAgICBpZiAoYmVn
aW4oKSkKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OmluaXRpYWxpemVJZk5vblBPRChlbmQoKSwg
YmVnaW4oKSArIHNpemUpOwogICAgIG1fc2l6ZSA9IHNpemU7CisKKyNpZiBUUkFDS19WRUNUT1Jf
Q0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJh
Y2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVy
Zmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTExNzcsNiArMTI4MiwxMCBAQCB2
b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0
eT46OnJlc2VydmVDYXBhY2l0eShzaQogCiAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmUob2xkQnVm
ZmVyLCBvbGRFbmQsIGJlZ2luKCkpOwogICAgIEJhc2U6OmRlYWxsb2NhdGVCdWZmZXIob2xkQnVm
ZmVyKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5y
ZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5
SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5
PgpAQCAtMTE5OSw2ICsxMzA4LDEwIEBAIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6dHJ5UmVzZXJ2ZUNhcGFjaXR5CiAKICAgICBU
eXBlT3BlcmF0aW9uczo6bW92ZShvbGRCdWZmZXIsIG9sZEVuZCwgYmVnaW4oKSk7CiAgICAgQmFz
ZTo6ZGVhbGxvY2F0ZUJ1ZmZlcihvbGRCdWZmZXIpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFD
SVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJ
RCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTEyMDksNiArMTMyMiwxMCBAQCBpbmxpbmUgdm9pZCBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpyZXNlcnZlSW5p
dAogICAgIEFTU0VSVChjYXBhY2l0eSgpID09IGlubGluZUNhcGFjaXR5KTsKICAgICBpZiAoaW5p
dGlhbENhcGFjaXR5ID4gaW5saW5lQ2FwYWNpdHkpCiAgICAgICAgIEJhc2U6OmFsbG9jYXRlQnVm
ZmVyKGluaXRpYWxDYXBhY2l0eSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2
ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5C
eXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNp
emVfdCBtaW5DYXBhY2l0eT4KQEAgLTEyMjcsNiArMTM0NCw5IEBAIHZvaWQgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6c2hyaW5rQ2FwYWNp
dHkoc2l6CiAgICAgICAgIGlmIChCYXNlOjpzaG91bGRSZWFsbG9jYXRlQnVmZmVyKG5ld0NhcGFj
aXR5KSkgewogICAgICAgICAgICAgQmFzZTo6cmVhbGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0eSk7
CiAgICAgICAgICAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhzaXplKCkpOworI2lmIFRS
QUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNp
emVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVz
KCkpOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTI0MCw2
ICsxMzYwLDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRs
ZXIsIG1pbkNhcGFjaXR5Pjo6c2hyaW5rQ2FwYWNpdHkoc2l6CiAgICAgQmFzZTo6cmVzdG9yZUlu
bGluZUJ1ZmZlcklmTmVlZGVkKCk7CiAKICAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhz
aXplKCkpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigp
LnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNp
dHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNp
dHk+CkBAIC0xMjU3LDYgKzEzODEsMTAgQEAgQUxXQVlTX0lOTElORSB2b2lkIFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmFwcGUKICAgICBU
KiBkZXN0ID0gZW5kKCk7CiAgICAgVmVjdG9yQ29waWVyPHN0ZDo6aXNfdHJpdmlhbDxUPjo6dmFs
dWUsIFU+Ojp1bmluaXRpYWxpemVkQ29weShkYXRhLCBzdGQ6OmFkZHJlc3NvZihkYXRhW2RhdGFT
aXplXSksIGRlc3QpOwogICAgIG1fc2l6ZSA9IG5ld1NpemU7CisKKyNpZiBUUkFDS19WRUNUT1Jf
Q0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJh
Y2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVy
Zmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTEyNzYsNiArMTQwNCwxMCBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRs
ZXIsIG1pbkNhcGFjaXR5Pjo6dHJ5QQogICAgIFQqIGRlc3QgPSBlbmQoKTsKICAgICBWZWN0b3JD
b3BpZXI8c3RkOjppc190cml2aWFsPFQ+Ojp2YWx1ZSwgVT46OnVuaW5pdGlhbGl6ZWRDb3B5KGRh
dGEsIHN0ZDo6YWRkcmVzc29mKGRhdGFbZGF0YVNpemVdKSwgZGVzdCk7CiAgICAgbV9zaXplID0g
bmV3U2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIo
KS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFj
aXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMjg3LDYg
KzE0MTksOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6YXBwZQogICAgICAgICBhc2FuQnVmZmVyU2l6
ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkg
VChzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKICAgICAgICAgKyttX3NpemU7CisjaWYgVFJBQ0tf
VkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2Fw
YWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNl
bmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzAxLDYgKzE0MzYsOSBAQCBBTFdB
WVNfSU5MSU5FIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5Pjo6Y29ucwogICAgICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyht
X3NpemUgKyAxKTsKICAgICAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pOwogICAgICAgICArK21fc2l6ZTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQ
QUNJVFkKKyAgICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3Ry
YWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzMTUsNiArMTQ1Myw5IEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNp
dHk+Ojp0cnlDCiAgICAgICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEp
OwogICAgICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CiAgICAgICAgICsrbV9zaXplOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAg
ICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBz
aXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIApAQCAtMTMzNCw2ICsxNDc1LDEwIEBAIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6YXBwZW5kU2xv
d0Nhc2UoVSYmCiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAg
ICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8VT4oKnB0cikpOwogICAgICsr
bV9zaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigp
LnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNp
dHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNp
dHk+CkBAIC0xMzQ4LDYgKzE0OTMsMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojpjb25zdHJ1Y3RBbmRBcHBlbmQKICAgICBh
c2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICBuZXcgKE5vdE51bGws
IGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgICAgKyttX3NpemU7CisK
KyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6
ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMo
KSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFj
aXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTEz
NjMsNiArMTUxMiwxMCBAQCBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyLCBtaW5DYXBhY2l0eT46OnRyeUNvbnN0cnVjdEFuZEFwcAogICAgIGFzYW5CdWZmZXJT
aXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEpOwogICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQo
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKICAgICArK21fc2l6ZTsKKworI2lmIFRSQUNL
X1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNp
dHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRp
ZgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMzc5LDYgKzE1MzIsMTAgQEAgQUxXQVlTX0lO
TElORSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5D
YXBhY2l0eT46OnVuY2gKIAogICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJk
PFU+KHZhbHVlKSk7CiAgICAgKyttX3NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkK
KyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBz
aXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTE0MDUsNiArMTU2MiwxMCBAQCB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46Omluc2Vy
dChzaXplX3QgcG9zaQogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoc3BvdCwg
ZW5kKCksIHNwb3QgKyBkYXRhU2l6ZSk7CiAgICAgVmVjdG9yQ29waWVyPHN0ZDo6aXNfdHJpdmlh
bDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRpYWxpemVkQ29weShkYXRhLCBzdGQ6OmFkZHJlc3NvZihk
YXRhW2RhdGFTaXplXSksIHNwb3QpOwogICAgIG1fc2l6ZSA9IG5ld1NpemU7CisKKyNpZiBUUkFD
S19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFj
aXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5k
aWYKIH0KICAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlw
ZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xNDI1LDYgKzE1
ODYsMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXIsIG1pbkNhcGFjaXR5Pjo6aW5zZXJ0KHNpemUKICAgICBUeXBlT3BlcmF0aW9uczo6bW92
ZU92ZXJsYXBwaW5nKHNwb3QsIGVuZCgpLCBzcG90ICsgMSk7CiAgICAgbmV3IChOb3ROdWxsLCBz
cG90KSBUKHN0ZDo6Zm9yd2FyZDxVPigqcHRyKSk7CiAgICAgKyttX3NpemU7CisKKyNpZiBUUkFD
S19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFj
aXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5k
aWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBl
bmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTE0NDMsNiArMTYw
OCwxMCBAQCBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHk+OjpyZW1vdmUoc2l6ZQogICAgIFR5cGVPcGVyYXRpb25zOjptb3Zl
T3ZlcmxhcHBpbmcoc3BvdCArIDEsIGVuZCgpLCBzcG90KTsKICAgICBhc2FuQnVmZmVyU2l6ZVdp
bGxDaGFuZ2VUbyhtX3NpemUgLSAxKTsKICAgICAtLW1fc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RP
Ul9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90
cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92
ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTQ1Niw2ICsxNjI1LDEwIEBA
IGlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBt
aW5DYXBhY2l0eT46OnJlbW92ZShzaXplCiAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVybGFw
cGluZyhlbmRTcG90LCBlbmQoKSwgYmVnaW5TcG90KTsKICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxD
aGFuZ2VUbyhtX3NpemUgLSBsZW5ndGgpOwogICAgIG1fc2l6ZSAtPSBsZW5ndGg7CisKKyNpZiBU
UkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENh
cGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7Cisj
ZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTE1MTMsNiAr
MTY4NiwxMCBAQCBpbmxpbmUgdW5zaWduZWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6cmVtb3ZlQQogICAgICAgICBUeXBlT3BlcmF0aW9u
czo6bW92ZU92ZXJsYXBwaW5nKGhvbGVFbmQsIGVuZCgpLCBob2xlQmVnaW4pOwogICAgIGFzYW5C
dWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSAtIG1hdGNoQ291bnQpOwogICAgIG1fc2l6ZSAt
PSBtYXRjaENvdW50OworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJh
Y2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwg
Y2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgcmV0dXJuIG1hdGNoQ291bnQ7CiB9CiAK
QEAgLTE1NTMsNiArMTczMCwxMCBAQCBpbmxpbmUgTWFsbG9jUHRyPFQ+IFZlY3RvcjxULCBpbmxp
bmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJlbAogICAgIH0KICAg
ICBtX3NpemUgPSAwOwogICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgY2FsbCBCYXNlOjpyZXN0b3Jl
SW5saW5lQnVmZmVySWZOZWVkZWQoKSBoZXJlPworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZ
CisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwg
c2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgcmV0dXJuIGJ1
ZmZlcjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352346</attachid>
            <date>2018-10-15 11:28:05 -0700</date>
            <delta_ts>2021-04-03 10:18:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186698-20181015202804.patch</filename>
            <type>text/plain</type>
            <size>54602</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE1NGZkZGZlMzZlYTU1OTBlMjQxYTAz
NmNmNWVhYTdjNDBmYTJkYTkuLmY1ZTU3NmE1N2NiNmQwYjdjMWQwNTk4NGNiYmFkYjRhOGVhNGEz
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTgtMTAtMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0cmFjayBj
YWxsIHNpdGVzIHRoYXQgd2FzdGUgVmVjdG9yIGNhcGFjaXR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY2OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2Vy
IHdoaWNoIGNhbiBhZ2dyZWdhdGUgZGF0YSBvbiBhIHBlci1jYWxsIHNpdGUgYmFzaXMgKGJ5IHRh
a2luZworICAgICAgICBhIHN0YWNrc2hvdCBOIGZyYW1lcyBkZWVwLCBhbmQgaGFzaGluZyBpdCks
IGFuZCBpcyBpbmZvcm1lZCBhYm91dCBhbGxvY2F0aW9ucywgc2l6ZSBhbmQKKyAgICAgICAgY2Fw
YWNpdHkgY2hhbmdlcywgYW5kIGZyZWVzIG9mIGNvbnRhaW5lciB0eXBlcyAoZS5nLiBWZWN0b3Ig
YW5kIEhhc2hNYXApLgorCisgICAgICAgIFdoZW4gVFJBQ0tfVkVDVE9SX0NBUEFDSVRZIGlzIGRl
ZmluZWQgaW4gVmVjdG9yLmgsIGEgc2luZ2xldG9uIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlcgor
ICAgICAgICBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgYWxsIFZlY3RvcnMgYW5kIHRoZWlyIHNp
emUgYW5kIGNhcGFjaXR5IGNoYW5nZXMuIFZlY3RvciBnYWlucworICAgICAgICBhbiBtX3RyYWNr
ZWRJRCBtZW1iZXIgdmFyaWFibGUgdG8gYWxsb3cgdHJhY2tpbmcgKFZlY3RvcnMgY2FuIGJlIFdU
Rk1vdmVkIGFuZCBzdGQ6OnN3YXBwZWQsCisgICAgICAgIHNvIHdlIGNhbid0IHJlbHkgb24gdGhl
aXIgYWRkcmVzcyB0byB0cmFjayB0aGVtKS4KKworICAgICAgICBEYXRhIGFib3V0IGxpdmUgVmVj
dG9ycyBjYW4gdGhlbiBiZSBkdW1wZWQgd2l0aCAibm90aWZ5dXRpbCAtcCBjb20uYXBwbGUuV2Vi
S2l0LmR1bXBWZWN0b3JDYXBhY2l0eSIsCisgICAgICAgIHZpYSBjb2RlIGluIFZlY3Rvci5jcHAu
CisKKyAgICAgICAgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyIHRha2VzIGNhcmUgdG8gYXZvaWQg
cmUtZW50cmFuY3kgKGFsbG93IGl0IHRvIHVzZSB0aGUgY29udGFpbmVyIHR5cGVzKQorICAgICAg
ICB3aGlsZSBiZWluZyBjYWxsYWJsZSBmcm9tIGRpZmZlcmVudCB0aHJlYWRzLgorCisgICAgICAg
ICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIHd0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiB3dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg6IEFkZGVkLgorICAg
ICAgICAqIHd0Zi9TaXplTGltaXRzLmNwcDoKKyAgICAgICAgKiB3dGYvU3RhY2tTaG90Lmg6Cisg
ICAgICAgICogd3RmL1ZlY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpkdW1wV2FzdGVk
VmVjdG9yQ2FwYWNpdHkpOgorICAgICAgICAoV1RGOjp2ZWN0b3JUcmFja2VyKToKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChXVEY6OlZlY3RvckJ1ZmZlckJhc2U6OmNhcGFjaXR5
SW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXVEY6OlZlY3RvckJ1ZmZlckJhc2U6OnNpemVJbkJ5
dGVzIGNvbnN0KToKKyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyQmFzZTo6VmVjdG9yQnVmZmVy
QmFzZSk6CisgICAgICAgIChXVEY6OlZlY3RvckJ1ZmZlckJhc2U6On5WZWN0b3JCdWZmZXJCYXNl
KToKKyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyOjpzd2FwKToKKyAgICAgICAgKFdURjo6VmVj
dG9yOjpmcm9tKToKKyAgICAgICAgKFdURjo6VmVjdG9yOjpzaXplSW5CeXRlcyBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlZlY3Rvcjo6Y2FwYWNpdHlJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6VmVjdG9yOjpzd2FwKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+OjpWZWN0b3IpOgor
ICAgICAgICAoV1RGOjo9KToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+OjpmaWxsKToKKyAg
ICAgICAgKFdURjo6bWluQ2FwYWNpdHk+OjpyZXNpemUpOgorICAgICAgICAoV1RGOjptaW5DYXBh
Y2l0eT46OnNocmluayk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6Z3Jvdyk6CisgICAg
ICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6cmVzZXJ2ZUNhcGFjaXR5KToKKyAgICAgICAgKFdURjo6
bWluQ2FwYWNpdHk+Ojp0cnlSZXNlcnZlQ2FwYWNpdHkpOgorICAgICAgICAoV1RGOjptaW5DYXBh
Y2l0eT46OnJlc2VydmVJbml0aWFsQ2FwYWNpdHkpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0
eT46OnNocmlua0NhcGFjaXR5KToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+OjphcHBlbmQp
OgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnRyeUFwcGVuZCk6CisgICAgICAgIChXVEY6
Om1pbkNhcGFjaXR5Pjo6Y29uc3RydWN0QW5kQXBwZW5kKToKKyAgICAgICAgKFdURjo6bWluQ2Fw
YWNpdHk+Ojp0cnlDb25zdHJ1Y3RBbmRBcHBlbmQpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0
eT46OmFwcGVuZFNsb3dDYXNlKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojpjb25zdHJ1
Y3RBbmRBcHBlbmRTbG93Q2FzZSk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6dHJ5Q29u
c3RydWN0QW5kQXBwZW5kU2xvd0Nhc2UpOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OnVu
Y2hlY2tlZEFwcGVuZCk6CisgICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6aW5zZXJ0KToKKyAg
ICAgICAgKFdURjo6bWluQ2FwYWNpdHk+OjpyZW1vdmUpOgorICAgICAgICAoV1RGOjptaW5DYXBh
Y2l0eT46OnJlbW92ZUFsbE1hdGNoaW5nKToKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+Ojpy
ZWxlYXNlQnVmZmVyKToKKwogMjAxOC0xMC0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFsbG93IGVuY29kaW5nIG9mIHNtYWxsIGVudW0g
Y2xhc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjJm
YWRmYmE1NDFiYjlmYzNmMGRjZmY2MTQ3M2JkMjM3Zjg5NWM1MC4uODFiNDNiZjQzYTI4OGRiZmVk
NmY4NjkyM2QzNmI3NmY3ZDIyYjU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yNCw2ICsyNCw3IEBACiAJCTBGMzBCQTkwMUU3ODcwOEUwMDJDQTg0NyAv
KiBHbG9iYWxWZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMzBCQThBMUU3ODcwOEUwMDJDQTg0NyAvKiBHbG9iYWxWZXJzaW9uLmNwcCAq
LzsgfTsKIAkJMEYzMENCNUExRkNERjEzNDAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzBD
QjU4MUZDREYxMzMwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgKi87IH07CiAJ
CTBGNDNEOEYxMURCNUFEREMwMDEwOEZCNiAvKiBBdXRvbWF0aWNUaHJlYWQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0M0Q4RUYxREI1QUREQzAw
MTA4RkI2IC8qIEF1dG9tYXRpY1RocmVhZC5jcHAgKi87IH07CisJCTBGNUI0REZBMjBEMERFMTgw
MEQ2RjUxMCAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QjRERjkyMEQwREUxNzAwRDZGNTEwIC8q
IENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAgKi87IH07CiAJCTBGNUJGMTc2MUYyM0Q0OUEw
MDI5RDkxRCAvKiBHaWdhY2FnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjVCRjE3NDFGMjNENDlBMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwICov
OyB9OwogCQkwRjYwRjMyRjFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MEYzMkQx
REZDQkQxQjAwNDE2RDZDIC8qIExvY2tlZFByaW50U3RyZWFtLmNwcCAqLzsgfTsKIAkJMEY2NkIy
OEExREM5N0JBQjAwNEExRDNGIC8qIENsb2NrVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2QjI4MDFEQzk3QkFCMDA0QTFEM0YgLyogQ2xv
Y2tUeXBlLmNwcCAqLzsgfTsKQEAgLTM4LDYgKzM5LDcgQEAKIAkJMEY4RjJCOTIxNzJFMDEwMzAw
N0RCREE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOEYyQjhGMTcyRTAwRjAwMDdEQkRBNSAvKiBDb21waWxh
dGlvblRocmVhZC5jcHAgKi87IH07CiAJCTBGOUQzMzYwMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxl
UHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgKi87
IH07CiAJCTBGOUQzMzYyMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM1RDE2NURCQTcz
MDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwICovOyB9OworCQkwRkQ3M0NCQjIwRDQ3NTg0MDBG
QzdBMjkgLyogVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRDczQ0JBMjBENDc1ODMwMEZDN0EyOSAvKiBWZWN0b3IuY3BwICovOyB9Owog
CQkwRkREQkZBNzE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEREJGQTUxNjY2REZB
MzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCAqLzsgfTsKIAkJMEZFMTY0NkExQjZG
RkM5NjAwNDAwRTdDIC8qIExvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZFMTY0NjgxQjZGRkM5NjAwNDAwRTdDIC8qIExvY2suY3BwICovOyB9
OwogCQkwRkU0NDc5QzFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNDQ3OUExQjdBQUEwMzAwOTQ5
OEVCIC8qIFdvcmRMb2NrLmNwcCAqLzsgfTsKQEAgLTIwMyw2ICsyMDUsOCBAQAogCQkwRjQ1NzA0
MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEb21pbmF0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NDU3MDQ0MUJFODM0NDEwMDYyQTYyOSAvKiBCdWJibGVTb3J0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJ1YmJsZVNvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY0RDhDNzExRkMxRTdDRTAwMUQzMkFDIC8qIFNpbmdseUxpbmtlZExpc3RXaXRoVGFpbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW5nbHlMaW5rZWRMaXN0V2l0aFRh
aWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1QjRERjgyMEQwREUxNzAwRDZG
NTEwIC8qIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY1QjRERjkyMEQwREUxNzAwRDZGNTEwIC8qIENvbnRhaW5lckNhcGFjaXR5
VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250YWlu
ZXJDYXBhY2l0eVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVC
RjE2NTFGMjMxNzgzMDAyOUQ5MUQgLyogTmF0dXJhbExvb3BzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5h
dHVyYWxMb29wcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVCRjE3NDFGMjNE
NDlBMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2lnYWNhZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVCRjE3NTFGMjNENDlBMDAyOUQ5
MUQgLyogR2lnYWNhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2lnYWNhZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI0OSw2ICsyNTMsNyBAQAogCQkwRkI0Njc4MzFGREUyODJDMDAz
RkNCMDkgLyogQ29uY3VycmVudFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb25jdXJyZW50VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
QzQ0ODgyMTZGRTlGRTEwMDg0NEJFOSAvKiBQcm9jZXNzSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJvY2Vzc0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGQzRFREU1MTY5NjE0OTYwMEY2NTA0MSAvKiBDb21tYVByaW50ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFQcmludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGRDczQ0JBMjBENDc1ODMwMEZDN0EyOSAvKiBWZWN0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmFzdEJpdFZlY3Rvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkRCNjk4RDFCN0M2NDNBMDAwQzEwNzggLyogQ29u
ZGl0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbmRpdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkREQkZBNTE2NjZERkEzMDBDNTVGRUYgLyog
U3RyaW5nUHJpbnRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3RyaW5nUHJpbnRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODYwLDYgKzg2NSw4IEBACiAJCQkJMEYzMENCNTkxRkNERjEzMzAwNEI1MzIzIC8qIENvbmN1cnJl
bnRQdHJIYXNoU2V0LmggKi8sCiAJCQkJMEZCNDY3ODMxRkRFMjgyQzAwM0ZDQjA5IC8qIENvbmN1
cnJlbnRWZWN0b3IuaCAqLywKIAkJCQkwRkRCNjk4RDFCN0M2NDNBMDAwQzEwNzggLyogQ29uZGl0
aW9uLmggKi8sCisJCQkJMEY1QjRERjkyMEQwREUxNzAwRDZGNTEwIC8qIENvbnRhaW5lckNhcGFj
aXR5VHJhY2tlci5jcHAgKi8sCisJCQkJMEY1QjRERjgyMEQwREUxNzAwRDZGNTEwIC8qIENvbnRh
aW5lckNhcGFjaXR5VHJhY2tlci5oICovLAogCQkJCTBGOEU4NURBMUZENDg1QjAwMDY5MTg4OSAv
KiBDb3VudGluZ0xvY2suY3BwICovLAogCQkJCTBGRkJDQkZBMUZEMzdFMEYwMDcyQUFGMCAvKiBD
b3VudGluZ0xvY2suaCAqLywKIAkJCQlFMzhDNDEyNjFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGlt
ZS5jcHAgKi8sCkBAIC0xMTM5LDYgKzExNDYsNyBAQAogCQkJCTdBRkVDNkFFMUVCMjJBQzYwMERB
REUzNiAvKiBVVUlELmggKi8sCiAJCQkJQThBNDczNkYxNTFBODI1QjAwNDEyM0ZGIC8qIFZhbHVl
Q2hlY2suaCAqLywKIAkJCQk3Q0QwRDVBNzFENTUzMjJBMDAwQ0M5RTEgLyogVmFyaWFudC5oICov
LAorCQkJCTBGRDczQ0JBMjBENDc1ODMwMEZDN0EyOSAvKiBWZWN0b3IuY3BwICovLAogCQkJCUE4
QTQ3MzcwMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzM3MTE1MUE4
MjVCMDA0MTIzRkYgLyogVmVjdG9yVHJhaXRzLmggKi8sCiAJCQkJQThBNDczNzIxNTFBODI1QjAw
NDEyM0ZGIC8qIFZNVGFncy5oICovLApAQCAtMTQ5MSw2ICsxNDk5LDcgQEAKIAkJCQlBOEE0NzQ2
MzE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJQ1UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY4RjJCOTIxNzJFMDEwMzAwN0RCREE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMzBDQjVBMUZDREYxMzQwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFz
aFNldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjVCNERGQTIwRDBERTE4MDBENkY1MTAgLyog
Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEU4NURC
MUZENDg1QjAwMDY5MTg4OSAvKiBDb3VudGluZ0xvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTM4QzQxMjgxRUI0RTA2ODAwNDI5NTdEIC8qIENQVVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTM4QzQxMjUxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTE1OTYsNiArMTYwNSw3IEBACiAJCQkJMUMxODFDOTMxRDMwN0FCODAwRjVGQTE2
IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2OTE1
MUE4MjVCMDA0MTIzRkYgLyogVVRGOC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUZFQzZCMTFF
QjIyQjU5MDBEQURFMzYgLyogVVVJRC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkQ3M0NCQjIw
RDQ3NTg0MDBGQzdBMjkgLyogVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjZCMjky
MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxRkE0
N0M4QTE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVhZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkU0NDc5QzFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDNlZTVjNDhlYmI1MGJkNGRmNmIzMDc4Y2QzNjhl
NDBhNThhZjNlNDUuLjI1MjRiNmExMzlkNzFhOGI2ZTZiMDg0ZWFjZTA4MGIyZmUwMTZjYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CkBAIC0zNSw2ICszNSw3IEBAIHNldChXVEZfUFVCTElDX0hFQURF
UlMKICAgICBDb25jdXJyZW50UHRySGFzaFNldC5oCiAgICAgQ29uY3VycmVudFZlY3Rvci5oCiAg
ICAgQ29uZGl0aW9uLmgKKyAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaAogICAgIENvdW50
aW5nTG9jay5oCiAgICAgQ3Jvc3NUaHJlYWRDb3BpZXIuaAogICAgIENyb3NzVGhyZWFkUXVldWUu
aApAQCAtMzM4LDYgKzMzOSw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIENsb2NrVHlwZS5jcHAK
ICAgICBDb21waWxhdGlvblRocmVhZC5jcHAKICAgICBDb25jdXJyZW50UHRySGFzaFNldC5jcHAK
KyAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwCiAgICAgQ291bnRpbmdMb2NrLmNwcAog
ICAgIENyb3NzVGhyZWFkQ29waWVyLmNwcAogICAgIENyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3Bw
CkBAIC0zOTUsNiArMzk3LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgVGltZVdpdGhEeW5hbWlj
Q2xvY2tUeXBlLmNwcAogICAgIFRpbWluZ1Njb3BlLmNwcAogICAgIFVVSUQuY3BwCisgICAgVmVj
dG9yLmNwcAogICAgIFdURkFzc2VydGlvbnMuY3BwCiAgICAgV2FsbFRpbWUuY3BwCiAgICAgV29y
ZExvY2suY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0eVRy
YWNrZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYTJhNDcyNTY4NDU5YTVhNTZmNDM0NGM4M2QzMmVlNjA3ODA0ZDgwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNw
cApAQCAtMCwwICsxLDIwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIuaCIKKworI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CisjaW5jbHVkZSA8d3RmL1N0
YWNrU2hvdC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworQWxsb2NhdGlvbkNhbGxTaXRlRGF0YTo6
QWxsb2NhdGlvbkNhbGxTaXRlRGF0YShzaXplX3Qgc3RhY2tEZXB0aCwgc2l6ZV90IGluVXNlZFNp
emUsIHNpemVfdCBpbkNhcGFjaXR5KQorICAgIDogdXNlZFNpemUoaW5Vc2VkU2l6ZSkKKyAgICAs
IGNhcGFjaXR5KGluQ2FwYWNpdHkpCisgICAgLCBtX3N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8U3Rh
Y2tTaG90PihzdGFja0RlcHRoKSkKK3sKK30KKworQWxsb2NhdGlvbkNhbGxTaXRlRGF0YTo6QWxs
b2NhdGlvbkNhbGxTaXRlRGF0YShjb25zdCBTdGFja1Nob3QmIHN0YWNrKQorICAgIDogbV9zdGFj
ayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hvdD4oc3RhY2spKQoreworfQorCitBbGxvY2F0aW9u
Q2FsbFNpdGVEYXRhOjpBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKGNvbnN0IEFsbG9jYXRpb25DYWxs
U2l0ZURhdGEmIG90aGVyKQorICAgIDogY291bnQob3RoZXIuY291bnQpCisgICAgLCB1c2VkU2l6
ZShvdGhlci51c2VkU2l6ZSkKKyAgICAsIGNhcGFjaXR5KG90aGVyLmNhcGFjaXR5KQorICAgICwg
bV9zdGFjayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hvdD4ob3RoZXIuc3RhY2soKSkpCit7Cit9
CisKK0FsbG9jYXRpb25DYWxsU2l0ZURhdGE6On5BbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKCkgPSBk
ZWZhdWx0OworCitjb25zdCBTdGFja1Nob3QmIEFsbG9jYXRpb25DYWxsU2l0ZURhdGE6OnN0YWNr
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gKm1fc3RhY2s7Cit9CisKK3N0cnVjdCBDb250YWluZXJB
bGxvY2F0aW9uRGF0YSB7CisgICAgQ29udGFpbmVyQWxsb2NhdGlvbkRhdGEoc2l6ZV90IHN0YWNr
U2hvdFNpemUsIHNpemVfdCBpblNpemUsIHNpemVfdCBpbkNhcGFjaXR5KQorICAgICAgICA6IGFs
bG9jYXRpb25TdGFjayhzdGFja1Nob3RTaXplKQorICAgICAgICAsIHNpemUoaW5TaXplKQorICAg
ICAgICAsIGNhcGFjaXR5KGluQ2FwYWNpdHkpCisgICAgeworICAgIAorICAgIH0KKyAgICBTdGFj
a1Nob3QgYWxsb2NhdGlvblN0YWNrOworICAgIHNpemVfdCBzaXplOworICAgIHNpemVfdCBjYXBh
Y2l0eTsKK307CisKK3N0cnVjdCBDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OkNvbnRhaW5lckNh
cGFjaXR5VHJhY2tlckltcGwgeworICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxUcmFja2VkSUQsIHN0
ZDo6dW5pcXVlX3B0cjxDb250YWluZXJBbGxvY2F0aW9uRGF0YT4+IG1fdHJhY2tlZElEVG9Db250
YWluZXJEYXRhOworfTsKKworLy8gVG8gcHJldmVudCBwZXItdGhyZWFkIHJlLWVudHJhbmN5IHdl
IHRha2UgYSBwb2ludGVyIHRvIGFuIG9iamVjdCBvbiB0aGUgc3RhY2ssIGluc2lkZSBtX211dGV4
IGxvY2sgc2NvcGUuCitjbGFzcyBBdm9pZFJlY29yZGluZ1Njb3BlIHsKK3B1YmxpYzoKKyAgICBB
dm9pZFJlY29yZGluZ1Njb3BlKENvbnRhaW5lckNhcGFjaXR5VHJhY2tlciYgdHJhY2tlciwgYm9v
bCogc3RhY2tPYmplY3QpCisgICAgICAgIDogbV90cmFja2VyKHRyYWNrZXIpCisgICAgeworICAg
ICAgICBtX3RyYWNrZXIubV9hdm9pZFJlZW50cmFuY3kgPSBzdGFja09iamVjdDsKKyAgICB9CisK
KyAgICB+QXZvaWRSZWNvcmRpbmdTY29wZSgpCisgICAgeworICAgICAgICBtX3RyYWNrZXIubV9h
dm9pZFJlZW50cmFuY3kgPSBudWxscHRyOworICAgIH0KK3ByaXZhdGU6CisgICAgQ29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyJiBtX3RyYWNrZXI7Cit9OworCitDb250YWluZXJDYXBhY2l0eVRyYWNr
ZXI6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlcihzaXplX3QgYWdncmVnYXRpb25TdGFja0RlcHRo
KQorICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyQ2FwYWNpdHlUcmFja2Vy
SW1wbD4oKSkKKyAgICAsIG1fYWdncmVnYXRpb25TdGFja0RlcHRoKGFnZ3JlZ2F0aW9uU3RhY2tE
ZXB0aCkKK3sKK30KKworVHJhY2tlZElEIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlcjo6cmVjb3Jk
QWxsb2NhdGlvbihzaXplX3Qgc2l6ZSwgc2l6ZV90IGNhcGFjaXR5KQoreworICAgIHN0ZDo6bG9j
a19ndWFyZDxzdGQ6OnJlY3Vyc2l2ZV9tdXRleD4gbG9ja0hvbGRlcihtX211dGV4KTsKKworICAg
IGlmIChtX2F2b2lkUmVlbnRyYW5jeSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBib29sIGF2
b2lkUmVlbnRyYW5jeSA9IHRydWU7CisgICAgQXZvaWRSZWNvcmRpbmdTY29wZSBzY29wZSgqdGhp
cywgJmF2b2lkUmVlbnRyYW5jeSk7CisKKyAgICBUcmFja2VkSUQgb2JqZWN0SUQgPSArK21fbmV4
dElEOworCisgICAgYXV0byBhbGxvY2F0aW9uRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFp
bmVyQWxsb2NhdGlvbkRhdGE+KG1fYWdncmVnYXRpb25TdGFja0RlcHRoLCBzaXplLCBjYXBhY2l0
eSk7CisgICAgYXV0byBpbnNlcnRSZXN1bHQgPSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWlu
ZXJEYXRhLmluc2VydChzdGQ6Om1ha2VfcGFpcihvYmplY3RJRCwgV1RGTW92ZShhbGxvY2F0aW9u
RGF0YSkpKTsKKyAgICBpZiAoIWluc2VydFJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCJDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29yZEFsbG9jYXRpb24gc2F3IG9i
amVjdCAldSBmb3IgdGhlIHNlY29uZCB0aW1lIiwgb2JqZWN0SUQpOworICAgICAgICBXVEZMb2dB
bHdheXMoIldhcyBwcmV2aW91c2x5IGFsbG9jYXRlZCBhdDoiKTsKKyAgICAgICAgYXV0byYgY2Fs
bFNpdGVEYXRhID0gKmluc2VydFJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgICAgICBjb25zdCBz
aXplX3QgZnJhbWVzVG9Ta2lwID0gMDsKKyAgICAgICAgV1RGUHJpbnRCYWNrdHJhY2UoY2FsbFNp
dGVEYXRhLmFsbG9jYXRpb25TdGFjay5hcnJheSgpICsgZnJhbWVzVG9Ta2lwLCBjYWxsU2l0ZURh
dGEuYWxsb2NhdGlvblN0YWNrLnNpemUoKSAtIGZyYW1lc1RvU2tpcCk7CisgICAgfQorCisgICAg
cmV0dXJuIG9iamVjdElEOworfQorCit2b2lkIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlcjo6cmVj
b3JkU2l6ZUFuZENhcGFjaXR5KFRyYWNrZWRJRCBvYmplY3RJRCwgc2l6ZV90IHNpemUsIHNpemVf
dCBjYXBhY2l0eSkKK3sKKyAgICBBU1NFUlQoc2l6ZSA8PSBjYXBhY2l0eSk7CisKKyAgICBpZiAo
IW9iamVjdElEKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjpy
ZWN1cnNpdmVfbXV0ZXg+IGxvY2tIb2xkZXIobV9tdXRleCk7CisKKyAgICBpZiAobV9hdm9pZFJl
ZW50cmFuY3kpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgYXZvaWRSZWVudHJhbmN5ID0g
dHJ1ZTsKKyAgICBBdm9pZFJlY29yZGluZ1Njb3BlIHNjb3BlKCp0aGlzLCAmYXZvaWRSZWVudHJh
bmN5KTsKKworICAgIGF1dG8gaXQgPSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJEYXRh
LmZpbmQob2JqZWN0SUQpOworICAgIGlmIChpdCAhPSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250
YWluZXJEYXRhLmVuZCgpKSB7CisgICAgICAgIGl0LT5zZWNvbmQtPnNpemUgPSBzaXplOworICAg
ICAgICBpdC0+c2Vjb25kLT5jYXBhY2l0eSA9IGNhcGFjaXR5OworICAgIH0gZWxzZQorICAgICAg
ICBXVEZMb2dBbHdheXMoIkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlciAlcCByZWNvcmRTaXplQW5k
Q2FwYWNpdHkgZmFpbGVkIHRvIGZpbmQgb2JqZWN0ICV1IiwgdGhpcywgb2JqZWN0SUQpOworfQor
Cit2b2lkIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlcjo6cmVjb3JkRnJlZShUcmFja2VkSUQgb2Jq
ZWN0SUQpCit7CisgICAgaWYgKCFvYmplY3RJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3Rk
Ojpsb2NrX2d1YXJkPHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1fbXV0ZXgpOwor
CisgICAgaWYgKG1fYXZvaWRSZWVudHJhbmN5KQorICAgICAgICByZXR1cm47CisKKyAgICBib29s
IGF2b2lkUmVlbnRyYW5jeSA9IHRydWU7CisgICAgQXZvaWRSZWNvcmRpbmdTY29wZSBzY29wZSgq
dGhpcywgJmF2b2lkUmVlbnRyYW5jeSk7CisKKyAgICBhdXRvIHJlbW92ZWRDb3VudCA9IG1faW1w
bC0+bV90cmFja2VkSURUb0NvbnRhaW5lckRhdGEuZXJhc2Uob2JqZWN0SUQpOworICAgIGlmICgh
cmVtb3ZlZENvdW50KQorICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRhaW5lckNhcGFjaXR5VHJh
Y2tlcjo6cmVjb3JkRnJlZSBnb3QgaWQgJXUgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIGVudHJ5Iiwg
b2JqZWN0SUQpOworfQorCitzdGQ6OnZlY3RvcjxBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhPiBDb250
YWluZXJDYXBhY2l0eVRyYWNrZXI6OmFnZ3JlZ2F0ZUJ5Q2FsbFNpdGUoY29uc3QgV1RGOjpGdW5j
dGlvbjx2b2lkKFRyYWNrZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYpPiYgcGVyT2JqZWN0
Q2FsbGJhY2spCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6cmVjdXJzaXZlX211dGV4PiBs
b2NrSG9sZGVyKG1fbXV0ZXgpOworCisgICAgYm9vbCBhdm9pZFJlZW50cmFuY3kgPSB0cnVlOwor
ICAgIEF2b2lkUmVjb3JkaW5nU2NvcGUgc2NvcGUoKnRoaXMsICZhdm9pZFJlZW50cmFuY3kpOwor
CisgICAgdHlwZWRlZiB1bnNpZ25lZCBTdGFja1Nob3RIYXNoOworICAgIHN0ZDo6dW5vcmRlcmVk
X21hcDxTdGFja1Nob3RIYXNoLCBzdGQ6OnVuaXF1ZV9wdHI8QWxsb2NhdGlvbkNhbGxTaXRlRGF0
YT4+IGNhbGxTaXRlVG9BbGxvY2F0aW9uQWdncmVnYXRlOworCisgICAgZm9yIChjb25zdCBhdXRv
JiBpdCA6IG1faW1wbC0+bV90cmFja2VkSURUb0NvbnRhaW5lckRhdGEpIHsKKyAgICAgICAgY29u
c3QgQ29udGFpbmVyQWxsb2NhdGlvbkRhdGEmIGFsbG9jYXRpb25EYXRhID0gKml0LnNlY29uZDsK
KworICAgICAgICBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKiBjYWxsU2l0ZURhdGE7CisKKyAgICAg
ICAgYXV0byBmaW5kSXQgPSBjYWxsU2l0ZVRvQWxsb2NhdGlvbkFnZ3JlZ2F0ZS5maW5kKGFsbG9j
YXRpb25EYXRhLmFsbG9jYXRpb25TdGFjay5oYXNoKCkpOworICAgICAgICBpZiAoZmluZEl0ID09
IGNhbGxTaXRlVG9BbGxvY2F0aW9uQWdncmVnYXRlLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRv
IGluc2VydEl0ID0gY2FsbFNpdGVUb0FsbG9jYXRpb25BZ2dyZWdhdGUuaW5zZXJ0KHsgYWxsb2Nh
dGlvbkRhdGEuYWxsb2NhdGlvblN0YWNrLmhhc2goKSwgc3RkOjptYWtlX3VuaXF1ZTxBbGxvY2F0
aW9uQ2FsbFNpdGVEYXRhPihhbGxvY2F0aW9uRGF0YS5hbGxvY2F0aW9uU3RhY2spIH0pOworICAg
ICAgICAgICAgY2FsbFNpdGVEYXRhID0gaW5zZXJ0SXQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBjYWxsU2l0ZURhdGEgPSBmaW5kSXQtPnNlY29uZC5n
ZXQoKTsKKworICAgICAgICBjYWxsU2l0ZURhdGEtPmNvdW50ICs9IDE7CisgICAgICAgIGNhbGxT
aXRlRGF0YS0+dXNlZFNpemUgKz0gYWxsb2NhdGlvbkRhdGEuc2l6ZTsKKyAgICAgICAgY2FsbFNp
dGVEYXRhLT5jYXBhY2l0eSArPSBhbGxvY2F0aW9uRGF0YS5jYXBhY2l0eTsKKworICAgICAgICBw
ZXJPYmplY3RDYWxsYmFjayhpdC5maXJzdCwgKmNhbGxTaXRlRGF0YSk7CisgICAgfQorCisgICAg
c3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4gcmVzdWx0OworICAgIGZvciAoYXV0
byYgaXQgOiBjYWxsU2l0ZVRvQWxsb2NhdGlvbkFnZ3JlZ2F0ZSkKKyAgICAgICAgcmVzdWx0LnB1
c2hfYmFjayhBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKCppdC5zZWNvbmQpKTsKKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWlu
ZXJDYXBhY2l0eVRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTRiNjQ0NTc4YWZhM2M2YjgzZmE3OGMy
ZjkxOWU4YTVkNDViMzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ29udGFp
bmVyQ2FwYWNpdHlUcmFja2VyLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bWVt
b3J5PgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
Y2xhc3MgU3RhY2tTaG90OworCitzdHJ1Y3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSB7CisgICAg
QWxsb2NhdGlvbkNhbGxTaXRlRGF0YShzaXplX3Qgc3RhY2tEZXB0aCA9IDAsIHNpemVfdCA9IDAs
IHNpemVfdCBjYXBhY2l0eSA9IDApOworICAgIEFsbG9jYXRpb25DYWxsU2l0ZURhdGEoY29uc3Qg
U3RhY2tTaG90Jik7CisgICAgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YShjb25zdCBBbGxvY2F0aW9u
Q2FsbFNpdGVEYXRhJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5BbGxvY2F0aW9uQ2FsbFNp
dGVEYXRhKCk7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgU3RhY2tTaG90JiBzdGFj
aygpIGNvbnN0OworCisgICAgc2l6ZV90IGNvdW50IHsgMCB9OworICAgIHNpemVfdCB1c2VkU2l6
ZSB7IDAgfTsKKyAgICBzaXplX3QgY2FwYWNpdHkgeyAwIH07CisKK3ByaXZhdGU6CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFN0YWNrU2hvdD4gbV9zdGFjazsgLy8gTmVlZGVkIHRvIGhpZGUgU3RhY2tT
aG90IHRvIGF2b2lkIGNpcmN1bGFyIGluY2x1ZGVzLgorfTsKKwordHlwZWRlZiB1bnNpZ25lZCBU
cmFja2VkSUQ7CisKK2NsYXNzIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyKTsKKyAgICBmcmllbmQgY2xh
c3MgQXZvaWRSZWNvcmRpbmdTY29wZTsKK3B1YmxpYzoKKyAgICAvLyBDYWxsIHNpdGVzIGFyZSBh
Z2dyZWdhdGVkIGJ5IGNhbGwgc3RhY2ssIHVzaW5nIGFnZ3JlZ2F0aW9uU3RhY2tEZXB0aCBmcmFt
ZXMuCisgICAgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyKHNpemVfdCBhZ2dyZWdhdGlvblN0YWNr
RGVwdGggPSAxNSk7CisgICAgCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRyYWNrZWRJRCByZWNv
cmRBbGxvY2F0aW9uKHNpemVfdCwgc2l6ZV90IGNhcGFjaXR5KTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCByZWNvcmRTaXplQW5kQ2FwYWNpdHkoVHJhY2tlZElELCBzaXplX3QsIHNpemVf
dCBjYXBhY2l0eSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVjb3JkRnJlZShUcmFj
a2VkSUQpOworICAgIAorICAgIC8vIFJldHVybiBhIHZlY3RvciBvZiBwZXIgY2FsbHNpdGUgZGF0
YTsgc2l6ZSBhbmQgY2FwYWNpdHkgYXJlIHN1bW1lZCBmb3IgYWxsIGFsbG9jYXRpb25zIHdpdGgg
YSBnaXZlbiBjYWxsIHNpdGUuCisgICAgLy8gVGhlIHBhc3NlZCBmdW5jdGlvbiBhbGxvd3MgdGhl
IGNhbGxlciB0byBkbyBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgcGVyIGFsbG9jYXRpb24uCisgICAg
c3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4gYWdncmVnYXRlQnlDYWxsU2l0ZShj
b25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoVHJhY2tlZElELCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRh
Jik+Jik7CisKK3ByaXZhdGU6CisgICAgLy8gVXNlIGEgcGltcGwgdG8gYXZvaWQgY2lyY3VsYXIg
aW5jbHVkZXMgYmV0d2VlbiBvdXIgaGVhZGVyIGFuZCB0aGUgY29udGFpbmVyIGNsYXNzIGhlYWRl
cnMuCisgICAgc3RydWN0IENvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGw7CisgICAgc3RkOjp1
bmlxdWVfcHRyPENvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGw+IG1faW1wbDsKKyAgICBzdGQ6
OnJlY3Vyc2l2ZV9tdXRleCBtX211dGV4OworICAgIFRyYWNrZWRJRCBtX25leHRJRCB7IDAgfTsK
KyAgICBjb25zdCBzaXplX3QgbV9hZ2dyZWdhdGlvblN0YWNrRGVwdGg7CisgICAgYm9vbCogbV9h
dm9pZFJlZW50cmFuY3kgeyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwor
dXNpbmcgV1RGOjpDb250YWluZXJDYXBhY2l0eVRyYWNrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuY3BwIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmNwcAppbmRl
eCAwZWI2MDM2Yzg2M2ZiMTEzZmVjODkxMjU2ZTUwNzU5NDQxMTRhYmUxLi5lNTI0MWViYTljNGUz
NmY5Mjc0N2M5ZjUzMDAxNTQ1OTE5NjI2M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9I
YXNoVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5jcHAKQEAgLTIzLDYg
KzIzLDE3IEBACiAjaW5jbHVkZSAiRGF0YUxvZy5oIgogI2luY2x1ZGUgPG11dGV4PgogCisjaWYg
VFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisjaW5jbHVkZSA8d3RmL0NvbnRhaW5lckNhcGFjaXR5
VHJhY2tlci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisjaW5jbHVkZSA8bm90aWZ5Lmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrU2hvdC5o
PgorI2VuZGlmCisKKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogI2lmIERVTVBfSEFTSFRB
QkxFX1NUQVRTCkBAIC02Myw2ICs3NCw2OCBAQCB2b2lkIEhhc2hUYWJsZVN0YXRzOjpkdW1wU3Rh
dHMoKQogICAgIGRhdGFMb2dGKCIlZCByZWluc2VydHNcbiIsIG51bVJlaW5zZXJ0cy5sb2FkKCkp
OwogfQogCisjZW5kaWYgLy8gRFVNUF9IQVNIVEFCTEVfU1RBVFMKKworI2lmIFRSQUNLX0hBU0hU
QUJMRV9DQVBBQ0lUWQorCisjaWYgUExBVEZPUk0oQ09DT0EpCitzdGF0aWMgdm9pZCBkdW1wV2Fz
dGVkSGFzaFRhYmxlQ2FwYWNpdHkoKQoreworICAgIGF1dG8gY2FsbFNpdGVEYXRhID0gaGFzaFRh
YmxlVHJhY2tlcigpLmFnZ3JlZ2F0ZUJ5Q2FsbFNpdGUoW10gKFRyYWNrZWRJRCwgQWxsb2NhdGlv
bkNhbGxTaXRlRGF0YSYpIHsKKyAgICB9KTsKKworICAgIC8vIE1ha2UgYSB2ZWN0b3Igb2YgcmF3
IHBvaW50ZXJzIHNvIHdlIGNhbiBzb3J0IHRoZW0uCisgICAgc3RkOjp2ZWN0b3I8QWxsb2NhdGlv
bkNhbGxTaXRlRGF0YSo+IGNhbGxTaXRlUHRyczsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNpdGVE
YXRhIDogY2FsbFNpdGVEYXRhKSB7CisgICAgICAgIGlmICghc2l0ZURhdGEuY2FwYWNpdHkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY2FsbFNpdGVQdHJzLnB1c2hfYmFjayhjb25z
dF9jYXN0PEFsbG9jYXRpb25DYWxsU2l0ZURhdGEqPigmc2l0ZURhdGEpKTsKKyAgICB9CisKKyAg
ICAvLyBTb3J0IGJ5IHJldmVyc2Ugd2FzdGFnZS4KKyAgICBzdGQ6OnNvcnQoY2FsbFNpdGVQdHJz
LmJlZ2luKCksIGNhbGxTaXRlUHRycy5lbmQoKSwgW10gKGNvbnN0IEFsbG9jYXRpb25DYWxsU2l0
ZURhdGEqIGEsIGNvbnN0IEFsbG9jYXRpb25DYWxsU2l0ZURhdGEqIGIpIHsKKyAgICAgICAgc2l6
ZV90IGFXYXN0YWdlID0gYS0+Y2FwYWNpdHkgLSBhLT51c2VkU2l6ZTsKKyAgICAgICAgc2l6ZV90
IGJXYXN0YWdlID0gYi0+Y2FwYWNpdHkgLSBiLT51c2VkU2l6ZTsKKyAgICAgICAgcmV0dXJuIGFX
YXN0YWdlID4gYldhc3RhZ2U7CisgICAgfSk7CisKKyAgICBjb25zdCBzaXplX3QgbWF4Q291bnQg
PSAxMDA7CisKKyAgICBXVEZMb2dBbHdheXMoIiVsdSBjYWxsIHNpdGVzIGNyZWF0ZWQgSGFzaFRh
YmxlcyAodmlhIEhhc2hNYXAgb3IgSGFzaFNldCkuIFNob3dpbmcgJWx1IHNpdGVzIHdpdGggbW9z
dCB3YXN0YWdlOlxuIiwgY2FsbFNpdGVEYXRhLnNpemUoKSwgbWF4Q291bnQpOworCisgICAgc2l6
ZV90IGNvdW50ID0gMDsKKyAgICBmb3IgKGF1dG8gc2l0ZURhdGEgOiBjYWxsU2l0ZVB0cnMpIHsK
KyAgICAgICAgaWYgKGNvdW50KysgPT0gbWF4Q291bnQpCisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBXVEZMb2dBbHdheXMoIldhc3RlZCBjYXBhY2l0eTogJWx1IGJ5dGVzICh1c2VkICVs
dSBvZiAlbHUgYnl0ZXMsIHV0aWxpemF0aW9uOiAlLjJmJSUpIC0gJWx1IGFsbG9jYXRpb25zXG4i
LAorICAgICAgICAgICAgc2l0ZURhdGEtPmNhcGFjaXR5IC0gc2l0ZURhdGEtPnVzZWRTaXplLAor
ICAgICAgICAgICAgc2l0ZURhdGEtPnVzZWRTaXplLCBzaXRlRGF0YS0+Y2FwYWNpdHksIDEwMC4w
ICogc2l0ZURhdGEtPnVzZWRTaXplIC8gc2l0ZURhdGEtPmNhcGFjaXR5LAorICAgICAgICAgICAg
c2l0ZURhdGEtPmNvdW50KTsKKyAgICAgICAgY29uc3Qgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IDc7
CisgICAgICAgIFdURlByaW50QmFja3RyYWNlKHNpdGVEYXRhLT5zdGFjaygpLmFycmF5KCkgKyBm
cmFtZXNUb1NraXAsIHNpdGVEYXRhLT5zdGFjaygpLnNpemUoKSAtIGZyYW1lc1RvU2tpcCk7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiXG4iKTsKKyAgICB9Cit9CisjZW5kaWYKKworQ29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyJiBoYXNoVGFibGVUcmFja2VyKCkKK3sKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7CisgICAgc3RkOjpj
YWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFtdIHsKKyAgICAgICAgaW50IHRva2VuOworICAgICAg
ICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goImNvbS5hcHBsZS5XZWJLaXQuZHVtcEhhc2hUYWJs
ZUNhcGFjaXR5IiwgJnRva2VuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKGludCkgewor
ICAgICAgICAgICAgZHVtcFdhc3RlZEhhc2hUYWJsZUNhcGFjaXR5KCk7CisgICAgICAgIH0pOwor
ICAgIH0pOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpDb250YWlu
ZXJDYXBhY2l0eVRyYWNrZXI+IHRyYWNrZXI7CisgICAgcmV0dXJuIHRyYWNrZXI7Cit9CisKKyNl
bmRpZiAvLyBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKwogfSAvLyBuYW1lc3BhY2UgV1RGCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dURi93dGYv
SGFzaFRhYmxlLmgKaW5kZXggODA5YWRiZjIzN2NlZGE0MWYyMzI2NWJkYThkMDZjOWM5ODNjOGI1
Zi4uMmRkNjkzZmQ2OGU0NWRkZjgzNmU0NmEzN2E5N2I1YjE0YWY3ZGM3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxl
LmgKQEAgLTQyLDggKzQyLDIwIEBACiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNlbmRpZgog
CisvLyBFbmFibGUgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZIHRvIHRyYWNrIGNhbGwgc2l0ZXMg
dGhhdCB3YXN0ZSBIYXNoVGFibGUgY2FwYWNpdHkuIE9uIENvY29hIHBsYXRmb3JtcywgdGhlIGRh
dGEgY2FuIGJlIGR1bXBlZAorLy8gYnkgcnVubmluZyAibm90aWZ5dXRpbCAtcCBjb20uYXBwbGUu
V2ViS2l0LmR1bXBIYXNoVGFibGVDYXBhY2l0eSIuCisjZGVmaW5lIFRSQUNLX0hBU0hUQUJMRV9D
QVBBQ0lUWSAwCisKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyNpbmNsdWRlIDx3dGYv
Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAK
KyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKK1dURl9FWFBPUlRfUFJJVkFURSBDb250YWlu
ZXJDYXBhY2l0eVRyYWNrZXImIGhhc2hUYWJsZVRyYWNrZXIoKTsKKyNlbmRpZgorCiAvLyBFbmFi
bGVzIGludGVybmFsIFdURiBjb25zaXN0ZW5jeSBjaGVja3MgdGhhdCBhcmUgaW52b2tlZCBhdXRv
bWF0aWNhbGx5LiBOb24tV1RGIGNhbGxlcnMgY2FuIGNhbGwgY2hlY2tUYWJsZUNvbnNpc3RlbmN5
KCkgZXZlbiBpZiBpbnRlcm5hbCBjaGVja3MgYXJlIGRpc2FibGVkLgogI2RlZmluZSBDSEVDS19I
QVNIVEFCTEVfQ09OU0lTVEVOQ1kgMAogCkBAIC0zNjIsNiArMzc0LDExIEBAIG5hbWVzcGFjZSBX
VEYgewogI2lmIENIRUNLX0hBU0hUQUJMRV9VU0VfQUZURVJfREVTVFJVQ1RJT04KICAgICAgICAg
ICAgIG1fdGFibGUgPSAoVmFsdWVUeXBlKikodWludHB0cl90KTB4YmJhZGJlZWY7CiAjZW5kaWYK
KworI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorICAgICAgICAgICAgaGFzaFRhYmxlVHJh
Y2tlcigpLnJlY29yZEZyZWUobV90cmFja2VkSUQpOworICAgICAgICAgICAgbV90cmFja2VkSUQg
PSAwOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBIYXNoVGFibGUoY29uc3QgSGFzaFRh
YmxlJik7CkBAIC0zODMsNiArNDAwLDkgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHVuc2ln
bmVkIGNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV90YWJsZVNpemU7IH0KICAgICAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fa2V5Q291bnQ7IH0KIAorICAgICAgICBzaXpl
X3Qgc2l6ZUluQnl0ZXMoKSBjb25zdDsKKyAgICAgICAgc2l6ZV90IGNhcGFjaXR5SW5CeXRlcygp
IGNvbnN0OworCiAgICAgICAgIEFkZFJlc3VsdCBhZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkg
eyByZXR1cm4gYWRkPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2
YWx1ZSksIHZhbHVlKTsgfQogICAgICAgICBBZGRSZXN1bHQgYWRkKFZhbHVlVHlwZSYmIHZhbHVl
KSB7IHJldHVybiBhZGQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0
KHZhbHVlKSwgV1RGTW92ZSh2YWx1ZSkpOyB9CiAKQEAgLTQ4OSw2ICs1MDksMTAgQEAgbmFtZXNw
YWNlIFdURiB7CiAgICAgICAgIHVuc2lnbmVkIG1fa2V5Q291bnQ7CiAgICAgICAgIHVuc2lnbmVk
IG1fZGVsZXRlZENvdW50OwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAg
IFRyYWNrZWRJRCBtX3RyYWNrZWRJRCB7IDAgfTsKKyNlbmRpZgorCiAjaWYgQ0hFQ0tfSEFTSFRB
QkxFX0lURVJBVE9SUwogICAgIHB1YmxpYzoKICAgICAgICAgLy8gQWxsIGFjY2VzcyB0byBtX2l0
ZXJhdG9ycyBzaG91bGQgYmUgZ3VhcmRlZCB3aXRoIG1fbXV0ZXguCkBAIC01NTYsNiArNTgwLDkg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICwgbV9zdGF0cyhzdGQ6Om1ha2VfdW5pcXVlPFN0
YXRzPigpKQogI2VuZGlmCiAgICAgeworI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorICAg
ICAgICBtX3RyYWNrZWRJRCA9IGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRBbGxvY2F0aW9uKDAs
IDApOworI2VuZGlmCiAgICAgfQogCiAgICAgaW5saW5lIHVuc2lnbmVkIGRvdWJsZUhhc2godW5z
aWduZWQga2V5KQpAQCAtOTM4LDcgKzk2NSwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAg
ICAgIGVudHJ5ID0gZXhwYW5kKGVudHJ5KTsKIAogICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVD
b25zaXN0ZW5jeSgpOwotICAgICAgICAKKworI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQor
ICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tl
ZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKKwogICAgICAg
ICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIHRydWUpOwog
ICAgIH0KIApAQCAtOTc3LDYgKzEwMDgsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICAgICAg
aW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9D
QVBBQ0lUWQorICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5
KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYK
KwogICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSks
IHRydWUpOwogICAgIH0KIApAQCAtOTk3LDYgKzEwMzIsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgICAgIG5ld0VudHJ5LT5+VmFsdWUoKTsKICAgICAgICAgbmV3IChOb3ROdWxsLCBuZXdFbnRy
eSkgVmFsdWVUeXBlKFdURk1vdmUoZW50cnkpKTsKIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBB
Q0lUWQorICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1f
dHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKKwog
ICAgICAgICByZXR1cm4gbmV3RW50cnk7CiAgICAgfQogCkBAIC0xMDcwLDYgKzExMDksMTAgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGlmIChzaG91bGRTaHJpbmsoKSkKICAgICAgICAgICAg
IHNocmluaygpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hU
YWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5
dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIGludGVybmFsQ2hl
Y2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgfQogCkBAIC0xMTMyLDcgKzExNzUsMTEgQEAgbmFt
ZXNwYWNlIFdURiB7CiAKICAgICAgICAgaWYgKHNob3VsZFNocmluaygpKQogICAgICAgICAgICAg
c2hyaW5rKCk7Ci0gICAgICAgIAorCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAg
ICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQs
IHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIGlu
dGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybiByZW1vdmVkQnVj
a2V0Q291bnQ7CiAgICAgfQpAQCAtMTIyMSw2ICsxMjY4LDEwIEBAIG5hbWVzcGFjZSBXVEYgewog
CiAgICAgICAgIGZhc3RGcmVlKG9sZFRhYmxlKTsKIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBB
Q0lUWQorICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1f
dHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKKwog
ICAgICAgICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeSgpOwogICAgICAgICByZXR1cm4g
bmV3RW50cnk7CiAgICAgfQpAQCAtMTIzOCw2ICsxMjg5LDEwIEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgICAgICBtX3RhYmxlU2l6ZU1hc2sgPSAwOwogICAgICAgICBtX2tleUNvdW50ID0gMDsKICAg
ICAgICAgbV9kZWxldGVkQ291bnQgPSAwOworCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZ
CisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFj
a2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4
dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFt
ZSBLZXlUcmFpdHM+CkBAIC0xMjU1LDYgKzEzMTAsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
ICAgICwgbV9zdGF0cyhzdGQ6Om1ha2VfdW5pcXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykpCiAj
ZW5kaWYKICAgICB7CisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIG1fdHJh
Y2tlZElEID0gaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZEFsbG9jYXRpb24oc2l6ZUluQnl0ZXMo
KSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCisKICAgICAgICAgdW5zaWduZWQgb3RoZXJL
ZXlDb3VudCA9IG90aGVyLnNpemUoKTsKICAgICAgICAgaWYgKCFvdGhlcktleUNvdW50KQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTI3Niw2ICsxMzM1LDEwIEBAIG5hbWVzcGFjZSBXVEYgewog
CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3RoZXJWYWx1ZSA6IG90aGVyKQogICAgICAgICAg
ICAgYWRkVW5pcXVlRm9ySW5pdGlhbGl6YXRpb248SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0
cmFjdG9yOjpleHRyYWN0KG90aGVyVmFsdWUpLCBvdGhlclZhbHVlKTsKKworI2lmIFRSQUNLX0hB
U0hUQUJMRV9DQVBBQ0lUWQorICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFu
ZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7
CisjZW5kaWYKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1l
IFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgpAQCAtMTI5MCw2ICsxMzUzLDE0IEBAIG5hbWVz
cGFjZSBXVEYgewogICAgICAgICBzdGQ6OnN3YXAobV9rZXlDb3VudCwgb3RoZXIubV9rZXlDb3Vu
dCk7CiAgICAgICAgIHN0ZDo6c3dhcChtX2RlbGV0ZWRDb3VudCwgb3RoZXIubV9kZWxldGVkQ291
bnQpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcCht
X3RyYWNrZWRJRCwgb3RoZXIubV90cmFja2VkSUQpOworCisgICAgICAgIC8vIE5vdCBzdXJlIGlm
IHRoaXMgaXMgbmVjZXNzYXJ5LiBOb3RoaW5nIHdpbGwgaGF2ZSBjaGFuZ2VkLgorICAgICAgICBo
YXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXpl
SW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIo
KS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkob3RoZXIubV90cmFja2VkSUQsIG90aGVyLnNpemVJbkJ5
dGVzKCksIG90aGVyLmNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAjaWYgRFVNUF9IQVNI
VEFCTEVfU1RBVFNfUEVSX1RBQkxFCiAgICAgICAgIG1fc3RhdHMuc3dhcChvdGhlci5tX3N0YXRz
KTsKICNlbmRpZgpAQCAtMTMxOCw2ICsxMzg5LDEwIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICBtX2tleUNvdW50ID0gb3RoZXIubV9rZXlDb3VudDsKICAgICAgICAgbV9kZWxldGVkQ291bnQg
PSBvdGhlci5tX2RlbGV0ZWRDb3VudDsKIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQor
ICAgICAgICBzdGQ6OnN3YXAobV90cmFja2VkSUQsIG90aGVyLm1fdHJhY2tlZElEKTsKKyNlbmRp
ZgorCiAgICAgICAgIG90aGVyLm1fdGFibGUgPSBudWxscHRyOwogICAgICAgICBvdGhlci5tX3Rh
YmxlU2l6ZSA9IDA7CiAgICAgICAgIG90aGVyLm1fdGFibGVTaXplTWFzayA9IDA7CkBAIC0xMzI4
LDYgKzE0MDMsMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIG1fc3RhdHMgPSBXVEZNb3Zl
KG90aGVyLm1fc3RhdHMpOwogICAgICAgICBvdGhlci5tX3N0YXRzID0gbnVsbHB0cjsKICNlbmRp
ZgorCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hUYWJsZVRyYWNr
ZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNh
cGFjaXR5SW5CeXRlcygpKTsKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVB
bmRDYXBhY2l0eShvdGhlci5tX3RyYWNrZWRJRCwgb3RoZXIuc2l6ZUluQnl0ZXMoKSwgb3RoZXIu
Y2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KQEAgLTEzMzgs
NiArMTQxOCwxOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAg
IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHM+CisgICAgc2l6ZV90IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6c2l6ZUluQnl0ZXMoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIHNpemUoKSAqIHNpemVvZihWYWx1ZVR5cGUpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHM+CisgICAgc2l6ZV90IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y2FwYWNpdHlJbkJ5dGVzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjYXBhY2l0eSgpICogc2l6ZW9mKFZhbHVlVHlw
ZSk7CisgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1NpemVMaW1pdHMuY3BwIGIvU291cmNlL1dURi93dGYvU2l6ZUxp
bWl0cy5jcHAKaW5kZXggYjBhZDE0MDQ0ZjNiODQxMTY4NmQzYTFhYThlYWZiNGRhYjc3Nzg1Yy4u
ZmJlZDY1ZmUwMTAyMmM4ODBlN2U2NjkwMDJhYmQ4ZmUwYWY5ZDEyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvU2l6ZUxpbWl0
cy5jcHAKQEAgLTgxLDkgKzgxLDEyIEBAIHB1YmxpYzoKICAgICB0eXBlbmFtZSBzdGQ6OmFsaWdu
ZWRfc3RvcmFnZTxzaXplb2YoVCksIHN0ZDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZT46OnR5cGUg
aW5saW5lQnVmZmVyW2lubGluZUNhcGFjaXR5XTsKIH07CiAKKyNpZiAhVFJBQ0tfVkVDVE9SX0NB
UEFDSVRZCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihWZWN0b3I8aW50PikgPT0gc2l6ZW9mKFNhbWVT
aXplQXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNpdHk8aW50PiksICJWZWN0b3Igc2hvdWxkIHN0YXkg
c21hbGwhIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihWZWN0b3I8aW50LCAxPikgPT0gc2l6ZW9m
KFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNpdHk8aW50LCAxPiksICJWZWN0b3Igc2hv
dWxkIHN0YXkgc21hbGwhIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihWZWN0b3I8aW50LCAyPikg
PT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNpdHk8aW50LCAyPiksICJW
ZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihWZWN0b3I8
aW50LCAzPikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNpdHk8aW50
LCAzPiksICJWZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7CisjZW5kaWYKKwogI2VuZGlmCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuY3BwIGIvU291cmNlL1dURi93dGYv
VmVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDdlOTJhZmU1ZWY1NWUzYWE0ZWY0MDUyNTEyYWU1MTQy
NDU2MTk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmNwcApAQCAt
MCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlZlY3Rvci5oIgorCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisjaW5jbHVkZSA8d3RmL0Nv
bnRhaW5lckNhcGFjaXR5VHJhY2tlci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8bm90aWZ5Lmg+CisjaW5jbHVkZSA8
d3RmL1N0YWNrU2hvdC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgUExBVEZP
Uk0oQ09DT0EpCitzdGF0aWMgdm9pZCBkdW1wV2FzdGVkVmVjdG9yQ2FwYWNpdHkoKQoreworICAg
IGF1dG8gY2FsbFNpdGVEYXRhID0gdmVjdG9yVHJhY2tlcigpLmFnZ3JlZ2F0ZUJ5Q2FsbFNpdGUo
W10gKFRyYWNrZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYpIHsKKyAgICB9KTsKKworICAg
IC8vIE1ha2UgYSB2ZWN0b3Igb2YgcmF3IHBvaW50ZXJzIHNvIHdlIGNhbiBzb3J0IHRoZW0uCisg
ICAgc3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSo+IGNhbGxTaXRlUHRyczsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIHNpdGVEYXRhIDogY2FsbFNpdGVEYXRhKSB7CisgICAgICAgIGlm
ICghc2l0ZURhdGEuY2FwYWNpdHkgfHwgKHNpdGVEYXRhLmNhcGFjaXR5ID09IHNpdGVEYXRhLnVz
ZWRTaXplKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYWxsU2l0ZVB0cnMucHVz
aF9iYWNrKGNvbnN0X2Nhc3Q8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSo+KCZzaXRlRGF0YSkpOwor
ICAgIH0KKworICAgIC8vIFNvcnQgYnkgcmV2ZXJzZSB3YXN0YWdlLgorICAgIHN0ZDo6c29ydChj
YWxsU2l0ZVB0cnMuYmVnaW4oKSwgY2FsbFNpdGVQdHJzLmVuZCgpLCBbXSAoY29uc3QgQWxsb2Nh
dGlvbkNhbGxTaXRlRGF0YSogYSwgY29uc3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogYikgewor
ICAgICAgICBzaXplX3QgYVdhc3RhZ2UgPSBhLT5jYXBhY2l0eSAtIGEtPnVzZWRTaXplOworICAg
ICAgICBzaXplX3QgYldhc3RhZ2UgPSBiLT5jYXBhY2l0eSAtIGItPnVzZWRTaXplOworICAgICAg
ICByZXR1cm4gYVdhc3RhZ2UgPiBiV2FzdGFnZTsKKyAgICB9KTsKKworICAgIGNvbnN0IHNpemVf
dCBtYXhDb3VudCA9IDEwMDsKKworICAgIFdURkxvZ0Fsd2F5cygiJWx1IGNhbGwgc2l0ZXMgY3Jl
YXRlZCB2ZWN0b3JzLiBTaG93aW5nICVsdSBzaXRlcyB3aXRoIG1vc3Qgd2FzdGFnZTpcbiIsIGNh
bGxTaXRlRGF0YS5zaXplKCksIG1heENvdW50KTsKKworICAgIHNpemVfdCBjb3VudCA9IDA7Cisg
ICAgZm9yIChhdXRvIHNpdGVEYXRhIDogY2FsbFNpdGVQdHJzKSB7CisgICAgICAgIGlmIChjb3Vu
dCsrID09IG1heENvdW50KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCJXYXN0ZWQgY2FwYWNpdHk6ICVsdSBieXRlcyAodXNlZCAlbHUgb2YgJWx1IGJ5dGVzLCB1
dGlsaXphdGlvbjogJS4yZiUlKSAtICVsdSBhbGxvY2F0aW9uc1xuIiwKKyAgICAgICAgICAgIHNp
dGVEYXRhLT5jYXBhY2l0eSAtIHNpdGVEYXRhLT51c2VkU2l6ZSwKKyAgICAgICAgICAgIHNpdGVE
YXRhLT51c2VkU2l6ZSwgc2l0ZURhdGEtPmNhcGFjaXR5LCAxMDAuMCAqIHNpdGVEYXRhLT51c2Vk
U2l6ZSAvIHNpdGVEYXRhLT5jYXBhY2l0eSwKKyAgICAgICAgICAgIHNpdGVEYXRhLT5jb3VudCk7
CisgICAgICAgIGNvbnN0IHNpemVfdCBmcmFtZXNUb1NraXAgPSA3OworICAgICAgICBXVEZQcmlu
dEJhY2t0cmFjZShzaXRlRGF0YS0+c3RhY2soKS5hcnJheSgpICsgZnJhbWVzVG9Ta2lwLCBzaXRl
RGF0YS0+c3RhY2soKS5zaXplKCkgLSBmcmFtZXNUb1NraXApOworICAgICAgICBXVEZMb2dBbHdh
eXMoIlxuIik7CisgICAgfQorfQorI2VuZGlmCisKK0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlciYg
dmVjdG9yVHJhY2tlcigpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVP
bmNlLCBbXSB7CisgICAgICAgIGludCB0b2tlbjsKKyAgICAgICAgbm90aWZ5X3JlZ2lzdGVyX2Rp
c3BhdGNoKCJjb20uYXBwbGUuV2ViS2l0LmR1bXBWZWN0b3JDYXBhY2l0eSIsICZ0b2tlbiwgZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihpbnQpIHsKKyAgICAgICAgICAgIGR1bXBXYXN0ZWRW
ZWN0b3JDYXBhY2l0eSgpOworICAgICAgICB9KTsKKyAgICB9KTsKKyNlbmRpZgorCisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFdURjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyPiB0cmFja2Vy
OworICAgIHJldHVybiB0cmFja2VyOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlm
IC8vIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVj
dG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRleCBkMmJjZjVhMTJjNmQzYTI4ZDY3
YmNmMmUzYmY3YTUwZjY1MzI2YjFkLi4wNzk0NWU2NmIxOGJkN2U5OGE1ZTQ0MDQ4MzIzNDUyNzAy
NzUwYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9WZWN0b3IuaApAQCAtMzcsMTIgKzM3LDI0IEBACiAjaW5jbHVkZSA8d3RmL1ZhbHVl
Q2hlY2suaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yVHJhaXRzLmg+CiAKKy8vIEVuYWJsZSBUUkFD
S19WRUNUT1JfQ0FQQUNJVFkgdG8gdHJhY2sgY2FsbCBzaXRlcyB0aGF0IHdhc3RlIHZlY3RvciBj
YXBhY2l0eS4gT24gQ29jb2EgcGxhdGZvcm1zLCB0aGUgZGF0YSBjYW4gYmUgZHVtcGVkCisvLyBi
eSBydW5uaW5nICJub3RpZnl1dGlsIC1wIGNvbS5hcHBsZS5XZWJLaXQuZHVtcFZlY3RvckNhcGFj
aXR5Ii4KKyNkZWZpbmUgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZIDAKKworI2lmIFRSQUNLX1ZFQ1RP
Ul9DQVBBQ0lUWQorI2luY2x1ZGUgPHd0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaD4KKyNl
bmRpZgorCiAjaWYgQVNBTl9FTkFCTEVECiBleHRlcm4gIkMiIHZvaWQgX19zYW5pdGl6ZXJfYW5u
b3RhdGVfY29udGlndW91c19jb250YWluZXIoY29uc3Qgdm9pZCogYmVnaW4sIGNvbnN0IHZvaWQq
IGVuZCwgY29uc3Qgdm9pZCogb2xkX21pZCwgY29uc3Qgdm9pZCogbmV3X21pZCk7CiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdURiB7CiAKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKK1dURl9FWFBP
UlRfUFJJVkFURSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIHZlY3RvclRyYWNrZXIoKTsKKyNl
bmRpZgorICAgIAogdGVtcGxhdGUgPGJvb2wgbmVlZHNEZXN0cnVjdGlvbiwgdHlwZW5hbWUgVD4K
IHN0cnVjdCBWZWN0b3JEZXN0cnVjdG9yOwogCkBAIC0zMzksNiArMzUxLDE2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgcHRyZGlmZl90IGJ1ZmZlck1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihWZWN0b3JCdWZmZXJCYXNlLCBtX2J1ZmZlcik7IH0KICAgICBzaXplX3QgY2Fw
YWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2NhcGFjaXR5OyB9CiAKKyAgICBzaXplX3QgY2FwYWNp
dHlJbkJ5dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjYXBhY2l0eSgpICogc2l6
ZW9mKFQpOworICAgIH0KKworICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9zaXplICogc2l6ZW9mKFQpOworICAgIH0KKwogICAgIE1hbGxvY1B0
cjxUPiByZWxlYXNlQnVmZmVyKCkKICAgICB7CiAgICAgICAgIFQqIGJ1ZmZlciA9IG1fYnVmZmVy
OwpAQCAtMzUzLDYgKzM3NSw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX2NhcGFjaXR5KDAp
CiAgICAgICAgICwgbV9zaXplKDApCiAgICAgeworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQor
ICAgICAgICBtX3RyYWNrZWRJRCA9IHZlY3RvclRyYWNrZXIoKS5yZWNvcmRBbGxvY2F0aW9uKDAs
IDApOworI2VuZGlmCiAgICAgfQogCiAgICAgVmVjdG9yQnVmZmVyQmFzZShUKiBidWZmZXIsIHNp
emVfdCBjYXBhY2l0eSwgc2l6ZV90IHNpemUpCkBAIC0zNjAsMTYgKzM4NSwyNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgICwgbV9jYXBhY2l0eShjYXBhY2l0eSkKICAgICAgICAgLCBtX3NpemUoc2l6
ZSkKICAgICB7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIG1fdHJhY2tlZElE
ID0gdmVjdG9yVHJhY2tlcigpLnJlY29yZEFsbG9jYXRpb24oc2l6ZUluQnl0ZXMoKSwgY2FwYWNp
dHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgflZlY3RvckJ1ZmZlckJhc2UoKQog
ICAgIHsKICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gZmluZCBhIHdheSB0
byBBU1NFUlQgdGhhdCBtX2J1ZmZlciBoYXNuJ3QgbGVha2VkIGhlcmUuCisjaWYgVFJBQ0tfVkVD
VE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRGcmVlKG1fdHJhY2tl
ZElEKTsKKyAgICAgICAgbV90cmFja2VkSUQgPSAwOworI2VuZGlmCiAgICAgfQogCiAgICAgVCog
bV9idWZmZXI7CiAgICAgdW5zaWduZWQgbV9jYXBhY2l0eTsKICAgICB1bnNpZ25lZCBtX3NpemU7
IC8vIE9ubHkgdXNlZCBieSB0aGUgVmVjdG9yIHN1YmNsYXNzLCBidXQgcGxhY2VkIGhlcmUgdG8g
YXZvaWQgcGFkZGluZyB0aGUgc3RydWN0LgorI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAg
IFRyYWNrZWRJRCBtX3RyYWNrZWRJRCB7IDAgfTsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PgpAQCAtNDAyLDYgKzQzNyw5IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHN0ZDo6c3dhcChtX2J1ZmZlciwgb3RoZXIubV9idWZmZXIpOwog
ICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3RoZXIubV9jYXBhY2l0eSk7CisjaWYgVFJB
Q0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcChtX3RyYWNrZWRJRCwgb3RoZXIu
bV90cmFja2VkSUQpOworI2VuZGlmCiAgICAgfQogICAgIAogICAgIHZvaWQgcmVzdG9yZUlubGlu
ZUJ1ZmZlcklmTmVlZGVkKCkgeyB9CkBAIC00MjMsMTAgKzQ2MSwxNiBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgQmFzZTo6Y2FwYWNpdHk7CiAgICAgdXNpbmcgQmFzZTo6YnVmZmVyTWVtb3J5T2Zmc2V0
OwogCisgICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHlJbkJ5dGVzOworICAgIHVzaW5nIEJhc2U6OnNp
emVJbkJ5dGVzOworCiAgICAgdXNpbmcgQmFzZTo6cmVsZWFzZUJ1ZmZlcjsKIAogcHJvdGVjdGVk
OgogICAgIHVzaW5nIEJhc2U6Om1fc2l6ZTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAg
ICB1c2luZyBCYXNlOjptX3RyYWNrZWRJRDsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIHVzaW5n
IEJhc2U6Om1fYnVmZmVyOwpAQCAtNTE0LDYgKzU1OCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBzdGQ6OnN3YXAobV9idWZmZXIsIG90aGVyLm1fYnVmZmVyKTsKICAgICAgICAgICAgIHN0ZDo6
c3dhcChtX2NhcGFjaXR5LCBvdGhlci5tX2NhcGFjaXR5KTsKICAgICAgICAgfQorCisjaWYgVFJB
Q0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcChtX3RyYWNrZWRJRCwgb3RoZXIu
bV90cmFja2VkSUQpOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCByZXN0b3JlSW5saW5lQnVm
ZmVySWZOZWVkZWQoKQpAQCAtNTQzLDYgKzU5MSw4IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNl
OjpidWZmZXI7CiAgICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CiAgICAgdXNpbmcgQmFzZTo6YnVm
ZmVyTWVtb3J5T2Zmc2V0OworICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5SW5CeXRlczsKKyAgICB1
c2luZyBCYXNlOjpzaXplSW5CeXRlczsKIAogICAgIE1hbGxvY1B0cjxUPiByZWxlYXNlQnVmZmVy
KCkKICAgICB7CkBAIC01NTMsNiArNjAzLDkgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAg
dXNpbmcgQmFzZTo6bV9zaXplOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHVzaW5n
IEJhc2U6Om1fdHJhY2tlZElEOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgdXNpbmcgQmFzZTo6
bV9idWZmZXI7CkBAIC02NjEsNiArNzE0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0Lm1f
c2l6ZSA9IHNpemU7CiAKICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEluaXRpYWxpemU8MD4oc3Rk
Ojpmb3J3YXJkPEl0ZW1zPihpdGVtcykuLi4pOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZ
CisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkocmVzdWx0Lm1f
dHJhY2tlZElELCByZXN1bHQuc2l6ZUluQnl0ZXMoKSwgcmVzdWx0LmNhcGFjaXR5SW5CeXRlcygp
KTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtNjg4LDYgKzc0
NSw5IEBAIHB1YmxpYzoKICAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBCYXNl
OjpjYXBhY2l0eSgpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUo
KTsgfQogCisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gQmFzZTo6c2l6
ZUluQnl0ZXMoKTsgfQorICAgIHNpemVfdCBjYXBhY2l0eUluQnl0ZXMoKSBjb25zdCB7IHJldHVy
biBCYXNlOjpjYXBhY2l0eUluQnl0ZXMoKTsgfQorCiAgICAgVCYgYXQoc2l6ZV90IGkpCiAgICAg
ewogICAgICAgICBpZiAoVU5MSUtFTFkoaSA+PSBzaXplKCkpKQpAQCAtODEzLDkgKzg3MywxNyBA
QCBwdWJsaWM6CiAKICAgICAgICAgQmFzZTo6c3dhcChvdGhlciwgbV9zaXplLCBvdGhlci5tX3Np
emUpOwogICAgICAgICBzdGQ6OnN3YXAobV9zaXplLCBvdGhlci5tX3NpemUpOworI2lmIFRSQUNL
X1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBzdGQ6OnN3YXAobV90cmFja2VkSUQsIG90aGVyLm1f
dHJhY2tlZElEKTsKKyNlbmRpZgogCiAgICAgICAgIGFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRv
KG1fc2l6ZSk7CiAgICAgICAgIG90aGVyLmFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRvKG90aGVy
Lm1fc2l6ZSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgdmVjdG9yVHJh
Y2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwg
Y2FwYWNpdHlJbkJ5dGVzKCkpOworICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFu
ZENhcGFjaXR5KG90aGVyLm1fdHJhY2tlZElELCBvdGhlci5zaXplSW5CeXRlcygpLCBvdGhlci5j
YXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIHJldmVyc2UoKTsK
QEAgLTg2NSw2ICs5MzMsMTEgQEAgcHJpdmF0ZToKICAgICB1c2luZyBCYXNlOjpyZWFsbG9jYXRl
QnVmZmVyOwogICAgIHVzaW5nIEJhc2U6OnJlc3RvcmVJbmxpbmVCdWZmZXJJZk5lZWRlZDsKICAg
ICB1c2luZyBCYXNlOjpyZWxlYXNlQnVmZmVyOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZ
CisgICAgdXNpbmcgQmFzZTo6bV90cmFja2VkSUQ7CisjZW5kaWYKKwogI2lmIEFTQU5fRU5BQkxF
RAogICAgIHVzaW5nIEJhc2U6OmVuZE9mQnVmZmVyOwogI2VuZGlmCkBAIC04NzgsNiArOTUxLDEw
IEBAIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0
eT46OlZlY3Rvcihjb25zdCBWZWN0b3ImIG90CiAKICAgICBpZiAoYmVnaW4oKSkKICAgICAgICAg
VHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJlZ2luKCksIG90aGVyLmVu
ZCgpLCBiZWdpbigpKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRy
YWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCks
IGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1p
bkNhcGFjaXR5PgpAQCAtODg5LDYgKzk2NiwxMCBAQCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpWZWN0b3IoY29uc3QgVmVjdG9yPFQsCiAK
ICAgICBpZiAoYmVnaW4oKSkKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRD
b3B5KG90aGVyLmJlZ2luKCksIG90aGVyLmVuZCgpLCBiZWdpbigpKTsKKworI2lmIFRSQUNLX1ZF
Q1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHko
bV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtOTExLDYgKzk5MiwxMCBA
QCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+
JiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdAogICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxp
emVkQ29weShvdGhlci5iZWdpbigpICsgc2l6ZSgpLCBvdGhlci5lbmQoKSwgZW5kKCkpOwogICAg
IG1fc2l6ZSA9IG90aGVyLnNpemUoKTsKIAorI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAg
IHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJ
bkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuICp0aGlz
OwogfQogCkBAIC05MzksNiArMTAyNCwxMCBAQCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdAogICAg
IFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpICsgc2l6ZSgp
LCBvdGhlci5lbmQoKSwgZW5kKCkpOwogICAgIG1fc2l6ZSA9IG90aGVyLnNpemUoKTsKIAorI2lm
IFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5k
Q2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsK
KyNlbmRpZgorCiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC0xMDIwLDYgKzExMDksMTAgQEAg
dm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNp
dHk+OjpmaWxsKGNvbnN0IFQmIHZhbCwKICAgICBzdGQ6OmZpbGwoYmVnaW4oKSwgZW5kKCksIHZh
bCk7CiAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRGaWxsKGVuZCgpLCBiZWdpbigp
ICsgbmV3U2l6ZSwgdmFsKTsKICAgICBtX3NpemUgPSBuZXdTaXplOworCisjaWYgVFJBQ0tfVkVD
VE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eSht
X3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xMDkxLDYgKzExODQsMTAg
QEAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5Pjo6cmVzaXplKHNpemUKICAgICB9CiAgICAgCiAgICAgbV9zaXplID0gc2l6
ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNv
cmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5C
eXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpA
QCAtMTEwNyw2ICsxMjA0LDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6c2hyaW5rKHNpemVfdCBzaXplCiAgICAgVHlwZU9w
ZXJhdGlvbnM6OmRlc3RydWN0KGJlZ2luKCkgKyBzaXplLCBlbmQoKSk7CiAgICAgYXNhbkJ1ZmZl
clNpemVXaWxsQ2hhbmdlVG8oc2l6ZSk7CiAgICAgbV9zaXplID0gc2l6ZTsKKworI2lmIFRSQUNL
X1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNp
dHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRp
ZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVu
YW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTExOSw2ICsxMjIw
LDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1p
bkNhcGFjaXR5Pjo6Z3JvdyhzaXplX3Qgc2l6ZSkKICAgICBpZiAoYmVnaW4oKSkKICAgICAgICAg
VHlwZU9wZXJhdGlvbnM6OmluaXRpYWxpemVJZk5vblBPRChlbmQoKSwgYmVnaW4oKSArIHNpemUp
OwogICAgIG1fc2l6ZSA9IHNpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2
ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5C
eXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNp
emVfdCBtaW5DYXBhY2l0eT4KQEAgLTExODIsNiArMTI4NywxMCBAQCB2b2lkIFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJlc2VydmVDYXBh
Y2l0eShzaQogCiAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmUob2xkQnVmZmVyLCBvbGRFbmQsIGJl
Z2luKCkpOwogICAgIEJhc2U6OmRlYWxsb2NhdGVCdWZmZXIob2xkQnVmZmVyKTsKKworI2lmIFRS
QUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2Fw
YWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNl
bmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTIwNCw2ICsx
MzEzLDEwIEBAIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5Pjo6dHJ5UmVzZXJ2ZUNhcGFjaXR5CiAKICAgICBUeXBlT3BlcmF0aW9uczo6
bW92ZShvbGRCdWZmZXIsIG9sZEVuZCwgYmVnaW4oKSk7CiAgICAgQmFzZTo6ZGVhbGxvY2F0ZUJ1
ZmZlcihvbGRCdWZmZXIpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9y
VHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMo
KSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTEyMTQsNiArMTMyNywxMCBAQCBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpyZXNlcnZlSW5pdAogICAgIEFTU0VSVChj
YXBhY2l0eSgpID09IGlubGluZUNhcGFjaXR5KTsKICAgICBpZiAoaW5pdGlhbENhcGFjaXR5ID4g
aW5saW5lQ2FwYWNpdHkpCiAgICAgICAgIEJhc2U6OmFsbG9jYXRlQnVmZmVyKGluaXRpYWxDYXBh
Y2l0eSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCku
cmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0
eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0
eT4KQEAgLTEyMzIsNiArMTM0OSw5IEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6c2hyaW5rQ2FwYWNpdHkoc2l6CiAgICAgICAg
IGlmIChCYXNlOjpzaG91bGRSZWFsbG9jYXRlQnVmZmVyKG5ld0NhcGFjaXR5KSkgewogICAgICAg
ICAgICAgQmFzZTo6cmVhbGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0eSk7CiAgICAgICAgICAgICBh
c2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhzaXplKCkpOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBB
Q0lUWQorICAgICAgICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eSht
X3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTI0NSw2ICsxMzY1LDEwIEBAIHZv
aWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5
Pjo6c2hyaW5rQ2FwYWNpdHkoc2l6CiAgICAgQmFzZTo6cmVzdG9yZUlubGluZUJ1ZmZlcklmTmVl
ZGVkKCk7CiAKICAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhzaXplKCkpOworCisjaWYg
VFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRD
YXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOwor
I2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwg
dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xMjYyLDYg
KzEzODYsMTAgQEAgQUxXQVlTX0lOTElORSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwg
T3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OmFwcGUKICAgICBUKiBkZXN0ID0gZW5kKCk7
CiAgICAgVmVjdG9yQ29waWVyPHN0ZDo6aXNfdHJpdmlhbDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRp
YWxpemVkQ29weShkYXRhLCBzdGQ6OmFkZHJlc3NvZihkYXRhW2RhdGFTaXplXSksIGRlc3QpOwog
ICAgIG1fc2l6ZSA9IG5ld1NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2
ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5C
eXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNp
emVfdCBtaW5DYXBhY2l0eT4KQEAgLTEyODEsNiArMTQwOSwxMCBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5
Pjo6dHJ5QQogICAgIFQqIGRlc3QgPSBlbmQoKTsKICAgICBWZWN0b3JDb3BpZXI8c3RkOjppc190
cml2aWFsPFQ+Ojp2YWx1ZSwgVT46OnVuaW5pdGlhbGl6ZWRDb3B5KGRhdGEsIHN0ZDo6YWRkcmVz
c29mKGRhdGFbZGF0YVNpemVdKSwgZGVzdCk7CiAgICAgbV9zaXplID0gbmV3U2l6ZTsKKworI2lm
IFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5k
Q2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsK
KyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMjkyLDYgKzE0MjQsOSBAQCBBTFdB
WVNfSU5MSU5FIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5Pjo6YXBwZQogICAgICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyht
X3NpemUgKyAxKTsKICAgICAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8
VT4odmFsdWUpKTsKICAgICAgICAgKyttX3NpemU7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZ
CisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2Vk
SUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xMzA2LDYgKzE0NDEsOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6
Y29ucwogICAgICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAg
ICAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OwogICAgICAgICArK21fc2l6ZTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAg
dmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUlu
Qnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTEzMjAsNiArMTQ1OCw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+Ojp0cnlDCiAgICAg
ICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEpOwogICAgICAgICBuZXcg
KE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgICAgICAg
ICsrbV9zaXplOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICB2ZWN0b3JUcmFj
a2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBj
YXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIApAQCAtMTMzOSw2ICsxNDgwLDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5Pjo6YXBwZW5kU2xvd0Nhc2UoVSYmCiAgICAg
YXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAgICAgbmV3IChOb3ROdWxs
LCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8VT4oKnB0cikpOwogICAgICsrbV9zaXplOworCisjaWYg
VFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRD
YXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOwor
I2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwg
dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xMzUzLDYg
KzE0OTgsMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
ciwgbWluQ2FwYWNpdHk+Ojpjb25zdHJ1Y3RBbmRBcHBlbmQKICAgICBhc2FuQnVmZmVyU2l6ZVdp
bGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgICAgKyttX3NpemU7CisKKyNpZiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1f
dHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBP
dmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTEzNjgsNiArMTUxNywxMCBA
QCBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBh
Y2l0eT46OnRyeUNvbnN0cnVjdEFuZEFwcAogICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRv
KG1fc2l6ZSArIDEpOwogICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKTsKICAgICArK21fc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lU
WQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQs
IHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0xMzg0LDYgKzE1MzcsMTAgQEAgQUxXQVlTX0lOTElORSB2b2lkIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnVuY2gK
IAogICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7CiAg
ICAgKyttX3NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFj
a2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBj
YXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5D
YXBhY2l0eT4KQEAgLTE0MTAsNiArMTU2NywxMCBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46Omluc2VydChzaXplX3QgcG9zaQog
ICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoc3BvdCwgZW5kKCksIHNwb3QgKyBk
YXRhU2l6ZSk7CiAgICAgVmVjdG9yQ29waWVyPHN0ZDo6aXNfdHJpdmlhbDxUPjo6dmFsdWUsIFU+
Ojp1bmluaXRpYWxpemVkQ29weShkYXRhLCBzdGQ6OmFkZHJlc3NvZihkYXRhW2RhdGFTaXplXSks
IHNwb3QpOwogICAgIG1fc2l6ZSA9IG5ld1NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJ
VFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElE
LCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KICAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dI
YW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CkBAIC0xNDMwLDYgKzE1OTEsMTAgQEAgaW5saW5l
IHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFj
aXR5Pjo6aW5zZXJ0KHNpemUKICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKHNw
b3QsIGVuZCgpLCBzcG90ICsgMSk7CiAgICAgbmV3IChOb3ROdWxsLCBzcG90KSBUKHN0ZDo6Zm9y
d2FyZDxVPigqcHRyKSk7CiAgICAgKyttX3NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJ
VFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElE
LCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTE0NDgsNiArMTYxMywxMCBAQCBpbmxpbmUg
dm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNp
dHk+OjpyZW1vdmUoc2l6ZQogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoc3Bv
dCArIDEsIGVuZCgpLCBzcG90KTsKICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3Np
emUgLSAxKTsKICAgICAtLW1fc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAg
IHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJ
bkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwg
c2l6ZV90IG1pbkNhcGFjaXR5PgpAQCAtMTQ2MSw2ICsxNjMwLDEwIEBAIGlubGluZSB2b2lkIFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJl
bW92ZShzaXplCiAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVybGFwcGluZyhlbmRTcG90LCBl
bmQoKSwgYmVnaW5TcG90KTsKICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUg
LSBsZW5ndGgpOwogICAgIG1fc2l6ZSAtPSBsZW5ndGg7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQ
QUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tl
ZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxv
d0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4KQEAgLTE1MTgsNiArMTY5MSwxMCBAQCBpbmxp
bmUgdW5zaWduZWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1p
bkNhcGFjaXR5Pjo6cmVtb3ZlQQogICAgICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBw
aW5nKGhvbGVFbmQsIGVuZCgpLCBob2xlQmVnaW4pOwogICAgIGFzYW5CdWZmZXJTaXplV2lsbENo
YW5nZVRvKG1fc2l6ZSAtIG1hdGNoQ291bnQpOwogICAgIG1fc2l6ZSAtPSBtYXRjaENvdW50Owor
CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNp
emVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVz
KCkpOworI2VuZGlmCiAgICAgcmV0dXJuIG1hdGNoQ291bnQ7CiB9CiAKQEAgLTE1NTgsNiArMTcz
NSwxMCBAQCBpbmxpbmUgTWFsbG9jUHRyPFQ+IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3Zl
cmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT46OnJlbAogICAgIH0KICAgICBtX3NpemUgPSAwOwog
ICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgY2FsbCBCYXNlOjpyZXN0b3JlSW5saW5lQnVmZmVySWZO
ZWVkZWQoKSBoZXJlPworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJh
Y2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwg
Y2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389418</attachid>
            <date>2020-01-31 14:44:54 -0800</date>
            <delta_ts>2021-04-03 10:18:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186698-20200131144453.patch</filename>
            <type>text/plain</type>
            <size>58180</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc5ZGI5ZWQ2YzIwNGVkNWYxNTEzOWI3
N2FiZTI3ZDEyZWY0Y2YyODQuLjI1YTdjZDg4YjgzYmFjYmRhMTc4MzkyOTRiYWI1N2QyMjA4ZDE5
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsOTMgQEAKKzIwMjAtMDEtMzEgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0cmFjayBj
YWxsIHNpdGVzIHRoYXQgd2FzdGUgVmVjdG9yIGNhcGFjaXR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY2OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2Vy
IHdoaWNoIGNhbiBhZ2dyZWdhdGUgZGF0YSBvbiBhIHBlci1jYWxsIHNpdGUgYmFzaXMgKGJ5IHRh
a2luZworICAgICAgICBhIHN0YWNrc2hvdCBOIGZyYW1lcyBkZWVwLCBhbmQgaGFzaGluZyBpdCks
IGFuZCBpcyBpbmZvcm1lZCBhYm91dCBhbGxvY2F0aW9ucywgc2l6ZSBhbmQKKyAgICAgICAgY2Fw
YWNpdHkgY2hhbmdlcywgYW5kIGZyZWVzIG9mIGNvbnRhaW5lciB0eXBlcyAoZS5nLiBWZWN0b3Ig
YW5kIEhhc2hNYXApLgorCisgICAgICAgIFdoZW4gVFJBQ0tfVkVDVE9SX0NBUEFDSVRZIGlzIGRl
ZmluZWQgaW4gVmVjdG9yLmgsIGEgc2luZ2xldG9uIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlcgor
ICAgICAgICBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgYWxsIFZlY3RvcnMgYW5kIHRoZWlyIHNp
emUgYW5kIGNhcGFjaXR5IGNoYW5nZXMuIFZlY3RvciBnYWlucworICAgICAgICBhbiBtX3RyYWNr
ZWRJRCBtZW1iZXIgdmFyaWFibGUgdG8gYWxsb3cgdHJhY2tpbmcgKFZlY3RvcnMgY2FuIGJlIFdU
Rk1vdmVkIGFuZCBzdGQ6OnN3YXBwZWQsCisgICAgICAgIHNvIHdlIGNhbid0IHJlbHkgb24gdGhl
aXIgYWRkcmVzcyB0byB0cmFjayB0aGVtKS4KKworICAgICAgICBEYXRhIGFib3V0IGxpdmUgVmVj
dG9ycyBjYW4gdGhlbiBiZSBkdW1wZWQgd2l0aCAibm90aWZ5dXRpbCAtcCBjb20uYXBwbGUuV2Vi
S2l0LmR1bXBWZWN0b3JDYXBhY2l0eSIsCisgICAgICAgIHZpYSBjb2RlIGluIFZlY3Rvci5jcHAu
CisKKyAgICAgICAgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyIHRha2VzIGNhcmUgdG8gYXZvaWQg
cmUtZW50cmFuY3kgKGFsbG93IGl0IHRvIHVzZSB0aGUgY29udGFpbmVyIHR5cGVzKQorICAgICAg
ICB3aGlsZSBiZWluZyBjYWxsYWJsZSBmcm9tIGRpZmZlcmVudCB0aHJlYWRzLgorCisgICAgICAg
ICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIHd0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdURjo6QWxsb2NhdGlvbkNhbGxTaXRlRGF0YTo6QWxsb2NhdGlvbkNhbGxT
aXRlRGF0YSk6CisgICAgICAgIChXVEY6OkFsbG9jYXRpb25DYWxsU2l0ZURhdGE6OnN0YWNrIGNv
bnN0KToKKyAgICAgICAgKFdURjo6Q29udGFpbmVyQWxsb2NhdGlvbkRhdGE6OkNvbnRhaW5lckFs
bG9jYXRpb25EYXRhKToKKyAgICAgICAgKFdURjo6QXZvaWRSZWNvcmRpbmdTY29wZTo6QXZvaWRS
ZWNvcmRpbmdTY29wZSk6CisgICAgICAgIChXVEY6OkF2b2lkUmVjb3JkaW5nU2NvcGU6On5Bdm9p
ZFJlY29yZGluZ1Njb3BlKToKKyAgICAgICAgKFdURjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2Vy
OjpDb250YWluZXJDYXBhY2l0eVRyYWNrZXIpOgorICAgICAgICAoV1RGOjpDb250YWluZXJDYXBh
Y2l0eVRyYWNrZXI6OnJlY29yZEFsbG9jYXRpb24pOgorICAgICAgICAoV1RGOjpDb250YWluZXJD
YXBhY2l0eVRyYWNrZXI6OnJlY29yZFNpemVBbmRDYXBhY2l0eSk6CisgICAgICAgIChXVEY6OkNv
bnRhaW5lckNhcGFjaXR5VHJhY2tlcjo6cmVjb3JkRnJlZSk6CisgICAgICAgIChXVEY6OkNvbnRh
aW5lckNhcGFjaXR5VHJhY2tlcjo6YWdncmVnYXRlQnlDYWxsU2l0ZSk6CisgICAgICAgICogd3Rm
L0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvSGFzaFRh
YmxlLmNwcDoKKyAgICAgICAgKFdURjo6ZHVtcFdhc3RlZEhhc2hUYWJsZUNhcGFjaXR5KToKKyAg
ICAgICAgKFdURjo6aGFzaFRhYmxlVHJhY2tlcik6CisgICAgICAgICogd3RmL0hhc2hUYWJsZS5o
OgorICAgICAgICAoV1RGOjpIYXNoVGFibGU6On5IYXNoVGFibGUpOgorICAgICAgICAoV1RGOjpL
ZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjphZGQpOgor
ICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjphZGRQYXNzaW5nSGFzaENvZGUpOgorICAgICAgICAo
V1RGOjpLZXlUcmFpdHM+OjpyZWluc2VydCk6CisgICAgICAgIChXVEY6OktleVRyYWl0cz46OnJl
bW92ZSk6CisgICAgICAgIChXVEY6OktleVRyYWl0cz46OnJlbW92ZUlmKToKKyAgICAgICAgKFdU
Rjo6S2V5VHJhaXRzPjo6cmVoYXNoKToKKyAgICAgICAgKFdURjo6S2V5VHJhaXRzPjo6Y2xlYXIp
OgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+Ojpzd2FwKToKKyAgICAgICAgKFdURjo6S2V5VHJh
aXRzPjo6c2l6ZUluQnl0ZXMgY29uc3QpOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpjYXBh
Y2l0eUluQnl0ZXMgY29uc3QpOgorICAgICAgICAqIHd0Zi9TaXplTGltaXRzLmNwcDoKKyAgICAg
ICAgKiB3dGYvVmVjdG9yLmNwcDoKKyAgICAgICAgKFdURjo6ZHVtcFdhc3RlZFZlY3RvckNhcGFj
aXR5KToKKyAgICAgICAgKFdURjo6dmVjdG9yVHJhY2tlcik6CisgICAgICAgICogd3RmL1ZlY3Rv
ci5oOgorICAgICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjpjYXBhY2l0eUluQnl0ZXMgY29u
c3QpOgorICAgICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjpzaXplSW5CeXRlcyBjb25zdCk6
CisgICAgICAgIChXVEY6OlZlY3RvckJ1ZmZlckJhc2U6OlZlY3RvckJ1ZmZlckJhc2UpOgorICAg
ICAgICAoV1RGOjpWZWN0b3JCdWZmZXJCYXNlOjp+VmVjdG9yQnVmZmVyQmFzZSk6CisgICAgICAg
IChXVEY6OlZlY3RvckJ1ZmZlcjo6c3dhcCk6CisgICAgICAgIChXVEY6OlZlY3Rvcjo6ZnJvbSk6
CisgICAgICAgIChXVEY6OlZlY3Rvcjo6c2l6ZUluQnl0ZXMgY29uc3QpOgorICAgICAgICAoV1RG
OjpWZWN0b3I6OmNhcGFjaXR5SW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXVEY6OlZlY3Rvcjo6
c3dhcCk6CisgICAgICAgIChXVEY6Ok1hbGxvYz46OlZlY3Rvcik6CisgICAgICAgIChXVEY6Oj0p
OgorICAgICAgICAoV1RGOjpNYWxsb2M+OjpmaWxsKToKKyAgICAgICAgKFdURjo6TWFsbG9jPjo6
cmVzaXplKToKKyAgICAgICAgKFdURjo6TWFsbG9jPjo6c2hyaW5rKToKKyAgICAgICAgKFdURjo6
TWFsbG9jPjo6Z3Jvdyk6CisgICAgICAgIChXVEY6Ok1hbGxvYz46OnJlc2VydmVDYXBhY2l0eSk6
CisgICAgICAgIChXVEY6Ok1hbGxvYz46OnRyeVJlc2VydmVDYXBhY2l0eSk6CisgICAgICAgIChX
VEY6Ok1hbGxvYz46OnJlc2VydmVJbml0aWFsQ2FwYWNpdHkpOgorICAgICAgICAoV1RGOjpNYWxs
b2M+OjpzaHJpbmtDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Ok1hbGxvYz46OmFwcGVuZCk6Cisg
ICAgICAgIChXVEY6Ok1hbGxvYz46OnRyeUFwcGVuZCk6CisgICAgICAgIChXVEY6Ok1hbGxvYz46
OmNvbnN0cnVjdEFuZEFwcGVuZCk6CisgICAgICAgIChXVEY6Ok1hbGxvYz46OnRyeUNvbnN0cnVj
dEFuZEFwcGVuZCk6CisgICAgICAgIChXVEY6Ok1hbGxvYz46OmFwcGVuZFNsb3dDYXNlKToKKyAg
ICAgICAgKFdURjo6TWFsbG9jPjo6Y29uc3RydWN0QW5kQXBwZW5kU2xvd0Nhc2UpOgorICAgICAg
ICAoV1RGOjpNYWxsb2M+Ojp0cnlDb25zdHJ1Y3RBbmRBcHBlbmRTbG93Q2FzZSk6CisgICAgICAg
IChXVEY6Ok1hbGxvYz46OnVuY2hlY2tlZEFwcGVuZCk6CisgICAgICAgIChXVEY6Ok1hbGxvYz46
OnVuY2hlY2tlZENvbnN0cnVjdEFuZEFwcGVuZCk6CisgICAgICAgIChXVEY6Ok1hbGxvYz46Omlu
c2VydCk6CisgICAgICAgIChXVEY6Ok1hbGxvYz46OnJlbW92ZSk6CisgICAgICAgIChXVEY6Ok1h
bGxvYz46OnJlbW92ZUFsbE1hdGNoaW5nKToKKyAgICAgICAgKFdURjo6TWFsbG9jPjo6cmVsZWFz
ZUJ1ZmZlcik6CisKIDIwMjAtMDEtMzEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255
LmNvbT4KIAogICAgICAgICBbQ01ha2VdIEFkZCBfUFJJVkFURV9MSUJSQVJJRVMgdG8gZnJhbWV3
b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZGYwNzFiZGIyZDg2YTYxNmJkNjJmMmJkYTU2ZGU5ZmEzZWMzZmU2
Yy4uMjNiODgxZTA0Mzc3YmY5YzdlMjMxOGQ5YjQ4MDQyYzQwZmNiMDMxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTMxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0cmFjayBjYWxsIHNpdGVzIHRo
YXQgd2FzdGUgVmVjdG9yIGNhcGFjaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODY2OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlcGxhY2VXaXRoLmg6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpyZXBsYWNlV2l0aCk6CisKIDIwMjAtMDEtMzEgIEFudG9pbmUgUXVpbnQg
IDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIFtXSzFdIFJF
R1JFU1NJT046IG9wYWNpdHkgZG9lc24ndCBhbmltYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBmYjM3YTgxN2I5Yjc0ZGUxODU4MTE1ZmMwNWNkYzE0N2E5
NzA5YzM0Li41MjBkM2Y0M2FjNTc5ZDkwNjI0NmM0Yzc2NjFhZjczYzk5ZGYxMzk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1LDYgKzI1LDcgQEAKIAkJ
MEYzMENCNUExRkNERjEzNDAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzBDQjU4MUZDREYx
MzMwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgKi87IH07CiAJCTBGMzQ5MkQ3
MjJBRjQzMUMwMDRGODVGQyAvKiBUZXh0U3RyZWFtQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM0OTJENjIyQUY0MkYxMDA0Rjg1RkMgLyog
VGV4dFN0cmVhbUNvY29hLm1tICovOyB9OwogCQkwRjQzRDhGMTFEQjVBRERDMDAxMDhGQjYgLyog
QXV0b21hdGljVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDNEOEVGMURCNUFEREMwMDEwOEZCNiAvKiBBdXRvbWF0aWNUaHJlYWQuY3Bw
ICovOyB9OworCQkwRjVCNERGQTIwRDBERTE4MDBENkY1MTAgLyogQ29udGFpbmVyQ2FwYWNpdHlU
cmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNUI0REY5MjBEMERFMTcwMEQ2RjUxMCAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3Bw
ICovOyB9OwogCQkwRjVCRjE3NjFGMjNENDlBMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QkYxNzQxRjIzRDQ5
QTAwMjlEOTFEIC8qIEdpZ2FjYWdlLmNwcCAqLzsgfTsKIAkJMEY2MEYzMkYxREZDQkQxQjAwNDE2
RDZDIC8qIExvY2tlZFByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjBGMzJEMURGQ0JEMUIwMDQxNkQ2QyAvKiBMb2NrZWRQcmlu
dFN0cmVhbS5jcHAgKi87IH07CiAJCTBGNjZCMjhBMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
NkIyODAxREM5N0JBQjAwNEExRDNGIC8qIENsb2NrVHlwZS5jcHAgKi87IH07CkBAIC0yMjMsNiAr
MjI0LDggQEAKIAkJMEY0NTcwNDIxQkU1QjU4RjAwNjJBNjI5IC8qIERvbWluYXRvcnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9taW5hdG9ycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjQ1NzA0NDFCRTgzNDQxMDA2MkE2MjkgLyogQnViYmxlU29ydC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWJibGVTb3J0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNEQ4QzcxMUZDMUU3Q0UwMDFEMzJBQyAvKiBTaW5nbHlM
aW5rZWRMaXN0V2l0aFRhaWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2lu
Z2x5TGlua2VkTGlzdFdpdGhUYWlsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NUI0REY4MjBEMERFMTcwMEQ2RjUxMCAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNUI0REY5MjBEMERFMTcwMEQ2RjUxMCAv
KiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY1QkYxNjUxRjIzMTc4MzAwMjlEOTFEIC8qIE5hdHVyYWxMb29wcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOYXR1cmFsTG9vcHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY1QkYxNzQxRjIzRDQ5QTAwMjlEOTFEIC8qIEdpZ2FjYWdlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdpZ2FjYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1
QkYxNzUxRjIzRDQ5QTAwMjlEOTFEIC8qIEdpZ2FjYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdpZ2Fj
YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzcsNiArMjgwLDcgQEAKIAkJ
MEZCNDY3ODMxRkRFMjgyQzAwM0ZDQjA5IC8qIENvbmN1cnJlbnRWZWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uY3VycmVudFZlY3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkM0NDg4MjE2RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NJRC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkM0RURFNTE2OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQcmlu
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1hUHJpbnRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQ3M0NCQTIwRDQ3NTgzMDBGQzdBMjkgLyog
VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZlY3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3
MiAvKiBGYXN0Qml0VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZh
c3RCaXRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEQjY5OEQxQjdD
NjQzQTAwMEMxMDc4IC8qIENvbmRpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb25kaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEREJGQTUx
NjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ1ByaW50U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTk1Nyw2ICs5NjEsOCBAQAogCQkJCTBGMzBDQjU5MUZDREYxMzMw
MDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5oICovLAogCQkJCTBGQjQ2NzgzMUZERTI4
MkMwMDNGQ0IwOSAvKiBDb25jdXJyZW50VmVjdG9yLmggKi8sCiAJCQkJMEZEQjY5OEQxQjdDNjQz
QTAwMEMxMDc4IC8qIENvbmRpdGlvbi5oICovLAorCQkJCTBGNUI0REY5MjBEMERFMTcwMEQ2RjUx
MCAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwICovLAorCQkJCTBGNUI0REY4MjBEMERF
MTcwMEQ2RjUxMCAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaCAqLywKIAkJCQkwRjhFODVE
QTFGRDQ4NUIwMDA2OTE4ODkgLyogQ291bnRpbmdMb2NrLmNwcCAqLywKIAkJCQkwRkZCQ0JGQTFG
RDM3RTBGMDA3MkFBRjAgLyogQ291bnRpbmdMb2NrLmggKi8sCiAJCQkJRTM4QzQxMjYxRUI0RTA2
ODAwNDI5NTdEIC8qIENQVVRpbWUuY3BwICovLApAQCAtMTU5OSw2ICsxNjA1LDcgQEAKIAkJCQkw
RjhGMkI5MjE3MkUwMTAzMDA3REJEQTUgLyogQ29tcGlsYXRpb25UaHJlYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTMxNDlBM0IyMjhCRENBQzAwQkZBNkM3IC8qIENvbmN1cnJlbnRCdWZmZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMENCNUExRkNERjEzNDAwNEI1MzIzIC8qIENvbmN1
cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNUI0REZBMjBEMERFMTgw
MEQ2RjUxMCAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY4RTg1REIxRkQ0ODVCMDAwNjkxODg5IC8qIENvdW50aW5nTG9jay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMzhDNDEyODFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMzhDNDEyNTFFQjRFMDRDMDA0Mjk1N0QgLyogQ1BVVGltZUNvY29hLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA0Mjc0MTcwYjdkNDNhMGU2
NTk4MjcwZjYyMTdhZDYwNTk0MjU5NDU0Li5hMTZlMzFiZjFmYjk1MTc0MjA4YTk0ZmU0NzcwYTEx
ZmVjMTAzZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMzcsNiArMzcsNyBAQCBzZXQoV1RG
X1BVQkxJQ19IRUFERVJTCiAgICAgQ29uY3VycmVudFB0ckhhc2hTZXQuaAogICAgIENvbmN1cnJl
bnRWZWN0b3IuaAogICAgIENvbmRpdGlvbi5oCisgICAgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2Vy
LmgKICAgICBDb3VudGluZ0xvY2suaAogICAgIENyb3NzVGhyZWFkQ29waWVyLmgKICAgICBDcm9z
c1RocmVhZFF1ZXVlLmgKQEAgLTM2NSw2ICszNjYsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBD
b21waWxhdGlvblRocmVhZC5jcHAKICAgICBDb25jdXJyZW50QnVmZmVyLmNwcAogICAgIENvbmN1
cnJlbnRQdHJIYXNoU2V0LmNwcAorICAgIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAKICAg
ICBDb3VudGluZ0xvY2suY3BwCiAgICAgQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiAgICAgQ3Jvc3NU
aHJlYWRUYXNrSGFuZGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbnRhaW5l
ckNhcGFjaXR5VHJhY2tlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0eVRy
YWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkNTU3ZjdiYjM5ZjM4ZGE5YWMxMTg4MGE4OWYyYTEzODMw
NDUxYmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0
eVRyYWNrZXIuY3BwCkBAIC0wLDAgKzEsMjAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9D
b250YWluZXJDYXBhY2l0eVRyYWNrZXIuaD4KKworI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+Cisj
aW5jbHVkZSA8d3RmL1N0YWNrU2hvdC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworQWxsb2NhdGlv
bkNhbGxTaXRlRGF0YTo6QWxsb2NhdGlvbkNhbGxTaXRlRGF0YShzaXplX3Qgc3RhY2tEZXB0aCwg
c2l6ZV90IGluVXNlZFNpemUsIHNpemVfdCBpbkNhcGFjaXR5KQorICAgIDogdXNlZFNpemUoaW5V
c2VkU2l6ZSkKKyAgICAsIGNhcGFjaXR5KGluQ2FwYWNpdHkpCisgICAgLCBtX3N0YWNrKHN0ZDo6
bWFrZV91bmlxdWU8U3RhY2tTaG90PihzdGFja0RlcHRoKSkKK3sKK30KKworQWxsb2NhdGlvbkNh
bGxTaXRlRGF0YTo6QWxsb2NhdGlvbkNhbGxTaXRlRGF0YShjb25zdCBTdGFja1Nob3QmIHN0YWNr
KQorICAgIDogbV9zdGFjayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hvdD4oc3RhY2spKQorewor
fQorCitBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhOjpBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKGNvbnN0
IEFsbG9jYXRpb25DYWxsU2l0ZURhdGEmIG90aGVyKQorICAgIDogY291bnQob3RoZXIuY291bnQp
CisgICAgLCB1c2VkU2l6ZShvdGhlci51c2VkU2l6ZSkKKyAgICAsIGNhcGFjaXR5KG90aGVyLmNh
cGFjaXR5KQorICAgICwgbV9zdGFjayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hvdD4ob3RoZXIu
c3RhY2soKSkpCit7Cit9CisKK0FsbG9jYXRpb25DYWxsU2l0ZURhdGE6On5BbGxvY2F0aW9uQ2Fs
bFNpdGVEYXRhKCkgPSBkZWZhdWx0OworCitjb25zdCBTdGFja1Nob3QmIEFsbG9jYXRpb25DYWxs
U2l0ZURhdGE6OnN0YWNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKm1fc3RhY2s7Cit9CisKK3N0
cnVjdCBDb250YWluZXJBbGxvY2F0aW9uRGF0YSB7CisgICAgQ29udGFpbmVyQWxsb2NhdGlvbkRh
dGEoc2l6ZV90IHN0YWNrU2hvdFNpemUsIHNpemVfdCBpblNpemUsIHNpemVfdCBpbkNhcGFjaXR5
KQorICAgICAgICA6IGFsbG9jYXRpb25TdGFjayhzdGFja1Nob3RTaXplKQorICAgICAgICAsIHNp
emUoaW5TaXplKQorICAgICAgICAsIGNhcGFjaXR5KGluQ2FwYWNpdHkpCisgICAgeworICAgIAor
ICAgIH0KKyAgICBTdGFja1Nob3QgYWxsb2NhdGlvblN0YWNrOworICAgIHNpemVfdCBzaXplOwor
ICAgIHNpemVfdCBjYXBhY2l0eTsKK307CisKK3N0cnVjdCBDb250YWluZXJDYXBhY2l0eVRyYWNr
ZXI6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGwgeworICAgIHN0ZDo6dW5vcmRlcmVkX21h
cDxUcmFja2VkSUQsIHN0ZDo6dW5pcXVlX3B0cjxDb250YWluZXJBbGxvY2F0aW9uRGF0YT4+IG1f
dHJhY2tlZElEVG9Db250YWluZXJEYXRhOworfTsKKworLy8gVG8gcHJldmVudCBwZXItdGhyZWFk
IHJlLWVudHJhbmN5IHdlIHRha2UgYSBwb2ludGVyIHRvIGFuIG9iamVjdCBvbiB0aGUgc3RhY2ss
IGluc2lkZSBtX211dGV4IGxvY2sgc2NvcGUuCitjbGFzcyBBdm9pZFJlY29yZGluZ1Njb3BlIHsK
K3B1YmxpYzoKKyAgICBBdm9pZFJlY29yZGluZ1Njb3BlKENvbnRhaW5lckNhcGFjaXR5VHJhY2tl
ciYgdHJhY2tlciwgYm9vbCogc3RhY2tPYmplY3QpCisgICAgICAgIDogbV90cmFja2VyKHRyYWNr
ZXIpCisgICAgeworICAgICAgICBtX3RyYWNrZXIubV9hdm9pZFJlZW50cmFuY3kgPSBzdGFja09i
amVjdDsKKyAgICB9CisKKyAgICB+QXZvaWRSZWNvcmRpbmdTY29wZSgpCisgICAgeworICAgICAg
ICBtX3RyYWNrZXIubV9hdm9pZFJlZW50cmFuY3kgPSBudWxscHRyOworICAgIH0KK3ByaXZhdGU6
CisgICAgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyJiBtX3RyYWNrZXI7Cit9OworCitDb250YWlu
ZXJDYXBhY2l0eVRyYWNrZXI6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlcihzaXplX3QgYWdncmVn
YXRpb25TdGFja0RlcHRoKQorICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVy
Q2FwYWNpdHlUcmFja2VySW1wbD4oKSkKKyAgICAsIG1fYWdncmVnYXRpb25TdGFja0RlcHRoKGFn
Z3JlZ2F0aW9uU3RhY2tEZXB0aCkKK3sKK30KKworVHJhY2tlZElEIENvbnRhaW5lckNhcGFjaXR5
VHJhY2tlcjo6cmVjb3JkQWxsb2NhdGlvbihzaXplX3Qgc2l6ZSwgc2l6ZV90IGNhcGFjaXR5KQor
eworICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6OnJlY3Vyc2l2ZV9tdXRleD4gbG9ja0hvbGRlciht
X211dGV4KTsKKworICAgIGlmIChtX2F2b2lkUmVlbnRyYW5jeSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBib29sIGF2b2lkUmVlbnRyYW5jeSA9IHRydWU7CisgICAgQXZvaWRSZWNvcmRpbmdT
Y29wZSBzY29wZSgqdGhpcywgJmF2b2lkUmVlbnRyYW5jeSk7CisKKyAgICBUcmFja2VkSUQgb2Jq
ZWN0SUQgPSArK21fbmV4dElEOworCisgICAgYXV0byBhbGxvY2F0aW9uRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q29udGFpbmVyQWxsb2NhdGlvbkRhdGE+KG1fYWdncmVnYXRpb25TdGFja0RlcHRo
LCBzaXplLCBjYXBhY2l0eSk7CisgICAgYXV0byBpbnNlcnRSZXN1bHQgPSBtX2ltcGwtPm1fdHJh
Y2tlZElEVG9Db250YWluZXJEYXRhLmluc2VydChzdGQ6Om1ha2VfcGFpcihvYmplY3RJRCwgV1RG
TW92ZShhbGxvY2F0aW9uRGF0YSkpKTsKKyAgICBpZiAoIWluc2VydFJlc3VsdC5zZWNvbmQpIHsK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29yZEFs
bG9jYXRpb24gc2F3IG9iamVjdCAldSBmb3IgdGhlIHNlY29uZCB0aW1lIiwgb2JqZWN0SUQpOwor
ICAgICAgICBXVEZMb2dBbHdheXMoIldhcyBwcmV2aW91c2x5IGFsbG9jYXRlZCBhdDoiKTsKKyAg
ICAgICAgYXV0byYgY2FsbFNpdGVEYXRhID0gKmluc2VydFJlc3VsdC5maXJzdC0+c2Vjb25kOwor
ICAgICAgICBjb25zdCBzaXplX3QgZnJhbWVzVG9Ta2lwID0gMDsKKyAgICAgICAgV1RGUHJpbnRC
YWNrdHJhY2UoY2FsbFNpdGVEYXRhLmFsbG9jYXRpb25TdGFjay5hcnJheSgpICsgZnJhbWVzVG9T
a2lwLCBjYWxsU2l0ZURhdGEuYWxsb2NhdGlvblN0YWNrLnNpemUoKSAtIGZyYW1lc1RvU2tpcCk7
CisgICAgfQorCisgICAgcmV0dXJuIG9iamVjdElEOworfQorCit2b2lkIENvbnRhaW5lckNhcGFj
aXR5VHJhY2tlcjo6cmVjb3JkU2l6ZUFuZENhcGFjaXR5KFRyYWNrZWRJRCBvYmplY3RJRCwgc2l6
ZV90IHNpemUsIHNpemVfdCBjYXBhY2l0eSkKK3sKKyAgICBBU1NFUlQoc2l6ZSA8PSBjYXBhY2l0
eSk7CisKKyAgICBpZiAoIW9iamVjdElEKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8c3RkOjpyZWN1cnNpdmVfbXV0ZXg+IGxvY2tIb2xkZXIobV9tdXRleCk7CisKKyAg
ICBpZiAobV9hdm9pZFJlZW50cmFuY3kpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgYXZv
aWRSZWVudHJhbmN5ID0gdHJ1ZTsKKyAgICBBdm9pZFJlY29yZGluZ1Njb3BlIHNjb3BlKCp0aGlz
LCAmYXZvaWRSZWVudHJhbmN5KTsKKworICAgIGF1dG8gaXQgPSBtX2ltcGwtPm1fdHJhY2tlZElE
VG9Db250YWluZXJEYXRhLmZpbmQob2JqZWN0SUQpOworICAgIGlmIChpdCAhPSBtX2ltcGwtPm1f
dHJhY2tlZElEVG9Db250YWluZXJEYXRhLmVuZCgpKSB7CisgICAgICAgIGl0LT5zZWNvbmQtPnNp
emUgPSBzaXplOworICAgICAgICBpdC0+c2Vjb25kLT5jYXBhY2l0eSA9IGNhcGFjaXR5OworICAg
IH0gZWxzZQorICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlciAl
cCByZWNvcmRTaXplQW5kQ2FwYWNpdHkgZmFpbGVkIHRvIGZpbmQgb2JqZWN0ICV1IiwgdGhpcywg
b2JqZWN0SUQpOworfQorCit2b2lkIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlcjo6cmVjb3JkRnJl
ZShUcmFja2VkSUQgb2JqZWN0SUQpCit7CisgICAgaWYgKCFvYmplY3RJRCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2NrSG9s
ZGVyKG1fbXV0ZXgpOworCisgICAgaWYgKG1fYXZvaWRSZWVudHJhbmN5KQorICAgICAgICByZXR1
cm47CisKKyAgICBib29sIGF2b2lkUmVlbnRyYW5jeSA9IHRydWU7CisgICAgQXZvaWRSZWNvcmRp
bmdTY29wZSBzY29wZSgqdGhpcywgJmF2b2lkUmVlbnRyYW5jeSk7CisKKyAgICBhdXRvIHJlbW92
ZWRDb3VudCA9IG1faW1wbC0+bV90cmFja2VkSURUb0NvbnRhaW5lckRhdGEuZXJhc2Uob2JqZWN0
SUQpOworICAgIGlmICghcmVtb3ZlZENvdW50KQorICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRh
aW5lckNhcGFjaXR5VHJhY2tlcjo6cmVjb3JkRnJlZSBnb3QgaWQgJXUgZm9yIHdoaWNoIHRoZXJl
IGlzIG5vIGVudHJ5Iiwgb2JqZWN0SUQpOworfQorCitzdGQ6OnZlY3RvcjxBbGxvY2F0aW9uQ2Fs
bFNpdGVEYXRhPiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OmFnZ3JlZ2F0ZUJ5Q2FsbFNpdGUo
Y29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFRyYWNrZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRlRGF0
YSYpPiYgcGVyT2JqZWN0Q2FsbGJhY2spCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6cmVj
dXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1fbXV0ZXgpOworCisgICAgYm9vbCBhdm9pZFJlZW50
cmFuY3kgPSB0cnVlOworICAgIEF2b2lkUmVjb3JkaW5nU2NvcGUgc2NvcGUoKnRoaXMsICZhdm9p
ZFJlZW50cmFuY3kpOworCisgICAgdHlwZWRlZiB1bnNpZ25lZCBTdGFja1Nob3RIYXNoOworICAg
IHN0ZDo6dW5vcmRlcmVkX21hcDxTdGFja1Nob3RIYXNoLCBzdGQ6OnVuaXF1ZV9wdHI8QWxsb2Nh
dGlvbkNhbGxTaXRlRGF0YT4+IGNhbGxTaXRlVG9BbGxvY2F0aW9uQWdncmVnYXRlOworCisgICAg
Zm9yIChjb25zdCBhdXRvJiBpdCA6IG1faW1wbC0+bV90cmFja2VkSURUb0NvbnRhaW5lckRhdGEp
IHsKKyAgICAgICAgY29uc3QgQ29udGFpbmVyQWxsb2NhdGlvbkRhdGEmIGFsbG9jYXRpb25EYXRh
ID0gKml0LnNlY29uZDsKKworICAgICAgICBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKiBjYWxsU2l0
ZURhdGE7CisKKyAgICAgICAgYXV0byBmaW5kSXQgPSBjYWxsU2l0ZVRvQWxsb2NhdGlvbkFnZ3Jl
Z2F0ZS5maW5kKGFsbG9jYXRpb25EYXRhLmFsbG9jYXRpb25TdGFjay5oYXNoKCkpOworICAgICAg
ICBpZiAoZmluZEl0ID09IGNhbGxTaXRlVG9BbGxvY2F0aW9uQWdncmVnYXRlLmVuZCgpKSB7Cisg
ICAgICAgICAgICBhdXRvIGluc2VydEl0ID0gY2FsbFNpdGVUb0FsbG9jYXRpb25BZ2dyZWdhdGUu
aW5zZXJ0KHsgYWxsb2NhdGlvbkRhdGEuYWxsb2NhdGlvblN0YWNrLmhhc2goKSwgc3RkOjptYWtl
X3VuaXF1ZTxBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhPihhbGxvY2F0aW9uRGF0YS5hbGxvY2F0aW9u
U3RhY2spIH0pOworICAgICAgICAgICAgY2FsbFNpdGVEYXRhID0gaW5zZXJ0SXQuZmlyc3QtPnNl
Y29uZC5nZXQoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjYWxsU2l0ZURhdGEgPSBm
aW5kSXQtPnNlY29uZC5nZXQoKTsKKworICAgICAgICBjYWxsU2l0ZURhdGEtPmNvdW50ICs9IDE7
CisgICAgICAgIGNhbGxTaXRlRGF0YS0+dXNlZFNpemUgKz0gYWxsb2NhdGlvbkRhdGEuc2l6ZTsK
KyAgICAgICAgY2FsbFNpdGVEYXRhLT5jYXBhY2l0eSArPSBhbGxvY2F0aW9uRGF0YS5jYXBhY2l0
eTsKKworICAgICAgICBwZXJPYmplY3RDYWxsYmFjayhpdC5maXJzdCwgKmNhbGxTaXRlRGF0YSk7
CisgICAgfQorCisgICAgc3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4gcmVzdWx0
OworICAgIGZvciAoYXV0byYgaXQgOiBjYWxsU2l0ZVRvQWxsb2NhdGlvbkFnZ3JlZ2F0ZSkKKyAg
ICAgICAgcmVzdWx0LnB1c2hfYmFjayhBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKCppdC5zZWNvbmQp
KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzk3OGUyYTdl
MTI4YWMzNWYzM2QyNjc4MWQxNTI4ODk1MGZhNWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmgKQEAgLTAsMCArMSw4MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHZlY3Rvcj4K
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCituYW1l
c3BhY2UgV1RGIHsKKworY2xhc3MgU3RhY2tTaG90OworCitzdHJ1Y3QgQWxsb2NhdGlvbkNhbGxT
aXRlRGF0YSB7CisgICAgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YShzaXplX3Qgc3RhY2tEZXB0aCA9
IDAsIHNpemVfdCA9IDAsIHNpemVfdCBjYXBhY2l0eSA9IDApOworICAgIEFsbG9jYXRpb25DYWxs
U2l0ZURhdGEoY29uc3QgU3RhY2tTaG90Jik7CisgICAgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YShj
b25zdCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5B
bGxvY2F0aW9uQ2FsbFNpdGVEYXRhKCk7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3Qg
U3RhY2tTaG90JiBzdGFjaygpIGNvbnN0OworCisgICAgc2l6ZV90IGNvdW50IHsgMCB9OworICAg
IHNpemVfdCB1c2VkU2l6ZSB7IDAgfTsKKyAgICBzaXplX3QgY2FwYWNpdHkgeyAwIH07CisKK3By
aXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0YWNrU2hvdD4gbV9zdGFjazsgLy8gTmVlZGVk
IHRvIGhpZGUgU3RhY2tTaG90IHRvIGF2b2lkIGNpcmN1bGFyIGluY2x1ZGVzLgorfTsKKwordHlw
ZWRlZiB1bnNpZ25lZCBUcmFja2VkSUQ7CisKK2NsYXNzIENvbnRhaW5lckNhcGFjaXR5VHJhY2tl
ciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyKTsK
KyAgICBmcmllbmQgY2xhc3MgQXZvaWRSZWNvcmRpbmdTY29wZTsKK3B1YmxpYzoKKyAgICAvLyBD
YWxsIHNpdGVzIGFyZSBhZ2dyZWdhdGVkIGJ5IGNhbGwgc3RhY2ssIHVzaW5nIGFnZ3JlZ2F0aW9u
U3RhY2tEZXB0aCBmcmFtZXMuCisgICAgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyKHNpemVfdCBh
Z2dyZWdhdGlvblN0YWNrRGVwdGggPSAyNSk7CisgICAgCisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFRyYWNrZWRJRCByZWNvcmRBbGxvY2F0aW9uKHNpemVfdCwgc2l6ZV90IGNhcGFjaXR5KTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWNvcmRTaXplQW5kQ2FwYWNpdHkoVHJhY2tlZElE
LCBzaXplX3QsIHNpemVfdCBjYXBhY2l0eSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
cmVjb3JkRnJlZShUcmFja2VkSUQpOworICAgIAorICAgIC8vIFJldHVybiBhIHZlY3RvciBvZiBw
ZXIgY2FsbHNpdGUgZGF0YTsgc2l6ZSBhbmQgY2FwYWNpdHkgYXJlIHN1bW1lZCBmb3IgYWxsIGFs
bG9jYXRpb25zIHdpdGggYSBnaXZlbiBjYWxsIHNpdGUuCisgICAgLy8gVGhlIHBhc3NlZCBmdW5j
dGlvbiBhbGxvd3MgdGhlIGNhbGxlciB0byBkbyBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgcGVyIGFs
bG9jYXRpb24uCisgICAgc3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4gYWdncmVn
YXRlQnlDYWxsU2l0ZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoVHJhY2tlZElELCBBbGxvY2F0
aW9uQ2FsbFNpdGVEYXRhJik+Jik7CisKK3ByaXZhdGU6CisgICAgLy8gVXNlIGEgcGltcGwgdG8g
YXZvaWQgY2lyY3VsYXIgaW5jbHVkZXMgYmV0d2VlbiBvdXIgaGVhZGVyIGFuZCB0aGUgY29udGFp
bmVyIGNsYXNzIGhlYWRlcnMuCisgICAgc3RydWN0IENvbnRhaW5lckNhcGFjaXR5VHJhY2tlcklt
cGw7CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGw+IG1f
aW1wbDsKKyAgICBzdGQ6OnJlY3Vyc2l2ZV9tdXRleCBtX211dGV4OworICAgIFRyYWNrZWRJRCBt
X25leHRJRCB7IDAgfTsKKyAgICBjb25zdCBzaXplX3QgbV9hZ2dyZWdhdGlvblN0YWNrRGVwdGg7
CisgICAgYm9vbCogbV9hdm9pZFJlZW50cmFuY3kgeyBudWxscHRyIH07Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDb250YWluZXJDYXBhY2l0eVRyYWNrZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuY3BwIGIvU291cmNlL1dURi93dGYvSGFz
aFRhYmxlLmNwcAppbmRleCA1M2I0Y2RiYWUyOGFhZjk4NmI1ZWI2ZTUyZTA2NDI0ZDYyZDAxYzA1
Li4wOTM0ZjAxZjVlN2I1YTA5YTdiZGYxZDc4ZDllYjUxZDk4MzlkN2VmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJs
ZS5jcHAKQEAgLTI0LDYgKzI0LDE3IEBACiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lU
WQorI2luY2x1ZGUgPHd0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPG5v
dGlmeS5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1Nob3QuaD4KKyNlbmRpZgorCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdURiB7CiAKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIo
SGFzaFRhYmxlKTsKQEAgLTY2LDYgKzc3LDY4IEBAIHZvaWQgSGFzaFRhYmxlU3RhdHM6OmR1bXBT
dGF0cygpCiAgICAgZGF0YUxvZ0YoIiVkIHJlaW5zZXJ0c1xuIiwgbnVtUmVpbnNlcnRzLmxvYWQo
KSk7CiB9CiAKKyNlbmRpZiAvLyBEVU1QX0hBU0hUQUJMRV9TVEFUUworCisjaWYgVFJBQ0tfSEFT
SFRBQkxFX0NBUEFDSVRZCisKKyNpZiBQTEFURk9STShDT0NPQSkKK3N0YXRpYyB2b2lkIGR1bXBX
YXN0ZWRIYXNoVGFibGVDYXBhY2l0eSgpCit7CisgICAgYXV0byBjYWxsU2l0ZURhdGEgPSBoYXNo
VGFibGVUcmFja2VyKCkuYWdncmVnYXRlQnlDYWxsU2l0ZShbXSAoVHJhY2tlZElELCBBbGxvY2F0
aW9uQ2FsbFNpdGVEYXRhJikgeworICAgIH0pOworCisgICAgLy8gTWFrZSBhIHZlY3RvciBvZiBy
YXcgcG9pbnRlcnMgc28gd2UgY2FuIHNvcnQgdGhlbS4KKyAgICBzdGQ6OnZlY3RvcjxBbGxvY2F0
aW9uQ2FsbFNpdGVEYXRhKj4gY2FsbFNpdGVQdHJzOworICAgIGZvciAoY29uc3QgYXV0byYgc2l0
ZURhdGEgOiBjYWxsU2l0ZURhdGEpIHsKKyAgICAgICAgaWYgKCFzaXRlRGF0YS5jYXBhY2l0eSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYWxsU2l0ZVB0cnMucHVzaF9iYWNrKGNv
bnN0X2Nhc3Q8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSo+KCZzaXRlRGF0YSkpOworICAgIH0KKwor
ICAgIC8vIFNvcnQgYnkgcmV2ZXJzZSB3YXN0YWdlLgorICAgIHN0ZDo6c29ydChjYWxsU2l0ZVB0
cnMuYmVnaW4oKSwgY2FsbFNpdGVQdHJzLmVuZCgpLCBbXSAoY29uc3QgQWxsb2NhdGlvbkNhbGxT
aXRlRGF0YSogYSwgY29uc3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogYikgeworICAgICAgICBz
aXplX3QgYVdhc3RhZ2UgPSBhLT5jYXBhY2l0eSAtIGEtPnVzZWRTaXplOworICAgICAgICBzaXpl
X3QgYldhc3RhZ2UgPSBiLT5jYXBhY2l0eSAtIGItPnVzZWRTaXplOworICAgICAgICByZXR1cm4g
YVdhc3RhZ2UgPiBiV2FzdGFnZTsKKyAgICB9KTsKKworICAgIGNvbnN0IHNpemVfdCBtYXhDb3Vu
dCA9IDEwMDsKKworICAgIFdURkxvZ0Fsd2F5cygiJWx1IGNhbGwgc2l0ZXMgY3JlYXRlZCBIYXNo
VGFibGVzICh2aWEgSGFzaE1hcCBvciBIYXNoU2V0KS4gU2hvd2luZyAlbHUgc2l0ZXMgd2l0aCBt
b3N0IHdhc3RhZ2U6XG4iLCBjYWxsU2l0ZURhdGEuc2l6ZSgpLCBtYXhDb3VudCk7CisKKyAgICBz
aXplX3QgY291bnQgPSAwOworICAgIGZvciAoYXV0byBzaXRlRGF0YSA6IGNhbGxTaXRlUHRycykg
eworICAgICAgICBpZiAoY291bnQrKyA9PSBtYXhDb3VudCkKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIFdURkxvZ0Fsd2F5cygiV2FzdGVkIGNhcGFjaXR5OiAlbHUgYnl0ZXMgKHVzZWQg
JWx1IG9mICVsdSBieXRlcywgdXRpbGl6YXRpb246ICUuMmYlJSkgLSAlbHUgYWxsb2NhdGlvbnNc
biIsCisgICAgICAgICAgICBzaXRlRGF0YS0+Y2FwYWNpdHkgLSBzaXRlRGF0YS0+dXNlZFNpemUs
CisgICAgICAgICAgICBzaXRlRGF0YS0+dXNlZFNpemUsIHNpdGVEYXRhLT5jYXBhY2l0eSwgMTAw
LjAgKiBzaXRlRGF0YS0+dXNlZFNpemUgLyBzaXRlRGF0YS0+Y2FwYWNpdHksCisgICAgICAgICAg
ICBzaXRlRGF0YS0+Y291bnQpOworICAgICAgICBjb25zdCBzaXplX3QgZnJhbWVzVG9Ta2lwID0g
NzsKKyAgICAgICAgV1RGUHJpbnRCYWNrdHJhY2Uoc2l0ZURhdGEtPnN0YWNrKCkuYXJyYXkoKSAr
IGZyYW1lc1RvU2tpcCwgc2l0ZURhdGEtPnN0YWNrKCkuc2l6ZSgpIC0gZnJhbWVzVG9Ta2lwKTsK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJcbiIpOworICAgIH0KK30KKyNlbmRpZgorCitDb250YWlu
ZXJDYXBhY2l0eVRyYWNrZXImIGhhc2hUYWJsZVRyYWNrZXIoKQoreworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKKyAgICBzdGQ6
OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgW10geworICAgICAgICBpbnQgdG9rZW47CisgICAg
ICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaCgiY29tLmFwcGxlLldlYktpdC5kdW1wSGFzaFRh
YmxlQ2FwYWNpdHkiLCAmdG9rZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oaW50KSB7
CisgICAgICAgICAgICBkdW1wV2FzdGVkSGFzaFRhYmxlQ2FwYWNpdHkoKTsKKyAgICAgICAgfSk7
CisgICAgfSk7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OkNvbnRh
aW5lckNhcGFjaXR5VHJhY2tlcj4gdHJhY2tlcjsKKyAgICByZXR1cm4gdHJhY2tlcjsKK30KKwor
I2VuZGlmIC8vIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorCiB9IC8vIG5hbWVzcGFjZSBXVEYK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0
Zi9IYXNoVGFibGUuaAppbmRleCAwYTBhYjAxZGRmODg4NzVmOGU4NWEyMWUwZDAxNGJmMTkxNWIz
Zjk5Li5lYmU3ZTY0NzZmM2VmOGE3ODVjOGYyOTQxOWU3YzRmYzliNjk2OGM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFi
bGUuaApAQCAtNDQsOCArNDQsMjAgQEAKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2VuZGlm
CiAKKy8vIEVuYWJsZSBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkgdG8gdHJhY2sgY2FsbCBzaXRl
cyB0aGF0IHdhc3RlIEhhc2hUYWJsZSBjYXBhY2l0eS4gT24gQ29jb2EgcGxhdGZvcm1zLCB0aGUg
ZGF0YSBjYW4gYmUgZHVtcGVkCisvLyBieSBydW5uaW5nICJub3RpZnl1dGlsIC1wIGNvbS5hcHBs
ZS5XZWJLaXQuZHVtcEhhc2hUYWJsZUNhcGFjaXR5Ii4KKyNkZWZpbmUgVFJBQ0tfSEFTSFRBQkxF
X0NBUEFDSVRZIDEKKworI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorI2luY2x1ZGUgPHd0
Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsK
IAorI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorV1RGX0VYUE9SVF9QUklWQVRFIENvbnRh
aW5lckNhcGFjaXR5VHJhY2tlciYgaGFzaFRhYmxlVHJhY2tlcigpOworI2VuZGlmCisKIERFQ0xB
UkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAKIC8vIEVuYWJs
ZXMgaW50ZXJuYWwgV1RGIGNvbnNpc3RlbmN5IGNoZWNrcyB0aGF0IGFyZSBpbnZva2VkIGF1dG9t
YXRpY2FsbHkuIE5vbi1XVEYgY2FsbGVycyBjYW4gY2FsbCBjaGVja1RhYmxlQ29uc2lzdGVuY3ko
KSBldmVuIGlmIGludGVybmFsIGNoZWNrcyBhcmUgZGlzYWJsZWQuCkBAIC0zNzAsNiArMzgyLDEx
IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAj
aWYgQ0hFQ0tfSEFTSFRBQkxFX1VTRV9BRlRFUl9ERVNUUlVDVElPTgogICAgICAgICAgICAgbV90
YWJsZSA9IChWYWx1ZVR5cGUqKSh1aW50cHRyX3QpMHhiYmFkYmVlZjsKICNlbmRpZgorCisjaWYg
VFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgICAgICBoYXNoVGFibGVUcmFja2VyKCku
cmVjb3JkRnJlZShtX3RyYWNrZWRJRCk7CisgICAgICAgICAgICBtX3RyYWNrZWRJRCA9IDA7Cisj
ZW5kaWYKICAgICAgICAgfQogCiAgICAgICAgIEhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmKTsK
QEAgLTQxOSw2ICs0MzYsOSBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklF
UihIYXNoVGFibGUpOwogICAgICAgICAgICAgbV90YWJsZSA9IGFsbG9jYXRlVGFibGUobmV3VGFi
bGVTaXplKTsKICAgICAgICAgfQogCisgICAgICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0
OworICAgICAgICBzaXplX3QgY2FwYWNpdHlJbkJ5dGVzKCkgY29uc3Q7CisKICAgICAgICAgQWRk
UmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBhZGQ8SWRlbnRpdHlU
cmFuc2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0KHZhbHVlKSwgdmFsdWUpOyB9CiAgICAg
ICAgIEFkZFJlc3VsdCBhZGQoVmFsdWVUeXBlJiYgdmFsdWUpIHsgcmV0dXJuIGFkZDxJZGVudGl0
eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpLCBXVEZNb3ZlKHZhbHVl
KSk7IH0KIApAQCAtNTMwLDYgKzU1MCwxMCBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBf
SURFTlRJRklFUihIYXNoVGFibGUpOwogICAgICAgICB1bnNpZ25lZCBtX2tleUNvdW50OwogICAg
ICAgICB1bnNpZ25lZCBtX2RlbGV0ZWRDb3VudDsKIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBB
Q0lUWQorICAgICAgICBUcmFja2VkSUQgbV90cmFja2VkSUQgeyAwIH07CisjZW5kaWYKKwogI2lm
IENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKICAgICBwdWJsaWM6CiAgICAgICAgIC8vIEFsbCBh
Y2Nlc3MgdG8gbV9pdGVyYXRvcnMgc2hvdWxkIGJlIGd1YXJkZWQgd2l0aCBtX211dGV4LgpAQCAt
NTk3LDYgKzYyMSw5IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhh
c2hUYWJsZSk7CiAgICAgICAgICwgbV9zdGF0cyhtYWtlVW5pcXVlPFN0YXRzPigpKQogI2VuZGlm
CiAgICAgeworI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorICAgICAgICBtX3RyYWNrZWRJ
RCA9IGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRBbGxvY2F0aW9uKDAsIDApOworI2VuZGlmCiAg
ICAgfQogCiAgICAgaW5saW5lIHVuc2lnbmVkIGRvdWJsZUhhc2godW5zaWduZWQga2V5KQpAQCAt
OTc5LDcgKzEwMDYsMTEgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIo
SGFzaFRhYmxlKTsKICAgICAgICAgICAgIGVudHJ5ID0gZXhwYW5kKGVudHJ5KTsKIAogICAgICAg
ICBpbnRlcm5hbENoZWNrVGFibGVDb25zaXN0ZW5jeSgpOwotICAgICAgICAKKworI2lmIFRSQUNL
X0hBU0hUQUJMRV9DQVBBQ0lUWQorICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6
ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMo
KSk7CisjZW5kaWYKKwogICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVy
YXRvcihlbnRyeSksIHRydWUpOwogICAgIH0KIApAQCAtMTAxOCw2ICsxMDQ5LDEwIEBAIERFQ0xB
UkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAKICAgICAgICAg
aW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9D
QVBBQ0lUWQorICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5
KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYK
KwogICAgICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSks
IHRydWUpOwogICAgIH0KIApAQCAtMTAzOCw2ICsxMDczLDEwIEBAIERFQ0xBUkVfQUxMT0NBVE9S
X1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgIG5ld0VudHJ5LT5+VmFs
dWUoKTsKICAgICAgICAgbmV3IChOb3ROdWxsLCBuZXdFbnRyeSkgVmFsdWVUeXBlKFdURk1vdmUo
ZW50cnkpKTsKIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorICAgICAgICBoYXNoVGFi
bGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRl
cygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKKwogICAgICAgICByZXR1cm4gbmV3RW50
cnk7CiAgICAgfQogCkBAIC0xMTExLDYgKzExNTAsMTAgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lU
SF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICAgICAgaWYgKHNob3VsZFNocmluaygp
KQogICAgICAgICAgICAgc2hyaW5rKCk7CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkK
KyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNr
ZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCisKICAgICAg
ICAgaW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKICAgICB9CiAKQEAgLTExNzMsNyAr
MTIxNiwxMSBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFi
bGUpOwogCiAgICAgICAgIGlmIChzaG91bGRTaHJpbmsoKSkKICAgICAgICAgICAgIHNocmlua1Rv
QmVzdFNpemUoKTsKLSAgICAgICAgCisKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAg
ICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJ
RCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCisKICAgICAgICAg
aW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKICAgICAgICAgcmV0dXJuIHJlbW92ZWRC
dWNrZXRDb3VudDsKICAgICB9CkBAIC0xMzEwLDYgKzEzNTcsMTAgQEAgREVDTEFSRV9BTExPQ0FU
T1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKIAogICAgICAgICBIYXNoVGFibGVN
YWxsb2M6OmZyZWUob2xkVGFibGUpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisg
ICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2Vk
SUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAg
IGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybiBuZXdFbnRy
eTsKICAgICB9CkBAIC0xMzI3LDYgKzEzNzgsMTAgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9I
RUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICAgICAgbV90YWJsZVNpemVNYXNrID0gMDsK
ICAgICAgICAgbV9rZXlDb3VudCA9IDA7CiAgICAgICAgIG1fZGVsZXRlZENvdW50ID0gMDsKKwor
I2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorICAgICAgICBoYXNoVGFibGVUcmFja2VyKCku
cmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0
eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgpAQCAtMTM0NCw2ICsxMzk5
LDEwIEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7
CiAgICAgICAgICwgbV9zdGF0cyhtYWtlVW5pcXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykpCiAj
ZW5kaWYKICAgICB7CisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIG1fdHJh
Y2tlZElEID0gaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZEFsbG9jYXRpb24oc2l6ZUluQnl0ZXMo
KSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCisKICAgICAgICAgdW5zaWduZWQgb3RoZXJL
ZXlDb3VudCA9IG90aGVyLnNpemUoKTsKICAgICAgICAgaWYgKCFvdGhlcktleUNvdW50KQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTM1NSw2ICsxNDE0LDEwIEBAIERFQ0xBUkVfQUxMT0NBVE9S
X1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAKICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBvdGhlclZhbHVlIDogb3RoZXIpCiAgICAgICAgICAgICBhZGRVbmlxdWVGb3JJbml0aWFs
aXphdGlvbjxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3Qob3RoZXJW
YWx1ZSksIG90aGVyVmFsdWUpOworCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAg
ICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQs
IHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rv
ciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlU
cmFpdHM+CkBAIC0xMzY5LDYgKzE0MzIsMTQgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQ
X0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICAgICAgc3RkOjpzd2FwKG1fa2V5Q291bnQsIG90
aGVyLm1fa2V5Q291bnQpOwogICAgICAgICBzdGQ6OnN3YXAobV9kZWxldGVkQ291bnQsIG90aGVy
Lm1fZGVsZXRlZENvdW50KTsKIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorICAgICAg
ICBzdGQ6OnN3YXAobV90cmFja2VkSUQsIG90aGVyLm1fdHJhY2tlZElEKTsKKworICAgICAgICAv
LyBOb3Qgc3VyZSBpZiB0aGlzIGlzIG5lY2Vzc2FyeS4gTm90aGluZyB3aWxsIGhhdmUgY2hhbmdl
ZC4KKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3Ry
YWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworICAgICAgICBoYXNo
VGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG90aGVyLm1fdHJhY2tlZElELCBv
dGhlci5zaXplSW5CeXRlcygpLCBvdGhlci5jYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKKwog
I2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQogICAgICAgICBtX3N0YXRzLnN3YXAo
b3RoZXIubV9zdGF0cyk7CiAjZW5kaWYKQEAgLTEzOTcsNiArMTQ2OCwxMCBAQCBERUNMQVJFX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogICAgICAgICBtX2tleUNv
dW50ID0gb3RoZXIubV9rZXlDb3VudDsKICAgICAgICAgbV9kZWxldGVkQ291bnQgPSBvdGhlci5t
X2RlbGV0ZWRDb3VudDsKIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorICAgICAgICBz
dGQ6OnN3YXAobV90cmFja2VkSUQsIG90aGVyLm1fdHJhY2tlZElEKTsKKyNlbmRpZgorCiAgICAg
ICAgIG90aGVyLm1fdGFibGUgPSBudWxscHRyOwogICAgICAgICBvdGhlci5tX3RhYmxlU2l6ZSA9
IDA7CiAgICAgICAgIG90aGVyLm1fdGFibGVTaXplTWFzayA9IDA7CkBAIC0xNDA3LDYgKzE0ODIs
MTEgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsK
ICAgICAgICAgbV9zdGF0cyA9IFdURk1vdmUob3RoZXIubV9zdGF0cyk7CiAgICAgICAgIG90aGVy
Lm1fc3RhdHMgPSBudWxscHRyOwogI2VuZGlmCisKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJ
VFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3Ry
YWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworICAgICAgICBoYXNo
VGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG90aGVyLm1fdHJhY2tlZElELCBv
dGhlci5zaXplSW5CeXRlcygpLCBvdGhlci5jYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPgpAQCAtMTQxNyw2ICsxNDk3LDE4IEBAIERFQ0xBUkVfQUxMT0NBVE9S
X1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHNpemVfdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnNpemVJbkJ5dGVzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzaXplKCkgKiBzaXplb2YoVmFsdWVUeXBlKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHNpemVfdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNhcGFjaXR5SW5CeXRl
cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY2FwYWNpdHkoKSAqIHNpemVvZihWYWx1
ZVR5cGUpOworICAgIH0KKwogI2lmIEFTU0VSVF9FTkFCTEVECiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9TaXpl
TGltaXRzLmNwcAppbmRleCAwYmViYmMyNjdjNWViNGQ4MTk4YTU0NmZjMjQ0YWJkZGNmZjlhY2Rh
Li5iY2YzYmE3NzI1ODU3ZGEyZDg0MjA3YmZiMzBkM2UyMWIxNjk5ZTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9TaXplTGltaXRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TaXplTGlt
aXRzLmNwcApAQCAtODMsOSArODMsMTIgQEAgc3RydWN0IFNhbWVTaXplQXNWZWN0b3JXaXRoSW5s
aW5lQ2FwYWNpdHkgOiBTYW1lU2l6ZUFzVmVjdG9yV2l0aElubGluZUNhcGFjaXR5QmEKICAgICB0
eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2YoVCksIHN0ZDo6YWxpZ25tZW50X29m
PFQ+Ojp2YWx1ZT46OnR5cGUgaW5saW5lQnVmZmVyW2lubGluZUNhcGFjaXR5XTsKIH07CiAKKyNp
ZiAhVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihWZWN0b3I8aW50
PikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNpdHk8aW50PiksICJW
ZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihWZWN0b3I8
aW50LCAxPikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNpdHk8aW50
LCAxPiksICJWZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihWZWN0b3I8aW50LCAyPikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5lQ2Fw
YWNpdHk8aW50LCAyPiksICJWZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7CiBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihWZWN0b3I8aW50LCAzPikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JXaXRo
SW5saW5lQ2FwYWNpdHk8aW50LCAzPiksICJWZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7Cisj
ZW5kaWYKKwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuY3Bw
IGIvU291cmNlL1dURi93dGYvVmVjdG9yLmNwcAppbmRleCA2YTJiNDdjZmNiNzJlNmIzYjljNWJk
YjU3ODExMTYwY2YzN2RkOWZhLi4yNjEzMGFiNDgyNWUwOTJhZDBjNTNlMGVlMzU0YjkxYjk3ZjEy
ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1ZlY3Rvci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTEwLDI2ICsxMCw5MSBAQAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KICAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlZlY3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lmIFRSQUNL
X1ZFQ1RPUl9DQVBBQ0lUWQorI2luY2x1ZGUgPHd0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIu
aD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09B
KQorI2luY2x1ZGUgPG5vdGlmeS5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1Nob3QuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV1RGIHsKIAotREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJ
RklFUihWZWN0b3IpOworI2lmIFBMQVRGT1JNKENPQ09BKQorc3RhdGljIHZvaWQgZHVtcFdhc3Rl
ZFZlY3RvckNhcGFjaXR5KCkKK3sKKyAgICBhdXRvIGNhbGxTaXRlRGF0YSA9IHZlY3RvclRyYWNr
ZXIoKS5hZ2dyZWdhdGVCeUNhbGxTaXRlKFtdIChUcmFja2VkSUQsIEFsbG9jYXRpb25DYWxsU2l0
ZURhdGEmKSB7CisgICAgfSk7CisKKyAgICAvLyBNYWtlIGEgdmVjdG9yIG9mIHJhdyBwb2ludGVy
cyBzbyB3ZSBjYW4gc29ydCB0aGVtLgorICAgIHN0ZDo6dmVjdG9yPEFsbG9jYXRpb25DYWxsU2l0
ZURhdGEqPiBjYWxsU2l0ZVB0cnM7CisgICAgZm9yIChjb25zdCBhdXRvJiBzaXRlRGF0YSA6IGNh
bGxTaXRlRGF0YSkgeworICAgICAgICBpZiAoIXNpdGVEYXRhLmNhcGFjaXR5IHx8IChzaXRlRGF0
YS5jYXBhY2l0eSA9PSBzaXRlRGF0YS51c2VkU2l6ZSkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgY2FsbFNpdGVQdHJzLnB1c2hfYmFjayhjb25zdF9jYXN0PEFsbG9jYXRpb25DYWxs
U2l0ZURhdGEqPigmc2l0ZURhdGEpKTsKKyAgICB9CisKKyAgICAvLyBTb3J0IGJ5IHJldmVyc2Ug
d2FzdGFnZS4KKyAgICBzdGQ6OnNvcnQoY2FsbFNpdGVQdHJzLmJlZ2luKCksIGNhbGxTaXRlUHRy
cy5lbmQoKSwgW10gKGNvbnN0IEFsbG9jYXRpb25DYWxsU2l0ZURhdGEqIGEsIGNvbnN0IEFsbG9j
YXRpb25DYWxsU2l0ZURhdGEqIGIpIHsKKyAgICAgICAgcmV0dXJuIGEtPmNhcGFjaXR5ID4gYi0+
Y2FwYWNpdHk7CisgICAgICAgIC8vIHNpemVfdCBhV2FzdGFnZSA9IGEtPmNhcGFjaXR5IC0gYS0+
dXNlZFNpemU7CisgICAgICAgIC8vIHNpemVfdCBiV2FzdGFnZSA9IGItPmNhcGFjaXR5IC0gYi0+
dXNlZFNpemU7CisgICAgICAgIC8vIHJldHVybiBhV2FzdGFnZSA+IGJXYXN0YWdlOworICAgIH0p
OworCisgICAgY29uc3Qgc2l6ZV90IG1heENvdW50ID0gMjAwOworCisgICAgV1RGTG9nQWx3YXlz
KCIlbHUgY2FsbCBzaXRlcyBjcmVhdGVkIHZlY3RvcnMuIFNob3dpbmcgJWx1IHNpdGVzIHdpdGgg
bW9zdCB3YXN0YWdlOlxuIiwgY2FsbFNpdGVEYXRhLnNpemUoKSwgbWF4Q291bnQpOworCisgICAg
c2l6ZV90IGNvdW50ID0gMDsKKyAgICBmb3IgKGF1dG8gc2l0ZURhdGEgOiBjYWxsU2l0ZVB0cnMp
IHsKKyAgICAgICAgaWYgKGNvdW50KysgPT0gbWF4Q291bnQpCisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBXVEZMb2dBbHdheXMoIldhc3RlZCBjYXBhY2l0eTogJWx1IGJ5dGVzICh1c2Vk
ICVsdSBvZiAlbHUgYnl0ZXMsIHV0aWxpemF0aW9uOiAlLjJmJSUpIC0gJWx1IGFsbG9jYXRpb25z
XG4iLAorICAgICAgICAgICAgc2l0ZURhdGEtPmNhcGFjaXR5IC0gc2l0ZURhdGEtPnVzZWRTaXpl
LAorICAgICAgICAgICAgc2l0ZURhdGEtPnVzZWRTaXplLCBzaXRlRGF0YS0+Y2FwYWNpdHksIDEw
MC4wICogc2l0ZURhdGEtPnVzZWRTaXplIC8gc2l0ZURhdGEtPmNhcGFjaXR5LAorICAgICAgICAg
ICAgc2l0ZURhdGEtPmNvdW50KTsKKyAgICAgICAgY29uc3Qgc2l6ZV90IGZyYW1lc1RvU2tpcCA9
IDc7CisgICAgICAgIFdURlByaW50QmFja3RyYWNlKHNpdGVEYXRhLT5zdGFjaygpLmFycmF5KCkg
KyBmcmFtZXNUb1NraXAsIHNpdGVEYXRhLT5zdGFjaygpLnNpemUoKSAtIGZyYW1lc1RvU2tpcCk7
CisgICAgICAgIFdURkxvZ0Fsd2F5cygiXG4iKTsKKyAgICB9Cit9CisjZW5kaWYKKworQ29udGFp
bmVyQ2FwYWNpdHlUcmFja2VyJiB2ZWN0b3JUcmFja2VyKCkKK3sKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7CisgICAgc3RkOjpj
YWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFtdIHsKKyAgICAgICAgaW50IHRva2VuOworICAgICAg
ICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goImNvbS5hcHBsZS5XZWJLaXQuZHVtcFZlY3RvckNh
cGFjaXR5IiwgJnRva2VuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKGludCkgeworICAg
ICAgICAgICAgZHVtcFdhc3RlZFZlY3RvckNhcGFjaXR5KCk7CisgICAgICAgIH0pOworICAgIH0p
OworI2VuZGlmCisKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V1RGOjpDb250YWluZXJDYXBh
Y2l0eVRyYWNrZXI+IHRyYWNrZXI7CisgICAgcmV0dXJuIHRyYWNrZXI7Cit9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgorCisjZW5kaWYgLy8gVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmluZGV4
IDk3NzYzZTBmNGRmYmY5ZWEzYWNlZDMxNDM2OWRjMWRlYzI2NGZiY2QuLmJjMDNiODRiMWM4OGRj
MWMzNTg0NWVlMzMyNTY5YzExMjk3YTI4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Zl
Y3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC0zNiw2ICszNiwxNCBAQAog
I2luY2x1ZGUgPHd0Zi9WYWx1ZUNoZWNrLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3RvclRyYWl0cy5o
PgogCisvLyBFbmFibGUgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZIHRvIHRyYWNrIGNhbGwgc2l0ZXMg
dGhhdCB3YXN0ZSB2ZWN0b3IgY2FwYWNpdHkuIE9uIENvY29hIHBsYXRmb3JtcywgdGhlIGRhdGEg
Y2FuIGJlIGR1bXBlZAorLy8gYnkgcnVubmluZyAibm90aWZ5dXRpbCAtcCBjb20uYXBwbGUuV2Vi
S2l0LmR1bXBWZWN0b3JDYXBhY2l0eSIuCisjZGVmaW5lIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWSAx
CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyNpbmNsdWRlIDx3dGYvQ29udGFpbmVyQ2Fw
YWNpdHlUcmFja2VyLmg+CisjZW5kaWYKKwogI2lmIEFTQU5fRU5BQkxFRAogZXh0ZXJuICJDIiB2
b2lkIF9fc2FuaXRpemVyX2Fubm90YXRlX2NvbnRpZ3VvdXNfY29udGFpbmVyKGNvbnN0IHZvaWQq
IGJlZ2luLCBjb25zdCB2b2lkKiBlbmQsIGNvbnN0IHZvaWQqIG9sZF9taWQsIGNvbnN0IHZvaWQq
IG5ld19taWQpOwogI2VuZGlmCkBAIC00Niw2ICs1NCwxMCBAQCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKIG5hbWVzcGFjZSBXVEYgewogCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZ
CitXVEZfRVhQT1JUX1BSSVZBVEUgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyJiB2ZWN0b3JUcmFj
a2VyKCk7CisjZW5kaWYKKwogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIo
VmVjdG9yKTsKIAogdGVtcGxhdGUgPGJvb2wgbmVlZHNEZXN0cnVjdGlvbiwgdHlwZW5hbWUgVD4K
QEAgLTM0MCw2ICszNTIsMTcgQEAgY2xhc3MgVmVjdG9yQnVmZmVyQmFzZSB7CiAgICAgc3RhdGlj
IHB0cmRpZmZfdCBidWZmZXJNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
VmVjdG9yQnVmZmVyQmFzZSwgbV9idWZmZXIpOyB9CiAgICAgc2l6ZV90IGNhcGFjaXR5KCkgY29u
c3QgeyByZXR1cm4gbV9jYXBhY2l0eTsgfQogCisgICAgc2l6ZV90IGNhcGFjaXR5SW5CeXRlcygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jYXBhY2l0eSAqIHNpemVvZihUKTsKKyAg
ICB9CisKKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fc2l6ZSAqIHNpemVvZihUKTsKKyAgICB9CisKKwogICAgIE1hbGxvY1B0cjxULCBNYWxs
b2M+IHJlbGVhc2VCdWZmZXIoKQogICAgIHsKICAgICAgICAgVCogYnVmZmVyID0gbV9idWZmZXI7
CkBAIC0zNTQsNiArMzc3LDkgQEAgY2xhc3MgVmVjdG9yQnVmZmVyQmFzZSB7CiAgICAgICAgICwg
bV9jYXBhY2l0eSgwKQogICAgICAgICAsIG1fc2l6ZSgwKQogICAgIHsKKyNpZiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkKKyAgICAgICAgbV90cmFja2VkSUQgPSB2ZWN0b3JUcmFja2VyKCkucmVjb3Jk
QWxsb2NhdGlvbigwLCAwKTsKKyNlbmRpZgogICAgIH0KIAogICAgIFZlY3RvckJ1ZmZlckJhc2Uo
VCogYnVmZmVyLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCBzaXplKQpAQCAtMzYxLDE2ICszODcs
MjYgQEAgY2xhc3MgVmVjdG9yQnVmZmVyQmFzZSB7CiAgICAgICAgICwgbV9jYXBhY2l0eShjYXBh
Y2l0eSkKICAgICAgICAgLCBtX3NpemUoc2l6ZSkKICAgICB7CisjaWYgVFJBQ0tfVkVDVE9SX0NB
UEFDSVRZCisgICAgICAgIG1fdHJhY2tlZElEID0gdmVjdG9yVHJhY2tlcigpLnJlY29yZEFsbG9j
YXRpb24oc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQog
CiAgICAgflZlY3RvckJ1ZmZlckJhc2UoKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IEl0IHdv
dWxkIGJlIG5pY2UgdG8gZmluZCBhIHdheSB0byBBU1NFUlQgdGhhdCBtX2J1ZmZlciBoYXNuJ3Qg
bGVha2VkIGhlcmUuCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRy
YWNrZXIoKS5yZWNvcmRGcmVlKG1fdHJhY2tlZElEKTsKKyAgICAgICAgbV90cmFja2VkSUQgPSAw
OworI2VuZGlmCiAgICAgfQogCiAgICAgVCogbV9idWZmZXI7CiAgICAgdW5zaWduZWQgbV9jYXBh
Y2l0eTsKICAgICB1bnNpZ25lZCBtX3NpemU7IC8vIE9ubHkgdXNlZCBieSB0aGUgVmVjdG9yIHN1
YmNsYXNzLCBidXQgcGxhY2VkIGhlcmUgdG8gYXZvaWQgcGFkZGluZyB0aGUgc3RydWN0LgorI2lm
IFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIFRyYWNrZWRJRCBtX3RyYWNrZWRJRCB7IDAgfTsK
KyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBNYWxsb2MgPSBWZWN0b3JNYWxsb2M+IGNsYXNzIFZlY3RvckJ1ZmZlcjsKQEAg
LTQwMiw2ICs0MzgsOSBAQCBjbGFzcyBWZWN0b3JCdWZmZXI8VCwgMCwgTWFsbG9jPiA6IHByaXZh
dGUgVmVjdG9yQnVmZmVyQmFzZTxULCBNYWxsb2M+IHsKICAgICB7CiAgICAgICAgIHN0ZDo6c3dh
cChtX2J1ZmZlciwgb3RoZXIubV9idWZmZXIpOwogICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0
eSwgb3RoZXIubV9jYXBhY2l0eSk7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAg
IHN0ZDo6c3dhcChtX3RyYWNrZWRJRCwgb3RoZXIubV90cmFja2VkSUQpOworI2VuZGlmCiAgICAg
fQogICAgIAogICAgIHZvaWQgcmVzdG9yZUlubGluZUJ1ZmZlcklmTmVlZGVkKCkgeyB9CkBAIC00
MjMsMTAgKzQ2MiwxNiBAQCBjbGFzcyBWZWN0b3JCdWZmZXI8VCwgMCwgTWFsbG9jPiA6IHByaXZh
dGUgVmVjdG9yQnVmZmVyQmFzZTxULCBNYWxsb2M+IHsKICAgICB1c2luZyBCYXNlOjpjYXBhY2l0
eTsKICAgICB1c2luZyBCYXNlOjpidWZmZXJNZW1vcnlPZmZzZXQ7CiAKKyAgICB1c2luZyBCYXNl
OjpjYXBhY2l0eUluQnl0ZXM7CisgICAgdXNpbmcgQmFzZTo6c2l6ZUluQnl0ZXM7CisKICAgICB1
c2luZyBCYXNlOjpyZWxlYXNlQnVmZmVyOwogCiBwcm90ZWN0ZWQ6CiAgICAgdXNpbmcgQmFzZTo6
bV9zaXplOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHVzaW5nIEJhc2U6Om1fdHJh
Y2tlZElEOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwpAQCAtNTE1LDYgKzU2MCwxMCBAQCBjbGFzcyBWZWN0b3JCdWZmZXIg
OiBwcml2YXRlIFZlY3RvckJ1ZmZlckJhc2U8VCwgTWFsbG9jPiB7CiAgICAgICAgICAgICBzdGQ6
OnN3YXAobV9idWZmZXIsIG90aGVyLm1fYnVmZmVyKTsKICAgICAgICAgICAgIHN0ZDo6c3dhcCht
X2NhcGFjaXR5LCBvdGhlci5tX2NhcGFjaXR5KTsKICAgICAgICAgfQorCisjaWYgVFJBQ0tfVkVD
VE9SX0NBUEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcChtX3RyYWNrZWRJRCwgb3RoZXIubV90cmFj
a2VkSUQpOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCByZXN0b3JlSW5saW5lQnVmZmVySWZO
ZWVkZWQoKQpAQCAtNTQ0LDYgKzU5Myw4IEBAIGNsYXNzIFZlY3RvckJ1ZmZlciA6IHByaXZhdGUg
VmVjdG9yQnVmZmVyQmFzZTxULCBNYWxsb2M+IHsKICAgICB1c2luZyBCYXNlOjpidWZmZXI7CiAg
ICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CiAgICAgdXNpbmcgQmFzZTo6YnVmZmVyTWVtb3J5T2Zm
c2V0OworICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5SW5CeXRlczsKKyAgICB1c2luZyBCYXNlOjpz
aXplSW5CeXRlczsKIAogICAgIE1hbGxvY1B0cjxULCBNYWxsb2M+IHJlbGVhc2VCdWZmZXIoKQog
ICAgIHsKQEAgLTU1NCw2ICs2MDUsOSBAQCBjbGFzcyBWZWN0b3JCdWZmZXIgOiBwcml2YXRlIFZl
Y3RvckJ1ZmZlckJhc2U8VCwgTWFsbG9jPiB7CiAKIHByb3RlY3RlZDoKICAgICB1c2luZyBCYXNl
OjptX3NpemU7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdXNpbmcgQmFzZTo6bV90
cmFja2VkSUQ7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICB1c2luZyBCYXNlOjptX2J1ZmZlcjsK
QEAgLTY2Myw2ICs3MTcsMTAgQEAgY2xhc3MgVmVjdG9yIDogcHJpdmF0ZSBWZWN0b3JCdWZmZXI8
VCwgaW5saW5lQ2FwYWNpdHksIE1hbGxvYz4gewogICAgICAgICByZXN1bHQubV9zaXplID0gc2l6
ZTsKIAogICAgICAgICByZXN1bHQudW5jaGVja2VkSW5pdGlhbGl6ZTwwPihzdGQ6OmZvcndhcmQ8
SXRlbXM+KGl0ZW1zKS4uLik7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAg
dmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShyZXN1bHQubV90cmFja2VkSUQs
IHJlc3VsdC5zaXplSW5CeXRlcygpLCByZXN1bHQuY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlm
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC02OTUsNiArNzUzLDkgQEAgY2xh
c3MgVmVjdG9yIDogcHJpdmF0ZSBWZWN0b3JCdWZmZXI8VCwgaW5saW5lQ2FwYWNpdHksIE1hbGxv
Yz4gewogICAgIHNpemVfdCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OmNhcGFjaXR5
KCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CiAKKyAg
ICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBCYXNlOjpzaXplSW5CeXRlcygp
OyB9CisgICAgc2l6ZV90IGNhcGFjaXR5SW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OmNh
cGFjaXR5SW5CeXRlcygpOyB9CisKICAgICBUJiBhdChzaXplX3QgaSkKICAgICB7CiAgICAgICAg
IGlmIChVTkxJS0VMWShpID49IHNpemUoKSkpCkBAIC04MjIsOSArODgzLDE3IEBAIGNsYXNzIFZl
Y3RvciA6IHByaXZhdGUgVmVjdG9yQnVmZmVyPFQsIGlubGluZUNhcGFjaXR5LCBNYWxsb2M+IHsK
IAogICAgICAgICBCYXNlOjpzd2FwKG90aGVyLCBtX3NpemUsIG90aGVyLm1fc2l6ZSk7CiAgICAg
ICAgIHN0ZDo6c3dhcChtX3NpemUsIG90aGVyLm1fc2l6ZSk7CisjaWYgVFJBQ0tfVkVDVE9SX0NB
UEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcChtX3RyYWNrZWRJRCwgb3RoZXIubV90cmFja2VkSUQp
OworI2VuZGlmCiAKICAgICAgICAgYXNhblNldEluaXRpYWxCdWZmZXJTaXplVG8obV9zaXplKTsK
ICAgICAgICAgb3RoZXIuYXNhblNldEluaXRpYWxCdWZmZXJTaXplVG8ob3RoZXIubV9zaXplKTsK
KworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVj
b3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUlu
Qnl0ZXMoKSk7CisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHko
b3RoZXIubV90cmFja2VkSUQsIG90aGVyLnNpemVJbkJ5dGVzKCksIG90aGVyLmNhcGFjaXR5SW5C
eXRlcygpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgcmV2ZXJzZSgpOwpAQCAtODc2LDYg
Kzk0NSwxMSBAQCBjbGFzcyBWZWN0b3IgOiBwcml2YXRlIFZlY3RvckJ1ZmZlcjxULCBpbmxpbmVD
YXBhY2l0eSwgTWFsbG9jPiB7CiAgICAgdXNpbmcgQmFzZTo6cmVhbGxvY2F0ZUJ1ZmZlcjsKICAg
ICB1c2luZyBCYXNlOjpyZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQ7CiAgICAgdXNpbmcgQmFz
ZTo6cmVsZWFzZUJ1ZmZlcjsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHVzaW5n
IEJhc2U6Om1fdHJhY2tlZElEOworI2VuZGlmCisKICNpZiBBU0FOX0VOQUJMRUQKICAgICB1c2lu
ZyBCYXNlOjplbmRPZkJ1ZmZlcjsKICNlbmRpZgpAQCAtODg5LDYgKzk2MywxMCBAQCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46
OlZlY3Rvcihjb25zdCBWZQogCiAgICAgaWYgKGJlZ2luKCkpCiAgICAgICAgIFR5cGVPcGVyYXRp
b25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpLCBvdGhlci5lbmQoKSwgYmVnaW4o
KSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVj
b3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUlu
Qnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwg
dHlwZW5hbWUgTWFsbG9jPgpAQCAtOTAwLDYgKzk3OCwxMCBAQCBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OlZlY3Rvcihjb25z
dCBWZQogCiAgICAgaWYgKGJlZ2luKCkpCiAgICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRp
YWxpemVkQ29weShvdGhlci5iZWdpbigpLCBvdGhlci5lbmQoKSwgYmVnaW4oKSk7CisKKyNpZiBU
UkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENh
cGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7Cisj
ZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFs
bG9jPgpAQCAtOTIyLDYgKzEwMDQsMTAgQEAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+JiBWZWN0b3I8VCwgaW5saW4KICAgICBU
eXBlT3BlcmF0aW9uczo6dW5pbml0aWFsaXplZENvcHkob3RoZXIuYmVnaW4oKSArIHNpemUoKSwg
b3RoZXIuZW5kKCksIGVuZCgpKTsKICAgICBtX3NpemUgPSBvdGhlci5zaXplKCk7CiAKKyNpZiBU
UkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENh
cGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7Cisj
ZW5kaWYKKwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtOTUwLDYgKzEwMzYsMTAgQEAgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxs
b2M+JiBWZWN0b3I8VCwgaW5saW4KICAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0aWFsaXplZENv
cHkob3RoZXIuYmVnaW4oKSArIHNpemUoKSwgb3RoZXIuZW5kKCksIGVuZCgpKTsKICAgICBtX3Np
emUgPSBvdGhlci5zaXplKCk7CiAKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0
b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRl
cygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKKwogICAgIHJldHVybiAqdGhpczsKIH0K
IApAQCAtMTAzMSw2ICsxMTIxLDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjpmaWxsKGNvbnN0CiAgICAgc3Rk
OjpmaWxsKGJlZ2luKCksIGVuZCgpLCB2YWwpOwogICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRp
YWxpemVkRmlsbChlbmQoKSwgYmVnaW4oKSArIG5ld1NpemUsIHZhbCk7CiAgICAgbV9zaXplID0g
bmV3U2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIo
KS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFj
aXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFj
aXR5LCB0eXBlbmFtZSBNYWxsb2M+CkBAIC0xMTAyLDYgKzExOTYsMTAgQEAgaW5saW5lIHZvaWQg
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBN
YWxsb2M+OjpyZXMKICAgICB9CiAgICAgCiAgICAgbV9zaXplID0gc2l6ZTsKKworI2lmIFRSQUNL
X1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNp
dHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRp
ZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVu
YW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+
CkBAIC0xMTE4LDYgKzEyMTYsMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnNocmluayhzaXoKICAgICBUeXBl
T3BlcmF0aW9uczo6ZGVzdHJ1Y3QoYmVnaW4oKSArIHNpemUsIGVuZCgpKTsKICAgICBhc2FuQnVm
ZmVyU2l6ZVdpbGxDaGFuZ2VUbyhzaXplKTsKICAgICBtX3NpemUgPSBzaXplOworCisjaWYgVFJB
Q0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBh
Y2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2Vu
ZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlw
ZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxv
Yz4KQEAgLTExMzAsNiArMTIzMiwxMCBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwg
T3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6Z3JvdyhzaXplXwogICAgIGlm
IChiZWdpbigpKQogICAgICAgICBUeXBlT3BlcmF0aW9uczo6aW5pdGlhbGl6ZUlmTm9uUE9EKGVu
ZCgpLCBiZWdpbigpICsgc2l6ZSk7CiAgICAgbV9zaXplID0gc2l6ZTsKKworI2lmIFRSQUNLX1ZF
Q1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHko
bV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+CkBA
IC0xMTkzLDYgKzEyOTksMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnJlc2VydmVDYXAKIAogICAgIFR5cGVP
cGVyYXRpb25zOjptb3ZlKG9sZEJ1ZmZlciwgb2xkRW5kLCBiZWdpbigpKTsKICAgICBCYXNlOjpk
ZWFsbG9jYXRlQnVmZmVyKG9sZEJ1ZmZlcik7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkK
KyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBz
aXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgpAQCAtMTIxNSw2ICsxMzI1
LDEwIEBAIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1p
bkNhcGFjaXR5LCBNYWxsb2M+Ojp0cnlSZXNlcnZlCiAKICAgICBUeXBlT3BlcmF0aW9uczo6bW92
ZShvbGRCdWZmZXIsIG9sZEVuZCwgYmVnaW4oKSk7CiAgICAgQmFzZTo6ZGVhbGxvY2F0ZUJ1ZmZl
cihvbGRCdWZmZXIpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJh
Y2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwg
Y2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEy
MjUsNiArMTMzOSwxMCBAQCBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnJlcwogICAgIEFTU0VSVChjYXBh
Y2l0eSgpID09IGlubGluZUNhcGFjaXR5KTsKICAgICBpZiAoaW5pdGlhbENhcGFjaXR5ID4gaW5s
aW5lQ2FwYWNpdHkpCiAgICAgICAgIEJhc2U6OmFsbG9jYXRlQnVmZmVyKGluaXRpYWxDYXBhY2l0
eSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVj
b3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUlu
Qnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwg
dHlwZW5hbWUgTWFsbG9jPgpAQCAtMTI0Myw2ICsxMzYxLDkgQEAgdm9pZCBWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnNocmlu
a0NhcGEKICAgICAgICAgaWYgKEJhc2U6OnNob3VsZFJlYWxsb2NhdGVCdWZmZXIobmV3Q2FwYWNp
dHkpKSB7CiAgICAgICAgICAgICBCYXNlOjpyZWFsbG9jYXRlQnVmZmVyKG5ld0NhcGFjaXR5KTsK
ICAgICAgICAgICAgIGFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRvKHNpemUoKSk7CisjaWYgVFJB
Q0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6
ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMo
KSk7CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMjU2LDYg
KzEzNzcsMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
ciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnNocmlua0NhcGEKICAgICBCYXNlOjpyZXN0b3JlSW5s
aW5lQnVmZmVySWZOZWVkZWQoKTsKIAogICAgIGFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRvKHNp
emUoKSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCku
cmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0
eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0
eSwgdHlwZW5hbWUgTWFsbG9jPgpAQCAtMTI3Myw2ICsxMzk4LDEwIEBAIEFMV0FZU19JTkxJTkUg
dm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNp
dHksIE1hbGxvCiAgICAgVCogZGVzdCA9IGVuZCgpOwogICAgIFZlY3RvckNvcGllcjxzdGQ6Omlz
X3RyaXZpYWw8VD46OnZhbHVlLCBVPjo6dW5pbml0aWFsaXplZENvcHkoZGF0YSwgc3RkOjphZGRy
ZXNzb2YoZGF0YVtkYXRhU2l6ZV0pLCBkZXN0KTsKICAgICBtX3NpemUgPSBuZXdTaXplOworCisj
aWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVB
bmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkp
OworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1l
IE1hbGxvYz4KQEAgLTEyOTIsNiArMTQyMSwxMCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsbwog
ICAgIFQqIGRlc3QgPSBlbmQoKTsKICAgICBWZWN0b3JDb3BpZXI8c3RkOjppc190cml2aWFsPFQ+
Ojp2YWx1ZSwgVT46OnVuaW5pdGlhbGl6ZWRDb3B5KGRhdGEsIHN0ZDo6YWRkcmVzc29mKGRhdGFb
ZGF0YVNpemVdKSwgZGVzdCk7CiAgICAgbV9zaXplID0gbmV3U2l6ZTsKKworI2lmIFRSQUNLX1ZF
Q1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHko
bV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMzAzLDYgKzE0MzYsOSBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFj
aXR5LCBNYWxsbwogICAgICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAx
KTsKICAgICAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8VT4odmFsdWUp
KTsKICAgICAgICAgKyttX3NpemU7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAg
IHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJ
bkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xMzE3LDYgKzE0NTMsOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsbwogICAg
ICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICAgICAgbmV3
IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgICAg
ICArK21fc2l6ZTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgdmVjdG9yVHJh
Y2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwg
Y2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTEzMzEsNiArMTQ3MCw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvCiAgICAgICAgIGFzYW5C
dWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEpOwogICAgICAgICBuZXcgKE5vdE51bGws
IGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgICAgICAgICsrbV9zaXpl
OworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVj
b3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUlu
Qnl0ZXMoKSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAt
MTM1MCw2ICsxNDkyLDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxv
d0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjphcHBlbmRTbG93CiAgICAgYXNhbkJ1ZmZl
clNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkg
VChzdGQ6OmZvcndhcmQ8VT4oKnB0cikpOwogICAgICsrbV9zaXplOworCisjaWYgVFJBQ0tfVkVD
VE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eSht
X3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KQEAg
LTEzNjQsNiArMTUxMCwxMCBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6Y29uc3RydWN0QQogICAgIGFzYW5CdWZm
ZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEpOwogICAgIG5ldyAoTm90TnVsbCwgZW5kKCkp
IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKICAgICArK21fc2l6ZTsKKworI2lmIFRS
QUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2Fw
YWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNl
bmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxs
b2M+CkBAIC0xMzc5LDYgKzE1MjksMTAgQEAgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnRyeUNvbnN0cnUKICAgICBh
c2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICBuZXcgKE5vdE51bGws
IGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiAgICAgKyttX3NpemU7CisK
KyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6
ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMo
KSk7CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTM5NSw2ICsxNTQ5LDEwIEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvCiAKICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0
ZDo6Zm9yd2FyZDxVPih2YWx1ZSkpOwogICAgICsrbV9zaXplOworCisjaWYgVFJBQ0tfVkVDVE9S
X0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3Ry
YWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KQEAgLTE0
MDcsNiArMTU2NSwxMCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFj
aXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsbwogCiAgICAgbmV3IChOb3RO
dWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgICsrbV9zaXpl
OworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29y
ZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5
dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5
cGVuYW1lIE1hbGxvYz4KQEAgLTE0NDQsNiArMTYwNiwxMCBAQCB2b2lkIFZlY3RvcjxULCBpbmxp
bmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6aW5zZXJ0
KHNpegogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoc3BvdCwgZW5kKCksIHNw
b3QgKyBkYXRhU2l6ZSk7CiAgICAgVmVjdG9yQ29waWVyPHN0ZDo6aXNfdHJpdmlhbDxUPjo6dmFs
dWUsIFU+Ojp1bmluaXRpYWxpemVkQ29weShkYXRhLCBzdGQ6OmFkZHJlc3NvZihkYXRhW2RhdGFT
aXplXSksIHNwb3QpOwogICAgIG1fc2l6ZSA9IG5ld1NpemU7CisKKyNpZiBUUkFDS19WRUNUT1Jf
Q0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJh
Y2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KICAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KQEAgLTE0
NjQsNiArMTYzMCwxMCBAQCBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OmlucwogICAgIFR5cGVPcGVyYXRp
b25zOjptb3ZlT3ZlcmxhcHBpbmcoc3BvdCwgZW5kKCksIHNwb3QgKyAxKTsKICAgICBuZXcgKE5v
dE51bGwsIHNwb3QpIFQoc3RkOjpmb3J3YXJkPFU+KCpwdHIpKTsKICAgICArK21fc2l6ZTsKKwor
I2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXpl
QW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygp
KTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFt
ZSBNYWxsb2M+CkBAIC0xNDgyLDYgKzE2NTIsMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjpyZW0K
ICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKHNwb3QgKyAxLCBlbmQoKSwgc3Bv
dCk7CiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplIC0gMSk7CiAgICAgLS1t
X3NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCku
cmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0
eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0
eSwgdHlwZW5hbWUgTWFsbG9jPgpAQCAtMTQ5NSw2ICsxNjY5LDEwIEBAIGlubGluZSB2b2lkIFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFs
bG9jPjo6cmVtCiAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVybGFwcGluZyhlbmRTcG90LCBl
bmQoKSwgYmVnaW5TcG90KTsKICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUg
LSBsZW5ndGgpOwogICAgIG1fc2l6ZSAtPSBsZW5ndGg7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQ
QUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tl
ZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxv
d0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgpAQCAtMTU1Miw2
ICsxNzMwLDEwIEBAIGlubGluZSB1bnNpZ25lZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46CiAgICAgICAgIFR5cGVPcGVyYXRp
b25zOjptb3ZlT3ZlcmxhcHBpbmcoaG9sZUVuZCwgZW5kKCksIGhvbGVCZWdpbik7CiAgICAgYXNh
bkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplIC0gbWF0Y2hDb3VudCk7CiAgICAgbV9zaXpl
IC09IG1hdGNoQ291bnQ7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JU
cmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygp
LCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICByZXR1cm4gbWF0Y2hDb3VudDsKIH0K
IApAQCAtMTU5Miw2ICsxNzc0LDEwIEBAIGlubGluZSBNYWxsb2NQdHI8VCwgTWFsbG9jPiBWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpCiAgICAgfQog
ICAgIG1fc2l6ZSA9IDA7CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBjYWxsIEJhc2U6OnJlc3Rv
cmVJbmxpbmVCdWZmZXJJZk5lZWRlZCgpIGhlcmU/CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJ
VFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElE
LCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICByZXR1cm4g
YnVmZmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xSZXBsYWNlV2l0aC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmVwbGFjZVdpdGguaAppbmRleCBhYjVhZTMwYjE3YTU5OGQ2NzQ2
ZWE0MmFjOTc2M2MyNzdjMWRhZTAxLi5mNjAwMDUxMzYzNmFkM2I5MWFmYzVjNTEzNzM2OGNjZWRl
NTFhMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xSZXBsYWNlV2l0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFJlcGxhY2VXaXRoLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IEFTVCB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTmV3LCB0eXBlbmFtZSBPbGQsIHR5cGVuYW1lIC4u
LkFyZ3M+CiBBTFdBWVNfSU5MSU5FIE5ldyogcmVwbGFjZVdpdGgoT2xkJiBvbGQsIEFyZ3MmJi4u
LiBhcmdzKQogewotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE5ldykgPD0gc2l6ZW9mKE9sZCks
ICJUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIHBsYWNlbWVudCBuZXcgYmVsb3cgdG8gbm90IG92ZXJ3
cml0ZSB1bm93bmVkIG1lbW9yeS4iKTsKKyAgICAvLyBzdGF0aWNfYXNzZXJ0KHNpemVvZihOZXcp
IDw9IHNpemVvZihPbGQpLCAiVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBwbGFjZW1lbnQgbmV3IGJl
bG93IHRvIG5vdCBvdmVyd3JpdGUgdW5vd25lZCBtZW1vcnkuIik7CiAgICAgdm9pZCogbG9jYXRp
b24gPSAmb2xkOwogICAgIE9sZDo6ZGVzdHJ1Y3Qob2xkKTsKICAgICByZXR1cm4gbmV3IChsb2Nh
dGlvbikgTmV3KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425098</attachid>
            <date>2021-04-03 10:18:44 -0700</date>
            <delta_ts>2023-02-01 21:54:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186698-20210403101843.patch</filename>
            <type>text/plain</type>
            <size>56565</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAxZGRmNTUyODhiN2Q3ZmQ5NzQzNGNj
YjI5ZDliMTA4MTg3OGJmMzAuLjJlMmRmZDI4NGQwNDY0Y2JlNGI5YTRiYzEyMTZlN2NjZjgzMDUy
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMjEtMDQtMDMgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0cmFjayBj
YWxsIHNpdGVzIHRoYXQgd2FzdGUgVmVjdG9yIGNhcGFjaXR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY2OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvQ29udGFp
bmVyQ2FwYWNpdHlUcmFja2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OkFsbG9jYXRpb25D
YWxsU2l0ZURhdGE6OkFsbG9jYXRpb25DYWxsU2l0ZURhdGEpOgorICAgICAgICAoV1RGOjpBbGxv
Y2F0aW9uQ2FsbFNpdGVEYXRhOjpzdGFjayBjb25zdCk6CisgICAgICAgIChXVEY6OkNvbnRhaW5l
ckFsbG9jYXRpb25EYXRhOjpDb250YWluZXJBbGxvY2F0aW9uRGF0YSk6CisgICAgICAgIChXVEY6
OkF2b2lkUmVjb3JkaW5nU2NvcGU6OkF2b2lkUmVjb3JkaW5nU2NvcGUpOgorICAgICAgICAoV1RG
OjpBdm9pZFJlY29yZGluZ1Njb3BlOjp+QXZvaWRSZWNvcmRpbmdTY29wZSk6CisgICAgICAgIChX
VEY6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlcjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyKToK
KyAgICAgICAgKFdURjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpyZWNvcmRBbGxvY2F0aW9u
KToKKyAgICAgICAgKFdURjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpyZWNvcmRTaXplQW5k
Q2FwYWNpdHkpOgorICAgICAgICAoV1RGOjpDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29y
ZEZyZWUpOgorICAgICAgICAoV1RGOjpDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OmFnZ3JlZ2F0
ZUJ5Q2FsbFNpdGUpOgorICAgICAgICAqIHd0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaDog
QWRkZWQuCisgICAgICAgICogd3RmL0hhc2hUYWJsZS5jcHA6CisgICAgICAgIChXVEY6OmR1bXBX
YXN0ZWRIYXNoVGFibGVDYXBhY2l0eSk6CisgICAgICAgIChXVEY6Omhhc2hUYWJsZVRyYWNrZXIp
OgorICAgICAgICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAgKFdURjo6SGFzaFRhYmxlOjp+
SGFzaFRhYmxlKToKKyAgICAgICAgKFdURjo6SGFzaFRhYmxlOjpyZXNlcnZlSW5pdGlhbENhcGFj
aXR5KToKKyAgICAgICAgKFdURjo6S2V5VHJhaXRzPjo6SGFzaFRhYmxlKToKKyAgICAgICAgKFdU
Rjo6S2V5VHJhaXRzPjo6aW5saW5lTG9va3VwKToKKyAgICAgICAgKFdURjo6S2V5VHJhaXRzPjo6
YWRkKToKKyAgICAgICAgKFdURjo6S2V5VHJhaXRzPjo6YWRkUGFzc2luZ0hhc2hDb2RlKToKKyAg
ICAgICAgKFdURjo6S2V5VHJhaXRzPjo6cmVpbnNlcnQpOgorICAgICAgICAoV1RGOjpLZXlUcmFp
dHM+OjpyZW1vdmUpOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpyZW1vdmVJZik6CisgICAg
ICAgIChXVEY6OktleVRyYWl0cz46OnJlaGFzaCk6CisgICAgICAgIChXVEY6OktleVRyYWl0cz46
OnN3YXApOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpzaXplSW5CeXRlcyBjb25zdCk6Cisg
ICAgICAgIChXVEY6OktleVRyYWl0cz46OmNhcGFjaXR5SW5CeXRlcyBjb25zdCk6CisgICAgICAg
ICogd3RmL1NpemVMaW1pdHMuY3BwOgorICAgICAgICAqIHd0Zi9WZWN0b3IuY3BwOgorICAgICAg
ICAoV1RGOjpkdW1wV2FzdGVkVmVjdG9yQ2FwYWNpdHkpOgorICAgICAgICAoV1RGOjp2ZWN0b3JU
cmFja2VyKToKKyAgICAgICAgKiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChXVEY6OlZlY3RvckJ1
ZmZlckJhc2U6OmNhcGFjaXR5SW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXVEY6OlZlY3RvckJ1
ZmZlckJhc2U6OnNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVy
QmFzZTo6flZlY3RvckJ1ZmZlckJhc2UpOgorICAgICAgICAoV1RGOjpWZWN0b3JCdWZmZXI6OlZl
Y3RvckJ1ZmZlcik6CisgICAgICAgIChXVEY6OlZlY3RvckJ1ZmZlcjo6c3dhcCk6CisgICAgICAg
IChXVEY6OlZlY3Rvcjo6ZnJvbSk6CisgICAgICAgIChXVEY6OlZlY3Rvcjo6Y2FwYWNpdHlJbkJ5
dGVzIGNvbnN0KToKKyAgICAgICAgKFdURjo6VmVjdG9yOjpzd2FwKToKKyAgICAgICAgKFdURjo6
TWFsbG9jPjo6VmVjdG9yKToKKyAgICAgICAgKFdURjo6PSk6CisgICAgICAgIChXVEY6Ok1hbGxv
Yz46OmZpbGwpOgorICAgICAgICAoV1RGOjpNYWxsb2M+OjpyZXNpemUpOgorICAgICAgICAoV1RG
OjpNYWxsb2M+OjpzaHJpbmspOgorICAgICAgICAoV1RGOjpNYWxsb2M+Ojpncm93KToKKyAgICAg
ICAgKFdURjo6TWFsbG9jPjo6cmVzZXJ2ZUNhcGFjaXR5KToKKyAgICAgICAgKFdURjo6TWFsbG9j
Pjo6c2hyaW5rQ2FwYWNpdHkpOgorICAgICAgICAoV1RGOjpNYWxsb2M+OjphcHBlbmQpOgorICAg
ICAgICAoV1RGOjpNYWxsb2M+Ojpjb25zdHJ1Y3RBbmRBcHBlbmQpOgorICAgICAgICAoV1RGOjpN
YWxsb2M+OjphcHBlbmRTbG93Q2FzZSk6CisgICAgICAgIChXVEY6Ok1hbGxvYz46OmNvbnN0cnVj
dEFuZEFwcGVuZFNsb3dDYXNlKToKKyAgICAgICAgKFdURjo6TWFsbG9jPjo6dW5jaGVja2VkQXBw
ZW5kKToKKyAgICAgICAgKFdURjo6TWFsbG9jPjo6dW5jaGVja2VkQ29uc3RydWN0QW5kQXBwZW5k
KToKKyAgICAgICAgKFdURjo6TWFsbG9jPjo6aW5zZXJ0KToKKyAgICAgICAgKFdURjo6TWFsbG9j
Pjo6cmVtb3ZlKToKKyAgICAgICAgKFdURjo6TWFsbG9jPjo6cmVtb3ZlQWxsTWF0Y2hpbmcpOgor
ICAgICAgICAoV1RGOjpNYWxsb2M+OjpyZWxlYXNlQnVmZmVyKToKKwogMjAyMS0wNC0wMiAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgUHJl
ZmVyUGFnZVJlbmRlcmluZ1VwZGF0ZXNOZWFyNjBGUFNFbmFibGVkIGJ5IGRlZmF1bHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA3ZjAxNzRhMDQ3OWE4OWZiYWU4NGQyNjMwNTZhZmI3OWVlYWFiOTIwLi40NjczYTQ4
ZTdhY2JmODcxMGM3NmU4MDBjYWE3NWU3NWY0ZTI1MGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMjEtMDQtMDMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0cmFjayBjYWxsIHNpdGVzIHRoYXQgd2Fz
dGUgVmVjdG9yIGNhcGFjaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODY2OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFJlcGxhY2VXaXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpyZXBsYWNlV2l0aCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNv
bnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6YmVnaW4p
OgorCiAyMDIxLTA0LTAyICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4K
IAogICAgICAgICBSZW1vdmUgW1JlcGxhY2VhYmxlXSBleHRlbmRlZCBhdHRyaWJ1dGUgZnJvbSBg
ZG9jdW1lbnQuYWxsYApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNWYzMGM5YTU2MTM3YjNjMzFkMzBkYmFiNTMxOTM5ZWIzYzg5OGE2Mi4uYmY1ODVhNDc3NWM4
ZjIwMjkwY2EyY2I5NTAxZmZlNmQ0ZTU5ZjA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yNSw2ICsyNSw3IEBACiAJCTBGMzBDQjVBMUZDREYxMzQwMDRC
NTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMwQ0I1ODFGQ0RGMTMzMDA0QjUzMjMgLyogQ29uY3Vy
cmVudFB0ckhhc2hTZXQuY3BwICovOyB9OwogCQkwRjM0OTJENzIyQUY0MzFDMDA0Rjg1RkMgLyog
VGV4dFN0cmVhbUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYzNDkyRDYyMkFGNDJGMTAwNEY4NUZDIC8qIFRleHRTdHJlYW1Db2NvYS5tbSAq
LzsgfTsKIAkJMEY0M0Q4RjExREI1QUREQzAwMTA4RkI2IC8qIEF1dG9tYXRpY1RocmVhZC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzRDhFRjFE
QjVBRERDMDAxMDhGQjYgLyogQXV0b21hdGljVGhyZWFkLmNwcCAqLzsgfTsKKwkJMEY1QjRERkEy
MEQwREUxODAwRDZGNTEwIC8qIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCNERGOTIwRDBERTE3MDBE
NkY1MTAgLyogQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcCAqLzsgfTsKIAkJMEY1QkYxNzYx
RjIzRDQ5QTAwMjlEOTFEIC8qIEdpZ2FjYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUJGMTc0MUYyM0Q0OUEwMDI5RDkxRCAvKiBHaWdhY2Fn
ZS5jcHAgKi87IH07CiAJCTBGNjBGMzJGMURGQ0JEMUIwMDQxNkQ2QyAvKiBMb2NrZWRQcmludFN0
cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjYwRjMyRDFERkNCRDFCMDA0MTZENkMgLyogTG9ja2VkUHJpbnRTdHJlYW0uY3BwICovOyB9Owog
CQkwRjY2QjI4QTFEQzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZCMjgwMURDOTdCQUIwMDRBMUQz
RiAvKiBDbG9ja1R5cGUuY3BwICovOyB9OwpAQCAtMjI4LDYgKzIyOSw4IEBACiAJCTBGNDU3MDQy
MUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERvbWluYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0
NTcwNDQxQkU4MzQ0MTAwNjJBNjI5IC8qIEJ1YmJsZVNvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQnViYmxlU29ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjREOEM3MTFGQzFFN0NFMDAxRDMyQUMgLyogU2luZ2x5TGlua2VkTGlzdFdpdGhUYWlsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbmdseUxpbmtlZExpc3RXaXRoVGFp
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjVCNERGODIwRDBERTE3MDBENkY1
MTAgLyogQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjVCNERGOTIwRDBERTE3MDBENkY1MTAgLyogQ29udGFpbmVyQ2FwYWNpdHlU
cmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRhaW5l
ckNhcGFjaXR5VHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUJG
MTY1MUYyMzE3ODMwMDI5RDkxRCAvKiBOYXR1cmFsTG9vcHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0
dXJhbExvb3BzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUJGMTc0MUYyM0Q0
OUEwMDI5RDkxRCAvKiBHaWdhY2FnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHaWdhY2FnZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUJGMTc1MUYyM0Q0OUEwMDI5RDkx
RCAvKiBHaWdhY2FnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHaWdhY2FnZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjgzLDYgKzI4Niw3IEBACiAJCTBGQjQ2NzgzMUZERTI4MkMwMDNG
Q0IwOSAvKiBDb25jdXJyZW50VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvbmN1cnJlbnRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZD
NDQ4ODIxNkZFOUZFMTAwODQ0QkU5IC8qIFByb2Nlc3NJRC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcm9jZXNzSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZDNEVERTUxNjk2MTQ5NjAwRjY1MDQxIC8qIENvbW1hUHJpbnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb21tYVByaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZENzNDQkEyMEQ0NzU4MzAwRkM3QTI5IC8qIFZlY3Rvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0Qml0VmVjdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGREI2OThEMUI3QzY0M0EwMDBDMTA3OCAvKiBDb25k
aXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uZGl0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRERCRkE1MTY2NkRGQTMwMEM1NUZFRiAvKiBT
dHJpbmdQcmludFN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHJpbmdQcmludFN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
OTMsNiArOTk3LDggQEAKIAkJCQkwRjMwQ0I1OTFGQ0RGMTMzMDA0QjUzMjMgLyogQ29uY3VycmVu
dFB0ckhhc2hTZXQuaCAqLywKIAkJCQkwRkI0Njc4MzFGREUyODJDMDAzRkNCMDkgLyogQ29uY3Vy
cmVudFZlY3Rvci5oICovLAogCQkJCTBGREI2OThEMUI3QzY0M0EwMDBDMTA3OCAvKiBDb25kaXRp
b24uaCAqLywKKwkJCQkwRjVCNERGOTIwRDBERTE3MDBENkY1MTAgLyogQ29udGFpbmVyQ2FwYWNp
dHlUcmFja2VyLmNwcCAqLywKKwkJCQkwRjVCNERGODIwRDBERTE3MDBENkY1MTAgLyogQ29udGFp
bmVyQ2FwYWNpdHlUcmFja2VyLmggKi8sCiAJCQkJMEY4RTg1REExRkQ0ODVCMDAwNjkxODg5IC8q
IENvdW50aW5nTG9jay5jcHAgKi8sCiAJCQkJMEZGQkNCRkExRkQzN0UwRjAwNzJBQUYwIC8qIENv
dW50aW5nTG9jay5oICovLAogCQkJCUUzOEM0MTI2MUVCNEUwNjgwMDQyOTU3RCAvKiBDUFVUaW1l
LmNwcCAqLywKQEAgLTE2NjMsNiArMTY2OSw3IEBACiAJCQkJMEY4RjJCOTIxNzJFMDEwMzAwN0RC
REE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMTQ5QTNC
MjI4QkRDQUMwMEJGQTZDNyAvKiBDb25jdXJyZW50QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMzBDQjVBMUZDREYxMzQwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjVCNERGQTIwRDBERTE4MDBENkY1MTAgLyogQ29udGFpbmVy
Q2FwYWNpdHlUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEU4NURCMUZENDg1QjAw
MDY5MTg4OSAvKiBDb3VudGluZ0xvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM4QzQxMjgx
RUI0RTA2ODAwNDI5NTdEIC8qIENQVVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM4QzQx
MjUxRUI0RTA0QzAwNDI5NTdEIC8qIENQVVRpbWVDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQKaW5kZXggZTFmYTU0NWE0MDE3OGVhMzIzNzA4OTM5NjNiYjRkYThlZjU4
OGUxYy4uYTU1M2U0MTRlMWEwYThmOGE1YWNmODY2MmMwNmI2YzkwMDhlMzNhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQKQEAgLTQwLDYgKzQwLDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAg
IENvbmN1cnJlbnRQdHJIYXNoU2V0LmgKICAgICBDb25jdXJyZW50VmVjdG9yLmgKICAgICBDb25k
aXRpb24uaAorICAgIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oCiAgICAgQ291bnRpbmdMb2Nr
LmgKICAgICBDcm9zc1RocmVhZENvcGllci5oCiAgICAgQ3Jvc3NUaHJlYWRRdWV1ZS5oCkBAIC0z
ODYsNiArMzg3LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgQ29tcGlsYXRpb25UaHJlYWQuY3Bw
CiAgICAgQ29uY3VycmVudEJ1ZmZlci5jcHAKICAgICBDb25jdXJyZW50UHRySGFzaFNldC5jcHAK
KyAgICBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwCiAgICAgQ291bnRpbmdMb2NrLmNwcAog
ICAgIENyb3NzVGhyZWFkQ29waWVyLmNwcAogICAgIENyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3Bw
IGIvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40YWUwMDM1YTVlNjM5YmExMDRjYTIyMDkwZDRjODMyZmU0ZDc3MzBiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcApAQCAtMCww
ICsxLDIwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFj
a2VyLmg+CisKKyNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgorI2luY2x1ZGUgPHd0Zi9TdGFja1No
b3QuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK0FsbG9jYXRpb25DYWxsU2l0ZURhdGE6OkFsbG9j
YXRpb25DYWxsU2l0ZURhdGEoc2l6ZV90IHN0YWNrRGVwdGgsIHNpemVfdCBpblVzZWRTaXplLCBz
aXplX3QgaW5DYXBhY2l0eSkKKyAgICA6IHVzZWRTaXplKGluVXNlZFNpemUpCisgICAgLCBjYXBh
Y2l0eShpbkNhcGFjaXR5KQorICAgICwgbV9zdGFjayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hv
dD4oc3RhY2tEZXB0aCkpCit7Cit9CisKK0FsbG9jYXRpb25DYWxsU2l0ZURhdGE6OkFsbG9jYXRp
b25DYWxsU2l0ZURhdGEoY29uc3QgU3RhY2tTaG90JiBzdGFjaykKKyAgICA6IG1fc3RhY2soc3Rk
OjptYWtlX3VuaXF1ZTxTdGFja1Nob3Q+KHN0YWNrKSkKK3sKK30KKworQWxsb2NhdGlvbkNhbGxT
aXRlRGF0YTo6QWxsb2NhdGlvbkNhbGxTaXRlRGF0YShjb25zdCBBbGxvY2F0aW9uQ2FsbFNpdGVE
YXRhJiBvdGhlcikKKyAgICA6IGNvdW50KG90aGVyLmNvdW50KQorICAgICwgdXNlZFNpemUob3Ro
ZXIudXNlZFNpemUpCisgICAgLCBjYXBhY2l0eShvdGhlci5jYXBhY2l0eSkKKyAgICAsIG1fc3Rh
Y2soc3RkOjptYWtlX3VuaXF1ZTxTdGFja1Nob3Q+KG90aGVyLnN0YWNrKCkpKQoreworfQorCitB
bGxvY2F0aW9uQ2FsbFNpdGVEYXRhOjp+QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSgpID0gZGVmYXVs
dDsKKworY29uc3QgU3RhY2tTaG90JiBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhOjpzdGFjaygpIGNv
bnN0Cit7CisgICAgcmV0dXJuICptX3N0YWNrOworfQorCitzdHJ1Y3QgQ29udGFpbmVyQWxsb2Nh
dGlvbkRhdGEgeworICAgIENvbnRhaW5lckFsbG9jYXRpb25EYXRhKHNpemVfdCBzdGFja1Nob3RT
aXplLCBzaXplX3QgaW5TaXplLCBzaXplX3QgaW5DYXBhY2l0eSkKKyAgICAgICAgOiBhbGxvY2F0
aW9uU3RhY2soc3RhY2tTaG90U2l6ZSkKKyAgICAgICAgLCBzaXplKGluU2l6ZSkKKyAgICAgICAg
LCBjYXBhY2l0eShpbkNhcGFjaXR5KQorICAgIHsKKyAgICAKKyAgICB9CisgICAgU3RhY2tTaG90
IGFsbG9jYXRpb25TdGFjazsKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBzaXplX3QgY2FwYWNpdHk7
Cit9OworCitzdHJ1Y3QgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpDb250YWluZXJDYXBhY2l0
eVRyYWNrZXJJbXBsIHsKKyAgICBzdGQ6OnVub3JkZXJlZF9tYXA8VHJhY2tlZElELCBzdGQ6OnVu
aXF1ZV9wdHI8Q29udGFpbmVyQWxsb2NhdGlvbkRhdGE+PiBtX3RyYWNrZWRJRFRvQ29udGFpbmVy
RGF0YTsKK307CisKKy8vIFRvIHByZXZlbnQgcGVyLXRocmVhZCByZS1lbnRyYW5jeSB3ZSB0YWtl
IGEgcG9pbnRlciB0byBhbiBvYmplY3Qgb24gdGhlIHN0YWNrLCBpbnNpZGUgbV9tdXRleCBsb2Nr
IHNjb3BlLgorY2xhc3MgQXZvaWRSZWNvcmRpbmdTY29wZSB7CitwdWJsaWM6CisgICAgQXZvaWRS
ZWNvcmRpbmdTY29wZShDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIHRyYWNrZXIsIGJvb2wqIHN0
YWNrT2JqZWN0KQorICAgICAgICA6IG1fdHJhY2tlcih0cmFja2VyKQorICAgIHsKKyAgICAgICAg
bV90cmFja2VyLm1fYXZvaWRSZWVudHJhbmN5ID0gc3RhY2tPYmplY3Q7CisgICAgfQorCisgICAg
fkF2b2lkUmVjb3JkaW5nU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV90cmFja2VyLm1fYXZvaWRS
ZWVudHJhbmN5ID0gbnVsbHB0cjsKKyAgICB9Citwcml2YXRlOgorICAgIENvbnRhaW5lckNhcGFj
aXR5VHJhY2tlciYgbV90cmFja2VyOworfTsKKworQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpD
b250YWluZXJDYXBhY2l0eVRyYWNrZXIoc2l6ZV90IGFnZ3JlZ2F0aW9uU3RhY2tEZXB0aCkKKyAg
ICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGw+
KCkpCisgICAgLCBtX2FnZ3JlZ2F0aW9uU3RhY2tEZXB0aChhZ2dyZWdhdGlvblN0YWNrRGVwdGgp
Cit7Cit9CisKK1RyYWNrZWRJRCBDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29yZEFsbG9j
YXRpb24oc2l6ZV90IHNpemUsIHNpemVfdCBjYXBhY2l0eSkKK3sKKyAgICBBU1NFUlQoc2l6ZSA8
PSBjYXBhY2l0eSk7CisKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjpyZWN1cnNpdmVfbXV0ZXg+
IGxvY2tIb2xkZXIobV9tdXRleCk7CisKKyAgICBpZiAobV9hdm9pZFJlZW50cmFuY3kpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgYm9vbCBhdm9pZFJlZW50cmFuY3kgPSB0cnVlOworICAgIEF2
b2lkUmVjb3JkaW5nU2NvcGUgc2NvcGUoKnRoaXMsICZhdm9pZFJlZW50cmFuY3kpOworCisgICAg
VHJhY2tlZElEIG9iamVjdElEID0gKyttX25leHRJRDsKKworICAgIGF1dG8gYWxsb2NhdGlvbkRh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lckFsbG9jYXRpb25EYXRhPihtX2FnZ3JlZ2F0
aW9uU3RhY2tEZXB0aCwgc2l6ZSwgY2FwYWNpdHkpOworICAgIGF1dG8gaW5zZXJ0UmVzdWx0ID0g
bV9pbXBsLT5tX3RyYWNrZWRJRFRvQ29udGFpbmVyRGF0YS5pbnNlcnQoc3RkOjptYWtlX3BhaXIo
b2JqZWN0SUQsIFdURk1vdmUoYWxsb2NhdGlvbkRhdGEpKSk7CisgICAgaWYgKCFpbnNlcnRSZXN1
bHQuc2Vjb25kKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGFpbmVyQ2FwYWNpdHlUcmFj
a2VyOjpyZWNvcmRBbGxvY2F0aW9uIHNhdyBvYmplY3QgJXUgZm9yIHRoZSBzZWNvbmQgdGltZSIs
IG9iamVjdElEKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJXYXMgcHJldmlvdXNseSBhbGxvY2F0
ZWQgYXQ6Iik7CisgICAgICAgIGF1dG8mIGNhbGxTaXRlRGF0YSA9ICppbnNlcnRSZXN1bHQuZmly
c3QtPnNlY29uZDsKKyAgICAgICAgY29uc3Qgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IDA7CisgICAg
ICAgIFdURlByaW50QmFja3RyYWNlKGNhbGxTaXRlRGF0YS5hbGxvY2F0aW9uU3RhY2suYXJyYXko
KSArIGZyYW1lc1RvU2tpcCwgY2FsbFNpdGVEYXRhLmFsbG9jYXRpb25TdGFjay5zaXplKCkgLSBm
cmFtZXNUb1NraXApOworICAgIH0KKworICAgIHJldHVybiBvYmplY3RJRDsKK30KKwordm9pZCBD
b250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29yZFNpemVBbmRDYXBhY2l0eShUcmFja2VkSUQg
b2JqZWN0SUQsIHNpemVfdCBzaXplLCBzaXplX3QgY2FwYWNpdHkpCit7CisgICAgQVNTRVJUKHNp
emUgPD0gY2FwYWNpdHkpOworCisgICAgaWYgKCFvYmplY3RJRCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1f
bXV0ZXgpOworCisgICAgaWYgKG1fYXZvaWRSZWVudHJhbmN5KQorICAgICAgICByZXR1cm47CisK
KyAgICBib29sIGF2b2lkUmVlbnRyYW5jeSA9IHRydWU7CisgICAgQXZvaWRSZWNvcmRpbmdTY29w
ZSBzY29wZSgqdGhpcywgJmF2b2lkUmVlbnRyYW5jeSk7CisKKyAgICBhdXRvIGl0ID0gbV9pbXBs
LT5tX3RyYWNrZWRJRFRvQ29udGFpbmVyRGF0YS5maW5kKG9iamVjdElEKTsKKyAgICBpZiAoaXQg
IT0gbV9pbXBsLT5tX3RyYWNrZWRJRFRvQ29udGFpbmVyRGF0YS5lbmQoKSkgeworICAgICAgICBp
dC0+c2Vjb25kLT5zaXplID0gc2l6ZTsKKyAgICAgICAgaXQtPnNlY29uZC0+Y2FwYWNpdHkgPSBj
YXBhY2l0eTsKKyAgICB9IGVsc2UKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250YWluZXJDYXBh
Y2l0eVRyYWNrZXIgJXAgcmVjb3JkU2l6ZUFuZENhcGFjaXR5IGZhaWxlZCB0byBmaW5kIG9iamVj
dCAldSIsIHRoaXMsIG9iamVjdElEKTsKK30KKwordm9pZCBDb250YWluZXJDYXBhY2l0eVRyYWNr
ZXI6OnJlY29yZEZyZWUoVHJhY2tlZElEIG9iamVjdElEKQoreworICAgIGlmICghb2JqZWN0SUQp
CisgICAgICAgIHJldHVybjsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6OnJlY3Vyc2l2ZV9t
dXRleD4gbG9ja0hvbGRlcihtX211dGV4KTsKKworICAgIGlmIChtX2F2b2lkUmVlbnRyYW5jeSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBhdm9pZFJlZW50cmFuY3kgPSB0cnVlOworICAg
IEF2b2lkUmVjb3JkaW5nU2NvcGUgc2NvcGUoKnRoaXMsICZhdm9pZFJlZW50cmFuY3kpOworCisg
ICAgYXV0byByZW1vdmVkQ291bnQgPSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJEYXRh
LmVyYXNlKG9iamVjdElEKTsKKyAgICBpZiAoIXJlbW92ZWRDb3VudCkKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCJDb250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29yZEZyZWUgZ290IGlkICV1IGZv
ciB3aGljaCB0aGVyZSBpcyBubyBlbnRyeSIsIG9iamVjdElEKTsKK30KKworc3RkOjp2ZWN0b3I8
QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4gQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjphZ2dyZWdh
dGVCeUNhbGxTaXRlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChUcmFja2VkSUQsIEFsbG9jYXRp
b25DYWxsU2l0ZURhdGEmKT4mIHBlck9iamVjdENhbGxiYWNrKQoreworICAgIHN0ZDo6bG9ja19n
dWFyZDxzdGQ6OnJlY3Vyc2l2ZV9tdXRleD4gbG9ja0hvbGRlcihtX211dGV4KTsKKworICAgIGJv
b2wgYXZvaWRSZWVudHJhbmN5ID0gdHJ1ZTsKKyAgICBBdm9pZFJlY29yZGluZ1Njb3BlIHNjb3Bl
KCp0aGlzLCAmYXZvaWRSZWVudHJhbmN5KTsKKworICAgIHR5cGVkZWYgdW5zaWduZWQgU3RhY2tT
aG90SGFzaDsKKyAgICBzdGQ6OnVub3JkZXJlZF9tYXA8U3RhY2tTaG90SGFzaCwgc3RkOjp1bmlx
dWVfcHRyPEFsbG9jYXRpb25DYWxsU2l0ZURhdGE+PiBjYWxsU2l0ZVRvQWxsb2NhdGlvbkFnZ3Jl
Z2F0ZTsKKworICAgIGZvciAoY29uc3QgYXV0byYgaXQgOiBtX2ltcGwtPm1fdHJhY2tlZElEVG9D
b250YWluZXJEYXRhKSB7CisgICAgICAgIGNvbnN0IENvbnRhaW5lckFsbG9jYXRpb25EYXRhJiBh
bGxvY2F0aW9uRGF0YSA9ICppdC5zZWNvbmQ7CisKKyAgICAgICAgQWxsb2NhdGlvbkNhbGxTaXRl
RGF0YSogY2FsbFNpdGVEYXRhOworCisgICAgICAgIGF1dG8gZmluZEl0ID0gY2FsbFNpdGVUb0Fs
bG9jYXRpb25BZ2dyZWdhdGUuZmluZChhbGxvY2F0aW9uRGF0YS5hbGxvY2F0aW9uU3RhY2suaGFz
aCgpKTsKKyAgICAgICAgaWYgKGZpbmRJdCA9PSBjYWxsU2l0ZVRvQWxsb2NhdGlvbkFnZ3JlZ2F0
ZS5lbmQoKSkgeworICAgICAgICAgICAgYXV0byBpbnNlcnRJdCA9IGNhbGxTaXRlVG9BbGxvY2F0
aW9uQWdncmVnYXRlLmluc2VydCh7IGFsbG9jYXRpb25EYXRhLmFsbG9jYXRpb25TdGFjay5oYXNo
KCksIHN0ZDo6bWFrZV91bmlxdWU8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4oYWxsb2NhdGlvbkRh
dGEuYWxsb2NhdGlvblN0YWNrKSB9KTsKKyAgICAgICAgICAgIGNhbGxTaXRlRGF0YSA9IGluc2Vy
dEl0LmZpcnN0LT5zZWNvbmQuZ2V0KCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY2Fs
bFNpdGVEYXRhID0gZmluZEl0LT5zZWNvbmQuZ2V0KCk7CisKKyAgICAgICAgY2FsbFNpdGVEYXRh
LT5jb3VudCArPSAxOworICAgICAgICBjYWxsU2l0ZURhdGEtPnVzZWRTaXplICs9IGFsbG9jYXRp
b25EYXRhLnNpemU7CisgICAgICAgIGNhbGxTaXRlRGF0YS0+Y2FwYWNpdHkgKz0gYWxsb2NhdGlv
bkRhdGEuY2FwYWNpdHk7CisKKyAgICAgICAgcGVyT2JqZWN0Q2FsbGJhY2soaXQuZmlyc3QsICpj
YWxsU2l0ZURhdGEpOworICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPEFsbG9jYXRpb25DYWxsU2l0
ZURhdGE+IHJlc3VsdDsKKyAgICBmb3IgKGF1dG8mIGl0IDogY2FsbFNpdGVUb0FsbG9jYXRpb25B
Z2dyZWdhdGUpCisgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soQWxsb2NhdGlvbkNhbGxTaXRlRGF0
YSgqaXQuc2Vjb25kKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tl
ci5oIGIvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTc5NzhlMmE3ZTEyOGFjMzVmMzNkMjY3ODFkMTUyODg5NTBmYTVjMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oCkBAIC0wLDAg
KzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNs
dWRlIDx2ZWN0b3I+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFN0YWNrU2hvdDsKKworc3RydWN0IEFs
bG9jYXRpb25DYWxsU2l0ZURhdGEgeworICAgIEFsbG9jYXRpb25DYWxsU2l0ZURhdGEoc2l6ZV90
IHN0YWNrRGVwdGggPSAwLCBzaXplX3QgPSAwLCBzaXplX3QgY2FwYWNpdHkgPSAwKTsKKyAgICBB
bGxvY2F0aW9uQ2FsbFNpdGVEYXRhKGNvbnN0IFN0YWNrU2hvdCYpOworICAgIEFsbG9jYXRpb25D
YWxsU2l0ZURhdGEoY29uc3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYpOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSB+QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSgpOworCisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGNvbnN0IFN0YWNrU2hvdCYgc3RhY2soKSBjb25zdDsKKworICAgIHNpemVfdCBjb3Vu
dCB7IDAgfTsKKyAgICBzaXplX3QgdXNlZFNpemUgeyAwIH07CisgICAgc2l6ZV90IGNhcGFjaXR5
IHsgMCB9OworCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGFja1Nob3Q+IG1fc3Rh
Y2s7IC8vIE5lZWRlZCB0byBoaWRlIFN0YWNrU2hvdCB0byBhdm9pZCBjaXJjdWxhciBpbmNsdWRl
cy4KK307CisKK3R5cGVkZWYgdW5zaWduZWQgVHJhY2tlZElEOworCitjbGFzcyBDb250YWluZXJD
YXBhY2l0eVRyYWNrZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRhaW5lckNhcGFj
aXR5VHJhY2tlcik7CisgICAgZnJpZW5kIGNsYXNzIEF2b2lkUmVjb3JkaW5nU2NvcGU7CitwdWJs
aWM6CisgICAgLy8gQ2FsbCBzaXRlcyBhcmUgYWdncmVnYXRlZCBieSBjYWxsIHN0YWNrLCB1c2lu
ZyBhZ2dyZWdhdGlvblN0YWNrRGVwdGggZnJhbWVzLgorICAgIENvbnRhaW5lckNhcGFjaXR5VHJh
Y2tlcihzaXplX3QgYWdncmVnYXRpb25TdGFja0RlcHRoID0gMjUpOworICAgIAorICAgIFdURl9F
WFBPUlRfUFJJVkFURSBUcmFja2VkSUQgcmVjb3JkQWxsb2NhdGlvbihzaXplX3QsIHNpemVfdCBj
YXBhY2l0eSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVjb3JkU2l6ZUFuZENhcGFj
aXR5KFRyYWNrZWRJRCwgc2l6ZV90LCBzaXplX3QgY2FwYWNpdHkpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHJlY29yZEZyZWUoVHJhY2tlZElEKTsKKyAgICAKKyAgICAvLyBSZXR1cm4g
YSB2ZWN0b3Igb2YgcGVyIGNhbGxzaXRlIGRhdGE7IHNpemUgYW5kIGNhcGFjaXR5IGFyZSBzdW1t
ZWQgZm9yIGFsbCBhbGxvY2F0aW9ucyB3aXRoIGEgZ2l2ZW4gY2FsbCBzaXRlLgorICAgIC8vIFRo
ZSBwYXNzZWQgZnVuY3Rpb24gYWxsb3dzIHRoZSBjYWxsZXIgdG8gZG8gYWRkaXRpb25hbCBwcm9j
ZXNzaW5nIHBlciBhbGxvY2F0aW9uLgorICAgIHN0ZDo6dmVjdG9yPEFsbG9jYXRpb25DYWxsU2l0
ZURhdGE+IGFnZ3JlZ2F0ZUJ5Q2FsbFNpdGUoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFRyYWNr
ZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYpPiYpOworCitwcml2YXRlOgorICAgIC8vIFVz
ZSBhIHBpbXBsIHRvIGF2b2lkIGNpcmN1bGFyIGluY2x1ZGVzIGJldHdlZW4gb3VyIGhlYWRlciBh
bmQgdGhlIGNvbnRhaW5lciBjbGFzcyBoZWFkZXJzLgorICAgIHN0cnVjdCBDb250YWluZXJDYXBh
Y2l0eVRyYWNrZXJJbXBsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250YWluZXJDYXBhY2l0eVRy
YWNrZXJJbXBsPiBtX2ltcGw7CisgICAgc3RkOjpyZWN1cnNpdmVfbXV0ZXggbV9tdXRleDsKKyAg
ICBUcmFja2VkSUQgbV9uZXh0SUQgeyAwIH07CisgICAgY29uc3Qgc2l6ZV90IG1fYWdncmVnYXRp
b25TdGFja0RlcHRoOworICAgIGJvb2wqIG1fYXZvaWRSZWVudHJhbmN5IHsgbnVsbHB0ciB9Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Q29udGFpbmVyQ2FwYWNpdHlU
cmFja2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL0hhc2hUYWJsZS5jcHAKaW5kZXggMDE3MDEwMDEwM2UxNmQ3NzI2ZmYzN2FmYWI5
Yzk5YjIwZjViMDNlYy4uMWMzMDQ3NTgwZTdjMjllMmEwMGNjNWQyNTFiOWU1YjRkNTlkOGY1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9IYXNoVGFibGUuY3BwCkBAIC0yMiw2ICsyMiwxNyBAQAogCiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyNpbmNsdWRl
IDx3dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxub3RpZnkuaD4KKyNp
bmNsdWRlIDx3dGYvU3RhY2tTaG90Lmg+CisjZW5kaWYKKworI2VuZGlmCisKIG5hbWVzcGFjZSBX
VEYgewogCiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7
CkBAIC02NCw2ICs3NSw3NiBAQCB2b2lkIEhhc2hUYWJsZVN0YXRzOjpkdW1wU3RhdHMoKQogICAg
IGRhdGFMb2dGKCIlZCByZWluc2VydHNcbiIsIG51bVJlaW5zZXJ0cy5sb2FkKCkpOwogfQogCisj
ZW5kaWYgLy8gRFVNUF9IQVNIVEFCTEVfU1RBVFMKKworI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBB
Q0lUWQorCisjaWYgUExBVEZPUk0oQ09DT0EpCitzdGF0aWMgdm9pZCBkdW1wV2FzdGVkSGFzaFRh
YmxlQ2FwYWNpdHkoKQoreworICAgIGF1dG8gY2FsbFNpdGVEYXRhID0gaGFzaFRhYmxlVHJhY2tl
cigpLmFnZ3JlZ2F0ZUJ5Q2FsbFNpdGUoW10gKFRyYWNrZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRl
RGF0YSYpIHsKKyAgICB9KTsKKworICAgIC8vIE1ha2UgYSB2ZWN0b3Igb2YgcmF3IHBvaW50ZXJz
IHNvIHdlIGNhbiBzb3J0IHRoZW0uCisgICAgc3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRl
RGF0YSo+IGNhbGxTaXRlUHRyczsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNpdGVEYXRhIDogY2Fs
bFNpdGVEYXRhKSB7CisgICAgICAgIGlmICghc2l0ZURhdGEuY2FwYWNpdHkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgY2FsbFNpdGVQdHJzLnB1c2hfYmFjayhjb25zdF9jYXN0PEFs
bG9jYXRpb25DYWxsU2l0ZURhdGEqPigmc2l0ZURhdGEpKTsKKyAgICB9CisKKyAgICAvLyBTb3J0
IGJ5IHJldmVyc2Ugd2FzdGFnZS4KKyAgICBzdGQ6OnNvcnQoY2FsbFNpdGVQdHJzLmJlZ2luKCks
IGNhbGxTaXRlUHRycy5lbmQoKSwgW10gKGNvbnN0IEFsbG9jYXRpb25DYWxsU2l0ZURhdGEqIGEs
IGNvbnN0IEFsbG9jYXRpb25DYWxsU2l0ZURhdGEqIGIpIHsKKyAgICAgICAgc2l6ZV90IGFXYXN0
YWdlID0gYS0+Y2FwYWNpdHkgLSBhLT51c2VkU2l6ZTsKKyAgICAgICAgc2l6ZV90IGJXYXN0YWdl
ID0gYi0+Y2FwYWNpdHkgLSBiLT51c2VkU2l6ZTsKKyAgICAgICAgcmV0dXJuIGFXYXN0YWdlID4g
Yldhc3RhZ2U7CisgICAgfSk7CisKKyAgICBjb25zdGV4cHIgc2l6ZV90IG1pbldhc3RlZEJ5dGVD
b3VudCA9IDEwMjQ7CisKKyAgICBXVEZMb2dBbHdheXMoIiVkICVsdSBjYWxsIHNpdGVzIGNyZWF0
ZWQgSGFzaFRhYmxlcyAodmlhIEhhc2hNYXAgb3IgSGFzaFNldCkuIFNob3dpbmcgc2l0ZXMgd2l0
aCBhdCBsZWFzdCAlbHUgd2FzdGVkIGJ5dGVzOlxuIiwgZ2V0cGlkKCksIGNhbGxTaXRlRGF0YS5z
aXplKCksIG1pbldhc3RlZEJ5dGVDb3VudCk7CisKKyAgICBmb3IgKGF1dG8gc2l0ZURhdGEgOiBj
YWxsU2l0ZVB0cnMpIHsKKyAgICAgICAgYXV0byB3YXN0ZWRCeXRlcyA9IHNpdGVEYXRhLT5jYXBh
Y2l0eSAtIHNpdGVEYXRhLT51c2VkU2l6ZTsKKyAgICAgICAgaWYgKHdhc3RlZEJ5dGVzIDwgbWlu
V2FzdGVkQnl0ZUNvdW50KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCJXYXN0ZWQgY2FwYWNpdHk6ICVsdSBieXRlcyAodXNlZCAlbHUgb2YgJWx1IGJ5dGVzLCB1
dGlsaXphdGlvbjogJS4yZiUlKSAtICVsdSBhbGxvY2F0aW9uc1xuIiwKKyAgICAgICAgICAgIHdh
c3RlZEJ5dGVzLAorICAgICAgICAgICAgc2l0ZURhdGEtPnVzZWRTaXplLCBzaXRlRGF0YS0+Y2Fw
YWNpdHksIDEwMC4wICogc2l0ZURhdGEtPnVzZWRTaXplIC8gc2l0ZURhdGEtPmNhcGFjaXR5LAor
ICAgICAgICAgICAgc2l0ZURhdGEtPmNvdW50KTsKKyAgICAgICAgY29uc3Qgc2l6ZV90IGZyYW1l
c1RvU2tpcCA9IDM7CisgICAgICAgIFdURlByaW50QmFja3RyYWNlKHNpdGVEYXRhLT5zdGFjaygp
LmFycmF5KCkgKyBmcmFtZXNUb1NraXAsIHNpdGVEYXRhLT5zdGFjaygpLnNpemUoKSAtIGZyYW1l
c1RvU2tpcCk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiXG4iKTsKKyAgICB9Cit9CisjZW5kaWYK
KworQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyJiBoYXNoVGFibGVUcmFja2VyKCkKK3sKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7
CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFtdIHsKKyAgICAgICAgaW50IHRv
a2VuOworICAgICAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goImNvbS5hcHBsZS5XZWJLaXQu
ZHVtcEhhc2hUYWJsZUNhcGFjaXR5IiwgJnRva2VuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeKGludCkgeworCisgICAgICAgICAgICBpbnQgZGVsYXlTZWNvbmRzID0gMiAqIChnZXRwaWQo
KSAlIDUpOworICAgICAgICAgICAgaW50NjRfdCBkZWZlcnJlZFdhaXRUaW1lID0gZGVsYXlTZWNv
bmRzICogTlNFQ19QRVJfU0VDOworICAgICAgICAgICAgZGlzcGF0Y2hfdGltZV90IHdoZW4gPSBk
aXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkZWZlcnJlZFdhaXRUaW1lKTsKKworICAg
ICAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIod2hlbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XnsKKyAgICAgICAgICAgICAgICBkdW1wV2FzdGVkSGFzaFRhYmxlQ2FwYWNpdHkoKTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgIH0pOworICAgIH0pOwogI2VuZGlmCiAKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8V1RGOjpDb250YWluZXJDYXBhY2l0eVRyYWNrZXI+IHRyYWNrZXI7Cisg
ICAgcmV0dXJuIHRyYWNrZXI7Cit9CisKKyNlbmRpZiAvLyBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJ
VFkKKwogfSAvLyBuYW1lc3BhY2UgV1RGCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hh
c2hUYWJsZS5oIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKaW5kZXggMTJkZDg0ODIyYWE1
MzA2OGMzOGRjOWY4NDk2NmJhZDRhNDBiM2QzMS4uYjdjOTNhZWQ3OGExODMxNTYzZGZhZmRhNzMx
NzYzYzAwZTZkNDNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKKysr
IGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTQ0LDggKzQ0LDIwIEBACiAjaW5jbHVk
ZSA8d3RmL0RhdGFMb2cuaD4KICNlbmRpZgogCisvLyBFbmFibGUgVFJBQ0tfSEFTSFRBQkxFX0NB
UEFDSVRZIHRvIHRyYWNrIGNhbGwgc2l0ZXMgdGhhdCB3YXN0ZSBIYXNoVGFibGUgY2FwYWNpdHku
IE9uIENvY29hIHBsYXRmb3JtcywgdGhlIGRhdGEgY2FuIGJlIGR1bXBlZAorLy8gYnkgcnVubmlu
ZyAibm90aWZ5dXRpbCAtcCBjb20uYXBwbGUuV2ViS2l0LmR1bXBIYXNoVGFibGVDYXBhY2l0eSIu
CisjZGVmaW5lIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWSAxCisKKyNpZiBUUkFDS19IQVNIVEFC
TEVfQ0FQQUNJVFkKKyNpbmNsdWRlIDx3dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg+Cisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkK
K1dURl9FWFBPUlRfUFJJVkFURSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIGhhc2hUYWJsZVRy
YWNrZXIoKTsKKyNlbmRpZgorCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklF
UihIYXNoVGFibGUpOwogCiAvLyBFbmFibGVzIGludGVybmFsIFdURiBjb25zaXN0ZW5jeSBjaGVj
a3MgdGhhdCBhcmUgaW52b2tlZCBhdXRvbWF0aWNhbGx5LiBOb24tV1RGIGNhbGxlcnMgY2FuIGNh
bGwgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgZXZlbiBpZiBpbnRlcm5hbCBjaGVja3MgYXJlIGRp
c2FibGVkLgpAQCAtNDE2LDYgKzQyOCwxMSBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBf
SURFTlRJRklFUihIYXNoVGFibGUpOwogI2lmIENIRUNLX0hBU0hUQUJMRV9VU0VfQUZURVJfREVT
VFJVQ1RJT04KICAgICAgICAgICAgIG1fdGFibGUgPSAoVmFsdWVUeXBlKikodWludHB0cl90KTB4
YmJhZGJlZWY7CiAjZW5kaWYKKworI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorICAgICAg
ICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZEZyZWUobV90cmFja2VkSUQpOworICAgICAg
ICAgICAgbV90cmFja2VkSUQgPSAwOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBIYXNo
VGFibGUoY29uc3QgSGFzaFRhYmxlJik7CkBAIC00NjQsOCArNDgxLDE1IEBAIERFQ0xBUkVfQUxM
T0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgICAgICBzZXRU
YWJsZVNpemVNYXNrKG5ld1RhYmxlU2l6ZSAtIDEpOwogICAgICAgICAgICAgc2V0RGVsZXRlZENv
dW50KDApOwogICAgICAgICAgICAgc2V0S2V5Q291bnQoMCk7CisKKyNpZiBUUkFDS19IQVNIVEFC
TEVfQ0FQQUNJVFkKKyAgICAgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5k
Q2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsK
KyNlbmRpZgogICAgICAgICB9CiAKKyAgICAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Q7
CisgICAgICAgIHNpemVfdCBjYXBhY2l0eUluQnl0ZXMoKSBjb25zdDsKKwogICAgICAgICBBZGRS
ZXN1bHQgYWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIGFkZDxJZGVudGl0eVRy
YW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpLCB2YWx1ZSk7IH0KICAgICAg
ICAgQWRkUmVzdWx0IGFkZChWYWx1ZVR5cGUmJiB2YWx1ZSkgeyByZXR1cm4gYWRkPElkZW50aXR5
VHJhbnNsYXRvclR5cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSksIFdURk1vdmUodmFsdWUp
KTsgfQogCkBAIC01OTEsNiArNjE1LDEwIEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9J
REVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCogbV90YWJsZUZvckxM
REI7CiAgICAgICAgIH07CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAg
VHJhY2tlZElEIG1fdHJhY2tlZElEIHsgMCB9OworI2VuZGlmCisKICNpZiBDSEVDS19IQVNIVEFC
TEVfSVRFUkFUT1JTCiAgICAgcHVibGljOgogICAgICAgICAvLyBBbGwgYWNjZXNzIHRvIG1faXRl
cmF0b3JzIHNob3VsZCBiZSBndWFyZGVkIHdpdGggbV9tdXRleC4KQEAgLTYxNiw2ICs2NDQsOSBA
QCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogICAg
ICAgICAsIG1fc3RhdHMobWFrZVVuaXF1ZTxTdGF0cz4oKSkKICNlbmRpZgogICAgIHsKKyNpZiBU
UkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgbV90cmFja2VkSUQgPSBoYXNoVGFibGVU
cmFja2VyKCkucmVjb3JkQWxsb2NhdGlvbigwLCAwKTsKKyNlbmRpZgogICAgIH0KIAogICAgIGlu
bGluZSB1bnNpZ25lZCBkb3VibGVIYXNoKHVuc2lnbmVkIGtleSkKQEAgLTY2Niw3ICs2OTcsNyBA
QCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogICAg
IEFMV0FZU19JTkxJTkUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmlubGluZUxvb2t1cChjb25zdCBUJiBrZXkp
IC0+IFZhbHVlVHlwZSoKICAgICB7CiAjaWYgVVNFKEFOR0xFKQotICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihLZXkpICsgc2l6ZW9mKFZhbHVlKSA8IDI1MCwgIllvdXIgSGFzaFRhYmxlIHR5
cGVzIGFyZSB0b28gYmlnIHRvIGVmZmljaWVudGx5IG1vdmUgd2hlbiByZWhhc2hpbmcuICBDb25z
aWRlciB1c2luZyBVbmlxdWVSZWYgaW5zdGVhZCIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihLZXkpICsgc2l6ZW9mKFZhbHVlKSA8IDMwMCwgIllvdXIgSGFzaFRhYmxlIHR5cGVzIGFy
ZSB0b28gYmlnIHRvIGVmZmljaWVudGx5IG1vdmUgd2hlbiByZWhhc2hpbmcuICBDb25zaWRlciB1
c2luZyBVbmlxdWVSZWYgaW5zdGVhZCIpOwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM2MzcKICAgICAgICAgc3RhdGlj
X2Fzc2VydChzaXplb2YoS2V5KSArIHNpemVvZihWYWx1ZSkgPCA0MDAsICJZb3VyIEhhc2hUYWJs
ZSB0eXBlcyBhcmUgdG9vIGJpZyB0byBlZmZpY2llbnRseSBtb3ZlIHdoZW4gcmVoYXNoaW5nLiAg
Q29uc2lkZXIgdXNpbmcgVW5pcXVlUmVmIGluc3RlYWQiKTsKQEAgLTEwMDQsNyArMTAzNSwxMSBA
QCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogICAg
ICAgICAgICAgZW50cnkgPSBleHBhbmQoZW50cnkpOwogCiAgICAgICAgIGludGVybmFsQ2hlY2tU
YWJsZUNvbnNpc3RlbmN5KCk7Ci0gICAgICAgIAorCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFD
SVRZCisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90
cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAg
ICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1
ZSk7CiAgICAgfQogCkBAIC0xMDQzLDYgKzEwNzgsMTAgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lU
SF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKIAogICAgICAgICBpbnRlcm5hbENoZWNrVGFi
bGVDb25zaXN0ZW5jeSgpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAg
IGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNp
emVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIHJldHVy
biBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5KSwgdHJ1ZSk7CiAgICAgfQog
CkBAIC0xMDYzLDYgKzExMDIsMTAgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5U
SUZJRVIoSGFzaFRhYmxlKTsKICAgICAgICAgbmV3RW50cnktPn5WYWx1ZSgpOwogICAgICAgICBu
ZXcgKE5vdE51bGwsIG5ld0VudHJ5KSBWYWx1ZVR5cGUoV1RGTW92ZShlbnRyeSkpOwogCisjaWYg
VFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNv
cmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5C
eXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIHJldHVybiBuZXdFbnRyeTsKICAgICB9CiAKQEAg
LTExMzYsNiArMTE3OSwxMCBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklF
UihIYXNoVGFibGUpOwogICAgICAgICBpZiAoc2hvdWxkU2hyaW5rKCkpCiAgICAgICAgICAgICBz
aHJpbmsoKTsKIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorICAgICAgICBoYXNoVGFi
bGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRl
cygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKKwogICAgICAgICBpbnRlcm5hbENoZWNr
VGFibGVDb25zaXN0ZW5jeSgpOwogICAgIH0KIApAQCAtMTIwMCw3ICsxMjQ3LDExIEBAIERFQ0xB
UkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAKICAgICAgICAg
aWYgKHNob3VsZFNocmluaygpKQogICAgICAgICAgICAgc2hyaW5rVG9CZXN0U2l6ZSgpOwotICAg
ICAgICAKKworI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorICAgICAgICBoYXNoVGFibGVU
cmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygp
LCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKKwogICAgICAgICBpbnRlcm5hbENoZWNrVGFi
bGVDb25zaXN0ZW5jeSgpOwogICAgICAgICByZXR1cm4gcmVtb3ZlZEJ1Y2tldENvdW50OwogICAg
IH0KQEAgLTEzNjMsNiArMTQxNCwxMCBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURF
TlRJRklFUihIYXNoVGFibGUpOwogICAgICAgICBpZiAob2xkVGFibGUpCiAgICAgICAgICAgICBI
YXNoVGFibGVNYWxsb2M6OmZyZWUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ob2xkVGFibGUpIC0g
bWV0YWRhdGFTaXplKTsKIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorICAgICAgICBo
YXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXpl
SW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKKwogICAgICAgICBpbnRlcm5h
bENoZWNrVGFibGVDb25zaXN0ZW5jeSgpOwogICAgICAgICByZXR1cm4gbmV3RW50cnk7CiAgICAg
fQpAQCAtMTM4OCw2ICsxNDQzLDEwIEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVO
VElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgICwgbV9zdGF0cyhtYWtlVW5pcXVlPFN0YXRzPigq
b3RoZXIubV9zdGF0cykpCiAjZW5kaWYKICAgICB7CisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFD
SVRZCisgICAgICAgIG1fdHJhY2tlZElEID0gaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZEFsbG9j
YXRpb24oc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCisKICAgICAg
ICAgdW5zaWduZWQgb3RoZXJLZXlDb3VudCA9IG90aGVyLnNpemUoKTsKICAgICAgICAgaWYgKCFv
dGhlcktleUNvdW50KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQwMSw2ICsxNDYwLDEwIEBA
IERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAKICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBvdGhlclZhbHVlIDogb3RoZXIpCiAgICAgICAgICAgICBh
ZGRVbmlxdWVGb3JJbml0aWFsaXphdGlvbjxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0
b3I6OmV4dHJhY3Qob3RoZXJWYWx1ZSksIG90aGVyVmFsdWUpOworCisjaWYgVFJBQ0tfSEFTSFRB
QkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2Fw
YWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNl
bmRpZgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CkBAIC0xNDExLDYgKzE0NzQsMTQgQEAgREVDTEFSRV9B
TExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKIAogICAgICAgICBzdGQ6
OnN3YXAobV90YWJsZSwgb3RoZXIubV90YWJsZSk7CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQ
QUNJVFkKKyAgICAgICAgc3RkOjpzd2FwKG1fdHJhY2tlZElELCBvdGhlci5tX3RyYWNrZWRJRCk7
CisKKyAgICAgICAgLy8gTm90IHN1cmUgaWYgdGhpcyBpcyBuZWNlc3NhcnkuIE5vdGhpbmcgd2ls
bCBoYXZlIGNoYW5nZWQuCisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5k
Q2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsK
KyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShvdGhlci5t
X3RyYWNrZWRJRCwgb3RoZXIuc2l6ZUluQnl0ZXMoKSwgb3RoZXIuY2FwYWNpdHlJbkJ5dGVzKCkp
OworI2VuZGlmCisKICNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKICAgICAgICAg
bV9zdGF0cy5zd2FwKG90aGVyLm1fc3RhdHMpOwogI2VuZGlmCkBAIC0xNDM1LDEwICsxNTA2LDE5
IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAK
ICAgICAgICAgbV90YWJsZSA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV90YWJsZSwgbnVsbHB0cik7
CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgc3RkOjpzd2FwKG1fdHJh
Y2tlZElELCBvdGhlci5tX3RyYWNrZWRJRCk7CisjZW5kaWYKKwogI2lmIERVTVBfSEFTSFRBQkxF
X1NUQVRTX1BFUl9UQUJMRQogICAgICAgICBtX3N0YXRzID0gV1RGTW92ZShvdGhlci5tX3N0YXRz
KTsKICAgICAgICAgb3RoZXIubV9zdGF0cyA9IG51bGxwdHI7CiAjZW5kaWYKKworI2lmIFRSQUNL
X0hBU0hUQUJMRV9DQVBBQ0lUWQorICAgICAgICBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6
ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMo
KSk7CisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkob3Ro
ZXIubV90cmFja2VkSUQsIG90aGVyLnNpemVJbkJ5dGVzKCksIG90aGVyLmNhcGFjaXR5SW5CeXRl
cygpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlw
ZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CkBAIC0xNDQ5LDYgKzE1MjksMTggQEAg
REVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgc2l6ZV90IEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6c2l6ZUluQnl0ZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHNpemUoKSAqIHNp
emVvZihWYWx1ZVR5cGUpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAgc2l6ZV90IEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6Y2FwYWNpdHlJbkJ5dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjYXBhY2l0
eSgpICogc2l6ZW9mKFZhbHVlVHlwZSk7CisgICAgfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJh
Y3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBL
ZXlUcmFpdHM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TaXplTGltaXRzLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL1NpemVMaW1pdHMuY3BwCmluZGV4IDBiZWJiYzI2N2M1ZWI0ZDgxOThhNTQ2
ZmMyNDRhYmRkY2ZmOWFjZGEuLmJjZjNiYTc3MjU4NTdkYTJkODQyMDdiZmIzMGQzZTIxYjE2OTll
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NpemVMaW1pdHMuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1NpemVMaW1pdHMuY3BwCkBAIC04Myw5ICs4MywxMiBAQCBwdWJsaWM6CiAgICAg
dHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKFQpLCBzdGQ6OmFsaWdubWVudF9v
ZjxUPjo6dmFsdWU+Ojp0eXBlIGlubGluZUJ1ZmZlcltpbmxpbmVDYXBhY2l0eV07CiB9OwogCisj
aWYgIVRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQogc3RhdGljX2Fzc2VydChzaXplb2YoVmVjdG9yPGlu
dD4pID09IHNpemVvZihTYW1lU2l6ZUFzVmVjdG9yV2l0aElubGluZUNhcGFjaXR5PGludD4pLCAi
VmVjdG9yIHNob3VsZCBzdGF5IHNtYWxsISIpOwogc3RhdGljX2Fzc2VydChzaXplb2YoVmVjdG9y
PGludCwgMT4pID09IHNpemVvZihTYW1lU2l6ZUFzVmVjdG9yV2l0aElubGluZUNhcGFjaXR5PGlu
dCwgMT4pLCAiVmVjdG9yIHNob3VsZCBzdGF5IHNtYWxsISIpOwogc3RhdGljX2Fzc2VydChzaXpl
b2YoVmVjdG9yPGludCwgMj4pID09IHNpemVvZihTYW1lU2l6ZUFzVmVjdG9yV2l0aElubGluZUNh
cGFjaXR5PGludCwgMj4pLCAiVmVjdG9yIHNob3VsZCBzdGF5IHNtYWxsISIpOwogc3RhdGljX2Fz
c2VydChzaXplb2YoVmVjdG9yPGludCwgMz4pID09IHNpemVvZihTYW1lU2l6ZUFzVmVjdG9yV2l0
aElubGluZUNhcGFjaXR5PGludCwgMz4pLCAiVmVjdG9yIHNob3VsZCBzdGF5IHNtYWxsISIpOwor
I2VuZGlmCisKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5jcHAKaW5kZXggNmEyYjQ3Y2ZjYjcyZTZiM2I5YzVi
ZGI1NzgxMTE2MGNmMzdkZDlmYS4uYWM1Y2M5NWFhZTdiMzE4NWM2OGE3YTdiOTFhYjkyMDM2MTE5
MWFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9WZWN0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMCwyNiArMTAsOTcgQEAKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCiAgKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJWZWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBUUkFD
S19WRUNUT1JfQ0FQQUNJVFkKKyNpbmNsdWRlIDx3dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2Vy
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNpZiBQTEFURk9STShDT0NP
QSkKKyNpbmNsdWRlIDxub3RpZnkuaD4KKyNpbmNsdWRlIDx3dGYvU3RhY2tTaG90Lmg+CisjZW5k
aWYKKwogbmFtZXNwYWNlIFdURiB7CiAKLURFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5U
SUZJRVIoVmVjdG9yKTsKKyNpZiBQTEFURk9STShDT0NPQSkKK3N0YXRpYyB2b2lkIGR1bXBXYXN0
ZWRWZWN0b3JDYXBhY2l0eSgpCit7CisgICAgYXV0byBjYWxsU2l0ZURhdGEgPSB2ZWN0b3JUcmFj
a2VyKCkuYWdncmVnYXRlQnlDYWxsU2l0ZShbXSAoVHJhY2tlZElELCBBbGxvY2F0aW9uQ2FsbFNp
dGVEYXRhJikgeworICAgIH0pOworCisgICAgLy8gTWFrZSBhIHZlY3RvciBvZiByYXcgcG9pbnRl
cnMgc28gd2UgY2FuIHNvcnQgdGhlbS4KKyAgICBzdGQ6OnZlY3RvcjxBbGxvY2F0aW9uQ2FsbFNp
dGVEYXRhKj4gY2FsbFNpdGVQdHJzOworICAgIGZvciAoY29uc3QgYXV0byYgc2l0ZURhdGEgOiBj
YWxsU2l0ZURhdGEpIHsKKyAgICAgICAgaWYgKCFzaXRlRGF0YS5jYXBhY2l0eSB8fCAoc2l0ZURh
dGEuY2FwYWNpdHkgPT0gc2l0ZURhdGEudXNlZFNpemUpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGNhbGxTaXRlUHRycy5wdXNoX2JhY2soY29uc3RfY2FzdDxBbGxvY2F0aW9uQ2Fs
bFNpdGVEYXRhKj4oJnNpdGVEYXRhKSk7CisgICAgfQorCisgICAgLy8gU29ydCBieSByZXZlcnNl
IHdhc3RhZ2UuCisgICAgc3RkOjpzb3J0KGNhbGxTaXRlUHRycy5iZWdpbigpLCBjYWxsU2l0ZVB0
cnMuZW5kKCksIFtdIChjb25zdCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKiBhLCBjb25zdCBBbGxv
Y2F0aW9uQ2FsbFNpdGVEYXRhKiBiKSB7CisgICAgICAgICBzaXplX3QgYVdhc3RhZ2UgPSBhLT5j
YXBhY2l0eSAtIGEtPnVzZWRTaXplOworICAgICAgICAgc2l6ZV90IGJXYXN0YWdlID0gYi0+Y2Fw
YWNpdHkgLSBiLT51c2VkU2l6ZTsKKyAgICAgICAgIHJldHVybiBhV2FzdGFnZSA+IGJXYXN0YWdl
OworICAgIH0pOworCisgICAgY29uc3RleHByIHNpemVfdCBtaW5XYXN0ZWRCeXRlQ291bnQgPSAx
MDI0OworICAgIFdURkxvZ0Fsd2F5cygiJWQgJWx1IGNhbGwgc2l0ZXMgY3JlYXRlZCB2ZWN0b3Jz
LiBTaG93aW5nIHNpdGVzIHdpdGggbW9yZSB0aGFuICVsdSBvZiB3YXN0YWdlOlxuIiwgZ2V0cGlk
KCksIGNhbGxTaXRlRGF0YS5zaXplKCksIG1pbldhc3RlZEJ5dGVDb3VudCk7CisKKyAgICBmb3Ig
KGF1dG8gc2l0ZURhdGEgOiBjYWxsU2l0ZVB0cnMpIHsKKyAgICAgICAgYXV0byB3YXN0ZWRCeXRl
cyA9IHNpdGVEYXRhLT5jYXBhY2l0eSAtIHNpdGVEYXRhLT51c2VkU2l6ZTsKKyAgICAgICAgaWYg
KHdhc3RlZEJ5dGVzIDwgbWluV2FzdGVkQnl0ZUNvdW50KQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJXYXN0ZWQgY2FwYWNpdHk6ICVsdSBieXRlcyAodXNlZCAl
bHUgb2YgJWx1IGJ5dGVzLCB1dGlsaXphdGlvbjogJS4yZiUlKSAtICVsdSBhbGxvY2F0aW9uc1xu
IiwKKyAgICAgICAgICAgIHdhc3RlZEJ5dGVzLAorICAgICAgICAgICAgc2l0ZURhdGEtPnVzZWRT
aXplLCBzaXRlRGF0YS0+Y2FwYWNpdHksIDEwMC4wICogc2l0ZURhdGEtPnVzZWRTaXplIC8gc2l0
ZURhdGEtPmNhcGFjaXR5LAorICAgICAgICAgICAgc2l0ZURhdGEtPmNvdW50KTsKKyAgICAgICAg
Y29uc3Qgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IDM7CisgICAgICAgIFdURlByaW50QmFja3RyYWNl
KHNpdGVEYXRhLT5zdGFjaygpLmFycmF5KCkgKyBmcmFtZXNUb1NraXAsIHNpdGVEYXRhLT5zdGFj
aygpLnNpemUoKSAtIGZyYW1lc1RvU2tpcCk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiXG4iKTsK
KyAgICB9Cit9CisjZW5kaWYKKworQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyJiB2ZWN0b3JUcmFj
a2VyKCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
aW5pdGlhbGl6ZU9uY2U7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFtdIHsK
KyAgICAgICAgaW50IHRva2VuOworICAgICAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0Y2goImNv
bS5hcHBsZS5XZWJLaXQuZHVtcFZlY3RvckNhcGFjaXR5IiwgJnRva2VuLCBkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeKGludCkgeworCisgICAgICAgICAgICBpbnQgZGVsYXlTZWNvbmRzID0g
MiAqIChnZXRwaWQoKSAlIDUpOworICAgICAgICAgICAgaW50NjRfdCBkZWZlcnJlZFdhaXRUaW1l
ID0gZGVsYXlTZWNvbmRzICogTlNFQ19QRVJfU0VDOworICAgICAgICAgICAgZGlzcGF0Y2hfdGlt
ZV90IHdoZW4gPSBkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkZWZlcnJlZFdhaXRU
aW1lKTsKKworICAgICAgICAgICAgZGlzcGF0Y2hfYWZ0ZXIod2hlbiwgZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgICAgICBkdW1wV2FzdGVkVmVjdG9yQ2FwYWNpdHko
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgfSk7CisgICAgfSk7CisjZW5k
aWYKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OkNvbnRhaW5lckNhcGFjaXR5VHJh
Y2tlcj4gdHJhY2tlcjsKKyAgICByZXR1cm4gdHJhY2tlcjsKK30KIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCisKKyNlbmRpZiAvLyBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1ZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggMWM5OGMw
ZDkyOWE3MGFkNDI3YzM4OTYxMDc0ZTI0YzVhYjc5ZDIwMy4uY2ExODdlM2FkMzBhNzFhOGZkNmEw
NGY0YjNmZjBmNTQ2NzMyOGYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgK
KysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKQEAgLTM3LDYgKzM3LDE0IEBACiAjaW5jbHVk
ZSA8d3RmL1ZhbHVlQ2hlY2suaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yVHJhaXRzLmg+CiAKKy8v
IEVuYWJsZSBUUkFDS19WRUNUT1JfQ0FQQUNJVFkgdG8gdHJhY2sgY2FsbCBzaXRlcyB0aGF0IHdh
c3RlIHZlY3RvciBjYXBhY2l0eS4gT24gQ29jb2EgcGxhdGZvcm1zLCB0aGUgZGF0YSBjYW4gYmUg
ZHVtcGVkCisvLyBieSBydW5uaW5nICJub3RpZnl1dGlsIC1wIGNvbS5hcHBsZS5XZWJLaXQuZHVt
cFZlY3RvckNhcGFjaXR5Ii4KKyNkZWZpbmUgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZIDEKKworI2lm
IFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorI2luY2x1ZGUgPHd0Zi9Db250YWluZXJDYXBhY2l0eVRy
YWNrZXIuaD4KKyNlbmRpZgorCiAjaWYgQVNBTl9FTkFCTEVECiBleHRlcm4gIkMiIHZvaWQgX19z
YW5pdGl6ZXJfYW5ub3RhdGVfY29udGlndW91c19jb250YWluZXIoY29uc3Qgdm9pZCogYmVnaW4s
IGNvbnN0IHZvaWQqIGVuZCwgY29uc3Qgdm9pZCogb2xkX21pZCwgY29uc3Qgdm9pZCogbmV3X21p
ZCk7CiAjZW5kaWYKQEAgLTQ3LDYgKzU1LDEwIEBAIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIAogbmFtZXNwYWNlIFdURiB7CiAKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKK1dURl9F
WFBPUlRfUFJJVkFURSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIHZlY3RvclRyYWNrZXIoKTsK
KyNlbmRpZgorCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihWZWN0b3Ip
OwogCiB0ZW1wbGF0ZSA8Ym9vbCBuZWVkc0Rlc3RydWN0aW9uLCB0eXBlbmFtZSBUPgpAQCAtMzQ1
LDYgKzM1NywxNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHB0cmRpZmZfdCBidWZmZXJNZW1vcnlP
ZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVmVjdG9yQnVmZmVyQmFzZSwgbV9idWZm
ZXIpOyB9CiAgICAgc2l6ZV90IGNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9jYXBhY2l0eTsg
fQogCisgICAgc2l6ZV90IGNhcGFjaXR5SW5CeXRlcygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9jYXBhY2l0eSAqIHNpemVvZihUKTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZUlu
Qnl0ZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2l6ZSAqIHNpemVvZihUKTsK
KyAgICB9CisKKwogICAgIE1hbGxvY1B0cjxULCBNYWxsb2M+IHJlbGVhc2VCdWZmZXIoKQogICAg
IHsKICAgICAgICAgVCogYnVmZmVyID0gbV9idWZmZXI7CkBAIC0zNzEsMTEgKzM5NCwxOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgflZlY3RvckJ1ZmZlckJhc2UoKQogICAgIHsKICAgICAgICAgLy8gRklY
TUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gZmluZCBhIHdheSB0byBBU1NFUlQgdGhhdCBtX2J1ZmZl
ciBoYXNuJ3QgbGVha2VkIGhlcmUuCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAg
IHZlY3RvclRyYWNrZXIoKS5yZWNvcmRGcmVlKG1fdHJhY2tlZElEKTsKKyAgICAgICAgbV90cmFj
a2VkSUQgPSAwOworI2VuZGlmCiAgICAgfQogCiAgICAgVCogbV9idWZmZXI7CiAgICAgdW5zaWdu
ZWQgbV9jYXBhY2l0eTsKICAgICB1bnNpZ25lZCBtX3NpemU7IC8vIE9ubHkgdXNlZCBieSB0aGUg
VmVjdG9yIHN1YmNsYXNzLCBidXQgcGxhY2VkIGhlcmUgdG8gYXZvaWQgcGFkZGluZyB0aGUgc3Ry
dWN0LgorI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIFRyYWNrZWRJRCBtX3RyYWNrZWRJ
RCB7IDAgfTsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2MgPSBWZWN0b3JNYWxsb2M+IGNsYXNzIFZlY3RvckJ1
ZmZlcjsKQEAgLTM4Nyw2ICs0MTcsOSBAQCBwcml2YXRlOgogcHVibGljOgogICAgIFZlY3RvckJ1
ZmZlcigpCiAgICAgeworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBtX3RyYWNr
ZWRJRCA9IHZlY3RvclRyYWNrZXIoKS5yZWNvcmRBbGxvY2F0aW9uKDAsIDApOworI2VuZGlmCiAg
ICAgfQogCiAgICAgVmVjdG9yQnVmZmVyKHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IHNpemUgPSAw
KQpAQCAtMzk2LDYgKzQyOSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGFsbG9jYXRpb24gb24g
c29tZSBzeXN0ZW1zLgogICAgICAgICBpZiAoY2FwYWNpdHkpCiAgICAgICAgICAgICBhbGxvY2F0
ZUJ1ZmZlcihjYXBhY2l0eSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAg
bV90cmFja2VkSUQgPSB2ZWN0b3JUcmFja2VyKCkucmVjb3JkQWxsb2NhdGlvbihzaXplSW5CeXRl
cygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICB9CiAKICAgICB+VmVjdG9yQnVm
ZmVyKCkKQEAgLTQwNyw2ICs0NDQsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGQ6OnN3
YXAobV9idWZmZXIsIG90aGVyLm1fYnVmZmVyKTsKICAgICAgICAgc3RkOjpzd2FwKG1fY2FwYWNp
dHksIG90aGVyLm1fY2FwYWNpdHkpOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAg
ICBzdGQ6OnN3YXAobV90cmFja2VkSUQsIG90aGVyLm1fdHJhY2tlZElEKTsKKyNlbmRpZgogICAg
IH0KICAgICAKICAgICB2b2lkIHJlc3RvcmVJbmxpbmVCdWZmZXJJZk5lZWRlZCgpIHsgfQpAQCAt
NDI4LDEwICs0NjgsMTYgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5OwogICAg
IHVzaW5nIEJhc2U6OmJ1ZmZlck1lbW9yeU9mZnNldDsKIAorICAgIHVzaW5nIEJhc2U6OmNhcGFj
aXR5SW5CeXRlczsKKyAgICB1c2luZyBCYXNlOjpzaXplSW5CeXRlczsKKwogICAgIHVzaW5nIEJh
c2U6OnJlbGVhc2VCdWZmZXI7CiAKIHByb3RlY3RlZDoKICAgICB1c2luZyBCYXNlOjptX3NpemU7
CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdXNpbmcgQmFzZTo6bV90cmFja2VkSUQ7
CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNF
eHRyYWN0b3I7CkBAIC00NDgsNiArNDk0LDkgQEAgcHVibGljOgogICAgIFZlY3RvckJ1ZmZlcigp
CiAgICAgICAgIDogQmFzZShpbmxpbmVCdWZmZXIoKSwgaW5saW5lQ2FwYWNpdHksIDApCiAgICAg
eworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBtX3RyYWNrZWRJRCA9IHZlY3Rv
clRyYWNrZXIoKS5yZWNvcmRBbGxvY2F0aW9uKHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRl
cygpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIFZlY3RvckJ1ZmZlcihzaXplX3QgY2FwYWNpdHks
IHNpemVfdCBzaXplID0gMCkKQEAgLTQ1NSw2ICs1MDQsMTAgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgaWYgKGNhcGFjaXR5ID4gaW5saW5lQ2FwYWNpdHkpCiAgICAgICAgICAgICBCYXNlOjph
bGxvY2F0ZUJ1ZmZlcihjYXBhY2l0eSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAg
ICAgICAgbV90cmFja2VkSUQgPSB2ZWN0b3JUcmFja2VyKCkucmVjb3JkQWxsb2NhdGlvbihzaXpl
SW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICB9CiAKICAgICB+VmVj
dG9yQnVmZmVyKCkKQEAgLTUxNCw2ICs1NjcsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgc3Rk
Ojpzd2FwKG1fYnVmZmVyLCBvdGhlci5tX2J1ZmZlcik7CiAgICAgICAgICAgICBzdGQ6OnN3YXAo
bV9jYXBhY2l0eSwgb3RoZXIubV9jYXBhY2l0eSk7CiAgICAgICAgIH0KKworI2lmIFRSQUNLX1ZF
Q1RPUl9DQVBBQ0lUWQorICAgICAgICBzdGQ6OnN3YXAobV90cmFja2VkSUQsIG90aGVyLm1fdHJh
Y2tlZElEKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgcmVzdG9yZUlubGluZUJ1ZmZlcklm
TmVlZGVkKCkKQEAgLTU0Myw2ICs2MDAsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6YnVm
ZmVyOwogICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5OwogICAgIHVzaW5nIEJhc2U6OmJ1ZmZlck1l
bW9yeU9mZnNldDsKKyAgICB1c2luZyBCYXNlOjpjYXBhY2l0eUluQnl0ZXM7CisgICAgdXNpbmcg
QmFzZTo6c2l6ZUluQnl0ZXM7CiAKICAgICBNYWxsb2NQdHI8VCwgTWFsbG9jPiByZWxlYXNlQnVm
ZmVyKCkKICAgICB7CkBAIC01NTMsNiArNjEyLDkgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAg
ICAgdXNpbmcgQmFzZTo6bV9zaXplOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHVz
aW5nIEJhc2U6Om1fdHJhY2tlZElEOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgdXNpbmcgQmFz
ZTo6bV9idWZmZXI7CkBAIC02NjIsNiArNzI0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0
Lm1fc2l6ZSA9IHNpemU7CiAKICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEluaXRpYWxpemU8MD4o
c3RkOjpmb3J3YXJkPEl0ZW1zPihpdGVtcykuLi4pOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFD
SVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkocmVzdWx0
Lm1fdHJhY2tlZElELCByZXN1bHQuc2l6ZUluQnl0ZXMoKSwgcmVzdWx0LmNhcGFjaXR5SW5CeXRl
cygpKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtNjkxLDYg
Kzc1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9CiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8c2l6ZV90PihtX3NpemUpICogc2l6ZW9mKFQpOyB9CisgICAgc2l6ZV90IGNhcGFjaXR5SW5C
eXRlcygpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OmNhcGFjaXR5SW5CeXRlcygpOyB9CiAgICAgc3Rh
dGljIHB0cmRpZmZfdCBzaXplTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KFZlY3RvciwgbV9zaXplKTsgfQogICAgIHNpemVfdCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJu
IEJhc2U6OmNhcGFjaXR5KCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAh
c2l6ZSgpOyB9CkBAIC04MjksNiArODk2LDExIEBAIHB1YmxpYzoKIAogICAgICAgICBhc2FuU2V0
SW5pdGlhbEJ1ZmZlclNpemVUbyhtX3NpemUpOwogICAgICAgICBvdGhlci5hc2FuU2V0SW5pdGlh
bEJ1ZmZlclNpemVUbyhvdGhlci5tX3NpemUpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZ
CisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2Vk
SUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyAgICAgICAgdmVjdG9yVHJh
Y2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShvdGhlci5tX3RyYWNrZWRJRCwgb3RoZXIuc2l6
ZUluQnl0ZXMoKSwgb3RoZXIuY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQogCiAg
ICAgdm9pZCByZXZlcnNlKCk7CkBAIC04ODQsNiArOTU2LDExIEBAIHByaXZhdGU6CiAgICAgdXNp
bmcgQmFzZTo6cmVhbGxvY2F0ZUJ1ZmZlcjsKICAgICB1c2luZyBCYXNlOjpyZXN0b3JlSW5saW5l
QnVmZmVySWZOZWVkZWQ7CiAgICAgdXNpbmcgQmFzZTo6cmVsZWFzZUJ1ZmZlcjsKKworI2lmIFRS
QUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHVzaW5nIEJhc2U6Om1fdHJhY2tlZElEOworI2VuZGlm
CisKICNpZiBBU0FOX0VOQUJMRUQKICAgICB1c2luZyBCYXNlOjplbmRPZkJ1ZmZlcjsKICNlbmRp
ZgpAQCAtODk3LDYgKzk3NCwxMCBAQCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OlZlY3Rvcihjb25zdCBWZQogCiAgICAgaWYg
KGJlZ2luKCkpCiAgICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhl
ci5iZWdpbigpLCBvdGhlci5lbmQoKSwgYmVnaW4oKSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQ
QUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tl
ZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxv
d0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgpAQCAtOTA4LDYg
Kzk4OSwxMCBAQCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWlu
Q2FwYWNpdHksIE1hbGxvYz46OlZlY3Rvcihjb25zdCBWZQogCiAgICAgaWYgKGJlZ2luKCkpCiAg
ICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpLCBv
dGhlci5lbmQoKSwgYmVnaW4oKSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2
ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5C
eXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNp
emVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgpAQCAtOTMwLDYgKzEwMTUsMTAgQEAg
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBN
YWxsb2M+JiBWZWN0b3I8VCwgaW5saW4KICAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0aWFsaXpl
ZENvcHkob3RoZXIuYmVnaW4oKSArIHNpemUoKSwgb3RoZXIuZW5kKCksIGVuZCgpKTsKICAgICBt
X3NpemUgPSBvdGhlci5zaXplKCk7CiAKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2
ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5C
eXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKKwogICAgIHJldHVybiAqdGhpczsK
IH0KIApAQCAtOTU4LDYgKzEwNDcsMTAgQEAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+JiBWZWN0b3I8VCwgaW5saW4KICAgICBU
eXBlT3BlcmF0aW9uczo6dW5pbml0aWFsaXplZENvcHkob3RoZXIuYmVnaW4oKSArIHNpemUoKSwg
b3RoZXIuZW5kKCksIGVuZCgpKTsKICAgICBtX3NpemUgPSBvdGhlci5zaXplKCk7CiAKKyNpZiBU
UkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENh
cGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7Cisj
ZW5kaWYKKwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtMTAzOSw2ICsxMTMyLDEwIEBAIHZv
aWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5
LCBNYWxsb2M+OjpmaWxsKGNvbnN0CiAgICAgc3RkOjpmaWxsKGJlZ2luKCksIGVuZCgpLCB2YWwp
OwogICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkRmlsbChlbmQoKSwgYmVnaW4oKSAr
IG5ld1NpemUsIHZhbCk7CiAgICAgbV9zaXplID0gbmV3U2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RP
Ul9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90
cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92
ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+CkBAIC0x
MTA2LDYgKzEyMDMsMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjpyZXMKICAgICB9CiAgICAgCiAg
ICAgbV9zaXplID0gc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3Rv
clRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVz
KCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90
IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+CkBAIC0xMTIyLDYgKzEyMjMsMTAgQEAgdm9p
ZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHks
IE1hbGxvYz46OnNocmluayhzaXoKICAgICBUeXBlT3BlcmF0aW9uczo6ZGVzdHJ1Y3QoYmVnaW4o
KSArIHNpemUsIGVuZCgpKTsKICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhzaXplKTsK
ICAgICBtX3NpemUgPSBzaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVj
dG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0
ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXpl
X3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KQEAgLTExMzQsNiArMTIzOSwxMCBAQCB2
b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0
eSwgTWFsbG9jPjo6Z3JvdyhzaXplXwogICAgIGlmIChiZWdpbigpKQogICAgICAgICBUeXBlT3Bl
cmF0aW9uczo6aW5pdGlhbGl6ZUlmTm9uUE9EKGVuZCgpLCBiZWdpbigpICsgc2l6ZSk7CiAgICAg
bV9zaXplID0gc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRy
YWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCks
IGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1p
bkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+CkBAIC0xMjA1LDYgKzEzMTQsMTAgQEAgYm9vbCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1h
bGxvYz46OnJlc2VydmVDYXAKIAogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlKG9sZEJ1ZmZlciwg
b2xkRW5kLCBiZWdpbigpKTsKICAgICBCYXNlOjpkZWFsbG9jYXRlQnVmZmVyKG9sZEJ1ZmZlcik7
CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3Jk
U2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0
ZXMoKSk7CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTIzNiw2ICsxMzQ5LDkg
QEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2Fw
YWNpdHksIE1hbGxvYz46OnNocmlua0NhcGEKICAgICAgICAgaWYgKEJhc2U6OnNob3VsZFJlYWxs
b2NhdGVCdWZmZXIobmV3Q2FwYWNpdHkpKSB7CiAgICAgICAgICAgICBCYXNlOjpyZWFsbG9jYXRl
QnVmZmVyKG5ld0NhcGFjaXR5KTsKICAgICAgICAgICAgIGFzYW5TZXRJbml0aWFsQnVmZmVyU2l6
ZVRvKHNpemUoKSk7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgICAgICB2ZWN0
b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRl
cygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0xMjQ5LDYgKzEzNjUsMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnNocmlua0NhcGEK
ICAgICBCYXNlOjpyZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQoKTsKIAogICAgIGFzYW5TZXRJ
bml0aWFsQnVmZmVyU2l6ZVRvKHNpemUoKSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkK
KyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBz
aXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgpAQCAtMTI3OCw2ICsxMzk4
LDExIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvCiAgICAgVCogZGVzdCA9IGVuZCgpOwogICAg
IFZlY3RvckNvcGllcjxzdGQ6OmlzX3RyaXZpYWw8VD46OnZhbHVlLCBVPjo6dW5pbml0aWFsaXpl
ZENvcHkoZGF0YSwgc3RkOjphZGRyZXNzb2YoZGF0YVtkYXRhU2l6ZV0pLCBkZXN0KTsKICAgICBt
X3NpemUgPSBuZXdTaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9y
VHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMo
KSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMTI4OSw2ICsxNDE0LDEwIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBWZWN0b3I8VCwgaW5saW5l
Q2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvCiAgICAgICAgIGFz
YW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSArIDEpOwogICAgICAgICBuZXcgKE5vdE51
bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSkpOwogICAgICAgICArK21fc2l6ZTsK
KworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVj
b3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUlu
Qnl0ZXMoKSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0xMzAz
LDYgKzE0MzIsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG8KICAgICAgICAgYXNhbkJ1ZmZl
clNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAgICAgICAgIG5ldyAoTm90TnVsbCwgZW5k
KCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKICAgICAgICAgKyttX3NpemU7CisK
KyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29y
ZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5
dGVzKCkpOworI2VuZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTMyNyw3
ICsxNDYwLDExIEBAIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRs
ZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjphcHBlbmRTbG93CiAgICAgYXNhbkJ1ZmZlclNpemVX
aWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6
OmZvcndhcmQ8VT4oKnB0cikpOwogICAgICsrbV9zaXplOwotICAgIHJldHVybiB0cnVlOworIAor
ICNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6
ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMo
KSk7CisjZW5kaWYKKyAgIHJldHVybiB0cnVlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1p
bkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+CkBAIC0xMzQ3LDYgKzE0ODQsMTAgQEAgYm9vbCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1h
bGxvYz46OmNvbnN0cnVjdEEKICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUg
KyAxKTsKICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CiAgICAgKyttX3NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2
ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5C
eXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMTM2Myw2ICsxNTA0LDEwIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvCiAKICAgICBu
ZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSkpOwogICAgICsrbV9z
aXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJl
Y29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJ
bkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHks
IHR5cGVuYW1lIE1hbGxvYz4KQEAgLTEzNzUsNiArMTUyMCwxMCBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5
LCBNYWxsbwogCiAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pOwogICAgICsrbV9zaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisg
ICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6
ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
LCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KQEAgLTE0MTIsNiArMTU2MSwx
MCBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5D
YXBhY2l0eSwgTWFsbG9jPjo6aW5zZXJ0KHNpegogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3Zl
cmxhcHBpbmcoc3BvdCwgZW5kKCksIHNwb3QgKyBkYXRhU2l6ZSk7CiAgICAgVmVjdG9yQ29waWVy
PHN0ZDo6aXNfdHJpdmlhbDxUPjo6dmFsdWUsIFU+Ojp1bmluaXRpYWxpemVkQ29weShkYXRhLCBz
dGQ6OmFkZHJlc3NvZihkYXRhW2RhdGFTaXplXSksIHNwb3QpOwogICAgIG1fc2l6ZSA9IG5ld1Np
emU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVj
b3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUlu
Qnl0ZXMoKSk7CisjZW5kaWYKIH0KICAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHks
IHR5cGVuYW1lIE1hbGxvYz4KQEAgLTE0MzIsNiArMTU4NSwxMCBAQCBpbmxpbmUgdm9pZCBWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxv
Yz46OmlucwogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoc3BvdCwgZW5kKCks
IHNwb3QgKyAxKTsKICAgICBuZXcgKE5vdE51bGwsIHNwb3QpIFQoc3RkOjpmb3J3YXJkPFU+KCpw
dHIpKTsKICAgICArK21fc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZl
Y3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5
dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6
ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+CkBAIC0xNDUwLDYgKzE2MDcsMTAgQEAg
aW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1p
bkNhcGFjaXR5LCBNYWxsb2M+OjpyZW0KICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBw
aW5nKHNwb3QgKyAxLCBlbmQoKSwgc3BvdCk7CiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdl
VG8obV9zaXplIC0gMSk7CiAgICAgLS1tX3NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJ
VFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElE
LCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgpAQCAtMTQ2Myw2ICsx
NjI0LDEwIEBAIGlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6cmVtCiAgICAgVHlwZU9wZXJhdGlvbnM6Om1v
dmVPdmVybGFwcGluZyhlbmRTcG90LCBlbmQoKSwgYmVnaW5TcG90KTsKICAgICBhc2FuQnVmZmVy
U2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgLSBsZW5ndGgpOwogICAgIG1fc2l6ZSAtPSBsZW5ndGg7
CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3Jk
U2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0
ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlw
ZW5hbWUgTWFsbG9jPgpAQCAtMTUyMCw2ICsxNjg1LDEwIEBAIGlubGluZSB1bnNpZ25lZCBWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxv
Yz46CiAgICAgICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoaG9sZUVuZCwgZW5k
KCksIGhvbGVCZWdpbik7CiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplIC0g
bWF0Y2hDb3VudCk7CiAgICAgbV9zaXplIC09IG1hdGNoQ291bnQ7CisKKyNpZiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1f
dHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAg
ICByZXR1cm4gbWF0Y2hDb3VudDsKIH0KIApAQCAtMTU2MCw2ICsxNzI5LDEwIEBAIGlubGluZSBN
YWxsb2NQdHI8VCwgTWFsbG9jPiBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpCiAgICAgfQogICAgIG1fc2l6ZSA9IDA7CiAgICAgLy8gRklYTUU6IFNo
b3VsZCB3ZSBjYWxsIEJhc2U6OnJlc3RvcmVJbmxpbmVCdWZmZXJJZk5lZWRlZCgpIGhlcmU/CisK
KyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6
ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMo
KSk7CisjZW5kaWYKICAgICByZXR1cm4gYnVmZmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXBsYWNlV2l0aC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVwbGFjZVdpdGguaApp
bmRleCAyZTE0ZmJjYzhlN2JkMDFmM2RmMDUxM2M0MDNlZGJmY2JjYTZmN2FkLi4zNmMyNjkwNTNj
OTFlODI3ZTkxZjExNTFjMWQ0YWZhNzdmNWU1NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXBsYWNlV2l0aC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlcGxhY2VXaXRoLmgKQEAg
LTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEFTVCB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTmV3LCB0
eXBlbmFtZSBPbGQsIHR5cGVuYW1lIC4uLkFyZ3M+CiBBTFdBWVNfSU5MSU5FIE5ldyogcmVwbGFj
ZVdpdGgoT2xkJiBvbGQsIEFyZ3MmJi4uLiBhcmdzKQogewotICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKE5ldykgPD0gc2l6ZW9mKE9sZCksICJUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIHBsYWNlbWVu
dCBuZXcgYmVsb3cgdG8gbm90IG92ZXJ3cml0ZSB1bm93bmVkIG1lbW9yeS4iKTsKKyAgICAvLyBz
dGF0aWNfYXNzZXJ0KHNpemVvZihOZXcpIDw9IHNpemVvZihPbGQpLCAiVGhpcyBpcyBuZWVkZWQg
Zm9yIHRoZSBwbGFjZW1lbnQgbmV3IGJlbG93IHRvIG5vdCBvdmVyd3JpdGUgdW5vd25lZCBtZW1v
cnkuIik7CiAgICAgdm9pZCogbG9jYXRpb24gPSAmb2xkOwogICAgIE9sZDo6ZGVzdHJ1Y3Qob2xk
KTsKICAgICByZXR1cm4gbmV3IChsb2NhdGlvbikgTmV3KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1l
Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250
YWluZXIuY3BwCmluZGV4IDRiODcyMGM2NzBhMGMzNzRlOTdiYzA4ZGJiNjUxYTc2MTZhMTZkNjMu
LjBiYTAwYjUwYzQ4OGM4ODU2NTU1YjBlNzJkZWVlYjc0MjNmNGJmNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCkBAIC0xMTMs
NyArMTEzLDcgQEAgYm9vbCBTTUlMVGltZUNvbnRhaW5lcjo6aXNTdGFydGVkKCkgY29uc3QKIAog
dm9pZCBTTUlMVGltZUNvbnRhaW5lcjo6YmVnaW4oKQogewotICAgIEFTU0VSVCghbV9iZWdpblRp
bWUpOworLy8gICAgQVNTRVJUKCFtX2JlZ2luVGltZSk7CiAgICAgTW9ub3RvbmljVGltZSBub3cg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgIC8vIElmICdtX3ByZXNldFN0YXJ0VGltZScg
aXMgc2V0LCB0aGUgdGltZWxpbmUgd2FzIG1vZGlmaWVkIHZpYSBzZXRFbGFwc2VkKCkgYmVmb3Jl
IHRoZSBkb2N1bWVudCBiZWdhbi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464809</attachid>
            <date>2023-02-01 21:54:29 -0800</date>
            <delta_ts>2023-02-03 21:04:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186698-20230201215428.patch</filename>
            <type>text/plain</type>
            <size>51420</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA1ZDFjZGE4
MmIzOWFiMjgzMTk5MzI3ZmI0ZDg2ZTQ2OTA5Y2Q2NTQ4Li4xZDBlODM0ODNlNDA3ODg4ZDUwNWVj
ODlmNTBiNTA1ZWQ4YzdhYjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCkBAIC05OTYsNyArOTk2LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFVuaXF1
ZWRTdHJpbmdJbXBsKj4gbV9jYWNoZWRJZGVudGlmaWVyVWlkczsKICNlbmRpZgogfTsKLSNpZiAh
QVNTRVJUX0VOQUJMRUQgJiYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCisjaWYgIUFTU0VSVF9F
TkFCTEVEICYmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiAhZGVmaW5lZChUUkFDS19IQVNI
VEFCTEVfQ0FQQUNJVFkpCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihDb2RlQmxvY2spIDw9IDI0MCwg
IktlZXAgaXQgc21hbGwgZm9yIG1lbW9yeSBzYXZpbmciKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAppbmRleCAwN2Yz
MmVmMjQ4MTRlNDgzMTNlNjA2MjczYzc2NDU3NTljYTIxOGVlLi5iNWFkOTNlNTNlZmIzOWJiOWNj
Njc1OTljNmY5Y2I0NzM0NjVlZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgog
ICAgIFdyaXRlQmFycmllcjxKU0ltbXV0YWJsZUJ1dHRlcmZseT4gbV9jYWNoZWRQcm9wZXJ0eU5h
bWVzW251bWJlck9mQ2FjaGVkUHJvcGVydHlOYW1lc10geyB9OwogCiAgICAgdHlwZWRlZiBIYXNo
TWFwPFByb3BlcnR5T2Zmc2V0LCBSZWZQdHI8V2F0Y2hwb2ludFNldD4sIFdURjo6SW50SGFzaDxQ
cm9wZXJ0eU9mZnNldD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8UHJvcGVy
dHlPZmZzZXQ+PiBQcm9wZXJ0eVdhdGNocG9pbnRNYXA7Ci0jaWZkZWYgTkRFQlVHCisjaWYgZGVm
aW5lZChOREVCVUcpICYmICFkZWZpbmVkKFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWSkKICAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihQcm9wZXJ0eVdhdGNocG9pbnRNYXApID09IHNpemVvZih2b2lk
KiksICJTdHJ1Y3R1cmVSYXJlRGF0YSBzaG91bGQgcmVtYWluIHNtYWxsIik7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODJmODBmMmYwMzg3
ODRmNjY4NjhiOWEyYTdkYTA0Mjk5MzczZjA5NS4uZWY5ZWFhOWQ1YjAyMmU4YWYzM2FiNTFjZjBk
NGFmODQ0N2YwYjY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xOCw2ICsxOCw4IEBACiAJCTBGNjZCMjhFMURDOTdCQUIwMDRBMUQzRiAvKiBTZWNvbmRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZC
Mjg0MURDOTdCQUIwMDRBMUQzRiAvKiBTZWNvbmRzLmNwcCAqLzsgfTsKIAkJMEY2NkIyOTAxREM5
N0JBQjAwNEExRDNGIC8qIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2QjI4NjFEQzk3QkFCMDA0QTFE
M0YgLyogVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCAqLzsgfTsKIAkJMEY2NkIyOTIxREM5
N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZCMjg4MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5j
cHAgKi87IH07CisJCTBGNjc5OEFGMjk4QjcxQTcwMEZFOTk5QSAvKiBDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY2Nzk4QUQyOThCNzE5QzAwRkU5OTlBIC8qIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5j
cHAgKi87IH07CisJCTBGNjc5OEIwMjk4QjcxQUYwMEZFOTk5QSAvKiBDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNjc5OEFFMjk4QjcxOUMwMEZFOTk5QSAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjcwNzVG
NTFGQkY1M0NEMDA0ODlBRjAgLyogVGltaW5nU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MDc1RjQxRkJGNTM3QTAwNDg5QUYwIC8qIFRp
bWluZ1Njb3BlLmNwcCAqLzsgfTsKIAkJMEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RC
aXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovOyB9Owog
CQkwRjgyNEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgyNEE2NDFCNzQ0M0EwMDAyRTM0
NUQgLyogUGFya2luZ0xvdC5jcHAgKi87IH07CkBAIC05NzAsNiArOTcyLDggQEAKIAkJMEY2NkIy
ODcxREM5N0JBQjAwNEExRDNGIC8qIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkIyODgxREM5N0JBQjAwNEExRDNGIC8qIFdh
bGxUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhbGxUaW1l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkIyODkxREM5N0JBQjAwNEEx
RDNGIC8qIFdhbGxUaW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhbGxU
aW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjc5OEFEMjk4QjcxOUMwMEZF
OTk5QSAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY2Nzk4QUUyOThCNzE5QzAwRkU5OTlBIC8qIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY3MDc1RjMxRkJGNTM3QTAwNDg5QUYwIC8qIFRpbWluZ1Njb3Bl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRpbWluZ1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNzA3NUY0MUZCRjUzN0EwMDQ4OUFGMCAvKiBUaW1pbmdTY29wZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUaW1pbmdTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSYW5nZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjAwNiw2ICsyMDEwLDggQEAKIAkJCQkwRjMwQ0I1OTFGQ0RGMTMzMDA0QjUzMjMgLyog
Q29uY3VycmVudFB0ckhhc2hTZXQuaCAqLywKIAkJCQkwRkI0Njc4MzFGREUyODJDMDAzRkNCMDkg
LyogQ29uY3VycmVudFZlY3Rvci5oICovLAogCQkJCTBGREI2OThEMUI3QzY0M0EwMDBDMTA3OCAv
KiBDb25kaXRpb24uaCAqLywKKwkJCQkwRjY3OThBRDI5OEI3MTlDMDBGRTk5OUEgLyogQ29udGFp
bmVyQ2FwYWNpdHlUcmFja2VyLmNwcCAqLywKKwkJCQkwRjY3OThBRTI5OEI3MTlDMDBGRTk5OUEg
LyogQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmggKi8sCiAJCQkJMEY4RTg1REExRkQ0ODVCMDAw
NjkxODg5IC8qIENvdW50aW5nTG9jay5jcHAgKi8sCiAJCQkJMEZGQkNCRkExRkQzN0UwRjAwNzJB
QUYwIC8qIENvdW50aW5nTG9jay5oICovLAogCQkJCUUzOEM0MTI2MUVCNEUwNjgwMDQyOTU3RCAv
KiBDUFVUaW1lLmNwcCAqLywKQEAgLTI5NzEsNiArMjk3Nyw3IEBACiAJCQkJREQzREM4OEYyN0E0
QkY4RTAwN0U1QjYxIC8qIENvbmN1cnJlbnRWZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCURE
M0RDOEQwMjdBNEJGOEUwMDdFNUI2MSAvKiBDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CURERjMwN0Y1MjdDMDg3MEUwMDZBNTI2RiAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGNjc5OEIwMjk4QjcxQUYwMEZFOTk5QSAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCURERjMwN0M2MjdDMDg2REYwMDZBNTI2RiAvKiBDb252ZXJzaW9u
TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREQzREM4RDEyN0E0QkY4RTAwN0U1QjYxIC8qIENv
dW50aW5nTG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREQzREM5MjYyN0E0QkY4RTAwN0U1QjYx
IC8qIENQVVRpbWUuaCBpbiBIZWFkZXJzICovLApAQCAtMzY4OSw2ICszNjk2LDcgQEAKIAkJCQkw
RjhGMkI5MjE3MkUwMTAzMDA3REJEQTUgLyogQ29tcGlsYXRpb25UaHJlYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTMxNDlBM0IyMjhCRENBQzAwQkZBNkM3IC8qIENvbmN1cnJlbnRCdWZmZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMENCNUExRkNERjEzNDAwNEI1MzIzIC8qIENvbmN1
cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNjc5OEFGMjk4QjcxQTcw
MEZFOTk5QSAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY4RTg1REIxRkQ0ODVCMDAwNjkxODg5IC8qIENvdW50aW5nTG9jay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMzhDNDEyODFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFQjJDODZEOTI2N0IyNzVEMDA1MkNCOUEgLyogQ1BVVGltZVBPU0lYLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBkNWRmMGY0N2IzZWIyNWMz
ZTk0ZjBiNWRlYzU5MTY4MTk2M2UwYmQ0Li5hNzhlMjdkZDFkYzRjZDUwNjQwODdlZTdlZTdjNDQy
NzZlODIxOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDksNiArNDksNyBAQCBzZXQoV1RG
X1BVQkxJQ19IRUFERVJTCiAgICAgQ29uY3VycmVudFB0ckhhc2hTZXQuaAogICAgIENvbmN1cnJl
bnRWZWN0b3IuaAogICAgIENvbmRpdGlvbi5oCisgICAgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2Vy
LmgKICAgICBDb3VudGluZ0xvY2suaAogICAgIENyb3NzVGhyZWFkQ29waWVyLmgKICAgICBDcm9z
c1RocmVhZFF1ZXVlLmgKQEAgLTQzOCw2ICs0MzksNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBD
b21waWxhdGlvblRocmVhZC5jcHAKICAgICBDb25jdXJyZW50QnVmZmVyLmNwcAogICAgIENvbmN1
cnJlbnRQdHJIYXNoU2V0LmNwcAorICAgIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAKICAg
ICBDb3VudGluZ0xvY2suY3BwCiAgICAgQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiAgICAgQ3Jvc3NU
aHJlYWRUYXNrSGFuZGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbnRhaW5l
ckNhcGFjaXR5VHJhY2tlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0eVRy
YWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhZTAwMzVhNWU2MzliYTEwNGNhMjIwOTBkNGM4MzJmZTRk
NzczMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0
eVRyYWNrZXIuY3BwCkBAIC0wLDAgKzEsMjA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9D
b250YWluZXJDYXBhY2l0eVRyYWNrZXIuaD4KKworI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+Cisj
aW5jbHVkZSA8d3RmL1N0YWNrU2hvdC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworQWxsb2NhdGlv
bkNhbGxTaXRlRGF0YTo6QWxsb2NhdGlvbkNhbGxTaXRlRGF0YShzaXplX3Qgc3RhY2tEZXB0aCwg
c2l6ZV90IGluVXNlZFNpemUsIHNpemVfdCBpbkNhcGFjaXR5KQorICAgIDogdXNlZFNpemUoaW5V
c2VkU2l6ZSkKKyAgICAsIGNhcGFjaXR5KGluQ2FwYWNpdHkpCisgICAgLCBtX3N0YWNrKHN0ZDo6
bWFrZV91bmlxdWU8U3RhY2tTaG90PihzdGFja0RlcHRoKSkKK3sKK30KKworQWxsb2NhdGlvbkNh
bGxTaXRlRGF0YTo6QWxsb2NhdGlvbkNhbGxTaXRlRGF0YShjb25zdCBTdGFja1Nob3QmIHN0YWNr
KQorICAgIDogbV9zdGFjayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hvdD4oc3RhY2spKQorewor
fQorCitBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhOjpBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKGNvbnN0
IEFsbG9jYXRpb25DYWxsU2l0ZURhdGEmIG90aGVyKQorICAgIDogY291bnQob3RoZXIuY291bnQp
CisgICAgLCB1c2VkU2l6ZShvdGhlci51c2VkU2l6ZSkKKyAgICAsIGNhcGFjaXR5KG90aGVyLmNh
cGFjaXR5KQorICAgICwgbV9zdGFjayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hvdD4ob3RoZXIu
c3RhY2soKSkpCit7Cit9CisKK0FsbG9jYXRpb25DYWxsU2l0ZURhdGE6On5BbGxvY2F0aW9uQ2Fs
bFNpdGVEYXRhKCkgPSBkZWZhdWx0OworCitjb25zdCBTdGFja1Nob3QmIEFsbG9jYXRpb25DYWxs
U2l0ZURhdGE6OnN0YWNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKm1fc3RhY2s7Cit9CisKK3N0
cnVjdCBDb250YWluZXJBbGxvY2F0aW9uRGF0YSB7CisgICAgQ29udGFpbmVyQWxsb2NhdGlvbkRh
dGEoc2l6ZV90IHN0YWNrU2hvdFNpemUsIHNpemVfdCBpblNpemUsIHNpemVfdCBpbkNhcGFjaXR5
KQorICAgICAgICA6IGFsbG9jYXRpb25TdGFjayhzdGFja1Nob3RTaXplKQorICAgICAgICAsIHNp
emUoaW5TaXplKQorICAgICAgICAsIGNhcGFjaXR5KGluQ2FwYWNpdHkpCisgICAgeworICAgIAor
ICAgIH0KKyAgICBTdGFja1Nob3QgYWxsb2NhdGlvblN0YWNrOworICAgIHNpemVfdCBzaXplOwor
ICAgIHNpemVfdCBjYXBhY2l0eTsKK307CisKK3N0cnVjdCBDb250YWluZXJDYXBhY2l0eVRyYWNr
ZXI6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGwgeworICAgIHN0ZDo6dW5vcmRlcmVkX21h
cDxUcmFja2VkSUQsIHN0ZDo6dW5pcXVlX3B0cjxDb250YWluZXJBbGxvY2F0aW9uRGF0YT4+IG1f
dHJhY2tlZElEVG9Db250YWluZXJEYXRhOworfTsKKworLy8gVG8gcHJldmVudCBwZXItdGhyZWFk
IHJlLWVudHJhbmN5IHdlIHRha2UgYSBwb2ludGVyIHRvIGFuIG9iamVjdCBvbiB0aGUgc3RhY2ss
IGluc2lkZSBtX211dGV4IGxvY2sgc2NvcGUuCitjbGFzcyBBdm9pZFJlY29yZGluZ1Njb3BlIHsK
K3B1YmxpYzoKKyAgICBBdm9pZFJlY29yZGluZ1Njb3BlKENvbnRhaW5lckNhcGFjaXR5VHJhY2tl
ciYgdHJhY2tlciwgYm9vbCogc3RhY2tPYmplY3QpCisgICAgICAgIDogbV90cmFja2VyKHRyYWNr
ZXIpCisgICAgeworICAgICAgICBtX3RyYWNrZXIubV9hdm9pZFJlZW50cmFuY3kgPSBzdGFja09i
amVjdDsKKyAgICB9CisKKyAgICB+QXZvaWRSZWNvcmRpbmdTY29wZSgpCisgICAgeworICAgICAg
ICBtX3RyYWNrZXIubV9hdm9pZFJlZW50cmFuY3kgPSBudWxscHRyOworICAgIH0KK3ByaXZhdGU6
CisgICAgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyJiBtX3RyYWNrZXI7Cit9OworCitDb250YWlu
ZXJDYXBhY2l0eVRyYWNrZXI6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlcihzaXplX3QgYWdncmVn
YXRpb25TdGFja0RlcHRoKQorICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVy
Q2FwYWNpdHlUcmFja2VySW1wbD4oKSkKKyAgICAsIG1fYWdncmVnYXRpb25TdGFja0RlcHRoKGFn
Z3JlZ2F0aW9uU3RhY2tEZXB0aCkKK3sKK30KKworVHJhY2tlZElEIENvbnRhaW5lckNhcGFjaXR5
VHJhY2tlcjo6cmVjb3JkQWxsb2NhdGlvbihzaXplX3Qgc2l6ZSwgc2l6ZV90IGNhcGFjaXR5KQor
eworICAgIEFTU0VSVChzaXplIDw9IGNhcGFjaXR5KTsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxz
dGQ6OnJlY3Vyc2l2ZV9tdXRleD4gbG9ja0hvbGRlcihtX211dGV4KTsKKworICAgIGlmIChtX2F2
b2lkUmVlbnRyYW5jeSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBib29sIGF2b2lkUmVlbnRy
YW5jeSA9IHRydWU7CisgICAgQXZvaWRSZWNvcmRpbmdTY29wZSBzY29wZSgqdGhpcywgJmF2b2lk
UmVlbnRyYW5jeSk7CisKKyAgICBUcmFja2VkSUQgb2JqZWN0SUQgPSArK21fbmV4dElEOworCisg
ICAgYXV0byBhbGxvY2F0aW9uRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyQWxsb2Nh
dGlvbkRhdGE+KG1fYWdncmVnYXRpb25TdGFja0RlcHRoLCBzaXplLCBjYXBhY2l0eSk7CisgICAg
YXV0byBpbnNlcnRSZXN1bHQgPSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJEYXRhLmlu
c2VydChzdGQ6Om1ha2VfcGFpcihvYmplY3RJRCwgV1RGTW92ZShhbGxvY2F0aW9uRGF0YSkpKTsK
KyAgICBpZiAoIWluc2VydFJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJD
b250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29yZEFsbG9jYXRpb24gc2F3IG9iamVjdCAldSBm
b3IgdGhlIHNlY29uZCB0aW1lIiwgb2JqZWN0SUQpOworICAgICAgICBXVEZMb2dBbHdheXMoIldh
cyBwcmV2aW91c2x5IGFsbG9jYXRlZCBhdDoiKTsKKyAgICAgICAgYXV0byYgY2FsbFNpdGVEYXRh
ID0gKmluc2VydFJlc3VsdC5maXJzdC0+c2Vjb25kOworICAgICAgICBjb25zdCBzaXplX3QgZnJh
bWVzVG9Ta2lwID0gMDsKKyAgICAgICAgV1RGUHJpbnRCYWNrdHJhY2UoY2FsbFNpdGVEYXRhLmFs
bG9jYXRpb25TdGFjay5hcnJheSgpICsgZnJhbWVzVG9Ta2lwLCBjYWxsU2l0ZURhdGEuYWxsb2Nh
dGlvblN0YWNrLnNpemUoKSAtIGZyYW1lc1RvU2tpcCk7CisgICAgfQorCisgICAgcmV0dXJuIG9i
amVjdElEOworfQorCit2b2lkIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlcjo6cmVjb3JkU2l6ZUFu
ZENhcGFjaXR5KFRyYWNrZWRJRCBvYmplY3RJRCwgc2l6ZV90IHNpemUsIHNpemVfdCBjYXBhY2l0
eSkKK3sKKyAgICBBU1NFUlQoc2l6ZSA8PSBjYXBhY2l0eSk7CisKKyAgICBpZiAoIW9iamVjdElE
KQorICAgICAgICByZXR1cm47CisKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjpyZWN1cnNpdmVf
bXV0ZXg+IGxvY2tIb2xkZXIobV9tdXRleCk7CisKKyAgICBpZiAobV9hdm9pZFJlZW50cmFuY3kp
CisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgYXZvaWRSZWVudHJhbmN5ID0gdHJ1ZTsKKyAg
ICBBdm9pZFJlY29yZGluZ1Njb3BlIHNjb3BlKCp0aGlzLCAmYXZvaWRSZWVudHJhbmN5KTsKKwor
ICAgIGF1dG8gaXQgPSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJEYXRhLmZpbmQob2Jq
ZWN0SUQpOworICAgIGlmIChpdCAhPSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJEYXRh
LmVuZCgpKSB7CisgICAgICAgIGl0LT5zZWNvbmQtPnNpemUgPSBzaXplOworICAgICAgICBpdC0+
c2Vjb25kLT5jYXBhY2l0eSA9IGNhcGFjaXR5OworICAgIH0gZWxzZQorICAgICAgICBXVEZMb2dB
bHdheXMoIkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlciAlcCByZWNvcmRTaXplQW5kQ2FwYWNpdHkg
ZmFpbGVkIHRvIGZpbmQgb2JqZWN0ICV1IiwgdGhpcywgb2JqZWN0SUQpOworfQorCit2b2lkIENv
bnRhaW5lckNhcGFjaXR5VHJhY2tlcjo6cmVjb3JkRnJlZShUcmFja2VkSUQgb2JqZWN0SUQpCit7
CisgICAgaWYgKCFvYmplY3RJRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RkOjpsb2NrX2d1
YXJkPHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVyKG1fbXV0ZXgpOworCisgICAgaWYg
KG1fYXZvaWRSZWVudHJhbmN5KQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGF2b2lkUmVl
bnRyYW5jeSA9IHRydWU7CisgICAgQXZvaWRSZWNvcmRpbmdTY29wZSBzY29wZSgqdGhpcywgJmF2
b2lkUmVlbnRyYW5jeSk7CisKKyAgICBhdXRvIHJlbW92ZWRDb3VudCA9IG1faW1wbC0+bV90cmFj
a2VkSURUb0NvbnRhaW5lckRhdGEuZXJhc2Uob2JqZWN0SUQpOworICAgIGlmICghcmVtb3ZlZENv
dW50KQorICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlcjo6cmVj
b3JkRnJlZSBnb3QgaWQgJXUgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIGVudHJ5Iiwgb2JqZWN0SUQp
OworfQorCitzdGQ6OnZlY3RvcjxBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhPiBDb250YWluZXJDYXBh
Y2l0eVRyYWNrZXI6OmFnZ3JlZ2F0ZUJ5Q2FsbFNpdGUoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lk
KFRyYWNrZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYpPiYgcGVyT2JqZWN0Q2FsbGJhY2sp
Cit7CisgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6cmVjdXJzaXZlX211dGV4PiBsb2NrSG9sZGVy
KG1fbXV0ZXgpOworCisgICAgYm9vbCBhdm9pZFJlZW50cmFuY3kgPSB0cnVlOworICAgIEF2b2lk
UmVjb3JkaW5nU2NvcGUgc2NvcGUoKnRoaXMsICZhdm9pZFJlZW50cmFuY3kpOworCisgICAgdHlw
ZWRlZiB1bnNpZ25lZCBTdGFja1Nob3RIYXNoOworICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxTdGFj
a1Nob3RIYXNoLCBzdGQ6OnVuaXF1ZV9wdHI8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4+IGNhbGxT
aXRlVG9BbGxvY2F0aW9uQWdncmVnYXRlOworCisgICAgZm9yIChjb25zdCBhdXRvJiBpdCA6IG1f
aW1wbC0+bV90cmFja2VkSURUb0NvbnRhaW5lckRhdGEpIHsKKyAgICAgICAgY29uc3QgQ29udGFp
bmVyQWxsb2NhdGlvbkRhdGEmIGFsbG9jYXRpb25EYXRhID0gKml0LnNlY29uZDsKKworICAgICAg
ICBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKiBjYWxsU2l0ZURhdGE7CisKKyAgICAgICAgYXV0byBm
aW5kSXQgPSBjYWxsU2l0ZVRvQWxsb2NhdGlvbkFnZ3JlZ2F0ZS5maW5kKGFsbG9jYXRpb25EYXRh
LmFsbG9jYXRpb25TdGFjay5oYXNoKCkpOworICAgICAgICBpZiAoZmluZEl0ID09IGNhbGxTaXRl
VG9BbGxvY2F0aW9uQWdncmVnYXRlLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRvIGluc2VydEl0
ID0gY2FsbFNpdGVUb0FsbG9jYXRpb25BZ2dyZWdhdGUuaW5zZXJ0KHsgYWxsb2NhdGlvbkRhdGEu
YWxsb2NhdGlvblN0YWNrLmhhc2goKSwgc3RkOjptYWtlX3VuaXF1ZTxBbGxvY2F0aW9uQ2FsbFNp
dGVEYXRhPihhbGxvY2F0aW9uRGF0YS5hbGxvY2F0aW9uU3RhY2spIH0pOworICAgICAgICAgICAg
Y2FsbFNpdGVEYXRhID0gaW5zZXJ0SXQuZmlyc3QtPnNlY29uZC5nZXQoKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBjYWxsU2l0ZURhdGEgPSBmaW5kSXQtPnNlY29uZC5nZXQoKTsKKwor
ICAgICAgICBjYWxsU2l0ZURhdGEtPmNvdW50ICs9IDE7CisgICAgICAgIGNhbGxTaXRlRGF0YS0+
dXNlZFNpemUgKz0gYWxsb2NhdGlvbkRhdGEuc2l6ZTsKKyAgICAgICAgY2FsbFNpdGVEYXRhLT5j
YXBhY2l0eSArPSBhbGxvY2F0aW9uRGF0YS5jYXBhY2l0eTsKKworICAgICAgICBwZXJPYmplY3RD
YWxsYmFjayhpdC5maXJzdCwgKmNhbGxTaXRlRGF0YSk7CisgICAgfQorCisgICAgc3RkOjp2ZWN0
b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4gcmVzdWx0OworICAgIGZvciAoYXV0byYgaXQgOiBj
YWxsU2l0ZVRvQWxsb2NhdGlvbkFnZ3JlZ2F0ZSkKKyAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhB
bGxvY2F0aW9uQ2FsbFNpdGVEYXRhKCppdC5zZWNvbmQpKTsKKworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29u
dGFpbmVyQ2FwYWNpdHlUcmFja2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0
eVRyYWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzk3OGUyYTdlMTI4YWMzNWYzM2QyNjc4MWQxNTI4ODk1
MGZhNWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ29udGFpbmVyQ2FwYWNp
dHlUcmFja2VyLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bWVtb3J5PgorI2lu
Y2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgU3Rh
Y2tTaG90OworCitzdHJ1Y3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSB7CisgICAgQWxsb2NhdGlv
bkNhbGxTaXRlRGF0YShzaXplX3Qgc3RhY2tEZXB0aCA9IDAsIHNpemVfdCA9IDAsIHNpemVfdCBj
YXBhY2l0eSA9IDApOworICAgIEFsbG9jYXRpb25DYWxsU2l0ZURhdGEoY29uc3QgU3RhY2tTaG90
Jik7CisgICAgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YShjb25zdCBBbGxvY2F0aW9uQ2FsbFNpdGVE
YXRhJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5BbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKCk7
CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgU3RhY2tTaG90JiBzdGFjaygpIGNvbnN0
OworCisgICAgc2l6ZV90IGNvdW50IHsgMCB9OworICAgIHNpemVfdCB1c2VkU2l6ZSB7IDAgfTsK
KyAgICBzaXplX3QgY2FwYWNpdHkgeyAwIH07CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVf
cHRyPFN0YWNrU2hvdD4gbV9zdGFjazsgLy8gTmVlZGVkIHRvIGhpZGUgU3RhY2tTaG90IHRvIGF2
b2lkIGNpcmN1bGFyIGluY2x1ZGVzLgorfTsKKwordHlwZWRlZiB1bnNpZ25lZCBUcmFja2VkSUQ7
CisKK2NsYXNzIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlciB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyKTsKKyAgICBmcmllbmQgY2xhc3MgQXZvaWRS
ZWNvcmRpbmdTY29wZTsKK3B1YmxpYzoKKyAgICAvLyBDYWxsIHNpdGVzIGFyZSBhZ2dyZWdhdGVk
IGJ5IGNhbGwgc3RhY2ssIHVzaW5nIGFnZ3JlZ2F0aW9uU3RhY2tEZXB0aCBmcmFtZXMuCisgICAg
Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyKHNpemVfdCBhZ2dyZWdhdGlvblN0YWNrRGVwdGggPSAy
NSk7CisgICAgCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRyYWNrZWRJRCByZWNvcmRBbGxvY2F0
aW9uKHNpemVfdCwgc2l6ZV90IGNhcGFjaXR5KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCByZWNvcmRTaXplQW5kQ2FwYWNpdHkoVHJhY2tlZElELCBzaXplX3QsIHNpemVfdCBjYXBhY2l0
eSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVjb3JkRnJlZShUcmFja2VkSUQpOwor
ICAgIAorICAgIC8vIFJldHVybiBhIHZlY3RvciBvZiBwZXIgY2FsbHNpdGUgZGF0YTsgc2l6ZSBh
bmQgY2FwYWNpdHkgYXJlIHN1bW1lZCBmb3IgYWxsIGFsbG9jYXRpb25zIHdpdGggYSBnaXZlbiBj
YWxsIHNpdGUuCisgICAgLy8gVGhlIHBhc3NlZCBmdW5jdGlvbiBhbGxvd3MgdGhlIGNhbGxlciB0
byBkbyBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgcGVyIGFsbG9jYXRpb24uCisgICAgc3RkOjp2ZWN0
b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4gYWdncmVnYXRlQnlDYWxsU2l0ZShjb25zdCBXVEY6
OkZ1bmN0aW9uPHZvaWQoVHJhY2tlZElELCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJik+Jik7CisK
K3ByaXZhdGU6CisgICAgLy8gVXNlIGEgcGltcGwgdG8gYXZvaWQgY2lyY3VsYXIgaW5jbHVkZXMg
YmV0d2VlbiBvdXIgaGVhZGVyIGFuZCB0aGUgY29udGFpbmVyIGNsYXNzIGhlYWRlcnMuCisgICAg
c3RydWN0IENvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGw7CisgICAgc3RkOjp1bmlxdWVfcHRy
PENvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGw+IG1faW1wbDsKKyAgICBzdGQ6OnJlY3Vyc2l2
ZV9tdXRleCBtX211dGV4OworICAgIFRyYWNrZWRJRCBtX25leHRJRCB7IDAgfTsKKyAgICBjb25z
dCBzaXplX3QgbV9hZ2dyZWdhdGlvblN0YWNrRGVwdGg7CisgICAgYm9vbCogbV9hdm9pZFJlZW50
cmFuY3kgeyBudWxscHRyIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RG
OjpDb250YWluZXJDYXBhY2l0eVRyYWNrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9I
YXNoVGFibGUuY3BwIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmNwcAppbmRleCBhMDI1OTA0
ZmU2NzlhYTczMjdiMTkyODUxZGVlYmUyYzllNDQzOWQxLi40OWVlZWU1YWI0NTcwZTRkOTFlMTc3
NjI2NTYyMzE5MTlmNWZjYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5jcHAKQEAgLTIyLDYgKzIyLDE3IEBA
CiAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAorI2lmIFRSQUNLX0hBU0hUQUJM
RV9DQVBBQ0lUWQorI2luY2x1ZGUgPHd0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaD4KKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgPG5vdGlmeS5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1Nob3QuaD4KKyNlbmRpZgorCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lE
RU5USUZJRVIoSGFzaFRhYmxlKTsKQEAgLTY0LDYgKzc1LDc1IEBAIHZvaWQgSGFzaFRhYmxlU3Rh
dHM6OmR1bXBTdGF0cygpCiAgICAgZGF0YUxvZ0YoIiVkIHJlaW5zZXJ0c1xuIiwgbnVtUmVpbnNl
cnRzLmxvYWQoKSk7CiB9CiAKKyNlbmRpZiAvLyBEVU1QX0hBU0hUQUJMRV9TVEFUUworCisjaWYg
VFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisKKyNpZiBQTEFURk9STShDT0NPQSkKK3N0YXRpYyB2
b2lkIGR1bXBXYXN0ZWRIYXNoVGFibGVDYXBhY2l0eSgpCit7CisgICAgYXV0byBjYWxsU2l0ZURh
dGEgPSBoYXNoVGFibGVUcmFja2VyKCkuYWdncmVnYXRlQnlDYWxsU2l0ZShbXSAoVHJhY2tlZElE
LCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJikgeworICAgIH0pOworCisgICAgLy8gTWFrZSBhIHZl
Y3RvciBvZiByYXcgcG9pbnRlcnMgc28gd2UgY2FuIHNvcnQgdGhlbS4KKyAgICBzdGQ6OnZlY3Rv
cjxBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKj4gY2FsbFNpdGVQdHJzOworICAgIGZvciAoY29uc3Qg
YXV0byYgc2l0ZURhdGEgOiBjYWxsU2l0ZURhdGEpIHsKKyAgICAgICAgaWYgKCFzaXRlRGF0YS5j
YXBhY2l0eSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYWxsU2l0ZVB0cnMucHVz
aF9iYWNrKGNvbnN0X2Nhc3Q8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSo+KCZzaXRlRGF0YSkpOwor
ICAgIH0KKworICAgIC8vIFNvcnQgYnkgcmV2ZXJzZSB3YXN0YWdlLgorICAgIHN0ZDo6c29ydChj
YWxsU2l0ZVB0cnMuYmVnaW4oKSwgY2FsbFNpdGVQdHJzLmVuZCgpLCBbXSAoY29uc3QgQWxsb2Nh
dGlvbkNhbGxTaXRlRGF0YSogYSwgY29uc3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogYikgewor
ICAgICAgICBzaXplX3QgYVdhc3RhZ2UgPSBhLT5jYXBhY2l0eSAtIGEtPnVzZWRTaXplOworICAg
ICAgICBzaXplX3QgYldhc3RhZ2UgPSBiLT5jYXBhY2l0eSAtIGItPnVzZWRTaXplOworICAgICAg
ICByZXR1cm4gYVdhc3RhZ2UgPiBiV2FzdGFnZTsKKyAgICB9KTsKKworICAgIGNvbnN0ZXhwciBz
aXplX3QgbWluV2FzdGVkQnl0ZUNvdW50ID0gMTAyNDsKKworICAgIFdURkxvZ0Fsd2F5cygiJWQg
JWx1IGNhbGwgc2l0ZXMgY3JlYXRlZCBIYXNoVGFibGVzICh2aWEgSGFzaE1hcCBvciBIYXNoU2V0
KS4gU2hvd2luZyBzaXRlcyB3aXRoIGF0IGxlYXN0ICVsdSB3YXN0ZWQgYnl0ZXM6XG4iLCBnZXRw
aWQoKSwgY2FsbFNpdGVEYXRhLnNpemUoKSwgbWluV2FzdGVkQnl0ZUNvdW50KTsKKworICAgIGZv
ciAoYXV0byBzaXRlRGF0YSA6IGNhbGxTaXRlUHRycykgeworICAgICAgICBhdXRvIHdhc3RlZEJ5
dGVzID0gc2l0ZURhdGEtPmNhcGFjaXR5IC0gc2l0ZURhdGEtPnVzZWRTaXplOworICAgICAgICBp
ZiAod2FzdGVkQnl0ZXMgPCBtaW5XYXN0ZWRCeXRlQ291bnQpCisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBXVEZMb2dBbHdheXMoIldhc3RlZCBjYXBhY2l0eTogJWx1IGJ5dGVzICh1c2Vk
ICVsdSBvZiAlbHUgYnl0ZXMsIHV0aWxpemF0aW9uOiAlLjJmJSUpIC0gJWx1IGFsbG9jYXRpb25z
XG4iLAorICAgICAgICAgICAgd2FzdGVkQnl0ZXMsCisgICAgICAgICAgICBzaXRlRGF0YS0+dXNl
ZFNpemUsIHNpdGVEYXRhLT5jYXBhY2l0eSwgMTAwLjAgKiBzaXRlRGF0YS0+dXNlZFNpemUgLyBz
aXRlRGF0YS0+Y2FwYWNpdHksCisgICAgICAgICAgICBzaXRlRGF0YS0+Y291bnQpOworICAgICAg
ICBjb25zdCBzaXplX3QgZnJhbWVzVG9Ta2lwID0gMzsKKyAgICAgICAgV1RGUHJpbnRCYWNrdHJh
Y2Uoc2l0ZURhdGEtPnN0YWNrKCkuYXJyYXkoKSArIGZyYW1lc1RvU2tpcCwgc2l0ZURhdGEtPnN0
YWNrKCkuc2l6ZSgpIC0gZnJhbWVzVG9Ta2lwKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJcbiIp
OworICAgIH0KK30KICNlbmRpZgogCitDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIGhhc2hUYWJs
ZVRyYWNrZXIoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBpbml0aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwg
W10geworICAgICAgICBpbnQgdG9rZW47CisgICAgICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRj
aCgiY29tLmFwcGxlLldlYktpdC5kdW1wSGFzaFRhYmxlQ2FwYWNpdHkiLCAmdG9rZW4sIGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIF4oaW50KSB7CisKKyAgICAgICAgICAgIGludCBkZWxheVNl
Y29uZHMgPSAyICogKGdldHBpZCgpICUgNSk7CisgICAgICAgICAgICBpbnQ2NF90IGRlZmVycmVk
V2FpdFRpbWUgPSBkZWxheVNlY29uZHMgKiBOU0VDX1BFUl9TRUM7CisgICAgICAgICAgICBkaXNw
YXRjaF90aW1lX3Qgd2hlbiA9IGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIGRlZmVy
cmVkV2FpdFRpbWUpOworCisgICAgICAgICAgICBkaXNwYXRjaF9hZnRlcih3aGVuLCBkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICAgICAgICAgIGR1bXBXYXN0ZWRIYXNoVGFi
bGVDYXBhY2l0eSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgfSk7CisgICAgfSk7Cisj
ZW5kaWYKKworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OkNvbnRhaW5lckNhcGFjaXR5
VHJhY2tlcj4gdHJhY2tlcjsKKyAgICByZXR1cm4gdHJhY2tlcjsKK30KKworI2VuZGlmIC8vIFRS
QUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgK
aW5kZXggYjM4MmI4NWQ0YjMyYTFmMzljMTFjNGVhMmZmYzZhZTMwMDEwMmMyZS4uYzc3NmMzOGY1
Mjg4OWY2NGYxYmRiYTkwNzBiZjRjNzQ2NmYzNWVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTUwLDgg
KzUwLDIwIEBACiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNlbmRpZgogCisvLyBFbmFibGUg
VFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZIHRvIHRyYWNrIGNhbGwgc2l0ZXMgdGhhdCB3YXN0ZSBI
YXNoVGFibGUgY2FwYWNpdHkuIE9uIENvY29hIHBsYXRmb3JtcywgdGhlIGRhdGEgY2FuIGJlIGR1
bXBlZAorLy8gYnkgcnVubmluZyAibm90aWZ5dXRpbCAtcCBjb20uYXBwbGUuV2ViS2l0LmR1bXBI
YXNoVGFibGVDYXBhY2l0eSIuCisjZGVmaW5lIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWSAxCisK
KyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyNpbmNsdWRlIDx3dGYvQ29udGFpbmVyQ2Fw
YWNpdHlUcmFja2VyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKKyNpZiBUUkFDS19I
QVNIVEFCTEVfQ0FQQUNJVFkKK1dURl9FWFBPUlRfUFJJVkFURSBDb250YWluZXJDYXBhY2l0eVRy
YWNrZXImIGhhc2hUYWJsZVRyYWNrZXIoKTsKKyNlbmRpZgorCiBERUNMQVJFX0FMTE9DQVRPUl9X
SVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogCiAvLyBFbmFibGVzIGludGVybmFsIFdU
RiBjb25zaXN0ZW5jeSBjaGVja3MgdGhhdCBhcmUgaW52b2tlZCBhdXRvbWF0aWNhbGx5LiBOb24t
V1RGIGNhbGxlcnMgY2FuIGNhbGwgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgZXZlbiBpZiBpbnRl
cm5hbCBjaGVja3MgYXJlIGRpc2FibGVkLgpAQCAtNDM2LDYgKzQ0OCwxMSBAQCBERUNMQVJFX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogI2lmIENIRUNLX0hBU0hU
QUJMRV9VU0VfQUZURVJfREVTVFJVQ1RJT04KICAgICAgICAgICAgIG1fdGFibGUgPSAoVmFsdWVU
eXBlKikodWludHB0cl90KTB4YmJhZGJlZWY7CiAjZW5kaWYKKworI2lmIFRSQUNLX0hBU0hUQUJM
RV9DQVBBQ0lUWQorICAgICAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZEZyZWUobV90
cmFja2VkSUQpOworICAgICAgICAgICAgbV90cmFja2VkSUQgPSAwOworI2VuZGlmCiAgICAgICAg
IH0KIAogICAgICAgICBIYXNoVGFibGUoY29uc3QgSGFzaFRhYmxlJik7CkBAIC00ODQsOCArNTAx
LDE1IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7
CiAgICAgICAgICAgICBzZXRUYWJsZVNpemVNYXNrKG5ld1RhYmxlU2l6ZSAtIDEpOwogICAgICAg
ICAgICAgc2V0RGVsZXRlZENvdW50KDApOwogICAgICAgICAgICAgc2V0S2V5Q291bnQoMCk7CisK
KyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgICAgIGhhc2hUYWJsZVRyYWNr
ZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNh
cGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgICAgICB9CiAKKyAgICAgICAgc2l6ZV90IHNp
emVJbkJ5dGVzKCkgY29uc3Q7CisgICAgICAgIHNpemVfdCBjYXBhY2l0eUluQnl0ZXMoKSBjb25z
dDsKKwogICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0
dXJuIGFkZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUp
LCB2YWx1ZSk7IH0KICAgICAgICAgQWRkUmVzdWx0IGFkZChWYWx1ZVR5cGUmJiB2YWx1ZSkgeyBy
ZXR1cm4gYWRkPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1
ZSksIFdURk1vdmUodmFsdWUpKTsgfQogCkBAIC02MTMsNiArNjM3LDEwIEBAIERFQ0xBUkVfQUxM
T0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgICAgICB1bnNp
Z25lZCogbV90YWJsZUZvckxMREI7CiAgICAgICAgIH07CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVf
Q0FQQUNJVFkKKyAgICAgICAgVHJhY2tlZElEIG1fdHJhY2tlZElEIHsgMCB9OworI2VuZGlmCisK
ICNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgcHVibGljOgogICAgICAgICAvLyBB
bGwgYWNjZXNzIHRvIG1faXRlcmF0b3JzIHNob3VsZCBiZSBndWFyZGVkIHdpdGggbV9tdXRleC4K
QEAgLTYzOCw2ICs2NjYsOSBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklF
UihIYXNoVGFibGUpOwogICAgICAgICAsIG1fc3RhdHMobWFrZVVuaXF1ZTxTdGF0cz4oKSkKICNl
bmRpZgogICAgIHsKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgbV90cmFj
a2VkSUQgPSBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkQWxsb2NhdGlvbigwLCAwKTsKKyNlbmRp
ZgogICAgIH0KIAogI2lmICFBU1NFUlRfRU5BQkxFRApAQCAtNjc3LDcgKzcwOCw3IEBAIERFQ0xB
UkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+CiAgICAgQUxXQVlTX0lOTElO
RSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzPjo6aW5saW5lTG9va3VwKGNvbnN0IFQmIGtleSkgLT4gVmFsdWVUeXBl
KgogICAgIHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVmFsdWUpIDw9IDE1MCwgIllv
dXIgSGFzaFRhYmxlIHR5cGVzIGFyZSB0b28gYmlnIHRvIGVmZmljaWVudGx5IG1vdmUgd2hlbiBy
ZWhhc2hpbmcuICBDb25zaWRlciB1c2luZyBVbmlxdWVSZWYgaW5zdGVhZCIpOworICAgICAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihWYWx1ZSkgPD0gMjAwLCAiWW91ciBIYXNoVGFibGUgdHlwZXMg
YXJlIHRvbyBiaWcgdG8gZWZmaWNpZW50bHkgbW92ZSB3aGVuIHJlaGFzaGluZy4gIENvbnNpZGVy
IHVzaW5nIFVuaXF1ZVJlZiBpbnN0ZWFkIik7CiAgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xh
dG9yPihrZXkpOwogCiAgICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxlOwpAQCAtOTUz
LDcgKzk4NCwxMSBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNo
VGFibGUpOwogICAgICAgICAgICAgZW50cnkgPSBleHBhbmQoZW50cnkpOwogCiAgICAgICAgIGlu
dGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7Ci0gICAgICAgIAorCisjaWYgVFJBQ0tfSEFT
SFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5k
Q2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsK
KyNlbmRpZgorCiAgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9y
KGVudHJ5KSwgdHJ1ZSk7CiAgICAgfQogCkBAIC05OTIsNiArMTAyNywxMCBAQCBERUNMQVJFX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogCiAgICAgICAgIGludGVy
bmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJ
VFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3Ry
YWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCisKICAg
ICAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCB0cnVl
KTsKICAgICB9CiAKQEAgLTEwMTIsNiArMTA1MSwxMCBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRI
X0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogICAgICAgICBuZXdFbnRyeS0+flZhbHVlKCk7
CiAgICAgICAgIG5ldyAoTm90TnVsbCwgbmV3RW50cnkpIFZhbHVlVHlwZShXVEZNb3ZlKGVudHJ5
KSk7CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgaGFzaFRhYmxlVHJh
Y2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwg
Y2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCisKICAgICAgICAgcmV0dXJuIG5ld0VudHJ5Owog
ICAgIH0KIApAQCAtMTA4NSw2ICsxMTI4LDEwIEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVB
UF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgIGlmIChzaG91bGRTaHJpbmsoKSkKICAg
ICAgICAgICAgIHNocmluaygpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAg
ICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQs
IHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIGlu
dGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgfQogCkBAIC0xMTQ5LDcgKzExOTYs
MTEgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsK
IAogICAgICAgICBpZiAoc2hvdWxkU2hyaW5rKCkpCiAgICAgICAgICAgICBzaHJpbmtUb0Jlc3RT
aXplKCk7Ci0gICAgICAgIAorCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAg
IGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNp
emVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIGludGVy
bmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybiByZW1vdmVkQnVja2V0
Q291bnQ7CiAgICAgfQpAQCAtMTMxMiw2ICsxMzYzLDEwIEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJ
VEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgIGlmIChvbGRUYWJsZSkKICAg
ICAgICAgICAgIEhhc2hUYWJsZU1hbGxvYzo6ZnJlZShyZWludGVycHJldF9jYXN0PGNoYXIqPihv
bGRUYWJsZSkgLSBtZXRhZGF0YVNpemUpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZ
CisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFj
a2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAg
ICAgIGludGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybiBuZXdF
bnRyeTsKICAgICB9CkBAIC0xMzM3LDYgKzEzOTIsMTAgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lU
SF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICAgICAgLCBtX3N0YXRzKG1ha2VVbmlx
dWU8U3RhdHM+KCpvdGhlci5tX3N0YXRzKSkKICNlbmRpZgogICAgIHsKKyNpZiBUUkFDS19IQVNI
VEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgbV90cmFja2VkSUQgPSBoYXNoVGFibGVUcmFja2VyKCku
cmVjb3JkQWxsb2NhdGlvbihzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5k
aWYKKwogICAgICAgICB1bnNpZ25lZCBvdGhlcktleUNvdW50ID0gb3RoZXIuc2l6ZSgpOwogICAg
ICAgICBpZiAoIW90aGVyS2V5Q291bnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzUwLDYg
KzE0MDksMTAgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRh
YmxlKTsKIAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG90aGVyVmFsdWUgOiBvdGhlcikKICAg
ICAgICAgICAgIGFkZFVuaXF1ZUZvckluaXRpYWxpemF0aW9uPElkZW50aXR5VHJhbnNsYXRvclR5
cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdChvdGhlclZhbHVlKSwgb3RoZXJWYWx1ZSk7CisKKyNpZiBU
UkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29y
ZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5
dGVzKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBl
bmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0
eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KQEAgLTEzNjMsNiArMTQyNiwxNCBA
QCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogI2lm
IERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQogICAgICAgICBtX3N0YXRzLnN3YXAob3Ro
ZXIubV9zdGF0cyk7CiAjZW5kaWYKKworI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorICAg
ICAgICBzdGQ6OnN3YXAobV90cmFja2VkSUQsIG90aGVyLm1fdHJhY2tlZElEKTsKKworICAgICAg
ICAvLyBOb3Qgc3VyZSBpZiB0aGlzIGlzIG5lY2Vzc2FyeS4gTm90aGluZyB3aWxsIGhhdmUgY2hh
bmdlZC4KKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eSht
X3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworICAgICAgICBo
YXNoVGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG90aGVyLm1fdHJhY2tlZElE
LCBvdGhlci5zaXplSW5CeXRlcygpLCBvdGhlci5jYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgpAQCAtMTM4NCwxMCArMTQ1NSwxOSBAQCBERUNMQVJFX0FMTE9D
QVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogCiAgICAgICAgIG1fdGFibGUg
PSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fdGFibGUsIG51bGxwdHIpOwogCisjaWYgVFJBQ0tfSEFT
SFRBQkxFX0NBUEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcChtX3RyYWNrZWRJRCwgb3RoZXIubV90
cmFja2VkSUQpOworI2VuZGlmCisKICNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUK
ICAgICAgICAgbV9zdGF0cyA9IFdURk1vdmUob3RoZXIubV9zdGF0cyk7CiAgICAgICAgIG90aGVy
Lm1fc3RhdHMgPSBudWxscHRyOwogI2VuZGlmCisKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJ
VFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3Ry
YWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworICAgICAgICBoYXNo
VGFibGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG90aGVyLm1fdHJhY2tlZElELCBv
dGhlci5zaXplSW5CeXRlcygpLCBvdGhlci5jYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPgpAQCAtMTM5OCw2ICsxNDc4LDE4IEBAIERFQ0xBUkVfQUxMT0NBVE9S
X1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHNpemVfdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnNpemVJbkJ5dGVzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzaXplKCkgKiBzaXplb2YoVmFsdWVUeXBlKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgorICAgIHNpemVfdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNhcGFjaXR5SW5CeXRl
cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY2FwYWNpdHkoKSAqIHNpemVvZihWYWx1
ZVR5cGUpOworICAgIH0KKwogI2lmIEFTU0VSVF9FTkFCTEVECiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9TaXpl
TGltaXRzLmNwcAppbmRleCAwYmViYmMyNjdjNWViNGQ4MTk4YTU0NmZjMjQ0YWJkZGNmZjlhY2Rh
Li42YjE5OGViMjk2YjFmYzEyYzEwYWVkNzUxMmY1MTc4M2NhYzhlODJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9TaXplTGltaXRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TaXplTGlt
aXRzLmNwcApAQCAtODMsOSArODMsMTIgQEAgcHVibGljOgogICAgIHR5cGVuYW1lIHN0ZDo6YWxp
Z25lZF9zdG9yYWdlPHNpemVvZihUKSwgc3RkOjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlPjo6dHlw
ZSBpbmxpbmVCdWZmZXJbaW5saW5lQ2FwYWNpdHldOwogfTsKIAorI2lmICFUUkFDS19WRUNUT1Jf
Q0FQQUNJVFkKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQ+KSA9PSBzaXplb2YoU2Ft
ZVNpemVBc1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxpbnQ+KSwgIlZlY3RvciBzaG91bGQgc3Rh
eSBzbWFsbCEiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQsIDE+KSA9PSBzaXpl
b2YoU2FtZVNpemVBc1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxpbnQsIDE+KSwgIlZlY3RvciBz
aG91bGQgc3RheSBzbWFsbCEiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQsIDI+
KSA9PSBzaXplb2YoU2FtZVNpemVBc1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxpbnQsIDI+KSwg
IlZlY3RvciBzaG91bGQgc3RheSBzbWFsbCEiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3Rv
cjxpbnQsIDM+KSA9PSBzaXplb2YoU2FtZVNpemVBc1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxp
bnQsIDM+KSwgIlZlY3RvciBzaG91bGQgc3RheSBzbWFsbCEiKTsKKyNlbmRpZiAvLyAhVFJBQ0tf
VkVDVE9SX0NBUEFDSVRZCisKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
VmVjdG9yLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5jcHAKaW5kZXggNmEyYjQ3Y2ZjYjcy
ZTZiM2I5YzViZGI1NzgxMTE2MGNmMzdkZDlmYS4uMTM0MmRhMGM3MmVkYzQ0YWJlMWNmYTU0ZjAx
NTM3NmJkOWIzYzlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuY3BwCkBAIC0yOCw4ICsyOCw4NCBAQAogCiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyNp
bmNsdWRlIDx3dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg+CisjaWYgUExBVEZPUk0oQ09D
T0EpCisjaW5jbHVkZSA8bm90aWZ5Lmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrU2hvdC5oPgorI2Vu
ZGlmCisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKIERFRklORV9BTExPQ0FUT1JfV0lUSF9I
RUFQX0lERU5USUZJRVIoVmVjdG9yKTsKIAorI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorCisj
aWYgUExBVEZPUk0oQ09DT0EpCitzdGF0aWMgdm9pZCBkdW1wV2FzdGVkVmVjdG9yQ2FwYWNpdHko
KQoreworICAgIGF1dG8gY2FsbFNpdGVEYXRhID0gdmVjdG9yVHJhY2tlcigpLmFnZ3JlZ2F0ZUJ5
Q2FsbFNpdGUoW10gKFRyYWNrZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYpIHsKKyAgICB9
KTsKKworICAgIC8vIE1ha2UgYSB2ZWN0b3Igb2YgcmF3IHBvaW50ZXJzIHNvIHdlIGNhbiBzb3J0
IHRoZW0uCisgICAgc3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSo+IGNhbGxTaXRl
UHRyczsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNpdGVEYXRhIDogY2FsbFNpdGVEYXRhKSB7Cisg
ICAgICAgIGlmICghc2l0ZURhdGEuY2FwYWNpdHkgfHwgKHNpdGVEYXRhLmNhcGFjaXR5ID09IHNp
dGVEYXRhLnVzZWRTaXplKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYWxsU2l0
ZVB0cnMucHVzaF9iYWNrKGNvbnN0X2Nhc3Q8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSo+KCZzaXRl
RGF0YSkpOworICAgIH0KKworICAgIC8vIFNvcnQgYnkgcmV2ZXJzZSB3YXN0YWdlLgorICAgIHN0
ZDo6c29ydChjYWxsU2l0ZVB0cnMuYmVnaW4oKSwgY2FsbFNpdGVQdHJzLmVuZCgpLCBbXSAoY29u
c3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogYSwgY29uc3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0
YSogYikgeworICAgICAgICAgc2l6ZV90IGFXYXN0YWdlID0gYS0+Y2FwYWNpdHkgLSBhLT51c2Vk
U2l6ZTsKKyAgICAgICAgIHNpemVfdCBiV2FzdGFnZSA9IGItPmNhcGFjaXR5IC0gYi0+dXNlZFNp
emU7CisgICAgICAgICByZXR1cm4gYVdhc3RhZ2UgPiBiV2FzdGFnZTsKKyAgICB9KTsKKworICAg
IGNvbnN0ZXhwciBzaXplX3QgbWluV2FzdGVkQnl0ZUNvdW50ID0gMTAyNDsKKyAgICBXVEZMb2dB
bHdheXMoIiVkICVsdSBjYWxsIHNpdGVzIGNyZWF0ZWQgdmVjdG9ycy4gU2hvd2luZyBzaXRlcyB3
aXRoIG1vcmUgdGhhbiAlbHUgb2Ygd2FzdGFnZTpcbiIsIGdldHBpZCgpLCBjYWxsU2l0ZURhdGEu
c2l6ZSgpLCBtaW5XYXN0ZWRCeXRlQ291bnQpOworCisgICAgZm9yIChhdXRvIHNpdGVEYXRhIDog
Y2FsbFNpdGVQdHJzKSB7CisgICAgICAgIGF1dG8gd2FzdGVkQnl0ZXMgPSBzaXRlRGF0YS0+Y2Fw
YWNpdHkgLSBzaXRlRGF0YS0+dXNlZFNpemU7CisgICAgICAgIGlmICh3YXN0ZWRCeXRlcyA8IG1p
bldhc3RlZEJ5dGVDb3VudCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIFdURkxvZ0Fs
d2F5cygiV2FzdGVkIGNhcGFjaXR5OiAlbHUgYnl0ZXMgKHVzZWQgJWx1IG9mICVsdSBieXRlcywg
dXRpbGl6YXRpb246ICUuMmYlJSkgLSAlbHUgYWxsb2NhdGlvbnNcbiIsCisgICAgICAgICAgICB3
YXN0ZWRCeXRlcywKKyAgICAgICAgICAgIHNpdGVEYXRhLT51c2VkU2l6ZSwgc2l0ZURhdGEtPmNh
cGFjaXR5LCAxMDAuMCAqIHNpdGVEYXRhLT51c2VkU2l6ZSAvIHNpdGVEYXRhLT5jYXBhY2l0eSwK
KyAgICAgICAgICAgIHNpdGVEYXRhLT5jb3VudCk7CisgICAgICAgIGNvbnN0IHNpemVfdCBmcmFt
ZXNUb1NraXAgPSAzOworICAgICAgICBXVEZQcmludEJhY2t0cmFjZShzaXRlRGF0YS0+c3RhY2so
KS5hcnJheSgpICsgZnJhbWVzVG9Ta2lwLCBzaXRlRGF0YS0+c3RhY2soKS5zaXplKCkgLSBmcmFt
ZXNUb1NraXApOworICAgICAgICBXVEZMb2dBbHdheXMoIlxuIik7CisgICAgfQorfQorI2VuZGlm
CisKK0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlciYgdmVjdG9yVHJhY2tlcigpCit7CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOwor
ICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlLCBbXSB7CisgICAgICAgIGludCB0b2tl
bjsKKyAgICAgICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJjb20uYXBwbGUuV2ViS2l0LmR1
bXBWZWN0b3JDYXBhY2l0eSIsICZ0b2tlbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihp
bnQpIHsKKworICAgICAgICAgICAgaW50IGRlbGF5U2Vjb25kcyA9IDIgKiAoZ2V0cGlkKCkgJSA1
KTsKKyAgICAgICAgICAgIGludDY0X3QgZGVmZXJyZWRXYWl0VGltZSA9IGRlbGF5U2Vjb25kcyAq
IE5TRUNfUEVSX1NFQzsKKyAgICAgICAgICAgIGRpc3BhdGNoX3RpbWVfdCB3aGVuID0gZGlzcGF0
Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZGVmZXJyZWRXYWl0VGltZSk7CisKKyAgICAgICAg
ICAgIGRpc3BhdGNoX2FmdGVyKHdoZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Cisg
ICAgICAgICAgICAgICAgZHVtcFdhc3RlZFZlY3RvckNhcGFjaXR5KCk7CisgICAgICAgICAgICB9
KTsKKworICAgICAgICB9KTsKKyAgICB9KTsKKyNlbmRpZgorCisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFdURjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyPiB0cmFja2VyOworICAgIHJldHVy
biB0cmFja2VyOworfQorCisjZW5kaWYgLy8gVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisKIH0gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRleCA1MWIzZjA4OWJmZTkyNTkyN2E0Y2E2MzAwOWM3ZjMz
OTI2MTU1NmYxLi44NzJiM2I2ODQ3NGU0MjY0MzI4NmMyOTJmYmE5MTZlOGQ5MDk2ZThlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0
b3IuaApAQCAtMzksNiArMzksMTQgQEAKICNpbmNsdWRlIDx3dGYvVmFsdWVDaGVjay5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3JUcmFpdHMuaD4KIAorLy8gRW5hYmxlIFRSQUNLX1ZFQ1RPUl9DQVBB
Q0lUWSB0byB0cmFjayBjYWxsIHNpdGVzIHRoYXQgd2FzdGUgdmVjdG9yIGNhcGFjaXR5LiBPbiBD
b2NvYSBwbGF0Zm9ybXMsIHRoZSBkYXRhIGNhbiBiZSBkdW1wZWQKKy8vIGJ5IHJ1bm5pbmcgIm5v
dGlmeXV0aWwgLXAgY29tLmFwcGxlLldlYktpdC5kdW1wVmVjdG9yQ2FwYWNpdHkiLgorI2RlZmlu
ZSBUUkFDS19WRUNUT1JfQ0FQQUNJVFkgMQorCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisj
aW5jbHVkZSA8d3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oPgorI2VuZGlmCisKICNpZiBB
U0FOX0VOQUJMRUQKIGV4dGVybiAiQyIgdm9pZCBfX3Nhbml0aXplcl9hbm5vdGF0ZV9jb250aWd1
b3VzX2NvbnRhaW5lcihjb25zdCB2b2lkKiBiZWdpbiwgY29uc3Qgdm9pZCogZW5kLCBjb25zdCB2
b2lkKiBvbGRfbWlkLCBjb25zdCB2b2lkKiBuZXdfbWlkKTsKICNlbmRpZgpAQCAtNDksNiArNTcs
MTAgQEAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiBuYW1lc3BhY2UgV1RGIHsKIAor
I2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorV1RGX0VYUE9SVF9QUklWQVRFIENvbnRhaW5lckNh
cGFjaXR5VHJhY2tlciYgdmVjdG9yVHJhY2tlcigpOworI2VuZGlmCisKIERFQ0xBUkVfQUxMT0NB
VE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFZlY3Rvcik7CiAKIHRlbXBsYXRlIDxib29sIG5lZWRz
RGVzdHJ1Y3Rpb24sIHR5cGVuYW1lIFQ+CkBAIC0zNjAsNiArMzcyLDE2IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgcHRyZGlmZl90IGJ1ZmZlck1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihWZWN0b3JCdWZmZXJCYXNlLCBtX2J1ZmZlcik7IH0KICAgICBzaXplX3QgY2FwYWNp
dHkoKSBjb25zdCB7IHJldHVybiBtX2NhcGFjaXR5OyB9CiAKKyAgICBzaXplX3QgY2FwYWNpdHlJ
bkJ5dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhcGFjaXR5ICogc2l6ZW9m
KFQpOworICAgIH0KKworICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9zaXplICogc2l6ZW9mKFQpOworICAgIH0KKwogICAgIE1hbGxvY1B0cjxU
LCBNYWxsb2M+IHJlbGVhc2VCdWZmZXIoKQogICAgIHsKICAgICAgICAgVCogYnVmZmVyID0gbV9i
dWZmZXI7CkBAIC0zODYsMTEgKzQwOCwxOCBAQCBwcm90ZWN0ZWQ6CiAgICAgflZlY3RvckJ1ZmZl
ckJhc2UoKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gZmlu
ZCBhIHdheSB0byBBU1NFUlQgdGhhdCBtX2J1ZmZlciBoYXNuJ3QgbGVha2VkIGhlcmUuCisjaWYg
VFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRGcmVl
KG1fdHJhY2tlZElEKTsKKyAgICAgICAgbV90cmFja2VkSUQgPSAwOworI2VuZGlmCiAgICAgfQog
CiAgICAgVCogbV9idWZmZXI7CiAgICAgdW5zaWduZWQgbV9jYXBhY2l0eTsKICAgICB1bnNpZ25l
ZCBtX3NpemU7IC8vIE9ubHkgdXNlZCBieSB0aGUgVmVjdG9yIHN1YmNsYXNzLCBidXQgcGxhY2Vk
IGhlcmUgdG8gYXZvaWQgcGFkZGluZyB0aGUgc3RydWN0LgorI2lmIFRSQUNLX1ZFQ1RPUl9DQVBB
Q0lUWQorICAgIFRyYWNrZWRJRCBtX3RyYWNrZWRJRCB7IDAgfTsKKyNlbmRpZgogfTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2Mg
PSBWZWN0b3JNYWxsb2M+IGNsYXNzIFZlY3RvckJ1ZmZlcjsKQEAgLTQwMiw2ICs0MzEsOSBAQCBw
cml2YXRlOgogcHVibGljOgogICAgIFZlY3RvckJ1ZmZlcigpCiAgICAgeworI2lmIFRSQUNLX1ZF
Q1RPUl9DQVBBQ0lUWQorICAgICAgICBtX3RyYWNrZWRJRCA9IHZlY3RvclRyYWNrZXIoKS5yZWNv
cmRBbGxvY2F0aW9uKDAsIDApOworI2VuZGlmCiAgICAgfQogCiAgICAgVmVjdG9yQnVmZmVyKHNp
emVfdCBjYXBhY2l0eSwgc2l6ZV90IHNpemUgPSAwKQpAQCAtNDExLDYgKzQ0MywxMCBAQCBwdWJs
aWM6CiAgICAgICAgIC8vIGFsbG9jYXRpb24gb24gc29tZSBzeXN0ZW1zLgogICAgICAgICBpZiAo
Y2FwYWNpdHkpCiAgICAgICAgICAgICBhbGxvY2F0ZUJ1ZmZlcihjYXBhY2l0eSk7CisKKyNpZiBU
UkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgbV90cmFja2VkSUQgPSB2ZWN0b3JUcmFja2Vy
KCkucmVjb3JkQWxsb2NhdGlvbihzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7Cisj
ZW5kaWYKICAgICB9CiAKICAgICB+VmVjdG9yQnVmZmVyKCkKQEAgLTQyMiw2ICs0NTgsOSBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBzdGQ6OnN3YXAobV9idWZmZXIsIG90aGVyLm1fYnVmZmVy
KTsKICAgICAgICAgc3RkOjpzd2FwKG1fY2FwYWNpdHksIG90aGVyLm1fY2FwYWNpdHkpOworI2lm
IFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBzdGQ6OnN3YXAobV90cmFja2VkSUQsIG90
aGVyLm1fdHJhY2tlZElEKTsKKyNlbmRpZgogICAgIH0KICAgICAKICAgICB2b2lkIHJlc3RvcmVJ
bmxpbmVCdWZmZXJJZk5lZWRlZCgpIHsgfQpAQCAtNDQzLDEwICs0ODIsMTYgQEAgcHVibGljOgog
ICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5OwogICAgIHVzaW5nIEJhc2U6OmJ1ZmZlck1lbW9yeU9m
ZnNldDsKIAorICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5SW5CeXRlczsKKyAgICB1c2luZyBCYXNl
OjpzaXplSW5CeXRlczsKKwogICAgIHVzaW5nIEJhc2U6OnJlbGVhc2VCdWZmZXI7CiAKIHByb3Rl
Y3RlZDoKICAgICB1c2luZyBCYXNlOjptX3NpemU7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZ
CisgICAgdXNpbmcgQmFzZTo6bV90cmFja2VkSUQ7CisjZW5kaWYKIAogICAgIFZlY3RvckJ1ZmZl
cihWZWN0b3JCdWZmZXI8VCwgMCwgTWFsbG9jPiYmIG90aGVyKQogICAgIHsKQEAgLTQ3OCw2ICs1
MjMsOSBAQCBwdWJsaWM6CiAgICAgVmVjdG9yQnVmZmVyKCkKICAgICAgICAgOiBCYXNlKGlubGlu
ZUJ1ZmZlcigpLCBpbmxpbmVDYXBhY2l0eSwgMCkKICAgICB7CisjaWYgVFJBQ0tfVkVDVE9SX0NB
UEFDSVRZCisgICAgICAgIG1fdHJhY2tlZElEID0gdmVjdG9yVHJhY2tlcigpLnJlY29yZEFsbG9j
YXRpb24oc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQog
CiAgICAgVmVjdG9yQnVmZmVyKHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90IHNpemUgPSAwKQpAQCAt
NDg1LDYgKzUzMywxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoY2FwYWNpdHkgPiBp
bmxpbmVDYXBhY2l0eSkKICAgICAgICAgICAgIEJhc2U6OmFsbG9jYXRlQnVmZmVyKGNhcGFjaXR5
KTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICBtX3RyYWNrZWRJRCA9IHZl
Y3RvclRyYWNrZXIoKS5yZWNvcmRBbGxvY2F0aW9uKHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5C
eXRlcygpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIH5WZWN0b3JCdWZmZXIoKQpAQCAtNTQ0LDYg
KzU5NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV9idWZmZXIsIG90aGVy
Lm1fYnVmZmVyKTsKICAgICAgICAgICAgIHN0ZDo6c3dhcChtX2NhcGFjaXR5LCBvdGhlci5tX2Nh
cGFjaXR5KTsKICAgICAgICAgfQorCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAg
IHN0ZDo6c3dhcChtX3RyYWNrZWRJRCwgb3RoZXIubV90cmFja2VkSUQpOworI2VuZGlmCiAgICAg
fQogCiAgICAgdm9pZCByZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQoKQpAQCAtNTczLDYgKzYy
OSw4IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlOjpidWZmZXI7CiAgICAgdXNpbmcgQmFzZTo6
Y2FwYWNpdHk7CiAgICAgdXNpbmcgQmFzZTo6YnVmZmVyTWVtb3J5T2Zmc2V0OworICAgIHVzaW5n
IEJhc2U6OmNhcGFjaXR5SW5CeXRlczsKKyAgICB1c2luZyBCYXNlOjpzaXplSW5CeXRlczsKIAog
ICAgIE1hbGxvY1B0cjxULCBNYWxsb2M+IHJlbGVhc2VCdWZmZXIoKQogICAgIHsKQEAgLTU4Myw2
ICs2NDEsOSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB1c2luZyBCYXNlOjptX3NpemU7
CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdXNpbmcgQmFzZTo6bV90cmFja2VkSUQ7
CisjZW5kaWYKIAogICAgIFZlY3RvckJ1ZmZlcihWZWN0b3JCdWZmZXImJiBvdGhlcikKICAgICAg
ICAgOiBCYXNlKGlubGluZUJ1ZmZlcigpLCBpbmxpbmVDYXBhY2l0eSwgMCkKQEAgLTczNCw2ICs3
OTUsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJlc3VsdC5tX3NpemUgPSBzaXplOwogCiAgICAgICAg
IHJlc3VsdC51bmNoZWNrZWRJbml0aWFsaXplPDA+KHN0ZDo6Zm9yd2FyZDxJdGVtcz4oaXRlbXMp
Li4uKTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgdmVjdG9yVHJhY2tlcigp
LnJlY29yZFNpemVBbmRDYXBhY2l0eShyZXN1bHQubV90cmFja2VkSUQsIHJlc3VsdC5zaXplSW5C
eXRlcygpLCByZXN1bHQuY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCkBAIC03NjMsNiArODI3LDcgQEAgcHVibGljOgogCiAgICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0
ZXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fc2l6ZSkgKiBzaXplb2Yo
VCk7IH0KKyAgICBzaXplX3QgY2FwYWNpdHlJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gQmFzZTo6
Y2FwYWNpdHlJbkJ5dGVzKCk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IHNpemVNZW1vcnlPZmZz
ZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVmVjdG9yLCBtX3NpemUpOyB9CiAgICAgc2l6
ZV90IGNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gQmFzZTo6Y2FwYWNpdHkoKTsgfQogICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KQEAgLTg5NCw2ICs5NTksMTEg
QEAgcHVibGljOgogCiAgICAgICAgIGFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRvKG1fc2l6ZSk7
CiAgICAgICAgIG90aGVyLmFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRvKG90aGVyLm1fc2l6ZSk7
CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgdmVjdG9yVHJhY2tlcigpLnJl
Y29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJ
bkJ5dGVzKCkpOworICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5
KG90aGVyLm1fdHJhY2tlZElELCBvdGhlci5zaXplSW5CeXRlcygpLCBvdGhlci5jYXBhY2l0eUlu
Qnl0ZXMoKSk7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIHJldmVyc2UoKTsKQEAgLTk1NCw2
ICsxMDI0LDExIEBAIHByaXZhdGU6CiAgICAgdXNpbmcgQmFzZTo6cmVhbGxvY2F0ZUJ1ZmZlcjsK
ICAgICB1c2luZyBCYXNlOjpyZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQ7CiAgICAgdXNpbmcg
QmFzZTo6cmVsZWFzZUJ1ZmZlcjsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHVz
aW5nIEJhc2U6Om1fdHJhY2tlZElEOworI2VuZGlmCisKICNpZiBBU0FOX0VOQUJMRUQKICAgICB1
c2luZyBCYXNlOjplbmRPZkJ1ZmZlcjsKICNlbmRpZgpAQCAtOTY3LDYgKzEwNDIsMTAgQEAgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxs
b2M+OjpWZWN0b3IoY29uc3QgVmUKIAogICAgIGlmIChiZWdpbigpKQogICAgICAgICBUeXBlT3Bl
cmF0aW9uczo6dW5pbml0aWFsaXplZENvcHkob3RoZXIuYmVnaW4oKSwgb3RoZXIuZW5kKCksIGJl
Z2luKCkpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigp
LnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNp
dHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBp
bmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNp
dHksIHR5cGVuYW1lIE1hbGxvYz4KQEAgLTk3OCw2ICsxMDU3LDEwIEBAIFZlY3RvcjxULCBpbmxp
bmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6VmVjdG9y
KGNvbnN0IFZlCiAKICAgICBpZiAoYmVnaW4oKSkKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OnVu
aW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJlZ2luKCksIG90aGVyLmVuZCgpLCBiZWdpbigpKTsKKwor
I2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXpl
QW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygp
KTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFt
ZSBNYWxsb2M+CkBAIC0xMDAwLDYgKzEwODMsMTAgQEAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+JiBWZWN0b3I8VCwgaW5saW4K
ICAgICBUeXBlT3BlcmF0aW9uczo6dW5pbml0aWFsaXplZENvcHkob3RoZXIuYmVnaW4oKSArIHNp
emUoKSwgb3RoZXIuZW5kKCksIGVuZCgpKTsKICAgICBtX3NpemUgPSBvdGhlci5zaXplKCk7CiAK
KyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6
ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMo
KSk7CisjZW5kaWYKKwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtMTAyOCw2ICsxMTE1LDEw
IEBAIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0
eSwgTWFsbG9jPiYgVmVjdG9yPFQsIGlubGluCiAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlh
bGl6ZWRDb3B5KG90aGVyLmJlZ2luKCkgKyBzaXplKCksIG90aGVyLmVuZCgpLCBlbmQoKSk7CiAg
ICAgbV9zaXplID0gb3RoZXIuc2l6ZSgpOwogCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisg
ICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6
ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCisKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKQEAgLTExMzEsNiArMTIyMiwxMCBAQCB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6ZmlsbChjb25zdAog
ICAgIHN0ZDo6ZmlsbChiZWdpbigpLCBlbmQoKSwgdmFsKTsKICAgICBUeXBlT3BlcmF0aW9uczo6
dW5pbml0aWFsaXplZEZpbGwoZW5kKCksIGJlZ2luKCkgKyBuZXdTaXplLCB2YWwpOwogICAgIG1f
c2l6ZSA9IG5ld1NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JU
cmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygp
LCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBt
aW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgpAQCAtMTIwMSw2ICsxMjk2LDEwIEBAIGlubGlu
ZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBh
Y2l0eSwgTWFsbG9jPjo6cmVzCiAgICAgfQogICAgIAogICAgIG1fc2l6ZSA9IHNpemU7CisKKyNp
ZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFu
ZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7
CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUg
TWFsbG9jPgpAQCAtMTIxNyw2ICsxMzE2LDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFj
aXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjpzaHJpbmsoc2l6CiAg
ICAgVHlwZU9wZXJhdGlvbnM6OmRlc3RydWN0KGJlZ2luKCkgKyBzaXplLCBlbmQoKSk7CiAgICAg
YXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8oc2l6ZSk7CiAgICAgbV9zaXplID0gc2l6ZTsKKwor
I2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXpl
QW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygp
KTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFt
ZSBNYWxsb2M+CkBAIC0xMjI5LDYgKzEzMzIsMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46Omdyb3coc2l6ZV8K
ICAgICBpZiAoYmVnaW4oKSkKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6OmluaXRpYWxpemVJZk5v
blBPRChlbmQoKSwgYmVnaW4oKSArIHNpemUpOwogICAgIG1fc2l6ZSA9IHNpemU7CisKKyNpZiBU
UkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENh
cGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7Cisj
ZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFs
bG9jPgpAQCAtMTMwMSw2ICsxNDA4LDExIEBAIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjpyZXNlcnZlQ2FwCiAKICAg
ICBUeXBlT3BlcmF0aW9uczo6bW92ZShvbGRCdWZmZXIsIG9sZEVuZCwgYmVnaW4oKSk7CiAgICAg
QmFzZTo6ZGVhbGxvY2F0ZUJ1ZmZlcihvbGRCdWZmZXIpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NB
UEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNr
ZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCisKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTMzMiw2ICsxNDQ0LDEwIEBAIHZvaWQgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjpzaHJp
bmtDYXBhCiAgICAgICAgIGlmIChCYXNlOjpzaG91bGRSZWFsbG9jYXRlQnVmZmVyKG5ld0NhcGFj
aXR5KSkgewogICAgICAgICAgICAgQmFzZTo6cmVhbGxvY2F0ZUJ1ZmZlcihuZXdDYXBhY2l0eSk7
CiAgICAgICAgICAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhzaXplKCkpOworCisjaWYg
VFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3Jk
U2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0
ZXMoKSk7CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMzQ1
LDYgKzE0NjEsMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnNocmlua0NhcGEKICAgICBCYXNlOjpyZXN0b3Jl
SW5saW5lQnVmZmVySWZOZWVkZWQoKTsKIAogICAgIGFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRv
KHNpemUoKSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2Vy
KCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBh
Y2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBh
Y2l0eSwgdHlwZW5hbWUgTWFsbG9jPgpAQCAtMTM3NCw2ICsxNDk0LDEwIEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2Fw
YWNpdHksIE1hbGxvCiAgICAgVCogZGVzdCA9IGVuZCgpOwogICAgIFZlY3RvckNvcGllcjxzdGQ6
OmlzX3RyaXZpYWw8VD46OnZhbHVlLCBVPjo6dW5pbml0aWFsaXplZENvcHkoZGF0YSwgc3RkOjph
ZGRyZXNzb2YoZGF0YVtkYXRhU2l6ZV0pLCBkZXN0KTsKICAgICBtX3NpemUgPSBuZXdTaXplOwor
CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNp
emVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVz
KCkpOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEzOTIsNiArMTUxNiwxMCBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsbwogICAgIFQqIGRlc3QgPSBlbmQoKTsKICAgICBWZWN0
b3JDb3BpZXI8c3RkOjppc190cml2aWFsPFQ+Ojp2YWx1ZSwgVT46OnVuaW5pdGlhbGl6ZWRDb3B5
KGRhdGEsIHN0ZDo6YWRkcmVzc29mKGRhdGFbZGF0YVNpemVdKSwgZGVzdCk7CiAgICAgbV9zaXpl
ID0gbmV3U2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNr
ZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNh
cGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNDAz
LDYgKzE1MzEsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG8KICAgICAgICAgYXNhbkJ1ZmZl
clNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAgICAgICAgIG5ldyAoTm90TnVsbCwgZW5k
KCkpIFQoc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7CiAgICAgICAgICsrbV9zaXplOworCisjaWYg
VFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXpl
QW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygp
KTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTE0MTcsNiArMTU0
OSwxMCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsbwogICAgICAgICBhc2FuQnVmZmVyU2l6ZVdp
bGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgICAgICArK21fc2l6ZTsKKworI2lmIFRS
QUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFu
ZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7
CisjZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0xNDQxLDYgKzE1Nzcs
MTAgQEAgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWlu
Q2FwYWNpdHksIE1hbGxvYz46OmFwcGVuZFNsb3cKICAgICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFu
Z2VUbyhtX3NpemUgKyAxKTsKICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKHN0ZDo6Zm9yd2Fy
ZDxVPigqcHRyKSk7CiAgICAgKyttX3NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkK
KyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBz
aXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMTQ2Miw2ICsxNjAyLDEwIEBAIGJvb2wgVmVjdG9yPFQsIGlubGluZUNhcGFj
aXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+Ojpjb25zdHJ1Y3RBCiAg
ICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAgICAgbmV3IChOb3RO
dWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgICsrbV9zaXpl
OworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29y
ZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5
dGVzKCkpOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE0NzgsNiArMTYyMiwx
MCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxv
d0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsbwogCiAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkg
VChzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKICAgICArK21fc2l6ZTsKKworI2lmIFRSQUNLX1ZF
Q1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHko
bV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+CkBA
IC0xNDkwLDYgKzE2MzgsMTAgQEAgQUxXQVlTX0lOTElORSB2b2lkIFZlY3RvcjxULCBpbmxpbmVD
YXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG8KIAogICAgIG5ldyAo
Tm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKICAgICArK21f
c2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5y
ZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5
SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5
LCB0eXBlbmFtZSBNYWxsb2M+CkBAIC0xNTI3LDYgKzE2NzksMTAgQEAgdm9pZCBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46Omlu
c2VydChzaXoKICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKHNwb3QsIGVuZCgp
LCBzcG90ICsgZGF0YVNpemUpOwogICAgIFZlY3RvckNvcGllcjxzdGQ6OmlzX3RyaXZpYWw8VD46
OnZhbHVlLCBVPjo6dW5pbml0aWFsaXplZENvcHkoZGF0YSwgc3RkOjphZGRyZXNzb2YoZGF0YVtk
YXRhU2l6ZV0pLCBzcG90KTsKICAgICBtX3NpemUgPSBuZXdTaXplOworCisjaWYgVFJBQ0tfVkVD
VE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eSht
X3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9
CiAgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+CkBA
IC0xNTQ3LDYgKzE3MDMsMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjppbnMKICAgICBUeXBlT3Bl
cmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKHNwb3QsIGVuZCgpLCBzcG90ICsgMSk7CiAgICAgbmV3
IChOb3ROdWxsLCBzcG90KSBUKHN0ZDo6Zm9yd2FyZDxVPigqcHRyKSk7CiAgICAgKyttX3NpemU7
CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3Jk
U2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0
ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlw
ZW5hbWUgTWFsbG9jPgpAQCAtMTU2NSw2ICsxNzI1LDEwIEBAIGlubGluZSB2b2lkIFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6
cmVtCiAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVybGFwcGluZyhzcG90ICsgMSwgZW5kKCks
IHNwb3QpOwogICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSAtIDEpOwogICAg
IC0tbV9zaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tl
cigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2Fw
YWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2Fw
YWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KQEAgLTE1NzgsNiArMTc0MiwxMCBAQCBpbmxpbmUgdm9p
ZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHks
IE1hbGxvYz46OnJlbQogICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoZW5kU3Bv
dCwgZW5kKCksIGJlZ2luU3BvdCk7CiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9z
aXplIC0gbGVuZ3RoKTsKICAgICBtX3NpemUgLT0gbGVuZ3RoOworCisjaWYgVFJBQ0tfVkVDVE9S
X0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3Ry
YWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KQEAgLTE2
NjQsNiArMTgzMiwxMCBAQCBpbmxpbmUgdW5zaWduZWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OgogICAgICAgICBUeXBlT3Bl
cmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKGhvbGVFbmQsIGVuZCgpLCBob2xlQmVnaW4pOwogICAg
IGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSAtIG1hdGNoQ291bnQpOwogICAgIG1f
c2l6ZSAtPSBtYXRjaENvdW50OworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVj
dG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0
ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgcmV0dXJuIG1hdGNoQ291bnQ7
CiB9CiAKQEAgLTE3MTAsNiArMTg4MiwxMSBAQCBpbmxpbmUgTWFsbG9jUHRyPFQsIE1hbGxvYz4g
VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaQogICAg
ICAgICBtZW1jcHkoYnVmZmVyLmdldCgpLCBkYXRhKCksIGJ5dGVzKTsKICAgICB9CiAgICAgbV9z
aXplID0gMDsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIo
KS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFj
aXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBjYWxsIEJh
c2U6OnJlc3RvcmVJbmxpbmVCdWZmZXJJZk5lZWRlZCgpIGhlcmU/CiAgICAgcmV0dXJuIGJ1ZmZl
cjsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKaW5kZXggYmFl
MGI2MGUyYjI2OGQxM2U5NmM4YzM2NzVlNmNlOGQyMTc0NTQ2Zi4uNzMwM2RmOGYzN2RlNTg0NjYz
YTllNzFhODdhYzQ2OWM5NzZkMjc3OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
SGFzaE1hcC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgRG91YmxlSGFz
aENvbGxpc2lvbnMpCiAgICAgY29uc3QgZG91YmxlIG5lZ2F0aXZlWmVyb0tleSA9IC16ZXJvS2V5
OwogCiAgICAgRG91YmxlSGFzaE1hcCBtYXA7Ci0jaWYgIUNIRUNLX0hBU0hUQUJMRV9JVEVSQVRP
UlMgJiYhRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCisjaWYgIUNIRUNLX0hBU0hUQUJM
RV9JVEVSQVRPUlMgJiYhRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFICYmICFkZWZpbmVk
KFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWSkKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihtYXAp
ID09IHNpemVvZih2b2lkKikpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvSGFzaFNldC5jcHAKaW5kZXggNTk4ZDc0NTQzYzdhZWU5NzgxNzQ1NjBiNzA3YjQxMTQwYjkx
MWJkNS4uYjA5NDc5MWEwMjAzMmYwNDc5NWNjYjhlYjQ2ZTFlNzcxMDRiMWQ5NSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCBU
RVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogICAg
IENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OlRlc3RpbmdTY29wZSBzY29wZTsKIAogICAg
IEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBz
ZXQ7Ci0jaWYgIUNIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMgJiYhRFVNUF9IQVNIVEFCTEVfU1RB
VFNfUEVSX1RBQkxFCisjaWYgIUNIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMgJiYhRFVNUF9IQVNI
VEFCTEVfU1RBVFNfUEVSX1RBQkxFICYmICFkZWZpbmVkKFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lU
WSkKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihzZXQpID09IHNpemVvZih2b2lkKikpOwogI2Vu
ZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464831</attachid>
            <date>2023-02-03 21:04:25 -0800</date>
            <delta_ts>2023-02-03 21:04:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186698-20230203210424.patch</filename>
            <type>text/plain</type>
            <size>52122</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA1ZDFjZGE4
MmIzOWFiMjgzMTk5MzI3ZmI0ZDg2ZTQ2OTA5Y2Q2NTQ4Li4xZDBlODM0ODNlNDA3ODg4ZDUwNWVj
ODlmNTBiNTA1ZWQ4YzdhYjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCkBAIC05OTYsNyArOTk2LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFVuaXF1
ZWRTdHJpbmdJbXBsKj4gbV9jYWNoZWRJZGVudGlmaWVyVWlkczsKICNlbmRpZgogfTsKLSNpZiAh
QVNTRVJUX0VOQUJMRUQgJiYgQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCisjaWYgIUFTU0VSVF9F
TkFCTEVEICYmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiAhZGVmaW5lZChUUkFDS19IQVNI
VEFCTEVfQ0FQQUNJVFkpCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihDb2RlQmxvY2spIDw9IDI0MCwg
IktlZXAgaXQgc21hbGwgZm9yIG1lbW9yeSBzYXZpbmciKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaAppbmRleCAwN2Yz
MmVmMjQ4MTRlNDgzMTNlNjA2MjczYzc2NDU3NTljYTIxOGVlLi5iNWFkOTNlNTNlZmIzOWJiOWNj
Njc1OTljNmY5Y2I0NzM0NjVlZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgog
ICAgIFdyaXRlQmFycmllcjxKU0ltbXV0YWJsZUJ1dHRlcmZseT4gbV9jYWNoZWRQcm9wZXJ0eU5h
bWVzW251bWJlck9mQ2FjaGVkUHJvcGVydHlOYW1lc10geyB9OwogCiAgICAgdHlwZWRlZiBIYXNo
TWFwPFByb3BlcnR5T2Zmc2V0LCBSZWZQdHI8V2F0Y2hwb2ludFNldD4sIFdURjo6SW50SGFzaDxQ
cm9wZXJ0eU9mZnNldD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8UHJvcGVy
dHlPZmZzZXQ+PiBQcm9wZXJ0eVdhdGNocG9pbnRNYXA7Ci0jaWZkZWYgTkRFQlVHCisjaWYgZGVm
aW5lZChOREVCVUcpICYmICFkZWZpbmVkKFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWSkKICAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihQcm9wZXJ0eVdhdGNocG9pbnRNYXApID09IHNpemVvZih2b2lk
KiksICJTdHJ1Y3R1cmVSYXJlRGF0YSBzaG91bGQgcmVtYWluIHNtYWxsIik7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODJmODBmMmYwMzg3
ODRmNjY4NjhiOWEyYTdkYTA0Mjk5MzczZjA5NS4uZWY5ZWFhOWQ1YjAyMmU4YWYzM2FiNTFjZjBk
NGFmODQ0N2YwYjY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xOCw2ICsxOCw4IEBACiAJCTBGNjZCMjhFMURDOTdCQUIwMDRBMUQzRiAvKiBTZWNvbmRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZC
Mjg0MURDOTdCQUIwMDRBMUQzRiAvKiBTZWNvbmRzLmNwcCAqLzsgfTsKIAkJMEY2NkIyOTAxREM5
N0JBQjAwNEExRDNGIC8qIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2QjI4NjFEQzk3QkFCMDA0QTFE
M0YgLyogVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCAqLzsgfTsKIAkJMEY2NkIyOTIxREM5
N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZCMjg4MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5j
cHAgKi87IH07CisJCTBGNjc5OEFGMjk4QjcxQTcwMEZFOTk5QSAvKiBDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY2Nzk4QUQyOThCNzE5QzAwRkU5OTlBIC8qIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5j
cHAgKi87IH07CisJCTBGNjc5OEIwMjk4QjcxQUYwMEZFOTk5QSAvKiBDb250YWluZXJDYXBhY2l0
eVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNjc5OEFFMjk4QjcxOUMwMEZFOTk5QSAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjcwNzVG
NTFGQkY1M0NEMDA0ODlBRjAgLyogVGltaW5nU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3MDc1RjQxRkJGNTM3QTAwNDg5QUYwIC8qIFRp
bWluZ1Njb3BlLmNwcCAqLzsgfTsKIAkJMEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RC
aXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICovOyB9Owog
CQkwRjgyNEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgyNEE2NDFCNzQ0M0EwMDAyRTM0
NUQgLyogUGFya2luZ0xvdC5jcHAgKi87IH07CkBAIC05NzAsNiArOTcyLDggQEAKIAkJMEY2NkIy
ODcxREM5N0JBQjAwNEExRDNGIC8qIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkIyODgxREM5N0JBQjAwNEExRDNGIC8qIFdh
bGxUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhbGxUaW1l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkIyODkxREM5N0JBQjAwNEEx
RDNGIC8qIFdhbGxUaW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhbGxU
aW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjc5OEFEMjk4QjcxOUMwMEZF
OTk5QSAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY2Nzk4QUUyOThCNzE5QzAwRkU5OTlBIC8qIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY3MDc1RjMxRkJGNTM3QTAwNDg5QUYwIC8qIFRpbWluZ1Njb3Bl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRpbWluZ1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNzA3NUY0MUZCRjUzN0EwMDQ4OUFGMCAvKiBUaW1pbmdTY29wZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUaW1pbmdTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSYW5nZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjAwNiw2ICsyMDEwLDggQEAKIAkJCQkwRjMwQ0I1OTFGQ0RGMTMzMDA0QjUzMjMgLyog
Q29uY3VycmVudFB0ckhhc2hTZXQuaCAqLywKIAkJCQkwRkI0Njc4MzFGREUyODJDMDAzRkNCMDkg
LyogQ29uY3VycmVudFZlY3Rvci5oICovLAogCQkJCTBGREI2OThEMUI3QzY0M0EwMDBDMTA3OCAv
KiBDb25kaXRpb24uaCAqLywKKwkJCQkwRjY3OThBRDI5OEI3MTlDMDBGRTk5OUEgLyogQ29udGFp
bmVyQ2FwYWNpdHlUcmFja2VyLmNwcCAqLywKKwkJCQkwRjY3OThBRTI5OEI3MTlDMDBGRTk5OUEg
LyogQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmggKi8sCiAJCQkJMEY4RTg1REExRkQ0ODVCMDAw
NjkxODg5IC8qIENvdW50aW5nTG9jay5jcHAgKi8sCiAJCQkJMEZGQkNCRkExRkQzN0UwRjAwNzJB
QUYwIC8qIENvdW50aW5nTG9jay5oICovLAogCQkJCUUzOEM0MTI2MUVCNEUwNjgwMDQyOTU3RCAv
KiBDUFVUaW1lLmNwcCAqLywKQEAgLTI5NzEsNiArMjk3Nyw3IEBACiAJCQkJREQzREM4OEYyN0E0
QkY4RTAwN0U1QjYxIC8qIENvbmN1cnJlbnRWZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCURE
M0RDOEQwMjdBNEJGOEUwMDdFNUI2MSAvKiBDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CURERjMwN0Y1MjdDMDg3MEUwMDZBNTI2RiAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGNjc5OEIwMjk4QjcxQUYwMEZFOTk5QSAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCURERjMwN0M2MjdDMDg2REYwMDZBNTI2RiAvKiBDb252ZXJzaW9u
TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREQzREM4RDEyN0E0QkY4RTAwN0U1QjYxIC8qIENv
dW50aW5nTG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREQzREM5MjYyN0E0QkY4RTAwN0U1QjYx
IC8qIENQVVRpbWUuaCBpbiBIZWFkZXJzICovLApAQCAtMzY4OSw2ICszNjk2LDcgQEAKIAkJCQkw
RjhGMkI5MjE3MkUwMTAzMDA3REJEQTUgLyogQ29tcGlsYXRpb25UaHJlYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTMxNDlBM0IyMjhCRENBQzAwQkZBNkM3IC8qIENvbmN1cnJlbnRCdWZmZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMENCNUExRkNERjEzNDAwNEI1MzIzIC8qIENvbmN1
cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNjc5OEFGMjk4QjcxQTcw
MEZFOTk5QSAvKiBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY4RTg1REIxRkQ0ODVCMDAwNjkxODg5IC8qIENvdW50aW5nTG9jay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMzhDNDEyODFFQjRFMDY4MDA0Mjk1N0QgLyogQ1BVVGltZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFQjJDODZEOTI2N0IyNzVEMDA1MkNCOUEgLyogQ1BVVGltZVBPU0lYLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBkNWRmMGY0N2IzZWIyNWMz
ZTk0ZjBiNWRlYzU5MTY4MTk2M2UwYmQ0Li5hNzhlMjdkZDFkYzRjZDUwNjQwODdlZTdlZTdjNDQy
NzZlODIxOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDksNiArNDksNyBAQCBzZXQoV1RG
X1BVQkxJQ19IRUFERVJTCiAgICAgQ29uY3VycmVudFB0ckhhc2hTZXQuaAogICAgIENvbmN1cnJl
bnRWZWN0b3IuaAogICAgIENvbmRpdGlvbi5oCisgICAgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2Vy
LmgKICAgICBDb3VudGluZ0xvY2suaAogICAgIENyb3NzVGhyZWFkQ29waWVyLmgKICAgICBDcm9z
c1RocmVhZFF1ZXVlLmgKQEAgLTQzOCw2ICs0MzksNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBD
b21waWxhdGlvblRocmVhZC5jcHAKICAgICBDb25jdXJyZW50QnVmZmVyLmNwcAogICAgIENvbmN1
cnJlbnRQdHJIYXNoU2V0LmNwcAorICAgIENvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5jcHAKICAg
ICBDb3VudGluZ0xvY2suY3BwCiAgICAgQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiAgICAgQ3Jvc3NU
aHJlYWRUYXNrSGFuZGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbnRhaW5l
ckNhcGFjaXR5VHJhY2tlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0eVRy
YWNrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ZDhkN2ZhNWZhYjJjOGI3MzZhZjRmNDNmZDZhODJhMWRk
ZmM3MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0
eVRyYWNrZXIuY3BwCkBAIC0wLDAgKzEsMjA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9D
b250YWluZXJDYXBhY2l0eVRyYWNrZXIuaD4KKworI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+Cisj
aW5jbHVkZSA8d3RmL1N0YWNrU2hvdC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworQWxsb2NhdGlv
bkNhbGxTaXRlRGF0YTo6QWxsb2NhdGlvbkNhbGxTaXRlRGF0YShzaXplX3Qgc3RhY2tEZXB0aCwg
c2l6ZV90IGluVXNlZFNpemUsIHNpemVfdCBpbkNhcGFjaXR5KQorICAgIDogdXNlZFNpemUoaW5V
c2VkU2l6ZSkKKyAgICAsIGNhcGFjaXR5KGluQ2FwYWNpdHkpCisgICAgLCBtX3N0YWNrKHN0ZDo6
bWFrZV91bmlxdWU8U3RhY2tTaG90PihzdGFja0RlcHRoKSkKK3sKK30KKworQWxsb2NhdGlvbkNh
bGxTaXRlRGF0YTo6QWxsb2NhdGlvbkNhbGxTaXRlRGF0YShjb25zdCBTdGFja1Nob3QmIHN0YWNr
KQorICAgIDogbV9zdGFjayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hvdD4oc3RhY2spKQorewor
fQorCitBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhOjpBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKGNvbnN0
IEFsbG9jYXRpb25DYWxsU2l0ZURhdGEmIG90aGVyKQorICAgIDogY291bnQob3RoZXIuY291bnQp
CisgICAgLCB1c2VkU2l6ZShvdGhlci51c2VkU2l6ZSkKKyAgICAsIGNhcGFjaXR5KG90aGVyLmNh
cGFjaXR5KQorICAgICwgbV9zdGFjayhzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrU2hvdD4ob3RoZXIu
c3RhY2soKSkpCit7Cit9CisKK0FsbG9jYXRpb25DYWxsU2l0ZURhdGE6On5BbGxvY2F0aW9uQ2Fs
bFNpdGVEYXRhKCkgPSBkZWZhdWx0OworCitjb25zdCBTdGFja1Nob3QmIEFsbG9jYXRpb25DYWxs
U2l0ZURhdGE6OnN0YWNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKm1fc3RhY2s7Cit9CisKK3N0
cnVjdCBDb250YWluZXJBbGxvY2F0aW9uRGF0YSB7CisgICAgQ29udGFpbmVyQWxsb2NhdGlvbkRh
dGEoc2l6ZV90IHN0YWNrU2hvdFNpemUsIHNpemVfdCBpblNpemUsIHNpemVfdCBpbkNhcGFjaXR5
KQorICAgICAgICA6IGFsbG9jYXRpb25TdGFjayhzdGFja1Nob3RTaXplKQorICAgICAgICAsIHNp
emUoaW5TaXplKQorICAgICAgICAsIGNhcGFjaXR5KGluQ2FwYWNpdHkpCisgICAgeworICAgIAor
ICAgIH0KKyAgICBTdGFja1Nob3QgYWxsb2NhdGlvblN0YWNrOworICAgIHNpemVfdCBzaXplOwor
ICAgIHNpemVfdCBjYXBhY2l0eTsKK307CisKK3N0cnVjdCBDb250YWluZXJDYXBhY2l0eVRyYWNr
ZXI6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGwgeworICAgIHN0ZDo6dW5vcmRlcmVkX21h
cDxUcmFja2VkSUQsIHN0ZDo6dW5pcXVlX3B0cjxDb250YWluZXJBbGxvY2F0aW9uRGF0YT4+IG1f
dHJhY2tlZElEVG9Db250YWluZXJEYXRhOworfTsKKworLy8gVG8gcHJldmVudCBwZXItdGhyZWFk
IHJlLWVudHJhbmN5IHdlIHRha2UgYSBwb2ludGVyIHRvIGFuIG9iamVjdCBvbiB0aGUgc3RhY2ss
IGluc2lkZSBtX211dGV4IGxvY2sgc2NvcGUuCitjbGFzcyBBdm9pZFJlY29yZGluZ1Njb3BlIHsK
K3B1YmxpYzoKKyAgICBBdm9pZFJlY29yZGluZ1Njb3BlKENvbnRhaW5lckNhcGFjaXR5VHJhY2tl
ciYgdHJhY2tlciwgYm9vbCogc3RhY2tPYmplY3QpCisgICAgICAgIDogbV90cmFja2VyKHRyYWNr
ZXIpCisgICAgeworICAgICAgICBtX3RyYWNrZXIubV9hdm9pZFJlZW50cmFuY3kgPSBzdGFja09i
amVjdDsKKyAgICB9CisKKyAgICB+QXZvaWRSZWNvcmRpbmdTY29wZSgpCisgICAgeworICAgICAg
ICBtX3RyYWNrZXIubV9hdm9pZFJlZW50cmFuY3kgPSBudWxscHRyOworICAgIH0KK3ByaXZhdGU6
CisgICAgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyJiBtX3RyYWNrZXI7Cit9OworCitDb250YWlu
ZXJDYXBhY2l0eVRyYWNrZXI6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tlcihzaXplX3QgYWdncmVn
YXRpb25TdGFja0RlcHRoKQorICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVy
Q2FwYWNpdHlUcmFja2VySW1wbD4oKSkKKyAgICAsIG1fYWdncmVnYXRpb25TdGFja0RlcHRoKGFn
Z3JlZ2F0aW9uU3RhY2tEZXB0aCkKK3sKK30KKworVHJhY2tlZElEIENvbnRhaW5lckNhcGFjaXR5
VHJhY2tlcjo6cmVjb3JkQWxsb2NhdGlvbihzaXplX3Qgc2l6ZSwgc2l6ZV90IGNhcGFjaXR5KQor
eworICAgIEFTU0VSVChzaXplIDw9IGNhcGFjaXR5KTsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxz
dGQ6OnJlY3Vyc2l2ZV9tdXRleD4gbG9ja0hvbGRlcihtX211dGV4KTsKKworICAgIGlmIChtX2F2
b2lkUmVlbnRyYW5jeSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBib29sIGF2b2lkUmVlbnRy
YW5jeSA9IHRydWU7CisgICAgQXZvaWRSZWNvcmRpbmdTY29wZSBzY29wZSgqdGhpcywgJmF2b2lk
UmVlbnRyYW5jeSk7CisKKyAgICBUcmFja2VkSUQgb2JqZWN0SUQgPSArK21fbmV4dElEOworCisg
ICAgYXV0byBhbGxvY2F0aW9uRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyQWxsb2Nh
dGlvbkRhdGE+KG1fYWdncmVnYXRpb25TdGFja0RlcHRoLCBzaXplLCBjYXBhY2l0eSk7CisgICAg
YXV0byBpbnNlcnRSZXN1bHQgPSBtX2ltcGwtPm1fdHJhY2tlZElEVG9Db250YWluZXJEYXRhLmlu
c2VydChzdGQ6Om1ha2VfcGFpcihvYmplY3RJRCwgV1RGTW92ZShhbGxvY2F0aW9uRGF0YSkpKTsK
KyAgICBpZiAoIWluc2VydFJlc3VsdC5zZWNvbmQpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJD
b250YWluZXJDYXBhY2l0eVRyYWNrZXI6OnJlY29yZEFsbG9jYXRpb24gc2F3IG9iamVjdCAldSBm
b3IgdGhlIHNlY29uZCB0aW1lIiwgb2JqZWN0SUQpOworICAgICAgICBXVEZMb2dBbHdheXMoIldh
cyBwcmV2aW91c2x5IGFsbG9jYXRlZCBhdDoiKTsKKyAgICAgICAgYXV0byYgY2FsbFNpdGVEYXRh
ID0gKmluc2VydFJlc3VsdC5maXJzdC0+c2Vjb25kOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAg
Y29uc3Qgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IDQ7CisjZWxzZQorICAgICAgICBjb25zdCBzaXpl
X3QgZnJhbWVzVG9Ta2lwID0gMDsKKyNlbmRpZgorICAgICAgICBXVEZQcmludEJhY2t0cmFjZShj
YWxsU2l0ZURhdGEuYWxsb2NhdGlvblN0YWNrLmFycmF5KCkgKyBmcmFtZXNUb1NraXAsIGNhbGxT
aXRlRGF0YS5hbGxvY2F0aW9uU3RhY2suc2l6ZSgpIC0gZnJhbWVzVG9Ta2lwKTsKKyAgICB9CisK
KyAgICByZXR1cm4gb2JqZWN0SUQ7Cit9CisKK3ZvaWQgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2Vy
OjpyZWNvcmRTaXplQW5kQ2FwYWNpdHkoVHJhY2tlZElEIG9iamVjdElELCBzaXplX3Qgc2l6ZSwg
c2l6ZV90IGNhcGFjaXR5KQoreworICAgIEFTU0VSVChzaXplIDw9IGNhcGFjaXR5KTsKKworICAg
IGlmICghb2JqZWN0SUQpCisgICAgICAgIHJldHVybjsKKworICAgIHN0ZDo6bG9ja19ndWFyZDxz
dGQ6OnJlY3Vyc2l2ZV9tdXRleD4gbG9ja0hvbGRlcihtX211dGV4KTsKKworICAgIGlmIChtX2F2
b2lkUmVlbnRyYW5jeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBhdm9pZFJlZW50cmFu
Y3kgPSB0cnVlOworICAgIEF2b2lkUmVjb3JkaW5nU2NvcGUgc2NvcGUoKnRoaXMsICZhdm9pZFJl
ZW50cmFuY3kpOworCisgICAgYXV0byBpdCA9IG1faW1wbC0+bV90cmFja2VkSURUb0NvbnRhaW5l
ckRhdGEuZmluZChvYmplY3RJRCk7CisgICAgaWYgKGl0ICE9IG1faW1wbC0+bV90cmFja2VkSURU
b0NvbnRhaW5lckRhdGEuZW5kKCkpIHsKKyAgICAgICAgaXQtPnNlY29uZC0+c2l6ZSA9IHNpemU7
CisgICAgICAgIGl0LT5zZWNvbmQtPmNhcGFjaXR5ID0gY2FwYWNpdHk7CisgICAgfSBlbHNlCisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyICVwIHJlY29yZFNp
emVBbmRDYXBhY2l0eSBmYWlsZWQgdG8gZmluZCBvYmplY3QgJXUiLCB0aGlzLCBvYmplY3RJRCk7
Cit9CisKK3ZvaWQgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyOjpyZWNvcmRGcmVlKFRyYWNrZWRJ
RCBvYmplY3RJRCkKK3sKKyAgICBpZiAoIW9iamVjdElEKQorICAgICAgICByZXR1cm47CisKKyAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjpyZWN1cnNpdmVfbXV0ZXg+IGxvY2tIb2xkZXIobV9tdXRl
eCk7CisKKyAgICBpZiAobV9hdm9pZFJlZW50cmFuY3kpCisgICAgICAgIHJldHVybjsKKworICAg
IGJvb2wgYXZvaWRSZWVudHJhbmN5ID0gdHJ1ZTsKKyAgICBBdm9pZFJlY29yZGluZ1Njb3BlIHNj
b3BlKCp0aGlzLCAmYXZvaWRSZWVudHJhbmN5KTsKKworICAgIGF1dG8gcmVtb3ZlZENvdW50ID0g
bV9pbXBsLT5tX3RyYWNrZWRJRFRvQ29udGFpbmVyRGF0YS5lcmFzZShvYmplY3RJRCk7CisgICAg
aWYgKCFyZW1vdmVkQ291bnQpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGFpbmVyQ2FwYWNp
dHlUcmFja2VyOjpyZWNvcmRGcmVlIGdvdCBpZCAldSBmb3Igd2hpY2ggdGhlcmUgaXMgbm8gZW50
cnkiLCBvYmplY3RJRCk7Cit9CisKK3N0ZDo6dmVjdG9yPEFsbG9jYXRpb25DYWxsU2l0ZURhdGE+
IENvbnRhaW5lckNhcGFjaXR5VHJhY2tlcjo6YWdncmVnYXRlQnlDYWxsU2l0ZShjb25zdCBXVEY6
OkZ1bmN0aW9uPHZvaWQoVHJhY2tlZElELCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhJik+JiBwZXJP
YmplY3RDYWxsYmFjaykKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjpyZWN1cnNpdmVfbXV0
ZXg+IGxvY2tIb2xkZXIobV9tdXRleCk7CisKKyAgICBib29sIGF2b2lkUmVlbnRyYW5jeSA9IHRy
dWU7CisgICAgQXZvaWRSZWNvcmRpbmdTY29wZSBzY29wZSgqdGhpcywgJmF2b2lkUmVlbnRyYW5j
eSk7CisKKyAgICB0eXBlZGVmIHVuc2lnbmVkIFN0YWNrU2hvdEhhc2g7CisgICAgc3RkOjp1bm9y
ZGVyZWRfbWFwPFN0YWNrU2hvdEhhc2gsIHN0ZDo6dW5pcXVlX3B0cjxBbGxvY2F0aW9uQ2FsbFNp
dGVEYXRhPj4gY2FsbFNpdGVUb0FsbG9jYXRpb25BZ2dyZWdhdGU7CisKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIGl0IDogbV9pbXBsLT5tX3RyYWNrZWRJRFRvQ29udGFpbmVyRGF0YSkgeworICAgICAg
ICBjb25zdCBDb250YWluZXJBbGxvY2F0aW9uRGF0YSYgYWxsb2NhdGlvbkRhdGEgPSAqaXQuc2Vj
b25kOworCisgICAgICAgIEFsbG9jYXRpb25DYWxsU2l0ZURhdGEqIGNhbGxTaXRlRGF0YTsKKwor
ICAgICAgICBhdXRvIGZpbmRJdCA9IGNhbGxTaXRlVG9BbGxvY2F0aW9uQWdncmVnYXRlLmZpbmQo
YWxsb2NhdGlvbkRhdGEuYWxsb2NhdGlvblN0YWNrLmhhc2goKSk7CisgICAgICAgIGlmIChmaW5k
SXQgPT0gY2FsbFNpdGVUb0FsbG9jYXRpb25BZ2dyZWdhdGUuZW5kKCkpIHsKKyAgICAgICAgICAg
IGF1dG8gaW5zZXJ0SXQgPSBjYWxsU2l0ZVRvQWxsb2NhdGlvbkFnZ3JlZ2F0ZS5pbnNlcnQoeyBh
bGxvY2F0aW9uRGF0YS5hbGxvY2F0aW9uU3RhY2suaGFzaCgpLCBzdGQ6Om1ha2VfdW5pcXVlPEFs
bG9jYXRpb25DYWxsU2l0ZURhdGE+KGFsbG9jYXRpb25EYXRhLmFsbG9jYXRpb25TdGFjaykgfSk7
CisgICAgICAgICAgICBjYWxsU2l0ZURhdGEgPSBpbnNlcnRJdC5maXJzdC0+c2Vjb25kLmdldCgp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNhbGxTaXRlRGF0YSA9IGZpbmRJdC0+c2Vj
b25kLmdldCgpOworCisgICAgICAgIGNhbGxTaXRlRGF0YS0+Y291bnQgKz0gMTsKKyAgICAgICAg
Y2FsbFNpdGVEYXRhLT51c2VkU2l6ZSArPSBhbGxvY2F0aW9uRGF0YS5zaXplOworICAgICAgICBj
YWxsU2l0ZURhdGEtPmNhcGFjaXR5ICs9IGFsbG9jYXRpb25EYXRhLmNhcGFjaXR5OworCisgICAg
ICAgIHBlck9iamVjdENhbGxiYWNrKGl0LmZpcnN0LCAqY2FsbFNpdGVEYXRhKTsKKyAgICB9CisK
KyAgICBzdGQ6OnZlY3RvcjxBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhPiByZXN1bHQ7CisgICAgZm9y
IChhdXRvJiBpdCA6IGNhbGxTaXRlVG9BbGxvY2F0aW9uQWdncmVnYXRlKQorICAgICAgICByZXN1
bHQucHVzaF9iYWNrKEFsbG9jYXRpb25DYWxsU2l0ZURhdGEoKml0LnNlY29uZCkpOworCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9Db250YWluZXJDYXBhY2l0eVRyYWNrZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0Nv
bnRhaW5lckNhcGFjaXR5VHJhY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzNWVlM2I4ZWQwNDZkOGNkMjQw
YWI4YTY1ZmM5MTRjMzQzZmM4M2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9D
b250YWluZXJDYXBhY2l0eVRyYWNrZXIuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxtZW1vcnk+CisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8dmVjdG9yPgorI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisKK25hbWVzcGFjZSBXVEYg
eworCitjbGFzcyBTdGFja1Nob3Q7CisKK3N0cnVjdCBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhIHsK
KyAgICBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKHNpemVfdCBzdGFja0RlcHRoID0gMCwgc2l6ZV90
ID0gMCwgc2l6ZV90IGNhcGFjaXR5ID0gMCk7CisgICAgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YShj
b25zdCBTdGFja1Nob3QmKTsKKyAgICBBbGxvY2F0aW9uQ2FsbFNpdGVEYXRhKGNvbnN0IEFsbG9j
YXRpb25DYWxsU2l0ZURhdGEmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkFsbG9jYXRpb25D
YWxsU2l0ZURhdGEoKTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBjb25zdCBTdGFja1Nob3Qm
IHN0YWNrKCkgY29uc3Q7CisKKyAgICBzaXplX3QgY291bnQgeyAwIH07CisgICAgc2l6ZV90IHVz
ZWRTaXplIHsgMCB9OworICAgIHNpemVfdCBjYXBhY2l0eSB7IDAgfTsKKworcHJpdmF0ZToKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tTaG90PiBtX3N0YWNrOyAvLyBOZWVkZWQgdG8gaGlkZSBT
dGFja1Nob3QgdG8gYXZvaWQgY2lyY3VsYXIgaW5jbHVkZXMuCit9OworCit0eXBlZGVmIHVuc2ln
bmVkIFRyYWNrZWRJRDsKKworY2xhc3MgQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShDb250YWluZXJDYXBhY2l0eVRyYWNrZXIpOworICAgIGZyaWVu
ZCBjbGFzcyBBdm9pZFJlY29yZGluZ1Njb3BlOworcHVibGljOgorICAgIC8vIENhbGwgc2l0ZXMg
YXJlIGFnZ3JlZ2F0ZWQgYnkgY2FsbCBzdGFjaywgdXNpbmcgYWdncmVnYXRpb25TdGFja0RlcHRo
IGZyYW1lcy4KKyNpZm5kZWYgTkRFQlVHCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVm
YXVsdERnZ3JlZ2F0aW9uU3RhY2tEZXB0aCA9IDE1OworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBkZWZhdWx0RGdncmVnYXRpb25TdGFja0RlcHRoID0gODsKKyNlbmRpZgorICAg
IENvbnRhaW5lckNhcGFjaXR5VHJhY2tlcihzaXplX3QgYWdncmVnYXRpb25TdGFja0RlcHRoID0g
ZGVmYXVsdERnZ3JlZ2F0aW9uU3RhY2tEZXB0aCk7CisgICAgCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFRyYWNrZWRJRCByZWNvcmRBbGxvY2F0aW9uKHNpemVfdCwgc2l6ZV90IGNhcGFjaXR5KTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWNvcmRTaXplQW5kQ2FwYWNpdHkoVHJhY2tl
ZElELCBzaXplX3QsIHNpemVfdCBjYXBhY2l0eSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgcmVjb3JkRnJlZShUcmFja2VkSUQpOworICAgIAorICAgIC8vIFJldHVybiBhIHZlY3RvciBv
ZiBwZXIgY2FsbHNpdGUgZGF0YTsgc2l6ZSBhbmQgY2FwYWNpdHkgYXJlIHN1bW1lZCBmb3IgYWxs
IGFsbG9jYXRpb25zIHdpdGggYSBnaXZlbiBjYWxsIHNpdGUuCisgICAgLy8gVGhlIHBhc3NlZCBm
dW5jdGlvbiBhbGxvd3MgdGhlIGNhbGxlciB0byBkbyBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgcGVy
IGFsbG9jYXRpb24uCisgICAgc3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YT4gYWdn
cmVnYXRlQnlDYWxsU2l0ZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoVHJhY2tlZElELCBBbGxv
Y2F0aW9uQ2FsbFNpdGVEYXRhJik+Jik7CisKK3ByaXZhdGU6CisgICAgLy8gVXNlIGEgcGltcGwg
dG8gYXZvaWQgY2lyY3VsYXIgaW5jbHVkZXMgYmV0d2VlbiBvdXIgaGVhZGVyIGFuZCB0aGUgY29u
dGFpbmVyIGNsYXNzIGhlYWRlcnMuCisgICAgc3RydWN0IENvbnRhaW5lckNhcGFjaXR5VHJhY2tl
ckltcGw7CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lckNhcGFjaXR5VHJhY2tlckltcGw+
IG1faW1wbDsKKyAgICBzdGQ6OnJlY3Vyc2l2ZV9tdXRleCBtX211dGV4OworICAgIFRyYWNrZWRJ
RCBtX25leHRJRCB7IDAgfTsKKyAgICBjb25zdCBzaXplX3QgbV9hZ2dyZWdhdGlvblN0YWNrRGVw
dGg7CisgICAgYm9vbCogbV9hdm9pZFJlZW50cmFuY3kgeyBudWxscHRyIH07Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDb250YWluZXJDYXBhY2l0eVRyYWNrZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuY3BwIGIvU291cmNlL1dURi93dGYv
SGFzaFRhYmxlLmNwcAppbmRleCBhMDI1OTA0ZmU2NzlhYTczMjdiMTkyODUxZGVlYmUyYzllNDQz
OWQxLi4wM2Q4YWRjNWM3Y2M4OWY1MTc4MmZkYTkwMTBhMmQwZWI1MTNkYWE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hU
YWJsZS5jcHAKQEAgLTIyLDYgKzIyLDE2IEBACiAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KIAorI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorI2luY2x1ZGUgPHd0Zi9Db250
YWluZXJDYXBhY2l0eVRyYWNrZXIuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUg
PG5vdGlmeS5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja1Nob3QuaD4KKyNlbmRpZgorCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdURiB7CiAKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJ
RVIoSGFzaFRhYmxlKTsKQEAgLTY0LDYgKzc0LDc1IEBAIHZvaWQgSGFzaFRhYmxlU3RhdHM6OmR1
bXBTdGF0cygpCiAgICAgZGF0YUxvZ0YoIiVkIHJlaW5zZXJ0c1xuIiwgbnVtUmVpbnNlcnRzLmxv
YWQoKSk7CiB9CiAKKyNlbmRpZiAvLyBEVU1QX0hBU0hUQUJMRV9TVEFUUworCisjaWYgVFJBQ0tf
SEFTSFRBQkxFX0NBUEFDSVRZCisKKyNpZiBQTEFURk9STShDT0NPQSkKK3N0YXRpYyB2b2lkIGR1
bXBXYXN0ZWRIYXNoVGFibGVDYXBhY2l0eSgpCit7CisgICAgYXV0byBjYWxsU2l0ZURhdGEgPSBo
YXNoVGFibGVUcmFja2VyKCkuYWdncmVnYXRlQnlDYWxsU2l0ZShbXSAoVHJhY2tlZElELCBBbGxv
Y2F0aW9uQ2FsbFNpdGVEYXRhJikgeworICAgIH0pOworCisgICAgLy8gTWFrZSBhIHZlY3RvciBv
ZiByYXcgcG9pbnRlcnMgc28gd2UgY2FuIHNvcnQgdGhlbS4KKyAgICBzdGQ6OnZlY3RvcjxBbGxv
Y2F0aW9uQ2FsbFNpdGVEYXRhKj4gY2FsbFNpdGVQdHJzOworICAgIGZvciAoY29uc3QgYXV0byYg
c2l0ZURhdGEgOiBjYWxsU2l0ZURhdGEpIHsKKyAgICAgICAgaWYgKCFzaXRlRGF0YS5jYXBhY2l0
eSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYWxsU2l0ZVB0cnMucHVzaF9iYWNr
KGNvbnN0X2Nhc3Q8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSo+KCZzaXRlRGF0YSkpOworICAgIH0K
KworICAgIC8vIFNvcnQgYnkgcmV2ZXJzZSB3YXN0YWdlLgorICAgIHN0ZDo6c29ydChjYWxsU2l0
ZVB0cnMuYmVnaW4oKSwgY2FsbFNpdGVQdHJzLmVuZCgpLCBbXSAoY29uc3QgQWxsb2NhdGlvbkNh
bGxTaXRlRGF0YSogYSwgY29uc3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogYikgeworICAgICAg
ICBzaXplX3QgYVdhc3RhZ2UgPSBhLT5jYXBhY2l0eSAtIGEtPnVzZWRTaXplOworICAgICAgICBz
aXplX3QgYldhc3RhZ2UgPSBiLT5jYXBhY2l0eSAtIGItPnVzZWRTaXplOworICAgICAgICByZXR1
cm4gYVdhc3RhZ2UgPiBiV2FzdGFnZTsKKyAgICB9KTsKKworICAgIGNvbnN0ZXhwciBzaXplX3Qg
bWluV2FzdGVkQnl0ZUNvdW50ID0gMTAyNDsKKworICAgIFdURkxvZ0Fsd2F5cygiJWQgJWx1IGNh
bGwgc2l0ZXMgY3JlYXRlZCBIYXNoVGFibGVzICh2aWEgSGFzaE1hcCBvciBIYXNoU2V0KS4gU2hv
d2luZyBzaXRlcyB3aXRoIGF0IGxlYXN0ICVsdSB3YXN0ZWQgYnl0ZXM6XG4iLCBnZXRwaWQoKSwg
Y2FsbFNpdGVEYXRhLnNpemUoKSwgbWluV2FzdGVkQnl0ZUNvdW50KTsKKworICAgIGZvciAoYXV0
byBzaXRlRGF0YSA6IGNhbGxTaXRlUHRycykgeworICAgICAgICBhdXRvIHdhc3RlZEJ5dGVzID0g
c2l0ZURhdGEtPmNhcGFjaXR5IC0gc2l0ZURhdGEtPnVzZWRTaXplOworICAgICAgICBpZiAod2Fz
dGVkQnl0ZXMgPCBtaW5XYXN0ZWRCeXRlQ291bnQpCisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBXVEZMb2dBbHdheXMoIldhc3RlZCBjYXBhY2l0eTogJWx1IGJ5dGVzICh1c2VkICVsdSBv
ZiAlbHUgYnl0ZXMsIHV0aWxpemF0aW9uOiAlLjJmJSUpIC0gJWx1IGFsbG9jYXRpb25zXG4iLAor
ICAgICAgICAgICAgd2FzdGVkQnl0ZXMsCisgICAgICAgICAgICBzaXRlRGF0YS0+dXNlZFNpemUs
IHNpdGVEYXRhLT5jYXBhY2l0eSwgMTAwLjAgKiBzaXRlRGF0YS0+dXNlZFNpemUgLyBzaXRlRGF0
YS0+Y2FwYWNpdHksCisgICAgICAgICAgICBzaXRlRGF0YS0+Y291bnQpOworICAgICAgICBjb25z
dCBzaXplX3QgZnJhbWVzVG9Ta2lwID0gMzsKKyAgICAgICAgV1RGUHJpbnRCYWNrdHJhY2Uoc2l0
ZURhdGEtPnN0YWNrKCkuYXJyYXkoKSArIGZyYW1lc1RvU2tpcCwgc2l0ZURhdGEtPnN0YWNrKCku
c2l6ZSgpIC0gZnJhbWVzVG9Ta2lwKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJcbiIpOworICAg
IH0KK30KKyNlbmRpZgorCitDb250YWluZXJDYXBhY2l0eVRyYWNrZXImIGhhc2hUYWJsZVRyYWNr
ZXIoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBp
bml0aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgW10gewor
ICAgICAgICBpbnQgdG9rZW47CisgICAgICAgIG5vdGlmeV9yZWdpc3Rlcl9kaXNwYXRjaCgiY29t
LmFwcGxlLldlYktpdC5kdW1wSGFzaFRhYmxlQ2FwYWNpdHkiLCAmdG9rZW4sIGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIF4oaW50KSB7CisKKyAgICAgICAgICAgIGludCBkZWxheVNlY29uZHMg
PSAyICogKGdldHBpZCgpICUgNSk7CisgICAgICAgICAgICBpbnQ2NF90IGRlZmVycmVkV2FpdFRp
bWUgPSBkZWxheVNlY29uZHMgKiBOU0VDX1BFUl9TRUM7CisgICAgICAgICAgICBkaXNwYXRjaF90
aW1lX3Qgd2hlbiA9IGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIGRlZmVycmVkV2Fp
dFRpbWUpOworCisgICAgICAgICAgICBkaXNwYXRjaF9hZnRlcih3aGVuLCBkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeeworICAgICAgICAgICAgICAgIGR1bXBXYXN0ZWRIYXNoVGFibGVDYXBh
Y2l0eSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgfSk7CisgICAgfSk7CiAjZW5kaWYK
IAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXVEY6OkNvbnRhaW5lckNhcGFjaXR5VHJhY2tl
cj4gdHJhY2tlcjsKKyAgICByZXR1cm4gdHJhY2tlcjsKK30KKworI2VuZGlmIC8vIFRSQUNLX0hB
U0hUQUJMRV9DQVBBQ0lUWQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKaW5kZXgg
YjM4MmI4NWQ0YjMyYTFmMzljMTFjNGVhMmZmYzZhZTMwMDEwMmMyZS4uYzc3NmMzOGY1Mjg4OWY2
NGYxYmRiYTkwNzBiZjRjNzQ2NmYzNWVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFz
aFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTUwLDggKzUwLDIw
IEBACiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNlbmRpZgogCisvLyBFbmFibGUgVFJBQ0tf
SEFTSFRBQkxFX0NBUEFDSVRZIHRvIHRyYWNrIGNhbGwgc2l0ZXMgdGhhdCB3YXN0ZSBIYXNoVGFi
bGUgY2FwYWNpdHkuIE9uIENvY29hIHBsYXRmb3JtcywgdGhlIGRhdGEgY2FuIGJlIGR1bXBlZAor
Ly8gYnkgcnVubmluZyAibm90aWZ5dXRpbCAtcCBjb20uYXBwbGUuV2ViS2l0LmR1bXBIYXNoVGFi
bGVDYXBhY2l0eSIuCisjZGVmaW5lIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWSAxCisKKyNpZiBU
UkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyNpbmNsdWRlIDx3dGYvQ29udGFpbmVyQ2FwYWNpdHlU
cmFja2VyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKKyNpZiBUUkFDS19IQVNIVEFC
TEVfQ0FQQUNJVFkKK1dURl9FWFBPUlRfUFJJVkFURSBDb250YWluZXJDYXBhY2l0eVRyYWNrZXIm
IGhhc2hUYWJsZVRyYWNrZXIoKTsKKyNlbmRpZgorCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hF
QVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogCiAvLyBFbmFibGVzIGludGVybmFsIFdURiBjb25z
aXN0ZW5jeSBjaGVja3MgdGhhdCBhcmUgaW52b2tlZCBhdXRvbWF0aWNhbGx5LiBOb24tV1RGIGNh
bGxlcnMgY2FuIGNhbGwgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgZXZlbiBpZiBpbnRlcm5hbCBj
aGVja3MgYXJlIGRpc2FibGVkLgpAQCAtNDM2LDYgKzQ0OCwxMSBAQCBERUNMQVJFX0FMTE9DQVRP
Ul9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogI2lmIENIRUNLX0hBU0hUQUJMRV9V
U0VfQUZURVJfREVTVFJVQ1RJT04KICAgICAgICAgICAgIG1fdGFibGUgPSAoVmFsdWVUeXBlKiko
dWludHB0cl90KTB4YmJhZGJlZWY7CiAjZW5kaWYKKworI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBB
Q0lUWQorICAgICAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZEZyZWUobV90cmFja2Vk
SUQpOworICAgICAgICAgICAgbV90cmFja2VkSUQgPSAwOworI2VuZGlmCiAgICAgICAgIH0KIAog
ICAgICAgICBIYXNoVGFibGUoY29uc3QgSGFzaFRhYmxlJik7CkBAIC00ODQsOCArNTAxLDE1IEBA
IERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAg
ICAgICAgICBzZXRUYWJsZVNpemVNYXNrKG5ld1RhYmxlU2l6ZSAtIDEpOwogICAgICAgICAgICAg
c2V0RGVsZXRlZENvdW50KDApOwogICAgICAgICAgICAgc2V0S2V5Q291bnQoMCk7CisKKyNpZiBU
UkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5y
ZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5
SW5CeXRlcygpKTsKKyNlbmRpZgogICAgICAgICB9CiAKKyAgICAgICAgc2l6ZV90IHNpemVJbkJ5
dGVzKCkgY29uc3Q7CisgICAgICAgIHNpemVfdCBjYXBhY2l0eUluQnl0ZXMoKSBjb25zdDsKKwog
ICAgICAgICBBZGRSZXN1bHQgYWRkKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIGFk
ZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpLCB2YWx1
ZSk7IH0KICAgICAgICAgQWRkUmVzdWx0IGFkZChWYWx1ZVR5cGUmJiB2YWx1ZSkgeyByZXR1cm4g
YWRkPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4dHJhY3Rvcjo6ZXh0cmFjdCh2YWx1ZSksIFdU
Rk1vdmUodmFsdWUpKTsgfQogCkBAIC02MTMsNiArNjM3LDEwIEBAIERFQ0xBUkVfQUxMT0NBVE9S
X1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCog
bV90YWJsZUZvckxMREI7CiAgICAgICAgIH07CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJ
VFkKKyAgICAgICAgVHJhY2tlZElEIG1fdHJhY2tlZElEIHsgMCB9OworI2VuZGlmCisKICNpZiBD
SEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgcHVibGljOgogICAgICAgICAvLyBBbGwgYWNj
ZXNzIHRvIG1faXRlcmF0b3JzIHNob3VsZCBiZSBndWFyZGVkIHdpdGggbV9tdXRleC4KQEAgLTYz
OCw2ICs2NjYsOSBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNo
VGFibGUpOwogICAgICAgICAsIG1fc3RhdHMobWFrZVVuaXF1ZTxTdGF0cz4oKSkKICNlbmRpZgog
ICAgIHsKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgbV90cmFja2VkSUQg
PSBoYXNoVGFibGVUcmFja2VyKCkucmVjb3JkQWxsb2NhdGlvbigwLCAwKTsKKyNlbmRpZgogICAg
IH0KIAogI2lmICFBU1NFUlRfRU5BQkxFRApAQCAtNjc3LDcgKzcwOCw3IEBAIERFQ0xBUkVfQUxM
T0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+CiAgICAgQUxXQVlTX0lOTElORSBhdXRv
IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywg
S2V5VHJhaXRzPjo6aW5saW5lTG9va3VwKGNvbnN0IFQmIGtleSkgLT4gVmFsdWVUeXBlKgogICAg
IHsKLSAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVmFsdWUpIDw9IDE1MCwgIllvdXIgSGFz
aFRhYmxlIHR5cGVzIGFyZSB0b28gYmlnIHRvIGVmZmljaWVudGx5IG1vdmUgd2hlbiByZWhhc2hp
bmcuICBDb25zaWRlciB1c2luZyBVbmlxdWVSZWYgaW5zdGVhZCIpOworICAgICAgICBzdGF0aWNf
YXNzZXJ0KHNpemVvZihWYWx1ZSkgPD0gMjAwLCAiWW91ciBIYXNoVGFibGUgdHlwZXMgYXJlIHRv
byBiaWcgdG8gZWZmaWNpZW50bHkgbW92ZSB3aGVuIHJlaGFzaGluZy4gIENvbnNpZGVyIHVzaW5n
IFVuaXF1ZVJlZiBpbnN0ZWFkIik7CiAgICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xhdG9yPihr
ZXkpOwogCiAgICAgICAgIFZhbHVlVHlwZSogdGFibGUgPSBtX3RhYmxlOwpAQCAtOTUzLDcgKzk4
NCwxMSBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUp
OwogICAgICAgICAgICAgZW50cnkgPSBleHBhbmQoZW50cnkpOwogCiAgICAgICAgIGludGVybmFs
Q2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7Ci0gICAgICAgIAorCisjaWYgVFJBQ0tfSEFTSFRBQkxF
X0NBUEFDSVRZCisgICAgICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNp
dHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRp
ZgorCiAgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5
KSwgdHJ1ZSk7CiAgICAgfQogCkBAIC05OTIsNiArMTAyNywxMCBAQCBERUNMQVJFX0FMTE9DQVRP
Ul9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogCiAgICAgICAgIGludGVybmFsQ2hl
Y2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAg
ICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJ
RCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCisKICAgICAgICAg
cmV0dXJuIEFkZFJlc3VsdChtYWtlS25vd25Hb29kSXRlcmF0b3IoZW50cnkpLCB0cnVlKTsKICAg
ICB9CiAKQEAgLTEwMTIsNiArMTA1MSwxMCBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBf
SURFTlRJRklFUihIYXNoVGFibGUpOwogICAgICAgICBuZXdFbnRyeS0+flZhbHVlKCk7CiAgICAg
ICAgIG5ldyAoTm90TnVsbCwgbmV3RW50cnkpIFZhbHVlVHlwZShXVEZNb3ZlKGVudHJ5KSk7CiAK
KyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigp
LnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNp
dHlJbkJ5dGVzKCkpOworI2VuZGlmCisKICAgICAgICAgcmV0dXJuIG5ld0VudHJ5OwogICAgIH0K
IApAQCAtMTA4NSw2ICsxMTI4LDEwIEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVO
VElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgIGlmIChzaG91bGRTaHJpbmsoKSkKICAgICAgICAg
ICAgIHNocmluaygpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhh
c2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJ
bkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIGludGVybmFs
Q2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgfQogCkBAIC0xMTQ5LDcgKzExOTYsMTEgQEAg
REVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKIAogICAg
ICAgICBpZiAoc2hvdWxkU2hyaW5rKCkpCiAgICAgICAgICAgICBzaHJpbmtUb0Jlc3RTaXplKCk7
Ci0gICAgICAgIAorCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAgICAgIGhhc2hU
YWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5
dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIGludGVybmFsQ2hl
Y2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybiByZW1vdmVkQnVja2V0Q291bnQ7
CiAgICAgfQpAQCAtMTMxMiw2ICsxMzYzLDEwIEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVB
UF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgIGlmIChvbGRUYWJsZSkKICAgICAgICAg
ICAgIEhhc2hUYWJsZU1hbGxvYzo6ZnJlZShyZWludGVycHJldF9jYXN0PGNoYXIqPihvbGRUYWJs
ZSkgLSBtZXRhZGF0YVNpemUpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxFX0NBUEFDSVRZCisgICAg
ICAgIGhhc2hUYWJsZVRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQs
IHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgICAgIGlu
dGVybmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybiBuZXdFbnRyeTsK
ICAgICB9CkBAIC0xMzM3LDYgKzEzOTIsMTAgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQ
X0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICAgICAgLCBtX3N0YXRzKG1ha2VVbmlxdWU8U3Rh
dHM+KCpvdGhlci5tX3N0YXRzKSkKICNlbmRpZgogICAgIHsKKyNpZiBUUkFDS19IQVNIVEFCTEVf
Q0FQQUNJVFkKKyAgICAgICAgbV90cmFja2VkSUQgPSBoYXNoVGFibGVUcmFja2VyKCkucmVjb3Jk
QWxsb2NhdGlvbihzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKKwog
ICAgICAgICB1bnNpZ25lZCBvdGhlcktleUNvdW50ID0gb3RoZXIuc2l6ZSgpOwogICAgICAgICBp
ZiAoIW90aGVyS2V5Q291bnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzUwLDYgKzE0MDks
MTAgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsK
IAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG90aGVyVmFsdWUgOiBvdGhlcikKICAgICAgICAg
ICAgIGFkZFVuaXF1ZUZvckluaXRpYWxpemF0aW9uPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KEV4
dHJhY3Rvcjo6ZXh0cmFjdChvdGhlclZhbHVlKSwgb3RoZXJWYWx1ZSk7CisKKyNpZiBUUkFDS19I
QVNIVEFCTEVfQ0FQQUNJVFkKKyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVB
bmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkp
OworI2VuZGlmCiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KQEAgLTEzNjMsNiArMTQyNiwxNCBAQCBERUNM
QVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogI2lmIERVTVBf
SEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQogICAgICAgICBtX3N0YXRzLnN3YXAob3RoZXIubV9z
dGF0cyk7CiAjZW5kaWYKKworI2lmIFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWQorICAgICAgICBz
dGQ6OnN3YXAobV90cmFja2VkSUQsIG90aGVyLm1fdHJhY2tlZElEKTsKKworICAgICAgICAvLyBO
b3Qgc3VyZSBpZiB0aGlzIGlzIG5lY2Vzc2FyeS4gTm90aGluZyB3aWxsIGhhdmUgY2hhbmdlZC4K
KyAgICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNr
ZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworICAgICAgICBoYXNoVGFi
bGVUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG90aGVyLm1fdHJhY2tlZElELCBvdGhl
ci5zaXplSW5CeXRlcygpLCBvdGhlci5jYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgpAQCAtMTM4NCwxMCArMTQ1NSwxOSBAQCBERUNMQVJFX0FMTE9DQVRPUl9X
SVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogCiAgICAgICAgIG1fdGFibGUgPSBzdGQ6
OmV4Y2hhbmdlKG90aGVyLm1fdGFibGUsIG51bGxwdHIpOwogCisjaWYgVFJBQ0tfSEFTSFRBQkxF
X0NBUEFDSVRZCisgICAgICAgIHN0ZDo6c3dhcChtX3RyYWNrZWRJRCwgb3RoZXIubV90cmFja2Vk
SUQpOworI2VuZGlmCisKICNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKICAgICAg
ICAgbV9zdGF0cyA9IFdURk1vdmUob3RoZXIubV9zdGF0cyk7CiAgICAgICAgIG90aGVyLm1fc3Rh
dHMgPSBudWxscHRyOwogI2VuZGlmCisKKyNpZiBUUkFDS19IQVNIVEFCTEVfQ0FQQUNJVFkKKyAg
ICAgICAgaGFzaFRhYmxlVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJ
RCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworICAgICAgICBoYXNoVGFibGVU
cmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG90aGVyLm1fdHJhY2tlZElELCBvdGhlci5z
aXplSW5CeXRlcygpLCBvdGhlci5jYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzPgpAQCAtMTM5OCw2ICsxNDc4LDE4IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhf
SEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgorICAgIHNpemVfdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OnNpemVJbkJ5dGVzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBzaXplKCkgKiBzaXplb2YoVmFsdWVUeXBlKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBF
eHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5h
bWUgS2V5VHJhaXRzPgorICAgIHNpemVfdCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNhcGFjaXR5SW5CeXRlcygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gY2FwYWNpdHkoKSAqIHNpemVvZihWYWx1ZVR5cGUp
OworICAgIH0KKwogI2lmIEFTU0VSVF9FTkFCTEVECiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9TaXplTGltaXRz
LmNwcAppbmRleCAwYmViYmMyNjdjNWViNGQ4MTk4YTU0NmZjMjQ0YWJkZGNmZjlhY2RhLi42YjE5
OGViMjk2YjFmYzEyYzEwYWVkNzUxMmY1MTc4M2NhYzhlODJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9TaXplTGltaXRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TaXplTGltaXRzLmNw
cApAQCAtODMsOSArODMsMTIgQEAgcHVibGljOgogICAgIHR5cGVuYW1lIHN0ZDo6YWxpZ25lZF9z
dG9yYWdlPHNpemVvZihUKSwgc3RkOjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlPjo6dHlwZSBpbmxp
bmVCdWZmZXJbaW5saW5lQ2FwYWNpdHldOwogfTsKIAorI2lmICFUUkFDS19WRUNUT1JfQ0FQQUNJ
VFkKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQ+KSA9PSBzaXplb2YoU2FtZVNpemVB
c1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxpbnQ+KSwgIlZlY3RvciBzaG91bGQgc3RheSBzbWFs
bCEiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQsIDE+KSA9PSBzaXplb2YoU2Ft
ZVNpemVBc1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxpbnQsIDE+KSwgIlZlY3RvciBzaG91bGQg
c3RheSBzbWFsbCEiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQsIDI+KSA9PSBz
aXplb2YoU2FtZVNpemVBc1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxpbnQsIDI+KSwgIlZlY3Rv
ciBzaG91bGQgc3RheSBzbWFsbCEiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZlY3RvcjxpbnQs
IDM+KSA9PSBzaXplb2YoU2FtZVNpemVBc1ZlY3RvcldpdGhJbmxpbmVDYXBhY2l0eTxpbnQsIDM+
KSwgIlZlY3RvciBzaG91bGQgc3RheSBzbWFsbCEiKTsKKyNlbmRpZiAvLyAhVFJBQ0tfVkVDVE9S
X0NBUEFDSVRZCisKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9y
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5jcHAKaW5kZXggNmEyYjQ3Y2ZjYjcyZTZiM2I5
YzViZGI1NzgxMTE2MGNmMzdkZDlmYS4uMzk5YjRjZWMyOTlhZmY2N2JhNDMyOGU3MDRjNmI2ZjQw
NWIxYzk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3IuY3BwCkBAIC0yOCw4ICsyOCw4NCBAQAogCiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyNpbmNsdWRl
IDx3dGYvQ29udGFpbmVyQ2FwYWNpdHlUcmFja2VyLmg+CisjaWYgUExBVEZPUk0oQ09DT0EpCisj
aW5jbHVkZSA8bm90aWZ5Lmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrU2hvdC5oPgorI2VuZGlmCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lE
RU5USUZJRVIoVmVjdG9yKTsKIAorI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorCisjaWYgUExB
VEZPUk0oQ09DT0EpCitzdGF0aWMgdm9pZCBkdW1wV2FzdGVkVmVjdG9yQ2FwYWNpdHkoKQorewor
ICAgIGF1dG8gY2FsbFNpdGVEYXRhID0gdmVjdG9yVHJhY2tlcigpLmFnZ3JlZ2F0ZUJ5Q2FsbFNp
dGUoW10gKFRyYWNrZWRJRCwgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSYpIHsKKyAgICB9KTsKKwor
ICAgIC8vIE1ha2UgYSB2ZWN0b3Igb2YgcmF3IHBvaW50ZXJzIHNvIHdlIGNhbiBzb3J0IHRoZW0u
CisgICAgc3RkOjp2ZWN0b3I8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSo+IGNhbGxTaXRlUHRyczsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIHNpdGVEYXRhIDogY2FsbFNpdGVEYXRhKSB7CisgICAgICAg
IGlmICghc2l0ZURhdGEuY2FwYWNpdHkgfHwgKHNpdGVEYXRhLmNhcGFjaXR5ID09IHNpdGVEYXRh
LnVzZWRTaXplKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYWxsU2l0ZVB0cnMu
cHVzaF9iYWNrKGNvbnN0X2Nhc3Q8QWxsb2NhdGlvbkNhbGxTaXRlRGF0YSo+KCZzaXRlRGF0YSkp
OworICAgIH0KKworICAgIC8vIFNvcnQgYnkgcmV2ZXJzZSB3YXN0YWdlLgorICAgIHN0ZDo6c29y
dChjYWxsU2l0ZVB0cnMuYmVnaW4oKSwgY2FsbFNpdGVQdHJzLmVuZCgpLCBbXSAoY29uc3QgQWxs
b2NhdGlvbkNhbGxTaXRlRGF0YSogYSwgY29uc3QgQWxsb2NhdGlvbkNhbGxTaXRlRGF0YSogYikg
eworICAgICAgICBzaXplX3QgYVdhc3RhZ2UgPSBhLT5jYXBhY2l0eSAtIGEtPnVzZWRTaXplOwor
ICAgICAgICBzaXplX3QgYldhc3RhZ2UgPSBiLT5jYXBhY2l0eSAtIGItPnVzZWRTaXplOworICAg
ICAgICByZXR1cm4gYVdhc3RhZ2UgPiBiV2FzdGFnZTsKKyAgICB9KTsKKworICAgIGNvbnN0ZXhw
ciBzaXplX3QgbWluV2FzdGVkQnl0ZUNvdW50ID0gMTAyNDsKKyAgICBXVEZMb2dBbHdheXMoIiVk
ICVsdSBjYWxsIHNpdGVzIGNyZWF0ZWQgdmVjdG9ycy4gU2hvd2luZyBzaXRlcyB3aXRoIG1vcmUg
dGhhbiAlbHUgb2Ygd2FzdGFnZTpcbiIsIGdldHBpZCgpLCBjYWxsU2l0ZURhdGEuc2l6ZSgpLCBt
aW5XYXN0ZWRCeXRlQ291bnQpOworCisgICAgZm9yIChhdXRvIHNpdGVEYXRhIDogY2FsbFNpdGVQ
dHJzKSB7CisgICAgICAgIGF1dG8gd2FzdGVkQnl0ZXMgPSBzaXRlRGF0YS0+Y2FwYWNpdHkgLSBz
aXRlRGF0YS0+dXNlZFNpemU7CisgICAgICAgIGlmICh3YXN0ZWRCeXRlcyA8IG1pbldhc3RlZEJ5
dGVDb3VudCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIFdURkxvZ0Fsd2F5cygiV2Fz
dGVkIGNhcGFjaXR5OiAlbHUgYnl0ZXMgKHVzZWQgJWx1IG9mICVsdSBieXRlcywgdXRpbGl6YXRp
b246ICUuMmYlJSkgLSAlbHUgYWxsb2NhdGlvbnNcbiIsCisgICAgICAgICAgICB3YXN0ZWRCeXRl
cywKKyAgICAgICAgICAgIHNpdGVEYXRhLT51c2VkU2l6ZSwgc2l0ZURhdGEtPmNhcGFjaXR5LCAx
MDAuMCAqIHNpdGVEYXRhLT51c2VkU2l6ZSAvIHNpdGVEYXRhLT5jYXBhY2l0eSwKKyAgICAgICAg
ICAgIHNpdGVEYXRhLT5jb3VudCk7CisgICAgICAgIGNvbnN0IHNpemVfdCBmcmFtZXNUb1NraXAg
PSAzOworICAgICAgICBXVEZQcmludEJhY2t0cmFjZShzaXRlRGF0YS0+c3RhY2soKS5hcnJheSgp
ICsgZnJhbWVzVG9Ta2lwLCBzaXRlRGF0YS0+c3RhY2soKS5zaXplKCkgLSBmcmFtZXNUb1NraXAp
OworICAgICAgICBXVEZMb2dBbHdheXMoIlxuIik7CisgICAgfQorfQorI2VuZGlmCisKK0NvbnRh
aW5lckNhcGFjaXR5VHJhY2tlciYgdmVjdG9yVHJhY2tlcigpCit7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOworICAgIHN0ZDo6
Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlLCBbXSB7CisgICAgICAgIGludCB0b2tlbjsKKyAgICAg
ICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKCJjb20uYXBwbGUuV2ViS2l0LmR1bXBWZWN0b3JD
YXBhY2l0eSIsICZ0b2tlbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXihpbnQpIHsKKwor
ICAgICAgICAgICAgaW50IGRlbGF5U2Vjb25kcyA9IDIgKiAoZ2V0cGlkKCkgJSA1KTsKKyAgICAg
ICAgICAgIGludDY0X3QgZGVmZXJyZWRXYWl0VGltZSA9IGRlbGF5U2Vjb25kcyAqIE5TRUNfUEVS
X1NFQzsKKyAgICAgICAgICAgIGRpc3BhdGNoX3RpbWVfdCB3aGVuID0gZGlzcGF0Y2hfdGltZShE
SVNQQVRDSF9USU1FX05PVywgZGVmZXJyZWRXYWl0VGltZSk7CisKKyAgICAgICAgICAgIGRpc3Bh
dGNoX2FmdGVyKHdoZW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAg
ICAgICAgZHVtcFdhc3RlZFZlY3RvckNhcGFjaXR5KCk7CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICB9KTsKKyAgICB9KTsKKyNlbmRpZgorCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdU
Rjo6Q29udGFpbmVyQ2FwYWNpdHlUcmFja2VyPiB0cmFja2VyOworICAgIHJldHVybiB0cmFja2Vy
OworfQorCisjZW5kaWYgLy8gVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisKIH0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0
Zi9WZWN0b3IuaAppbmRleCA1MWIzZjA4OWJmZTkyNTkyN2E0Y2E2MzAwOWM3ZjMzOTI2MTU1NmYx
Li43NjFjOWJhNWYxZTRiOWNhMGQ0NjNkMjAwMDhmYzIzYThmYzUxNmFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAt
MzksNiArMzksMTQgQEAKICNpbmNsdWRlIDx3dGYvVmFsdWVDaGVjay5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3JUcmFpdHMuaD4KIAorLy8gRW5hYmxlIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWSB0byB0
cmFjayBjYWxsIHNpdGVzIHRoYXQgd2FzdGUgdmVjdG9yIGNhcGFjaXR5LiBPbiBDb2NvYSBwbGF0
Zm9ybXMsIHRoZSBkYXRhIGNhbiBiZSBkdW1wZWQKKy8vIGJ5IHJ1bm5pbmcgIm5vdGlmeXV0aWwg
LXAgY29tLmFwcGxlLldlYktpdC5kdW1wVmVjdG9yQ2FwYWNpdHkiLgorI2RlZmluZSBUUkFDS19W
RUNUT1JfQ0FQQUNJVFkgMQorCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisjaW5jbHVkZSA8
d3RmL0NvbnRhaW5lckNhcGFjaXR5VHJhY2tlci5oPgorI2VuZGlmCisKICNpZiBBU0FOX0VOQUJM
RUQKIGV4dGVybiAiQyIgdm9pZCBfX3Nhbml0aXplcl9hbm5vdGF0ZV9jb250aWd1b3VzX2NvbnRh
aW5lcihjb25zdCB2b2lkKiBiZWdpbiwgY29uc3Qgdm9pZCogZW5kLCBjb25zdCB2b2lkKiBvbGRf
bWlkLCBjb25zdCB2b2lkKiBuZXdfbWlkKTsKICNlbmRpZgpAQCAtNDksNiArNTcsMTAgQEAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiBuYW1lc3BhY2UgV1RGIHsKIAorI2lmIFRSQUNL
X1ZFQ1RPUl9DQVBBQ0lUWQorV1RGX0VYUE9SVF9QUklWQVRFIENvbnRhaW5lckNhcGFjaXR5VHJh
Y2tlciYgdmVjdG9yVHJhY2tlcigpOworI2VuZGlmCisKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhf
SEVBUF9JREVOVElGSUVSKFZlY3Rvcik7CiAKIHRlbXBsYXRlIDxib29sIG5lZWRzRGVzdHJ1Y3Rp
b24sIHR5cGVuYW1lIFQ+CkBAIC0zNjAsNiArMzcyLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
cHRyZGlmZl90IGJ1ZmZlck1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihW
ZWN0b3JCdWZmZXJCYXNlLCBtX2J1ZmZlcik7IH0KICAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25z
dCB7IHJldHVybiBtX2NhcGFjaXR5OyB9CiAKKyAgICBzaXplX3QgY2FwYWNpdHlJbkJ5dGVzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhcGFjaXR5ICogc2l6ZW9mKFQpOworICAg
IH0KKworICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9zaXplICogc2l6ZW9mKFQpOworICAgIH0KKwogICAgIE1hbGxvY1B0cjxULCBNYWxsb2M+
IHJlbGVhc2VCdWZmZXIoKQogICAgIHsKICAgICAgICAgVCogYnVmZmVyID0gbV9idWZmZXI7CkBA
IC0zODYsMTEgKzQwOCwxOCBAQCBwcm90ZWN0ZWQ6CiAgICAgflZlY3RvckJ1ZmZlckJhc2UoKQog
ICAgIHsKICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gZmluZCBhIHdheSB0
byBBU1NFUlQgdGhhdCBtX2J1ZmZlciBoYXNuJ3QgbGVha2VkIGhlcmUuCisjaWYgVFJBQ0tfVkVD
VE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRGcmVlKG1fdHJhY2tl
ZElEKTsKKyAgICAgICAgbV90cmFja2VkSUQgPSAwOworI2VuZGlmCiAgICAgfQogCiAgICAgVCog
bV9idWZmZXI7CiAgICAgdW5zaWduZWQgbV9jYXBhY2l0eTsKICAgICB1bnNpZ25lZCBtX3NpemU7
IC8vIE9ubHkgdXNlZCBieSB0aGUgVmVjdG9yIHN1YmNsYXNzLCBidXQgcGxhY2VkIGhlcmUgdG8g
YXZvaWQgcGFkZGluZyB0aGUgc3RydWN0LgorI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAg
IFRyYWNrZWRJRCBtX3RyYWNrZWRJRCB7IDAgfTsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2MgPSBWZWN0b3JN
YWxsb2M+IGNsYXNzIFZlY3RvckJ1ZmZlcjsKQEAgLTQwMiw2ICs0MzEsOSBAQCBwcml2YXRlOgog
cHVibGljOgogICAgIFZlY3RvckJ1ZmZlcigpCiAgICAgeworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBB
Q0lUWQorICAgICAgICBtX3RyYWNrZWRJRCA9IHZlY3RvclRyYWNrZXIoKS5yZWNvcmRBbGxvY2F0
aW9uKDAsIDApOworI2VuZGlmCiAgICAgfQogCiAgICAgVmVjdG9yQnVmZmVyKHNpemVfdCBjYXBh
Y2l0eSwgc2l6ZV90IHNpemUgPSAwKQpAQCAtNDExLDYgKzQ0MywxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIGFsbG9jYXRpb24gb24gc29tZSBzeXN0ZW1zLgogICAgICAgICBpZiAoY2FwYWNpdHkp
CiAgICAgICAgICAgICBhbGxvY2F0ZUJ1ZmZlcihjYXBhY2l0eSk7CisKKyNpZiBUUkFDS19WRUNU
T1JfQ0FQQUNJVFkKKyAgICAgICAgaWYgKG1fc2l6ZSAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRl
Y2x0eXBlKG1fc2l6ZSk+OjptYXgoKSkKKyAgICAgICAgICAgIG1fdHJhY2tlZElEID0gdmVjdG9y
VHJhY2tlcigpLnJlY29yZEFsbG9jYXRpb24oc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVz
KCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgflZlY3RvckJ1ZmZlcigpCkBAIC00MjIsNiArNDU5
LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3RkOjpzd2FwKG1fYnVmZmVyLCBvdGhlci5t
X2J1ZmZlcik7CiAgICAgICAgIHN0ZDo6c3dhcChtX2NhcGFjaXR5LCBvdGhlci5tX2NhcGFjaXR5
KTsKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgc3RkOjpzd2FwKG1fdHJhY2tl
ZElELCBvdGhlci5tX3RyYWNrZWRJRCk7CisjZW5kaWYKICAgICB9CiAgICAgCiAgICAgdm9pZCBy
ZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQoKSB7IH0KQEAgLTQ0MywxMCArNDgzLDE2IEBAIHB1
YmxpYzoKICAgICB1c2luZyBCYXNlOjpjYXBhY2l0eTsKICAgICB1c2luZyBCYXNlOjpidWZmZXJN
ZW1vcnlPZmZzZXQ7CiAKKyAgICB1c2luZyBCYXNlOjpjYXBhY2l0eUluQnl0ZXM7CisgICAgdXNp
bmcgQmFzZTo6c2l6ZUluQnl0ZXM7CisKICAgICB1c2luZyBCYXNlOjpyZWxlYXNlQnVmZmVyOwog
CiBwcm90ZWN0ZWQ6CiAgICAgdXNpbmcgQmFzZTo6bV9zaXplOworI2lmIFRSQUNLX1ZFQ1RPUl9D
QVBBQ0lUWQorICAgIHVzaW5nIEJhc2U6Om1fdHJhY2tlZElEOworI2VuZGlmCiAKICAgICBWZWN0
b3JCdWZmZXIoVmVjdG9yQnVmZmVyPFQsIDAsIE1hbGxvYz4mJiBvdGhlcikKICAgICB7CkBAIC00
NzgsNiArNTI0LDkgQEAgcHVibGljOgogICAgIFZlY3RvckJ1ZmZlcigpCiAgICAgICAgIDogQmFz
ZShpbmxpbmVCdWZmZXIoKSwgaW5saW5lQ2FwYWNpdHksIDApCiAgICAgeworI2lmIFRSQUNLX1ZF
Q1RPUl9DQVBBQ0lUWQorICAgICAgICBtX3RyYWNrZWRJRCA9IHZlY3RvclRyYWNrZXIoKS5yZWNv
cmRBbGxvY2F0aW9uKHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgog
ICAgIH0KIAogICAgIFZlY3RvckJ1ZmZlcihzaXplX3QgY2FwYWNpdHksIHNpemVfdCBzaXplID0g
MCkKQEAgLTQ4NSw2ICs1MzQsMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKGNhcGFj
aXR5ID4gaW5saW5lQ2FwYWNpdHkpCiAgICAgICAgICAgICBCYXNlOjphbGxvY2F0ZUJ1ZmZlcihj
YXBhY2l0eSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICAgICAgbV90cmFja2Vk
SUQgPSB2ZWN0b3JUcmFja2VyKCkucmVjb3JkQWxsb2NhdGlvbihzaXplSW5CeXRlcygpLCBjYXBh
Y2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICB9CiAKICAgICB+VmVjdG9yQnVmZmVyKCkKQEAg
LTU0NCw2ICs1OTcsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgc3RkOjpzd2FwKG1fYnVmZmVy
LCBvdGhlci5tX2J1ZmZlcik7CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV9jYXBhY2l0eSwgb3Ro
ZXIubV9jYXBhY2l0eSk7CiAgICAgICAgIH0KKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQor
ICAgICAgICBzdGQ6OnN3YXAobV90cmFja2VkSUQsIG90aGVyLm1fdHJhY2tlZElEKTsKKyNlbmRp
ZgogICAgIH0KIAogICAgIHZvaWQgcmVzdG9yZUlubGluZUJ1ZmZlcklmTmVlZGVkKCkKQEAgLTU3
Myw2ICs2MzAsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6YnVmZmVyOwogICAgIHVzaW5n
IEJhc2U6OmNhcGFjaXR5OwogICAgIHVzaW5nIEJhc2U6OmJ1ZmZlck1lbW9yeU9mZnNldDsKKyAg
ICB1c2luZyBCYXNlOjpjYXBhY2l0eUluQnl0ZXM7CisgICAgdXNpbmcgQmFzZTo6c2l6ZUluQnl0
ZXM7CiAKICAgICBNYWxsb2NQdHI8VCwgTWFsbG9jPiByZWxlYXNlQnVmZmVyKCkKICAgICB7CkBA
IC01ODMsNiArNjQyLDkgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdXNpbmcgQmFzZTo6
bV9zaXplOworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHVzaW5nIEJhc2U6Om1fdHJh
Y2tlZElEOworI2VuZGlmCiAKICAgICBWZWN0b3JCdWZmZXIoVmVjdG9yQnVmZmVyJiYgb3RoZXIp
CiAgICAgICAgIDogQmFzZShpbmxpbmVCdWZmZXIoKSwgaW5saW5lQ2FwYWNpdHksIDApCkBAIC03
MzQsNiArNzk2LDkgQEAgcHVibGljOgogICAgICAgICByZXN1bHQubV9zaXplID0gc2l6ZTsKIAog
ICAgICAgICByZXN1bHQudW5jaGVja2VkSW5pdGlhbGl6ZTwwPihzdGQ6OmZvcndhcmQ8SXRlbXM+
KGl0ZW1zKS4uLik7CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRy
YWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkocmVzdWx0Lm1fdHJhY2tlZElELCByZXN1bHQu
c2l6ZUluQnl0ZXMoKSwgcmVzdWx0LmNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApAQCAtNzYzLDYgKzgyOCw3IEBAIHB1YmxpYzoKIAog
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgc2l6ZV90IHNp
emVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX3NpemUpICog
c2l6ZW9mKFQpOyB9CisgICAgc2l6ZV90IGNhcGFjaXR5SW5CeXRlcygpIGNvbnN0IHsgcmV0dXJu
IEJhc2U6OmNhcGFjaXR5SW5CeXRlcygpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBzaXplTWVt
b3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFZlY3RvciwgbV9zaXplKTsgfQog
ICAgIHNpemVfdCBjYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OmNhcGFjaXR5KCk7IH0K
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CkBAIC04OTQsNiAr
OTYwLDExIEBAIHB1YmxpYzoKIAogICAgICAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyht
X3NpemUpOwogICAgICAgICBvdGhlci5hc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVUbyhvdGhlci5t
X3NpemUpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRyYWNr
ZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNh
cGFjaXR5SW5CeXRlcygpKTsKKyAgICAgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRD
YXBhY2l0eShvdGhlci5tX3RyYWNrZWRJRCwgb3RoZXIuc2l6ZUluQnl0ZXMoKSwgb3RoZXIuY2Fw
YWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCByZXZlcnNlKCk7CkBA
IC05NTQsNiArMTAyNSwxMSBAQCBwcml2YXRlOgogICAgIHVzaW5nIEJhc2U6OnJlYWxsb2NhdGVC
dWZmZXI7CiAgICAgdXNpbmcgQmFzZTo6cmVzdG9yZUlubGluZUJ1ZmZlcklmTmVlZGVkOwogICAg
IHVzaW5nIEJhc2U6OnJlbGVhc2VCdWZmZXI7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkK
KyAgICB1c2luZyBCYXNlOjptX3RyYWNrZWRJRDsKKyNlbmRpZgorCiAjaWYgQVNBTl9FTkFCTEVE
CiAgICAgdXNpbmcgQmFzZTo6ZW5kT2ZCdWZmZXI7CiAjZW5kaWYKQEAgLTk2Nyw2ICsxMDQzLDEw
IEBAIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0
eSwgTWFsbG9jPjo6VmVjdG9yKGNvbnN0IFZlCiAKICAgICBpZiAoYmVnaW4oKSkKICAgICAgICAg
VHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJlZ2luKCksIG90aGVyLmVu
ZCgpLCBiZWdpbigpKTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRy
YWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCks
IGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1p
bkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+CkBAIC05NzgsNiArMTA1OCwxMCBAQCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46
OlZlY3Rvcihjb25zdCBWZQogCiAgICAgaWYgKGJlZ2luKCkpCiAgICAgICAgIFR5cGVPcGVyYXRp
b25zOjp1bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpLCBvdGhlci5lbmQoKSwgYmVnaW4o
KSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVj
b3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUlu
Qnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwg
dHlwZW5hbWUgTWFsbG9jPgpAQCAtMTAwMCw2ICsxMDg0LDEwIEBAIFZlY3RvcjxULCBpbmxpbmVD
YXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPiYgVmVjdG9yPFQs
IGlubGluCiAgICAgVHlwZU9wZXJhdGlvbnM6OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJlZ2lu
KCkgKyBzaXplKCksIG90aGVyLmVuZCgpLCBlbmQoKSk7CiAgICAgbV9zaXplID0gb3RoZXIuc2l6
ZSgpOwogCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJl
Y29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJ
bkJ5dGVzKCkpOworI2VuZGlmCisKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTEwMjgsNiAr
MTExNiwxMCBAQCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWlu
Q2FwYWNpdHksIE1hbGxvYz4mIFZlY3RvcjxULCBpbmxpbgogICAgIFR5cGVPcGVyYXRpb25zOjp1
bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpICsgc2l6ZSgpLCBvdGhlci5lbmQoKSwgZW5k
KCkpOwogICAgIG1fc2l6ZSA9IG90aGVyLnNpemUoKTsKIAorI2lmIFRSQUNLX1ZFQ1RPUl9DQVBB
Q0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2Vk
SUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgcmV0
dXJuICp0aGlzOwogfQogCkBAIC0xMDUxLDYgKzExNDMsMTEgQEAgaW5saW5lIFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPiYgVmVj
dG9yPFQKIAogICAgIGFzYW5TZXRJbml0aWFsQnVmZmVyU2l6ZVRvKG1fc2l6ZSk7CiAKKyNpZiBU
UkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENh
cGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7Cisg
ICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShvdGhlci5tX3RyYWNrZWRJ
RCwgb3RoZXIuc2l6ZUluQnl0ZXMoKSwgb3RoZXIuY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlm
CisKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTExMzEsNiArMTIyOCwxMCBAQCB2b2lkIFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFs
bG9jPjo6ZmlsbChjb25zdAogICAgIHN0ZDo6ZmlsbChiZWdpbigpLCBlbmQoKSwgdmFsKTsKICAg
ICBUeXBlT3BlcmF0aW9uczo6dW5pbml0aWFsaXplZEZpbGwoZW5kKCksIGJlZ2luKCkgKyBuZXdT
aXplLCB2YWwpOwogICAgIG1fc2l6ZSA9IG5ld1NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQ
QUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tl
ZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxv
d0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgpAQCAtMTIwMSw2
ICsxMzAyLDEwIEBAIGlubGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6cmVzCiAgICAgfQogICAgIAogICAgIG1f
c2l6ZSA9IHNpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFj
a2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBj
YXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5D
YXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgpAQCAtMTIxNyw2ICsxMzIyLDEwIEBAIHZvaWQgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxs
b2M+OjpzaHJpbmsoc2l6CiAgICAgVHlwZU9wZXJhdGlvbnM6OmRlc3RydWN0KGJlZ2luKCkgKyBz
aXplLCBlbmQoKSk7CiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8oc2l6ZSk7CiAgICAg
bV9zaXplID0gc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRy
YWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCks
IGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1p
bkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+CkBAIC0xMjI5LDYgKzEzMzgsMTAgQEAgdm9pZCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1h
bGxvYz46Omdyb3coc2l6ZV8KICAgICBpZiAoYmVnaW4oKSkKICAgICAgICAgVHlwZU9wZXJhdGlv
bnM6OmluaXRpYWxpemVJZk5vblBPRChlbmQoKSwgYmVnaW4oKSArIHNpemUpOwogICAgIG1fc2l6
ZSA9IHNpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2Vy
KCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBh
Y2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBh
Y2l0eSwgdHlwZW5hbWUgTWFsbG9jPgpAQCAtMTMwMSw2ICsxNDE0LDExIEBAIGJvb2wgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+
OjpyZXNlcnZlQ2FwCiAKICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZShvbGRCdWZmZXIsIG9sZEVu
ZCwgYmVnaW4oKSk7CiAgICAgQmFzZTo6ZGVhbGxvY2F0ZUJ1ZmZlcihvbGRCdWZmZXIpOworCisj
aWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVB
bmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkp
OworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTMzMiw2ICsxNDUwLDEwIEBA
IHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFj
aXR5LCBNYWxsb2M+OjpzaHJpbmtDYXBhCiAgICAgICAgIGlmIChCYXNlOjpzaG91bGRSZWFsbG9j
YXRlQnVmZmVyKG5ld0NhcGFjaXR5KSkgewogICAgICAgICAgICAgQmFzZTo6cmVhbGxvY2F0ZUJ1
ZmZlcihuZXdDYXBhY2l0eSk7CiAgICAgICAgICAgICBhc2FuU2V0SW5pdGlhbEJ1ZmZlclNpemVU
byhzaXplKCkpOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgICAgICB2ZWN0
b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRl
cygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0xMzQ1LDYgKzE0NjcsMTAgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnNocmlua0NhcGEK
ICAgICBCYXNlOjpyZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQoKTsKIAogICAgIGFzYW5TZXRJ
bml0aWFsQnVmZmVyU2l6ZVRvKHNpemUoKSk7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkK
KyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBz
aXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRs
ZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgpAQCAtMTM3NCw2ICsxNTAw
LDEwIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvCiAgICAgVCogZGVzdCA9IGVuZCgpOwogICAg
IFZlY3RvckNvcGllcjxzdGQ6OmlzX3RyaXZpYWw8VD46OnZhbHVlLCBVPjo6dW5pbml0aWFsaXpl
ZENvcHkoZGF0YSwgc3RkOjphZGRyZXNzb2YoZGF0YVtkYXRhU2l6ZV0pLCBkZXN0KTsKICAgICBt
X3NpemUgPSBuZXdTaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9y
VHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMo
KSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTEzOTIsNiArMTUyMiwxMCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlubGluZUNh
cGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsbwogICAgIFQqIGRlc3Qg
PSBlbmQoKTsKICAgICBWZWN0b3JDb3BpZXI8c3RkOjppc190cml2aWFsPFQ+Ojp2YWx1ZSwgVT46
OnVuaW5pdGlhbGl6ZWRDb3B5KGRhdGEsIHN0ZDo6YWRkcmVzc29mKGRhdGFbZGF0YVNpemVdKSwg
ZGVzdCk7CiAgICAgbV9zaXplID0gbmV3U2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lU
WQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQs
IHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0xNDAzLDYgKzE1MzcsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG8K
ICAgICAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsgMSk7CiAgICAgICAg
IG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7CiAgICAgICAg
ICsrbV9zaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgICAgIHZlY3RvclRy
YWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCks
IGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKQEAgLTE0MTcsNiArMTU1NSwxMCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsbwogICAgICAg
ICBhc2FuQnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICAgICAgbmV3IChO
b3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogICAgICAgICAr
K21fc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgICAgICB2ZWN0b3JUcmFj
a2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBj
YXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CkBAIC0xNDQxLDYgKzE1ODMsMTAgQEAgYm9vbCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OmFwcGVuZFNsb3cKICAgICBhc2Fu
QnVmZmVyU2l6ZVdpbGxDaGFuZ2VUbyhtX3NpemUgKyAxKTsKICAgICBuZXcgKE5vdE51bGwsIGVu
ZCgpKSBUKHN0ZDo6Zm9yd2FyZDxVPigqcHRyKSk7CiAgICAgKyttX3NpemU7CisKKyNpZiBUUkFD
S19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFj
aXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRlcygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5k
aWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTQ2Miw2ICsxNjA4LDEwIEBAIGJvb2wgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxs
b2M+Ojpjb25zdHJ1Y3RBCiAgICAgYXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG8obV9zaXplICsg
MSk7CiAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOwogICAgICsrbV9zaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVj
dG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0
ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTE0NzgsNiArMTYyOCwxMCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgVmVjdG9yPFQsIGlubGlu
ZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsbwogCiAgICAgbmV3
IChOb3ROdWxsLCBlbmQoKSkgVChzdGQ6OmZvcndhcmQ8VT4odmFsdWUpKTsKICAgICArK21fc2l6
ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAgIHZlY3RvclRyYWNrZXIoKS5yZWNv
cmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJbkJ5dGVzKCksIGNhcGFjaXR5SW5C
eXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0
eXBlbmFtZSBNYWxsb2M+CkBAIC0xNDkwLDYgKzE2NDQsMTAgQEAgQUxXQVlTX0lOTElORSB2b2lk
IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwg
TWFsbG8KIAogICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsKICAgICArK21fc2l6ZTsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQorICAg
IHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNpemVJ
bkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwg
c2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+CkBAIC0xNTI3LDYgKzE2ODUsMTAg
QEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2Fw
YWNpdHksIE1hbGxvYz46Omluc2VydChzaXoKICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJs
YXBwaW5nKHNwb3QsIGVuZCgpLCBzcG90ICsgZGF0YVNpemUpOwogICAgIFZlY3RvckNvcGllcjxz
dGQ6OmlzX3RyaXZpYWw8VD46OnZhbHVlLCBVPjo6dW5pbml0aWFsaXplZENvcHkoZGF0YSwgc3Rk
OjphZGRyZXNzb2YoZGF0YVtkYXRhU2l6ZV0pLCBzcG90KTsKICAgICBtX3NpemUgPSBuZXdTaXpl
OworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29y
ZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5
dGVzKCkpOworI2VuZGlmCiB9CiAgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0
eXBlbmFtZSBNYWxsb2M+CkBAIC0xNTQ3LDYgKzE3MDksMTAgQEAgaW5saW5lIHZvaWQgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+
OjppbnMKICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKHNwb3QsIGVuZCgpLCBz
cG90ICsgMSk7CiAgICAgbmV3IChOb3ROdWxsLCBzcG90KSBUKHN0ZDo6Zm9yd2FyZDxVPigqcHRy
KSk7CiAgICAgKyttX3NpemU7CisKKyNpZiBUUkFDS19WRUNUT1JfQ0FQQUNJVFkKKyAgICB2ZWN0
b3JUcmFja2VyKCkucmVjb3JkU2l6ZUFuZENhcGFjaXR5KG1fdHJhY2tlZElELCBzaXplSW5CeXRl
cygpLCBjYXBhY2l0eUluQnl0ZXMoKSk7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVf
dCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgpAQCAtMTU2NSw2ICsxNzMxLDEwIEBAIGlu
bGluZSB2b2lkIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5D
YXBhY2l0eSwgTWFsbG9jPjo6cmVtCiAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVybGFwcGlu
ZyhzcG90ICsgMSwgZW5kKCksIHNwb3QpOwogICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRv
KG1fc2l6ZSAtIDEpOwogICAgIC0tbV9zaXplOworCisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZ
CisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwg
c2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5k
bGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KQEAgLTE1NzgsNiArMTc0
OCwxMCBAQCBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OnJlbQogICAgIFR5cGVPcGVyYXRpb25zOjptb3Zl
T3ZlcmxhcHBpbmcoZW5kU3BvdCwgZW5kKCksIGJlZ2luU3BvdCk7CiAgICAgYXNhbkJ1ZmZlclNp
emVXaWxsQ2hhbmdlVG8obV9zaXplIC0gbGVuZ3RoKTsKICAgICBtX3NpemUgLT0gbGVuZ3RoOwor
CisjaWYgVFJBQ0tfVkVDVE9SX0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNp
emVBbmRDYXBhY2l0eShtX3RyYWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVz
KCkpOworI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVu
YW1lIE1hbGxvYz4KQEAgLTE2NjQsNiArMTgzOCwxMCBAQCBpbmxpbmUgdW5zaWduZWQgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+
OgogICAgICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKGhvbGVFbmQsIGVuZCgp
LCBob2xlQmVnaW4pOwogICAgIGFzYW5CdWZmZXJTaXplV2lsbENoYW5nZVRvKG1fc2l6ZSAtIG1h
dGNoQ291bnQpOwogICAgIG1fc2l6ZSAtPSBtYXRjaENvdW50OworCisjaWYgVFJBQ0tfVkVDVE9S
X0NBUEFDSVRZCisgICAgdmVjdG9yVHJhY2tlcigpLnJlY29yZFNpemVBbmRDYXBhY2l0eShtX3Ry
YWNrZWRJRCwgc2l6ZUluQnl0ZXMoKSwgY2FwYWNpdHlJbkJ5dGVzKCkpOworI2VuZGlmCiAgICAg
cmV0dXJuIG1hdGNoQ291bnQ7CiB9CiAKQEAgLTE3MTAsNiArMTg4OCwxMSBAQCBpbmxpbmUgTWFs
bG9jUHRyPFQsIE1hbGxvYz4gVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRs
ZXIsIG1pbkNhcGFjaQogICAgICAgICBtZW1jcHkoYnVmZmVyLmdldCgpLCBkYXRhKCksIGJ5dGVz
KTsKICAgICB9CiAgICAgbV9zaXplID0gMDsKKworI2lmIFRSQUNLX1ZFQ1RPUl9DQVBBQ0lUWQor
ICAgIHZlY3RvclRyYWNrZXIoKS5yZWNvcmRTaXplQW5kQ2FwYWNpdHkobV90cmFja2VkSUQsIHNp
emVJbkJ5dGVzKCksIGNhcGFjaXR5SW5CeXRlcygpKTsKKyNlbmRpZgorCiAgICAgLy8gRklYTUU6
IFNob3VsZCB3ZSBjYWxsIEJhc2U6OnJlc3RvcmVJbmxpbmVCdWZmZXJJZk5lZWRlZCgpIGhlcmU/
CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFz
aE1hcC5jcHAKaW5kZXggYmFlMGI2MGUyYjI2OGQxM2U5NmM4YzM2NzVlNmNlOGQyMTc0NTQ2Zi4u
NzMwM2RmOGYzN2RlNTg0NjYzYTllNzFhODdhYzQ2OWM5NzZkMjc3OCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgVEVTVChXVEZf
SGFzaE1hcCwgRG91YmxlSGFzaENvbGxpc2lvbnMpCiAgICAgY29uc3QgZG91YmxlIG5lZ2F0aXZl
WmVyb0tleSA9IC16ZXJvS2V5OwogCiAgICAgRG91YmxlSGFzaE1hcCBtYXA7Ci0jaWYgIUNIRUNL
X0hBU0hUQUJMRV9JVEVSQVRPUlMgJiYhRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCisj
aWYgIUNIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMgJiYhRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVS
X1RBQkxFICYmICFkZWZpbmVkKFRSQUNLX0hBU0hUQUJMRV9DQVBBQ0lUWSkKICAgICBzdGF0aWNf
YXNzZXJ0KHNpemVvZihtYXApID09IHNpemVvZih2b2lkKikpOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKaW5kZXggNTk4ZDc0NTQzYzdhZWU5Nzgx
NzQ1NjBiNzA3YjQxMTQwYjkxMWJkNS4uYjA5NDc5MWEwMjAzMmYwNDc5NWNjYjhlYjQ2ZTFlNzcx
MDRiMWQ5NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNl
dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKQEAg
LTE3Myw3ICsxNzMsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNp
bmdSYXdQb2ludGVyKQogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OlRlc3RpbmdT
Y29wZSBzY29wZTsKIAogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+PiBzZXQ7Ci0jaWYgIUNIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMgJiYh
RFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCisjaWYgIUNIRUNLX0hBU0hUQUJMRV9JVEVS
QVRPUlMgJiYhRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFICYmICFkZWZpbmVkKFRSQUNL
X0hBU0hUQUJMRV9DQVBBQ0lUWSkKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihzZXQpID09IHNp
emVvZih2b2lkKikpOwogI2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>