<?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>108466</bug_id>
          
          <creation_ts>2013-01-31 05:19:16 -0800</creation_ts>
          <short_desc>[chromium] turn TestRunner library into a component build</short_desc>
          <delta_ts>2013-02-07 23:40:00 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>109047</dependson>
    
    <dependson>109095</dependson>
          <blocked>91308</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>jochen</reporter>
          <assigned_to>jochen</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>fishd</cc>
    
    <cc>gavinp</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>821418</commentid>
    <comment_count>0</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-01-31 05:19:16 -0800</bug_when>
    <thetext>that includes gyp changes and adding TESTRUNNER_EXPORT macros</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825790</commentid>
    <comment_count>1</comment_count>
      <attachid>186697</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-05 14:00:37 -0800</bug_when>
    <thetext>Created attachment 186697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825805</commentid>
    <comment_count>2</comment_count>
      <attachid>186701</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-05 14:13:18 -0800</bug_when>
    <thetext>Created attachment 186701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825806</commentid>
    <comment_count>3</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-05 14:14:13 -0800</bug_when>
    <thetext>I verified that it builds in a chromium component build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825814</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-05 14:16:53 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825837</commentid>
    <comment_count>5</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-05 14:42:43 -0800</bug_when>
    <thetext>+dirk for component build insights</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825852</commentid>
    <comment_count>6</comment_count>
      <attachid>186701</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-05 15:03:48 -0800</bug_when>
    <thetext>Comment on attachment 186701
Patch

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

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:67
&gt; +    std::auto_ptr&lt;TestInterfaces&gt; m_interfaces;

fishd pointed me towards this web page explaining a gotcha with auto_ptr:
http://anki3d.org/stl-auto_ptr-a-bad-idea/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825854</commentid>
    <comment_count>7</comment_count>
      <attachid>186701</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-05 15:05:27 -0800</bug_when>
    <thetext>Comment on attachment 186701
Patch

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

&gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:67
&gt;&gt; +    std::auto_ptr&lt;TestInterfaces&gt; m_interfaces;
&gt; 
&gt; fishd pointed me towards this web page explaining a gotcha with auto_ptr:
&gt; http://anki3d.org/stl-auto_ptr-a-bad-idea/

Also http://stackoverflow.com/questions/3697686/what-is-the-problem-with-auto-ptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825858</commentid>
    <comment_count>8</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-05 15:08:12 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 186701 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186701&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:67
&gt; &gt; +    std::auto_ptr&lt;TestInterfaces&gt; m_interfaces;
&gt; 
&gt; fishd pointed me towards this web page explaining a gotcha with auto_ptr:
&gt; http://anki3d.org/stl-auto_ptr-a-bad-idea/

I guess that problem can be avoided be adding a static create method to WebTestInterfaces, so nobdoy can  derive from it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825860</commentid>
    <comment_count>9</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-05 15:08:48 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 186701 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186701&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:67
&gt; &gt;&gt; +    std::auto_ptr&lt;TestInterfaces&gt; m_interfaces;
&gt; &gt; 
&gt; &gt; fishd pointed me towards this web page explaining a gotcha with auto_ptr:
&gt; &gt; http://anki3d.org/stl-auto_ptr-a-bad-idea/
&gt; 
&gt; Also http://stackoverflow.com/questions/3697686/what-is-the-problem-with-auto-ptr

Yes, but we don&apos;t have C++0x everywhere yet, do we?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825863</commentid>
    <comment_count>10</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-05 15:10:38 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 186701 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186701&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:67
&gt; &gt; &gt; +    std::auto_ptr&lt;TestInterfaces&gt; m_interfaces;
&gt; &gt; 
&gt; &gt; fishd pointed me towards this web page explaining a gotcha with auto_ptr:
&gt; &gt; http://anki3d.org/stl-auto_ptr-a-bad-idea/
&gt; 
&gt; I guess that problem can be avoided be adding a static create method to WebTestInterfaces, so nobdoy can  derive from it.

Actually, even when you derive from WebTestInterfaces, this shouldn&apos;t be a problem, as WebTestInterfaces has an explicit destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825872</commentid>
    <comment_count>11</comment_count>
      <attachid>186701</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-05 15:30:09 -0800</bug_when>
    <thetext>Comment on attachment 186701
Patch

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

&gt; Tools/DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:617
&gt; -#if OS(LINUX) &amp;&amp; USE(GTK)
&gt; +#if defined(__linux__) &amp;&amp; USE(GTK)

Does USE(GTK) still work?

&gt; Tools/DumpRenderTree/chromium/TestRunner/src/config.h:35
&gt; +#define USE(feature) (defined WTF_USE_##feature &amp;&amp; WTF_USE_##feature)
&gt; +#define ENABLE(feature) (defined ENABLE_##feature &amp;&amp; ENABLE_##feature)

Ah, I see!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825874</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-05 15:31:21 -0800</bug_when>
    <thetext>Yeah, we just have to be careful to have an explicit destructor.  fishd said that this was probably ok.  He also mentioned that we&apos;re probably depending on base already via WebURL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825945</commentid>
    <comment_count>13</comment_count>
      <attachid>186701</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-05 17:08:14 -0800</bug_when>
    <thetext>Comment on attachment 186701
Patch

Attachment 186701 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16379836

New failing tests:
editing/spelling/spellcheck-async.html
pointer-lock/pointerlockchange-pointerlockerror-events.html
fast/speech/scripted/speechrecognition-basics.html
editing/spelling/spelling-marker-description.html
fast/speech/scripted/speechrecognition-errors.html
pointer-lock/pointerlockchange-event-on-lock-lost.html
fast/speech/scripted/navigate-away.html
pointer-lock/pointerlockelement-null-when-pending.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825976</commentid>
    <comment_count>14</comment_count>
      <attachid>186701</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-02-05 17:56:20 -0800</bug_when>
    <thetext>Comment on attachment 186701
Patch

build/gyp changes look fine to me. 

why did you remove the OVERRIDE annotations from TestRunner.h ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826316</commentid>
    <comment_count>15</comment_count>
      <attachid>186819</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-06 04:09:43 -0800</bug_when>
    <thetext>Created attachment 186819
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826327</commentid>
    <comment_count>16</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-06 04:28:18 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 186701 [details])
&gt; build/gyp changes look fine to me. 
&gt; 
&gt; why did you remove the OVERRIDE annotations from TestRunner.h ?

I didn&apos;t work. But as Adam pointed out, the webkit API already has access to base/, so I now include &lt;base/compiler_specific.h&gt; and put the OVERRIDE macros back in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826328</commentid>
    <comment_count>17</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-06 04:29:16 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 186701 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186701&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:617
&gt; &gt; -#if OS(LINUX) &amp;&amp; USE(GTK)
&gt; &gt; +#if defined(__linux__) &amp;&amp; USE(GTK)
&gt; 
&gt; Does USE(GTK) still work?
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestRunner/src/config.h:35
&gt; &gt; +#define USE(feature) (defined WTF_USE_##feature &amp;&amp; WTF_USE_##feature)
&gt; &gt; +#define ENABLE(feature) (defined ENABLE_##feature &amp;&amp; ENABLE_##feature)
&gt; 
&gt; Ah, I see!

Related, I had to remove the ENABLE() #ifdefs: the feature defines are not visible via the webkit api. And since we&apos;re only using the WebKit API, we only use methods that are present regardless of the defines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826355</commentid>
    <comment_count>18</comment_count>
      <attachid>186819</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 05:13:01 -0800</bug_when>
    <thetext>Comment on attachment 186819
Patch for landing

Clearing flags on attachment: 186819

Committed r141991: &lt;http://trac.webkit.org/changeset/141991&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826356</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 05:13:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826401</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 06:37:59 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 109047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826702</commentid>
    <comment_count>21</comment_count>
      <attachid>186907</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-06 13:22:58 -0800</bug_when>
    <thetext>Created attachment 186907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826752</commentid>
    <comment_count>22</comment_count>
      <attachid>186907</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 14:15:54 -0800</bug_when>
    <thetext>Comment on attachment 186907
Patch

Clearing flags on attachment: 186907

Committed r142032: &lt;http://trac.webkit.org/changeset/142032&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826753</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 14:15:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826763</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 14:35:27 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 109095</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827123</commentid>
    <comment_count>25</comment_count>
      <attachid>187008</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-07 00:46:12 -0800</bug_when>
    <thetext>Created attachment 187008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827268</commentid>
    <comment_count>26</comment_count>
      <attachid>187008</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-07 03:47:49 -0800</bug_when>
    <thetext>Comment on attachment 187008
Patch

Clearing flags on attachment: 187008

Committed r142090: &lt;http://trac.webkit.org/changeset/142090&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827269</commentid>
    <comment_count>27</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-07 03:47:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827429</commentid>
    <comment_count>28</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2013-02-07 06:26:37 -0800</bug_when>
    <thetext>Reverted r142090 for reason:

lots of selection expectations failures

Committed r142109: &lt;http://trac.webkit.org/changeset/142109&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827819</commentid>
    <comment_count>29</comment_count>
      <attachid>187155</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-07 12:58:02 -0800</bug_when>
    <thetext>Created attachment 187155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827821</commentid>
    <comment_count>30</comment_count>
      <attachid>187155</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-07 13:00:01 -0800</bug_when>
    <thetext>Comment on attachment 187155
Patch

Clearing flags on attachment: 187155

Committed r142165: &lt;http://trac.webkit.org/changeset/142165&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827822</commentid>
    <comment_count>31</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-07 13:00:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827869</commentid>
    <comment_count>32</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2013-02-07 13:40:43 -0800</bug_when>
    <thetext>Reverted r142165 for reason:

Broke linux_aura builds.

Committed r142173: &lt;http://trac.webkit.org/changeset/142173&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828231</commentid>
    <comment_count>33</comment_count>
      <attachid>187246</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-07 23:35:50 -0800</bug_when>
    <thetext>Created attachment 187246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828236</commentid>
    <comment_count>34</comment_count>
      <attachid>187246</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-07 23:39:53 -0800</bug_when>
    <thetext>Comment on attachment 187246
Patch

Clearing flags on attachment: 187246

Committed r142237: &lt;http://trac.webkit.org/changeset/142237&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828237</commentid>
    <comment_count>35</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-02-07 23:40:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186697</attachid>
            <date>2013-02-05 14:00:37 -0800</date>
            <delta_ts>2013-02-05 14:13:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108466-20130205225714.patch</filename>
            <type>text/plain</type>
            <size>98332</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODY3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjIxZTVjYmU3ZDVmOTliMzdiYWFmMDY4NjNkNTY0OWVi
NGEyMTRhMS4uMDdjMWRlYTYzNDQzZjg5ODA1ZDgwYjBkYjQ4ZGQzM2U5ZDgwNjFiNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
NCBAQAorMjAxMy0wMi0wNSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIHR1cm4gVGVzdFJ1bm5lciBsaWJyYXJ5IGludG8gYSBjb21w
b25lbnQgYnVpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwODQ2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRvIGFjaGlldmUgdGhpcywgd2UgbmVlZCB0byBkcm9wIGFsbCBkZXBlbmRlbmNpZXMgb24g
V1RGLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBS
ZW5kZXJUcmVlLmd5cDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlByZWZlcmVuY2VzLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RDb21tb24uaDogQ29waWVkIGZyb20gVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFj
ZXMuaC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnRMaXN0OjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TGlzdDo6Y3JlYXRlUm9vdCk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dENocm9taXVtLmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TGlzdCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFz
cy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjp+Q3BwQm91bmRD
bGFzcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjppbnZva2UpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6Z2V0UHJvcGVydHkpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6c2V0UHJvcGVydHkpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZENhbGxiYWNrKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6OmJpbmRHZXR0ZXJDYWxsYmFjayk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpiaW5kUHJvcGVydHkpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6Z2V0QXNDcHBWYXJpYW50KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENsYXNz
Lmg6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKENwcEJvdW5kQ2xhc3MpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZFByb3BlcnR5KToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6OmJpbmRGYWxsYmFja0NhbGxiYWNr
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6OmJpbmRGYWxsYmFja01l
dGhvZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
Q3BwVmFyaWFudC5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBWYXJpYW50Ojp0b1N0
cmluZyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBWYXJpYW50Ojp0b0ludDMyKToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcFZhcmlhbnQ6OnRvRG91YmxlKToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6OkNwcFZhcmlhbnQ6OnRvQm9vbGVhbik6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpDcHBWYXJpYW50Ojp0b1N0cmluZ1ZlY3Rvcik6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpDcHBWYXJpYW50OjppbnZva2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwVmFyaWFu
dDo6aW52b2tlRGVmYXVsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5oOgorICAgICAgICAoQ3BwVmFyaWFudCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3Bw
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVu
dFNlbmRlcjo6RXZlbnRTZW5kZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjptb3VzZURv
d24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6Om1vdXNlVXApOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6Om1vdXNlTW92ZVRvKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjprZXlEb3duKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OkV2ZW50U2VuZGVyOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6RXZlbnRTZW5kZXI6OmxlYXBGb3J3YXJkKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OkV2ZW50U2VuZGVyOjpyZXBsYXlTYXZlZEV2ZW50cyk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjptYWtlTWVudUl0ZW1TdHJpbmdzRm9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50
U2VuZGVyOjpjb250ZXh0Q2xpY2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI6OmJlZ2luRHJhZ1dpdGhGaWxlcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNl
bmRlcjo6YWRkVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRl
cjo6cmVsZWFzZVRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI6OnVwZGF0ZVRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI6OmNhbmNlbFRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI6OnNlbmRDdXJyZW50VG91Y2hFdmVudCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVu
dFNlbmRlcjo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFwcGluZy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpOYXRpdmVLZXlDb2RlRm9yV2luZG93c0tleUNvZGUpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suY3BwOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja0dyYW1tYXJDaGVjazo6Y2hlY2tHcmFtbWFyT2ZTdHJp
bmcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5oOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcik6CisgICAgICAgIChNb2NrR3JhbW1hckNoZWNrKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5jcHA6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dvcmQpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1NwZWxsQ2hlY2s6OmluaXRpYWxpemVJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5oOgorICAgICAgICAoTW9ja1Nw
ZWxsQ2hlY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1NwZWxsQ2hlY2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6U3BlbGxD
aGVja0NsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6U3BlbGxDaGVja0NsaWVudDo6ZmluaXNoTGFzdFRleHRDaGVjayk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdENvbW1vbi5oOiBDb3BpZWQg
ZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJU
ZXN0SW50ZXJmYWNlcy5oLgorICAgICAgICAoaXNBU0NJSUFscGhhKToKKyAgICAgICAgKGlzTm90
QVNDSUlBbHBoYSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdEludGVyZmFjZXMuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdElu
dGVyZmFjZXM6OlRlc3RJbnRlcmZhY2VzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoVGVzdEludGVy
ZmFjZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RQbHVnaW4uY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6VGVz
dFBsdWdpbik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmRlc3Ryb3kpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6cGFyc2VQcmltaXRpdmUpOgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6cGFyc2VDb2xvcik6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpUZXN0UGx1Z2luOjppbml0UHJvZ3JhbSk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpUZXN0UGx1Z2luOjppbml0UHJpbWl0aXZlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RQbHVnaW46OmRyYXdQcmltaXRpdmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBs
dWdpbjo6bG9hZFNoYWRlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjps
b2FkUHJvZ3JhbSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpoYW5kbGVE
cmFnU3RhdHVzVXBkYXRlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9UZXN0UGx1Z2luLmg6CisgICAgICAgIChUZXN0UGx1Z2luKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcDoK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dv
cmtTb29uKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6
cHJvY2Vzc1dvcmspOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1
ZXVlOjpyZXNldCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpXb3JrUXVl
dWU6OmFkZFdvcmspOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6VGVzdFJ1
bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpyZXNldCk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpwb2xpY3lEZWxlZ2F0ZURvbmUpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6ZmluZFN0cmluZyk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpzZXRUZXh0U3VicGl4ZWxQb3NpdGlvbmluZyk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9y
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
UnVubmVyLmg6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6aXNFbXB0eSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGV4dElucHV0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpUZXh0SW5wdXRDb250cm9sbGVyOjptYXJrZWRSYW5nZSk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXh0SW5wdXRDb250cm9sbGVyOjpzZWxlY3RlZFJhbmdl
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRleHRJbnB1dENvbnRyb2xsZXI6OmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJQcmVmZXJlbmNlczo6cmVzZXQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
V2ViVGFza0xpc3Q6On5XZWJUYXNrTGlzdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJU
YXNrTGlzdDo6cmVnaXN0ZXJUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRhc2tM
aXN0Ojp1bnJlZ2lzdGVyVGFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlz
dDo6cmV2b2tlQWxsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpX
ZWJUZXN0SW50ZXJmYWNlczo6V2ViVGVzdEludGVyZmFjZXMpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6On5XZWJUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlczo6dGVzdEludGVyZmFjZXMpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5j
cHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjp+V2ViVGVzdFBy
b3h5QmFzZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpzcGVs
bENoZWNrQ2xpZW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6
OmFzc2lnbklkZW50aWZpZXJUb1JlcXVlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL2NvbmZpZy5oOiBDb3BpZWQgZnJvbSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oLgor
CiAyMDEzLTAyLTA0ICBBbGFuIEN1dHRlciAgPGFsYW5jdXR0ZXJAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEVXUyBib3RzIGRvbid0IHJlbW92ZSB1bnRyYWNrZWQgZmlsZXMgYWZ0ZXIgcHJvY2Vz
c2luZyBhIHBhdGNoCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cAppbmRleCA1ZjM2N2RmNzg1YWNkMTE5Mzc0
MmEwNDAzNTI3OTgzZjdkYzAyMDA2Li5kMTU3N2EwYjA4OWE2NWMxZDgyMGU4ZjA4YWRhNzFjZGZi
M2M4YzU4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXAvRHVtcFJlbmRlclRyZWUuZ3lwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKQEAgLTgzLDEwICs4Myw3IEBACiAgICAgICAg
ICAgICAnZGVwZW5kZW5jaWVzJzogWwogICAgICAgICAgICAgICAgICdUZXN0UnVubmVyX3Jlc291
cmNlcycsCiAgICAgICAgICAgICAgICAgJzwoc291cmNlX2RpcikvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXA6d2Via2l0JywKLSAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cDp3ZWJraXRfd3RmX3N1cHBvcnQnLAogICAgICAgICAgICAgICAg
ICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwOndlYmtpdF90ZXN0X3N1
cHBvcnQnLAotICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dURi9XVEYuZ3lwL1dURi5n
eXA6d3RmJywKLSAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS93ZWJraXQvc3Vw
cG9ydC93ZWJraXRfc3VwcG9ydC5neXA6d2Via2l0X3N1cHBvcnQnLAogICAgICAgICAgICAgXSwK
ICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBbCiAgICAgICAgICAgICAgICAgJzwoY2hyb21p
dW1fc3JjX2RpciknLApAQCAtMTA2LDYgKzEwMywzMSBAQAogICAgICAgICAgICAgICAgICc8QCh0
ZXN0X3J1bm5lcl9maWxlcyknLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICdjb25kaXRp
b25zJzogWworICAgICAgICAgICAgICAgIFsnaW5zaWRlX2Nocm9taXVtX2J1aWxkID09IDEnLCB7
CisgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJzwoY29tcG9uZW50KScsCisgICAgICAgICAg
ICAgICAgICAgICdjb25kaXRpb25zJzogWworICAgICAgICAgICAgICAgICAgICAgICAgWydjb21w
b25lbnQ9PSJzaGFyZWRfbGlicmFyeSInLCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2RlZmluZXMnOiBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdXRUJURVNUUlVO
TkVSX0RMTCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdXRUJURVNUUlVOTkVS
X0lNUExFTUVOVEFUSU9OPTEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzogWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ1dFQlRFU1RSVU5ORVJfRExMJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzogeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnVkNMaW5rZXJUb29sJzogeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWydpbmNyZW1lbnRhbF9jaHJvbWVfZGxsPT0xJywgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVXNlTGlicmFyeURlcGVu
ZGVuY3lJbnB1dHMnOiAndHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ3Rvb2xraXRfdXNlc19ndGsg
PT0gMScsIHsKICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOiBbCiAgICAgICAgICAgICAg
ICAgICAgICAgICAnV1RGX1VTRV9HVEs9MScsCkBAIC0xOTUsNiArMjE3LDcgQEAKICAgICAgICAg
ICAgICAgICAnVGVzdFJ1bm5lcicsCiAgICAgICAgICAgICAgICAgJzwoc291cmNlX2RpcikvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXA6aW5zcGVjdG9yX3Jlc291cmNlcycsCiAgICAgICAgICAg
ICAgICAgJzwoc291cmNlX2RpcikvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXA6d2Via2l0JywK
KyAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cDp3ZWJraXRfd3RmX3N1cHBvcnQnLAogICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dU
Ri9XVEYuZ3lwL1dURi5neXA6d3RmJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNf
ZGlyKS9iYXNlL2Jhc2UuZ3lwOnRlc3Rfc3VwcG9ydF9iYXNlJywKICAgICAgICAgICAgICAgICAn
PChjaHJvbWl1bV9zcmNfZGlyKS9idWlsZC90ZW1wX2d5cC9nb29nbGV1cmwuZ3lwOmdvb2dsZXVy
bCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBp
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCA3NzZhOGE1
NmE2Y2ZjNDU0MTM5MjA4NWMxOTM5MjUwNzkwZTIxYTY2Li4zMjk2Y2ZkMjAxZTQyNGYxYzExNWJk
NjNiYjQyZjJjNzFmNThhODM0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmd5cGkKQEAgLTU1LDYgKzU1LDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVy
L3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1
bm5lci9wdWJsaWMvV2ViUHJlZmVyZW5jZXMuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0Q29tbW9uLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmgnLApAQCAtNzgsNiArNzksNyBAQAog
ICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmgnLAog
ICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxsQ2hlY2tDbGllbnQuY3Bw
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9TcGVsbENoZWNrQ2xpZW50
LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RDb21tb24uaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3Bw
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0SW5wdXRDb250cm9s
bGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViUHJlZmVyZW5jZXMuaAppbmRleCA3OTg1NDMzYTJm
NzMxZGNjZjZmYjIyOTQ3Yzg4NGVjNjBjNGFmMTdlLi43Y2EwMGI3MjU1Y2Y0YzI4M2IwOTRkNjhj
NjliNzUyMjNjMTU5NDE2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlByZWZlcmVuY2VzLmgKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3RyaW5n
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlVSTC5oIgogI2luY2x1
ZGUgIldlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJU
ZXN0Q29tbW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViVmlldzsKQEAgLTQx
LDcgKzQyLDcgQEAgY2xhc3MgV2ViVmlldzsKIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewog
Ci1zdHJ1Y3QgV2ViUHJlZmVyZW5jZXMgeworc3RydWN0IFdFQlRFU1RSVU5ORVJfRVhQT1JUIFdl
YlByZWZlcmVuY2VzIHsKICAgICBXZWJLaXQ6OldlYlN0cmluZyBzdGFuZGFyZEZvbnRGYW1pbHk7
CiAgICAgV2ViS2l0OjpXZWJTdHJpbmcgZml4ZWRGb250RmFtaWx5OwogICAgIFdlYktpdDo6V2Vi
U3RyaW5nIHNlcmlmRm9udEZhbWlseTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRhc2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRhc2suaAppbmRleCBlZjczZTE3N2Uw
NDEwZTZmZTZkYTYxOGMwZTFkNmViNzQ0NDczMGE0Li5jM2JjMDljYzFjZWVhYWY2MWU4NWNjNTM3
M2NjZTYxNzkyYjE0NDVjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oCkBAIC0zMSwxMyArMzEsMTYgQEAK
ICNpZm5kZWYgV2ViVGFza19oCiAjZGVmaW5lIFdlYlRhc2tfaAogCisjaW5jbHVkZSAiV2ViVGVz
dENvbW1vbi5oIgorI2luY2x1ZGUgPHZlY3Rvcj4KKwogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIg
ewogCiBjbGFzcyBXZWJUYXNrTGlzdDsKIAogLy8gV2ViVGFzayByZXByZXNlbnRzIGEgdGFzayB3
aGljaCBjYW4gcnVuIGJ5IFdlYlRlc3REZWxlZ2F0ZTo6cG9zdFRhc2soKSBvcgogLy8gV2ViVGVz
dERlbGVnYXRlOjpwb3N0RGVsYXllZFRhc2soKS4KLWNsYXNzIFdlYlRhc2sgeworY2xhc3MgV0VC
VEVTVFJVTk5FUl9FWFBPUlQgV2ViVGFzayB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViVGFz
ayhXZWJUYXNrTGlzdCopOwogICAgIHZpcnR1YWwgfldlYlRhc2soKTsKQEAgLTUxLDcgKzU0LDcg
QEAgcHJvdGVjdGVkOgogICAgIFdlYlRhc2tMaXN0KiBtX3Rhc2tMaXN0OwogfTsKIAotY2xhc3Mg
V2ViVGFza0xpc3QgeworY2xhc3MgV0VCVEVTVFJVTk5FUl9FWFBPUlQgV2ViVGFza0xpc3Qgewog
cHVibGljOgogICAgIFdlYlRhc2tMaXN0KCk7CiAgICAgfldlYlRhc2tMaXN0KCk7CkBAIC02MCw4
ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJldm9rZUFsbCgpOwogCiBwcml2YXRlOgotICAg
IGNsYXNzIFByaXZhdGU7Ci0gICAgUHJpdmF0ZSogbV9wcml2YXRlOworICAgIHN0ZDo6dmVjdG9y
PFdlYlRhc2sqPiBtX3Rhc2tzOwogfTsKIAogLy8gQSB0YXNrIGNvbnRhaW5pbmcgYW4gb2JqZWN0
IHBvaW50ZXIgb2YgY2xhc3MgVC4gRGVyaXZlZCBjbGFzc2VzIHNob3VsZApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdENv
bW1vbi5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGVzdENvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhYmU3OTdiZjY5ZWRjMmIxZTIyY2U2ZmNjMjk1
NTg1MWU4NWI3MWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0Q29tbW9uLmgKQEAgLTAsMCArMSw1OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViVGVzdENvbW1vbl9oCisjZGVmaW5lIFdlYlRlc3RDb21tb25faAorCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8gRGVmYXVsdCBjb25maWd1cmF0aW9uCisKKyNpZiAhZGVmaW5l
ZChXRUJURVNUUlVOTkVSX0lNUExFTUVOVEFUSU9OKQorI2RlZmluZSBXRUJURVNUUlVOTkVSX0lN
UExFTUVOVEFUSU9OIDAKKyNlbmRpZgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRXhw
b3J0ZWQgc3ltYm9scyBuZWVkIHRvIGJlIGFubm90YXRlZCB3aXRoIFdFQlRFU1RSVU5ORVJfRVhQ
T1JUCisKKyNpZiBkZWZpbmVkKFdFQlRFU1RSVU5ORVJfRExMKQorI2lmIGRlZmluZWQoV0lOMzIp
CisjaWYgV0VCVEVTVFJVTk5FUl9JTVBMRU1FTlRBVElPTgorI2RlZmluZSBXRUJURVNUUlVOTkVS
X0VYUE9SVCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyNlbHNlCisjZGVmaW5lIFdFQlRFU1RSVU5O
RVJfRVhQT1JUIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2VuZGlmCisjZWxzZQorI2RlZmluZSBX
RUJURVNUUlVOTkVSX0VYUE9SVCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0Iikp
KQorI2VuZGlmCisjZWxzZQorI2RlZmluZSBXRUJURVNUUlVOTkVSX0VYUE9SVAorI2VuZGlmCisK
KyNlbmRpZiAvLyBXZWJUZXN0Q29tbW9uX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJm
YWNlcy5oCmluZGV4IDJjY2Q2MWUyNWMxMGJhNDcyMDg2MTUyMjA5NjM2NTZlOTg4NmVkYjkuLjcz
ZDc5ZGMyY2RkZTBmMmViOTllNzkyNmIxZDhmYmYxZDFhZjI3Y2UgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZh
Y2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJs
aWMvV2ViVGVzdEludGVyZmFjZXMuaApAQCAtMzEsNiArMzEsOSBAQAogI2lmbmRlZiBXZWJUZXN0
SW50ZXJmYWNlc19oCiAjZGVmaW5lIFdlYlRlc3RJbnRlcmZhY2VzX2gKIAorI2luY2x1ZGUgIldl
YlRlc3RDb21tb24uaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJWaWV3OwpAQCAtNDIsNyArNDUsNyBAQCBjbGFzcyBU
ZXN0SW50ZXJmYWNlczsKIGNsYXNzIFdlYlRlc3REZWxlZ2F0ZTsKIGNsYXNzIFdlYlRlc3RSdW5u
ZXI7CiAKLWNsYXNzIFdlYlRlc3RJbnRlcmZhY2VzIHsKK2NsYXNzIFdFQlRFU1RSVU5ORVJfRVhQ
T1JUIFdlYlRlc3RJbnRlcmZhY2VzIHsKIHB1YmxpYzoKICAgICBXZWJUZXN0SW50ZXJmYWNlcygp
OwogICAgIH5XZWJUZXN0SW50ZXJmYWNlcygpOwpAQCAtNjEsNyArNjQsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogcHJpdmF0ZToKLSAgICBUZXN0SW50ZXJmYWNlcyogbV9pbnRlcmZhY2VzOworICAg
IHN0ZDo6YXV0b19wdHI8VGVzdEludGVyZmFjZXM+IG1faW50ZXJmYWNlczsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3RQcm94eS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKaW5kZXggNDI5MDk2OWJkZDdhNjg2N2M2MDNlZmE4OTQ3
NWMwNWQ3ZjQwZmM1Zi4uMTAwZDI4N2RiZTI2ZDc4MjhiZGI0ZDU0NWExMmQxYjY1ZWJkMmRjZCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJs
aWMvV2ViVGVzdFByb3h5LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKQEAgLTQyLDcgKzQyLDkgQEAKICNpbmNsdWRl
ICJXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRlICJXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJUZXN0
Q29tbW9uLmgiCiAjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxz
dHJpbmc+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzksNyArODEsNyBAQCBjbGFzcyBXZWJU
ZXN0RGVsZWdhdGU7CiBjbGFzcyBXZWJUZXN0SW50ZXJmYWNlczsKIGNsYXNzIFdlYlRlc3RSdW5u
ZXI7CiAKLWNsYXNzIFdlYlRlc3RQcm94eUJhc2UgeworY2xhc3MgV0VCVEVTVFJVTk5FUl9FWFBP
UlQgV2ViVGVzdFByb3h5QmFzZSB7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbnRlcmZhY2VzKFdl
YlRlc3RJbnRlcmZhY2VzKik7CiAgICAgdm9pZCBzZXREZWxlZ2F0ZShXZWJUZXN0RGVsZWdhdGUq
KTsKQEAgLTE2NSw3ICsxNjcsNyBAQCBwcml2YXRlOgogICAgIFRlc3RJbnRlcmZhY2VzKiBtX3Rl
c3RJbnRlcmZhY2VzOwogICAgIFdlYlRlc3REZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIAotICAgIFNw
ZWxsQ2hlY2tDbGllbnQqIG1fc3BlbGxjaGVjazsKKyAgICBzdGQ6OmF1dG9fcHRyPFNwZWxsQ2hl
Y2tDbGllbnQ+IG1fc3BlbGxjaGVjazsKIAogICAgIFdlYktpdDo6V2ViUmVjdCBtX3BhaW50UmVj
dDsKICAgICBzdGQ6Om1hcDx1bnNpZ25lZCwgc3RkOjpzdHJpbmc+IG1fcmVzb3VyY2VJZGVudGlm
aWVyTWFwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRD
aHJvbWl1bS5jcHAKaW5kZXggMDYzZGRiYmFkZmJhYjY2MzM4NTU5OWI4ODJjN2QwZTRjNTU4YTJk
Mi4uNmRjYzQwNjA2M2Y2OTIxNGI2NzYyMjM0MzE2MTFlNjE3ZmRjNzJjOSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudENocm9taXVtLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uY3BwCkBAIC0z
MSwxMyArMzEsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Q2hyb21pdW0uaCIKIAorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNs
dWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNTdHJp
bmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUG9pbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2Vi
UmVjdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0zNjgsNyArMzY3LDcgQEAgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0JiBvYmoKICAgICAsIG1fZmFjdG9yeShmYWN0b3J5KQogewogCi0gICAg
QVNTRVJUKGZhY3RvcnkpOworICAgIFdFQktJVF9BU1NFUlQoZmFjdG9yeSk7CiAKICAgICAvLwog
ICAgIC8vIFByb3BlcnRpZXMKQEAgLTEwMjUsMTQgKzEwMjQsMTQgQEAgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCogQWNjZXNzaWJpbGl0eVVJRWxlbWVudExpc3Q6OmdldE9yQ3JlYXRlKGNvbnN0IFdl
YkFjY2Vzc2kKICAgICB9CiAKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50ID0g
bmV3IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQob2JqZWN0LCB0aGlzKTsKLSAgICBtX2VsZW1lbnRz
LmFwcGVuZChlbGVtZW50KTsKKyAgICBtX2VsZW1lbnRzLnB1c2hfYmFjayhlbGVtZW50KTsKICAg
ICByZXR1cm4gZWxlbWVudDsKIH0KIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogQWNjZXNzaWJp
bGl0eVVJRWxlbWVudExpc3Q6OmNyZWF0ZVJvb3QoY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVj
dCYgb2JqZWN0KQogewogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQgPSBuZXcg
Um9vdEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQob2JqZWN0LCB0aGlzKTsKLSAgICBtX2VsZW1lbnRz
LmFwcGVuZChlbGVtZW50KTsKKyAgICBtX2VsZW1lbnRzLnB1c2hfYmFjayhlbGVtZW50KTsKICAg
ICByZXR1cm4gZWxlbWVudDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50Q2hyb21pdW0uaAppbmRleCAzOTZhYTcwODBhOTVjODg1MjFhNjkwMWRjMjYx
OTk5MGExMjQ3MDFhLi5jNmNiMWEyMzU2ZGEwNzBiMWEyZTE4NGZhNDBlZjI4ODlhYzc5MDkwIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0u
aApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKICNpbmNsdWRl
ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCkBAIC0xNjgsNyAr
MTY3LDcgQEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGNyZWF0ZVJvb3Qo
Y29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7CiAKIHByaXZhdGU6Ci0gICAg
dHlwZWRlZiBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudCo+IEVsZW1lbnRMaXN0OworICAg
IHR5cGVkZWYgc3RkOjp2ZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudCo+IEVsZW1lbnRMaXN0
OwogICAgIEVsZW1lbnRMaXN0IG1fZWxlbWVudHM7CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENsYXNzLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xh
c3MuY3BwCmluZGV4IDAzNWFjZGVkNzhkNjhlODc1NzBkYTAxNTVmZjY1MmQ2YTk1OWNjMGEuLjQ5
ZTYxNDk3M2I3MTkyY2FkYzkxMmRkODZlZDdkODg3Y2ZhYWQwZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJv
dW5kQ2xhc3MuY3BwCkBAIC00MiwxMSArNDIsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDcHBCb3VuZENsYXNzLmgiCiAKKyNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCiAjaW5j
bHVkZSAiV2ViQmluZGluZ3MuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogCiBj
bGFzcyBHZXR0ZXJQcm9wZXJ0eUNhbGxiYWNrIDogcHVibGljIENwcEJvdW5kQ2xhc3M6OlByb3Bl
cnR5Q2FsbGJhY2sgewogcHVibGljOgotICAgIEdldHRlclByb3BlcnR5Q2FsbGJhY2soUGFzc093
blB0cjxDcHBCb3VuZENsYXNzOjpHZXR0ZXJDYWxsYmFjaz4gY2FsbGJhY2spCisgICAgR2V0dGVy
UHJvcGVydHlDYWxsYmFjayhhdXRvX3B0cjxDcHBCb3VuZENsYXNzOjpHZXR0ZXJDYWxsYmFjaz4g
Y2FsbGJhY2spCiAgICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKICAgICB7CiAgICAgfQpA
QCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNldFZhbHVlKGNvbnN0
IENwcFZhcmlhbnQmIHZhbHVlKSB7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgotICAgIE93
blB0cjxDcHBCb3VuZENsYXNzOjpHZXR0ZXJDYWxsYmFjaz4gbV9jYWxsYmFjazsKKyAgICBhdXRv
X3B0cjxDcHBCb3VuZENsYXNzOjpHZXR0ZXJDYWxsYmFjaz4gbV9jYWxsYmFjazsKIH07CiAKIH0K
QEAgLTIwOSwxMCArMjA5LDEwIEBAIGJvb2wgQ3BwTlBPYmplY3Q6OnNldFByb3BlcnR5KE5QT2Jq
ZWN0KiBucE9iaiwgTlBJZGVudGlmaWVyIGlkZW50LCBjb25zdCBOUFZhcmlhCiBDcHBCb3VuZENs
YXNzOjp+Q3BwQm91bmRDbGFzcygpCiB7CiAgICAgZm9yIChNZXRob2RMaXN0OjppdGVyYXRvciBp
ID0gbV9tZXRob2RzLmJlZ2luKCk7IGkgIT0gbV9tZXRob2RzLmVuZCgpOyArK2kpCi0gICAgICAg
IGRlbGV0ZSBpLT52YWx1ZTsKKyAgICAgICAgZGVsZXRlIGktPnNlY29uZDsKIAogICAgIGZvciAo
UHJvcGVydHlMaXN0OjppdGVyYXRvciBpID0gbV9wcm9wZXJ0aWVzLmJlZ2luKCk7IGkgIT0gbV9w
cm9wZXJ0aWVzLmVuZCgpOyArK2kpCi0gICAgICAgIGRlbGV0ZSBpLT52YWx1ZTsKKyAgICAgICAg
ZGVsZXRlIGktPnNlY29uZDsKIAogICAgIC8vIFVucmVnaXN0ZXIgb3Vyc2VsdmVzIGlmIHdlIHdl
cmUgYm91bmQgdG8gYSBmcmFtZS4KICAgICBpZiAobV9ib3VuZFRvRnJhbWUpCkBAIC0yNDMsNyAr
MjQzLDcgQEAgYm9vbCBDcHBCb3VuZENsYXNzOjppbnZva2UoTlBJZGVudGlmaWVyIGlkZW50LAog
ICAgICAgICB9CiAgICAgICAgIGNhbGxiYWNrID0gbV9mYWxsYmFja0NhbGxiYWNrLmdldCgpOwog
ICAgIH0gZWxzZQotICAgICAgICBjYWxsYmFjayA9ICgqbWV0aG9kKS52YWx1ZTsKKyAgICAgICAg
Y2FsbGJhY2sgPSAoKm1ldGhvZCkuc2Vjb25kOwogCiAgICAgLy8gQnVpbGQgYSBDcHBBcmd1bWVu
dExpc3QgYXJndW1lbnQgdmVjdG9yIGZyb20gdGhlIE5QVmFyaWFudHMgY29taW5nIGluLgogICAg
IENwcEFyZ3VtZW50TGlzdCBjcHBBcmd1bWVudHMoYXJndW1lbnRDb3VudCk7CkBAIC0yNjYsNyAr
MjY2LDcgQEAgYm9vbCBDcHBCb3VuZENsYXNzOjpnZXRQcm9wZXJ0eShOUElkZW50aWZpZXIgaWRl
bnQsIE5QVmFyaWFudCogcmVzdWx0KSBjb25zdAogICAgIH0KIAogICAgIENwcFZhcmlhbnQgY3Bw
VmFsdWU7Ci0gICAgaWYgKCFjYWxsYmFjay0+dmFsdWUtPmdldFZhbHVlKCZjcHBWYWx1ZSkpCisg
ICAgaWYgKCFjYWxsYmFjay0+c2Vjb25kLT5nZXRWYWx1ZSgmY3BwVmFsdWUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgY3BwVmFsdWUuY29weVRvTlBWYXJpYW50KHJlc3VsdCk7CiAgICAg
cmV0dXJuIHRydWU7CkBAIC0yODAsNyArMjgwLDcgQEAgYm9vbCBDcHBCb3VuZENsYXNzOjpzZXRQ
cm9wZXJ0eShOUElkZW50aWZpZXIgaWRlbnQsIGNvbnN0IE5QVmFyaWFudCogdmFsdWUpCiAKICAg
ICBDcHBWYXJpYW50IGNwcFZhbHVlOwogICAgIGNwcFZhbHVlLnNldCgqdmFsdWUpOwotICAgIHJl
dHVybiAoKmNhbGxiYWNrKS52YWx1ZS0+c2V0VmFsdWUoY3BwVmFsdWUpOworICAgIHJldHVybiAo
KmNhbGxiYWNrKS5zZWNvbmQtPnNldFZhbHVlKGNwcFZhbHVlKTsKIH0KIAogdm9pZCBDcHBCb3Vu
ZENsYXNzOjpiaW5kQ2FsbGJhY2soY29uc3Qgc3RyaW5nJiBuYW1lLCBDYWxsYmFjayogY2FsbGJh
Y2spCkBAIC0yODgsMTkgKzI4OCwxOSBAQCB2b2lkIENwcEJvdW5kQ2xhc3M6OmJpbmRDYWxsYmFj
ayhjb25zdCBzdHJpbmcmIG5hbWUsIENhbGxiYWNrKiBjYWxsYmFjaykKICAgICBOUElkZW50aWZp
ZXIgaWRlbnQgPSBXZWJCaW5kaW5nczo6Z2V0U3RyaW5nSWRlbnRpZmllcihuYW1lLmNfc3RyKCkp
OwogICAgIE1ldGhvZExpc3Q6Oml0ZXJhdG9yIG9sZENhbGxiYWNrID0gbV9tZXRob2RzLmZpbmQo
aWRlbnQpOwogICAgIGlmIChvbGRDYWxsYmFjayAhPSBtX21ldGhvZHMuZW5kKCkpIHsKLSAgICAg
ICAgZGVsZXRlIG9sZENhbGxiYWNrLT52YWx1ZTsKKyAgICAgICAgZGVsZXRlIG9sZENhbGxiYWNr
LT5zZWNvbmQ7CiAgICAgICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgICAgIG1fbWV0aG9k
cy5yZW1vdmUob2xkQ2FsbGJhY2spOworICAgICAgICAgICAgbV9tZXRob2RzLmVyYXNlKG9sZENh
bGxiYWNrKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIG1f
bWV0aG9kcy5zZXQoaWRlbnQsIGNhbGxiYWNrKTsKKyAgICBtX21ldGhvZHNbaWRlbnRdID0gY2Fs
bGJhY2s7CiB9CiAKLXZvaWQgQ3BwQm91bmRDbGFzczo6YmluZEdldHRlckNhbGxiYWNrKGNvbnN0
IHN0cmluZyYgbmFtZSwgUGFzc093blB0cjxHZXR0ZXJDYWxsYmFjaz4gY2FsbGJhY2spCit2b2lk
IENwcEJvdW5kQ2xhc3M6OmJpbmRHZXR0ZXJDYWxsYmFjayhjb25zdCBzdHJpbmcmIG5hbWUsIGF1
dG9fcHRyPEdldHRlckNhbGxiYWNrPiBjYWxsYmFjaykKIHsKLSAgICBQcm9wZXJ0eUNhbGxiYWNr
KiBwcm9wZXJ0eUNhbGxiYWNrID0gY2FsbGJhY2sgPyBuZXcgR2V0dGVyUHJvcGVydHlDYWxsYmFj
ayhjYWxsYmFjaykgOiAwOworICAgIFByb3BlcnR5Q2FsbGJhY2sqIHByb3BlcnR5Q2FsbGJhY2sg
PSBjYWxsYmFjay5nZXQoKSA/IG5ldyBHZXR0ZXJQcm9wZXJ0eUNhbGxiYWNrKGNhbGxiYWNrKSA6
IDA7CiAgICAgYmluZFByb3BlcnR5KG5hbWUsIHByb3BlcnR5Q2FsbGJhY2spOwogfQogCkBAIC0z
MTUsMTQgKzMxNSwxNCBAQCB2b2lkIENwcEJvdW5kQ2xhc3M6OmJpbmRQcm9wZXJ0eShjb25zdCBz
dHJpbmcmIG5hbWUsIFByb3BlcnR5Q2FsbGJhY2sqIGNhbGxiYWNrKQogICAgIE5QSWRlbnRpZmll
ciBpZGVudCA9IFdlYkJpbmRpbmdzOjpnZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUuY19zdHIoKSk7
CiAgICAgUHJvcGVydHlMaXN0OjppdGVyYXRvciBvbGRDYWxsYmFjayA9IG1fcHJvcGVydGllcy5m
aW5kKGlkZW50KTsKICAgICBpZiAob2xkQ2FsbGJhY2sgIT0gbV9wcm9wZXJ0aWVzLmVuZCgpKSB7
Ci0gICAgICAgIGRlbGV0ZSBvbGRDYWxsYmFjay0+dmFsdWU7CisgICAgICAgIGRlbGV0ZSBvbGRD
YWxsYmFjay0+c2Vjb25kOwogICAgICAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBt
X3Byb3BlcnRpZXMucmVtb3ZlKG9sZENhbGxiYWNrKTsKKyAgICAgICAgICAgIG1fcHJvcGVydGll
cy5lcmFzZShvbGRDYWxsYmFjayk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBtX3Byb3BlcnRpZXMuc2V0KGlkZW50LCBjYWxsYmFjayk7CisgICAgbV9wcm9w
ZXJ0aWVzW2lkZW50XSA9IGNhbGxiYWNrOwogfQogCiBib29sIENwcEJvdW5kQ2xhc3M6OmlzTWV0
aG9kUmVnaXN0ZXJlZChjb25zdCBzdHJpbmcmIG5hbWUpIGNvbnN0CkBAIC0zNDQsNyArMzQ0LDcg
QEAgQ3BwVmFyaWFudCogQ3BwQm91bmRDbGFzczo6Z2V0QXNDcHBWYXJpYW50KCkKICAgICAgICAg
bV9zZWxmVmFyaWFudC5zZXQobnBPYmopOwogICAgICAgICBXZWJCaW5kaW5nczo6cmVsZWFzZU9i
amVjdChucE9iaik7IC8vIENwcFZhcmlhbnQgdGFrZXMgdGhlIHJlZmVyZW5jZS4KICAgICB9Ci0g
ICAgQVNTRVJUKG1fc2VsZlZhcmlhbnQuaXNPYmplY3QoKSk7CisgICAgV0VCS0lUX0FTU0VSVCht
X3NlbGZWYXJpYW50LmlzT2JqZWN0KCkpOwogICAgIHJldHVybiAmbV9zZWxmVmFyaWFudDsKIH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvQ3BwQm91bmRDbGFzcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5oCmluZGV4IDU0YWY2ZGRjZTFlNjgwMmZmMDBkNjhhYTcy
YjVmMjAyOWU0NzUzYzYuLjk1MmE0MWM1MzQwZWZkZjAwYmM3NmI3ODJiNGQ0NmRhY2NmOGQxZGIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L0NwcEJvdW5kQ2xhc3MuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9DcHBCb3VuZENsYXNzLmgKQEAgLTQ0LDExICs0NCw5IEBACiAjZGVmaW5lIENw
cEJvdW5kQ2xhc3NfaAogCiAjaW5jbHVkZSAiQ3BwVmFyaWFudC5oIgotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dmVjdG9y
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZyYW1lOwpAQCAtNTcsMTIgKzU1LDEx
IEBAIGNsYXNzIFdlYlN0cmluZzsKIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCi10eXBl
ZGVmIFZlY3RvcjxDcHBWYXJpYW50PiBDcHBBcmd1bWVudExpc3Q7Cit0eXBlZGVmIHN0ZDo6dmVj
dG9yPENwcFZhcmlhbnQ+IENwcEFyZ3VtZW50TGlzdDsKIAogLy8gQ3BwQm91bmRDbGFzcyBsZXRz
IHlvdSBtYXAgSmF2YXNjcmlwdCBtZXRob2QgY2FsbHMgYW5kIHByb3BlcnR5IGFjY2Vzc2VzCiAv
LyBkaXJlY3RseSB0byBDKysgbWV0aG9kIGNhbGxzIGFuZCBDcHBWYXJpYW50KiB2YXJpYWJsZSBh
Y2Nlc3MuCiBjbGFzcyBDcHBCb3VuZENsYXNzIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
cHBCb3VuZENsYXNzKTsKIHB1YmxpYzoKICAgICBjbGFzcyBQcm9wZXJ0eUNhbGxiYWNrIHsKICAg
ICBwdWJsaWM6CkBAIC0xNjQsNyArMTYxLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gQmluZCBK
YXZhc2NyaXB0IHByb3BlcnR5IHxuYW1lfCB0byB0aGUgQysrIGdldHRlciBjYWxsYmFjayB8Y2Fs
bGJhY2t8LgogICAgIC8vIFRoaXMgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIHJlYWQtb25seSBwcm9w
ZXJ0aWVzLgotICAgIHZvaWQgYmluZEdldHRlckNhbGxiYWNrKGNvbnN0IHN0ZDo6c3RyaW5nJiwg
UGFzc093blB0cjxHZXR0ZXJDYWxsYmFjaz4pOworICAgIHZvaWQgYmluZEdldHRlckNhbGxiYWNr
KGNvbnN0IHN0ZDo6c3RyaW5nJiwgc3RkOjphdXRvX3B0cjxHZXR0ZXJDYWxsYmFjaz4pOwogCiAg
ICAgLy8gQSB3cmFwcGVyIGZvciBCaW5kR2V0dGVyQ2FsbGJhY2ssIHRvIHNpbXBsaWZ5IHRoZSBj
b21tb24gY2FzZSBvZiBiaW5kaW5nIGEKICAgICAvLyBwcm9wZXJ0eSBvbiB0aGUgY3VycmVudCBv
YmplY3QuIFRob3VnaCBub3QgdmVyaWZpZWQgaGVyZSwgdGhlIG1ldGhvZCBwYXJhbWV0ZXIKQEAg
LTE3Miw4ICsxNjksOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KICAgICB2
b2lkIGJpbmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgdm9pZCAoVDo6Km1ldGhv
ZCkoQ3BwVmFyaWFudCopKQogICAgIHsKLSAgICAgICAgT3duUHRyPEdldHRlckNhbGxiYWNrPiBj
YWxsYmFjayA9IGFkb3B0UHRyKG5ldyBNZW1iZXJHZXR0ZXJDYWxsYmFjazxUPihzdGF0aWNfY2Fz
dDxUKj4odGhpcyksIG1ldGhvZCkpOwotICAgICAgICBiaW5kR2V0dGVyQ2FsbGJhY2sobmFtZSwg
Y2FsbGJhY2sucmVsZWFzZSgpKTsKKyAgICAgICAgc3RkOjphdXRvX3B0cjxHZXR0ZXJDYWxsYmFj
az4gY2FsbGJhY2sobmV3IE1lbWJlckdldHRlckNhbGxiYWNrPFQ+KHN0YXRpY19jYXN0PFQqPih0
aGlzKSwgbWV0aG9kKSk7CisgICAgICAgIGJpbmRHZXR0ZXJDYWxsYmFjayhuYW1lLCBjYWxsYmFj
ayk7CiAgICAgfQogCiAgICAgLy8gQmluZCB0aGUgSmF2YXNjcmlwdCBwcm9wZXJ0eSBjYWxsZWQg
fG5hbWV8IHRvIGEgQ3BwVmFyaWFudC4KQEAgLTE5Myw3ICsxOTAsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgLy8gYXMgaXQgbWF5IGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3JzIChhIEphdmFTY3JpcHQg
b2JqZWN0IHdpdGggYQogICAgIC8vIGZhbGxiYWNrIGFsd2F5cyByZXR1cm5zIHRydWUgd2hlbiBj
aGVja2VkIGZvciBhIG1ldGhvZCdzCiAgICAgLy8gZXhpc3RlbmNlKS4KLSAgICB2b2lkIGJpbmRG
YWxsYmFja0NhbGxiYWNrKFBhc3NPd25QdHI8Q2FsbGJhY2s+IGZhbGxiYWNrQ2FsbGJhY2spCisg
ICAgdm9pZCBiaW5kRmFsbGJhY2tDYWxsYmFjayhzdGQ6OmF1dG9fcHRyPENhbGxiYWNrPiBmYWxs
YmFja0NhbGxiYWNrKQogICAgIHsKICAgICAgICAgbV9mYWxsYmFja0NhbGxiYWNrID0gZmFsbGJh
Y2tDYWxsYmFjazsKICAgICB9CkBAIC0yMDUsMjUgKzIwMiwyNCBAQCBwcm90ZWN0ZWQ6CiAgICAg
dGVtcGxhdGU8Y2xhc3MgVD4KICAgICB2b2lkIGJpbmRGYWxsYmFja01ldGhvZCh2b2lkIChUOjoq
bWV0aG9kKShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KikpCiAgICAgewotICAg
ICAgICBpZiAobWV0aG9kKSB7Ci0gICAgICAgICAgICBPd25QdHI8Q2FsbGJhY2s+IGNhbGxiYWNr
ID0gYWRvcHRQdHIobmV3IE1lbWJlckNhbGxiYWNrPFQ+KHN0YXRpY19jYXN0PFQqPih0aGlzKSwg
bWV0aG9kKSk7Ci0gICAgICAgICAgICBiaW5kRmFsbGJhY2tDYWxsYmFjayhjYWxsYmFjay5yZWxl
YXNlKCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGJpbmRGYWxsYmFja0NhbGxiYWNr
KG51bGxwdHIpOworICAgICAgICBpZiAobWV0aG9kKQorICAgICAgICAgICAgYmluZEZhbGxiYWNr
Q2FsbGJhY2soc3RkOjphdXRvX3B0cjxDYWxsYmFjaz4obmV3IE1lbWJlckNhbGxiYWNrPFQ+KHN0
YXRpY19jYXN0PFQqPih0aGlzKSwgbWV0aG9kKSkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBiaW5kRmFsbGJhY2tDYWxsYmFjayhzdGQ6OmF1dG9fcHRyPENhbGxiYWNrPigpKTsKICAgICB9
CiAKICAgICAvLyBTb21lIGZpZWxkcyBhcmUgcHJvdGVjdGVkIGJlY2F1c2Ugc29tZSB0ZXN0cyBk
ZXBlbmQgb24gYWNjZXNzaW5nIHRoZW0sCiAgICAgLy8gYnV0IG90aGVyd2lzZSB0aGV5IHNob3Vs
ZCBiZSBjb25zaWRlcmVkIHByaXZhdGUuCiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8TlBJZGVudGlm
aWVyLCBQcm9wZXJ0eUNhbGxiYWNrKj4gUHJvcGVydHlMaXN0OwotICAgIHR5cGVkZWYgSGFzaE1h
cDxOUElkZW50aWZpZXIsIENhbGxiYWNrKj4gTWV0aG9kTGlzdDsKKyAgICB0eXBlZGVmIHN0ZDo6
bWFwPE5QSWRlbnRpZmllciwgUHJvcGVydHlDYWxsYmFjayo+IFByb3BlcnR5TGlzdDsKKyAgICB0
eXBlZGVmIHN0ZDo6bWFwPE5QSWRlbnRpZmllciwgQ2FsbGJhY2sqPiBNZXRob2RMaXN0OwogICAg
IC8vIFRoZXNlIG1hcHMgYXNzb2NpYXRlIG5hbWVzIHdpdGggcHJvcGVydHkgYW5kIG1ldGhvZCBw
b2ludGVycyB0byBiZQogICAgIC8vIGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KICAgICBQcm9wZXJ0
eUxpc3QgbV9wcm9wZXJ0aWVzOwogICAgIE1ldGhvZExpc3QgbV9tZXRob2RzOwogCiAgICAgLy8g
VGhlIGNhbGxiYWNrIGdldHMgaW52b2tlZCB3aGVuIGEgY2FsbCBpcyBtYWRlIHRvIGFuIG5vbmV4
aXN0ZW50IG1ldGhvZC4KLSAgICBPd25QdHI8Q2FsbGJhY2s+IG1fZmFsbGJhY2tDYWxsYmFjazsK
KyAgICBzdGQ6OmF1dG9fcHRyPENhbGxiYWNrPiBtX2ZhbGxiYWNrQ2FsbGJhY2s7CiAKIHByaXZh
dGU6CiAgICAgLy8gTlBPYmplY3QgY2FsbGJhY2tzLgpAQCAtMjQyLDYgKzIzOCwxMCBAQCBwcml2
YXRlOgogICAgIC8vIFRydWUgaWYgb3VyIG5wX29iamVjdCBoYXMgYmVlbiBib3VuZCB0byBhIFdl
YkZyYW1lLCBpbiB3aGljaCBjYXNlIGl0IG11c3QKICAgICAvLyBiZSB1bnJlZ2lzdGVyZWQgd2l0
aCBWOCB3aGVuIHdlIGRlbGV0ZSBpdC4KICAgICBib29sIG1fYm91bmRUb0ZyYW1lOworCitwcml2
YXRlOgorICAgIENwcEJvdW5kQ2xhc3MoQ3BwQm91bmRDbGFzcyYpOworICAgIENwcEJvdW5kQ2xh
c3MmIG9wZXJhdG9yPShjb25zdCBDcHBCb3VuZENsYXNzJik7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBWYXJpYW50
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZh
cmlhbnQuY3BwCmluZGV4IDRkMjg1NmU3NDJkOTdjZGQ5YTAwODVlMTlhMmRkMTgxMTJmOGY1ZmMu
LmVmMmU5MmE2NWMwZWY0ZThjM2JkZjRlNWNkZDQ3MTU1YmU3NzJjMzUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZh
cmlhbnQuY3BwCkBAIC0zMSwxMCArMzEsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNwcFZhcmlhbnQuaCIKIAorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJX
ZWJCaW5kaW5ncy5oIgogI2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0yMjAsNyArMjE5LDcgQEAgdm9pZCBDcHBW
YXJpYW50OjpzZXQoTlBPYmplY3QqIG5ld1ZhbHVlKQogCiBzdHJpbmcgQ3BwVmFyaWFudDo6dG9T
dHJpbmcoKSBjb25zdAogewotICAgIEFTU0VSVChpc1N0cmluZygpKTsKKyAgICBXRUJLSVRfQVNT
RVJUKGlzU3RyaW5nKCkpOwogICAgIHJldHVybiBzdHJpbmcodmFsdWUuc3RyaW5nVmFsdWUuVVRG
OENoYXJhY3RlcnMsCiAgICAgICAgICAgICAgICAgICB2YWx1ZS5zdHJpbmdWYWx1ZS5VVEY4TGVu
Z3RoKTsKIH0KQEAgLTIzMSw3ICsyMzAsNyBAQCBpbnQzMl90IENwcFZhcmlhbnQ6OnRvSW50MzIo
KSBjb25zdAogICAgICAgICByZXR1cm4gdmFsdWUuaW50VmFsdWU7CiAgICAgaWYgKGlzRG91Ymxl
KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZS5kb3VibGVWYWx1
ZSk7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0yNDEsMjEgKzI0MCwyMSBAQCBkb3VibGUg
Q3BwVmFyaWFudDo6dG9Eb3VibGUoKSBjb25zdAogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
ZG91YmxlPih2YWx1ZS5pbnRWYWx1ZSk7CiAgICAgaWYgKGlzRG91YmxlKCkpCiAgICAgICAgIHJl
dHVybiB2YWx1ZS5kb3VibGVWYWx1ZTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgQ3Bw
VmFyaWFudDo6dG9Cb29sZWFuKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNCb29sKCkpOworICAg
IFdFQktJVF9BU1NFUlQoaXNCb29sKCkpOwogICAgIHJldHVybiB2YWx1ZS5ib29sVmFsdWU7CiB9
CiAKLVZlY3RvcjxzdHJpbmc+IENwcFZhcmlhbnQ6OnRvU3RyaW5nVmVjdG9yKCkgY29uc3QKK3Zl
Y3RvcjxzdHJpbmc+IENwcFZhcmlhbnQ6OnRvU3RyaW5nVmVjdG9yKCkgY29uc3QKIHsKIAotICAg
IEFTU0VSVChpc09iamVjdCgpKTsKLSAgICBWZWN0b3I8c3RyaW5nPiBzdHJpbmdWZWN0b3I7Cisg
ICAgV0VCS0lUX0FTU0VSVChpc09iamVjdCgpKTsKKyAgICB2ZWN0b3I8c3RyaW5nPiBzdHJpbmdW
ZWN0b3I7CiAgICAgTlBPYmplY3QqIG5wVmFsdWUgPSB2YWx1ZS5vYmplY3RWYWx1ZTsKICAgICBO
UElkZW50aWZpZXIgbGVuZ3RoSWQgPSBXZWJCaW5kaW5nczo6Z2V0U3RyaW5nSWRlbnRpZmllcigi
bGVuZ3RoIik7CiAKQEAgLTI5MCw3ICsyODksNyBAQCBWZWN0b3I8c3RyaW5nPiBDcHBWYXJpYW50
Ojp0b1N0cmluZ1ZlY3RvcigpIGNvbnN0CiAgICAgICAgIGlmIChOUFZBUklBTlRfSVNfU1RSSU5H
KGluZGV4VmFsdWUpKSB7CiAgICAgICAgICAgICBzdHJpbmcgaXRlbShOUFZBUklBTlRfVE9fU1RS
SU5HKGluZGV4VmFsdWUpLlVURjhDaGFyYWN0ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAg
TlBWQVJJQU5UX1RPX1NUUklORyhpbmRleFZhbHVlKS5VVEY4TGVuZ3RoKTsKLSAgICAgICAgICAg
IHN0cmluZ1ZlY3Rvci5hcHBlbmQoaXRlbSk7CisgICAgICAgICAgICBzdHJpbmdWZWN0b3IucHVz
aF9iYWNrKGl0ZW0pOwogICAgICAgICB9CiAgICAgICAgIFdlYkJpbmRpbmdzOjpyZWxlYXNlVmFy
aWFudFZhbHVlKCZpbmRleFZhbHVlKTsKICAgICB9CkBAIC0zMDAsNyArMjk5LDcgQEAgVmVjdG9y
PHN0cmluZz4gQ3BwVmFyaWFudDo6dG9TdHJpbmdWZWN0b3IoKSBjb25zdAogYm9vbCBDcHBWYXJp
YW50OjppbnZva2UoY29uc3Qgc3RyaW5nJiBtZXRob2QsIGNvbnN0IENwcFZhcmlhbnQqIGFyZ3Vt
ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsIENw
cFZhcmlhbnQmIHJlc3VsdCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNPYmplY3QoKSk7CisgICAg
V0VCS0lUX0FTU0VSVChpc09iamVjdCgpKTsKICAgICBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSA9
IFdlYkJpbmRpbmdzOjpnZXRTdHJpbmdJZGVudGlmaWVyKG1ldGhvZC5jX3N0cigpKTsKICAgICBO
UE9iamVjdCogbnBPYmplY3QgPSB2YWx1ZS5vYmplY3RWYWx1ZTsKICAgICBpZiAoIVdlYkJpbmRp
bmdzOjpoYXNNZXRob2QoMCwgbnBPYmplY3QsIG1ldGhvZE5hbWUpKQpAQCAtMzE0LDcgKzMxMyw3
IEBAIGJvb2wgQ3BwVmFyaWFudDo6aW52b2tlKGNvbnN0IHN0cmluZyYgbWV0aG9kLCBjb25zdCBD
cHBWYXJpYW50KiBhcmd1bWVudHMsCiBib29sIENwcFZhcmlhbnQ6Omludm9rZURlZmF1bHQoY29u
c3QgQ3BwVmFyaWFudCogYXJndW1lbnRzLCB1aW50MzJfdCBhcmd1bWVudENvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENwcFZhcmlhbnQmIHJlc3VsdCkgY29uc3QKIHsKLSAg
ICBBU1NFUlQoaXNPYmplY3QoKSk7CisgICAgV0VCS0lUX0FTU0VSVChpc09iamVjdCgpKTsKICAg
ICBOUE9iamVjdCogbnBPYmplY3QgPSB2YWx1ZS5vYmplY3RWYWx1ZTsKICAgICBOUFZhcmlhbnQg
cjsKICAgICBib29sIHN0YXR1cyA9IFdlYkJpbmRpbmdzOjppbnZva2VEZWZhdWx0KDAsIG5wT2Jq
ZWN0LCBhcmd1bWVudHMsIGFyZ3VtZW50Q291bnQsICZyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuaAppbmRl
eCBlODJhNzBiNjY3NTI0ZjdiMjZjMmQzYzMwYmY1YzFjMjIzZGZjZjc2Li5lOTI5NWEzYmU4OTVi
YTNlMGE5NzFiMGU5ZWE5ZDhkYWY4ZWNmYzI4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBWYXJpYW50LmgKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5oCkBAIC00NCw3
ICs0NCw3IEBACiAKICNpbmNsdWRlICJXZWJCaW5kaW5ncy5oIgogI2luY2x1ZGUgPHN0cmluZz4K
LSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8dmVjdG9yPgogCiBuYW1lc3BhY2Ug
V2ViVGVzdFJ1bm5lciB7CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0
b0Jvb2xlYW4oKSBjb25zdDsKICAgICAvLyBSZXR1cm5zIGEgdmVjdG9yIG9mIHN0cmluZ3MgZm9y
IHRoZSBzcGVjaWZpZWQgYXJndW1lbnQuIFRoaXMgaXMgdXNlZnVsCiAgICAgLy8gZm9yIGNvbnZl
cnRpbmcgYSBKYXZhU2NyaXB0IGFycmF5IG9mIHN0cmluZ3MgaW50byBhIHZlY3RvciBvZiBzdHJp
bmdzLgotICAgIFZlY3RvcjxzdGQ6OnN0cmluZz4gdG9TdHJpbmdWZWN0b3IoKSBjb25zdDsKKyAg
ICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdG9TdHJpbmdWZWN0b3IoKSBjb25zdDsKIAogICAg
IC8vIEludm9rZSBtZXRob2Qgb2YgdGhlIGdpdmVuIG5hbWUgb24gYW4gb2JqZWN0IHdpdGggdGhl
IHN1cHBsaWVkIGFyZ3VtZW50cy4KICAgICAvLyBUaGUgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJl
IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGhvZCBpcyB0byBiZQpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5k
ZXIuY3BwCmluZGV4IGFiNjAxOTNkNzcwODJkMzljNTU2ZjNlMzljMzNhMDA0Mzc5NjVmNWIuLmRi
YzA4YjIxMTk5MGZmYTVjOTU0MzE4MTZhZjc1NWZlOTkzNTg2ZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNl
bmRlci5jcHAKQEAgLTQ1LDE5ICs0NSwxOSBAQAogCiAjaW5jbHVkZSAiS2V5Q29kZU1hcHBpbmcu
aCIKICNpbmNsdWRlICJNb2NrU3BlbGxDaGVjay5oIgorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIK
ICNpbmNsdWRlICJXZWJDb250ZXh0TWVudURhdGEuaCIKICNpbmNsdWRlICJXZWJEcmFnT3BlcmF0
aW9uLmgiCiAjaW5jbHVkZSAiV2ViVGVzdERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiV2ViVG91Y2hQ
b2ludC5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKKyNpbmNsdWRlIDxkZXF1ZT4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUG9pbnQuaD4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlZlY3Rvci5o
PgotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4K
IAotI2lmIE9TKFdJTkRPV1MpCisjaWZkZWYgV0lOMzIKICNpbmNsdWRlICJ3aW4vV2ViSW5wdXRF
dmVudEZhY3RvcnkuaCIKICNlbmRpZgogCkBAIC05Nyw5ICs5Nyw5IEBAIFdlYkRyYWdEYXRhIGN1
cnJlbnREcmFnRGF0YTsKIFdlYkRyYWdPcGVyYXRpb24gY3VycmVudERyYWdFZmZlY3Q7CiBXZWJE
cmFnT3BlcmF0aW9uc01hc2sgY3VycmVudERyYWdFZmZlY3RzQWxsb3dlZDsKIGJvb2wgcmVwbGF5
aW5nU2F2ZWRFdmVudHMgPSBmYWxzZTsKLURlcXVlPFNhdmVkRXZlbnQ+IG1vdXNlRXZlbnRRdWV1
ZTsKK2RlcXVlPFNhdmVkRXZlbnQ+IG1vdXNlRXZlbnRRdWV1ZTsKIGludCB0b3VjaE1vZGlmaWVy
czsKLVZlY3RvcjxXZWJUb3VjaFBvaW50PiB0b3VjaFBvaW50czsKK3ZlY3RvcjxXZWJUb3VjaFBv
aW50PiB0b3VjaFBvaW50czsKIAogLy8gVGltZSBhbmQgcGxhY2Ugb2YgdGhlIGxhc3QgbW91c2Ug
dXAgZXZlbnQuCiBkb3VibGUgbGFzdENsaWNrVGltZVNlYyA9IDA7CkBAIC0xNTUsNyArMTU1LDcg
QEAgYm9vbCBhcHBseUtleU1vZGlmaWVyKGNvbnN0IHN0cmluZyYgbW9kaWZpZXJOYW1lLCBXZWJJ
bnB1dEV2ZW50KiBldmVudCkKICAgICBib29sIGlzU3lzdGVtS2V5ID0gZmFsc2U7CiAgICAgY29u
c3QgY2hhciogY2hhcmFjdGVycyA9IG1vZGlmaWVyTmFtZS5jX3N0cigpOwogICAgIGlmICghc3Ry
Y21wKGNoYXJhY3RlcnMsICJjdHJsS2V5IikKLSNpZiAhT1MoTUFDX09TX1gpCisjaWZuZGVmIF9f
QVBQTEVfXwogICAgICAgICB8fCAhc3RyY21wKGNoYXJhY3RlcnMsICJhZGRTZWxlY3Rpb25LZXki
KQogI2VuZGlmCiAgICAgICAgICkgewpAQCAtMTY0LDcgKzE2NCw3IEBAIGJvb2wgYXBwbHlLZXlN
b2RpZmllcihjb25zdCBzdHJpbmcmIG1vZGlmaWVyTmFtZSwgV2ViSW5wdXRFdmVudCogZXZlbnQp
CiAgICAgICAgIGV2ZW50LT5tb2RpZmllcnMgfD0gV2ViSW5wdXRFdmVudDo6U2hpZnRLZXk7CiAg
ICAgZWxzZSBpZiAoIXN0cmNtcChjaGFyYWN0ZXJzLCAiYWx0S2V5IikpIHsKICAgICAgICAgZXZl
bnQtPm1vZGlmaWVycyB8PSBXZWJJbnB1dEV2ZW50OjpBbHRLZXk7Ci0jaWYgIU9TKE1BQ19PU19Y
KQorI2lmbmRlZiBfX0FQUExFX18KICAgICAgICAgLy8gT24gV2luZG93cyBhbGwga2V5cyB3aXRo
IEFsdCBtb2RpZmllciB3aWxsIGJlIG1hcmtlZCBhcyBzeXN0ZW0ga2V5LgogICAgICAgICAvLyBX
ZSBrZWVwIHRoZSBzYW1lIGJlaGF2aW9yIG9uIExpbnV4IGFuZCBldmVyeXdoZXJlIG5vbi1NYWMs
IHNlZToKICAgICAgICAgLy8gV2ViS2l0L2Nocm9taXVtL3NyYy9ndGsvV2ViSW5wdXRFdmVudEZh
Y3RvcnkuY3BwCkBAIC0xNzIsOCArMTcyLDcgQEAgYm9vbCBhcHBseUtleU1vZGlmaWVyKGNvbnN0
IHN0cmluZyYgbW9kaWZpZXJOYW1lLCBXZWJJbnB1dEV2ZW50KiBldmVudCkKICAgICAgICAgLy8g
a2VwdCBpbiBzeW5jIHdpdGggdGhlIHJlbGF0ZWQgY29kZSBpbiBhYm92ZSBmaWxlLgogICAgICAg
ICBpc1N5c3RlbUtleSA9IHRydWU7CiAjZW5kaWYKLSNpZiBPUyhNQUNfT1NfWCkKLSAgICB9IGVs
c2UgaWYgKCFzdHJjbXAoY2hhcmFjdGVycywgIm1ldGFLZXkiKSB8fCAhc3RyY21wKGNoYXJhY3Rl
cnMsICJhZGRTZWxlY3Rpb25LZXkiKSkgeworI2lmZGVmIF9fQVBQTEVfXwogICAgICAgICBldmVu
dC0+bW9kaWZpZXJzIHw9IFdlYklucHV0RXZlbnQ6Ok1ldGFLZXk7CiAgICAgICAgIC8vIE9uIE1h
YyBvbmx5IGNvbW1hbmQga2V5IHByZXNzZXMgYXJlIG1hcmtlZCBhcyBzeXN0ZW0ga2V5LgogICAg
ICAgICAvLyBTZWUgdGhlIHJlbGF0ZWQgY29kZSBpbjogV2ViS2l0L2Nocm9taXVtL3NyYy9tYWMv
V2ViSW5wdXRFdmVudEZhY3RvcnkuY3BwCkBAIC0xOTEsOCArMTkwLDggQEAgYm9vbCBhcHBseUtl
eU1vZGlmaWVycyhjb25zdCBDcHBWYXJpYW50KiBhcmd1bWVudCwgV2ViSW5wdXRFdmVudCogZXZl
bnQpCiB7CiAgICAgYm9vbCBpc1N5c3RlbUtleSA9IGZhbHNlOwogICAgIGlmIChhcmd1bWVudC0+
aXNPYmplY3QoKSkgewotICAgICAgICBWZWN0b3I8c3RyaW5nPiBtb2RpZmllcnMgPSBhcmd1bWVu
dC0+dG9TdHJpbmdWZWN0b3IoKTsKLSAgICAgICAgZm9yIChWZWN0b3I8c3RyaW5nPjo6Y29uc3Rf
aXRlcmF0b3IgaSA9IG1vZGlmaWVycy5iZWdpbigpOyBpICE9IG1vZGlmaWVycy5lbmQoKTsgKytp
KQorICAgICAgICB2ZWN0b3I8c3RyaW5nPiBtb2RpZmllcnMgPSBhcmd1bWVudC0+dG9TdHJpbmdW
ZWN0b3IoKTsKKyAgICAgICAgZm9yICh2ZWN0b3I8c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaSA9
IG1vZGlmaWVycy5iZWdpbigpOyBpICE9IG1vZGlmaWVycy5lbmQoKTsgKytpKQogICAgICAgICAg
ICAgaXNTeXN0ZW1LZXkgfD0gYXBwbHlLZXlNb2RpZmllcigqaSwgZXZlbnQpOwogICAgIH0gZWxz
ZSBpZiAoYXJndW1lbnQtPmlzU3RyaW5nKCkpCiAgICAgICAgIGlzU3lzdGVtS2V5ID0gYXBwbHlL
ZXlNb2RpZmllcihhcmd1bWVudC0+dG9TdHJpbmcoKSwgZXZlbnQpOwpAQCAtMjA0LDcgKzIwMyw3
IEBAIGJvb2wgYXBwbHlLZXlNb2RpZmllcnMoY29uc3QgQ3BwVmFyaWFudCogYXJndW1lbnQsIFdl
YklucHV0RXZlbnQqIGV2ZW50KQogLy8gb2YgdGhlIGVkaXQgY29tbWFuZCB3aWxsIGJlIHN0b3Jl
ZCBpbiB8Km5hbWV8LgogYm9vbCBnZXRFZGl0Q29tbWFuZChjb25zdCBXZWJLZXlib2FyZEV2ZW50
JiBldmVudCwgc3RyaW5nKiBuYW1lKQogewotI2lmIE9TKE1BQ19PU19YKQorI2lmZGVmIF9fQVBQ
TEVfXwogICAgIC8vIFdlIG9ubHkgY2FyZXMgYWJvdXQgTGVmdCxSaWdodCxVcCxEb3duIGtleXMg
d2l0aCBDb21tYW5kIG9yIENvbW1hbmQrU2hpZnQKICAgICAvLyBtb2RpZmllcnMuIFRoZXNlIGtl
eSBldmVudHMgY29ycmVzcG9uZCB0byBzb21lIHNwZWNpYWwgbW92ZW1lbnQgYW5kCiAgICAgLy8g
c2VsZWN0aW9uIGVkaXRvciBjb21tYW5kcywgYW5kIHdhcyBzdXBwb3NlZCB0byBiZSBoYW5kbGVk
IGluCkBAIC0zMDYsNyArMzA1LDcgQEAgRXZlbnRTZW5kZXI6OkV2ZW50U2VuZGVyKCkKICAgICAv
LyBXaGVuIHNldCB0byB0cnVlICh0aGUgZGVmYXVsdCB2YWx1ZSksIHdlIGJhdGNoIG1vdXNlIG1v
dmUgYW5kIG1vdXNlIHVwCiAgICAgLy8gZXZlbnRzIHNvIHdlIGNhbiBzaW11bGF0ZSBkcmFnICYg
ZHJvcC4KICAgICBiaW5kUHJvcGVydHkoImRyYWdNb2RlIiwgJmRyYWdNb2RlKTsKLSNpZiBPUyhX
SU5ET1dTKQorI2lmZGVmIFdJTjMyCiAgICAgYmluZFByb3BlcnR5KCJXTV9LRVlET1dOIiwgJndt
S2V5RG93bik7CiAgICAgYmluZFByb3BlcnR5KCJXTV9LRVlVUCIsICZ3bUtleVVwKTsKICAgICBi
aW5kUHJvcGVydHkoIldNX0NIQVIiLCAmd21DaGFyKTsKQEAgLTMyMSwxMyArMzIwLDEzIEBAIEV2
ZW50U2VuZGVyOjpFdmVudFNlbmRlcigpCiB2b2lkIEV2ZW50U2VuZGVyOjpyZXNldCgpCiB7CiAg
ICAgLy8gVGhlIHRlc3Qgc2hvdWxkIGhhdmUgZmluaXNoZWQgYSBkcmFnIGFuZCB0aGUgbW91c2Ug
YnV0dG9uIHN0YXRlLgotICAgIEFTU0VSVChjdXJyZW50RHJhZ0RhdGEuaXNOdWxsKCkpOworICAg
IFdFQktJVF9BU1NFUlQoY3VycmVudERyYWdEYXRhLmlzTnVsbCgpKTsKICAgICBjdXJyZW50RHJh
Z0RhdGEucmVzZXQoKTsKICAgICBjdXJyZW50RHJhZ0VmZmVjdCA9IFdlYktpdDo6V2ViRHJhZ09w
ZXJhdGlvbk5vbmU7CiAgICAgY3VycmVudERyYWdFZmZlY3RzQWxsb3dlZCA9IFdlYktpdDo6V2Vi
RHJhZ09wZXJhdGlvbk5vbmU7CiAgICAgcHJlc3NlZEJ1dHRvbiA9IFdlYk1vdXNlRXZlbnQ6OkJ1
dHRvbk5vbmU7CiAgICAgZHJhZ01vZGUuc2V0KHRydWUpOwotI2lmIE9TKFdJTkRPV1MpCisjaWZk
ZWYgV0lOMzIKICAgICB3bUtleURvd24uc2V0KFdNX0tFWURPV04pOwogICAgIHdtS2V5VXAuc2V0
KFdNX0tFWVVQKTsKICAgICB3bUNoYXIuc2V0KFdNX0NIQVIpOwpAQCAtNDE3LDcgKzQxNiw3IEBA
IHZvaWQgRXZlbnRTZW5kZXI6Om1vdXNlRG93bihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCogcmVzdWx0CiAgICAgd2VidmlldygpLT5sYXlvdXQoKTsKIAogICAg
IGludCBidXR0b25OdW1iZXIgPSBnZXRCdXR0b25OdW1iZXJGcm9tU2luZ2xlQXJnKGFyZ3VtZW50
cyk7Ci0gICAgQVNTRVJUKGJ1dHRvbk51bWJlciAhPSAtMSk7CisgICAgV0VCS0lUX0FTU0VSVChi
dXR0b25OdW1iZXIgIT0gLTEpOwogCiAgICAgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvblR5
cGUgPSBnZXRCdXR0b25UeXBlRnJvbUJ1dHRvbk51bWJlcihidXR0b25OdW1iZXIpOwogCkBAIC00
MzksNyArNDM4LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6bW91c2VVcChjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogICAgIHdlYnZpZXcoKS0+bGF5
b3V0KCk7CiAKICAgICBpbnQgYnV0dG9uTnVtYmVyID0gZ2V0QnV0dG9uTnVtYmVyRnJvbVNpbmds
ZUFyZyhhcmd1bWVudHMpOwotICAgIEFTU0VSVChidXR0b25OdW1iZXIgIT0gLTEpOworICAgIFdF
QktJVF9BU1NFUlQoYnV0dG9uTnVtYmVyICE9IC0xKTsKIAogICAgIFdlYk1vdXNlRXZlbnQ6OkJ1
dHRvbiBidXR0b25UeXBlID0gZ2V0QnV0dG9uVHlwZUZyb21CdXR0b25OdW1iZXIoYnV0dG9uTnVt
YmVyKTsKIApAQCAtNDQ3LDcgKzQ0Niw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6Om1vdXNlVXAoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKICAgICAg
ICAgU2F2ZWRFdmVudCBzYXZlZEV2ZW50OwogICAgICAgICBzYXZlZEV2ZW50LnR5cGUgPSBTYXZl
ZEV2ZW50OjpNb3VzZVVwOwogICAgICAgICBzYXZlZEV2ZW50LmJ1dHRvblR5cGUgPSBidXR0b25U
eXBlOwotICAgICAgICBtb3VzZUV2ZW50UXVldWUuYXBwZW5kKHNhdmVkRXZlbnQpOworICAgICAg
ICBtb3VzZUV2ZW50UXVldWUucHVzaF9iYWNrKHNhdmVkRXZlbnQpOwogICAgICAgICByZXBsYXlT
YXZlZEV2ZW50cygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFdlYk1vdXNlRXZlbnQgZXZlbnQ7
CkBAIC01MDQsNyArNTAzLDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6bW91c2VNb3ZlVG8oY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3UKICAgICAgICAgU2F2
ZWRFdmVudCBzYXZlZEV2ZW50OwogICAgICAgICBzYXZlZEV2ZW50LnR5cGUgPSBTYXZlZEV2ZW50
OjpNb3VzZU1vdmU7CiAgICAgICAgIHNhdmVkRXZlbnQucG9zID0gbW91c2VQb3M7Ci0gICAgICAg
IG1vdXNlRXZlbnRRdWV1ZS5hcHBlbmQoc2F2ZWRFdmVudCk7CisgICAgICAgIG1vdXNlRXZlbnRR
dWV1ZS5wdXNoX2JhY2soc2F2ZWRFdmVudCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgV2ViTW91
c2VFdmVudCBldmVudDsKICAgICAgICAgaW5pdE1vdXNlRXZlbnQoV2ViSW5wdXRFdmVudDo6TW91
c2VNb3ZlLCBwcmVzc2VkQnV0dG9uLCBtb3VzZVBvcywgJmV2ZW50LCBnZXRDdXJyZW50RXZlbnRU
aW1lU2VjKG1fZGVsZWdhdGUpKTsKQEAgLTU5Nyw3ICs1OTYsNyBAQCB2b2lkIEV2ZW50U2VuZGVy
OjprZXlEb3duKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCiAgICAgICAgIH0KICAgICAgICAgaWYgKCFjb2RlKSB7CiAgICAgICAgICAgICBXZWJT
dHJpbmcgd2ViQ29kZVN0ciA9IFdlYlN0cmluZzo6ZnJvbVVURjgoY29kZVN0ci5kYXRhKCksIGNv
ZGVTdHIuc2l6ZSgpKTsKLSAgICAgICAgICAgIEFTU0VSVCh3ZWJDb2RlU3RyLmxlbmd0aCgpID09
IDEpOworICAgICAgICAgICAgV0VCS0lUX0FTU0VSVCh3ZWJDb2RlU3RyLmxlbmd0aCgpID09IDEp
OwogICAgICAgICAgICAgdGV4dCA9IGNvZGUgPSB3ZWJDb2RlU3RyLmRhdGEoKVswXTsKICAgICAg
ICAgICAgIG5lZWRzU2hpZnRLZXlNb2RpZmllciA9IG5lZWRzU2hpZnRNb2RpZmllcihjb2RlKTsK
ICAgICAgICAgICAgIGlmICgoY29kZSAmIDB4RkYpID49ICdhJyAmJiAoY29kZSAmIDB4RkYpIDw9
ICd6JykKQEAgLTYxNSw3ICs2MTQsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjprZXlEb3duKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiAgICAgZXZl
bnREb3duLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3duOwogICAgIGV2ZW50RG93bi5t
b2RpZmllcnMgPSAwOwogICAgIGV2ZW50RG93bi53aW5kb3dzS2V5Q29kZSA9IGNvZGU7Ci0jaWYg
T1MoTElOVVgpICYmIFVTRShHVEspCisjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIFVTRShHVEsp
CiAgICAgZXZlbnREb3duLm5hdGl2ZUtleUNvZGUgPSBOYXRpdmVLZXlDb2RlRm9yV2luZG93c0tl
eUNvZGUoY29kZSk7CiAjZW5kaWYKIApAQCAtNjc3LDcgKzY3Niw3IEBAIHZvaWQgRXZlbnRTZW5k
ZXI6OmRpc3BhdGNoTWVzc2FnZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3Bw
VmFyaWFudCoKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKIAotI2lmIE9TKFdJTkRPV1MpCisj
aWZkZWYgV0lOMzIKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA9PSAzKSB7CiAgICAgICAgIC8v
IEdyYWIgdGhlIG1lc3NhZ2UgaWQgdG8gc2VlIGlmIHdlIG5lZWQgdG8gZGlzcGF0Y2ggaXQuCiAg
ICAgICAgIGludCBtc2cgPSBhcmd1bWVudHNbMF0udG9JbnQzMigpOwpAQCAtNjkzLDcgKzY5Miw3
IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmRpc3BhdGNoTWVzc2FnZShjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAgICAgICAgdW5zaWduZWQgbG9uZyBscGFyYW0g
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7CiAg
ICAgICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVudChXZWJJbnB1dEV2ZW50RmFjdG9yeTo6
a2V5Ym9hcmRFdmVudCgwLCBtc2csIGFyZ3VtZW50c1sxXS50b0ludDMyKCksIGxwYXJhbSkpOwog
ICAgIH0gZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiB9CiAKQEAgLTcxNyw3ICs3MTYsNyBAQCB2
b2lkIEV2ZW50U2VuZGVyOjpsZWFwRm9yd2FyZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCogcmVzdQogICAgICAgICBTYXZlZEV2ZW50IHNhdmVkRXZlbnQ7CiAg
ICAgICAgIHNhdmVkRXZlbnQudHlwZSA9IFNhdmVkRXZlbnQ6OkxlYXBGb3J3YXJkOwogICAgICAg
ICBzYXZlZEV2ZW50Lm1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kczsKLSAgICAgICAgbW91c2VF
dmVudFF1ZXVlLmFwcGVuZChzYXZlZEV2ZW50KTsKKyAgICAgICAgbW91c2VFdmVudFF1ZXVlLnB1
c2hfYmFjayhzYXZlZEV2ZW50KTsKICAgICB9IGVsc2UKICAgICAgICAgZG9MZWFwRm9yd2FyZCht
aWxsaXNlY29uZHMpOwogfQpAQCAtNzc4LDggKzc3Nyw5IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmNv
bnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBD
cHBWCiB2b2lkIEV2ZW50U2VuZGVyOjpyZXBsYXlTYXZlZEV2ZW50cygpCiB7CiAgICAgcmVwbGF5
aW5nU2F2ZWRFdmVudHMgPSB0cnVlOwotICAgIHdoaWxlICghbW91c2VFdmVudFF1ZXVlLmlzRW1w
dHkoKSkgewotICAgICAgICBTYXZlZEV2ZW50IGUgPSBtb3VzZUV2ZW50UXVldWUudGFrZUZpcnN0
KCk7CisgICAgd2hpbGUgKCFtb3VzZUV2ZW50UXVldWUuZW1wdHkoKSkgeworICAgICAgICBTYXZl
ZEV2ZW50IGUgPSBtb3VzZUV2ZW50UXVldWUuZnJvbnQoKTsKKyAgICAgICAgbW91c2VFdmVudFF1
ZXVlLnBvcF9mcm9udCgpOwogCiAgICAgICAgIHN3aXRjaCAoZS50eXBlKSB7CiAgICAgICAgIGNh
c2UgU2F2ZWRFdmVudDo6TW91c2VNb3ZlOiB7CkBAIC03OTgsNyArNzk4LDcgQEAgdm9pZCBFdmVu
dFNlbmRlcjo6cmVwbGF5U2F2ZWRFdmVudHMoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC04MTIsNyArODEyLDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6cmVwbGF5U2F2ZWRFdmVu
dHMoKQogLy8gICBhbHNvIG1ha2VzIHNlbnNlLiBUaGlzIGZ1bmN0aW9uIGlzIGRvaW5nIHN1Y2gg
Zm9yIHNvbWUgZmxhZ3MuCiAvLyAtIFNvbWUgdGVzdCBldmVuIGNoZWNrcyBhY3R1YWwgc3RyaW5n
IGNvbnRlbnQuIFNvIHByb3ZpZGluZyBpdCB3b3VsZCBiZSBhbHNvIGhlbHBmdWwuCiAvLwotc3Rh
dGljIFZlY3RvcjxXZWJTdHJpbmc+IG1ha2VNZW51SXRlbVN0cmluZ3NGb3IoV2ViQ29udGV4dE1l
bnVEYXRhKiBjb250ZXh0TWVudSwgV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSkKK3N0YXRpYyB2
ZWN0b3I8V2ViU3RyaW5nPiBtYWtlTWVudUl0ZW1TdHJpbmdzRm9yKFdlYkNvbnRleHRNZW51RGF0
YSogY29udGV4dE1lbnUsIFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiAgICAgLy8gVGhl
c2UgY29uc3RhbnRzIGFyZSBiYXNlZCBvbiBTYWZhcmkncyBjb250ZXh0IG1lbnUgYmVjYXVzZSB0
ZXN0cyBhcmUgbWFkZSBmb3IgaXQuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5vbkVkaXRhYmxl
TWVudVN0cmluZ3NbXSA9IHsgIkJhY2siLCAiUmVsb2FkIFBhZ2UiLCAiT3BlbiBpbiBEYXNoYmFv
cmQiLCAiPHNlcGFyYXRvcj4iLCAiVmlldyBTb3VyY2UiLCAiU2F2ZSBQYWdlIEFzIiwgIlByaW50
IFBhZ2UiLCAiSW5zcGVjdCBFbGVtZW50IiwgMCB9OwpAQCAtODIwLDIwICs4MjAsMjAgQEAgc3Rh
dGljIFZlY3RvcjxXZWJTdHJpbmc+IG1ha2VNZW51SXRlbVN0cmluZ3NGb3IoV2ViQ29udGV4dE1l
bnVEYXRhKiBjb250ZXh0TWVudSwKIAogICAgIC8vIFRoaXMgaXMgcG9zc2libGUgYmVjYXVzZSBt
b3VzZSBldmVudHMgYXJlIGNhbmNlbGxlYWJsZS4KICAgICBpZiAoIWNvbnRleHRNZW51KQotICAg
ICAgICByZXR1cm4gVmVjdG9yPFdlYlN0cmluZz4oKTsKKyAgICAgICAgcmV0dXJuIHZlY3RvcjxX
ZWJTdHJpbmc+KCk7CiAKLSAgICBWZWN0b3I8V2ViU3RyaW5nPiBzdHJpbmdzOworICAgIHZlY3Rv
cjxXZWJTdHJpbmc+IHN0cmluZ3M7CiAKICAgICBpZiAoY29udGV4dE1lbnUtPmlzRWRpdGFibGUp
IHsKICAgICAgICAgZm9yIChjb25zdCBjaGFyKiogaXRlbSA9IGVkaXRhYmxlTWVudVN0cmluZ3M7
ICppdGVtOyArK2l0ZW0pIAotICAgICAgICAgICAgc3RyaW5ncy5hcHBlbmQoV2ViU3RyaW5nOjpm
cm9tVVRGOCgqaXRlbSkpOworICAgICAgICAgICAgc3RyaW5ncy5wdXNoX2JhY2soV2ViU3RyaW5n
Ojpmcm9tVVRGOCgqaXRlbSkpOwogICAgICAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBzdWdnZXN0
aW9uczsKICAgICAgICAgTW9ja1NwZWxsQ2hlY2s6OmZpbGxTdWdnZXN0aW9uTGlzdChjb250ZXh0
TWVudS0+bWlzc3BlbGxlZFdvcmQsICZzdWdnZXN0aW9ucyk7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3VnZ2VzdGlvbnMuc2l6ZSgpOyArK2kpIAotICAgICAgICAgICAgc3RyaW5n
cy5hcHBlbmQoc3VnZ2VzdGlvbnNbaV0pOworICAgICAgICAgICAgc3RyaW5ncy5wdXNoX2JhY2so
c3VnZ2VzdGlvbnNbaV0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvciAoY29uc3QgY2hhcioq
IGl0ZW0gPSBub25FZGl0YWJsZU1lbnVTdHJpbmdzOyAqaXRlbTsgKytpdGVtKSAKLSAgICAgICAg
ICAgIHN0cmluZ3MuYXBwZW5kKFdlYlN0cmluZzo6ZnJvbVVURjgoKml0ZW0pKTsKKyAgICAgICAg
ICAgIHN0cmluZ3MucHVzaF9iYWNrKFdlYlN0cmluZzo6ZnJvbVVURjgoKml0ZW0pKTsKICAgICB9
CiAKICAgICByZXR1cm4gc3RyaW5nczsKQEAgLTg1OCw3ICs4NTgsNyBAQCB2b2lkIEV2ZW50U2Vu
ZGVyOjpjb250ZXh0Q2xpY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqIHJlcwogICAgIGluaXRNb3VzZUV2ZW50KFdlYklucHV0RXZlbnQ6Ok1vdXNlRG93biwg
V2ViTW91c2VFdmVudDo6QnV0dG9uUmlnaHQsIGxhc3RNb3VzZVBvcywgJmV2ZW50LCBnZXRDdXJy
ZW50RXZlbnRUaW1lU2VjKG1fZGVsZWdhdGUpKTsKICAgICB3ZWJ2aWV3KCktPmhhbmRsZUlucHV0
RXZlbnQoZXZlbnQpOwogCi0jaWYgT1MoV0lORE9XUykKKyNpZmRlZiBXSU4zMgogICAgIGluaXRN
b3VzZUV2ZW50KFdlYklucHV0RXZlbnQ6Ok1vdXNlVXAsIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvblJp
Z2h0LCBsYXN0TW91c2VQb3MsICZldmVudCwgZ2V0Q3VycmVudEV2ZW50VGltZVNlYyhtX2RlbGVn
YXRlKSk7CiAgICAgd2VidmlldygpLT5oYW5kbGVJbnB1dEV2ZW50KGV2ZW50KTsKIApAQCAtOTE1
LDcgKzkxNSw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnNjaGVkdWxlQXN5bmNocm9ub3VzS2V5RG93
bihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywKIHZvaWQgRXZlbnRTZW5kZXI6OmJl
Z2luRHJhZ1dpdGhGaWxlcyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWFudCogcmVzdWx0KQogewogICAgIGN1cnJlbnREcmFnRGF0YS5pbml0aWFsaXplKCk7Ci0gICAg
VmVjdG9yPHN0cmluZz4gZmlsZXMgPSBhcmd1bWVudHNbMF0udG9TdHJpbmdWZWN0b3IoKTsKKyAg
ICB2ZWN0b3I8c3RyaW5nPiBmaWxlcyA9IGFyZ3VtZW50c1swXS50b1N0cmluZ1ZlY3RvcigpOwog
ICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IGFic29sdXRlRmlsZW5hbWVzKGZpbGVzLnNpemUoKSk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlcy5zaXplKCk7ICsraSkgewogICAgICAg
ICBXZWJEcmFnRGF0YTo6SXRlbSBpdGVtOwpAQCAtOTU0LDcgKzk1NCw3IEBAIHZvaWQgRXZlbnRT
ZW5kZXI6OmFkZFRvdWNoUG9pbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENw
cFZhcmlhbnQqIHJlCiAgICAgICAgICAgICBsb3dlc3RJZCsrOwogICAgIH0KICAgICB0b3VjaFBv
aW50LmlkID0gbG93ZXN0SWQ7Ci0gICAgdG91Y2hQb2ludHMuYXBwZW5kKHRvdWNoUG9pbnQpOwor
ICAgIHRvdWNoUG9pbnRzLnB1c2hfYmFjayh0b3VjaFBvaW50KTsKIH0KIAogdm9pZCBFdmVudFNl
bmRlcjo6Y2xlYXJUb3VjaFBvaW50cyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
KiByZXN1bHQpCkBAIC05NjgsNyArOTY4LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6cmVsZWFzZVRv
dWNoUG9pbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQKICAg
ICByZXN1bHQtPnNldE51bGwoKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGluZGV4ID0gYXJndW1l
bnRzWzBdLnRvSW50MzIoKTsKLSAgICBBU1NFUlQoaW5kZXggPCB0b3VjaFBvaW50cy5zaXplKCkp
OworICAgIFdFQktJVF9BU1NFUlQoaW5kZXggPCB0b3VjaFBvaW50cy5zaXplKCkpOwogCiAgICAg
V2ViVG91Y2hQb2ludCogdG91Y2hQb2ludCA9ICZ0b3VjaFBvaW50c1tpbmRleF07CiAgICAgdG91
Y2hQb2ludC0+c3RhdGUgPSBXZWJUb3VjaFBvaW50OjpTdGF0ZVJlbGVhc2VkOwpAQCAtMTAwMCw3
ICsxMDAwLDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6dXBkYXRlVG91Y2hQb2ludChjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAgICByZXN1bHQtPnNldE51bGwo
KTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGluZGV4ID0gYXJndW1lbnRzWzBdLnRvSW50MzIoKTsK
LSAgICBBU1NFUlQoaW5kZXggPCB0b3VjaFBvaW50cy5zaXplKCkpOworICAgIFdFQktJVF9BU1NF
UlQoaW5kZXggPCB0b3VjaFBvaW50cy5zaXplKCkpOwogCiAgICAgV2ViUG9pbnQgcG9zaXRpb24o
YXJndW1lbnRzWzFdLnRvSW50MzIoKSwgYXJndW1lbnRzWzJdLnRvSW50MzIoKSk7CiAgICAgV2Vi
VG91Y2hQb2ludCogdG91Y2hQb2ludCA9ICZ0b3VjaFBvaW50c1tpbmRleF07CkBAIC0xMDE0LDcg
KzEwMTQsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpjYW5jZWxUb3VjaFBvaW50KGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogICAgIHJlc3VsdC0+c2V0TnVsbCgp
OwogCiAgICAgY29uc3QgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudHNbMF0udG9JbnQzMigpOwot
ICAgIEFTU0VSVChpbmRleCA8IHRvdWNoUG9pbnRzLnNpemUoKSk7CisgICAgV0VCS0lUX0FTU0VS
VChpbmRleCA8IHRvdWNoUG9pbnRzLnNpemUoKSk7CiAKICAgICBXZWJUb3VjaFBvaW50KiB0b3Vj
aFBvaW50ID0gJnRvdWNoUG9pbnRzW2luZGV4XTsKICAgICB0b3VjaFBvaW50LT5zdGF0ZSA9IFdl
YlRvdWNoUG9pbnQ6OlN0YXRlQ2FuY2VsbGVkOwpAQCAtMTAyMiw3ICsxMDIyLDcgQEAgdm9pZCBF
dmVudFNlbmRlcjo6Y2FuY2VsVG91Y2hQb2ludChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCoKIAogdm9pZCBFdmVudFNlbmRlcjo6c2VuZEN1cnJlbnRUb3VjaEV2
ZW50KGNvbnN0IFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKIHsKLSAgICBBU1NFUlQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFdlYlRvdWNoRXZlbnQ6OnRvdWNoZXNMZW5ndGhDYXApID4gdG91Y2hQ
b2ludHMuc2l6ZSgpKTsKKyAgICBXRUJLSVRfQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihX
ZWJUb3VjaEV2ZW50Ojp0b3VjaGVzTGVuZ3RoQ2FwKSA+IHRvdWNoUG9pbnRzLnNpemUoKSk7CiAg
ICAgd2VidmlldygpLT5sYXlvdXQoKTsKIAogICAgIFdlYlRvdWNoRXZlbnQgdG91Y2hFdmVudDsK
QEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnNlbmRDdXJyZW50VG91Y2hF
dmVudChjb25zdCBXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUpCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHRvdWNoUG9pbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFdlYlRvdWNoUG9p
bnQqIHRvdWNoUG9pbnQgPSAmdG91Y2hQb2ludHNbaV07CiAgICAgICAgIGlmICh0b3VjaFBvaW50
LT5zdGF0ZSA9PSBXZWJUb3VjaFBvaW50OjpTdGF0ZVJlbGVhc2VkKSB7Ci0gICAgICAgICAgICB0
b3VjaFBvaW50cy5yZW1vdmUoaSk7CisgICAgICAgICAgICB0b3VjaFBvaW50cy5lcmFzZSh0b3Vj
aFBvaW50cy5iZWdpbigpICsgaSk7CiAgICAgICAgICAgICAtLWk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgdG91Y2hQb2ludC0+c3RhdGUgPSBXZWJUb3VjaFBvaW50OjpTdGF0ZVN0YXRp
b25hcnk7CkBAIC0xMjU3LDcgKzEyNTcsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlRXZl
bnQoV2ViSW5wdXRFdmVudDo6VHlwZSB0eXBlLCBjb25zdCBDcHBBcmd1bWVudExpc3QmCiAgICAg
ICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAK
ICAgICBldmVudC5nbG9iYWxYID0gZXZlbnQueDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmNw
cAppbmRleCBjMzM5ZjJmMmJjZDI1YTg0MDZjMzQ2N2Y4ODRlOGZiYTUzNDY5NzY1Li4yMTE1ODZl
MzVlMGM2ZjdhMjg1ZGM5NmU2Njc2MTk4ZmUwMGM1OWQ4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFwcGluZy5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1h
cHBpbmcuY3BwCkBAIC0zMSwxMyArMzEsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJLZXlDb2RlTWFwcGluZy5oIgogCi0jaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+Ci0K
IG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAogaW50IE5hdGl2ZUtleUNvZGVGb3JXaW5kb3dz
S2V5Q29kZShpbnQga2V5c3ltKQogewotI2lmIE9TKExJTlVYKSAmJiBVU0UoR1RLKQorI2lmIGRl
ZmluZWQoX19saW51eF9fKSAmJiBVU0UoR1RLKQogICAgIC8vIFNlZSAvdXNyL3NoYXJlL1gxMS94
a2Iva2V5Y29kZXMvKgogICAgIHN0YXRpYyBjb25zdCBpbnQgYXNjaWlUb0tleUNvZGVbXSA9IHsK
ICAgICAgICAgMCwKQEAgLTI0MCw4ICsyMzgsNyBAQCBpbnQgTmF0aXZlS2V5Q29kZUZvcldpbmRv
d3NLZXlDb2RlKGludCBrZXlzeW0pCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKGtleXN5bSk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGtleXN5
bSAtIGtleXN5bTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNrLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suY3Bw
CmluZGV4IDdkNDllZDJmYWEzODhlYzY4ZGU2MDdlNWEwZTNjZTYxMDUzMWYyN2IuLmMzZWVkMjU1
ZTY1NDFkMTFmZjJjZmMwNDM1OGU1ZDZkNzBiYWEyZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFt
bWFyQ2hlY2suY3BwCkBAIC0zMSwyMCArMzEsMjIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJNb2NrR3JhbW1hckNoZWNrLmgiCiAKKyNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViQ1N0cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViVGV4
dENoZWNraW5nUmVzdWx0LmgiCi0KLSNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgotI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Cisj
aW5jbHVkZSA8YWxnb3JpdGhtPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCi1ib29sIE1vY2tHcmFt
bWFyQ2hlY2s6OmNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgVmVj
dG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4qIHJlc3VsdHMpCitib29sIE1vY2tHcmFtbWFyQ2hl
Y2s6OmNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgdmVjdG9yPFdl
YlRleHRDaGVja2luZ1Jlc3VsdD4qIHJlc3VsdHMpCiB7Ci0gICAgQVNTRVJUKHJlc3VsdHMpOwot
ICAgIFdURjo6U3RyaW5nIHN0cmluZ1RleHQodGV4dC5kYXRhKCksIHRleHQubGVuZ3RoKCkpOwot
ICAgIGlmIChzdHJpbmdUZXh0LmZpbmQoaXNBU0NJSUFscGhhKSA9PSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KC0xKSkKKyAgICBXRUJLSVRfQVNTRVJUKHJlc3VsdHMpOworICAgIHN0cmluZyBzdHJpbmdU
ZXh0ID0gdGV4dC51dGY4KCk7CisgICAgaWYgKGZpbmRfaWYoc3RyaW5nVGV4dC5iZWdpbigpLCBz
dHJpbmdUZXh0LmVuZCgpLCBpc0FTQ0lJQWxwaGEpID09IHN0cmluZ1RleHQuZW5kKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRmluZCBtYXRjaGluZyBncmFtbWF0aWNhbCBlcnJv
cnMgZnJvbSBrbm93biBvbmVzLiBUaGlzIGZ1bmN0aW9uIGhhcyB0bwpAQCAtNjksMTAgKzcxLDEy
IEBAIGJvb2wgTW9ja0dyYW1tYXJDaGVjazo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgV2Vi
U3RyaW5nJiB0ZXh0LCBWZWN0b3I8V2ViVGV4CiAgICAgfTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IEFSUkFZU0laRV9VTlNBRkUoZ3JhbW1hckVycm9ycyk7ICsraSkgewogICAgICAgICBp
bnQgb2Zmc2V0ID0gMDsKLSAgICAgICAgd2hpbGUgKChvZmZzZXQgPSBzdHJpbmdUZXh0LmZpbmQo
Z3JhbW1hckVycm9yc1tpXS50ZXh0LCBvZmZzZXQpKSAhPSAtMSkgewotICAgICAgICAgICAgcmVz
dWx0cy0+YXBwZW5kKFdlYlRleHRDaGVja2luZ1Jlc3VsdChXZWJUZXh0Q2hlY2tpbmdUeXBlR3Jh
bW1hciwgb2Zmc2V0ICsgZ3JhbW1hckVycm9yc1tpXS5sb2NhdGlvbiwgZ3JhbW1hckVycm9yc1tp
XS5sZW5ndGgpKTsKKyAgICAgICAgd2hpbGUgKChvZmZzZXQgPSBzdHJpbmdUZXh0LmZpbmQoZ3Jh
bW1hckVycm9yc1tpXS50ZXh0LCBvZmZzZXQpKSAhPSBzdHJpbmc6Om5wb3MpIHsKKyAgICAgICAg
ICAgIHJlc3VsdHMtPnB1c2hfYmFjayhXZWJUZXh0Q2hlY2tpbmdSZXN1bHQoV2ViVGV4dENoZWNr
aW5nVHlwZUdyYW1tYXIsIG9mZnNldCArIGdyYW1tYXJFcnJvcnNbaV0ubG9jYXRpb24sIGdyYW1t
YXJFcnJvcnNbaV0ubGVuZ3RoKSk7CiAgICAgICAgICAgICBvZmZzZXQgKz0gZ3JhbW1hckVycm9y
c1tpXS5sZW5ndGg7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCit9
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9Nb2NrR3JhbW1hckNoZWNrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNrLmgKaW5kZXggNjQyNzFiM2ZhM2MyYzAxYWMxMzZj
OGUxMDMwNzE2MTkyNmQzZTk4My4uYTE4M2RjY2IwNzRjNzkwYmZhY2FjM2Y3Nzk4NzVkOWRhODgx
OTk1YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvTW9ja0dyYW1tYXJDaGVjay5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suaApAQCAtMzEsOCArMzEsNyBAQAog
I2lmbmRlZiBNb2NrR3JhbW1hckNoZWNrX2gKICNkZWZpbmUgTW9ja0dyYW1tYXJDaGVja19oCiAK
LSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisjaW5jbHVkZSA8dmVjdG9yPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDEsNiArNDAs
OCBAQCBzdHJ1Y3QgV2ViVGV4dENoZWNraW5nUmVzdWx0OwogCiB9CiAKK25hbWVzcGFjZSBXZWJU
ZXN0UnVubmVyIHsKKwogLy8gQSBtb2NrIGltcGxlbWVudGF0aW9uIG9mIGEgZ3JhbW1hci1jaGVj
a2VyIHVzZWQgZm9yIFdlYktpdCB0ZXN0cy4gVGhpcyBjbGFzcwogLy8gb25seSBpbXBsZW1lbnRz
IHRoZSBtaW5pbWFsIGZ1bmN0aW9uYXJpdGllcyByZXF1aXJlZCBieSBXZWJLaXQgdGVzdHMsIGku
ZS4KIC8vIHRoaXMgY2xhc3MganVzdCBjb21wYXJlcyB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGgga25v
d24gZ3JhbW1hciBtaXN0YWtlcyBpbgpAQCAtNDgsNyArNDksOSBAQCBzdHJ1Y3QgV2ViVGV4dENo
ZWNraW5nUmVzdWx0OwogLy8gZm9yIHdlYmtpdCB0ZXN0cywgdGhpcyBjbGFzcyBpcyBub3Qgc3Vp
dGFibGUgZm9yIGFueSBvdGhlciB1c2FnZXMuCiBjbGFzcyBNb2NrR3JhbW1hckNoZWNrIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBXZWJLaXQ6
OldlYlN0cmluZyYsIFZlY3RvcjxXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdD4qKTsKKyAg
ICBzdGF0aWMgYm9vbCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYsIHN0ZDo6dmVjdG9yPFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0PiopOwogfTsKIAor
fQorCiAjZW5kaWYgLy8gTW9ja1NwZWxsQ2hlY2tfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2su
Y3BwCmluZGV4IDgxYjMwODkyYjU4MjBhY2YzYzhiMmFkNzhmZTg0MTE2ZjkwZThjYmYuLjRjZDY5
NGI3NjhjYmVkMjdiODRiMGU1ZDExN2M1YzA4YWVjZjNhYzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3Bl
bGxDaGVjay5jcHAKQEAgLTMxLDEzICszMSwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIk1vY2tTcGVsbENoZWNrLmgiCiAKLSNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgot
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDU3RyaW5n
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1z
dGF0aWMgdm9pZCBhcHBlbmQoV2ViVmVjdG9yPFdlYlN0cmluZz4qIGRhdGEsIGNvbnN0IFdlYlN0
cmluZyYgaXRlbSkKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKworbmFtZXNwYWNlIHsKKwor
dm9pZCBhcHBlbmQoV2ViVmVjdG9yPFdlYlN0cmluZz4qIGRhdGEsIGNvbnN0IFdlYlN0cmluZyYg
aXRlbSkKIHsKICAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiByZXN1bHQoZGF0YS0+c2l6ZSgpICsg
MSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhLT5zaXplKCk7ICsraSkKQEAgLTQ2
LDE3ICs1MCwxNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmQoV2ViVmVjdG9yPFdlYlN0cmluZz4qIGRh
dGEsIGNvbnN0IFdlYlN0cmluZyYgaXRlbSkKICAgICBkYXRhLT5zd2FwKHJlc3VsdCk7CiB9CiAK
K30KKwogTW9ja1NwZWxsQ2hlY2s6Ok1vY2tTcGVsbENoZWNrKCkKICAgICA6IG1faW5pdGlhbGl6
ZWQoZmFsc2UpIHsgfQogCiBNb2NrU3BlbGxDaGVjazo6fk1vY2tTcGVsbENoZWNrKCkgeyB9CiAK
LXN0YXRpYyBib29sIGlzTm90QVNDSUlBbHBoYShVQ2hhciBjaCkgeyByZXR1cm4gIWlzQVNDSUlB
bHBoYShjaCk7IH0KLQogYm9vbCBNb2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dvcmQoY29uc3Qg
V2ViU3RyaW5nJiB0ZXh0LCBpbnQqIG1pc3NwZWxsZWRPZmZzZXQsIGludCogbWlzc3BlbGxlZExl
bmd0aCkKIHsKLSAgICBBU1NFUlQobWlzc3BlbGxlZE9mZnNldCk7Ci0gICAgQVNTRVJUKG1pc3Nw
ZWxsZWRMZW5ndGgpOworICAgIFdFQktJVF9BU1NFUlQobWlzc3BlbGxlZE9mZnNldCk7CisgICAg
V0VCS0lUX0FTU0VSVChtaXNzcGVsbGVkTGVuZ3RoKTsKIAogICAgIC8vIEluaXRpYWxpemUgdGhp
cyBzcGVsbGNoZWNrZXIuCiAgICAgaW5pdGlhbGl6ZUlmTmVlZGVkKCk7CkBAIC02NSwxMiArNjks
MTIgQEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dvcmQoY29uc3QgV2ViU3RyaW5n
JiB0ZXh0LCBpbnQqIG1pc3NwZWxsZWRPZmZzZXQKICAgICAqbWlzc3BlbGxlZE9mZnNldCA9IDA7
CiAgICAgKm1pc3NwZWxsZWRMZW5ndGggPSAwOwogCi0gICAgLy8gQ29udmVydCB0byBhIFN0cmlu
ZyBiZWNhdXNlIHdlIHN0b3JlIFN0cmluZyBpbnN0YW5jZXMgaW4KKyAgICAvLyBDb252ZXJ0IHRv
IGEgc3RkOjpzdHJpbmcgYmVjYXVzZSB3ZSBzdG9yZSBzdGQ6OnN0cmluZyBpbnN0YW5jZXMgaW4K
ICAgICAvLyBtX21pc3NwZWxsZWRXb3JkcyBhbmQgV2ViU3RyaW5nIGhhcyBubyBmaW5kKCkuCi0g
ICAgU3RyaW5nIHN0cmluZ1RleHQodGV4dC5kYXRhKCksIHRleHQubGVuZ3RoKCkpOworICAgIHN0
cmluZyBzdHJpbmdUZXh0ID0gdGV4dC51dGY4KCk7CiAgICAgaW50IHNraXBwZWRMZW5ndGggPSAw
OwogCi0gICAgd2hpbGUgKCFzdHJpbmdUZXh0LmlzRW1wdHkoKSkgeworICAgIHdoaWxlICghc3Ry
aW5nVGV4dC5lbXB0eSgpKSB7CiAgICAgICAgIC8vIEV4dHJhY3QgdGhlIGZpcnN0IHBvc3NpYmxl
IEVuZ2xpc2ggd29yZCBmcm9tIHRoZSBnaXZlbiBzdHJpbmcuCiAgICAgICAgIC8vIFRoZSBnaXZl
biBzdHJpbmcgbWF5IGluY2x1ZGUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgb3IgbnVtYmVycy4gU28s
IHdlCiAgICAgICAgIC8vIHNob3VsZCBmaWx0ZXIgb3V0IHN1Y2ggY2hhcmFjdGVycyBiZWZvcmUg
c3RhcnQgbG9va2luZyB1cCBvdXIKQEAgLTc4LDEyICs4MiwxMyBAQCBib29sIE1vY2tTcGVsbENo
ZWNrOjpzcGVsbENoZWNrV29yZChjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCogbWlzc3BlbGxl
ZE9mZnNldAogICAgICAgICAvLyAoVGhpcyBpcyBhIHNpbXBsZSB2ZXJzaW9uIG9mIG91ciBTcGVs
bENoZWNrV29yZEl0ZXJhdG9yIGNsYXNzLikKICAgICAgICAgLy8gSWYgdGhlIGdpdmVuIHN0cmlu
ZyBkb2Vzbid0IGluY2x1ZGUgYW55IEFTQ0lJIGNoYXJhY3RlcnMsIHdlIGNhbiB0cmVhdCB0aGUK
ICAgICAgICAgLy8gc3RyaW5nIGFzIHZhbGlkIG9uZS4KLSAgICAgICAgaW50IHdvcmRPZmZzZXQg
PSBzdHJpbmdUZXh0LmZpbmQoaXNBU0NJSUFscGhhKTsKLSAgICAgICAgaWYgKHdvcmRPZmZzZXQg
PT0gLTEpCisgICAgICAgIHN0cmluZzo6aXRlcmF0b3IgZmlyc3RDaGFyID0gZmluZF9pZihzdHJp
bmdUZXh0LmJlZ2luKCksIHN0cmluZ1RleHQuZW5kKCksIGlzQVNDSUlBbHBoYSk7CisgICAgICAg
IGlmIChmaXJzdENoYXIgPT0gc3RyaW5nVGV4dC5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBpbnQgd29yZE9mZnNldCA9IGRpc3RhbmNlKHN0cmluZ1RleHQuYmVnaW4o
KSwgZmlyc3RDaGFyKTsKICAgICAgICAgaW50IG1heFdvcmRMZW5ndGggPSBzdGF0aWNfY2FzdDxp
bnQ+KHN0cmluZ1RleHQubGVuZ3RoKCkpIC0gd29yZE9mZnNldDsKICAgICAgICAgaW50IHdvcmRM
ZW5ndGg7Ci0gICAgICAgIFN0cmluZyB3b3JkOworICAgICAgICBzdHJpbmcgd29yZDsKIAogICAg
ICAgICAvLyBMb29rIHVwIG91ciBtaXNzcGVsbGVkLXdvcmQgdGFibGUgdG8gY2hlY2sgaWYgdGhl
IGV4dHJhY3RlZCB3b3JkIGlzIGEKICAgICAgICAgLy8ga25vd24gbWlzc3BlbGxlZCB3b3JkLCBh
bmQgcmV0dXJuIHRoZSBvZmZzZXQgYW5kIHRoZSBsZW5ndGggb2YgdGhlCkBAIC05Miw3ICs5Nyw3
IEBAIGJvb2wgTW9ja1NwZWxsQ2hlY2s6OnNwZWxsQ2hlY2tXb3JkKGNvbnN0IFdlYlN0cmluZyYg
dGV4dCwgaW50KiBtaXNzcGVsbGVkT2Zmc2V0CiAgICAgICAgIC8vIG1pc3NwZWxsZWQtd29yZCB0
YWJsZS4pCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9taXNzcGVsbGVkV29yZHMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIHdvcmRMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+
KG1fbWlzc3BlbGxlZFdvcmRzLmF0KGkpLmxlbmd0aCgpKSA+IG1heFdvcmRMZW5ndGggPyBtYXhX
b3JkTGVuZ3RoIDogc3RhdGljX2Nhc3Q8aW50PihtX21pc3NwZWxsZWRXb3Jkcy5hdChpKS5sZW5n
dGgoKSk7Ci0gICAgICAgICAgICB3b3JkID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcod29yZE9mZnNl
dCwgd29yZExlbmd0aCk7CisgICAgICAgICAgICB3b3JkID0gc3RyaW5nVGV4dC5zdWJzdHIod29y
ZE9mZnNldCwgd29yZExlbmd0aCk7CiAgICAgICAgICAgICBpZiAod29yZCA9PSBtX21pc3NwZWxs
ZWRXb3Jkcy5hdChpKSAmJiAoc3RhdGljX2Nhc3Q8aW50PihzdHJpbmdUZXh0Lmxlbmd0aCgpKSA9
PSB3b3JkT2Zmc2V0ICsgd29yZExlbmd0aCB8fCBpc05vdEFTQ0lJQWxwaGEoc3RyaW5nVGV4dFt3
b3JkT2Zmc2V0ICsgd29yZExlbmd0aF0pKSkgewogICAgICAgICAgICAgICAgICptaXNzcGVsbGVk
T2Zmc2V0ID0gd29yZE9mZnNldCArIHNraXBwZWRMZW5ndGg7CiAgICAgICAgICAgICAgICAgKm1p
c3NwZWxsZWRMZW5ndGggPSB3b3JkTGVuZ3RoOwpAQCAtMTAzLDExICsxMDgsMTQgQEAgYm9vbCBN
b2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dvcmQoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBpbnQq
IG1pc3NwZWxsZWRPZmZzZXQKICAgICAgICAgaWYgKCptaXNzcGVsbGVkTGVuZ3RoID4gMCkKICAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGludCB3b3JkRW5kID0gc3RyaW5nVGV4dC5maW5k
KGlzTm90QVNDSUlBbHBoYSwgd29yZE9mZnNldCk7Ci0gICAgICAgIHdvcmRMZW5ndGggPSB3b3Jk
RW5kID09IC0xID8gc3RhdGljX2Nhc3Q8aW50PihzdHJpbmdUZXh0Lmxlbmd0aCgpKSAtIHdvcmRP
ZmZzZXQgOiB3b3JkRW5kIC0gd29yZE9mZnNldDsKKyAgICAgICAgc3RyaW5nOjppdGVyYXRvciBs
YXN0Q2hhciA9IGZpbmRfaWYoc3RyaW5nVGV4dC5iZWdpbigpICsgd29yZE9mZnNldCwgc3RyaW5n
VGV4dC5lbmQoKSwgaXNOb3RBU0NJSUFscGhhKTsKKyAgICAgICAgaWYgKGxhc3RDaGFyID09IHN0
cmluZ1RleHQuZW5kKCkpCisgICAgICAgICAgICB3b3JkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50
PihzdHJpbmdUZXh0Lmxlbmd0aCgpKSAtIHdvcmRPZmZzZXQ7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHdvcmRMZW5ndGggPSBkaXN0YW5jZShmaXJzdENoYXIsIGxhc3RDaGFyKTsKIAotICAg
ICAgICBBU1NFUlQoMCA8IHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoKTsKLSAgICAgICAgc3RyaW5n
VGV4dCA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoKTsKKyAg
ICAgICAgV0VCS0lUX0FTU0VSVCgwIDwgd29yZE9mZnNldCArIHdvcmRMZW5ndGgpOworICAgICAg
ICBzdHJpbmdUZXh0ID0gc3RyaW5nVGV4dC5zdWJzdHIod29yZE9mZnNldCArIHdvcmRMZW5ndGgp
OwogICAgICAgICBza2lwcGVkTGVuZ3RoICs9IHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoOwogICAg
IH0KIApAQCAtMTcwLDcgKzE3OCw3IEBAIGJvb2wgTW9ja1NwZWxsQ2hlY2s6OmluaXRpYWxpemVJ
Zk5lZWRlZCgpCiAKICAgICBtX21pc3NwZWxsZWRXb3Jkcy5jbGVhcigpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKG1pc3NwZWxsZWRXb3Jkcyk7ICsraSkKLSAgICAgICAg
bV9taXNzcGVsbGVkV29yZHMuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgobWlzc3BlbGxlZFdvcmRz
W2ldKSk7CisgICAgICAgIG1fbWlzc3BlbGxlZFdvcmRzLnB1c2hfYmFjayhtaXNzcGVsbGVkV29y
ZHNbaV0pOwogCiAgICAgLy8gTWFyayBhcyBpbml0aWFsaXplZCB0byBwcmV2ZW50IHRoaXMgb2Jq
ZWN0IGZyb20gYmVpbmcgaW5pdGlhbGl6ZWQgdHdpY2UKICAgICAvLyBvciBtb3JlLgpAQCAtMTgw
LDMgKzE4OCw1IEBAIGJvb2wgTW9ja1NwZWxsQ2hlY2s6OmluaXRpYWxpemVJZk5lZWRlZCgpCiAg
ICAgLy8gZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgZmFsc2UuCiAgICAgcmV0dXJuIGZhbHNlOwog
fQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suaAppbmRleCBlZTM4ZjIyOTIyMjYzZTdmMzE2
ODM4Y2RmODQzNjVlNDMwYTVmMWE2Li4xZGIzNzQ4YWUzMDEyZDI2ZmU4ZGNlZTM3NGI3ZDcxYmFl
MGQyMjkzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmgKQEAgLTMzLDggKzMzLDEwIEBACiAK
ICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZlY3Rvci5oIgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDxzdHJp
bmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIC8v
IEEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBhIHNwZWxsLWNoZWNrZXIgdXNlZCBmb3IgV2ViS2l0
IHRlc3RzLgogLy8gVGhpcyBjbGFzcyBvbmx5IGltcGxlbWVudHMgdGhlIG1pbmltYWwgZnVuY3Rp
b25hcml0aWVzIHJlcXVpcmVkIGJ5IFdlYktpdApAQCAtNzAsMTAgKzcyLDEyIEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpbml0aWFsaXplSWZOZWVkZWQoKTsKIAogICAgIC8vIEEgdGFibGUgdGhhdCBj
b25zaXN0cyBvZiBtaXNzcGVsbGVkIHdvcmRzLgotICAgIFZlY3RvcjxTdHJpbmc+IG1fbWlzc3Bl
bGxlZFdvcmRzOworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBtX21pc3NwZWxsZWRXb3Jk
czsKIAogICAgIC8vIEEgZmxhZyByZXByZXNlbnRpbmcgd2hldGhlciBvciBub3QgdGhpcyBvYmpl
Y3QgaXMgaW5pdGlhbGl6ZWQuCiAgICAgYm9vbCBtX2luaXRpYWxpemVkOwogfTsKIAorfQorCiAj
ZW5kaWYgLy8gTW9ja1NwZWxsQ2hlY2tfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvU3BlbGxDaGVja0NsaWVudC5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9TcGVsbENoZWNrQ2xpZW50LmNw
cAppbmRleCA2ZWYwZjViMTlmYWFjN2MxYjkzZDY0Njc3NGIxYjgyNmU3YzVmYzgwLi5iMWJjZWNh
ZjdjM2IxMzE4OGQwMTk5Yjk4ZTI0YmI1MTY3YzRjNWZjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9TcGVsbENoZWNrQ2xpZW50LmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9TcGVsbENo
ZWNrQ2xpZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYlRleHRDaGVja2lu
Z1Jlc3VsdC5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCkBAIC04MSw3ICs4Miw3IEBAIHZvaWQg
U3BlbGxDaGVja0NsaWVudDo6c3BlbGxDaGVjayhjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCYg
bWlzc3BlbGxlZE9mZnNldCwKIAogdm9pZCBTcGVsbENoZWNrQ2xpZW50OjpjaGVja1RleHRPZlBh
cmFncmFwaChjb25zdCBXZWJTdHJpbmcmIHRleHQsIFdlYlRleHRDaGVja2luZ1R5cGVNYXNrIG1h
c2ssIFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+KiB3ZWJSZXN1bHRzKQogewotICAg
IFZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CisgICAgdmVjdG9yPFdlYlRl
eHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKICAgICBpZiAobWFzayAmIFdlYlRleHRDaGVja2lu
Z1R5cGVTcGVsbGluZykgewogICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICAgICAgc2l6
ZV90IGxlbmd0aCA9IHRleHQubGVuZ3RoKCk7CkBAIC05Niw3ICs5Nyw3IEBAIHZvaWQgU3BlbGxD
aGVja0NsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBX
ZWJUZXh0Q2hlY2tpCiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFdlYlRleHRDaGVja2luZ1R5
cGVTcGVsbGluZzsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IG9mZnNldCArIG1pc3Nw
ZWxsZWRQb3NpdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSBtaXNzcGVsbGVkTGVu
Z3RoOwotICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgICAgIHJl
c3VsdHMucHVzaF9iYWNrKHJlc3VsdCk7CiAgICAgICAgICAgICBvZmZzZXQgKz0gbWlzc3BlbGxl
ZFBvc2l0aW9uICsgbWlzc3BlbGxlZExlbmd0aDsKICAgICAgICAgfQogICAgIH0KQEAgLTEyMCwx
OSArMTIxLDE5IEBAIHZvaWQgU3BlbGxDaGVja0NsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZUZXh0
KGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgV2ViVGV4dENoZWNrCiAKIHZvaWQgU3BlbGxDaGVja0Ns
aWVudDo6ZmluaXNoTGFzdFRleHRDaGVjaygpCiB7Ci0gICAgVmVjdG9yPFdlYlRleHRDaGVja2lu
Z1Jlc3VsdD4gcmVzdWx0czsKKyAgICB2ZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiByZXN1
bHRzOwogICAgIGludCBvZmZzZXQgPSAwOwotICAgIFN0cmluZyB0ZXh0KG1fbGFzdFJlcXVlc3Rl
ZFRleHRDaGVja1N0cmluZy5kYXRhKCksIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZy5s
ZW5ndGgoKSk7CisgICAgc3RyaW5nIHRleHQgPSBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJp
bmcudXRmOCgpOwogICAgIHdoaWxlICh0ZXh0Lmxlbmd0aCgpKSB7CiAgICAgICAgIGludCBtaXNz
cGVsbGVkUG9zaXRpb24gPSAwOwogICAgICAgICBpbnQgbWlzc3BlbGxlZExlbmd0aCA9IDA7Ci0g
ICAgICAgIG1fc3BlbGxjaGVjay5zcGVsbENoZWNrV29yZChXZWJTdHJpbmcodGV4dC5jaGFyYWN0
ZXJzKCksIHRleHQubGVuZ3RoKCkpLCAmbWlzc3BlbGxlZFBvc2l0aW9uLCAmbWlzc3BlbGxlZExl
bmd0aCk7CisgICAgICAgIG1fc3BlbGxjaGVjay5zcGVsbENoZWNrV29yZChXZWJTdHJpbmc6OmZy
b21VVEY4KHRleHQpLCAmbWlzc3BlbGxlZFBvc2l0aW9uLCAmbWlzc3BlbGxlZExlbmd0aCk7CiAg
ICAgICAgIGlmICghbWlzc3BlbGxlZExlbmd0aCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBzdWdnZXN0aW9uczsKLSAgICAgICAgbV9zcGVsbGNoZWNr
LmZpbGxTdWdnZXN0aW9uTGlzdChXZWJTdHJpbmcodGV4dC5jaGFyYWN0ZXJzKCkgKyBtaXNzcGVs
bGVkUG9zaXRpb24sIG1pc3NwZWxsZWRMZW5ndGgpLCAmc3VnZ2VzdGlvbnMpOwotICAgICAgICBy
ZXN1bHRzLmFwcGVuZChXZWJUZXh0Q2hlY2tpbmdSZXN1bHQoV2ViVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nLCBvZmZzZXQgKyBtaXNzcGVsbGVkUG9zaXRpb24sIG1pc3NwZWxsZWRMZW5ndGgsIHN1
Z2dlc3Rpb25zLmlzRW1wdHkoKSA/IFdlYlN0cmluZygpIDogc3VnZ2VzdGlvbnNbMF0pKTsKLSAg
ICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKG1pc3NwZWxsZWRQb3NpdGlvbiArIG1pc3NwZWxs
ZWRMZW5ndGgpOworICAgICAgICBtX3NwZWxsY2hlY2suZmlsbFN1Z2dlc3Rpb25MaXN0KFdlYlN0
cmluZzo6ZnJvbVVURjgodGV4dCksICZzdWdnZXN0aW9ucyk7CisgICAgICAgIHJlc3VsdHMucHVz
aF9iYWNrKFdlYlRleHRDaGVja2luZ1Jlc3VsdChXZWJUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcs
IG9mZnNldCArIG1pc3NwZWxsZWRQb3NpdGlvbiwgbWlzc3BlbGxlZExlbmd0aCwgc3VnZ2VzdGlv
bnMuaXNFbXB0eSgpID8gV2ViU3RyaW5nKCkgOiBzdWdnZXN0aW9uc1swXSkpOworICAgICAgICB0
ZXh0ID0gdGV4dC5zdWJzdHIobWlzc3BlbGxlZFBvc2l0aW9uICsgbWlzc3BlbGxlZExlbmd0aCk7
CiAgICAgICAgIG9mZnNldCArPSBtaXNzcGVsbGVkUG9zaXRpb24gKyBtaXNzcGVsbGVkTGVuZ3Ro
OwogICAgIH0KICAgICBNb2NrR3JhbW1hckNoZWNrOjpjaGVja0dyYW1tYXJPZlN0cmluZyhtX2xh
c3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJpbmcsICZyZXN1bHRzKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RDb21tb24uaCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RDb21tb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYTgzZGMyMWMwZjcxMTgxODUyZDc5NWM3Y2I5MjM2ZDU5MTc4MzA4Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvVGVzdENvbW1vbi5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRlc3RDb21tb25faAorI2Rl
ZmluZSBUZXN0Q29tbW9uX2gKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21tb24uaD4KKyNpbmNs
dWRlIDxzdGRpby5oPgorCisjaWYgZGVmaW5lZChXSU4zMikKKyNkZWZpbmUgc25wcmludGYoc3Ry
LCBzaXplLCBmb3JtYXQsIC4uLikgX3ZzbnByaW50Zl9zKHN0ciwgc2l6ZSwgc2l6ZSwgZm9ybWF0
LCBfX1ZBX0FSR1NfXykKKyNlbmRpZgorCitpbmxpbmUgYm9vbCBpc0FTQ0lJQWxwaGEoY2hhciBj
aCkgeyByZXR1cm4gKGNoIHwgMHgyMCkgPj0gJ2EnICYmIChjaCB8IDB4MjApIDw9ICd6JzsgfQor
CitpbmxpbmUgYm9vbCBpc05vdEFTQ0lJQWxwaGEoY2hhciBjaCkgeyByZXR1cm4gIWlzQVNDSUlB
bHBoYShjaCk7IH0KKworI2VuZGlmIC8vIFRlc3RDb21tb25faApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVy
ZmFjZXMuY3BwCmluZGV4IGUzZGNmODAyMDUxNmM1YzFiZmUxNWMzMmM2ZDI3NDAxY2U1YjE2MDgu
LjQ2ZDZhZDA2NWJhMzBhMmE2MWZjYmUxZWVlODljODQ1MmVmZjU4YmIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2Vz
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0SW50ZXJmYWNlcy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCB1c2luZyBXZWJLaXQ6OldlYlZp
ZXc7CiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIFRlc3RJbnRlcmZhY2VzOjpUZXN0SW50
ZXJmYWNlcygpCi0gICAgOiBtX3dlYlZpZXcoMCkKKyAgICA6IG1fYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIobmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkpCisgICAgLCBtX2V2ZW50U2VuZGVy
KG5ldyBFdmVudFNlbmRlcigpKQorICAgICwgbV9nYW1lcGFkQ29udHJvbGxlcihuZXcgR2FtZXBh
ZENvbnRyb2xsZXIoKSkKKyAgICAsIG1fdGV4dElucHV0Q29udHJvbGxlcihuZXcgVGV4dElucHV0
Q29udHJvbGxlcigpKQorICAgICwgbV90ZXN0UnVubmVyKG5ldyBUZXN0UnVubmVyKCkpCisgICAg
LCBtX3dlYlZpZXcoMCkKIHsKLSAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gYWRvcHRQ
dHIobmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkpOwotICAgIG1fZXZlbnRTZW5kZXIgPSBh
ZG9wdFB0cihuZXcgRXZlbnRTZW5kZXIoKSk7Ci0gICAgbV9nYW1lcGFkQ29udHJvbGxlciA9IGFk
b3B0UHRyKG5ldyBHYW1lcGFkQ29udHJvbGxlcigpKTsKLSAgICBtX3RleHRJbnB1dENvbnRyb2xs
ZXIgPSBhZG9wdFB0cihuZXcgVGV4dElucHV0Q29udHJvbGxlcigpKTsKLSAgICBtX3Rlc3RSdW5u
ZXIgPSBhZG9wdFB0cihuZXcgVGVzdFJ1bm5lcigpKTsKIH0KIAogVGVzdEludGVyZmFjZXM6On5U
ZXN0SW50ZXJmYWNlcygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaAppbmRleCBkODM0YzQwYjE2
Mjc0MmE2NDg2MWFjZDRjYmM3OGI2ZWJiZTc0OTI5Li44M2IzOGRiNjgxNzlhZDM4NWUxZjI1MDEw
MjU4ZWI1MGM5ZGZkNDkxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKQEAgLTMxLDcgKzMx
LDcgQEAKICNpZm5kZWYgVGVzdEludGVyZmFjZXNfaAogI2RlZmluZSBUZXN0SW50ZXJmYWNlc19o
CiAKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZyYW1lOwpAQCAtNjUsMTEgKzY1LDExIEBAIHB1YmxpYzoK
IAogCiBwcml2YXRlOgotICAgIE93blB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gbV9hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjsKLSAgICBPd25QdHI8RXZlbnRTZW5kZXI+IG1fZXZlbnRTZW5k
ZXI7Ci0gICAgT3duUHRyPEdhbWVwYWRDb250cm9sbGVyPiBtX2dhbWVwYWRDb250cm9sbGVyOwot
ICAgIE93blB0cjxUZXh0SW5wdXRDb250cm9sbGVyPiBtX3RleHRJbnB1dENvbnRyb2xsZXI7Ci0g
ICAgT3duUHRyPFRlc3RSdW5uZXI+IG1fdGVzdFJ1bm5lcjsKKyAgICBzdGQ6OmF1dG9fcHRyPEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyPiBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOworICAgIHN0
ZDo6YXV0b19wdHI8RXZlbnRTZW5kZXI+IG1fZXZlbnRTZW5kZXI7CisgICAgc3RkOjphdXRvX3B0
cjxHYW1lcGFkQ29udHJvbGxlcj4gbV9nYW1lcGFkQ29udHJvbGxlcjsKKyAgICBzdGQ6OmF1dG9f
cHRyPFRleHRJbnB1dENvbnRyb2xsZXI+IG1fdGV4dElucHV0Q29udHJvbGxlcjsKKyAgICBzdGQ6
OmF1dG9fcHRyPFRlc3RSdW5uZXI+IG1fdGVzdFJ1bm5lcjsKICAgICBXZWJLaXQ6OldlYlZpZXcq
IG1fd2ViVmlldzsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5jcHAKaW5kZXggMTlmZDBiMjY2ZDM5
Y2U5YjU0NTAwM2MwNTM2MGUxMTNkYmUxZWJlZS4uYTRlZDhiMGY1OTI3ZWY5MGYxODE5ZWU5MGY0
MjllZDI5MmUyOThiMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXN0UGx1Z2luLmgiCiAKKyNpbmNsdWRl
ICJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJJbnB1
dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCkBAIC0zNSwxMiArMzYsOSBAQAogI2luY2x1
ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3Vw
cG9ydC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgotI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNw
YWNlIFdlYlRlc3RSdW5uZXIgewogCkBAIC05OSw3ICs5Nyw3IEBAIGNvbnN0IGNoYXIqIHBvaW50
U3RhdGUoV2ViVG91Y2hQb2ludDo6U3RhdGUgc3RhdGUpCiAgICAgICAgIHJldHVybiAiVW5rbm93
biI7CiAgICAgfQogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMzQsMTIgKzEzMiw5IEBA
IHZvaWQgcHJpbnRFdmVudERldGFpbHMoV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSwgY29uc3Qg
V2ViSW5wdXRFdmVudCYgZXZlbnQpCiAKIFdlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJl
cXVlc3RUeXBlIHBhcnNlVG91Y2hFdmVudFJlcXVlc3RUeXBlKGNvbnN0IFdlYlN0cmluZyYgc3Ry
aW5nKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgV2ViU3RyaW5nLCBrUHJpbWl0
aXZlUmF3LCAoV2ViU3RyaW5nOjpmcm9tVVRGOCgicmF3IikpKTsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFdlYlN0cmluZywga1ByaW1pdGl2ZVN5bnRoZXRpYywgKFdlYlN0cmluZzo6
ZnJvbVVURjgoInN5bnRoZXRpYyIpKSk7Ci0KLSAgICBpZiAoc3RyaW5nID09IGtQcmltaXRpdmVS
YXcpCisgICAgaWYgKHN0cmluZyA9PSBXZWJTdHJpbmc6OmZyb21VVEY4KCJyYXciKSkKICAgICAg
ICAgcmV0dXJuIFdlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJlcXVlc3RUeXBlUmF3Owot
ICAgIGlmIChzdHJpbmcgPT0ga1ByaW1pdGl2ZVN5bnRoZXRpYykKKyAgICBpZiAoc3RyaW5nID09
IFdlYlN0cmluZzo6ZnJvbVVURjgoInN5bnRoZXRpYyIpKQogICAgICAgICByZXR1cm4gV2ViUGx1
Z2luQ29udGFpbmVyOjpUb3VjaEV2ZW50UmVxdWVzdFR5cGVTeW50aGVzaXplZE1vdXNlOwogICAg
IHJldHVybiBXZWJQbHVnaW5Db250YWluZXI6OlRvdWNoRXZlbnRSZXF1ZXN0VHlwZU5vbmU7CiB9
CkBAIC0xNjgsNyArMTYzLDcgQEAgVGVzdFBsdWdpbjo6VGVzdFBsdWdpbihXZWJGcmFtZSogZnJh
bWUsIGNvbnN0IFdlYlBsdWdpblBhcmFtcyYgcGFyYW1zLCBXZWJUZXN0RGUKICAgICBzdGF0aWMg
Y29uc3QgV2ViU3RyaW5nIGtBdHRyaWJ1dGVDYW5Qcm9jZXNzRHJhZyA9IFdlYlN0cmluZzo6ZnJv
bVVURjgoImNhbi1wcm9jZXNzLWRyYWciKTsKICAgICBzdGF0aWMgY29uc3QgV2ViU3RyaW5nIGtB
dHRyaWJ1dGVQcmludFVzZXJHZXN0dXJlU3RhdHVzID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgicHJp
bnQtdXNlci1nZXN0dXJlLXN0YXR1cyIpOwogCi0gICAgQVNTRVJUKHBhcmFtcy5hdHRyaWJ1dGVO
YW1lcy5zaXplKCkgPT0gcGFyYW1zLmF0dHJpYnV0ZVZhbHVlcy5zaXplKCkpOworICAgIFdFQktJ
VF9BU1NFUlQocGFyYW1zLmF0dHJpYnV0ZU5hbWVzLnNpemUoKSA9PSBwYXJhbXMuYXR0cmlidXRl
VmFsdWVzLnNpemUoKSk7CiAgICAgc2l6ZV90IHNpemUgPSBwYXJhbXMuYXR0cmlidXRlTmFtZXMu
c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAg
IGNvbnN0IFdlYlN0cmluZyYgYXR0cmlidXRlTmFtZSA9IHBhcmFtcy5hdHRyaWJ1dGVOYW1lc1tp
XTsKQEAgLTIxMiw3ICsyMDcsNyBAQCBib29sIFRlc3RQbHVnaW46OmluaXRpYWxpemUoV2ViUGx1
Z2luQ29udGFpbmVyKiBjb250YWluZXIpCiAgICAgaWYgKCFpbml0U2NlbmUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgbV9sYXllciA9IGFkb3B0UHRyKFBsYXRmb3JtOjpjdXJyZW50
KCktPmNvbXBvc2l0b3JTdXBwb3J0KCktPmNyZWF0ZUV4dGVybmFsVGV4dHVyZUxheWVyKHRoaXMp
KTsKKyAgICBtX2xheWVyID0gYXV0b19wdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+KFBsYXRm
b3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCktPmNyZWF0ZUV4dGVybmFsVGV4dHVy
ZUxheWVyKHRoaXMpKTsKICAgICBtX2NvbnRhaW5lciA9IGNvbnRhaW5lcjsKICAgICBtX2NvbnRh
aW5lci0+c2V0V2ViTGF5ZXIobV9sYXllci0+bGF5ZXIoKSk7CiAgICAgaWYgKG1fcmVSZXF1ZXN0
VG91Y2hFdmVudHMpIHsKQEAgLTIyOCw3ICsyMjMsNyBAQCB2b2lkIFRlc3RQbHVnaW46OmRlc3Ry
b3koKQogewogICAgIGlmIChtX2NvbnRhaW5lcikKICAgICAgICAgbV9jb250YWluZXItPnNldFdl
YkxheWVyKDApOwotICAgIG1fbGF5ZXIuY2xlYXIoKTsKKyAgICBtX2xheWVyLnJlc2V0KCk7CiAg
ICAgZGVzdHJveVNjZW5lKCk7CiAKICAgICBkZWxldGUgbV9jb250ZXh0OwpAQCAtMjc1LDcgKzI3
MCw3IEBAIFRlc3RQbHVnaW46OlByaW1pdGl2ZSBUZXN0UGx1Z2luOjpwYXJzZVByaW1pdGl2ZShj
b25zdCBXZWJTdHJpbmcmIHN0cmluZykKICAgICBlbHNlIGlmIChzdHJpbmcgPT0ga1ByaW1pdGl2
ZVRyaWFuZ2xlKQogICAgICAgICBwcmltaXRpdmUgPSBQcmltaXRpdmVUcmlhbmdsZTsKICAgICBl
bHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHByaW1pdGl2ZTsKIH0KIApAQCAtMjk0LDcgKzI4
OSw3IEBAIHZvaWQgVGVzdFBsdWdpbjo6cGFyc2VDb2xvcihjb25zdCBXZWJTdHJpbmcmIHN0cmlu
ZywgdW5zaWduZWQgY29sb3JbM10pCiAgICAgZWxzZSBpZiAoc3RyaW5nID09ICJibHVlIikKICAg
ICAgICAgY29sb3JbMl0gPSAyNTU7CiAgICAgZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBmbG9hdCBU
ZXN0UGx1Z2luOjpwYXJzZU9wYWNpdHkoY29uc3QgV2ViU3RyaW5nJiBzdHJpbmcpCkBAIC0zNjEs
MTQgKzM1NiwxNCBAQCB2b2lkIFRlc3RQbHVnaW46OmRlc3Ryb3lTY2VuZSgpCiAKIGJvb2wgVGVz
dFBsdWdpbjo6aW5pdFByb2dyYW0oKQogewotICAgIGNvbnN0IENTdHJpbmcgdmVydGV4U291cmNl
KAorICAgIGNvbnN0IHN0cmluZyB2ZXJ0ZXhTb3VyY2UoCiAgICAgICAgICJhdHRyaWJ1dGUgdmVj
NCBwb3NpdGlvbjsgIFxuIgogICAgICAgICAidm9pZCBtYWluKCkgeyAgICAgICAgICAgICBcbiIK
ICAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsgXG4iCiAgICAgICAgICJ9ICAgICAg
ICAgICAgICAgICAgICAgICAgIFxuIgogICAgICk7CiAKLSAgICBjb25zdCBDU3RyaW5nIGZyYWdt
ZW50U291cmNlKAorICAgIGNvbnN0IHN0cmluZyBmcmFnbWVudFNvdXJjZSgKICAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyBcbiIKICAgICAgICAgInVuaWZvcm0gdmVjNCBjb2xvcjsg
ICAgICBcbiIKICAgICAgICAgInZvaWQgbWFpbigpIHsgICAgICAgICAgICBcbiIKQEAgLTM4Nyw3
ICszODIsNyBAQCBib29sIFRlc3RQbHVnaW46OmluaXRQcm9ncmFtKCkKIAogYm9vbCBUZXN0UGx1
Z2luOjppbml0UHJpbWl0aXZlKCkKIHsKLSAgICBBU1NFUlQobV9zY2VuZS5wcmltaXRpdmUgPT0g
UHJpbWl0aXZlVHJpYW5nbGUpOworICAgIFdFQktJVF9BU1NFUlQobV9zY2VuZS5wcmltaXRpdmUg
PT0gUHJpbWl0aXZlVHJpYW5nbGUpOwogCiAgICAgbV9zY2VuZS52Ym8gPSBtX2NvbnRleHQtPmNy
ZWF0ZUJ1ZmZlcigpOwogICAgIGlmICghbV9zY2VuZS52Ym8pCkBAIC00MDUsOSArNDAwLDkgQEAg
Ym9vbCBUZXN0UGx1Z2luOjppbml0UHJpbWl0aXZlKCkKIAogdm9pZCBUZXN0UGx1Z2luOjpkcmF3
UHJpbWl0aXZlKCkKIHsKLSAgICBBU1NFUlQobV9zY2VuZS5wcmltaXRpdmUgPT0gUHJpbWl0aXZl
VHJpYW5nbGUpOwotICAgIEFTU0VSVChtX3NjZW5lLnZibyk7Ci0gICAgQVNTRVJUKG1fc2NlbmUu
cHJvZ3JhbSk7CisgICAgV0VCS0lUX0FTU0VSVChtX3NjZW5lLnByaW1pdGl2ZSA9PSBQcmltaXRp
dmVUcmlhbmdsZSk7CisgICAgV0VCS0lUX0FTU0VSVChtX3NjZW5lLnZibyk7CisgICAgV0VCS0lU
X0FTU0VSVChtX3NjZW5lLnByb2dyYW0pOwogCiAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1f
c2NlbmUucHJvZ3JhbSk7CiAKQEAgLTQyMyw3ICs0MTgsNyBAQCB2b2lkIFRlc3RQbHVnaW46OmRy
YXdQcmltaXRpdmUoKQogICAgIG1fY29udGV4dC0+ZHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAs
IDMpOwogfQogCi11bnNpZ25lZCBUZXN0UGx1Z2luOjpsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUs
IGNvbnN0IENTdHJpbmcmIHNvdXJjZSkKK3Vuc2lnbmVkIFRlc3RQbHVnaW46OmxvYWRTaGFkZXIo
dW5zaWduZWQgdHlwZSwgY29uc3Qgc3RyaW5nJiBzb3VyY2UpCiB7CiAgICAgdW5zaWduZWQgc2hh
ZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIodHlwZSk7CiAgICAgaWYgKHNoYWRlcikgewpA
QCAtNDQwLDcgKzQzNSw3IEBAIHVuc2lnbmVkIFRlc3RQbHVnaW46OmxvYWRTaGFkZXIodW5zaWdu
ZWQgdHlwZSwgY29uc3QgQ1N0cmluZyYgc291cmNlKQogICAgIHJldHVybiBzaGFkZXI7CiB9CiAK
LXVuc2lnbmVkIFRlc3RQbHVnaW46OmxvYWRQcm9ncmFtKGNvbnN0IENTdHJpbmcmIHZlcnRleFNv
dXJjZSwgY29uc3QgQ1N0cmluZyYgZnJhZ21lbnRTb3VyY2UpCit1bnNpZ25lZCBUZXN0UGx1Z2lu
Ojpsb2FkUHJvZ3JhbShjb25zdCBzdHJpbmcmIHZlcnRleFNvdXJjZSwgY29uc3Qgc3RyaW5nJiBm
cmFnbWVudFNvdXJjZSkKIHsKICAgICB1bnNpZ25lZCB2ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVy
KEdMX1ZFUlRFWF9TSEFERVIsIHZlcnRleFNvdXJjZSk7CiAgICAgdW5zaWduZWQgZnJhZ21lbnRT
aGFkZXIgPSBsb2FkU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgZnJhZ21lbnRTb3VyY2UpOwpA
QCAtNTMyLDcgKzUyNyw3IEBAIGJvb2wgVGVzdFBsdWdpbjo6aGFuZGxlRHJhZ1N0YXR1c1VwZGF0
ZShXZWJEcmFnU3RhdHVzIGRyYWdTdGF0dXMsIGNvbnN0IFdlYkRyYWdECiAgICAgICAgIGRyYWdT
dGF0dXNOYW1lID0gIkRyYWdEcm9wIjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJEcmFn
U3RhdHVzVW5rbm93bjoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRN
ZXNzYWdlKHN0ZDo6c3RyaW5nKCJQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6ICIpICsgZHJhZ1N0YXR1
c05hbWUgKyAiXG4iKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmgKaW5kZXgg
MWUxMDBkYWU5MWZjMDJjMGQxMDk5MmQ1NzZjODQyMGIwYWQ0ZTQ0Ni4uNTNiMjJlMTFiYzY2YmQ1
MWZhNTMzMjIzZTI4ZjNlNTNkZDIwYjg5YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5oCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uaApAQCAtMjgsOSAr
MjgsMTAgQEAKIAogI2luY2x1ZGUgIldlYlBsdWdpbi5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkNv
bnRhaW5lci5oIgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJDbGllbnQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8c3RyaW5nPgog
CiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKQEAgLTEyNCw4ICsxMjUsOCBAQCBwcml2YXRl
OgogICAgIGJvb2wgaW5pdFByb2dyYW0oKTsKICAgICBib29sIGluaXRQcmltaXRpdmUoKTsKICAg
ICB2b2lkIGRyYXdQcmltaXRpdmUoKTsKLSAgICB1bnNpZ25lZCBsb2FkU2hhZGVyKHVuc2lnbmVk
IHR5cGUsIGNvbnN0IFdURjo6Q1N0cmluZyYgc291cmNlKTsKLSAgICB1bnNpZ25lZCBsb2FkUHJv
Z3JhbShjb25zdCBXVEY6OkNTdHJpbmcmIHZlcnRleFNvdXJjZSwgY29uc3QgV1RGOjpDU3RyaW5n
JiBmcmFnbWVudFNvdXJjZSk7CisgICAgdW5zaWduZWQgbG9hZFNoYWRlcih1bnNpZ25lZCB0eXBl
LCBjb25zdCBzdGQ6OnN0cmluZyYgc291cmNlKTsKKyAgICB1bnNpZ25lZCBsb2FkUHJvZ3JhbShj
b25zdCBzdGQ6OnN0cmluZyYgdmVydGV4U291cmNlLCBjb25zdCBzdGQ6OnN0cmluZyYgZnJhZ21l
bnRTb3VyY2UpOwogCiAgICAgV2ViS2l0OjpXZWJGcmFtZSogbV9mcmFtZTsKICAgICBXZWJUZXN0
RGVsZWdhdGUqIG1fZGVsZWdhdGU7CkBAIC0xMzYsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbG9yVGV4dHVyZTsKICAgICB1bnNpZ25lZCBtX2ZyYW1lYnVmZmVyOwogICAg
IFNjZW5lIG1fc2NlbmU7Ci0gICAgT3duUHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXI+IG1fbGF5ZXI7CisgICAgc3RkOjphdXRvX3B0cjxXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVyPiBtX2xheWVyOwogCiAgICAgV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXI6OlRvdWNo
RXZlbnRSZXF1ZXN0VHlwZSBtX3RvdWNoRXZlbnRSZXF1ZXN0OwogICAgIC8vIFJlcXVlc3RzIHRv
dWNoIGV2ZW50cyBmcm9tIHRoZSBXZWJQbHVnaW5Db250YWluZXJJbXBsIG11bHRpcGxlIHRpbWVz
IHRvIHRpY2tsZSB3ZWJraXQub3JnL2IvMTA4MzgxCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCmluZGV4
IDg5OTAxMmIzMmFjMmIxNWFlNWEwNjBkZTdjMmRlYzM1NGQzYzUzODguLmM1YzA3MDU0MzkyZTBi
Y2UxODE0ODIwNmIxMTA0ZDk2MGI1NWY1ZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCkBAIC01
NSwxMiArNTUsMTIgQEAKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViV29ya2Vy
SW5mby5oIgogI2luY2x1ZGUgInY4L2luY2x1ZGUvdjguaCIKKyNpbmNsdWRlIDxsaW1pdHM+Cisj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJEYXRhLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYlBvaW50Lmg+Ci0jaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBPUyhMSU5VWCkgfHwgT1MoQU5EUk9JRCkK
KyNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChBTkRST0lEKQogI2luY2x1ZGUgImxp
bnV4L1dlYkZvbnRSZW5kZXJpbmcuaCIKICNlbmRpZgogCkBAIC04MywyMiArODMsMjAgQEAgcHVi
bGljOgogCiBjbGFzcyBJbnZva2VDYWxsYmFja1Rhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxU
ZXN0UnVubmVyPiB7CiBwdWJsaWM6Ci0gICAgSW52b2tlQ2FsbGJhY2tUYXNrKFRlc3RSdW5uZXIq
IG9iamVjdCwgUGFzc093bkFycmF5UHRyPENwcFZhcmlhbnQ+IGNhbGxiYWNrQXJndW1lbnRzLCB1
aW50MzJfdCBudW1iZXJPZkFyZ3VtZW50cykKKyAgICBJbnZva2VDYWxsYmFja1Rhc2soVGVzdFJ1
bm5lciogb2JqZWN0LCBhdXRvX3B0cjxDcHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cykKICAg
ICAgICAgOiBXZWJNZXRob2RUYXNrPFRlc3RSdW5uZXI+KG9iamVjdCkKICAgICAgICAgLCBtX2Nh
bGxiYWNrQXJndW1lbnRzKGNhbGxiYWNrQXJndW1lbnRzKQotICAgICAgICAsIG1fbnVtYmVyT2ZB
cmd1bWVudHMobnVtYmVyT2ZBcmd1bWVudHMpCiAgICAgewogICAgIH0KIAogICAgIHZpcnR1YWwg
dm9pZCBydW5JZlZhbGlkKCkKICAgICB7CiAgICAgICAgIENwcFZhcmlhbnQgaW52b2tlUmVzdWx0
OwotICAgICAgICBtX2NhbGxiYWNrQXJndW1lbnRzWzBdLmludm9rZURlZmF1bHQobV9jYWxsYmFj
a0FyZ3VtZW50cy5nZXQoKSwgbV9udW1iZXJPZkFyZ3VtZW50cywgaW52b2tlUmVzdWx0KTsKKyAg
ICAgICAgbV9jYWxsYmFja0FyZ3VtZW50cy0+aW52b2tlRGVmYXVsdChtX2NhbGxiYWNrQXJndW1l
bnRzLmdldCgpLCAxLCBpbnZva2VSZXN1bHQpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBPd25B
cnJheVB0cjxDcHBWYXJpYW50PiBtX2NhbGxiYWNrQXJndW1lbnRzOwotICAgIHVpbnQzMl90IG1f
bnVtYmVyT2ZBcmd1bWVudHM7CisgICAgYXV0b19wdHI8Q3BwVmFyaWFudD4gbV9jYWxsYmFja0Fy
Z3VtZW50czsKIH07CiAKIH0KQEAgLTExMyw3ICsxMTEsNyBAQCB2b2lkIFRlc3RSdW5uZXI6Oldv
cmtRdWV1ZTo6cHJvY2Vzc1dvcmtTb29uKCkKICAgICBpZiAobV9jb250cm9sbGVyLT50b3BMb2Fk
aW5nRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX3F1ZXVlLmlzRW1wdHko
KSkgeworICAgIGlmICghbV9xdWV1ZS5lbXB0eSgpKSB7CiAgICAgICAgIC8vIFdlIGRlbGF5IHBy
b2Nlc3NpbmcgcXVldWVkIHdvcmsgdG8gYXZvaWQgcmVjdXJzaW9uIHByb2JsZW1zLgogICAgICAg
ICBtX2NvbnRyb2xsZXItPm1fZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBXb3JrUXVldWVUYXNrKHRo
aXMpKTsKICAgICB9IGVsc2UgaWYgKCFtX2NvbnRyb2xsZXItPm1fd2FpdFVudGlsRG9uZSkKQEAg
LTEyMyw5ICsxMjEsMTAgQEAgdm9pZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6OnByb2Nlc3NXb3Jr
U29vbigpCiB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dvcmsoKQogewogICAg
IC8vIFF1aXQgZG9pbmcgd29yayBvbmNlIGEgbG9hZCBpcyBpbiBwcm9ncmVzcy4KLSAgICB3aGls
ZSAoIW1fcXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGJvb2wgc3RhcnRlZExvYWQgPSBtX3F1
ZXVlLmZpcnN0KCktPnJ1bihtX2NvbnRyb2xsZXItPm1fZGVsZWdhdGUsIG1fY29udHJvbGxlci0+
bV93ZWJWaWV3KTsKLSAgICAgICAgZGVsZXRlIG1fcXVldWUudGFrZUZpcnN0KCk7CisgICAgd2hp
bGUgKCFtX3F1ZXVlLmVtcHR5KCkpIHsKKyAgICAgICAgYm9vbCBzdGFydGVkTG9hZCA9IG1fcXVl
dWUuZnJvbnQoKS0+cnVuKG1fY29udHJvbGxlci0+bV9kZWxlZ2F0ZSwgbV9jb250cm9sbGVyLT5t
X3dlYlZpZXcpOworICAgICAgICBkZWxldGUgbV9xdWV1ZS5mcm9udCgpOworICAgICAgICBtX3F1
ZXVlLnBvcF9mcm9udCgpOwogICAgICAgICBpZiAoc3RhcnRlZExvYWQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTM3LDggKzEzNiwxMCBAQCB2b2lkIFRlc3RSdW5uZXI6OldvcmtR
dWV1ZTo6cHJvY2Vzc1dvcmsoKQogdm9pZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6OnJlc2V0KCkK
IHsKICAgICBtX2Zyb3plbiA9IGZhbHNlOwotICAgIHdoaWxlICghbV9xdWV1ZS5pc0VtcHR5KCkp
Ci0gICAgICAgIGRlbGV0ZSBtX3F1ZXVlLnRha2VGaXJzdCgpOworICAgIHdoaWxlICghbV9xdWV1
ZS5lbXB0eSgpKSB7CisgICAgICAgIGRlbGV0ZSBtX3F1ZXVlLmZyb250KCk7CisgICAgICAgIG1f
cXVldWUucG9wX2Zyb250KCk7CisgICAgfQogfQogCiB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1
ZTo6YWRkV29yayhXb3JrSXRlbSogd29yaykKQEAgLTE0Nyw3ICsxNDgsNyBAQCB2b2lkIFRlc3RS
dW5uZXI6OldvcmtRdWV1ZTo6YWRkV29yayhXb3JrSXRlbSogd29yaykKICAgICAgICAgZGVsZXRl
IHdvcms7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9xdWV1ZS5hcHBlbmQod29yayk7
CisgICAgbV9xdWV1ZS5wdXNoX2JhY2sod29yayk7CiB9CiAKIApAQCAtMTU2LDggKzE1Nyw4IEBA
IFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgICwgbV93b3JrUXVldWUodGhpcykKICAgICAs
IG1fZGVsZWdhdGUoMCkKICAgICAsIG1fd2ViVmlldygwKQotICAgICwgbV9pbnRlbnRDbGllbnQo
YWRvcHRQdHIobmV3IEVtcHR5V2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50KSkKLSAgICAsIG1fd2Vi
UGVybWlzc2lvbnMoYWRvcHRQdHIobmV3IFdlYlBlcm1pc3Npb25zKSkKKyAgICAsIG1faW50ZW50
Q2xpZW50KG5ldyBFbXB0eVdlYkRlbGl2ZXJlZEludGVudENsaWVudCkKKyAgICAsIG1fd2ViUGVy
bWlzc2lvbnMobmV3IFdlYlBlcm1pc3Npb25zKQogewogICAgIC8vIEluaXRpYWxpemUgdGhlIG1h
cCB0aGF0IGFzc29jaWF0ZXMgbWV0aG9kcyBvZiB0aGlzIGNsYXNzIHdpdGggdGhlIG5hbWVzCiAg
ICAgLy8gdGhleSB3aWxsIHVzZSB3aGVuIGNhbGxlZCBieSBKYXZhU2NyaXB0LiBUaGUgYWN0dWFs
IGJpbmRpbmcgb2YgdGhvc2UKQEAgLTM2Niw3ICszNjcsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnJl
c2V0KCkKICAgICBpZiAobV93ZWJWaWV3KSB7CiAgICAgICAgIG1fd2ViVmlldy0+c2V0Wm9vbUxl
dmVsKGZhbHNlLCAwKTsKICAgICAgICAgbV93ZWJWaWV3LT5zZXRUYWJLZXlDeWNsZXNUaHJvdWdo
RWxlbWVudHModHJ1ZSk7Ci0jaWYgIU9TKERBUldJTikgJiYgIU9TKFdJTkRPV1MpIC8vIEFjdHVh
bGx5LCBUT09MS0lUX0dUSworI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoV0lO
MzIpIC8vIEFjdHVhbGx5LCBUT09MS0lUX0dUSwogICAgICAgICAvLyAoQ29uc3RhbnRzIGNvcGll
ZCBiZWNhdXNlIHdlIGNhbid0IGRlcGVuZCBvbiB0aGUgaGVhZGVyIHRoYXQgZGVmaW5lZAogICAg
ICAgICAvLyB0aGVtIGZyb20gdGhpcyBmaWxlLikKICAgICAgICAgbV93ZWJWaWV3LT5zZXRTZWxl
Y3Rpb25Db2xvcnMoMHhmZjFlOTBmZiwgMHhmZjAwMDAwMCwgMHhmZmM4YzhjOCwgMHhmZjMyMzIz
Mik7CkBAIC0zODEsNyArMzgyLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpyZXNldCgpCiAgICAgbV9w
b2xpY3lEZWxlZ2F0ZVNob3VsZE5vdGlmeURvbmUgPSBmYWxzZTsKIAogICAgIFdlYlNlY3VyaXR5
UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKLSNpZiBPUyhMSU5VWCkgfHwg
T1MoQU5EUk9JRCkKKyNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChBTkRST0lEKQog
ICAgIFdlYkZvbnRSZW5kZXJpbmc6OnNldFN1YnBpeGVsUG9zaXRpb25pbmcoZmFsc2UpOwogI2Vu
ZGlmCiAKQEAgLTQyMCw3ICs0MjEsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBt
X3Nob3VsZEJsb2NrUmVkaXJlY3RzID0gZmFsc2U7CiAgICAgbV93aWxsU2VuZFJlcXVlc3RTaG91
bGRSZXR1cm5OdWxsID0gZmFsc2U7CiAgICAgbV9zbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSB0
cnVlOwotI2lmIE9TKFdJTkRPV1MpCisjaWZkZWYgV0lOMzIKICAgICBtX3NlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQgPSB0cnVlOwogI2Vsc2UKICAgICBtX3NlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQgPSBmYWxzZTsKQEAgLTYzNiw3ICs2MzcsNyBAQCBXZWJGcmFtZSogVGVz
dFJ1bm5lcjo6dG9wTG9hZGluZ0ZyYW1lKCkgY29uc3QKIAogdm9pZCBUZXN0UnVubmVyOjpwb2xp
Y3lEZWxlZ2F0ZURvbmUoKQogewotICAgIEFTU0VSVChtX3dhaXRVbnRpbERvbmUpOworICAgIFdF
QktJVF9BU1NFUlQobV93YWl0VW50aWxEb25lKTsKICAgICBtX2RlbGVnYXRlLT50ZXN0RmluaXNo
ZWQoKTsKICAgICBtX3dhaXRVbnRpbERvbmUgPSBmYWxzZTsKIH0KQEAgLTEzMzEsNyArMTMzMiw3
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6ZmluZFN0cmluZyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0CiAgICAgV2ViRmluZE9wdGlvbnMgZmluZE9wdGlv
bnM7CiAgICAgYm9vbCB3cmFwQXJvdW5kID0gZmFsc2U7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXpl
KCkgPj0gMikgewotICAgICAgICBWZWN0b3I8c3RkOjpzdHJpbmc+IG9wdGlvbnNBcnJheSA9IGFy
Z3VtZW50c1sxXS50b1N0cmluZ1ZlY3RvcigpOworICAgICAgICB2ZWN0b3I8c3RyaW5nPiBvcHRp
b25zQXJyYXkgPSBhcmd1bWVudHNbMV0udG9TdHJpbmdWZWN0b3IoKTsKICAgICAgICAgZmluZE9w
dGlvbnMubWF0Y2hDYXNlID0gdHJ1ZTsKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG9wdGlvbnNBcnJheS5zaXplKCk7ICsraSkgewpAQCAtMTQxMSw3ICsxNDEyLDcgQEAgdm9pZCBU
ZXN0UnVubmVyOjpzZWxlY3Rpb25Bc01hcmt1cChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCoKIAogdm9pZCBUZXN0UnVubmVyOjpzZXRUZXh0U3VicGl4ZWxQb3Np
dGlvbmluZyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVz
dWx0KQogewotI2lmIE9TKExJTlVYKSB8fCBPUyhBTkRST0lEKQorI2lmIGRlZmluZWQoX19saW51
eF9fKSB8fCBkZWZpbmVkKEFORFJPSUQpCiAgICAgLy8gU2luY2UgRm9udENvbmZpZyBkb2Vzbid0
IHByb3ZpZGUgYSB2YXJpYWJsZSB0byBjb250cm9sIHN1YnBpeGVsIHBvc2l0aW9uaW5nLCB3ZSds
bCBmYWxsIGJhY2sKICAgICAvLyB0byBzZXR0aW5nIGl0IGdsb2JhbGx5IGZvciBhbGwgZm9udHMu
CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkK
QEAgLTE2ODAsNyArMTY4MSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNl
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50CiAgICAgZWxzZSBp
ZiAoa2V5ID09ICJXZWJLaXRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiIpCiAgICAgICAg
IHByZWZzLT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9IGNwcFZhcmlhbnRUb0Jvb2wo
dmFsdWUpOwogICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0V2ViQXVkaW9FbmFibGVkIikKLSAg
ICAgICAgQVNTRVJUKGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpKTsKKyAgICAgICAgV0VCS0lUX0FT
U0VSVChjcHBWYXJpYW50VG9Cb29sKHZhbHVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIHN0cmlu
ZyBtZXNzYWdlKCJJbnZhbGlkIG5hbWUgZm9yIHByZWZlcmVuY2U6ICIpOwogICAgICAgICBtZXNz
YWdlLmFwcGVuZChrZXkpOwpAQCAtMTgzMywxMCArMTgzNCwxMCBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNldEJhY2tpbmdTY2FsZUZhY3Rvcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywg
Q3BwVmFyaQogICAgIGZsb2F0IHZhbHVlID0gYXJndW1lbnRzWzBdLnZhbHVlLmRvdWJsZVZhbHVl
OwogICAgIG1fZGVsZWdhdGUtPnNldERldmljZVNjYWxlRmFjdG9yKHZhbHVlKTsKIAotICAgIE93
bkFycmF5UHRyPENwcFZhcmlhbnQ+IGNhbGxiYWNrQXJndW1lbnRzID0gYWRvcHRBcnJheVB0cihu
ZXcgQ3BwVmFyaWFudFsxXSk7Ci0gICAgY2FsbGJhY2tBcmd1bWVudHNbMF0uc2V0KGFyZ3VtZW50
c1sxXSk7CisgICAgYXV0b19wdHI8Q3BwVmFyaWFudD4gY2FsbGJhY2tBcmd1bWVudHMobmV3IENw
cFZhcmlhbnQoKSk7CisgICAgY2FsbGJhY2tBcmd1bWVudHMtPnNldChhcmd1bWVudHNbMV0pOwog
ICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIG1fZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBJbnZv
a2VDYWxsYmFja1Rhc2sodGhpcywgY2FsbGJhY2tBcmd1bWVudHMucmVsZWFzZSgpLCAxKSk7Cisg
ICAgbV9kZWxlZ2F0ZS0+cG9zdFRhc2sobmV3IEludm9rZUNhbGxiYWNrVGFzayh0aGlzLCBjYWxs
YmFja0FyZ3VtZW50cykpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFBPU0lYTG9jYWxlKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0UnVubmVyLmgKaW5kZXggMTkwODIzOTk4NWY1MjM3MzZhMmNhNmJiODBiZGRjZjU2YThkMzUx
Mi4uN2IzYjQ0NmMwMmFlYzRjNDQyZjNiZGQyNDIxNDQxYmE2MWRiMmIxYSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RS
dW5uZXIuaApAQCAtMzksMTAgKzM5LDExIEBACiAjaW5jbHVkZSAiV2ViVGFzay5oIgogI2luY2x1
ZGUgIldlYlRlc3RSdW5uZXIuaCIKICNpbmNsdWRlICJXZWJUZXh0RGlyZWN0aW9uLmgiCisjaW5j
bHVkZSA8ZGVxdWU+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkwu
aD4KICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkFycmF5QnVmZmVyVmlldzsKQEAg
LTcwLDQ4ICs3MSw0OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXN0SXNSdW5uaW5nKGJvb2wp
OwogCiAgICAgLy8gV2ViVGVzdFJ1bm5lciBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRHVtcEFzVGV4dCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRTaG91bGREdW1wQXNUZXh0KGJvb2wpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRHZW5lcmF0ZVBpeGVsUmVzdWx0cygpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRTaG91bGRHZW5lcmF0ZVBpeGVsUmVzdWx0cyhib29sKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcENoaWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMoKSBjb25z
dCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcENoaWxkRnJhbWVzQXNUZXh0
KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZER1bXBBc0F1ZGlvKCkg
Y29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25zdCBXZWJLaXQ6OldlYkFycmF5QnVmZmVy
VmlldyogYXVkaW9EYXRhKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNob3Vs
ZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0U2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcyhib29sKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKSBj
b25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc3RvcFByb3Zpc2lvbmFsRnJhbWVMb2Fk
cygpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wVGl0bGVDaGFu
Z2VzKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZER1bXBDcmVhdGVW
aWV3KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGNhbk9wZW5XaW5kb3dzKCkg
Y29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZER1bXBSZXNvdXJjZUxvYWRD
YWxsYmFja3MoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcFJl
c291cmNlUmVxdWVzdENhbGxiYWNrcygpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGREdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpIGNvbnN0IE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJQZXJtaXNzaW9uQ2xpZW50KiB3ZWJQZXJtaXNzaW9ucygp
IGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wU3RhdHVzQ2FsbGJh
Y2tzKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZER1bXBQcm9ncmVz
c0ZpbmlzaGVkQ2FsbGJhY2soKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkRHVtcEJhY2tGb3J3YXJkTGlzdCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9v
bCBkZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBib29sIHNob3VsZER1bXBTZWxlY3Rpb25SZWN0KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBib29sIHRlc3RSZXBhaW50KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29s
IHN3ZWVwSG9yaXpvbnRhbGx5KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGlz
UHJpbnRpbmcoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RheU9u
UGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0VGl0bGVUZXh0RGlyZWN0aW9uKFdlYktpdDo6V2ViVGV4dERpcmVjdGlvbikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25zdCBzdGQ6OnNldDxzdGQ6OnN0cmluZz4qIGh0dHBI
ZWFkZXJzVG9DbGVhcigpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRC
bG9ja1JlZGlyZWN0cygpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCB3aWxsU2Vu
ZFJlcXVlc3RTaG91bGRSZXR1cm5OdWxsKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFRvcExvYWRpbmdGcmFtZShXZWJLaXQ6OldlYkZyYW1lKiwgYm9vbCkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBXZWJLaXQ6OldlYkZyYW1lKiB0b3BMb2FkaW5nRnJhbWUoKSBjb25zdCBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9saWN5RGVsZWdhdGVEb25lKCkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBib29sIHBvbGljeURlbGVnYXRlRW5hYmxlZCgpIGNvbnN0IE9WRVJSSURF
OwotICAgIHZpcnR1YWwgYm9vbCBwb2xpY3lEZWxlZ2F0ZUlzUGVybWlzc2l2ZSgpIGNvbnN0IE9W
RVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBwb2xpY3lEZWxlZ2F0ZVNob3VsZE5vdGlmeURvbmUo
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJjZXB0UG9zdE1l
c3NhZ2UoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RU
cmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIHNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IHNob3VsZER1bXBBc1RleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkRHVt
cEFzVGV4dChib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR2VuZXJhdGVQaXhlbFJlc3Vs
dHMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkR2VuZXJhdGVQaXhlbFJlc3Vs
dHMoYm9vbCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBDaGlsZEZyYW1lU2Nyb2xsUG9z
aXRpb25zKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBDaGlsZEZyYW1lc0Fz
VGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wQXNBdWRpbygpIGNvbnN0
OworICAgIHZpcnR1YWwgY29uc3QgV2ViS2l0OjpXZWJBcnJheUJ1ZmZlclZpZXcqIGF1ZGlvRGF0
YSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFj
a3MoYm9vbCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVM
b2FkQ2FsbGJhY2tzKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHN0b3BQcm92aXNpb25hbEZy
YW1lTG9hZHMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcFRpdGxlQ2hhbmdl
cygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wQ3JlYXRlVmlldygpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBjYW5PcGVuV2luZG93cygpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHNob3VsZER1bXBSZXNvdXJjZVJlcXVlc3RDYWxsYmFja3MoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViUGVybWlzc2lvbkNsaWVudCogd2ViUGVybWlzc2lvbnMo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcFN0YXR1c0NhbGxiYWNrcygpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNr
KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBCYWNrRm9yd2FyZExpc3QoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCgpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wU2VsZWN0aW9uUmVjdCgpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCB0ZXN0UmVwYWludCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzd2Vl
cEhvcml6b250YWxseSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1ByaW50aW5nKCkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIHNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3Jl
VW5sb2FkKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlVGV4dERpcmVjdGlvbihX
ZWJLaXQ6OldlYlRleHREaXJlY3Rpb24pOworICAgIHZpcnR1YWwgY29uc3Qgc3RkOjpzZXQ8c3Rk
OjpzdHJpbmc+KiBodHRwSGVhZGVyc1RvQ2xlYXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQmxvY2tSZWRpcmVjdHMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgd2lsbFNlbmRS
ZXF1ZXN0U2hvdWxkUmV0dXJuTnVsbCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRUb3BM
b2FkaW5nRnJhbWUoV2ViS2l0OjpXZWJGcmFtZSosIGJvb2wpOworICAgIHZpcnR1YWwgV2ViS2l0
OjpXZWJGcmFtZSogdG9wTG9hZGluZ0ZyYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHBv
bGljeURlbGVnYXRlRG9uZSgpOworICAgIHZpcnR1YWwgYm9vbCBwb2xpY3lEZWxlZ2F0ZUVuYWJs
ZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcG9saWN5RGVsZWdhdGVJc1Blcm1pc3NpdmUo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcG9saWN5RGVsZWdhdGVTaG91bGROb3RpZnlEb25l
KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNob3VsZEludGVyY2VwdFBvc3RNZXNzYWdlKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgp
IGNvbnN0OwogCiAgICAgLy8gQSBzaW5nbGUgaXRlbSBpbiB0aGUgd29yayBxdWV1ZS4KICAgICBj
bGFzcyBXb3JrSXRlbSB7CkBAIC0xMzksNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9p
ZCBhZGRXb3JrKFdvcmtJdGVtKik7CiAKICAgICAgICAgdm9pZCBzZXRGcm96ZW4oYm9vbCBmcm96
ZW4pIHsgbV9mcm96ZW4gPSBmcm96ZW47IH0KLSAgICAgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1
cm4gbV9xdWV1ZS5pc0VtcHR5KCk7IH0KKyAgICAgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4g
bV9xdWV1ZS5lbXB0eSgpOyB9CiAgICAgICAgIFdlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0
dXJuICZtX3Rhc2tMaXN0OyB9CiAKICAgICBwcml2YXRlOgpAQCAtMTUxLDcgKzE1Miw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIH07CiAKICAgICAgICAgV2ViVGFza0xpc3QgbV90YXNrTGlzdDsKLSAg
ICAgICAgRGVxdWU8V29ya0l0ZW0qPiBtX3F1ZXVlOworICAgICAgICBzdGQ6OmRlcXVlPFdvcmtJ
dGVtKj4gbV9xdWV1ZTsKICAgICAgICAgYm9vbCBtX2Zyb3plbjsKICAgICAgICAgVGVzdFJ1bm5l
ciogbV9jb250cm9sbGVyOwogICAgIH07CkBAIC02ODAsMTAgKzY4MSwxMCBAQCBwcml2YXRlOgog
ICAgIFdlYktpdDo6V2ViRnJhbWUqIG1fdG9wTG9hZGluZ0ZyYW1lOwogCiAgICAgLy8gTW9jayBv
YmplY3QgZm9yIHRlc3RpbmcgZGVsaXZlcmluZyB3ZWIgaW50ZW50cy4KLSAgICBPd25QdHI8V2Vi
S2l0OjpXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQ+IG1faW50ZW50Q2xpZW50OworICAgIHN0ZDo6
YXV0b19wdHI8V2ViS2l0OjpXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQ+IG1faW50ZW50Q2xpZW50
OwogCiAgICAgLy8gV2ViUGVybWlzc2lvbkNsaWVudCBtb2NrIG9iamVjdC4KLSAgICBPd25QdHI8
V2ViUGVybWlzc2lvbnM+IG1fd2ViUGVybWlzc2lvbnM7CisgICAgc3RkOjphdXRvX3B0cjxXZWJQ
ZXJtaXNzaW9ucz4gbV93ZWJQZXJtaXNzaW9uczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1RleHRJbnB1dENvbnRyb2xs
ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGV4
dElucHV0Q29udHJvbGxlci5jcHAKaW5kZXggMzIyNWNiOTBjNDJhNmVlYmJiYWI1OTQ3MDcyZTMy
YTRhN2EyMDI4MC4uZjVmOWIyYWU4MDkyYTM3OGMzMjY1MjNhZGYzN2ExOGFhOTQ0MDU1MiAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGV4
dElucHV0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvVGV4dElucHV0Q29udHJvbGxlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXh0SW5wdXRDb250cm9sbGVyLmgiCiAK
KyNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViQmluZGluZ3MuaCIKICNpbmNs
dWRlICJXZWJDb21wb3NpdGlvblVuZGVybGluZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBA
IC00MCw5ICs0MSw5IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJWZWN0b3IuaD4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8d3RmL1N0
cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCkBAIC0xNDYsNyArMTQ3LDcgQEAg
dm9pZCBUZXh0SW5wdXRDb250cm9sbGVyOjptYXJrZWRSYW5nZShjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50KiByZXN1bHQKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViUmFuZ2Ug
cmFuZ2UgPSBtYWluRnJhbWUtPm1hcmtlZFJhbmdlKCk7Ci0gICAgVmVjdG9yPGludD4gaW50QXJy
YXkoMik7CisgICAgdmVjdG9yPGludD4gaW50QXJyYXkoMik7CiAgICAgaW50QXJyYXlbMF0gPSBy
YW5nZS5zdGFydE9mZnNldCgpOwogICAgIGludEFycmF5WzFdID0gcmFuZ2UuZW5kT2Zmc2V0KCk7
CiAgICAgcmVzdWx0LT5zZXQoV2ViQmluZGluZ3M6Om1ha2VJbnRBcnJheShpbnRBcnJheSkpOwpA
QCAtMTYxLDcgKzE2Miw3IEBAIHZvaWQgVGV4dElucHV0Q29udHJvbGxlcjo6c2VsZWN0ZWRSYW5n
ZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1CiAgICAgICAgIHJldHVy
bjsKIAogICAgIFdlYlJhbmdlIHJhbmdlID0gbWFpbkZyYW1lLT5zZWxlY3Rpb25SYW5nZSgpOwot
ICAgIFZlY3RvcjxpbnQ+IGludEFycmF5KDIpOworICAgIHZlY3RvcjxpbnQ+IGludEFycmF5KDIp
OwogICAgIGludEFycmF5WzBdID0gcmFuZ2Uuc3RhcnRPZmZzZXQoKTsKICAgICBpbnRBcnJheVsx
XSA9IHJhbmdlLmVuZE9mZnNldCgpOwogICAgIHJlc3VsdC0+c2V0KFdlYkJpbmRpbmdzOjptYWtl
SW50QXJyYXkoaW50QXJyYXkpKTsKQEAgLTE4Miw3ICsxODMsNyBAQCB2b2lkIFRleHRJbnB1dENv
bnRyb2xsZXI6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndQogICAgIGlmICghZnJhbWUtPmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGFyZ3Vt
ZW50c1swXS50b0ludDMyKCksIGFyZ3VtZW50c1sxXS50b0ludDMyKCksIHJlY3QpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBWZWN0b3I8aW50PiBpbnRBcnJheSg0KTsKKyAgICB2ZWN0b3I8aW50
PiBpbnRBcnJheSg0KTsKICAgICBpbnRBcnJheVswXSA9IHJlY3QueDsKICAgICBpbnRBcnJheVsx
XSA9IHJlY3QueTsKICAgICBpbnRBcnJheVsyXSA9IHJlY3Qud2lkdGg7CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNl
cy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQ
cmVmZXJlbmNlcy5jcHAKaW5kZXggOTEzMjhmODNhN2Y3NWRmMzRlOTA2ZjhlZDVlYmNmOGQ3NmQw
NjNhMi4uODA4MDhjZTQxNjY5ZmY5OTk5ZWYzNDBiNjU4ZWIzNGQxMTRkOTA4MyAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViUHJlZmVy
ZW5jZXMuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViVGVz
dFJ1bm5lciB7CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnJlc2V0KCkKIHsKLSNpZiBPUyhNQUNf
T1NfWCkKKyNpZmRlZiBfX0FQUExFX18KICAgICBjdXJzaXZlRm9udEZhbWlseSA9IFdlYlN0cmlu
Zzo6ZnJvbVVURjgoIkFwcGxlIENoYW5jZXJ5Iik7CiAgICAgZmFudGFzeUZvbnRGYW1pbHkgPSBX
ZWJTdHJpbmc6OmZyb21VVEY4KCJQYXB5cnVzIik7CiAgICAgV2ViU3RyaW5nIHNlcmlmID0gV2Vi
U3RyaW5nOjpmcm9tVVRGOCgiVGltZXMiKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFdlYlBy
ZWZlcmVuY2VzOjpyZXNldCgpCiAgICAgLy8gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbCwg
dG8gYWNjZXNzIGh0dHAgc2VydmVyLgogICAgIGFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVV
UkxzID0gdHJ1ZTsKIAotI2lmIE9TKERBUldJTikKKyNpZmRlZiBfX0FQUExFX18KICAgICBlZGl0
aW5nQmVoYXZpb3IgPSBXZWJTZXR0aW5nczo6RWRpdGluZ0JlaGF2aW9yTWFjOwogI2Vsc2UKICAg
ICBlZGl0aW5nQmVoYXZpb3IgPSBXZWJTZXR0aW5nczo6RWRpdGluZ0JlaGF2aW9yV2luOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2Vi
VGFzay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9X
ZWJUYXNrLmNwcAppbmRleCA5NzUzMWM4MGRlMTQ1NDllYzBmYTFjMDUxY2M1ZDA4MTBmMmJkNGY4
Li43NzlmNTNlNThhZTg1NDIyMmVkODU2ZjNmMTUyMGMxODRlYWFiYTAyIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNr
LmNwcApAQCAtMzIsNyArMzIsOSBAQAogI2luY2x1ZGUgIldlYlRhc2suaCIKIAogI2luY2x1ZGUg
IldlYktpdC5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+
CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIApA
QCAtNDgsMzYgKzUwLDMxIEBAIFdlYlRhc2s6On5XZWJUYXNrKCkKICAgICAgICAgbV90YXNrTGlz
dC0+dW5yZWdpc3RlclRhc2sodGhpcyk7CiB9CiAKLWNsYXNzIFdlYlRhc2tMaXN0OjpQcml2YXRl
IDogcHVibGljIFZlY3RvcjxXZWJUYXNrKj4gewotfTsKLQogV2ViVGFza0xpc3Q6OldlYlRhc2tM
aXN0KCkKLSAgICA6IG1fcHJpdmF0ZShuZXcgUHJpdmF0ZSkKIHsKIH0KIAogV2ViVGFza0xpc3Q6
On5XZWJUYXNrTGlzdCgpCiB7CiAgICAgcmV2b2tlQWxsKCk7Ci0gICAgZGVsZXRlIG1fcHJpdmF0
ZTsKIH0KIAogdm9pZCBXZWJUYXNrTGlzdDo6cmVnaXN0ZXJUYXNrKFdlYlRhc2sqIHRhc2spCiB7
Ci0gICAgbV9wcml2YXRlLT5hcHBlbmQodGFzayk7CisgICAgbV90YXNrcy5wdXNoX2JhY2sodGFz
ayk7CiB9CiAKIHZvaWQgV2ViVGFza0xpc3Q6OnVucmVnaXN0ZXJUYXNrKFdlYlRhc2sqIHRhc2sp
CiB7Ci0gICAgc2l6ZV90IGluZGV4ID0gbV9wcml2YXRlLT5maW5kKHRhc2spOwotICAgIGlmIChp
bmRleCAhPSBub3RGb3VuZCkKLSAgICAgICAgbV9wcml2YXRlLT5yZW1vdmUoaW5kZXgpOworICAg
IHZlY3RvcjxXZWJUYXNrKj46Oml0ZXJhdG9yIGl0ZXIgPSBmaW5kKG1fdGFza3MuYmVnaW4oKSwg
bV90YXNrcy5lbmQoKSwgdGFzayk7CisgICAgaWYgKGl0ZXIgIT0gbV90YXNrcy5lbmQoKSkKKyAg
ICAgICAgbV90YXNrcy5lcmFzZShpdGVyKTsKIH0KIAogdm9pZCBXZWJUYXNrTGlzdDo6cmV2b2tl
QWxsKCkKIHsKLSAgICB3aGlsZSAoIW1fcHJpdmF0ZS0+aXNFbXB0eSgpKQotICAgICAgICAoKm1f
cHJpdmF0ZSlbMF0tPmNhbmNlbCgpOworICAgIHdoaWxlICghbV90YXNrcy5lbXB0eSgpKQorICAg
ICAgICBtX3Rhc2tzWzBdLT5jYW5jZWwoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdElu
dGVyZmFjZXMuY3BwCmluZGV4IDg5MjYzYmQ3YmUwMzlmNjRjYmZmYjkxNDFhZTdiMDY4ODRhMTc3
ZDcuLjdiNTgyOGRmOWI5OWQ2OGQzM2VhNDY3NzM5ZWUyMTIzYTUzNzY1NzMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRl
cmZhY2VzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKQEAgLTM5LDEzICszOSwxMiBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCiBXZWJUZXN0SW50ZXJm
YWNlczo6V2ViVGVzdEludGVyZmFjZXMoKQorICAgIDogbV9pbnRlcmZhY2VzKG5ldyBUZXN0SW50
ZXJmYWNlcygpKQogewotICAgIG1faW50ZXJmYWNlcyA9IG5ldyBUZXN0SW50ZXJmYWNlczsKIH0K
IAogV2ViVGVzdEludGVyZmFjZXM6On5XZWJUZXN0SW50ZXJmYWNlcygpCiB7Ci0gICAgZGVsZXRl
IG1faW50ZXJmYWNlczsKIH0KIAogdm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6c2V0V2ViVmlldyhX
ZWJWaWV3KiB3ZWJWaWV3KQpAQCAtODUsNyArODQsNyBAQCBXZWJUZXN0UnVubmVyKiBXZWJUZXN0
SW50ZXJmYWNlczo6dGVzdFJ1bm5lcigpCiAKIFRlc3RJbnRlcmZhY2VzKiBXZWJUZXN0SW50ZXJm
YWNlczo6dGVzdEludGVyZmFjZXMoKQogewotICAgIHJldHVybiBtX2ludGVyZmFjZXM7CisgICAg
cmV0dXJuIG1faW50ZXJmYWNlcy5nZXQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5j
cHAKaW5kZXggNzJlOGQ1NDZjNmNjZTA5NjRhMjBmNTgwMzRlZmJmZTQyZDcxZDQzNC4uNTQ3Mzkw
OWRkMjc3YmVlMjkzY2E2OTQ3MzI1OGZkZGI0MzFmNGY5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJv
eHkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVkZSAiU3BlbGxD
aGVja0NsaWVudC5oIgorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJUZXN0SW50
ZXJmYWNlcy5oIgogI2luY2x1ZGUgIlRlc3RQbHVnaW4uaCIKICNpbmNsdWRlICJUZXN0UnVubmVy
LmgiCkBAIC01OCw3ICs1OSw2IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTEVycm9yLmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYlVSTFJlcXVlc3QuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJM
UmVzcG9uc2UuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0
cmluZyB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3Qgc3RyaW5nJiB1cmwpCiAKICAgICBz
aXplX3QgcG9zID0gdXJsLnJmaW5kKCcvJyk7CiAgICAgaWYgKHBvcyA9PSBzdHJpbmc6Om5wb3Mp
IHsKLSNpZiBPUyhXSU5ET1dTKQorI2lmZGVmIFdJTjMyCiAgICAgICAgIHBvcyA9IHVybC5yZmlu
ZCgnXFwnKTsKICAgICAgICAgaWYgKHBvcyA9PSBzdHJpbmc6Om5wb3MpCiAgICAgICAgICAgICBw
b3MgPSAwOwpAQCAtMjY3LDcgKzI2Nyw2IEBAIFdlYlRlc3RQcm94eUJhc2U6OldlYlRlc3RQcm94
eUJhc2UoKQogCiBXZWJUZXN0UHJveHlCYXNlOjp+V2ViVGVzdFByb3h5QmFzZSgpCiB7Ci0gICAg
ZGVsZXRlIG1fc3BlbGxjaGVjazsKIH0KIAogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpzZXRJbnRl
cmZhY2VzKFdlYlRlc3RJbnRlcmZhY2VzKiBpbnRlcmZhY2VzKQpAQCAtMjkwLDcgKzI4OSw3IEBA
IHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6cmVzZXQoKQogCiBXZWJTcGVsbENoZWNrQ2xpZW50KiBX
ZWJUZXN0UHJveHlCYXNlOjpzcGVsbENoZWNrQ2xpZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9zcGVsbGNoZWNrOworICAgIHJldHVybiBtX3NwZWxsY2hlY2suZ2V0KCk7CiB9CiAKIHZvaWQg
V2ViVGVzdFByb3h5QmFzZTo6c2V0UGFpbnRSZWN0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCkBAIC03
ODYsNyArNzg1LDcgQEAgdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpkaWREZXRlY3RYU1MoV2ViRnJh
bWUqLCBjb25zdCBXZWJVUkwmLCBib29sKQogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjphc3NpZ25J
ZGVudGlmaWVyVG9SZXF1ZXN0KFdlYkZyYW1lKiwgdW5zaWduZWQgaWRlbnRpZmllciwgY29uc3Qg
V2ViS2l0OjpXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmIChtX3Rlc3RJbnRlcmZh
Y2VzLT50ZXN0UnVubmVyKCkgJiYgbV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91
bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb3Vy
Y2VJZGVudGlmaWVyTWFwLmZpbmQoaWRlbnRpZmllcikgPT0gbV9yZXNvdXJjZUlkZW50aWZpZXJN
YXAuZW5kKCkpOworICAgICAgICBXRUJLSVRfQVNTRVJUKG1fcmVzb3VyY2VJZGVudGlmaWVyTWFw
LmZpbmQoaWRlbnRpZmllcikgPT0gbV9yZXNvdXJjZUlkZW50aWZpZXJNYXAuZW5kKCkpOwogICAg
ICAgICBtX3Jlc291cmNlSWRlbnRpZmllck1hcFtpZGVudGlmaWVyXSA9IGRlc2NyaXB0aW9uU3Vp
dGFibGVGb3JUZXN0UmVzdWx0KHJlcXVlc3QudXJsKCkuc3BlYygpKTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9jb25m
aWcuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL2NvbmZp
Zy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQzNmEyN2UyZTc2OGVhYjFmNjE1YWI3M2ZhYTYzNzNkYjFiNTI2YzYK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9jb25maWcuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBjb25maWdfaAorI2RlZmlu
ZSBjb25maWdfaAorCisjZGVmaW5lIFVTRShmZWF0dXJlKSAoZGVmaW5lZCBXVEZfVVNFXyMjZmVh
dHVyZSAmJiBXVEZfVVNFXyMjZmVhdHVyZSkKKyNkZWZpbmUgRU5BQkxFKGZlYXR1cmUpIChkZWZp
bmVkIEVOQUJMRV8jI2ZlYXR1cmUgJiYgRU5BQkxFXyMjZmVhdHVyZSkKKworI2VuZGlmIC8vIGNv
bmZpZ19oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186701</attachid>
            <date>2013-02-05 14:13:18 -0800</date>
            <delta_ts>2013-02-06 04:09:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108466-20130205230955.patch</filename>
            <type>text/plain</type>
            <size>95018</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTI5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjE0MTI3YTMwN2JhN2I2YmRiNzAyY2NjOWY1ODQ2ZGQ5
NTliOTA2MC4uNjA5OTQzNzZjNmMxZmNmMTE5MWYxZDZiZDBiMjY3ODM3NzlmNDhkNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
NCBAQAorMjAxMy0wMi0wNSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIHR1cm4gVGVzdFJ1bm5lciBsaWJyYXJ5IGludG8gYSBjb21w
b25lbnQgYnVpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwODQ2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRvIGFjaGlldmUgdGhpcywgd2UgbmVlZCB0byBkcm9wIGFsbCBkZXBlbmRlbmNpZXMgb24g
V1RGLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBS
ZW5kZXJUcmVlLmd5cDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlByZWZlcmVuY2VzLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RDb21tb24uaDogQ29waWVkIGZyb20gVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFj
ZXMuaC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnRMaXN0OjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TGlzdDo6Y3JlYXRlUm9vdCk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dENocm9taXVtLmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TGlzdCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFz
cy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjp+Q3BwQm91bmRD
bGFzcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjppbnZva2UpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6Z2V0UHJvcGVydHkpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6c2V0UHJvcGVydHkpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZENhbGxiYWNrKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6OmJpbmRHZXR0ZXJDYWxsYmFjayk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpiaW5kUHJvcGVydHkpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6Z2V0QXNDcHBWYXJpYW50KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENsYXNz
Lmg6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKENwcEJvdW5kQ2xhc3MpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZFByb3BlcnR5KToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6OmJpbmRGYWxsYmFja0NhbGxiYWNr
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6OmJpbmRGYWxsYmFja01l
dGhvZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
Q3BwVmFyaWFudC5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBWYXJpYW50Ojp0b1N0
cmluZyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBWYXJpYW50Ojp0b0ludDMyKToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcFZhcmlhbnQ6OnRvRG91YmxlKToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6OkNwcFZhcmlhbnQ6OnRvQm9vbGVhbik6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpDcHBWYXJpYW50Ojp0b1N0cmluZ1ZlY3Rvcik6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpDcHBWYXJpYW50OjppbnZva2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwVmFyaWFu
dDo6aW52b2tlRGVmYXVsdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5oOgorICAgICAgICAoQ3BwVmFyaWFudCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3Bw
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVu
dFNlbmRlcjo6RXZlbnRTZW5kZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjptb3VzZURv
d24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6Om1vdXNlVXApOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6Om1vdXNlTW92ZVRvKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjprZXlEb3duKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OkV2ZW50U2VuZGVyOjpkaXNwYXRjaE1lc3NhZ2UpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6RXZlbnRTZW5kZXI6OmxlYXBGb3J3YXJkKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OkV2ZW50U2VuZGVyOjpyZXBsYXlTYXZlZEV2ZW50cyk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjptYWtlTWVudUl0ZW1TdHJpbmdzRm9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50
U2VuZGVyOjpjb250ZXh0Q2xpY2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI6OmJlZ2luRHJhZ1dpdGhGaWxlcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNl
bmRlcjo6YWRkVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRl
cjo6cmVsZWFzZVRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI6OnVwZGF0ZVRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI6OmNhbmNlbFRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI6OnNlbmRDdXJyZW50VG91Y2hFdmVudCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVu
dFNlbmRlcjo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFwcGluZy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpOYXRpdmVLZXlDb2RlRm9yV2luZG93c0tleUNvZGUpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suY3BwOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja0dyYW1tYXJDaGVjazo6Y2hlY2tHcmFtbWFyT2ZTdHJp
bmcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5oOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcik6CisgICAgICAgIChNb2NrR3JhbW1hckNoZWNrKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5jcHA6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpNb2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dvcmQpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6TW9ja1NwZWxsQ2hlY2s6OmluaXRpYWxpemVJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5oOgorICAgICAgICAoTW9ja1Nw
ZWxsQ2hlY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1NwZWxsQ2hlY2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6U3BlbGxD
aGVja0NsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6U3BlbGxDaGVja0NsaWVudDo6ZmluaXNoTGFzdFRleHRDaGVjayk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdENvbW1vbi5oOiBDb3BpZWQg
ZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJU
ZXN0SW50ZXJmYWNlcy5oLgorICAgICAgICAoaXNBU0NJSUFscGhhKToKKyAgICAgICAgKGlzTm90
QVNDSUlBbHBoYSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdEludGVyZmFjZXMuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdElu
dGVyZmFjZXM6OlRlc3RJbnRlcmZhY2VzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoVGVzdEludGVy
ZmFjZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RQbHVnaW4uY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6VGVz
dFBsdWdpbik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjppbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmRlc3Ryb3kpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6cGFyc2VQcmltaXRpdmUpOgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6cGFyc2VDb2xvcik6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpUZXN0UGx1Z2luOjppbml0UHJvZ3JhbSk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpUZXN0UGx1Z2luOjppbml0UHJpbWl0aXZlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RQbHVnaW46OmRyYXdQcmltaXRpdmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBs
dWdpbjo6bG9hZFNoYWRlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjps
b2FkUHJvZ3JhbSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpoYW5kbGVE
cmFnU3RhdHVzVXBkYXRlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9UZXN0UGx1Z2luLmg6CisgICAgICAgIChUZXN0UGx1Z2luKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcDoK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dv
cmtTb29uKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6
cHJvY2Vzc1dvcmspOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1
ZXVlOjpyZXNldCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpXb3JrUXVl
dWU6OmFkZFdvcmspOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6VGVzdFJ1
bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpyZXNldCk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpwb2xpY3lEZWxlZ2F0ZURvbmUpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6ZmluZFN0cmluZyk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpzZXRUZXh0U3VicGl4ZWxQb3NpdGlvbmluZyk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9y
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
UnVubmVyLmg6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6aXNFbXB0eSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGV4dElucHV0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpUZXh0SW5wdXRDb250cm9sbGVyOjptYXJrZWRSYW5nZSk6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXh0SW5wdXRDb250cm9sbGVyOjpzZWxlY3RlZFJhbmdl
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRleHRJbnB1dENvbnRyb2xsZXI6OmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJQcmVmZXJlbmNlczo6cmVzZXQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
V2ViVGFza0xpc3Q6On5XZWJUYXNrTGlzdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJU
YXNrTGlzdDo6cmVnaXN0ZXJUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRhc2tM
aXN0Ojp1bnJlZ2lzdGVyVGFzayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlz
dDo6cmV2b2tlQWxsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpX
ZWJUZXN0SW50ZXJmYWNlczo6V2ViVGVzdEludGVyZmFjZXMpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6On5XZWJUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlczo6dGVzdEludGVyZmFjZXMpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5j
cHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjp+V2ViVGVzdFBy
b3h5QmFzZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0UHJveHlCYXNlOjpzcGVs
bENoZWNrQ2xpZW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6
OmFzc2lnbklkZW50aWZpZXJUb1JlcXVlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL2NvbmZpZy5oOiBDb3BpZWQgZnJvbSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oLgor
CiAyMDEzLTAyLTA1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
RHVtcFJlbmRlclRyZWUgc2hvdWxkIGJlIGFibGUgdG8gZW5hYmxlIHRoZSB0aHJlYWRlZCBwYXJz
ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9E
dW1wUmVuZGVyVHJlZS5neXAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXAvRHVtcFJlbmRlclRyZWUuZ3lwCmluZGV4IDVmMzY3ZGY3ODVhY2QxMTkzNzQyYTA0MDM1Mjc5
ODNmN2RjMDIwMDYuLmQxNTc3YTBiMDg5YTY1YzFkODIwZThmMDhhZGE3MWNkZmIzYzhjNTggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVu
ZGVyVHJlZS5neXAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lw
L0R1bXBSZW5kZXJUcmVlLmd5cApAQCAtODMsMTAgKzgzLDcgQEAKICAgICAgICAgICAgICdkZXBl
bmRlbmNpZXMnOiBbCiAgICAgICAgICAgICAgICAgJ1Rlc3RSdW5uZXJfcmVzb3VyY2VzJywKICAg
ICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDp3
ZWJraXQnLAotICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwOndlYmtpdF93dGZfc3VwcG9ydCcsCiAgICAgICAgICAgICAgICAgJzwoc291cmNl
X2RpcikvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXA6d2Via2l0X3Rlc3Rfc3VwcG9ydCcsCi0g
ICAgICAgICAgICAgICAgJzwoc291cmNlX2RpcikvV1RGL1dURi5neXAvV1RGLmd5cDp3dGYnLAot
ICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtp
dF9zdXBwb3J0Lmd5cDp3ZWJraXRfc3VwcG9ydCcsCiAgICAgICAgICAgICBdLAogICAgICAgICAg
ICAgJ2luY2x1ZGVfZGlycyc6IFsKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KScsCkBAIC0xMDYsNiArMTAzLDMxIEBACiAgICAgICAgICAgICAgICAgJzxAKHRlc3RfcnVubmVy
X2ZpbGVzKScsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCisg
ICAgICAgICAgICAgICAgWydpbnNpZGVfY2hyb21pdW1fYnVpbGQgPT0gMScsIHsKKyAgICAgICAg
ICAgICAgICAgICAgJ3R5cGUnOiAnPChjb21wb25lbnQpJywKKyAgICAgICAgICAgICAgICAgICAg
J2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgICAgICAgICAgICAgICBbJ2NvbXBvbmVudD09InNo
YXJlZF9saWJyYXJ5IicsIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dFQlRFU1RSVU5ORVJfRExMJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dFQlRFU1RSVU5ORVJfSU1QTEVNRU5U
QVRJT049MScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOiBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnV0VCVEVTVFJVTk5FUl9ETEwnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdWQ0xpbmtlclRvb2wnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbJ2luY3JlbWVudGFsX2Nocm9tZV9kbGw9PTEnLCB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0
cyc6ICd0cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgIH1dLAogICAgICAgICAgICAgICAgIFsndG9vbGtpdF91c2VzX2d0ayA9PSAxJywgewog
ICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAg
ICdXVEZfVVNFX0dUSz0xJywKQEAgLTE5NSw2ICsyMTcsNyBAQAogICAgICAgICAgICAgICAgICdU
ZXN0UnVubmVyJywKICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cDppbnNwZWN0b3JfcmVzb3VyY2VzJywKICAgICAgICAgICAgICAgICAnPChz
b3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDp3ZWJraXQnLAorICAgICAgICAg
ICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwOndlYmtpdF93
dGZfc3VwcG9ydCcsCiAgICAgICAgICAgICAgICAgJzwoc291cmNlX2RpcikvV1RGL1dURi5neXAv
V1RGLmd5cDp3dGYnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2Jhc2Uv
YmFzZS5neXA6dGVzdF9zdXBwb3J0X2Jhc2UnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVt
X3NyY19kaXIpL2J1aWxkL3RlbXBfZ3lwL2dvb2dsZXVybC5neXA6Z29vZ2xldXJsJywKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IDc3NmE4YTU2YTZjZmM0NTQx
MzkyMDg1YzE5MzkyNTA3OTBlMjFhNjYuLjMyOTZjZmQyMDFlNDI0ZjFjMTE1YmQ2M2JiNDJmMmM3
MWY1OGE4MzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAt
NTUsNiArNTUsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dl
YlRlc3REZWxlZ2F0ZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJQcmVmZXJlbmNlcy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1
YmxpYy9XZWJUYXNrLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3RDb21tb24uaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJs
aWMvV2ViVGVzdEludGVyZmFjZXMuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViVGVzdFByb3h5LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5u
ZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaCcsCkBAIC03OCw2ICs3OSw3IEBACiAgICAgICAgICAg
ICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvU3BlbGxDaGVja0NsaWVudC5jcHAnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxsQ2hlY2tDbGllbnQuaCcsCisgICAg
ICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdENvbW1vbi5oJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwJywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVi
bGljL1dlYlByZWZlcmVuY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IGI0NzM4MjZiMWE1YjcyNWI5OWU5
MmYyNGIxNTVlOTc3NzcwZmY3N2UuLmExMzhiZmQ3MDBjYzRmNzdmZjUzOGQwM2ExYjI2OWRkMjBl
ZDk2MDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvcHVibGljL1dlYlByZWZlcmVuY2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViUHJlZmVyZW5jZXMuaApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMLmgiCiAjaW5jbHVkZSAiV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYlRlc3RDb21tb24u
aCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJWaWV3OwpAQCAtNDEsNyArNDIsNyBA
QCBjbGFzcyBXZWJWaWV3OwogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKLXN0cnVjdCBX
ZWJQcmVmZXJlbmNlcyB7CitzdHJ1Y3QgV0VCVEVTVFJVTk5FUl9FWFBPUlQgV2ViUHJlZmVyZW5j
ZXMgewogICAgIFdlYktpdDo6V2ViU3RyaW5nIHN0YW5kYXJkRm9udEZhbWlseTsKICAgICBXZWJL
aXQ6OldlYlN0cmluZyBmaXhlZEZvbnRGYW1pbHk7CiAgICAgV2ViS2l0OjpXZWJTdHJpbmcgc2Vy
aWZGb250RmFtaWx5OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oCmluZGV4IGVmNzNlMTc3ZTA0MTBlNmZlNmRh
NjE4YzBlMWQ2ZWI3NDQ0NzMwYTQuLmMzYmMwOWNjMWNlZWFhZjYxZTg1Y2M1MzczY2NlNjE3OTJi
MTQ0NWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvcHVibGljL1dlYlRhc2suaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgKQEAgLTMxLDEzICszMSwxNiBAQAogI2lmbmRlZiBX
ZWJUYXNrX2gKICNkZWZpbmUgV2ViVGFza19oCiAKKyNpbmNsdWRlICJXZWJUZXN0Q29tbW9uLmgi
CisjaW5jbHVkZSA8dmVjdG9yPgorCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIGNsYXNz
IFdlYlRhc2tMaXN0OwogCiAvLyBXZWJUYXNrIHJlcHJlc2VudHMgYSB0YXNrIHdoaWNoIGNhbiBy
dW4gYnkgV2ViVGVzdERlbGVnYXRlOjpwb3N0VGFzaygpIG9yCiAvLyBXZWJUZXN0RGVsZWdhdGU6
OnBvc3REZWxheWVkVGFzaygpLgotY2xhc3MgV2ViVGFzayB7CitjbGFzcyBXRUJURVNUUlVOTkVS
X0VYUE9SVCBXZWJUYXNrIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJUYXNrKFdlYlRhc2tM
aXN0Kik7CiAgICAgdmlydHVhbCB+V2ViVGFzaygpOwpAQCAtNTEsNyArNTQsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgV2ViVGFza0xpc3QqIG1fdGFza0xpc3Q7CiB9OwogCi1jbGFzcyBXZWJUYXNrTGlz
dCB7CitjbGFzcyBXRUJURVNUUlVOTkVSX0VYUE9SVCBXZWJUYXNrTGlzdCB7CiBwdWJsaWM6CiAg
ICAgV2ViVGFza0xpc3QoKTsKICAgICB+V2ViVGFza0xpc3QoKTsKQEAgLTYwLDggKzYzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmV2b2tlQWxsKCk7CiAKIHByaXZhdGU6Ci0gICAgY2xhc3MgUHJp
dmF0ZTsKLSAgICBQcml2YXRlKiBtX3ByaXZhdGU7CisgICAgc3RkOjp2ZWN0b3I8V2ViVGFzayo+
IG1fdGFza3M7CiB9OwogCiAvLyBBIHRhc2sgY29udGFpbmluZyBhbiBvYmplY3QgcG9pbnRlciBv
ZiBjbGFzcyBULiBEZXJpdmVkIGNsYXNzZXMgc2hvdWxkCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0Q29tbW9uLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0Q29t
bW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2FiZTc5N2JmNjllZGMyYjFlMjJjZTZmY2MyOTU1ODUxZTg1Yjcx
ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRlc3RDb21tb24uaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJU
ZXN0Q29tbW9uX2gKKyNkZWZpbmUgV2ViVGVzdENvbW1vbl9oCisKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLyBEZWZhdWx0IGNvbmZpZ3VyYXRpb24KKworI2lmICFkZWZpbmVkKFdFQlRFU1RS
VU5ORVJfSU1QTEVNRU5UQVRJT04pCisjZGVmaW5lIFdFQlRFU1RSVU5ORVJfSU1QTEVNRU5UQVRJ
T04gMAorI2VuZGlmCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBFeHBvcnRlZCBzeW1i
b2xzIG5lZWQgdG8gYmUgYW5ub3RhdGVkIHdpdGggV0VCVEVTVFJVTk5FUl9FWFBPUlQKKworI2lm
IGRlZmluZWQoV0VCVEVTVFJVTk5FUl9ETEwpCisjaWYgZGVmaW5lZChXSU4zMikKKyNpZiBXRUJU
RVNUUlVOTkVSX0lNUExFTUVOVEFUSU9OCisjZGVmaW5lIFdFQlRFU1RSVU5ORVJfRVhQT1JUIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KQorI2Vsc2UKKyNkZWZpbmUgV0VCVEVTVFJVTk5FUl9FWFBPUlQg
X19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZW5kaWYKKyNlbHNlCisjZGVmaW5lIFdFQlRFU1RSVU5O
RVJfRVhQT1JUIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCisjZW5kaWYK
KyNlbHNlCisjZGVmaW5lIFdFQlRFU1RSVU5ORVJfRVhQT1JUCisjZW5kaWYKKworI2VuZGlmIC8v
IFdlYlRlc3RDb21tb25faApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKaW5k
ZXggMmNjZDYxZTI1YzEwYmE0NzIwODYxNTIyMDk2MzY1NmU5ODg2ZWRiOS4uNzNkNzlkYzJjZGRl
MGYyZWI5OWU3OTI2YjFkOGZiZjFkMWFmMjdjZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0
SW50ZXJmYWNlcy5oCkBAIC0zMSw2ICszMSw5IEBACiAjaWZuZGVmIFdlYlRlc3RJbnRlcmZhY2Vz
X2gKICNkZWZpbmUgV2ViVGVzdEludGVyZmFjZXNfaAogCisjaW5jbHVkZSAiV2ViVGVzdENvbW1v
bi5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJG
cmFtZTsKIGNsYXNzIFdlYlZpZXc7CkBAIC00Miw3ICs0NSw3IEBAIGNsYXNzIFRlc3RJbnRlcmZh
Y2VzOwogY2xhc3MgV2ViVGVzdERlbGVnYXRlOwogY2xhc3MgV2ViVGVzdFJ1bm5lcjsKIAotY2xh
c3MgV2ViVGVzdEludGVyZmFjZXMgeworY2xhc3MgV0VCVEVTVFJVTk5FUl9FWFBPUlQgV2ViVGVz
dEludGVyZmFjZXMgewogcHVibGljOgogICAgIFdlYlRlc3RJbnRlcmZhY2VzKCk7CiAgICAgfldl
YlRlc3RJbnRlcmZhY2VzKCk7CkBAIC02MSw3ICs2NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBw
cml2YXRlOgotICAgIFRlc3RJbnRlcmZhY2VzKiBtX2ludGVyZmFjZXM7CisgICAgc3RkOjphdXRv
X3B0cjxUZXN0SW50ZXJmYWNlcz4gbV9pbnRlcmZhY2VzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFBy
b3h5LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0UHJveHkuaAppbmRleCA0MjkwOTY5YmRkN2E2ODY3YzYwM2VmYTg5NDc1YzA1ZDdmNDBm
YzVmLi4xMDBkMjg3ZGJlMjZkNzgyOGJkYjRkNTQ1YTEyZDFiNjVlYmQyZGNkIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0
UHJveHkuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1
YmxpYy9XZWJUZXN0UHJveHkuaApAQCAtNDIsNyArNDIsOSBAQAogI2luY2x1ZGUgIldlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlRleHRBZmZpbml0eS5oIgogI2luY2x1ZGUgIldlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVGV4dERpcmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlRlc3RDb21tb24uaCIK
ICNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC03OSw3ICs4MSw3IEBAIGNsYXNzIFdlYlRlc3REZWxlZ2F0
ZTsKIGNsYXNzIFdlYlRlc3RJbnRlcmZhY2VzOwogY2xhc3MgV2ViVGVzdFJ1bm5lcjsKIAotY2xh
c3MgV2ViVGVzdFByb3h5QmFzZSB7CitjbGFzcyBXRUJURVNUUlVOTkVSX0VYUE9SVCBXZWJUZXN0
UHJveHlCYXNlIHsKIHB1YmxpYzoKICAgICB2b2lkIHNldEludGVyZmFjZXMoV2ViVGVzdEludGVy
ZmFjZXMqKTsKICAgICB2b2lkIHNldERlbGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSopOwpAQCAtMTY1
LDcgKzE2Nyw3IEBAIHByaXZhdGU6CiAgICAgVGVzdEludGVyZmFjZXMqIG1fdGVzdEludGVyZmFj
ZXM7CiAgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwogCi0gICAgU3BlbGxDaGVja0Ns
aWVudCogbV9zcGVsbGNoZWNrOworICAgIHN0ZDo6YXV0b19wdHI8U3BlbGxDaGVja0NsaWVudD4g
bV9zcGVsbGNoZWNrOwogCiAgICAgV2ViS2l0OjpXZWJSZWN0IG1fcGFpbnRSZWN0OwogICAgIHN0
ZDo6bWFwPHVuc2lnbmVkLCBzdGQ6OnN0cmluZz4gbV9yZXNvdXJjZUlkZW50aWZpZXJNYXA7CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNw
cAppbmRleCAwNjNkZGJiYWRmYmFiNjYzMzg1NTk5Yjg4MmM3ZDBlNGM1NThhMmQyLi42ZGNjNDA2
MDYzZjY5MjE0YjY3NjIyMzQzMTYxMWU2MTdmZGM3MmM5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Q2hyb21pdW0uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHAKQEAgLTMxLDEzICszMSwx
MiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnRDaHJvbWl1bS5oIgogCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIldlYkFj
Y2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTM2OCw3ICszNjcsNyBAQCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iagogICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCiB7CiAKLSAgICBBU1NFUlQoZmFj
dG9yeSk7CisgICAgV0VCS0lUX0FTU0VSVChmYWN0b3J5KTsKIAogICAgIC8vCiAgICAgLy8gUHJv
cGVydGllcwpAQCAtMTAyNSwxNCArMTAyNCwxNCBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TGlzdDo6Z2V0T3JDcmVhdGUoY29uc3QgV2ViQWNjZXNzaQog
ICAgIH0KIAogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQgPSBuZXcgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudChvYmplY3QsIHRoaXMpOwotICAgIG1fZWxlbWVudHMuYXBwZW5kKGVs
ZW1lbnQpOworICAgIG1fZWxlbWVudHMucHVzaF9iYWNrKGVsZW1lbnQpOwogICAgIHJldHVybiBl
bGVtZW50OwogfQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TGlzdDo6Y3JlYXRlUm9vdChjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3Qp
CiB7CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCA9IG5ldyBSb290QWNjZXNz
aWJpbGl0eVVJRWxlbWVudChvYmplY3QsIHRoaXMpOwotICAgIG1fZWxlbWVudHMuYXBwZW5kKGVs
ZW1lbnQpOworICAgIG1fZWxlbWVudHMucHVzaF9iYWNrKGVsZW1lbnQpOwogICAgIHJldHVybiBl
bGVtZW50OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRDaHJvbWl1bS5oCmluZGV4IDM5NmFhNzA4MGE5NWM4ODUyMWE2OTAxZGMyNjE5OTkwYTEyNDcw
MWEuLmM2Y2IxYTIzNTZkYTA3MGIxYTJlMTg0ZmE0MGVmMjg4OWFjNzkwOTAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRDaHJvbWl1bS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5oCkBAIC0zNCw3
ICszNCw2IEBACiAjaW5jbHVkZSAiQ3BwQm91bmRDbGFzcy5oIgogI2luY2x1ZGUgIldlYkFjY2Vz
c2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKQEAgLTE2OCw3ICsxNjcsNyBAQCBw
dWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogY3JlYXRlUm9vdChjb25zdCBXZWJL
aXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmKTsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIFZl
Y3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kj4gRWxlbWVudExpc3Q7CisgICAgdHlwZWRlZiBz
dGQ6OnZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kj4gRWxlbWVudExpc3Q7CiAgICAgRWxl
bWVudExpc3QgbV9lbGVtZW50czsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5jcHAKaW5k
ZXggMDM1YWNkZWQ3OGQ2OGU4NzU3MGRhMDE1NWZmNjUyZDZhOTU5Y2MwYS4uNDllNjE0OTczYjcx
OTJjYWRjOTEyZGQ4NmVkN2Q4ODdjZmFhZDBlZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5j
cHAKQEAgLTQyLDExICs0MiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNw
cEJvdW5kQ2xhc3MuaCIKIAorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJXZWJC
aW5kaW5ncy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgot
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5n
IG5hbWVzcGFjZSBzdGQ7CkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEdldHRl
clByb3BlcnR5Q2FsbGJhY2sgOiBwdWJsaWMgQ3BwQm91bmRDbGFzczo6UHJvcGVydHlDYWxsYmFj
ayB7CiBwdWJsaWM6Ci0gICAgR2V0dGVyUHJvcGVydHlDYWxsYmFjayhQYXNzT3duUHRyPENwcEJv
dW5kQ2xhc3M6OkdldHRlckNhbGxiYWNrPiBjYWxsYmFjaykKKyAgICBHZXR0ZXJQcm9wZXJ0eUNh
bGxiYWNrKGF1dG9fcHRyPENwcEJvdW5kQ2xhc3M6OkdldHRlckNhbGxiYWNrPiBjYWxsYmFjaykK
ICAgICAgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgIHsKICAgICB9CkBAIC05MSw3ICs5
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWUoY29uc3QgQ3BwVmFyaWFu
dCYgdmFsdWUpIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6Ci0gICAgT3duUHRyPENwcEJv
dW5kQ2xhc3M6OkdldHRlckNhbGxiYWNrPiBtX2NhbGxiYWNrOworICAgIGF1dG9fcHRyPENwcEJv
dW5kQ2xhc3M6OkdldHRlckNhbGxiYWNrPiBtX2NhbGxiYWNrOwogfTsKIAogfQpAQCAtMjA5LDEw
ICsyMDksMTAgQEAgYm9vbCBDcHBOUE9iamVjdDo6c2V0UHJvcGVydHkoTlBPYmplY3QqIG5wT2Jq
LCBOUElkZW50aWZpZXIgaWRlbnQsIGNvbnN0IE5QVmFyaWEKIENwcEJvdW5kQ2xhc3M6On5DcHBC
b3VuZENsYXNzKCkKIHsKICAgICBmb3IgKE1ldGhvZExpc3Q6Oml0ZXJhdG9yIGkgPSBtX21ldGhv
ZHMuYmVnaW4oKTsgaSAhPSBtX21ldGhvZHMuZW5kKCk7ICsraSkKLSAgICAgICAgZGVsZXRlIGkt
PnZhbHVlOworICAgICAgICBkZWxldGUgaS0+c2Vjb25kOwogCiAgICAgZm9yIChQcm9wZXJ0eUxp
c3Q6Oml0ZXJhdG9yIGkgPSBtX3Byb3BlcnRpZXMuYmVnaW4oKTsgaSAhPSBtX3Byb3BlcnRpZXMu
ZW5kKCk7ICsraSkKLSAgICAgICAgZGVsZXRlIGktPnZhbHVlOworICAgICAgICBkZWxldGUgaS0+
c2Vjb25kOwogCiAgICAgLy8gVW5yZWdpc3RlciBvdXJzZWx2ZXMgaWYgd2Ugd2VyZSBib3VuZCB0
byBhIGZyYW1lLgogICAgIGlmIChtX2JvdW5kVG9GcmFtZSkKQEAgLTI0Myw3ICsyNDMsNyBAQCBi
b29sIENwcEJvdW5kQ2xhc3M6Omludm9rZShOUElkZW50aWZpZXIgaWRlbnQsCiAgICAgICAgIH0K
ICAgICAgICAgY2FsbGJhY2sgPSBtX2ZhbGxiYWNrQ2FsbGJhY2suZ2V0KCk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGNhbGxiYWNrID0gKCptZXRob2QpLnZhbHVlOworICAgICAgICBjYWxsYmFjayA9
ICgqbWV0aG9kKS5zZWNvbmQ7CiAKICAgICAvLyBCdWlsZCBhIENwcEFyZ3VtZW50TGlzdCBhcmd1
bWVudCB2ZWN0b3IgZnJvbSB0aGUgTlBWYXJpYW50cyBjb21pbmcgaW4uCiAgICAgQ3BwQXJndW1l
bnRMaXN0IGNwcEFyZ3VtZW50cyhhcmd1bWVudENvdW50KTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBi
b29sIENwcEJvdW5kQ2xhc3M6OmdldFByb3BlcnR5KE5QSWRlbnRpZmllciBpZGVudCwgTlBWYXJp
YW50KiByZXN1bHQpIGNvbnN0CiAgICAgfQogCiAgICAgQ3BwVmFyaWFudCBjcHBWYWx1ZTsKLSAg
ICBpZiAoIWNhbGxiYWNrLT52YWx1ZS0+Z2V0VmFsdWUoJmNwcFZhbHVlKSkKKyAgICBpZiAoIWNh
bGxiYWNrLT5zZWNvbmQtPmdldFZhbHVlKCZjcHBWYWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBjcHBWYWx1ZS5jb3B5VG9OUFZhcmlhbnQocmVzdWx0KTsKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTI4MCw3ICsyODAsNyBAQCBib29sIENwcEJvdW5kQ2xhc3M6OnNldFByb3BlcnR5KE5Q
SWRlbnRpZmllciBpZGVudCwgY29uc3QgTlBWYXJpYW50KiB2YWx1ZSkKIAogICAgIENwcFZhcmlh
bnQgY3BwVmFsdWU7CiAgICAgY3BwVmFsdWUuc2V0KCp2YWx1ZSk7Ci0gICAgcmV0dXJuICgqY2Fs
bGJhY2spLnZhbHVlLT5zZXRWYWx1ZShjcHBWYWx1ZSk7CisgICAgcmV0dXJuICgqY2FsbGJhY2sp
LnNlY29uZC0+c2V0VmFsdWUoY3BwVmFsdWUpOwogfQogCiB2b2lkIENwcEJvdW5kQ2xhc3M6OmJp
bmRDYWxsYmFjayhjb25zdCBzdHJpbmcmIG5hbWUsIENhbGxiYWNrKiBjYWxsYmFjaykKQEAgLTI4
OCwxOSArMjg4LDE5IEBAIHZvaWQgQ3BwQm91bmRDbGFzczo6YmluZENhbGxiYWNrKGNvbnN0IHN0
cmluZyYgbmFtZSwgQ2FsbGJhY2sqIGNhbGxiYWNrKQogICAgIE5QSWRlbnRpZmllciBpZGVudCA9
IFdlYkJpbmRpbmdzOjpnZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUuY19zdHIoKSk7CiAgICAgTWV0
aG9kTGlzdDo6aXRlcmF0b3Igb2xkQ2FsbGJhY2sgPSBtX21ldGhvZHMuZmluZChpZGVudCk7CiAg
ICAgaWYgKG9sZENhbGxiYWNrICE9IG1fbWV0aG9kcy5lbmQoKSkgewotICAgICAgICBkZWxldGUg
b2xkQ2FsbGJhY2stPnZhbHVlOworICAgICAgICBkZWxldGUgb2xkQ2FsbGJhY2stPnNlY29uZDsK
ICAgICAgICAgaWYgKCFjYWxsYmFjaykgewotICAgICAgICAgICAgbV9tZXRob2RzLnJlbW92ZShv
bGRDYWxsYmFjayk7CisgICAgICAgICAgICBtX21ldGhvZHMuZXJhc2Uob2xkQ2FsbGJhY2spOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9tZXRob2RzLnNl
dChpZGVudCwgY2FsbGJhY2spOworICAgIG1fbWV0aG9kc1tpZGVudF0gPSBjYWxsYmFjazsKIH0K
IAotdm9pZCBDcHBCb3VuZENsYXNzOjpiaW5kR2V0dGVyQ2FsbGJhY2soY29uc3Qgc3RyaW5nJiBu
YW1lLCBQYXNzT3duUHRyPEdldHRlckNhbGxiYWNrPiBjYWxsYmFjaykKK3ZvaWQgQ3BwQm91bmRD
bGFzczo6YmluZEdldHRlckNhbGxiYWNrKGNvbnN0IHN0cmluZyYgbmFtZSwgYXV0b19wdHI8R2V0
dGVyQ2FsbGJhY2s+IGNhbGxiYWNrKQogewotICAgIFByb3BlcnR5Q2FsbGJhY2sqIHByb3BlcnR5
Q2FsbGJhY2sgPSBjYWxsYmFjayA/IG5ldyBHZXR0ZXJQcm9wZXJ0eUNhbGxiYWNrKGNhbGxiYWNr
KSA6IDA7CisgICAgUHJvcGVydHlDYWxsYmFjayogcHJvcGVydHlDYWxsYmFjayA9IGNhbGxiYWNr
LmdldCgpID8gbmV3IEdldHRlclByb3BlcnR5Q2FsbGJhY2soY2FsbGJhY2spIDogMDsKICAgICBi
aW5kUHJvcGVydHkobmFtZSwgcHJvcGVydHlDYWxsYmFjayk7CiB9CiAKQEAgLTMxNSwxNCArMzE1
LDE0IEBAIHZvaWQgQ3BwQm91bmRDbGFzczo6YmluZFByb3BlcnR5KGNvbnN0IHN0cmluZyYgbmFt
ZSwgUHJvcGVydHlDYWxsYmFjayogY2FsbGJhY2spCiAgICAgTlBJZGVudGlmaWVyIGlkZW50ID0g
V2ViQmluZGluZ3M6OmdldFN0cmluZ0lkZW50aWZpZXIobmFtZS5jX3N0cigpKTsKICAgICBQcm9w
ZXJ0eUxpc3Q6Oml0ZXJhdG9yIG9sZENhbGxiYWNrID0gbV9wcm9wZXJ0aWVzLmZpbmQoaWRlbnQp
OwogICAgIGlmIChvbGRDYWxsYmFjayAhPSBtX3Byb3BlcnRpZXMuZW5kKCkpIHsKLSAgICAgICAg
ZGVsZXRlIG9sZENhbGxiYWNrLT52YWx1ZTsKKyAgICAgICAgZGVsZXRlIG9sZENhbGxiYWNrLT5z
ZWNvbmQ7CiAgICAgICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgICAgIG1fcHJvcGVydGll
cy5yZW1vdmUob2xkQ2FsbGJhY2spOworICAgICAgICAgICAgbV9wcm9wZXJ0aWVzLmVyYXNlKG9s
ZENhbGxiYWNrKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAg
IG1fcHJvcGVydGllcy5zZXQoaWRlbnQsIGNhbGxiYWNrKTsKKyAgICBtX3Byb3BlcnRpZXNbaWRl
bnRdID0gY2FsbGJhY2s7CiB9CiAKIGJvb2wgQ3BwQm91bmRDbGFzczo6aXNNZXRob2RSZWdpc3Rl
cmVkKGNvbnN0IHN0cmluZyYgbmFtZSkgY29uc3QKQEAgLTM0NCw3ICszNDQsNyBAQCBDcHBWYXJp
YW50KiBDcHBCb3VuZENsYXNzOjpnZXRBc0NwcFZhcmlhbnQoKQogICAgICAgICBtX3NlbGZWYXJp
YW50LnNldChucE9iaik7CiAgICAgICAgIFdlYkJpbmRpbmdzOjpyZWxlYXNlT2JqZWN0KG5wT2Jq
KTsgLy8gQ3BwVmFyaWFudCB0YWtlcyB0aGUgcmVmZXJlbmNlLgogICAgIH0KLSAgICBBU1NFUlQo
bV9zZWxmVmFyaWFudC5pc09iamVjdCgpKTsKKyAgICBXRUJLSVRfQVNTRVJUKG1fc2VsZlZhcmlh
bnQuaXNPYmplY3QoKSk7CiAgICAgcmV0dXJuICZtX3NlbGZWYXJpYW50OwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3Vu
ZENsYXNzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9D
cHBCb3VuZENsYXNzLmgKaW5kZXggNTRhZjZkZGNlMWU2ODAyZmYwMGQ2OGFhNzJiNWYyMDI5ZTQ3
NTNjNi4uOTUyYTQxYzUzNDBlZmRmMDBiYzc2Yjc4MmI0ZDQ2ZGFjY2Y4ZDFkYiAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRD
bGFzcy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L0NwcEJvdW5kQ2xhc3MuaApAQCAtNDQsMTEgKzQ0LDkgQEAKICNkZWZpbmUgQ3BwQm91bmRDbGFz
c19oCiAKICNpbmNsdWRlICJDcHBWYXJpYW50LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSA8bWFwPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7CkBAIC01NywxMiArNTUsMTEgQEAgY2xhc3Mg
V2ViU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKLXR5cGVkZWYgVmVjdG9y
PENwcFZhcmlhbnQ+IENwcEFyZ3VtZW50TGlzdDsKK3R5cGVkZWYgc3RkOjp2ZWN0b3I8Q3BwVmFy
aWFudD4gQ3BwQXJndW1lbnRMaXN0OwogCiAvLyBDcHBCb3VuZENsYXNzIGxldHMgeW91IG1hcCBK
YXZhc2NyaXB0IG1ldGhvZCBjYWxscyBhbmQgcHJvcGVydHkgYWNjZXNzZXMKIC8vIGRpcmVjdGx5
IHRvIEMrKyBtZXRob2QgY2FsbHMgYW5kIENwcFZhcmlhbnQqIHZhcmlhYmxlIGFjY2Vzcy4KIGNs
YXNzIENwcEJvdW5kQ2xhc3MgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENwcEJvdW5kQ2xh
c3MpOwogcHVibGljOgogICAgIGNsYXNzIFByb3BlcnR5Q2FsbGJhY2sgewogICAgIHB1YmxpYzoK
QEAgLTE2NCw3ICsxNjEsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBCaW5kIEphdmFzY3JpcHQg
cHJvcGVydHkgfG5hbWV8IHRvIHRoZSBDKysgZ2V0dGVyIGNhbGxiYWNrIHxjYWxsYmFja3wuCiAg
ICAgLy8gVGhpcyBjYW4gYmUgdXNlZCB0byBjcmVhdGUgcmVhZC1vbmx5IHByb3BlcnRpZXMuCi0g
ICAgdm9pZCBiaW5kR2V0dGVyQ2FsbGJhY2soY29uc3Qgc3RkOjpzdHJpbmcmLCBQYXNzT3duUHRy
PEdldHRlckNhbGxiYWNrPik7CisgICAgdm9pZCBiaW5kR2V0dGVyQ2FsbGJhY2soY29uc3Qgc3Rk
OjpzdHJpbmcmLCBzdGQ6OmF1dG9fcHRyPEdldHRlckNhbGxiYWNrPik7CiAKICAgICAvLyBBIHdy
YXBwZXIgZm9yIEJpbmRHZXR0ZXJDYWxsYmFjaywgdG8gc2ltcGxpZnkgdGhlIGNvbW1vbiBjYXNl
IG9mIGJpbmRpbmcgYQogICAgIC8vIHByb3BlcnR5IG9uIHRoZSBjdXJyZW50IG9iamVjdC4gVGhv
dWdoIG5vdCB2ZXJpZmllZCBoZXJlLCB0aGUgbWV0aG9kIHBhcmFtZXRlcgpAQCAtMTcyLDggKzE2
OSw4IEBAIHByb3RlY3RlZDoKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIHZvaWQgYmluZFBy
b3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCB2b2lkIChUOjoqbWV0aG9kKShDcHBWYXJp
YW50KikpCiAgICAgewotICAgICAgICBPd25QdHI8R2V0dGVyQ2FsbGJhY2s+IGNhbGxiYWNrID0g
YWRvcHRQdHIobmV3IE1lbWJlckdldHRlckNhbGxiYWNrPFQ+KHN0YXRpY19jYXN0PFQqPih0aGlz
KSwgbWV0aG9kKSk7Ci0gICAgICAgIGJpbmRHZXR0ZXJDYWxsYmFjayhuYW1lLCBjYWxsYmFjay5y
ZWxlYXNlKCkpOworICAgICAgICBzdGQ6OmF1dG9fcHRyPEdldHRlckNhbGxiYWNrPiBjYWxsYmFj
ayhuZXcgTWVtYmVyR2V0dGVyQ2FsbGJhY2s8VD4oc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLCBtZXRo
b2QpKTsKKyAgICAgICAgYmluZEdldHRlckNhbGxiYWNrKG5hbWUsIGNhbGxiYWNrKTsKICAgICB9
CiAKICAgICAvLyBCaW5kIHRoZSBKYXZhc2NyaXB0IHByb3BlcnR5IGNhbGxlZCB8bmFtZXwgdG8g
YSBDcHBWYXJpYW50LgpAQCAtMTkzLDcgKzE5MCw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBhcyBp
dCBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvcnMgKGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0
aCBhCiAgICAgLy8gZmFsbGJhY2sgYWx3YXlzIHJldHVybnMgdHJ1ZSB3aGVuIGNoZWNrZWQgZm9y
IGEgbWV0aG9kJ3MKICAgICAvLyBleGlzdGVuY2UpLgotICAgIHZvaWQgYmluZEZhbGxiYWNrQ2Fs
bGJhY2soUGFzc093blB0cjxDYWxsYmFjaz4gZmFsbGJhY2tDYWxsYmFjaykKKyAgICB2b2lkIGJp
bmRGYWxsYmFja0NhbGxiYWNrKHN0ZDo6YXV0b19wdHI8Q2FsbGJhY2s+IGZhbGxiYWNrQ2FsbGJh
Y2spCiAgICAgewogICAgICAgICBtX2ZhbGxiYWNrQ2FsbGJhY2sgPSBmYWxsYmFja0NhbGxiYWNr
OwogICAgIH0KQEAgLTIwNSwyNSArMjAyLDI0IEBAIHByb3RlY3RlZDoKICAgICB0ZW1wbGF0ZTxj
bGFzcyBUPgogICAgIHZvaWQgYmluZEZhbGxiYWNrTWV0aG9kKHZvaWQgKFQ6OiptZXRob2QpKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKSkKICAgICB7Ci0gICAgICAgIGlmICht
ZXRob2QpIHsKLSAgICAgICAgICAgIE93blB0cjxDYWxsYmFjaz4gY2FsbGJhY2sgPSBhZG9wdFB0
cihuZXcgTWVtYmVyQ2FsbGJhY2s8VD4oc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLCBtZXRob2QpKTsK
LSAgICAgICAgICAgIGJpbmRGYWxsYmFja0NhbGxiYWNrKGNhbGxiYWNrLnJlbGVhc2UoKSk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYmluZEZhbGxiYWNrQ2FsbGJhY2sobnVsbHB0cik7
CisgICAgICAgIGlmIChtZXRob2QpCisgICAgICAgICAgICBiaW5kRmFsbGJhY2tDYWxsYmFjayhz
dGQ6OmF1dG9fcHRyPENhbGxiYWNrPihuZXcgTWVtYmVyQ2FsbGJhY2s8VD4oc3RhdGljX2Nhc3Q8
VCo+KHRoaXMpLCBtZXRob2QpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJpbmRGYWxs
YmFja0NhbGxiYWNrKHN0ZDo6YXV0b19wdHI8Q2FsbGJhY2s+KCkpOwogICAgIH0KIAogICAgIC8v
IFNvbWUgZmllbGRzIGFyZSBwcm90ZWN0ZWQgYmVjYXVzZSBzb21lIHRlc3RzIGRlcGVuZCBvbiBh
Y2Nlc3NpbmcgdGhlbSwKICAgICAvLyBidXQgb3RoZXJ3aXNlIHRoZXkgc2hvdWxkIGJlIGNvbnNp
ZGVyZWQgcHJpdmF0ZS4KIAotICAgIHR5cGVkZWYgSGFzaE1hcDxOUElkZW50aWZpZXIsIFByb3Bl
cnR5Q2FsbGJhY2sqPiBQcm9wZXJ0eUxpc3Q7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPE5QSWRlbnRp
ZmllciwgQ2FsbGJhY2sqPiBNZXRob2RMaXN0OworICAgIHR5cGVkZWYgc3RkOjptYXA8TlBJZGVu
dGlmaWVyLCBQcm9wZXJ0eUNhbGxiYWNrKj4gUHJvcGVydHlMaXN0OworICAgIHR5cGVkZWYgc3Rk
OjptYXA8TlBJZGVudGlmaWVyLCBDYWxsYmFjayo+IE1ldGhvZExpc3Q7CiAgICAgLy8gVGhlc2Ug
bWFwcyBhc3NvY2lhdGUgbmFtZXMgd2l0aCBwcm9wZXJ0eSBhbmQgbWV0aG9kIHBvaW50ZXJzIHRv
IGJlCiAgICAgLy8gZXhwb3NlZCB0byBKYXZhU2NyaXB0LgogICAgIFByb3BlcnR5TGlzdCBtX3By
b3BlcnRpZXM7CiAgICAgTWV0aG9kTGlzdCBtX21ldGhvZHM7CiAKICAgICAvLyBUaGUgY2FsbGJh
Y2sgZ2V0cyBpbnZva2VkIHdoZW4gYSBjYWxsIGlzIG1hZGUgdG8gYW4gbm9uZXhpc3RlbnQgbWV0
aG9kLgotICAgIE93blB0cjxDYWxsYmFjaz4gbV9mYWxsYmFja0NhbGxiYWNrOworICAgIHN0ZDo6
YXV0b19wdHI8Q2FsbGJhY2s+IG1fZmFsbGJhY2tDYWxsYmFjazsKIAogcHJpdmF0ZToKICAgICAv
LyBOUE9iamVjdCBjYWxsYmFja3MuCkBAIC0yNDIsNiArMjM4LDEwIEBAIHByaXZhdGU6CiAgICAg
Ly8gVHJ1ZSBpZiBvdXIgbnBfb2JqZWN0IGhhcyBiZWVuIGJvdW5kIHRvIGEgV2ViRnJhbWUsIGlu
IHdoaWNoIGNhc2UgaXQgbXVzdAogICAgIC8vIGJlIHVucmVnaXN0ZXJlZCB3aXRoIFY4IHdoZW4g
d2UgZGVsZXRlIGl0LgogICAgIGJvb2wgbV9ib3VuZFRvRnJhbWU7CisKK3ByaXZhdGU6CisgICAg
Q3BwQm91bmRDbGFzcyhDcHBCb3VuZENsYXNzJik7CisgICAgQ3BwQm91bmRDbGFzcyYgb3BlcmF0
b3I9KGNvbnN0IENwcEJvdW5kQ2xhc3MmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5jcHAK
aW5kZXggNGQyODU2ZTc0MmQ5N2NkZDlhMDA4NWUxOWEyZGQxODExMmY4ZjVmYy4uZWYyZTkyYTY1
YzBlZjRlOGMzYmRmNGU1Y2RkNDcxNTViZTc3MmMzNSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5jcHAK
QEAgLTMxLDEwICszMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3BwVmFy
aWFudC5oIgogCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIldlYkJpbmRpbmdz
LmgiCiAjaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5j
bHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTIyMCw3ICsyMTksNyBAQCB2b2lkIENwcFZhcmlhbnQ6OnNl
dChOUE9iamVjdCogbmV3VmFsdWUpCiAKIHN0cmluZyBDcHBWYXJpYW50Ojp0b1N0cmluZygpIGNv
bnN0CiB7Ci0gICAgQVNTRVJUKGlzU3RyaW5nKCkpOworICAgIFdFQktJVF9BU1NFUlQoaXNTdHJp
bmcoKSk7CiAgICAgcmV0dXJuIHN0cmluZyh2YWx1ZS5zdHJpbmdWYWx1ZS5VVEY4Q2hhcmFjdGVy
cywKICAgICAgICAgICAgICAgICAgIHZhbHVlLnN0cmluZ1ZhbHVlLlVURjhMZW5ndGgpOwogfQpA
QCAtMjMxLDcgKzIzMCw3IEBAIGludDMyX3QgQ3BwVmFyaWFudDo6dG9JbnQzMigpIGNvbnN0CiAg
ICAgICAgIHJldHVybiB2YWx1ZS5pbnRWYWx1ZTsKICAgICBpZiAoaXNEb3VibGUoKSkKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlLmRvdWJsZVZhbHVlKTsKLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI0MSwyMSArMjQwLDIxIEBAIGRvdWJsZSBDcHBWYXJpYW50
Ojp0b0RvdWJsZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHZh
bHVlLmludFZhbHVlKTsKICAgICBpZiAoaXNEb3VibGUoKSkKICAgICAgICAgcmV0dXJuIHZhbHVl
LmRvdWJsZVZhbHVlOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKIH0KIAogYm9vbCBDcHBWYXJpYW50Ojp0
b0Jvb2xlYW4oKSBjb25zdAogewotICAgIEFTU0VSVChpc0Jvb2woKSk7CisgICAgV0VCS0lUX0FT
U0VSVChpc0Jvb2woKSk7CiAgICAgcmV0dXJuIHZhbHVlLmJvb2xWYWx1ZTsKIH0KIAotVmVjdG9y
PHN0cmluZz4gQ3BwVmFyaWFudDo6dG9TdHJpbmdWZWN0b3IoKSBjb25zdAordmVjdG9yPHN0cmlu
Zz4gQ3BwVmFyaWFudDo6dG9TdHJpbmdWZWN0b3IoKSBjb25zdAogewogCi0gICAgQVNTRVJUKGlz
T2JqZWN0KCkpOwotICAgIFZlY3RvcjxzdHJpbmc+IHN0cmluZ1ZlY3RvcjsKKyAgICBXRUJLSVRf
QVNTRVJUKGlzT2JqZWN0KCkpOworICAgIHZlY3RvcjxzdHJpbmc+IHN0cmluZ1ZlY3RvcjsKICAg
ICBOUE9iamVjdCogbnBWYWx1ZSA9IHZhbHVlLm9iamVjdFZhbHVlOwogICAgIE5QSWRlbnRpZmll
ciBsZW5ndGhJZCA9IFdlYkJpbmRpbmdzOjpnZXRTdHJpbmdJZGVudGlmaWVyKCJsZW5ndGgiKTsK
IApAQCAtMjkwLDcgKzI4OSw3IEBAIFZlY3RvcjxzdHJpbmc+IENwcFZhcmlhbnQ6OnRvU3RyaW5n
VmVjdG9yKCkgY29uc3QKICAgICAgICAgaWYgKE5QVkFSSUFOVF9JU19TVFJJTkcoaW5kZXhWYWx1
ZSkpIHsKICAgICAgICAgICAgIHN0cmluZyBpdGVtKE5QVkFSSUFOVF9UT19TVFJJTkcoaW5kZXhW
YWx1ZSkuVVRGOENoYXJhY3RlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICBOUFZBUklBTlRf
VE9fU1RSSU5HKGluZGV4VmFsdWUpLlVURjhMZW5ndGgpOwotICAgICAgICAgICAgc3RyaW5nVmVj
dG9yLmFwcGVuZChpdGVtKTsKKyAgICAgICAgICAgIHN0cmluZ1ZlY3Rvci5wdXNoX2JhY2soaXRl
bSk7CiAgICAgICAgIH0KICAgICAgICAgV2ViQmluZGluZ3M6OnJlbGVhc2VWYXJpYW50VmFsdWUo
JmluZGV4VmFsdWUpOwogICAgIH0KQEAgLTMwMCw3ICsyOTksNyBAQCBWZWN0b3I8c3RyaW5nPiBD
cHBWYXJpYW50Ojp0b1N0cmluZ1ZlY3RvcigpIGNvbnN0CiBib29sIENwcFZhcmlhbnQ6Omludm9r
ZShjb25zdCBzdHJpbmcmIG1ldGhvZCwgY29uc3QgQ3BwVmFyaWFudCogYXJndW1lbnRzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYXJndW1lbnRDb3VudCwgQ3BwVmFyaWFudCYg
cmVzdWx0KSBjb25zdAogewotICAgIEFTU0VSVChpc09iamVjdCgpKTsKKyAgICBXRUJLSVRfQVNT
RVJUKGlzT2JqZWN0KCkpOwogICAgIE5QSWRlbnRpZmllciBtZXRob2ROYW1lID0gV2ViQmluZGlu
Z3M6OmdldFN0cmluZ0lkZW50aWZpZXIobWV0aG9kLmNfc3RyKCkpOwogICAgIE5QT2JqZWN0KiBu
cE9iamVjdCA9IHZhbHVlLm9iamVjdFZhbHVlOwogICAgIGlmICghV2ViQmluZGluZ3M6Omhhc01l
dGhvZCgwLCBucE9iamVjdCwgbWV0aG9kTmFtZSkpCkBAIC0zMTQsNyArMzEzLDcgQEAgYm9vbCBD
cHBWYXJpYW50OjppbnZva2UoY29uc3Qgc3RyaW5nJiBtZXRob2QsIGNvbnN0IENwcFZhcmlhbnQq
IGFyZ3VtZW50cywKIGJvb2wgQ3BwVmFyaWFudDo6aW52b2tlRGVmYXVsdChjb25zdCBDcHBWYXJp
YW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ3BwVmFyaWFudCYgcmVzdWx0KSBjb25zdAogewotICAgIEFTU0VSVChp
c09iamVjdCgpKTsKKyAgICBXRUJLSVRfQVNTRVJUKGlzT2JqZWN0KCkpOwogICAgIE5QT2JqZWN0
KiBucE9iamVjdCA9IHZhbHVlLm9iamVjdFZhbHVlOwogICAgIE5QVmFyaWFudCByOwogICAgIGJv
b2wgc3RhdHVzID0gV2ViQmluZGluZ3M6Omludm9rZURlZmF1bHQoMCwgbnBPYmplY3QsIGFyZ3Vt
ZW50cywgYXJndW1lbnRDb3VudCwgJnIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5oCmluZGV4IGU4MmE3MGI2
Njc1MjRmN2IyNmMyZDNjMzBiZjVjMWMyMjNkZmNmNzYuLmU5Mjk1YTNiZTg5NWJhM2UwYTk3MWIw
ZTllYTlkOGRhZjhlY2ZjMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBWYXJpYW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAK
IAogI2luY2x1ZGUgIldlYkJpbmRpbmdzLmgiCiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKIG5hbWVzcGFjZSBXZWJUZXN0UnVu
bmVyIHsKIApAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICBib29sIHRvQm9vbGVhbigp
IGNvbnN0OwogICAgIC8vIFJldHVybnMgYSB2ZWN0b3Igb2Ygc3RyaW5ncyBmb3IgdGhlIHNwZWNp
ZmllZCBhcmd1bWVudC4gVGhpcyBpcyB1c2VmdWwKICAgICAvLyBmb3IgY29udmVydGluZyBhIEph
dmFTY3JpcHQgYXJyYXkgb2Ygc3RyaW5ncyBpbnRvIGEgdmVjdG9yIG9mIHN0cmluZ3MuCi0gICAg
VmVjdG9yPHN0ZDo6c3RyaW5nPiB0b1N0cmluZ1ZlY3RvcigpIGNvbnN0OworICAgIHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiB0b1N0cmluZ1ZlY3RvcigpIGNvbnN0OwogCiAgICAgLy8gSW52b2tl
IG1ldGhvZCBvZiB0aGUgZ2l2ZW4gbmFtZSBvbiBhbiBvYmplY3Qgd2l0aCB0aGUgc3VwcGxpZWQg
YXJndW1lbnRzLgogICAgIC8vIFRoZSBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG9iamVj
dCBvbiB3aGljaCB0aGUgbWV0aG9kIGlzIHRvIGJlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKaW5k
ZXggYWI2MDE5M2Q3NzA4MmQzOWM1NTZmM2UzOWMzM2EwMDQzNzk2NWY1Yi4uZGJjMDhiMjExOTkw
ZmZhNWM5NTQzMTgxNmFmNzU1ZmU5OTM1ODZmMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcApA
QCAtNDUsMTkgKzQ1LDE5IEBACiAKICNpbmNsdWRlICJLZXlDb2RlTWFwcGluZy5oIgogI2luY2x1
ZGUgIk1vY2tTcGVsbENoZWNrLmgiCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUg
IldlYkNvbnRleHRNZW51RGF0YS5oIgogI2luY2x1ZGUgIldlYkRyYWdPcGVyYXRpb24uaCIKICNp
bmNsdWRlICJXZWJUZXN0RGVsZWdhdGUuaCIKICNpbmNsdWRlICJXZWJUb3VjaFBvaW50LmgiCiAj
aW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgPGRlcXVlPgogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJEcmFnRGF0YS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgogI2luY2x1ZGUgPHB1
YmxpYy9XZWJTdHJpbmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVmVjdG9yLmg+Ci0jaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCi0jaWYgT1Mo
V0lORE9XUykKKyNpZmRlZiBXSU4zMgogI2luY2x1ZGUgIndpbi9XZWJJbnB1dEV2ZW50RmFjdG9y
eS5oIgogI2VuZGlmCiAKQEAgLTk3LDkgKzk3LDkgQEAgV2ViRHJhZ0RhdGEgY3VycmVudERyYWdE
YXRhOwogV2ViRHJhZ09wZXJhdGlvbiBjdXJyZW50RHJhZ0VmZmVjdDsKIFdlYkRyYWdPcGVyYXRp
b25zTWFzayBjdXJyZW50RHJhZ0VmZmVjdHNBbGxvd2VkOwogYm9vbCByZXBsYXlpbmdTYXZlZEV2
ZW50cyA9IGZhbHNlOwotRGVxdWU8U2F2ZWRFdmVudD4gbW91c2VFdmVudFF1ZXVlOworZGVxdWU8
U2F2ZWRFdmVudD4gbW91c2VFdmVudFF1ZXVlOwogaW50IHRvdWNoTW9kaWZpZXJzOwotVmVjdG9y
PFdlYlRvdWNoUG9pbnQ+IHRvdWNoUG9pbnRzOwordmVjdG9yPFdlYlRvdWNoUG9pbnQ+IHRvdWNo
UG9pbnRzOwogCiAvLyBUaW1lIGFuZCBwbGFjZSBvZiB0aGUgbGFzdCBtb3VzZSB1cCBldmVudC4K
IGRvdWJsZSBsYXN0Q2xpY2tUaW1lU2VjID0gMDsKQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIGFw
cGx5S2V5TW9kaWZpZXIoY29uc3Qgc3RyaW5nJiBtb2RpZmllck5hbWUsIFdlYklucHV0RXZlbnQq
IGV2ZW50KQogICAgIGJvb2wgaXNTeXN0ZW1LZXkgPSBmYWxzZTsKICAgICBjb25zdCBjaGFyKiBj
aGFyYWN0ZXJzID0gbW9kaWZpZXJOYW1lLmNfc3RyKCk7CiAgICAgaWYgKCFzdHJjbXAoY2hhcmFj
dGVycywgImN0cmxLZXkiKQotI2lmICFPUyhNQUNfT1NfWCkKKyNpZm5kZWYgX19BUFBMRV9fCiAg
ICAgICAgIHx8ICFzdHJjbXAoY2hhcmFjdGVycywgImFkZFNlbGVjdGlvbktleSIpCiAjZW5kaWYK
ICAgICAgICAgKSB7CkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBhcHBseUtleU1vZGlmaWVyKGNv
bnN0IHN0cmluZyYgbW9kaWZpZXJOYW1lLCBXZWJJbnB1dEV2ZW50KiBldmVudCkKICAgICAgICAg
ZXZlbnQtPm1vZGlmaWVycyB8PSBXZWJJbnB1dEV2ZW50OjpTaGlmdEtleTsKICAgICBlbHNlIGlm
ICghc3RyY21wKGNoYXJhY3RlcnMsICJhbHRLZXkiKSkgewogICAgICAgICBldmVudC0+bW9kaWZp
ZXJzIHw9IFdlYklucHV0RXZlbnQ6OkFsdEtleTsKLSNpZiAhT1MoTUFDX09TX1gpCisjaWZuZGVm
IF9fQVBQTEVfXwogICAgICAgICAvLyBPbiBXaW5kb3dzIGFsbCBrZXlzIHdpdGggQWx0IG1vZGlm
aWVyIHdpbGwgYmUgbWFya2VkIGFzIHN5c3RlbSBrZXkuCiAgICAgICAgIC8vIFdlIGtlZXAgdGhl
IHNhbWUgYmVoYXZpb3Igb24gTGludXggYW5kIGV2ZXJ5d2hlcmUgbm9uLU1hYywgc2VlOgogICAg
ICAgICAvLyBXZWJLaXQvY2hyb21pdW0vc3JjL2d0ay9XZWJJbnB1dEV2ZW50RmFjdG9yeS5jcHAK
QEAgLTE3Miw4ICsxNzIsNyBAQCBib29sIGFwcGx5S2V5TW9kaWZpZXIoY29uc3Qgc3RyaW5nJiBt
b2RpZmllck5hbWUsIFdlYklucHV0RXZlbnQqIGV2ZW50KQogICAgICAgICAvLyBrZXB0IGluIHN5
bmMgd2l0aCB0aGUgcmVsYXRlZCBjb2RlIGluIGFib3ZlIGZpbGUuCiAgICAgICAgIGlzU3lzdGVt
S2V5ID0gdHJ1ZTsKICNlbmRpZgotI2lmIE9TKE1BQ19PU19YKQotICAgIH0gZWxzZSBpZiAoIXN0
cmNtcChjaGFyYWN0ZXJzLCAibWV0YUtleSIpIHx8ICFzdHJjbXAoY2hhcmFjdGVycywgImFkZFNl
bGVjdGlvbktleSIpKSB7CisjaWZkZWYgX19BUFBMRV9fCiAgICAgICAgIGV2ZW50LT5tb2RpZmll
cnMgfD0gV2ViSW5wdXRFdmVudDo6TWV0YUtleTsKICAgICAgICAgLy8gT24gTWFjIG9ubHkgY29t
bWFuZCBrZXkgcHJlc3NlcyBhcmUgbWFya2VkIGFzIHN5c3RlbSBrZXkuCiAgICAgICAgIC8vIFNl
ZSB0aGUgcmVsYXRlZCBjb2RlIGluOiBXZWJLaXQvY2hyb21pdW0vc3JjL21hYy9XZWJJbnB1dEV2
ZW50RmFjdG9yeS5jcHAKQEAgLTE5MSw4ICsxOTAsOCBAQCBib29sIGFwcGx5S2V5TW9kaWZpZXJz
KGNvbnN0IENwcFZhcmlhbnQqIGFyZ3VtZW50LCBXZWJJbnB1dEV2ZW50KiBldmVudCkKIHsKICAg
ICBib29sIGlzU3lzdGVtS2V5ID0gZmFsc2U7CiAgICAgaWYgKGFyZ3VtZW50LT5pc09iamVjdCgp
KSB7Ci0gICAgICAgIFZlY3RvcjxzdHJpbmc+IG1vZGlmaWVycyA9IGFyZ3VtZW50LT50b1N0cmlu
Z1ZlY3RvcigpOwotICAgICAgICBmb3IgKFZlY3RvcjxzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBp
ID0gbW9kaWZpZXJzLmJlZ2luKCk7IGkgIT0gbW9kaWZpZXJzLmVuZCgpOyArK2kpCisgICAgICAg
IHZlY3RvcjxzdHJpbmc+IG1vZGlmaWVycyA9IGFyZ3VtZW50LT50b1N0cmluZ1ZlY3RvcigpOwor
ICAgICAgICBmb3IgKHZlY3RvcjxzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpID0gbW9kaWZpZXJz
LmJlZ2luKCk7IGkgIT0gbW9kaWZpZXJzLmVuZCgpOyArK2kpCiAgICAgICAgICAgICBpc1N5c3Rl
bUtleSB8PSBhcHBseUtleU1vZGlmaWVyKCppLCBldmVudCk7CiAgICAgfSBlbHNlIGlmIChhcmd1
bWVudC0+aXNTdHJpbmcoKSkKICAgICAgICAgaXNTeXN0ZW1LZXkgPSBhcHBseUtleU1vZGlmaWVy
KGFyZ3VtZW50LT50b1N0cmluZygpLCBldmVudCk7CkBAIC0yMDQsNyArMjAzLDcgQEAgYm9vbCBh
cHBseUtleU1vZGlmaWVycyhjb25zdCBDcHBWYXJpYW50KiBhcmd1bWVudCwgV2ViSW5wdXRFdmVu
dCogZXZlbnQpCiAvLyBvZiB0aGUgZWRpdCBjb21tYW5kIHdpbGwgYmUgc3RvcmVkIGluIHwqbmFt
ZXwuCiBib29sIGdldEVkaXRDb21tYW5kKGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50LCBz
dHJpbmcqIG5hbWUpCiB7Ci0jaWYgT1MoTUFDX09TX1gpCisjaWZkZWYgX19BUFBMRV9fCiAgICAg
Ly8gV2Ugb25seSBjYXJlcyBhYm91dCBMZWZ0LFJpZ2h0LFVwLERvd24ga2V5cyB3aXRoIENvbW1h
bmQgb3IgQ29tbWFuZCtTaGlmdAogICAgIC8vIG1vZGlmaWVycy4gVGhlc2Uga2V5IGV2ZW50cyBj
b3JyZXNwb25kIHRvIHNvbWUgc3BlY2lhbCBtb3ZlbWVudCBhbmQKICAgICAvLyBzZWxlY3Rpb24g
ZWRpdG9yIGNvbW1hbmRzLCBhbmQgd2FzIHN1cHBvc2VkIHRvIGJlIGhhbmRsZWQgaW4KQEAgLTMw
Niw3ICszMDUsNyBAQCBFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIoKQogICAgIC8vIFdoZW4gc2V0
IHRvIHRydWUgKHRoZSBkZWZhdWx0IHZhbHVlKSwgd2UgYmF0Y2ggbW91c2UgbW92ZSBhbmQgbW91
c2UgdXAKICAgICAvLyBldmVudHMgc28gd2UgY2FuIHNpbXVsYXRlIGRyYWcgJiBkcm9wLgogICAg
IGJpbmRQcm9wZXJ0eSgiZHJhZ01vZGUiLCAmZHJhZ01vZGUpOwotI2lmIE9TKFdJTkRPV1MpCisj
aWZkZWYgV0lOMzIKICAgICBiaW5kUHJvcGVydHkoIldNX0tFWURPV04iLCAmd21LZXlEb3duKTsK
ICAgICBiaW5kUHJvcGVydHkoIldNX0tFWVVQIiwgJndtS2V5VXApOwogICAgIGJpbmRQcm9wZXJ0
eSgiV01fQ0hBUiIsICZ3bUNoYXIpOwpAQCAtMzIxLDEzICszMjAsMTMgQEAgRXZlbnRTZW5kZXI6
OkV2ZW50U2VuZGVyKCkKIHZvaWQgRXZlbnRTZW5kZXI6OnJlc2V0KCkKIHsKICAgICAvLyBUaGUg
dGVzdCBzaG91bGQgaGF2ZSBmaW5pc2hlZCBhIGRyYWcgYW5kIHRoZSBtb3VzZSBidXR0b24gc3Rh
dGUuCi0gICAgQVNTRVJUKGN1cnJlbnREcmFnRGF0YS5pc051bGwoKSk7CisgICAgV0VCS0lUX0FT
U0VSVChjdXJyZW50RHJhZ0RhdGEuaXNOdWxsKCkpOwogICAgIGN1cnJlbnREcmFnRGF0YS5yZXNl
dCgpOwogICAgIGN1cnJlbnREcmFnRWZmZWN0ID0gV2ViS2l0OjpXZWJEcmFnT3BlcmF0aW9uTm9u
ZTsKICAgICBjdXJyZW50RHJhZ0VmZmVjdHNBbGxvd2VkID0gV2ViS2l0OjpXZWJEcmFnT3BlcmF0
aW9uTm9uZTsKICAgICBwcmVzc2VkQnV0dG9uID0gV2ViTW91c2VFdmVudDo6QnV0dG9uTm9uZTsK
ICAgICBkcmFnTW9kZS5zZXQodHJ1ZSk7Ci0jaWYgT1MoV0lORE9XUykKKyNpZmRlZiBXSU4zMgog
ICAgIHdtS2V5RG93bi5zZXQoV01fS0VZRE9XTik7CiAgICAgd21LZXlVcC5zZXQoV01fS0VZVVAp
OwogICAgIHdtQ2hhci5zZXQoV01fQ0hBUik7CkBAIC00MTcsNyArNDE2LDcgQEAgdm9pZCBFdmVu
dFNlbmRlcjo6bW91c2VEb3duKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KiByZXN1bHQKICAgICB3ZWJ2aWV3KCktPmxheW91dCgpOwogCiAgICAgaW50IGJ1dHRv
bk51bWJlciA9IGdldEJ1dHRvbk51bWJlckZyb21TaW5nbGVBcmcoYXJndW1lbnRzKTsKLSAgICBB
U1NFUlQoYnV0dG9uTnVtYmVyICE9IC0xKTsKKyAgICBXRUJLSVRfQVNTRVJUKGJ1dHRvbk51bWJl
ciAhPSAtMSk7CiAKICAgICBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uVHlwZSA9IGdldEJ1
dHRvblR5cGVGcm9tQnV0dG9uTnVtYmVyKGJ1dHRvbk51bWJlcik7CiAKQEAgLTQzOSw3ICs0Mzgs
NyBAQCB2b2lkIEV2ZW50U2VuZGVyOjptb3VzZVVwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiAgICAgd2VidmlldygpLT5sYXlvdXQoKTsKIAog
ICAgIGludCBidXR0b25OdW1iZXIgPSBnZXRCdXR0b25OdW1iZXJGcm9tU2luZ2xlQXJnKGFyZ3Vt
ZW50cyk7Ci0gICAgQVNTRVJUKGJ1dHRvbk51bWJlciAhPSAtMSk7CisgICAgV0VCS0lUX0FTU0VS
VChidXR0b25OdW1iZXIgIT0gLTEpOwogCiAgICAgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRv
blR5cGUgPSBnZXRCdXR0b25UeXBlRnJvbUJ1dHRvbk51bWJlcihidXR0b25OdW1iZXIpOwogCkBA
IC00NDcsNyArNDQ2LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6bW91c2VVcChjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogICAgICAgICBTYXZlZEV2
ZW50IHNhdmVkRXZlbnQ7CiAgICAgICAgIHNhdmVkRXZlbnQudHlwZSA9IFNhdmVkRXZlbnQ6Ok1v
dXNlVXA7CiAgICAgICAgIHNhdmVkRXZlbnQuYnV0dG9uVHlwZSA9IGJ1dHRvblR5cGU7Ci0gICAg
ICAgIG1vdXNlRXZlbnRRdWV1ZS5hcHBlbmQoc2F2ZWRFdmVudCk7CisgICAgICAgIG1vdXNlRXZl
bnRRdWV1ZS5wdXNoX2JhY2soc2F2ZWRFdmVudCk7CiAgICAgICAgIHJlcGxheVNhdmVkRXZlbnRz
KCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgV2ViTW91c2VFdmVudCBldmVudDsKQEAgLTUwNCw3
ICs1MDMsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjptb3VzZU1vdmVUbyhjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdQogICAgICAgICBTYXZlZEV2ZW50IHNh
dmVkRXZlbnQ7CiAgICAgICAgIHNhdmVkRXZlbnQudHlwZSA9IFNhdmVkRXZlbnQ6Ok1vdXNlTW92
ZTsKICAgICAgICAgc2F2ZWRFdmVudC5wb3MgPSBtb3VzZVBvczsKLSAgICAgICAgbW91c2VFdmVu
dFF1ZXVlLmFwcGVuZChzYXZlZEV2ZW50KTsKKyAgICAgICAgbW91c2VFdmVudFF1ZXVlLnB1c2hf
YmFjayhzYXZlZEV2ZW50KTsKICAgICB9IGVsc2UgewogICAgICAgICBXZWJNb3VzZUV2ZW50IGV2
ZW50OwogICAgICAgICBpbml0TW91c2VFdmVudChXZWJJbnB1dEV2ZW50OjpNb3VzZU1vdmUsIHBy
ZXNzZWRCdXR0b24sIG1vdXNlUG9zLCAmZXZlbnQsIGdldEN1cnJlbnRFdmVudFRpbWVTZWMobV9k
ZWxlZ2F0ZSkpOwpAQCAtNTk3LDcgKzU5Niw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmtleURvd24o
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKICAg
ICAgICAgfQogICAgICAgICBpZiAoIWNvZGUpIHsKICAgICAgICAgICAgIFdlYlN0cmluZyB3ZWJD
b2RlU3RyID0gV2ViU3RyaW5nOjpmcm9tVVRGOChjb2RlU3RyLmRhdGEoKSwgY29kZVN0ci5zaXpl
KCkpOwotICAgICAgICAgICAgQVNTRVJUKHdlYkNvZGVTdHIubGVuZ3RoKCkgPT0gMSk7CisgICAg
ICAgICAgICBXRUJLSVRfQVNTRVJUKHdlYkNvZGVTdHIubGVuZ3RoKCkgPT0gMSk7CiAgICAgICAg
ICAgICB0ZXh0ID0gY29kZSA9IHdlYkNvZGVTdHIuZGF0YSgpWzBdOwogICAgICAgICAgICAgbmVl
ZHNTaGlmdEtleU1vZGlmaWVyID0gbmVlZHNTaGlmdE1vZGlmaWVyKGNvZGUpOwogICAgICAgICAg
ICAgaWYgKChjb2RlICYgMHhGRikgPj0gJ2EnICYmIChjb2RlICYgMHhGRikgPD0gJ3onKQpAQCAt
NjE1LDcgKzYxNCw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmtleURvd24oY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKICAgICBldmVudERvd24udHlw
ZSA9IFdlYklucHV0RXZlbnQ6OlJhd0tleURvd247CiAgICAgZXZlbnREb3duLm1vZGlmaWVycyA9
IDA7CiAgICAgZXZlbnREb3duLndpbmRvd3NLZXlDb2RlID0gY29kZTsKLSNpZiBPUyhMSU5VWCkg
JiYgVVNFKEdUSykKKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgVVNFKEdUSykKICAgICBldmVu
dERvd24ubmF0aXZlS2V5Q29kZSA9IE5hdGl2ZUtleUNvZGVGb3JXaW5kb3dzS2V5Q29kZShjb2Rl
KTsKICNlbmRpZgogCkBAIC02NzcsNyArNjc2LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6ZGlzcGF0
Y2hNZXNzYWdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50Kgog
ewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogCi0jaWYgT1MoV0lORE9XUykKKyNpZmRlZiBXSU4z
MgogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID09IDMpIHsKICAgICAgICAgLy8gR3JhYiB0aGUg
bWVzc2FnZSBpZCB0byBzZWUgaWYgd2UgbmVlZCB0byBkaXNwYXRjaCBpdC4KICAgICAgICAgaW50
IG1zZyA9IGFyZ3VtZW50c1swXS50b0ludDMyKCk7CkBAIC02OTMsNyArNjkyLDcgQEAgdm9pZCBF
dmVudFNlbmRlcjo6ZGlzcGF0Y2hNZXNzYWdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KgogICAgICAgICB1bnNpZ25lZCBsb25nIGxwYXJhbSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmc+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKICAgICAgICAgd2Vi
dmlldygpLT5oYW5kbGVJbnB1dEV2ZW50KFdlYklucHV0RXZlbnRGYWN0b3J5OjprZXlib2FyZEV2
ZW50KDAsIG1zZywgYXJndW1lbnRzWzFdLnRvSW50MzIoKSwgbHBhcmFtKSk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAjZW5kaWYKIH0KIApAQCAtNzE3LDcgKzcxNiw3IEBAIHZvaWQgRXZlbnRT
ZW5kZXI6OmxlYXBGb3J3YXJkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KiByZXN1CiAgICAgICAgIFNhdmVkRXZlbnQgc2F2ZWRFdmVudDsKICAgICAgICAgc2F2
ZWRFdmVudC50eXBlID0gU2F2ZWRFdmVudDo6TGVhcEZvcndhcmQ7CiAgICAgICAgIHNhdmVkRXZl
bnQubWlsbGlzZWNvbmRzID0gbWlsbGlzZWNvbmRzOwotICAgICAgICBtb3VzZUV2ZW50UXVldWUu
YXBwZW5kKHNhdmVkRXZlbnQpOworICAgICAgICBtb3VzZUV2ZW50UXVldWUucHVzaF9iYWNrKHNh
dmVkRXZlbnQpOwogICAgIH0gZWxzZQogICAgICAgICBkb0xlYXBGb3J3YXJkKG1pbGxpc2Vjb25k
cyk7CiB9CkBAIC03NzgsOCArNzc3LDkgQEAgdm9pZCBFdmVudFNlbmRlcjo6Y29udGludW91c01v
dXNlU2Nyb2xsQnkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFYKIHZvaWQg
RXZlbnRTZW5kZXI6OnJlcGxheVNhdmVkRXZlbnRzKCkKIHsKICAgICByZXBsYXlpbmdTYXZlZEV2
ZW50cyA9IHRydWU7Ci0gICAgd2hpbGUgKCFtb3VzZUV2ZW50UXVldWUuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIFNhdmVkRXZlbnQgZSA9IG1vdXNlRXZlbnRRdWV1ZS50YWtlRmlyc3QoKTsKKyAgICB3
aGlsZSAoIW1vdXNlRXZlbnRRdWV1ZS5lbXB0eSgpKSB7CisgICAgICAgIFNhdmVkRXZlbnQgZSA9
IG1vdXNlRXZlbnRRdWV1ZS5mcm9udCgpOworICAgICAgICBtb3VzZUV2ZW50UXVldWUucG9wX2Zy
b250KCk7CiAKICAgICAgICAgc3dpdGNoIChlLnR5cGUpIHsKICAgICAgICAgY2FzZSBTYXZlZEV2
ZW50OjpNb3VzZU1vdmU6IHsKQEAgLTc5OCw3ICs3OTgsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpy
ZXBsYXlTYXZlZEV2ZW50cygpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgx
Miw3ICs4MTIsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpyZXBsYXlTYXZlZEV2ZW50cygpCiAvLyAg
IGFsc28gbWFrZXMgc2Vuc2UuIFRoaXMgZnVuY3Rpb24gaXMgZG9pbmcgc3VjaCBmb3Igc29tZSBm
bGFncy4KIC8vIC0gU29tZSB0ZXN0IGV2ZW4gY2hlY2tzIGFjdHVhbCBzdHJpbmcgY29udGVudC4g
U28gcHJvdmlkaW5nIGl0IHdvdWxkIGJlIGFsc28gaGVscGZ1bC4KIC8vCi1zdGF0aWMgVmVjdG9y
PFdlYlN0cmluZz4gbWFrZU1lbnVJdGVtU3RyaW5nc0ZvcihXZWJDb250ZXh0TWVudURhdGEqIGNv
bnRleHRNZW51LCBXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQorc3RhdGljIHZlY3RvcjxXZWJT
dHJpbmc+IG1ha2VNZW51SXRlbVN0cmluZ3NGb3IoV2ViQ29udGV4dE1lbnVEYXRhKiBjb250ZXh0
TWVudSwgV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKICAgICAvLyBUaGVzZSBjb25zdGFu
dHMgYXJlIGJhc2VkIG9uIFNhZmFyaSdzIGNvbnRleHQgbWVudSBiZWNhdXNlIHRlc3RzIGFyZSBt
YWRlIGZvciBpdC4KICAgICBzdGF0aWMgY29uc3QgY2hhciogbm9uRWRpdGFibGVNZW51U3RyaW5n
c1tdID0geyAiQmFjayIsICJSZWxvYWQgUGFnZSIsICJPcGVuIGluIERhc2hiYW9yZCIsICI8c2Vw
YXJhdG9yPiIsICJWaWV3IFNvdXJjZSIsICJTYXZlIFBhZ2UgQXMiLCAiUHJpbnQgUGFnZSIsICJJ
bnNwZWN0IEVsZW1lbnQiLCAwIH07CkBAIC04MjAsMjAgKzgyMCwyMCBAQCBzdGF0aWMgVmVjdG9y
PFdlYlN0cmluZz4gbWFrZU1lbnVJdGVtU3RyaW5nc0ZvcihXZWJDb250ZXh0TWVudURhdGEqIGNv
bnRleHRNZW51LAogCiAgICAgLy8gVGhpcyBpcyBwb3NzaWJsZSBiZWNhdXNlIG1vdXNlIGV2ZW50
cyBhcmUgY2FuY2VsbGVhYmxlLgogICAgIGlmICghY29udGV4dE1lbnUpCi0gICAgICAgIHJldHVy
biBWZWN0b3I8V2ViU3RyaW5nPigpOworICAgICAgICByZXR1cm4gdmVjdG9yPFdlYlN0cmluZz4o
KTsKIAotICAgIFZlY3RvcjxXZWJTdHJpbmc+IHN0cmluZ3M7CisgICAgdmVjdG9yPFdlYlN0cmlu
Zz4gc3RyaW5nczsKIAogICAgIGlmIChjb250ZXh0TWVudS0+aXNFZGl0YWJsZSkgewogICAgICAg
ICBmb3IgKGNvbnN0IGNoYXIqKiBpdGVtID0gZWRpdGFibGVNZW51U3RyaW5nczsgKml0ZW07ICsr
aXRlbSkgCi0gICAgICAgICAgICBzdHJpbmdzLmFwcGVuZChXZWJTdHJpbmc6OmZyb21VVEY4KCpp
dGVtKSk7CisgICAgICAgICAgICBzdHJpbmdzLnB1c2hfYmFjayhXZWJTdHJpbmc6OmZyb21VVEY4
KCppdGVtKSk7CiAgICAgICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHN1Z2dlc3Rpb25zOwogICAg
ICAgICBNb2NrU3BlbGxDaGVjazo6ZmlsbFN1Z2dlc3Rpb25MaXN0KGNvbnRleHRNZW51LT5taXNz
cGVsbGVkV29yZCwgJnN1Z2dlc3Rpb25zKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdWdnZXN0aW9ucy5zaXplKCk7ICsraSkgCi0gICAgICAgICAgICBzdHJpbmdzLmFwcGVuZChz
dWdnZXN0aW9uc1tpXSk7CisgICAgICAgICAgICBzdHJpbmdzLnB1c2hfYmFjayhzdWdnZXN0aW9u
c1tpXSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChjb25zdCBjaGFyKiogaXRlbSA9IG5v
bkVkaXRhYmxlTWVudVN0cmluZ3M7ICppdGVtOyArK2l0ZW0pIAotICAgICAgICAgICAgc3RyaW5n
cy5hcHBlbmQoV2ViU3RyaW5nOjpmcm9tVVRGOCgqaXRlbSkpOworICAgICAgICAgICAgc3RyaW5n
cy5wdXNoX2JhY2soV2ViU3RyaW5nOjpmcm9tVVRGOCgqaXRlbSkpOwogICAgIH0KIAogICAgIHJl
dHVybiBzdHJpbmdzOwpAQCAtODU4LDcgKzg1OCw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmNvbnRl
eHRDbGljayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVz
CiAgICAgaW5pdE1vdXNlRXZlbnQoV2ViSW5wdXRFdmVudDo6TW91c2VEb3duLCBXZWJNb3VzZUV2
ZW50OjpCdXR0b25SaWdodCwgbGFzdE1vdXNlUG9zLCAmZXZlbnQsIGdldEN1cnJlbnRFdmVudFRp
bWVTZWMobV9kZWxlZ2F0ZSkpOwogICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVudChldmVu
dCk7CiAKLSNpZiBPUyhXSU5ET1dTKQorI2lmZGVmIFdJTjMyCiAgICAgaW5pdE1vdXNlRXZlbnQo
V2ViSW5wdXRFdmVudDo6TW91c2VVcCwgV2ViTW91c2VFdmVudDo6QnV0dG9uUmlnaHQsIGxhc3RN
b3VzZVBvcywgJmV2ZW50LCBnZXRDdXJyZW50RXZlbnRUaW1lU2VjKG1fZGVsZWdhdGUpKTsKICAg
ICB3ZWJ2aWV3KCktPmhhbmRsZUlucHV0RXZlbnQoZXZlbnQpOwogCkBAIC05MTUsNyArOTE1LDcg
QEAgdm9pZCBFdmVudFNlbmRlcjo6c2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLAogdm9pZCBFdmVudFNlbmRlcjo6YmVnaW5EcmFnV2l0
aEZpbGVzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1
bHQpCiB7CiAgICAgY3VycmVudERyYWdEYXRhLmluaXRpYWxpemUoKTsKLSAgICBWZWN0b3I8c3Ry
aW5nPiBmaWxlcyA9IGFyZ3VtZW50c1swXS50b1N0cmluZ1ZlY3RvcigpOworICAgIHZlY3Rvcjxz
dHJpbmc+IGZpbGVzID0gYXJndW1lbnRzWzBdLnRvU3RyaW5nVmVjdG9yKCk7CiAgICAgV2ViVmVj
dG9yPFdlYlN0cmluZz4gYWJzb2x1dGVGaWxlbmFtZXMoZmlsZXMuc2l6ZSgpKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZpbGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFdlYkRyYWdE
YXRhOjpJdGVtIGl0ZW07CkBAIC05NTQsNyArOTU0LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6YWRk
VG91Y2hQb2ludChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCog
cmUKICAgICAgICAgICAgIGxvd2VzdElkKys7CiAgICAgfQogICAgIHRvdWNoUG9pbnQuaWQgPSBs
b3dlc3RJZDsKLSAgICB0b3VjaFBvaW50cy5hcHBlbmQodG91Y2hQb2ludCk7CisgICAgdG91Y2hQ
b2ludHMucHVzaF9iYWNrKHRvdWNoUG9pbnQpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyOjpjbGVh
clRvdWNoUG9pbnRzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkK
QEAgLTk2OCw3ICs5NjgsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpyZWxlYXNlVG91Y2hQb2ludChj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudAogICAgIHJlc3VsdC0+
c2V0TnVsbCgpOwogCiAgICAgY29uc3QgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudHNbMF0udG9J
bnQzMigpOwotICAgIEFTU0VSVChpbmRleCA8IHRvdWNoUG9pbnRzLnNpemUoKSk7CisgICAgV0VC
S0lUX0FTU0VSVChpbmRleCA8IHRvdWNoUG9pbnRzLnNpemUoKSk7CiAKICAgICBXZWJUb3VjaFBv
aW50KiB0b3VjaFBvaW50ID0gJnRvdWNoUG9pbnRzW2luZGV4XTsKICAgICB0b3VjaFBvaW50LT5z
dGF0ZSA9IFdlYlRvdWNoUG9pbnQ6OlN0YXRlUmVsZWFzZWQ7CkBAIC0xMDAwLDcgKzEwMDAsNyBA
QCB2b2lkIEV2ZW50U2VuZGVyOjp1cGRhdGVUb3VjaFBvaW50KGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogCiAgICAg
Y29uc3QgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudHNbMF0udG9JbnQzMigpOwotICAgIEFTU0VS
VChpbmRleCA8IHRvdWNoUG9pbnRzLnNpemUoKSk7CisgICAgV0VCS0lUX0FTU0VSVChpbmRleCA8
IHRvdWNoUG9pbnRzLnNpemUoKSk7CiAKICAgICBXZWJQb2ludCBwb3NpdGlvbihhcmd1bWVudHNb
MV0udG9JbnQzMigpLCBhcmd1bWVudHNbMl0udG9JbnQzMigpKTsKICAgICBXZWJUb3VjaFBvaW50
KiB0b3VjaFBvaW50ID0gJnRvdWNoUG9pbnRzW2luZGV4XTsKQEAgLTEwMTQsNyArMTAxNCw3IEBA
IHZvaWQgRXZlbnRTZW5kZXI6OmNhbmNlbFRvdWNoUG9pbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAKICAgICBj
b25zdCB1bnNpZ25lZCBpbmRleCA9IGFyZ3VtZW50c1swXS50b0ludDMyKCk7Ci0gICAgQVNTRVJU
KGluZGV4IDwgdG91Y2hQb2ludHMuc2l6ZSgpKTsKKyAgICBXRUJLSVRfQVNTRVJUKGluZGV4IDwg
dG91Y2hQb2ludHMuc2l6ZSgpKTsKIAogICAgIFdlYlRvdWNoUG9pbnQqIHRvdWNoUG9pbnQgPSAm
dG91Y2hQb2ludHNbaW5kZXhdOwogICAgIHRvdWNoUG9pbnQtPnN0YXRlID0gV2ViVG91Y2hQb2lu
dDo6U3RhdGVDYW5jZWxsZWQ7CkBAIC0xMDIyLDcgKzEwMjIsNyBAQCB2b2lkIEV2ZW50U2VuZGVy
OjpjYW5jZWxUb3VjaFBvaW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KgogCiB2b2lkIEV2ZW50U2VuZGVyOjpzZW5kQ3VycmVudFRvdWNoRXZlbnQoY29uc3Qg
V2ViSW5wdXRFdmVudDo6VHlwZSB0eXBlKQogewotICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oV2ViVG91Y2hFdmVudDo6dG91Y2hlc0xlbmd0aENhcCkgPiB0b3VjaFBvaW50cy5zaXpl
KCkpOworICAgIFdFQktJVF9BU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFdlYlRvdWNoRXZl
bnQ6OnRvdWNoZXNMZW5ndGhDYXApID4gdG91Y2hQb2ludHMuc2l6ZSgpKTsKICAgICB3ZWJ2aWV3
KCktPmxheW91dCgpOwogCiAgICAgV2ViVG91Y2hFdmVudCB0b3VjaEV2ZW50OwpAQCAtMTAzNyw3
ICsxMDM3LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6c2VuZEN1cnJlbnRUb3VjaEV2ZW50KGNvbnN0
IFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
dG91Y2hQb2ludHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgV2ViVG91Y2hQb2ludCogdG91Y2hQ
b2ludCA9ICZ0b3VjaFBvaW50c1tpXTsKICAgICAgICAgaWYgKHRvdWNoUG9pbnQtPnN0YXRlID09
IFdlYlRvdWNoUG9pbnQ6OlN0YXRlUmVsZWFzZWQpIHsKLSAgICAgICAgICAgIHRvdWNoUG9pbnRz
LnJlbW92ZShpKTsKKyAgICAgICAgICAgIHRvdWNoUG9pbnRzLmVyYXNlKHRvdWNoUG9pbnRzLmJl
Z2luKCkgKyBpKTsKICAgICAgICAgICAgIC0taTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICB0b3VjaFBvaW50LT5zdGF0ZSA9IFdlYlRvdWNoUG9pbnQ6OlN0YXRlU3RhdGlvbmFyeTsKQEAg
LTEyNTcsNyArMTI1Nyw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVFdmVudChXZWJJbnB1
dEV2ZW50OjpUeXBlIHR5cGUsIGNvbnN0IENwcEFyZ3VtZW50TGlzdCYKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIGV2ZW50
Lmdsb2JhbFggPSBldmVudC54OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1hcHBpbmcuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1hcHBpbmcuY3BwCmluZGV4IGMz
MzlmMmYyYmNkMjVhODQwNmMzNDY3Zjg4NGU4ZmJhNTM0Njk3NjUuLjIxMTU4NmUzNWUwYzZmN2Ey
ODVkYzk2ZTY2NzYxOThmZTAwYzU5ZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFwcGluZy5jcHAK
QEAgLTMxLDEzICszMSwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIktleUNv
ZGVNYXBwaW5nLmgiCiAKLSNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KLQogbmFtZXNwYWNl
IFdlYlRlc3RSdW5uZXIgewogCiBpbnQgTmF0aXZlS2V5Q29kZUZvcldpbmRvd3NLZXlDb2RlKGlu
dCBrZXlzeW0pCiB7Ci0jaWYgT1MoTElOVVgpICYmIFVTRShHVEspCisjaWYgZGVmaW5lZChfX2xp
bnV4X18pICYmIFVTRShHVEspCiAgICAgLy8gU2VlIC91c3Ivc2hhcmUvWDExL3hrYi9rZXljb2Rl
cy8qCiAgICAgc3RhdGljIGNvbnN0IGludCBhc2NpaVRvS2V5Q29kZVtdID0gewogICAgICAgICAw
LApAQCAtMjQwLDggKzIzOCw3IEBAIGludCBOYXRpdmVLZXlDb2RlRm9yV2luZG93c0tleUNvZGUo
aW50IGtleXN5bSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oa2V5c3ltKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4ga2V5c3ltIC0ga2V5c3lt
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5jcHAKaW5kZXggN2Q0
OWVkMmZhYTM4OGVjNjhkZTYwN2U1YTBlM2NlNjEwNTMxZjI3Yi4uYzNlZWQyNTVlNjU0MWQxMWZm
MmNmYzA0MzU4ZTVkNmQ3MGJhYTJlNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5j
cHAKQEAgLTMxLDIwICszMSwyMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1v
Y2tHcmFtbWFyQ2hlY2suaCIKIAorI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0cmlu
Zy5oIgorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdS
ZXN1bHQuaCIKLQotI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+Ci0jaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDxh
bGdvcml0aG0+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ugc3Rk
OworCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKLWJvb2wgTW9ja0dyYW1tYXJDaGVjazo6
Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBWZWN0b3I8V2ViVGV4
dENoZWNraW5nUmVzdWx0PiogcmVzdWx0cykKK2Jvb2wgTW9ja0dyYW1tYXJDaGVjazo6Y2hlY2tH
cmFtbWFyT2ZTdHJpbmcoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCB2ZWN0b3I8V2ViVGV4dENoZWNr
aW5nUmVzdWx0PiogcmVzdWx0cykKIHsKLSAgICBBU1NFUlQocmVzdWx0cyk7Ci0gICAgV1RGOjpT
dHJpbmcgc3RyaW5nVGV4dCh0ZXh0LmRhdGEoKSwgdGV4dC5sZW5ndGgoKSk7Ci0gICAgaWYgKHN0
cmluZ1RleHQuZmluZChpc0FTQ0lJQWxwaGEpID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKQor
ICAgIFdFQktJVF9BU1NFUlQocmVzdWx0cyk7CisgICAgc3RyaW5nIHN0cmluZ1RleHQgPSB0ZXh0
LnV0ZjgoKTsKKyAgICBpZiAoZmluZF9pZihzdHJpbmdUZXh0LmJlZ2luKCksIHN0cmluZ1RleHQu
ZW5kKCksIGlzQVNDSUlBbHBoYSkgPT0gc3RyaW5nVGV4dC5lbmQoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICAvLyBGaW5kIG1hdGNoaW5nIGdyYW1tYXRpY2FsIGVycm9ycyBmcm9tIGtu
b3duIG9uZXMuIFRoaXMgZnVuY3Rpb24gaGFzIHRvCkBAIC02OSwxMCArNzEsMTIgQEAgYm9vbCBN
b2NrR3JhbW1hckNoZWNrOjpjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBXZWJTdHJpbmcmIHRl
eHQsIFZlY3RvcjxXZWJUZXgKICAgICB9OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQVJS
QVlTSVpFX1VOU0FGRShncmFtbWFyRXJyb3JzKTsgKytpKSB7CiAgICAgICAgIGludCBvZmZzZXQg
PSAwOwotICAgICAgICB3aGlsZSAoKG9mZnNldCA9IHN0cmluZ1RleHQuZmluZChncmFtbWFyRXJy
b3JzW2ldLnRleHQsIG9mZnNldCkpICE9IC0xKSB7Ci0gICAgICAgICAgICByZXN1bHRzLT5hcHBl
bmQoV2ViVGV4dENoZWNraW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1R5cGVHcmFtbWFyLCBvZmZz
ZXQgKyBncmFtbWFyRXJyb3JzW2ldLmxvY2F0aW9uLCBncmFtbWFyRXJyb3JzW2ldLmxlbmd0aCkp
OworICAgICAgICB3aGlsZSAoKG9mZnNldCA9IHN0cmluZ1RleHQuZmluZChncmFtbWFyRXJyb3Jz
W2ldLnRleHQsIG9mZnNldCkpICE9IHN0cmluZzo6bnBvcykgeworICAgICAgICAgICAgcmVzdWx0
cy0+cHVzaF9iYWNrKFdlYlRleHRDaGVja2luZ1Jlc3VsdChXZWJUZXh0Q2hlY2tpbmdUeXBlR3Jh
bW1hciwgb2Zmc2V0ICsgZ3JhbW1hckVycm9yc1tpXS5sb2NhdGlvbiwgZ3JhbW1hckVycm9yc1tp
XS5sZW5ndGgpKTsKICAgICAgICAgICAgIG9mZnNldCArPSBncmFtbWFyRXJyb3JzW2ldLmxlbmd0
aDsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CisKK30KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFt
bWFyQ2hlY2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L01vY2tHcmFtbWFyQ2hlY2suaAppbmRleCA2NDI3MWIzZmEzYzJjMDFhYzEzNmM4ZTEwMzA3MTYx
OTI2ZDNlOTgzLi5hMTgzZGNjYjA3NGM3OTBiZmFjYWMzZjc3OTg3NWQ5ZGE4ODE5OTVjIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2Nr
R3JhbW1hckNoZWNrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5oCkBAIC0zMSw4ICszMSw3IEBACiAjaWZuZGVmIE1v
Y2tHcmFtbWFyQ2hlY2tfaAogI2RlZmluZSBNb2NrR3JhbW1hckNoZWNrX2gKIAotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRl
IDx2ZWN0b3I+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00MSw2ICs0MCw4IEBAIHN0cnVj
dCBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ7CiAKIH0KIAorbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIg
eworCiAvLyBBIG1vY2sgaW1wbGVtZW50YXRpb24gb2YgYSBncmFtbWFyLWNoZWNrZXIgdXNlZCBm
b3IgV2ViS2l0IHRlc3RzLiBUaGlzIGNsYXNzCiAvLyBvbmx5IGltcGxlbWVudHMgdGhlIG1pbmlt
YWwgZnVuY3Rpb25hcml0aWVzIHJlcXVpcmVkIGJ5IFdlYktpdCB0ZXN0cywgaS5lLgogLy8gdGhp
cyBjbGFzcyBqdXN0IGNvbXBhcmVzIHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBrbm93biBncmFtbWFy
IG1pc3Rha2VzIGluCkBAIC00OCw3ICs0OSw5IEBAIHN0cnVjdCBXZWJUZXh0Q2hlY2tpbmdSZXN1
bHQ7CiAvLyBmb3Igd2Via2l0IHRlc3RzLCB0aGlzIGNsYXNzIGlzIG5vdCBzdWl0YWJsZSBmb3Ig
YW55IG90aGVyIHVzYWdlcy4KIGNsYXNzIE1vY2tHcmFtbWFyQ2hlY2sgewogcHVibGljOgotICAg
IHN0YXRpYyBib29sIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5n
JiwgVmVjdG9yPFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0PiopOworICAgIHN0YXRpYyBi
b29sIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgc3RkOjp2
ZWN0b3I8V2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+Kik7CiB9OwogCit9CisKICNlbmRp
ZiAvLyBNb2NrU3BlbGxDaGVja19oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5jcHAKaW5kZXgg
ODFiMzA4OTJiNTgyMGFjZjNjOGIyYWQ3OGZlODQxMTZmOTBlOGNiZi4uNGNkNjk0Yjc2OGNiZWQy
N2I4NGIwZTVkMTE3YzVjMDhhZWNmM2FjOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNw
cApAQCAtMzEsMTMgKzMxLDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTW9j
a1NwZWxsQ2hlY2suaCIKIAotI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+Ci0jaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNs
dWRlICJUZXN0Q29tbW9uLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkNTdHJpbmcuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLXN0YXRpYyB2b2lk
IGFwcGVuZChXZWJWZWN0b3I8V2ViU3RyaW5nPiogZGF0YSwgY29uc3QgV2ViU3RyaW5nJiBpdGVt
KQorbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCituYW1lc3BhY2UgeworCit2b2lkIGFwcGVu
ZChXZWJWZWN0b3I8V2ViU3RyaW5nPiogZGF0YSwgY29uc3QgV2ViU3RyaW5nJiBpdGVtKQogewog
ICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHJlc3VsdChkYXRhLT5zaXplKCkgKyAxKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGEtPnNpemUoKTsgKytpKQpAQCAtNDYsMTcgKzUwLDE3
IEBAIHN0YXRpYyB2b2lkIGFwcGVuZChXZWJWZWN0b3I8V2ViU3RyaW5nPiogZGF0YSwgY29uc3Qg
V2ViU3RyaW5nJiBpdGVtKQogICAgIGRhdGEtPnN3YXAocmVzdWx0KTsKIH0KIAorfQorCiBNb2Nr
U3BlbGxDaGVjazo6TW9ja1NwZWxsQ2hlY2soKQogICAgIDogbV9pbml0aWFsaXplZChmYWxzZSkg
eyB9CiAKIE1vY2tTcGVsbENoZWNrOjp+TW9ja1NwZWxsQ2hlY2soKSB7IH0KIAotc3RhdGljIGJv
b2wgaXNOb3RBU0NJSUFscGhhKFVDaGFyIGNoKSB7IHJldHVybiAhaXNBU0NJSUFscGhhKGNoKTsg
fQotCiBib29sIE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZChjb25zdCBXZWJTdHJpbmcm
IHRleHQsIGludCogbWlzc3BlbGxlZE9mZnNldCwgaW50KiBtaXNzcGVsbGVkTGVuZ3RoKQogewot
ICAgIEFTU0VSVChtaXNzcGVsbGVkT2Zmc2V0KTsKLSAgICBBU1NFUlQobWlzc3BlbGxlZExlbmd0
aCk7CisgICAgV0VCS0lUX0FTU0VSVChtaXNzcGVsbGVkT2Zmc2V0KTsKKyAgICBXRUJLSVRfQVNT
RVJUKG1pc3NwZWxsZWRMZW5ndGgpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGlzIHNwZWxsY2hl
Y2tlci4KICAgICBpbml0aWFsaXplSWZOZWVkZWQoKTsKQEAgLTY1LDEyICs2OSwxMiBAQCBib29s
IE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZChjb25zdCBXZWJTdHJpbmcmIHRleHQsIGlu
dCogbWlzc3BlbGxlZE9mZnNldAogICAgICptaXNzcGVsbGVkT2Zmc2V0ID0gMDsKICAgICAqbWlz
c3BlbGxlZExlbmd0aCA9IDA7CiAKLSAgICAvLyBDb252ZXJ0IHRvIGEgU3RyaW5nIGJlY2F1c2Ug
d2Ugc3RvcmUgU3RyaW5nIGluc3RhbmNlcyBpbgorICAgIC8vIENvbnZlcnQgdG8gYSBzdGQ6OnN0
cmluZyBiZWNhdXNlIHdlIHN0b3JlIHN0ZDo6c3RyaW5nIGluc3RhbmNlcyBpbgogICAgIC8vIG1f
bWlzc3BlbGxlZFdvcmRzIGFuZCBXZWJTdHJpbmcgaGFzIG5vIGZpbmQoKS4KLSAgICBTdHJpbmcg
c3RyaW5nVGV4dCh0ZXh0LmRhdGEoKSwgdGV4dC5sZW5ndGgoKSk7CisgICAgc3RyaW5nIHN0cmlu
Z1RleHQgPSB0ZXh0LnV0ZjgoKTsKICAgICBpbnQgc2tpcHBlZExlbmd0aCA9IDA7CiAKLSAgICB3
aGlsZSAoIXN0cmluZ1RleHQuaXNFbXB0eSgpKSB7CisgICAgd2hpbGUgKCFzdHJpbmdUZXh0LmVt
cHR5KCkpIHsKICAgICAgICAgLy8gRXh0cmFjdCB0aGUgZmlyc3QgcG9zc2libGUgRW5nbGlzaCB3
b3JkIGZyb20gdGhlIGdpdmVuIHN0cmluZy4KICAgICAgICAgLy8gVGhlIGdpdmVuIHN0cmluZyBt
YXkgaW5jbHVkZSBub24tQVNDSUkgY2hhcmFjdGVycyBvciBudW1iZXJzLiBTbywgd2UKICAgICAg
ICAgLy8gc2hvdWxkIGZpbHRlciBvdXQgc3VjaCBjaGFyYWN0ZXJzIGJlZm9yZSBzdGFydCBsb29r
aW5nIHVwIG91cgpAQCAtNzgsMTIgKzgyLDEzIEBAIGJvb2wgTW9ja1NwZWxsQ2hlY2s6OnNwZWxs
Q2hlY2tXb3JkKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50KiBtaXNzcGVsbGVkT2Zmc2V0CiAg
ICAgICAgIC8vIChUaGlzIGlzIGEgc2ltcGxlIHZlcnNpb24gb2Ygb3VyIFNwZWxsQ2hlY2tXb3Jk
SXRlcmF0b3IgY2xhc3MuKQogICAgICAgICAvLyBJZiB0aGUgZ2l2ZW4gc3RyaW5nIGRvZXNuJ3Qg
aW5jbHVkZSBhbnkgQVNDSUkgY2hhcmFjdGVycywgd2UgY2FuIHRyZWF0IHRoZQogICAgICAgICAv
LyBzdHJpbmcgYXMgdmFsaWQgb25lLgotICAgICAgICBpbnQgd29yZE9mZnNldCA9IHN0cmluZ1Rl
eHQuZmluZChpc0FTQ0lJQWxwaGEpOwotICAgICAgICBpZiAod29yZE9mZnNldCA9PSAtMSkKKyAg
ICAgICAgc3RyaW5nOjppdGVyYXRvciBmaXJzdENoYXIgPSBmaW5kX2lmKHN0cmluZ1RleHQuYmVn
aW4oKSwgc3RyaW5nVGV4dC5lbmQoKSwgaXNBU0NJSUFscGhhKTsKKyAgICAgICAgaWYgKGZpcnN0
Q2hhciA9PSBzdHJpbmdUZXh0LmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGludCB3b3JkT2Zmc2V0ID0gZGlzdGFuY2Uoc3RyaW5nVGV4dC5iZWdpbigpLCBmaXJzdENo
YXIpOwogICAgICAgICBpbnQgbWF4V29yZExlbmd0aCA9IHN0YXRpY19jYXN0PGludD4oc3RyaW5n
VGV4dC5sZW5ndGgoKSkgLSB3b3JkT2Zmc2V0OwogICAgICAgICBpbnQgd29yZExlbmd0aDsKLSAg
ICAgICAgU3RyaW5nIHdvcmQ7CisgICAgICAgIHN0cmluZyB3b3JkOwogCiAgICAgICAgIC8vIExv
b2sgdXAgb3VyIG1pc3NwZWxsZWQtd29yZCB0YWJsZSB0byBjaGVjayBpZiB0aGUgZXh0cmFjdGVk
IHdvcmQgaXMgYQogICAgICAgICAvLyBrbm93biBtaXNzcGVsbGVkIHdvcmQsIGFuZCByZXR1cm4g
dGhlIG9mZnNldCBhbmQgdGhlIGxlbmd0aCBvZiB0aGUKQEAgLTkyLDcgKzk3LDcgQEAgYm9vbCBN
b2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dvcmQoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBpbnQq
IG1pc3NwZWxsZWRPZmZzZXQKICAgICAgICAgLy8gbWlzc3BlbGxlZC13b3JkIHRhYmxlLikKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX21pc3NwZWxsZWRXb3Jkcy5zaXplKCk7ICsr
aSkgewogICAgICAgICAgICAgd29yZExlbmd0aCA9IHN0YXRpY19jYXN0PGludD4obV9taXNzcGVs
bGVkV29yZHMuYXQoaSkubGVuZ3RoKCkpID4gbWF4V29yZExlbmd0aCA/IG1heFdvcmRMZW5ndGgg
OiBzdGF0aWNfY2FzdDxpbnQ+KG1fbWlzc3BlbGxlZFdvcmRzLmF0KGkpLmxlbmd0aCgpKTsKLSAg
ICAgICAgICAgIHdvcmQgPSBzdHJpbmdUZXh0LnN1YnN0cmluZyh3b3JkT2Zmc2V0LCB3b3JkTGVu
Z3RoKTsKKyAgICAgICAgICAgIHdvcmQgPSBzdHJpbmdUZXh0LnN1YnN0cih3b3JkT2Zmc2V0LCB3
b3JkTGVuZ3RoKTsKICAgICAgICAgICAgIGlmICh3b3JkID09IG1fbWlzc3BlbGxlZFdvcmRzLmF0
KGkpICYmIChzdGF0aWNfY2FzdDxpbnQ+KHN0cmluZ1RleHQubGVuZ3RoKCkpID09IHdvcmRPZmZz
ZXQgKyB3b3JkTGVuZ3RoIHx8IGlzTm90QVNDSUlBbHBoYShzdHJpbmdUZXh0W3dvcmRPZmZzZXQg
KyB3b3JkTGVuZ3RoXSkpKSB7CiAgICAgICAgICAgICAgICAgKm1pc3NwZWxsZWRPZmZzZXQgPSB3
b3JkT2Zmc2V0ICsgc2tpcHBlZExlbmd0aDsKICAgICAgICAgICAgICAgICAqbWlzc3BlbGxlZExl
bmd0aCA9IHdvcmRMZW5ndGg7CkBAIC0xMDMsMTEgKzEwOCwxNCBAQCBib29sIE1vY2tTcGVsbENo
ZWNrOjpzcGVsbENoZWNrV29yZChjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCogbWlzc3BlbGxl
ZE9mZnNldAogICAgICAgICBpZiAoKm1pc3NwZWxsZWRMZW5ndGggPiAwKQogICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgaW50IHdvcmRFbmQgPSBzdHJpbmdUZXh0LmZpbmQoaXNOb3RBU0NJ
SUFscGhhLCB3b3JkT2Zmc2V0KTsKLSAgICAgICAgd29yZExlbmd0aCA9IHdvcmRFbmQgPT0gLTEg
PyBzdGF0aWNfY2FzdDxpbnQ+KHN0cmluZ1RleHQubGVuZ3RoKCkpIC0gd29yZE9mZnNldCA6IHdv
cmRFbmQgLSB3b3JkT2Zmc2V0OworICAgICAgICBzdHJpbmc6Oml0ZXJhdG9yIGxhc3RDaGFyID0g
ZmluZF9pZihzdHJpbmdUZXh0LmJlZ2luKCkgKyB3b3JkT2Zmc2V0LCBzdHJpbmdUZXh0LmVuZCgp
LCBpc05vdEFTQ0lJQWxwaGEpOworICAgICAgICBpZiAobGFzdENoYXIgPT0gc3RyaW5nVGV4dC5l
bmQoKSkKKyAgICAgICAgICAgIHdvcmRMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmluZ1Rl
eHQubGVuZ3RoKCkpIC0gd29yZE9mZnNldDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd29y
ZExlbmd0aCA9IGRpc3RhbmNlKGZpcnN0Q2hhciwgbGFzdENoYXIpOwogCi0gICAgICAgIEFTU0VS
VCgwIDwgd29yZE9mZnNldCArIHdvcmRMZW5ndGgpOwotICAgICAgICBzdHJpbmdUZXh0ID0gc3Ry
aW5nVGV4dC5zdWJzdHJpbmcod29yZE9mZnNldCArIHdvcmRMZW5ndGgpOworICAgICAgICBXRUJL
SVRfQVNTRVJUKDAgPCB3b3JkT2Zmc2V0ICsgd29yZExlbmd0aCk7CisgICAgICAgIHN0cmluZ1Rl
eHQgPSBzdHJpbmdUZXh0LnN1YnN0cih3b3JkT2Zmc2V0ICsgd29yZExlbmd0aCk7CiAgICAgICAg
IHNraXBwZWRMZW5ndGggKz0gd29yZE9mZnNldCArIHdvcmRMZW5ndGg7CiAgICAgfQogCkBAIC0x
NzAsNyArMTc4LDcgQEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKCkK
IAogICAgIG1fbWlzc3BlbGxlZFdvcmRzLmNsZWFyKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBhcnJheXNpemUobWlzc3BlbGxlZFdvcmRzKTsgKytpKQotICAgICAgICBtX21pc3NwZWxs
ZWRXb3Jkcy5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChtaXNzcGVsbGVkV29yZHNbaV0pKTsKKyAg
ICAgICAgbV9taXNzcGVsbGVkV29yZHMucHVzaF9iYWNrKG1pc3NwZWxsZWRXb3Jkc1tpXSk7CiAK
ICAgICAvLyBNYXJrIGFzIGluaXRpYWxpemVkIHRvIHByZXZlbnQgdGhpcyBvYmplY3QgZnJvbSBi
ZWluZyBpbml0aWFsaXplZCB0d2ljZQogICAgIC8vIG9yIG1vcmUuCkBAIC0xODAsMyArMTg4LDUg
QEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKCkKICAgICAvLyBmdW5j
dGlvbiBhbHdheXMgcmV0dXJucyBmYWxzZS4KICAgICByZXR1cm4gZmFsc2U7CiB9CisKK30KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01v
Y2tTcGVsbENoZWNrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9Nb2NrU3BlbGxDaGVjay5oCmluZGV4IGVlMzhmMjI5MjIyNjNlN2YzMTY4MzhjZGY4NDM2
NWU0MzBhNWYxYTYuLjFkYjM3NDhhZTMwMTJkMjZmZThkY2VlMzc0YjdkNzFiYWUwZDIyOTMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01v
Y2tTcGVsbENoZWNrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suaApAQCAtMzMsOCArMzMsMTAgQEAKIAogI2luY2x1ZGUg
IlBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViVmVjdG9yLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNs
dWRlIDx2ZWN0b3I+CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAogLy8gQSBtb2NrIGlt
cGxlbWVudGF0aW9uIG9mIGEgc3BlbGwtY2hlY2tlciB1c2VkIGZvciBXZWJLaXQgdGVzdHMuCiAv
LyBUaGlzIGNsYXNzIG9ubHkgaW1wbGVtZW50cyB0aGUgbWluaW1hbCBmdW5jdGlvbmFyaXRpZXMg
cmVxdWlyZWQgYnkgV2ViS2l0CkBAIC03MCwxMCArNzIsMTIgQEAgcHJpdmF0ZToKICAgICBib29s
IGluaXRpYWxpemVJZk5lZWRlZCgpOwogCiAgICAgLy8gQSB0YWJsZSB0aGF0IGNvbnNpc3RzIG9m
IG1pc3NwZWxsZWQgd29yZHMuCi0gICAgVmVjdG9yPFN0cmluZz4gbV9taXNzcGVsbGVkV29yZHM7
CisgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG1fbWlzc3BlbGxlZFdvcmRzOwogCiAgICAg
Ly8gQSBmbGFnIHJlcHJlc2VudGluZyB3aGV0aGVyIG9yIG5vdCB0aGlzIG9iamVjdCBpcyBpbml0
aWFsaXplZC4KICAgICBib29sIG1faW5pdGlhbGl6ZWQ7CiB9OwogCit9CisKICNlbmRpZiAvLyBN
b2NrU3BlbGxDaGVja19oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9TcGVsbENoZWNrQ2xpZW50LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxsQ2hlY2tDbGllbnQuY3BwCmluZGV4IDZl
ZjBmNWIxOWZhYWM3YzFiOTNkNjQ2Nzc0YjFiODI2ZTdjNWZjODAuLmIxYmNlY2FmN2MzYjEzMTg4
ZDAxOTliOThlMjRiYjUxNjdjNGM1ZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxsQ2hlY2tDbGllbnQuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxsQ2hlY2tDbGllbnQu
Y3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nUmVzdWx0Lmgi
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKQEAgLTgxLDcgKzgyLDcgQEAgdm9pZCBTcGVsbENoZWNr
Q2xpZW50OjpzcGVsbENoZWNrKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50JiBtaXNzcGVsbGVk
T2Zmc2V0LAogCiB2b2lkIFNwZWxsQ2hlY2tDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNv
bnN0IFdlYlN0cmluZyYgdGV4dCwgV2ViVGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaywgV2ViVmVj
dG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4qIHdlYlJlc3VsdHMpCiB7Ci0gICAgVmVjdG9yPFdl
YlRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKKyAgICB2ZWN0b3I8V2ViVGV4dENoZWNraW5n
UmVzdWx0PiByZXN1bHRzOwogICAgIGlmIChtYXNrICYgV2ViVGV4dENoZWNraW5nVHlwZVNwZWxs
aW5nKSB7CiAgICAgICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgICAgICBzaXplX3QgbGVuZ3Ro
ID0gdGV4dC5sZW5ndGgoKTsKQEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBTcGVsbENoZWNrQ2xpZW50
OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBXZWJTdHJpbmcmIHRleHQsIFdlYlRleHRDaGVj
a2kKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gV2ViVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
OwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gb2Zmc2V0ICsgbWlzc3BlbGxlZFBvc2l0
aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IG1pc3NwZWxsZWRMZW5ndGg7Ci0gICAg
ICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0cy5wdXNo
X2JhY2socmVzdWx0KTsKICAgICAgICAgICAgIG9mZnNldCArPSBtaXNzcGVsbGVkUG9zaXRpb24g
KyBtaXNzcGVsbGVkTGVuZ3RoOwogICAgICAgICB9CiAgICAgfQpAQCAtMTIwLDE5ICsxMjEsMTkg
QEAgdm9pZCBTcGVsbENoZWNrQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlRleHQoY29uc3QgV2Vi
U3RyaW5nJiB0ZXh0LCBXZWJUZXh0Q2hlY2sKIAogdm9pZCBTcGVsbENoZWNrQ2xpZW50OjpmaW5p
c2hMYXN0VGV4dENoZWNrKCkKIHsKLSAgICBWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiBy
ZXN1bHRzOworICAgIHZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAg
aW50IG9mZnNldCA9IDA7Ci0gICAgU3RyaW5nIHRleHQobV9sYXN0UmVxdWVzdGVkVGV4dENoZWNr
U3RyaW5nLmRhdGEoKSwgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nLmxlbmd0aCgpKTsK
KyAgICBzdHJpbmcgdGV4dCA9IG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZy51dGY4KCk7
CiAgICAgd2hpbGUgKHRleHQubGVuZ3RoKCkpIHsKICAgICAgICAgaW50IG1pc3NwZWxsZWRQb3Np
dGlvbiA9IDA7CiAgICAgICAgIGludCBtaXNzcGVsbGVkTGVuZ3RoID0gMDsKLSAgICAgICAgbV9z
cGVsbGNoZWNrLnNwZWxsQ2hlY2tXb3JkKFdlYlN0cmluZyh0ZXh0LmNoYXJhY3RlcnMoKSwgdGV4
dC5sZW5ndGgoKSksICZtaXNzcGVsbGVkUG9zaXRpb24sICZtaXNzcGVsbGVkTGVuZ3RoKTsKKyAg
ICAgICAgbV9zcGVsbGNoZWNrLnNwZWxsQ2hlY2tXb3JkKFdlYlN0cmluZzo6ZnJvbVVURjgodGV4
dCksICZtaXNzcGVsbGVkUG9zaXRpb24sICZtaXNzcGVsbGVkTGVuZ3RoKTsKICAgICAgICAgaWYg
KCFtaXNzcGVsbGVkTGVuZ3RoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIFdlYlZlY3Rv
cjxXZWJTdHJpbmc+IHN1Z2dlc3Rpb25zOwotICAgICAgICBtX3NwZWxsY2hlY2suZmlsbFN1Z2dl
c3Rpb25MaXN0KFdlYlN0cmluZyh0ZXh0LmNoYXJhY3RlcnMoKSArIG1pc3NwZWxsZWRQb3NpdGlv
biwgbWlzc3BlbGxlZExlbmd0aCksICZzdWdnZXN0aW9ucyk7Ci0gICAgICAgIHJlc3VsdHMuYXBw
ZW5kKFdlYlRleHRDaGVja2luZ1Jlc3VsdChXZWJUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcsIG9m
ZnNldCArIG1pc3NwZWxsZWRQb3NpdGlvbiwgbWlzc3BlbGxlZExlbmd0aCwgc3VnZ2VzdGlvbnMu
aXNFbXB0eSgpID8gV2ViU3RyaW5nKCkgOiBzdWdnZXN0aW9uc1swXSkpOwotICAgICAgICB0ZXh0
ID0gdGV4dC5zdWJzdHJpbmcobWlzc3BlbGxlZFBvc2l0aW9uICsgbWlzc3BlbGxlZExlbmd0aCk7
CisgICAgICAgIG1fc3BlbGxjaGVjay5maWxsU3VnZ2VzdGlvbkxpc3QoV2ViU3RyaW5nOjpmcm9t
VVRGOCh0ZXh0KSwgJnN1Z2dlc3Rpb25zKTsKKyAgICAgICAgcmVzdWx0cy5wdXNoX2JhY2soV2Vi
VGV4dENoZWNraW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1R5cGVTcGVsbGluZywgb2Zmc2V0ICsg
bWlzc3BlbGxlZFBvc2l0aW9uLCBtaXNzcGVsbGVkTGVuZ3RoLCBzdWdnZXN0aW9ucy5pc0VtcHR5
KCkgPyBXZWJTdHJpbmcoKSA6IHN1Z2dlc3Rpb25zWzBdKSk7CisgICAgICAgIHRleHQgPSB0ZXh0
LnN1YnN0cihtaXNzcGVsbGVkUG9zaXRpb24gKyBtaXNzcGVsbGVkTGVuZ3RoKTsKICAgICAgICAg
b2Zmc2V0ICs9IG1pc3NwZWxsZWRQb3NpdGlvbiArIG1pc3NwZWxsZWRMZW5ndGg7CiAgICAgfQog
ICAgIE1vY2tHcmFtbWFyQ2hlY2s6OmNoZWNrR3JhbW1hck9mU3RyaW5nKG1fbGFzdFJlcXVlc3Rl
ZFRleHRDaGVja1N0cmluZywgJnJlc3VsdHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdENvbW1vbi5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdENvbW1vbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVhODNkYzIxYzBmNzExODE4NTJkNzk1YzdjYjkyMzZkNTkxNzgzMDgKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0Q29t
bW9uLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGVzdENvbW1vbl9oCisjZGVmaW5lIFRlc3RD
b21tb25faAorCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbW1vbi5oPgorI2luY2x1ZGUgPHN0ZGlv
Lmg+CisKKyNpZiBkZWZpbmVkKFdJTjMyKQorI2RlZmluZSBzbnByaW50ZihzdHIsIHNpemUsIGZv
cm1hdCwgLi4uKSBfdnNucHJpbnRmX3Moc3RyLCBzaXplLCBzaXplLCBmb3JtYXQsIF9fVkFfQVJH
U19fKQorI2VuZGlmCisKK2lubGluZSBib29sIGlzQVNDSUlBbHBoYShjaGFyIGNoKSB7IHJldHVy
biAoY2ggfCAweDIwKSA+PSAnYScgJiYgKGNoIHwgMHgyMCkgPD0gJ3onOyB9CisKK2lubGluZSBi
b29sIGlzTm90QVNDSUlBbHBoYShjaGFyIGNoKSB7IHJldHVybiAhaXNBU0NJSUFscGhhKGNoKTsg
fQorCisjZW5kaWYgLy8gVGVzdENvbW1vbl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAK
aW5kZXggZTNkY2Y4MDIwNTE2YzVjMWJmZTE1YzMyYzZkMjc0MDFjZTViMTYwOC4uNDZkNmFkMDY1
YmEzMGEyYTYxZmNiZTFlZWU4OWM4NDUyZWZmNThiYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZh
Y2VzLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIHVzaW5nIFdlYktpdDo6V2ViVmlldzsKIG5hbWVz
cGFjZSBXZWJUZXN0UnVubmVyIHsKIAogVGVzdEludGVyZmFjZXM6OlRlc3RJbnRlcmZhY2VzKCkK
LSAgICA6IG1fd2ViVmlldygwKQorICAgIDogbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcihuZXcg
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKSkKKyAgICAsIG1fZXZlbnRTZW5kZXIobmV3IEV2ZW50
U2VuZGVyKCkpCisgICAgLCBtX2dhbWVwYWRDb250cm9sbGVyKG5ldyBHYW1lcGFkQ29udHJvbGxl
cigpKQorICAgICwgbV90ZXh0SW5wdXRDb250cm9sbGVyKG5ldyBUZXh0SW5wdXRDb250cm9sbGVy
KCkpCisgICAgLCBtX3Rlc3RSdW5uZXIobmV3IFRlc3RSdW5uZXIoKSkKKyAgICAsIG1fd2ViVmll
dygwKQogewotICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIoKSk7Ci0gICAgbV9ldmVudFNlbmRlciA9IGFkb3B0UHRyKG5l
dyBFdmVudFNlbmRlcigpKTsKLSAgICBtX2dhbWVwYWRDb250cm9sbGVyID0gYWRvcHRQdHIobmV3
IEdhbWVwYWRDb250cm9sbGVyKCkpOwotICAgIG1fdGV4dElucHV0Q29udHJvbGxlciA9IGFkb3B0
UHRyKG5ldyBUZXh0SW5wdXRDb250cm9sbGVyKCkpOwotICAgIG1fdGVzdFJ1bm5lciA9IGFkb3B0
UHRyKG5ldyBUZXN0UnVubmVyKCkpOwogfQogCiBUZXN0SW50ZXJmYWNlczo6flRlc3RJbnRlcmZh
Y2VzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oCmluZGV4IGQ4MzRjNDBiMTYyNzQyYTY0ODYx
YWNkNGNiYzc4YjZlYmJlNzQ5MjkuLjgzYjM4ZGI2ODE3OWFkMzg1ZTFmMjUwMTAyNThlYjUwYzlk
ZmQ0OTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaApAQCAtMzEsNyArMzEsNyBAQAogI2lm
bmRlZiBUZXN0SW50ZXJmYWNlc19oCiAjZGVmaW5lIFRlc3RJbnRlcmZhY2VzX2gKIAotI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogY2xhc3MgV2ViRnJhbWU7CkBAIC02NSwxMSArNjUsMTEgQEAgcHVibGljOgogCiAKIHByaXZh
dGU6Ci0gICAgT3duUHRyPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPiBtX2FjY2Vzc2liaWxpdHlD
b250cm9sbGVyOwotICAgIE93blB0cjxFdmVudFNlbmRlcj4gbV9ldmVudFNlbmRlcjsKLSAgICBP
d25QdHI8R2FtZXBhZENvbnRyb2xsZXI+IG1fZ2FtZXBhZENvbnRyb2xsZXI7Ci0gICAgT3duUHRy
PFRleHRJbnB1dENvbnRyb2xsZXI+IG1fdGV4dElucHV0Q29udHJvbGxlcjsKLSAgICBPd25QdHI8
VGVzdFJ1bm5lcj4gbV90ZXN0UnVubmVyOworICAgIHN0ZDo6YXV0b19wdHI8QWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXI+IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7CisgICAgc3RkOjphdXRvX3B0
cjxFdmVudFNlbmRlcj4gbV9ldmVudFNlbmRlcjsKKyAgICBzdGQ6OmF1dG9fcHRyPEdhbWVwYWRD
b250cm9sbGVyPiBtX2dhbWVwYWRDb250cm9sbGVyOworICAgIHN0ZDo6YXV0b19wdHI8VGV4dElu
cHV0Q29udHJvbGxlcj4gbV90ZXh0SW5wdXRDb250cm9sbGVyOworICAgIHN0ZDo6YXV0b19wdHI8
VGVzdFJ1bm5lcj4gbV90ZXN0UnVubmVyOwogICAgIFdlYktpdDo6V2ViVmlldyogbV93ZWJWaWV3
OwogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGVzdFBsdWdpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmNwcAppbmRleCAxOWZkMGIyNjZkMzljZTliNTQ1MDAz
YzA1MzYwZTExM2RiZTFlYmVlLi5hNGVkOGIwZjU5MjdlZjkwZjE4MTllZTkwZjQyOWVkMjkyZTI5
OGIyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0UGx1Z2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlRlc3RQbHVnaW4uaCIKIAorI2luY2x1ZGUgIlRlc3RDb21t
b24uaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIK
ICNpbmNsdWRlICJXZWJLaXQuaCIKQEAgLTM1LDEyICszNiw5IEBACiAjaW5jbHVkZSA8cHVibGlj
L1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+Ci0jaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9T
dHJpbmdFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViVGVz
dFJ1bm5lciB7CiAKQEAgLTk5LDcgKzk3LDcgQEAgY29uc3QgY2hhciogcG9pbnRTdGF0ZShXZWJU
b3VjaFBvaW50OjpTdGF0ZSBzdGF0ZSkKICAgICAgICAgcmV0dXJuICJVbmtub3duIjsKICAgICB9
CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEzNCwxMiArMTMyLDkgQEAgdm9pZCBwcmlu
dEV2ZW50RGV0YWlscyhXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlLCBjb25zdCBXZWJJbnB1dEV2
ZW50JiBldmVudCkKIAogV2ViUGx1Z2luQ29udGFpbmVyOjpUb3VjaEV2ZW50UmVxdWVzdFR5cGUg
cGFyc2VUb3VjaEV2ZW50UmVxdWVzdFR5cGUoY29uc3QgV2ViU3RyaW5nJiBzdHJpbmcpCiB7Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBXZWJTdHJpbmcsIGtQcmltaXRpdmVSYXcsIChX
ZWJTdHJpbmc6OmZyb21VVEY4KCJyYXciKSkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgV2ViU3RyaW5nLCBrUHJpbWl0aXZlU3ludGhldGljLCAoV2ViU3RyaW5nOjpmcm9tVVRGOCgi
c3ludGhldGljIikpKTsKLQotICAgIGlmIChzdHJpbmcgPT0ga1ByaW1pdGl2ZVJhdykKKyAgICBp
ZiAoc3RyaW5nID09IFdlYlN0cmluZzo6ZnJvbVVURjgoInJhdyIpKQogICAgICAgICByZXR1cm4g
V2ViUGx1Z2luQ29udGFpbmVyOjpUb3VjaEV2ZW50UmVxdWVzdFR5cGVSYXc7Ci0gICAgaWYgKHN0
cmluZyA9PSBrUHJpbWl0aXZlU3ludGhldGljKQorICAgIGlmIChzdHJpbmcgPT0gV2ViU3RyaW5n
Ojpmcm9tVVRGOCgic3ludGhldGljIikpCiAgICAgICAgIHJldHVybiBXZWJQbHVnaW5Db250YWlu
ZXI6OlRvdWNoRXZlbnRSZXF1ZXN0VHlwZVN5bnRoZXNpemVkTW91c2U7CiAgICAgcmV0dXJuIFdl
YlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJlcXVlc3RUeXBlTm9uZTsKIH0KQEAgLTE2OCw3
ICsxNjMsNyBAQCBUZXN0UGx1Z2luOjpUZXN0UGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qg
V2ViUGx1Z2luUGFyYW1zJiBwYXJhbXMsIFdlYlRlc3REZQogICAgIHN0YXRpYyBjb25zdCBXZWJT
dHJpbmcga0F0dHJpYnV0ZUNhblByb2Nlc3NEcmFnID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiY2Fu
LXByb2Nlc3MtZHJhZyIpOwogICAgIHN0YXRpYyBjb25zdCBXZWJTdHJpbmcga0F0dHJpYnV0ZVBy
aW50VXNlckdlc3R1cmVTdGF0dXMgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJwcmludC11c2VyLWdl
c3R1cmUtc3RhdHVzIik7CiAKLSAgICBBU1NFUlQocGFyYW1zLmF0dHJpYnV0ZU5hbWVzLnNpemUo
KSA9PSBwYXJhbXMuYXR0cmlidXRlVmFsdWVzLnNpemUoKSk7CisgICAgV0VCS0lUX0FTU0VSVChw
YXJhbXMuYXR0cmlidXRlTmFtZXMuc2l6ZSgpID09IHBhcmFtcy5hdHRyaWJ1dGVWYWx1ZXMuc2l6
ZSgpKTsKICAgICBzaXplX3Qgc2l6ZSA9IHBhcmFtcy5hdHRyaWJ1dGVOYW1lcy5zaXplKCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgY29uc3QgV2Vi
U3RyaW5nJiBhdHRyaWJ1dGVOYW1lID0gcGFyYW1zLmF0dHJpYnV0ZU5hbWVzW2ldOwpAQCAtMjEy
LDcgKzIwNyw3IEBAIGJvb2wgVGVzdFBsdWdpbjo6aW5pdGlhbGl6ZShXZWJQbHVnaW5Db250YWlu
ZXIqIGNvbnRhaW5lcikKICAgICBpZiAoIWluaXRTY2VuZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBtX2xheWVyID0gYWRvcHRQdHIoUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9z
aXRvclN1cHBvcnQoKS0+Y3JlYXRlRXh0ZXJuYWxUZXh0dXJlTGF5ZXIodGhpcykpOworICAgIG1f
bGF5ZXIgPSBhdXRvX3B0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllcj4oUGxhdGZvcm06OmN1cnJl
bnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKS0+Y3JlYXRlRXh0ZXJuYWxUZXh0dXJlTGF5ZXIodGhp
cykpOwogICAgIG1fY29udGFpbmVyID0gY29udGFpbmVyOwogICAgIG1fY29udGFpbmVyLT5zZXRX
ZWJMYXllcihtX2xheWVyLT5sYXllcigpKTsKICAgICBpZiAobV9yZVJlcXVlc3RUb3VjaEV2ZW50
cykgewpAQCAtMjI4LDcgKzIyMyw3IEBAIHZvaWQgVGVzdFBsdWdpbjo6ZGVzdHJveSgpCiB7CiAg
ICAgaWYgKG1fY29udGFpbmVyKQogICAgICAgICBtX2NvbnRhaW5lci0+c2V0V2ViTGF5ZXIoMCk7
Ci0gICAgbV9sYXllci5jbGVhcigpOworICAgIG1fbGF5ZXIucmVzZXQoKTsKICAgICBkZXN0cm95
U2NlbmUoKTsKIAogICAgIGRlbGV0ZSBtX2NvbnRleHQ7CkBAIC0yNzUsNyArMjcwLDcgQEAgVGVz
dFBsdWdpbjo6UHJpbWl0aXZlIFRlc3RQbHVnaW46OnBhcnNlUHJpbWl0aXZlKGNvbnN0IFdlYlN0
cmluZyYgc3RyaW5nKQogICAgIGVsc2UgaWYgKHN0cmluZyA9PSBrUHJpbWl0aXZlVHJpYW5nbGUp
CiAgICAgICAgIHByaW1pdGl2ZSA9IFByaW1pdGl2ZVRyaWFuZ2xlOwogICAgIGVsc2UKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gcHJpbWl0aXZlOwogfQogCkBAIC0yOTQsNyArMjg5LDcgQEAgdm9p
ZCBUZXN0UGx1Z2luOjpwYXJzZUNvbG9yKGNvbnN0IFdlYlN0cmluZyYgc3RyaW5nLCB1bnNpZ25l
ZCBjb2xvclszXSkKICAgICBlbHNlIGlmIChzdHJpbmcgPT0gImJsdWUiKQogICAgICAgICBjb2xv
clsyXSA9IDI1NTsKICAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIGZsb2F0IFRlc3RQbHVnaW46
OnBhcnNlT3BhY2l0eShjb25zdCBXZWJTdHJpbmcmIHN0cmluZykKQEAgLTM2MSwxNCArMzU2LDE0
IEBAIHZvaWQgVGVzdFBsdWdpbjo6ZGVzdHJveVNjZW5lKCkKIAogYm9vbCBUZXN0UGx1Z2luOjpp
bml0UHJvZ3JhbSgpCiB7Ci0gICAgY29uc3QgQ1N0cmluZyB2ZXJ0ZXhTb3VyY2UoCisgICAgY29u
c3Qgc3RyaW5nIHZlcnRleFNvdXJjZSgKICAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9u
OyAgXG4iCiAgICAgICAgICJ2b2lkIG1haW4oKSB7ICAgICAgICAgICAgIFxuIgogICAgICAgICAi
ICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOyBcbiIKICAgICAgICAgIn0gICAgICAgICAgICAgICAg
ICAgICAgICAgXG4iCiAgICAgKTsKIAotICAgIGNvbnN0IENTdHJpbmcgZnJhZ21lbnRTb3VyY2Uo
CisgICAgY29uc3Qgc3RyaW5nIGZyYWdtZW50U291cmNlKAogICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7IFxuIgogICAgICAgICAidW5pZm9ybSB2ZWM0IGNvbG9yOyAgICAgIFxuIgog
ICAgICAgICAidm9pZCBtYWluKCkgeyAgICAgICAgICAgIFxuIgpAQCAtMzg3LDcgKzM4Miw3IEBA
IGJvb2wgVGVzdFBsdWdpbjo6aW5pdFByb2dyYW0oKQogCiBib29sIFRlc3RQbHVnaW46OmluaXRQ
cmltaXRpdmUoKQogewotICAgIEFTU0VSVChtX3NjZW5lLnByaW1pdGl2ZSA9PSBQcmltaXRpdmVU
cmlhbmdsZSk7CisgICAgV0VCS0lUX0FTU0VSVChtX3NjZW5lLnByaW1pdGl2ZSA9PSBQcmltaXRp
dmVUcmlhbmdsZSk7CiAKICAgICBtX3NjZW5lLnZibyA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVy
KCk7CiAgICAgaWYgKCFtX3NjZW5lLnZibykKQEAgLTQwNSw5ICs0MDAsOSBAQCBib29sIFRlc3RQ
bHVnaW46OmluaXRQcmltaXRpdmUoKQogCiB2b2lkIFRlc3RQbHVnaW46OmRyYXdQcmltaXRpdmUo
KQogewotICAgIEFTU0VSVChtX3NjZW5lLnByaW1pdGl2ZSA9PSBQcmltaXRpdmVUcmlhbmdsZSk7
Ci0gICAgQVNTRVJUKG1fc2NlbmUudmJvKTsKLSAgICBBU1NFUlQobV9zY2VuZS5wcm9ncmFtKTsK
KyAgICBXRUJLSVRfQVNTRVJUKG1fc2NlbmUucHJpbWl0aXZlID09IFByaW1pdGl2ZVRyaWFuZ2xl
KTsKKyAgICBXRUJLSVRfQVNTRVJUKG1fc2NlbmUudmJvKTsKKyAgICBXRUJLSVRfQVNTRVJUKG1f
c2NlbmUucHJvZ3JhbSk7CiAKICAgICBtX2NvbnRleHQtPnVzZVByb2dyYW0obV9zY2VuZS5wcm9n
cmFtKTsKIApAQCAtNDIzLDcgKzQxOCw3IEBAIHZvaWQgVGVzdFBsdWdpbjo6ZHJhd1ByaW1pdGl2
ZSgpCiAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7CiB9CiAK
LXVuc2lnbmVkIFRlc3RQbHVnaW46OmxvYWRTaGFkZXIodW5zaWduZWQgdHlwZSwgY29uc3QgQ1N0
cmluZyYgc291cmNlKQordW5zaWduZWQgVGVzdFBsdWdpbjo6bG9hZFNoYWRlcih1bnNpZ25lZCB0
eXBlLCBjb25zdCBzdHJpbmcmIHNvdXJjZSkKIHsKICAgICB1bnNpZ25lZCBzaGFkZXIgPSBtX2Nv
bnRleHQtPmNyZWF0ZVNoYWRlcih0eXBlKTsKICAgICBpZiAoc2hhZGVyKSB7CkBAIC00NDAsNyAr
NDM1LDcgQEAgdW5zaWduZWQgVGVzdFBsdWdpbjo6bG9hZFNoYWRlcih1bnNpZ25lZCB0eXBlLCBj
b25zdCBDU3RyaW5nJiBzb3VyY2UpCiAgICAgcmV0dXJuIHNoYWRlcjsKIH0KIAotdW5zaWduZWQg
VGVzdFBsdWdpbjo6bG9hZFByb2dyYW0oY29uc3QgQ1N0cmluZyYgdmVydGV4U291cmNlLCBjb25z
dCBDU3RyaW5nJiBmcmFnbWVudFNvdXJjZSkKK3Vuc2lnbmVkIFRlc3RQbHVnaW46OmxvYWRQcm9n
cmFtKGNvbnN0IHN0cmluZyYgdmVydGV4U291cmNlLCBjb25zdCBzdHJpbmcmIGZyYWdtZW50U291
cmNlKQogewogICAgIHVuc2lnbmVkIHZlcnRleFNoYWRlciA9IGxvYWRTaGFkZXIoR0xfVkVSVEVY
X1NIQURFUiwgdmVydGV4U291cmNlKTsKICAgICB1bnNpZ25lZCBmcmFnbWVudFNoYWRlciA9IGxv
YWRTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmcmFnbWVudFNvdXJjZSk7CkBAIC01MzIsNyAr
NTI3LDcgQEAgYm9vbCBUZXN0UGx1Z2luOjpoYW5kbGVEcmFnU3RhdHVzVXBkYXRlKFdlYkRyYWdT
dGF0dXMgZHJhZ1N0YXR1cywgY29uc3QgV2ViRHJhZ0QKICAgICAgICAgZHJhZ1N0YXR1c05hbWUg
PSAiRHJhZ0Ryb3AiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYkRyYWdTdGF0dXNVbmtu
b3duOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uoc3Rk
OjpzdHJpbmcoIlBsdWdpbiByZWNlaXZlZCBldmVudDogIikgKyBkcmFnU3RhdHVzTmFtZSArICJc
biIpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uaAppbmRleCAxZTEwMGRhZTkx
ZmMwMmMwZDEwOTkyZDU3NmM4NDIwYjBhZDRlNDQ2Li41M2IyMmUxMWJjNjZiZDUxZmE1MzMyMjNl
MjhmM2U1M2RkMjBiODliIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5oCkBAIC0yOCw5ICsyOCwxMCBAQAog
CiAjaW5jbHVkZSAiV2ViUGx1Z2luLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFpbmVyLmgi
CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVM
YXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudC5o
PgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDxzdHJpbmc+CiAKIG5hbWVzcGFj
ZSBXZWJUZXN0UnVubmVyIHsKIApAQCAtMTI0LDggKzEyNSw4IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBpbml0UHJvZ3JhbSgpOwogICAgIGJvb2wgaW5pdFByaW1pdGl2ZSgpOwogICAgIHZvaWQgZHJh
d1ByaW1pdGl2ZSgpOwotICAgIHVuc2lnbmVkIGxvYWRTaGFkZXIodW5zaWduZWQgdHlwZSwgY29u
c3QgV1RGOjpDU3RyaW5nJiBzb3VyY2UpOwotICAgIHVuc2lnbmVkIGxvYWRQcm9ncmFtKGNvbnN0
IFdURjo6Q1N0cmluZyYgdmVydGV4U291cmNlLCBjb25zdCBXVEY6OkNTdHJpbmcmIGZyYWdtZW50
U291cmNlKTsKKyAgICB1bnNpZ25lZCBsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBzb3VyY2UpOworICAgIHVuc2lnbmVkIGxvYWRQcm9ncmFtKGNvbnN0IHN0ZDo6
c3RyaW5nJiB2ZXJ0ZXhTb3VyY2UsIGNvbnN0IHN0ZDo6c3RyaW5nJiBmcmFnbWVudFNvdXJjZSk7
CiAKICAgICBXZWJLaXQ6OldlYkZyYW1lKiBtX2ZyYW1lOwogICAgIFdlYlRlc3REZWxlZ2F0ZSog
bV9kZWxlZ2F0ZTsKQEAgLTEzNiw3ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
Y29sb3JUZXh0dXJlOwogICAgIHVuc2lnbmVkIG1fZnJhbWVidWZmZXI7CiAgICAgU2NlbmUgbV9z
Y2VuZTsKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcj4gbV9sYXll
cjsKKyAgICBzdGQ6OmF1dG9fcHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1f
bGF5ZXI7CiAKICAgICBXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJlcXVl
c3RUeXBlIG1fdG91Y2hFdmVudFJlcXVlc3Q7CiAgICAgLy8gUmVxdWVzdHMgdG91Y2ggZXZlbnRz
IGZyb20gdGhlIFdlYlBsdWdpbkNvbnRhaW5lckltcGwgbXVsdGlwbGUgdGltZXMgdG8gdGlja2xl
IHdlYmtpdC5vcmcvYi8xMDgzODEKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKaW5kZXggODk5MDEyYjMy
YWMyYjE1YWU1YTA2MGRlN2MyZGVjMzU0ZDNjNTM4OC4uYzVjMDcwNTQzOTJlMGJjZTE4MTQ4MjA2
YjExMDRkOTYwYjU1ZjVmMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKQEAgLTU1LDEyICs1NSwx
MiBAQAogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJXb3JrZXJJbmZvLmgiCiAj
aW5jbHVkZSAidjgvaW5jbHVkZS92OC5oIgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8cHVibGljL1dlYkRhdGEuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2Vi
UG9pbnQuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAotI2lmIE9TKExJTlVYKSB8fCBPUyhBTkRST0lEKQorI2lmIGRlZmlu
ZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKEFORFJPSUQpCiAjaW5jbHVkZSAibGludXgvV2ViRm9u
dFJlbmRlcmluZy5oIgogI2VuZGlmCiAKQEAgLTgzLDIyICs4MywyMCBAQCBwdWJsaWM6CiAKIGNs
YXNzIEludm9rZUNhbGxiYWNrVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPFRlc3RSdW5uZXI+
IHsKIHB1YmxpYzoKLSAgICBJbnZva2VDYWxsYmFja1Rhc2soVGVzdFJ1bm5lciogb2JqZWN0LCBQ
YXNzT3duQXJyYXlQdHI8Q3BwVmFyaWFudD4gY2FsbGJhY2tBcmd1bWVudHMsIHVpbnQzMl90IG51
bWJlck9mQXJndW1lbnRzKQorICAgIEludm9rZUNhbGxiYWNrVGFzayhUZXN0UnVubmVyKiBvYmpl
Y3QsIGF1dG9fcHRyPENwcFZhcmlhbnQ+IGNhbGxiYWNrQXJndW1lbnRzKQogICAgICAgICA6IFdl
Yk1ldGhvZFRhc2s8VGVzdFJ1bm5lcj4ob2JqZWN0KQogICAgICAgICAsIG1fY2FsbGJhY2tBcmd1
bWVudHMoY2FsbGJhY2tBcmd1bWVudHMpCi0gICAgICAgICwgbV9udW1iZXJPZkFyZ3VtZW50cyhu
dW1iZXJPZkFyZ3VtZW50cykKICAgICB7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIHJ1bklm
VmFsaWQoKQogICAgIHsKICAgICAgICAgQ3BwVmFyaWFudCBpbnZva2VSZXN1bHQ7Ci0gICAgICAg
IG1fY2FsbGJhY2tBcmd1bWVudHNbMF0uaW52b2tlRGVmYXVsdChtX2NhbGxiYWNrQXJndW1lbnRz
LmdldCgpLCBtX251bWJlck9mQXJndW1lbnRzLCBpbnZva2VSZXN1bHQpOworICAgICAgICBtX2Nh
bGxiYWNrQXJndW1lbnRzLT5pbnZva2VEZWZhdWx0KG1fY2FsbGJhY2tBcmd1bWVudHMuZ2V0KCks
IDEsIGludm9rZVJlc3VsdCk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIE93bkFycmF5UHRyPENw
cFZhcmlhbnQ+IG1fY2FsbGJhY2tBcmd1bWVudHM7Ci0gICAgdWludDMyX3QgbV9udW1iZXJPZkFy
Z3VtZW50czsKKyAgICBhdXRvX3B0cjxDcHBWYXJpYW50PiBtX2NhbGxiYWNrQXJndW1lbnRzOwog
fTsKIAogfQpAQCAtMTEzLDcgKzExMSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpw
cm9jZXNzV29ya1Nvb24oKQogICAgIGlmIChtX2NvbnRyb2xsZXItPnRvcExvYWRpbmdGcmFtZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcXVldWUuaXNFbXB0eSgpKSB7CisgICAg
aWYgKCFtX3F1ZXVlLmVtcHR5KCkpIHsKICAgICAgICAgLy8gV2UgZGVsYXkgcHJvY2Vzc2luZyBx
dWV1ZWQgd29yayB0byBhdm9pZCByZWN1cnNpb24gcHJvYmxlbXMuCiAgICAgICAgIG1fY29udHJv
bGxlci0+bV9kZWxlZ2F0ZS0+cG9zdFRhc2sobmV3IFdvcmtRdWV1ZVRhc2sodGhpcykpOwogICAg
IH0gZWxzZSBpZiAoIW1fY29udHJvbGxlci0+bV93YWl0VW50aWxEb25lKQpAQCAtMTIzLDkgKzEy
MSwxMCBAQCB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dvcmtTb29uKCkKIHZv
aWQgVGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpwcm9jZXNzV29yaygpCiB7CiAgICAgLy8gUXVpdCBk
b2luZyB3b3JrIG9uY2UgYSBsb2FkIGlzIGluIHByb2dyZXNzLgotICAgIHdoaWxlICghbV9xdWV1
ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgYm9vbCBzdGFydGVkTG9hZCA9IG1fcXVldWUuZmlyc3Qo
KS0+cnVuKG1fY29udHJvbGxlci0+bV9kZWxlZ2F0ZSwgbV9jb250cm9sbGVyLT5tX3dlYlZpZXcp
OwotICAgICAgICBkZWxldGUgbV9xdWV1ZS50YWtlRmlyc3QoKTsKKyAgICB3aGlsZSAoIW1fcXVl
dWUuZW1wdHkoKSkgeworICAgICAgICBib29sIHN0YXJ0ZWRMb2FkID0gbV9xdWV1ZS5mcm9udCgp
LT5ydW4obV9jb250cm9sbGVyLT5tX2RlbGVnYXRlLCBtX2NvbnRyb2xsZXItPm1fd2ViVmlldyk7
CisgICAgICAgIGRlbGV0ZSBtX3F1ZXVlLmZyb250KCk7CisgICAgICAgIG1fcXVldWUucG9wX2Zy
b250KCk7CiAgICAgICAgIGlmIChzdGFydGVkTG9hZCkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xMzcsOCArMTM2LDEwIEBAIHZvaWQgVGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpwcm9j
ZXNzV29yaygpCiB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cmVzZXQoKQogewogICAgIG1f
ZnJvemVuID0gZmFsc2U7Ci0gICAgd2hpbGUgKCFtX3F1ZXVlLmlzRW1wdHkoKSkKLSAgICAgICAg
ZGVsZXRlIG1fcXVldWUudGFrZUZpcnN0KCk7CisgICAgd2hpbGUgKCFtX3F1ZXVlLmVtcHR5KCkp
IHsKKyAgICAgICAgZGVsZXRlIG1fcXVldWUuZnJvbnQoKTsKKyAgICAgICAgbV9xdWV1ZS5wb3Bf
ZnJvbnQoKTsKKyAgICB9CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjphZGRXb3Jr
KFdvcmtJdGVtKiB3b3JrKQpAQCAtMTQ3LDcgKzE0OCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6V29y
a1F1ZXVlOjphZGRXb3JrKFdvcmtJdGVtKiB3b3JrKQogICAgICAgICBkZWxldGUgd29yazsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3F1ZXVlLmFwcGVuZCh3b3JrKTsKKyAgICBtX3F1
ZXVlLnB1c2hfYmFjayh3b3JrKTsKIH0KIAogCkBAIC0xNTYsOCArMTU3LDggQEAgVGVzdFJ1bm5l
cjo6VGVzdFJ1bm5lcigpCiAgICAgLCBtX3dvcmtRdWV1ZSh0aGlzKQogICAgICwgbV9kZWxlZ2F0
ZSgwKQogICAgICwgbV93ZWJWaWV3KDApCi0gICAgLCBtX2ludGVudENsaWVudChhZG9wdFB0cihu
ZXcgRW1wdHlXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQpKQotICAgICwgbV93ZWJQZXJtaXNzaW9u
cyhhZG9wdFB0cihuZXcgV2ViUGVybWlzc2lvbnMpKQorICAgICwgbV9pbnRlbnRDbGllbnQobmV3
IEVtcHR5V2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50KQorICAgICwgbV93ZWJQZXJtaXNzaW9ucyhu
ZXcgV2ViUGVybWlzc2lvbnMpCiB7CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgbWFwIHRoYXQgYXNz
b2NpYXRlcyBtZXRob2RzIG9mIHRoaXMgY2xhc3Mgd2l0aCB0aGUgbmFtZXMKICAgICAvLyB0aGV5
IHdpbGwgdXNlIHdoZW4gY2FsbGVkIGJ5IEphdmFTY3JpcHQuIFRoZSBhY3R1YWwgYmluZGluZyBv
ZiB0aG9zZQpAQCAtMzY2LDcgKzM2Nyw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cmVzZXQoKQogICAg
IGlmIChtX3dlYlZpZXcpIHsKICAgICAgICAgbV93ZWJWaWV3LT5zZXRab29tTGV2ZWwoZmFsc2Us
IDApOwogICAgICAgICBtX3dlYlZpZXctPnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyh0
cnVlKTsKLSNpZiAhT1MoREFSV0lOKSAmJiAhT1MoV0lORE9XUykgLy8gQWN0dWFsbHksIFRPT0xL
SVRfR1RLCisjaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChXSU4zMikgLy8gQWN0
dWFsbHksIFRPT0xLSVRfR1RLCiAgICAgICAgIC8vIChDb25zdGFudHMgY29waWVkIGJlY2F1c2Ug
d2UgY2FuJ3QgZGVwZW5kIG9uIHRoZSBoZWFkZXIgdGhhdCBkZWZpbmVkCiAgICAgICAgIC8vIHRo
ZW0gZnJvbSB0aGlzIGZpbGUuKQogICAgICAgICBtX3dlYlZpZXctPnNldFNlbGVjdGlvbkNvbG9y
cygweGZmMWU5MGZmLCAweGZmMDAwMDAwLCAweGZmYzhjOGM4LCAweGZmMzIzMjMyKTsKQEAgLTM4
MSw3ICszODIsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBtX3BvbGljeURlbGVn
YXRlU2hvdWxkTm90aWZ5RG9uZSA9IGZhbHNlOwogCiAgICAgV2ViU2VjdXJpdHlQb2xpY3k6OnJl
c2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwotI2lmIE9TKExJTlVYKSB8fCBPUyhBTkRST0lE
KQorI2lmIGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKEFORFJPSUQpCiAgICAgV2ViRm9u
dFJlbmRlcmluZzo6c2V0U3VicGl4ZWxQb3NpdGlvbmluZyhmYWxzZSk7CiAjZW5kaWYKIApAQCAt
NDIwLDcgKzQyMSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cmVzZXQoKQogICAgIG1fc2hvdWxkQmxv
Y2tSZWRpcmVjdHMgPSBmYWxzZTsKICAgICBtX3dpbGxTZW5kUmVxdWVzdFNob3VsZFJldHVybk51
bGwgPSBmYWxzZTsKICAgICBtX3NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9IHRydWU7Ci0jaWYg
T1MoV0lORE9XUykKKyNpZmRlZiBXSU4zMgogICAgIG1fc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNl
RW5hYmxlZCA9IHRydWU7CiAjZWxzZQogICAgIG1fc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5h
YmxlZCA9IGZhbHNlOwpAQCAtNjM2LDcgKzYzNyw3IEBAIFdlYkZyYW1lKiBUZXN0UnVubmVyOjp0
b3BMb2FkaW5nRnJhbWUoKSBjb25zdAogCiB2b2lkIFRlc3RSdW5uZXI6OnBvbGljeURlbGVnYXRl
RG9uZSgpCiB7Ci0gICAgQVNTRVJUKG1fd2FpdFVudGlsRG9uZSk7CisgICAgV0VCS0lUX0FTU0VS
VChtX3dhaXRVbnRpbERvbmUpOwogICAgIG1fZGVsZWdhdGUtPnRlc3RGaW5pc2hlZCgpOwogICAg
IG1fd2FpdFVudGlsRG9uZSA9IGZhbHNlOwogfQpAQCAtMTMzMSw3ICsxMzMyLDcgQEAgdm9pZCBU
ZXN0UnVubmVyOjpmaW5kU3RyaW5nKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBD
cHBWYXJpYW50KiByZXN1bHQKICAgICBXZWJGaW5kT3B0aW9ucyBmaW5kT3B0aW9uczsKICAgICBi
b29sIHdyYXBBcm91bmQgPSBmYWxzZTsKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+PSAyKSB7
Ci0gICAgICAgIFZlY3RvcjxzdGQ6OnN0cmluZz4gb3B0aW9uc0FycmF5ID0gYXJndW1lbnRzWzFd
LnRvU3RyaW5nVmVjdG9yKCk7CisgICAgICAgIHZlY3RvcjxzdHJpbmc+IG9wdGlvbnNBcnJheSA9
IGFyZ3VtZW50c1sxXS50b1N0cmluZ1ZlY3RvcigpOwogICAgICAgICBmaW5kT3B0aW9ucy5tYXRj
aENhc2UgPSB0cnVlOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3B0aW9uc0Fy
cmF5LnNpemUoKTsgKytpKSB7CkBAIC0xNDExLDcgKzE0MTIsNyBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNlbGVjdGlvbkFzTWFya3VwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KgogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFRleHRTdWJwaXhlbFBvc2l0aW9uaW5nKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7Ci0j
aWYgT1MoTElOVVgpIHx8IE9TKEFORFJPSUQpCisjaWYgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRl
ZmluZWQoQU5EUk9JRCkKICAgICAvLyBTaW5jZSBGb250Q29uZmlnIGRvZXNuJ3QgcHJvdmlkZSBh
IHZhcmlhYmxlIHRvIGNvbnRyb2wgc3VicGl4ZWwgcG9zaXRpb25pbmcsIHdlJ2xsIGZhbGwgYmFj
awogICAgIC8vIHRvIHNldHRpbmcgaXQgZ2xvYmFsbHkgZm9yIGFsbCBmb250cy4KICAgICBpZiAo
YXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKQpAQCAtMTY4MCw3
ICsxNjgxLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQKICAgICBlbHNlIGlmIChrZXkgPT0g
IldlYktpdFNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIikKICAgICAgICAgcHJlZnMtPnNo
b3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CiAg
ICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRXZWJBdWRpb0VuYWJsZWQiKQotICAgICAgICBBU1NF
UlQoY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSkpOworICAgICAgICBXRUJLSVRfQVNTRVJUKGNwcFZh
cmlhbnRUb0Jvb2wodmFsdWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgc3RyaW5nIG1lc3NhZ2Uo
IkludmFsaWQgbmFtZSBmb3IgcHJlZmVyZW5jZTogIik7CiAgICAgICAgIG1lc3NhZ2UuYXBwZW5k
KGtleSk7CkBAIC0xODMzLDEwICsxODM0LDEwIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QmFja2lu
Z1NjYWxlRmFjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpCiAg
ICAgZmxvYXQgdmFsdWUgPSBhcmd1bWVudHNbMF0udmFsdWUuZG91YmxlVmFsdWU7CiAgICAgbV9k
ZWxlZ2F0ZS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IodmFsdWUpOwogCi0gICAgT3duQXJyYXlQdHI8
Q3BwVmFyaWFudD4gY2FsbGJhY2tBcmd1bWVudHMgPSBhZG9wdEFycmF5UHRyKG5ldyBDcHBWYXJp
YW50WzFdKTsKLSAgICBjYWxsYmFja0FyZ3VtZW50c1swXS5zZXQoYXJndW1lbnRzWzFdKTsKKyAg
ICBhdXRvX3B0cjxDcHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cyhuZXcgQ3BwVmFyaWFudCgp
KTsKKyAgICBjYWxsYmFja0FyZ3VtZW50cy0+c2V0KGFyZ3VtZW50c1sxXSk7CiAgICAgcmVzdWx0
LT5zZXROdWxsKCk7Ci0gICAgbV9kZWxlZ2F0ZS0+cG9zdFRhc2sobmV3IEludm9rZUNhbGxiYWNr
VGFzayh0aGlzLCBjYWxsYmFja0FyZ3VtZW50cy5yZWxlYXNlKCksIDEpKTsKKyAgICBtX2RlbGVn
YXRlLT5wb3N0VGFzayhuZXcgSW52b2tlQ2FsbGJhY2tUYXNrKHRoaXMsIGNhbGxiYWNrQXJndW1l
bnRzKSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0UE9TSVhMb2NhbGUoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIu
aAppbmRleCAwNDJkNTM1MDkyOTUxYzJjMDA4MTdiMTdkMGJiZTFlZDE1YWNhNWY1Li5iMmIxMzM2
YTdkMzQ2YWRmY2ZjNTUxNTU2NzZiMWZlZDkxMzUzYTM1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCkBA
IC0zOSwxMCArMzksMTEgQEAKICNpbmNsdWRlICJXZWJUYXNrLmgiCiAjaW5jbHVkZSAiV2ViVGVz
dFJ1bm5lci5oIgogI2luY2x1ZGUgIldlYlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlIDxkZXF1
ZT4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgogI2luY2x1
ZGUgPHNldD4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQXJyYXlCdWZmZXJWaWV3OwpAQCAtNzAsMjEgKzcx
LDIxIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRlc3RJc1J1bm5pbmcoYm9vbCk7CiAKICAgICAv
LyBXZWJUZXN0UnVubmVyIGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRE
dW1wQXNUZXh0KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3VsZER1
bXBBc1RleHQoYm9vbCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEdlbmVyYXRl
UGl4ZWxSZXN1bHRzKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3Vs
ZEdlbmVyYXRlUGl4ZWxSZXN1bHRzKGJvb2wpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBz
aG91bGREdW1wQ2hpbGRGcmFtZVNjcm9sbFBvc2l0aW9ucygpIGNvbnN0IE9WRVJSSURFOwotICAg
IHZpcnR1YWwgYm9vbCBzaG91bGREdW1wQ2hpbGRGcmFtZXNBc1RleHQoKSBjb25zdCBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcEFzQXVkaW8oKSBjb25zdCBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIGNvbnN0IFdlYktpdDo6V2ViQXJyYXlCdWZmZXJWaWV3KiBhdWRpb0RhdGEo
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkRHVtcEZyYW1lTG9h
ZENhbGxiYWNrcyhib29sKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFdlYktpdDo6V2ViUGVybWlz
c2lvbkNsaWVudCogd2ViUGVybWlzc2lvbnMoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRHVtcEJhY2tGb3J3YXJkTGlzdCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZp
cnR1YWwgYm9vbCBzaG91bGREdW1wU2VsZWN0aW9uUmVjdCgpIGNvbnN0IE9WRVJSSURFOwotICAg
IHZpcnR1YWwgYm9vbCB0ZXN0UmVwYWludCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwg
Ym9vbCBzd2VlcEhvcml6b250YWxseSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9v
bCBpc1ByaW50aW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1
bXBBc1RleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkRHVtcEFzVGV4dChi
b29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR2VuZXJhdGVQaXhlbFJlc3VsdHMoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkR2VuZXJhdGVQaXhlbFJlc3VsdHMoYm9vbCk7
CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBDaGlsZEZyYW1lU2Nyb2xsUG9zaXRpb25zKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBDaGlsZEZyYW1lc0FzVGV4dCgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wQXNBdWRpbygpIGNvbnN0OworICAgIHZp
cnR1YWwgY29uc3QgV2ViS2l0OjpXZWJBcnJheUJ1ZmZlclZpZXcqIGF1ZGlvRGF0YSgpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2wp
OworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJQZXJtaXNzaW9uQ2xpZW50KiB3ZWJQZXJtaXNzaW9u
cygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wQmFja0ZvcndhcmRMaXN0KCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBTZWxlY3Rpb25SZWN0KCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIHRlc3RSZXBhaW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IHN3ZWVwSG9yaXpvbnRhbGx5KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzUHJpbnRpbmco
KSBjb25zdDsKIAogICAgIC8vIE1ldGhvZHMgdXNlZCBieSBXZWJUZXN0UHJveHlCYXNlLgogICAg
IGJvb2wgc2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSBjb25zdDsKQEAgLTE0MSw3ICsxNDIs
NyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGFkZFdvcmsoV29ya0l0ZW0qKTsKIAogICAgICAg
ICB2b2lkIHNldEZyb3plbihib29sIGZyb3plbikgeyBtX2Zyb3plbiA9IGZyb3plbjsgfQotICAg
ICAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBtX3F1ZXVlLmlzRW1wdHkoKTsgfQorICAgICAg
ICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBtX3F1ZXVlLmVtcHR5KCk7IH0KICAgICAgICAgV2Vi
VGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KIAogICAgIHByaXZh
dGU6CkBAIC0xNTMsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfTsKIAogICAgICAgICBX
ZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwotICAgICAgICBEZXF1ZTxXb3JrSXRlbSo+IG1fcXVldWU7
CisgICAgICAgIHN0ZDo6ZGVxdWU8V29ya0l0ZW0qPiBtX3F1ZXVlOwogICAgICAgICBib29sIG1f
ZnJvemVuOwogICAgICAgICBUZXN0UnVubmVyKiBtX2NvbnRyb2xsZXI7CiAgICAgfTsKQEAgLTY4
MiwxMCArNjgzLDEwIEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJGcmFtZSogbV90b3BMb2Fk
aW5nRnJhbWU7CiAKICAgICAvLyBNb2NrIG9iamVjdCBmb3IgdGVzdGluZyBkZWxpdmVyaW5nIHdl
YiBpbnRlbnRzLgotICAgIE93blB0cjxXZWJLaXQ6OldlYkRlbGl2ZXJlZEludGVudENsaWVudD4g
bV9pbnRlbnRDbGllbnQ7CisgICAgc3RkOjphdXRvX3B0cjxXZWJLaXQ6OldlYkRlbGl2ZXJlZElu
dGVudENsaWVudD4gbV9pbnRlbnRDbGllbnQ7CiAKICAgICAvLyBXZWJQZXJtaXNzaW9uQ2xpZW50
IG1vY2sgb2JqZWN0LgotICAgIE93blB0cjxXZWJQZXJtaXNzaW9ucz4gbV93ZWJQZXJtaXNzaW9u
czsKKyAgICBzdGQ6OmF1dG9fcHRyPFdlYlBlcm1pc3Npb25zPiBtX3dlYlBlcm1pc3Npb25zOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGV4dElucHV0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAppbmRleCAzMjI1
Y2I5MGM0MmE2ZWViYmJhYjU5NDcwNzJlMzJhNGE3YTIwMjgwLi5mNWY5YjJhZTgwOTJhMzc4YzMy
NjUyM2FkZjM3YTE4YWE5NDQwNTUyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0SW5wdXRDb250cm9s
bGVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlRleHRJbnB1dENvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNs
dWRlICJXZWJCaW5kaW5ncy5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0aW9uVW5kZXJsaW5lLmgi
CiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKQEAgLTQwLDkgKzQxLDkgQEAKICNpbmNsdWRlIDxwdWJs
aWMvV2ViU3RyaW5nLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlZlY3Rvci5oPgogI2luY2x1ZGUg
PHN0cmluZz4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5l
ciB7CiAKQEAgLTE0Niw3ICsxNDcsNyBAQCB2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6Om1hcmtl
ZFJhbmdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdAogICAgICAg
ICByZXR1cm47CiAKICAgICBXZWJSYW5nZSByYW5nZSA9IG1haW5GcmFtZS0+bWFya2VkUmFuZ2Uo
KTsKLSAgICBWZWN0b3I8aW50PiBpbnRBcnJheSgyKTsKKyAgICB2ZWN0b3I8aW50PiBpbnRBcnJh
eSgyKTsKICAgICBpbnRBcnJheVswXSA9IHJhbmdlLnN0YXJ0T2Zmc2V0KCk7CiAgICAgaW50QXJy
YXlbMV0gPSByYW5nZS5lbmRPZmZzZXQoKTsKICAgICByZXN1bHQtPnNldChXZWJCaW5kaW5nczo6
bWFrZUludEFycmF5KGludEFycmF5KSk7CkBAIC0xNjEsNyArMTYyLDcgQEAgdm9pZCBUZXh0SW5w
dXRDb250cm9sbGVyOjpzZWxlY3RlZFJhbmdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqIHJlc3UKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViUmFuZ2UgcmFuZ2UgPSBtYWlu
RnJhbWUtPnNlbGVjdGlvblJhbmdlKCk7Ci0gICAgVmVjdG9yPGludD4gaW50QXJyYXkoMik7Cisg
ICAgdmVjdG9yPGludD4gaW50QXJyYXkoMik7CiAgICAgaW50QXJyYXlbMF0gPSByYW5nZS5zdGFy
dE9mZnNldCgpOwogICAgIGludEFycmF5WzFdID0gcmFuZ2UuZW5kT2Zmc2V0KCk7CiAgICAgcmVz
dWx0LT5zZXQoV2ViQmluZGluZ3M6Om1ha2VJbnRBcnJheShpbnRBcnJheSkpOwpAQCAtMTgyLDcg
KzE4Myw3IEBAIHZvaWQgVGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1CiAgICAgaWYgKCFmcmFtZS0+Zmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoYXJndW1lbnRzWzBdLnRvSW50MzIoKSwgYXJndW1lbnRzWzFd
LnRvSW50MzIoKSwgcmVjdCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxpbnQ+IGlu
dEFycmF5KDQpOworICAgIHZlY3RvcjxpbnQ+IGludEFycmF5KDQpOwogICAgIGludEFycmF5WzBd
ID0gcmVjdC54OwogICAgIGludEFycmF5WzFdID0gcmVjdC55OwogICAgIGludEFycmF5WzJdID0g
cmVjdC53aWR0aDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1dlYlByZWZlcmVuY2VzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA5OTMzZmE4Yzc2
NjRlZjE4MGEwZjE3M2JhMjBhY2FmMGM3NDYwNmUzLi4yMzkwOTM1MTg3NjE5MWRkMzdmYmRmZjAx
NzJmNTkxNGRiZmZmYTBiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC00MCw3
ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAogdm9pZCBXZWJQcmVmZXJlbmNl
czo6cmVzZXQoKQogewotI2lmIE9TKE1BQ19PU19YKQorI2lmZGVmIF9fQVBQTEVfXwogICAgIGN1
cnNpdmVGb250RmFtaWx5ID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiQXBwbGUgQ2hhbmNlcnkiKTsK
ICAgICBmYW50YXN5Rm9udEZhbWlseSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIlBhcHlydXMiKTsK
ICAgICBXZWJTdHJpbmcgc2VyaWYgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJUaW1lcyIpOwpAQCAt
MTA2LDcgKzEwNiw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnJlc2V0KCkKICAgICAvLyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsLCB0byBhY2Nlc3MgaHR0cCBzZXJ2ZXIuCiAgICAgYWxs
b3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMgPSB0cnVlOwogCi0jaWYgT1MoREFSV0lOKQor
I2lmZGVmIF9fQVBQTEVfXwogICAgIGVkaXRpbmdCZWhhdmlvciA9IFdlYlNldHRpbmdzOjpFZGl0
aW5nQmVoYXZpb3JNYWM7CiAjZWxzZQogICAgIGVkaXRpbmdCZWhhdmlvciA9IFdlYlNldHRpbmdz
OjpFZGl0aW5nQmVoYXZpb3JXaW47CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwCmluZGV4IDk3NTMxYzgwZGUxNDU0
OWVjMGZhMWMwNTFjYzVkMDgxMGYyYmQ0ZjguLjc3OWY1M2U1OGFlODU0MjIyZWQ4NTZmM2YxNTIw
YzE4NGVhYWJhMDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVk
ZSAiV2ViVGFzay5oIgogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFt
ZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCkBAIC00OCwzNiArNTAsMzEgQEAgV2ViVGFzazo6fldl
YlRhc2soKQogICAgICAgICBtX3Rhc2tMaXN0LT51bnJlZ2lzdGVyVGFzayh0aGlzKTsKIH0KIAot
Y2xhc3MgV2ViVGFza0xpc3Q6OlByaXZhdGUgOiBwdWJsaWMgVmVjdG9yPFdlYlRhc2sqPiB7Ci19
OwotCiBXZWJUYXNrTGlzdDo6V2ViVGFza0xpc3QoKQotICAgIDogbV9wcml2YXRlKG5ldyBQcml2
YXRlKQogewogfQogCiBXZWJUYXNrTGlzdDo6fldlYlRhc2tMaXN0KCkKIHsKICAgICByZXZva2VB
bGwoKTsKLSAgICBkZWxldGUgbV9wcml2YXRlOwogfQogCiB2b2lkIFdlYlRhc2tMaXN0OjpyZWdp
c3RlclRhc2soV2ViVGFzayogdGFzaykKIHsKLSAgICBtX3ByaXZhdGUtPmFwcGVuZCh0YXNrKTsK
KyAgICBtX3Rhc2tzLnB1c2hfYmFjayh0YXNrKTsKIH0KIAogdm9pZCBXZWJUYXNrTGlzdDo6dW5y
ZWdpc3RlclRhc2soV2ViVGFzayogdGFzaykKIHsKLSAgICBzaXplX3QgaW5kZXggPSBtX3ByaXZh
dGUtPmZpbmQodGFzayk7Ci0gICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKQotICAgICAgICBtX3By
aXZhdGUtPnJlbW92ZShpbmRleCk7CisgICAgdmVjdG9yPFdlYlRhc2sqPjo6aXRlcmF0b3IgaXRl
ciA9IGZpbmQobV90YXNrcy5iZWdpbigpLCBtX3Rhc2tzLmVuZCgpLCB0YXNrKTsKKyAgICBpZiAo
aXRlciAhPSBtX3Rhc2tzLmVuZCgpKQorICAgICAgICBtX3Rhc2tzLmVyYXNlKGl0ZXIpOwogfQog
CiB2b2lkIFdlYlRhc2tMaXN0OjpyZXZva2VBbGwoKQogewotICAgIHdoaWxlICghbV9wcml2YXRl
LT5pc0VtcHR5KCkpCi0gICAgICAgICgqbV9wcml2YXRlKVswXS0+Y2FuY2VsKCk7CisgICAgd2hp
bGUgKCFtX3Rhc2tzLmVtcHR5KCkpCisgICAgICAgIG1fdGFza3NbMF0tPmNhbmNlbCgpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKaW5kZXggODkyNjNiZDdiZTAz
OWY2NGNiZmZiOTE0MWFlN2IwNjg4NGExNzdkNy4uN2I1ODI4ZGY5Yjk5ZDY4ZDMzZWE0Njc3Mzll
ZTIxMjNhNTM3NjU3MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcApAQCAt
MzksMTMgKzM5LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV2ViVGVz
dFJ1bm5lciB7CiAKIFdlYlRlc3RJbnRlcmZhY2VzOjpXZWJUZXN0SW50ZXJmYWNlcygpCisgICAg
OiBtX2ludGVyZmFjZXMobmV3IFRlc3RJbnRlcmZhY2VzKCkpCiB7Ci0gICAgbV9pbnRlcmZhY2Vz
ID0gbmV3IFRlc3RJbnRlcmZhY2VzOwogfQogCiBXZWJUZXN0SW50ZXJmYWNlczo6fldlYlRlc3RJ
bnRlcmZhY2VzKCkKIHsKLSAgICBkZWxldGUgbV9pbnRlcmZhY2VzOwogfQogCiB2b2lkIFdlYlRl
c3RJbnRlcmZhY2VzOjpzZXRXZWJWaWV3KFdlYlZpZXcqIHdlYlZpZXcpCkBAIC04NSw3ICs4NCw3
IEBAIFdlYlRlc3RSdW5uZXIqIFdlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0UnVubmVyKCkKIAogVGVz
dEludGVyZmFjZXMqIFdlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0SW50ZXJmYWNlcygpCiB7Ci0gICAg
cmV0dXJuIG1faW50ZXJmYWNlczsKKyAgICByZXR1cm4gbV9pbnRlcmZhY2VzLmdldCgpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUZXN0UHJveHkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAppbmRleCA2NDcwZjBhNDExMjJmOWM5ZmMzNzFk
YWNhYmE1MzkzOTM1YWQyNzU5Li4xMTE0NDFhYTNjMzEzYzMxZTVhZjM4NDBlYmFmZWJmZTA5Zjlm
NDUyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUZXN0UHJveHkuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiRXZlbnRT
ZW5kZXIuaCIKICNpbmNsdWRlICJTcGVsbENoZWNrQ2xpZW50LmgiCisjaW5jbHVkZSAiVGVzdENv
bW1vbi5oIgogI2luY2x1ZGUgIlRlc3RJbnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAiVGVzdFBsdWdp
bi5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXIuaCIKQEAgLTU4LDcgKzU5LDYgQEAKICNpbmNsdWRl
IDxwdWJsaWMvV2ViVVJMRXJyb3IuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMUmVxdWVzdC5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxSZXNwb25zZS5oPgotI2luY2x1ZGUgPHd0Zi9TdHJp
bmdFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CkBAIC0yMTIsNyArMjEyLDcgQEAgc3RyaW5nIHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChj
b25zdCBzdHJpbmcmIHVybCkKIAogICAgIHNpemVfdCBwb3MgPSB1cmwucmZpbmQoJy8nKTsKICAg
ICBpZiAocG9zID09IHN0cmluZzo6bnBvcykgewotI2lmIE9TKFdJTkRPV1MpCisjaWZkZWYgV0lO
MzIKICAgICAgICAgcG9zID0gdXJsLnJmaW5kKCdcXCcpOwogICAgICAgICBpZiAocG9zID09IHN0
cmluZzo6bnBvcykKICAgICAgICAgICAgIHBvcyA9IDA7CkBAIC0yNjcsNyArMjY3LDYgQEAgV2Vi
VGVzdFByb3h5QmFzZTo6V2ViVGVzdFByb3h5QmFzZSgpCiAKIFdlYlRlc3RQcm94eUJhc2U6On5X
ZWJUZXN0UHJveHlCYXNlKCkKIHsKLSAgICBkZWxldGUgbV9zcGVsbGNoZWNrOwogfQogCiB2b2lk
IFdlYlRlc3RQcm94eUJhc2U6OnNldEludGVyZmFjZXMoV2ViVGVzdEludGVyZmFjZXMqIGludGVy
ZmFjZXMpCkBAIC0yOTAsNyArMjg5LDcgQEAgdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpyZXNldCgp
CiAKIFdlYlNwZWxsQ2hlY2tDbGllbnQqIFdlYlRlc3RQcm94eUJhc2U6OnNwZWxsQ2hlY2tDbGll
bnQoKSBjb25zdAogewotICAgIHJldHVybiBtX3NwZWxsY2hlY2s7CisgICAgcmV0dXJuIG1fc3Bl
bGxjaGVjay5nZXQoKTsKIH0KIAogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpzZXRQYWludFJlY3Qo
Y29uc3QgV2ViUmVjdCYgcmVjdCkKQEAgLTc3OCw3ICs3NzcsNyBAQCB2b2lkIFdlYlRlc3RQcm94
eUJhc2U6OmRpZERldGVjdFhTUyhXZWJGcmFtZSosIGNvbnN0IFdlYlVSTCYsIGJvb2wpCiB2b2lk
IFdlYlRlc3RQcm94eUJhc2U6OmFzc2lnbklkZW50aWZpZXJUb1JlcXVlc3QoV2ViRnJhbWUqLCB1
bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBXZWJLaXQ6OldlYlVSTFJlcXVlc3QmIHJlcXVlc3Qp
CiB7CiAgICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcFJl
c291cmNlTG9hZENhbGxiYWNrcygpKSB7Ci0gICAgICAgIEFTU0VSVChtX3Jlc291cmNlSWRlbnRp
Zmllck1hcC5maW5kKGlkZW50aWZpZXIpID09IG1fcmVzb3VyY2VJZGVudGlmaWVyTWFwLmVuZCgp
KTsKKyAgICAgICAgV0VCS0lUX0FTU0VSVChtX3Jlc291cmNlSWRlbnRpZmllck1hcC5maW5kKGlk
ZW50aWZpZXIpID09IG1fcmVzb3VyY2VJZGVudGlmaWVyTWFwLmVuZCgpKTsKICAgICAgICAgbV9y
ZXNvdXJjZUlkZW50aWZpZXJNYXBbaWRlbnRpZmllcl0gPSBkZXNjcmlwdGlvblN1aXRhYmxlRm9y
VGVzdFJlc3VsdChyZXF1ZXN0LnVybCgpLnNwZWMoKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvY29uZmlnLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9jb25maWcuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MzZhMjdlMmU3NjhlYWIxZjYxNWFiNzNmYWE2MzczZGIxYjUyNmM2Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
Y29uZmlnLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgY29uZmlnX2gKKyNkZWZpbmUgY29uZmln
X2gKKworI2RlZmluZSBVU0UoZmVhdHVyZSkgKGRlZmluZWQgV1RGX1VTRV8jI2ZlYXR1cmUgJiYg
V1RGX1VTRV8jI2ZlYXR1cmUpCisjZGVmaW5lIEVOQUJMRShmZWF0dXJlKSAoZGVmaW5lZCBFTkFC
TEVfIyNmZWF0dXJlICYmIEVOQUJMRV8jI2ZlYXR1cmUpCisKKyNlbmRpZiAvLyBjb25maWdfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186819</attachid>
            <date>2013-02-06 04:09:43 -0800</date>
            <delta_ts>2013-02-06 13:22:52 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-108466-20130206130619.patch</filename>
            <type>text/plain</type>
            <size>103613</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTI5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjE0MTI3YTMwN2JhN2I2YmRiNzAyY2NjOWY1ODQ2ZGQ5
NTliOTA2MC4uNTVhYjQwNjNkMzYxNWZkNDg0ZDM5ZWFhMTBhZmZjZGIyNWZkNWRmNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
MSBAQAorMjAxMy0wMi0wNiAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIHR1cm4gVGVzdFJ1bm5lciBsaWJyYXJ5IGludG8gYSBjb21w
b25lbnQgYnVpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwODQ2NgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAg
VG8gYWNoaWV2ZSB0aGlzLCB3ZSBuZWVkIHRvIGRyb3AgYWxsIGRlcGVuZGVuY2llcyBvbiBXVEYu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRl
clRyZWUuZ3lwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
UHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUYXNrLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdENvbW1vbi5oOiBDb3BpZWQgZnJvbSBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5o
LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dl
YlRlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudExpc3Q6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRMaXN0OjpjcmVhdGVSb290KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hy
b21pdW0uaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRMaXN0KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENsYXNzLmNw
cDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6On5DcHBCb3VuZENsYXNz
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6Omludm9rZSk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpnZXRQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpzZXRQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpiaW5kQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZEdldHRlckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6OmJpbmRQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpnZXRBc0NwcFZhcmlhbnQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuaDoK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoQ3BwQm91bmRDbGFzcyk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpiaW5kUHJvcGVydHkpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZEZhbGxiYWNrQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZEZhbGxiYWNrTWV0aG9k
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBW
YXJpYW50LmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcFZhcmlhbnQ6OnRvU3RyaW5n
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcFZhcmlhbnQ6OnRvSW50MzIpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6Q3BwVmFyaWFudDo6dG9Eb3VibGUpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6Q3BwVmFyaWFudDo6dG9Cb29sZWFuKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OkNwcFZhcmlhbnQ6OnRvU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNw
cFZhcmlhbnQ6Omludm9rZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBWYXJpYW50Ojpp
bnZva2VEZWZhdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9DcHBWYXJpYW50Lmg6CisgICAgICAgIChDcHBWYXJpYW50KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHA6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2Vu
ZGVyOjpFdmVudFNlbmRlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
cmVzZXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6Om1vdXNlRG93bik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6bW91c2VVcCk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6bW91c2VNb3ZlVG8pOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OmtleURvd24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6RXZlbnRTZW5kZXI6OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpFdmVudFNlbmRlcjo6bGVhcEZvcndhcmQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZl
bnRTZW5kZXI6OnJlcGxheVNhdmVkRXZlbnRzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Om1h
a2VNZW51SXRlbVN0cmluZ3NGb3IpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI6OmNvbnRleHRDbGljayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
YmVnaW5EcmFnV2l0aEZpbGVzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVy
OjphZGRUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpy
ZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
dXBkYXRlVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
Y2FuY2VsVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
c2VuZEN1cnJlbnRUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2Vu
ZGVyOjpnZXN0dXJlRXZlbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
Ok5hdGl2ZUtleUNvZGVGb3JXaW5kb3dzS2V5Q29kZSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5jcHA6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpNb2NrR3JhbW1hckNoZWNrOjpjaGVja0dyYW1tYXJPZlN0cmluZyk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNrLmg6CisgICAgICAgIChXZWJUZXN0
UnVubmVyKToKKyAgICAgICAgKE1vY2tHcmFtbWFyQ2hlY2spOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcDoKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZCk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpNb2NrU3BlbGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmg6CisgICAgICAgIChNb2NrU3BlbGxD
aGVjayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
U3BlbGxDaGVja0NsaWVudC5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpTcGVsbENoZWNr
Q2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpT
cGVsbENoZWNrQ2xpZW50OjpmaW5pc2hMYXN0VGV4dENoZWNrKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0Q29tbW9uLmg6IENvcGllZCBmcm9t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJ
bnRlcmZhY2VzLmguCisgICAgICAgIChpc0FTQ0lJQWxwaGEpOgorICAgICAgICAoaXNOb3RBU0NJ
SUFscGhhKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0SW50ZXJm
YWNlczo6VGVzdEludGVyZmFjZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChUZXN0SW50ZXJmYWNl
cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFBsdWdpbi5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpUZXN0UGx1
Z2luKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6ZGVzdHJveSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpwYXJzZVByaW1pdGl2ZSk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RQbHVnaW46OmluaXRQcm9ncmFtKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RQbHVnaW46OmluaXRQcmltaXRpdmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBs
dWdpbjo6ZHJhd1ByaW1pdGl2ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2lu
Ojpsb2FkU2hhZGVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmxvYWRQ
cm9ncmFtKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmhhbmRsZURyYWdT
dGF0dXNVcGRhdGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RQbHVnaW4uaDoKKyAgICAgICAgKFRlc3RQbHVnaW4pOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpwcm9jZXNzV29ya1Nv
b24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpwcm9j
ZXNzV29yayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpXb3JrUXVldWU6
OnJlc2V0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6
YWRkV29yayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpUZXN0UnVubmVy
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnBvbGljeURlbGVnYXRlRG9uZSk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldFRleHRTdWJwaXhlbFBvc2l0aW9uaW5nKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpkZWxpdmVyV2ViSW50ZW50KToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpzaW11bGF0ZUxlZ2FjeVdlYk5vdGlm
aWNhdGlvbkNsaWNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldE1v
Y2tTcGVlY2hJbnB1dER1bXBSZWN0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5u
ZXI6Ondhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6VGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6aXNF
bXB0eSk6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0SW5wdXRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRleHRJbnB1dENvbnRyb2xsZXI6Om1hcmtlZFJhbmdlKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRleHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1dlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Oldl
YlByZWZlcmVuY2VzOjpyZXNldCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJU
YXNrTGlzdDo6fldlYlRhc2tMaXN0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRhc2tM
aXN0OjpyZWdpc3RlclRhc2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Q6
OnVucmVnaXN0ZXJUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0Ojpy
ZXZva2VBbGwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRl
c3RJbnRlcmZhY2VzOjpXZWJUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJUZXN0SW50ZXJmYWNlczo6fldlYlRlc3RJbnRlcmZhY2VzKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6On5XZWJUZXN0UHJveHlC
YXNlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnNwZWxsQ2hl
Y2tDbGllbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6cmVn
aXN0ZXJJbnRlbnRTZXJ2aWNlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94
eUJhc2U6OmRpc3BhdGNoSW50ZW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQ
cm94eUJhc2U6OmFzc2lnbklkZW50aWZpZXJUb1JlcXVlc3QpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL2NvbmZpZy5oOiBDb3BpZWQgZnJvbSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJm
YWNlcy5oLgorCiAyMDEzLTAyLTA1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRHVtcFJlbmRlclRyZWUgc2hvdWxkIGJlIGFibGUgdG8gZW5hYmxlIHRoZSB0aHJl
YWRlZCBwYXJzZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCmluZGV4IDVmMzY3ZGY3ODVhY2QxMTkzNzQy
YTA0MDM1Mjc5ODNmN2RjMDIwMDYuLmQxNTc3YTBiMDg5YTY1YzFkODIwZThmMDhhZGE3MWNkZmIz
YzhjNTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5
cC9EdW1wUmVuZGVyVHJlZS5neXAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cApAQCAtODMsMTAgKzgzLDcgQEAKICAgICAgICAg
ICAgICdkZXBlbmRlbmNpZXMnOiBbCiAgICAgICAgICAgICAgICAgJ1Rlc3RSdW5uZXJfcmVzb3Vy
Y2VzJywKICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cDp3ZWJraXQnLAotICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwOndlYmtpdF93dGZfc3VwcG9ydCcsCiAgICAgICAgICAgICAgICAg
Jzwoc291cmNlX2RpcikvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXA6d2Via2l0X3Rlc3Rfc3Vw
cG9ydCcsCi0gICAgICAgICAgICAgICAgJzwoc291cmNlX2RpcikvV1RGL1dURi5neXAvV1RGLmd5
cDp3dGYnLAotICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtpdC9zdXBw
b3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRfc3VwcG9ydCcsCiAgICAgICAgICAgICBdLAog
ICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1
bV9zcmNfZGlyKScsCkBAIC0xMDYsNiArMTAzLDMxIEBACiAgICAgICAgICAgICAgICAgJzxAKHRl
c3RfcnVubmVyX2ZpbGVzKScsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgJ2NvbmRpdGlv
bnMnOiBbCisgICAgICAgICAgICAgICAgWydpbnNpZGVfY2hyb21pdW1fYnVpbGQgPT0gMScsIHsK
KyAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnPChjb21wb25lbnQpJywKKyAgICAgICAgICAg
ICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgICAgICAgICAgICAgICBbJ2NvbXBv
bmVudD09InNoYXJlZF9saWJyYXJ5IicsIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
ZGVmaW5lcyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dFQlRFU1RSVU5O
RVJfRExMJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dFQlRFU1RSVU5ORVJf
SU1QTEVNRU5UQVRJT049MScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOiBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnV0VCVEVTVFJVTk5FUl9ETEwnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdWQ0xpbmtlclRvb2wnOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbJ2luY3JlbWVudGFsX2Nocm9tZV9kbGw9PTEnLCB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2VMaWJyYXJ5RGVwZW5k
ZW5jeUlucHV0cyc6ICd0cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgIFsndG9vbGtpdF91c2VzX2d0ayA9
PSAxJywgewogICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6IFsKICAgICAgICAgICAgICAg
ICAgICAgICAgICdXVEZfVVNFX0dUSz0xJywKQEAgLTE5NSw2ICsyMTcsNyBAQAogICAgICAgICAg
ICAgICAgICdUZXN0UnVubmVyJywKICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cDppbnNwZWN0b3JfcmVzb3VyY2VzJywKICAgICAgICAgICAg
ICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDp3ZWJraXQnLAor
ICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
OndlYmtpdF93dGZfc3VwcG9ydCcsCiAgICAgICAgICAgICAgICAgJzwoc291cmNlX2RpcikvV1RG
L1dURi5neXAvV1RGLmd5cDp3dGYnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19k
aXIpL2Jhc2UvYmFzZS5neXA6dGVzdF9zdXBwb3J0X2Jhc2UnLAogICAgICAgICAgICAgICAgICc8
KGNocm9taXVtX3NyY19kaXIpL2J1aWxkL3RlbXBfZ3lwL2dvb2dsZXVybC5neXA6Z29vZ2xldXJs
JywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IDc3NmE4YTU2
YTZjZmM0NTQxMzkyMDg1YzE5MzkyNTA3OTBlMjFhNjYuLjMyOTZjZmQyMDFlNDI0ZjFjMTE1YmQ2
M2JiNDJmMmM3MWY1OGE4MzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
Z3lwaQpAQCAtNTUsNiArNTUsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIv
cHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5u
ZXIvcHVibGljL1dlYlRlc3RDb21tb24uaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1
bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaCcsCkBAIC03OCw2ICs3OSw3IEBACiAg
ICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suaCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvU3BlbGxDaGVja0NsaWVudC5jcHAn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxsQ2hlY2tDbGllbnQu
aCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdENvbW1vbi5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1RleHRJbnB1dENvbnRyb2xs
ZXIuY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlByZWZlcmVuY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IGI0NzM4MjZiMWE1
YjcyNWI5OWU5MmYyNGIxNTVlOTc3NzcwZmY3N2UuLmExMzhiZmQ3MDBjYzRmNzdmZjUzOGQwM2Ex
YjI2OWRkMjBlZDk2MDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlByZWZlcmVuY2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViUHJlZmVyZW5jZXMuaApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYlRl
c3RDb21tb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJWaWV3OwpAQCAtNDEs
NyArNDIsNyBAQCBjbGFzcyBXZWJWaWV3OwogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAK
LXN0cnVjdCBXZWJQcmVmZXJlbmNlcyB7CitzdHJ1Y3QgV0VCVEVTVFJVTk5FUl9FWFBPUlQgV2Vi
UHJlZmVyZW5jZXMgewogICAgIFdlYktpdDo6V2ViU3RyaW5nIHN0YW5kYXJkRm9udEZhbWlseTsK
ICAgICBXZWJLaXQ6OldlYlN0cmluZyBmaXhlZEZvbnRGYW1pbHk7CiAgICAgV2ViS2l0OjpXZWJT
dHJpbmcgc2VyaWZGb250RmFtaWx5OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oCmluZGV4IGVmNzNlMTc3ZTA0
MTBlNmZlNmRhNjE4YzBlMWQ2ZWI3NDQ0NzMwYTQuLmMzYmMwOWNjMWNlZWFhZjYxZTg1Y2M1Mzcz
Y2NlNjE3OTJiMTQ0NWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRhc2suaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgKQEAgLTMxLDEzICszMSwxNiBAQAog
I2lmbmRlZiBXZWJUYXNrX2gKICNkZWZpbmUgV2ViVGFza19oCiAKKyNpbmNsdWRlICJXZWJUZXN0
Q29tbW9uLmgiCisjaW5jbHVkZSA8dmVjdG9yPgorCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7
CiAKIGNsYXNzIFdlYlRhc2tMaXN0OwogCiAvLyBXZWJUYXNrIHJlcHJlc2VudHMgYSB0YXNrIHdo
aWNoIGNhbiBydW4gYnkgV2ViVGVzdERlbGVnYXRlOjpwb3N0VGFzaygpIG9yCiAvLyBXZWJUZXN0
RGVsZWdhdGU6OnBvc3REZWxheWVkVGFzaygpLgotY2xhc3MgV2ViVGFzayB7CitjbGFzcyBXRUJU
RVNUUlVOTkVSX0VYUE9SVCBXZWJUYXNrIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJUYXNr
KFdlYlRhc2tMaXN0Kik7CiAgICAgdmlydHVhbCB+V2ViVGFzaygpOwpAQCAtNTEsNyArNTQsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgV2ViVGFza0xpc3QqIG1fdGFza0xpc3Q7CiB9OwogCi1jbGFzcyBX
ZWJUYXNrTGlzdCB7CitjbGFzcyBXRUJURVNUUlVOTkVSX0VYUE9SVCBXZWJUYXNrTGlzdCB7CiBw
dWJsaWM6CiAgICAgV2ViVGFza0xpc3QoKTsKICAgICB+V2ViVGFza0xpc3QoKTsKQEAgLTYwLDgg
KzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmV2b2tlQWxsKCk7CiAKIHByaXZhdGU6Ci0gICAg
Y2xhc3MgUHJpdmF0ZTsKLSAgICBQcml2YXRlKiBtX3ByaXZhdGU7CisgICAgc3RkOjp2ZWN0b3I8
V2ViVGFzayo+IG1fdGFza3M7CiB9OwogCiAvLyBBIHRhc2sgY29udGFpbmluZyBhbiBvYmplY3Qg
cG9pbnRlciBvZiBjbGFzcyBULiBEZXJpdmVkIGNsYXNzZXMgc2hvdWxkCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0Q29t
bW9uLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0Q29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2FiZTc5N2JmNjllZGMyYjFlMjJjZTZmY2MyOTU1
ODUxZTg1YjcxZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RDb21tb24uaApAQCAtMCwwICsxLDU4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJUZXN0Q29tbW9uX2gKKyNkZWZpbmUgV2ViVGVzdENvbW1vbl9oCisKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLyBEZWZhdWx0IGNvbmZpZ3VyYXRpb24KKworI2lmICFkZWZpbmVk
KFdFQlRFU1RSVU5ORVJfSU1QTEVNRU5UQVRJT04pCisjZGVmaW5lIFdFQlRFU1RSVU5ORVJfSU1Q
TEVNRU5UQVRJT04gMAorI2VuZGlmCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBFeHBv
cnRlZCBzeW1ib2xzIG5lZWQgdG8gYmUgYW5ub3RhdGVkIHdpdGggV0VCVEVTVFJVTk5FUl9FWFBP
UlQKKworI2lmIGRlZmluZWQoV0VCVEVTVFJVTk5FUl9ETEwpCisjaWYgZGVmaW5lZChXSU4zMikK
KyNpZiBXRUJURVNUUlVOTkVSX0lNUExFTUVOVEFUSU9OCisjZGVmaW5lIFdFQlRFU1RSVU5ORVJf
RVhQT1JUIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorI2Vsc2UKKyNkZWZpbmUgV0VCVEVTVFJVTk5F
Ul9FWFBPUlQgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZW5kaWYKKyNlbHNlCisjZGVmaW5lIFdF
QlRFU1RSVU5ORVJfRVhQT1JUIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkp
CisjZW5kaWYKKyNlbHNlCisjZGVmaW5lIFdFQlRFU1RSVU5ORVJfRVhQT1JUCisjZW5kaWYKKwor
I2VuZGlmIC8vIFdlYlRlc3RDb21tb25faApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZh
Y2VzLmgKaW5kZXggMmNjZDYxZTI1YzEwYmE0NzIwODYxNTIyMDk2MzY1NmU5ODg2ZWRiOS4uNzNk
NzlkYzJjZGRlMGYyZWI5OWU3OTI2YjFkOGZiZjFkMWFmMjdjZSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFj
ZXMuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0SW50ZXJmYWNlcy5oCkBAIC0zMSw2ICszMSw5IEBACiAjaWZuZGVmIFdlYlRlc3RJ
bnRlcmZhY2VzX2gKICNkZWZpbmUgV2ViVGVzdEludGVyZmFjZXNfaAogCisjaW5jbHVkZSAiV2Vi
VGVzdENvbW1vbi5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlZpZXc7CkBAIC00Miw3ICs0NSw3IEBAIGNsYXNzIFRl
c3RJbnRlcmZhY2VzOwogY2xhc3MgV2ViVGVzdERlbGVnYXRlOwogY2xhc3MgV2ViVGVzdFJ1bm5l
cjsKIAotY2xhc3MgV2ViVGVzdEludGVyZmFjZXMgeworY2xhc3MgV0VCVEVTVFJVTk5FUl9FWFBP
UlQgV2ViVGVzdEludGVyZmFjZXMgewogcHVibGljOgogICAgIFdlYlRlc3RJbnRlcmZhY2VzKCk7
CiAgICAgfldlYlRlc3RJbnRlcmZhY2VzKCk7CkBAIC02MSw3ICs2NCw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiBwcml2YXRlOgotICAgIFRlc3RJbnRlcmZhY2VzKiBtX2ludGVyZmFjZXM7CisgICAg
c3RkOjphdXRvX3B0cjxUZXN0SW50ZXJmYWNlcz4gbV9pbnRlcmZhY2VzOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGVzdFByb3h5LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3B1YmxpYy9XZWJUZXN0UHJveHkuaAppbmRleCA0MjkwOTY5YmRkN2E2ODY3YzYwM2VmYTg5NDc1
YzA1ZDdmNDBmYzVmLi4xMDBkMjg3ZGJlMjZkNzgyOGJkYjRkNTQ1YTEyZDFiNjVlYmQyZGNkIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0UHJveHkuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJveHkuaApAQCAtNDIsNyArNDIsOSBAQAogI2luY2x1ZGUg
IldlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRBZmZpbml0eS5oIgogI2luY2x1ZGUgIldlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dERpcmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlRlc3RD
b21tb24uaCIKICNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0
cmluZz4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03OSw3ICs4MSw3IEBAIGNsYXNzIFdlYlRl
c3REZWxlZ2F0ZTsKIGNsYXNzIFdlYlRlc3RJbnRlcmZhY2VzOwogY2xhc3MgV2ViVGVzdFJ1bm5l
cjsKIAotY2xhc3MgV2ViVGVzdFByb3h5QmFzZSB7CitjbGFzcyBXRUJURVNUUlVOTkVSX0VYUE9S
VCBXZWJUZXN0UHJveHlCYXNlIHsKIHB1YmxpYzoKICAgICB2b2lkIHNldEludGVyZmFjZXMoV2Vi
VGVzdEludGVyZmFjZXMqKTsKICAgICB2b2lkIHNldERlbGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSop
OwpAQCAtMTY1LDcgKzE2Nyw3IEBAIHByaXZhdGU6CiAgICAgVGVzdEludGVyZmFjZXMqIG1fdGVz
dEludGVyZmFjZXM7CiAgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwogCi0gICAgU3Bl
bGxDaGVja0NsaWVudCogbV9zcGVsbGNoZWNrOworICAgIHN0ZDo6YXV0b19wdHI8U3BlbGxDaGVj
a0NsaWVudD4gbV9zcGVsbGNoZWNrOwogCiAgICAgV2ViS2l0OjpXZWJSZWN0IG1fcGFpbnRSZWN0
OwogICAgIHN0ZDo6bWFwPHVuc2lnbmVkLCBzdGQ6OnN0cmluZz4gbV9yZXNvdXJjZUlkZW50aWZp
ZXJNYXA7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENo
cm9taXVtLmNwcAppbmRleCAwNjNkZGJiYWRmYmFiNjYzMzg1NTk5Yjg4MmM3ZDBlNGM1NThhMmQy
Li42ZGNjNDA2MDYzZjY5MjE0YjY3NjIyMzQzMTYxMWU2MTdmZGM3MmM5IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Q2hyb21pdW0uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHAKQEAgLTMx
LDEzICszMSwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnRDaHJvbWl1bS5oIgogCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1
ZGUgIldlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJS
ZWN0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTM2OCw3ICszNjcsNyBAQCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IFdlYkFjY2Vz
c2liaWxpdHlPYmplY3QmIG9iagogICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCiB7CiAKLSAgICBB
U1NFUlQoZmFjdG9yeSk7CisgICAgV0VCS0lUX0FTU0VSVChmYWN0b3J5KTsKIAogICAgIC8vCiAg
ICAgLy8gUHJvcGVydGllcwpAQCAtMTAyNSwxNCArMTAyNCwxNCBAQCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50KiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TGlzdDo6Z2V0T3JDcmVhdGUoY29uc3QgV2Vi
QWNjZXNzaQogICAgIH0KIAogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQgPSBu
ZXcgQWNjZXNzaWJpbGl0eVVJRWxlbWVudChvYmplY3QsIHRoaXMpOwotICAgIG1fZWxlbWVudHMu
YXBwZW5kKGVsZW1lbnQpOworICAgIG1fZWxlbWVudHMucHVzaF9iYWNrKGVsZW1lbnQpOwogICAg
IHJldHVybiBlbGVtZW50OwogfQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50TGlzdDo6Y3JlYXRlUm9vdChjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
JiBvYmplY3QpCiB7CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCA9IG5ldyBS
b290QWNjZXNzaWJpbGl0eVVJRWxlbWVudChvYmplY3QsIHRoaXMpOwotICAgIG1fZWxlbWVudHMu
YXBwZW5kKGVsZW1lbnQpOworICAgIG1fZWxlbWVudHMucHVzaF9iYWNrKGVsZW1lbnQpOwogICAg
IHJldHVybiBlbGVtZW50OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRDaHJvbWl1bS5oCmluZGV4IDM5NmFhNzA4MGE5NWM4ODUyMWE2OTAxZGMyNjE5
OTkwYTEyNDcwMWEuLmM2Y2IxYTIzNTZkYTA3MGIxYTJlMTg0ZmE0MGVmMjg4OWFjNzkwOTAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5o
CkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiQ3BwQm91bmRDbGFzcy5oIgogI2luY2x1ZGUg
IldlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKQEAgLTE2OCw3ICsx
NjcsNyBAQCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogY3JlYXRlUm9vdChj
b25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmKTsKIAogcHJpdmF0ZToKLSAgICB0
eXBlZGVmIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kj4gRWxlbWVudExpc3Q7CisgICAg
dHlwZWRlZiBzdGQ6OnZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kj4gRWxlbWVudExpc3Q7
CiAgICAgRWxlbWVudExpc3QgbV9lbGVtZW50czsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFz
cy5jcHAKaW5kZXggMDM1YWNkZWQ3OGQ2OGU4NzU3MGRhMDE1NWZmNjUyZDZhOTU5Y2MwYS4uNDll
NjE0OTczYjcxOTJjYWRjOTEyZGQ4NmVkN2Q4ODdjZmFhZDBlZCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91
bmRDbGFzcy5jcHAKQEAgLTQyLDExICs0MiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKIAorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNs
dWRlICJXZWJCaW5kaW5ncy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSA8bWVt
b3J5PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKIGNs
YXNzIEdldHRlclByb3BlcnR5Q2FsbGJhY2sgOiBwdWJsaWMgQ3BwQm91bmRDbGFzczo6UHJvcGVy
dHlDYWxsYmFjayB7CiBwdWJsaWM6Ci0gICAgR2V0dGVyUHJvcGVydHlDYWxsYmFjayhQYXNzT3du
UHRyPENwcEJvdW5kQ2xhc3M6OkdldHRlckNhbGxiYWNrPiBjYWxsYmFjaykKKyAgICBHZXR0ZXJQ
cm9wZXJ0eUNhbGxiYWNrKGF1dG9fcHRyPENwcEJvdW5kQ2xhc3M6OkdldHRlckNhbGxiYWNrPiBj
YWxsYmFjaykKICAgICAgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgIHsKICAgICB9CkBA
IC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWUoY29uc3Qg
Q3BwVmFyaWFudCYgdmFsdWUpIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6Ci0gICAgT3du
UHRyPENwcEJvdW5kQ2xhc3M6OkdldHRlckNhbGxiYWNrPiBtX2NhbGxiYWNrOworICAgIGF1dG9f
cHRyPENwcEJvdW5kQ2xhc3M6OkdldHRlckNhbGxiYWNrPiBtX2NhbGxiYWNrOwogfTsKIAogfQpA
QCAtMjA5LDEwICsyMDksMTAgQEAgYm9vbCBDcHBOUE9iamVjdDo6c2V0UHJvcGVydHkoTlBPYmpl
Y3QqIG5wT2JqLCBOUElkZW50aWZpZXIgaWRlbnQsIGNvbnN0IE5QVmFyaWEKIENwcEJvdW5kQ2xh
c3M6On5DcHBCb3VuZENsYXNzKCkKIHsKICAgICBmb3IgKE1ldGhvZExpc3Q6Oml0ZXJhdG9yIGkg
PSBtX21ldGhvZHMuYmVnaW4oKTsgaSAhPSBtX21ldGhvZHMuZW5kKCk7ICsraSkKLSAgICAgICAg
ZGVsZXRlIGktPnZhbHVlOworICAgICAgICBkZWxldGUgaS0+c2Vjb25kOwogCiAgICAgZm9yIChQ
cm9wZXJ0eUxpc3Q6Oml0ZXJhdG9yIGkgPSBtX3Byb3BlcnRpZXMuYmVnaW4oKTsgaSAhPSBtX3By
b3BlcnRpZXMuZW5kKCk7ICsraSkKLSAgICAgICAgZGVsZXRlIGktPnZhbHVlOworICAgICAgICBk
ZWxldGUgaS0+c2Vjb25kOwogCiAgICAgLy8gVW5yZWdpc3RlciBvdXJzZWx2ZXMgaWYgd2Ugd2Vy
ZSBib3VuZCB0byBhIGZyYW1lLgogICAgIGlmIChtX2JvdW5kVG9GcmFtZSkKQEAgLTI0Myw3ICsy
NDMsNyBAQCBib29sIENwcEJvdW5kQ2xhc3M6Omludm9rZShOUElkZW50aWZpZXIgaWRlbnQsCiAg
ICAgICAgIH0KICAgICAgICAgY2FsbGJhY2sgPSBtX2ZhbGxiYWNrQ2FsbGJhY2suZ2V0KCk7CiAg
ICAgfSBlbHNlCi0gICAgICAgIGNhbGxiYWNrID0gKCptZXRob2QpLnZhbHVlOworICAgICAgICBj
YWxsYmFjayA9ICgqbWV0aG9kKS5zZWNvbmQ7CiAKICAgICAvLyBCdWlsZCBhIENwcEFyZ3VtZW50
TGlzdCBhcmd1bWVudCB2ZWN0b3IgZnJvbSB0aGUgTlBWYXJpYW50cyBjb21pbmcgaW4uCiAgICAg
Q3BwQXJndW1lbnRMaXN0IGNwcEFyZ3VtZW50cyhhcmd1bWVudENvdW50KTsKQEAgLTI2Niw3ICsy
NjYsNyBAQCBib29sIENwcEJvdW5kQ2xhc3M6OmdldFByb3BlcnR5KE5QSWRlbnRpZmllciBpZGVu
dCwgTlBWYXJpYW50KiByZXN1bHQpIGNvbnN0CiAgICAgfQogCiAgICAgQ3BwVmFyaWFudCBjcHBW
YWx1ZTsKLSAgICBpZiAoIWNhbGxiYWNrLT52YWx1ZS0+Z2V0VmFsdWUoJmNwcFZhbHVlKSkKKyAg
ICBpZiAoIWNhbGxiYWNrLT5zZWNvbmQtPmdldFZhbHVlKCZjcHBWYWx1ZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBjcHBWYWx1ZS5jb3B5VG9OUFZhcmlhbnQocmVzdWx0KTsKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTI4MCw3ICsyODAsNyBAQCBib29sIENwcEJvdW5kQ2xhc3M6OnNldFBy
b3BlcnR5KE5QSWRlbnRpZmllciBpZGVudCwgY29uc3QgTlBWYXJpYW50KiB2YWx1ZSkKIAogICAg
IENwcFZhcmlhbnQgY3BwVmFsdWU7CiAgICAgY3BwVmFsdWUuc2V0KCp2YWx1ZSk7Ci0gICAgcmV0
dXJuICgqY2FsbGJhY2spLnZhbHVlLT5zZXRWYWx1ZShjcHBWYWx1ZSk7CisgICAgcmV0dXJuICgq
Y2FsbGJhY2spLnNlY29uZC0+c2V0VmFsdWUoY3BwVmFsdWUpOwogfQogCiB2b2lkIENwcEJvdW5k
Q2xhc3M6OmJpbmRDYWxsYmFjayhjb25zdCBzdHJpbmcmIG5hbWUsIENhbGxiYWNrKiBjYWxsYmFj
aykKQEAgLTI4OCwxOSArMjg4LDE5IEBAIHZvaWQgQ3BwQm91bmRDbGFzczo6YmluZENhbGxiYWNr
KGNvbnN0IHN0cmluZyYgbmFtZSwgQ2FsbGJhY2sqIGNhbGxiYWNrKQogICAgIE5QSWRlbnRpZmll
ciBpZGVudCA9IFdlYkJpbmRpbmdzOjpnZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUuY19zdHIoKSk7
CiAgICAgTWV0aG9kTGlzdDo6aXRlcmF0b3Igb2xkQ2FsbGJhY2sgPSBtX21ldGhvZHMuZmluZChp
ZGVudCk7CiAgICAgaWYgKG9sZENhbGxiYWNrICE9IG1fbWV0aG9kcy5lbmQoKSkgewotICAgICAg
ICBkZWxldGUgb2xkQ2FsbGJhY2stPnZhbHVlOworICAgICAgICBkZWxldGUgb2xkQ2FsbGJhY2st
PnNlY29uZDsKICAgICAgICAgaWYgKCFjYWxsYmFjaykgewotICAgICAgICAgICAgbV9tZXRob2Rz
LnJlbW92ZShvbGRDYWxsYmFjayk7CisgICAgICAgICAgICBtX21ldGhvZHMuZXJhc2Uob2xkQ2Fs
bGJhY2spOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9t
ZXRob2RzLnNldChpZGVudCwgY2FsbGJhY2spOworICAgIG1fbWV0aG9kc1tpZGVudF0gPSBjYWxs
YmFjazsKIH0KIAotdm9pZCBDcHBCb3VuZENsYXNzOjpiaW5kR2V0dGVyQ2FsbGJhY2soY29uc3Qg
c3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEdldHRlckNhbGxiYWNrPiBjYWxsYmFjaykKK3ZvaWQg
Q3BwQm91bmRDbGFzczo6YmluZEdldHRlckNhbGxiYWNrKGNvbnN0IHN0cmluZyYgbmFtZSwgYXV0
b19wdHI8R2V0dGVyQ2FsbGJhY2s+IGNhbGxiYWNrKQogewotICAgIFByb3BlcnR5Q2FsbGJhY2sq
IHByb3BlcnR5Q2FsbGJhY2sgPSBjYWxsYmFjayA/IG5ldyBHZXR0ZXJQcm9wZXJ0eUNhbGxiYWNr
KGNhbGxiYWNrKSA6IDA7CisgICAgUHJvcGVydHlDYWxsYmFjayogcHJvcGVydHlDYWxsYmFjayA9
IGNhbGxiYWNrLmdldCgpID8gbmV3IEdldHRlclByb3BlcnR5Q2FsbGJhY2soY2FsbGJhY2spIDog
MDsKICAgICBiaW5kUHJvcGVydHkobmFtZSwgcHJvcGVydHlDYWxsYmFjayk7CiB9CiAKQEAgLTMx
NSwxNCArMzE1LDE0IEBAIHZvaWQgQ3BwQm91bmRDbGFzczo6YmluZFByb3BlcnR5KGNvbnN0IHN0
cmluZyYgbmFtZSwgUHJvcGVydHlDYWxsYmFjayogY2FsbGJhY2spCiAgICAgTlBJZGVudGlmaWVy
IGlkZW50ID0gV2ViQmluZGluZ3M6OmdldFN0cmluZ0lkZW50aWZpZXIobmFtZS5jX3N0cigpKTsK
ICAgICBQcm9wZXJ0eUxpc3Q6Oml0ZXJhdG9yIG9sZENhbGxiYWNrID0gbV9wcm9wZXJ0aWVzLmZp
bmQoaWRlbnQpOwogICAgIGlmIChvbGRDYWxsYmFjayAhPSBtX3Byb3BlcnRpZXMuZW5kKCkpIHsK
LSAgICAgICAgZGVsZXRlIG9sZENhbGxiYWNrLT52YWx1ZTsKKyAgICAgICAgZGVsZXRlIG9sZENh
bGxiYWNrLT5zZWNvbmQ7CiAgICAgICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgICAgIG1f
cHJvcGVydGllcy5yZW1vdmUob2xkQ2FsbGJhY2spOworICAgICAgICAgICAgbV9wcm9wZXJ0aWVz
LmVyYXNlKG9sZENhbGxiYWNrKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KIAotICAgIG1fcHJvcGVydGllcy5zZXQoaWRlbnQsIGNhbGxiYWNrKTsKKyAgICBtX3Byb3Bl
cnRpZXNbaWRlbnRdID0gY2FsbGJhY2s7CiB9CiAKIGJvb2wgQ3BwQm91bmRDbGFzczo6aXNNZXRo
b2RSZWdpc3RlcmVkKGNvbnN0IHN0cmluZyYgbmFtZSkgY29uc3QKQEAgLTM0NCw3ICszNDQsNyBA
QCBDcHBWYXJpYW50KiBDcHBCb3VuZENsYXNzOjpnZXRBc0NwcFZhcmlhbnQoKQogICAgICAgICBt
X3NlbGZWYXJpYW50LnNldChucE9iaik7CiAgICAgICAgIFdlYkJpbmRpbmdzOjpyZWxlYXNlT2Jq
ZWN0KG5wT2JqKTsgLy8gQ3BwVmFyaWFudCB0YWtlcyB0aGUgcmVmZXJlbmNlLgogICAgIH0KLSAg
ICBBU1NFUlQobV9zZWxmVmFyaWFudC5pc09iamVjdCgpKTsKKyAgICBXRUJLSVRfQVNTRVJUKG1f
c2VsZlZhcmlhbnQuaXNPYmplY3QoKSk7CiAgICAgcmV0dXJuICZtX3NlbGZWYXJpYW50OwogfQog
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9DcHBCb3VuZENsYXNzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9DcHBCb3VuZENsYXNzLmgKaW5kZXggNTRhZjZkZGNlMWU2ODAyZmYwMGQ2OGFhNzJi
NWYyMDI5ZTQ3NTNjNi4uOTUyYTQxYzUzNDBlZmRmMDBiYzc2Yjc4MmI0ZDQ2ZGFjY2Y4ZDFkYiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
Q3BwQm91bmRDbGFzcy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuaApAQCAtNDQsMTEgKzQ0LDkgQEAKICNkZWZpbmUgQ3Bw
Qm91bmRDbGFzc19oCiAKICNpbmNsdWRlICJDcHBWYXJpYW50LmgiCi0jaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2ZWN0b3I+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7CkBAIC01NywxMiArNTUsMTEg
QEAgY2xhc3MgV2ViU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKLXR5cGVk
ZWYgVmVjdG9yPENwcFZhcmlhbnQ+IENwcEFyZ3VtZW50TGlzdDsKK3R5cGVkZWYgc3RkOjp2ZWN0
b3I8Q3BwVmFyaWFudD4gQ3BwQXJndW1lbnRMaXN0OwogCiAvLyBDcHBCb3VuZENsYXNzIGxldHMg
eW91IG1hcCBKYXZhc2NyaXB0IG1ldGhvZCBjYWxscyBhbmQgcHJvcGVydHkgYWNjZXNzZXMKIC8v
IGRpcmVjdGx5IHRvIEMrKyBtZXRob2QgY2FsbHMgYW5kIENwcFZhcmlhbnQqIHZhcmlhYmxlIGFj
Y2Vzcy4KIGNsYXNzIENwcEJvdW5kQ2xhc3MgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENw
cEJvdW5kQ2xhc3MpOwogcHVibGljOgogICAgIGNsYXNzIFByb3BlcnR5Q2FsbGJhY2sgewogICAg
IHB1YmxpYzoKQEAgLTE2NCw3ICsxNjEsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBCaW5kIEph
dmFzY3JpcHQgcHJvcGVydHkgfG5hbWV8IHRvIHRoZSBDKysgZ2V0dGVyIGNhbGxiYWNrIHxjYWxs
YmFja3wuCiAgICAgLy8gVGhpcyBjYW4gYmUgdXNlZCB0byBjcmVhdGUgcmVhZC1vbmx5IHByb3Bl
cnRpZXMuCi0gICAgdm9pZCBiaW5kR2V0dGVyQ2FsbGJhY2soY29uc3Qgc3RkOjpzdHJpbmcmLCBQ
YXNzT3duUHRyPEdldHRlckNhbGxiYWNrPik7CisgICAgdm9pZCBiaW5kR2V0dGVyQ2FsbGJhY2so
Y29uc3Qgc3RkOjpzdHJpbmcmLCBzdGQ6OmF1dG9fcHRyPEdldHRlckNhbGxiYWNrPik7CiAKICAg
ICAvLyBBIHdyYXBwZXIgZm9yIEJpbmRHZXR0ZXJDYWxsYmFjaywgdG8gc2ltcGxpZnkgdGhlIGNv
bW1vbiBjYXNlIG9mIGJpbmRpbmcgYQogICAgIC8vIHByb3BlcnR5IG9uIHRoZSBjdXJyZW50IG9i
amVjdC4gVGhvdWdoIG5vdCB2ZXJpZmllZCBoZXJlLCB0aGUgbWV0aG9kIHBhcmFtZXRlcgpAQCAt
MTcyLDggKzE2OSw4IEBAIHByb3RlY3RlZDoKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIHZv
aWQgYmluZFByb3BlcnR5KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCB2b2lkIChUOjoqbWV0aG9k
KShDcHBWYXJpYW50KikpCiAgICAgewotICAgICAgICBPd25QdHI8R2V0dGVyQ2FsbGJhY2s+IGNh
bGxiYWNrID0gYWRvcHRQdHIobmV3IE1lbWJlckdldHRlckNhbGxiYWNrPFQ+KHN0YXRpY19jYXN0
PFQqPih0aGlzKSwgbWV0aG9kKSk7Ci0gICAgICAgIGJpbmRHZXR0ZXJDYWxsYmFjayhuYW1lLCBj
YWxsYmFjay5yZWxlYXNlKCkpOworICAgICAgICBzdGQ6OmF1dG9fcHRyPEdldHRlckNhbGxiYWNr
PiBjYWxsYmFjayhuZXcgTWVtYmVyR2V0dGVyQ2FsbGJhY2s8VD4oc3RhdGljX2Nhc3Q8VCo+KHRo
aXMpLCBtZXRob2QpKTsKKyAgICAgICAgYmluZEdldHRlckNhbGxiYWNrKG5hbWUsIGNhbGxiYWNr
KTsKICAgICB9CiAKICAgICAvLyBCaW5kIHRoZSBKYXZhc2NyaXB0IHByb3BlcnR5IGNhbGxlZCB8
bmFtZXwgdG8gYSBDcHBWYXJpYW50LgpAQCAtMTkzLDcgKzE5MCw3IEBAIHByb3RlY3RlZDoKICAg
ICAvLyBhcyBpdCBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvcnMgKGEgSmF2YVNjcmlwdCBv
YmplY3Qgd2l0aCBhCiAgICAgLy8gZmFsbGJhY2sgYWx3YXlzIHJldHVybnMgdHJ1ZSB3aGVuIGNo
ZWNrZWQgZm9yIGEgbWV0aG9kJ3MKICAgICAvLyBleGlzdGVuY2UpLgotICAgIHZvaWQgYmluZEZh
bGxiYWNrQ2FsbGJhY2soUGFzc093blB0cjxDYWxsYmFjaz4gZmFsbGJhY2tDYWxsYmFjaykKKyAg
ICB2b2lkIGJpbmRGYWxsYmFja0NhbGxiYWNrKHN0ZDo6YXV0b19wdHI8Q2FsbGJhY2s+IGZhbGxi
YWNrQ2FsbGJhY2spCiAgICAgewogICAgICAgICBtX2ZhbGxiYWNrQ2FsbGJhY2sgPSBmYWxsYmFj
a0NhbGxiYWNrOwogICAgIH0KQEAgLTIwNSwyNSArMjAyLDI0IEBAIHByb3RlY3RlZDoKICAgICB0
ZW1wbGF0ZTxjbGFzcyBUPgogICAgIHZvaWQgYmluZEZhbGxiYWNrTWV0aG9kKHZvaWQgKFQ6Oipt
ZXRob2QpKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKSkKICAgICB7Ci0gICAg
ICAgIGlmIChtZXRob2QpIHsKLSAgICAgICAgICAgIE93blB0cjxDYWxsYmFjaz4gY2FsbGJhY2sg
PSBhZG9wdFB0cihuZXcgTWVtYmVyQ2FsbGJhY2s8VD4oc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLCBt
ZXRob2QpKTsKLSAgICAgICAgICAgIGJpbmRGYWxsYmFja0NhbGxiYWNrKGNhbGxiYWNrLnJlbGVh
c2UoKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYmluZEZhbGxiYWNrQ2FsbGJhY2so
bnVsbHB0cik7CisgICAgICAgIGlmIChtZXRob2QpCisgICAgICAgICAgICBiaW5kRmFsbGJhY2tD
YWxsYmFjayhzdGQ6OmF1dG9fcHRyPENhbGxiYWNrPihuZXcgTWVtYmVyQ2FsbGJhY2s8VD4oc3Rh
dGljX2Nhc3Q8VCo+KHRoaXMpLCBtZXRob2QpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGJpbmRGYWxsYmFja0NhbGxiYWNrKHN0ZDo6YXV0b19wdHI8Q2FsbGJhY2s+KCkpOwogICAgIH0K
IAogICAgIC8vIFNvbWUgZmllbGRzIGFyZSBwcm90ZWN0ZWQgYmVjYXVzZSBzb21lIHRlc3RzIGRl
cGVuZCBvbiBhY2Nlc3NpbmcgdGhlbSwKICAgICAvLyBidXQgb3RoZXJ3aXNlIHRoZXkgc2hvdWxk
IGJlIGNvbnNpZGVyZWQgcHJpdmF0ZS4KIAotICAgIHR5cGVkZWYgSGFzaE1hcDxOUElkZW50aWZp
ZXIsIFByb3BlcnR5Q2FsbGJhY2sqPiBQcm9wZXJ0eUxpc3Q7Ci0gICAgdHlwZWRlZiBIYXNoTWFw
PE5QSWRlbnRpZmllciwgQ2FsbGJhY2sqPiBNZXRob2RMaXN0OworICAgIHR5cGVkZWYgc3RkOjpt
YXA8TlBJZGVudGlmaWVyLCBQcm9wZXJ0eUNhbGxiYWNrKj4gUHJvcGVydHlMaXN0OworICAgIHR5
cGVkZWYgc3RkOjptYXA8TlBJZGVudGlmaWVyLCBDYWxsYmFjayo+IE1ldGhvZExpc3Q7CiAgICAg
Ly8gVGhlc2UgbWFwcyBhc3NvY2lhdGUgbmFtZXMgd2l0aCBwcm9wZXJ0eSBhbmQgbWV0aG9kIHBv
aW50ZXJzIHRvIGJlCiAgICAgLy8gZXhwb3NlZCB0byBKYXZhU2NyaXB0LgogICAgIFByb3BlcnR5
TGlzdCBtX3Byb3BlcnRpZXM7CiAgICAgTWV0aG9kTGlzdCBtX21ldGhvZHM7CiAKICAgICAvLyBU
aGUgY2FsbGJhY2sgZ2V0cyBpbnZva2VkIHdoZW4gYSBjYWxsIGlzIG1hZGUgdG8gYW4gbm9uZXhp
c3RlbnQgbWV0aG9kLgotICAgIE93blB0cjxDYWxsYmFjaz4gbV9mYWxsYmFja0NhbGxiYWNrOwor
ICAgIHN0ZDo6YXV0b19wdHI8Q2FsbGJhY2s+IG1fZmFsbGJhY2tDYWxsYmFjazsKIAogcHJpdmF0
ZToKICAgICAvLyBOUE9iamVjdCBjYWxsYmFja3MuCkBAIC0yNDIsNiArMjM4LDEwIEBAIHByaXZh
dGU6CiAgICAgLy8gVHJ1ZSBpZiBvdXIgbnBfb2JqZWN0IGhhcyBiZWVuIGJvdW5kIHRvIGEgV2Vi
RnJhbWUsIGluIHdoaWNoIGNhc2UgaXQgbXVzdAogICAgIC8vIGJlIHVucmVnaXN0ZXJlZCB3aXRo
IFY4IHdoZW4gd2UgZGVsZXRlIGl0LgogICAgIGJvb2wgbV9ib3VuZFRvRnJhbWU7CisKK3ByaXZh
dGU6CisgICAgQ3BwQm91bmRDbGFzcyhDcHBCb3VuZENsYXNzJik7CisgICAgQ3BwQm91bmRDbGFz
cyYgb3BlcmF0b3I9KGNvbnN0IENwcEJvdW5kQ2xhc3MmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFy
aWFudC5jcHAKaW5kZXggNGQyODU2ZTc0MmQ5N2NkZDlhMDA4NWUxOWEyZGQxODExMmY4ZjVmYy4u
ZWYyZTkyYTY1YzBlZjRlOGMzYmRmNGU1Y2RkNDcxNTViZTc3MmMzNSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFy
aWFudC5jcHAKQEAgLTMxLDEwICszMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ3BwVmFyaWFudC5oIgogCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIldl
YkJpbmRpbmdzLmgiCiAjaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTIyMCw3ICsyMTksNyBAQCB2b2lkIENwcFZh
cmlhbnQ6OnNldChOUE9iamVjdCogbmV3VmFsdWUpCiAKIHN0cmluZyBDcHBWYXJpYW50Ojp0b1N0
cmluZygpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzU3RyaW5nKCkpOworICAgIFdFQktJVF9BU1NF
UlQoaXNTdHJpbmcoKSk7CiAgICAgcmV0dXJuIHN0cmluZyh2YWx1ZS5zdHJpbmdWYWx1ZS5VVEY4
Q2hhcmFjdGVycywKICAgICAgICAgICAgICAgICAgIHZhbHVlLnN0cmluZ1ZhbHVlLlVURjhMZW5n
dGgpOwogfQpAQCAtMjMxLDcgKzIzMCw3IEBAIGludDMyX3QgQ3BwVmFyaWFudDo6dG9JbnQzMigp
IGNvbnN0CiAgICAgICAgIHJldHVybiB2YWx1ZS5pbnRWYWx1ZTsKICAgICBpZiAoaXNEb3VibGUo
KSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlLmRvdWJsZVZhbHVl
KTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI0MSwyMSArMjQwLDIxIEBAIGRvdWJsZSBD
cHBWYXJpYW50Ojp0b0RvdWJsZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxk
b3VibGU+KHZhbHVlLmludFZhbHVlKTsKICAgICBpZiAoaXNEb3VibGUoKSkKICAgICAgICAgcmV0
dXJuIHZhbHVlLmRvdWJsZVZhbHVlOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKIH0KIAogYm9vbCBDcHBW
YXJpYW50Ojp0b0Jvb2xlYW4oKSBjb25zdAogewotICAgIEFTU0VSVChpc0Jvb2woKSk7CisgICAg
V0VCS0lUX0FTU0VSVChpc0Jvb2woKSk7CiAgICAgcmV0dXJuIHZhbHVlLmJvb2xWYWx1ZTsKIH0K
IAotVmVjdG9yPHN0cmluZz4gQ3BwVmFyaWFudDo6dG9TdHJpbmdWZWN0b3IoKSBjb25zdAordmVj
dG9yPHN0cmluZz4gQ3BwVmFyaWFudDo6dG9TdHJpbmdWZWN0b3IoKSBjb25zdAogewogCi0gICAg
QVNTRVJUKGlzT2JqZWN0KCkpOwotICAgIFZlY3RvcjxzdHJpbmc+IHN0cmluZ1ZlY3RvcjsKKyAg
ICBXRUJLSVRfQVNTRVJUKGlzT2JqZWN0KCkpOworICAgIHZlY3RvcjxzdHJpbmc+IHN0cmluZ1Zl
Y3RvcjsKICAgICBOUE9iamVjdCogbnBWYWx1ZSA9IHZhbHVlLm9iamVjdFZhbHVlOwogICAgIE5Q
SWRlbnRpZmllciBsZW5ndGhJZCA9IFdlYkJpbmRpbmdzOjpnZXRTdHJpbmdJZGVudGlmaWVyKCJs
ZW5ndGgiKTsKIApAQCAtMjkwLDcgKzI4OSw3IEBAIFZlY3RvcjxzdHJpbmc+IENwcFZhcmlhbnQ6
OnRvU3RyaW5nVmVjdG9yKCkgY29uc3QKICAgICAgICAgaWYgKE5QVkFSSUFOVF9JU19TVFJJTkco
aW5kZXhWYWx1ZSkpIHsKICAgICAgICAgICAgIHN0cmluZyBpdGVtKE5QVkFSSUFOVF9UT19TVFJJ
TkcoaW5kZXhWYWx1ZSkuVVRGOENoYXJhY3RlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICBO
UFZBUklBTlRfVE9fU1RSSU5HKGluZGV4VmFsdWUpLlVURjhMZW5ndGgpOwotICAgICAgICAgICAg
c3RyaW5nVmVjdG9yLmFwcGVuZChpdGVtKTsKKyAgICAgICAgICAgIHN0cmluZ1ZlY3Rvci5wdXNo
X2JhY2soaXRlbSk7CiAgICAgICAgIH0KICAgICAgICAgV2ViQmluZGluZ3M6OnJlbGVhc2VWYXJp
YW50VmFsdWUoJmluZGV4VmFsdWUpOwogICAgIH0KQEAgLTMwMCw3ICsyOTksNyBAQCBWZWN0b3I8
c3RyaW5nPiBDcHBWYXJpYW50Ojp0b1N0cmluZ1ZlY3RvcigpIGNvbnN0CiBib29sIENwcFZhcmlh
bnQ6Omludm9rZShjb25zdCBzdHJpbmcmIG1ldGhvZCwgY29uc3QgQ3BwVmFyaWFudCogYXJndW1l
bnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYXJndW1lbnRDb3VudCwgQ3Bw
VmFyaWFudCYgcmVzdWx0KSBjb25zdAogewotICAgIEFTU0VSVChpc09iamVjdCgpKTsKKyAgICBX
RUJLSVRfQVNTRVJUKGlzT2JqZWN0KCkpOwogICAgIE5QSWRlbnRpZmllciBtZXRob2ROYW1lID0g
V2ViQmluZGluZ3M6OmdldFN0cmluZ0lkZW50aWZpZXIobWV0aG9kLmNfc3RyKCkpOwogICAgIE5Q
T2JqZWN0KiBucE9iamVjdCA9IHZhbHVlLm9iamVjdFZhbHVlOwogICAgIGlmICghV2ViQmluZGlu
Z3M6Omhhc01ldGhvZCgwLCBucE9iamVjdCwgbWV0aG9kTmFtZSkpCkBAIC0zMTQsNyArMzEzLDcg
QEAgYm9vbCBDcHBWYXJpYW50OjppbnZva2UoY29uc3Qgc3RyaW5nJiBtZXRob2QsIGNvbnN0IENw
cFZhcmlhbnQqIGFyZ3VtZW50cywKIGJvb2wgQ3BwVmFyaWFudDo6aW52b2tlRGVmYXVsdChjb25z
dCBDcHBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ3BwVmFyaWFudCYgcmVzdWx0KSBjb25zdAogewotICAg
IEFTU0VSVChpc09iamVjdCgpKTsKKyAgICBXRUJLSVRfQVNTRVJUKGlzT2JqZWN0KCkpOwogICAg
IE5QT2JqZWN0KiBucE9iamVjdCA9IHZhbHVlLm9iamVjdFZhbHVlOwogICAgIE5QVmFyaWFudCBy
OwogICAgIGJvb2wgc3RhdHVzID0gV2ViQmluZGluZ3M6Omludm9rZURlZmF1bHQoMCwgbnBPYmpl
Y3QsIGFyZ3VtZW50cywgYXJndW1lbnRDb3VudCwgJnIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5oCmluZGV4
IGU4MmE3MGI2Njc1MjRmN2IyNmMyZDNjMzBiZjVjMWMyMjNkZmNmNzYuLmU5Mjk1YTNiZTg5NWJh
M2UwYTk3MWIwZTllYTlkOGRhZjhlY2ZjMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBWYXJpYW50LmgKQEAgLTQ0LDcg
KzQ0LDcgQEAKIAogI2luY2x1ZGUgIldlYkJpbmRpbmdzLmgiCiAjaW5jbHVkZSA8c3RyaW5nPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKIG5hbWVzcGFjZSBX
ZWJUZXN0UnVubmVyIHsKIApAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICBib29sIHRv
Qm9vbGVhbigpIGNvbnN0OwogICAgIC8vIFJldHVybnMgYSB2ZWN0b3Igb2Ygc3RyaW5ncyBmb3Ig
dGhlIHNwZWNpZmllZCBhcmd1bWVudC4gVGhpcyBpcyB1c2VmdWwKICAgICAvLyBmb3IgY29udmVy
dGluZyBhIEphdmFTY3JpcHQgYXJyYXkgb2Ygc3RyaW5ncyBpbnRvIGEgdmVjdG9yIG9mIHN0cmlu
Z3MuCi0gICAgVmVjdG9yPHN0ZDo6c3RyaW5nPiB0b1N0cmluZ1ZlY3RvcigpIGNvbnN0OworICAg
IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB0b1N0cmluZ1ZlY3RvcigpIGNvbnN0OwogCiAgICAg
Ly8gSW52b2tlIG1ldGhvZCBvZiB0aGUgZ2l2ZW4gbmFtZSBvbiBhbiBvYmplY3Qgd2l0aCB0aGUg
c3VwcGxpZWQgYXJndW1lbnRzLgogICAgIC8vIFRoZSBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUg
dGhlIG9iamVjdCBvbiB3aGljaCB0aGUgbWV0aG9kIGlzIHRvIGJlCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRl
ci5jcHAKaW5kZXggYWI2MDE5M2Q3NzA4MmQzOWM1NTZmM2UzOWMzM2EwMDQzNzk2NWY1Yi4uZGJj
MDhiMjExOTkwZmZhNWM5NTQzMTgxNmFmNzU1ZmU5OTM1ODZmMCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2Vu
ZGVyLmNwcApAQCAtNDUsMTkgKzQ1LDE5IEBACiAKICNpbmNsdWRlICJLZXlDb2RlTWFwcGluZy5o
IgogI2luY2x1ZGUgIk1vY2tTcGVsbENoZWNrLmgiCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgog
I2luY2x1ZGUgIldlYkNvbnRleHRNZW51RGF0YS5oIgogI2luY2x1ZGUgIldlYkRyYWdPcGVyYXRp
b24uaCIKICNpbmNsdWRlICJXZWJUZXN0RGVsZWdhdGUuaCIKICNpbmNsdWRlICJXZWJUb3VjaFBv
aW50LmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgPGRlcXVlPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJEcmFnRGF0YS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVmVjdG9yLmg+
Ci0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgog
Ci0jaWYgT1MoV0lORE9XUykKKyNpZmRlZiBXSU4zMgogI2luY2x1ZGUgIndpbi9XZWJJbnB1dEV2
ZW50RmFjdG9yeS5oIgogI2VuZGlmCiAKQEAgLTk3LDkgKzk3LDkgQEAgV2ViRHJhZ0RhdGEgY3Vy
cmVudERyYWdEYXRhOwogV2ViRHJhZ09wZXJhdGlvbiBjdXJyZW50RHJhZ0VmZmVjdDsKIFdlYkRy
YWdPcGVyYXRpb25zTWFzayBjdXJyZW50RHJhZ0VmZmVjdHNBbGxvd2VkOwogYm9vbCByZXBsYXlp
bmdTYXZlZEV2ZW50cyA9IGZhbHNlOwotRGVxdWU8U2F2ZWRFdmVudD4gbW91c2VFdmVudFF1ZXVl
OworZGVxdWU8U2F2ZWRFdmVudD4gbW91c2VFdmVudFF1ZXVlOwogaW50IHRvdWNoTW9kaWZpZXJz
OwotVmVjdG9yPFdlYlRvdWNoUG9pbnQ+IHRvdWNoUG9pbnRzOwordmVjdG9yPFdlYlRvdWNoUG9p
bnQ+IHRvdWNoUG9pbnRzOwogCiAvLyBUaW1lIGFuZCBwbGFjZSBvZiB0aGUgbGFzdCBtb3VzZSB1
cCBldmVudC4KIGRvdWJsZSBsYXN0Q2xpY2tUaW1lU2VjID0gMDsKQEAgLTE1NSw3ICsxNTUsNyBA
QCBib29sIGFwcGx5S2V5TW9kaWZpZXIoY29uc3Qgc3RyaW5nJiBtb2RpZmllck5hbWUsIFdlYklu
cHV0RXZlbnQqIGV2ZW50KQogICAgIGJvb2wgaXNTeXN0ZW1LZXkgPSBmYWxzZTsKICAgICBjb25z
dCBjaGFyKiBjaGFyYWN0ZXJzID0gbW9kaWZpZXJOYW1lLmNfc3RyKCk7CiAgICAgaWYgKCFzdHJj
bXAoY2hhcmFjdGVycywgImN0cmxLZXkiKQotI2lmICFPUyhNQUNfT1NfWCkKKyNpZm5kZWYgX19B
UFBMRV9fCiAgICAgICAgIHx8ICFzdHJjbXAoY2hhcmFjdGVycywgImFkZFNlbGVjdGlvbktleSIp
CiAjZW5kaWYKICAgICAgICAgKSB7CkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBhcHBseUtleU1v
ZGlmaWVyKGNvbnN0IHN0cmluZyYgbW9kaWZpZXJOYW1lLCBXZWJJbnB1dEV2ZW50KiBldmVudCkK
ICAgICAgICAgZXZlbnQtPm1vZGlmaWVycyB8PSBXZWJJbnB1dEV2ZW50OjpTaGlmdEtleTsKICAg
ICBlbHNlIGlmICghc3RyY21wKGNoYXJhY3RlcnMsICJhbHRLZXkiKSkgewogICAgICAgICBldmVu
dC0+bW9kaWZpZXJzIHw9IFdlYklucHV0RXZlbnQ6OkFsdEtleTsKLSNpZiAhT1MoTUFDX09TX1gp
CisjaWZuZGVmIF9fQVBQTEVfXwogICAgICAgICAvLyBPbiBXaW5kb3dzIGFsbCBrZXlzIHdpdGgg
QWx0IG1vZGlmaWVyIHdpbGwgYmUgbWFya2VkIGFzIHN5c3RlbSBrZXkuCiAgICAgICAgIC8vIFdl
IGtlZXAgdGhlIHNhbWUgYmVoYXZpb3Igb24gTGludXggYW5kIGV2ZXJ5d2hlcmUgbm9uLU1hYywg
c2VlOgogICAgICAgICAvLyBXZWJLaXQvY2hyb21pdW0vc3JjL2d0ay9XZWJJbnB1dEV2ZW50RmFj
dG9yeS5jcHAKQEAgLTE3Miw4ICsxNzIsNyBAQCBib29sIGFwcGx5S2V5TW9kaWZpZXIoY29uc3Qg
c3RyaW5nJiBtb2RpZmllck5hbWUsIFdlYklucHV0RXZlbnQqIGV2ZW50KQogICAgICAgICAvLyBr
ZXB0IGluIHN5bmMgd2l0aCB0aGUgcmVsYXRlZCBjb2RlIGluIGFib3ZlIGZpbGUuCiAgICAgICAg
IGlzU3lzdGVtS2V5ID0gdHJ1ZTsKICNlbmRpZgotI2lmIE9TKE1BQ19PU19YKQotICAgIH0gZWxz
ZSBpZiAoIXN0cmNtcChjaGFyYWN0ZXJzLCAibWV0YUtleSIpIHx8ICFzdHJjbXAoY2hhcmFjdGVy
cywgImFkZFNlbGVjdGlvbktleSIpKSB7CisjaWZkZWYgX19BUFBMRV9fCiAgICAgICAgIGV2ZW50
LT5tb2RpZmllcnMgfD0gV2ViSW5wdXRFdmVudDo6TWV0YUtleTsKICAgICAgICAgLy8gT24gTWFj
IG9ubHkgY29tbWFuZCBrZXkgcHJlc3NlcyBhcmUgbWFya2VkIGFzIHN5c3RlbSBrZXkuCiAgICAg
ICAgIC8vIFNlZSB0aGUgcmVsYXRlZCBjb2RlIGluOiBXZWJLaXQvY2hyb21pdW0vc3JjL21hYy9X
ZWJJbnB1dEV2ZW50RmFjdG9yeS5jcHAKQEAgLTE5MSw4ICsxOTAsOCBAQCBib29sIGFwcGx5S2V5
TW9kaWZpZXJzKGNvbnN0IENwcFZhcmlhbnQqIGFyZ3VtZW50LCBXZWJJbnB1dEV2ZW50KiBldmVu
dCkKIHsKICAgICBib29sIGlzU3lzdGVtS2V5ID0gZmFsc2U7CiAgICAgaWYgKGFyZ3VtZW50LT5p
c09iamVjdCgpKSB7Ci0gICAgICAgIFZlY3RvcjxzdHJpbmc+IG1vZGlmaWVycyA9IGFyZ3VtZW50
LT50b1N0cmluZ1ZlY3RvcigpOwotICAgICAgICBmb3IgKFZlY3RvcjxzdHJpbmc+Ojpjb25zdF9p
dGVyYXRvciBpID0gbW9kaWZpZXJzLmJlZ2luKCk7IGkgIT0gbW9kaWZpZXJzLmVuZCgpOyArK2kp
CisgICAgICAgIHZlY3RvcjxzdHJpbmc+IG1vZGlmaWVycyA9IGFyZ3VtZW50LT50b1N0cmluZ1Zl
Y3RvcigpOworICAgICAgICBmb3IgKHZlY3RvcjxzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpID0g
bW9kaWZpZXJzLmJlZ2luKCk7IGkgIT0gbW9kaWZpZXJzLmVuZCgpOyArK2kpCiAgICAgICAgICAg
ICBpc1N5c3RlbUtleSB8PSBhcHBseUtleU1vZGlmaWVyKCppLCBldmVudCk7CiAgICAgfSBlbHNl
IGlmIChhcmd1bWVudC0+aXNTdHJpbmcoKSkKICAgICAgICAgaXNTeXN0ZW1LZXkgPSBhcHBseUtl
eU1vZGlmaWVyKGFyZ3VtZW50LT50b1N0cmluZygpLCBldmVudCk7CkBAIC0yMDQsNyArMjAzLDcg
QEAgYm9vbCBhcHBseUtleU1vZGlmaWVycyhjb25zdCBDcHBWYXJpYW50KiBhcmd1bWVudCwgV2Vi
SW5wdXRFdmVudCogZXZlbnQpCiAvLyBvZiB0aGUgZWRpdCBjb21tYW5kIHdpbGwgYmUgc3RvcmVk
IGluIHwqbmFtZXwuCiBib29sIGdldEVkaXRDb21tYW5kKGNvbnN0IFdlYktleWJvYXJkRXZlbnQm
IGV2ZW50LCBzdHJpbmcqIG5hbWUpCiB7Ci0jaWYgT1MoTUFDX09TX1gpCisjaWZkZWYgX19BUFBM
RV9fCiAgICAgLy8gV2Ugb25seSBjYXJlcyBhYm91dCBMZWZ0LFJpZ2h0LFVwLERvd24ga2V5cyB3
aXRoIENvbW1hbmQgb3IgQ29tbWFuZCtTaGlmdAogICAgIC8vIG1vZGlmaWVycy4gVGhlc2Uga2V5
IGV2ZW50cyBjb3JyZXNwb25kIHRvIHNvbWUgc3BlY2lhbCBtb3ZlbWVudCBhbmQKICAgICAvLyBz
ZWxlY3Rpb24gZWRpdG9yIGNvbW1hbmRzLCBhbmQgd2FzIHN1cHBvc2VkIHRvIGJlIGhhbmRsZWQg
aW4KQEAgLTMwNiw3ICszMDUsNyBAQCBFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIoKQogICAgIC8v
IFdoZW4gc2V0IHRvIHRydWUgKHRoZSBkZWZhdWx0IHZhbHVlKSwgd2UgYmF0Y2ggbW91c2UgbW92
ZSBhbmQgbW91c2UgdXAKICAgICAvLyBldmVudHMgc28gd2UgY2FuIHNpbXVsYXRlIGRyYWcgJiBk
cm9wLgogICAgIGJpbmRQcm9wZXJ0eSgiZHJhZ01vZGUiLCAmZHJhZ01vZGUpOwotI2lmIE9TKFdJ
TkRPV1MpCisjaWZkZWYgV0lOMzIKICAgICBiaW5kUHJvcGVydHkoIldNX0tFWURPV04iLCAmd21L
ZXlEb3duKTsKICAgICBiaW5kUHJvcGVydHkoIldNX0tFWVVQIiwgJndtS2V5VXApOwogICAgIGJp
bmRQcm9wZXJ0eSgiV01fQ0hBUiIsICZ3bUNoYXIpOwpAQCAtMzIxLDEzICszMjAsMTMgQEAgRXZl
bnRTZW5kZXI6OkV2ZW50U2VuZGVyKCkKIHZvaWQgRXZlbnRTZW5kZXI6OnJlc2V0KCkKIHsKICAg
ICAvLyBUaGUgdGVzdCBzaG91bGQgaGF2ZSBmaW5pc2hlZCBhIGRyYWcgYW5kIHRoZSBtb3VzZSBi
dXR0b24gc3RhdGUuCi0gICAgQVNTRVJUKGN1cnJlbnREcmFnRGF0YS5pc051bGwoKSk7CisgICAg
V0VCS0lUX0FTU0VSVChjdXJyZW50RHJhZ0RhdGEuaXNOdWxsKCkpOwogICAgIGN1cnJlbnREcmFn
RGF0YS5yZXNldCgpOwogICAgIGN1cnJlbnREcmFnRWZmZWN0ID0gV2ViS2l0OjpXZWJEcmFnT3Bl
cmF0aW9uTm9uZTsKICAgICBjdXJyZW50RHJhZ0VmZmVjdHNBbGxvd2VkID0gV2ViS2l0OjpXZWJE
cmFnT3BlcmF0aW9uTm9uZTsKICAgICBwcmVzc2VkQnV0dG9uID0gV2ViTW91c2VFdmVudDo6QnV0
dG9uTm9uZTsKICAgICBkcmFnTW9kZS5zZXQodHJ1ZSk7Ci0jaWYgT1MoV0lORE9XUykKKyNpZmRl
ZiBXSU4zMgogICAgIHdtS2V5RG93bi5zZXQoV01fS0VZRE9XTik7CiAgICAgd21LZXlVcC5zZXQo
V01fS0VZVVApOwogICAgIHdtQ2hhci5zZXQoV01fQ0hBUik7CkBAIC00MTcsNyArNDE2LDcgQEAg
dm9pZCBFdmVudFNlbmRlcjo6bW91c2VEb3duKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1bHQKICAgICB3ZWJ2aWV3KCktPmxheW91dCgpOwogCiAgICAg
aW50IGJ1dHRvbk51bWJlciA9IGdldEJ1dHRvbk51bWJlckZyb21TaW5nbGVBcmcoYXJndW1lbnRz
KTsKLSAgICBBU1NFUlQoYnV0dG9uTnVtYmVyICE9IC0xKTsKKyAgICBXRUJLSVRfQVNTRVJUKGJ1
dHRvbk51bWJlciAhPSAtMSk7CiAKICAgICBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uVHlw
ZSA9IGdldEJ1dHRvblR5cGVGcm9tQnV0dG9uTnVtYmVyKGJ1dHRvbk51bWJlcik7CiAKQEAgLTQz
OSw3ICs0MzgsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjptb3VzZVVwKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiAgICAgd2VidmlldygpLT5sYXlv
dXQoKTsKIAogICAgIGludCBidXR0b25OdW1iZXIgPSBnZXRCdXR0b25OdW1iZXJGcm9tU2luZ2xl
QXJnKGFyZ3VtZW50cyk7Ci0gICAgQVNTRVJUKGJ1dHRvbk51bWJlciAhPSAtMSk7CisgICAgV0VC
S0lUX0FTU0VSVChidXR0b25OdW1iZXIgIT0gLTEpOwogCiAgICAgV2ViTW91c2VFdmVudDo6QnV0
dG9uIGJ1dHRvblR5cGUgPSBnZXRCdXR0b25UeXBlRnJvbUJ1dHRvbk51bWJlcihidXR0b25OdW1i
ZXIpOwogCkBAIC00NDcsNyArNDQ2LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6bW91c2VVcChjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogICAgICAg
ICBTYXZlZEV2ZW50IHNhdmVkRXZlbnQ7CiAgICAgICAgIHNhdmVkRXZlbnQudHlwZSA9IFNhdmVk
RXZlbnQ6Ok1vdXNlVXA7CiAgICAgICAgIHNhdmVkRXZlbnQuYnV0dG9uVHlwZSA9IGJ1dHRvblR5
cGU7Ci0gICAgICAgIG1vdXNlRXZlbnRRdWV1ZS5hcHBlbmQoc2F2ZWRFdmVudCk7CisgICAgICAg
IG1vdXNlRXZlbnRRdWV1ZS5wdXNoX2JhY2soc2F2ZWRFdmVudCk7CiAgICAgICAgIHJlcGxheVNh
dmVkRXZlbnRzKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgV2ViTW91c2VFdmVudCBldmVudDsK
QEAgLTUwNCw3ICs1MDMsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjptb3VzZU1vdmVUbyhjb25zdCBD
cHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdQogICAgICAgICBTYXZl
ZEV2ZW50IHNhdmVkRXZlbnQ7CiAgICAgICAgIHNhdmVkRXZlbnQudHlwZSA9IFNhdmVkRXZlbnQ6
Ok1vdXNlTW92ZTsKICAgICAgICAgc2F2ZWRFdmVudC5wb3MgPSBtb3VzZVBvczsKLSAgICAgICAg
bW91c2VFdmVudFF1ZXVlLmFwcGVuZChzYXZlZEV2ZW50KTsKKyAgICAgICAgbW91c2VFdmVudFF1
ZXVlLnB1c2hfYmFjayhzYXZlZEV2ZW50KTsKICAgICB9IGVsc2UgewogICAgICAgICBXZWJNb3Vz
ZUV2ZW50IGV2ZW50OwogICAgICAgICBpbml0TW91c2VFdmVudChXZWJJbnB1dEV2ZW50OjpNb3Vz
ZU1vdmUsIHByZXNzZWRCdXR0b24sIG1vdXNlUG9zLCAmZXZlbnQsIGdldEN1cnJlbnRFdmVudFRp
bWVTZWMobV9kZWxlZ2F0ZSkpOwpAQCAtNTk3LDcgKzU5Niw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6
OmtleURvd24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJl
c3VsdCkKICAgICAgICAgfQogICAgICAgICBpZiAoIWNvZGUpIHsKICAgICAgICAgICAgIFdlYlN0
cmluZyB3ZWJDb2RlU3RyID0gV2ViU3RyaW5nOjpmcm9tVVRGOChjb2RlU3RyLmRhdGEoKSwgY29k
ZVN0ci5zaXplKCkpOwotICAgICAgICAgICAgQVNTRVJUKHdlYkNvZGVTdHIubGVuZ3RoKCkgPT0g
MSk7CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKHdlYkNvZGVTdHIubGVuZ3RoKCkgPT0gMSk7
CiAgICAgICAgICAgICB0ZXh0ID0gY29kZSA9IHdlYkNvZGVTdHIuZGF0YSgpWzBdOwogICAgICAg
ICAgICAgbmVlZHNTaGlmdEtleU1vZGlmaWVyID0gbmVlZHNTaGlmdE1vZGlmaWVyKGNvZGUpOwog
ICAgICAgICAgICAgaWYgKChjb2RlICYgMHhGRikgPj0gJ2EnICYmIChjb2RlICYgMHhGRikgPD0g
J3onKQpAQCAtNjE1LDcgKzYxNCw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmtleURvd24oY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKICAgICBldmVu
dERvd24udHlwZSA9IFdlYklucHV0RXZlbnQ6OlJhd0tleURvd247CiAgICAgZXZlbnREb3duLm1v
ZGlmaWVycyA9IDA7CiAgICAgZXZlbnREb3duLndpbmRvd3NLZXlDb2RlID0gY29kZTsKLSNpZiBP
UyhMSU5VWCkgJiYgVVNFKEdUSykKKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgVVNFKEdUSykK
ICAgICBldmVudERvd24ubmF0aXZlS2V5Q29kZSA9IE5hdGl2ZUtleUNvZGVGb3JXaW5kb3dzS2V5
Q29kZShjb2RlKTsKICNlbmRpZgogCkBAIC02NzcsNyArNjc2LDcgQEAgdm9pZCBFdmVudFNlbmRl
cjo6ZGlzcGF0Y2hNZXNzYWdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KgogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogCi0jaWYgT1MoV0lORE9XUykKKyNp
ZmRlZiBXSU4zMgogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID09IDMpIHsKICAgICAgICAgLy8g
R3JhYiB0aGUgbWVzc2FnZSBpZCB0byBzZWUgaWYgd2UgbmVlZCB0byBkaXNwYXRjaCBpdC4KICAg
ICAgICAgaW50IG1zZyA9IGFyZ3VtZW50c1swXS50b0ludDMyKCk7CkBAIC02OTMsNyArNjkyLDcg
QEAgdm9pZCBFdmVudFNlbmRlcjo6ZGlzcGF0Y2hNZXNzYWdlKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogICAgICAgICB1bnNpZ25lZCBsb25nIGxwYXJhbSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKICAg
ICAgICAgd2VidmlldygpLT5oYW5kbGVJbnB1dEV2ZW50KFdlYklucHV0RXZlbnRGYWN0b3J5Ojpr
ZXlib2FyZEV2ZW50KDAsIG1zZywgYXJndW1lbnRzWzFdLnRvSW50MzIoKSwgbHBhcmFtKSk7CiAg
ICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIH0KIApAQCAtNzE3LDcgKzcxNiw3IEBAIHZv
aWQgRXZlbnRTZW5kZXI6OmxlYXBGb3J3YXJkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1CiAgICAgICAgIFNhdmVkRXZlbnQgc2F2ZWRFdmVudDsKICAg
ICAgICAgc2F2ZWRFdmVudC50eXBlID0gU2F2ZWRFdmVudDo6TGVhcEZvcndhcmQ7CiAgICAgICAg
IHNhdmVkRXZlbnQubWlsbGlzZWNvbmRzID0gbWlsbGlzZWNvbmRzOwotICAgICAgICBtb3VzZUV2
ZW50UXVldWUuYXBwZW5kKHNhdmVkRXZlbnQpOworICAgICAgICBtb3VzZUV2ZW50UXVldWUucHVz
aF9iYWNrKHNhdmVkRXZlbnQpOwogICAgIH0gZWxzZQogICAgICAgICBkb0xlYXBGb3J3YXJkKG1p
bGxpc2Vjb25kcyk7CiB9CkBAIC03NzgsOCArNzc3LDkgQEAgdm9pZCBFdmVudFNlbmRlcjo6Y29u
dGludW91c01vdXNlU2Nyb2xsQnkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENw
cFYKIHZvaWQgRXZlbnRTZW5kZXI6OnJlcGxheVNhdmVkRXZlbnRzKCkKIHsKICAgICByZXBsYXlp
bmdTYXZlZEV2ZW50cyA9IHRydWU7Ci0gICAgd2hpbGUgKCFtb3VzZUV2ZW50UXVldWUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIFNhdmVkRXZlbnQgZSA9IG1vdXNlRXZlbnRRdWV1ZS50YWtlRmlyc3Qo
KTsKKyAgICB3aGlsZSAoIW1vdXNlRXZlbnRRdWV1ZS5lbXB0eSgpKSB7CisgICAgICAgIFNhdmVk
RXZlbnQgZSA9IG1vdXNlRXZlbnRRdWV1ZS5mcm9udCgpOworICAgICAgICBtb3VzZUV2ZW50UXVl
dWUucG9wX2Zyb250KCk7CiAKICAgICAgICAgc3dpdGNoIChlLnR5cGUpIHsKICAgICAgICAgY2Fz
ZSBTYXZlZEV2ZW50OjpNb3VzZU1vdmU6IHsKQEAgLTc5OCw3ICs3OTgsNyBAQCB2b2lkIEV2ZW50
U2VuZGVyOjpyZXBsYXlTYXZlZEV2ZW50cygpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTgxMiw3ICs4MTIsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpyZXBsYXlTYXZlZEV2ZW50
cygpCiAvLyAgIGFsc28gbWFrZXMgc2Vuc2UuIFRoaXMgZnVuY3Rpb24gaXMgZG9pbmcgc3VjaCBm
b3Igc29tZSBmbGFncy4KIC8vIC0gU29tZSB0ZXN0IGV2ZW4gY2hlY2tzIGFjdHVhbCBzdHJpbmcg
Y29udGVudC4gU28gcHJvdmlkaW5nIGl0IHdvdWxkIGJlIGFsc28gaGVscGZ1bC4KIC8vCi1zdGF0
aWMgVmVjdG9yPFdlYlN0cmluZz4gbWFrZU1lbnVJdGVtU3RyaW5nc0ZvcihXZWJDb250ZXh0TWVu
dURhdGEqIGNvbnRleHRNZW51LCBXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQorc3RhdGljIHZl
Y3RvcjxXZWJTdHJpbmc+IG1ha2VNZW51SXRlbVN0cmluZ3NGb3IoV2ViQ29udGV4dE1lbnVEYXRh
KiBjb250ZXh0TWVudSwgV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKICAgICAvLyBUaGVz
ZSBjb25zdGFudHMgYXJlIGJhc2VkIG9uIFNhZmFyaSdzIGNvbnRleHQgbWVudSBiZWNhdXNlIHRl
c3RzIGFyZSBtYWRlIGZvciBpdC4KICAgICBzdGF0aWMgY29uc3QgY2hhciogbm9uRWRpdGFibGVN
ZW51U3RyaW5nc1tdID0geyAiQmFjayIsICJSZWxvYWQgUGFnZSIsICJPcGVuIGluIERhc2hiYW9y
ZCIsICI8c2VwYXJhdG9yPiIsICJWaWV3IFNvdXJjZSIsICJTYXZlIFBhZ2UgQXMiLCAiUHJpbnQg
UGFnZSIsICJJbnNwZWN0IEVsZW1lbnQiLCAwIH07CkBAIC04MjAsMjAgKzgyMCwyMCBAQCBzdGF0
aWMgVmVjdG9yPFdlYlN0cmluZz4gbWFrZU1lbnVJdGVtU3RyaW5nc0ZvcihXZWJDb250ZXh0TWVu
dURhdGEqIGNvbnRleHRNZW51LAogCiAgICAgLy8gVGhpcyBpcyBwb3NzaWJsZSBiZWNhdXNlIG1v
dXNlIGV2ZW50cyBhcmUgY2FuY2VsbGVhYmxlLgogICAgIGlmICghY29udGV4dE1lbnUpCi0gICAg
ICAgIHJldHVybiBWZWN0b3I8V2ViU3RyaW5nPigpOworICAgICAgICByZXR1cm4gdmVjdG9yPFdl
YlN0cmluZz4oKTsKIAotICAgIFZlY3RvcjxXZWJTdHJpbmc+IHN0cmluZ3M7CisgICAgdmVjdG9y
PFdlYlN0cmluZz4gc3RyaW5nczsKIAogICAgIGlmIChjb250ZXh0TWVudS0+aXNFZGl0YWJsZSkg
ewogICAgICAgICBmb3IgKGNvbnN0IGNoYXIqKiBpdGVtID0gZWRpdGFibGVNZW51U3RyaW5nczsg
Kml0ZW07ICsraXRlbSkgCi0gICAgICAgICAgICBzdHJpbmdzLmFwcGVuZChXZWJTdHJpbmc6OmZy
b21VVEY4KCppdGVtKSk7CisgICAgICAgICAgICBzdHJpbmdzLnB1c2hfYmFjayhXZWJTdHJpbmc6
OmZyb21VVEY4KCppdGVtKSk7CiAgICAgICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHN1Z2dlc3Rp
b25zOwogICAgICAgICBNb2NrU3BlbGxDaGVjazo6ZmlsbFN1Z2dlc3Rpb25MaXN0KGNvbnRleHRN
ZW51LT5taXNzcGVsbGVkV29yZCwgJnN1Z2dlc3Rpb25zKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzdWdnZXN0aW9ucy5zaXplKCk7ICsraSkgCi0gICAgICAgICAgICBzdHJpbmdz
LmFwcGVuZChzdWdnZXN0aW9uc1tpXSk7CisgICAgICAgICAgICBzdHJpbmdzLnB1c2hfYmFjayhz
dWdnZXN0aW9uc1tpXSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChjb25zdCBjaGFyKiog
aXRlbSA9IG5vbkVkaXRhYmxlTWVudVN0cmluZ3M7ICppdGVtOyArK2l0ZW0pIAotICAgICAgICAg
ICAgc3RyaW5ncy5hcHBlbmQoV2ViU3RyaW5nOjpmcm9tVVRGOCgqaXRlbSkpOworICAgICAgICAg
ICAgc3RyaW5ncy5wdXNoX2JhY2soV2ViU3RyaW5nOjpmcm9tVVRGOCgqaXRlbSkpOwogICAgIH0K
IAogICAgIHJldHVybiBzdHJpbmdzOwpAQCAtODU4LDcgKzg1OCw3IEBAIHZvaWQgRXZlbnRTZW5k
ZXI6OmNvbnRleHRDbGljayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWFudCogcmVzCiAgICAgaW5pdE1vdXNlRXZlbnQoV2ViSW5wdXRFdmVudDo6TW91c2VEb3duLCBX
ZWJNb3VzZUV2ZW50OjpCdXR0b25SaWdodCwgbGFzdE1vdXNlUG9zLCAmZXZlbnQsIGdldEN1cnJl
bnRFdmVudFRpbWVTZWMobV9kZWxlZ2F0ZSkpOwogICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRF
dmVudChldmVudCk7CiAKLSNpZiBPUyhXSU5ET1dTKQorI2lmZGVmIFdJTjMyCiAgICAgaW5pdE1v
dXNlRXZlbnQoV2ViSW5wdXRFdmVudDo6TW91c2VVcCwgV2ViTW91c2VFdmVudDo6QnV0dG9uUmln
aHQsIGxhc3RNb3VzZVBvcywgJmV2ZW50LCBnZXRDdXJyZW50RXZlbnRUaW1lU2VjKG1fZGVsZWdh
dGUpKTsKICAgICB3ZWJ2aWV3KCktPmhhbmRsZUlucHV0RXZlbnQoZXZlbnQpOwogCkBAIC05MTUs
NyArOTE1LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6c2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3du
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLAogdm9pZCBFdmVudFNlbmRlcjo6YmVn
aW5EcmFnV2l0aEZpbGVzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW50KiByZXN1bHQpCiB7CiAgICAgY3VycmVudERyYWdEYXRhLmluaXRpYWxpemUoKTsKLSAgICBW
ZWN0b3I8c3RyaW5nPiBmaWxlcyA9IGFyZ3VtZW50c1swXS50b1N0cmluZ1ZlY3RvcigpOworICAg
IHZlY3RvcjxzdHJpbmc+IGZpbGVzID0gYXJndW1lbnRzWzBdLnRvU3RyaW5nVmVjdG9yKCk7CiAg
ICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gYWJzb2x1dGVGaWxlbmFtZXMoZmlsZXMuc2l6ZSgpKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IFdlYkRyYWdEYXRhOjpJdGVtIGl0ZW07CkBAIC05NTQsNyArOTU0LDcgQEAgdm9pZCBFdmVudFNl
bmRlcjo6YWRkVG91Y2hQb2ludChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3Bw
VmFyaWFudCogcmUKICAgICAgICAgICAgIGxvd2VzdElkKys7CiAgICAgfQogICAgIHRvdWNoUG9p
bnQuaWQgPSBsb3dlc3RJZDsKLSAgICB0b3VjaFBvaW50cy5hcHBlbmQodG91Y2hQb2ludCk7Cisg
ICAgdG91Y2hQb2ludHMucHVzaF9iYWNrKHRvdWNoUG9pbnQpOwogfQogCiB2b2lkIEV2ZW50U2Vu
ZGVyOjpjbGVhclRvdWNoUG9pbnRzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
IHJlc3VsdCkKQEAgLTk2OCw3ICs5NjgsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpyZWxlYXNlVG91
Y2hQb2ludChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudAogICAg
IHJlc3VsdC0+c2V0TnVsbCgpOwogCiAgICAgY29uc3QgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVu
dHNbMF0udG9JbnQzMigpOwotICAgIEFTU0VSVChpbmRleCA8IHRvdWNoUG9pbnRzLnNpemUoKSk7
CisgICAgV0VCS0lUX0FTU0VSVChpbmRleCA8IHRvdWNoUG9pbnRzLnNpemUoKSk7CiAKICAgICBX
ZWJUb3VjaFBvaW50KiB0b3VjaFBvaW50ID0gJnRvdWNoUG9pbnRzW2luZGV4XTsKICAgICB0b3Vj
aFBvaW50LT5zdGF0ZSA9IFdlYlRvdWNoUG9pbnQ6OlN0YXRlUmVsZWFzZWQ7CkBAIC0xMDAwLDcg
KzEwMDAsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjp1cGRhdGVUb3VjaFBvaW50KGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogICAgIHJlc3VsdC0+c2V0TnVsbCgp
OwogCiAgICAgY29uc3QgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudHNbMF0udG9JbnQzMigpOwot
ICAgIEFTU0VSVChpbmRleCA8IHRvdWNoUG9pbnRzLnNpemUoKSk7CisgICAgV0VCS0lUX0FTU0VS
VChpbmRleCA8IHRvdWNoUG9pbnRzLnNpemUoKSk7CiAKICAgICBXZWJQb2ludCBwb3NpdGlvbihh
cmd1bWVudHNbMV0udG9JbnQzMigpLCBhcmd1bWVudHNbMl0udG9JbnQzMigpKTsKICAgICBXZWJU
b3VjaFBvaW50KiB0b3VjaFBvaW50ID0gJnRvdWNoUG9pbnRzW2luZGV4XTsKQEAgLTEwMTQsNyAr
MTAxNCw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmNhbmNlbFRvdWNoUG9pbnQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7
CiAKICAgICBjb25zdCB1bnNpZ25lZCBpbmRleCA9IGFyZ3VtZW50c1swXS50b0ludDMyKCk7Ci0g
ICAgQVNTRVJUKGluZGV4IDwgdG91Y2hQb2ludHMuc2l6ZSgpKTsKKyAgICBXRUJLSVRfQVNTRVJU
KGluZGV4IDwgdG91Y2hQb2ludHMuc2l6ZSgpKTsKIAogICAgIFdlYlRvdWNoUG9pbnQqIHRvdWNo
UG9pbnQgPSAmdG91Y2hQb2ludHNbaW5kZXhdOwogICAgIHRvdWNoUG9pbnQtPnN0YXRlID0gV2Vi
VG91Y2hQb2ludDo6U3RhdGVDYW5jZWxsZWQ7CkBAIC0xMDIyLDcgKzEwMjIsNyBAQCB2b2lkIEV2
ZW50U2VuZGVyOjpjYW5jZWxUb3VjaFBvaW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KgogCiB2b2lkIEV2ZW50U2VuZGVyOjpzZW5kQ3VycmVudFRvdWNoRXZl
bnQoY29uc3QgV2ViSW5wdXRFdmVudDo6VHlwZSB0eXBlKQogewotICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oV2ViVG91Y2hFdmVudDo6dG91Y2hlc0xlbmd0aENhcCkgPiB0b3VjaFBv
aW50cy5zaXplKCkpOworICAgIFdFQktJVF9BU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFdl
YlRvdWNoRXZlbnQ6OnRvdWNoZXNMZW5ndGhDYXApID4gdG91Y2hQb2ludHMuc2l6ZSgpKTsKICAg
ICB3ZWJ2aWV3KCktPmxheW91dCgpOwogCiAgICAgV2ViVG91Y2hFdmVudCB0b3VjaEV2ZW50OwpA
QCAtMTAzNyw3ICsxMDM3LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6c2VuZEN1cnJlbnRUb3VjaEV2
ZW50KGNvbnN0IFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdG91Y2hQb2ludHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgV2ViVG91Y2hQb2lu
dCogdG91Y2hQb2ludCA9ICZ0b3VjaFBvaW50c1tpXTsKICAgICAgICAgaWYgKHRvdWNoUG9pbnQt
PnN0YXRlID09IFdlYlRvdWNoUG9pbnQ6OlN0YXRlUmVsZWFzZWQpIHsKLSAgICAgICAgICAgIHRv
dWNoUG9pbnRzLnJlbW92ZShpKTsKKyAgICAgICAgICAgIHRvdWNoUG9pbnRzLmVyYXNlKHRvdWNo
UG9pbnRzLmJlZ2luKCkgKyBpKTsKICAgICAgICAgICAgIC0taTsKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICB0b3VjaFBvaW50LT5zdGF0ZSA9IFdlYlRvdWNoUG9pbnQ6OlN0YXRlU3RhdGlv
bmFyeTsKQEAgLTEyNTcsNyArMTI1Nyw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVFdmVu
dChXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUsIGNvbnN0IENwcEFyZ3VtZW50TGlzdCYKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAog
ICAgIGV2ZW50Lmdsb2JhbFggPSBldmVudC54OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1hcHBpbmcuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1hcHBpbmcuY3Bw
CmluZGV4IGMzMzlmMmYyYmNkMjVhODQwNmMzNDY3Zjg4NGU4ZmJhNTM0Njk3NjUuLjIxMTU4NmUz
NWUwYzZmN2EyODVkYzk2ZTY2NzYxOThmZTAwYzU5ZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFw
cGluZy5jcHAKQEAgLTMxLDEzICszMSwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIktleUNvZGVNYXBwaW5nLmgiCiAKLSNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KLQog
bmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCiBpbnQgTmF0aXZlS2V5Q29kZUZvcldpbmRvd3NL
ZXlDb2RlKGludCBrZXlzeW0pCiB7Ci0jaWYgT1MoTElOVVgpICYmIFVTRShHVEspCisjaWYgZGVm
aW5lZChfX2xpbnV4X18pICYmIFVTRShHVEspCiAgICAgLy8gU2VlIC91c3Ivc2hhcmUvWDExL3hr
Yi9rZXljb2Rlcy8qCiAgICAgc3RhdGljIGNvbnN0IGludCBhc2NpaVRvS2V5Q29kZVtdID0gewog
ICAgICAgICAwLApAQCAtMjQwLDggKzIzOCw3IEBAIGludCBOYXRpdmVLZXlDb2RlRm9yV2luZG93
c0tleUNvZGUoaW50IGtleXN5bSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oa2V5c3ltKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4ga2V5c3lt
IC0ga2V5c3ltOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5jcHAK
aW5kZXggN2Q0OWVkMmZhYTM4OGVjNjhkZTYwN2U1YTBlM2NlNjEwNTMxZjI3Yi4uNjFlZWUwYzgw
NTI1MGVjZTc1ZDY4NTcwZmI3MGFmMzNmYzZhZmY5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1t
YXJDaGVjay5jcHAKQEAgLTMxLDIwICszMSwyMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIk1vY2tHcmFtbWFyQ2hlY2suaCIKIAorI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlN0cmluZy5oIgorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJXZWJUZXh0
Q2hlY2tpbmdSZXN1bHQuaCIKLQotI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+Ci0jaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNp
bmNsdWRlIDxhbGdvcml0aG0+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1l
c3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKLWJvb2wgTW9ja0dyYW1t
YXJDaGVjazo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBWZWN0
b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiogcmVzdWx0cykKK2Jvb2wgTW9ja0dyYW1tYXJDaGVj
azo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCB2ZWN0b3I8V2Vi
VGV4dENoZWNraW5nUmVzdWx0PiogcmVzdWx0cykKIHsKLSAgICBBU1NFUlQocmVzdWx0cyk7Ci0g
ICAgV1RGOjpTdHJpbmcgc3RyaW5nVGV4dCh0ZXh0LmRhdGEoKSwgdGV4dC5sZW5ndGgoKSk7Ci0g
ICAgaWYgKHN0cmluZ1RleHQuZmluZChpc0FTQ0lJQWxwaGEpID09IHN0YXRpY19jYXN0PHNpemVf
dD4oLTEpKQorICAgIFdFQktJVF9BU1NFUlQocmVzdWx0cyk7CisgICAgc3RyaW5nMTYgc3RyaW5n
VGV4dCA9IHRleHQ7CisgICAgaWYgKGZpbmRfaWYoc3RyaW5nVGV4dC5iZWdpbigpLCBzdHJpbmdU
ZXh0LmVuZCgpLCBpc0FTQ0lJQWxwaGEpID09IHN0cmluZ1RleHQuZW5kKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgLy8gRmluZCBtYXRjaGluZyBncmFtbWF0aWNhbCBlcnJvcnMgZnJv
bSBrbm93biBvbmVzLiBUaGlzIGZ1bmN0aW9uIGhhcyB0bwpAQCAtNjksMTAgKzcxLDEzIEBAIGJv
b2wgTW9ja0dyYW1tYXJDaGVjazo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgV2ViU3RyaW5n
JiB0ZXh0LCBWZWN0b3I8V2ViVGV4CiAgICAgfTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IEFSUkFZU0laRV9VTlNBRkUoZ3JhbW1hckVycm9ycyk7ICsraSkgewogICAgICAgICBpbnQgb2Zm
c2V0ID0gMDsKLSAgICAgICAgd2hpbGUgKChvZmZzZXQgPSBzdHJpbmdUZXh0LmZpbmQoZ3JhbW1h
ckVycm9yc1tpXS50ZXh0LCBvZmZzZXQpKSAhPSAtMSkgewotICAgICAgICAgICAgcmVzdWx0cy0+
YXBwZW5kKFdlYlRleHRDaGVja2luZ1Jlc3VsdChXZWJUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciwg
b2Zmc2V0ICsgZ3JhbW1hckVycm9yc1tpXS5sb2NhdGlvbiwgZ3JhbW1hckVycm9yc1tpXS5sZW5n
dGgpKTsKKyAgICAgICAgc3RyaW5nMTYgZXJyb3IoZ3JhbW1hckVycm9yc1tpXS50ZXh0LCBncmFt
bWFyRXJyb3JzW2ldLnRleHQgKyBzdHJsZW4oZ3JhbW1hckVycm9yc1tpXS50ZXh0KSk7CisgICAg
ICAgIHdoaWxlICgob2Zmc2V0ID0gc3RyaW5nVGV4dC5maW5kKGVycm9yLCBvZmZzZXQpKSAhPSBz
dHJpbmcxNjo6bnBvcykgeworICAgICAgICAgICAgcmVzdWx0cy0+cHVzaF9iYWNrKFdlYlRleHRD
aGVja2luZ1Jlc3VsdChXZWJUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciwgb2Zmc2V0ICsgZ3JhbW1h
ckVycm9yc1tpXS5sb2NhdGlvbiwgZ3JhbW1hckVycm9yc1tpXS5sZW5ndGgpKTsKICAgICAgICAg
ICAgIG9mZnNldCArPSBncmFtbWFyRXJyb3JzW2ldLmxlbmd0aDsKICAgICAgICAgfQogICAgIH0K
ICAgICByZXR1cm4gZmFsc2U7CiB9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suaApp
bmRleCA2NDI3MWIzZmEzYzJjMDFhYzEzNmM4ZTEwMzA3MTYxOTI2ZDNlOTgzLi5hMTgzZGNjYjA3
NGM3OTBiZmFjYWMzZjc3OTg3NWQ5ZGE4ODE5OTVjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNrLmgKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJD
aGVjay5oCkBAIC0zMSw4ICszMSw3IEBACiAjaWZuZGVmIE1vY2tHcmFtbWFyQ2hlY2tfaAogI2Rl
ZmluZSBNb2NrR3JhbW1hckNoZWNrX2gKIAotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCkBAIC00MSw2ICs0MCw4IEBAIHN0cnVjdCBXZWJUZXh0Q2hlY2tpbmdSZXN1
bHQ7CiAKIH0KIAorbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCiAvLyBBIG1vY2sgaW1wbGVt
ZW50YXRpb24gb2YgYSBncmFtbWFyLWNoZWNrZXIgdXNlZCBmb3IgV2ViS2l0IHRlc3RzLiBUaGlz
IGNsYXNzCiAvLyBvbmx5IGltcGxlbWVudHMgdGhlIG1pbmltYWwgZnVuY3Rpb25hcml0aWVzIHJl
cXVpcmVkIGJ5IFdlYktpdCB0ZXN0cywgaS5lLgogLy8gdGhpcyBjbGFzcyBqdXN0IGNvbXBhcmVz
IHRoZSBnaXZlbiBzdHJpbmcgd2l0aCBrbm93biBncmFtbWFyIG1pc3Rha2VzIGluCkBAIC00OCw3
ICs0OSw5IEBAIHN0cnVjdCBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ7CiAvLyBmb3Igd2Via2l0IHRl
c3RzLCB0aGlzIGNsYXNzIGlzIG5vdCBzdWl0YWJsZSBmb3IgYW55IG90aGVyIHVzYWdlcy4KIGNs
YXNzIE1vY2tHcmFtbWFyQ2hlY2sgewogcHVibGljOgotICAgIHN0YXRpYyBib29sIGNoZWNrR3Jh
bW1hck9mU3RyaW5nKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgVmVjdG9yPFdlYktpdDo6V2Vi
VGV4dENoZWNraW5nUmVzdWx0PiopOworICAgIHN0YXRpYyBib29sIGNoZWNrR3JhbW1hck9mU3Ry
aW5nKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgc3RkOjp2ZWN0b3I8V2ViS2l0OjpXZWJUZXh0
Q2hlY2tpbmdSZXN1bHQ+Kik7CiB9OwogCit9CisKICNlbmRpZiAvLyBNb2NrU3BlbGxDaGVja19o
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9Nb2NrU3BlbGxDaGVjay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5jcHAKaW5kZXggODFiMzA4OTJiNTgyMGFjZjNjOGIy
YWQ3OGZlODQxMTZmOTBlOGNiZi4uZjI3M2NiMjcyZGM2OTU3NDIzNTg4MTA3NWZiNjM0YjUxYjkz
Y2U5YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvTW9ja1NwZWxsQ2hlY2suY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcApAQCAtMzEsMTMgKzMxLDE3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTW9ja1NwZWxsQ2hlY2suaCIKIAotI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCisj
aW5jbHVkZSA8cHVibGljL1dlYkNTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
K3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLXN0YXRpYyB2b2lkIGFwcGVuZChXZWJWZWN0b3I8V2Vi
U3RyaW5nPiogZGF0YSwgY29uc3QgV2ViU3RyaW5nJiBpdGVtKQorbmFtZXNwYWNlIFdlYlRlc3RS
dW5uZXIgeworCituYW1lc3BhY2UgeworCit2b2lkIGFwcGVuZChXZWJWZWN0b3I8V2ViU3RyaW5n
PiogZGF0YSwgY29uc3QgV2ViU3RyaW5nJiBpdGVtKQogewogICAgIFdlYlZlY3RvcjxXZWJTdHJp
bmc+IHJlc3VsdChkYXRhLT5zaXplKCkgKyAxKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGRhdGEtPnNpemUoKTsgKytpKQpAQCAtNDYsMTcgKzUwLDE3IEBAIHN0YXRpYyB2b2lkIGFwcGVu
ZChXZWJWZWN0b3I8V2ViU3RyaW5nPiogZGF0YSwgY29uc3QgV2ViU3RyaW5nJiBpdGVtKQogICAg
IGRhdGEtPnN3YXAocmVzdWx0KTsKIH0KIAorfQorCiBNb2NrU3BlbGxDaGVjazo6TW9ja1NwZWxs
Q2hlY2soKQogICAgIDogbV9pbml0aWFsaXplZChmYWxzZSkgeyB9CiAKIE1vY2tTcGVsbENoZWNr
Ojp+TW9ja1NwZWxsQ2hlY2soKSB7IH0KIAotc3RhdGljIGJvb2wgaXNOb3RBU0NJSUFscGhhKFVD
aGFyIGNoKSB7IHJldHVybiAhaXNBU0NJSUFscGhhKGNoKTsgfQotCiBib29sIE1vY2tTcGVsbENo
ZWNrOjpzcGVsbENoZWNrV29yZChjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCogbWlzc3BlbGxl
ZE9mZnNldCwgaW50KiBtaXNzcGVsbGVkTGVuZ3RoKQogewotICAgIEFTU0VSVChtaXNzcGVsbGVk
T2Zmc2V0KTsKLSAgICBBU1NFUlQobWlzc3BlbGxlZExlbmd0aCk7CisgICAgV0VCS0lUX0FTU0VS
VChtaXNzcGVsbGVkT2Zmc2V0KTsKKyAgICBXRUJLSVRfQVNTRVJUKG1pc3NwZWxsZWRMZW5ndGgp
OwogCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGlzIHNwZWxsY2hlY2tlci4KICAgICBpbml0aWFsaXpl
SWZOZWVkZWQoKTsKQEAgLTY1LDEyICs2OSwxMiBAQCBib29sIE1vY2tTcGVsbENoZWNrOjpzcGVs
bENoZWNrV29yZChjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCogbWlzc3BlbGxlZE9mZnNldAog
ICAgICptaXNzcGVsbGVkT2Zmc2V0ID0gMDsKICAgICAqbWlzc3BlbGxlZExlbmd0aCA9IDA7CiAK
LSAgICAvLyBDb252ZXJ0IHRvIGEgU3RyaW5nIGJlY2F1c2Ugd2Ugc3RvcmUgU3RyaW5nIGluc3Rh
bmNlcyBpbgorICAgIC8vIENvbnZlcnQgdG8gYSBzdHJpbmcxNiBiZWNhdXNlIHdlIHN0b3JlIHN0
cmluZzE2IGluc3RhbmNlcyBpbgogICAgIC8vIG1fbWlzc3BlbGxlZFdvcmRzIGFuZCBXZWJTdHJp
bmcgaGFzIG5vIGZpbmQoKS4KLSAgICBTdHJpbmcgc3RyaW5nVGV4dCh0ZXh0LmRhdGEoKSwgdGV4
dC5sZW5ndGgoKSk7CisgICAgc3RyaW5nMTYgc3RyaW5nVGV4dCA9IHRleHQ7CiAgICAgaW50IHNr
aXBwZWRMZW5ndGggPSAwOwogCi0gICAgd2hpbGUgKCFzdHJpbmdUZXh0LmlzRW1wdHkoKSkgewor
ICAgIHdoaWxlICghc3RyaW5nVGV4dC5lbXB0eSgpKSB7CiAgICAgICAgIC8vIEV4dHJhY3QgdGhl
IGZpcnN0IHBvc3NpYmxlIEVuZ2xpc2ggd29yZCBmcm9tIHRoZSBnaXZlbiBzdHJpbmcuCiAgICAg
ICAgIC8vIFRoZSBnaXZlbiBzdHJpbmcgbWF5IGluY2x1ZGUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMg
b3IgbnVtYmVycy4gU28sIHdlCiAgICAgICAgIC8vIHNob3VsZCBmaWx0ZXIgb3V0IHN1Y2ggY2hh
cmFjdGVycyBiZWZvcmUgc3RhcnQgbG9va2luZyB1cCBvdXIKQEAgLTc4LDEyICs4MiwxMyBAQCBi
b29sIE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZChjb25zdCBXZWJTdHJpbmcmIHRleHQs
IGludCogbWlzc3BlbGxlZE9mZnNldAogICAgICAgICAvLyAoVGhpcyBpcyBhIHNpbXBsZSB2ZXJz
aW9uIG9mIG91ciBTcGVsbENoZWNrV29yZEl0ZXJhdG9yIGNsYXNzLikKICAgICAgICAgLy8gSWYg
dGhlIGdpdmVuIHN0cmluZyBkb2Vzbid0IGluY2x1ZGUgYW55IEFTQ0lJIGNoYXJhY3RlcnMsIHdl
IGNhbiB0cmVhdCB0aGUKICAgICAgICAgLy8gc3RyaW5nIGFzIHZhbGlkIG9uZS4KLSAgICAgICAg
aW50IHdvcmRPZmZzZXQgPSBzdHJpbmdUZXh0LmZpbmQoaXNBU0NJSUFscGhhKTsKLSAgICAgICAg
aWYgKHdvcmRPZmZzZXQgPT0gLTEpCisgICAgICAgIHN0cmluZzE2OjppdGVyYXRvciBmaXJzdENo
YXIgPSBmaW5kX2lmKHN0cmluZ1RleHQuYmVnaW4oKSwgc3RyaW5nVGV4dC5lbmQoKSwgaXNBU0NJ
SUFscGhhKTsKKyAgICAgICAgaWYgKGZpcnN0Q2hhciA9PSBzdHJpbmdUZXh0LmVuZCgpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGludCB3b3JkT2Zmc2V0ID0gZGlzdGFuY2Uo
c3RyaW5nVGV4dC5iZWdpbigpLCBmaXJzdENoYXIpOwogICAgICAgICBpbnQgbWF4V29yZExlbmd0
aCA9IHN0YXRpY19jYXN0PGludD4oc3RyaW5nVGV4dC5sZW5ndGgoKSkgLSB3b3JkT2Zmc2V0Owog
ICAgICAgICBpbnQgd29yZExlbmd0aDsKLSAgICAgICAgU3RyaW5nIHdvcmQ7CisgICAgICAgIHN0
cmluZzE2IHdvcmQ7CiAKICAgICAgICAgLy8gTG9vayB1cCBvdXIgbWlzc3BlbGxlZC13b3JkIHRh
YmxlIHRvIGNoZWNrIGlmIHRoZSBleHRyYWN0ZWQgd29yZCBpcyBhCiAgICAgICAgIC8vIGtub3du
IG1pc3NwZWxsZWQgd29yZCwgYW5kIHJldHVybiB0aGUgb2Zmc2V0IGFuZCB0aGUgbGVuZ3RoIG9m
IHRoZQpAQCAtOTIsNyArOTcsNyBAQCBib29sIE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29y
ZChjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCogbWlzc3BlbGxlZE9mZnNldAogICAgICAgICAv
LyBtaXNzcGVsbGVkLXdvcmQgdGFibGUuKQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fbWlzc3BlbGxlZFdvcmRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICB3b3JkTGVuZ3Ro
ID0gc3RhdGljX2Nhc3Q8aW50PihtX21pc3NwZWxsZWRXb3Jkcy5hdChpKS5sZW5ndGgoKSkgPiBt
YXhXb3JkTGVuZ3RoID8gbWF4V29yZExlbmd0aCA6IHN0YXRpY19jYXN0PGludD4obV9taXNzcGVs
bGVkV29yZHMuYXQoaSkubGVuZ3RoKCkpOwotICAgICAgICAgICAgd29yZCA9IHN0cmluZ1RleHQu
c3Vic3RyaW5nKHdvcmRPZmZzZXQsIHdvcmRMZW5ndGgpOworICAgICAgICAgICAgd29yZCA9IHN0
cmluZ1RleHQuc3Vic3RyKHdvcmRPZmZzZXQsIHdvcmRMZW5ndGgpOwogICAgICAgICAgICAgaWYg
KHdvcmQgPT0gbV9taXNzcGVsbGVkV29yZHMuYXQoaSkgJiYgKHN0YXRpY19jYXN0PGludD4oc3Ry
aW5nVGV4dC5sZW5ndGgoKSkgPT0gd29yZE9mZnNldCArIHdvcmRMZW5ndGggfHwgaXNOb3RBU0NJ
SUFscGhhKHN0cmluZ1RleHRbd29yZE9mZnNldCArIHdvcmRMZW5ndGhdKSkpIHsKICAgICAgICAg
ICAgICAgICAqbWlzc3BlbGxlZE9mZnNldCA9IHdvcmRPZmZzZXQgKyBza2lwcGVkTGVuZ3RoOwog
ICAgICAgICAgICAgICAgICptaXNzcGVsbGVkTGVuZ3RoID0gd29yZExlbmd0aDsKQEAgLTEwMywx
MSArMTA4LDE0IEBAIGJvb2wgTW9ja1NwZWxsQ2hlY2s6OnNwZWxsQ2hlY2tXb3JkKGNvbnN0IFdl
YlN0cmluZyYgdGV4dCwgaW50KiBtaXNzcGVsbGVkT2Zmc2V0CiAgICAgICAgIGlmICgqbWlzc3Bl
bGxlZExlbmd0aCA+IDApCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpbnQgd29yZEVu
ZCA9IHN0cmluZ1RleHQuZmluZChpc05vdEFTQ0lJQWxwaGEsIHdvcmRPZmZzZXQpOwotICAgICAg
ICB3b3JkTGVuZ3RoID0gd29yZEVuZCA9PSAtMSA/IHN0YXRpY19jYXN0PGludD4oc3RyaW5nVGV4
dC5sZW5ndGgoKSkgLSB3b3JkT2Zmc2V0IDogd29yZEVuZCAtIHdvcmRPZmZzZXQ7CisgICAgICAg
IHN0cmluZzE2OjppdGVyYXRvciBsYXN0Q2hhciA9IGZpbmRfaWYoc3RyaW5nVGV4dC5iZWdpbigp
ICsgd29yZE9mZnNldCwgc3RyaW5nVGV4dC5lbmQoKSwgaXNOb3RBU0NJSUFscGhhKTsKKyAgICAg
ICAgaWYgKGxhc3RDaGFyID09IHN0cmluZ1RleHQuZW5kKCkpCisgICAgICAgICAgICB3b3JkTGVu
Z3RoID0gc3RhdGljX2Nhc3Q8aW50PihzdHJpbmdUZXh0Lmxlbmd0aCgpKSAtIHdvcmRPZmZzZXQ7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHdvcmRMZW5ndGggPSBkaXN0YW5jZShmaXJzdENo
YXIsIGxhc3RDaGFyKTsKIAotICAgICAgICBBU1NFUlQoMCA8IHdvcmRPZmZzZXQgKyB3b3JkTGVu
Z3RoKTsKLSAgICAgICAgc3RyaW5nVGV4dCA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKHdvcmRPZmZz
ZXQgKyB3b3JkTGVuZ3RoKTsKKyAgICAgICAgV0VCS0lUX0FTU0VSVCgwIDwgd29yZE9mZnNldCAr
IHdvcmRMZW5ndGgpOworICAgICAgICBzdHJpbmdUZXh0ID0gc3RyaW5nVGV4dC5zdWJzdHIod29y
ZE9mZnNldCArIHdvcmRMZW5ndGgpOwogICAgICAgICBza2lwcGVkTGVuZ3RoICs9IHdvcmRPZmZz
ZXQgKyB3b3JkTGVuZ3RoOwogICAgIH0KIApAQCAtMTcwLDcgKzE3OCw3IEBAIGJvb2wgTW9ja1Nw
ZWxsQ2hlY2s6OmluaXRpYWxpemVJZk5lZWRlZCgpCiAKICAgICBtX21pc3NwZWxsZWRXb3Jkcy5j
bGVhcigpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKG1pc3NwZWxsZWRX
b3Jkcyk7ICsraSkKLSAgICAgICAgbV9taXNzcGVsbGVkV29yZHMuYXBwZW5kKFN0cmluZzo6ZnJv
bVVURjgobWlzc3BlbGxlZFdvcmRzW2ldKSk7CisgICAgICAgIG1fbWlzc3BlbGxlZFdvcmRzLnB1
c2hfYmFjayhzdHJpbmcxNihtaXNzcGVsbGVkV29yZHNbaV0sIG1pc3NwZWxsZWRXb3Jkc1tpXSAr
IHN0cmxlbihtaXNzcGVsbGVkV29yZHNbaV0pKSk7CiAKICAgICAvLyBNYXJrIGFzIGluaXRpYWxp
emVkIHRvIHByZXZlbnQgdGhpcyBvYmplY3QgZnJvbSBiZWluZyBpbml0aWFsaXplZCB0d2ljZQog
ICAgIC8vIG9yIG1vcmUuCkBAIC0xODAsMyArMTg4LDUgQEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6
aW5pdGlhbGl6ZUlmTmVlZGVkKCkKICAgICAvLyBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBmYWxz
ZS4KICAgICByZXR1cm4gZmFsc2U7CiB9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5oCmlu
ZGV4IGVlMzhmMjI5MjIyNjNlN2YzMTY4MzhjZGY4NDM2NWU0MzBhNWYxYTYuLjUzNTljODg4YWFl
ZGE4NTViMjJlMTk3YzUxZGU4ODgyMDkyOTA2YjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2su
aApAQCAtMzMsOCArMzMsOSBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlN0cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWZWN0
b3IuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisjaW5jbHVkZSA8dmVjdG9yPgorCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAK
IC8vIEEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBhIHNwZWxsLWNoZWNrZXIgdXNlZCBmb3IgV2Vi
S2l0IHRlc3RzLgogLy8gVGhpcyBjbGFzcyBvbmx5IGltcGxlbWVudHMgdGhlIG1pbmltYWwgZnVu
Y3Rpb25hcml0aWVzIHJlcXVpcmVkIGJ5IFdlYktpdApAQCAtNzAsMTAgKzcxLDEyIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpbml0aWFsaXplSWZOZWVkZWQoKTsKIAogICAgIC8vIEEgdGFibGUgdGhh
dCBjb25zaXN0cyBvZiBtaXNzcGVsbGVkIHdvcmRzLgotICAgIFZlY3RvcjxTdHJpbmc+IG1fbWlz
c3BlbGxlZFdvcmRzOworICAgIHN0ZDo6dmVjdG9yPHN0cmluZzE2PiBtX21pc3NwZWxsZWRXb3Jk
czsKIAogICAgIC8vIEEgZmxhZyByZXByZXNlbnRpbmcgd2hldGhlciBvciBub3QgdGhpcyBvYmpl
Y3QgaXMgaW5pdGlhbGl6ZWQuCiAgICAgYm9vbCBtX2luaXRpYWxpemVkOwogfTsKIAorfQorCiAj
ZW5kaWYgLy8gTW9ja1NwZWxsQ2hlY2tfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvU3BlbGxDaGVja0NsaWVudC5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9TcGVsbENoZWNrQ2xpZW50LmNw
cAppbmRleCA2ZWYwZjViMTlmYWFjN2MxYjkzZDY0Njc3NGIxYjgyNmU3YzVmYzgwLi5iMDUxODM1
MmQ0NzdiY2I2ZjY5Y2NmNzI4MDY4NTkzMjhlYjBjZmU1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9TcGVsbENoZWNrQ2xpZW50LmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9TcGVsbENo
ZWNrQ2xpZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYlRleHRDaGVja2lu
Z1Jlc3VsdC5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCkBAIC04MSw3ICs4Miw3IEBAIHZvaWQg
U3BlbGxDaGVja0NsaWVudDo6c3BlbGxDaGVjayhjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCYg
bWlzc3BlbGxlZE9mZnNldCwKIAogdm9pZCBTcGVsbENoZWNrQ2xpZW50OjpjaGVja1RleHRPZlBh
cmFncmFwaChjb25zdCBXZWJTdHJpbmcmIHRleHQsIFdlYlRleHRDaGVja2luZ1R5cGVNYXNrIG1h
c2ssIFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+KiB3ZWJSZXN1bHRzKQogewotICAg
IFZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CisgICAgdmVjdG9yPFdlYlRl
eHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKICAgICBpZiAobWFzayAmIFdlYlRleHRDaGVja2lu
Z1R5cGVTcGVsbGluZykgewogICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICAgICAgc2l6
ZV90IGxlbmd0aCA9IHRleHQubGVuZ3RoKCk7CkBAIC05Niw3ICs5Nyw3IEBAIHZvaWQgU3BlbGxD
aGVja0NsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBX
ZWJUZXh0Q2hlY2tpCiAgICAgICAgICAgICByZXN1bHQudHlwZSA9IFdlYlRleHRDaGVja2luZ1R5
cGVTcGVsbGluZzsKICAgICAgICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IG9mZnNldCArIG1pc3Nw
ZWxsZWRQb3NpdGlvbjsKICAgICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSBtaXNzcGVsbGVkTGVu
Z3RoOwotICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgICAgIHJl
c3VsdHMucHVzaF9iYWNrKHJlc3VsdCk7CiAgICAgICAgICAgICBvZmZzZXQgKz0gbWlzc3BlbGxl
ZFBvc2l0aW9uICsgbWlzc3BlbGxlZExlbmd0aDsKICAgICAgICAgfQogICAgIH0KQEAgLTEyMCwx
OSArMTIxLDE5IEBAIHZvaWQgU3BlbGxDaGVja0NsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZUZXh0
KGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgV2ViVGV4dENoZWNrCiAKIHZvaWQgU3BlbGxDaGVja0Ns
aWVudDo6ZmluaXNoTGFzdFRleHRDaGVjaygpCiB7Ci0gICAgVmVjdG9yPFdlYlRleHRDaGVja2lu
Z1Jlc3VsdD4gcmVzdWx0czsKKyAgICB2ZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiByZXN1
bHRzOwogICAgIGludCBvZmZzZXQgPSAwOwotICAgIFN0cmluZyB0ZXh0KG1fbGFzdFJlcXVlc3Rl
ZFRleHRDaGVja1N0cmluZy5kYXRhKCksIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZy5s
ZW5ndGgoKSk7CisgICAgc3RyaW5nMTYgdGV4dCA9IG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0
cmluZzsKICAgICB3aGlsZSAodGV4dC5sZW5ndGgoKSkgewogICAgICAgICBpbnQgbWlzc3BlbGxl
ZFBvc2l0aW9uID0gMDsKICAgICAgICAgaW50IG1pc3NwZWxsZWRMZW5ndGggPSAwOwotICAgICAg
ICBtX3NwZWxsY2hlY2suc3BlbGxDaGVja1dvcmQoV2ViU3RyaW5nKHRleHQuY2hhcmFjdGVycygp
LCB0ZXh0Lmxlbmd0aCgpKSwgJm1pc3NwZWxsZWRQb3NpdGlvbiwgJm1pc3NwZWxsZWRMZW5ndGgp
OworICAgICAgICBtX3NwZWxsY2hlY2suc3BlbGxDaGVja1dvcmQoV2ViU3RyaW5nKHRleHQpLCAm
bWlzc3BlbGxlZFBvc2l0aW9uLCAmbWlzc3BlbGxlZExlbmd0aCk7CiAgICAgICAgIGlmICghbWlz
c3BlbGxlZExlbmd0aCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBXZWJWZWN0b3I8V2Vi
U3RyaW5nPiBzdWdnZXN0aW9uczsKLSAgICAgICAgbV9zcGVsbGNoZWNrLmZpbGxTdWdnZXN0aW9u
TGlzdChXZWJTdHJpbmcodGV4dC5jaGFyYWN0ZXJzKCkgKyBtaXNzcGVsbGVkUG9zaXRpb24sIG1p
c3NwZWxsZWRMZW5ndGgpLCAmc3VnZ2VzdGlvbnMpOwotICAgICAgICByZXN1bHRzLmFwcGVuZChX
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQoV2ViVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nLCBvZmZzZXQg
KyBtaXNzcGVsbGVkUG9zaXRpb24sIG1pc3NwZWxsZWRMZW5ndGgsIHN1Z2dlc3Rpb25zLmlzRW1w
dHkoKSA/IFdlYlN0cmluZygpIDogc3VnZ2VzdGlvbnNbMF0pKTsKLSAgICAgICAgdGV4dCA9IHRl
eHQuc3Vic3RyaW5nKG1pc3NwZWxsZWRQb3NpdGlvbiArIG1pc3NwZWxsZWRMZW5ndGgpOworICAg
ICAgICBtX3NwZWxsY2hlY2suZmlsbFN1Z2dlc3Rpb25MaXN0KFdlYlN0cmluZyh0ZXh0LnN1YnN0
cihtaXNzcGVsbGVkUG9zaXRpb24sIG1pc3NwZWxsZWRMZW5ndGgpKSwgJnN1Z2dlc3Rpb25zKTsK
KyAgICAgICAgcmVzdWx0cy5wdXNoX2JhY2soV2ViVGV4dENoZWNraW5nUmVzdWx0KFdlYlRleHRD
aGVja2luZ1R5cGVTcGVsbGluZywgb2Zmc2V0ICsgbWlzc3BlbGxlZFBvc2l0aW9uLCBtaXNzcGVs
bGVkTGVuZ3RoLCBzdWdnZXN0aW9ucy5pc0VtcHR5KCkgPyBXZWJTdHJpbmcoKSA6IHN1Z2dlc3Rp
b25zWzBdKSk7CisgICAgICAgIHRleHQgPSB0ZXh0LnN1YnN0cihtaXNzcGVsbGVkUG9zaXRpb24g
KyBtaXNzcGVsbGVkTGVuZ3RoKTsKICAgICAgICAgb2Zmc2V0ICs9IG1pc3NwZWxsZWRQb3NpdGlv
biArIG1pc3NwZWxsZWRMZW5ndGg7CiAgICAgfQogICAgIE1vY2tHcmFtbWFyQ2hlY2s6OmNoZWNr
R3JhbW1hck9mU3RyaW5nKG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZywgJnJlc3VsdHMp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvVGVzdENvbW1vbi5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdENvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxNmM2MGNiMmM5Y2M4ZTBmOWEyYzk2ZGU3
ZDBkYzNlNGVhZDQzMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0Q29tbW9uLmgKQEAgLTAsMCArMSw0NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVGVzdENvbW1vbl9oCisjZGVmaW5lIFRlc3RDb21tb25faAorCisjaW5jbHVkZSA8YmFzZS9j
b21waWxlcl9zcGVjaWZpYy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21tb24uaD4KKyNpbmNs
dWRlIDxzdGRpby5oPgorCisjaWYgZGVmaW5lZChXSU4zMikKKyNkZWZpbmUgc25wcmludGYoc3Ry
LCBzaXplLCBmb3JtYXQsIC4uLikgX3ZzbnByaW50Zl9zKHN0ciwgc2l6ZSwgc2l6ZSwgZm9ybWF0
LCBfX1ZBX0FSR1NfXykKKyNlbmRpZgorCitpbmxpbmUgYm9vbCBpc0FTQ0lJQWxwaGEoY2hhciBj
aCkgeyByZXR1cm4gKGNoIHwgMHgyMCkgPj0gJ2EnICYmIChjaCB8IDB4MjApIDw9ICd6JzsgfQor
CitpbmxpbmUgYm9vbCBpc05vdEFTQ0lJQWxwaGEoY2hhciBjaCkgeyByZXR1cm4gIWlzQVNDSUlB
bHBoYShjaCk7IH0KKworI2VuZGlmIC8vIFRlc3RDb21tb25faApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVy
ZmFjZXMuY3BwCmluZGV4IGUzZGNmODAyMDUxNmM1YzFiZmUxNWMzMmM2ZDI3NDAxY2U1YjE2MDgu
LjQ2ZDZhZDA2NWJhMzBhMmE2MWZjYmUxZWVlODljODQ1MmVmZjU4YmIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2Vz
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0SW50ZXJmYWNlcy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCB1c2luZyBXZWJLaXQ6OldlYlZp
ZXc7CiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIFRlc3RJbnRlcmZhY2VzOjpUZXN0SW50
ZXJmYWNlcygpCi0gICAgOiBtX3dlYlZpZXcoMCkKKyAgICA6IG1fYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIobmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkpCisgICAgLCBtX2V2ZW50U2VuZGVy
KG5ldyBFdmVudFNlbmRlcigpKQorICAgICwgbV9nYW1lcGFkQ29udHJvbGxlcihuZXcgR2FtZXBh
ZENvbnRyb2xsZXIoKSkKKyAgICAsIG1fdGV4dElucHV0Q29udHJvbGxlcihuZXcgVGV4dElucHV0
Q29udHJvbGxlcigpKQorICAgICwgbV90ZXN0UnVubmVyKG5ldyBUZXN0UnVubmVyKCkpCisgICAg
LCBtX3dlYlZpZXcoMCkKIHsKLSAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gYWRvcHRQ
dHIobmV3IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkpOwotICAgIG1fZXZlbnRTZW5kZXIgPSBh
ZG9wdFB0cihuZXcgRXZlbnRTZW5kZXIoKSk7Ci0gICAgbV9nYW1lcGFkQ29udHJvbGxlciA9IGFk
b3B0UHRyKG5ldyBHYW1lcGFkQ29udHJvbGxlcigpKTsKLSAgICBtX3RleHRJbnB1dENvbnRyb2xs
ZXIgPSBhZG9wdFB0cihuZXcgVGV4dElucHV0Q29udHJvbGxlcigpKTsKLSAgICBtX3Rlc3RSdW5u
ZXIgPSBhZG9wdFB0cihuZXcgVGVzdFJ1bm5lcigpKTsKIH0KIAogVGVzdEludGVyZmFjZXM6On5U
ZXN0SW50ZXJmYWNlcygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaAppbmRleCBkODM0YzQwYjE2
Mjc0MmE2NDg2MWFjZDRjYmM3OGI2ZWJiZTc0OTI5Li44M2IzOGRiNjgxNzlhZDM4NWUxZjI1MDEw
MjU4ZWI1MGM5ZGZkNDkxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKQEAgLTMxLDcgKzMx
LDcgQEAKICNpZm5kZWYgVGVzdEludGVyZmFjZXNfaAogI2RlZmluZSBUZXN0SW50ZXJmYWNlc19o
CiAKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZyYW1lOwpAQCAtNjUsMTEgKzY1LDExIEBAIHB1YmxpYzoK
IAogCiBwcml2YXRlOgotICAgIE93blB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gbV9hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjsKLSAgICBPd25QdHI8RXZlbnRTZW5kZXI+IG1fZXZlbnRTZW5k
ZXI7Ci0gICAgT3duUHRyPEdhbWVwYWRDb250cm9sbGVyPiBtX2dhbWVwYWRDb250cm9sbGVyOwot
ICAgIE93blB0cjxUZXh0SW5wdXRDb250cm9sbGVyPiBtX3RleHRJbnB1dENvbnRyb2xsZXI7Ci0g
ICAgT3duUHRyPFRlc3RSdW5uZXI+IG1fdGVzdFJ1bm5lcjsKKyAgICBzdGQ6OmF1dG9fcHRyPEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyPiBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOworICAgIHN0
ZDo6YXV0b19wdHI8RXZlbnRTZW5kZXI+IG1fZXZlbnRTZW5kZXI7CisgICAgc3RkOjphdXRvX3B0
cjxHYW1lcGFkQ29udHJvbGxlcj4gbV9nYW1lcGFkQ29udHJvbGxlcjsKKyAgICBzdGQ6OmF1dG9f
cHRyPFRleHRJbnB1dENvbnRyb2xsZXI+IG1fdGV4dElucHV0Q29udHJvbGxlcjsKKyAgICBzdGQ6
OmF1dG9fcHRyPFRlc3RSdW5uZXI+IG1fdGVzdFJ1bm5lcjsKICAgICBXZWJLaXQ6OldlYlZpZXcq
IG1fd2ViVmlldzsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5jcHAKaW5kZXggMTlmZDBiMjY2ZDM5
Y2U5YjU0NTAwM2MwNTM2MGUxMTNkYmUxZWJlZS4uYTRlZDhiMGY1OTI3ZWY5MGYxODE5ZWU5MGY0
MjllZDI5MmUyOThiMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXN0UGx1Z2luLmgiCiAKKyNpbmNsdWRl
ICJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJJbnB1
dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCkBAIC0zNSwxMiArMzYsOSBAQAogI2luY2x1
ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3Vw
cG9ydC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgotI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNw
YWNlIFdlYlRlc3RSdW5uZXIgewogCkBAIC05OSw3ICs5Nyw3IEBAIGNvbnN0IGNoYXIqIHBvaW50
U3RhdGUoV2ViVG91Y2hQb2ludDo6U3RhdGUgc3RhdGUpCiAgICAgICAgIHJldHVybiAiVW5rbm93
biI7CiAgICAgfQogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMzQsMTIgKzEzMiw5IEBA
IHZvaWQgcHJpbnRFdmVudERldGFpbHMoV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSwgY29uc3Qg
V2ViSW5wdXRFdmVudCYgZXZlbnQpCiAKIFdlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJl
cXVlc3RUeXBlIHBhcnNlVG91Y2hFdmVudFJlcXVlc3RUeXBlKGNvbnN0IFdlYlN0cmluZyYgc3Ry
aW5nKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgV2ViU3RyaW5nLCBrUHJpbWl0
aXZlUmF3LCAoV2ViU3RyaW5nOjpmcm9tVVRGOCgicmF3IikpKTsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFdlYlN0cmluZywga1ByaW1pdGl2ZVN5bnRoZXRpYywgKFdlYlN0cmluZzo6
ZnJvbVVURjgoInN5bnRoZXRpYyIpKSk7Ci0KLSAgICBpZiAoc3RyaW5nID09IGtQcmltaXRpdmVS
YXcpCisgICAgaWYgKHN0cmluZyA9PSBXZWJTdHJpbmc6OmZyb21VVEY4KCJyYXciKSkKICAgICAg
ICAgcmV0dXJuIFdlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJlcXVlc3RUeXBlUmF3Owot
ICAgIGlmIChzdHJpbmcgPT0ga1ByaW1pdGl2ZVN5bnRoZXRpYykKKyAgICBpZiAoc3RyaW5nID09
IFdlYlN0cmluZzo6ZnJvbVVURjgoInN5bnRoZXRpYyIpKQogICAgICAgICByZXR1cm4gV2ViUGx1
Z2luQ29udGFpbmVyOjpUb3VjaEV2ZW50UmVxdWVzdFR5cGVTeW50aGVzaXplZE1vdXNlOwogICAg
IHJldHVybiBXZWJQbHVnaW5Db250YWluZXI6OlRvdWNoRXZlbnRSZXF1ZXN0VHlwZU5vbmU7CiB9
CkBAIC0xNjgsNyArMTYzLDcgQEAgVGVzdFBsdWdpbjo6VGVzdFBsdWdpbihXZWJGcmFtZSogZnJh
bWUsIGNvbnN0IFdlYlBsdWdpblBhcmFtcyYgcGFyYW1zLCBXZWJUZXN0RGUKICAgICBzdGF0aWMg
Y29uc3QgV2ViU3RyaW5nIGtBdHRyaWJ1dGVDYW5Qcm9jZXNzRHJhZyA9IFdlYlN0cmluZzo6ZnJv
bVVURjgoImNhbi1wcm9jZXNzLWRyYWciKTsKICAgICBzdGF0aWMgY29uc3QgV2ViU3RyaW5nIGtB
dHRyaWJ1dGVQcmludFVzZXJHZXN0dXJlU3RhdHVzID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgicHJp
bnQtdXNlci1nZXN0dXJlLXN0YXR1cyIpOwogCi0gICAgQVNTRVJUKHBhcmFtcy5hdHRyaWJ1dGVO
YW1lcy5zaXplKCkgPT0gcGFyYW1zLmF0dHJpYnV0ZVZhbHVlcy5zaXplKCkpOworICAgIFdFQktJ
VF9BU1NFUlQocGFyYW1zLmF0dHJpYnV0ZU5hbWVzLnNpemUoKSA9PSBwYXJhbXMuYXR0cmlidXRl
VmFsdWVzLnNpemUoKSk7CiAgICAgc2l6ZV90IHNpemUgPSBwYXJhbXMuYXR0cmlidXRlTmFtZXMu
c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAg
IGNvbnN0IFdlYlN0cmluZyYgYXR0cmlidXRlTmFtZSA9IHBhcmFtcy5hdHRyaWJ1dGVOYW1lc1tp
XTsKQEAgLTIxMiw3ICsyMDcsNyBAQCBib29sIFRlc3RQbHVnaW46OmluaXRpYWxpemUoV2ViUGx1
Z2luQ29udGFpbmVyKiBjb250YWluZXIpCiAgICAgaWYgKCFpbml0U2NlbmUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgbV9sYXllciA9IGFkb3B0UHRyKFBsYXRmb3JtOjpjdXJyZW50
KCktPmNvbXBvc2l0b3JTdXBwb3J0KCktPmNyZWF0ZUV4dGVybmFsVGV4dHVyZUxheWVyKHRoaXMp
KTsKKyAgICBtX2xheWVyID0gYXV0b19wdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+KFBsYXRm
b3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCktPmNyZWF0ZUV4dGVybmFsVGV4dHVy
ZUxheWVyKHRoaXMpKTsKICAgICBtX2NvbnRhaW5lciA9IGNvbnRhaW5lcjsKICAgICBtX2NvbnRh
aW5lci0+c2V0V2ViTGF5ZXIobV9sYXllci0+bGF5ZXIoKSk7CiAgICAgaWYgKG1fcmVSZXF1ZXN0
VG91Y2hFdmVudHMpIHsKQEAgLTIyOCw3ICsyMjMsNyBAQCB2b2lkIFRlc3RQbHVnaW46OmRlc3Ry
b3koKQogewogICAgIGlmIChtX2NvbnRhaW5lcikKICAgICAgICAgbV9jb250YWluZXItPnNldFdl
YkxheWVyKDApOwotICAgIG1fbGF5ZXIuY2xlYXIoKTsKKyAgICBtX2xheWVyLnJlc2V0KCk7CiAg
ICAgZGVzdHJveVNjZW5lKCk7CiAKICAgICBkZWxldGUgbV9jb250ZXh0OwpAQCAtMjc1LDcgKzI3
MCw3IEBAIFRlc3RQbHVnaW46OlByaW1pdGl2ZSBUZXN0UGx1Z2luOjpwYXJzZVByaW1pdGl2ZShj
b25zdCBXZWJTdHJpbmcmIHN0cmluZykKICAgICBlbHNlIGlmIChzdHJpbmcgPT0ga1ByaW1pdGl2
ZVRyaWFuZ2xlKQogICAgICAgICBwcmltaXRpdmUgPSBQcmltaXRpdmVUcmlhbmdsZTsKICAgICBl
bHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHByaW1pdGl2ZTsKIH0KIApAQCAtMjk0LDcgKzI4
OSw3IEBAIHZvaWQgVGVzdFBsdWdpbjo6cGFyc2VDb2xvcihjb25zdCBXZWJTdHJpbmcmIHN0cmlu
ZywgdW5zaWduZWQgY29sb3JbM10pCiAgICAgZWxzZSBpZiAoc3RyaW5nID09ICJibHVlIikKICAg
ICAgICAgY29sb3JbMl0gPSAyNTU7CiAgICAgZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBmbG9hdCBU
ZXN0UGx1Z2luOjpwYXJzZU9wYWNpdHkoY29uc3QgV2ViU3RyaW5nJiBzdHJpbmcpCkBAIC0zNjEs
MTQgKzM1NiwxNCBAQCB2b2lkIFRlc3RQbHVnaW46OmRlc3Ryb3lTY2VuZSgpCiAKIGJvb2wgVGVz
dFBsdWdpbjo6aW5pdFByb2dyYW0oKQogewotICAgIGNvbnN0IENTdHJpbmcgdmVydGV4U291cmNl
KAorICAgIGNvbnN0IHN0cmluZyB2ZXJ0ZXhTb3VyY2UoCiAgICAgICAgICJhdHRyaWJ1dGUgdmVj
NCBwb3NpdGlvbjsgIFxuIgogICAgICAgICAidm9pZCBtYWluKCkgeyAgICAgICAgICAgICBcbiIK
ICAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsgXG4iCiAgICAgICAgICJ9ICAgICAg
ICAgICAgICAgICAgICAgICAgIFxuIgogICAgICk7CiAKLSAgICBjb25zdCBDU3RyaW5nIGZyYWdt
ZW50U291cmNlKAorICAgIGNvbnN0IHN0cmluZyBmcmFnbWVudFNvdXJjZSgKICAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyBcbiIKICAgICAgICAgInVuaWZvcm0gdmVjNCBjb2xvcjsg
ICAgICBcbiIKICAgICAgICAgInZvaWQgbWFpbigpIHsgICAgICAgICAgICBcbiIKQEAgLTM4Nyw3
ICszODIsNyBAQCBib29sIFRlc3RQbHVnaW46OmluaXRQcm9ncmFtKCkKIAogYm9vbCBUZXN0UGx1
Z2luOjppbml0UHJpbWl0aXZlKCkKIHsKLSAgICBBU1NFUlQobV9zY2VuZS5wcmltaXRpdmUgPT0g
UHJpbWl0aXZlVHJpYW5nbGUpOworICAgIFdFQktJVF9BU1NFUlQobV9zY2VuZS5wcmltaXRpdmUg
PT0gUHJpbWl0aXZlVHJpYW5nbGUpOwogCiAgICAgbV9zY2VuZS52Ym8gPSBtX2NvbnRleHQtPmNy
ZWF0ZUJ1ZmZlcigpOwogICAgIGlmICghbV9zY2VuZS52Ym8pCkBAIC00MDUsOSArNDAwLDkgQEAg
Ym9vbCBUZXN0UGx1Z2luOjppbml0UHJpbWl0aXZlKCkKIAogdm9pZCBUZXN0UGx1Z2luOjpkcmF3
UHJpbWl0aXZlKCkKIHsKLSAgICBBU1NFUlQobV9zY2VuZS5wcmltaXRpdmUgPT0gUHJpbWl0aXZl
VHJpYW5nbGUpOwotICAgIEFTU0VSVChtX3NjZW5lLnZibyk7Ci0gICAgQVNTRVJUKG1fc2NlbmUu
cHJvZ3JhbSk7CisgICAgV0VCS0lUX0FTU0VSVChtX3NjZW5lLnByaW1pdGl2ZSA9PSBQcmltaXRp
dmVUcmlhbmdsZSk7CisgICAgV0VCS0lUX0FTU0VSVChtX3NjZW5lLnZibyk7CisgICAgV0VCS0lU
X0FTU0VSVChtX3NjZW5lLnByb2dyYW0pOwogCiAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1f
c2NlbmUucHJvZ3JhbSk7CiAKQEAgLTQyMyw3ICs0MTgsNyBAQCB2b2lkIFRlc3RQbHVnaW46OmRy
YXdQcmltaXRpdmUoKQogICAgIG1fY29udGV4dC0+ZHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAs
IDMpOwogfQogCi11bnNpZ25lZCBUZXN0UGx1Z2luOjpsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUs
IGNvbnN0IENTdHJpbmcmIHNvdXJjZSkKK3Vuc2lnbmVkIFRlc3RQbHVnaW46OmxvYWRTaGFkZXIo
dW5zaWduZWQgdHlwZSwgY29uc3Qgc3RyaW5nJiBzb3VyY2UpCiB7CiAgICAgdW5zaWduZWQgc2hh
ZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFkZXIodHlwZSk7CiAgICAgaWYgKHNoYWRlcikgewpA
QCAtNDQwLDcgKzQzNSw3IEBAIHVuc2lnbmVkIFRlc3RQbHVnaW46OmxvYWRTaGFkZXIodW5zaWdu
ZWQgdHlwZSwgY29uc3QgQ1N0cmluZyYgc291cmNlKQogICAgIHJldHVybiBzaGFkZXI7CiB9CiAK
LXVuc2lnbmVkIFRlc3RQbHVnaW46OmxvYWRQcm9ncmFtKGNvbnN0IENTdHJpbmcmIHZlcnRleFNv
dXJjZSwgY29uc3QgQ1N0cmluZyYgZnJhZ21lbnRTb3VyY2UpCit1bnNpZ25lZCBUZXN0UGx1Z2lu
Ojpsb2FkUHJvZ3JhbShjb25zdCBzdHJpbmcmIHZlcnRleFNvdXJjZSwgY29uc3Qgc3RyaW5nJiBm
cmFnbWVudFNvdXJjZSkKIHsKICAgICB1bnNpZ25lZCB2ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVy
KEdMX1ZFUlRFWF9TSEFERVIsIHZlcnRleFNvdXJjZSk7CiAgICAgdW5zaWduZWQgZnJhZ21lbnRT
aGFkZXIgPSBsb2FkU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgZnJhZ21lbnRTb3VyY2UpOwpA
QCAtNTMyLDcgKzUyNyw3IEBAIGJvb2wgVGVzdFBsdWdpbjo6aGFuZGxlRHJhZ1N0YXR1c1VwZGF0
ZShXZWJEcmFnU3RhdHVzIGRyYWdTdGF0dXMsIGNvbnN0IFdlYkRyYWdECiAgICAgICAgIGRyYWdT
dGF0dXNOYW1lID0gIkRyYWdEcm9wIjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJEcmFn
U3RhdHVzVW5rbm93bjoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRN
ZXNzYWdlKHN0ZDo6c3RyaW5nKCJQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6ICIpICsgZHJhZ1N0YXR1
c05hbWUgKyAiXG4iKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmgKaW5kZXgg
MWUxMDBkYWU5MWZjMDJjMGQxMDk5MmQ1NzZjODQyMGIwYWQ0ZTQ0Ni4uNTNiMjJlMTFiYzY2YmQ1
MWZhNTMzMjIzZTI4ZjNlNTNkZDIwYjg5YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5oCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uaApAQCAtMjgsOSAr
MjgsMTAgQEAKIAogI2luY2x1ZGUgIldlYlBsdWdpbi5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkNv
bnRhaW5lci5oIgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJDbGllbnQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8c3RyaW5nPgog
CiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKQEAgLTEyNCw4ICsxMjUsOCBAQCBwcml2YXRl
OgogICAgIGJvb2wgaW5pdFByb2dyYW0oKTsKICAgICBib29sIGluaXRQcmltaXRpdmUoKTsKICAg
ICB2b2lkIGRyYXdQcmltaXRpdmUoKTsKLSAgICB1bnNpZ25lZCBsb2FkU2hhZGVyKHVuc2lnbmVk
IHR5cGUsIGNvbnN0IFdURjo6Q1N0cmluZyYgc291cmNlKTsKLSAgICB1bnNpZ25lZCBsb2FkUHJv
Z3JhbShjb25zdCBXVEY6OkNTdHJpbmcmIHZlcnRleFNvdXJjZSwgY29uc3QgV1RGOjpDU3RyaW5n
JiBmcmFnbWVudFNvdXJjZSk7CisgICAgdW5zaWduZWQgbG9hZFNoYWRlcih1bnNpZ25lZCB0eXBl
LCBjb25zdCBzdGQ6OnN0cmluZyYgc291cmNlKTsKKyAgICB1bnNpZ25lZCBsb2FkUHJvZ3JhbShj
b25zdCBzdGQ6OnN0cmluZyYgdmVydGV4U291cmNlLCBjb25zdCBzdGQ6OnN0cmluZyYgZnJhZ21l
bnRTb3VyY2UpOwogCiAgICAgV2ViS2l0OjpXZWJGcmFtZSogbV9mcmFtZTsKICAgICBXZWJUZXN0
RGVsZWdhdGUqIG1fZGVsZWdhdGU7CkBAIC0xMzYsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX2NvbG9yVGV4dHVyZTsKICAgICB1bnNpZ25lZCBtX2ZyYW1lYnVmZmVyOwogICAg
IFNjZW5lIG1fc2NlbmU7Ci0gICAgT3duUHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXI+IG1fbGF5ZXI7CisgICAgc3RkOjphdXRvX3B0cjxXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVyPiBtX2xheWVyOwogCiAgICAgV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXI6OlRvdWNo
RXZlbnRSZXF1ZXN0VHlwZSBtX3RvdWNoRXZlbnRSZXF1ZXN0OwogICAgIC8vIFJlcXVlc3RzIHRv
dWNoIGV2ZW50cyBmcm9tIHRoZSBXZWJQbHVnaW5Db250YWluZXJJbXBsIG11bHRpcGxlIHRpbWVz
IHRvIHRpY2tsZSB3ZWJraXQub3JnL2IvMTA4MzgxCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCmluZGV4
IDg5OTAxMmIzMmFjMmIxNWFlNWEwNjBkZTdjMmRlYzM1NGQzYzUzODguLmI2OWZkZmI1ZGNlMzRh
NmQ2OWM5M2Y5ZjdjYmI1Zjc0MGQ5MDNiY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCkBAIC01
NSwxMiArNTUsMTIgQEAKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViV29ya2Vy
SW5mby5oIgogI2luY2x1ZGUgInY4L2luY2x1ZGUvdjguaCIKKyNpbmNsdWRlIDxsaW1pdHM+Cisj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJEYXRhLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYlBvaW50Lmg+Ci0jaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBPUyhMSU5VWCkgfHwgT1MoQU5EUk9JRCkK
KyNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChBTkRST0lEKQogI2luY2x1ZGUgImxp
bnV4L1dlYkZvbnRSZW5kZXJpbmcuaCIKICNlbmRpZgogCkBAIC04MywyMiArODMsMjAgQEAgcHVi
bGljOgogCiBjbGFzcyBJbnZva2VDYWxsYmFja1Rhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxU
ZXN0UnVubmVyPiB7CiBwdWJsaWM6Ci0gICAgSW52b2tlQ2FsbGJhY2tUYXNrKFRlc3RSdW5uZXIq
IG9iamVjdCwgUGFzc093bkFycmF5UHRyPENwcFZhcmlhbnQ+IGNhbGxiYWNrQXJndW1lbnRzLCB1
aW50MzJfdCBudW1iZXJPZkFyZ3VtZW50cykKKyAgICBJbnZva2VDYWxsYmFja1Rhc2soVGVzdFJ1
bm5lciogb2JqZWN0LCBhdXRvX3B0cjxDcHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cykKICAg
ICAgICAgOiBXZWJNZXRob2RUYXNrPFRlc3RSdW5uZXI+KG9iamVjdCkKICAgICAgICAgLCBtX2Nh
bGxiYWNrQXJndW1lbnRzKGNhbGxiYWNrQXJndW1lbnRzKQotICAgICAgICAsIG1fbnVtYmVyT2ZB
cmd1bWVudHMobnVtYmVyT2ZBcmd1bWVudHMpCiAgICAgewogICAgIH0KIAogICAgIHZpcnR1YWwg
dm9pZCBydW5JZlZhbGlkKCkKICAgICB7CiAgICAgICAgIENwcFZhcmlhbnQgaW52b2tlUmVzdWx0
OwotICAgICAgICBtX2NhbGxiYWNrQXJndW1lbnRzWzBdLmludm9rZURlZmF1bHQobV9jYWxsYmFj
a0FyZ3VtZW50cy5nZXQoKSwgbV9udW1iZXJPZkFyZ3VtZW50cywgaW52b2tlUmVzdWx0KTsKKyAg
ICAgICAgbV9jYWxsYmFja0FyZ3VtZW50cy0+aW52b2tlRGVmYXVsdChtX2NhbGxiYWNrQXJndW1l
bnRzLmdldCgpLCAxLCBpbnZva2VSZXN1bHQpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBPd25B
cnJheVB0cjxDcHBWYXJpYW50PiBtX2NhbGxiYWNrQXJndW1lbnRzOwotICAgIHVpbnQzMl90IG1f
bnVtYmVyT2ZBcmd1bWVudHM7CisgICAgYXV0b19wdHI8Q3BwVmFyaWFudD4gbV9jYWxsYmFja0Fy
Z3VtZW50czsKIH07CiAKIH0KQEAgLTExMyw3ICsxMTEsNyBAQCB2b2lkIFRlc3RSdW5uZXI6Oldv
cmtRdWV1ZTo6cHJvY2Vzc1dvcmtTb29uKCkKICAgICBpZiAobV9jb250cm9sbGVyLT50b3BMb2Fk
aW5nRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX3F1ZXVlLmlzRW1wdHko
KSkgeworICAgIGlmICghbV9xdWV1ZS5lbXB0eSgpKSB7CiAgICAgICAgIC8vIFdlIGRlbGF5IHBy
b2Nlc3NpbmcgcXVldWVkIHdvcmsgdG8gYXZvaWQgcmVjdXJzaW9uIHByb2JsZW1zLgogICAgICAg
ICBtX2NvbnRyb2xsZXItPm1fZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBXb3JrUXVldWVUYXNrKHRo
aXMpKTsKICAgICB9IGVsc2UgaWYgKCFtX2NvbnRyb2xsZXItPm1fd2FpdFVudGlsRG9uZSkKQEAg
LTEyMyw5ICsxMjEsMTAgQEAgdm9pZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6OnByb2Nlc3NXb3Jr
U29vbigpCiB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dvcmsoKQogewogICAg
IC8vIFF1aXQgZG9pbmcgd29yayBvbmNlIGEgbG9hZCBpcyBpbiBwcm9ncmVzcy4KLSAgICB3aGls
ZSAoIW1fcXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGJvb2wgc3RhcnRlZExvYWQgPSBtX3F1
ZXVlLmZpcnN0KCktPnJ1bihtX2NvbnRyb2xsZXItPm1fZGVsZWdhdGUsIG1fY29udHJvbGxlci0+
bV93ZWJWaWV3KTsKLSAgICAgICAgZGVsZXRlIG1fcXVldWUudGFrZUZpcnN0KCk7CisgICAgd2hp
bGUgKCFtX3F1ZXVlLmVtcHR5KCkpIHsKKyAgICAgICAgYm9vbCBzdGFydGVkTG9hZCA9IG1fcXVl
dWUuZnJvbnQoKS0+cnVuKG1fY29udHJvbGxlci0+bV9kZWxlZ2F0ZSwgbV9jb250cm9sbGVyLT5t
X3dlYlZpZXcpOworICAgICAgICBkZWxldGUgbV9xdWV1ZS5mcm9udCgpOworICAgICAgICBtX3F1
ZXVlLnBvcF9mcm9udCgpOwogICAgICAgICBpZiAoc3RhcnRlZExvYWQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTM3LDggKzEzNiwxMCBAQCB2b2lkIFRlc3RSdW5uZXI6OldvcmtR
dWV1ZTo6cHJvY2Vzc1dvcmsoKQogdm9pZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6OnJlc2V0KCkK
IHsKICAgICBtX2Zyb3plbiA9IGZhbHNlOwotICAgIHdoaWxlICghbV9xdWV1ZS5pc0VtcHR5KCkp
Ci0gICAgICAgIGRlbGV0ZSBtX3F1ZXVlLnRha2VGaXJzdCgpOworICAgIHdoaWxlICghbV9xdWV1
ZS5lbXB0eSgpKSB7CisgICAgICAgIGRlbGV0ZSBtX3F1ZXVlLmZyb250KCk7CisgICAgICAgIG1f
cXVldWUucG9wX2Zyb250KCk7CisgICAgfQogfQogCiB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1
ZTo6YWRkV29yayhXb3JrSXRlbSogd29yaykKQEAgLTE0Nyw3ICsxNDgsNyBAQCB2b2lkIFRlc3RS
dW5uZXI6OldvcmtRdWV1ZTo6YWRkV29yayhXb3JrSXRlbSogd29yaykKICAgICAgICAgZGVsZXRl
IHdvcms7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9xdWV1ZS5hcHBlbmQod29yayk7
CisgICAgbV9xdWV1ZS5wdXNoX2JhY2sod29yayk7CiB9CiAKIApAQCAtMTU2LDggKzE1Nyw4IEBA
IFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgICwgbV93b3JrUXVldWUodGhpcykKICAgICAs
IG1fZGVsZWdhdGUoMCkKICAgICAsIG1fd2ViVmlldygwKQotICAgICwgbV9pbnRlbnRDbGllbnQo
YWRvcHRQdHIobmV3IEVtcHR5V2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50KSkKLSAgICAsIG1fd2Vi
UGVybWlzc2lvbnMoYWRvcHRQdHIobmV3IFdlYlBlcm1pc3Npb25zKSkKKyAgICAsIG1faW50ZW50
Q2xpZW50KG5ldyBFbXB0eVdlYkRlbGl2ZXJlZEludGVudENsaWVudCkKKyAgICAsIG1fd2ViUGVy
bWlzc2lvbnMobmV3IFdlYlBlcm1pc3Npb25zKQogewogICAgIC8vIEluaXRpYWxpemUgdGhlIG1h
cCB0aGF0IGFzc29jaWF0ZXMgbWV0aG9kcyBvZiB0aGlzIGNsYXNzIHdpdGggdGhlIG5hbWVzCiAg
ICAgLy8gdGhleSB3aWxsIHVzZSB3aGVuIGNhbGxlZCBieSBKYXZhU2NyaXB0LiBUaGUgYWN0dWFs
IGJpbmRpbmcgb2YgdGhvc2UKQEAgLTIxNSwxMyArMjE2LDExIEBAIFRlc3RSdW5uZXI6OlRlc3RS
dW5uZXIoKQogICAgIGJpbmRNZXRob2QoInNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCIsICZU
ZXN0UnVubmVyOjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOwogICAgIGJpbmRNZXRob2Qo
InNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQiLCAmVGVzdFJ1bm5lcjo6c2V0U2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0Rl
dmljZU9yaWVudGF0aW9uIiwgJlRlc3RSdW5uZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik7
Ci0jaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBiaW5kTWV0aG9kKCJkaWRBY3F1aXJlUG9p
bnRlckxvY2siLCAmVGVzdFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKTsKICAgICBiaW5k
TWV0aG9kKCJkaWRMb3NlUG9pbnRlckxvY2siLCAmVGVzdFJ1bm5lcjo6ZGlkTG9zZVBvaW50ZXJM
b2NrKTsKICAgICBiaW5kTWV0aG9kKCJkaWROb3RBY3F1aXJlUG9pbnRlckxvY2siLCAmVGVzdFJ1
bm5lcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKTsKICAgICBiaW5kTWV0aG9kKCJzZXRQb2lu
dGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkiLCAmVGVzdFJ1bm5lcjo6c2V0UG9pbnRl
ckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5KTsKICAgICBiaW5kTWV0aG9kKCJzZXRQb2lu
dGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSIsICZUZXN0UnVubmVyOjpzZXRQb2ludGVyTG9j
a1dpbGxGYWlsU3luY2hyb25vdXNseSk7Ci0jZW5kaWYKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcg
bW9kaWZ5IFdlYlByZWZlcmVuY2VzLgogICAgIGJpbmRNZXRob2QoInNldFVzZXJTdHlsZVNoZWV0
RW5hYmxlZCIsICZUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQpOwpAQCAtMjcz
LDExICsyNzIsOSBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICBiaW5kTWV0aG9kKCJz
ZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCIsICZUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJl
cXVlc3RSZXR1cm5zTnVsbCk7CiAgICAgYmluZE1ldGhvZCgic2V0V2lsbFNlbmRSZXF1ZXN0UmV0
dXJuc051bGxPblJlZGlyZWN0IiwgJlRlc3RSdW5uZXI6OnNldFdpbGxTZW5kUmVxdWVzdFJldHVy
bnNOdWxsT25SZWRpcmVjdCk7CiAKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAgICAgLy8gVGhl
IGZvbGxvd2luZyBtZXRob2RzIGludGVyYWN0IHdpdGggdGhlIFdlYlRlc3RQcm94eS4KICAgICBi
aW5kTWV0aG9kKCJzZW5kV2ViSW50ZW50UmVzcG9uc2UiLCAmVGVzdFJ1bm5lcjo6c2VuZFdlYklu
dGVudFJlc3BvbnNlKTsKICAgICBiaW5kTWV0aG9kKCJkZWxpdmVyV2ViSW50ZW50IiwgJlRlc3RS
dW5uZXI6OmRlbGl2ZXJXZWJJbnRlbnQpOwotI2VuZGlmCiAKICAgICAvLyBUaGUgZm9sbG93aW5n
IG1ldGhvZHMgaW50ZXJhY3Qgd2l0aCB0aGUgV2ViVGVzdERlbGVnYXRlLgogICAgIGJpbmRNZXRo
b2QoInNob3dXZWJJbnNwZWN0b3IiLCAmVGVzdFJ1bm5lcjo6c2hvd1dlYkluc3BlY3Rvcik7CkBA
IC0yOTQsMTkgKzI5MSwxMyBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICBiaW5kTWV0
aG9kKCJzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24iLCAmVGVzdFJ1bm5lcjo6c2V0R2VvbG9jYXRp
b25QZXJtaXNzaW9uKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
blVuYXZhaWxhYmxlRXJyb3IiLCAmVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b25VbmF2YWlsYWJsZUVycm9yKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbiIsICZUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbik7Ci0jaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgYmluZE1ldGhvZCgiZ3JhbnRXZWJOb3RpZmljYXRp
b25QZXJtaXNzaW9uIiwgJlRlc3RSdW5uZXI6OmdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lv
bik7CiAgICAgYmluZE1ldGhvZCgic2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGljayIs
ICZUZXN0UnVubmVyOjpzaW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrKTsKLSNlbmRp
ZgotI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgYmluZE1ldGhvZCgiYWRkTW9ja1NwZWVj
aElucHV0UmVzdWx0IiwgJlRlc3RSdW5uZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk7CiAg
ICAgYmluZE1ldGhvZCgic2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QiLCAmVGVzdFJ1bm5lcjo6
c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNDUklQVEVE
X1NQRUVDSCkKICAgICBiaW5kTWV0aG9kKCJhZGRNb2NrU3BlZWNoUmVjb2duaXRpb25SZXN1bHQi
LCAmVGVzdFJ1bm5lcjo6YWRkTW9ja1NwZWVjaFJlY29nbml0aW9uUmVzdWx0KTsKICAgICBiaW5k
TWV0aG9kKCJzZXRNb2NrU3BlZWNoUmVjb2duaXRpb25FcnJvciIsICZUZXN0UnVubmVyOjpzZXRN
b2NrU3BlZWNoUmVjb2duaXRpb25FcnJvcik7CiAgICAgYmluZE1ldGhvZCgid2FzTW9ja1NwZWVj
aFJlY29nbml0aW9uQWJvcnRlZCIsICZUZXN0UnVubmVyOjp3YXNNb2NrU3BlZWNoUmVjb2duaXRp
b25BYm9ydGVkKTsKLSNlbmRpZgogICAgIGJpbmRNZXRob2QoImRpc3BsYXkiLCAmVGVzdFJ1bm5l
cjo6ZGlzcGxheSk7CiAgICAgYmluZE1ldGhvZCgiZGlzcGxheUludmFsaWRhdGVkUmVnaW9uIiwg
JlRlc3RSdW5uZXI6OmRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbik7CiAKQEAgLTMyMSwxMSArMzEy
LDkgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGFy
ZSBzdHVicy4KICAgICBiaW5kTWV0aG9kKCJkdW1wRGF0YWJhc2VDYWxsYmFja3MiLCAmVGVzdFJ1
bm5lcjo6bm90SW1wbGVtZW50ZWQpOwotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIGJp
bmRNZXRob2QoImRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uIiwgJlRlc3RSdW5uZXI6Om5v
dEltcGxlbWVudGVkKTsKICAgICBiaW5kTWV0aG9kKCJyZW1vdmVBbGxXZWJOb3RpZmljYXRpb25Q
ZXJtaXNzaW9ucyIsICZUZXN0UnVubmVyOjpub3RJbXBsZW1lbnRlZCk7CiAgICAgYmluZE1ldGhv
ZCgic2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayIsICZUZXN0UnVubmVyOjpub3RJbXBsZW1l
bnRlZCk7Ci0jZW5kaWYKICAgICBiaW5kTWV0aG9kKCJzZXRJY29uRGF0YWJhc2VFbmFibGVkIiwg
JlRlc3RSdW5uZXI6Om5vdEltcGxlbWVudGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRTY3JvbGxi
YXJQb2xpY3kiLCAmVGVzdFJ1bm5lcjo6bm90SW1wbGVtZW50ZWQpOwogICAgIGJpbmRNZXRob2Qo
ImNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMiLCAmVGVzdFJ1bm5lcjo6bm90SW1wbGVtZW50ZWQp
OwpAQCAtMzY2LDcgKzM1NSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cmVzZXQoKQogICAgIGlmICht
X3dlYlZpZXcpIHsKICAgICAgICAgbV93ZWJWaWV3LT5zZXRab29tTGV2ZWwoZmFsc2UsIDApOwog
ICAgICAgICBtX3dlYlZpZXctPnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyh0cnVlKTsK
LSNpZiAhT1MoREFSV0lOKSAmJiAhT1MoV0lORE9XUykgLy8gQWN0dWFsbHksIFRPT0xLSVRfR1RL
CisjaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChXSU4zMikgLy8gQWN0dWFsbHks
IFRPT0xLSVRfR1RLCiAgICAgICAgIC8vIChDb25zdGFudHMgY29waWVkIGJlY2F1c2Ugd2UgY2Fu
J3QgZGVwZW5kIG9uIHRoZSBoZWFkZXIgdGhhdCBkZWZpbmVkCiAgICAgICAgIC8vIHRoZW0gZnJv
bSB0aGlzIGZpbGUuKQogICAgICAgICBtX3dlYlZpZXctPnNldFNlbGVjdGlvbkNvbG9ycygweGZm
MWU5MGZmLCAweGZmMDAwMDAwLCAweGZmYzhjOGM4LCAweGZmMzIzMjMyKTsKQEAgLTM4MSw3ICsz
NzAsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBtX3BvbGljeURlbGVnYXRlU2hv
dWxkTm90aWZ5RG9uZSA9IGZhbHNlOwogCiAgICAgV2ViU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3Jp
Z2luQWNjZXNzV2hpdGVsaXN0cygpOwotI2lmIE9TKExJTlVYKSB8fCBPUyhBTkRST0lEKQorI2lm
IGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKEFORFJPSUQpCiAgICAgV2ViRm9udFJlbmRl
cmluZzo6c2V0U3VicGl4ZWxQb3NpdGlvbmluZyhmYWxzZSk7CiAjZW5kaWYKIApAQCAtNDIwLDcg
KzQwOSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cmVzZXQoKQogICAgIG1fc2hvdWxkQmxvY2tSZWRp
cmVjdHMgPSBmYWxzZTsKICAgICBtX3dpbGxTZW5kUmVxdWVzdFNob3VsZFJldHVybk51bGwgPSBm
YWxzZTsKICAgICBtX3NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9IHRydWU7Ci0jaWYgT1MoV0lO
RE9XUykKKyNpZmRlZiBXSU4zMgogICAgIG1fc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZCA9IHRydWU7CiAjZWxzZQogICAgIG1fc2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCA9
IGZhbHNlOwpAQCAtNjM2LDcgKzYyNSw3IEBAIFdlYkZyYW1lKiBUZXN0UnVubmVyOjp0b3BMb2Fk
aW5nRnJhbWUoKSBjb25zdAogCiB2b2lkIFRlc3RSdW5uZXI6OnBvbGljeURlbGVnYXRlRG9uZSgp
CiB7Ci0gICAgQVNTRVJUKG1fd2FpdFVudGlsRG9uZSk7CisgICAgV0VCS0lUX0FTU0VSVChtX3dh
aXRVbnRpbERvbmUpOwogICAgIG1fZGVsZWdhdGUtPnRlc3RGaW5pc2hlZCgpOwogICAgIG1fd2Fp
dFVudGlsRG9uZSA9IGZhbHNlOwogfQpAQCAtMTMzMSw3ICsxMzIwLDcgQEAgdm9pZCBUZXN0UnVu
bmVyOjpmaW5kU3RyaW5nKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW50KiByZXN1bHQKICAgICBXZWJGaW5kT3B0aW9ucyBmaW5kT3B0aW9uczsKICAgICBib29sIHdy
YXBBcm91bmQgPSBmYWxzZTsKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+PSAyKSB7Ci0gICAg
ICAgIFZlY3RvcjxzdGQ6OnN0cmluZz4gb3B0aW9uc0FycmF5ID0gYXJndW1lbnRzWzFdLnRvU3Ry
aW5nVmVjdG9yKCk7CisgICAgICAgIHZlY3RvcjxzdHJpbmc+IG9wdGlvbnNBcnJheSA9IGFyZ3Vt
ZW50c1sxXS50b1N0cmluZ1ZlY3RvcigpOwogICAgICAgICBmaW5kT3B0aW9ucy5tYXRjaENhc2Ug
PSB0cnVlOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3B0aW9uc0FycmF5LnNp
emUoKTsgKytpKSB7CkBAIC0xNDExLDcgKzE0MDAsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNlbGVj
dGlvbkFzTWFya3VwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50
KgogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFRleHRTdWJwaXhlbFBvc2l0aW9uaW5nKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7Ci0jaWYgT1Mo
TElOVVgpIHx8IE9TKEFORFJPSUQpCisjaWYgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQo
QU5EUk9JRCkKICAgICAvLyBTaW5jZSBGb250Q29uZmlnIGRvZXNuJ3QgcHJvdmlkZSBhIHZhcmlh
YmxlIHRvIGNvbnRyb2wgc3VicGl4ZWwgcG9zaXRpb25pbmcsIHdlJ2xsIGZhbGwgYmFjawogICAg
IC8vIHRvIHNldHRpbmcgaXQgZ2xvYmFsbHkgZm9yIGFsbCBmb250cy4KICAgICBpZiAoYXJndW1l
bnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKQpAQCAtMTY4MCw3ICsxNjY5
LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQKICAgICBlbHNlIGlmIChrZXkgPT0gIldlYktp
dFNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIikKICAgICAgICAgcHJlZnMtPnNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CiAgICAgZWxz
ZSBpZiAoa2V5ID09ICJXZWJLaXRXZWJBdWRpb0VuYWJsZWQiKQotICAgICAgICBBU1NFUlQoY3Bw
VmFyaWFudFRvQm9vbCh2YWx1ZSkpOworICAgICAgICBXRUJLSVRfQVNTRVJUKGNwcFZhcmlhbnRU
b0Jvb2wodmFsdWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgc3RyaW5nIG1lc3NhZ2UoIkludmFs
aWQgbmFtZSBmb3IgcHJlZmVyZW5jZTogIik7CiAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKGtleSk7
CkBAIC0xNzI1LDcgKzE3MTQsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFRvdWNoRHJhZ0Ryb3BF
bmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYQogICAgIHJlc3Vs
dC0+c2V0TnVsbCgpOwogfQogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogdm9pZCBUZXN0UnVu
bmVyOjpzZW5kV2ViSW50ZW50UmVzcG9uc2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CkBA
IC0xNzY3LDcgKzE3NTUsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OmRlbGl2ZXJXZWJJbnRlbnQoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqCiAKICAgICBtX3dlYlZp
ZXctPm1haW5GcmFtZSgpLT5kZWxpdmVySW50ZW50KGludGVudCwgMCwgbV9pbnRlbnRDbGllbnQu
Z2V0KCkpOwogfQotI2VuZGlmCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2hvd1dlYkluc3BlY3Rvcihj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CkBAIC0xODMzLDEw
ICsxODIwLDEwIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpCiAgICAgZmxvYXQgdmFsdWUgPSBh
cmd1bWVudHNbMF0udmFsdWUuZG91YmxlVmFsdWU7CiAgICAgbV9kZWxlZ2F0ZS0+c2V0RGV2aWNl
U2NhbGVGYWN0b3IodmFsdWUpOwogCi0gICAgT3duQXJyYXlQdHI8Q3BwVmFyaWFudD4gY2FsbGJh
Y2tBcmd1bWVudHMgPSBhZG9wdEFycmF5UHRyKG5ldyBDcHBWYXJpYW50WzFdKTsKLSAgICBjYWxs
YmFja0FyZ3VtZW50c1swXS5zZXQoYXJndW1lbnRzWzFdKTsKKyAgICBhdXRvX3B0cjxDcHBWYXJp
YW50PiBjYWxsYmFja0FyZ3VtZW50cyhuZXcgQ3BwVmFyaWFudCgpKTsKKyAgICBjYWxsYmFja0Fy
Z3VtZW50cy0+c2V0KGFyZ3VtZW50c1sxXSk7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0gICAg
bV9kZWxlZ2F0ZS0+cG9zdFRhc2sobmV3IEludm9rZUNhbGxiYWNrVGFzayh0aGlzLCBjYWxsYmFj
a0FyZ3VtZW50cy5yZWxlYXNlKCksIDEpKTsKKyAgICBtX2RlbGVnYXRlLT5wb3N0VGFzayhuZXcg
SW52b2tlQ2FsbGJhY2tUYXNrKHRoaXMsIGNhbGxiYWNrQXJndW1lbnRzKSk7CiB9CiAKIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0UE9TSVhMb2NhbGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTE4NzcsNyArMTg2NCw2IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IENw
cEFyZ3VtZW50TGlzCiAgICAgbV9kZWxlZ2F0ZS0+c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25V
bmF2YWlsYWJsZUVycm9yKGFyZ3VtZW50c1swXS50b1N0cmluZygpKTsKIH0KIAotI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQogdm9pZCBUZXN0UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJl
c3VsdCkKIHsKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAhPSAxIHx8ICFhcmd1bWVudHNbMF0u
aXNTdHJpbmcoKSkgewpAQCAtMTg5Niw5ICsxODgyLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzaW11
bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW0KICAgICB9CiAgICAgcmVzdWx0LT5zZXQobV9kZWxlZ2F0ZS0+c2ltdWxhdGVMZWdhY3lXZWJO
b3RpZmljYXRpb25DbGljayhhcmd1bWVudHNbMF0udG9TdHJpbmcoKSkpOwogfQotI2VuZGlmCiAK
LSNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogdm9pZCBUZXN0UnVubmVyOjphZGRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKQEAgLTE5MTYsOSArMTkwMCw3IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmd1bWVudHMsIENwCiAKICAgICBtX2RlbGVnYXRlLT5zZXRNb2NrU3BlZWNo
SW5wdXREdW1wUmVjdChhcmd1bWVudHNbMF0udG9Cb29sZWFuKCkpOwogfQotI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQogdm9pZCBUZXN0UnVubmVyOjphZGRNb2NrU3BlZWNo
UmVjb2duaXRpb25SZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKQEAgLTE5NDEsNyArMTky
Myw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6d2FzTW9ja1NwZWVjaFJlY29nbml0aW9uQWJvcnRlZChj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpCiB7CiAgICAgcmVzdWx0LT5zZXQobV9kZWxl
Z2F0ZS0+d2FzTW9ja1NwZWVjaFJlY29nbml0aW9uQWJvcnRlZCgpKTsKIH0KLSNlbmRpZgogCiB2
b2lkIFRlc3RSdW5uZXI6OmRpc3BsYXkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKQEAgLTIxMjEsNyArMjEwMiw2IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6bm90SW1wbGVtZW50ZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCog
cmVzdWx0KQogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCi0jaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKIHZvaWQgVGVzdFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBtX2RlbGVnYXRlLT5kaWRB
Y3F1aXJlUG9pbnRlckxvY2soKTsKQEAgLTIxNTEsNiArMjEzMSw1IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwCiAgICAgbV9kZWxlZ2F0ZS0+c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9u
b3VzbHkoKTsKICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KLSNlbmRpZgogCiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
UnVubmVyLmgKaW5kZXggMDQyZDUzNTA5Mjk1MWMyYzAwODE3YjE3ZDBiYmUxZWQxNWFjYTVmNS4u
N2MxNjViMDQxZGNjYzZkMTlhZGFiYTE2MGU3MDNhZWY2MjQyNjEzNCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuaApAQCAtMzQsMTUgKzM0LDE3IEBACiAjZGVmaW5lIFRlc3RSdW5uZXJfaAogCiAjaW5jbHVk
ZSAiQ3BwQm91bmRDbGFzcy5oIgorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJX
ZWJBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJUYXNrLmgiCiAjaW5jbHVkZSAiV2ViVGVzdFJ1bm5lci5oIgogI2lu
Y2x1ZGUgIldlYlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgogI2luY2x1ZGUgPHNldD4KICNpbmNs
dWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogY2xhc3MgV2ViQXJyYXlCdWZmZXJWaWV3OwpAQCAtMTQxLDcgKzE0Myw3IEBAIHByaXZhdGU6
CiAgICAgICAgIHZvaWQgYWRkV29yayhXb3JrSXRlbSopOwogCiAgICAgICAgIHZvaWQgc2V0RnJv
emVuKGJvb2wgZnJvemVuKSB7IG1fZnJvemVuID0gZnJvemVuOyB9Ci0gICAgICAgIGJvb2wgaXNF
bXB0eSgpIHsgcmV0dXJuIG1fcXVldWUuaXNFbXB0eSgpOyB9CisgICAgICAgIGJvb2wgaXNFbXB0
eSgpIHsgcmV0dXJuIG1fcXVldWUuZW1wdHkoKTsgfQogICAgICAgICBXZWJUYXNrTGlzdCogdGFz
a0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiAgICAgcHJpdmF0ZToKQEAgLTE1Myw3
ICsxNTUsNyBAQCBwcml2YXRlOgogICAgICAgICB9OwogCiAgICAgICAgIFdlYlRhc2tMaXN0IG1f
dGFza0xpc3Q7Ci0gICAgICAgIERlcXVlPFdvcmtJdGVtKj4gbV9xdWV1ZTsKKyAgICAgICAgc3Rk
OjpkZXF1ZTxXb3JrSXRlbSo+IG1fcXVldWU7CiAgICAgICAgIGJvb2wgbV9mcm96ZW47CiAgICAg
ICAgIFRlc3RSdW5uZXIqIG1fY29udHJvbGxlcjsKICAgICB9OwpAQCAtMjc1LDEzICsyNzcsMTEg
QEAgcHJpdmF0ZToKICAgICAvLyBEZXZpY2VPcmllbnRhdGlvbiByZWxhdGVkIGZ1bmN0aW9ucwog
ICAgIHZvaWQgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKIAotI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgdm9pZCBkaWRB
Y3F1aXJlUG9pbnRlckxvY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwog
ICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jayhjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRQb2ludGVyTG9ja1dpbGxGYWls
U3luY2hyb25vdXNseShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAg
dm9pZCBzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotI2VuZGlmCiAKICAgICAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KICAgICAvLyBNZXRob2RzIG1vZGlmeWluZyBXZWJQcmVmZXJlbmNlcy4KQEAgLTQyMCwxNCAr
NDIwLDEyIEBAIHByaXZhdGU6CiAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAgLy8gTWV0aG9k
cyBpbnRlcmFjdGluZyB3aXRoIHRoZSBXZWJUZXN0UHJveHkKIAotI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKICAgICAvLyBFeHBlY3RzIG9uZSBzdHJpbmcgYXJndW1lbnQgZm9yIHNlbmRpbmcgc3Vj
Y2Vzc2Z1bCByZXN1bHQsIHplcm8KICAgICAvLyBhcmd1bWVudHMgZm9yIHNlbmRpbmcgYSBmYWls
dXJlIHJlc3VsdC4KICAgICB2b2lkIHNlbmRXZWJJbnRlbnRSZXNwb25zZShjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICAvLyBDYXVzZSB0aGUgd2ViIGludGVudCB0
byBiZSBkZWxpdmVyZWQgdG8gdGhpcyBjb250ZXh0LgogICAgIHZvaWQgZGVsaXZlcldlYkludGVu
dChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0jZW5kaWYKIAogICAgIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwogICAgIC8vIE1ldGhvZHMgZm9yd2FyZGluZyB0byB0aGUgV2ViVGVz
dERlbGVnYXRlCkBAIC00NjgsMjMgKzQ2NiwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAotI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQogICAgIC8vIEdyYW50cyBwZXJtaXNzaW9uIGZvciBkZXNrdG9wIG5vdGlmaWNhdGlv
bnMgdG8gYW4gb3JpZ2luCiAgICAgdm9pZCBncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24o
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIC8vIFNpbXVsYXRlcyBh
IGNsaWNrIG9uIGEgZGVza3RvcCBub3RpZmljYXRpb24uCiAgICAgdm9pZCBzaW11bGF0ZUxlZ2Fj
eVdlYk5vdGlmaWNhdGlvbkNsaWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKLSNlbmRpZgogCiAgICAgLy8gU3BlZWNoIGlucHV0IHJlbGF0ZWQgZnVuY3Rpb25zLgotI2lm
IEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgdm9pZCBhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0TW9ja1Nw
ZWVjaElucHV0RHVtcFJlY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwot
I2VuZGlmCi0jaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKICAgICB2b2lkIGFkZE1vY2tTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
CiAgICAgdm9pZCBzZXRNb2NrU3BlZWNoUmVjb2duaXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCB3YXNNb2NrU3BlZWNoUmVjb2duaXRpb25B
Ym9ydGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLSNlbmRpZgogCiAg
ICAgdm9pZCBkaXNwbGF5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAg
ICB2b2lkIGRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CkBAIC02ODIsMTAgKzY3NCwxMCBAQCBwcml2YXRlOgogICAgIFdlYktpdDo6
V2ViRnJhbWUqIG1fdG9wTG9hZGluZ0ZyYW1lOwogCiAgICAgLy8gTW9jayBvYmplY3QgZm9yIHRl
c3RpbmcgZGVsaXZlcmluZyB3ZWIgaW50ZW50cy4KLSAgICBPd25QdHI8V2ViS2l0OjpXZWJEZWxp
dmVyZWRJbnRlbnRDbGllbnQ+IG1faW50ZW50Q2xpZW50OworICAgIHN0ZDo6YXV0b19wdHI8V2Vi
S2l0OjpXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQ+IG1faW50ZW50Q2xpZW50OwogCiAgICAgLy8g
V2ViUGVybWlzc2lvbkNsaWVudCBtb2NrIG9iamVjdC4KLSAgICBPd25QdHI8V2ViUGVybWlzc2lv
bnM+IG1fd2ViUGVybWlzc2lvbnM7CisgICAgc3RkOjphdXRvX3B0cjxXZWJQZXJtaXNzaW9ucz4g
bV93ZWJQZXJtaXNzaW9uczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGV4dElucHV0Q29udHJv
bGxlci5jcHAKaW5kZXggMzIyNWNiOTBjNDJhNmVlYmJiYWI1OTQ3MDcyZTMyYTRhN2EyMDI4MC4u
ZjVmOWIyYWU4MDkyYTM3OGMzMjY1MjNhZGYzN2ExOGFhOTQ0MDU1MiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGV4dElucHV0Q29udHJv
bGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvVGV4dElucHV0Q29udHJvbGxlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJUZXh0SW5wdXRDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJU
ZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViQmluZGluZ3MuaCIKICNpbmNsdWRlICJXZWJDb21w
b3NpdGlvblVuZGVybGluZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC00MCw5ICs0MSw5
IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJW
ZWN0b3IuaD4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFt
ZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCkBAIC0xNDYsNyArMTQ3LDcgQEAgdm9pZCBUZXh0SW5w
dXRDb250cm9sbGVyOjptYXJrZWRSYW5nZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50KiByZXN1bHQKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViUmFuZ2UgcmFuZ2UgPSBtYWlu
RnJhbWUtPm1hcmtlZFJhbmdlKCk7Ci0gICAgVmVjdG9yPGludD4gaW50QXJyYXkoMik7CisgICAg
dmVjdG9yPGludD4gaW50QXJyYXkoMik7CiAgICAgaW50QXJyYXlbMF0gPSByYW5nZS5zdGFydE9m
ZnNldCgpOwogICAgIGludEFycmF5WzFdID0gcmFuZ2UuZW5kT2Zmc2V0KCk7CiAgICAgcmVzdWx0
LT5zZXQoV2ViQmluZGluZ3M6Om1ha2VJbnRBcnJheShpbnRBcnJheSkpOwpAQCAtMTYxLDcgKzE2
Miw3IEBAIHZvaWQgVGV4dElucHV0Q29udHJvbGxlcjo6c2VsZWN0ZWRSYW5nZShjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1CiAgICAgICAgIHJldHVybjsKIAogICAgIFdl
YlJhbmdlIHJhbmdlID0gbWFpbkZyYW1lLT5zZWxlY3Rpb25SYW5nZSgpOwotICAgIFZlY3Rvcjxp
bnQ+IGludEFycmF5KDIpOworICAgIHZlY3RvcjxpbnQ+IGludEFycmF5KDIpOwogICAgIGludEFy
cmF5WzBdID0gcmFuZ2Uuc3RhcnRPZmZzZXQoKTsKICAgICBpbnRBcnJheVsxXSA9IHJhbmdlLmVu
ZE9mZnNldCgpOwogICAgIHJlc3VsdC0+c2V0KFdlYkJpbmRpbmdzOjptYWtlSW50QXJyYXkoaW50
QXJyYXkpKTsKQEAgLTE4Miw3ICsxODMsNyBAQCB2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6OmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndQogICAg
IGlmICghZnJhbWUtPmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGFyZ3VtZW50c1swXS50b0lu
dDMyKCksIGFyZ3VtZW50c1sxXS50b0ludDMyKCksIHJlY3QpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBWZWN0b3I8aW50PiBpbnRBcnJheSg0KTsKKyAgICB2ZWN0b3I8aW50PiBpbnRBcnJheSg0
KTsKICAgICBpbnRBcnJheVswXSA9IHJlY3QueDsKICAgICBpbnRBcnJheVsxXSA9IHJlY3QueTsK
ICAgICBpbnRBcnJheVsyXSA9IHJlY3Qud2lkdGg7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5j
cHAKaW5kZXggOTkzM2ZhOGM3NjY0ZWYxODBhMGYxNzNiYTIwYWNhZjBjNzQ2MDZlMy4uMjM5MDkz
NTE4NzYxOTFkZDM3ZmJkZmYwMTcyZjU5MTRkYmZmZmEwYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViUHJlZmVyZW5jZXMuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlByZWZl
cmVuY2VzLmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAK
IHZvaWQgV2ViUHJlZmVyZW5jZXM6OnJlc2V0KCkKIHsKLSNpZiBPUyhNQUNfT1NfWCkKKyNpZmRl
ZiBfX0FQUExFX18KICAgICBjdXJzaXZlRm9udEZhbWlseSA9IFdlYlN0cmluZzo6ZnJvbVVURjgo
IkFwcGxlIENoYW5jZXJ5Iik7CiAgICAgZmFudGFzeUZvbnRGYW1pbHkgPSBXZWJTdHJpbmc6OmZy
b21VVEY4KCJQYXB5cnVzIik7CiAgICAgV2ViU3RyaW5nIHNlcmlmID0gV2ViU3RyaW5nOjpmcm9t
VVRGOCgiVGltZXMiKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpy
ZXNldCgpCiAgICAgLy8gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbCwgdG8gYWNjZXNzIGh0
dHAgc2VydmVyLgogICAgIGFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzID0gdHJ1ZTsK
IAotI2lmIE9TKERBUldJTikKKyNpZmRlZiBfX0FQUExFX18KICAgICBlZGl0aW5nQmVoYXZpb3Ig
PSBXZWJTZXR0aW5nczo6RWRpdGluZ0JlaGF2aW9yTWFjOwogI2Vsc2UKICAgICBlZGl0aW5nQmVo
YXZpb3IgPSBXZWJTZXR0aW5nczo6RWRpdGluZ0JlaGF2aW9yV2luOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcApp
bmRleCA5NzUzMWM4MGRlMTQ1NDllYzBmYTFjMDUxY2M1ZDA4MTBmMmJkNGY4Li43NzlmNTNlNThh
ZTg1NDIyMmVkODU2ZjNmMTUyMGMxODRlYWFiYTAyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcApAQCAtMzIs
NyArMzIsOSBAQAogI2luY2x1ZGUgIldlYlRhc2suaCIKIAogI2luY2x1ZGUgIldlYktpdC5oIgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKK3VzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIApAQCAtNDgsMzYgKzUw
LDMxIEBAIFdlYlRhc2s6On5XZWJUYXNrKCkKICAgICAgICAgbV90YXNrTGlzdC0+dW5yZWdpc3Rl
clRhc2sodGhpcyk7CiB9CiAKLWNsYXNzIFdlYlRhc2tMaXN0OjpQcml2YXRlIDogcHVibGljIFZl
Y3RvcjxXZWJUYXNrKj4gewotfTsKLQogV2ViVGFza0xpc3Q6OldlYlRhc2tMaXN0KCkKLSAgICA6
IG1fcHJpdmF0ZShuZXcgUHJpdmF0ZSkKIHsKIH0KIAogV2ViVGFza0xpc3Q6On5XZWJUYXNrTGlz
dCgpCiB7CiAgICAgcmV2b2tlQWxsKCk7Ci0gICAgZGVsZXRlIG1fcHJpdmF0ZTsKIH0KIAogdm9p
ZCBXZWJUYXNrTGlzdDo6cmVnaXN0ZXJUYXNrKFdlYlRhc2sqIHRhc2spCiB7Ci0gICAgbV9wcml2
YXRlLT5hcHBlbmQodGFzayk7CisgICAgbV90YXNrcy5wdXNoX2JhY2sodGFzayk7CiB9CiAKIHZv
aWQgV2ViVGFza0xpc3Q6OnVucmVnaXN0ZXJUYXNrKFdlYlRhc2sqIHRhc2spCiB7Ci0gICAgc2l6
ZV90IGluZGV4ID0gbV9wcml2YXRlLT5maW5kKHRhc2spOwotICAgIGlmIChpbmRleCAhPSBub3RG
b3VuZCkKLSAgICAgICAgbV9wcml2YXRlLT5yZW1vdmUoaW5kZXgpOworICAgIHZlY3RvcjxXZWJU
YXNrKj46Oml0ZXJhdG9yIGl0ZXIgPSBmaW5kKG1fdGFza3MuYmVnaW4oKSwgbV90YXNrcy5lbmQo
KSwgdGFzayk7CisgICAgaWYgKGl0ZXIgIT0gbV90YXNrcy5lbmQoKSkKKyAgICAgICAgbV90YXNr
cy5lcmFzZShpdGVyKTsKIH0KIAogdm9pZCBXZWJUYXNrTGlzdDo6cmV2b2tlQWxsKCkKIHsKLSAg
ICB3aGlsZSAoIW1fcHJpdmF0ZS0+aXNFbXB0eSgpKQotICAgICAgICAoKm1fcHJpdmF0ZSlbMF0t
PmNhbmNlbCgpOworICAgIHdoaWxlICghbV90YXNrcy5lbXB0eSgpKQorICAgICAgICBtX3Rhc2tz
WzBdLT5jYW5jZWwoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3Bw
CmluZGV4IDg5MjYzYmQ3YmUwMzlmNjRjYmZmYjkxNDFhZTdiMDY4ODRhMTc3ZDcuLjdiNTgyOGRm
OWI5OWQ2OGQzM2VhNDY3NzM5ZWUyMTIzYTUzNzY1NzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0
SW50ZXJmYWNlcy5jcHAKQEAgLTM5LDEzICszOSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCiBXZWJUZXN0SW50ZXJmYWNlczo6V2ViVGVz
dEludGVyZmFjZXMoKQorICAgIDogbV9pbnRlcmZhY2VzKG5ldyBUZXN0SW50ZXJmYWNlcygpKQog
ewotICAgIG1faW50ZXJmYWNlcyA9IG5ldyBUZXN0SW50ZXJmYWNlczsKIH0KIAogV2ViVGVzdElu
dGVyZmFjZXM6On5XZWJUZXN0SW50ZXJmYWNlcygpCiB7Ci0gICAgZGVsZXRlIG1faW50ZXJmYWNl
czsKIH0KIAogdm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJW
aWV3KQpAQCAtODUsNyArODQsNyBAQCBXZWJUZXN0UnVubmVyKiBXZWJUZXN0SW50ZXJmYWNlczo6
dGVzdFJ1bm5lcigpCiAKIFRlc3RJbnRlcmZhY2VzKiBXZWJUZXN0SW50ZXJmYWNlczo6dGVzdElu
dGVyZmFjZXMoKQogewotICAgIHJldHVybiBtX2ludGVyZmFjZXM7CisgICAgcmV0dXJuIG1faW50
ZXJmYWNlcy5nZXQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAKaW5kZXggNjQ3
MGYwYTQxMTIyZjljOWZjMzcxZGFjYWJhNTM5MzkzNWFkMjc1OS4uYzYxM2U3MTQ4MmFiMTg1OGE4
ZGUwMDRjMTk3NGQzNTkyYjRkZDFlMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5o
IgogI2luY2x1ZGUgIkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVkZSAiU3BlbGxDaGVja0NsaWVudC5o
IgorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJUZXN0SW50ZXJmYWNlcy5oIgog
I2luY2x1ZGUgIlRlc3RQbHVnaW4uaCIKICNpbmNsdWRlICJUZXN0UnVubmVyLmgiCkBAIC01OCw3
ICs1OSw2IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTEVycm9yLmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYlVSTFJlcXVlc3QuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMUmVzcG9uc2UuaD4K
LSNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cmluZyB1cmxTdWl0
YWJsZUZvclRlc3RSZXN1bHQoY29uc3Qgc3RyaW5nJiB1cmwpCiAKICAgICBzaXplX3QgcG9zID0g
dXJsLnJmaW5kKCcvJyk7CiAgICAgaWYgKHBvcyA9PSBzdHJpbmc6Om5wb3MpIHsKLSNpZiBPUyhX
SU5ET1dTKQorI2lmZGVmIFdJTjMyCiAgICAgICAgIHBvcyA9IHVybC5yZmluZCgnXFwnKTsKICAg
ICAgICAgaWYgKHBvcyA9PSBzdHJpbmc6Om5wb3MpCiAgICAgICAgICAgICBwb3MgPSAwOwpAQCAt
MjY3LDcgKzI2Nyw2IEBAIFdlYlRlc3RQcm94eUJhc2U6OldlYlRlc3RQcm94eUJhc2UoKQogCiBX
ZWJUZXN0UHJveHlCYXNlOjp+V2ViVGVzdFByb3h5QmFzZSgpCiB7Ci0gICAgZGVsZXRlIG1fc3Bl
bGxjaGVjazsKIH0KIAogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpzZXRJbnRlcmZhY2VzKFdlYlRl
c3RJbnRlcmZhY2VzKiBpbnRlcmZhY2VzKQpAQCAtMjkwLDcgKzI4OSw3IEBAIHZvaWQgV2ViVGVz
dFByb3h5QmFzZTo6cmVzZXQoKQogCiBXZWJTcGVsbENoZWNrQ2xpZW50KiBXZWJUZXN0UHJveHlC
YXNlOjpzcGVsbENoZWNrQ2xpZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zcGVsbGNoZWNr
OworICAgIHJldHVybiBtX3NwZWxsY2hlY2suZ2V0KCk7CiB9CiAKIHZvaWQgV2ViVGVzdFByb3h5
QmFzZTo6c2V0UGFpbnRSZWN0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCkBAIC01NTYsMTQgKzU1NSwx
MSBAQCB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpZEVuZEVkaXRpbmcoKQogCiB2b2lkIFdlYlRl
c3RQcm94eUJhc2U6OnJlZ2lzdGVySW50ZW50U2VydmljZShXZWJGcmFtZSosIGNvbnN0IFdlYklu
dGVudFNlcnZpY2VJbmZvJiBzZXJ2aWNlKQogewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKICAg
ICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uoc3RyaW5nKCJSZWdpc3RlcmVkIFdlYiBJbnRlbnQg
U2VydmljZTogYWN0aW9uPSIpICsgc2VydmljZS5hY3Rpb24oKS51dGY4KCkuZGF0YSgpICsgIiB0
eXBlPSIgKyBzZXJ2aWNlLnR5cGUoKS51dGY4KCkuZGF0YSgpICsgIiB0aXRsZT0iICsgc2Vydmlj
ZS50aXRsZSgpLnV0ZjgoKS5kYXRhKCkgKyAiIHVybD0iICsgc2VydmljZS51cmwoKS5zcGVjKCku
ZGF0YSgpICsgIiBkaXNwb3NpdGlvbj0iICsgc2VydmljZS5kaXNwb3NpdGlvbigpLnV0ZjgoKS5k
YXRhKCkgKyAiXG4iKTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpc3Bh
dGNoSW50ZW50KFdlYkZyYW1lKiBzb3VyY2UsIGNvbnN0IFdlYkludGVudFJlcXVlc3QmIHJlcXVl
c3QpCiB7Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIG1fZGVsZWdhdGUtPnByaW50TWVz
c2FnZShzdHJpbmcoIlJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj0iKSArIHJlcXVlc3QuaW50
ZW50KCkuYWN0aW9uKCkudXRmOCgpLmRhdGEoKSArICIgdHlwZT0iICsgcmVxdWVzdC5pbnRlbnQo
KS50eXBlKCkudXRmOCgpLmRhdGEoKSArICJcbiIpOwogICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5KiBwb3J0cyA9IHJlcXVlc3QuaW50ZW50KCkubWVzc2FnZVBvcnRDaGFubmVsc1JlbGVh
c2UoKTsKICAgICBtX2RlbGVnYXRlLT5zZXRDdXJyZW50V2ViSW50ZW50UmVxdWVzdChyZXF1ZXN0
KTsKQEAgLTU4Niw3ICs1ODIsNiBAQCB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpc3BhdGNoSW50
ZW50KFdlYkZyYW1lKiBzb3VyY2UsIGNvbnN0IFdlYkludGVudFJlcXVlc3QmCiAgICAgV2ViVmVj
dG9yPFdlYlVSTD4gc3VnZ2VzdGlvbnMgPSByZXF1ZXN0LmludGVudCgpLnN1Z2dlc3Rpb25zKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdWdnZXN0aW9ucy5zaXplKCk7ICsraSkKICAg
ICAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0cmluZygiSGF2ZSBzdWdnZXN0aW9uICIp
ICsgc3VnZ2VzdGlvbnNbaV0uc3BlYygpLmRhdGEoKSArICJcbiIpOwotI2VuZGlmCiB9CiAKIGJv
b2wgV2ViVGVzdFByb3h5QmFzZTo6Y3JlYXRlVmlldyhXZWJGcmFtZSosIGNvbnN0IFdlYlVSTFJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYldpbmRvd0ZlYXR1cmVzJiwgY29uc3QgV2ViU3RyaW5n
JiwgV2ViTmF2aWdhdGlvblBvbGljeSkKQEAgLTc3OCw3ICs3NzMsNyBAQCB2b2lkIFdlYlRlc3RQ
cm94eUJhc2U6OmRpZERldGVjdFhTUyhXZWJGcmFtZSosIGNvbnN0IFdlYlVSTCYsIGJvb2wpCiB2
b2lkIFdlYlRlc3RQcm94eUJhc2U6OmFzc2lnbklkZW50aWZpZXJUb1JlcXVlc3QoV2ViRnJhbWUq
LCB1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBXZWJLaXQ6OldlYlVSTFJlcXVlc3QmIHJlcXVl
c3QpCiB7CiAgICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVt
cFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7Ci0gICAgICAgIEFTU0VSVChtX3Jlc291cmNlSWRl
bnRpZmllck1hcC5maW5kKGlkZW50aWZpZXIpID09IG1fcmVzb3VyY2VJZGVudGlmaWVyTWFwLmVu
ZCgpKTsKKyAgICAgICAgV0VCS0lUX0FTU0VSVChtX3Jlc291cmNlSWRlbnRpZmllck1hcC5maW5k
KGlkZW50aWZpZXIpID09IG1fcmVzb3VyY2VJZGVudGlmaWVyTWFwLmVuZCgpKTsKICAgICAgICAg
bV9yZXNvdXJjZUlkZW50aWZpZXJNYXBbaWRlbnRpZmllcl0gPSBkZXNjcmlwdGlvblN1aXRhYmxl
Rm9yVGVzdFJlc3VsdChyZXF1ZXN0LnVybCgpLnNwZWMoKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvY29uZmlnLmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9jb25maWcuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hMmZjNmY0MWMyNjYzZThmMTVlY2JhZWM5YTQ3ZWZkNzhmYTkzNDk2Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvY29uZmlnLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgY29uZmlnX2gKKyNkZWZpbmUgY29u
ZmlnX2gKKworI2RlZmluZSBVU0UoZmVhdHVyZSkgKGRlZmluZWQgV1RGX1VTRV8jI2ZlYXR1cmUg
JiYgV1RGX1VTRV8jI2ZlYXR1cmUpCisKKyNlbmRpZiAvLyBjb25maWdfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186907</attachid>
            <date>2013-02-06 13:22:58 -0800</date>
            <delta_ts>2013-02-07 00:46:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108466-20130206221934.patch</filename>
            <type>text/plain</type>
            <size>102708</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDI0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzQ2MThkMjU2NDVmM2RhMTc4ZTMxYTZjYWQ0ZDI5MjIx
NDcxMTJmNC4uMDdmNTZjMGM3ZDM0NGFmMjE0NjRiOWMzNTkwNDAwNmNiOTkzNWM5NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
MSBAQAorMjAxMy0wMi0wNiAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIHR1cm4gVGVzdFJ1bm5lciBsaWJyYXJ5IGludG8gYSBjb21w
b25lbnQgYnVpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwODQ2NgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAg
VG8gYWNoaWV2ZSB0aGlzLCB3ZSBuZWVkIHRvIGRyb3AgYWxsIGRlcGVuZGVuY2llcyBvbiBXVEYu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRl
clRyZWUuZ3lwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
UHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUYXNrLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdENvbW1vbi5oOiBDb3BpZWQgZnJvbSBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5o
LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dl
YlRlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudExpc3Q6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRMaXN0OjpjcmVhdGVSb290KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hy
b21pdW0uaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRMaXN0KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENsYXNzLmNw
cDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6On5DcHBCb3VuZENsYXNz
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6Omludm9rZSk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpnZXRQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpzZXRQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpiaW5kQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZEdldHRlckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6OmJpbmRQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpnZXRBc0NwcFZhcmlhbnQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuaDoK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoQ3BwQm91bmRDbGFzcyk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpiaW5kUHJvcGVydHkpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZEZhbGxiYWNrQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZEZhbGxiYWNrTWV0aG9k
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBW
YXJpYW50LmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcFZhcmlhbnQ6OnRvU3RyaW5n
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcFZhcmlhbnQ6OnRvSW50MzIpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6Q3BwVmFyaWFudDo6dG9Eb3VibGUpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6Q3BwVmFyaWFudDo6dG9Cb29sZWFuKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OkNwcFZhcmlhbnQ6OnRvU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNw
cFZhcmlhbnQ6Omludm9rZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBWYXJpYW50Ojpp
bnZva2VEZWZhdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9DcHBWYXJpYW50Lmg6CisgICAgICAgIChDcHBWYXJpYW50KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHA6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2Vu
ZGVyOjpFdmVudFNlbmRlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
cmVzZXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6Om1vdXNlRG93bik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6bW91c2VVcCk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6bW91c2VNb3ZlVG8pOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OmtleURvd24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6RXZlbnRTZW5kZXI6OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpFdmVudFNlbmRlcjo6bGVhcEZvcndhcmQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZl
bnRTZW5kZXI6OnJlcGxheVNhdmVkRXZlbnRzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Om1h
a2VNZW51SXRlbVN0cmluZ3NGb3IpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI6OmNvbnRleHRDbGljayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
YmVnaW5EcmFnV2l0aEZpbGVzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVy
OjphZGRUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpy
ZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
dXBkYXRlVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
Y2FuY2VsVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
c2VuZEN1cnJlbnRUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2Vu
ZGVyOjpnZXN0dXJlRXZlbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
Ok5hdGl2ZUtleUNvZGVGb3JXaW5kb3dzS2V5Q29kZSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5jcHA6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpNb2NrR3JhbW1hckNoZWNrOjpjaGVja0dyYW1tYXJPZlN0cmluZyk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNrLmg6CisgICAgICAgIChXZWJUZXN0
UnVubmVyKToKKyAgICAgICAgKE1vY2tHcmFtbWFyQ2hlY2spOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcDoKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZCk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpNb2NrU3BlbGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmg6CisgICAgICAgIChNb2NrU3BlbGxD
aGVjayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
U3BlbGxDaGVja0NsaWVudC5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpTcGVsbENoZWNr
Q2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpT
cGVsbENoZWNrQ2xpZW50OjpmaW5pc2hMYXN0VGV4dENoZWNrKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0Q29tbW9uLmg6IENvcGllZCBmcm9t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJ
bnRlcmZhY2VzLmguCisgICAgICAgIChpc0FTQ0lJQWxwaGEpOgorICAgICAgICAoaXNOb3RBU0NJ
SUFscGhhKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0SW50ZXJm
YWNlczo6VGVzdEludGVyZmFjZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChUZXN0SW50ZXJmYWNl
cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFBsdWdpbi5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpUZXN0UGx1
Z2luKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6ZGVzdHJveSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpwYXJzZVByaW1pdGl2ZSk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RQbHVnaW46OmluaXRQcm9ncmFtKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RQbHVnaW46OmluaXRQcmltaXRpdmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBs
dWdpbjo6ZHJhd1ByaW1pdGl2ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2lu
Ojpsb2FkU2hhZGVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmxvYWRQ
cm9ncmFtKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmhhbmRsZURyYWdT
dGF0dXNVcGRhdGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RQbHVnaW4uaDoKKyAgICAgICAgKFRlc3RQbHVnaW4pOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpwcm9jZXNzV29ya1Nv
b24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpwcm9j
ZXNzV29yayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpXb3JrUXVldWU6
OnJlc2V0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6
YWRkV29yayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpUZXN0UnVubmVy
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnBvbGljeURlbGVnYXRlRG9uZSk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldFRleHRTdWJwaXhlbFBvc2l0aW9uaW5nKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpkZWxpdmVyV2ViSW50ZW50KToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpzaW11bGF0ZUxlZ2FjeVdlYk5vdGlm
aWNhdGlvbkNsaWNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldE1v
Y2tTcGVlY2hJbnB1dER1bXBSZWN0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5u
ZXI6Ondhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6VGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6aXNF
bXB0eSk6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0SW5wdXRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRleHRJbnB1dENvbnRyb2xsZXI6Om1hcmtlZFJhbmdlKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRleHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1dlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Oldl
YlByZWZlcmVuY2VzOjpyZXNldCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJU
YXNrTGlzdDo6fldlYlRhc2tMaXN0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRhc2tM
aXN0OjpyZWdpc3RlclRhc2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Q6
OnVucmVnaXN0ZXJUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0Ojpy
ZXZva2VBbGwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRl
c3RJbnRlcmZhY2VzOjpXZWJUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJUZXN0SW50ZXJmYWNlczo6fldlYlRlc3RJbnRlcmZhY2VzKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6On5XZWJUZXN0UHJveHlC
YXNlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnNwZWxsQ2hl
Y2tDbGllbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6cmVn
aXN0ZXJJbnRlbnRTZXJ2aWNlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94
eUJhc2U6OmRpc3BhdGNoSW50ZW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQ
cm94eUJhc2U6OmFzc2lnbklkZW50aWZpZXJUb1JlcXVlc3QpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL2NvbmZpZy5oOiBDb3BpZWQgZnJvbSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJm
YWNlcy5oLgorCiAyMDEzLTAyLTA2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbVGVzdFJlc3VsdFNlcnZlcl0gQWRqdXN0IHRoZSBuYW1lIG9mIHRoZSBH
VEsgNjQtYml0IGRlYnVnIGJ1aWxkZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCmluZGV4IDVmMzY3ZGY3
ODVhY2QxMTkzNzQyYTA0MDM1Mjc5ODNmN2RjMDIwMDYuLmQxNTc3YTBiMDg5YTY1YzFkODIwZThm
MDhhZGE3MWNkZmIzYzhjNTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cApAQCAtODMsMTAgKzgzLDcg
QEAKICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCiAgICAgICAgICAgICAgICAgJ1Rlc3RS
dW5uZXJfcmVzb3VyY2VzJywKICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cDp3ZWJraXQnLAotICAgICAgICAgICAgICAgICc8KHNvdXJjZV9k
aXIpL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwOndlYmtpdF93dGZfc3VwcG9ydCcsCiAgICAg
ICAgICAgICAgICAgJzwoc291cmNlX2RpcikvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXA6d2Vi
a2l0X3Rlc3Rfc3VwcG9ydCcsCi0gICAgICAgICAgICAgICAgJzwoc291cmNlX2RpcikvV1RGL1dU
Ri5neXAvV1RGLmd5cDp3dGYnLAotICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIp
L3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRfc3VwcG9ydCcsCiAgICAg
ICAgICAgICBdLAogICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKICAgICAgICAgICAgICAg
ICAnPChjaHJvbWl1bV9zcmNfZGlyKScsCkBAIC0xMDYsNiArMTAzLDMxIEBACiAgICAgICAgICAg
ICAgICAgJzxAKHRlc3RfcnVubmVyX2ZpbGVzKScsCiAgICAgICAgICAgICBdLAogICAgICAgICAg
ICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgICAgICAgWydpbnNpZGVfY2hyb21pdW1fYnVp
bGQgPT0gMScsIHsKKyAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnPChjb21wb25lbnQpJywK
KyAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgICAgICAgICAg
ICAgICBbJ2NvbXBvbmVudD09InNoYXJlZF9saWJyYXJ5IicsIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnZGVmaW5lcyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J1dFQlRFU1RSVU5ORVJfRExMJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dF
QlRFU1RSVU5ORVJfSU1QTEVNRU5UQVRJT049MScsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0
aW5ncyc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOiBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV0VCVEVTVFJVTk5FUl9ETEwnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWQ0xpbmtlclRvb2wnOiB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2luY3JlbWVudGFsX2Nocm9tZV9kbGw9
PTEnLCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2VM
aWJyYXJ5RGVwZW5kZW5jeUlucHV0cyc6ICd0cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgIFsndG9vbGtp
dF91c2VzX2d0ayA9PSAxJywgewogICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6IFsKICAg
ICAgICAgICAgICAgICAgICAgICAgICdXVEZfVVNFX0dUSz0xJywKQEAgLTE5NSw2ICsyMTcsNyBA
QAogICAgICAgICAgICAgICAgICdUZXN0UnVubmVyJywKICAgICAgICAgICAgICAgICAnPChzb3Vy
Y2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDppbnNwZWN0b3JfcmVzb3VyY2VzJywK
ICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cDp3ZWJraXQnLAorICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwOndlYmtpdF93dGZfc3VwcG9ydCcsCiAgICAgICAgICAgICAgICAgJzwoc291
cmNlX2RpcikvV1RGL1dURi5neXAvV1RGLmd5cDp3dGYnLAogICAgICAgICAgICAgICAgICc8KGNo
cm9taXVtX3NyY19kaXIpL2Jhc2UvYmFzZS5neXA6dGVzdF9zdXBwb3J0X2Jhc2UnLAogICAgICAg
ICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2J1aWxkL3RlbXBfZ3lwL2dvb2dsZXVybC5n
eXA6Z29vZ2xldXJsJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmlu
ZGV4IDA4OGM5ODU3NzQ0YzdmY2Q0NjZmMmNmMWQ4ODExMGM3YTNiMjA4ZmUuLmFhZGJjYzkzMzEy
ZTAyODQyZDY3MjQwZTk2ZjM3MThkMTJmN2YwN2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUuZ3lwaQpAQCAtNTcsNiArNTcsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5oJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgnLAorICAgICAgICAgICAgJ2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RDb21tb24uaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaCcsCkBAIC04MCw2
ICs4MSw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxs
Q2hlY2suaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvU3BlbGxDaGVj
a0NsaWVudC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxs
Q2hlY2tDbGllbnQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dENvbW1vbi5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50
ZXJmYWNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJ
bnRlcmZhY2VzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1RleHRJ
bnB1dENvbnRyb2xsZXIuY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlByZWZlcmVuY2VzLmggYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5oCmluZGV4
IGI0NzM4MjZiMWE1YjcyNWI5OWU5MmYyNGIxNTVlOTc3NzcwZmY3N2UuLmExMzhiZmQ3MDBjYzRm
NzdmZjUzOGQwM2ExYjI2OWRkMjBlZDk2MDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlByZWZlcmVuY2VzLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViUHJlZmVyZW5j
ZXMuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVVJM
LmgiCiAjaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgIldlYlRlc3RDb21tb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJW
aWV3OwpAQCAtNDEsNyArNDIsNyBAQCBjbGFzcyBXZWJWaWV3OwogCiBuYW1lc3BhY2UgV2ViVGVz
dFJ1bm5lciB7CiAKLXN0cnVjdCBXZWJQcmVmZXJlbmNlcyB7CitzdHJ1Y3QgV0VCVEVTVFJVTk5F
Ul9FWFBPUlQgV2ViUHJlZmVyZW5jZXMgewogICAgIFdlYktpdDo6V2ViU3RyaW5nIHN0YW5kYXJk
Rm9udEZhbWlseTsKICAgICBXZWJLaXQ6OldlYlN0cmluZyBmaXhlZEZvbnRGYW1pbHk7CiAgICAg
V2ViS2l0OjpXZWJTdHJpbmcgc2VyaWZGb250RmFtaWx5OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oCmluZGV4
IGVmNzNlMTc3ZTA0MTBlNmZlNmRhNjE4YzBlMWQ2ZWI3NDQ0NzMwYTQuLmMzYmMwOWNjMWNlZWFh
ZjYxZTg1Y2M1MzczY2NlNjE3OTJiMTQ0NWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRhc2suaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgKQEAgLTMxLDEz
ICszMSwxNiBAQAogI2lmbmRlZiBXZWJUYXNrX2gKICNkZWZpbmUgV2ViVGFza19oCiAKKyNpbmNs
dWRlICJXZWJUZXN0Q29tbW9uLmgiCisjaW5jbHVkZSA8dmVjdG9yPgorCiBuYW1lc3BhY2UgV2Vi
VGVzdFJ1bm5lciB7CiAKIGNsYXNzIFdlYlRhc2tMaXN0OwogCiAvLyBXZWJUYXNrIHJlcHJlc2Vu
dHMgYSB0YXNrIHdoaWNoIGNhbiBydW4gYnkgV2ViVGVzdERlbGVnYXRlOjpwb3N0VGFzaygpIG9y
CiAvLyBXZWJUZXN0RGVsZWdhdGU6OnBvc3REZWxheWVkVGFzaygpLgotY2xhc3MgV2ViVGFzayB7
CitjbGFzcyBXRUJURVNUUlVOTkVSX0VYUE9SVCBXZWJUYXNrIHsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBXZWJUYXNrKFdlYlRhc2tMaXN0Kik7CiAgICAgdmlydHVhbCB+V2ViVGFzaygpOwpAQCAt
NTEsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViVGFza0xpc3QqIG1fdGFza0xpc3Q7CiB9
OwogCi1jbGFzcyBXZWJUYXNrTGlzdCB7CitjbGFzcyBXRUJURVNUUlVOTkVSX0VYUE9SVCBXZWJU
YXNrTGlzdCB7CiBwdWJsaWM6CiAgICAgV2ViVGFza0xpc3QoKTsKICAgICB+V2ViVGFza0xpc3Qo
KTsKQEAgLTYwLDggKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmV2b2tlQWxsKCk7CiAKIHBy
aXZhdGU6Ci0gICAgY2xhc3MgUHJpdmF0ZTsKLSAgICBQcml2YXRlKiBtX3ByaXZhdGU7CisgICAg
c3RkOjp2ZWN0b3I8V2ViVGFzayo+IG1fdGFza3M7CiB9OwogCiAvLyBBIHRhc2sgY29udGFpbmlu
ZyBhbiBvYmplY3QgcG9pbnRlciBvZiBjbGFzcyBULiBEZXJpdmVkIGNsYXNzZXMgc2hvdWxkCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0Q29tbW9uLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0Q29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM0NDJjNmE5M2RiMWNmYmQ0
NjI3YWUwZjhjYmUzYmQ2ZGI2NTc3ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RDb21tb24uaApAQCAtMCww
ICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJUZXN0Q29tbW9uX2gKKyNkZWZpbmUgV2ViVGVzdENvbW1vbl9o
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBEZWZhdWx0IGNvbmZpZ3VyYXRpb24KKwor
I2lmICFkZWZpbmVkKFdFQlRFU1RSVU5ORVJfSU1QTEVNRU5UQVRJT04pCisjZGVmaW5lIFdFQlRF
U1RSVU5ORVJfSU1QTEVNRU5UQVRJT04gMAorI2VuZGlmCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLyBFeHBvcnRlZCBzeW1ib2xzIG5lZWQgdG8gYmUgYW5ub3RhdGVkIHdpdGggV0VCVEVT
VFJVTk5FUl9FWFBPUlQKKworI2lmIGRlZmluZWQoV0VCVEVTVFJVTk5FUl9ETEwpCisKKyNpZiBk
ZWZpbmVkKFdJTjMyKQorI2lmIFdFQlRFU1RSVU5ORVJfSU1QTEVNRU5UQVRJT04KKyNkZWZpbmUg
V0VCVEVTVFJVTk5FUl9FWFBPUlQgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjZWxzZQorI2RlZmlu
ZSBXRUJURVNUUlVOTkVSX0VYUE9SVCBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyNlbmRpZgorCisj
ZWxzZSAvLyBkZWZpbmVkKFdJTjMyKQorCisjaWYgV0VCVEVTVFJVTk5FUl9JTVBMRU1FTlRBVElP
TgorI2RlZmluZSBXRUJURVNUUlVOTkVSX0VYUE9SVCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
KCJkZWZhdWx0IikpKQorI2Vsc2UKKyNkZWZpbmUgV0VCVEVTVFJVTk5FUl9FWFBPUlQKKyNlbmRp
ZgorCisjZW5kaWYKKworI2Vsc2UgLy8gZGVmaW5lZChXRUJURVNUUlVOTkVSX0RMTCkKKworI2Rl
ZmluZSBXRUJURVNUUlVOTkVSX0VYUE9SVAorCisjZW5kaWYKKworI2VuZGlmIC8vIFdlYlRlc3RD
b21tb25faApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKaW5kZXggMmNjZDYx
ZTI1YzEwYmE0NzIwODYxNTIyMDk2MzY1NmU5ODg2ZWRiOS4uNzNkNzlkYzJjZGRlMGYyZWI5OWU3
OTI2YjFkOGZiZjFkMWFmMjdjZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNl
cy5oCkBAIC0zMSw2ICszMSw5IEBACiAjaWZuZGVmIFdlYlRlc3RJbnRlcmZhY2VzX2gKICNkZWZp
bmUgV2ViVGVzdEludGVyZmFjZXNfaAogCisjaW5jbHVkZSAiV2ViVGVzdENvbW1vbi5oIgorI2lu
Y2x1ZGUgPG1lbW9yeT4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKIGNs
YXNzIFdlYlZpZXc7CkBAIC00Miw3ICs0NSw3IEBAIGNsYXNzIFRlc3RJbnRlcmZhY2VzOwogY2xh
c3MgV2ViVGVzdERlbGVnYXRlOwogY2xhc3MgV2ViVGVzdFJ1bm5lcjsKIAotY2xhc3MgV2ViVGVz
dEludGVyZmFjZXMgeworY2xhc3MgV0VCVEVTVFJVTk5FUl9FWFBPUlQgV2ViVGVzdEludGVyZmFj
ZXMgewogcHVibGljOgogICAgIFdlYlRlc3RJbnRlcmZhY2VzKCk7CiAgICAgfldlYlRlc3RJbnRl
cmZhY2VzKCk7CkBAIC02MSw3ICs2NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgot
ICAgIFRlc3RJbnRlcmZhY2VzKiBtX2ludGVyZmFjZXM7CisgICAgc3RkOjphdXRvX3B0cjxUZXN0
SW50ZXJmYWNlcz4gbV9pbnRlcmZhY2VzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJv
eHkuaAppbmRleCA0MjkwOTY5YmRkN2E2ODY3YzYwM2VmYTg5NDc1YzA1ZDdmNDBmYzVmLi4xMDBk
Mjg3ZGJlMjZkNzgyOGJkYjRkNTQ1YTEyZDFiNjVlYmQyZGNkIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJveHkuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJU
ZXN0UHJveHkuaApAQCAtNDIsNyArNDIsOSBAQAogI2luY2x1ZGUgIldlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlRleHRBZmZpbml0eS5oIgogI2luY2x1ZGUgIldlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVGV4dERpcmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlRlc3RDb21tb24uaCIKICNpbmNsdWRl
IDxtYXA+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC03OSw3ICs4MSw3IEBAIGNsYXNzIFdlYlRlc3REZWxlZ2F0ZTsKIGNsYXNz
IFdlYlRlc3RJbnRlcmZhY2VzOwogY2xhc3MgV2ViVGVzdFJ1bm5lcjsKIAotY2xhc3MgV2ViVGVz
dFByb3h5QmFzZSB7CitjbGFzcyBXRUJURVNUUlVOTkVSX0VYUE9SVCBXZWJUZXN0UHJveHlCYXNl
IHsKIHB1YmxpYzoKICAgICB2b2lkIHNldEludGVyZmFjZXMoV2ViVGVzdEludGVyZmFjZXMqKTsK
ICAgICB2b2lkIHNldERlbGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSopOwpAQCAtMTY1LDcgKzE2Nyw3
IEBAIHByaXZhdGU6CiAgICAgVGVzdEludGVyZmFjZXMqIG1fdGVzdEludGVyZmFjZXM7CiAgICAg
V2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwogCi0gICAgU3BlbGxDaGVja0NsaWVudCogbV9z
cGVsbGNoZWNrOworICAgIHN0ZDo6YXV0b19wdHI8U3BlbGxDaGVja0NsaWVudD4gbV9zcGVsbGNo
ZWNrOwogCiAgICAgV2ViS2l0OjpXZWJSZWN0IG1fcGFpbnRSZWN0OwogICAgIHN0ZDo6bWFwPHVu
c2lnbmVkLCBzdGQ6OnN0cmluZz4gbV9yZXNvdXJjZUlkZW50aWZpZXJNYXA7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50Q2hyb21pdW0uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNwcAppbmRleCAw
NjNkZGJiYWRmYmFiNjYzMzg1NTk5Yjg4MmM3ZDBlNGM1NThhMmQyLi42ZGNjNDA2MDYzZjY5MjE0
YjY3NjIyMzQzMTYxMWU2MTdmZGM3MmM5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0u
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHAKQEAgLTMxLDEzICszMSwxMiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1
bS5oIgogCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxp
dHlPYmplY3QuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViQ1N0cmluZy5oPgogI2luY2x1ZGUgPHB1
YmxpYy9XZWJQb2ludC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVk
ZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKQEAgLTM2OCw3ICszNjcsNyBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
agogICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCiB7CiAKLSAgICBBU1NFUlQoZmFjdG9yeSk7Cisg
ICAgV0VCS0lUX0FTU0VSVChmYWN0b3J5KTsKIAogICAgIC8vCiAgICAgLy8gUHJvcGVydGllcwpA
QCAtMTAyNSwxNCArMTAyNCwxNCBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50TGlzdDo6Z2V0T3JDcmVhdGUoY29uc3QgV2ViQWNjZXNzaQogICAgIH0KIAog
ICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQgPSBuZXcgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudChvYmplY3QsIHRoaXMpOwotICAgIG1fZWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOwor
ICAgIG1fZWxlbWVudHMucHVzaF9iYWNrKGVsZW1lbnQpOwogICAgIHJldHVybiBlbGVtZW50Owog
fQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TGlzdDo6
Y3JlYXRlUm9vdChjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCiB7CiAgICAg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCA9IG5ldyBSb290QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudChvYmplY3QsIHRoaXMpOwotICAgIG1fZWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOwor
ICAgIG1fZWxlbWVudHMucHVzaF9iYWNrKGVsZW1lbnQpOwogICAgIHJldHVybiBlbGVtZW50Owog
fQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1
bS5oCmluZGV4IDM5NmFhNzA4MGE5NWM4ODUyMWE2OTAxZGMyNjE5OTkwYTEyNDcwMWEuLmM2Y2Ix
YTIzNTZkYTA3MGIxYTJlMTg0ZmE0MGVmMjg4OWFjNzkwOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRDaHJvbWl1bS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5oCkBAIC0zNCw3ICszNCw2IEBA
CiAjaW5jbHVkZSAiQ3BwQm91bmRDbGFzcy5oIgogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlP
YmplY3QuaCIKICNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKQEAgLTE2OCw3ICsxNjcsNyBAQCBwdWJsaWM6CiAg
ICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogY3JlYXRlUm9vdChjb25zdCBXZWJLaXQ6OldlYkFj
Y2Vzc2liaWxpdHlPYmplY3QmKTsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIFZlY3RvcjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Kj4gRWxlbWVudExpc3Q7CisgICAgdHlwZWRlZiBzdGQ6OnZlY3Rv
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kj4gRWxlbWVudExpc3Q7CiAgICAgRWxlbWVudExpc3Qg
bV9lbGVtZW50czsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5jcHAKaW5kZXggMDM1YWNk
ZWQ3OGQ2OGU4NzU3MGRhMDE1NWZmNjUyZDZhOTU5Y2MwYS4uNDllNjE0OTczYjcxOTJjYWRjOTEy
ZGQ4NmVkN2Q4ODdjZmFhZDBlZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5jcHAKQEAgLTQy
LDExICs0MiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNwcEJvdW5kQ2xh
c3MuaCIKIAorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJXZWJCaW5kaW5ncy5o
IgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHB1
YmxpYy9XZWJTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEdldHRlclByb3BlcnR5
Q2FsbGJhY2sgOiBwdWJsaWMgQ3BwQm91bmRDbGFzczo6UHJvcGVydHlDYWxsYmFjayB7CiBwdWJs
aWM6Ci0gICAgR2V0dGVyUHJvcGVydHlDYWxsYmFjayhQYXNzT3duUHRyPENwcEJvdW5kQ2xhc3M6
OkdldHRlckNhbGxiYWNrPiBjYWxsYmFjaykKKyAgICBHZXR0ZXJQcm9wZXJ0eUNhbGxiYWNrKGF1
dG9fcHRyPENwcEJvdW5kQ2xhc3M6OkdldHRlckNhbGxiYWNrPiBjYWxsYmFjaykKICAgICAgICAg
OiBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgIHsKICAgICB9CkBAIC05MSw3ICs5MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWUoY29uc3QgQ3BwVmFyaWFudCYgdmFsdWUp
IHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6Ci0gICAgT3duUHRyPENwcEJvdW5kQ2xhc3M6
OkdldHRlckNhbGxiYWNrPiBtX2NhbGxiYWNrOworICAgIGF1dG9fcHRyPENwcEJvdW5kQ2xhc3M6
OkdldHRlckNhbGxiYWNrPiBtX2NhbGxiYWNrOwogfTsKIAogfQpAQCAtMjA5LDEwICsyMDksMTAg
QEAgYm9vbCBDcHBOUE9iamVjdDo6c2V0UHJvcGVydHkoTlBPYmplY3QqIG5wT2JqLCBOUElkZW50
aWZpZXIgaWRlbnQsIGNvbnN0IE5QVmFyaWEKIENwcEJvdW5kQ2xhc3M6On5DcHBCb3VuZENsYXNz
KCkKIHsKICAgICBmb3IgKE1ldGhvZExpc3Q6Oml0ZXJhdG9yIGkgPSBtX21ldGhvZHMuYmVnaW4o
KTsgaSAhPSBtX21ldGhvZHMuZW5kKCk7ICsraSkKLSAgICAgICAgZGVsZXRlIGktPnZhbHVlOwor
ICAgICAgICBkZWxldGUgaS0+c2Vjb25kOwogCiAgICAgZm9yIChQcm9wZXJ0eUxpc3Q6Oml0ZXJh
dG9yIGkgPSBtX3Byb3BlcnRpZXMuYmVnaW4oKTsgaSAhPSBtX3Byb3BlcnRpZXMuZW5kKCk7ICsr
aSkKLSAgICAgICAgZGVsZXRlIGktPnZhbHVlOworICAgICAgICBkZWxldGUgaS0+c2Vjb25kOwog
CiAgICAgLy8gVW5yZWdpc3RlciBvdXJzZWx2ZXMgaWYgd2Ugd2VyZSBib3VuZCB0byBhIGZyYW1l
LgogICAgIGlmIChtX2JvdW5kVG9GcmFtZSkKQEAgLTI0Myw3ICsyNDMsNyBAQCBib29sIENwcEJv
dW5kQ2xhc3M6Omludm9rZShOUElkZW50aWZpZXIgaWRlbnQsCiAgICAgICAgIH0KICAgICAgICAg
Y2FsbGJhY2sgPSBtX2ZhbGxiYWNrQ2FsbGJhY2suZ2V0KCk7CiAgICAgfSBlbHNlCi0gICAgICAg
IGNhbGxiYWNrID0gKCptZXRob2QpLnZhbHVlOworICAgICAgICBjYWxsYmFjayA9ICgqbWV0aG9k
KS5zZWNvbmQ7CiAKICAgICAvLyBCdWlsZCBhIENwcEFyZ3VtZW50TGlzdCBhcmd1bWVudCB2ZWN0
b3IgZnJvbSB0aGUgTlBWYXJpYW50cyBjb21pbmcgaW4uCiAgICAgQ3BwQXJndW1lbnRMaXN0IGNw
cEFyZ3VtZW50cyhhcmd1bWVudENvdW50KTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIENwcEJv
dW5kQ2xhc3M6OmdldFByb3BlcnR5KE5QSWRlbnRpZmllciBpZGVudCwgTlBWYXJpYW50KiByZXN1
bHQpIGNvbnN0CiAgICAgfQogCiAgICAgQ3BwVmFyaWFudCBjcHBWYWx1ZTsKLSAgICBpZiAoIWNh
bGxiYWNrLT52YWx1ZS0+Z2V0VmFsdWUoJmNwcFZhbHVlKSkKKyAgICBpZiAoIWNhbGxiYWNrLT5z
ZWNvbmQtPmdldFZhbHVlKCZjcHBWYWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBj
cHBWYWx1ZS5jb3B5VG9OUFZhcmlhbnQocmVzdWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4
MCw3ICsyODAsNyBAQCBib29sIENwcEJvdW5kQ2xhc3M6OnNldFByb3BlcnR5KE5QSWRlbnRpZmll
ciBpZGVudCwgY29uc3QgTlBWYXJpYW50KiB2YWx1ZSkKIAogICAgIENwcFZhcmlhbnQgY3BwVmFs
dWU7CiAgICAgY3BwVmFsdWUuc2V0KCp2YWx1ZSk7Ci0gICAgcmV0dXJuICgqY2FsbGJhY2spLnZh
bHVlLT5zZXRWYWx1ZShjcHBWYWx1ZSk7CisgICAgcmV0dXJuICgqY2FsbGJhY2spLnNlY29uZC0+
c2V0VmFsdWUoY3BwVmFsdWUpOwogfQogCiB2b2lkIENwcEJvdW5kQ2xhc3M6OmJpbmRDYWxsYmFj
ayhjb25zdCBzdHJpbmcmIG5hbWUsIENhbGxiYWNrKiBjYWxsYmFjaykKQEAgLTI4OCwxOSArMjg4
LDE5IEBAIHZvaWQgQ3BwQm91bmRDbGFzczo6YmluZENhbGxiYWNrKGNvbnN0IHN0cmluZyYgbmFt
ZSwgQ2FsbGJhY2sqIGNhbGxiYWNrKQogICAgIE5QSWRlbnRpZmllciBpZGVudCA9IFdlYkJpbmRp
bmdzOjpnZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUuY19zdHIoKSk7CiAgICAgTWV0aG9kTGlzdDo6
aXRlcmF0b3Igb2xkQ2FsbGJhY2sgPSBtX21ldGhvZHMuZmluZChpZGVudCk7CiAgICAgaWYgKG9s
ZENhbGxiYWNrICE9IG1fbWV0aG9kcy5lbmQoKSkgewotICAgICAgICBkZWxldGUgb2xkQ2FsbGJh
Y2stPnZhbHVlOworICAgICAgICBkZWxldGUgb2xkQ2FsbGJhY2stPnNlY29uZDsKICAgICAgICAg
aWYgKCFjYWxsYmFjaykgewotICAgICAgICAgICAgbV9tZXRob2RzLnJlbW92ZShvbGRDYWxsYmFj
ayk7CisgICAgICAgICAgICBtX21ldGhvZHMuZXJhc2Uob2xkQ2FsbGJhY2spOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9tZXRob2RzLnNldChpZGVudCwg
Y2FsbGJhY2spOworICAgIG1fbWV0aG9kc1tpZGVudF0gPSBjYWxsYmFjazsKIH0KIAotdm9pZCBD
cHBCb3VuZENsYXNzOjpiaW5kR2V0dGVyQ2FsbGJhY2soY29uc3Qgc3RyaW5nJiBuYW1lLCBQYXNz
T3duUHRyPEdldHRlckNhbGxiYWNrPiBjYWxsYmFjaykKK3ZvaWQgQ3BwQm91bmRDbGFzczo6Ymlu
ZEdldHRlckNhbGxiYWNrKGNvbnN0IHN0cmluZyYgbmFtZSwgYXV0b19wdHI8R2V0dGVyQ2FsbGJh
Y2s+IGNhbGxiYWNrKQogewotICAgIFByb3BlcnR5Q2FsbGJhY2sqIHByb3BlcnR5Q2FsbGJhY2sg
PSBjYWxsYmFjayA/IG5ldyBHZXR0ZXJQcm9wZXJ0eUNhbGxiYWNrKGNhbGxiYWNrKSA6IDA7Cisg
ICAgUHJvcGVydHlDYWxsYmFjayogcHJvcGVydHlDYWxsYmFjayA9IGNhbGxiYWNrLmdldCgpID8g
bmV3IEdldHRlclByb3BlcnR5Q2FsbGJhY2soY2FsbGJhY2spIDogMDsKICAgICBiaW5kUHJvcGVy
dHkobmFtZSwgcHJvcGVydHlDYWxsYmFjayk7CiB9CiAKQEAgLTMxNSwxNCArMzE1LDE0IEBAIHZv
aWQgQ3BwQm91bmRDbGFzczo6YmluZFByb3BlcnR5KGNvbnN0IHN0cmluZyYgbmFtZSwgUHJvcGVy
dHlDYWxsYmFjayogY2FsbGJhY2spCiAgICAgTlBJZGVudGlmaWVyIGlkZW50ID0gV2ViQmluZGlu
Z3M6OmdldFN0cmluZ0lkZW50aWZpZXIobmFtZS5jX3N0cigpKTsKICAgICBQcm9wZXJ0eUxpc3Q6
Oml0ZXJhdG9yIG9sZENhbGxiYWNrID0gbV9wcm9wZXJ0aWVzLmZpbmQoaWRlbnQpOwogICAgIGlm
IChvbGRDYWxsYmFjayAhPSBtX3Byb3BlcnRpZXMuZW5kKCkpIHsKLSAgICAgICAgZGVsZXRlIG9s
ZENhbGxiYWNrLT52YWx1ZTsKKyAgICAgICAgZGVsZXRlIG9sZENhbGxiYWNrLT5zZWNvbmQ7CiAg
ICAgICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgICAgIG1fcHJvcGVydGllcy5yZW1vdmUo
b2xkQ2FsbGJhY2spOworICAgICAgICAgICAgbV9wcm9wZXJ0aWVzLmVyYXNlKG9sZENhbGxiYWNr
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fcHJvcGVy
dGllcy5zZXQoaWRlbnQsIGNhbGxiYWNrKTsKKyAgICBtX3Byb3BlcnRpZXNbaWRlbnRdID0gY2Fs
bGJhY2s7CiB9CiAKIGJvb2wgQ3BwQm91bmRDbGFzczo6aXNNZXRob2RSZWdpc3RlcmVkKGNvbnN0
IHN0cmluZyYgbmFtZSkgY29uc3QKQEAgLTM0NCw3ICszNDQsNyBAQCBDcHBWYXJpYW50KiBDcHBC
b3VuZENsYXNzOjpnZXRBc0NwcFZhcmlhbnQoKQogICAgICAgICBtX3NlbGZWYXJpYW50LnNldChu
cE9iaik7CiAgICAgICAgIFdlYkJpbmRpbmdzOjpyZWxlYXNlT2JqZWN0KG5wT2JqKTsgLy8gQ3Bw
VmFyaWFudCB0YWtlcyB0aGUgcmVmZXJlbmNlLgogICAgIH0KLSAgICBBU1NFUlQobV9zZWxmVmFy
aWFudC5pc09iamVjdCgpKTsKKyAgICBXRUJLSVRfQVNTRVJUKG1fc2VsZlZhcmlhbnQuaXNPYmpl
Y3QoKSk7CiAgICAgcmV0dXJuICZtX3NlbGZWYXJpYW50OwogfQogCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENsYXNzLmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENs
YXNzLmgKaW5kZXggNTRhZjZkZGNlMWU2ODAyZmYwMGQ2OGFhNzJiNWYyMDI5ZTQ3NTNjNi4uOTUy
YTQxYzUzNDBlZmRmMDBiYzc2Yjc4MmI0ZDQ2ZGFjY2Y4ZDFkYiAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5k
Q2xhc3MuaApAQCAtNDQsMTEgKzQ0LDkgQEAKICNkZWZpbmUgQ3BwQm91bmRDbGFzc19oCiAKICNp
bmNsdWRlICJDcHBWYXJpYW50LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8bWFw
PgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViRnJhbWU7CkBAIC01NywxMiArNTUsMTEgQEAgY2xhc3MgV2ViU3RyaW5n
OwogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKLXR5cGVkZWYgVmVjdG9yPENwcFZhcmlh
bnQ+IENwcEFyZ3VtZW50TGlzdDsKK3R5cGVkZWYgc3RkOjp2ZWN0b3I8Q3BwVmFyaWFudD4gQ3Bw
QXJndW1lbnRMaXN0OwogCiAvLyBDcHBCb3VuZENsYXNzIGxldHMgeW91IG1hcCBKYXZhc2NyaXB0
IG1ldGhvZCBjYWxscyBhbmQgcHJvcGVydHkgYWNjZXNzZXMKIC8vIGRpcmVjdGx5IHRvIEMrKyBt
ZXRob2QgY2FsbHMgYW5kIENwcFZhcmlhbnQqIHZhcmlhYmxlIGFjY2Vzcy4KIGNsYXNzIENwcEJv
dW5kQ2xhc3MgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENwcEJvdW5kQ2xhc3MpOwogcHVi
bGljOgogICAgIGNsYXNzIFByb3BlcnR5Q2FsbGJhY2sgewogICAgIHB1YmxpYzoKQEAgLTE2NCw3
ICsxNjEsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBCaW5kIEphdmFzY3JpcHQgcHJvcGVydHkg
fG5hbWV8IHRvIHRoZSBDKysgZ2V0dGVyIGNhbGxiYWNrIHxjYWxsYmFja3wuCiAgICAgLy8gVGhp
cyBjYW4gYmUgdXNlZCB0byBjcmVhdGUgcmVhZC1vbmx5IHByb3BlcnRpZXMuCi0gICAgdm9pZCBi
aW5kR2V0dGVyQ2FsbGJhY2soY29uc3Qgc3RkOjpzdHJpbmcmLCBQYXNzT3duUHRyPEdldHRlckNh
bGxiYWNrPik7CisgICAgdm9pZCBiaW5kR2V0dGVyQ2FsbGJhY2soY29uc3Qgc3RkOjpzdHJpbmcm
LCBzdGQ6OmF1dG9fcHRyPEdldHRlckNhbGxiYWNrPik7CiAKICAgICAvLyBBIHdyYXBwZXIgZm9y
IEJpbmRHZXR0ZXJDYWxsYmFjaywgdG8gc2ltcGxpZnkgdGhlIGNvbW1vbiBjYXNlIG9mIGJpbmRp
bmcgYQogICAgIC8vIHByb3BlcnR5IG9uIHRoZSBjdXJyZW50IG9iamVjdC4gVGhvdWdoIG5vdCB2
ZXJpZmllZCBoZXJlLCB0aGUgbWV0aG9kIHBhcmFtZXRlcgpAQCAtMTcyLDggKzE2OSw4IEBAIHBy
b3RlY3RlZDoKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIHZvaWQgYmluZFByb3BlcnR5KGNv
bnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCB2b2lkIChUOjoqbWV0aG9kKShDcHBWYXJpYW50KikpCiAg
ICAgewotICAgICAgICBPd25QdHI8R2V0dGVyQ2FsbGJhY2s+IGNhbGxiYWNrID0gYWRvcHRQdHIo
bmV3IE1lbWJlckdldHRlckNhbGxiYWNrPFQ+KHN0YXRpY19jYXN0PFQqPih0aGlzKSwgbWV0aG9k
KSk7Ci0gICAgICAgIGJpbmRHZXR0ZXJDYWxsYmFjayhuYW1lLCBjYWxsYmFjay5yZWxlYXNlKCkp
OworICAgICAgICBzdGQ6OmF1dG9fcHRyPEdldHRlckNhbGxiYWNrPiBjYWxsYmFjayhuZXcgTWVt
YmVyR2V0dGVyQ2FsbGJhY2s8VD4oc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLCBtZXRob2QpKTsKKyAg
ICAgICAgYmluZEdldHRlckNhbGxiYWNrKG5hbWUsIGNhbGxiYWNrKTsKICAgICB9CiAKICAgICAv
LyBCaW5kIHRoZSBKYXZhc2NyaXB0IHByb3BlcnR5IGNhbGxlZCB8bmFtZXwgdG8gYSBDcHBWYXJp
YW50LgpAQCAtMTkzLDcgKzE5MCw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBhcyBpdCBtYXkgY2F1
c2UgdW5leHBlY3RlZCBiZWhhdmlvcnMgKGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBhCiAgICAg
Ly8gZmFsbGJhY2sgYWx3YXlzIHJldHVybnMgdHJ1ZSB3aGVuIGNoZWNrZWQgZm9yIGEgbWV0aG9k
J3MKICAgICAvLyBleGlzdGVuY2UpLgotICAgIHZvaWQgYmluZEZhbGxiYWNrQ2FsbGJhY2soUGFz
c093blB0cjxDYWxsYmFjaz4gZmFsbGJhY2tDYWxsYmFjaykKKyAgICB2b2lkIGJpbmRGYWxsYmFj
a0NhbGxiYWNrKHN0ZDo6YXV0b19wdHI8Q2FsbGJhY2s+IGZhbGxiYWNrQ2FsbGJhY2spCiAgICAg
ewogICAgICAgICBtX2ZhbGxiYWNrQ2FsbGJhY2sgPSBmYWxsYmFja0NhbGxiYWNrOwogICAgIH0K
QEAgLTIwNSwyNSArMjAyLDI0IEBAIHByb3RlY3RlZDoKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgog
ICAgIHZvaWQgYmluZEZhbGxiYWNrTWV0aG9kKHZvaWQgKFQ6OiptZXRob2QpKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKSkKICAgICB7Ci0gICAgICAgIGlmIChtZXRob2QpIHsK
LSAgICAgICAgICAgIE93blB0cjxDYWxsYmFjaz4gY2FsbGJhY2sgPSBhZG9wdFB0cihuZXcgTWVt
YmVyQ2FsbGJhY2s8VD4oc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLCBtZXRob2QpKTsKLSAgICAgICAg
ICAgIGJpbmRGYWxsYmFja0NhbGxiYWNrKGNhbGxiYWNrLnJlbGVhc2UoKSk7Ci0gICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgYmluZEZhbGxiYWNrQ2FsbGJhY2sobnVsbHB0cik7CisgICAgICAg
IGlmIChtZXRob2QpCisgICAgICAgICAgICBiaW5kRmFsbGJhY2tDYWxsYmFjayhzdGQ6OmF1dG9f
cHRyPENhbGxiYWNrPihuZXcgTWVtYmVyQ2FsbGJhY2s8VD4oc3RhdGljX2Nhc3Q8VCo+KHRoaXMp
LCBtZXRob2QpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJpbmRGYWxsYmFja0NhbGxi
YWNrKHN0ZDo6YXV0b19wdHI8Q2FsbGJhY2s+KCkpOwogICAgIH0KIAogICAgIC8vIFNvbWUgZmll
bGRzIGFyZSBwcm90ZWN0ZWQgYmVjYXVzZSBzb21lIHRlc3RzIGRlcGVuZCBvbiBhY2Nlc3Npbmcg
dGhlbSwKICAgICAvLyBidXQgb3RoZXJ3aXNlIHRoZXkgc2hvdWxkIGJlIGNvbnNpZGVyZWQgcHJp
dmF0ZS4KIAotICAgIHR5cGVkZWYgSGFzaE1hcDxOUElkZW50aWZpZXIsIFByb3BlcnR5Q2FsbGJh
Y2sqPiBQcm9wZXJ0eUxpc3Q7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPE5QSWRlbnRpZmllciwgQ2Fs
bGJhY2sqPiBNZXRob2RMaXN0OworICAgIHR5cGVkZWYgc3RkOjptYXA8TlBJZGVudGlmaWVyLCBQ
cm9wZXJ0eUNhbGxiYWNrKj4gUHJvcGVydHlMaXN0OworICAgIHR5cGVkZWYgc3RkOjptYXA8TlBJ
ZGVudGlmaWVyLCBDYWxsYmFjayo+IE1ldGhvZExpc3Q7CiAgICAgLy8gVGhlc2UgbWFwcyBhc3Nv
Y2lhdGUgbmFtZXMgd2l0aCBwcm9wZXJ0eSBhbmQgbWV0aG9kIHBvaW50ZXJzIHRvIGJlCiAgICAg
Ly8gZXhwb3NlZCB0byBKYXZhU2NyaXB0LgogICAgIFByb3BlcnR5TGlzdCBtX3Byb3BlcnRpZXM7
CiAgICAgTWV0aG9kTGlzdCBtX21ldGhvZHM7CiAKICAgICAvLyBUaGUgY2FsbGJhY2sgZ2V0cyBp
bnZva2VkIHdoZW4gYSBjYWxsIGlzIG1hZGUgdG8gYW4gbm9uZXhpc3RlbnQgbWV0aG9kLgotICAg
IE93blB0cjxDYWxsYmFjaz4gbV9mYWxsYmFja0NhbGxiYWNrOworICAgIHN0ZDo6YXV0b19wdHI8
Q2FsbGJhY2s+IG1fZmFsbGJhY2tDYWxsYmFjazsKIAogcHJpdmF0ZToKICAgICAvLyBOUE9iamVj
dCBjYWxsYmFja3MuCkBAIC0yNDIsNiArMjM4LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gVHJ1ZSBp
ZiBvdXIgbnBfb2JqZWN0IGhhcyBiZWVuIGJvdW5kIHRvIGEgV2ViRnJhbWUsIGluIHdoaWNoIGNh
c2UgaXQgbXVzdAogICAgIC8vIGJlIHVucmVnaXN0ZXJlZCB3aXRoIFY4IHdoZW4gd2UgZGVsZXRl
IGl0LgogICAgIGJvb2wgbV9ib3VuZFRvRnJhbWU7CisKK3ByaXZhdGU6CisgICAgQ3BwQm91bmRD
bGFzcyhDcHBCb3VuZENsYXNzJik7CisgICAgQ3BwQm91bmRDbGFzcyYgb3BlcmF0b3I9KGNvbnN0
IENwcEJvdW5kQ2xhc3MmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5jcHAKaW5kZXggNGQy
ODU2ZTc0MmQ5N2NkZDlhMDA4NWUxOWEyZGQxODExMmY4ZjVmYy4uZWYyZTkyYTY1YzBlZjRlOGMz
YmRmNGU1Y2RkNDcxNTViZTc3MmMzNSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5jcHAKQEAgLTMxLDEw
ICszMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3BwVmFyaWFudC5oIgog
CisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIldlYkJpbmRpbmdzLmgiCiAjaW5j
bHVkZSA8bGltaXRzPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3Rm
L1N0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKQEAgLTIyMCw3ICsyMTksNyBAQCB2b2lkIENwcFZhcmlhbnQ6OnNldChOUE9iamVj
dCogbmV3VmFsdWUpCiAKIHN0cmluZyBDcHBWYXJpYW50Ojp0b1N0cmluZygpIGNvbnN0CiB7Ci0g
ICAgQVNTRVJUKGlzU3RyaW5nKCkpOworICAgIFdFQktJVF9BU1NFUlQoaXNTdHJpbmcoKSk7CiAg
ICAgcmV0dXJuIHN0cmluZyh2YWx1ZS5zdHJpbmdWYWx1ZS5VVEY4Q2hhcmFjdGVycywKICAgICAg
ICAgICAgICAgICAgIHZhbHVlLnN0cmluZ1ZhbHVlLlVURjhMZW5ndGgpOwogfQpAQCAtMjMxLDcg
KzIzMCw3IEBAIGludDMyX3QgQ3BwVmFyaWFudDo6dG9JbnQzMigpIGNvbnN0CiAgICAgICAgIHJl
dHVybiB2YWx1ZS5pbnRWYWx1ZTsKICAgICBpZiAoaXNEb3VibGUoKSkKICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlLmRvdWJsZVZhbHVlKTsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IDA7CiB9CiAKQEAgLTI0MSwyMSArMjQwLDIxIEBAIGRvdWJsZSBDcHBWYXJpYW50Ojp0b0RvdWJs
ZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlLmludFZh
bHVlKTsKICAgICBpZiAoaXNEb3VibGUoKSkKICAgICAgICAgcmV0dXJuIHZhbHVlLmRvdWJsZVZh
bHVlOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gMDsKIH0KIAogYm9vbCBDcHBWYXJpYW50Ojp0b0Jvb2xlYW4o
KSBjb25zdAogewotICAgIEFTU0VSVChpc0Jvb2woKSk7CisgICAgV0VCS0lUX0FTU0VSVChpc0Jv
b2woKSk7CiAgICAgcmV0dXJuIHZhbHVlLmJvb2xWYWx1ZTsKIH0KIAotVmVjdG9yPHN0cmluZz4g
Q3BwVmFyaWFudDo6dG9TdHJpbmdWZWN0b3IoKSBjb25zdAordmVjdG9yPHN0cmluZz4gQ3BwVmFy
aWFudDo6dG9TdHJpbmdWZWN0b3IoKSBjb25zdAogewogCi0gICAgQVNTRVJUKGlzT2JqZWN0KCkp
OwotICAgIFZlY3RvcjxzdHJpbmc+IHN0cmluZ1ZlY3RvcjsKKyAgICBXRUJLSVRfQVNTRVJUKGlz
T2JqZWN0KCkpOworICAgIHZlY3RvcjxzdHJpbmc+IHN0cmluZ1ZlY3RvcjsKICAgICBOUE9iamVj
dCogbnBWYWx1ZSA9IHZhbHVlLm9iamVjdFZhbHVlOwogICAgIE5QSWRlbnRpZmllciBsZW5ndGhJ
ZCA9IFdlYkJpbmRpbmdzOjpnZXRTdHJpbmdJZGVudGlmaWVyKCJsZW5ndGgiKTsKIApAQCAtMjkw
LDcgKzI4OSw3IEBAIFZlY3RvcjxzdHJpbmc+IENwcFZhcmlhbnQ6OnRvU3RyaW5nVmVjdG9yKCkg
Y29uc3QKICAgICAgICAgaWYgKE5QVkFSSUFOVF9JU19TVFJJTkcoaW5kZXhWYWx1ZSkpIHsKICAg
ICAgICAgICAgIHN0cmluZyBpdGVtKE5QVkFSSUFOVF9UT19TVFJJTkcoaW5kZXhWYWx1ZSkuVVRG
OENoYXJhY3RlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICBOUFZBUklBTlRfVE9fU1RSSU5H
KGluZGV4VmFsdWUpLlVURjhMZW5ndGgpOwotICAgICAgICAgICAgc3RyaW5nVmVjdG9yLmFwcGVu
ZChpdGVtKTsKKyAgICAgICAgICAgIHN0cmluZ1ZlY3Rvci5wdXNoX2JhY2soaXRlbSk7CiAgICAg
ICAgIH0KICAgICAgICAgV2ViQmluZGluZ3M6OnJlbGVhc2VWYXJpYW50VmFsdWUoJmluZGV4VmFs
dWUpOwogICAgIH0KQEAgLTMwMCw3ICsyOTksNyBAQCBWZWN0b3I8c3RyaW5nPiBDcHBWYXJpYW50
Ojp0b1N0cmluZ1ZlY3RvcigpIGNvbnN0CiBib29sIENwcFZhcmlhbnQ6Omludm9rZShjb25zdCBz
dHJpbmcmIG1ldGhvZCwgY29uc3QgQ3BwVmFyaWFudCogYXJndW1lbnRzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgYXJndW1lbnRDb3VudCwgQ3BwVmFyaWFudCYgcmVzdWx0KSBj
b25zdAogewotICAgIEFTU0VSVChpc09iamVjdCgpKTsKKyAgICBXRUJLSVRfQVNTRVJUKGlzT2Jq
ZWN0KCkpOwogICAgIE5QSWRlbnRpZmllciBtZXRob2ROYW1lID0gV2ViQmluZGluZ3M6OmdldFN0
cmluZ0lkZW50aWZpZXIobWV0aG9kLmNfc3RyKCkpOwogICAgIE5QT2JqZWN0KiBucE9iamVjdCA9
IHZhbHVlLm9iamVjdFZhbHVlOwogICAgIGlmICghV2ViQmluZGluZ3M6Omhhc01ldGhvZCgwLCBu
cE9iamVjdCwgbWV0aG9kTmFtZSkpCkBAIC0zMTQsNyArMzEzLDcgQEAgYm9vbCBDcHBWYXJpYW50
OjppbnZva2UoY29uc3Qgc3RyaW5nJiBtZXRob2QsIGNvbnN0IENwcFZhcmlhbnQqIGFyZ3VtZW50
cywKIGJvb2wgQ3BwVmFyaWFudDo6aW52b2tlRGVmYXVsdChjb25zdCBDcHBWYXJpYW50KiBhcmd1
bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ3BwVmFyaWFudCYgcmVzdWx0KSBjb25zdAogewotICAgIEFTU0VSVChpc09iamVjdCgp
KTsKKyAgICBXRUJLSVRfQVNTRVJUKGlzT2JqZWN0KCkpOwogICAgIE5QT2JqZWN0KiBucE9iamVj
dCA9IHZhbHVlLm9iamVjdFZhbHVlOwogICAgIE5QVmFyaWFudCByOwogICAgIGJvb2wgc3RhdHVz
ID0gV2ViQmluZGluZ3M6Omludm9rZURlZmF1bHQoMCwgbnBPYmplY3QsIGFyZ3VtZW50cywgYXJn
dW1lbnRDb3VudCwgJnIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5oCmluZGV4IGU4MmE3MGI2Njc1MjRmN2Iy
NmMyZDNjMzBiZjVjMWMyMjNkZmNmNzYuLmU5Mjk1YTNiZTg5NWJhM2UwYTk3MWIwZTllYTlkOGRh
ZjhlY2ZjMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL0NwcFZhcmlhbnQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9DcHBWYXJpYW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAKIAogI2luY2x1
ZGUgIldlYkJpbmRpbmdzLmgiCiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIApA
QCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICBib29sIHRvQm9vbGVhbigpIGNvbnN0Owog
ICAgIC8vIFJldHVybnMgYSB2ZWN0b3Igb2Ygc3RyaW5ncyBmb3IgdGhlIHNwZWNpZmllZCBhcmd1
bWVudC4gVGhpcyBpcyB1c2VmdWwKICAgICAvLyBmb3IgY29udmVydGluZyBhIEphdmFTY3JpcHQg
YXJyYXkgb2Ygc3RyaW5ncyBpbnRvIGEgdmVjdG9yIG9mIHN0cmluZ3MuCi0gICAgVmVjdG9yPHN0
ZDo6c3RyaW5nPiB0b1N0cmluZ1ZlY3RvcigpIGNvbnN0OworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiB0b1N0cmluZ1ZlY3RvcigpIGNvbnN0OwogCiAgICAgLy8gSW52b2tlIG1ldGhvZCBv
ZiB0aGUgZ2l2ZW4gbmFtZSBvbiBhbiBvYmplY3Qgd2l0aCB0aGUgc3VwcGxpZWQgYXJndW1lbnRz
LgogICAgIC8vIFRoZSBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG9iamVjdCBvbiB3aGlj
aCB0aGUgbWV0aG9kIGlzIHRvIGJlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKaW5kZXggYWI2MDE5
M2Q3NzA4MmQzOWM1NTZmM2UzOWMzM2EwMDQzNzk2NWY1Yi4uZGJjMDhiMjExOTkwZmZhNWM5NTQz
MTgxNmFmNzU1ZmU5OTM1ODZmMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcApAQCAtNDUsMTkg
KzQ1LDE5IEBACiAKICNpbmNsdWRlICJLZXlDb2RlTWFwcGluZy5oIgogI2luY2x1ZGUgIk1vY2tT
cGVsbENoZWNrLmgiCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIldlYkNvbnRl
eHRNZW51RGF0YS5oIgogI2luY2x1ZGUgIldlYkRyYWdPcGVyYXRpb24uaCIKICNpbmNsdWRlICJX
ZWJUZXN0RGVsZWdhdGUuaCIKICNpbmNsdWRlICJXZWJUb3VjaFBvaW50LmgiCiAjaW5jbHVkZSAi
V2ViVmlldy5oIgorI2luY2x1ZGUgPGRlcXVlPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJEcmFnRGF0
YS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJT
dHJpbmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCi0jaWYgT1MoV0lORE9XUykK
KyNpZmRlZiBXSU4zMgogI2luY2x1ZGUgIndpbi9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oIgogI2Vu
ZGlmCiAKQEAgLTk3LDkgKzk3LDkgQEAgV2ViRHJhZ0RhdGEgY3VycmVudERyYWdEYXRhOwogV2Vi
RHJhZ09wZXJhdGlvbiBjdXJyZW50RHJhZ0VmZmVjdDsKIFdlYkRyYWdPcGVyYXRpb25zTWFzayBj
dXJyZW50RHJhZ0VmZmVjdHNBbGxvd2VkOwogYm9vbCByZXBsYXlpbmdTYXZlZEV2ZW50cyA9IGZh
bHNlOwotRGVxdWU8U2F2ZWRFdmVudD4gbW91c2VFdmVudFF1ZXVlOworZGVxdWU8U2F2ZWRFdmVu
dD4gbW91c2VFdmVudFF1ZXVlOwogaW50IHRvdWNoTW9kaWZpZXJzOwotVmVjdG9yPFdlYlRvdWNo
UG9pbnQ+IHRvdWNoUG9pbnRzOwordmVjdG9yPFdlYlRvdWNoUG9pbnQ+IHRvdWNoUG9pbnRzOwog
CiAvLyBUaW1lIGFuZCBwbGFjZSBvZiB0aGUgbGFzdCBtb3VzZSB1cCBldmVudC4KIGRvdWJsZSBs
YXN0Q2xpY2tUaW1lU2VjID0gMDsKQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIGFwcGx5S2V5TW9k
aWZpZXIoY29uc3Qgc3RyaW5nJiBtb2RpZmllck5hbWUsIFdlYklucHV0RXZlbnQqIGV2ZW50KQog
ICAgIGJvb2wgaXNTeXN0ZW1LZXkgPSBmYWxzZTsKICAgICBjb25zdCBjaGFyKiBjaGFyYWN0ZXJz
ID0gbW9kaWZpZXJOYW1lLmNfc3RyKCk7CiAgICAgaWYgKCFzdHJjbXAoY2hhcmFjdGVycywgImN0
cmxLZXkiKQotI2lmICFPUyhNQUNfT1NfWCkKKyNpZm5kZWYgX19BUFBMRV9fCiAgICAgICAgIHx8
ICFzdHJjbXAoY2hhcmFjdGVycywgImFkZFNlbGVjdGlvbktleSIpCiAjZW5kaWYKICAgICAgICAg
KSB7CkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBhcHBseUtleU1vZGlmaWVyKGNvbnN0IHN0cmlu
ZyYgbW9kaWZpZXJOYW1lLCBXZWJJbnB1dEV2ZW50KiBldmVudCkKICAgICAgICAgZXZlbnQtPm1v
ZGlmaWVycyB8PSBXZWJJbnB1dEV2ZW50OjpTaGlmdEtleTsKICAgICBlbHNlIGlmICghc3RyY21w
KGNoYXJhY3RlcnMsICJhbHRLZXkiKSkgewogICAgICAgICBldmVudC0+bW9kaWZpZXJzIHw9IFdl
YklucHV0RXZlbnQ6OkFsdEtleTsKLSNpZiAhT1MoTUFDX09TX1gpCisjaWZuZGVmIF9fQVBQTEVf
XwogICAgICAgICAvLyBPbiBXaW5kb3dzIGFsbCBrZXlzIHdpdGggQWx0IG1vZGlmaWVyIHdpbGwg
YmUgbWFya2VkIGFzIHN5c3RlbSBrZXkuCiAgICAgICAgIC8vIFdlIGtlZXAgdGhlIHNhbWUgYmVo
YXZpb3Igb24gTGludXggYW5kIGV2ZXJ5d2hlcmUgbm9uLU1hYywgc2VlOgogICAgICAgICAvLyBX
ZWJLaXQvY2hyb21pdW0vc3JjL2d0ay9XZWJJbnB1dEV2ZW50RmFjdG9yeS5jcHAKQEAgLTE3Miw4
ICsxNzIsNyBAQCBib29sIGFwcGx5S2V5TW9kaWZpZXIoY29uc3Qgc3RyaW5nJiBtb2RpZmllck5h
bWUsIFdlYklucHV0RXZlbnQqIGV2ZW50KQogICAgICAgICAvLyBrZXB0IGluIHN5bmMgd2l0aCB0
aGUgcmVsYXRlZCBjb2RlIGluIGFib3ZlIGZpbGUuCiAgICAgICAgIGlzU3lzdGVtS2V5ID0gdHJ1
ZTsKICNlbmRpZgotI2lmIE9TKE1BQ19PU19YKQotICAgIH0gZWxzZSBpZiAoIXN0cmNtcChjaGFy
YWN0ZXJzLCAibWV0YUtleSIpIHx8ICFzdHJjbXAoY2hhcmFjdGVycywgImFkZFNlbGVjdGlvbktl
eSIpKSB7CisjaWZkZWYgX19BUFBMRV9fCiAgICAgICAgIGV2ZW50LT5tb2RpZmllcnMgfD0gV2Vi
SW5wdXRFdmVudDo6TWV0YUtleTsKICAgICAgICAgLy8gT24gTWFjIG9ubHkgY29tbWFuZCBrZXkg
cHJlc3NlcyBhcmUgbWFya2VkIGFzIHN5c3RlbSBrZXkuCiAgICAgICAgIC8vIFNlZSB0aGUgcmVs
YXRlZCBjb2RlIGluOiBXZWJLaXQvY2hyb21pdW0vc3JjL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9y
eS5jcHAKQEAgLTE5MSw4ICsxOTAsOCBAQCBib29sIGFwcGx5S2V5TW9kaWZpZXJzKGNvbnN0IENw
cFZhcmlhbnQqIGFyZ3VtZW50LCBXZWJJbnB1dEV2ZW50KiBldmVudCkKIHsKICAgICBib29sIGlz
U3lzdGVtS2V5ID0gZmFsc2U7CiAgICAgaWYgKGFyZ3VtZW50LT5pc09iamVjdCgpKSB7Ci0gICAg
ICAgIFZlY3RvcjxzdHJpbmc+IG1vZGlmaWVycyA9IGFyZ3VtZW50LT50b1N0cmluZ1ZlY3Rvcigp
OwotICAgICAgICBmb3IgKFZlY3RvcjxzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpID0gbW9kaWZp
ZXJzLmJlZ2luKCk7IGkgIT0gbW9kaWZpZXJzLmVuZCgpOyArK2kpCisgICAgICAgIHZlY3Rvcjxz
dHJpbmc+IG1vZGlmaWVycyA9IGFyZ3VtZW50LT50b1N0cmluZ1ZlY3RvcigpOworICAgICAgICBm
b3IgKHZlY3RvcjxzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpID0gbW9kaWZpZXJzLmJlZ2luKCk7
IGkgIT0gbW9kaWZpZXJzLmVuZCgpOyArK2kpCiAgICAgICAgICAgICBpc1N5c3RlbUtleSB8PSBh
cHBseUtleU1vZGlmaWVyKCppLCBldmVudCk7CiAgICAgfSBlbHNlIGlmIChhcmd1bWVudC0+aXNT
dHJpbmcoKSkKICAgICAgICAgaXNTeXN0ZW1LZXkgPSBhcHBseUtleU1vZGlmaWVyKGFyZ3VtZW50
LT50b1N0cmluZygpLCBldmVudCk7CkBAIC0yMDQsNyArMjAzLDcgQEAgYm9vbCBhcHBseUtleU1v
ZGlmaWVycyhjb25zdCBDcHBWYXJpYW50KiBhcmd1bWVudCwgV2ViSW5wdXRFdmVudCogZXZlbnQp
CiAvLyBvZiB0aGUgZWRpdCBjb21tYW5kIHdpbGwgYmUgc3RvcmVkIGluIHwqbmFtZXwuCiBib29s
IGdldEVkaXRDb21tYW5kKGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50LCBzdHJpbmcqIG5h
bWUpCiB7Ci0jaWYgT1MoTUFDX09TX1gpCisjaWZkZWYgX19BUFBMRV9fCiAgICAgLy8gV2Ugb25s
eSBjYXJlcyBhYm91dCBMZWZ0LFJpZ2h0LFVwLERvd24ga2V5cyB3aXRoIENvbW1hbmQgb3IgQ29t
bWFuZCtTaGlmdAogICAgIC8vIG1vZGlmaWVycy4gVGhlc2Uga2V5IGV2ZW50cyBjb3JyZXNwb25k
IHRvIHNvbWUgc3BlY2lhbCBtb3ZlbWVudCBhbmQKICAgICAvLyBzZWxlY3Rpb24gZWRpdG9yIGNv
bW1hbmRzLCBhbmQgd2FzIHN1cHBvc2VkIHRvIGJlIGhhbmRsZWQgaW4KQEAgLTMwNiw3ICszMDUs
NyBAQCBFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIoKQogICAgIC8vIFdoZW4gc2V0IHRvIHRydWUg
KHRoZSBkZWZhdWx0IHZhbHVlKSwgd2UgYmF0Y2ggbW91c2UgbW92ZSBhbmQgbW91c2UgdXAKICAg
ICAvLyBldmVudHMgc28gd2UgY2FuIHNpbXVsYXRlIGRyYWcgJiBkcm9wLgogICAgIGJpbmRQcm9w
ZXJ0eSgiZHJhZ01vZGUiLCAmZHJhZ01vZGUpOwotI2lmIE9TKFdJTkRPV1MpCisjaWZkZWYgV0lO
MzIKICAgICBiaW5kUHJvcGVydHkoIldNX0tFWURPV04iLCAmd21LZXlEb3duKTsKICAgICBiaW5k
UHJvcGVydHkoIldNX0tFWVVQIiwgJndtS2V5VXApOwogICAgIGJpbmRQcm9wZXJ0eSgiV01fQ0hB
UiIsICZ3bUNoYXIpOwpAQCAtMzIxLDEzICszMjAsMTMgQEAgRXZlbnRTZW5kZXI6OkV2ZW50U2Vu
ZGVyKCkKIHZvaWQgRXZlbnRTZW5kZXI6OnJlc2V0KCkKIHsKICAgICAvLyBUaGUgdGVzdCBzaG91
bGQgaGF2ZSBmaW5pc2hlZCBhIGRyYWcgYW5kIHRoZSBtb3VzZSBidXR0b24gc3RhdGUuCi0gICAg
QVNTRVJUKGN1cnJlbnREcmFnRGF0YS5pc051bGwoKSk7CisgICAgV0VCS0lUX0FTU0VSVChjdXJy
ZW50RHJhZ0RhdGEuaXNOdWxsKCkpOwogICAgIGN1cnJlbnREcmFnRGF0YS5yZXNldCgpOwogICAg
IGN1cnJlbnREcmFnRWZmZWN0ID0gV2ViS2l0OjpXZWJEcmFnT3BlcmF0aW9uTm9uZTsKICAgICBj
dXJyZW50RHJhZ0VmZmVjdHNBbGxvd2VkID0gV2ViS2l0OjpXZWJEcmFnT3BlcmF0aW9uTm9uZTsK
ICAgICBwcmVzc2VkQnV0dG9uID0gV2ViTW91c2VFdmVudDo6QnV0dG9uTm9uZTsKICAgICBkcmFn
TW9kZS5zZXQodHJ1ZSk7Ci0jaWYgT1MoV0lORE9XUykKKyNpZmRlZiBXSU4zMgogICAgIHdtS2V5
RG93bi5zZXQoV01fS0VZRE9XTik7CiAgICAgd21LZXlVcC5zZXQoV01fS0VZVVApOwogICAgIHdt
Q2hhci5zZXQoV01fQ0hBUik7CkBAIC00MTcsNyArNDE2LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6
bW91c2VEb3duKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQKICAgICB3ZWJ2aWV3KCktPmxheW91dCgpOwogCiAgICAgaW50IGJ1dHRvbk51bWJlciA9
IGdldEJ1dHRvbk51bWJlckZyb21TaW5nbGVBcmcoYXJndW1lbnRzKTsKLSAgICBBU1NFUlQoYnV0
dG9uTnVtYmVyICE9IC0xKTsKKyAgICBXRUJLSVRfQVNTRVJUKGJ1dHRvbk51bWJlciAhPSAtMSk7
CiAKICAgICBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uVHlwZSA9IGdldEJ1dHRvblR5cGVG
cm9tQnV0dG9uTnVtYmVyKGJ1dHRvbk51bWJlcik7CiAKQEAgLTQzOSw3ICs0MzgsNyBAQCB2b2lk
IEV2ZW50U2VuZGVyOjptb3VzZVVwKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBD
cHBWYXJpYW50KiByZXN1bHQpCiAgICAgd2VidmlldygpLT5sYXlvdXQoKTsKIAogICAgIGludCBi
dXR0b25OdW1iZXIgPSBnZXRCdXR0b25OdW1iZXJGcm9tU2luZ2xlQXJnKGFyZ3VtZW50cyk7Ci0g
ICAgQVNTRVJUKGJ1dHRvbk51bWJlciAhPSAtMSk7CisgICAgV0VCS0lUX0FTU0VSVChidXR0b25O
dW1iZXIgIT0gLTEpOwogCiAgICAgV2ViTW91c2VFdmVudDo6QnV0dG9uIGJ1dHRvblR5cGUgPSBn
ZXRCdXR0b25UeXBlRnJvbUJ1dHRvbk51bWJlcihidXR0b25OdW1iZXIpOwogCkBAIC00NDcsNyAr
NDQ2LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6bW91c2VVcChjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogICAgICAgICBTYXZlZEV2ZW50IHNhdmVk
RXZlbnQ7CiAgICAgICAgIHNhdmVkRXZlbnQudHlwZSA9IFNhdmVkRXZlbnQ6Ok1vdXNlVXA7CiAg
ICAgICAgIHNhdmVkRXZlbnQuYnV0dG9uVHlwZSA9IGJ1dHRvblR5cGU7Ci0gICAgICAgIG1vdXNl
RXZlbnRRdWV1ZS5hcHBlbmQoc2F2ZWRFdmVudCk7CisgICAgICAgIG1vdXNlRXZlbnRRdWV1ZS5w
dXNoX2JhY2soc2F2ZWRFdmVudCk7CiAgICAgICAgIHJlcGxheVNhdmVkRXZlbnRzKCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgV2ViTW91c2VFdmVudCBldmVudDsKQEAgLTUwNCw3ICs1MDMsNyBA
QCB2b2lkIEV2ZW50U2VuZGVyOjptb3VzZU1vdmVUbyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW50cywgQ3BwVmFyaWFudCogcmVzdQogICAgICAgICBTYXZlZEV2ZW50IHNhdmVkRXZlbnQ7
CiAgICAgICAgIHNhdmVkRXZlbnQudHlwZSA9IFNhdmVkRXZlbnQ6Ok1vdXNlTW92ZTsKICAgICAg
ICAgc2F2ZWRFdmVudC5wb3MgPSBtb3VzZVBvczsKLSAgICAgICAgbW91c2VFdmVudFF1ZXVlLmFw
cGVuZChzYXZlZEV2ZW50KTsKKyAgICAgICAgbW91c2VFdmVudFF1ZXVlLnB1c2hfYmFjayhzYXZl
ZEV2ZW50KTsKICAgICB9IGVsc2UgewogICAgICAgICBXZWJNb3VzZUV2ZW50IGV2ZW50OwogICAg
ICAgICBpbml0TW91c2VFdmVudChXZWJJbnB1dEV2ZW50OjpNb3VzZU1vdmUsIHByZXNzZWRCdXR0
b24sIG1vdXNlUG9zLCAmZXZlbnQsIGdldEN1cnJlbnRFdmVudFRpbWVTZWMobV9kZWxlZ2F0ZSkp
OwpAQCAtNTk3LDcgKzU5Niw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmtleURvd24oY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKICAgICAgICAgfQog
ICAgICAgICBpZiAoIWNvZGUpIHsKICAgICAgICAgICAgIFdlYlN0cmluZyB3ZWJDb2RlU3RyID0g
V2ViU3RyaW5nOjpmcm9tVVRGOChjb2RlU3RyLmRhdGEoKSwgY29kZVN0ci5zaXplKCkpOwotICAg
ICAgICAgICAgQVNTRVJUKHdlYkNvZGVTdHIubGVuZ3RoKCkgPT0gMSk7CisgICAgICAgICAgICBX
RUJLSVRfQVNTRVJUKHdlYkNvZGVTdHIubGVuZ3RoKCkgPT0gMSk7CiAgICAgICAgICAgICB0ZXh0
ID0gY29kZSA9IHdlYkNvZGVTdHIuZGF0YSgpWzBdOwogICAgICAgICAgICAgbmVlZHNTaGlmdEtl
eU1vZGlmaWVyID0gbmVlZHNTaGlmdE1vZGlmaWVyKGNvZGUpOwogICAgICAgICAgICAgaWYgKChj
b2RlICYgMHhGRikgPj0gJ2EnICYmIChjb2RlICYgMHhGRikgPD0gJ3onKQpAQCAtNjE1LDcgKzYx
NCw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmtleURvd24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKICAgICBldmVudERvd24udHlwZSA9IFdlYklu
cHV0RXZlbnQ6OlJhd0tleURvd247CiAgICAgZXZlbnREb3duLm1vZGlmaWVycyA9IDA7CiAgICAg
ZXZlbnREb3duLndpbmRvd3NLZXlDb2RlID0gY29kZTsKLSNpZiBPUyhMSU5VWCkgJiYgVVNFKEdU
SykKKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgVVNFKEdUSykKICAgICBldmVudERvd24ubmF0
aXZlS2V5Q29kZSA9IE5hdGl2ZUtleUNvZGVGb3JXaW5kb3dzS2V5Q29kZShjb2RlKTsKICNlbmRp
ZgogCkBAIC02NzcsNyArNjc2LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6ZGlzcGF0Y2hNZXNzYWdl
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogewogICAgIHJl
c3VsdC0+c2V0TnVsbCgpOwogCi0jaWYgT1MoV0lORE9XUykKKyNpZmRlZiBXSU4zMgogICAgIGlm
IChhcmd1bWVudHMuc2l6ZSgpID09IDMpIHsKICAgICAgICAgLy8gR3JhYiB0aGUgbWVzc2FnZSBp
ZCB0byBzZWUgaWYgd2UgbmVlZCB0byBkaXNwYXRjaCBpdC4KICAgICAgICAgaW50IG1zZyA9IGFy
Z3VtZW50c1swXS50b0ludDMyKCk7CkBAIC02OTMsNyArNjkyLDcgQEAgdm9pZCBFdmVudFNlbmRl
cjo6ZGlzcGF0Y2hNZXNzYWdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KgogICAgICAgICB1bnNpZ25lZCBsb25nIGxwYXJhbSA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmc+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKICAgICAgICAgd2VidmlldygpLT5o
YW5kbGVJbnB1dEV2ZW50KFdlYklucHV0RXZlbnRGYWN0b3J5OjprZXlib2FyZEV2ZW50KDAsIG1z
ZywgYXJndW1lbnRzWzFdLnRvSW50MzIoKSwgbHBhcmFtKSk7CiAgICAgfSBlbHNlCi0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAjZW5kaWYKIH0KIApAQCAtNzE3LDcgKzcxNiw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6Omxl
YXBGb3J3YXJkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1CiAgICAgICAgIFNhdmVkRXZlbnQgc2F2ZWRFdmVudDsKICAgICAgICAgc2F2ZWRFdmVudC50
eXBlID0gU2F2ZWRFdmVudDo6TGVhcEZvcndhcmQ7CiAgICAgICAgIHNhdmVkRXZlbnQubWlsbGlz
ZWNvbmRzID0gbWlsbGlzZWNvbmRzOwotICAgICAgICBtb3VzZUV2ZW50UXVldWUuYXBwZW5kKHNh
dmVkRXZlbnQpOworICAgICAgICBtb3VzZUV2ZW50UXVldWUucHVzaF9iYWNrKHNhdmVkRXZlbnQp
OwogICAgIH0gZWxzZQogICAgICAgICBkb0xlYXBGb3J3YXJkKG1pbGxpc2Vjb25kcyk7CiB9CkBA
IC03NzgsOCArNzc3LDkgQEAgdm9pZCBFdmVudFNlbmRlcjo6Y29udGludW91c01vdXNlU2Nyb2xs
QnkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFYKIHZvaWQgRXZlbnRTZW5k
ZXI6OnJlcGxheVNhdmVkRXZlbnRzKCkKIHsKICAgICByZXBsYXlpbmdTYXZlZEV2ZW50cyA9IHRy
dWU7Ci0gICAgd2hpbGUgKCFtb3VzZUV2ZW50UXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFNh
dmVkRXZlbnQgZSA9IG1vdXNlRXZlbnRRdWV1ZS50YWtlRmlyc3QoKTsKKyAgICB3aGlsZSAoIW1v
dXNlRXZlbnRRdWV1ZS5lbXB0eSgpKSB7CisgICAgICAgIFNhdmVkRXZlbnQgZSA9IG1vdXNlRXZl
bnRRdWV1ZS5mcm9udCgpOworICAgICAgICBtb3VzZUV2ZW50UXVldWUucG9wX2Zyb250KCk7CiAK
ICAgICAgICAgc3dpdGNoIChlLnR5cGUpIHsKICAgICAgICAgY2FzZSBTYXZlZEV2ZW50OjpNb3Vz
ZU1vdmU6IHsKQEAgLTc5OCw3ICs3OTgsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpyZXBsYXlTYXZl
ZEV2ZW50cygpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgxMiw3ICs4MTIs
NyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpyZXBsYXlTYXZlZEV2ZW50cygpCiAvLyAgIGFsc28gbWFr
ZXMgc2Vuc2UuIFRoaXMgZnVuY3Rpb24gaXMgZG9pbmcgc3VjaCBmb3Igc29tZSBmbGFncy4KIC8v
IC0gU29tZSB0ZXN0IGV2ZW4gY2hlY2tzIGFjdHVhbCBzdHJpbmcgY29udGVudC4gU28gcHJvdmlk
aW5nIGl0IHdvdWxkIGJlIGFsc28gaGVscGZ1bC4KIC8vCi1zdGF0aWMgVmVjdG9yPFdlYlN0cmlu
Zz4gbWFrZU1lbnVJdGVtU3RyaW5nc0ZvcihXZWJDb250ZXh0TWVudURhdGEqIGNvbnRleHRNZW51
LCBXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQorc3RhdGljIHZlY3RvcjxXZWJTdHJpbmc+IG1h
a2VNZW51SXRlbVN0cmluZ3NGb3IoV2ViQ29udGV4dE1lbnVEYXRhKiBjb250ZXh0TWVudSwgV2Vi
VGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKICAgICAvLyBUaGVzZSBjb25zdGFudHMgYXJlIGJh
c2VkIG9uIFNhZmFyaSdzIGNvbnRleHQgbWVudSBiZWNhdXNlIHRlc3RzIGFyZSBtYWRlIGZvciBp
dC4KICAgICBzdGF0aWMgY29uc3QgY2hhciogbm9uRWRpdGFibGVNZW51U3RyaW5nc1tdID0geyAi
QmFjayIsICJSZWxvYWQgUGFnZSIsICJPcGVuIGluIERhc2hiYW9yZCIsICI8c2VwYXJhdG9yPiIs
ICJWaWV3IFNvdXJjZSIsICJTYXZlIFBhZ2UgQXMiLCAiUHJpbnQgUGFnZSIsICJJbnNwZWN0IEVs
ZW1lbnQiLCAwIH07CkBAIC04MjAsMjAgKzgyMCwyMCBAQCBzdGF0aWMgVmVjdG9yPFdlYlN0cmlu
Zz4gbWFrZU1lbnVJdGVtU3RyaW5nc0ZvcihXZWJDb250ZXh0TWVudURhdGEqIGNvbnRleHRNZW51
LAogCiAgICAgLy8gVGhpcyBpcyBwb3NzaWJsZSBiZWNhdXNlIG1vdXNlIGV2ZW50cyBhcmUgY2Fu
Y2VsbGVhYmxlLgogICAgIGlmICghY29udGV4dE1lbnUpCi0gICAgICAgIHJldHVybiBWZWN0b3I8
V2ViU3RyaW5nPigpOworICAgICAgICByZXR1cm4gdmVjdG9yPFdlYlN0cmluZz4oKTsKIAotICAg
IFZlY3RvcjxXZWJTdHJpbmc+IHN0cmluZ3M7CisgICAgdmVjdG9yPFdlYlN0cmluZz4gc3RyaW5n
czsKIAogICAgIGlmIChjb250ZXh0TWVudS0+aXNFZGl0YWJsZSkgewogICAgICAgICBmb3IgKGNv
bnN0IGNoYXIqKiBpdGVtID0gZWRpdGFibGVNZW51U3RyaW5nczsgKml0ZW07ICsraXRlbSkgCi0g
ICAgICAgICAgICBzdHJpbmdzLmFwcGVuZChXZWJTdHJpbmc6OmZyb21VVEY4KCppdGVtKSk7Cisg
ICAgICAgICAgICBzdHJpbmdzLnB1c2hfYmFjayhXZWJTdHJpbmc6OmZyb21VVEY4KCppdGVtKSk7
CiAgICAgICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHN1Z2dlc3Rpb25zOwogICAgICAgICBNb2Nr
U3BlbGxDaGVjazo6ZmlsbFN1Z2dlc3Rpb25MaXN0KGNvbnRleHRNZW51LT5taXNzcGVsbGVkV29y
ZCwgJnN1Z2dlc3Rpb25zKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdWdnZXN0
aW9ucy5zaXplKCk7ICsraSkgCi0gICAgICAgICAgICBzdHJpbmdzLmFwcGVuZChzdWdnZXN0aW9u
c1tpXSk7CisgICAgICAgICAgICBzdHJpbmdzLnB1c2hfYmFjayhzdWdnZXN0aW9uc1tpXSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChjb25zdCBjaGFyKiogaXRlbSA9IG5vbkVkaXRhYmxl
TWVudVN0cmluZ3M7ICppdGVtOyArK2l0ZW0pIAotICAgICAgICAgICAgc3RyaW5ncy5hcHBlbmQo
V2ViU3RyaW5nOjpmcm9tVVRGOCgqaXRlbSkpOworICAgICAgICAgICAgc3RyaW5ncy5wdXNoX2Jh
Y2soV2ViU3RyaW5nOjpmcm9tVVRGOCgqaXRlbSkpOwogICAgIH0KIAogICAgIHJldHVybiBzdHJp
bmdzOwpAQCAtODU4LDcgKzg1OCw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmNvbnRleHRDbGljayhj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzCiAgICAgaW5p
dE1vdXNlRXZlbnQoV2ViSW5wdXRFdmVudDo6TW91c2VEb3duLCBXZWJNb3VzZUV2ZW50OjpCdXR0
b25SaWdodCwgbGFzdE1vdXNlUG9zLCAmZXZlbnQsIGdldEN1cnJlbnRFdmVudFRpbWVTZWMobV9k
ZWxlZ2F0ZSkpOwogICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVudChldmVudCk7CiAKLSNp
ZiBPUyhXSU5ET1dTKQorI2lmZGVmIFdJTjMyCiAgICAgaW5pdE1vdXNlRXZlbnQoV2ViSW5wdXRF
dmVudDo6TW91c2VVcCwgV2ViTW91c2VFdmVudDo6QnV0dG9uUmlnaHQsIGxhc3RNb3VzZVBvcywg
JmV2ZW50LCBnZXRDdXJyZW50RXZlbnRUaW1lU2VjKG1fZGVsZWdhdGUpKTsKICAgICB3ZWJ2aWV3
KCktPmhhbmRsZUlucHV0RXZlbnQoZXZlbnQpOwogCkBAIC05MTUsNyArOTE1LDcgQEAgdm9pZCBF
dmVudFNlbmRlcjo6c2NoZWR1bGVBc3luY2hyb25vdXNLZXlEb3duKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLAogdm9pZCBFdmVudFNlbmRlcjo6YmVnaW5EcmFnV2l0aEZpbGVzKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAg
ICAgY3VycmVudERyYWdEYXRhLmluaXRpYWxpemUoKTsKLSAgICBWZWN0b3I8c3RyaW5nPiBmaWxl
cyA9IGFyZ3VtZW50c1swXS50b1N0cmluZ1ZlY3RvcigpOworICAgIHZlY3RvcjxzdHJpbmc+IGZp
bGVzID0gYXJndW1lbnRzWzBdLnRvU3RyaW5nVmVjdG9yKCk7CiAgICAgV2ViVmVjdG9yPFdlYlN0
cmluZz4gYWJzb2x1dGVGaWxlbmFtZXMoZmlsZXMuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGZpbGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFdlYkRyYWdEYXRhOjpJdGVt
IGl0ZW07CkBAIC05NTQsNyArOTU0LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6YWRkVG91Y2hQb2lu
dChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmUKICAgICAg
ICAgICAgIGxvd2VzdElkKys7CiAgICAgfQogICAgIHRvdWNoUG9pbnQuaWQgPSBsb3dlc3RJZDsK
LSAgICB0b3VjaFBvaW50cy5hcHBlbmQodG91Y2hQb2ludCk7CisgICAgdG91Y2hQb2ludHMucHVz
aF9iYWNrKHRvdWNoUG9pbnQpOwogfQogCiB2b2lkIEV2ZW50U2VuZGVyOjpjbGVhclRvdWNoUG9p
bnRzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTk2OCw3
ICs5NjgsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpyZWxlYXNlVG91Y2hQb2ludChjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudAogICAgIHJlc3VsdC0+c2V0TnVsbCgp
OwogCiAgICAgY29uc3QgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudHNbMF0udG9JbnQzMigpOwot
ICAgIEFTU0VSVChpbmRleCA8IHRvdWNoUG9pbnRzLnNpemUoKSk7CisgICAgV0VCS0lUX0FTU0VS
VChpbmRleCA8IHRvdWNoUG9pbnRzLnNpemUoKSk7CiAKICAgICBXZWJUb3VjaFBvaW50KiB0b3Vj
aFBvaW50ID0gJnRvdWNoUG9pbnRzW2luZGV4XTsKICAgICB0b3VjaFBvaW50LT5zdGF0ZSA9IFdl
YlRvdWNoUG9pbnQ6OlN0YXRlUmVsZWFzZWQ7CkBAIC0xMDAwLDcgKzEwMDAsNyBAQCB2b2lkIEV2
ZW50U2VuZGVyOjp1cGRhdGVUb3VjaFBvaW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KgogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogCiAgICAgY29uc3QgdW5z
aWduZWQgaW5kZXggPSBhcmd1bWVudHNbMF0udG9JbnQzMigpOwotICAgIEFTU0VSVChpbmRleCA8
IHRvdWNoUG9pbnRzLnNpemUoKSk7CisgICAgV0VCS0lUX0FTU0VSVChpbmRleCA8IHRvdWNoUG9p
bnRzLnNpemUoKSk7CiAKICAgICBXZWJQb2ludCBwb3NpdGlvbihhcmd1bWVudHNbMV0udG9JbnQz
MigpLCBhcmd1bWVudHNbMl0udG9JbnQzMigpKTsKICAgICBXZWJUb3VjaFBvaW50KiB0b3VjaFBv
aW50ID0gJnRvdWNoUG9pbnRzW2luZGV4XTsKQEAgLTEwMTQsNyArMTAxNCw3IEBAIHZvaWQgRXZl
bnRTZW5kZXI6OmNhbmNlbFRvdWNoUG9pbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAKICAgICBjb25zdCB1bnNp
Z25lZCBpbmRleCA9IGFyZ3VtZW50c1swXS50b0ludDMyKCk7Ci0gICAgQVNTRVJUKGluZGV4IDwg
dG91Y2hQb2ludHMuc2l6ZSgpKTsKKyAgICBXRUJLSVRfQVNTRVJUKGluZGV4IDwgdG91Y2hQb2lu
dHMuc2l6ZSgpKTsKIAogICAgIFdlYlRvdWNoUG9pbnQqIHRvdWNoUG9pbnQgPSAmdG91Y2hQb2lu
dHNbaW5kZXhdOwogICAgIHRvdWNoUG9pbnQtPnN0YXRlID0gV2ViVG91Y2hQb2ludDo6U3RhdGVD
YW5jZWxsZWQ7CkBAIC0xMDIyLDcgKzEwMjIsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpjYW5jZWxU
b3VjaFBvaW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50Kgog
CiB2b2lkIEV2ZW50U2VuZGVyOjpzZW5kQ3VycmVudFRvdWNoRXZlbnQoY29uc3QgV2ViSW5wdXRF
dmVudDo6VHlwZSB0eXBlKQogewotICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV2Vi
VG91Y2hFdmVudDo6dG91Y2hlc0xlbmd0aENhcCkgPiB0b3VjaFBvaW50cy5zaXplKCkpOworICAg
IFdFQktJVF9BU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFdlYlRvdWNoRXZlbnQ6OnRvdWNo
ZXNMZW5ndGhDYXApID4gdG91Y2hQb2ludHMuc2l6ZSgpKTsKICAgICB3ZWJ2aWV3KCktPmxheW91
dCgpOwogCiAgICAgV2ViVG91Y2hFdmVudCB0b3VjaEV2ZW50OwpAQCAtMTAzNyw3ICsxMDM3LDcg
QEAgdm9pZCBFdmVudFNlbmRlcjo6c2VuZEN1cnJlbnRUb3VjaEV2ZW50KGNvbnN0IFdlYklucHV0
RXZlbnQ6OlR5cGUgdHlwZSkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hQb2lu
dHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgV2ViVG91Y2hQb2ludCogdG91Y2hQb2ludCA9ICZ0
b3VjaFBvaW50c1tpXTsKICAgICAgICAgaWYgKHRvdWNoUG9pbnQtPnN0YXRlID09IFdlYlRvdWNo
UG9pbnQ6OlN0YXRlUmVsZWFzZWQpIHsKLSAgICAgICAgICAgIHRvdWNoUG9pbnRzLnJlbW92ZShp
KTsKKyAgICAgICAgICAgIHRvdWNoUG9pbnRzLmVyYXNlKHRvdWNoUG9pbnRzLmJlZ2luKCkgKyBp
KTsKICAgICAgICAgICAgIC0taTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0b3VjaFBv
aW50LT5zdGF0ZSA9IFdlYlRvdWNoUG9pbnQ6OlN0YXRlU3RhdGlvbmFyeTsKQEAgLTEyNTcsNyAr
MTI1Nyw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVFdmVudChXZWJJbnB1dEV2ZW50OjpU
eXBlIHR5cGUsIGNvbnN0IENwcEFyZ3VtZW50TGlzdCYKICAgICAgICAgfQogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIGV2ZW50Lmdsb2JhbFgg
PSBldmVudC54OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvS2V5Q29kZU1hcHBpbmcuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1hcHBpbmcuY3BwCmluZGV4IGMzMzlmMmYyYmNk
MjVhODQwNmMzNDY3Zjg4NGU4ZmJhNTM0Njk3NjUuLjIxMTU4NmUzNWUwYzZmN2EyODVkYzk2ZTY2
NzYxOThmZTAwYzU5ZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFwcGluZy5jcHAKQEAgLTMxLDEz
ICszMSwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIktleUNvZGVNYXBwaW5n
LmgiCiAKLSNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KLQogbmFtZXNwYWNlIFdlYlRlc3RS
dW5uZXIgewogCiBpbnQgTmF0aXZlS2V5Q29kZUZvcldpbmRvd3NLZXlDb2RlKGludCBrZXlzeW0p
CiB7Ci0jaWYgT1MoTElOVVgpICYmIFVTRShHVEspCisjaWYgZGVmaW5lZChfX2xpbnV4X18pICYm
IFVTRShHVEspCiAgICAgLy8gU2VlIC91c3Ivc2hhcmUvWDExL3hrYi9rZXljb2Rlcy8qCiAgICAg
c3RhdGljIGNvbnN0IGludCBhc2NpaVRvS2V5Q29kZVtdID0gewogICAgICAgICAwLApAQCAtMjQw
LDggKzIzOCw3IEBAIGludCBOYXRpdmVLZXlDb2RlRm9yV2luZG93c0tleUNvZGUoaW50IGtleXN5
bSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oa2V5
c3ltKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4ga2V5c3ltIC0ga2V5c3ltOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5jcHAKaW5kZXggN2Q0OWVkMmZhYTM4
OGVjNjhkZTYwN2U1YTBlM2NlNjEwNTMxZjI3Yi4uNjFlZWUwYzgwNTI1MGVjZTc1ZDY4NTcwZmI3
MGFmMzNmYzZhZmY5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5jcHAKQEAgLTMx
LDIwICszMSwyMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1vY2tHcmFtbWFy
Q2hlY2suaCIKIAorI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDU3RyaW5n
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5oIgorI2lu
Y2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCIK
LQotI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1l
c3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKLWJvb2wgTW9ja0dyYW1tYXJDaGVjazo6Y2hlY2tHcmFt
bWFyT2ZTdHJpbmcoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBWZWN0b3I8V2ViVGV4dENoZWNraW5n
UmVzdWx0PiogcmVzdWx0cykKK2Jvb2wgTW9ja0dyYW1tYXJDaGVjazo6Y2hlY2tHcmFtbWFyT2ZT
dHJpbmcoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCB2ZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0
PiogcmVzdWx0cykKIHsKLSAgICBBU1NFUlQocmVzdWx0cyk7Ci0gICAgV1RGOjpTdHJpbmcgc3Ry
aW5nVGV4dCh0ZXh0LmRhdGEoKSwgdGV4dC5sZW5ndGgoKSk7Ci0gICAgaWYgKHN0cmluZ1RleHQu
ZmluZChpc0FTQ0lJQWxwaGEpID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKQorICAgIFdFQktJ
VF9BU1NFUlQocmVzdWx0cyk7CisgICAgc3RyaW5nMTYgc3RyaW5nVGV4dCA9IHRleHQ7CisgICAg
aWYgKGZpbmRfaWYoc3RyaW5nVGV4dC5iZWdpbigpLCBzdHJpbmdUZXh0LmVuZCgpLCBpc0FTQ0lJ
QWxwaGEpID09IHN0cmluZ1RleHQuZW5kKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gRmluZCBtYXRjaGluZyBncmFtbWF0aWNhbCBlcnJvcnMgZnJvbSBrbm93biBvbmVzLiBUaGlz
IGZ1bmN0aW9uIGhhcyB0bwpAQCAtNjksMTAgKzcxLDEzIEBAIGJvb2wgTW9ja0dyYW1tYXJDaGVj
azo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBWZWN0b3I8V2Vi
VGV4CiAgICAgfTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFSUkFZU0laRV9VTlNBRkUo
Z3JhbW1hckVycm9ycyk7ICsraSkgewogICAgICAgICBpbnQgb2Zmc2V0ID0gMDsKLSAgICAgICAg
d2hpbGUgKChvZmZzZXQgPSBzdHJpbmdUZXh0LmZpbmQoZ3JhbW1hckVycm9yc1tpXS50ZXh0LCBv
ZmZzZXQpKSAhPSAtMSkgewotICAgICAgICAgICAgcmVzdWx0cy0+YXBwZW5kKFdlYlRleHRDaGVj
a2luZ1Jlc3VsdChXZWJUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciwgb2Zmc2V0ICsgZ3JhbW1hckVy
cm9yc1tpXS5sb2NhdGlvbiwgZ3JhbW1hckVycm9yc1tpXS5sZW5ndGgpKTsKKyAgICAgICAgc3Ry
aW5nMTYgZXJyb3IoZ3JhbW1hckVycm9yc1tpXS50ZXh0LCBncmFtbWFyRXJyb3JzW2ldLnRleHQg
KyBzdHJsZW4oZ3JhbW1hckVycm9yc1tpXS50ZXh0KSk7CisgICAgICAgIHdoaWxlICgob2Zmc2V0
ID0gc3RyaW5nVGV4dC5maW5kKGVycm9yLCBvZmZzZXQpKSAhPSBzdHJpbmcxNjo6bnBvcykgewor
ICAgICAgICAgICAgcmVzdWx0cy0+cHVzaF9iYWNrKFdlYlRleHRDaGVja2luZ1Jlc3VsdChXZWJU
ZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciwgb2Zmc2V0ICsgZ3JhbW1hckVycm9yc1tpXS5sb2NhdGlv
biwgZ3JhbW1hckVycm9yc1tpXS5sZW5ndGgpKTsKICAgICAgICAgICAgIG9mZnNldCArPSBncmFt
bWFyRXJyb3JzW2ldLmxlbmd0aDsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7
CiB9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suaAppbmRleCA2NDI3MWIzZmEzYzJj
MDFhYzEzNmM4ZTEwMzA3MTYxOTI2ZDNlOTgzLi5hMTgzZGNjYjA3NGM3OTBiZmFjYWMzZjc3OTg3
NWQ5ZGE4ODE5OTVjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5oCkBAIC0zMSw4ICsz
MSw3IEBACiAjaWZuZGVmIE1vY2tHcmFtbWFyQ2hlY2tfaAogI2RlZmluZSBNb2NrR3JhbW1hckNo
ZWNrX2gKIAotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00
MSw2ICs0MCw4IEBAIHN0cnVjdCBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ7CiAKIH0KIAorbmFtZXNw
YWNlIFdlYlRlc3RSdW5uZXIgeworCiAvLyBBIG1vY2sgaW1wbGVtZW50YXRpb24gb2YgYSBncmFt
bWFyLWNoZWNrZXIgdXNlZCBmb3IgV2ViS2l0IHRlc3RzLiBUaGlzIGNsYXNzCiAvLyBvbmx5IGlt
cGxlbWVudHMgdGhlIG1pbmltYWwgZnVuY3Rpb25hcml0aWVzIHJlcXVpcmVkIGJ5IFdlYktpdCB0
ZXN0cywgaS5lLgogLy8gdGhpcyBjbGFzcyBqdXN0IGNvbXBhcmVzIHRoZSBnaXZlbiBzdHJpbmcg
d2l0aCBrbm93biBncmFtbWFyIG1pc3Rha2VzIGluCkBAIC00OCw3ICs0OSw5IEBAIHN0cnVjdCBX
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQ7CiAvLyBmb3Igd2Via2l0IHRlc3RzLCB0aGlzIGNsYXNzIGlz
IG5vdCBzdWl0YWJsZSBmb3IgYW55IG90aGVyIHVzYWdlcy4KIGNsYXNzIE1vY2tHcmFtbWFyQ2hl
Y2sgewogcHVibGljOgotICAgIHN0YXRpYyBib29sIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0
IFdlYktpdDo6V2ViU3RyaW5nJiwgVmVjdG9yPFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0
PiopOworICAgIHN0YXRpYyBib29sIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJiwgc3RkOjp2ZWN0b3I8V2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+Kik7
CiB9OwogCit9CisKICNlbmRpZiAvLyBNb2NrU3BlbGxDaGVja19oCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3Bl
bGxDaGVjay5jcHAKaW5kZXggODFiMzA4OTJiNTgyMGFjZjNjOGIyYWQ3OGZlODQxMTZmOTBlOGNi
Zi4uZjI3M2NiMjcyZGM2OTU3NDIzNTg4MTA3NWZiNjM0YjUxYjkzY2U5YiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hl
Y2suY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L01vY2tTcGVsbENoZWNrLmNwcApAQCAtMzEsMTMgKzMxLDE3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTW9ja1NwZWxsQ2hlY2suaCIKIAotI2luY2x1ZGUgPHd0Zi9BU0NJSUNU
eXBlLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKyNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCisjaW5jbHVkZSA8cHVibGljL1dl
YkNTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKLXN0YXRpYyB2b2lkIGFwcGVuZChXZWJWZWN0b3I8V2ViU3RyaW5nPiogZGF0YSwgY29u
c3QgV2ViU3RyaW5nJiBpdGVtKQorbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCituYW1lc3Bh
Y2UgeworCit2b2lkIGFwcGVuZChXZWJWZWN0b3I8V2ViU3RyaW5nPiogZGF0YSwgY29uc3QgV2Vi
U3RyaW5nJiBpdGVtKQogewogICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHJlc3VsdChkYXRhLT5z
aXplKCkgKyAxKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGEtPnNpemUoKTsgKytp
KQpAQCAtNDYsMTcgKzUwLDE3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZChXZWJWZWN0b3I8V2ViU3Ry
aW5nPiogZGF0YSwgY29uc3QgV2ViU3RyaW5nJiBpdGVtKQogICAgIGRhdGEtPnN3YXAocmVzdWx0
KTsKIH0KIAorfQorCiBNb2NrU3BlbGxDaGVjazo6TW9ja1NwZWxsQ2hlY2soKQogICAgIDogbV9p
bml0aWFsaXplZChmYWxzZSkgeyB9CiAKIE1vY2tTcGVsbENoZWNrOjp+TW9ja1NwZWxsQ2hlY2so
KSB7IH0KIAotc3RhdGljIGJvb2wgaXNOb3RBU0NJSUFscGhhKFVDaGFyIGNoKSB7IHJldHVybiAh
aXNBU0NJSUFscGhhKGNoKTsgfQotCiBib29sIE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29y
ZChjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCogbWlzc3BlbGxlZE9mZnNldCwgaW50KiBtaXNz
cGVsbGVkTGVuZ3RoKQogewotICAgIEFTU0VSVChtaXNzcGVsbGVkT2Zmc2V0KTsKLSAgICBBU1NF
UlQobWlzc3BlbGxlZExlbmd0aCk7CisgICAgV0VCS0lUX0FTU0VSVChtaXNzcGVsbGVkT2Zmc2V0
KTsKKyAgICBXRUJLSVRfQVNTRVJUKG1pc3NwZWxsZWRMZW5ndGgpOwogCiAgICAgLy8gSW5pdGlh
bGl6ZSB0aGlzIHNwZWxsY2hlY2tlci4KICAgICBpbml0aWFsaXplSWZOZWVkZWQoKTsKQEAgLTY1
LDEyICs2OSwxMiBAQCBib29sIE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZChjb25zdCBX
ZWJTdHJpbmcmIHRleHQsIGludCogbWlzc3BlbGxlZE9mZnNldAogICAgICptaXNzcGVsbGVkT2Zm
c2V0ID0gMDsKICAgICAqbWlzc3BlbGxlZExlbmd0aCA9IDA7CiAKLSAgICAvLyBDb252ZXJ0IHRv
IGEgU3RyaW5nIGJlY2F1c2Ugd2Ugc3RvcmUgU3RyaW5nIGluc3RhbmNlcyBpbgorICAgIC8vIENv
bnZlcnQgdG8gYSBzdHJpbmcxNiBiZWNhdXNlIHdlIHN0b3JlIHN0cmluZzE2IGluc3RhbmNlcyBp
bgogICAgIC8vIG1fbWlzc3BlbGxlZFdvcmRzIGFuZCBXZWJTdHJpbmcgaGFzIG5vIGZpbmQoKS4K
LSAgICBTdHJpbmcgc3RyaW5nVGV4dCh0ZXh0LmRhdGEoKSwgdGV4dC5sZW5ndGgoKSk7CisgICAg
c3RyaW5nMTYgc3RyaW5nVGV4dCA9IHRleHQ7CiAgICAgaW50IHNraXBwZWRMZW5ndGggPSAwOwog
Ci0gICAgd2hpbGUgKCFzdHJpbmdUZXh0LmlzRW1wdHkoKSkgeworICAgIHdoaWxlICghc3RyaW5n
VGV4dC5lbXB0eSgpKSB7CiAgICAgICAgIC8vIEV4dHJhY3QgdGhlIGZpcnN0IHBvc3NpYmxlIEVu
Z2xpc2ggd29yZCBmcm9tIHRoZSBnaXZlbiBzdHJpbmcuCiAgICAgICAgIC8vIFRoZSBnaXZlbiBz
dHJpbmcgbWF5IGluY2x1ZGUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgb3IgbnVtYmVycy4gU28sIHdl
CiAgICAgICAgIC8vIHNob3VsZCBmaWx0ZXIgb3V0IHN1Y2ggY2hhcmFjdGVycyBiZWZvcmUgc3Rh
cnQgbG9va2luZyB1cCBvdXIKQEAgLTc4LDEyICs4MiwxMyBAQCBib29sIE1vY2tTcGVsbENoZWNr
OjpzcGVsbENoZWNrV29yZChjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCogbWlzc3BlbGxlZE9m
ZnNldAogICAgICAgICAvLyAoVGhpcyBpcyBhIHNpbXBsZSB2ZXJzaW9uIG9mIG91ciBTcGVsbENo
ZWNrV29yZEl0ZXJhdG9yIGNsYXNzLikKICAgICAgICAgLy8gSWYgdGhlIGdpdmVuIHN0cmluZyBk
b2Vzbid0IGluY2x1ZGUgYW55IEFTQ0lJIGNoYXJhY3RlcnMsIHdlIGNhbiB0cmVhdCB0aGUKICAg
ICAgICAgLy8gc3RyaW5nIGFzIHZhbGlkIG9uZS4KLSAgICAgICAgaW50IHdvcmRPZmZzZXQgPSBz
dHJpbmdUZXh0LmZpbmQoaXNBU0NJSUFscGhhKTsKLSAgICAgICAgaWYgKHdvcmRPZmZzZXQgPT0g
LTEpCisgICAgICAgIHN0cmluZzE2OjppdGVyYXRvciBmaXJzdENoYXIgPSBmaW5kX2lmKHN0cmlu
Z1RleHQuYmVnaW4oKSwgc3RyaW5nVGV4dC5lbmQoKSwgaXNBU0NJSUFscGhhKTsKKyAgICAgICAg
aWYgKGZpcnN0Q2hhciA9PSBzdHJpbmdUZXh0LmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGludCB3b3JkT2Zmc2V0ID0gZGlzdGFuY2Uoc3RyaW5nVGV4dC5iZWdpbigp
LCBmaXJzdENoYXIpOwogICAgICAgICBpbnQgbWF4V29yZExlbmd0aCA9IHN0YXRpY19jYXN0PGlu
dD4oc3RyaW5nVGV4dC5sZW5ndGgoKSkgLSB3b3JkT2Zmc2V0OwogICAgICAgICBpbnQgd29yZExl
bmd0aDsKLSAgICAgICAgU3RyaW5nIHdvcmQ7CisgICAgICAgIHN0cmluZzE2IHdvcmQ7CiAKICAg
ICAgICAgLy8gTG9vayB1cCBvdXIgbWlzc3BlbGxlZC13b3JkIHRhYmxlIHRvIGNoZWNrIGlmIHRo
ZSBleHRyYWN0ZWQgd29yZCBpcyBhCiAgICAgICAgIC8vIGtub3duIG1pc3NwZWxsZWQgd29yZCwg
YW5kIHJldHVybiB0aGUgb2Zmc2V0IGFuZCB0aGUgbGVuZ3RoIG9mIHRoZQpAQCAtOTIsNyArOTcs
NyBAQCBib29sIE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZChjb25zdCBXZWJTdHJpbmcm
IHRleHQsIGludCogbWlzc3BlbGxlZE9mZnNldAogICAgICAgICAvLyBtaXNzcGVsbGVkLXdvcmQg
dGFibGUuKQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbWlzc3BlbGxlZFdvcmRz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICB3b3JkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50
PihtX21pc3NwZWxsZWRXb3Jkcy5hdChpKS5sZW5ndGgoKSkgPiBtYXhXb3JkTGVuZ3RoID8gbWF4
V29yZExlbmd0aCA6IHN0YXRpY19jYXN0PGludD4obV9taXNzcGVsbGVkV29yZHMuYXQoaSkubGVu
Z3RoKCkpOwotICAgICAgICAgICAgd29yZCA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKHdvcmRPZmZz
ZXQsIHdvcmRMZW5ndGgpOworICAgICAgICAgICAgd29yZCA9IHN0cmluZ1RleHQuc3Vic3RyKHdv
cmRPZmZzZXQsIHdvcmRMZW5ndGgpOwogICAgICAgICAgICAgaWYgKHdvcmQgPT0gbV9taXNzcGVs
bGVkV29yZHMuYXQoaSkgJiYgKHN0YXRpY19jYXN0PGludD4oc3RyaW5nVGV4dC5sZW5ndGgoKSkg
PT0gd29yZE9mZnNldCArIHdvcmRMZW5ndGggfHwgaXNOb3RBU0NJSUFscGhhKHN0cmluZ1RleHRb
d29yZE9mZnNldCArIHdvcmRMZW5ndGhdKSkpIHsKICAgICAgICAgICAgICAgICAqbWlzc3BlbGxl
ZE9mZnNldCA9IHdvcmRPZmZzZXQgKyBza2lwcGVkTGVuZ3RoOwogICAgICAgICAgICAgICAgICpt
aXNzcGVsbGVkTGVuZ3RoID0gd29yZExlbmd0aDsKQEAgLTEwMywxMSArMTA4LDE0IEBAIGJvb2wg
TW9ja1NwZWxsQ2hlY2s6OnNwZWxsQ2hlY2tXb3JkKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50
KiBtaXNzcGVsbGVkT2Zmc2V0CiAgICAgICAgIGlmICgqbWlzc3BlbGxlZExlbmd0aCA+IDApCiAg
ICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpbnQgd29yZEVuZCA9IHN0cmluZ1RleHQuZmlu
ZChpc05vdEFTQ0lJQWxwaGEsIHdvcmRPZmZzZXQpOwotICAgICAgICB3b3JkTGVuZ3RoID0gd29y
ZEVuZCA9PSAtMSA/IHN0YXRpY19jYXN0PGludD4oc3RyaW5nVGV4dC5sZW5ndGgoKSkgLSB3b3Jk
T2Zmc2V0IDogd29yZEVuZCAtIHdvcmRPZmZzZXQ7CisgICAgICAgIHN0cmluZzE2OjppdGVyYXRv
ciBsYXN0Q2hhciA9IGZpbmRfaWYoc3RyaW5nVGV4dC5iZWdpbigpICsgd29yZE9mZnNldCwgc3Ry
aW5nVGV4dC5lbmQoKSwgaXNOb3RBU0NJSUFscGhhKTsKKyAgICAgICAgaWYgKGxhc3RDaGFyID09
IHN0cmluZ1RleHQuZW5kKCkpCisgICAgICAgICAgICB3b3JkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8
aW50PihzdHJpbmdUZXh0Lmxlbmd0aCgpKSAtIHdvcmRPZmZzZXQ7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHdvcmRMZW5ndGggPSBkaXN0YW5jZShmaXJzdENoYXIsIGxhc3RDaGFyKTsKIAot
ICAgICAgICBBU1NFUlQoMCA8IHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoKTsKLSAgICAgICAgc3Ry
aW5nVGV4dCA9IHN0cmluZ1RleHQuc3Vic3RyaW5nKHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoKTsK
KyAgICAgICAgV0VCS0lUX0FTU0VSVCgwIDwgd29yZE9mZnNldCArIHdvcmRMZW5ndGgpOworICAg
ICAgICBzdHJpbmdUZXh0ID0gc3RyaW5nVGV4dC5zdWJzdHIod29yZE9mZnNldCArIHdvcmRMZW5n
dGgpOwogICAgICAgICBza2lwcGVkTGVuZ3RoICs9IHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoOwog
ICAgIH0KIApAQCAtMTcwLDcgKzE3OCw3IEBAIGJvb2wgTW9ja1NwZWxsQ2hlY2s6OmluaXRpYWxp
emVJZk5lZWRlZCgpCiAKICAgICBtX21pc3NwZWxsZWRXb3Jkcy5jbGVhcigpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlzaXplKG1pc3NwZWxsZWRXb3Jkcyk7ICsraSkKLSAgICAg
ICAgbV9taXNzcGVsbGVkV29yZHMuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgobWlzc3BlbGxlZFdv
cmRzW2ldKSk7CisgICAgICAgIG1fbWlzc3BlbGxlZFdvcmRzLnB1c2hfYmFjayhzdHJpbmcxNiht
aXNzcGVsbGVkV29yZHNbaV0sIG1pc3NwZWxsZWRXb3Jkc1tpXSArIHN0cmxlbihtaXNzcGVsbGVk
V29yZHNbaV0pKSk7CiAKICAgICAvLyBNYXJrIGFzIGluaXRpYWxpemVkIHRvIHByZXZlbnQgdGhp
cyBvYmplY3QgZnJvbSBiZWluZyBpbml0aWFsaXplZCB0d2ljZQogICAgIC8vIG9yIG1vcmUuCkBA
IC0xODAsMyArMTg4LDUgQEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVk
KCkKICAgICAvLyBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBmYWxzZS4KICAgICByZXR1cm4gZmFs
c2U7CiB9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5oCmluZGV4IGVlMzhmMjI5MjIyNjNl
N2YzMTY4MzhjZGY4NDM2NWU0MzBhNWYxYTYuLjUzNTljODg4YWFlZGE4NTViMjJlMTk3YzUxZGU4
ODgyMDkyOTA2YjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suaApAQCAtMzMsOCArMzMsOSBA
QAogCiAjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWZWN0b3IuaCIKLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8
dmVjdG9yPgorCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIC8vIEEgbW9jayBpbXBsZW1l
bnRhdGlvbiBvZiBhIHNwZWxsLWNoZWNrZXIgdXNlZCBmb3IgV2ViS2l0IHRlc3RzLgogLy8gVGhp
cyBjbGFzcyBvbmx5IGltcGxlbWVudHMgdGhlIG1pbmltYWwgZnVuY3Rpb25hcml0aWVzIHJlcXVp
cmVkIGJ5IFdlYktpdApAQCAtNzAsMTAgKzcxLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbml0
aWFsaXplSWZOZWVkZWQoKTsKIAogICAgIC8vIEEgdGFibGUgdGhhdCBjb25zaXN0cyBvZiBtaXNz
cGVsbGVkIHdvcmRzLgotICAgIFZlY3RvcjxTdHJpbmc+IG1fbWlzc3BlbGxlZFdvcmRzOworICAg
IHN0ZDo6dmVjdG9yPHN0cmluZzE2PiBtX21pc3NwZWxsZWRXb3JkczsKIAogICAgIC8vIEEgZmxh
ZyByZXByZXNlbnRpbmcgd2hldGhlciBvciBub3QgdGhpcyBvYmplY3QgaXMgaW5pdGlhbGl6ZWQu
CiAgICAgYm9vbCBtX2luaXRpYWxpemVkOwogfTsKIAorfQorCiAjZW5kaWYgLy8gTW9ja1NwZWxs
Q2hlY2tfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvU3BlbGxDaGVja0NsaWVudC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9TcGVsbENoZWNrQ2xpZW50LmNwcAppbmRleCA2ZWYwZjViMTlm
YWFjN2MxYjkzZDY0Njc3NGIxYjgyNmU3YzVmYzgwLi5iMDUxODM1MmQ0NzdiY2I2ZjY5Y2NmNzI4
MDY4NTkzMjhlYjBjZmU1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9TcGVsbENoZWNrQ2xpZW50LmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9TcGVsbENoZWNrQ2xpZW50LmNwcApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3VsdC5oIgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdl
YlRlc3RSdW5uZXIgewogCkBAIC04MSw3ICs4Miw3IEBAIHZvaWQgU3BlbGxDaGVja0NsaWVudDo6
c3BlbGxDaGVjayhjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCYgbWlzc3BlbGxlZE9mZnNldCwK
IAogdm9pZCBTcGVsbENoZWNrQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBXZWJT
dHJpbmcmIHRleHQsIFdlYlRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2ssIFdlYlZlY3RvcjxXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHQ+KiB3ZWJSZXN1bHRzKQogewotICAgIFZlY3RvcjxXZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQ+IHJlc3VsdHM7CisgICAgdmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4g
cmVzdWx0czsKICAgICBpZiAobWFzayAmIFdlYlRleHRDaGVja2luZ1R5cGVTcGVsbGluZykgewog
ICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHRleHQu
bGVuZ3RoKCk7CkBAIC05Niw3ICs5Nyw3IEBAIHZvaWQgU3BlbGxDaGVja0NsaWVudDo6Y2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBXZWJUZXh0Q2hlY2tpCiAgICAg
ICAgICAgICByZXN1bHQudHlwZSA9IFdlYlRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKICAgICAg
ICAgICAgIHJlc3VsdC5sb2NhdGlvbiA9IG9mZnNldCArIG1pc3NwZWxsZWRQb3NpdGlvbjsKICAg
ICAgICAgICAgIHJlc3VsdC5sZW5ndGggPSBtaXNzcGVsbGVkTGVuZ3RoOwotICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdHMucHVzaF9iYWNrKHJl
c3VsdCk7CiAgICAgICAgICAgICBvZmZzZXQgKz0gbWlzc3BlbGxlZFBvc2l0aW9uICsgbWlzc3Bl
bGxlZExlbmd0aDsKICAgICAgICAgfQogICAgIH0KQEAgLTEyMCwxOSArMTIxLDE5IEBAIHZvaWQg
U3BlbGxDaGVja0NsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZUZXh0KGNvbnN0IFdlYlN0cmluZyYg
dGV4dCwgV2ViVGV4dENoZWNrCiAKIHZvaWQgU3BlbGxDaGVja0NsaWVudDo6ZmluaXNoTGFzdFRl
eHRDaGVjaygpCiB7Ci0gICAgVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsK
KyAgICB2ZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwogICAgIGludCBvZmZz
ZXQgPSAwOwotICAgIFN0cmluZyB0ZXh0KG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZy5k
YXRhKCksIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZy5sZW5ndGgoKSk7CisgICAgc3Ry
aW5nMTYgdGV4dCA9IG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZzsKICAgICB3aGlsZSAo
dGV4dC5sZW5ndGgoKSkgewogICAgICAgICBpbnQgbWlzc3BlbGxlZFBvc2l0aW9uID0gMDsKICAg
ICAgICAgaW50IG1pc3NwZWxsZWRMZW5ndGggPSAwOwotICAgICAgICBtX3NwZWxsY2hlY2suc3Bl
bGxDaGVja1dvcmQoV2ViU3RyaW5nKHRleHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpKSwg
Jm1pc3NwZWxsZWRQb3NpdGlvbiwgJm1pc3NwZWxsZWRMZW5ndGgpOworICAgICAgICBtX3NwZWxs
Y2hlY2suc3BlbGxDaGVja1dvcmQoV2ViU3RyaW5nKHRleHQpLCAmbWlzc3BlbGxlZFBvc2l0aW9u
LCAmbWlzc3BlbGxlZExlbmd0aCk7CiAgICAgICAgIGlmICghbWlzc3BlbGxlZExlbmd0aCkKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBzdWdnZXN0aW9u
czsKLSAgICAgICAgbV9zcGVsbGNoZWNrLmZpbGxTdWdnZXN0aW9uTGlzdChXZWJTdHJpbmcodGV4
dC5jaGFyYWN0ZXJzKCkgKyBtaXNzcGVsbGVkUG9zaXRpb24sIG1pc3NwZWxsZWRMZW5ndGgpLCAm
c3VnZ2VzdGlvbnMpOwotICAgICAgICByZXN1bHRzLmFwcGVuZChXZWJUZXh0Q2hlY2tpbmdSZXN1
bHQoV2ViVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nLCBvZmZzZXQgKyBtaXNzcGVsbGVkUG9zaXRp
b24sIG1pc3NwZWxsZWRMZW5ndGgsIHN1Z2dlc3Rpb25zLmlzRW1wdHkoKSA/IFdlYlN0cmluZygp
IDogc3VnZ2VzdGlvbnNbMF0pKTsKLSAgICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKG1pc3Nw
ZWxsZWRQb3NpdGlvbiArIG1pc3NwZWxsZWRMZW5ndGgpOworICAgICAgICBtX3NwZWxsY2hlY2su
ZmlsbFN1Z2dlc3Rpb25MaXN0KFdlYlN0cmluZyh0ZXh0LnN1YnN0cihtaXNzcGVsbGVkUG9zaXRp
b24sIG1pc3NwZWxsZWRMZW5ndGgpKSwgJnN1Z2dlc3Rpb25zKTsKKyAgICAgICAgcmVzdWx0cy5w
dXNoX2JhY2soV2ViVGV4dENoZWNraW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1R5cGVTcGVsbGlu
Zywgb2Zmc2V0ICsgbWlzc3BlbGxlZFBvc2l0aW9uLCBtaXNzcGVsbGVkTGVuZ3RoLCBzdWdnZXN0
aW9ucy5pc0VtcHR5KCkgPyBXZWJTdHJpbmcoKSA6IHN1Z2dlc3Rpb25zWzBdKSk7CisgICAgICAg
IHRleHQgPSB0ZXh0LnN1YnN0cihtaXNzcGVsbGVkUG9zaXRpb24gKyBtaXNzcGVsbGVkTGVuZ3Ro
KTsKICAgICAgICAgb2Zmc2V0ICs9IG1pc3NwZWxsZWRQb3NpdGlvbiArIG1pc3NwZWxsZWRMZW5n
dGg7CiAgICAgfQogICAgIE1vY2tHcmFtbWFyQ2hlY2s6OmNoZWNrR3JhbW1hck9mU3RyaW5nKG1f
bGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZywgJnJlc3VsdHMpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdENvbW1vbi5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdENvbW1vbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIxZjc2Zjg0ZTI3NjRlMWNiMGI0YmE0MTcwMzk5Y2NiN2RlZTUyZDEKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0Q29tbW9uLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGVzdENvbW1vbl9oCisj
ZGVmaW5lIFRlc3RDb21tb25faAorCisjaW5jbHVkZSA8YmFzZS9jb21waWxlcl9zcGVjaWZpYy5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21tb24uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisj
aWYgZGVmaW5lZChXSU4zMikKKyNkZWZpbmUgc25wcmludGYoc3RyLCBzaXplLCAuLi4pIF9zbnBy
aW50Zl9zKHN0ciwgc2l6ZSwgc2l6ZSwgX19WQV9BUkdTX18pCisjZW5kaWYKKworaW5saW5lIGJv
b2wgaXNBU0NJSUFscGhhKGNoYXIgY2gpIHsgcmV0dXJuIChjaCB8IDB4MjApID49ICdhJyAmJiAo
Y2ggfCAweDIwKSA8PSAneic7IH0KKworaW5saW5lIGJvb2wgaXNOb3RBU0NJSUFscGhhKGNoYXIg
Y2gpIHsgcmV0dXJuICFpc0FTQ0lJQWxwaGEoY2gpOyB9CisKKyNlbmRpZiAvLyBUZXN0Q29tbW9u
X2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1Rlc3RJbnRlcmZhY2VzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcAppbmRleCBlM2RjZjgwMjA1MTZjNWMxYmZl
MTVjMzJjNmQyNzQwMWNlNWIxNjA4Li40NmQ2YWQwNjViYTMwYTJhNjFmY2JlMWVlZTg5Yzg0NTJl
ZmY1OGJiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwCkBAIC00NSwxMyArNDUsMTMg
QEAgdXNpbmcgV2ViS2l0OjpXZWJWaWV3OwogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCiBU
ZXN0SW50ZXJmYWNlczo6VGVzdEludGVyZmFjZXMoKQotICAgIDogbV93ZWJWaWV3KDApCisgICAg
OiBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyKG5ldyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigp
KQorICAgICwgbV9ldmVudFNlbmRlcihuZXcgRXZlbnRTZW5kZXIoKSkKKyAgICAsIG1fZ2FtZXBh
ZENvbnRyb2xsZXIobmV3IEdhbWVwYWRDb250cm9sbGVyKCkpCisgICAgLCBtX3RleHRJbnB1dENv
bnRyb2xsZXIobmV3IFRleHRJbnB1dENvbnRyb2xsZXIoKSkKKyAgICAsIG1fdGVzdFJ1bm5lcihu
ZXcgVGVzdFJ1bm5lcigpKQorICAgICwgbV93ZWJWaWV3KDApCiB7Ci0gICAgbV9hY2Nlc3NpYmls
aXR5Q29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpKTsK
LSAgICBtX2V2ZW50U2VuZGVyID0gYWRvcHRQdHIobmV3IEV2ZW50U2VuZGVyKCkpOwotICAgIG1f
Z2FtZXBhZENvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgR2FtZXBhZENvbnRyb2xsZXIoKSk7Ci0g
ICAgbV90ZXh0SW5wdXRDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IFRleHRJbnB1dENvbnRyb2xs
ZXIoKSk7Ci0gICAgbV90ZXN0UnVubmVyID0gYWRvcHRQdHIobmV3IFRlc3RSdW5uZXIoKSk7CiB9
CiAKIFRlc3RJbnRlcmZhY2VzOjp+VGVzdEludGVyZmFjZXMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZh
Y2VzLmgKaW5kZXggZDgzNGM0MGIxNjI3NDJhNjQ4NjFhY2Q0Y2JjNzhiNmViYmU3NDkyOS4uODNi
MzhkYjY4MTc5YWQzODVlMWYyNTAxMDI1OGViNTBjOWRmZDQ5MSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50
ZXJmYWNlcy5oCkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIFRlc3RJbnRlcmZhY2VzX2gKICNk
ZWZpbmUgVGVzdEludGVyZmFjZXNfaAogCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1
ZGUgPG1lbW9yeT4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKQEAgLTY1
LDExICs2NSwxMSBAQCBwdWJsaWM6CiAKIAogcHJpdmF0ZToKLSAgICBPd25QdHI8QWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI+IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7Ci0gICAgT3duUHRyPEV2
ZW50U2VuZGVyPiBtX2V2ZW50U2VuZGVyOwotICAgIE93blB0cjxHYW1lcGFkQ29udHJvbGxlcj4g
bV9nYW1lcGFkQ29udHJvbGxlcjsKLSAgICBPd25QdHI8VGV4dElucHV0Q29udHJvbGxlcj4gbV90
ZXh0SW5wdXRDb250cm9sbGVyOwotICAgIE93blB0cjxUZXN0UnVubmVyPiBtX3Rlc3RSdW5uZXI7
CisgICAgc3RkOjphdXRvX3B0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gbV9hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjsKKyAgICBzdGQ6OmF1dG9fcHRyPEV2ZW50U2VuZGVyPiBtX2V2ZW50U2Vu
ZGVyOworICAgIHN0ZDo6YXV0b19wdHI8R2FtZXBhZENvbnRyb2xsZXI+IG1fZ2FtZXBhZENvbnRy
b2xsZXI7CisgICAgc3RkOjphdXRvX3B0cjxUZXh0SW5wdXRDb250cm9sbGVyPiBtX3RleHRJbnB1
dENvbnRyb2xsZXI7CisgICAgc3RkOjphdXRvX3B0cjxUZXN0UnVubmVyPiBtX3Rlc3RSdW5uZXI7
CiAgICAgV2ViS2l0OjpXZWJWaWV3KiBtX3dlYlZpZXc7CiB9OwogCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4u
Y3BwCmluZGV4IDE5ZmQwYjI2NmQzOWNlOWI1NDUwMDNjMDUzNjBlMTEzZGJlMWViZWUuLmE0ZWQ4
YjBmNTkyN2VmOTBmMTgxOWVlOTBmNDI5ZWQyOTJlMjk4YjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4u
Y3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGVz
dFBsdWdpbi5oIgogCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIldlYkZyYW1l
LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgpAQCAt
MzUsMTIgKzM2LDkgQEAKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhp
Y3NDb250ZXh0M0QuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIApAQCAtOTksNyArOTcs
NyBAQCBjb25zdCBjaGFyKiBwb2ludFN0YXRlKFdlYlRvdWNoUG9pbnQ6OlN0YXRlIHN0YXRlKQog
ICAgICAgICByZXR1cm4gIlVua25vd24iOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKIH0K
IApAQCAtMTM0LDEyICsxMzIsOSBAQCB2b2lkIHByaW50RXZlbnREZXRhaWxzKFdlYlRlc3REZWxl
Z2F0ZSogZGVsZWdhdGUsIGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50KQogCiBXZWJQbHVnaW5D
b250YWluZXI6OlRvdWNoRXZlbnRSZXF1ZXN0VHlwZSBwYXJzZVRvdWNoRXZlbnRSZXF1ZXN0VHlw
ZShjb25zdCBXZWJTdHJpbmcmIHN0cmluZykKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IFdlYlN0cmluZywga1ByaW1pdGl2ZVJhdywgKFdlYlN0cmluZzo6ZnJvbVVURjgoInJhdyIp
KSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBXZWJTdHJpbmcsIGtQcmltaXRpdmVT
eW50aGV0aWMsIChXZWJTdHJpbmc6OmZyb21VVEY4KCJzeW50aGV0aWMiKSkpOwotCi0gICAgaWYg
KHN0cmluZyA9PSBrUHJpbWl0aXZlUmF3KQorICAgIGlmIChzdHJpbmcgPT0gV2ViU3RyaW5nOjpm
cm9tVVRGOCgicmF3IikpCiAgICAgICAgIHJldHVybiBXZWJQbHVnaW5Db250YWluZXI6OlRvdWNo
RXZlbnRSZXF1ZXN0VHlwZVJhdzsKLSAgICBpZiAoc3RyaW5nID09IGtQcmltaXRpdmVTeW50aGV0
aWMpCisgICAgaWYgKHN0cmluZyA9PSBXZWJTdHJpbmc6OmZyb21VVEY4KCJzeW50aGV0aWMiKSkK
ICAgICAgICAgcmV0dXJuIFdlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJlcXVlc3RUeXBl
U3ludGhlc2l6ZWRNb3VzZTsKICAgICByZXR1cm4gV2ViUGx1Z2luQ29udGFpbmVyOjpUb3VjaEV2
ZW50UmVxdWVzdFR5cGVOb25lOwogfQpAQCAtMTY4LDcgKzE2Myw3IEBAIFRlc3RQbHVnaW46OlRl
c3RQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJQbHVnaW5QYXJhbXMmIHBhcmFtcywg
V2ViVGVzdERlCiAgICAgc3RhdGljIGNvbnN0IFdlYlN0cmluZyBrQXR0cmlidXRlQ2FuUHJvY2Vz
c0RyYWcgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJjYW4tcHJvY2Vzcy1kcmFnIik7CiAgICAgc3Rh
dGljIGNvbnN0IFdlYlN0cmluZyBrQXR0cmlidXRlUHJpbnRVc2VyR2VzdHVyZVN0YXR1cyA9IFdl
YlN0cmluZzo6ZnJvbVVURjgoInByaW50LXVzZXItZ2VzdHVyZS1zdGF0dXMiKTsKIAotICAgIEFT
U0VSVChwYXJhbXMuYXR0cmlidXRlTmFtZXMuc2l6ZSgpID09IHBhcmFtcy5hdHRyaWJ1dGVWYWx1
ZXMuc2l6ZSgpKTsKKyAgICBXRUJLSVRfQVNTRVJUKHBhcmFtcy5hdHRyaWJ1dGVOYW1lcy5zaXpl
KCkgPT0gcGFyYW1zLmF0dHJpYnV0ZVZhbHVlcy5zaXplKCkpOwogICAgIHNpemVfdCBzaXplID0g
cGFyYW1zLmF0dHJpYnV0ZU5hbWVzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewogICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGF0dHJpYnV0ZU5hbWUgPSBw
YXJhbXMuYXR0cmlidXRlTmFtZXNbaV07CkBAIC0yMTIsNyArMjA3LDcgQEAgYm9vbCBUZXN0UGx1
Z2luOjppbml0aWFsaXplKFdlYlBsdWdpbkNvbnRhaW5lciogY29udGFpbmVyKQogICAgIGlmICgh
aW5pdFNjZW5lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fbGF5ZXIgPSBhZG9w
dFB0cihQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpLT5jcmVhdGVFeHRl
cm5hbFRleHR1cmVMYXllcih0aGlzKSk7CisgICAgbV9sYXllciA9IGF1dG9fcHRyPFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyPihQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgp
LT5jcmVhdGVFeHRlcm5hbFRleHR1cmVMYXllcih0aGlzKSk7CiAgICAgbV9jb250YWluZXIgPSBj
b250YWluZXI7CiAgICAgbV9jb250YWluZXItPnNldFdlYkxheWVyKG1fbGF5ZXItPmxheWVyKCkp
OwogICAgIGlmIChtX3JlUmVxdWVzdFRvdWNoRXZlbnRzKSB7CkBAIC0yMjgsNyArMjIzLDcgQEAg
dm9pZCBUZXN0UGx1Z2luOjpkZXN0cm95KCkKIHsKICAgICBpZiAobV9jb250YWluZXIpCiAgICAg
ICAgIG1fY29udGFpbmVyLT5zZXRXZWJMYXllcigwKTsKLSAgICBtX2xheWVyLmNsZWFyKCk7Cisg
ICAgbV9sYXllci5yZXNldCgpOwogICAgIGRlc3Ryb3lTY2VuZSgpOwogCiAgICAgZGVsZXRlIG1f
Y29udGV4dDsKQEAgLTI3NSw3ICsyNzAsNyBAQCBUZXN0UGx1Z2luOjpQcmltaXRpdmUgVGVzdFBs
dWdpbjo6cGFyc2VQcmltaXRpdmUoY29uc3QgV2ViU3RyaW5nJiBzdHJpbmcpCiAgICAgZWxzZSBp
ZiAoc3RyaW5nID09IGtQcmltaXRpdmVUcmlhbmdsZSkKICAgICAgICAgcHJpbWl0aXZlID0gUHJp
bWl0aXZlVHJpYW5nbGU7CiAgICAgZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBwcmltaXRp
dmU7CiB9CiAKQEAgLTI5NCw3ICsyODksNyBAQCB2b2lkIFRlc3RQbHVnaW46OnBhcnNlQ29sb3Io
Y29uc3QgV2ViU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIGNvbG9yWzNdKQogICAgIGVsc2UgaWYg
KHN0cmluZyA9PSAiYmx1ZSIpCiAgICAgICAgIGNvbG9yWzJdID0gMjU1OwogICAgIGVsc2UKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAogZmxvYXQgVGVzdFBsdWdpbjo6cGFyc2VPcGFjaXR5KGNvbnN0IFdlYlN0
cmluZyYgc3RyaW5nKQpAQCAtMzYxLDE0ICszNTYsMTQgQEAgdm9pZCBUZXN0UGx1Z2luOjpkZXN0
cm95U2NlbmUoKQogCiBib29sIFRlc3RQbHVnaW46OmluaXRQcm9ncmFtKCkKIHsKLSAgICBjb25z
dCBDU3RyaW5nIHZlcnRleFNvdXJjZSgKKyAgICBjb25zdCBzdHJpbmcgdmVydGV4U291cmNlKAog
ICAgICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247ICBcbiIKICAgICAgICAgInZvaWQgbWFp
bigpIHsgICAgICAgICAgICAgXG4iCiAgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247
IFxuIgogICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKICAgICApOwogCi0g
ICAgY29uc3QgQ1N0cmluZyBmcmFnbWVudFNvdXJjZSgKKyAgICBjb25zdCBzdHJpbmcgZnJhZ21l
bnRTb3VyY2UoCiAgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgXG4iCiAgICAgICAg
ICJ1bmlmb3JtIHZlYzQgY29sb3I7ICAgICAgXG4iCiAgICAgICAgICJ2b2lkIG1haW4oKSB7ICAg
ICAgICAgICAgXG4iCkBAIC0zODcsNyArMzgyLDcgQEAgYm9vbCBUZXN0UGx1Z2luOjppbml0UHJv
Z3JhbSgpCiAKIGJvb2wgVGVzdFBsdWdpbjo6aW5pdFByaW1pdGl2ZSgpCiB7Ci0gICAgQVNTRVJU
KG1fc2NlbmUucHJpbWl0aXZlID09IFByaW1pdGl2ZVRyaWFuZ2xlKTsKKyAgICBXRUJLSVRfQVNT
RVJUKG1fc2NlbmUucHJpbWl0aXZlID09IFByaW1pdGl2ZVRyaWFuZ2xlKTsKIAogICAgIG1fc2Nl
bmUudmJvID0gbV9jb250ZXh0LT5jcmVhdGVCdWZmZXIoKTsKICAgICBpZiAoIW1fc2NlbmUudmJv
KQpAQCAtNDA1LDkgKzQwMCw5IEBAIGJvb2wgVGVzdFBsdWdpbjo6aW5pdFByaW1pdGl2ZSgpCiAK
IHZvaWQgVGVzdFBsdWdpbjo6ZHJhd1ByaW1pdGl2ZSgpCiB7Ci0gICAgQVNTRVJUKG1fc2NlbmUu
cHJpbWl0aXZlID09IFByaW1pdGl2ZVRyaWFuZ2xlKTsKLSAgICBBU1NFUlQobV9zY2VuZS52Ym8p
OwotICAgIEFTU0VSVChtX3NjZW5lLnByb2dyYW0pOworICAgIFdFQktJVF9BU1NFUlQobV9zY2Vu
ZS5wcmltaXRpdmUgPT0gUHJpbWl0aXZlVHJpYW5nbGUpOworICAgIFdFQktJVF9BU1NFUlQobV9z
Y2VuZS52Ym8pOworICAgIFdFQktJVF9BU1NFUlQobV9zY2VuZS5wcm9ncmFtKTsKIAogICAgIG1f
Y29udGV4dC0+dXNlUHJvZ3JhbShtX3NjZW5lLnByb2dyYW0pOwogCkBAIC00MjMsNyArNDE4LDcg
QEAgdm9pZCBUZXN0UGx1Z2luOjpkcmF3UHJpbWl0aXZlKCkKICAgICBtX2NvbnRleHQtPmRyYXdB
cnJheXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsKIH0KIAotdW5zaWduZWQgVGVzdFBsdWdpbjo6bG9h
ZFNoYWRlcih1bnNpZ25lZCB0eXBlLCBjb25zdCBDU3RyaW5nJiBzb3VyY2UpCit1bnNpZ25lZCBU
ZXN0UGx1Z2luOjpsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUsIGNvbnN0IHN0cmluZyYgc291cmNl
KQogewogICAgIHVuc2lnbmVkIHNoYWRlciA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKHR5cGUp
OwogICAgIGlmIChzaGFkZXIpIHsKQEAgLTQ0MCw3ICs0MzUsNyBAQCB1bnNpZ25lZCBUZXN0UGx1
Z2luOjpsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUsIGNvbnN0IENTdHJpbmcmIHNvdXJjZSkKICAg
ICByZXR1cm4gc2hhZGVyOwogfQogCi11bnNpZ25lZCBUZXN0UGx1Z2luOjpsb2FkUHJvZ3JhbShj
b25zdCBDU3RyaW5nJiB2ZXJ0ZXhTb3VyY2UsIGNvbnN0IENTdHJpbmcmIGZyYWdtZW50U291cmNl
KQordW5zaWduZWQgVGVzdFBsdWdpbjo6bG9hZFByb2dyYW0oY29uc3Qgc3RyaW5nJiB2ZXJ0ZXhT
b3VyY2UsIGNvbnN0IHN0cmluZyYgZnJhZ21lbnRTb3VyY2UpCiB7CiAgICAgdW5zaWduZWQgdmVy
dGV4U2hhZGVyID0gbG9hZFNoYWRlcihHTF9WRVJURVhfU0hBREVSLCB2ZXJ0ZXhTb3VyY2UpOwog
ICAgIHVuc2lnbmVkIGZyYWdtZW50U2hhZGVyID0gbG9hZFNoYWRlcihHTF9GUkFHTUVOVF9TSEFE
RVIsIGZyYWdtZW50U291cmNlKTsKQEAgLTUzMiw3ICs1MjcsNyBAQCBib29sIFRlc3RQbHVnaW46
OmhhbmRsZURyYWdTdGF0dXNVcGRhdGUoV2ViRHJhZ1N0YXR1cyBkcmFnU3RhdHVzLCBjb25zdCBX
ZWJEcmFnRAogICAgICAgICBkcmFnU3RhdHVzTmFtZSA9ICJEcmFnRHJvcCI7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgV2ViRHJhZ1N0YXR1c1Vua25vd246Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQog
ICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZShzdGQ6OnN0cmluZygiUGx1Z2luIHJlY2VpdmVk
IGV2ZW50OiAiKSArIGRyYWdTdGF0dXNOYW1lICsgIlxuIik7CiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
VGVzdFBsdWdpbi5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvVGVzdFBsdWdpbi5oCmluZGV4IDFlMTAwZGFlOTFmYzAyYzBkMTA5OTJkNTc2Yzg0MjBiMGFk
NGU0NDYuLjUzYjIyZTExYmM2NmJkNTFmYTUzMzIyM2UyOGYzZTUzZGQyMGI4OWIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVn
aW4uaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0UGx1Z2luLmgKQEAgLTI4LDkgKzI4LDEwIEBACiAKICNpbmNsdWRlICJXZWJQbHVnaW4uaCIK
ICNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXIuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+CiAjaW5jbHVkZSA8cHVibGlj
L1dlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5o
PgorI2luY2x1ZGUgPHN0cmluZz4KIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCkBAIC0x
MjQsOCArMTI1LDggQEAgcHJpdmF0ZToKICAgICBib29sIGluaXRQcm9ncmFtKCk7CiAgICAgYm9v
bCBpbml0UHJpbWl0aXZlKCk7CiAgICAgdm9pZCBkcmF3UHJpbWl0aXZlKCk7Ci0gICAgdW5zaWdu
ZWQgbG9hZFNoYWRlcih1bnNpZ25lZCB0eXBlLCBjb25zdCBXVEY6OkNTdHJpbmcmIHNvdXJjZSk7
Ci0gICAgdW5zaWduZWQgbG9hZFByb2dyYW0oY29uc3QgV1RGOjpDU3RyaW5nJiB2ZXJ0ZXhTb3Vy
Y2UsIGNvbnN0IFdURjo6Q1N0cmluZyYgZnJhZ21lbnRTb3VyY2UpOworICAgIHVuc2lnbmVkIGxv
YWRTaGFkZXIodW5zaWduZWQgdHlwZSwgY29uc3Qgc3RkOjpzdHJpbmcmIHNvdXJjZSk7CisgICAg
dW5zaWduZWQgbG9hZFByb2dyYW0oY29uc3Qgc3RkOjpzdHJpbmcmIHZlcnRleFNvdXJjZSwgY29u
c3Qgc3RkOjpzdHJpbmcmIGZyYWdtZW50U291cmNlKTsKIAogICAgIFdlYktpdDo6V2ViRnJhbWUq
IG1fZnJhbWU7CiAgICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwpAQCAtMTM2LDcgKzEz
Nyw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb2xvclRleHR1cmU7CiAgICAgdW5zaWdu
ZWQgbV9mcmFtZWJ1ZmZlcjsKICAgICBTY2VuZSBtX3NjZW5lOwotICAgIE93blB0cjxXZWJLaXQ6
OldlYkV4dGVybmFsVGV4dHVyZUxheWVyPiBtX2xheWVyOworICAgIHN0ZDo6YXV0b19wdHI8V2Vi
S2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcj4gbV9sYXllcjsKIAogICAgIFdlYktpdDo6V2Vi
UGx1Z2luQ29udGFpbmVyOjpUb3VjaEV2ZW50UmVxdWVzdFR5cGUgbV90b3VjaEV2ZW50UmVxdWVz
dDsKICAgICAvLyBSZXF1ZXN0cyB0b3VjaCBldmVudHMgZnJvbSB0aGUgV2ViUGx1Z2luQ29udGFp
bmVySW1wbCBtdWx0aXBsZSB0aW1lcyB0byB0aWNrbGUgd2Via2l0Lm9yZy9iLzEwODM4MQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmNwcAppbmRleCA4OTkwMTJiMzJhYzJiMTVhZTVhMDYwZGU3YzJkZWMzNTRk
M2M1Mzg4Li5kYWFjNTIxMmIyOGIzOWFiN2Y0NDM2YTZjMDNiNjBhOTgxMTFjNjhkIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmNwcApAQCAtNTUsMTIgKzU1LDEyIEBACiAjaW5jbHVkZSAiV2ViVmlldy5o
IgogI2luY2x1ZGUgIldlYldvcmtlckluZm8uaCIKICNpbmNsdWRlICJ2OC9pbmNsdWRlL3Y4Lmgi
CisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViRGF0YS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgotI2luY2x1ZGUgPHd0Zi9P
d25BcnJheVB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgT1Mo
TElOVVgpIHx8IE9TKEFORFJPSUQpCisjaWYgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQo
QU5EUk9JRCkKICNpbmNsdWRlICJsaW51eC9XZWJGb250UmVuZGVyaW5nLmgiCiAjZW5kaWYKIApA
QCAtODMsMjIgKzgzLDIwIEBAIHB1YmxpYzoKIAogY2xhc3MgSW52b2tlQ2FsbGJhY2tUYXNrIDog
cHVibGljIFdlYk1ldGhvZFRhc2s8VGVzdFJ1bm5lcj4gewogcHVibGljOgotICAgIEludm9rZUNh
bGxiYWNrVGFzayhUZXN0UnVubmVyKiBvYmplY3QsIFBhc3NPd25BcnJheVB0cjxDcHBWYXJpYW50
PiBjYWxsYmFja0FyZ3VtZW50cywgdWludDMyX3QgbnVtYmVyT2ZBcmd1bWVudHMpCisgICAgSW52
b2tlQ2FsbGJhY2tUYXNrKFRlc3RSdW5uZXIqIG9iamVjdCwgYXV0b19wdHI8Q3BwVmFyaWFudD4g
Y2FsbGJhY2tBcmd1bWVudHMpCiAgICAgICAgIDogV2ViTWV0aG9kVGFzazxUZXN0UnVubmVyPihv
YmplY3QpCiAgICAgICAgICwgbV9jYWxsYmFja0FyZ3VtZW50cyhjYWxsYmFja0FyZ3VtZW50cykK
LSAgICAgICAgLCBtX251bWJlck9mQXJndW1lbnRzKG51bWJlck9mQXJndW1lbnRzKQogICAgIHsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpCiAgICAgewogICAgICAgICBD
cHBWYXJpYW50IGludm9rZVJlc3VsdDsKLSAgICAgICAgbV9jYWxsYmFja0FyZ3VtZW50c1swXS5p
bnZva2VEZWZhdWx0KG1fY2FsbGJhY2tBcmd1bWVudHMuZ2V0KCksIG1fbnVtYmVyT2ZBcmd1bWVu
dHMsIGludm9rZVJlc3VsdCk7CisgICAgICAgIG1fY2FsbGJhY2tBcmd1bWVudHMtPmludm9rZURl
ZmF1bHQobV9jYWxsYmFja0FyZ3VtZW50cy5nZXQoKSwgMSwgaW52b2tlUmVzdWx0KTsKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgT3duQXJyYXlQdHI8Q3BwVmFyaWFudD4gbV9jYWxsYmFja0FyZ3Vt
ZW50czsKLSAgICB1aW50MzJfdCBtX251bWJlck9mQXJndW1lbnRzOworICAgIGF1dG9fcHRyPENw
cFZhcmlhbnQ+IG1fY2FsbGJhY2tBcmd1bWVudHM7CiB9OwogCiB9CkBAIC0xMTMsNyArMTExLDcg
QEAgdm9pZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6OnByb2Nlc3NXb3JrU29vbigpCiAgICAgaWYg
KG1fY29udHJvbGxlci0+dG9wTG9hZGluZ0ZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmICghbV9xdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAoIW1fcXVldWUuZW1wdHkoKSkgewog
ICAgICAgICAvLyBXZSBkZWxheSBwcm9jZXNzaW5nIHF1ZXVlZCB3b3JrIHRvIGF2b2lkIHJlY3Vy
c2lvbiBwcm9ibGVtcy4KICAgICAgICAgbV9jb250cm9sbGVyLT5tX2RlbGVnYXRlLT5wb3N0VGFz
ayhuZXcgV29ya1F1ZXVlVGFzayh0aGlzKSk7CiAgICAgfSBlbHNlIGlmICghbV9jb250cm9sbGVy
LT5tX3dhaXRVbnRpbERvbmUpCkBAIC0xMjMsOSArMTIxLDEwIEBAIHZvaWQgVGVzdFJ1bm5lcjo6
V29ya1F1ZXVlOjpwcm9jZXNzV29ya1Nvb24oKQogdm9pZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6
OnByb2Nlc3NXb3JrKCkKIHsKICAgICAvLyBRdWl0IGRvaW5nIHdvcmsgb25jZSBhIGxvYWQgaXMg
aW4gcHJvZ3Jlc3MuCi0gICAgd2hpbGUgKCFtX3F1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBi
b29sIHN0YXJ0ZWRMb2FkID0gbV9xdWV1ZS5maXJzdCgpLT5ydW4obV9jb250cm9sbGVyLT5tX2Rl
bGVnYXRlLCBtX2NvbnRyb2xsZXItPm1fd2ViVmlldyk7Ci0gICAgICAgIGRlbGV0ZSBtX3F1ZXVl
LnRha2VGaXJzdCgpOworICAgIHdoaWxlICghbV9xdWV1ZS5lbXB0eSgpKSB7CisgICAgICAgIGJv
b2wgc3RhcnRlZExvYWQgPSBtX3F1ZXVlLmZyb250KCktPnJ1bihtX2NvbnRyb2xsZXItPm1fZGVs
ZWdhdGUsIG1fY29udHJvbGxlci0+bV93ZWJWaWV3KTsKKyAgICAgICAgZGVsZXRlIG1fcXVldWUu
ZnJvbnQoKTsKKyAgICAgICAgbV9xdWV1ZS5wb3BfZnJvbnQoKTsKICAgICAgICAgaWYgKHN0YXJ0
ZWRMb2FkKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzNyw4ICsxMzYsMTAgQEAg
dm9pZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6OnByb2Nlc3NXb3JrKCkKIHZvaWQgVGVzdFJ1bm5l
cjo6V29ya1F1ZXVlOjpyZXNldCgpCiB7CiAgICAgbV9mcm96ZW4gPSBmYWxzZTsKLSAgICB3aGls
ZSAoIW1fcXVldWUuaXNFbXB0eSgpKQotICAgICAgICBkZWxldGUgbV9xdWV1ZS50YWtlRmlyc3Qo
KTsKKyAgICB3aGlsZSAoIW1fcXVldWUuZW1wdHkoKSkgeworICAgICAgICBkZWxldGUgbV9xdWV1
ZS5mcm9udCgpOworICAgICAgICBtX3F1ZXVlLnBvcF9mcm9udCgpOworICAgIH0KIH0KIAogdm9p
ZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6OmFkZFdvcmsoV29ya0l0ZW0qIHdvcmspCkBAIC0xNDcs
NyArMTQ4LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6OmFkZFdvcmsoV29ya0l0ZW0q
IHdvcmspCiAgICAgICAgIGRlbGV0ZSB3b3JrOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IG1fcXVldWUuYXBwZW5kKHdvcmspOworICAgIG1fcXVldWUucHVzaF9iYWNrKHdvcmspOwogfQog
CiAKQEAgLTE1Niw4ICsxNTcsOCBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICAsIG1f
d29ya1F1ZXVlKHRoaXMpCiAgICAgLCBtX2RlbGVnYXRlKDApCiAgICAgLCBtX3dlYlZpZXcoMCkK
LSAgICAsIG1faW50ZW50Q2xpZW50KGFkb3B0UHRyKG5ldyBFbXB0eVdlYkRlbGl2ZXJlZEludGVu
dENsaWVudCkpCi0gICAgLCBtX3dlYlBlcm1pc3Npb25zKGFkb3B0UHRyKG5ldyBXZWJQZXJtaXNz
aW9ucykpCisgICAgLCBtX2ludGVudENsaWVudChuZXcgRW1wdHlXZWJEZWxpdmVyZWRJbnRlbnRD
bGllbnQpCisgICAgLCBtX3dlYlBlcm1pc3Npb25zKG5ldyBXZWJQZXJtaXNzaW9ucykKIHsKICAg
ICAvLyBJbml0aWFsaXplIHRoZSBtYXAgdGhhdCBhc3NvY2lhdGVzIG1ldGhvZHMgb2YgdGhpcyBj
bGFzcyB3aXRoIHRoZSBuYW1lcwogICAgIC8vIHRoZXkgd2lsbCB1c2Ugd2hlbiBjYWxsZWQgYnkg
SmF2YVNjcmlwdC4gVGhlIGFjdHVhbCBiaW5kaW5nIG9mIHRob3NlCkBAIC0yMTUsMTMgKzIxNiwx
MSBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAgICBiaW5kTWV0aG9kKCJzZXRTbWFydElu
c2VydERlbGV0ZUVuYWJsZWQiLCAmVGVzdFJ1bm5lcjo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVk
IiwgJlRlc3RSdW5uZXI6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQpOwogICAg
IGJpbmRNZXRob2QoInNldE1vY2tEZXZpY2VPcmllbnRhdGlvbiIsICZUZXN0UnVubmVyOjpzZXRN
b2NrRGV2aWNlT3JpZW50YXRpb24pOwotI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgYmlu
ZE1ldGhvZCgiZGlkQWNxdWlyZVBvaW50ZXJMb2NrIiwgJlRlc3RSdW5uZXI6OmRpZEFjcXVpcmVQ
b2ludGVyTG9jayk7CiAgICAgYmluZE1ldGhvZCgiZGlkTG9zZVBvaW50ZXJMb2NrIiwgJlRlc3RS
dW5uZXI6OmRpZExvc2VQb2ludGVyTG9jayk7CiAgICAgYmluZE1ldGhvZCgiZGlkTm90QWNxdWly
ZVBvaW50ZXJMb2NrIiwgJlRlc3RSdW5uZXI6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jayk7CiAg
ICAgYmluZE1ldGhvZCgic2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5Iiwg
JlRlc3RSdW5uZXI6OnNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSk7CiAg
ICAgYmluZE1ldGhvZCgic2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkiLCAmVGVz
dFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpOwotI2VuZGlmCiAK
ICAgICAvLyBUaGUgZm9sbG93aW5nIG1vZGlmeSBXZWJQcmVmZXJlbmNlcy4KICAgICBiaW5kTWV0
aG9kKCJzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQiLCAmVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxl
U2hlZXRFbmFibGVkKTsKQEAgLTI3Myw4ICsyNzIsOCBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVy
KCkKICAgICBiaW5kTWV0aG9kKCJzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCIsICZUZXN0
UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCk7CiAgICAgYmluZE1ldGhvZCgi
c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0IiwgJlRlc3RSdW5uZXI6OnNl
dFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCk7CiAKLSNpZiBFTkFCTEUoV0VC
X0lOVEVOVFMpCiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIGludGVyYWN0IHdpdGggdGhl
IFdlYlRlc3RQcm94eS4KKyNpZiBFTkFCTEVfV0VCX0lOVEVOVFMKICAgICBiaW5kTWV0aG9kKCJz
ZW5kV2ViSW50ZW50UmVzcG9uc2UiLCAmVGVzdFJ1bm5lcjo6c2VuZFdlYkludGVudFJlc3BvbnNl
KTsKICAgICBiaW5kTWV0aG9kKCJkZWxpdmVyV2ViSW50ZW50IiwgJlRlc3RSdW5uZXI6OmRlbGl2
ZXJXZWJJbnRlbnQpOwogI2VuZGlmCkBAIC0yOTQsMTkgKzI5MywxMyBAQCBUZXN0UnVubmVyOjpU
ZXN0UnVubmVyKCkKICAgICBiaW5kTWV0aG9kKCJzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24iLCAm
VGVzdFJ1bm5lcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKTsKICAgICBiaW5kTWV0aG9kKCJz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IiLCAmVGVzdFJ1bm5lcjo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKTsKICAgICBiaW5kTWV0
aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsICZUZXN0UnVubmVyOjpzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbik7Ci0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgYmluZE1l
dGhvZCgiZ3JhbnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uIiwgJlRlc3RSdW5uZXI6OmdyYW50
V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbik7CiAgICAgYmluZE1ldGhvZCgic2ltdWxhdGVMZWdh
Y3lXZWJOb3RpZmljYXRpb25DbGljayIsICZUZXN0UnVubmVyOjpzaW11bGF0ZUxlZ2FjeVdlYk5v
dGlmaWNhdGlvbkNsaWNrKTsKLSNlbmRpZgotI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAg
YmluZE1ldGhvZCgiYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0IiwgJlRlc3RSdW5uZXI6OmFkZE1v
Y2tTcGVlY2hJbnB1dFJlc3VsdCk7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja1NwZWVjaElucHV0
RHVtcFJlY3QiLCAmVGVzdFJ1bm5lcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QpOwotI2Vu
ZGlmCi0jaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKICAgICBiaW5kTWV0aG9kKCJhZGRNb2Nr
U3BlZWNoUmVjb2duaXRpb25SZXN1bHQiLCAmVGVzdFJ1bm5lcjo6YWRkTW9ja1NwZWVjaFJlY29n
bml0aW9uUmVzdWx0KTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrU3BlZWNoUmVjb2duaXRpb25F
cnJvciIsICZUZXN0UnVubmVyOjpzZXRNb2NrU3BlZWNoUmVjb2duaXRpb25FcnJvcik7CiAgICAg
YmluZE1ldGhvZCgid2FzTW9ja1NwZWVjaFJlY29nbml0aW9uQWJvcnRlZCIsICZUZXN0UnVubmVy
Ojp3YXNNb2NrU3BlZWNoUmVjb2duaXRpb25BYm9ydGVkKTsKLSNlbmRpZgogICAgIGJpbmRNZXRo
b2QoImRpc3BsYXkiLCAmVGVzdFJ1bm5lcjo6ZGlzcGxheSk7CiAgICAgYmluZE1ldGhvZCgiZGlz
cGxheUludmFsaWRhdGVkUmVnaW9uIiwgJlRlc3RSdW5uZXI6OmRpc3BsYXlJbnZhbGlkYXRlZFJl
Z2lvbik7CiAKQEAgLTMyMSwxMSArMzE0LDkgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAK
ICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZSBzdHVicy4KICAgICBiaW5kTWV0aG9kKCJkdW1wRGF0
YWJhc2VDYWxsYmFja3MiLCAmVGVzdFJ1bm5lcjo6bm90SW1wbGVtZW50ZWQpOwotI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQogICAgIGJpbmRNZXRob2QoImRlbnlXZWJOb3RpZmljYXRpb25QZXJt
aXNzaW9uIiwgJlRlc3RSdW5uZXI6Om5vdEltcGxlbWVudGVkKTsKICAgICBiaW5kTWV0aG9kKCJy
ZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyIsICZUZXN0UnVubmVyOjpub3RJbXBs
ZW1lbnRlZCk7CiAgICAgYmluZE1ldGhvZCgic2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayIs
ICZUZXN0UnVubmVyOjpub3RJbXBsZW1lbnRlZCk7Ci0jZW5kaWYKICAgICBiaW5kTWV0aG9kKCJz
ZXRJY29uRGF0YWJhc2VFbmFibGVkIiwgJlRlc3RSdW5uZXI6Om5vdEltcGxlbWVudGVkKTsKICAg
ICBiaW5kTWV0aG9kKCJzZXRTY3JvbGxiYXJQb2xpY3kiLCAmVGVzdFJ1bm5lcjo6bm90SW1wbGVt
ZW50ZWQpOwogICAgIGJpbmRNZXRob2QoImNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMiLCAmVGVz
dFJ1bm5lcjo6bm90SW1wbGVtZW50ZWQpOwpAQCAtMzY2LDcgKzM1Nyw3IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6cmVzZXQoKQogICAgIGlmIChtX3dlYlZpZXcpIHsKICAgICAgICAgbV93ZWJWaWV3LT5z
ZXRab29tTGV2ZWwoZmFsc2UsIDApOwogICAgICAgICBtX3dlYlZpZXctPnNldFRhYktleUN5Y2xl
c1Rocm91Z2hFbGVtZW50cyh0cnVlKTsKLSNpZiAhT1MoREFSV0lOKSAmJiAhT1MoV0lORE9XUykg
Ly8gQWN0dWFsbHksIFRPT0xLSVRfR1RLCisjaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVm
aW5lZChXSU4zMikgLy8gQWN0dWFsbHksIFRPT0xLSVRfR1RLCiAgICAgICAgIC8vIChDb25zdGFu
dHMgY29waWVkIGJlY2F1c2Ugd2UgY2FuJ3QgZGVwZW5kIG9uIHRoZSBoZWFkZXIgdGhhdCBkZWZp
bmVkCiAgICAgICAgIC8vIHRoZW0gZnJvbSB0aGlzIGZpbGUuKQogICAgICAgICBtX3dlYlZpZXct
PnNldFNlbGVjdGlvbkNvbG9ycygweGZmMWU5MGZmLCAweGZmMDAwMDAwLCAweGZmYzhjOGM4LCAw
eGZmMzIzMjMyKTsKQEAgLTM4MSw3ICszNzIsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkK
ICAgICBtX3BvbGljeURlbGVnYXRlU2hvdWxkTm90aWZ5RG9uZSA9IGZhbHNlOwogCiAgICAgV2Vi
U2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwotI2lmIE9TKExJ
TlVYKSB8fCBPUyhBTkRST0lEKQorI2lmIGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKEFO
RFJPSUQpCiAgICAgV2ViRm9udFJlbmRlcmluZzo6c2V0U3VicGl4ZWxQb3NpdGlvbmluZyhmYWxz
ZSk7CiAjZW5kaWYKIApAQCAtNDIwLDcgKzQxMSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cmVzZXQo
KQogICAgIG1fc2hvdWxkQmxvY2tSZWRpcmVjdHMgPSBmYWxzZTsKICAgICBtX3dpbGxTZW5kUmVx
dWVzdFNob3VsZFJldHVybk51bGwgPSBmYWxzZTsKICAgICBtX3NtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZCA9IHRydWU7Ci0jaWYgT1MoV0lORE9XUykKKyNpZmRlZiBXSU4zMgogICAgIG1fc2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCA9IHRydWU7CiAjZWxzZQogICAgIG1fc2VsZWN0VHJh
aWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCA9IGZhbHNlOwpAQCAtNjM2LDcgKzYyNyw3IEBAIFdlYkZy
YW1lKiBUZXN0UnVubmVyOjp0b3BMb2FkaW5nRnJhbWUoKSBjb25zdAogCiB2b2lkIFRlc3RSdW5u
ZXI6OnBvbGljeURlbGVnYXRlRG9uZSgpCiB7Ci0gICAgQVNTRVJUKG1fd2FpdFVudGlsRG9uZSk7
CisgICAgV0VCS0lUX0FTU0VSVChtX3dhaXRVbnRpbERvbmUpOwogICAgIG1fZGVsZWdhdGUtPnRl
c3RGaW5pc2hlZCgpOwogICAgIG1fd2FpdFVudGlsRG9uZSA9IGZhbHNlOwogfQpAQCAtMTMzMSw3
ICsxMzIyLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpmaW5kU3RyaW5nKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQKICAgICBXZWJGaW5kT3B0aW9ucyBm
aW5kT3B0aW9uczsKICAgICBib29sIHdyYXBBcm91bmQgPSBmYWxzZTsKICAgICBpZiAoYXJndW1l
bnRzLnNpemUoKSA+PSAyKSB7Ci0gICAgICAgIFZlY3RvcjxzdGQ6OnN0cmluZz4gb3B0aW9uc0Fy
cmF5ID0gYXJndW1lbnRzWzFdLnRvU3RyaW5nVmVjdG9yKCk7CisgICAgICAgIHZlY3RvcjxzdHJp
bmc+IG9wdGlvbnNBcnJheSA9IGFyZ3VtZW50c1sxXS50b1N0cmluZ1ZlY3RvcigpOwogICAgICAg
ICBmaW5kT3B0aW9ucy5tYXRjaENhc2UgPSB0cnVlOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb3B0aW9uc0FycmF5LnNpemUoKTsgKytpKSB7CkBAIC0xNDExLDcgKzE0MDIsNyBA
QCB2b2lkIFRlc3RSdW5uZXI6OnNlbGVjdGlvbkFzTWFya3VwKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFRleHRTdWJw
aXhlbFBvc2l0aW9uaW5nKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW50KiByZXN1bHQpCiB7Ci0jaWYgT1MoTElOVVgpIHx8IE9TKEFORFJPSUQpCisjaWYgZGVmaW5l
ZChfX2xpbnV4X18pIHx8IGRlZmluZWQoQU5EUk9JRCkKICAgICAvLyBTaW5jZSBGb250Q29uZmln
IGRvZXNuJ3QgcHJvdmlkZSBhIHZhcmlhYmxlIHRvIGNvbnRyb2wgc3VicGl4ZWwgcG9zaXRpb25p
bmcsIHdlJ2xsIGZhbGwgYmFjawogICAgIC8vIHRvIHNldHRpbmcgaXQgZ2xvYmFsbHkgZm9yIGFs
bCBmb250cy4KICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlz
Qm9vbCgpKQpAQCAtMTY4MCw3ICsxNjcxLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpvdmVycmlkZVBy
ZWZlcmVuY2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQKICAg
ICBlbHNlIGlmIChrZXkgPT0gIldlYktpdFNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIikK
ICAgICAgICAgcHJlZnMtPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID0gY3BwVmFyaWFu
dFRvQm9vbCh2YWx1ZSk7CiAgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRXZWJBdWRpb0VuYWJs
ZWQiKQotICAgICAgICBBU1NFUlQoY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSkpOworICAgICAgICBX
RUJLSVRfQVNTRVJUKGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpKTsKICAgICBlbHNlIHsKICAgICAg
ICAgc3RyaW5nIG1lc3NhZ2UoIkludmFsaWQgbmFtZSBmb3IgcHJlZmVyZW5jZTogIik7CiAgICAg
ICAgIG1lc3NhZ2UuYXBwZW5kKGtleSk7CkBAIC0xNzI1LDcgKzE3MTYsNyBAQCB2b2lkIFRlc3RS
dW5uZXI6OnNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYQogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCi0jaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQorI2lmIEVOQUJMRV9XRUJfSU5URU5UUwogdm9pZCBUZXN0UnVubmVyOjpzZW5k
V2ViSW50ZW50UmVzcG9uc2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqIHJlc3VsdCkKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CkBAIC0xODMzLDEw
ICsxODI0LDEwIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxlRmFjdG9yKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpCiAgICAgZmxvYXQgdmFsdWUgPSBh
cmd1bWVudHNbMF0udmFsdWUuZG91YmxlVmFsdWU7CiAgICAgbV9kZWxlZ2F0ZS0+c2V0RGV2aWNl
U2NhbGVGYWN0b3IodmFsdWUpOwogCi0gICAgT3duQXJyYXlQdHI8Q3BwVmFyaWFudD4gY2FsbGJh
Y2tBcmd1bWVudHMgPSBhZG9wdEFycmF5UHRyKG5ldyBDcHBWYXJpYW50WzFdKTsKLSAgICBjYWxs
YmFja0FyZ3VtZW50c1swXS5zZXQoYXJndW1lbnRzWzFdKTsKKyAgICBhdXRvX3B0cjxDcHBWYXJp
YW50PiBjYWxsYmFja0FyZ3VtZW50cyhuZXcgQ3BwVmFyaWFudCgpKTsKKyAgICBjYWxsYmFja0Fy
Z3VtZW50cy0+c2V0KGFyZ3VtZW50c1sxXSk7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0gICAg
bV9kZWxlZ2F0ZS0+cG9zdFRhc2sobmV3IEludm9rZUNhbGxiYWNrVGFzayh0aGlzLCBjYWxsYmFj
a0FyZ3VtZW50cy5yZWxlYXNlKCksIDEpKTsKKyAgICBtX2RlbGVnYXRlLT5wb3N0VGFzayhuZXcg
SW52b2tlQ2FsbGJhY2tUYXNrKHRoaXMsIGNhbGxiYWNrQXJndW1lbnRzKSk7CiB9CiAKIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0UE9TSVhMb2NhbGUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKQEAgLTE4NzcsNyArMTg2OCw2IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IENw
cEFyZ3VtZW50TGlzCiAgICAgbV9kZWxlZ2F0ZS0+c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25V
bmF2YWlsYWJsZUVycm9yKGFyZ3VtZW50c1swXS50b1N0cmluZygpKTsKIH0KIAotI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQogdm9pZCBUZXN0UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJl
c3VsdCkKIHsKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAhPSAxIHx8ICFhcmd1bWVudHNbMF0u
aXNTdHJpbmcoKSkgewpAQCAtMTg5Niw5ICsxODg2LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzaW11
bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW0KICAgICB9CiAgICAgcmVzdWx0LT5zZXQobV9kZWxlZ2F0ZS0+c2ltdWxhdGVMZWdhY3lXZWJO
b3RpZmljYXRpb25DbGljayhhcmd1bWVudHNbMF0udG9TdHJpbmcoKSkpOwogfQotI2VuZGlmCiAK
LSNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogdm9pZCBUZXN0UnVubmVyOjphZGRNb2NrU3BlZWNo
SW5wdXRSZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKQEAgLTE5MTYsOSArMTkwNCw3IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmd1bWVudHMsIENwCiAKICAgICBtX2RlbGVnYXRlLT5zZXRNb2NrU3BlZWNo
SW5wdXREdW1wUmVjdChhcmd1bWVudHNbMF0udG9Cb29sZWFuKCkpOwogfQotI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQogdm9pZCBUZXN0UnVubmVyOjphZGRNb2NrU3BlZWNo
UmVjb2duaXRpb25SZXN1bHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKQEAgLTE5NDEsNyArMTky
Nyw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6d2FzTW9ja1NwZWVjaFJlY29nbml0aW9uQWJvcnRlZChj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpCiB7CiAgICAgcmVzdWx0LT5zZXQobV9kZWxl
Z2F0ZS0+d2FzTW9ja1NwZWVjaFJlY29nbml0aW9uQWJvcnRlZCgpKTsKIH0KLSNlbmRpZgogCiB2
b2lkIFRlc3RSdW5uZXI6OmRpc3BsYXkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKQEAgLTIxMjEsNyArMjEwNiw2IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6bm90SW1wbGVtZW50ZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCog
cmVzdWx0KQogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCi0jaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKIHZvaWQgVGVzdFJ1bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBtX2RlbGVnYXRlLT5kaWRB
Y3F1aXJlUG9pbnRlckxvY2soKTsKQEAgLTIxNTEsNiArMjEzNSw1IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwCiAgICAgbV9kZWxlZ2F0ZS0+c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9u
b3VzbHkoKTsKICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KLSNlbmRpZgogCiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
UnVubmVyLmgKaW5kZXggMDQyZDUzNTA5Mjk1MWMyYzAwODE3YjE3ZDBiYmUxZWQxNWFjYTVmNS4u
M2ZlMWMxZmUzZDc2NWRlNGJlOTU2M2NmYTk3YjllYTE5ZWE2ODg5MiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuaApAQCAtMzQsMTUgKzM0LDE3IEBACiAjZGVmaW5lIFRlc3RSdW5uZXJfaAogCiAjaW5jbHVk
ZSAiQ3BwQm91bmRDbGFzcy5oIgorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJX
ZWJBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJUYXNrLmgiCiAjaW5jbHVkZSAiV2ViVGVzdFJ1bm5lci5oIgogI2lu
Y2x1ZGUgIldlYlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlIDxkZXF1ZT4KKyNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgogI2luY2x1ZGUgPHNldD4KICNpbmNs
dWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogY2xhc3MgV2ViQXJyYXlCdWZmZXJWaWV3OwpAQCAtMTQxLDcgKzE0Myw3IEBAIHByaXZhdGU6
CiAgICAgICAgIHZvaWQgYWRkV29yayhXb3JrSXRlbSopOwogCiAgICAgICAgIHZvaWQgc2V0RnJv
emVuKGJvb2wgZnJvemVuKSB7IG1fZnJvemVuID0gZnJvemVuOyB9Ci0gICAgICAgIGJvb2wgaXNF
bXB0eSgpIHsgcmV0dXJuIG1fcXVldWUuaXNFbXB0eSgpOyB9CisgICAgICAgIGJvb2wgaXNFbXB0
eSgpIHsgcmV0dXJuIG1fcXVldWUuZW1wdHkoKTsgfQogICAgICAgICBXZWJUYXNrTGlzdCogdGFz
a0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiAgICAgcHJpdmF0ZToKQEAgLTE1Myw3
ICsxNTUsNyBAQCBwcml2YXRlOgogICAgICAgICB9OwogCiAgICAgICAgIFdlYlRhc2tMaXN0IG1f
dGFza0xpc3Q7Ci0gICAgICAgIERlcXVlPFdvcmtJdGVtKj4gbV9xdWV1ZTsKKyAgICAgICAgc3Rk
OjpkZXF1ZTxXb3JrSXRlbSo+IG1fcXVldWU7CiAgICAgICAgIGJvb2wgbV9mcm96ZW47CiAgICAg
ICAgIFRlc3RSdW5uZXIqIG1fY29udHJvbGxlcjsKICAgICB9OwpAQCAtMjc1LDEzICsyNzcsMTEg
QEAgcHJpdmF0ZToKICAgICAvLyBEZXZpY2VPcmllbnRhdGlvbiByZWxhdGVkIGZ1bmN0aW9ucwog
ICAgIHZvaWQgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKIAotI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgdm9pZCBkaWRB
Y3F1aXJlUG9pbnRlckxvY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwog
ICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jayhjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRQb2ludGVyTG9ja1dpbGxGYWls
U3luY2hyb25vdXNseShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAg
dm9pZCBzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotI2VuZGlmCiAKICAgICAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KICAgICAvLyBNZXRob2RzIG1vZGlmeWluZyBXZWJQcmVmZXJlbmNlcy4KQEAgLTQyMCw3ICs0
MjAsNyBAQCBwcml2YXRlOgogICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgIC8vIE1ldGhvZHMg
aW50ZXJhY3Rpbmcgd2l0aCB0aGUgV2ViVGVzdFByb3h5CiAKLSNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisjaWYgRU5BQkxFX1dFQl9JTlRFTlRTCiAgICAgLy8gRXhwZWN0cyBvbmUgc3RyaW5nIGFy
Z3VtZW50IGZvciBzZW5kaW5nIHN1Y2Nlc3NmdWwgcmVzdWx0LCB6ZXJvCiAgICAgLy8gYXJndW1l
bnRzIGZvciBzZW5kaW5nIGEgZmFpbHVyZSByZXN1bHQuCiAgICAgdm9pZCBzZW5kV2ViSW50ZW50
UmVzcG9uc2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwpAQCAtNDY4LDIz
ICs0NjgsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CiAKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAvLyBHcmFu
dHMgcGVybWlzc2lvbiBmb3IgZGVza3RvcCBub3RpZmljYXRpb25zIHRvIGFuIG9yaWdpbgogICAg
IHZvaWQgZ3JhbnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKICAgICAvLyBTaW11bGF0ZXMgYSBjbGljayBvbiBhIGRlc2t0b3Ag
bm90aWZpY2F0aW9uLgogICAgIHZvaWQgc2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGlj
ayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0jZW5kaWYKIAogICAgIC8v
IFNwZWVjaCBpbnB1dCByZWxhdGVkIGZ1bmN0aW9ucy4KLSNpZiBFTkFCTEUoSU5QVVRfU1BFRUNI
KQogICAgIHZvaWQgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLSNlbmRpZgotI2lmIEVOQUJMRShT
Q1JJUFRFRF9TUEVFQ0gpCiAgICAgdm9pZCBhZGRNb2NrU3BlZWNoUmVjb2duaXRpb25SZXN1bHQo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0TW9ja1Nw
ZWVjaFJlY29nbml0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwogICAgIHZvaWQgd2FzTW9ja1NwZWVjaFJlY29nbml0aW9uQWJvcnRlZChjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0jZW5kaWYKIAogICAgIHZvaWQgZGlzcGxheShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBkaXNwbGF5SW52YWxp
ZGF0ZWRSZWdpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwpAQCAtNjgy
LDEwICs2NzYsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYkZyYW1lKiBtX3RvcExvYWRp
bmdGcmFtZTsKIAogICAgIC8vIE1vY2sgb2JqZWN0IGZvciB0ZXN0aW5nIGRlbGl2ZXJpbmcgd2Vi
IGludGVudHMuCi0gICAgT3duUHRyPFdlYktpdDo6V2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50PiBt
X2ludGVudENsaWVudDsKKyAgICBzdGQ6OmF1dG9fcHRyPFdlYktpdDo6V2ViRGVsaXZlcmVkSW50
ZW50Q2xpZW50PiBtX2ludGVudENsaWVudDsKIAogICAgIC8vIFdlYlBlcm1pc3Npb25DbGllbnQg
bW9jayBvYmplY3QuCi0gICAgT3duUHRyPFdlYlBlcm1pc3Npb25zPiBtX3dlYlBlcm1pc3Npb25z
OworICAgIHN0ZDo6YXV0b19wdHI8V2ViUGVybWlzc2lvbnM+IG1fd2ViUGVybWlzc2lvbnM7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXh0SW5wdXRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCmluZGV4IDMyMjVj
YjkwYzQyYTZlZWJiYmFiNTk0NzA3MmUzMmE0YTdhMjAyODAuLmY1ZjliMmFlODA5MmEzNzhjMzI2
NTIzYWRmMzdhMThhYTk0NDA1NTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1RleHRJbnB1dENvbnRyb2xs
ZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
VGV4dElucHV0Q29udHJvbGxlci5oIgogCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1
ZGUgIldlYkJpbmRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRpb25VbmRlcmxpbmUuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZS5oIgpAQCAtNDAsOSArNDEsOSBAQAogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJTdHJpbmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVmVjdG9yLmg+CiAjaW5jbHVkZSA8
c3RyaW5nPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVy
IHsKIApAQCAtMTQ2LDcgKzE0Nyw3IEBAIHZvaWQgVGV4dElucHV0Q29udHJvbGxlcjo6bWFya2Vk
UmFuZ2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0CiAgICAgICAg
IHJldHVybjsKIAogICAgIFdlYlJhbmdlIHJhbmdlID0gbWFpbkZyYW1lLT5tYXJrZWRSYW5nZSgp
OwotICAgIFZlY3RvcjxpbnQ+IGludEFycmF5KDIpOworICAgIHZlY3RvcjxpbnQ+IGludEFycmF5
KDIpOwogICAgIGludEFycmF5WzBdID0gcmFuZ2Uuc3RhcnRPZmZzZXQoKTsKICAgICBpbnRBcnJh
eVsxXSA9IHJhbmdlLmVuZE9mZnNldCgpOwogICAgIHJlc3VsdC0+c2V0KFdlYkJpbmRpbmdzOjpt
YWtlSW50QXJyYXkoaW50QXJyYXkpKTsKQEAgLTE2MSw3ICsxNjIsNyBAQCB2b2lkIFRleHRJbnB1
dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCogcmVzdQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJSYW5nZSByYW5nZSA9IG1haW5G
cmFtZS0+c2VsZWN0aW9uUmFuZ2UoKTsKLSAgICBWZWN0b3I8aW50PiBpbnRBcnJheSgyKTsKKyAg
ICB2ZWN0b3I8aW50PiBpbnRBcnJheSgyKTsKICAgICBpbnRBcnJheVswXSA9IHJhbmdlLnN0YXJ0
T2Zmc2V0KCk7CiAgICAgaW50QXJyYXlbMV0gPSByYW5nZS5lbmRPZmZzZXQoKTsKICAgICByZXN1
bHQtPnNldChXZWJCaW5kaW5nczo6bWFrZUludEFycmF5KGludEFycmF5KSk7CkBAIC0xODIsNyAr
MTgzLDcgQEAgdm9pZCBUZXh0SW5wdXRDb250cm9sbGVyOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3UKICAgICBpZiAoIWZyYW1lLT5maXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZShhcmd1bWVudHNbMF0udG9JbnQzMigpLCBhcmd1bWVudHNbMV0u
dG9JbnQzMigpLCByZWN0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPGludD4gaW50
QXJyYXkoNCk7CisgICAgdmVjdG9yPGludD4gaW50QXJyYXkoNCk7CiAgICAgaW50QXJyYXlbMF0g
PSByZWN0Lng7CiAgICAgaW50QXJyYXlbMV0gPSByZWN0Lnk7CiAgICAgaW50QXJyYXlbMl0gPSBy
ZWN0LndpZHRoOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvV2ViUHJlZmVyZW5jZXMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDk5MzNmYThjNzY2
NGVmMTgwYTBmMTczYmEyMGFjYWYwYzc0NjA2ZTMuLjIzOTA5MzUxODc2MTkxZGQzN2ZiZGZmMDE3
MmY1OTE0ZGJmZmZhMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCiB2b2lkIFdlYlByZWZlcmVuY2Vz
OjpyZXNldCgpCiB7Ci0jaWYgT1MoTUFDX09TX1gpCisjaWZkZWYgX19BUFBMRV9fCiAgICAgY3Vy
c2l2ZUZvbnRGYW1pbHkgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJBcHBsZSBDaGFuY2VyeSIpOwog
ICAgIGZhbnRhc3lGb250RmFtaWx5ID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiUGFweXJ1cyIpOwog
ICAgIFdlYlN0cmluZyBzZXJpZiA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIlRpbWVzIik7CkBAIC0x
MDYsNyArMTA2LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6cmVzZXQoKQogICAgIC8vIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwsIHRvIGFjY2VzcyBodHRwIHNlcnZlci4KICAgICBhbGxv
d1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyA9IHRydWU7CiAKLSNpZiBPUyhEQVJXSU4pCisj
aWZkZWYgX19BUFBMRV9fCiAgICAgZWRpdGluZ0JlaGF2aW9yID0gV2ViU2V0dGluZ3M6OkVkaXRp
bmdCZWhhdmlvck1hYzsKICNlbHNlCiAgICAgZWRpdGluZ0JlaGF2aW9yID0gV2ViU2V0dGluZ3M6
OkVkaXRpbmdCZWhhdmlvcldpbjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHAKaW5kZXggOTc1MzFjODBkZTE0NTQ5
ZWMwZmExYzA1MWNjNWQwODEwZjJiZDRmOC4uNzc5ZjUzZTU4YWU4NTQyMjJlZDg1NmYzZjE1MjBj
MTg0ZWFhYmEwMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvV2ViVGFzay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHAKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNsdWRl
ICJXZWJUYXNrLmgiCiAKICNpbmNsdWRlICJXZWJLaXQuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKQEAgLTQ4LDM2ICs1MCwzMSBAQCBXZWJUYXNrOjp+V2Vi
VGFzaygpCiAgICAgICAgIG1fdGFza0xpc3QtPnVucmVnaXN0ZXJUYXNrKHRoaXMpOwogfQogCi1j
bGFzcyBXZWJUYXNrTGlzdDo6UHJpdmF0ZSA6IHB1YmxpYyBWZWN0b3I8V2ViVGFzayo+IHsKLX07
Ci0KIFdlYlRhc2tMaXN0OjpXZWJUYXNrTGlzdCgpCi0gICAgOiBtX3ByaXZhdGUobmV3IFByaXZh
dGUpCiB7CiB9CiAKIFdlYlRhc2tMaXN0Ojp+V2ViVGFza0xpc3QoKQogewogICAgIHJldm9rZUFs
bCgpOwotICAgIGRlbGV0ZSBtX3ByaXZhdGU7CiB9CiAKIHZvaWQgV2ViVGFza0xpc3Q6OnJlZ2lz
dGVyVGFzayhXZWJUYXNrKiB0YXNrKQogewotICAgIG1fcHJpdmF0ZS0+YXBwZW5kKHRhc2spOwor
ICAgIG1fdGFza3MucHVzaF9iYWNrKHRhc2spOwogfQogCiB2b2lkIFdlYlRhc2tMaXN0Ojp1bnJl
Z2lzdGVyVGFzayhXZWJUYXNrKiB0YXNrKQogewotICAgIHNpemVfdCBpbmRleCA9IG1fcHJpdmF0
ZS0+ZmluZCh0YXNrKTsKLSAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCi0gICAgICAgIG1fcHJp
dmF0ZS0+cmVtb3ZlKGluZGV4KTsKKyAgICB2ZWN0b3I8V2ViVGFzayo+OjppdGVyYXRvciBpdGVy
ID0gZmluZChtX3Rhc2tzLmJlZ2luKCksIG1fdGFza3MuZW5kKCksIHRhc2spOworICAgIGlmIChp
dGVyICE9IG1fdGFza3MuZW5kKCkpCisgICAgICAgIG1fdGFza3MuZXJhc2UoaXRlcik7CiB9CiAK
IHZvaWQgV2ViVGFza0xpc3Q6OnJldm9rZUFsbCgpCiB7Ci0gICAgd2hpbGUgKCFtX3ByaXZhdGUt
PmlzRW1wdHkoKSkKLSAgICAgICAgKCptX3ByaXZhdGUpWzBdLT5jYW5jZWwoKTsKKyAgICB3aGls
ZSAoIW1fdGFza3MuZW1wdHkoKSkKKyAgICAgICAgbV90YXNrc1swXS0+Y2FuY2VsKCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcAppbmRleCA4OTI2M2JkN2JlMDM5
ZjY0Y2JmZmI5MTQxYWU3YjA2ODg0YTE3N2Q3Li43YjU4MjhkZjliOTlkNjhkMzNlYTQ2NzczOWVl
MjEyM2E1Mzc2NTczIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCkBAIC0z
OSwxMyArMzksMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIG5hbWVzcGFjZSBXZWJUZXN0
UnVubmVyIHsKIAogV2ViVGVzdEludGVyZmFjZXM6OldlYlRlc3RJbnRlcmZhY2VzKCkKKyAgICA6
IG1faW50ZXJmYWNlcyhuZXcgVGVzdEludGVyZmFjZXMoKSkKIHsKLSAgICBtX2ludGVyZmFjZXMg
PSBuZXcgVGVzdEludGVyZmFjZXM7CiB9CiAKIFdlYlRlc3RJbnRlcmZhY2VzOjp+V2ViVGVzdElu
dGVyZmFjZXMoKQogewotICAgIGRlbGV0ZSBtX2ludGVyZmFjZXM7CiB9CiAKIHZvaWQgV2ViVGVz
dEludGVyZmFjZXM6OnNldFdlYlZpZXcoV2ViVmlldyogd2ViVmlldykKQEAgLTg1LDcgKzg0LDcg
QEAgV2ViVGVzdFJ1bm5lciogV2ViVGVzdEludGVyZmFjZXM6OnRlc3RSdW5uZXIoKQogCiBUZXN0
SW50ZXJmYWNlcyogV2ViVGVzdEludGVyZmFjZXM6OnRlc3RJbnRlcmZhY2VzKCkKIHsKLSAgICBy
ZXR1cm4gbV9pbnRlcmZhY2VzOworICAgIHJldHVybiBtX2ludGVyZmFjZXMuZ2V0KCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRlc3RQcm94eS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCmluZGV4IDY0NzBmMGE0MTEyMmY5YzlmYzM3MWRh
Y2FiYTUzOTM5MzVhZDI3NTkuLjVlYTBlODRkODg5Y2ZkMGE3NjliOTA5NzZmNjlkZTZlZGU0ODg2
YjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRlc3RQcm94eS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJFdmVudFNl
bmRlci5oIgogI2luY2x1ZGUgIlNwZWxsQ2hlY2tDbGllbnQuaCIKKyNpbmNsdWRlICJUZXN0Q29t
bW9uLmgiCiAjaW5jbHVkZSAiVGVzdEludGVyZmFjZXMuaCIKICNpbmNsdWRlICJUZXN0UGx1Z2lu
LmgiCiAjaW5jbHVkZSAiVGVzdFJ1bm5lci5oIgpAQCAtNTgsNyArNTksNiBAQAogI2luY2x1ZGUg
PHB1YmxpYy9XZWJVUkxFcnJvci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxSZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTFJlc3BvbnNlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmlu
Z0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJpbmcgdXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNv
bnN0IHN0cmluZyYgdXJsKQogCiAgICAgc2l6ZV90IHBvcyA9IHVybC5yZmluZCgnLycpOwogICAg
IGlmIChwb3MgPT0gc3RyaW5nOjpucG9zKSB7Ci0jaWYgT1MoV0lORE9XUykKKyNpZmRlZiBXSU4z
MgogICAgICAgICBwb3MgPSB1cmwucmZpbmQoJ1xcJyk7CiAgICAgICAgIGlmIChwb3MgPT0gc3Ry
aW5nOjpucG9zKQogICAgICAgICAgICAgcG9zID0gMDsKQEAgLTI2Nyw3ICsyNjcsNiBAQCBXZWJU
ZXN0UHJveHlCYXNlOjpXZWJUZXN0UHJveHlCYXNlKCkKIAogV2ViVGVzdFByb3h5QmFzZTo6fldl
YlRlc3RQcm94eUJhc2UoKQogewotICAgIGRlbGV0ZSBtX3NwZWxsY2hlY2s7CiB9CiAKIHZvaWQg
V2ViVGVzdFByb3h5QmFzZTo6c2V0SW50ZXJmYWNlcyhXZWJUZXN0SW50ZXJmYWNlcyogaW50ZXJm
YWNlcykKQEAgLTI5MCw3ICsyODksNyBAQCB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnJlc2V0KCkK
IAogV2ViU3BlbGxDaGVja0NsaWVudCogV2ViVGVzdFByb3h5QmFzZTo6c3BlbGxDaGVja0NsaWVu
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3BlbGxjaGVjazsKKyAgICByZXR1cm4gbV9zcGVs
bGNoZWNrLmdldCgpOwogfQogCiB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnNldFBhaW50UmVjdChj
b25zdCBXZWJSZWN0JiByZWN0KQpAQCAtNTU2LDE0ICs1NTUsMTQgQEAgdm9pZCBXZWJUZXN0UHJv
eHlCYXNlOjpkaWRFbmRFZGl0aW5nKCkKIAogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpyZWdpc3Rl
ckludGVudFNlcnZpY2UoV2ViRnJhbWUqLCBjb25zdCBXZWJJbnRlbnRTZXJ2aWNlSW5mbyYgc2Vy
dmljZSkKIHsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaWYgRU5BQkxFX1dFQl9JTlRFTlRT
CiAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0cmluZygiUmVnaXN0ZXJlZCBXZWIgSW50
ZW50IFNlcnZpY2U6IGFjdGlvbj0iKSArIHNlcnZpY2UuYWN0aW9uKCkudXRmOCgpLmRhdGEoKSAr
ICIgdHlwZT0iICsgc2VydmljZS50eXBlKCkudXRmOCgpLmRhdGEoKSArICIgdGl0bGU9IiArIHNl
cnZpY2UudGl0bGUoKS51dGY4KCkuZGF0YSgpICsgIiB1cmw9IiArIHNlcnZpY2UudXJsKCkuc3Bl
YygpLmRhdGEoKSArICIgZGlzcG9zaXRpb249IiArIHNlcnZpY2UuZGlzcG9zaXRpb24oKS51dGY4
KCkuZGF0YSgpICsgIlxuIik7CiAjZW5kaWYKIH0KIAogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpk
aXNwYXRjaEludGVudChXZWJGcmFtZSogc291cmNlLCBjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JiBy
ZXF1ZXN0KQogewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpZiBFTkFCTEVfV0VCX0lOVEVO
VFMKICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uoc3RyaW5nKCJSZWNlaXZlZCBXZWIgSW50
ZW50OiBhY3Rpb249IikgKyByZXF1ZXN0LmludGVudCgpLmFjdGlvbigpLnV0ZjgoKS5kYXRhKCkg
KyAiIHR5cGU9IiArIHJlcXVlc3QuaW50ZW50KCkudHlwZSgpLnV0ZjgoKS5kYXRhKCkgKyAiXG4i
KTsKICAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogcG9ydHMgPSByZXF1ZXN0LmludGVu
dCgpLm1lc3NhZ2VQb3J0Q2hhbm5lbHNSZWxlYXNlKCk7CiAgICAgbV9kZWxlZ2F0ZS0+c2V0Q3Vy
cmVudFdlYkludGVudFJlcXVlc3QocmVxdWVzdCk7CkBAIC03NzgsNyArNzc3LDcgQEAgdm9pZCBX
ZWJUZXN0UHJveHlCYXNlOjpkaWREZXRlY3RYU1MoV2ViRnJhbWUqLCBjb25zdCBXZWJVUkwmLCBi
b29sKQogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjphc3NpZ25JZGVudGlmaWVyVG9SZXF1ZXN0KFdl
YkZyYW1lKiwgdW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0
JiByZXF1ZXN0KQogewogICAgIGlmIChtX3Rlc3RJbnRlcmZhY2VzLT50ZXN0UnVubmVyKCktPnNo
b3VsZER1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkgewotICAgICAgICBBU1NFUlQobV9yZXNv
dXJjZUlkZW50aWZpZXJNYXAuZmluZChpZGVudGlmaWVyKSA9PSBtX3Jlc291cmNlSWRlbnRpZmll
ck1hcC5lbmQoKSk7CisgICAgICAgIFdFQktJVF9BU1NFUlQobV9yZXNvdXJjZUlkZW50aWZpZXJN
YXAuZmluZChpZGVudGlmaWVyKSA9PSBtX3Jlc291cmNlSWRlbnRpZmllck1hcC5lbmQoKSk7CiAg
ICAgICAgIG1fcmVzb3VyY2VJZGVudGlmaWVyTWFwW2lkZW50aWZpZXJdID0gZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHQocmVxdWVzdC51cmwoKS5zcGVjKCkpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL2Nv
bmZpZy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvY29u
ZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTJmYzZmNDFjMjY2M2U4ZjE1ZWNiYWVjOWE0N2VmZDc4ZmE5MzQ5
NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL2NvbmZpZy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGNvbmZpZ19oCisjZGVm
aW5lIGNvbmZpZ19oCisKKyNkZWZpbmUgVVNFKGZlYXR1cmUpIChkZWZpbmVkIFdURl9VU0VfIyNm
ZWF0dXJlICYmIFdURl9VU0VfIyNmZWF0dXJlKQorCisjZW5kaWYgLy8gY29uZmlnX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187008</attachid>
            <date>2013-02-07 00:46:12 -0800</date>
            <delta_ts>2013-02-07 12:57:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108466-20130207094248.patch</filename>
            <type>text/plain</type>
            <size>103292</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDY4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTdhNjBmNGNhNjczMmZkNjg1MmI1OTkxNjY4YmFmOTA1
Y2FiZTA4ZC4uN2VkMjQ2OGZiYzM2MmZhMWNhY2YwY2QwMzcxMjk5OWE5MTM3NGFmNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
MSBAQAorMjAxMy0wMi0wNiAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIHR1cm4gVGVzdFJ1bm5lciBsaWJyYXJ5IGludG8gYSBjb21w
b25lbnQgYnVpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwODQ2NgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAg
VG8gYWNoaWV2ZSB0aGlzLCB3ZSBuZWVkIHRvIGRyb3AgYWxsIGRlcGVuZGVuY2llcyBvbiBXVEYu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRl
clRyZWUuZ3lwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
UHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUYXNrLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdENvbW1vbi5oOiBDb3BpZWQgZnJvbSBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5o
LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dl
YlRlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudExpc3Q6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRMaXN0OjpjcmVhdGVSb290KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hy
b21pdW0uaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRMaXN0KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENsYXNzLmNw
cDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6On5DcHBCb3VuZENsYXNz
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6Omludm9rZSk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpnZXRQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpzZXRQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpiaW5kQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZEdldHRlckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6OmJpbmRQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpnZXRBc0NwcFZhcmlhbnQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuaDoK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoQ3BwQm91bmRDbGFzcyk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpiaW5kUHJvcGVydHkpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZEZhbGxiYWNrQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZEZhbGxiYWNrTWV0aG9k
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBW
YXJpYW50LmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcFZhcmlhbnQ6OnRvU3RyaW5n
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcFZhcmlhbnQ6OnRvSW50MzIpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6Q3BwVmFyaWFudDo6dG9Eb3VibGUpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6Q3BwVmFyaWFudDo6dG9Cb29sZWFuKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OkNwcFZhcmlhbnQ6OnRvU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNw
cFZhcmlhbnQ6Omludm9rZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBWYXJpYW50Ojpp
bnZva2VEZWZhdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9DcHBWYXJpYW50Lmg6CisgICAgICAgIChDcHBWYXJpYW50KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHA6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2Vu
ZGVyOjpFdmVudFNlbmRlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
cmVzZXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6Om1vdXNlRG93bik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6bW91c2VVcCk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6bW91c2VNb3ZlVG8pOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OmtleURvd24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6RXZlbnRTZW5kZXI6OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpFdmVudFNlbmRlcjo6bGVhcEZvcndhcmQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZl
bnRTZW5kZXI6OnJlcGxheVNhdmVkRXZlbnRzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Om1h
a2VNZW51SXRlbVN0cmluZ3NGb3IpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI6OmNvbnRleHRDbGljayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
YmVnaW5EcmFnV2l0aEZpbGVzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVy
OjphZGRUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpy
ZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
dXBkYXRlVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
Y2FuY2VsVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
c2VuZEN1cnJlbnRUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2Vu
ZGVyOjpnZXN0dXJlRXZlbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
Ok5hdGl2ZUtleUNvZGVGb3JXaW5kb3dzS2V5Q29kZSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5jcHA6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpNb2NrR3JhbW1hckNoZWNrOjpjaGVja0dyYW1tYXJPZlN0cmluZyk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNrLmg6CisgICAgICAgIChXZWJUZXN0
UnVubmVyKToKKyAgICAgICAgKE1vY2tHcmFtbWFyQ2hlY2spOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcDoKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZCk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpNb2NrU3BlbGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmg6CisgICAgICAgIChNb2NrU3BlbGxD
aGVjayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
U3BlbGxDaGVja0NsaWVudC5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpTcGVsbENoZWNr
Q2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpT
cGVsbENoZWNrQ2xpZW50OjpmaW5pc2hMYXN0VGV4dENoZWNrKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0Q29tbW9uLmg6IENvcGllZCBmcm9t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJ
bnRlcmZhY2VzLmguCisgICAgICAgIChpc0FTQ0lJQWxwaGEpOgorICAgICAgICAoaXNOb3RBU0NJ
SUFscGhhKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0SW50ZXJm
YWNlczo6VGVzdEludGVyZmFjZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChUZXN0SW50ZXJmYWNl
cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFBsdWdpbi5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpUZXN0UGx1
Z2luKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6ZGVzdHJveSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpwYXJzZVByaW1pdGl2ZSk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RQbHVnaW46OmluaXRQcm9ncmFtKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RQbHVnaW46OmluaXRQcmltaXRpdmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBs
dWdpbjo6ZHJhd1ByaW1pdGl2ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2lu
Ojpsb2FkU2hhZGVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmxvYWRQ
cm9ncmFtKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmhhbmRsZURyYWdT
dGF0dXNVcGRhdGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RQbHVnaW4uaDoKKyAgICAgICAgKFRlc3RQbHVnaW4pOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpwcm9jZXNzV29ya1Nv
b24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpwcm9j
ZXNzV29yayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpXb3JrUXVldWU6
OnJlc2V0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6
YWRkV29yayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpUZXN0UnVubmVy
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnBvbGljeURlbGVnYXRlRG9uZSk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldFRleHRTdWJwaXhlbFBvc2l0aW9uaW5nKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpkZWxpdmVyV2ViSW50ZW50KToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpzaW11bGF0ZUxlZ2FjeVdlYk5vdGlm
aWNhdGlvbkNsaWNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldE1v
Y2tTcGVlY2hJbnB1dER1bXBSZWN0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5u
ZXI6Ondhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6VGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6aXNF
bXB0eSk6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0SW5wdXRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRleHRJbnB1dENvbnRyb2xsZXI6Om1hcmtlZFJhbmdlKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRleHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1dlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Oldl
YlByZWZlcmVuY2VzOjpyZXNldCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJU
YXNrTGlzdDo6fldlYlRhc2tMaXN0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRhc2tM
aXN0OjpyZWdpc3RlclRhc2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Q6
OnVucmVnaXN0ZXJUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0Ojpy
ZXZva2VBbGwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRl
c3RJbnRlcmZhY2VzOjpXZWJUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJUZXN0SW50ZXJmYWNlczo6fldlYlRlc3RJbnRlcmZhY2VzKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6On5XZWJUZXN0UHJveHlC
YXNlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnNwZWxsQ2hl
Y2tDbGllbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6cmVn
aXN0ZXJJbnRlbnRTZXJ2aWNlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94
eUJhc2U6OmRpc3BhdGNoSW50ZW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQ
cm94eUJhc2U6OmFzc2lnbklkZW50aWZpZXJUb1JlcXVlc3QpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL2NvbmZpZy5oOiBDb3BpZWQgZnJvbSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJm
YWNlcy5oLgorCiAyMDEzLTAyLTA2ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgVlMyMDEwIFdpbkxhdW5jaGVyIHByb2plY3QsIHByb3BlcnR5IHNoZWV0cyBh
bmQgcmVzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKaW5kZXggNWYzNjdkZjc4NWFjZDExOTM3
NDJhMDQwMzUyNzk4M2Y3ZGMwMjAwNi4uZDdlZjdhYThjNTgxMTY1NjY3ZTM4ODJjZTJkYjUyYjU0
OTJkMzRlYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
Z3lwL0R1bXBSZW5kZXJUcmVlLmd5cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCkBAIC04MywxMCArODMsNyBAQAogICAgICAg
ICAgICAgJ2RlcGVuZGVuY2llcyc6IFsKICAgICAgICAgICAgICAgICAnVGVzdFJ1bm5lcl9yZXNv
dXJjZXMnLAogICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwOndlYmtpdCcsCi0gICAgICAgICAgICAgICAgJzwoc291cmNlX2RpcikvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXA6d2Via2l0X3d0Zl9zdXBwb3J0JywKICAgICAgICAgICAgICAg
ICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDp3ZWJraXRfdGVzdF9z
dXBwb3J0JywKLSAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XVEYvV1RGLmd5cC9XVEYu
Z3lwOnd0ZicsCi0gICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L3N1
cHBvcnQvd2Via2l0X3N1cHBvcnQuZ3lwOndlYmtpdF9zdXBwb3J0JywKICAgICAgICAgICAgIF0s
CiAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWwogICAgICAgICAgICAgICAgICc8KGNocm9t
aXVtX3NyY19kaXIpJywKQEAgLTEwNiw2ICsxMDMsNDAgQEAKICAgICAgICAgICAgICAgICAnPEAo
dGVzdF9ydW5uZXJfZmlsZXMpJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnY29uZGl0
aW9ucyc6IFsKKyAgICAgICAgICAgICAgICBbJ2luc2lkZV9jaHJvbWl1bV9idWlsZCA9PSAxJywg
eworICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICc8KGNvbXBvbmVudCknLAorICAgICAgICAg
ICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIFsnY29t
cG9uZW50PT0ic2hhcmVkX2xpYnJhcnkiJywgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdkZWZpbmVzJzogWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV0VCVEVTVFJV
Tk5FUl9ETEwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV0VCVEVTVFJVTk5F
Ul9JTVBMRU1FTlRBVElPTj0xJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2Jhc2UvYmFzZS5neXA6YmFz
ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIp
L2J1aWxkL3RlbXBfZ3lwL2dvb2dsZXVybC5neXA6Z29vZ2xldXJsJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdjgvdG9vbHMvZ3lwL3Y4Lmd5
cDp2OCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOiBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnV0VCVEVTVFJVTk5FUl9ETEwnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2V4cG9ydF9kZXBlbmRlbnRfc2V0dGluZ3MnOiBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2J1aWxkL3RlbXBfZ3lw
L2dvb2dsZXVybC5neXA6Z29vZ2xldXJsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdjgvdG9vbHMvZ3lwL3Y4Lmd5cDp2OCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXN2
c19zZXR0aW5ncyc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZDTGlua2Vy
VG9vbCc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25z
JzogWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnaW5jcmVtZW50
YWxfY2hyb21lX2RsbD09MScsIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ1VzZUxpYnJhcnlEZXBlbmRlbmN5SW5wdXRzJzogJ3RydWUnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgfV0s
CisgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAg
ICAgICAgWyd0b29sa2l0X3VzZXNfZ3RrID09IDEnLCB7CiAgICAgICAgICAgICAgICAgICAgICdk
ZWZpbmVzJzogWwogICAgICAgICAgICAgICAgICAgICAgICAgJ1dURl9VU0VfR1RLPTEnLApAQCAt
MTk1LDYgKzIyNiw3IEBACiAgICAgICAgICAgICAgICAgJ1Rlc3RSdW5uZXInLAogICAgICAgICAg
ICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwOmluc3BlY3Rv
cl9yZXNvdXJjZXMnLAogICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwOndlYmtpdCcsCisgICAgICAgICAgICAgICAgJzwoc291cmNlX2Rpcikv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXA6d2Via2l0X3d0Zl9zdXBwb3J0JywKICAgICAgICAg
ICAgICAgICAnPChzb3VyY2VfZGlyKS9XVEYvV1RGLmd5cC9XVEYuZ3lwOnd0ZicsCiAgICAgICAg
ICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5cDp0ZXN0X3N1cHBvcnRf
YmFzZScsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYnVpbGQvdGVtcF9n
eXAvZ29vZ2xldXJsLmd5cDpnb29nbGV1cmwnLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLmd5cGkKaW5kZXggMDg4Yzk4NTc3NDRjN2ZjZDQ2NmYyY2YxZDg4MTEwYzdhM2IyMDhm
ZS4uYWFkYmNjOTMzMTJlMDI4NDJkNjcyNDBlOTZmMzcxOGQxMmY3ZjA3YyAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC01Nyw2ICs1Nyw3IEBACiAgICAgICAg
ICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlByZWZlcmVuY2VzLmgnLAog
ICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRhc2suaCcsCisgICAg
ICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdENvbW1vbi5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJveHku
aCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1bm5l
ci5oJywKQEAgLTgwLDYgKzgxLDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9Nb2NrU3BlbGxDaGVjay5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9TcGVsbENoZWNrQ2xpZW50LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvU3BlbGxDaGVja0NsaWVudC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9UZXN0Q29tbW9uLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGV4dElucHV0Q29udHJvbGxlci5jcHAnLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViUHJlZmVyZW5jZXMuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlByZWZl
cmVuY2VzLmgKaW5kZXggYjQ3MzgyNmIxYTViNzI1Yjk5ZTkyZjI0YjE1NWU5Nzc3NzBmZjc3ZS4u
YTEzOGJmZDcwMGNjNGY3N2ZmNTM4ZDAzYTFiMjY5ZGQyMGVkOTYwMCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViUHJlZmVyZW5j
ZXMuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJQcmVmZXJlbmNlcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJVUkwuaCIKICNpbmNsdWRlICJXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNl
dHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViVGVzdENvbW1vbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYlZpZXc7CkBAIC00MSw3ICs0Miw3IEBAIGNsYXNzIFdlYlZpZXc7CiAKIG5h
bWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAotc3RydWN0IFdlYlByZWZlcmVuY2VzIHsKK3N0cnVj
dCBXRUJURVNUUlVOTkVSX0VYUE9SVCBXZWJQcmVmZXJlbmNlcyB7CiAgICAgV2ViS2l0OjpXZWJT
dHJpbmcgc3RhbmRhcmRGb250RmFtaWx5OwogICAgIFdlYktpdDo6V2ViU3RyaW5nIGZpeGVkRm9u
dEZhbWlseTsKICAgICBXZWJLaXQ6OldlYlN0cmluZyBzZXJpZkZvbnRGYW1pbHk7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJU
YXNrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUYXNrLmgKaW5kZXggZWY3M2UxNzdlMDQxMGU2ZmU2ZGE2MThjMGUxZDZlYjc0NDQ3MzBhNC4u
YzNiYzA5Y2MxY2VlYWFmNjFlODVjYzUzNzNjY2U2MTc5MmIxNDQ1YyAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRh
c2suaApAQCAtMzEsMTMgKzMxLDE2IEBACiAjaWZuZGVmIFdlYlRhc2tfaAogI2RlZmluZSBXZWJU
YXNrX2gKIAorI2luY2x1ZGUgIldlYlRlc3RDb21tb24uaCIKKyNpbmNsdWRlIDx2ZWN0b3I+CisK
IG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAogY2xhc3MgV2ViVGFza0xpc3Q7CiAKIC8vIFdl
YlRhc2sgcmVwcmVzZW50cyBhIHRhc2sgd2hpY2ggY2FuIHJ1biBieSBXZWJUZXN0RGVsZWdhdGU6
OnBvc3RUYXNrKCkgb3IKIC8vIFdlYlRlc3REZWxlZ2F0ZTo6cG9zdERlbGF5ZWRUYXNrKCkuCi1j
bGFzcyBXZWJUYXNrIHsKK2NsYXNzIFdFQlRFU1RSVU5ORVJfRVhQT1JUIFdlYlRhc2sgewogcHVi
bGljOgogICAgIGV4cGxpY2l0IFdlYlRhc2soV2ViVGFza0xpc3QqKTsKICAgICB2aXJ0dWFsIH5X
ZWJUYXNrKCk7CkBAIC01MSw3ICs1NCw3IEBAIHByb3RlY3RlZDoKICAgICBXZWJUYXNrTGlzdCog
bV90YXNrTGlzdDsKIH07CiAKLWNsYXNzIFdlYlRhc2tMaXN0IHsKK2NsYXNzIFdFQlRFU1RSVU5O
RVJfRVhQT1JUIFdlYlRhc2tMaXN0IHsKIHB1YmxpYzoKICAgICBXZWJUYXNrTGlzdCgpOwogICAg
IH5XZWJUYXNrTGlzdCgpOwpAQCAtNjAsOCArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXZv
a2VBbGwoKTsKIAogcHJpdmF0ZToKLSAgICBjbGFzcyBQcml2YXRlOwotICAgIFByaXZhdGUqIG1f
cHJpdmF0ZTsKKyAgICBzdGQ6OnZlY3RvcjxXZWJUYXNrKj4gbV90YXNrczsKIH07CiAKIC8vIEEg
dGFzayBjb250YWluaW5nIGFuIG9iamVjdCBwb2ludGVyIG9mIGNsYXNzIFQuIERlcml2ZWQgY2xh
c3NlcyBzaG91bGQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYlRlc3RDb21tb24uaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RDb21tb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzQ0
MmM2YTkzZGIxY2ZiZDQ2MjdhZTBmOGNiZTNiZDZkYjY1NzdkCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdENv
bW1vbi5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRlc3RDb21tb25faAorI2RlZmluZSBX
ZWJUZXN0Q29tbW9uX2gKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIERlZmF1bHQgY29u
ZmlndXJhdGlvbgorCisjaWYgIWRlZmluZWQoV0VCVEVTVFJVTk5FUl9JTVBMRU1FTlRBVElPTikK
KyNkZWZpbmUgV0VCVEVTVFJVTk5FUl9JTVBMRU1FTlRBVElPTiAwCisjZW5kaWYKKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vIEV4cG9ydGVkIHN5bWJvbHMgbmVlZCB0byBiZSBhbm5vdGF0
ZWQgd2l0aCBXRUJURVNUUlVOTkVSX0VYUE9SVAorCisjaWYgZGVmaW5lZChXRUJURVNUUlVOTkVS
X0RMTCkKKworI2lmIGRlZmluZWQoV0lOMzIpCisjaWYgV0VCVEVTVFJVTk5FUl9JTVBMRU1FTlRB
VElPTgorI2RlZmluZSBXRUJURVNUUlVOTkVSX0VYUE9SVCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkK
KyNlbHNlCisjZGVmaW5lIFdFQlRFU1RSVU5ORVJfRVhQT1JUIF9fZGVjbHNwZWMoZGxsaW1wb3J0
KQorI2VuZGlmCisKKyNlbHNlIC8vIGRlZmluZWQoV0lOMzIpCisKKyNpZiBXRUJURVNUUlVOTkVS
X0lNUExFTUVOVEFUSU9OCisjZGVmaW5lIFdFQlRFU1RSVU5ORVJfRVhQT1JUIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCisjZWxzZQorI2RlZmluZSBXRUJURVNUUlVOTkVS
X0VYUE9SVAorI2VuZGlmCisKKyNlbmRpZgorCisjZWxzZSAvLyBkZWZpbmVkKFdFQlRFU1RSVU5O
RVJfRExMKQorCisjZGVmaW5lIFdFQlRFU1RSVU5ORVJfRVhQT1JUCisKKyNlbmRpZgorCisjZW5k
aWYgLy8gV2ViVGVzdENvbW1vbl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMu
aAppbmRleCAyY2NkNjFlMjVjMTBiYTQ3MjA4NjE1MjIwOTYzNjU2ZTk4ODZlZGI5Li43M2Q3OWRj
MmNkZGUwZjJlYjk5ZTc5MjZiMWQ4ZmJmMWQxYWYyN2NlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dl
YlRlc3RJbnRlcmZhY2VzLmgKQEAgLTMxLDYgKzMxLDkgQEAKICNpZm5kZWYgV2ViVGVzdEludGVy
ZmFjZXNfaAogI2RlZmluZSBXZWJUZXN0SW50ZXJmYWNlc19oCiAKKyNpbmNsdWRlICJXZWJUZXN0
Q29tbW9uLmgiCisjaW5jbHVkZSA8bWVtb3J5PgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IFdlYkZyYW1lOwogY2xhc3MgV2ViVmlldzsKQEAgLTQyLDcgKzQ1LDcgQEAgY2xhc3MgVGVzdElu
dGVyZmFjZXM7CiBjbGFzcyBXZWJUZXN0RGVsZWdhdGU7CiBjbGFzcyBXZWJUZXN0UnVubmVyOwog
Ci1jbGFzcyBXZWJUZXN0SW50ZXJmYWNlcyB7CitjbGFzcyBXRUJURVNUUlVOTkVSX0VYUE9SVCBX
ZWJUZXN0SW50ZXJmYWNlcyB7CiBwdWJsaWM6CiAgICAgV2ViVGVzdEludGVyZmFjZXMoKTsKICAg
ICB+V2ViVGVzdEludGVyZmFjZXMoKTsKQEAgLTYxLDcgKzY0LDcgQEAgcHVibGljOgogI2VuZGlm
CiAKIHByaXZhdGU6Ci0gICAgVGVzdEludGVyZmFjZXMqIG1faW50ZXJmYWNlczsKKyAgICBzdGQ6
OmF1dG9fcHRyPFRlc3RJbnRlcmZhY2VzPiBtX2ludGVyZmFjZXM7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJU
ZXN0UHJveHkuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVi
bGljL1dlYlRlc3RQcm94eS5oCmluZGV4IDQyOTA5NjliZGQ3YTY4NjdjNjAzZWZhODk0NzVjMDVk
N2Y0MGZjNWYuLjEwMGQyODdkYmUyNmQ3ODI4YmRiNGQ1NDVhMTJkMWI2NWViZDJkY2QgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dl
YlRlc3RQcm94eS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvcHVibGljL1dlYlRlc3RQcm94eS5oCkBAIC00Miw3ICs0Miw5IEBACiAjaW5jbHVkZSAiV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dEFmZmluaXR5LmgiCiAjaW5jbHVkZSAiV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJUZXh0RGlyZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViVGVzdENvbW1v
bi5oIgogI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RyaW5n
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTc5LDcgKzgxLDcgQEAgY2xhc3MgV2ViVGVzdERl
bGVnYXRlOwogY2xhc3MgV2ViVGVzdEludGVyZmFjZXM7CiBjbGFzcyBXZWJUZXN0UnVubmVyOwog
Ci1jbGFzcyBXZWJUZXN0UHJveHlCYXNlIHsKK2NsYXNzIFdFQlRFU1RSVU5ORVJfRVhQT1JUIFdl
YlRlc3RQcm94eUJhc2UgewogcHVibGljOgogICAgIHZvaWQgc2V0SW50ZXJmYWNlcyhXZWJUZXN0
SW50ZXJmYWNlcyopOwogICAgIHZvaWQgc2V0RGVsZWdhdGUoV2ViVGVzdERlbGVnYXRlKik7CkBA
IC0xNjUsNyArMTY3LDcgQEAgcHJpdmF0ZToKICAgICBUZXN0SW50ZXJmYWNlcyogbV90ZXN0SW50
ZXJmYWNlczsKICAgICBXZWJUZXN0RGVsZWdhdGUqIG1fZGVsZWdhdGU7CiAKLSAgICBTcGVsbENo
ZWNrQ2xpZW50KiBtX3NwZWxsY2hlY2s7CisgICAgc3RkOjphdXRvX3B0cjxTcGVsbENoZWNrQ2xp
ZW50PiBtX3NwZWxsY2hlY2s7CiAKICAgICBXZWJLaXQ6OldlYlJlY3QgbV9wYWludFJlY3Q7CiAg
ICAgc3RkOjptYXA8dW5zaWduZWQsIHN0ZDo6c3RyaW5nPiBtX3Jlc291cmNlSWRlbnRpZmllck1h
cDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21p
dW0uY3BwCmluZGV4IDA2M2RkYmJhZGZiYWI2NjMzODU1OTliODgyYzdkMGU0YzU1OGEyZDIuLjZk
Y2M0MDYwNjNmNjkyMTRiNjc2MjIzNDMxNjExZTYxN2ZkYzcyYzkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRDaHJvbWl1bS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNwcApAQCAtMzEsMTMg
KzMxLDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudENocm9taXVtLmgiCiAKKyNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAi
V2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDU3RyaW5nLmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYlBvaW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJlY3Qu
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMzY4LDcgKzM2Nyw3IEBAIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgV2ViQWNjZXNzaWJp
bGl0eU9iamVjdCYgb2JqCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKIHsKIAotICAgIEFTU0VS
VChmYWN0b3J5KTsKKyAgICBXRUJLSVRfQVNTRVJUKGZhY3RvcnkpOwogCiAgICAgLy8KICAgICAv
LyBQcm9wZXJ0aWVzCkBAIC0xMDI1LDE0ICsxMDI0LDE0IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQqIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRMaXN0OjpnZXRPckNyZWF0ZShjb25zdCBXZWJBY2Nl
c3NpCiAgICAgfQogCiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCA9IG5ldyBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KG9iamVjdCwgdGhpcyk7Ci0gICAgbV9lbGVtZW50cy5hcHBl
bmQoZWxlbWVudCk7CisgICAgbV9lbGVtZW50cy5wdXNoX2JhY2soZWxlbWVudCk7CiAgICAgcmV0
dXJuIGVsZW1lbnQ7CiB9CiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnRMaXN0OjpjcmVhdGVSb290KGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
amVjdCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50ID0gbmV3IFJvb3RB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KG9iamVjdCwgdGhpcyk7Ci0gICAgbV9lbGVtZW50cy5hcHBl
bmQoZWxlbWVudCk7CisgICAgbV9lbGVtZW50cy5wdXNoX2JhY2soZWxlbWVudCk7CiAgICAgcmV0
dXJuIGVsZW1lbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudENocm9taXVtLmgKaW5kZXggMzk2YWE3MDgwYTk1Yzg4NTIxYTY5MDFkYzI2MTk5OTBh
MTI0NzAxYS4uYzZjYjFhMjM1NmRhMDcwYjFhMmUxODRmYTQwZWYyODg5YWM3OTA5MCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudENocm9taXVtLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmgKQEAg
LTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJDcHBCb3VuZENsYXNzLmgiCiAjaW5jbHVkZSAiV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIApAQCAtMTY4LDcgKzE2Nyw3
IEBAIHB1YmxpYzoKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBjcmVhdGVSb290KGNvbnN0
IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYpOwogCiBwcml2YXRlOgotICAgIHR5cGVk
ZWYgVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqPiBFbGVtZW50TGlzdDsKKyAgICB0eXBl
ZGVmIHN0ZDo6dmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqPiBFbGVtZW50TGlzdDsKICAg
ICBFbGVtZW50TGlzdCBtX2VsZW1lbnRzOwogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENsYXNzLmNw
cAppbmRleCAwMzVhY2RlZDc4ZDY4ZTg3NTcwZGEwMTU1ZmY2NTJkNmE5NTljYzBhLi40OWU2MTQ5
NzNiNzE5MmNhZGM5MTJkZDg2ZWQ3ZDg4N2NmYWFkMGVkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENsYXNzLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENs
YXNzLmNwcApAQCAtNDIsMTEgKzQyLDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ3BwQm91bmRDbGFzcy5oIgogCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUg
IldlYkJpbmRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlIDxtZW1vcnk+
CiAjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
R2V0dGVyUHJvcGVydHlDYWxsYmFjayA6IHB1YmxpYyBDcHBCb3VuZENsYXNzOjpQcm9wZXJ0eUNh
bGxiYWNrIHsKIHB1YmxpYzoKLSAgICBHZXR0ZXJQcm9wZXJ0eUNhbGxiYWNrKFBhc3NPd25QdHI8
Q3BwQm91bmRDbGFzczo6R2V0dGVyQ2FsbGJhY2s+IGNhbGxiYWNrKQorICAgIEdldHRlclByb3Bl
cnR5Q2FsbGJhY2soYXV0b19wdHI8Q3BwQm91bmRDbGFzczo6R2V0dGVyQ2FsbGJhY2s+IGNhbGxi
YWNrKQogICAgICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgewogICAgIH0KQEAgLTkx
LDcgKzkxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZShjb25zdCBDcHBW
YXJpYW50JiB2YWx1ZSkgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKLSAgICBPd25QdHI8
Q3BwQm91bmRDbGFzczo6R2V0dGVyQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CisgICAgYXV0b19wdHI8
Q3BwQm91bmRDbGFzczo6R2V0dGVyQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CiB9OwogCiB9CkBAIC0y
MDksMTAgKzIwOSwxMCBAQCBib29sIENwcE5QT2JqZWN0OjpzZXRQcm9wZXJ0eShOUE9iamVjdCog
bnBPYmosIE5QSWRlbnRpZmllciBpZGVudCwgY29uc3QgTlBWYXJpYQogQ3BwQm91bmRDbGFzczo6
fkNwcEJvdW5kQ2xhc3MoKQogewogICAgIGZvciAoTWV0aG9kTGlzdDo6aXRlcmF0b3IgaSA9IG1f
bWV0aG9kcy5iZWdpbigpOyBpICE9IG1fbWV0aG9kcy5lbmQoKTsgKytpKQotICAgICAgICBkZWxl
dGUgaS0+dmFsdWU7CisgICAgICAgIGRlbGV0ZSBpLT5zZWNvbmQ7CiAKICAgICBmb3IgKFByb3Bl
cnR5TGlzdDo6aXRlcmF0b3IgaSA9IG1fcHJvcGVydGllcy5iZWdpbigpOyBpICE9IG1fcHJvcGVy
dGllcy5lbmQoKTsgKytpKQotICAgICAgICBkZWxldGUgaS0+dmFsdWU7CisgICAgICAgIGRlbGV0
ZSBpLT5zZWNvbmQ7CiAKICAgICAvLyBVbnJlZ2lzdGVyIG91cnNlbHZlcyBpZiB3ZSB3ZXJlIGJv
dW5kIHRvIGEgZnJhbWUuCiAgICAgaWYgKG1fYm91bmRUb0ZyYW1lKQpAQCAtMjQzLDcgKzI0Myw3
IEBAIGJvb2wgQ3BwQm91bmRDbGFzczo6aW52b2tlKE5QSWRlbnRpZmllciBpZGVudCwKICAgICAg
ICAgfQogICAgICAgICBjYWxsYmFjayA9IG1fZmFsbGJhY2tDYWxsYmFjay5nZXQoKTsKICAgICB9
IGVsc2UKLSAgICAgICAgY2FsbGJhY2sgPSAoKm1ldGhvZCkudmFsdWU7CisgICAgICAgIGNhbGxi
YWNrID0gKCptZXRob2QpLnNlY29uZDsKIAogICAgIC8vIEJ1aWxkIGEgQ3BwQXJndW1lbnRMaXN0
IGFyZ3VtZW50IHZlY3RvciBmcm9tIHRoZSBOUFZhcmlhbnRzIGNvbWluZyBpbi4KICAgICBDcHBB
cmd1bWVudExpc3QgY3BwQXJndW1lbnRzKGFyZ3VtZW50Q291bnQpOwpAQCAtMjY2LDcgKzI2Niw3
IEBAIGJvb2wgQ3BwQm91bmRDbGFzczo6Z2V0UHJvcGVydHkoTlBJZGVudGlmaWVyIGlkZW50LCBO
UFZhcmlhbnQqIHJlc3VsdCkgY29uc3QKICAgICB9CiAKICAgICBDcHBWYXJpYW50IGNwcFZhbHVl
OwotICAgIGlmICghY2FsbGJhY2stPnZhbHVlLT5nZXRWYWx1ZSgmY3BwVmFsdWUpKQorICAgIGlm
ICghY2FsbGJhY2stPnNlY29uZC0+Z2V0VmFsdWUoJmNwcFZhbHVlKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGNwcFZhbHVlLmNvcHlUb05QVmFyaWFudChyZXN1bHQpOwogICAgIHJldHVy
biB0cnVlOwpAQCAtMjgwLDcgKzI4MCw3IEBAIGJvb2wgQ3BwQm91bmRDbGFzczo6c2V0UHJvcGVy
dHkoTlBJZGVudGlmaWVyIGlkZW50LCBjb25zdCBOUFZhcmlhbnQqIHZhbHVlKQogCiAgICAgQ3Bw
VmFyaWFudCBjcHBWYWx1ZTsKICAgICBjcHBWYWx1ZS5zZXQoKnZhbHVlKTsKLSAgICByZXR1cm4g
KCpjYWxsYmFjaykudmFsdWUtPnNldFZhbHVlKGNwcFZhbHVlKTsKKyAgICByZXR1cm4gKCpjYWxs
YmFjaykuc2Vjb25kLT5zZXRWYWx1ZShjcHBWYWx1ZSk7CiB9CiAKIHZvaWQgQ3BwQm91bmRDbGFz
czo6YmluZENhbGxiYWNrKGNvbnN0IHN0cmluZyYgbmFtZSwgQ2FsbGJhY2sqIGNhbGxiYWNrKQpA
QCAtMjg4LDE5ICsyODgsMTkgQEAgdm9pZCBDcHBCb3VuZENsYXNzOjpiaW5kQ2FsbGJhY2soY29u
c3Qgc3RyaW5nJiBuYW1lLCBDYWxsYmFjayogY2FsbGJhY2spCiAgICAgTlBJZGVudGlmaWVyIGlk
ZW50ID0gV2ViQmluZGluZ3M6OmdldFN0cmluZ0lkZW50aWZpZXIobmFtZS5jX3N0cigpKTsKICAg
ICBNZXRob2RMaXN0OjppdGVyYXRvciBvbGRDYWxsYmFjayA9IG1fbWV0aG9kcy5maW5kKGlkZW50
KTsKICAgICBpZiAob2xkQ2FsbGJhY2sgIT0gbV9tZXRob2RzLmVuZCgpKSB7Ci0gICAgICAgIGRl
bGV0ZSBvbGRDYWxsYmFjay0+dmFsdWU7CisgICAgICAgIGRlbGV0ZSBvbGRDYWxsYmFjay0+c2Vj
b25kOwogICAgICAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBtX21ldGhvZHMucmVt
b3ZlKG9sZENhbGxiYWNrKTsKKyAgICAgICAgICAgIG1fbWV0aG9kcy5lcmFzZShvbGRDYWxsYmFj
ayk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX21ldGhv
ZHMuc2V0KGlkZW50LCBjYWxsYmFjayk7CisgICAgbV9tZXRob2RzW2lkZW50XSA9IGNhbGxiYWNr
OwogfQogCi12b2lkIENwcEJvdW5kQ2xhc3M6OmJpbmRHZXR0ZXJDYWxsYmFjayhjb25zdCBzdHJp
bmcmIG5hbWUsIFBhc3NPd25QdHI8R2V0dGVyQ2FsbGJhY2s+IGNhbGxiYWNrKQordm9pZCBDcHBC
b3VuZENsYXNzOjpiaW5kR2V0dGVyQ2FsbGJhY2soY29uc3Qgc3RyaW5nJiBuYW1lLCBhdXRvX3B0
cjxHZXR0ZXJDYWxsYmFjaz4gY2FsbGJhY2spCiB7Ci0gICAgUHJvcGVydHlDYWxsYmFjayogcHJv
cGVydHlDYWxsYmFjayA9IGNhbGxiYWNrID8gbmV3IEdldHRlclByb3BlcnR5Q2FsbGJhY2soY2Fs
bGJhY2spIDogMDsKKyAgICBQcm9wZXJ0eUNhbGxiYWNrKiBwcm9wZXJ0eUNhbGxiYWNrID0gY2Fs
bGJhY2suZ2V0KCkgPyBuZXcgR2V0dGVyUHJvcGVydHlDYWxsYmFjayhjYWxsYmFjaykgOiAwOwog
ICAgIGJpbmRQcm9wZXJ0eShuYW1lLCBwcm9wZXJ0eUNhbGxiYWNrKTsKIH0KIApAQCAtMzE1LDE0
ICszMTUsMTQgQEAgdm9pZCBDcHBCb3VuZENsYXNzOjpiaW5kUHJvcGVydHkoY29uc3Qgc3RyaW5n
JiBuYW1lLCBQcm9wZXJ0eUNhbGxiYWNrKiBjYWxsYmFjaykKICAgICBOUElkZW50aWZpZXIgaWRl
bnQgPSBXZWJCaW5kaW5nczo6Z2V0U3RyaW5nSWRlbnRpZmllcihuYW1lLmNfc3RyKCkpOwogICAg
IFByb3BlcnR5TGlzdDo6aXRlcmF0b3Igb2xkQ2FsbGJhY2sgPSBtX3Byb3BlcnRpZXMuZmluZChp
ZGVudCk7CiAgICAgaWYgKG9sZENhbGxiYWNrICE9IG1fcHJvcGVydGllcy5lbmQoKSkgewotICAg
ICAgICBkZWxldGUgb2xkQ2FsbGJhY2stPnZhbHVlOworICAgICAgICBkZWxldGUgb2xkQ2FsbGJh
Y2stPnNlY29uZDsKICAgICAgICAgaWYgKCFjYWxsYmFjaykgewotICAgICAgICAgICAgbV9wcm9w
ZXJ0aWVzLnJlbW92ZShvbGRDYWxsYmFjayk7CisgICAgICAgICAgICBtX3Byb3BlcnRpZXMuZXJh
c2Uob2xkQ2FsbGJhY2spOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgbV9wcm9wZXJ0aWVzLnNldChpZGVudCwgY2FsbGJhY2spOworICAgIG1fcHJvcGVydGll
c1tpZGVudF0gPSBjYWxsYmFjazsKIH0KIAogYm9vbCBDcHBCb3VuZENsYXNzOjppc01ldGhvZFJl
Z2lzdGVyZWQoY29uc3Qgc3RyaW5nJiBuYW1lKSBjb25zdApAQCAtMzQ0LDcgKzM0NCw3IEBAIENw
cFZhcmlhbnQqIENwcEJvdW5kQ2xhc3M6OmdldEFzQ3BwVmFyaWFudCgpCiAgICAgICAgIG1fc2Vs
ZlZhcmlhbnQuc2V0KG5wT2JqKTsKICAgICAgICAgV2ViQmluZGluZ3M6OnJlbGVhc2VPYmplY3Qo
bnBPYmopOyAvLyBDcHBWYXJpYW50IHRha2VzIHRoZSByZWZlcmVuY2UuCiAgICAgfQotICAgIEFT
U0VSVChtX3NlbGZWYXJpYW50LmlzT2JqZWN0KCkpOworICAgIFdFQktJVF9BU1NFUlQobV9zZWxm
VmFyaWFudC5pc09iamVjdCgpKTsKICAgICByZXR1cm4gJm1fc2VsZlZhcmlhbnQ7CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0Nw
cEJvdW5kQ2xhc3MuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL0NwcEJvdW5kQ2xhc3MuaAppbmRleCA1NGFmNmRkY2UxZTY4MDJmZjAwZDY4YWE3MmI1ZjIw
MjllNDc1M2M2Li45NTJhNDFjNTM0MGVmZGYwMGJjNzZiNzgyYjRkNDZkYWNjZjhkMWRiIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBC
b3VuZENsYXNzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvQ3BwQm91bmRDbGFzcy5oCkBAIC00NCwxMSArNDQsOSBAQAogI2RlZmluZSBDcHBCb3Vu
ZENsYXNzX2gKIAogI2luY2x1ZGUgIkNwcFZhcmlhbnQuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHZlY3Rvcj4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKQEAgLTU3LDEyICs1NSwxMSBAQCBj
bGFzcyBXZWJTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAotdHlwZWRlZiBW
ZWN0b3I8Q3BwVmFyaWFudD4gQ3BwQXJndW1lbnRMaXN0OwordHlwZWRlZiBzdGQ6OnZlY3RvcjxD
cHBWYXJpYW50PiBDcHBBcmd1bWVudExpc3Q7CiAKIC8vIENwcEJvdW5kQ2xhc3MgbGV0cyB5b3Ug
bWFwIEphdmFzY3JpcHQgbWV0aG9kIGNhbGxzIGFuZCBwcm9wZXJ0eSBhY2Nlc3NlcwogLy8gZGly
ZWN0bHkgdG8gQysrIG1ldGhvZCBjYWxscyBhbmQgQ3BwVmFyaWFudCogdmFyaWFibGUgYWNjZXNz
LgogY2xhc3MgQ3BwQm91bmRDbGFzcyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3BwQm91
bmRDbGFzcyk7CiBwdWJsaWM6CiAgICAgY2xhc3MgUHJvcGVydHlDYWxsYmFjayB7CiAgICAgcHVi
bGljOgpAQCAtMTY0LDcgKzE2MSw3IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIEJpbmQgSmF2YXNj
cmlwdCBwcm9wZXJ0eSB8bmFtZXwgdG8gdGhlIEMrKyBnZXR0ZXIgY2FsbGJhY2sgfGNhbGxiYWNr
fC4KICAgICAvLyBUaGlzIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSByZWFkLW9ubHkgcHJvcGVydGll
cy4KLSAgICB2b2lkIGJpbmRHZXR0ZXJDYWxsYmFjayhjb25zdCBzdGQ6OnN0cmluZyYsIFBhc3NP
d25QdHI8R2V0dGVyQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGJpbmRHZXR0ZXJDYWxsYmFjayhjb25z
dCBzdGQ6OnN0cmluZyYsIHN0ZDo6YXV0b19wdHI8R2V0dGVyQ2FsbGJhY2s+KTsKIAogICAgIC8v
IEEgd3JhcHBlciBmb3IgQmluZEdldHRlckNhbGxiYWNrLCB0byBzaW1wbGlmeSB0aGUgY29tbW9u
IGNhc2Ugb2YgYmluZGluZyBhCiAgICAgLy8gcHJvcGVydHkgb24gdGhlIGN1cnJlbnQgb2JqZWN0
LiBUaG91Z2ggbm90IHZlcmlmaWVkIGhlcmUsIHRoZSBtZXRob2QgcGFyYW1ldGVyCkBAIC0xNzIs
OCArMTY5LDggQEAgcHJvdGVjdGVkOgogICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAgICAgdm9pZCBi
aW5kUHJvcGVydHkoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIHZvaWQgKFQ6OiptZXRob2QpKENw
cFZhcmlhbnQqKSkKICAgICB7Ci0gICAgICAgIE93blB0cjxHZXR0ZXJDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBhZG9wdFB0cihuZXcgTWVtYmVyR2V0dGVyQ2FsbGJhY2s8VD4oc3RhdGljX2Nhc3Q8VCo+
KHRoaXMpLCBtZXRob2QpKTsKLSAgICAgICAgYmluZEdldHRlckNhbGxiYWNrKG5hbWUsIGNhbGxi
YWNrLnJlbGVhc2UoKSk7CisgICAgICAgIHN0ZDo6YXV0b19wdHI8R2V0dGVyQ2FsbGJhY2s+IGNh
bGxiYWNrKG5ldyBNZW1iZXJHZXR0ZXJDYWxsYmFjazxUPihzdGF0aWNfY2FzdDxUKj4odGhpcyks
IG1ldGhvZCkpOworICAgICAgICBiaW5kR2V0dGVyQ2FsbGJhY2sobmFtZSwgY2FsbGJhY2spOwog
ICAgIH0KIAogICAgIC8vIEJpbmQgdGhlIEphdmFzY3JpcHQgcHJvcGVydHkgY2FsbGVkIHxuYW1l
fCB0byBhIENwcFZhcmlhbnQuCkBAIC0xOTMsNyArMTkwLDcgQEAgcHJvdGVjdGVkOgogICAgIC8v
IGFzIGl0IG1heSBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9ycyAoYSBKYXZhU2NyaXB0IG9iamVj
dCB3aXRoIGEKICAgICAvLyBmYWxsYmFjayBhbHdheXMgcmV0dXJucyB0cnVlIHdoZW4gY2hlY2tl
ZCBmb3IgYSBtZXRob2QncwogICAgIC8vIGV4aXN0ZW5jZSkuCi0gICAgdm9pZCBiaW5kRmFsbGJh
Y2tDYWxsYmFjayhQYXNzT3duUHRyPENhbGxiYWNrPiBmYWxsYmFja0NhbGxiYWNrKQorICAgIHZv
aWQgYmluZEZhbGxiYWNrQ2FsbGJhY2soc3RkOjphdXRvX3B0cjxDYWxsYmFjaz4gZmFsbGJhY2tD
YWxsYmFjaykKICAgICB7CiAgICAgICAgIG1fZmFsbGJhY2tDYWxsYmFjayA9IGZhbGxiYWNrQ2Fs
bGJhY2s7CiAgICAgfQpAQCAtMjA1LDI1ICsyMDIsMjQgQEAgcHJvdGVjdGVkOgogICAgIHRlbXBs
YXRlPGNsYXNzIFQ+CiAgICAgdm9pZCBiaW5kRmFsbGJhY2tNZXRob2Qodm9pZCAoVDo6Km1ldGhv
ZCkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopKQogICAgIHsKLSAgICAgICAg
aWYgKG1ldGhvZCkgewotICAgICAgICAgICAgT3duUHRyPENhbGxiYWNrPiBjYWxsYmFjayA9IGFk
b3B0UHRyKG5ldyBNZW1iZXJDYWxsYmFjazxUPihzdGF0aWNfY2FzdDxUKj4odGhpcyksIG1ldGhv
ZCkpOwotICAgICAgICAgICAgYmluZEZhbGxiYWNrQ2FsbGJhY2soY2FsbGJhY2sucmVsZWFzZSgp
KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBiaW5kRmFsbGJhY2tDYWxsYmFjayhudWxs
cHRyKTsKKyAgICAgICAgaWYgKG1ldGhvZCkKKyAgICAgICAgICAgIGJpbmRGYWxsYmFja0NhbGxi
YWNrKHN0ZDo6YXV0b19wdHI8Q2FsbGJhY2s+KG5ldyBNZW1iZXJDYWxsYmFjazxUPihzdGF0aWNf
Y2FzdDxUKj4odGhpcyksIG1ldGhvZCkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYmlu
ZEZhbGxiYWNrQ2FsbGJhY2soc3RkOjphdXRvX3B0cjxDYWxsYmFjaz4oKSk7CiAgICAgfQogCiAg
ICAgLy8gU29tZSBmaWVsZHMgYXJlIHByb3RlY3RlZCBiZWNhdXNlIHNvbWUgdGVzdHMgZGVwZW5k
IG9uIGFjY2Vzc2luZyB0aGVtLAogICAgIC8vIGJ1dCBvdGhlcndpc2UgdGhleSBzaG91bGQgYmUg
Y29uc2lkZXJlZCBwcml2YXRlLgogCi0gICAgdHlwZWRlZiBIYXNoTWFwPE5QSWRlbnRpZmllciwg
UHJvcGVydHlDYWxsYmFjayo+IFByb3BlcnR5TGlzdDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8TlBJ
ZGVudGlmaWVyLCBDYWxsYmFjayo+IE1ldGhvZExpc3Q7CisgICAgdHlwZWRlZiBzdGQ6Om1hcDxO
UElkZW50aWZpZXIsIFByb3BlcnR5Q2FsbGJhY2sqPiBQcm9wZXJ0eUxpc3Q7CisgICAgdHlwZWRl
ZiBzdGQ6Om1hcDxOUElkZW50aWZpZXIsIENhbGxiYWNrKj4gTWV0aG9kTGlzdDsKICAgICAvLyBU
aGVzZSBtYXBzIGFzc29jaWF0ZSBuYW1lcyB3aXRoIHByb3BlcnR5IGFuZCBtZXRob2QgcG9pbnRl
cnMgdG8gYmUKICAgICAvLyBleHBvc2VkIHRvIEphdmFTY3JpcHQuCiAgICAgUHJvcGVydHlMaXN0
IG1fcHJvcGVydGllczsKICAgICBNZXRob2RMaXN0IG1fbWV0aG9kczsKIAogICAgIC8vIFRoZSBj
YWxsYmFjayBnZXRzIGludm9rZWQgd2hlbiBhIGNhbGwgaXMgbWFkZSB0byBhbiBub25leGlzdGVu
dCBtZXRob2QuCi0gICAgT3duUHRyPENhbGxiYWNrPiBtX2ZhbGxiYWNrQ2FsbGJhY2s7CisgICAg
c3RkOjphdXRvX3B0cjxDYWxsYmFjaz4gbV9mYWxsYmFja0NhbGxiYWNrOwogCiBwcml2YXRlOgog
ICAgIC8vIE5QT2JqZWN0IGNhbGxiYWNrcy4KQEAgLTI0Miw2ICsyMzgsMTAgQEAgcHJpdmF0ZToK
ICAgICAvLyBUcnVlIGlmIG91ciBucF9vYmplY3QgaGFzIGJlZW4gYm91bmQgdG8gYSBXZWJGcmFt
ZSwgaW4gd2hpY2ggY2FzZSBpdCBtdXN0CiAgICAgLy8gYmUgdW5yZWdpc3RlcmVkIHdpdGggVjgg
d2hlbiB3ZSBkZWxldGUgaXQuCiAgICAgYm9vbCBtX2JvdW5kVG9GcmFtZTsKKworcHJpdmF0ZToK
KyAgICBDcHBCb3VuZENsYXNzKENwcEJvdW5kQ2xhc3MmKTsKKyAgICBDcHBCb3VuZENsYXNzJiBv
cGVyYXRvcj0oY29uc3QgQ3BwQm91bmRDbGFzcyYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBWYXJpYW50
LmNwcAppbmRleCA0ZDI4NTZlNzQyZDk3Y2RkOWEwMDg1ZTE5YTJkZDE4MTEyZjhmNWZjLi5lZjJl
OTJhNjVjMGVmNGU4YzNiZGY0ZTVjZGQ0NzE1NWJlNzcyYzM1IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBWYXJpYW50LmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBWYXJpYW50
LmNwcApAQCAtMzEsMTAgKzMxLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
cHBWYXJpYW50LmgiCiAKKyNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViQmlu
ZGluZ3MuaCIKICNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
LSNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMjIwLDcgKzIxOSw3IEBAIHZvaWQgQ3BwVmFyaWFu
dDo6c2V0KE5QT2JqZWN0KiBuZXdWYWx1ZSkKIAogc3RyaW5nIENwcFZhcmlhbnQ6OnRvU3RyaW5n
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNTdHJpbmcoKSk7CisgICAgV0VCS0lUX0FTU0VSVChp
c1N0cmluZygpKTsKICAgICByZXR1cm4gc3RyaW5nKHZhbHVlLnN0cmluZ1ZhbHVlLlVURjhDaGFy
YWN0ZXJzLAogICAgICAgICAgICAgICAgICAgdmFsdWUuc3RyaW5nVmFsdWUuVVRGOExlbmd0aCk7
CiB9CkBAIC0yMzEsNyArMjMwLDcgQEAgaW50MzJfdCBDcHBWYXJpYW50Ojp0b0ludDMyKCkgY29u
c3QKICAgICAgICAgcmV0dXJuIHZhbHVlLmludFZhbHVlOwogICAgIGlmIChpc0RvdWJsZSgpKQog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUuZG91YmxlVmFsdWUpOwot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjQxLDIxICsyNDAsMjEgQEAgZG91YmxlIENwcFZh
cmlhbnQ6OnRvRG91YmxlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJs
ZT4odmFsdWUuaW50VmFsdWUpOwogICAgIGlmIChpc0RvdWJsZSgpKQogICAgICAgICByZXR1cm4g
dmFsdWUuZG91YmxlVmFsdWU7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwogfQogCiBib29sIENwcFZhcmlh
bnQ6OnRvQm9vbGVhbigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzQm9vbCgpKTsKKyAgICBXRUJL
SVRfQVNTRVJUKGlzQm9vbCgpKTsKICAgICByZXR1cm4gdmFsdWUuYm9vbFZhbHVlOwogfQogCi1W
ZWN0b3I8c3RyaW5nPiBDcHBWYXJpYW50Ojp0b1N0cmluZ1ZlY3RvcigpIGNvbnN0Cit2ZWN0b3I8
c3RyaW5nPiBDcHBWYXJpYW50Ojp0b1N0cmluZ1ZlY3RvcigpIGNvbnN0CiB7CiAKLSAgICBBU1NF
UlQoaXNPYmplY3QoKSk7Ci0gICAgVmVjdG9yPHN0cmluZz4gc3RyaW5nVmVjdG9yOworICAgIFdF
QktJVF9BU1NFUlQoaXNPYmplY3QoKSk7CisgICAgdmVjdG9yPHN0cmluZz4gc3RyaW5nVmVjdG9y
OwogICAgIE5QT2JqZWN0KiBucFZhbHVlID0gdmFsdWUub2JqZWN0VmFsdWU7CiAgICAgTlBJZGVu
dGlmaWVyIGxlbmd0aElkID0gV2ViQmluZGluZ3M6OmdldFN0cmluZ0lkZW50aWZpZXIoImxlbmd0
aCIpOwogCkBAIC0yOTAsNyArMjg5LDcgQEAgVmVjdG9yPHN0cmluZz4gQ3BwVmFyaWFudDo6dG9T
dHJpbmdWZWN0b3IoKSBjb25zdAogICAgICAgICBpZiAoTlBWQVJJQU5UX0lTX1NUUklORyhpbmRl
eFZhbHVlKSkgewogICAgICAgICAgICAgc3RyaW5nIGl0ZW0oTlBWQVJJQU5UX1RPX1NUUklORyhp
bmRleFZhbHVlKS5VVEY4Q2hhcmFjdGVycywKICAgICAgICAgICAgICAgICAgICAgICAgIE5QVkFS
SUFOVF9UT19TVFJJTkcoaW5kZXhWYWx1ZSkuVVRGOExlbmd0aCk7Ci0gICAgICAgICAgICBzdHJp
bmdWZWN0b3IuYXBwZW5kKGl0ZW0pOworICAgICAgICAgICAgc3RyaW5nVmVjdG9yLnB1c2hfYmFj
ayhpdGVtKTsKICAgICAgICAgfQogICAgICAgICBXZWJCaW5kaW5nczo6cmVsZWFzZVZhcmlhbnRW
YWx1ZSgmaW5kZXhWYWx1ZSk7CiAgICAgfQpAQCAtMzAwLDcgKzI5OSw3IEBAIFZlY3RvcjxzdHJp
bmc+IENwcFZhcmlhbnQ6OnRvU3RyaW5nVmVjdG9yKCkgY29uc3QKIGJvb2wgQ3BwVmFyaWFudDo6
aW52b2tlKGNvbnN0IHN0cmluZyYgbWV0aG9kLCBjb25zdCBDcHBWYXJpYW50KiBhcmd1bWVudHMs
CiAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhcmd1bWVudENvdW50LCBDcHBWYXJp
YW50JiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzT2JqZWN0KCkpOworICAgIFdFQktJ
VF9BU1NFUlQoaXNPYmplY3QoKSk7CiAgICAgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUgPSBXZWJC
aW5kaW5nczo6Z2V0U3RyaW5nSWRlbnRpZmllcihtZXRob2QuY19zdHIoKSk7CiAgICAgTlBPYmpl
Y3QqIG5wT2JqZWN0ID0gdmFsdWUub2JqZWN0VmFsdWU7CiAgICAgaWYgKCFXZWJCaW5kaW5nczo6
aGFzTWV0aG9kKDAsIG5wT2JqZWN0LCBtZXRob2ROYW1lKSkKQEAgLTMxNCw3ICszMTMsNyBAQCBi
b29sIENwcFZhcmlhbnQ6Omludm9rZShjb25zdCBzdHJpbmcmIG1ldGhvZCwgY29uc3QgQ3BwVmFy
aWFudCogYXJndW1lbnRzLAogYm9vbCBDcHBWYXJpYW50OjppbnZva2VEZWZhdWx0KGNvbnN0IENw
cFZhcmlhbnQqIGFyZ3VtZW50cywgdWludDMyX3QgYXJndW1lbnRDb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDcHBWYXJpYW50JiByZXN1bHQpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKGlzT2JqZWN0KCkpOworICAgIFdFQktJVF9BU1NFUlQoaXNPYmplY3QoKSk7CiAgICAgTlBP
YmplY3QqIG5wT2JqZWN0ID0gdmFsdWUub2JqZWN0VmFsdWU7CiAgICAgTlBWYXJpYW50IHI7CiAg
ICAgYm9vbCBzdGF0dXMgPSBXZWJCaW5kaW5nczo6aW52b2tlRGVmYXVsdCgwLCBucE9iamVjdCwg
YXJndW1lbnRzLCBhcmd1bWVudENvdW50LCAmcik7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBWYXJpYW50LmggYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBWYXJpYW50LmgKaW5kZXggZTgy
YTcwYjY2NzUyNGY3YjI2YzJkM2MzMGJmNWMxYzIyM2RmY2Y3Ni4uZTkyOTVhM2JlODk1YmEzZTBh
OTcxYjBlOWVhOWQ4ZGFmOGVjZmMyOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuaApAQCAtNDQsNyArNDQs
NyBAQAogCiAjaW5jbHVkZSAiV2ViQmluZGluZ3MuaCIKICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KIAogbmFtZXNwYWNlIFdlYlRl
c3RSdW5uZXIgewogCkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogICAgIGJvb2wgdG9Cb29s
ZWFuKCkgY29uc3Q7CiAgICAgLy8gUmV0dXJucyBhIHZlY3RvciBvZiBzdHJpbmdzIGZvciB0aGUg
c3BlY2lmaWVkIGFyZ3VtZW50LiBUaGlzIGlzIHVzZWZ1bAogICAgIC8vIGZvciBjb252ZXJ0aW5n
IGEgSmF2YVNjcmlwdCBhcnJheSBvZiBzdHJpbmdzIGludG8gYSB2ZWN0b3Igb2Ygc3RyaW5ncy4K
LSAgICBWZWN0b3I8c3RkOjpzdHJpbmc+IHRvU3RyaW5nVmVjdG9yKCkgY29uc3Q7CisgICAgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRvU3RyaW5nVmVjdG9yKCkgY29uc3Q7CiAKICAgICAvLyBJ
bnZva2UgbWV0aG9kIG9mIHRoZSBnaXZlbiBuYW1lIG9uIGFuIG9iamVjdCB3aXRoIHRoZSBzdXBw
bGllZCBhcmd1bWVudHMuCiAgICAgLy8gVGhlIGZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSB0aGUg
b2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRob2QgaXMgdG8gYmUKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNw
cAppbmRleCAyZDRlMmM1NjNjODZkYjVjYzMzMzM3ZjcyNThhNDMxYmZlMDljYWUwLi41M2JkOTVm
MWY4NmFiZWM1MWI2N2VlYzM5ZDZkMWNhNDk4OWM1MWZlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIu
Y3BwCkBAIC00NSwxOSArNDUsMTkgQEAKIAogI2luY2x1ZGUgIktleUNvZGVNYXBwaW5nLmgiCiAj
aW5jbHVkZSAiTW9ja1NwZWxsQ2hlY2suaCIKKyNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCiAjaW5j
bHVkZSAiV2ViQ29udGV4dE1lbnVEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRHJhZ09wZXJhdGlvbi5o
IgogI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIldlYlRvdWNoUG9pbnQu
aCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCisjaW5jbHVkZSA8ZGVxdWU+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYkRyYWdEYXRhLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlBvaW50Lmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYlN0cmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJWZWN0b3IuaD4KLSNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKLSNp
ZiBPUyhXSU5ET1dTKQorI2lmZGVmIFdJTjMyCiAjaW5jbHVkZSAid2luL1dlYklucHV0RXZlbnRG
YWN0b3J5LmgiCiAjZW5kaWYKIApAQCAtOTcsOSArOTcsOSBAQCBXZWJEcmFnRGF0YSBjdXJyZW50
RHJhZ0RhdGE7CiBXZWJEcmFnT3BlcmF0aW9uIGN1cnJlbnREcmFnRWZmZWN0OwogV2ViRHJhZ09w
ZXJhdGlvbnNNYXNrIGN1cnJlbnREcmFnRWZmZWN0c0FsbG93ZWQ7CiBib29sIHJlcGxheWluZ1Nh
dmVkRXZlbnRzID0gZmFsc2U7Ci1EZXF1ZTxTYXZlZEV2ZW50PiBtb3VzZUV2ZW50UXVldWU7Citk
ZXF1ZTxTYXZlZEV2ZW50PiBtb3VzZUV2ZW50UXVldWU7CiBpbnQgdG91Y2hNb2RpZmllcnM7Ci1W
ZWN0b3I8V2ViVG91Y2hQb2ludD4gdG91Y2hQb2ludHM7Cit2ZWN0b3I8V2ViVG91Y2hQb2ludD4g
dG91Y2hQb2ludHM7CiAKIC8vIFRpbWUgYW5kIHBsYWNlIG9mIHRoZSBsYXN0IG1vdXNlIHVwIGV2
ZW50LgogZG91YmxlIGxhc3RDbGlja1RpbWVTZWMgPSAwOwpAQCAtMTU1LDcgKzE1NSw3IEBAIGJv
b2wgYXBwbHlLZXlNb2RpZmllcihjb25zdCBzdHJpbmcmIG1vZGlmaWVyTmFtZSwgV2ViSW5wdXRF
dmVudCogZXZlbnQpCiAgICAgYm9vbCBpc1N5c3RlbUtleSA9IGZhbHNlOwogICAgIGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMgPSBtb2RpZmllck5hbWUuY19zdHIoKTsKICAgICBpZiAoIXN0cmNtcChj
aGFyYWN0ZXJzLCAiY3RybEtleSIpCi0jaWYgIU9TKE1BQ19PU19YKQorI2lmbmRlZiBfX0FQUExF
X18KICAgICAgICAgfHwgIXN0cmNtcChjaGFyYWN0ZXJzLCAiYWRkU2VsZWN0aW9uS2V5IikKICNl
bmRpZgogICAgICAgICApIHsKQEAgLTE2NCw3ICsxNjQsNyBAQCBib29sIGFwcGx5S2V5TW9kaWZp
ZXIoY29uc3Qgc3RyaW5nJiBtb2RpZmllck5hbWUsIFdlYklucHV0RXZlbnQqIGV2ZW50KQogICAg
ICAgICBldmVudC0+bW9kaWZpZXJzIHw9IFdlYklucHV0RXZlbnQ6OlNoaWZ0S2V5OwogICAgIGVs
c2UgaWYgKCFzdHJjbXAoY2hhcmFjdGVycywgImFsdEtleSIpKSB7CiAgICAgICAgIGV2ZW50LT5t
b2RpZmllcnMgfD0gV2ViSW5wdXRFdmVudDo6QWx0S2V5OwotI2lmICFPUyhNQUNfT1NfWCkKKyNp
Zm5kZWYgX19BUFBMRV9fCiAgICAgICAgIC8vIE9uIFdpbmRvd3MgYWxsIGtleXMgd2l0aCBBbHQg
bW9kaWZpZXIgd2lsbCBiZSBtYXJrZWQgYXMgc3lzdGVtIGtleS4KICAgICAgICAgLy8gV2Uga2Vl
cCB0aGUgc2FtZSBiZWhhdmlvciBvbiBMaW51eCBhbmQgZXZlcnl3aGVyZSBub24tTWFjLCBzZWU6
CiAgICAgICAgIC8vIFdlYktpdC9jaHJvbWl1bS9zcmMvZ3RrL1dlYklucHV0RXZlbnRGYWN0b3J5
LmNwcApAQCAtMTcyLDggKzE3Miw3IEBAIGJvb2wgYXBwbHlLZXlNb2RpZmllcihjb25zdCBzdHJp
bmcmIG1vZGlmaWVyTmFtZSwgV2ViSW5wdXRFdmVudCogZXZlbnQpCiAgICAgICAgIC8vIGtlcHQg
aW4gc3luYyB3aXRoIHRoZSByZWxhdGVkIGNvZGUgaW4gYWJvdmUgZmlsZS4KICAgICAgICAgaXNT
eXN0ZW1LZXkgPSB0cnVlOwogI2VuZGlmCi0jaWYgT1MoTUFDX09TX1gpCi0gICAgfSBlbHNlIGlm
ICghc3RyY21wKGNoYXJhY3RlcnMsICJtZXRhS2V5IikgfHwgIXN0cmNtcChjaGFyYWN0ZXJzLCAi
YWRkU2VsZWN0aW9uS2V5IikpIHsKKyNpZmRlZiBfX0FQUExFX18KICAgICAgICAgZXZlbnQtPm1v
ZGlmaWVycyB8PSBXZWJJbnB1dEV2ZW50OjpNZXRhS2V5OwogICAgICAgICAvLyBPbiBNYWMgb25s
eSBjb21tYW5kIGtleSBwcmVzc2VzIGFyZSBtYXJrZWQgYXMgc3lzdGVtIGtleS4KICAgICAgICAg
Ly8gU2VlIHRoZSByZWxhdGVkIGNvZGUgaW46IFdlYktpdC9jaHJvbWl1bS9zcmMvbWFjL1dlYklu
cHV0RXZlbnRGYWN0b3J5LmNwcApAQCAtMTkxLDggKzE5MCw4IEBAIGJvb2wgYXBwbHlLZXlNb2Rp
ZmllcnMoY29uc3QgQ3BwVmFyaWFudCogYXJndW1lbnQsIFdlYklucHV0RXZlbnQqIGV2ZW50KQog
ewogICAgIGJvb2wgaXNTeXN0ZW1LZXkgPSBmYWxzZTsKICAgICBpZiAoYXJndW1lbnQtPmlzT2Jq
ZWN0KCkpIHsKLSAgICAgICAgVmVjdG9yPHN0cmluZz4gbW9kaWZpZXJzID0gYXJndW1lbnQtPnRv
U3RyaW5nVmVjdG9yKCk7Ci0gICAgICAgIGZvciAoVmVjdG9yPHN0cmluZz46OmNvbnN0X2l0ZXJh
dG9yIGkgPSBtb2RpZmllcnMuYmVnaW4oKTsgaSAhPSBtb2RpZmllcnMuZW5kKCk7ICsraSkKKyAg
ICAgICAgdmVjdG9yPHN0cmluZz4gbW9kaWZpZXJzID0gYXJndW1lbnQtPnRvU3RyaW5nVmVjdG9y
KCk7CisgICAgICAgIGZvciAodmVjdG9yPHN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBtb2Rp
ZmllcnMuYmVnaW4oKTsgaSAhPSBtb2RpZmllcnMuZW5kKCk7ICsraSkKICAgICAgICAgICAgIGlz
U3lzdGVtS2V5IHw9IGFwcGx5S2V5TW9kaWZpZXIoKmksIGV2ZW50KTsKICAgICB9IGVsc2UgaWYg
KGFyZ3VtZW50LT5pc1N0cmluZygpKQogICAgICAgICBpc1N5c3RlbUtleSA9IGFwcGx5S2V5TW9k
aWZpZXIoYXJndW1lbnQtPnRvU3RyaW5nKCksIGV2ZW50KTsKQEAgLTIwNCw3ICsyMDMsNyBAQCBi
b29sIGFwcGx5S2V5TW9kaWZpZXJzKGNvbnN0IENwcFZhcmlhbnQqIGFyZ3VtZW50LCBXZWJJbnB1
dEV2ZW50KiBldmVudCkKIC8vIG9mIHRoZSBlZGl0IGNvbW1hbmQgd2lsbCBiZSBzdG9yZWQgaW4g
fCpuYW1lfC4KIGJvb2wgZ2V0RWRpdENvbW1hbmQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZl
bnQsIHN0cmluZyogbmFtZSkKIHsKLSNpZiBPUyhNQUNfT1NfWCkKKyNpZmRlZiBfX0FQUExFX18K
ICAgICAvLyBXZSBvbmx5IGNhcmVzIGFib3V0IExlZnQsUmlnaHQsVXAsRG93biBrZXlzIHdpdGgg
Q29tbWFuZCBvciBDb21tYW5kK1NoaWZ0CiAgICAgLy8gbW9kaWZpZXJzLiBUaGVzZSBrZXkgZXZl
bnRzIGNvcnJlc3BvbmQgdG8gc29tZSBzcGVjaWFsIG1vdmVtZW50IGFuZAogICAgIC8vIHNlbGVj
dGlvbiBlZGl0b3IgY29tbWFuZHMsIGFuZCB3YXMgc3VwcG9zZWQgdG8gYmUgaGFuZGxlZCBpbgpA
QCAtMzA3LDcgKzMwNiw3IEBAIEV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcigpCiAgICAgLy8gV2hl
biBzZXQgdG8gdHJ1ZSAodGhlIGRlZmF1bHQgdmFsdWUpLCB3ZSBiYXRjaCBtb3VzZSBtb3ZlIGFu
ZCBtb3VzZSB1cAogICAgIC8vIGV2ZW50cyBzbyB3ZSBjYW4gc2ltdWxhdGUgZHJhZyAmIGRyb3Au
CiAgICAgYmluZFByb3BlcnR5KCJkcmFnTW9kZSIsICZkcmFnTW9kZSk7Ci0jaWYgT1MoV0lORE9X
UykKKyNpZmRlZiBXSU4zMgogICAgIGJpbmRQcm9wZXJ0eSgiV01fS0VZRE9XTiIsICZ3bUtleURv
d24pOwogICAgIGJpbmRQcm9wZXJ0eSgiV01fS0VZVVAiLCAmd21LZXlVcCk7CiAgICAgYmluZFBy
b3BlcnR5KCJXTV9DSEFSIiwgJndtQ2hhcik7CkBAIC0zMjIsMTMgKzMyMSwxMyBAQCBFdmVudFNl
bmRlcjo6RXZlbnRTZW5kZXIoKQogdm9pZCBFdmVudFNlbmRlcjo6cmVzZXQoKQogewogICAgIC8v
IFRoZSB0ZXN0IHNob3VsZCBoYXZlIGZpbmlzaGVkIGEgZHJhZyBhbmQgdGhlIG1vdXNlIGJ1dHRv
biBzdGF0ZS4KLSAgICBBU1NFUlQoY3VycmVudERyYWdEYXRhLmlzTnVsbCgpKTsKKyAgICBXRUJL
SVRfQVNTRVJUKGN1cnJlbnREcmFnRGF0YS5pc051bGwoKSk7CiAgICAgY3VycmVudERyYWdEYXRh
LnJlc2V0KCk7CiAgICAgY3VycmVudERyYWdFZmZlY3QgPSBXZWJLaXQ6OldlYkRyYWdPcGVyYXRp
b25Ob25lOwogICAgIGN1cnJlbnREcmFnRWZmZWN0c0FsbG93ZWQgPSBXZWJLaXQ6OldlYkRyYWdP
cGVyYXRpb25Ob25lOwogICAgIHByZXNzZWRCdXR0b24gPSBXZWJNb3VzZUV2ZW50OjpCdXR0b25O
b25lOwogICAgIGRyYWdNb2RlLnNldCh0cnVlKTsKLSNpZiBPUyhXSU5ET1dTKQorI2lmZGVmIFdJ
TjMyCiAgICAgd21LZXlEb3duLnNldChXTV9LRVlET1dOKTsKICAgICB3bUtleVVwLnNldChXTV9L
RVlVUCk7CiAgICAgd21DaGFyLnNldChXTV9DSEFSKTsKQEAgLTQxOCw3ICs0MTcsNyBAQCB2b2lk
IEV2ZW50U2VuZGVyOjptb3VzZURvd24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqIHJlc3VsdAogICAgIHdlYnZpZXcoKS0+bGF5b3V0KCk7CiAKICAgICBpbnQg
YnV0dG9uTnVtYmVyID0gZ2V0QnV0dG9uTnVtYmVyRnJvbVNpbmdsZUFyZyhhcmd1bWVudHMpOwot
ICAgIEFTU0VSVChidXR0b25OdW1iZXIgIT0gLTEpOworICAgIFdFQktJVF9BU1NFUlQoYnV0dG9u
TnVtYmVyICE9IC0xKTsKIAogICAgIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBidXR0b25UeXBlID0g
Z2V0QnV0dG9uVHlwZUZyb21CdXR0b25OdW1iZXIoYnV0dG9uTnVtYmVyKTsKIApAQCAtNDQwLDcg
KzQzOSw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6Om1vdXNlVXAoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKICAgICB3ZWJ2aWV3KCktPmxheW91dCgp
OwogCiAgICAgaW50IGJ1dHRvbk51bWJlciA9IGdldEJ1dHRvbk51bWJlckZyb21TaW5nbGVBcmco
YXJndW1lbnRzKTsKLSAgICBBU1NFUlQoYnV0dG9uTnVtYmVyICE9IC0xKTsKKyAgICBXRUJLSVRf
QVNTRVJUKGJ1dHRvbk51bWJlciAhPSAtMSk7CiAKICAgICBXZWJNb3VzZUV2ZW50OjpCdXR0b24g
YnV0dG9uVHlwZSA9IGdldEJ1dHRvblR5cGVGcm9tQnV0dG9uTnVtYmVyKGJ1dHRvbk51bWJlcik7
CiAKQEAgLTQ0OCw3ICs0NDcsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjptb3VzZVVwKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiAgICAgICAgIFNh
dmVkRXZlbnQgc2F2ZWRFdmVudDsKICAgICAgICAgc2F2ZWRFdmVudC50eXBlID0gU2F2ZWRFdmVu
dDo6TW91c2VVcDsKICAgICAgICAgc2F2ZWRFdmVudC5idXR0b25UeXBlID0gYnV0dG9uVHlwZTsK
LSAgICAgICAgbW91c2VFdmVudFF1ZXVlLmFwcGVuZChzYXZlZEV2ZW50KTsKKyAgICAgICAgbW91
c2VFdmVudFF1ZXVlLnB1c2hfYmFjayhzYXZlZEV2ZW50KTsKICAgICAgICAgcmVwbGF5U2F2ZWRF
dmVudHMoKTsKICAgICB9IGVsc2UgewogICAgICAgICBXZWJNb3VzZUV2ZW50IGV2ZW50OwpAQCAt
NTA1LDcgKzUwNCw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6Om1vdXNlTW92ZVRvKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1CiAgICAgICAgIFNhdmVkRXZl
bnQgc2F2ZWRFdmVudDsKICAgICAgICAgc2F2ZWRFdmVudC50eXBlID0gU2F2ZWRFdmVudDo6TW91
c2VNb3ZlOwogICAgICAgICBzYXZlZEV2ZW50LnBvcyA9IG1vdXNlUG9zOwotICAgICAgICBtb3Vz
ZUV2ZW50UXVldWUuYXBwZW5kKHNhdmVkRXZlbnQpOworICAgICAgICBtb3VzZUV2ZW50UXVldWUu
cHVzaF9iYWNrKHNhdmVkRXZlbnQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFdlYk1vdXNlRXZl
bnQgZXZlbnQ7CiAgICAgICAgIGluaXRNb3VzZUV2ZW50KFdlYklucHV0RXZlbnQ6Ok1vdXNlTW92
ZSwgcHJlc3NlZEJ1dHRvbiwgbW91c2VQb3MsICZldmVudCwgZ2V0Q3VycmVudEV2ZW50VGltZVNl
YyhtX2RlbGVnYXRlKSk7CkBAIC01OTgsNyArNTk3LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6a2V5
RG93bihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0
KQogICAgICAgICB9CiAgICAgICAgIGlmICghY29kZSkgewogICAgICAgICAgICAgV2ViU3RyaW5n
IHdlYkNvZGVTdHIgPSBXZWJTdHJpbmc6OmZyb21VVEY4KGNvZGVTdHIuZGF0YSgpLCBjb2RlU3Ry
LnNpemUoKSk7Ci0gICAgICAgICAgICBBU1NFUlQod2ViQ29kZVN0ci5sZW5ndGgoKSA9PSAxKTsK
KyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQod2ViQ29kZVN0ci5sZW5ndGgoKSA9PSAxKTsKICAg
ICAgICAgICAgIHRleHQgPSBjb2RlID0gd2ViQ29kZVN0ci5kYXRhKClbMF07CiAgICAgICAgICAg
ICBuZWVkc1NoaWZ0S2V5TW9kaWZpZXIgPSBuZWVkc1NoaWZ0TW9kaWZpZXIoY29kZSk7CiAgICAg
ICAgICAgICBpZiAoKGNvZGUgJiAweEZGKSA+PSAnYScgJiYgKGNvZGUgJiAweEZGKSA8PSAneicp
CkBAIC02MTYsNyArNjE1LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6a2V5RG93bihjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogICAgIGV2ZW50RG93
bi50eXBlID0gV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bjsKICAgICBldmVudERvd24ubW9kaWZp
ZXJzID0gMDsKICAgICBldmVudERvd24ud2luZG93c0tleUNvZGUgPSBjb2RlOwotI2lmIE9TKExJ
TlVYKSAmJiBVU0UoR1RLKQorI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiBVU0UoR1RLKQogICAg
IGV2ZW50RG93bi5uYXRpdmVLZXlDb2RlID0gTmF0aXZlS2V5Q29kZUZvcldpbmRvd3NLZXlDb2Rl
KGNvZGUpOwogI2VuZGlmCiAKQEAgLTY3OCw3ICs2NzcsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpk
aXNwYXRjaE1lc3NhZ2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlh
bnQqCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAKLSNpZiBPUyhXSU5ET1dTKQorI2lmZGVm
IFdJTjMyCiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPT0gMykgewogICAgICAgICAvLyBHcmFi
IHRoZSBtZXNzYWdlIGlkIHRvIHNlZSBpZiB3ZSBuZWVkIHRvIGRpc3BhdGNoIGl0LgogICAgICAg
ICBpbnQgbXNnID0gYXJndW1lbnRzWzBdLnRvSW50MzIoKTsKQEAgLTY5NCw3ICs2OTMsNyBAQCB2
b2lkIEV2ZW50U2VuZGVyOjpkaXNwYXRjaE1lc3NhZ2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbHBhcmFtID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oYXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOwogICAgICAg
ICB3ZWJ2aWV3KCktPmhhbmRsZUlucHV0RXZlbnQoV2ViSW5wdXRFdmVudEZhY3Rvcnk6OmtleWJv
YXJkRXZlbnQoMCwgbXNnLCBhcmd1bWVudHNbMV0udG9JbnQzMigpLCBscGFyYW0pKTsKICAgICB9
IGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogfQogCkBAIC03MTgsNyArNzE3LDcgQEAgdm9pZCBF
dmVudFNlbmRlcjo6bGVhcEZvcndhcmQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqIHJlc3UKICAgICAgICAgU2F2ZWRFdmVudCBzYXZlZEV2ZW50OwogICAgICAg
ICBzYXZlZEV2ZW50LnR5cGUgPSBTYXZlZEV2ZW50OjpMZWFwRm9yd2FyZDsKICAgICAgICAgc2F2
ZWRFdmVudC5taWxsaXNlY29uZHMgPSBtaWxsaXNlY29uZHM7Ci0gICAgICAgIG1vdXNlRXZlbnRR
dWV1ZS5hcHBlbmQoc2F2ZWRFdmVudCk7CisgICAgICAgIG1vdXNlRXZlbnRRdWV1ZS5wdXNoX2Jh
Y2soc2F2ZWRFdmVudCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGRvTGVhcEZvcndhcmQobWlsbGlz
ZWNvbmRzKTsKIH0KQEAgLTc3OSw4ICs3NzgsOSBAQCB2b2lkIEV2ZW50U2VuZGVyOjpjb250aW51
b3VzTW91c2VTY3JvbGxCeShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVgog
dm9pZCBFdmVudFNlbmRlcjo6cmVwbGF5U2F2ZWRFdmVudHMoKQogewogICAgIHJlcGxheWluZ1Nh
dmVkRXZlbnRzID0gdHJ1ZTsKLSAgICB3aGlsZSAoIW1vdXNlRXZlbnRRdWV1ZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgU2F2ZWRFdmVudCBlID0gbW91c2VFdmVudFF1ZXVlLnRha2VGaXJzdCgpOwor
ICAgIHdoaWxlICghbW91c2VFdmVudFF1ZXVlLmVtcHR5KCkpIHsKKyAgICAgICAgU2F2ZWRFdmVu
dCBlID0gbW91c2VFdmVudFF1ZXVlLmZyb250KCk7CisgICAgICAgIG1vdXNlRXZlbnRRdWV1ZS5w
b3BfZnJvbnQoKTsKIAogICAgICAgICBzd2l0Y2ggKGUudHlwZSkgewogICAgICAgICBjYXNlIFNh
dmVkRXZlbnQ6Ok1vdXNlTW92ZTogewpAQCAtNzk5LDcgKzc5OSw3IEBAIHZvaWQgRXZlbnRTZW5k
ZXI6OnJlcGxheVNhdmVkRXZlbnRzKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtODEzLDcgKzgxMyw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnJlcGxheVNhdmVkRXZlbnRzKCkK
IC8vICAgYWxzbyBtYWtlcyBzZW5zZS4gVGhpcyBmdW5jdGlvbiBpcyBkb2luZyBzdWNoIGZvciBz
b21lIGZsYWdzLgogLy8gLSBTb21lIHRlc3QgZXZlbiBjaGVja3MgYWN0dWFsIHN0cmluZyBjb250
ZW50LiBTbyBwcm92aWRpbmcgaXQgd291bGQgYmUgYWxzbyBoZWxwZnVsLgogLy8KLXN0YXRpYyBW
ZWN0b3I8V2ViU3RyaW5nPiBtYWtlTWVudUl0ZW1TdHJpbmdzRm9yKFdlYkNvbnRleHRNZW51RGF0
YSogY29udGV4dE1lbnUsIFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCitzdGF0aWMgdmVjdG9y
PFdlYlN0cmluZz4gbWFrZU1lbnVJdGVtU3RyaW5nc0ZvcihXZWJDb250ZXh0TWVudURhdGEqIGNv
bnRleHRNZW51LCBXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIC8vIFRoZXNlIGNv
bnN0YW50cyBhcmUgYmFzZWQgb24gU2FmYXJpJ3MgY29udGV4dCBtZW51IGJlY2F1c2UgdGVzdHMg
YXJlIG1hZGUgZm9yIGl0LgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBub25FZGl0YWJsZU1lbnVT
dHJpbmdzW10gPSB7ICJCYWNrIiwgIlJlbG9hZCBQYWdlIiwgIk9wZW4gaW4gRGFzaGJhb3JkIiwg
IjxzZXBhcmF0b3I+IiwgIlZpZXcgU291cmNlIiwgIlNhdmUgUGFnZSBBcyIsICJQcmludCBQYWdl
IiwgIkluc3BlY3QgRWxlbWVudCIsIDAgfTsKQEAgLTgyMSwyMCArODIxLDIwIEBAIHN0YXRpYyBW
ZWN0b3I8V2ViU3RyaW5nPiBtYWtlTWVudUl0ZW1TdHJpbmdzRm9yKFdlYkNvbnRleHRNZW51RGF0
YSogY29udGV4dE1lbnUsCiAKICAgICAvLyBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgbW91c2Ug
ZXZlbnRzIGFyZSBjYW5jZWxsZWFibGUuCiAgICAgaWYgKCFjb250ZXh0TWVudSkKLSAgICAgICAg
cmV0dXJuIFZlY3RvcjxXZWJTdHJpbmc+KCk7CisgICAgICAgIHJldHVybiB2ZWN0b3I8V2ViU3Ry
aW5nPigpOwogCi0gICAgVmVjdG9yPFdlYlN0cmluZz4gc3RyaW5nczsKKyAgICB2ZWN0b3I8V2Vi
U3RyaW5nPiBzdHJpbmdzOwogCiAgICAgaWYgKGNvbnRleHRNZW51LT5pc0VkaXRhYmxlKSB7CiAg
ICAgICAgIGZvciAoY29uc3QgY2hhcioqIGl0ZW0gPSBlZGl0YWJsZU1lbnVTdHJpbmdzOyAqaXRl
bTsgKytpdGVtKSAKLSAgICAgICAgICAgIHN0cmluZ3MuYXBwZW5kKFdlYlN0cmluZzo6ZnJvbVVU
RjgoKml0ZW0pKTsKKyAgICAgICAgICAgIHN0cmluZ3MucHVzaF9iYWNrKFdlYlN0cmluZzo6ZnJv
bVVURjgoKml0ZW0pKTsKICAgICAgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gc3VnZ2VzdGlvbnM7
CiAgICAgICAgIE1vY2tTcGVsbENoZWNrOjpmaWxsU3VnZ2VzdGlvbkxpc3QoY29udGV4dE1lbnUt
Pm1pc3NwZWxsZWRXb3JkLCAmc3VnZ2VzdGlvbnMpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN1Z2dlc3Rpb25zLnNpemUoKTsgKytpKSAKLSAgICAgICAgICAgIHN0cmluZ3MuYXBw
ZW5kKHN1Z2dlc3Rpb25zW2ldKTsKKyAgICAgICAgICAgIHN0cmluZ3MucHVzaF9iYWNrKHN1Z2dl
c3Rpb25zW2ldKTsKICAgICB9IGVsc2UgewogICAgICAgICBmb3IgKGNvbnN0IGNoYXIqKiBpdGVt
ID0gbm9uRWRpdGFibGVNZW51U3RyaW5nczsgKml0ZW07ICsraXRlbSkgCi0gICAgICAgICAgICBz
dHJpbmdzLmFwcGVuZChXZWJTdHJpbmc6OmZyb21VVEY4KCppdGVtKSk7CisgICAgICAgICAgICBz
dHJpbmdzLnB1c2hfYmFjayhXZWJTdHJpbmc6OmZyb21VVEY4KCppdGVtKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHN0cmluZ3M7CkBAIC04NTksNyArODU5LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6
Y29udGV4dENsaWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50
KiByZXMKICAgICBpbml0TW91c2VFdmVudChXZWJJbnB1dEV2ZW50OjpNb3VzZURvd24sIFdlYk1v
dXNlRXZlbnQ6OkJ1dHRvblJpZ2h0LCBsYXN0TW91c2VQb3MsICZldmVudCwgZ2V0Q3VycmVudEV2
ZW50VGltZVNlYyhtX2RlbGVnYXRlKSk7CiAgICAgd2VidmlldygpLT5oYW5kbGVJbnB1dEV2ZW50
KGV2ZW50KTsKIAotI2lmIE9TKFdJTkRPV1MpCisjaWZkZWYgV0lOMzIKICAgICBpbml0TW91c2VF
dmVudChXZWJJbnB1dEV2ZW50OjpNb3VzZVVwLCBXZWJNb3VzZUV2ZW50OjpCdXR0b25SaWdodCwg
bGFzdE1vdXNlUG9zLCAmZXZlbnQsIGdldEN1cnJlbnRFdmVudFRpbWVTZWMobV9kZWxlZ2F0ZSkp
OwogICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVudChldmVudCk7CiAKQEAgLTkxNiw3ICs5
MTYsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24oY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsCiB2b2lkIEV2ZW50U2VuZGVyOjpiZWdpbkRy
YWdXaXRoRmlsZXMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKIHsKICAgICBjdXJyZW50RHJhZ0RhdGEuaW5pdGlhbGl6ZSgpOwotICAgIFZlY3Rv
cjxzdHJpbmc+IGZpbGVzID0gYXJndW1lbnRzWzBdLnRvU3RyaW5nVmVjdG9yKCk7CisgICAgdmVj
dG9yPHN0cmluZz4gZmlsZXMgPSBhcmd1bWVudHNbMF0udG9TdHJpbmdWZWN0b3IoKTsKICAgICBX
ZWJWZWN0b3I8V2ViU3RyaW5nPiBhYnNvbHV0ZUZpbGVuYW1lcyhmaWxlcy5zaXplKCkpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgV2Vi
RHJhZ0RhdGE6Okl0ZW0gaXRlbTsKQEAgLTk1NSw3ICs5NTUsNyBAQCB2b2lkIEV2ZW50U2VuZGVy
OjphZGRUb3VjaFBvaW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW50KiByZQogICAgICAgICAgICAgbG93ZXN0SWQrKzsKICAgICB9CiAgICAgdG91Y2hQb2ludC5p
ZCA9IGxvd2VzdElkOwotICAgIHRvdWNoUG9pbnRzLmFwcGVuZCh0b3VjaFBvaW50KTsKKyAgICB0
b3VjaFBvaW50cy5wdXNoX2JhY2sodG91Y2hQb2ludCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXI6
OmNsZWFyVG91Y2hQb2ludHMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVz
dWx0KQpAQCAtOTY5LDcgKzk2OSw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnJlbGVhc2VUb3VjaFBv
aW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50CiAgICAgcmVz
dWx0LT5zZXROdWxsKCk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBpbmRleCA9IGFyZ3VtZW50c1sw
XS50b0ludDMyKCk7Ci0gICAgQVNTRVJUKGluZGV4IDwgdG91Y2hQb2ludHMuc2l6ZSgpKTsKKyAg
ICBXRUJLSVRfQVNTRVJUKGluZGV4IDwgdG91Y2hQb2ludHMuc2l6ZSgpKTsKIAogICAgIFdlYlRv
dWNoUG9pbnQqIHRvdWNoUG9pbnQgPSAmdG91Y2hQb2ludHNbaW5kZXhdOwogICAgIHRvdWNoUG9p
bnQtPnN0YXRlID0gV2ViVG91Y2hQb2ludDo6U3RhdGVSZWxlYXNlZDsKQEAgLTEwMDEsNyArMTAw
MSw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnVwZGF0ZVRvdWNoUG9pbnQoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAK
ICAgICBjb25zdCB1bnNpZ25lZCBpbmRleCA9IGFyZ3VtZW50c1swXS50b0ludDMyKCk7Ci0gICAg
QVNTRVJUKGluZGV4IDwgdG91Y2hQb2ludHMuc2l6ZSgpKTsKKyAgICBXRUJLSVRfQVNTRVJUKGlu
ZGV4IDwgdG91Y2hQb2ludHMuc2l6ZSgpKTsKIAogICAgIFdlYlBvaW50IHBvc2l0aW9uKGFyZ3Vt
ZW50c1sxXS50b0ludDMyKCksIGFyZ3VtZW50c1syXS50b0ludDMyKCkpOwogICAgIFdlYlRvdWNo
UG9pbnQqIHRvdWNoUG9pbnQgPSAmdG91Y2hQb2ludHNbaW5kZXhdOwpAQCAtMTAxNSw3ICsxMDE1
LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6Y2FuY2VsVG91Y2hQb2ludChjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAgICByZXN1bHQtPnNldE51bGwoKTsKIAog
ICAgIGNvbnN0IHVuc2lnbmVkIGluZGV4ID0gYXJndW1lbnRzWzBdLnRvSW50MzIoKTsKLSAgICBB
U1NFUlQoaW5kZXggPCB0b3VjaFBvaW50cy5zaXplKCkpOworICAgIFdFQktJVF9BU1NFUlQoaW5k
ZXggPCB0b3VjaFBvaW50cy5zaXplKCkpOwogCiAgICAgV2ViVG91Y2hQb2ludCogdG91Y2hQb2lu
dCA9ICZ0b3VjaFBvaW50c1tpbmRleF07CiAgICAgdG91Y2hQb2ludC0+c3RhdGUgPSBXZWJUb3Vj
aFBvaW50OjpTdGF0ZUNhbmNlbGxlZDsKQEAgLTEwMjMsNyArMTAyMyw3IEBAIHZvaWQgRXZlbnRT
ZW5kZXI6OmNhbmNlbFRvdWNoUG9pbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqCiAKIHZvaWQgRXZlbnRTZW5kZXI6OnNlbmRDdXJyZW50VG91Y2hFdmVudChj
b25zdCBXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUpCiB7Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihXZWJUb3VjaEV2ZW50Ojp0b3VjaGVzTGVuZ3RoQ2FwKSA+IHRvdWNoUG9pbnRz
LnNpemUoKSk7CisgICAgV0VCS0lUX0FTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV2ViVG91
Y2hFdmVudDo6dG91Y2hlc0xlbmd0aENhcCkgPiB0b3VjaFBvaW50cy5zaXplKCkpOwogICAgIHdl
YnZpZXcoKS0+bGF5b3V0KCk7CiAKICAgICBXZWJUb3VjaEV2ZW50IHRvdWNoRXZlbnQ7CkBAIC0x
MDM4LDcgKzEwMzgsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpzZW5kQ3VycmVudFRvdWNoRXZlbnQo
Y29uc3QgV2ViSW5wdXRFdmVudDo6VHlwZSB0eXBlKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB0b3VjaFBvaW50cy5zaXplKCk7ICsraSkgewogICAgICAgICBXZWJUb3VjaFBvaW50KiB0
b3VjaFBvaW50ID0gJnRvdWNoUG9pbnRzW2ldOwogICAgICAgICBpZiAodG91Y2hQb2ludC0+c3Rh
dGUgPT0gV2ViVG91Y2hQb2ludDo6U3RhdGVSZWxlYXNlZCkgewotICAgICAgICAgICAgdG91Y2hQ
b2ludHMucmVtb3ZlKGkpOworICAgICAgICAgICAgdG91Y2hQb2ludHMuZXJhc2UodG91Y2hQb2lu
dHMuYmVnaW4oKSArIGkpOwogICAgICAgICAgICAgLS1pOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIHRvdWNoUG9pbnQtPnN0YXRlID0gV2ViVG91Y2hQb2ludDo6U3RhdGVTdGF0aW9uYXJ5
OwpAQCAtMTI2NSw3ICsxMjY1LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZUV2ZW50KFdl
YklucHV0RXZlbnQ6OlR5cGUgdHlwZSwgY29uc3QgQ3BwQXJndW1lbnRMaXN0JgogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCiAgICAg
ZXZlbnQuZ2xvYmFsWCA9IGV2ZW50Lng7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFwcGluZy5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFwcGluZy5jcHAKaW5k
ZXggYzMzOWYyZjJiY2QyNWE4NDA2YzM0NjdmODg0ZThmYmE1MzQ2OTc2NS4uMjExNTg2ZTM1ZTBj
NmY3YTI4NWRjOTZlNjY3NjE5OGZlMDBjNTlkOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1hcHBpbmcuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5n
LmNwcApAQCAtMzEsMTMgKzMxLDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
S2V5Q29kZU1hcHBpbmcuaCIKIAotI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgotCiBuYW1l
c3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIGludCBOYXRpdmVLZXlDb2RlRm9yV2luZG93c0tleUNv
ZGUoaW50IGtleXN5bSkKIHsKLSNpZiBPUyhMSU5VWCkgJiYgVVNFKEdUSykKKyNpZiBkZWZpbmVk
KF9fbGludXhfXykgJiYgVVNFKEdUSykKICAgICAvLyBTZWUgL3Vzci9zaGFyZS9YMTEveGtiL2tl
eWNvZGVzLyoKICAgICBzdGF0aWMgY29uc3QgaW50IGFzY2lpVG9LZXlDb2RlW10gPSB7CiAgICAg
ICAgIDAsCkBAIC0yNDAsOCArMjM4LDcgQEAgaW50IE5hdGl2ZUtleUNvZGVGb3JXaW5kb3dzS2V5
Q29kZShpbnQga2V5c3ltKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAjZWxzZQotICAgIFVO
VVNFRF9QQVJBTShrZXlzeW0pOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBrZXlzeW0gLSBr
ZXlzeW07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNrLmNwcAppbmRl
eCA3ZDQ5ZWQyZmFhMzg4ZWM2OGRlNjA3ZTVhMGUzY2U2MTA1MzFmMjdiLi42MWVlZTBjODA1MjUw
ZWNlNzVkNjg1NzBmYjcwYWYzM2ZjNmFmZjllIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNrLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNo
ZWNrLmNwcApAQCAtMzEsMjAgKzMxLDIyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTW9ja0dyYW1tYXJDaGVjay5oIgogCisjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkNTdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
U3RyaW5nLmgiCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIldlYlRleHRDaGVj
a2luZ1Jlc3VsdC5oIgotCi0jaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KLSNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1
ZGUgPGFsZ29yaXRobT4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFj
ZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAotYm9vbCBNb2NrR3JhbW1hckNo
ZWNrOjpjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBXZWJTdHJpbmcmIHRleHQsIFZlY3RvcjxX
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+KiByZXN1bHRzKQorYm9vbCBNb2NrR3JhbW1hckNoZWNrOjpj
aGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBXZWJTdHJpbmcmIHRleHQsIHZlY3RvcjxXZWJUZXh0
Q2hlY2tpbmdSZXN1bHQ+KiByZXN1bHRzKQogewotICAgIEFTU0VSVChyZXN1bHRzKTsKLSAgICBX
VEY6OlN0cmluZyBzdHJpbmdUZXh0KHRleHQuZGF0YSgpLCB0ZXh0Lmxlbmd0aCgpKTsKLSAgICBp
ZiAoc3RyaW5nVGV4dC5maW5kKGlzQVNDSUlBbHBoYSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pigt
MSkpCisgICAgV0VCS0lUX0FTU0VSVChyZXN1bHRzKTsKKyAgICBzdHJpbmcxNiBzdHJpbmdUZXh0
ID0gdGV4dDsKKyAgICBpZiAoZmluZF9pZihzdHJpbmdUZXh0LmJlZ2luKCksIHN0cmluZ1RleHQu
ZW5kKCksIGlzQVNDSUlBbHBoYSkgPT0gc3RyaW5nVGV4dC5lbmQoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICAvLyBGaW5kIG1hdGNoaW5nIGdyYW1tYXRpY2FsIGVycm9ycyBmcm9tIGtu
b3duIG9uZXMuIFRoaXMgZnVuY3Rpb24gaGFzIHRvCkBAIC02OSwxMCArNzEsMTMgQEAgYm9vbCBN
b2NrR3JhbW1hckNoZWNrOjpjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBXZWJTdHJpbmcmIHRl
eHQsIFZlY3RvcjxXZWJUZXgKICAgICB9OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQVJS
QVlTSVpFX1VOU0FGRShncmFtbWFyRXJyb3JzKTsgKytpKSB7CiAgICAgICAgIGludCBvZmZzZXQg
PSAwOwotICAgICAgICB3aGlsZSAoKG9mZnNldCA9IHN0cmluZ1RleHQuZmluZChncmFtbWFyRXJy
b3JzW2ldLnRleHQsIG9mZnNldCkpICE9IC0xKSB7Ci0gICAgICAgICAgICByZXN1bHRzLT5hcHBl
bmQoV2ViVGV4dENoZWNraW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1R5cGVHcmFtbWFyLCBvZmZz
ZXQgKyBncmFtbWFyRXJyb3JzW2ldLmxvY2F0aW9uLCBncmFtbWFyRXJyb3JzW2ldLmxlbmd0aCkp
OworICAgICAgICBzdHJpbmcxNiBlcnJvcihncmFtbWFyRXJyb3JzW2ldLnRleHQsIGdyYW1tYXJF
cnJvcnNbaV0udGV4dCArIHN0cmxlbihncmFtbWFyRXJyb3JzW2ldLnRleHQpKTsKKyAgICAgICAg
d2hpbGUgKChvZmZzZXQgPSBzdHJpbmdUZXh0LmZpbmQoZXJyb3IsIG9mZnNldCkpICE9IHN0cmlu
ZzE2OjpucG9zKSB7CisgICAgICAgICAgICByZXN1bHRzLT5wdXNoX2JhY2soV2ViVGV4dENoZWNr
aW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1R5cGVHcmFtbWFyLCBvZmZzZXQgKyBncmFtbWFyRXJy
b3JzW2ldLmxvY2F0aW9uLCBncmFtbWFyRXJyb3JzW2ldLmxlbmd0aCkpOwogICAgICAgICAgICAg
b2Zmc2V0ICs9IGdyYW1tYXJFcnJvcnNbaV0ubGVuZ3RoOwogICAgICAgICB9CiAgICAgfQogICAg
IHJldHVybiBmYWxzZTsKIH0KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5oCmluZGV4
IDY0MjcxYjNmYTNjMmMwMWFjMTM2YzhlMTAzMDcxNjE5MjZkM2U5ODMuLmExODNkY2NiMDc0Yzc5
MGJmYWNhYzNmNzc5ODc1ZDlkYTg4MTk5NWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNr
LmgKQEAgLTMxLDggKzMxLDcgQEAKICNpZm5kZWYgTW9ja0dyYW1tYXJDaGVja19oCiAjZGVmaW5l
IE1vY2tHcmFtbWFyQ2hlY2tfaAogCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKQEAgLTQxLDYgKzQwLDggQEAgc3RydWN0IFdlYlRleHRDaGVja2luZ1Jlc3VsdDsK
IAogfQogCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKIC8vIEEgbW9jayBpbXBsZW1lbnRh
dGlvbiBvZiBhIGdyYW1tYXItY2hlY2tlciB1c2VkIGZvciBXZWJLaXQgdGVzdHMuIFRoaXMgY2xh
c3MKIC8vIG9ubHkgaW1wbGVtZW50cyB0aGUgbWluaW1hbCBmdW5jdGlvbmFyaXRpZXMgcmVxdWly
ZWQgYnkgV2ViS2l0IHRlc3RzLCBpLmUuCiAvLyB0aGlzIGNsYXNzIGp1c3QgY29tcGFyZXMgdGhl
IGdpdmVuIHN0cmluZyB3aXRoIGtub3duIGdyYW1tYXIgbWlzdGFrZXMgaW4KQEAgLTQ4LDcgKzQ5
LDkgQEAgc3RydWN0IFdlYlRleHRDaGVja2luZ1Jlc3VsdDsKIC8vIGZvciB3ZWJraXQgdGVzdHMs
IHRoaXMgY2xhc3MgaXMgbm90IHN1aXRhYmxlIGZvciBhbnkgb3RoZXIgdXNhZ2VzLgogY2xhc3Mg
TW9ja0dyYW1tYXJDaGVjayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgY2hlY2tHcmFtbWFy
T2ZTdHJpbmcoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBWZWN0b3I8V2ViS2l0OjpXZWJUZXh0
Q2hlY2tpbmdSZXN1bHQ+Kik7CisgICAgc3RhdGljIGJvb2wgY2hlY2tHcmFtbWFyT2ZTdHJpbmco
Y29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBzdGQ6OnZlY3RvcjxXZWJLaXQ6OldlYlRleHRDaGVj
a2luZ1Jlc3VsdD4qKTsKIH07CiAKK30KKwogI2VuZGlmIC8vIE1vY2tTcGVsbENoZWNrX2gKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01v
Y2tTcGVsbENoZWNrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcAppbmRleCA4MWIzMDg5MmI1ODIwYWNmM2M4YjJhZDc4
ZmU4NDExNmY5MGU4Y2JmLi5mMjczY2IyNzJkYzY5NTc0MjM1ODgxMDc1ZmI2MzRiNTFiOTNjZTli
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9Nb2NrU3BlbGxDaGVjay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suY3BwCkBAIC0zMSwxMyArMzEsMTcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNb2NrU3BlbGxDaGVjay5oIgogCi0jaW5jbHVk
ZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKKyNpbmNs
dWRlIDxwdWJsaWMvV2ViQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAotc3RhdGljIHZvaWQgYXBwZW5kKFdlYlZlY3RvcjxXZWJTdHJp
bmc+KiBkYXRhLCBjb25zdCBXZWJTdHJpbmcmIGl0ZW0pCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5l
ciB7CisKK25hbWVzcGFjZSB7CisKK3ZvaWQgYXBwZW5kKFdlYlZlY3RvcjxXZWJTdHJpbmc+KiBk
YXRhLCBjb25zdCBXZWJTdHJpbmcmIGl0ZW0pCiB7CiAgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4g
cmVzdWx0KGRhdGEtPnNpemUoKSArIDEpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0
YS0+c2l6ZSgpOyArK2kpCkBAIC00NiwxNyArNTAsMTcgQEAgc3RhdGljIHZvaWQgYXBwZW5kKFdl
YlZlY3RvcjxXZWJTdHJpbmc+KiBkYXRhLCBjb25zdCBXZWJTdHJpbmcmIGl0ZW0pCiAgICAgZGF0
YS0+c3dhcChyZXN1bHQpOwogfQogCit9CisKIE1vY2tTcGVsbENoZWNrOjpNb2NrU3BlbGxDaGVj
aygpCiAgICAgOiBtX2luaXRpYWxpemVkKGZhbHNlKSB7IH0KIAogTW9ja1NwZWxsQ2hlY2s6On5N
b2NrU3BlbGxDaGVjaygpIHsgfQogCi1zdGF0aWMgYm9vbCBpc05vdEFTQ0lJQWxwaGEoVUNoYXIg
Y2gpIHsgcmV0dXJuICFpc0FTQ0lJQWxwaGEoY2gpOyB9Ci0KIGJvb2wgTW9ja1NwZWxsQ2hlY2s6
OnNwZWxsQ2hlY2tXb3JkKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50KiBtaXNzcGVsbGVkT2Zm
c2V0LCBpbnQqIG1pc3NwZWxsZWRMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKG1pc3NwZWxsZWRPZmZz
ZXQpOwotICAgIEFTU0VSVChtaXNzcGVsbGVkTGVuZ3RoKTsKKyAgICBXRUJLSVRfQVNTRVJUKG1p
c3NwZWxsZWRPZmZzZXQpOworICAgIFdFQktJVF9BU1NFUlQobWlzc3BlbGxlZExlbmd0aCk7CiAK
ICAgICAvLyBJbml0aWFsaXplIHRoaXMgc3BlbGxjaGVja2VyLgogICAgIGluaXRpYWxpemVJZk5l
ZWRlZCgpOwpAQCAtNjUsMTIgKzY5LDEyIEBAIGJvb2wgTW9ja1NwZWxsQ2hlY2s6OnNwZWxsQ2hl
Y2tXb3JkKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50KiBtaXNzcGVsbGVkT2Zmc2V0CiAgICAg
Km1pc3NwZWxsZWRPZmZzZXQgPSAwOwogICAgICptaXNzcGVsbGVkTGVuZ3RoID0gMDsKIAotICAg
IC8vIENvbnZlcnQgdG8gYSBTdHJpbmcgYmVjYXVzZSB3ZSBzdG9yZSBTdHJpbmcgaW5zdGFuY2Vz
IGluCisgICAgLy8gQ29udmVydCB0byBhIHN0cmluZzE2IGJlY2F1c2Ugd2Ugc3RvcmUgc3RyaW5n
MTYgaW5zdGFuY2VzIGluCiAgICAgLy8gbV9taXNzcGVsbGVkV29yZHMgYW5kIFdlYlN0cmluZyBo
YXMgbm8gZmluZCgpLgotICAgIFN0cmluZyBzdHJpbmdUZXh0KHRleHQuZGF0YSgpLCB0ZXh0Lmxl
bmd0aCgpKTsKKyAgICBzdHJpbmcxNiBzdHJpbmdUZXh0ID0gdGV4dDsKICAgICBpbnQgc2tpcHBl
ZExlbmd0aCA9IDA7CiAKLSAgICB3aGlsZSAoIXN0cmluZ1RleHQuaXNFbXB0eSgpKSB7CisgICAg
d2hpbGUgKCFzdHJpbmdUZXh0LmVtcHR5KCkpIHsKICAgICAgICAgLy8gRXh0cmFjdCB0aGUgZmly
c3QgcG9zc2libGUgRW5nbGlzaCB3b3JkIGZyb20gdGhlIGdpdmVuIHN0cmluZy4KICAgICAgICAg
Ly8gVGhlIGdpdmVuIHN0cmluZyBtYXkgaW5jbHVkZSBub24tQVNDSUkgY2hhcmFjdGVycyBvciBu
dW1iZXJzLiBTbywgd2UKICAgICAgICAgLy8gc2hvdWxkIGZpbHRlciBvdXQgc3VjaCBjaGFyYWN0
ZXJzIGJlZm9yZSBzdGFydCBsb29raW5nIHVwIG91cgpAQCAtNzgsMTIgKzgyLDEzIEBAIGJvb2wg
TW9ja1NwZWxsQ2hlY2s6OnNwZWxsQ2hlY2tXb3JkKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50
KiBtaXNzcGVsbGVkT2Zmc2V0CiAgICAgICAgIC8vIChUaGlzIGlzIGEgc2ltcGxlIHZlcnNpb24g
b2Ygb3VyIFNwZWxsQ2hlY2tXb3JkSXRlcmF0b3IgY2xhc3MuKQogICAgICAgICAvLyBJZiB0aGUg
Z2l2ZW4gc3RyaW5nIGRvZXNuJ3QgaW5jbHVkZSBhbnkgQVNDSUkgY2hhcmFjdGVycywgd2UgY2Fu
IHRyZWF0IHRoZQogICAgICAgICAvLyBzdHJpbmcgYXMgdmFsaWQgb25lLgotICAgICAgICBpbnQg
d29yZE9mZnNldCA9IHN0cmluZ1RleHQuZmluZChpc0FTQ0lJQWxwaGEpOwotICAgICAgICBpZiAo
d29yZE9mZnNldCA9PSAtMSkKKyAgICAgICAgc3RyaW5nMTY6Oml0ZXJhdG9yIGZpcnN0Q2hhciA9
IGZpbmRfaWYoc3RyaW5nVGV4dC5iZWdpbigpLCBzdHJpbmdUZXh0LmVuZCgpLCBpc0FTQ0lJQWxw
aGEpOworICAgICAgICBpZiAoZmlyc3RDaGFyID09IHN0cmluZ1RleHQuZW5kKCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaW50IHdvcmRPZmZzZXQgPSBkaXN0YW5jZShzdHJp
bmdUZXh0LmJlZ2luKCksIGZpcnN0Q2hhcik7CiAgICAgICAgIGludCBtYXhXb3JkTGVuZ3RoID0g
c3RhdGljX2Nhc3Q8aW50PihzdHJpbmdUZXh0Lmxlbmd0aCgpKSAtIHdvcmRPZmZzZXQ7CiAgICAg
ICAgIGludCB3b3JkTGVuZ3RoOwotICAgICAgICBTdHJpbmcgd29yZDsKKyAgICAgICAgc3RyaW5n
MTYgd29yZDsKIAogICAgICAgICAvLyBMb29rIHVwIG91ciBtaXNzcGVsbGVkLXdvcmQgdGFibGUg
dG8gY2hlY2sgaWYgdGhlIGV4dHJhY3RlZCB3b3JkIGlzIGEKICAgICAgICAgLy8ga25vd24gbWlz
c3BlbGxlZCB3b3JkLCBhbmQgcmV0dXJuIHRoZSBvZmZzZXQgYW5kIHRoZSBsZW5ndGggb2YgdGhl
CkBAIC05Miw3ICs5Nyw3IEBAIGJvb2wgTW9ja1NwZWxsQ2hlY2s6OnNwZWxsQ2hlY2tXb3JkKGNv
bnN0IFdlYlN0cmluZyYgdGV4dCwgaW50KiBtaXNzcGVsbGVkT2Zmc2V0CiAgICAgICAgIC8vIG1p
c3NwZWxsZWQtd29yZCB0YWJsZS4pCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9t
aXNzcGVsbGVkV29yZHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIHdvcmRMZW5ndGggPSBz
dGF0aWNfY2FzdDxpbnQ+KG1fbWlzc3BlbGxlZFdvcmRzLmF0KGkpLmxlbmd0aCgpKSA+IG1heFdv
cmRMZW5ndGggPyBtYXhXb3JkTGVuZ3RoIDogc3RhdGljX2Nhc3Q8aW50PihtX21pc3NwZWxsZWRX
b3Jkcy5hdChpKS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICB3b3JkID0gc3RyaW5nVGV4dC5zdWJz
dHJpbmcod29yZE9mZnNldCwgd29yZExlbmd0aCk7CisgICAgICAgICAgICB3b3JkID0gc3RyaW5n
VGV4dC5zdWJzdHIod29yZE9mZnNldCwgd29yZExlbmd0aCk7CiAgICAgICAgICAgICBpZiAod29y
ZCA9PSBtX21pc3NwZWxsZWRXb3Jkcy5hdChpKSAmJiAoc3RhdGljX2Nhc3Q8aW50PihzdHJpbmdU
ZXh0Lmxlbmd0aCgpKSA9PSB3b3JkT2Zmc2V0ICsgd29yZExlbmd0aCB8fCBpc05vdEFTQ0lJQWxw
aGEoc3RyaW5nVGV4dFt3b3JkT2Zmc2V0ICsgd29yZExlbmd0aF0pKSkgewogICAgICAgICAgICAg
ICAgICptaXNzcGVsbGVkT2Zmc2V0ID0gd29yZE9mZnNldCArIHNraXBwZWRMZW5ndGg7CiAgICAg
ICAgICAgICAgICAgKm1pc3NwZWxsZWRMZW5ndGggPSB3b3JkTGVuZ3RoOwpAQCAtMTAzLDExICsx
MDgsMTQgQEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dvcmQoY29uc3QgV2ViU3Ry
aW5nJiB0ZXh0LCBpbnQqIG1pc3NwZWxsZWRPZmZzZXQKICAgICAgICAgaWYgKCptaXNzcGVsbGVk
TGVuZ3RoID4gMCkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGludCB3b3JkRW5kID0g
c3RyaW5nVGV4dC5maW5kKGlzTm90QVNDSUlBbHBoYSwgd29yZE9mZnNldCk7Ci0gICAgICAgIHdv
cmRMZW5ndGggPSB3b3JkRW5kID09IC0xID8gc3RhdGljX2Nhc3Q8aW50PihzdHJpbmdUZXh0Lmxl
bmd0aCgpKSAtIHdvcmRPZmZzZXQgOiB3b3JkRW5kIC0gd29yZE9mZnNldDsKKyAgICAgICAgc3Ry
aW5nMTY6Oml0ZXJhdG9yIGxhc3RDaGFyID0gZmluZF9pZihzdHJpbmdUZXh0LmJlZ2luKCkgKyB3
b3JkT2Zmc2V0LCBzdHJpbmdUZXh0LmVuZCgpLCBpc05vdEFTQ0lJQWxwaGEpOworICAgICAgICBp
ZiAobGFzdENoYXIgPT0gc3RyaW5nVGV4dC5lbmQoKSkKKyAgICAgICAgICAgIHdvcmRMZW5ndGgg
PSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmluZ1RleHQubGVuZ3RoKCkpIC0gd29yZE9mZnNldDsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgd29yZExlbmd0aCA9IGRpc3RhbmNlKGZpcnN0Q2hhciwg
bGFzdENoYXIpOwogCi0gICAgICAgIEFTU0VSVCgwIDwgd29yZE9mZnNldCArIHdvcmRMZW5ndGgp
OwotICAgICAgICBzdHJpbmdUZXh0ID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcod29yZE9mZnNldCAr
IHdvcmRMZW5ndGgpOworICAgICAgICBXRUJLSVRfQVNTRVJUKDAgPCB3b3JkT2Zmc2V0ICsgd29y
ZExlbmd0aCk7CisgICAgICAgIHN0cmluZ1RleHQgPSBzdHJpbmdUZXh0LnN1YnN0cih3b3JkT2Zm
c2V0ICsgd29yZExlbmd0aCk7CiAgICAgICAgIHNraXBwZWRMZW5ndGggKz0gd29yZE9mZnNldCAr
IHdvcmRMZW5ndGg7CiAgICAgfQogCkBAIC0xNzAsNyArMTc4LDcgQEAgYm9vbCBNb2NrU3BlbGxD
aGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKCkKIAogICAgIG1fbWlzc3BlbGxlZFdvcmRzLmNsZWFy
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUobWlzc3BlbGxlZFdvcmRz
KTsgKytpKQotICAgICAgICBtX21pc3NwZWxsZWRXb3Jkcy5hcHBlbmQoU3RyaW5nOjpmcm9tVVRG
OChtaXNzcGVsbGVkV29yZHNbaV0pKTsKKyAgICAgICAgbV9taXNzcGVsbGVkV29yZHMucHVzaF9i
YWNrKHN0cmluZzE2KG1pc3NwZWxsZWRXb3Jkc1tpXSwgbWlzc3BlbGxlZFdvcmRzW2ldICsgc3Ry
bGVuKG1pc3NwZWxsZWRXb3Jkc1tpXSkpKTsKIAogICAgIC8vIE1hcmsgYXMgaW5pdGlhbGl6ZWQg
dG8gcHJldmVudCB0aGlzIG9iamVjdCBmcm9tIGJlaW5nIGluaXRpYWxpemVkIHR3aWNlCiAgICAg
Ly8gb3IgbW9yZS4KQEAgLTE4MCwzICsxODgsNSBAQCBib29sIE1vY2tTcGVsbENoZWNrOjppbml0
aWFsaXplSWZOZWVkZWQoKQogICAgIC8vIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGZhbHNlLgog
ICAgIHJldHVybiBmYWxzZTsKIH0KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmgKaW5kZXgg
ZWUzOGYyMjkyMjI2M2U3ZjMxNjgzOGNkZjg0MzY1ZTQzMGE1ZjFhNi4uNTM1OWM4ODhhYWVkYTg1
NWIyMmUxOTdjNTFkZTg4ODIwOTI5MDZiMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5oCkBA
IC0zMyw4ICszMyw5IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
U3RyaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZlY3Rvci5o
IgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAogLy8g
QSBtb2NrIGltcGxlbWVudGF0aW9uIG9mIGEgc3BlbGwtY2hlY2tlciB1c2VkIGZvciBXZWJLaXQg
dGVzdHMuCiAvLyBUaGlzIGNsYXNzIG9ubHkgaW1wbGVtZW50cyB0aGUgbWluaW1hbCBmdW5jdGlv
bmFyaXRpZXMgcmVxdWlyZWQgYnkgV2ViS2l0CkBAIC03MCwxMCArNzEsMTIgQEAgcHJpdmF0ZToK
ICAgICBib29sIGluaXRpYWxpemVJZk5lZWRlZCgpOwogCiAgICAgLy8gQSB0YWJsZSB0aGF0IGNv
bnNpc3RzIG9mIG1pc3NwZWxsZWQgd29yZHMuCi0gICAgVmVjdG9yPFN0cmluZz4gbV9taXNzcGVs
bGVkV29yZHM7CisgICAgc3RkOjp2ZWN0b3I8c3RyaW5nMTY+IG1fbWlzc3BlbGxlZFdvcmRzOwog
CiAgICAgLy8gQSBmbGFnIHJlcHJlc2VudGluZyB3aGV0aGVyIG9yIG5vdCB0aGlzIG9iamVjdCBp
cyBpbml0aWFsaXplZC4KICAgICBib29sIG1faW5pdGlhbGl6ZWQ7CiB9OwogCit9CisKICNlbmRp
ZiAvLyBNb2NrU3BlbGxDaGVja19oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9TcGVsbENoZWNrQ2xpZW50LmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxsQ2hlY2tDbGllbnQuY3BwCmlu
ZGV4IDZlZjBmNWIxOWZhYWM3YzFiOTNkNjQ2Nzc0YjFiODI2ZTdjNWZjODAuLmIwNTE4MzUyZDQ3
N2JjYjZmNjljY2Y3MjgwNjg1OTMyOGViMGNmZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxsQ2hlY2tDbGllbnQuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxsQ2hlY2tD
bGllbnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nUmVz
dWx0LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOwog
CiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKQEAgLTgxLDcgKzgyLDcgQEAgdm9pZCBTcGVs
bENoZWNrQ2xpZW50OjpzcGVsbENoZWNrKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50JiBtaXNz
cGVsbGVkT2Zmc2V0LAogCiB2b2lkIFNwZWxsQ2hlY2tDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdy
YXBoKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgV2ViVGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaywg
V2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4qIHdlYlJlc3VsdHMpCiB7Ci0gICAgVmVj
dG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKKyAgICB2ZWN0b3I8V2ViVGV4dENo
ZWNraW5nUmVzdWx0PiByZXN1bHRzOwogICAgIGlmIChtYXNrICYgV2ViVGV4dENoZWNraW5nVHlw
ZVNwZWxsaW5nKSB7CiAgICAgICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgICAgICBzaXplX3Qg
bGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKQEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBTcGVsbENoZWNr
Q2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBXZWJTdHJpbmcmIHRleHQsIFdlYlRl
eHRDaGVja2kKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gV2ViVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nOwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gb2Zmc2V0ICsgbWlzc3BlbGxl
ZFBvc2l0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IG1pc3NwZWxsZWRMZW5ndGg7
Ci0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0
cy5wdXNoX2JhY2socmVzdWx0KTsKICAgICAgICAgICAgIG9mZnNldCArPSBtaXNzcGVsbGVkUG9z
aXRpb24gKyBtaXNzcGVsbGVkTGVuZ3RoOwogICAgICAgICB9CiAgICAgfQpAQCAtMTIwLDE5ICsx
MjEsMTkgQEAgdm9pZCBTcGVsbENoZWNrQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlRleHQoY29u
c3QgV2ViU3RyaW5nJiB0ZXh0LCBXZWJUZXh0Q2hlY2sKIAogdm9pZCBTcGVsbENoZWNrQ2xpZW50
OjpmaW5pc2hMYXN0VGV4dENoZWNrKCkKIHsKLSAgICBWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVz
dWx0PiByZXN1bHRzOworICAgIHZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7
CiAgICAgaW50IG9mZnNldCA9IDA7Ci0gICAgU3RyaW5nIHRleHQobV9sYXN0UmVxdWVzdGVkVGV4
dENoZWNrU3RyaW5nLmRhdGEoKSwgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nLmxlbmd0
aCgpKTsKKyAgICBzdHJpbmcxNiB0ZXh0ID0gbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5n
OwogICAgIHdoaWxlICh0ZXh0Lmxlbmd0aCgpKSB7CiAgICAgICAgIGludCBtaXNzcGVsbGVkUG9z
aXRpb24gPSAwOwogICAgICAgICBpbnQgbWlzc3BlbGxlZExlbmd0aCA9IDA7Ci0gICAgICAgIG1f
c3BlbGxjaGVjay5zcGVsbENoZWNrV29yZChXZWJTdHJpbmcodGV4dC5jaGFyYWN0ZXJzKCksIHRl
eHQubGVuZ3RoKCkpLCAmbWlzc3BlbGxlZFBvc2l0aW9uLCAmbWlzc3BlbGxlZExlbmd0aCk7Cisg
ICAgICAgIG1fc3BlbGxjaGVjay5zcGVsbENoZWNrV29yZChXZWJTdHJpbmcodGV4dCksICZtaXNz
cGVsbGVkUG9zaXRpb24sICZtaXNzcGVsbGVkTGVuZ3RoKTsKICAgICAgICAgaWYgKCFtaXNzcGVs
bGVkTGVuZ3RoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIFdlYlZlY3RvcjxXZWJTdHJp
bmc+IHN1Z2dlc3Rpb25zOwotICAgICAgICBtX3NwZWxsY2hlY2suZmlsbFN1Z2dlc3Rpb25MaXN0
KFdlYlN0cmluZyh0ZXh0LmNoYXJhY3RlcnMoKSArIG1pc3NwZWxsZWRQb3NpdGlvbiwgbWlzc3Bl
bGxlZExlbmd0aCksICZzdWdnZXN0aW9ucyk7Ci0gICAgICAgIHJlc3VsdHMuYXBwZW5kKFdlYlRl
eHRDaGVja2luZ1Jlc3VsdChXZWJUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcsIG9mZnNldCArIG1p
c3NwZWxsZWRQb3NpdGlvbiwgbWlzc3BlbGxlZExlbmd0aCwgc3VnZ2VzdGlvbnMuaXNFbXB0eSgp
ID8gV2ViU3RyaW5nKCkgOiBzdWdnZXN0aW9uc1swXSkpOwotICAgICAgICB0ZXh0ID0gdGV4dC5z
dWJzdHJpbmcobWlzc3BlbGxlZFBvc2l0aW9uICsgbWlzc3BlbGxlZExlbmd0aCk7CisgICAgICAg
IG1fc3BlbGxjaGVjay5maWxsU3VnZ2VzdGlvbkxpc3QoV2ViU3RyaW5nKHRleHQuc3Vic3RyKG1p
c3NwZWxsZWRQb3NpdGlvbiwgbWlzc3BlbGxlZExlbmd0aCkpLCAmc3VnZ2VzdGlvbnMpOworICAg
ICAgICByZXN1bHRzLnB1c2hfYmFjayhXZWJUZXh0Q2hlY2tpbmdSZXN1bHQoV2ViVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nLCBvZmZzZXQgKyBtaXNzcGVsbGVkUG9zaXRpb24sIG1pc3NwZWxsZWRM
ZW5ndGgsIHN1Z2dlc3Rpb25zLmlzRW1wdHkoKSA/IFdlYlN0cmluZygpIDogc3VnZ2VzdGlvbnNb
MF0pKTsKKyAgICAgICAgdGV4dCA9IHRleHQuc3Vic3RyKG1pc3NwZWxsZWRQb3NpdGlvbiArIG1p
c3NwZWxsZWRMZW5ndGgpOwogICAgICAgICBvZmZzZXQgKz0gbWlzc3BlbGxlZFBvc2l0aW9uICsg
bWlzc3BlbGxlZExlbmd0aDsKICAgICB9CiAgICAgTW9ja0dyYW1tYXJDaGVjazo6Y2hlY2tHcmFt
bWFyT2ZTdHJpbmcobV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nLCAmcmVzdWx0cyk7CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0Q29tbW9uLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0Q29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFmNzZmODRlMjc2NGUxY2IwYjRiYTQxNzAzOTlj
Y2I3ZGVlNTJkMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RDb21tb24uaApAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBU
ZXN0Q29tbW9uX2gKKyNkZWZpbmUgVGVzdENvbW1vbl9oCisKKyNpbmNsdWRlIDxiYXNlL2NvbXBp
bGVyX3NwZWNpZmljLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbW1vbi5oPgorI2luY2x1ZGUg
PHN0ZGlvLmg+CisKKyNpZiBkZWZpbmVkKFdJTjMyKQorI2RlZmluZSBzbnByaW50ZihzdHIsIHNp
emUsIC4uLikgX3NucHJpbnRmX3Moc3RyLCBzaXplLCBzaXplLCBfX1ZBX0FSR1NfXykKKyNlbmRp
ZgorCitpbmxpbmUgYm9vbCBpc0FTQ0lJQWxwaGEoY2hhciBjaCkgeyByZXR1cm4gKGNoIHwgMHgy
MCkgPj0gJ2EnICYmIChjaCB8IDB4MjApIDw9ICd6JzsgfQorCitpbmxpbmUgYm9vbCBpc05vdEFT
Q0lJQWxwaGEoY2hhciBjaCkgeyByZXR1cm4gIWlzQVNDSUlBbHBoYShjaCk7IH0KKworI2VuZGlm
IC8vIFRlc3RDb21tb25faApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwCmluZGV4IGUzZGNm
ODAyMDUxNmM1YzFiZmUxNWMzMmM2ZDI3NDAxY2U1YjE2MDguLjQ2ZDZhZDA2NWJhMzBhMmE2MWZj
YmUxZWVlODljODQ1MmVmZjU4YmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAKQEAg
LTQ1LDEzICs0NSwxMyBAQCB1c2luZyBXZWJLaXQ6OldlYlZpZXc7CiBuYW1lc3BhY2UgV2ViVGVz
dFJ1bm5lciB7CiAKIFRlc3RJbnRlcmZhY2VzOjpUZXN0SW50ZXJmYWNlcygpCi0gICAgOiBtX3dl
YlZpZXcoMCkKKyAgICA6IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIobmV3IEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKCkpCisgICAgLCBtX2V2ZW50U2VuZGVyKG5ldyBFdmVudFNlbmRlcigpKQor
ICAgICwgbV9nYW1lcGFkQ29udHJvbGxlcihuZXcgR2FtZXBhZENvbnRyb2xsZXIoKSkKKyAgICAs
IG1fdGV4dElucHV0Q29udHJvbGxlcihuZXcgVGV4dElucHV0Q29udHJvbGxlcigpKQorICAgICwg
bV90ZXN0UnVubmVyKG5ldyBUZXN0UnVubmVyKCkpCisgICAgLCBtX3dlYlZpZXcoMCkKIHsKLSAg
ICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKCkpOwotICAgIG1fZXZlbnRTZW5kZXIgPSBhZG9wdFB0cihuZXcgRXZlbnRTZW5k
ZXIoKSk7Ci0gICAgbV9nYW1lcGFkQ29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBHYW1lcGFkQ29u
dHJvbGxlcigpKTsKLSAgICBtX3RleHRJbnB1dENvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgVGV4
dElucHV0Q29udHJvbGxlcigpKTsKLSAgICBtX3Rlc3RSdW5uZXIgPSBhZG9wdFB0cihuZXcgVGVz
dFJ1bm5lcigpKTsKIH0KIAogVGVzdEludGVyZmFjZXM6On5UZXN0SW50ZXJmYWNlcygpCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
SW50ZXJmYWNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvVGVzdEludGVyZmFjZXMuaAppbmRleCBkODM0YzQwYjE2Mjc0MmE2NDg2MWFjZDRjYmM3OGI2
ZWJiZTc0OTI5Li44M2IzOGRiNjgxNzlhZDM4NWUxZjI1MDEwMjU4ZWI1MGM5ZGZkNDkxIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
SW50ZXJmYWNlcy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgVGVzdElu
dGVyZmFjZXNfaAogI2RlZmluZSBUZXN0SW50ZXJmYWNlc19oCiAKLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
YkZyYW1lOwpAQCAtNjUsMTEgKzY1LDExIEBAIHB1YmxpYzoKIAogCiBwcml2YXRlOgotICAgIE93
blB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsK
LSAgICBPd25QdHI8RXZlbnRTZW5kZXI+IG1fZXZlbnRTZW5kZXI7Ci0gICAgT3duUHRyPEdhbWVw
YWRDb250cm9sbGVyPiBtX2dhbWVwYWRDb250cm9sbGVyOwotICAgIE93blB0cjxUZXh0SW5wdXRD
b250cm9sbGVyPiBtX3RleHRJbnB1dENvbnRyb2xsZXI7Ci0gICAgT3duUHRyPFRlc3RSdW5uZXI+
IG1fdGVzdFJ1bm5lcjsKKyAgICBzdGQ6OmF1dG9fcHRyPEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
PiBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOworICAgIHN0ZDo6YXV0b19wdHI8RXZlbnRTZW5k
ZXI+IG1fZXZlbnRTZW5kZXI7CisgICAgc3RkOjphdXRvX3B0cjxHYW1lcGFkQ29udHJvbGxlcj4g
bV9nYW1lcGFkQ29udHJvbGxlcjsKKyAgICBzdGQ6OmF1dG9fcHRyPFRleHRJbnB1dENvbnRyb2xs
ZXI+IG1fdGV4dElucHV0Q29udHJvbGxlcjsKKyAgICBzdGQ6OmF1dG9fcHRyPFRlc3RSdW5uZXI+
IG1fdGVzdFJ1bm5lcjsKICAgICBXZWJLaXQ6OldlYlZpZXcqIG1fd2ViVmlldzsKIH07CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
c3RQbHVnaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvVGVzdFBsdWdpbi5jcHAKaW5kZXggY2NmNjM3ZjM5NjQ3OWRmYmNlOWIxOWVkMmU5NTQ4Zjcy
NTYyZmZhYS4uODRjZjlkM2ZiZDVmMjRjY2M2MWJjMzYzMGQ1M2M3MGMxNjYxMThhMSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBs
dWdpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvVGVzdFBsdWdpbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJUZXN0UGx1Z2luLmgiCiAKKyNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAi
V2ViS2l0LmgiCkBAIC0zNSwxMiArMzYsOSBAQAogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oPgogI2luY2x1ZGUgPHB1
YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFz
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewog
CkBAIC05OSw3ICs5Nyw3IEBAIGNvbnN0IGNoYXIqIHBvaW50U3RhdGUoV2ViVG91Y2hQb2ludDo6
U3RhdGUgc3RhdGUpCiAgICAgICAgIHJldHVybiAiVW5rbm93biI7CiAgICAgfQogCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiAwOwogfQogCkBAIC0xMzQsMTIgKzEzMiw5IEBAIHZvaWQgcHJpbnRFdmVudERldGFp
bHMoV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSwgY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQp
CiAKIFdlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJlcXVlc3RUeXBlIHBhcnNlVG91Y2hF
dmVudFJlcXVlc3RUeXBlKGNvbnN0IFdlYlN0cmluZyYgc3RyaW5nKQogewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgV2ViU3RyaW5nLCBrUHJpbWl0aXZlUmF3LCAoV2ViU3RyaW5nOjpm
cm9tVVRGOCgicmF3IikpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFdlYlN0cmlu
Zywga1ByaW1pdGl2ZVN5bnRoZXRpYywgKFdlYlN0cmluZzo6ZnJvbVVURjgoInN5bnRoZXRpYyIp
KSk7Ci0KLSAgICBpZiAoc3RyaW5nID09IGtQcmltaXRpdmVSYXcpCisgICAgaWYgKHN0cmluZyA9
PSBXZWJTdHJpbmc6OmZyb21VVEY4KCJyYXciKSkKICAgICAgICAgcmV0dXJuIFdlYlBsdWdpbkNv
bnRhaW5lcjo6VG91Y2hFdmVudFJlcXVlc3RUeXBlUmF3OwotICAgIGlmIChzdHJpbmcgPT0ga1By
aW1pdGl2ZVN5bnRoZXRpYykKKyAgICBpZiAoc3RyaW5nID09IFdlYlN0cmluZzo6ZnJvbVVURjgo
InN5bnRoZXRpYyIpKQogICAgICAgICByZXR1cm4gV2ViUGx1Z2luQ29udGFpbmVyOjpUb3VjaEV2
ZW50UmVxdWVzdFR5cGVTeW50aGVzaXplZE1vdXNlOwogICAgIHJldHVybiBXZWJQbHVnaW5Db250
YWluZXI6OlRvdWNoRXZlbnRSZXF1ZXN0VHlwZU5vbmU7CiB9CkBAIC0xNjgsNyArMTYzLDcgQEAg
VGVzdFBsdWdpbjo6VGVzdFBsdWdpbihXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYlBsdWdpblBh
cmFtcyYgcGFyYW1zLCBXZWJUZXN0RGUKICAgICBzdGF0aWMgY29uc3QgV2ViU3RyaW5nIGtBdHRy
aWJ1dGVDYW5Qcm9jZXNzRHJhZyA9IFdlYlN0cmluZzo6ZnJvbVVURjgoImNhbi1wcm9jZXNzLWRy
YWciKTsKICAgICBzdGF0aWMgY29uc3QgV2ViU3RyaW5nIGtBdHRyaWJ1dGVQcmludFVzZXJHZXN0
dXJlU3RhdHVzID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgicHJpbnQtdXNlci1nZXN0dXJlLXN0YXR1
cyIpOwogCi0gICAgQVNTRVJUKHBhcmFtcy5hdHRyaWJ1dGVOYW1lcy5zaXplKCkgPT0gcGFyYW1z
LmF0dHJpYnV0ZVZhbHVlcy5zaXplKCkpOworICAgIFdFQktJVF9BU1NFUlQocGFyYW1zLmF0dHJp
YnV0ZU5hbWVzLnNpemUoKSA9PSBwYXJhbXMuYXR0cmlidXRlVmFsdWVzLnNpemUoKSk7CiAgICAg
c2l6ZV90IHNpemUgPSBwYXJhbXMuYXR0cmlidXRlTmFtZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgYXR0
cmlidXRlTmFtZSA9IHBhcmFtcy5hdHRyaWJ1dGVOYW1lc1tpXTsKQEAgLTIxMiw3ICsyMDcsNyBA
QCBib29sIFRlc3RQbHVnaW46OmluaXRpYWxpemUoV2ViUGx1Z2luQ29udGFpbmVyKiBjb250YWlu
ZXIpCiAgICAgaWYgKCFpbml0U2NlbmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
bV9sYXllciA9IGFkb3B0UHRyKFBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0
KCktPmNyZWF0ZUV4dGVybmFsVGV4dHVyZUxheWVyKHRoaXMpKTsKKyAgICBtX2xheWVyID0gYXV0
b19wdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+KFBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBv
c2l0b3JTdXBwb3J0KCktPmNyZWF0ZUV4dGVybmFsVGV4dHVyZUxheWVyKHRoaXMpKTsKICAgICBt
X2NvbnRhaW5lciA9IGNvbnRhaW5lcjsKICAgICBtX2NvbnRhaW5lci0+c2V0V2ViTGF5ZXIobV9s
YXllci0+bGF5ZXIoKSk7CiAgICAgaWYgKG1fcmVSZXF1ZXN0VG91Y2hFdmVudHMpIHsKQEAgLTIy
OCw3ICsyMjMsNyBAQCB2b2lkIFRlc3RQbHVnaW46OmRlc3Ryb3koKQogewogICAgIGlmIChtX2Nv
bnRhaW5lcikKICAgICAgICAgbV9jb250YWluZXItPnNldFdlYkxheWVyKDApOwotICAgIG1fbGF5
ZXIuY2xlYXIoKTsKKyAgICBtX2xheWVyLnJlc2V0KCk7CiAgICAgZGVzdHJveVNjZW5lKCk7CiAK
ICAgICBkZWxldGUgbV9jb250ZXh0OwpAQCAtMjc1LDcgKzI3MCw3IEBAIFRlc3RQbHVnaW46OlBy
aW1pdGl2ZSBUZXN0UGx1Z2luOjpwYXJzZVByaW1pdGl2ZShjb25zdCBXZWJTdHJpbmcmIHN0cmlu
ZykKICAgICBlbHNlIGlmIChzdHJpbmcgPT0ga1ByaW1pdGl2ZVRyaWFuZ2xlKQogICAgICAgICBw
cmltaXRpdmUgPSBQcmltaXRpdmVUcmlhbmdsZTsKICAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIHByaW1pdGl2ZTsKIH0KIApAQCAtMjk0LDcgKzI4OSw3IEBAIHZvaWQgVGVzdFBsdWdp
bjo6cGFyc2VDb2xvcihjb25zdCBXZWJTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgY29sb3JbM10p
CiAgICAgZWxzZSBpZiAoc3RyaW5nID09ICJibHVlIikKICAgICAgICAgY29sb3JbMl0gPSAyNTU7
CiAgICAgZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBmbG9hdCBUZXN0UGx1Z2luOjpwYXJzZU9wYWNp
dHkoY29uc3QgV2ViU3RyaW5nJiBzdHJpbmcpCkBAIC0zNjEsMTQgKzM1NiwxNCBAQCB2b2lkIFRl
c3RQbHVnaW46OmRlc3Ryb3lTY2VuZSgpCiAKIGJvb2wgVGVzdFBsdWdpbjo6aW5pdFByb2dyYW0o
KQogewotICAgIGNvbnN0IENTdHJpbmcgdmVydGV4U291cmNlKAorICAgIGNvbnN0IHN0cmluZyB2
ZXJ0ZXhTb3VyY2UoCiAgICAgICAgICJhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsgIFxuIgogICAg
ICAgICAidm9pZCBtYWluKCkgeyAgICAgICAgICAgICBcbiIKICAgICAgICAgIiAgZ2xfUG9zaXRp
b24gPSBwb3NpdGlvbjsgXG4iCiAgICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgIFxu
IgogICAgICk7CiAKLSAgICBjb25zdCBDU3RyaW5nIGZyYWdtZW50U291cmNlKAorICAgIGNvbnN0
IHN0cmluZyBmcmFnbWVudFNvdXJjZSgKICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OyBcbiIKICAgICAgICAgInVuaWZvcm0gdmVjNCBjb2xvcjsgICAgICBcbiIKICAgICAgICAgInZv
aWQgbWFpbigpIHsgICAgICAgICAgICBcbiIKQEAgLTM4Nyw3ICszODIsNyBAQCBib29sIFRlc3RQ
bHVnaW46OmluaXRQcm9ncmFtKCkKIAogYm9vbCBUZXN0UGx1Z2luOjppbml0UHJpbWl0aXZlKCkK
IHsKLSAgICBBU1NFUlQobV9zY2VuZS5wcmltaXRpdmUgPT0gUHJpbWl0aXZlVHJpYW5nbGUpOwor
ICAgIFdFQktJVF9BU1NFUlQobV9zY2VuZS5wcmltaXRpdmUgPT0gUHJpbWl0aXZlVHJpYW5nbGUp
OwogCiAgICAgbV9zY2VuZS52Ym8gPSBtX2NvbnRleHQtPmNyZWF0ZUJ1ZmZlcigpOwogICAgIGlm
ICghbV9zY2VuZS52Ym8pCkBAIC00MDUsOSArNDAwLDkgQEAgYm9vbCBUZXN0UGx1Z2luOjppbml0
UHJpbWl0aXZlKCkKIAogdm9pZCBUZXN0UGx1Z2luOjpkcmF3UHJpbWl0aXZlKCkKIHsKLSAgICBB
U1NFUlQobV9zY2VuZS5wcmltaXRpdmUgPT0gUHJpbWl0aXZlVHJpYW5nbGUpOwotICAgIEFTU0VS
VChtX3NjZW5lLnZibyk7Ci0gICAgQVNTRVJUKG1fc2NlbmUucHJvZ3JhbSk7CisgICAgV0VCS0lU
X0FTU0VSVChtX3NjZW5lLnByaW1pdGl2ZSA9PSBQcmltaXRpdmVUcmlhbmdsZSk7CisgICAgV0VC
S0lUX0FTU0VSVChtX3NjZW5lLnZibyk7CisgICAgV0VCS0lUX0FTU0VSVChtX3NjZW5lLnByb2dy
YW0pOwogCiAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1fc2NlbmUucHJvZ3JhbSk7CiAKQEAg
LTQyMyw3ICs0MTgsNyBAQCB2b2lkIFRlc3RQbHVnaW46OmRyYXdQcmltaXRpdmUoKQogICAgIG1f
Y29udGV4dC0+ZHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOwogfQogCi11bnNpZ25lZCBU
ZXN0UGx1Z2luOjpsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUsIGNvbnN0IENTdHJpbmcmIHNvdXJj
ZSkKK3Vuc2lnbmVkIFRlc3RQbHVnaW46OmxvYWRTaGFkZXIodW5zaWduZWQgdHlwZSwgY29uc3Qg
c3RyaW5nJiBzb3VyY2UpCiB7CiAgICAgdW5zaWduZWQgc2hhZGVyID0gbV9jb250ZXh0LT5jcmVh
dGVTaGFkZXIodHlwZSk7CiAgICAgaWYgKHNoYWRlcikgewpAQCAtNDQwLDcgKzQzNSw3IEBAIHVu
c2lnbmVkIFRlc3RQbHVnaW46OmxvYWRTaGFkZXIodW5zaWduZWQgdHlwZSwgY29uc3QgQ1N0cmlu
ZyYgc291cmNlKQogICAgIHJldHVybiBzaGFkZXI7CiB9CiAKLXVuc2lnbmVkIFRlc3RQbHVnaW46
OmxvYWRQcm9ncmFtKGNvbnN0IENTdHJpbmcmIHZlcnRleFNvdXJjZSwgY29uc3QgQ1N0cmluZyYg
ZnJhZ21lbnRTb3VyY2UpCit1bnNpZ25lZCBUZXN0UGx1Z2luOjpsb2FkUHJvZ3JhbShjb25zdCBz
dHJpbmcmIHZlcnRleFNvdXJjZSwgY29uc3Qgc3RyaW5nJiBmcmFnbWVudFNvdXJjZSkKIHsKICAg
ICB1bnNpZ25lZCB2ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVyKEdMX1ZFUlRFWF9TSEFERVIsIHZl
cnRleFNvdXJjZSk7CiAgICAgdW5zaWduZWQgZnJhZ21lbnRTaGFkZXIgPSBsb2FkU2hhZGVyKEdM
X0ZSQUdNRU5UX1NIQURFUiwgZnJhZ21lbnRTb3VyY2UpOwpAQCAtNTMzLDcgKzUyOCw3IEBAIGJv
b2wgVGVzdFBsdWdpbjo6aGFuZGxlRHJhZ1N0YXR1c1VwZGF0ZShXZWJEcmFnU3RhdHVzIGRyYWdT
dGF0dXMsIGNvbnN0IFdlYkRyYWdECiAgICAgICAgIGRyYWdTdGF0dXNOYW1lID0gIkRyYWdEcm9w
IjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJEcmFnU3RhdHVzVW5rbm93bjoKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9CiAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0ZDo6c3RyaW5nKCJQ
bHVnaW4gcmVjZWl2ZWQgZXZlbnQ6ICIpICsgZHJhZ1N0YXR1c05hbWUgKyAiXG4iKTsKICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmgKaW5kZXggMWUxMDBkYWU5MWZjMDJjMGQxMDk5
MmQ1NzZjODQyMGIwYWQ0ZTQ0Ni4uNTNiMjJlMTFiYzY2YmQ1MWZhNTMzMjIzZTI4ZjNlNTNkZDIw
Yjg5YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdFBsdWdpbi5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uaApAQCAtMjgsOSArMjgsMTAgQEAKIAogI2luY2x1ZGUg
IldlYlBsdWdpbi5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lci5oIgorI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaD4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQuaD4KLSNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8c3RyaW5nPgogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1
bm5lciB7CiAKQEAgLTEyNCw4ICsxMjUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgaW5pdFByb2dy
YW0oKTsKICAgICBib29sIGluaXRQcmltaXRpdmUoKTsKICAgICB2b2lkIGRyYXdQcmltaXRpdmUo
KTsKLSAgICB1bnNpZ25lZCBsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUsIGNvbnN0IFdURjo6Q1N0
cmluZyYgc291cmNlKTsKLSAgICB1bnNpZ25lZCBsb2FkUHJvZ3JhbShjb25zdCBXVEY6OkNTdHJp
bmcmIHZlcnRleFNvdXJjZSwgY29uc3QgV1RGOjpDU3RyaW5nJiBmcmFnbWVudFNvdXJjZSk7Cisg
ICAgdW5zaWduZWQgbG9hZFNoYWRlcih1bnNpZ25lZCB0eXBlLCBjb25zdCBzdGQ6OnN0cmluZyYg
c291cmNlKTsKKyAgICB1bnNpZ25lZCBsb2FkUHJvZ3JhbShjb25zdCBzdGQ6OnN0cmluZyYgdmVy
dGV4U291cmNlLCBjb25zdCBzdGQ6OnN0cmluZyYgZnJhZ21lbnRTb3VyY2UpOwogCiAgICAgV2Vi
S2l0OjpXZWJGcmFtZSogbV9mcmFtZTsKICAgICBXZWJUZXN0RGVsZWdhdGUqIG1fZGVsZWdhdGU7
CkBAIC0xMzYsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2NvbG9yVGV4dHVy
ZTsKICAgICB1bnNpZ25lZCBtX2ZyYW1lYnVmZmVyOwogICAgIFNjZW5lIG1fc2NlbmU7Ci0gICAg
T3duUHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1fbGF5ZXI7CisgICAgc3Rk
OjphdXRvX3B0cjxXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyPiBtX2xheWVyOwogCiAg
ICAgV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXI6OlRvdWNoRXZlbnRSZXF1ZXN0VHlwZSBtX3Rv
dWNoRXZlbnRSZXF1ZXN0OwogICAgIC8vIFJlcXVlc3RzIHRvdWNoIGV2ZW50cyBmcm9tIHRoZSBX
ZWJQbHVnaW5Db250YWluZXJJbXBsIG11bHRpcGxlIHRpbWVzIHRvIHRpY2tsZSB3ZWJraXQub3Jn
L2IvMTA4MzgxCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDg5OTAxMmIzMmFjMmIxNWFlNWEw
NjBkZTdjMmRlYzM1NGQzYzUzODguLmRhYWM1MjEyYjI4YjM5YWI3ZjQ0MzZhNmMwM2I2MGE5ODEx
MWM2OGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCkBAIC01NSwxMiArNTUsMTIgQEAKICNpbmNs
dWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViV29ya2VySW5mby5oIgogI2luY2x1ZGUgInY4
L2luY2x1ZGUvdjguaCIKKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJEYXRhLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlBvaW50Lmg+Ci0j
aW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKLSNpZiBPUyhMSU5VWCkgfHwgT1MoQU5EUk9JRCkKKyNpZiBkZWZpbmVkKF9fbGludXhf
XykgfHwgZGVmaW5lZChBTkRST0lEKQogI2luY2x1ZGUgImxpbnV4L1dlYkZvbnRSZW5kZXJpbmcu
aCIKICNlbmRpZgogCkBAIC04MywyMiArODMsMjAgQEAgcHVibGljOgogCiBjbGFzcyBJbnZva2VD
YWxsYmFja1Rhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxUZXN0UnVubmVyPiB7CiBwdWJsaWM6
Ci0gICAgSW52b2tlQ2FsbGJhY2tUYXNrKFRlc3RSdW5uZXIqIG9iamVjdCwgUGFzc093bkFycmF5
UHRyPENwcFZhcmlhbnQ+IGNhbGxiYWNrQXJndW1lbnRzLCB1aW50MzJfdCBudW1iZXJPZkFyZ3Vt
ZW50cykKKyAgICBJbnZva2VDYWxsYmFja1Rhc2soVGVzdFJ1bm5lciogb2JqZWN0LCBhdXRvX3B0
cjxDcHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cykKICAgICAgICAgOiBXZWJNZXRob2RUYXNr
PFRlc3RSdW5uZXI+KG9iamVjdCkKICAgICAgICAgLCBtX2NhbGxiYWNrQXJndW1lbnRzKGNhbGxi
YWNrQXJndW1lbnRzKQotICAgICAgICAsIG1fbnVtYmVyT2ZBcmd1bWVudHMobnVtYmVyT2ZBcmd1
bWVudHMpCiAgICAgewogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkKICAg
ICB7CiAgICAgICAgIENwcFZhcmlhbnQgaW52b2tlUmVzdWx0OwotICAgICAgICBtX2NhbGxiYWNr
QXJndW1lbnRzWzBdLmludm9rZURlZmF1bHQobV9jYWxsYmFja0FyZ3VtZW50cy5nZXQoKSwgbV9u
dW1iZXJPZkFyZ3VtZW50cywgaW52b2tlUmVzdWx0KTsKKyAgICAgICAgbV9jYWxsYmFja0FyZ3Vt
ZW50cy0+aW52b2tlRGVmYXVsdChtX2NhbGxiYWNrQXJndW1lbnRzLmdldCgpLCAxLCBpbnZva2VS
ZXN1bHQpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBPd25BcnJheVB0cjxDcHBWYXJpYW50PiBt
X2NhbGxiYWNrQXJndW1lbnRzOwotICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZBcmd1bWVudHM7Cisg
ICAgYXV0b19wdHI8Q3BwVmFyaWFudD4gbV9jYWxsYmFja0FyZ3VtZW50czsKIH07CiAKIH0KQEAg
LTExMyw3ICsxMTEsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dvcmtT
b29uKCkKICAgICBpZiAobV9jb250cm9sbGVyLT50b3BMb2FkaW5nRnJhbWUoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKCFtX3F1ZXVlLmlzRW1wdHkoKSkgeworICAgIGlmICghbV9xdWV1
ZS5lbXB0eSgpKSB7CiAgICAgICAgIC8vIFdlIGRlbGF5IHByb2Nlc3NpbmcgcXVldWVkIHdvcmsg
dG8gYXZvaWQgcmVjdXJzaW9uIHByb2JsZW1zLgogICAgICAgICBtX2NvbnRyb2xsZXItPm1fZGVs
ZWdhdGUtPnBvc3RUYXNrKG5ldyBXb3JrUXVldWVUYXNrKHRoaXMpKTsKICAgICB9IGVsc2UgaWYg
KCFtX2NvbnRyb2xsZXItPm1fd2FpdFVudGlsRG9uZSkKQEAgLTEyMyw5ICsxMjEsMTAgQEAgdm9p
ZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6OnByb2Nlc3NXb3JrU29vbigpCiB2b2lkIFRlc3RSdW5u
ZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dvcmsoKQogewogICAgIC8vIFF1aXQgZG9pbmcgd29yayBv
bmNlIGEgbG9hZCBpcyBpbiBwcm9ncmVzcy4KLSAgICB3aGlsZSAoIW1fcXVldWUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGJvb2wgc3RhcnRlZExvYWQgPSBtX3F1ZXVlLmZpcnN0KCktPnJ1bihtX2Nv
bnRyb2xsZXItPm1fZGVsZWdhdGUsIG1fY29udHJvbGxlci0+bV93ZWJWaWV3KTsKLSAgICAgICAg
ZGVsZXRlIG1fcXVldWUudGFrZUZpcnN0KCk7CisgICAgd2hpbGUgKCFtX3F1ZXVlLmVtcHR5KCkp
IHsKKyAgICAgICAgYm9vbCBzdGFydGVkTG9hZCA9IG1fcXVldWUuZnJvbnQoKS0+cnVuKG1fY29u
dHJvbGxlci0+bV9kZWxlZ2F0ZSwgbV9jb250cm9sbGVyLT5tX3dlYlZpZXcpOworICAgICAgICBk
ZWxldGUgbV9xdWV1ZS5mcm9udCgpOworICAgICAgICBtX3F1ZXVlLnBvcF9mcm9udCgpOwogICAg
ICAgICBpZiAoc3RhcnRlZExvYWQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTM3
LDggKzEzNiwxMCBAQCB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dvcmsoKQog
dm9pZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6OnJlc2V0KCkKIHsKICAgICBtX2Zyb3plbiA9IGZh
bHNlOwotICAgIHdoaWxlICghbV9xdWV1ZS5pc0VtcHR5KCkpCi0gICAgICAgIGRlbGV0ZSBtX3F1
ZXVlLnRha2VGaXJzdCgpOworICAgIHdoaWxlICghbV9xdWV1ZS5lbXB0eSgpKSB7CisgICAgICAg
IGRlbGV0ZSBtX3F1ZXVlLmZyb250KCk7CisgICAgICAgIG1fcXVldWUucG9wX2Zyb250KCk7Cisg
ICAgfQogfQogCiB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6YWRkV29yayhXb3JrSXRlbSog
d29yaykKQEAgLTE0Nyw3ICsxNDgsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6YWRk
V29yayhXb3JrSXRlbSogd29yaykKICAgICAgICAgZGVsZXRlIHdvcms7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgbV9xdWV1ZS5hcHBlbmQod29yayk7CisgICAgbV9xdWV1ZS5wdXNoX2Jh
Y2sod29yayk7CiB9CiAKIApAQCAtMTU2LDggKzE1Nyw4IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5u
ZXIoKQogICAgICwgbV93b3JrUXVldWUodGhpcykKICAgICAsIG1fZGVsZWdhdGUoMCkKICAgICAs
IG1fd2ViVmlldygwKQotICAgICwgbV9pbnRlbnRDbGllbnQoYWRvcHRQdHIobmV3IEVtcHR5V2Vi
RGVsaXZlcmVkSW50ZW50Q2xpZW50KSkKLSAgICAsIG1fd2ViUGVybWlzc2lvbnMoYWRvcHRQdHIo
bmV3IFdlYlBlcm1pc3Npb25zKSkKKyAgICAsIG1faW50ZW50Q2xpZW50KG5ldyBFbXB0eVdlYkRl
bGl2ZXJlZEludGVudENsaWVudCkKKyAgICAsIG1fd2ViUGVybWlzc2lvbnMobmV3IFdlYlBlcm1p
c3Npb25zKQogewogICAgIC8vIEluaXRpYWxpemUgdGhlIG1hcCB0aGF0IGFzc29jaWF0ZXMgbWV0
aG9kcyBvZiB0aGlzIGNsYXNzIHdpdGggdGhlIG5hbWVzCiAgICAgLy8gdGhleSB3aWxsIHVzZSB3
aGVuIGNhbGxlZCBieSBKYXZhU2NyaXB0LiBUaGUgYWN0dWFsIGJpbmRpbmcgb2YgdGhvc2UKQEAg
LTIxNSwxMyArMjE2LDExIEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRNZXRo
b2QoInNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCIsICZUZXN0UnVubmVyOjpzZXRTbWFydElu
c2VydERlbGV0ZUVuYWJsZWQpOwogICAgIGJpbmRNZXRob2QoInNldFNlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQiLCAmVGVzdFJ1bm5lcjo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNl
RW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0RldmljZU9yaWVudGF0aW9uIiwgJlRl
c3RSdW5uZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik7Ci0jaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKICAgICBiaW5kTWV0aG9kKCJkaWRBY3F1aXJlUG9pbnRlckxvY2siLCAmVGVzdFJ1bm5l
cjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKTsKICAgICBiaW5kTWV0aG9kKCJkaWRMb3NlUG9pbnRl
ckxvY2siLCAmVGVzdFJ1bm5lcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKTsKICAgICBiaW5kTWV0aG9k
KCJkaWROb3RBY3F1aXJlUG9pbnRlckxvY2siLCAmVGVzdFJ1bm5lcjo6ZGlkTm90QWNxdWlyZVBv
aW50ZXJMb2NrKTsKICAgICBiaW5kTWV0aG9kKCJzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25kQXN5
bmNocm9ub3VzbHkiLCAmVGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5j
aHJvbm91c2x5KTsKICAgICBiaW5kTWV0aG9kKCJzZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hy
b25vdXNseSIsICZUZXN0UnVubmVyOjpzZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNs
eSk7Ci0jZW5kaWYKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgbW9kaWZ5IFdlYlByZWZlcmVuY2Vz
LgogICAgIGJpbmRNZXRob2QoInNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCIsICZUZXN0UnVubmVy
OjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQpOwpAQCAtMjczLDggKzI3Miw4IEBAIFRlc3RSdW5u
ZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVzdFJldHVy
bnNOdWxsIiwgJlRlc3RSdW5uZXI6OnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKTsKICAg
ICBiaW5kTWV0aG9kKCJzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QiLCAm
VGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0KTsKIAot
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW50
ZXJhY3Qgd2l0aCB0aGUgV2ViVGVzdFByb3h5LgorI2lmIEVOQUJMRV9XRUJfSU5URU5UUwogICAg
IGJpbmRNZXRob2QoInNlbmRXZWJJbnRlbnRSZXNwb25zZSIsICZUZXN0UnVubmVyOjpzZW5kV2Vi
SW50ZW50UmVzcG9uc2UpOwogICAgIGJpbmRNZXRob2QoImRlbGl2ZXJXZWJJbnRlbnQiLCAmVGVz
dFJ1bm5lcjo6ZGVsaXZlcldlYkludGVudCk7CiAjZW5kaWYKQEAgLTI5NCwxOSArMjkzLDEzIEBA
IFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRNZXRob2QoInNldEdlb2xvY2F0aW9u
UGVybWlzc2lvbiIsICZUZXN0UnVubmVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24pOwogICAg
IGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvciIs
ICZUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3Ip
OwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uIiwgJlRlc3RSdW5u
ZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKTsKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKICAgICBiaW5kTWV0aG9kKCJncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24iLCAmVGVz
dFJ1bm5lcjo6Z3JhbnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKTsKICAgICBiaW5kTWV0aG9k
KCJzaW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrIiwgJlRlc3RSdW5uZXI6OnNpbXVs
YXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2spOwotI2VuZGlmCi0jaWYgRU5BQkxFKElOUFVU
X1NQRUVDSCkKICAgICBiaW5kTWV0aG9kKCJhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQiLCAmVGVz
dFJ1bm5lcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KTsKICAgICBiaW5kTWV0aG9kKCJzZXRN
b2NrU3BlZWNoSW5wdXREdW1wUmVjdCIsICZUZXN0UnVubmVyOjpzZXRNb2NrU3BlZWNoSW5wdXRE
dW1wUmVjdCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQogICAgIGJpbmRN
ZXRob2QoImFkZE1vY2tTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCIsICZUZXN0UnVubmVyOjphZGRN
b2NrU3BlZWNoUmVjb2duaXRpb25SZXN1bHQpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tTcGVl
Y2hSZWNvZ25pdGlvbkVycm9yIiwgJlRlc3RSdW5uZXI6OnNldE1vY2tTcGVlY2hSZWNvZ25pdGlv
bkVycm9yKTsKICAgICBiaW5kTWV0aG9kKCJ3YXNNb2NrU3BlZWNoUmVjb2duaXRpb25BYm9ydGVk
IiwgJlRlc3RSdW5uZXI6Ondhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQpOwotI2VuZGlm
CiAgICAgYmluZE1ldGhvZCgiZGlzcGxheSIsICZUZXN0UnVubmVyOjpkaXNwbGF5KTsKICAgICBi
aW5kTWV0aG9kKCJkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24iLCAmVGVzdFJ1bm5lcjo6ZGlzcGxh
eUludmFsaWRhdGVkUmVnaW9uKTsKIApAQCAtMzIxLDExICszMTQsOSBAQCBUZXN0UnVubmVyOjpU
ZXN0UnVubmVyKCkKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIHN0dWJzLgogICAgIGJpbmRN
ZXRob2QoImR1bXBEYXRhYmFzZUNhbGxiYWNrcyIsICZUZXN0UnVubmVyOjpub3RJbXBsZW1lbnRl
ZCk7Ci0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgYmluZE1ldGhvZCgiZGVueVdlYk5v
dGlmaWNhdGlvblBlcm1pc3Npb24iLCAmVGVzdFJ1bm5lcjo6bm90SW1wbGVtZW50ZWQpOwogICAg
IGJpbmRNZXRob2QoInJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zIiwgJlRlc3RS
dW5uZXI6Om5vdEltcGxlbWVudGVkKTsKICAgICBiaW5kTWV0aG9kKCJzaW11bGF0ZVdlYk5vdGlm
aWNhdGlvbkNsaWNrIiwgJlRlc3RSdW5uZXI6Om5vdEltcGxlbWVudGVkKTsKLSNlbmRpZgogICAg
IGJpbmRNZXRob2QoInNldEljb25EYXRhYmFzZUVuYWJsZWQiLCAmVGVzdFJ1bm5lcjo6bm90SW1w
bGVtZW50ZWQpOwogICAgIGJpbmRNZXRob2QoInNldFNjcm9sbGJhclBvbGljeSIsICZUZXN0UnVu
bmVyOjpub3RJbXBsZW1lbnRlZCk7CiAgICAgYmluZE1ldGhvZCgiY2xlYXJBbGxBcHBsaWNhdGlv
bkNhY2hlcyIsICZUZXN0UnVubmVyOjpub3RJbXBsZW1lbnRlZCk7CkBAIC0zNjYsNyArMzU3LDcg
QEAgdm9pZCBUZXN0UnVubmVyOjpyZXNldCgpCiAgICAgaWYgKG1fd2ViVmlldykgewogICAgICAg
ICBtX3dlYlZpZXctPnNldFpvb21MZXZlbChmYWxzZSwgMCk7CiAgICAgICAgIG1fd2ViVmlldy0+
c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKHRydWUpOwotI2lmICFPUyhEQVJXSU4pICYm
ICFPUyhXSU5ET1dTKSAvLyBBY3R1YWxseSwgVE9PTEtJVF9HVEsKKyNpZiAhZGVmaW5lZChfX0FQ
UExFX18pICYmICFkZWZpbmVkKFdJTjMyKSAvLyBBY3R1YWxseSwgVE9PTEtJVF9HVEsKICAgICAg
ICAgLy8gKENvbnN0YW50cyBjb3BpZWQgYmVjYXVzZSB3ZSBjYW4ndCBkZXBlbmQgb24gdGhlIGhl
YWRlciB0aGF0IGRlZmluZWQKICAgICAgICAgLy8gdGhlbSBmcm9tIHRoaXMgZmlsZS4pCiAgICAg
ICAgIG1fd2ViVmlldy0+c2V0U2VsZWN0aW9uQ29sb3JzKDB4ZmYxZTkwZmYsIDB4ZmYwMDAwMDAs
IDB4ZmZjOGM4YzgsIDB4ZmYzMjMyMzIpOwpAQCAtMzgxLDcgKzM3Miw3IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6cmVzZXQoKQogICAgIG1fcG9saWN5RGVsZWdhdGVTaG91bGROb3RpZnlEb25lID0gZmFs
c2U7CiAKICAgICBXZWJTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3Rz
KCk7Ci0jaWYgT1MoTElOVVgpIHx8IE9TKEFORFJPSUQpCisjaWYgZGVmaW5lZChfX2xpbnV4X18p
IHx8IGRlZmluZWQoQU5EUk9JRCkKICAgICBXZWJGb250UmVuZGVyaW5nOjpzZXRTdWJwaXhlbFBv
c2l0aW9uaW5nKGZhbHNlKTsKICNlbmRpZgogCkBAIC00MjAsNyArNDExLDcgQEAgdm9pZCBUZXN0
UnVubmVyOjpyZXNldCgpCiAgICAgbV9zaG91bGRCbG9ja1JlZGlyZWN0cyA9IGZhbHNlOwogICAg
IG1fd2lsbFNlbmRSZXF1ZXN0U2hvdWxkUmV0dXJuTnVsbCA9IGZhbHNlOwogICAgIG1fc21hcnRJ
bnNlcnREZWxldGVFbmFibGVkID0gdHJ1ZTsKLSNpZiBPUyhXSU5ET1dTKQorI2lmZGVmIFdJTjMy
CiAgICAgbV9zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gdHJ1ZTsKICNlbHNlCiAg
ICAgbV9zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gZmFsc2U7CkBAIC02MzYsNyAr
NjI3LDcgQEAgV2ViRnJhbWUqIFRlc3RSdW5uZXI6OnRvcExvYWRpbmdGcmFtZSgpIGNvbnN0CiAK
IHZvaWQgVGVzdFJ1bm5lcjo6cG9saWN5RGVsZWdhdGVEb25lKCkKIHsKLSAgICBBU1NFUlQobV93
YWl0VW50aWxEb25lKTsKKyAgICBXRUJLSVRfQVNTRVJUKG1fd2FpdFVudGlsRG9uZSk7CiAgICAg
bV9kZWxlZ2F0ZS0+dGVzdEZpbmlzaGVkKCk7CiAgICAgbV93YWl0VW50aWxEb25lID0gZmFsc2U7
CiB9CkBAIC0xMzMxLDcgKzEzMjIsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OmZpbmRTdHJpbmcoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdAogICAgIFdl
YkZpbmRPcHRpb25zIGZpbmRPcHRpb25zOwogICAgIGJvb2wgd3JhcEFyb3VuZCA9IGZhbHNlOwog
ICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID49IDIpIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6c3Ry
aW5nPiBvcHRpb25zQXJyYXkgPSBhcmd1bWVudHNbMV0udG9TdHJpbmdWZWN0b3IoKTsKKyAgICAg
ICAgdmVjdG9yPHN0cmluZz4gb3B0aW9uc0FycmF5ID0gYXJndW1lbnRzWzFdLnRvU3RyaW5nVmVj
dG9yKCk7CiAgICAgICAgIGZpbmRPcHRpb25zLm1hdGNoQ2FzZSA9IHRydWU7CiAKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcHRpb25zQXJyYXkuc2l6ZSgpOyArK2kpIHsKQEAgLTE0
MTEsNyArMTQwMiw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2VsZWN0aW9uQXNNYXJrdXAoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqCiAKIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0VGV4dFN1YnBpeGVsUG9zaXRpb25pbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1
bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSNpZiBPUyhMSU5VWCkgfHwgT1MoQU5EUk9J
RCkKKyNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChBTkRST0lEKQogICAgIC8vIFNp
bmNlIEZvbnRDb25maWcgZG9lc24ndCBwcm92aWRlIGEgdmFyaWFibGUgdG8gY29udHJvbCBzdWJw
aXhlbCBwb3NpdGlvbmluZywgd2UnbGwgZmFsbCBiYWNrCiAgICAgLy8gdG8gc2V0dGluZyBpdCBn
bG9iYWxseSBmb3IgYWxsIGZvbnRzLgogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBh
cmd1bWVudHNbMF0uaXNCb29sKCkpCkBAIC0xNjgwLDcgKzE2NzEsNyBAQCB2b2lkIFRlc3RSdW5u
ZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywg
Q3BwVmFyaWFudAogICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0U2hvdWxkUmVzcGVjdEltYWdl
T3JpZW50YXRpb24iKQogICAgICAgICBwcmVmcy0+c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24gPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKICAgICBlbHNlIGlmIChrZXkgPT0gIldlYktp
dFdlYkF1ZGlvRW5hYmxlZCIpCi0gICAgICAgIEFTU0VSVChjcHBWYXJpYW50VG9Cb29sKHZhbHVl
KSk7CisgICAgICAgIFdFQktJVF9BU1NFUlQoY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSkpOwogICAg
IGVsc2UgewogICAgICAgICBzdHJpbmcgbWVzc2FnZSgiSW52YWxpZCBuYW1lIGZvciBwcmVmZXJl
bmNlOiAiKTsKICAgICAgICAgbWVzc2FnZS5hcHBlbmQoa2V5KTsKQEAgLTE3MjUsNyArMTcxNiw3
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAK
LSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaWYgRU5BQkxFX1dFQl9JTlRFTlRTCiB2b2lkIFRl
c3RSdW5uZXI6OnNlbmRXZWJJbnRlbnRSZXNwb25zZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29w
ZTsKQEAgLTE4MzMsMTAgKzE4MjQsMTAgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRCYWNraW5nU2Nh
bGVGYWN0b3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmkKICAgICBm
bG9hdCB2YWx1ZSA9IGFyZ3VtZW50c1swXS52YWx1ZS5kb3VibGVWYWx1ZTsKICAgICBtX2RlbGVn
YXRlLT5zZXREZXZpY2VTY2FsZUZhY3Rvcih2YWx1ZSk7CiAKLSAgICBPd25BcnJheVB0cjxDcHBW
YXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cyA9IGFkb3B0QXJyYXlQdHIobmV3IENwcFZhcmlhbnRb
MV0pOwotICAgIGNhbGxiYWNrQXJndW1lbnRzWzBdLnNldChhcmd1bWVudHNbMV0pOworICAgIGF1
dG9fcHRyPENwcFZhcmlhbnQ+IGNhbGxiYWNrQXJndW1lbnRzKG5ldyBDcHBWYXJpYW50KCkpOwor
ICAgIGNhbGxiYWNrQXJndW1lbnRzLT5zZXQoYXJndW1lbnRzWzFdKTsKICAgICByZXN1bHQtPnNl
dE51bGwoKTsKLSAgICBtX2RlbGVnYXRlLT5wb3N0VGFzayhuZXcgSW52b2tlQ2FsbGJhY2tUYXNr
KHRoaXMsIGNhbGxiYWNrQXJndW1lbnRzLnJlbGVhc2UoKSwgMSkpOworICAgIG1fZGVsZWdhdGUt
PnBvc3RUYXNrKG5ldyBJbnZva2VDYWxsYmFja1Rhc2sodGhpcywgY2FsbGJhY2tBcmd1bWVudHMp
KTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRQT1NJWExvY2FsZShjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQpAQCAtMTg3Nyw3ICsxODY4LDYg
QEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxl
RXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXMKICAgICBtX2RlbGVnYXRlLT5zZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoYXJndW1lbnRzWzBdLnRvU3RyaW5nKCkpOwog
fQogCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiB2b2lkIFRlc3RSdW5uZXI6OmdyYW50V2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywg
Q3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDEgfHwg
IWFyZ3VtZW50c1swXS5pc1N0cmluZygpKSB7CkBAIC0xODk2LDkgKzE4ODYsNyBAQCB2b2lkIFRl
c3RSdW5uZXI6OnNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2soY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmd1bQogICAgIH0KICAgICByZXN1bHQtPnNldChtX2RlbGVnYXRlLT5zaW11
bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrKGFyZ3VtZW50c1swXS50b1N0cmluZygpKSk7
CiB9Ci0jZW5kaWYKIAotI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiB2b2lkIFRlc3RSdW5uZXI6
OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpAQCAtMTkx
Niw5ICsxOTA0LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVj
dChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3AKIAogICAgIG1fZGVsZWdhdGUt
PnNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKSk7CiB9
Ci0jZW5kaWYKIAotI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCiB2b2lkIFRlc3RSdW5uZXI6
OmFkZE1vY2tTcGVlY2hSZWNvZ25pdGlvblJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpA
QCAtMTk0MSw3ICsxOTI3LDYgQEAgdm9pZCBUZXN0UnVubmVyOjp3YXNNb2NrU3BlZWNoUmVjb2du
aXRpb25BYm9ydGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmkKIHsKICAgICByZXN1
bHQtPnNldChtX2RlbGVnYXRlLT53YXNNb2NrU3BlZWNoUmVjb2duaXRpb25BYm9ydGVkKCkpOwog
fQotI2VuZGlmCiAKIHZvaWQgVGVzdFJ1bm5lcjo6ZGlzcGxheShjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewpAQCAtMjEyMSw3ICsyMTA2LDYg
QEAgdm9pZCBUZXN0UnVubmVyOjpub3RJbXBsZW1lbnRlZChjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50KiByZXN1bHQpCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLSNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQogdm9pZCBUZXN0UnVubmVyOjpkaWRBY3F1aXJlUG9pbnRlckxv
Y2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIG1f
ZGVsZWdhdGUtPmRpZEFjcXVpcmVQb2ludGVyTG9jaygpOwpAQCAtMjE1MSw2ICsyMTM1LDUgQEAg
dm9pZCBUZXN0UnVubmVyOjpzZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHAKICAgICBtX2RlbGVnYXRlLT5zZXRQb2ludGVyTG9ja1dp
bGxGYWlsU3luY2hyb25vdXNseSgpOwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQotI2VuZGlm
CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAppbmRleCAwNDJkNTM1MDkyOTUxYzJjMDA4MTdiMTdkMGJi
ZTFlZDE1YWNhNWY1Li4zZmUxYzFmZTNkNzY1ZGU0YmU5NTYzY2ZhOTdiOWVhMTllYTY4ODkyIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdFJ1bm5lci5oCkBAIC0zNCwxNSArMzQsMTcgQEAKICNkZWZpbmUgVGVzdFJ1bm5l
cl9oCiAKICNpbmNsdWRlICJDcHBCb3VuZENsYXNzLmgiCisjaW5jbHVkZSAiVGVzdENvbW1vbi5o
IgogI2luY2x1ZGUgIldlYkFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIldlYkRlbGl2ZXJl
ZEludGVudENsaWVudC5oIgogI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlICJXZWJUZXN0
UnVubmVyLmgiCiAjaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgorI2luY2x1ZGUgPGRlcXVl
PgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CiAjaW5jbHVk
ZSA8c2V0PgogI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBcnJheUJ1ZmZlclZpZXc7CkBAIC0xNDEsNyArMTQz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBhZGRXb3JrKFdvcmtJdGVtKik7CiAKICAgICAg
ICAgdm9pZCBzZXRGcm96ZW4oYm9vbCBmcm96ZW4pIHsgbV9mcm96ZW4gPSBmcm96ZW47IH0KLSAg
ICAgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9xdWV1ZS5pc0VtcHR5KCk7IH0KKyAgICAg
ICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9xdWV1ZS5lbXB0eSgpOyB9CiAgICAgICAgIFdl
YlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKICAgICBwcml2
YXRlOgpAQCAtMTUzLDcgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH07CiAKICAgICAgICAg
V2ViVGFza0xpc3QgbV90YXNrTGlzdDsKLSAgICAgICAgRGVxdWU8V29ya0l0ZW0qPiBtX3F1ZXVl
OworICAgICAgICBzdGQ6OmRlcXVlPFdvcmtJdGVtKj4gbV9xdWV1ZTsKICAgICAgICAgYm9vbCBt
X2Zyb3plbjsKICAgICAgICAgVGVzdFJ1bm5lciogbV9jb250cm9sbGVyOwogICAgIH07CkBAIC0y
NzUsMTMgKzI3NywxMSBAQCBwcml2YXRlOgogICAgIC8vIERldmljZU9yaWVudGF0aW9uIHJlbGF0
ZWQgZnVuY3Rpb25zCiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCi0jaWYgRU5BQkxFKFBPSU5URVJfTE9DSykK
ICAgICB2b2lkIGRpZEFjcXVpcmVQb2ludGVyTG9jayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CiAgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2Nr
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHNldFBvaW50
ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqKTsKICAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNs
eShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0jZW5kaWYKIAogICAgIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwogICAgIC8vIE1ldGhvZHMgbW9kaWZ5aW5nIFdlYlByZWZlcmVuY2Vz
LgpAQCAtNDIwLDcgKzQyMCw3IEBAIHByaXZhdGU6CiAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAg
ICAgLy8gTWV0aG9kcyBpbnRlcmFjdGluZyB3aXRoIHRoZSBXZWJUZXN0UHJveHkKIAotI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKKyNpZiBFTkFCTEVfV0VCX0lOVEVOVFMKICAgICAvLyBFeHBlY3Rz
IG9uZSBzdHJpbmcgYXJndW1lbnQgZm9yIHNlbmRpbmcgc3VjY2Vzc2Z1bCByZXN1bHQsIHplcm8K
ICAgICAvLyBhcmd1bWVudHMgZm9yIHNlbmRpbmcgYSBmYWlsdXJlIHJlc3VsdC4KICAgICB2b2lk
IHNlbmRXZWJJbnRlbnRSZXNwb25zZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CkBAIC00NjgsMjMgKzQ2OCwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAg
IHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAotI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQogICAgIC8vIEdyYW50cyBwZXJtaXNzaW9uIGZvciBkZXNrdG9wIG5vdGlmaWNhdGlvbnMgdG8g
YW4gb3JpZ2luCiAgICAgdm9pZCBncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIC8vIFNpbXVsYXRlcyBhIGNsaWNr
IG9uIGEgZGVza3RvcCBub3RpZmljYXRpb24uCiAgICAgdm9pZCBzaW11bGF0ZUxlZ2FjeVdlYk5v
dGlmaWNhdGlvbkNsaWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLSNl
bmRpZgogCiAgICAgLy8gU3BlZWNoIGlucHV0IHJlbGF0ZWQgZnVuY3Rpb25zLgotI2lmIEVOQUJM
RShJTlBVVF9TUEVFQ0gpCiAgICAgdm9pZCBhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0TW9ja1NwZWVjaElu
cHV0RHVtcFJlY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotI2VuZGlm
Ci0jaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKICAgICB2b2lkIGFkZE1vY2tTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAg
dm9pZCBzZXRNb2NrU3BlZWNoUmVjb2duaXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCB3YXNNb2NrU3BlZWNoUmVjb2duaXRpb25BYm9ydGVk
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLSNlbmRpZgogCiAgICAgdm9p
ZCBkaXNwbGF5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lk
IGRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CkBAIC02ODIsMTAgKzY3NiwxMCBAQCBwcml2YXRlOgogICAgIFdlYktpdDo6V2ViRnJh
bWUqIG1fdG9wTG9hZGluZ0ZyYW1lOwogCiAgICAgLy8gTW9jayBvYmplY3QgZm9yIHRlc3Rpbmcg
ZGVsaXZlcmluZyB3ZWIgaW50ZW50cy4KLSAgICBPd25QdHI8V2ViS2l0OjpXZWJEZWxpdmVyZWRJ
bnRlbnRDbGllbnQ+IG1faW50ZW50Q2xpZW50OworICAgIHN0ZDo6YXV0b19wdHI8V2ViS2l0OjpX
ZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQ+IG1faW50ZW50Q2xpZW50OwogCiAgICAgLy8gV2ViUGVy
bWlzc2lvbkNsaWVudCBtb2NrIG9iamVjdC4KLSAgICBPd25QdHI8V2ViUGVybWlzc2lvbnM+IG1f
d2ViUGVybWlzc2lvbnM7CisgICAgc3RkOjphdXRvX3B0cjxXZWJQZXJtaXNzaW9ucz4gbV93ZWJQ
ZXJtaXNzaW9uczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGV4dElucHV0Q29udHJvbGxlci5j
cHAKaW5kZXggMzIyNWNiOTBjNDJhNmVlYmJiYWI1OTQ3MDcyZTMyYTRhN2EyMDI4MC4uZjVmOWIy
YWU4MDkyYTM3OGMzMjY1MjNhZGYzN2ExOGFhOTQ0MDU1MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGV4dElucHV0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGV4
dElucHV0Q29udHJvbGxlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJUZXh0SW5wdXRDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJUZXN0Q29t
bW9uLmgiCiAjaW5jbHVkZSAiV2ViQmluZGluZ3MuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdGlv
blVuZGVybGluZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC00MCw5ICs0MSw5IEBACiAj
aW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJWZWN0b3Iu
aD4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNl
IFdlYlRlc3RSdW5uZXIgewogCkBAIC0xNDYsNyArMTQ3LDcgQEAgdm9pZCBUZXh0SW5wdXRDb250
cm9sbGVyOjptYXJrZWRSYW5nZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiBy
ZXN1bHQKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViUmFuZ2UgcmFuZ2UgPSBtYWluRnJhbWUt
Pm1hcmtlZFJhbmdlKCk7Ci0gICAgVmVjdG9yPGludD4gaW50QXJyYXkoMik7CisgICAgdmVjdG9y
PGludD4gaW50QXJyYXkoMik7CiAgICAgaW50QXJyYXlbMF0gPSByYW5nZS5zdGFydE9mZnNldCgp
OwogICAgIGludEFycmF5WzFdID0gcmFuZ2UuZW5kT2Zmc2V0KCk7CiAgICAgcmVzdWx0LT5zZXQo
V2ViQmluZGluZ3M6Om1ha2VJbnRBcnJheShpbnRBcnJheSkpOwpAQCAtMTYxLDcgKzE2Miw3IEBA
IHZvaWQgVGV4dElucHV0Q29udHJvbGxlcjo6c2VsZWN0ZWRSYW5nZShjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50KiByZXN1CiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYlJhbmdl
IHJhbmdlID0gbWFpbkZyYW1lLT5zZWxlY3Rpb25SYW5nZSgpOwotICAgIFZlY3RvcjxpbnQ+IGlu
dEFycmF5KDIpOworICAgIHZlY3RvcjxpbnQ+IGludEFycmF5KDIpOwogICAgIGludEFycmF5WzBd
ID0gcmFuZ2Uuc3RhcnRPZmZzZXQoKTsKICAgICBpbnRBcnJheVsxXSA9IHJhbmdlLmVuZE9mZnNl
dCgpOwogICAgIHJlc3VsdC0+c2V0KFdlYkJpbmRpbmdzOjptYWtlSW50QXJyYXkoaW50QXJyYXkp
KTsKQEAgLTE4Miw3ICsxODMsNyBAQCB2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6OmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndQogICAgIGlmICgh
ZnJhbWUtPmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGFyZ3VtZW50c1swXS50b0ludDMyKCks
IGFyZ3VtZW50c1sxXS50b0ludDMyKCksIHJlY3QpKQogICAgICAgICByZXR1cm47CiAKLSAgICBW
ZWN0b3I8aW50PiBpbnRBcnJheSg0KTsKKyAgICB2ZWN0b3I8aW50PiBpbnRBcnJheSg0KTsKICAg
ICBpbnRBcnJheVswXSA9IHJlY3QueDsKICAgICBpbnRBcnJheVsxXSA9IHJlY3QueTsKICAgICBp
bnRBcnJheVsyXSA9IHJlY3Qud2lkdGg7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5jcHAKaW5k
ZXggOTkzM2ZhOGM3NjY0ZWYxODBhMGYxNzNiYTIwYWNhZjBjNzQ2MDZlMy4uMjM5MDkzNTE4NzYx
OTFkZDM3ZmJkZmYwMTcyZjU5MTRkYmZmZmEwYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlByZWZlcmVuY2Vz
LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIHZvaWQg
V2ViUHJlZmVyZW5jZXM6OnJlc2V0KCkKIHsKLSNpZiBPUyhNQUNfT1NfWCkKKyNpZmRlZiBfX0FQ
UExFX18KICAgICBjdXJzaXZlRm9udEZhbWlseSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIkFwcGxl
IENoYW5jZXJ5Iik7CiAgICAgZmFudGFzeUZvbnRGYW1pbHkgPSBXZWJTdHJpbmc6OmZyb21VVEY4
KCJQYXB5cnVzIik7CiAgICAgV2ViU3RyaW5nIHNlcmlmID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgi
VGltZXMiKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpyZXNldCgp
CiAgICAgLy8gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbCwgdG8gYWNjZXNzIGh0dHAgc2Vy
dmVyLgogICAgIGFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzID0gdHJ1ZTsKIAotI2lm
IE9TKERBUldJTikKKyNpZmRlZiBfX0FQUExFX18KICAgICBlZGl0aW5nQmVoYXZpb3IgPSBXZWJT
ZXR0aW5nczo6RWRpdGluZ0JlaGF2aW9yTWFjOwogI2Vsc2UKICAgICBlZGl0aW5nQmVoYXZpb3Ig
PSBXZWJTZXR0aW5nczo6RWRpdGluZ0JlaGF2aW9yV2luOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcAppbmRleCA5
NzUzMWM4MGRlMTQ1NDllYzBmYTFjMDUxY2M1ZDA4MTBmMmJkNGY4Li43NzlmNTNlNThhZTg1NDIy
MmVkODU2ZjNmMTUyMGMxODRlYWFiYTAyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcApAQCAtMzIsNyArMzIs
OSBAQAogI2luY2x1ZGUgIldlYlRhc2suaCIKIAogI2luY2x1ZGUgIldlYktpdC5oIgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKK3VzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIApAQCAtNDgsMzYgKzUwLDMxIEBA
IFdlYlRhc2s6On5XZWJUYXNrKCkKICAgICAgICAgbV90YXNrTGlzdC0+dW5yZWdpc3RlclRhc2so
dGhpcyk7CiB9CiAKLWNsYXNzIFdlYlRhc2tMaXN0OjpQcml2YXRlIDogcHVibGljIFZlY3RvcjxX
ZWJUYXNrKj4gewotfTsKLQogV2ViVGFza0xpc3Q6OldlYlRhc2tMaXN0KCkKLSAgICA6IG1fcHJp
dmF0ZShuZXcgUHJpdmF0ZSkKIHsKIH0KIAogV2ViVGFza0xpc3Q6On5XZWJUYXNrTGlzdCgpCiB7
CiAgICAgcmV2b2tlQWxsKCk7Ci0gICAgZGVsZXRlIG1fcHJpdmF0ZTsKIH0KIAogdm9pZCBXZWJU
YXNrTGlzdDo6cmVnaXN0ZXJUYXNrKFdlYlRhc2sqIHRhc2spCiB7Ci0gICAgbV9wcml2YXRlLT5h
cHBlbmQodGFzayk7CisgICAgbV90YXNrcy5wdXNoX2JhY2sodGFzayk7CiB9CiAKIHZvaWQgV2Vi
VGFza0xpc3Q6OnVucmVnaXN0ZXJUYXNrKFdlYlRhc2sqIHRhc2spCiB7Ci0gICAgc2l6ZV90IGlu
ZGV4ID0gbV9wcml2YXRlLT5maW5kKHRhc2spOwotICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkK
LSAgICAgICAgbV9wcml2YXRlLT5yZW1vdmUoaW5kZXgpOworICAgIHZlY3RvcjxXZWJUYXNrKj46
Oml0ZXJhdG9yIGl0ZXIgPSBmaW5kKG1fdGFza3MuYmVnaW4oKSwgbV90YXNrcy5lbmQoKSwgdGFz
ayk7CisgICAgaWYgKGl0ZXIgIT0gbV90YXNrcy5lbmQoKSkKKyAgICAgICAgbV90YXNrcy5lcmFz
ZShpdGVyKTsKIH0KIAogdm9pZCBXZWJUYXNrTGlzdDo6cmV2b2tlQWxsKCkKIHsKLSAgICB3aGls
ZSAoIW1fcHJpdmF0ZS0+aXNFbXB0eSgpKQotICAgICAgICAoKm1fcHJpdmF0ZSlbMF0tPmNhbmNl
bCgpOworICAgIHdoaWxlICghbV90YXNrcy5lbXB0eSgpKQorICAgICAgICBtX3Rhc2tzWzBdLT5j
YW5jZWwoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCmluZGV4
IDg5MjYzYmQ3YmUwMzlmNjRjYmZmYjkxNDFhZTdiMDY4ODRhMTc3ZDcuLjdiNTgyOGRmOWI5OWQ2
OGQzM2VhNDY3NzM5ZWUyMTIzYTUzNzY1NzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJm
YWNlcy5jcHAKQEAgLTM5LDEzICszOSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogbmFt
ZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCiBXZWJUZXN0SW50ZXJmYWNlczo6V2ViVGVzdEludGVy
ZmFjZXMoKQorICAgIDogbV9pbnRlcmZhY2VzKG5ldyBUZXN0SW50ZXJmYWNlcygpKQogewotICAg
IG1faW50ZXJmYWNlcyA9IG5ldyBUZXN0SW50ZXJmYWNlczsKIH0KIAogV2ViVGVzdEludGVyZmFj
ZXM6On5XZWJUZXN0SW50ZXJmYWNlcygpCiB7Ci0gICAgZGVsZXRlIG1faW50ZXJmYWNlczsKIH0K
IAogdm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJWaWV3KQpA
QCAtODUsNyArODQsNyBAQCBXZWJUZXN0UnVubmVyKiBXZWJUZXN0SW50ZXJmYWNlczo6dGVzdFJ1
bm5lcigpCiAKIFRlc3RJbnRlcmZhY2VzKiBXZWJUZXN0SW50ZXJmYWNlczo6dGVzdEludGVyZmFj
ZXMoKQogewotICAgIHJldHVybiBtX2ludGVyZmFjZXM7CisgICAgcmV0dXJuIG1faW50ZXJmYWNl
cy5nZXQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAKaW5kZXggNjQ3MGYwYTQx
MTIyZjljOWZjMzcxZGFjYWJhNTM5MzkzNWFkMjc1OS4uNWVhMGU4NGQ4ODljZmQwYTc2OWI5MDk3
NmY2OWRlNmVkZTQ4ODZiMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVkZSAiU3BlbGxDaGVja0NsaWVudC5oIgorI2lu
Y2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJUZXN0SW50ZXJmYWNlcy5oIgogI2luY2x1
ZGUgIlRlc3RQbHVnaW4uaCIKICNpbmNsdWRlICJUZXN0UnVubmVyLmgiCkBAIC01OCw3ICs1OSw2
IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTEVycm9yLmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YlVSTFJlcXVlc3QuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMUmVzcG9uc2UuaD4KLSNpbmNs
dWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cmluZyB1cmxTdWl0YWJsZUZv
clRlc3RSZXN1bHQoY29uc3Qgc3RyaW5nJiB1cmwpCiAKICAgICBzaXplX3QgcG9zID0gdXJsLnJm
aW5kKCcvJyk7CiAgICAgaWYgKHBvcyA9PSBzdHJpbmc6Om5wb3MpIHsKLSNpZiBPUyhXSU5ET1dT
KQorI2lmZGVmIFdJTjMyCiAgICAgICAgIHBvcyA9IHVybC5yZmluZCgnXFwnKTsKICAgICAgICAg
aWYgKHBvcyA9PSBzdHJpbmc6Om5wb3MpCiAgICAgICAgICAgICBwb3MgPSAwOwpAQCAtMjY3LDcg
KzI2Nyw2IEBAIFdlYlRlc3RQcm94eUJhc2U6OldlYlRlc3RQcm94eUJhc2UoKQogCiBXZWJUZXN0
UHJveHlCYXNlOjp+V2ViVGVzdFByb3h5QmFzZSgpCiB7Ci0gICAgZGVsZXRlIG1fc3BlbGxjaGVj
azsKIH0KIAogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpzZXRJbnRlcmZhY2VzKFdlYlRlc3RJbnRl
cmZhY2VzKiBpbnRlcmZhY2VzKQpAQCAtMjkwLDcgKzI4OSw3IEBAIHZvaWQgV2ViVGVzdFByb3h5
QmFzZTo6cmVzZXQoKQogCiBXZWJTcGVsbENoZWNrQ2xpZW50KiBXZWJUZXN0UHJveHlCYXNlOjpz
cGVsbENoZWNrQ2xpZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zcGVsbGNoZWNrOworICAg
IHJldHVybiBtX3NwZWxsY2hlY2suZ2V0KCk7CiB9CiAKIHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6
c2V0UGFpbnRSZWN0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCkBAIC01NTYsMTQgKzU1NSwxNCBAQCB2
b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpZEVuZEVkaXRpbmcoKQogCiB2b2lkIFdlYlRlc3RQcm94
eUJhc2U6OnJlZ2lzdGVySW50ZW50U2VydmljZShXZWJGcmFtZSosIGNvbnN0IFdlYkludGVudFNl
cnZpY2VJbmZvJiBzZXJ2aWNlKQogewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpZiBFTkFC
TEVfV0VCX0lOVEVOVFMKICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uoc3RyaW5nKCJSZWdp
c3RlcmVkIFdlYiBJbnRlbnQgU2VydmljZTogYWN0aW9uPSIpICsgc2VydmljZS5hY3Rpb24oKS51
dGY4KCkuZGF0YSgpICsgIiB0eXBlPSIgKyBzZXJ2aWNlLnR5cGUoKS51dGY4KCkuZGF0YSgpICsg
IiB0aXRsZT0iICsgc2VydmljZS50aXRsZSgpLnV0ZjgoKS5kYXRhKCkgKyAiIHVybD0iICsgc2Vy
dmljZS51cmwoKS5zcGVjKCkuZGF0YSgpICsgIiBkaXNwb3NpdGlvbj0iICsgc2VydmljZS5kaXNw
b3NpdGlvbigpLnV0ZjgoKS5kYXRhKCkgKyAiXG4iKTsKICNlbmRpZgogfQogCiB2b2lkIFdlYlRl
c3RQcm94eUJhc2U6OmRpc3BhdGNoSW50ZW50KFdlYkZyYW1lKiBzb3VyY2UsIGNvbnN0IFdlYklu
dGVudFJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2lmIEVO
QUJMRV9XRUJfSU5URU5UUwogICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZShzdHJpbmcoIlJl
Y2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj0iKSArIHJlcXVlc3QuaW50ZW50KCkuYWN0aW9uKCku
dXRmOCgpLmRhdGEoKSArICIgdHlwZT0iICsgcmVxdWVzdC5pbnRlbnQoKS50eXBlKCkudXRmOCgp
LmRhdGEoKSArICJcbiIpOwogICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBwb3J0cyA9
IHJlcXVlc3QuaW50ZW50KCkubWVzc2FnZVBvcnRDaGFubmVsc1JlbGVhc2UoKTsKICAgICBtX2Rl
bGVnYXRlLT5zZXRDdXJyZW50V2ViSW50ZW50UmVxdWVzdChyZXF1ZXN0KTsKQEAgLTc3OCw3ICs3
NzcsNyBAQCB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpZERldGVjdFhTUyhXZWJGcmFtZSosIGNv
bnN0IFdlYlVSTCYsIGJvb2wpCiB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmFzc2lnbklkZW50aWZp
ZXJUb1JlcXVlc3QoV2ViRnJhbWUqLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBXZWJLaXQ6
OldlYlVSTFJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKG1fdGVzdEludGVyZmFjZXMtPnRl
c3RSdW5uZXIoKS0+c2hvdWxkRHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7Ci0gICAgICAg
IEFTU0VSVChtX3Jlc291cmNlSWRlbnRpZmllck1hcC5maW5kKGlkZW50aWZpZXIpID09IG1fcmVz
b3VyY2VJZGVudGlmaWVyTWFwLmVuZCgpKTsKKyAgICAgICAgV0VCS0lUX0FTU0VSVChtX3Jlc291
cmNlSWRlbnRpZmllck1hcC5maW5kKGlkZW50aWZpZXIpID09IG1fcmVzb3VyY2VJZGVudGlmaWVy
TWFwLmVuZCgpKTsKICAgICAgICAgbV9yZXNvdXJjZUlkZW50aWZpZXJNYXBbaWRlbnRpZmllcl0g
PSBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LnVybCgpLnNwZWMoKSk7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvY29uZmlnLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMmZjNmY0MWMyNjYzZThmMTVlY2JhZWM5
YTQ3ZWZkNzhmYTkzNDk2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvY29uZmlnLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
Y29uZmlnX2gKKyNkZWZpbmUgY29uZmlnX2gKKworI2RlZmluZSBVU0UoZmVhdHVyZSkgKGRlZmlu
ZWQgV1RGX1VTRV8jI2ZlYXR1cmUgJiYgV1RGX1VTRV8jI2ZlYXR1cmUpCisKKyNlbmRpZiAvLyBj
b25maWdfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187155</attachid>
            <date>2013-02-07 12:58:02 -0800</date>
            <delta_ts>2013-02-07 23:35:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108466-20130207215437.patch</filename>
            <type>text/plain</type>
            <size>103195</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMTY0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTM3YzU5ODgzNDJlZDEzMDAzZjgyNjRhM2VhYjJhZmIx
N2Y2ODRlMC4uYzU4ZjA0Yjc5OWRjY2YzYjA1MDg4NDA1MTVkOTFmNjdjM2JmMTc5MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
MSBAQAorMjAxMy0wMi0wNiAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIHR1cm4gVGVzdFJ1bm5lciBsaWJyYXJ5IGludG8gYSBjb21w
b25lbnQgYnVpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwODQ2NgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAg
VG8gYWNoaWV2ZSB0aGlzLCB3ZSBuZWVkIHRvIGRyb3AgYWxsIGRlcGVuZGVuY2llcyBvbiBXVEYu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRl
clRyZWUuZ3lwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
UHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUYXNrLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdENvbW1vbi5oOiBDb3BpZWQgZnJvbSBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5o
LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dl
YlRlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudExpc3Q6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRMaXN0OjpjcmVhdGVSb290KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hy
b21pdW0uaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRMaXN0KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENsYXNzLmNw
cDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6On5DcHBCb3VuZENsYXNz
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6Omludm9rZSk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpnZXRQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpzZXRQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpiaW5kQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZEdldHRlckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6OmJpbmRQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpnZXRBc0NwcFZhcmlhbnQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuaDoK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoQ3BwQm91bmRDbGFzcyk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpiaW5kUHJvcGVydHkpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZEZhbGxiYWNrQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZEZhbGxiYWNrTWV0aG9k
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBW
YXJpYW50LmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcFZhcmlhbnQ6OnRvU3RyaW5n
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcFZhcmlhbnQ6OnRvSW50MzIpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6Q3BwVmFyaWFudDo6dG9Eb3VibGUpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6Q3BwVmFyaWFudDo6dG9Cb29sZWFuKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OkNwcFZhcmlhbnQ6OnRvU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNw
cFZhcmlhbnQ6Omludm9rZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBWYXJpYW50Ojpp
bnZva2VEZWZhdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9DcHBWYXJpYW50Lmg6CisgICAgICAgIChDcHBWYXJpYW50KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHA6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2Vu
ZGVyOjpFdmVudFNlbmRlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
cmVzZXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6Om1vdXNlRG93bik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6bW91c2VVcCk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6bW91c2VNb3ZlVG8pOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OmtleURvd24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6RXZlbnRTZW5kZXI6OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpFdmVudFNlbmRlcjo6bGVhcEZvcndhcmQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZl
bnRTZW5kZXI6OnJlcGxheVNhdmVkRXZlbnRzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Om1h
a2VNZW51SXRlbVN0cmluZ3NGb3IpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI6OmNvbnRleHRDbGljayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
YmVnaW5EcmFnV2l0aEZpbGVzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVy
OjphZGRUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpy
ZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
dXBkYXRlVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
Y2FuY2VsVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
c2VuZEN1cnJlbnRUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2Vu
ZGVyOjpnZXN0dXJlRXZlbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
Ok5hdGl2ZUtleUNvZGVGb3JXaW5kb3dzS2V5Q29kZSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5jcHA6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpNb2NrR3JhbW1hckNoZWNrOjpjaGVja0dyYW1tYXJPZlN0cmluZyk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNrLmg6CisgICAgICAgIChXZWJUZXN0
UnVubmVyKToKKyAgICAgICAgKE1vY2tHcmFtbWFyQ2hlY2spOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcDoKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZCk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpNb2NrU3BlbGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmg6CisgICAgICAgIChNb2NrU3BlbGxD
aGVjayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
U3BlbGxDaGVja0NsaWVudC5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpTcGVsbENoZWNr
Q2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpT
cGVsbENoZWNrQ2xpZW50OjpmaW5pc2hMYXN0VGV4dENoZWNrKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0Q29tbW9uLmg6IENvcGllZCBmcm9t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJ
bnRlcmZhY2VzLmguCisgICAgICAgIChpc0FTQ0lJQWxwaGEpOgorICAgICAgICAoaXNOb3RBU0NJ
SUFscGhhKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0SW50ZXJm
YWNlczo6VGVzdEludGVyZmFjZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChUZXN0SW50ZXJmYWNl
cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFBsdWdpbi5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpUZXN0UGx1
Z2luKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6ZGVzdHJveSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpwYXJzZVByaW1pdGl2ZSk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RQbHVnaW46OmluaXRQcm9ncmFtKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RQbHVnaW46OmluaXRQcmltaXRpdmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBs
dWdpbjo6ZHJhd1ByaW1pdGl2ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2lu
Ojpsb2FkU2hhZGVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmxvYWRQ
cm9ncmFtKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmhhbmRsZURyYWdT
dGF0dXNVcGRhdGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RQbHVnaW4uaDoKKyAgICAgICAgKFRlc3RQbHVnaW4pOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpwcm9jZXNzV29ya1Nv
b24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpwcm9j
ZXNzV29yayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpXb3JrUXVldWU6
OnJlc2V0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6
YWRkV29yayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpUZXN0UnVubmVy
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnBvbGljeURlbGVnYXRlRG9uZSk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldFRleHRTdWJwaXhlbFBvc2l0aW9uaW5nKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpkZWxpdmVyV2ViSW50ZW50KToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpzaW11bGF0ZUxlZ2FjeVdlYk5vdGlm
aWNhdGlvbkNsaWNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldE1v
Y2tTcGVlY2hJbnB1dER1bXBSZWN0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5u
ZXI6Ondhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6VGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6aXNF
bXB0eSk6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0SW5wdXRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRleHRJbnB1dENvbnRyb2xsZXI6Om1hcmtlZFJhbmdlKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRleHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1dlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Oldl
YlByZWZlcmVuY2VzOjpyZXNldCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJU
YXNrTGlzdDo6fldlYlRhc2tMaXN0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRhc2tM
aXN0OjpyZWdpc3RlclRhc2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Q6
OnVucmVnaXN0ZXJUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0Ojpy
ZXZva2VBbGwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRl
c3RJbnRlcmZhY2VzOjpXZWJUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJUZXN0SW50ZXJmYWNlczo6fldlYlRlc3RJbnRlcmZhY2VzKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6On5XZWJUZXN0UHJveHlC
YXNlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnNwZWxsQ2hl
Y2tDbGllbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6cmVn
aXN0ZXJJbnRlbnRTZXJ2aWNlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94
eUJhc2U6OmRpc3BhdGNoSW50ZW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQ
cm94eUJhc2U6OmFzc2lnbklkZW50aWZpZXJUb1JlcXVlc3QpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL2NvbmZpZy5oOiBDb3BpZWQgZnJvbSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJm
YWNlcy5oLgorCiAyMDEzLTAyLTA3ICBFdW5taSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNv
bT4KIAogICAgICAgICBEbyBub3QgY2hlY2sgZW51bSdzIGNhc2luZyBmb3IgV2ViS2l0MiBDIEFQ
SS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9E
dW1wUmVuZGVyVHJlZS5neXAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXAvRHVtcFJlbmRlclRyZWUuZ3lwCmluZGV4IDVmMzY3ZGY3ODVhY2QxMTkzNzQyYTA0MDM1Mjc5
ODNmN2RjMDIwMDYuLmQ3ZWY3YWE4YzU4MTE2NTY2N2UzODgyY2UyZGI1MmI1NDkyZDM0ZWMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVu
ZGVyVHJlZS5neXAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lw
L0R1bXBSZW5kZXJUcmVlLmd5cApAQCAtODMsMTAgKzgzLDcgQEAKICAgICAgICAgICAgICdkZXBl
bmRlbmNpZXMnOiBbCiAgICAgICAgICAgICAgICAgJ1Rlc3RSdW5uZXJfcmVzb3VyY2VzJywKICAg
ICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDp3
ZWJraXQnLAotICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwOndlYmtpdF93dGZfc3VwcG9ydCcsCiAgICAgICAgICAgICAgICAgJzwoc291cmNl
X2RpcikvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXA6d2Via2l0X3Rlc3Rfc3VwcG9ydCcsCi0g
ICAgICAgICAgICAgICAgJzwoc291cmNlX2RpcikvV1RGL1dURi5neXAvV1RGLmd5cDp3dGYnLAot
ICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtp
dF9zdXBwb3J0Lmd5cDp3ZWJraXRfc3VwcG9ydCcsCiAgICAgICAgICAgICBdLAogICAgICAgICAg
ICAgJ2luY2x1ZGVfZGlycyc6IFsKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KScsCkBAIC0xMDYsNiArMTAzLDQwIEBACiAgICAgICAgICAgICAgICAgJzxAKHRlc3RfcnVubmVy
X2ZpbGVzKScsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCisg
ICAgICAgICAgICAgICAgWydpbnNpZGVfY2hyb21pdW1fYnVpbGQgPT0gMScsIHsKKyAgICAgICAg
ICAgICAgICAgICAgJ3R5cGUnOiAnPChjb21wb25lbnQpJywKKyAgICAgICAgICAgICAgICAgICAg
J2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgICAgICAgICAgICAgICBbJ2NvbXBvbmVudD09InNo
YXJlZF9saWJyYXJ5IicsIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6
IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dFQlRFU1RSVU5ORVJfRExMJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dFQlRFU1RSVU5ORVJfSU1QTEVNRU5U
QVRJT049MScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jhc2UuZ3lwOmJhc2UnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9idWlsZC90ZW1w
X2d5cC9nb29nbGV1cmwuZ3lwOmdvb2dsZXVybCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3Y4L3Rvb2xzL2d5cC92OC5neXA6djgnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdkZWZpbmVzJzogWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J1dFQlRFU1RSVU5ORVJfRExMJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdleHBvcnRfZGVwZW5kZW50X3NldHRpbmdzJzogWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9idWlsZC90ZW1wX2d5cC9nb29nbGV1cmwu
Z3lwOmdvb2dsZXVybCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9t
aXVtX3NyY19kaXIpL3Y4L3Rvb2xzL2d5cC92OC5neXA6djgnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0dGluZ3Mn
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWQ0xpbmtlclRvb2wnOiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2luY3JlbWVudGFsX2Nocm9tZV9k
bGw9PTEnLCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdV
c2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0cyc6ICd0cnVlJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgIFsndG9v
bGtpdF91c2VzX2d0ayA9PSAxJywgewogICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6IFsK
ICAgICAgICAgICAgICAgICAgICAgICAgICdXVEZfVVNFX0dUSz0xJywKQEAgLTE5NSw2ICsyMjYs
NyBAQAogICAgICAgICAgICAgICAgICdUZXN0UnVubmVyJywKICAgICAgICAgICAgICAgICAnPChz
b3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDppbnNwZWN0b3JfcmVzb3VyY2Vz
JywKICAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cDp3ZWJraXQnLAorICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwOndlYmtpdF93dGZfc3VwcG9ydCcsCiAgICAgICAgICAgICAgICAgJzwo
c291cmNlX2RpcikvV1RGL1dURi5neXAvV1RGLmd5cDp3dGYnLAogICAgICAgICAgICAgICAgICc8
KGNocm9taXVtX3NyY19kaXIpL2Jhc2UvYmFzZS5neXA6dGVzdF9zdXBwb3J0X2Jhc2UnLAogICAg
ICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2J1aWxkL3RlbXBfZ3lwL2dvb2dsZXVy
bC5neXA6Z29vZ2xldXJsJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBp
CmluZGV4IDA4OGM5ODU3NzQ0YzdmY2Q0NjZmMmNmMWQ4ODExMGM3YTNiMjA4ZmUuLmFhZGJjYzkz
MzEyZTAyODQyZDY3MjQwZTk2ZjM3MThkMTJmN2YwN2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtNTcsNiArNTcsNyBAQAogICAgICAgICAgICAgJ2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5oJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgnLAorICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RDb21tb24uaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaCcsCkBAIC04
MCw2ICs4MSw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1Nw
ZWxsQ2hlY2suaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvU3BlbGxD
aGVja0NsaWVudC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Nw
ZWxsQ2hlY2tDbGllbnQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
VGVzdENvbW1vbi5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
SW50ZXJmYWNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
c3RJbnRlcmZhY2VzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
eHRJbnB1dENvbnRyb2xsZXIuY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlByZWZlcmVuY2VzLmggYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5oCmlu
ZGV4IGI0NzM4MjZiMWE1YjcyNWI5OWU5MmYyNGIxNTVlOTc3NzcwZmY3N2UuLmExMzhiZmQ3MDBj
YzRmNzdmZjUzOGQwM2ExYjI2OWRkMjBlZDk2MDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlByZWZlcmVuY2VzLmgKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViUHJlZmVy
ZW5jZXMuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
VVJMLmgiCiAjaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIgor
I2luY2x1ZGUgIldlYlRlc3RDb21tb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJWaWV3OwpAQCAtNDEsNyArNDIsNyBAQCBjbGFzcyBXZWJWaWV3OwogCiBuYW1lc3BhY2UgV2Vi
VGVzdFJ1bm5lciB7CiAKLXN0cnVjdCBXZWJQcmVmZXJlbmNlcyB7CitzdHJ1Y3QgV0VCVEVTVFJV
Tk5FUl9FWFBPUlQgV2ViUHJlZmVyZW5jZXMgewogICAgIFdlYktpdDo6V2ViU3RyaW5nIHN0YW5k
YXJkRm9udEZhbWlseTsKICAgICBXZWJLaXQ6OldlYlN0cmluZyBmaXhlZEZvbnRGYW1pbHk7CiAg
ICAgV2ViS2l0OjpXZWJTdHJpbmcgc2VyaWZGb250RmFtaWx5OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oCmlu
ZGV4IGVmNzNlMTc3ZTA0MTBlNmZlNmRhNjE4YzBlMWQ2ZWI3NDQ0NzMwYTQuLmMzYmMwOWNjMWNl
ZWFhZjYxZTg1Y2M1MzczY2NlNjE3OTJiMTQ0NWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRhc2suaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgKQEAgLTMx
LDEzICszMSwxNiBAQAogI2lmbmRlZiBXZWJUYXNrX2gKICNkZWZpbmUgV2ViVGFza19oCiAKKyNp
bmNsdWRlICJXZWJUZXN0Q29tbW9uLmgiCisjaW5jbHVkZSA8dmVjdG9yPgorCiBuYW1lc3BhY2Ug
V2ViVGVzdFJ1bm5lciB7CiAKIGNsYXNzIFdlYlRhc2tMaXN0OwogCiAvLyBXZWJUYXNrIHJlcHJl
c2VudHMgYSB0YXNrIHdoaWNoIGNhbiBydW4gYnkgV2ViVGVzdERlbGVnYXRlOjpwb3N0VGFzaygp
IG9yCiAvLyBXZWJUZXN0RGVsZWdhdGU6OnBvc3REZWxheWVkVGFzaygpLgotY2xhc3MgV2ViVGFz
ayB7CitjbGFzcyBXRUJURVNUUlVOTkVSX0VYUE9SVCBXZWJUYXNrIHsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJUYXNrKFdlYlRhc2tMaXN0Kik7CiAgICAgdmlydHVhbCB+V2ViVGFzaygpOwpA
QCAtNTEsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViVGFza0xpc3QqIG1fdGFza0xpc3Q7
CiB9OwogCi1jbGFzcyBXZWJUYXNrTGlzdCB7CitjbGFzcyBXRUJURVNUUlVOTkVSX0VYUE9SVCBX
ZWJUYXNrTGlzdCB7CiBwdWJsaWM6CiAgICAgV2ViVGFza0xpc3QoKTsKICAgICB+V2ViVGFza0xp
c3QoKTsKQEAgLTYwLDggKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmV2b2tlQWxsKCk7CiAK
IHByaXZhdGU6Ci0gICAgY2xhc3MgUHJpdmF0ZTsKLSAgICBQcml2YXRlKiBtX3ByaXZhdGU7Cisg
ICAgc3RkOjp2ZWN0b3I8V2ViVGFzayo+IG1fdGFza3M7CiB9OwogCiAvLyBBIHRhc2sgY29udGFp
bmluZyBhbiBvYmplY3QgcG9pbnRlciBvZiBjbGFzcyBULiBEZXJpdmVkIGNsYXNzZXMgc2hvdWxk
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1
YmxpYy9XZWJUZXN0Q29tbW9uLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0Q29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM0NDJjNmE5M2RiMWNm
YmQ0NjI3YWUwZjhjYmUzYmQ2ZGI2NTc3ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RDb21tb24uaApAQCAt
MCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJUZXN0Q29tbW9uX2gKKyNkZWZpbmUgV2ViVGVzdENvbW1v
bl9oCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBEZWZhdWx0IGNvbmZpZ3VyYXRpb24K
KworI2lmICFkZWZpbmVkKFdFQlRFU1RSVU5ORVJfSU1QTEVNRU5UQVRJT04pCisjZGVmaW5lIFdF
QlRFU1RSVU5ORVJfSU1QTEVNRU5UQVRJT04gMAorI2VuZGlmCisKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisvLyBFeHBvcnRlZCBzeW1ib2xzIG5lZWQgdG8gYmUgYW5ub3RhdGVkIHdpdGggV0VC
VEVTVFJVTk5FUl9FWFBPUlQKKworI2lmIGRlZmluZWQoV0VCVEVTVFJVTk5FUl9ETEwpCisKKyNp
ZiBkZWZpbmVkKFdJTjMyKQorI2lmIFdFQlRFU1RSVU5ORVJfSU1QTEVNRU5UQVRJT04KKyNkZWZp
bmUgV0VCVEVTVFJVTk5FUl9FWFBPUlQgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjZWxzZQorI2Rl
ZmluZSBXRUJURVNUUlVOTkVSX0VYUE9SVCBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyNlbmRpZgor
CisjZWxzZSAvLyBkZWZpbmVkKFdJTjMyKQorCisjaWYgV0VCVEVTVFJVTk5FUl9JTVBMRU1FTlRB
VElPTgorI2RlZmluZSBXRUJURVNUUlVOTkVSX0VYUE9SVCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KCJkZWZhdWx0IikpKQorI2Vsc2UKKyNkZWZpbmUgV0VCVEVTVFJVTk5FUl9FWFBPUlQKKyNl
bmRpZgorCisjZW5kaWYKKworI2Vsc2UgLy8gZGVmaW5lZChXRUJURVNUUlVOTkVSX0RMTCkKKwor
I2RlZmluZSBXRUJURVNUUlVOTkVSX0VYUE9SVAorCisjZW5kaWYKKworI2VuZGlmIC8vIFdlYlRl
c3RDb21tb25faApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKaW5kZXggMmNj
ZDYxZTI1YzEwYmE0NzIwODYxNTIyMDk2MzY1NmU5ODg2ZWRiOS4uNzNkNzlkYzJjZGRlMGYyZWI5
OWU3OTI2YjFkOGZiZjFkMWFmMjdjZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJm
YWNlcy5oCkBAIC0zMSw2ICszMSw5IEBACiAjaWZuZGVmIFdlYlRlc3RJbnRlcmZhY2VzX2gKICNk
ZWZpbmUgV2ViVGVzdEludGVyZmFjZXNfaAogCisjaW5jbHVkZSAiV2ViVGVzdENvbW1vbi5oIgor
I2luY2x1ZGUgPG1lbW9yeT4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsK
IGNsYXNzIFdlYlZpZXc7CkBAIC00Miw3ICs0NSw3IEBAIGNsYXNzIFRlc3RJbnRlcmZhY2VzOwog
Y2xhc3MgV2ViVGVzdERlbGVnYXRlOwogY2xhc3MgV2ViVGVzdFJ1bm5lcjsKIAotY2xhc3MgV2Vi
VGVzdEludGVyZmFjZXMgeworY2xhc3MgV0VCVEVTVFJVTk5FUl9FWFBPUlQgV2ViVGVzdEludGVy
ZmFjZXMgewogcHVibGljOgogICAgIFdlYlRlc3RJbnRlcmZhY2VzKCk7CiAgICAgfldlYlRlc3RJ
bnRlcmZhY2VzKCk7CkBAIC02MSw3ICs2NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRl
OgotICAgIFRlc3RJbnRlcmZhY2VzKiBtX2ludGVyZmFjZXM7CisgICAgc3RkOjphdXRvX3B0cjxU
ZXN0SW50ZXJmYWNlcz4gbV9pbnRlcmZhY2VzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5Lmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0
UHJveHkuaAppbmRleCA0MjkwOTY5YmRkN2E2ODY3YzYwM2VmYTg5NDc1YzA1ZDdmNDBmYzVmLi4x
MDBkMjg3ZGJlMjZkNzgyOGJkYjRkNTQ1YTEyZDFiNjVlYmQyZGNkIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJveHku
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0UHJveHkuaApAQCAtNDIsNyArNDIsOSBAQAogI2luY2x1ZGUgIldlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlRleHRBZmZpbml0eS5oIgogI2luY2x1ZGUgIldlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVGV4dERpcmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlRlc3RDb21tb24uaCIKICNpbmNs
dWRlIDxtYXA+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHN0cmluZz4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC03OSw3ICs4MSw3IEBAIGNsYXNzIFdlYlRlc3REZWxlZ2F0ZTsKIGNs
YXNzIFdlYlRlc3RJbnRlcmZhY2VzOwogY2xhc3MgV2ViVGVzdFJ1bm5lcjsKIAotY2xhc3MgV2Vi
VGVzdFByb3h5QmFzZSB7CitjbGFzcyBXRUJURVNUUlVOTkVSX0VYUE9SVCBXZWJUZXN0UHJveHlC
YXNlIHsKIHB1YmxpYzoKICAgICB2b2lkIHNldEludGVyZmFjZXMoV2ViVGVzdEludGVyZmFjZXMq
KTsKICAgICB2b2lkIHNldERlbGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSopOwpAQCAtMTY1LDcgKzE2
Nyw3IEBAIHByaXZhdGU6CiAgICAgVGVzdEludGVyZmFjZXMqIG1fdGVzdEludGVyZmFjZXM7CiAg
ICAgV2ViVGVzdERlbGVnYXRlKiBtX2RlbGVnYXRlOwogCi0gICAgU3BlbGxDaGVja0NsaWVudCog
bV9zcGVsbGNoZWNrOworICAgIHN0ZDo6YXV0b19wdHI8U3BlbGxDaGVja0NsaWVudD4gbV9zcGVs
bGNoZWNrOwogCiAgICAgV2ViS2l0OjpXZWJSZWN0IG1fcGFpbnRSZWN0OwogICAgIHN0ZDo6bWFw
PHVuc2lnbmVkLCBzdGQ6OnN0cmluZz4gbV9yZXNvdXJjZUlkZW50aWZpZXJNYXA7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNwcAppbmRl
eCAwNjNkZGJiYWRmYmFiNjYzMzg1NTk5Yjg4MmM3ZDBlNGM1NThhMmQyLi42ZGNjNDA2MDYzZjY5
MjE0YjY3NjIyMzQzMTYxMWU2MTdmZGM3MmM5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21p
dW0uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHAKQEAgLTMxLDEzICszMSwxMiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJv
bWl1bS5oIgogCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIldlYkFjY2Vzc2li
aWxpdHlPYmplY3QuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJQb2ludC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5j
bHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTM2OCw3ICszNjcsNyBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3Qm
IG9iagogICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCiB7CiAKLSAgICBBU1NFUlQoZmFjdG9yeSk7
CisgICAgV0VCS0lUX0FTU0VSVChmYWN0b3J5KTsKIAogICAgIC8vCiAgICAgLy8gUHJvcGVydGll
cwpAQCAtMTAyNSwxNCArMTAyNCwxNCBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50TGlzdDo6Z2V0T3JDcmVhdGUoY29uc3QgV2ViQWNjZXNzaQogICAgIH0K
IAogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQgPSBuZXcgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudChvYmplY3QsIHRoaXMpOwotICAgIG1fZWxlbWVudHMuYXBwZW5kKGVsZW1lbnQp
OworICAgIG1fZWxlbWVudHMucHVzaF9iYWNrKGVsZW1lbnQpOwogICAgIHJldHVybiBlbGVtZW50
OwogfQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TGlz
dDo6Y3JlYXRlUm9vdChjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCiB7CiAg
ICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCA9IG5ldyBSb290QWNjZXNzaWJpbGl0
eVVJRWxlbWVudChvYmplY3QsIHRoaXMpOwotICAgIG1fZWxlbWVudHMuYXBwZW5kKGVsZW1lbnQp
OworICAgIG1fZWxlbWVudHMucHVzaF9iYWNrKGVsZW1lbnQpOwogICAgIHJldHVybiBlbGVtZW50
OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJv
bWl1bS5oCmluZGV4IDM5NmFhNzA4MGE5NWM4ODUyMWE2OTAxZGMyNjE5OTkwYTEyNDcwMWEuLmM2
Y2IxYTIzNTZkYTA3MGIxYTJlMTg0ZmE0MGVmMjg4OWFjNzkwOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRDaHJvbWl1bS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5oCkBAIC0zNCw3ICszNCw2
IEBACiAjaW5jbHVkZSAiQ3BwQm91bmRDbGFzcy5oIgogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxp
dHlPYmplY3QuaCIKICNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKQEAgLTE2OCw3ICsxNjcsNyBAQCBwdWJsaWM6
CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogY3JlYXRlUm9vdChjb25zdCBXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHlPYmplY3QmKTsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIFZlY3RvcjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Kj4gRWxlbWVudExpc3Q7CisgICAgdHlwZWRlZiBzdGQ6OnZl
Y3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Kj4gRWxlbWVudExpc3Q7CiAgICAgRWxlbWVudExp
c3QgbV9lbGVtZW50czsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5jcHAKaW5kZXggMDM1
YWNkZWQ3OGQ2OGU4NzU3MGRhMDE1NWZmNjUyZDZhOTU5Y2MwYS4uNDllNjE0OTczYjcxOTJjYWRj
OTEyZGQ4NmVkN2Q4ODdjZmFhZDBlZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5jcHAKQEAg
LTQyLDExICs0MiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNwcEJvdW5k
Q2xhc3MuaCIKIAorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJXZWJCaW5kaW5n
cy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEdldHRlclByb3Bl
cnR5Q2FsbGJhY2sgOiBwdWJsaWMgQ3BwQm91bmRDbGFzczo6UHJvcGVydHlDYWxsYmFjayB7CiBw
dWJsaWM6Ci0gICAgR2V0dGVyUHJvcGVydHlDYWxsYmFjayhQYXNzT3duUHRyPENwcEJvdW5kQ2xh
c3M6OkdldHRlckNhbGxiYWNrPiBjYWxsYmFjaykKKyAgICBHZXR0ZXJQcm9wZXJ0eUNhbGxiYWNr
KGF1dG9fcHRyPENwcEJvdW5kQ2xhc3M6OkdldHRlckNhbGxiYWNrPiBjYWxsYmFjaykKICAgICAg
ICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgIHsKICAgICB9CkBAIC05MSw3ICs5MSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWUoY29uc3QgQ3BwVmFyaWFudCYgdmFs
dWUpIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6Ci0gICAgT3duUHRyPENwcEJvdW5kQ2xh
c3M6OkdldHRlckNhbGxiYWNrPiBtX2NhbGxiYWNrOworICAgIGF1dG9fcHRyPENwcEJvdW5kQ2xh
c3M6OkdldHRlckNhbGxiYWNrPiBtX2NhbGxiYWNrOwogfTsKIAogfQpAQCAtMjA5LDEwICsyMDks
MTAgQEAgYm9vbCBDcHBOUE9iamVjdDo6c2V0UHJvcGVydHkoTlBPYmplY3QqIG5wT2JqLCBOUElk
ZW50aWZpZXIgaWRlbnQsIGNvbnN0IE5QVmFyaWEKIENwcEJvdW5kQ2xhc3M6On5DcHBCb3VuZENs
YXNzKCkKIHsKICAgICBmb3IgKE1ldGhvZExpc3Q6Oml0ZXJhdG9yIGkgPSBtX21ldGhvZHMuYmVn
aW4oKTsgaSAhPSBtX21ldGhvZHMuZW5kKCk7ICsraSkKLSAgICAgICAgZGVsZXRlIGktPnZhbHVl
OworICAgICAgICBkZWxldGUgaS0+c2Vjb25kOwogCiAgICAgZm9yIChQcm9wZXJ0eUxpc3Q6Oml0
ZXJhdG9yIGkgPSBtX3Byb3BlcnRpZXMuYmVnaW4oKTsgaSAhPSBtX3Byb3BlcnRpZXMuZW5kKCk7
ICsraSkKLSAgICAgICAgZGVsZXRlIGktPnZhbHVlOworICAgICAgICBkZWxldGUgaS0+c2Vjb25k
OwogCiAgICAgLy8gVW5yZWdpc3RlciBvdXJzZWx2ZXMgaWYgd2Ugd2VyZSBib3VuZCB0byBhIGZy
YW1lLgogICAgIGlmIChtX2JvdW5kVG9GcmFtZSkKQEAgLTI0Myw3ICsyNDMsNyBAQCBib29sIENw
cEJvdW5kQ2xhc3M6Omludm9rZShOUElkZW50aWZpZXIgaWRlbnQsCiAgICAgICAgIH0KICAgICAg
ICAgY2FsbGJhY2sgPSBtX2ZhbGxiYWNrQ2FsbGJhY2suZ2V0KCk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIGNhbGxiYWNrID0gKCptZXRob2QpLnZhbHVlOworICAgICAgICBjYWxsYmFjayA9ICgqbWV0
aG9kKS5zZWNvbmQ7CiAKICAgICAvLyBCdWlsZCBhIENwcEFyZ3VtZW50TGlzdCBhcmd1bWVudCB2
ZWN0b3IgZnJvbSB0aGUgTlBWYXJpYW50cyBjb21pbmcgaW4uCiAgICAgQ3BwQXJndW1lbnRMaXN0
IGNwcEFyZ3VtZW50cyhhcmd1bWVudENvdW50KTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIENw
cEJvdW5kQ2xhc3M6OmdldFByb3BlcnR5KE5QSWRlbnRpZmllciBpZGVudCwgTlBWYXJpYW50KiBy
ZXN1bHQpIGNvbnN0CiAgICAgfQogCiAgICAgQ3BwVmFyaWFudCBjcHBWYWx1ZTsKLSAgICBpZiAo
IWNhbGxiYWNrLT52YWx1ZS0+Z2V0VmFsdWUoJmNwcFZhbHVlKSkKKyAgICBpZiAoIWNhbGxiYWNr
LT5zZWNvbmQtPmdldFZhbHVlKCZjcHBWYWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBjcHBWYWx1ZS5jb3B5VG9OUFZhcmlhbnQocmVzdWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTI4MCw3ICsyODAsNyBAQCBib29sIENwcEJvdW5kQ2xhc3M6OnNldFByb3BlcnR5KE5QSWRlbnRp
ZmllciBpZGVudCwgY29uc3QgTlBWYXJpYW50KiB2YWx1ZSkKIAogICAgIENwcFZhcmlhbnQgY3Bw
VmFsdWU7CiAgICAgY3BwVmFsdWUuc2V0KCp2YWx1ZSk7Ci0gICAgcmV0dXJuICgqY2FsbGJhY2sp
LnZhbHVlLT5zZXRWYWx1ZShjcHBWYWx1ZSk7CisgICAgcmV0dXJuICgqY2FsbGJhY2spLnNlY29u
ZC0+c2V0VmFsdWUoY3BwVmFsdWUpOwogfQogCiB2b2lkIENwcEJvdW5kQ2xhc3M6OmJpbmRDYWxs
YmFjayhjb25zdCBzdHJpbmcmIG5hbWUsIENhbGxiYWNrKiBjYWxsYmFjaykKQEAgLTI4OCwxOSAr
Mjg4LDE5IEBAIHZvaWQgQ3BwQm91bmRDbGFzczo6YmluZENhbGxiYWNrKGNvbnN0IHN0cmluZyYg
bmFtZSwgQ2FsbGJhY2sqIGNhbGxiYWNrKQogICAgIE5QSWRlbnRpZmllciBpZGVudCA9IFdlYkJp
bmRpbmdzOjpnZXRTdHJpbmdJZGVudGlmaWVyKG5hbWUuY19zdHIoKSk7CiAgICAgTWV0aG9kTGlz
dDo6aXRlcmF0b3Igb2xkQ2FsbGJhY2sgPSBtX21ldGhvZHMuZmluZChpZGVudCk7CiAgICAgaWYg
KG9sZENhbGxiYWNrICE9IG1fbWV0aG9kcy5lbmQoKSkgewotICAgICAgICBkZWxldGUgb2xkQ2Fs
bGJhY2stPnZhbHVlOworICAgICAgICBkZWxldGUgb2xkQ2FsbGJhY2stPnNlY29uZDsKICAgICAg
ICAgaWYgKCFjYWxsYmFjaykgewotICAgICAgICAgICAgbV9tZXRob2RzLnJlbW92ZShvbGRDYWxs
YmFjayk7CisgICAgICAgICAgICBtX21ldGhvZHMuZXJhc2Uob2xkQ2FsbGJhY2spOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9tZXRob2RzLnNldChpZGVu
dCwgY2FsbGJhY2spOworICAgIG1fbWV0aG9kc1tpZGVudF0gPSBjYWxsYmFjazsKIH0KIAotdm9p
ZCBDcHBCb3VuZENsYXNzOjpiaW5kR2V0dGVyQ2FsbGJhY2soY29uc3Qgc3RyaW5nJiBuYW1lLCBQ
YXNzT3duUHRyPEdldHRlckNhbGxiYWNrPiBjYWxsYmFjaykKK3ZvaWQgQ3BwQm91bmRDbGFzczo6
YmluZEdldHRlckNhbGxiYWNrKGNvbnN0IHN0cmluZyYgbmFtZSwgYXV0b19wdHI8R2V0dGVyQ2Fs
bGJhY2s+IGNhbGxiYWNrKQogewotICAgIFByb3BlcnR5Q2FsbGJhY2sqIHByb3BlcnR5Q2FsbGJh
Y2sgPSBjYWxsYmFjayA/IG5ldyBHZXR0ZXJQcm9wZXJ0eUNhbGxiYWNrKGNhbGxiYWNrKSA6IDA7
CisgICAgUHJvcGVydHlDYWxsYmFjayogcHJvcGVydHlDYWxsYmFjayA9IGNhbGxiYWNrLmdldCgp
ID8gbmV3IEdldHRlclByb3BlcnR5Q2FsbGJhY2soY2FsbGJhY2spIDogMDsKICAgICBiaW5kUHJv
cGVydHkobmFtZSwgcHJvcGVydHlDYWxsYmFjayk7CiB9CiAKQEAgLTMxNSwxNCArMzE1LDE0IEBA
IHZvaWQgQ3BwQm91bmRDbGFzczo6YmluZFByb3BlcnR5KGNvbnN0IHN0cmluZyYgbmFtZSwgUHJv
cGVydHlDYWxsYmFjayogY2FsbGJhY2spCiAgICAgTlBJZGVudGlmaWVyIGlkZW50ID0gV2ViQmlu
ZGluZ3M6OmdldFN0cmluZ0lkZW50aWZpZXIobmFtZS5jX3N0cigpKTsKICAgICBQcm9wZXJ0eUxp
c3Q6Oml0ZXJhdG9yIG9sZENhbGxiYWNrID0gbV9wcm9wZXJ0aWVzLmZpbmQoaWRlbnQpOwogICAg
IGlmIChvbGRDYWxsYmFjayAhPSBtX3Byb3BlcnRpZXMuZW5kKCkpIHsKLSAgICAgICAgZGVsZXRl
IG9sZENhbGxiYWNrLT52YWx1ZTsKKyAgICAgICAgZGVsZXRlIG9sZENhbGxiYWNrLT5zZWNvbmQ7
CiAgICAgICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgICAgIG1fcHJvcGVydGllcy5yZW1v
dmUob2xkQ2FsbGJhY2spOworICAgICAgICAgICAgbV9wcm9wZXJ0aWVzLmVyYXNlKG9sZENhbGxi
YWNrKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fcHJv
cGVydGllcy5zZXQoaWRlbnQsIGNhbGxiYWNrKTsKKyAgICBtX3Byb3BlcnRpZXNbaWRlbnRdID0g
Y2FsbGJhY2s7CiB9CiAKIGJvb2wgQ3BwQm91bmRDbGFzczo6aXNNZXRob2RSZWdpc3RlcmVkKGNv
bnN0IHN0cmluZyYgbmFtZSkgY29uc3QKQEAgLTM0NCw3ICszNDQsNyBAQCBDcHBWYXJpYW50KiBD
cHBCb3VuZENsYXNzOjpnZXRBc0NwcFZhcmlhbnQoKQogICAgICAgICBtX3NlbGZWYXJpYW50LnNl
dChucE9iaik7CiAgICAgICAgIFdlYkJpbmRpbmdzOjpyZWxlYXNlT2JqZWN0KG5wT2JqKTsgLy8g
Q3BwVmFyaWFudCB0YWtlcyB0aGUgcmVmZXJlbmNlLgogICAgIH0KLSAgICBBU1NFUlQobV9zZWxm
VmFyaWFudC5pc09iamVjdCgpKTsKKyAgICBXRUJLSVRfQVNTRVJUKG1fc2VsZlZhcmlhbnQuaXNP
YmplY3QoKSk7CiAgICAgcmV0dXJuICZtX3NlbGZWYXJpYW50OwogfQogCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENsYXNz
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3Vu
ZENsYXNzLmgKaW5kZXggNTRhZjZkZGNlMWU2ODAyZmYwMGQ2OGFhNzJiNWYyMDI5ZTQ3NTNjNi4u
OTUyYTQxYzUzNDBlZmRmMDBiYzc2Yjc4MmI0ZDQ2ZGFjY2Y4ZDFkYiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJv
dW5kQ2xhc3MuaApAQCAtNDQsMTEgKzQ0LDkgQEAKICNkZWZpbmUgQ3BwQm91bmRDbGFzc19oCiAK
ICNpbmNsdWRlICJDcHBWYXJpYW50LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8
bWFwPgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7CkBAIC01NywxMiArNTUsMTEgQEAgY2xhc3MgV2ViU3Ry
aW5nOwogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKLXR5cGVkZWYgVmVjdG9yPENwcFZh
cmlhbnQ+IENwcEFyZ3VtZW50TGlzdDsKK3R5cGVkZWYgc3RkOjp2ZWN0b3I8Q3BwVmFyaWFudD4g
Q3BwQXJndW1lbnRMaXN0OwogCiAvLyBDcHBCb3VuZENsYXNzIGxldHMgeW91IG1hcCBKYXZhc2Ny
aXB0IG1ldGhvZCBjYWxscyBhbmQgcHJvcGVydHkgYWNjZXNzZXMKIC8vIGRpcmVjdGx5IHRvIEMr
KyBtZXRob2QgY2FsbHMgYW5kIENwcFZhcmlhbnQqIHZhcmlhYmxlIGFjY2Vzcy4KIGNsYXNzIENw
cEJvdW5kQ2xhc3MgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENwcEJvdW5kQ2xhc3MpOwog
cHVibGljOgogICAgIGNsYXNzIFByb3BlcnR5Q2FsbGJhY2sgewogICAgIHB1YmxpYzoKQEAgLTE2
NCw3ICsxNjEsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBCaW5kIEphdmFzY3JpcHQgcHJvcGVy
dHkgfG5hbWV8IHRvIHRoZSBDKysgZ2V0dGVyIGNhbGxiYWNrIHxjYWxsYmFja3wuCiAgICAgLy8g
VGhpcyBjYW4gYmUgdXNlZCB0byBjcmVhdGUgcmVhZC1vbmx5IHByb3BlcnRpZXMuCi0gICAgdm9p
ZCBiaW5kR2V0dGVyQ2FsbGJhY2soY29uc3Qgc3RkOjpzdHJpbmcmLCBQYXNzT3duUHRyPEdldHRl
ckNhbGxiYWNrPik7CisgICAgdm9pZCBiaW5kR2V0dGVyQ2FsbGJhY2soY29uc3Qgc3RkOjpzdHJp
bmcmLCBzdGQ6OmF1dG9fcHRyPEdldHRlckNhbGxiYWNrPik7CiAKICAgICAvLyBBIHdyYXBwZXIg
Zm9yIEJpbmRHZXR0ZXJDYWxsYmFjaywgdG8gc2ltcGxpZnkgdGhlIGNvbW1vbiBjYXNlIG9mIGJp
bmRpbmcgYQogICAgIC8vIHByb3BlcnR5IG9uIHRoZSBjdXJyZW50IG9iamVjdC4gVGhvdWdoIG5v
dCB2ZXJpZmllZCBoZXJlLCB0aGUgbWV0aG9kIHBhcmFtZXRlcgpAQCAtMTcyLDggKzE2OSw4IEBA
IHByb3RlY3RlZDoKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgIHZvaWQgYmluZFByb3BlcnR5
KGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCB2b2lkIChUOjoqbWV0aG9kKShDcHBWYXJpYW50Kikp
CiAgICAgewotICAgICAgICBPd25QdHI8R2V0dGVyQ2FsbGJhY2s+IGNhbGxiYWNrID0gYWRvcHRQ
dHIobmV3IE1lbWJlckdldHRlckNhbGxiYWNrPFQ+KHN0YXRpY19jYXN0PFQqPih0aGlzKSwgbWV0
aG9kKSk7Ci0gICAgICAgIGJpbmRHZXR0ZXJDYWxsYmFjayhuYW1lLCBjYWxsYmFjay5yZWxlYXNl
KCkpOworICAgICAgICBzdGQ6OmF1dG9fcHRyPEdldHRlckNhbGxiYWNrPiBjYWxsYmFjayhuZXcg
TWVtYmVyR2V0dGVyQ2FsbGJhY2s8VD4oc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLCBtZXRob2QpKTsK
KyAgICAgICAgYmluZEdldHRlckNhbGxiYWNrKG5hbWUsIGNhbGxiYWNrKTsKICAgICB9CiAKICAg
ICAvLyBCaW5kIHRoZSBKYXZhc2NyaXB0IHByb3BlcnR5IGNhbGxlZCB8bmFtZXwgdG8gYSBDcHBW
YXJpYW50LgpAQCAtMTkzLDcgKzE5MCw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBhcyBpdCBtYXkg
Y2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvcnMgKGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBhCiAg
ICAgLy8gZmFsbGJhY2sgYWx3YXlzIHJldHVybnMgdHJ1ZSB3aGVuIGNoZWNrZWQgZm9yIGEgbWV0
aG9kJ3MKICAgICAvLyBleGlzdGVuY2UpLgotICAgIHZvaWQgYmluZEZhbGxiYWNrQ2FsbGJhY2so
UGFzc093blB0cjxDYWxsYmFjaz4gZmFsbGJhY2tDYWxsYmFjaykKKyAgICB2b2lkIGJpbmRGYWxs
YmFja0NhbGxiYWNrKHN0ZDo6YXV0b19wdHI8Q2FsbGJhY2s+IGZhbGxiYWNrQ2FsbGJhY2spCiAg
ICAgewogICAgICAgICBtX2ZhbGxiYWNrQ2FsbGJhY2sgPSBmYWxsYmFja0NhbGxiYWNrOwogICAg
IH0KQEAgLTIwNSwyNSArMjAyLDI0IEBAIHByb3RlY3RlZDoKICAgICB0ZW1wbGF0ZTxjbGFzcyBU
PgogICAgIHZvaWQgYmluZEZhbGxiYWNrTWV0aG9kKHZvaWQgKFQ6OiptZXRob2QpKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKSkKICAgICB7Ci0gICAgICAgIGlmIChtZXRob2Qp
IHsKLSAgICAgICAgICAgIE93blB0cjxDYWxsYmFjaz4gY2FsbGJhY2sgPSBhZG9wdFB0cihuZXcg
TWVtYmVyQ2FsbGJhY2s8VD4oc3RhdGljX2Nhc3Q8VCo+KHRoaXMpLCBtZXRob2QpKTsKLSAgICAg
ICAgICAgIGJpbmRGYWxsYmFja0NhbGxiYWNrKGNhbGxiYWNrLnJlbGVhc2UoKSk7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgYmluZEZhbGxiYWNrQ2FsbGJhY2sobnVsbHB0cik7CisgICAg
ICAgIGlmIChtZXRob2QpCisgICAgICAgICAgICBiaW5kRmFsbGJhY2tDYWxsYmFjayhzdGQ6OmF1
dG9fcHRyPENhbGxiYWNrPihuZXcgTWVtYmVyQ2FsbGJhY2s8VD4oc3RhdGljX2Nhc3Q8VCo+KHRo
aXMpLCBtZXRob2QpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJpbmRGYWxsYmFja0Nh
bGxiYWNrKHN0ZDo6YXV0b19wdHI8Q2FsbGJhY2s+KCkpOwogICAgIH0KIAogICAgIC8vIFNvbWUg
ZmllbGRzIGFyZSBwcm90ZWN0ZWQgYmVjYXVzZSBzb21lIHRlc3RzIGRlcGVuZCBvbiBhY2Nlc3Np
bmcgdGhlbSwKICAgICAvLyBidXQgb3RoZXJ3aXNlIHRoZXkgc2hvdWxkIGJlIGNvbnNpZGVyZWQg
cHJpdmF0ZS4KIAotICAgIHR5cGVkZWYgSGFzaE1hcDxOUElkZW50aWZpZXIsIFByb3BlcnR5Q2Fs
bGJhY2sqPiBQcm9wZXJ0eUxpc3Q7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPE5QSWRlbnRpZmllciwg
Q2FsbGJhY2sqPiBNZXRob2RMaXN0OworICAgIHR5cGVkZWYgc3RkOjptYXA8TlBJZGVudGlmaWVy
LCBQcm9wZXJ0eUNhbGxiYWNrKj4gUHJvcGVydHlMaXN0OworICAgIHR5cGVkZWYgc3RkOjptYXA8
TlBJZGVudGlmaWVyLCBDYWxsYmFjayo+IE1ldGhvZExpc3Q7CiAgICAgLy8gVGhlc2UgbWFwcyBh
c3NvY2lhdGUgbmFtZXMgd2l0aCBwcm9wZXJ0eSBhbmQgbWV0aG9kIHBvaW50ZXJzIHRvIGJlCiAg
ICAgLy8gZXhwb3NlZCB0byBKYXZhU2NyaXB0LgogICAgIFByb3BlcnR5TGlzdCBtX3Byb3BlcnRp
ZXM7CiAgICAgTWV0aG9kTGlzdCBtX21ldGhvZHM7CiAKICAgICAvLyBUaGUgY2FsbGJhY2sgZ2V0
cyBpbnZva2VkIHdoZW4gYSBjYWxsIGlzIG1hZGUgdG8gYW4gbm9uZXhpc3RlbnQgbWV0aG9kLgot
ICAgIE93blB0cjxDYWxsYmFjaz4gbV9mYWxsYmFja0NhbGxiYWNrOworICAgIHN0ZDo6YXV0b19w
dHI8Q2FsbGJhY2s+IG1fZmFsbGJhY2tDYWxsYmFjazsKIAogcHJpdmF0ZToKICAgICAvLyBOUE9i
amVjdCBjYWxsYmFja3MuCkBAIC0yNDIsNiArMjM4LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gVHJ1
ZSBpZiBvdXIgbnBfb2JqZWN0IGhhcyBiZWVuIGJvdW5kIHRvIGEgV2ViRnJhbWUsIGluIHdoaWNo
IGNhc2UgaXQgbXVzdAogICAgIC8vIGJlIHVucmVnaXN0ZXJlZCB3aXRoIFY4IHdoZW4gd2UgZGVs
ZXRlIGl0LgogICAgIGJvb2wgbV9ib3VuZFRvRnJhbWU7CisKK3ByaXZhdGU6CisgICAgQ3BwQm91
bmRDbGFzcyhDcHBCb3VuZENsYXNzJik7CisgICAgQ3BwQm91bmRDbGFzcyYgb3BlcmF0b3I9KGNv
bnN0IENwcEJvdW5kQ2xhc3MmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5jcHAKaW5kZXgg
NGQyODU2ZTc0MmQ5N2NkZDlhMDA4NWUxOWEyZGQxODExMmY4ZjVmYy4uZWYyZTkyYTY1YzBlZjRl
OGMzYmRmNGU1Y2RkNDcxNTViZTc3MmMzNSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5jcHAKQEAgLTMx
LDEwICszMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3BwVmFyaWFudC5o
IgogCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIldlYkJpbmRpbmdzLmgiCiAj
aW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8
d3RmL1N0cmluZ0V4dHJhcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKQEAgLTIyMCw3ICsyMTksNyBAQCB2b2lkIENwcFZhcmlhbnQ6OnNldChOUE9i
amVjdCogbmV3VmFsdWUpCiAKIHN0cmluZyBDcHBWYXJpYW50Ojp0b1N0cmluZygpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKGlzU3RyaW5nKCkpOworICAgIFdFQktJVF9BU1NFUlQoaXNTdHJpbmcoKSk7
CiAgICAgcmV0dXJuIHN0cmluZyh2YWx1ZS5zdHJpbmdWYWx1ZS5VVEY4Q2hhcmFjdGVycywKICAg
ICAgICAgICAgICAgICAgIHZhbHVlLnN0cmluZ1ZhbHVlLlVURjhMZW5ndGgpOwogfQpAQCAtMjMx
LDcgKzIzMCw3IEBAIGludDMyX3QgQ3BwVmFyaWFudDo6dG9JbnQzMigpIGNvbnN0CiAgICAgICAg
IHJldHVybiB2YWx1ZS5pbnRWYWx1ZTsKICAgICBpZiAoaXNEb3VibGUoKSkKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlLmRvdWJsZVZhbHVlKTsKLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIDA7CiB9CiAKQEAgLTI0MSwyMSArMjQwLDIxIEBAIGRvdWJsZSBDcHBWYXJpYW50Ojp0b0Rv
dWJsZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlLmlu
dFZhbHVlKTsKICAgICBpZiAoaXNEb3VibGUoKSkKICAgICAgICAgcmV0dXJuIHZhbHVlLmRvdWJs
ZVZhbHVlOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKIH0KIAogYm9vbCBDcHBWYXJpYW50Ojp0b0Jvb2xl
YW4oKSBjb25zdAogewotICAgIEFTU0VSVChpc0Jvb2woKSk7CisgICAgV0VCS0lUX0FTU0VSVChp
c0Jvb2woKSk7CiAgICAgcmV0dXJuIHZhbHVlLmJvb2xWYWx1ZTsKIH0KIAotVmVjdG9yPHN0cmlu
Zz4gQ3BwVmFyaWFudDo6dG9TdHJpbmdWZWN0b3IoKSBjb25zdAordmVjdG9yPHN0cmluZz4gQ3Bw
VmFyaWFudDo6dG9TdHJpbmdWZWN0b3IoKSBjb25zdAogewogCi0gICAgQVNTRVJUKGlzT2JqZWN0
KCkpOwotICAgIFZlY3RvcjxzdHJpbmc+IHN0cmluZ1ZlY3RvcjsKKyAgICBXRUJLSVRfQVNTRVJU
KGlzT2JqZWN0KCkpOworICAgIHZlY3RvcjxzdHJpbmc+IHN0cmluZ1ZlY3RvcjsKICAgICBOUE9i
amVjdCogbnBWYWx1ZSA9IHZhbHVlLm9iamVjdFZhbHVlOwogICAgIE5QSWRlbnRpZmllciBsZW5n
dGhJZCA9IFdlYkJpbmRpbmdzOjpnZXRTdHJpbmdJZGVudGlmaWVyKCJsZW5ndGgiKTsKIApAQCAt
MjkwLDcgKzI4OSw3IEBAIFZlY3RvcjxzdHJpbmc+IENwcFZhcmlhbnQ6OnRvU3RyaW5nVmVjdG9y
KCkgY29uc3QKICAgICAgICAgaWYgKE5QVkFSSUFOVF9JU19TVFJJTkcoaW5kZXhWYWx1ZSkpIHsK
ICAgICAgICAgICAgIHN0cmluZyBpdGVtKE5QVkFSSUFOVF9UT19TVFJJTkcoaW5kZXhWYWx1ZSku
VVRGOENoYXJhY3RlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICBOUFZBUklBTlRfVE9fU1RS
SU5HKGluZGV4VmFsdWUpLlVURjhMZW5ndGgpOwotICAgICAgICAgICAgc3RyaW5nVmVjdG9yLmFw
cGVuZChpdGVtKTsKKyAgICAgICAgICAgIHN0cmluZ1ZlY3Rvci5wdXNoX2JhY2soaXRlbSk7CiAg
ICAgICAgIH0KICAgICAgICAgV2ViQmluZGluZ3M6OnJlbGVhc2VWYXJpYW50VmFsdWUoJmluZGV4
VmFsdWUpOwogICAgIH0KQEAgLTMwMCw3ICsyOTksNyBAQCBWZWN0b3I8c3RyaW5nPiBDcHBWYXJp
YW50Ojp0b1N0cmluZ1ZlY3RvcigpIGNvbnN0CiBib29sIENwcFZhcmlhbnQ6Omludm9rZShjb25z
dCBzdHJpbmcmIG1ldGhvZCwgY29uc3QgQ3BwVmFyaWFudCogYXJndW1lbnRzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgYXJndW1lbnRDb3VudCwgQ3BwVmFyaWFudCYgcmVzdWx0
KSBjb25zdAogewotICAgIEFTU0VSVChpc09iamVjdCgpKTsKKyAgICBXRUJLSVRfQVNTRVJUKGlz
T2JqZWN0KCkpOwogICAgIE5QSWRlbnRpZmllciBtZXRob2ROYW1lID0gV2ViQmluZGluZ3M6Omdl
dFN0cmluZ0lkZW50aWZpZXIobWV0aG9kLmNfc3RyKCkpOwogICAgIE5QT2JqZWN0KiBucE9iamVj
dCA9IHZhbHVlLm9iamVjdFZhbHVlOwogICAgIGlmICghV2ViQmluZGluZ3M6Omhhc01ldGhvZCgw
LCBucE9iamVjdCwgbWV0aG9kTmFtZSkpCkBAIC0zMTQsNyArMzEzLDcgQEAgYm9vbCBDcHBWYXJp
YW50OjppbnZva2UoY29uc3Qgc3RyaW5nJiBtZXRob2QsIGNvbnN0IENwcFZhcmlhbnQqIGFyZ3Vt
ZW50cywKIGJvb2wgQ3BwVmFyaWFudDo6aW52b2tlRGVmYXVsdChjb25zdCBDcHBWYXJpYW50KiBh
cmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ3BwVmFyaWFudCYgcmVzdWx0KSBjb25zdAogewotICAgIEFTU0VSVChpc09iamVj
dCgpKTsKKyAgICBXRUJLSVRfQVNTRVJUKGlzT2JqZWN0KCkpOwogICAgIE5QT2JqZWN0KiBucE9i
amVjdCA9IHZhbHVlLm9iamVjdFZhbHVlOwogICAgIE5QVmFyaWFudCByOwogICAgIGJvb2wgc3Rh
dHVzID0gV2ViQmluZGluZ3M6Omludm9rZURlZmF1bHQoMCwgbnBPYmplY3QsIGFyZ3VtZW50cywg
YXJndW1lbnRDb3VudCwgJnIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwVmFyaWFudC5oCmluZGV4IGU4MmE3MGI2Njc1MjRm
N2IyNmMyZDNjMzBiZjVjMWMyMjNkZmNmNzYuLmU5Mjk1YTNiZTg5NWJhM2UwYTk3MWIwZTllYTlk
OGRhZjhlY2ZjMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9DcHBWYXJpYW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAKIAogI2lu
Y2x1ZGUgIldlYkJpbmRpbmdzLmgiCiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsK
IApAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICBib29sIHRvQm9vbGVhbigpIGNvbnN0
OwogICAgIC8vIFJldHVybnMgYSB2ZWN0b3Igb2Ygc3RyaW5ncyBmb3IgdGhlIHNwZWNpZmllZCBh
cmd1bWVudC4gVGhpcyBpcyB1c2VmdWwKICAgICAvLyBmb3IgY29udmVydGluZyBhIEphdmFTY3Jp
cHQgYXJyYXkgb2Ygc3RyaW5ncyBpbnRvIGEgdmVjdG9yIG9mIHN0cmluZ3MuCi0gICAgVmVjdG9y
PHN0ZDo6c3RyaW5nPiB0b1N0cmluZ1ZlY3RvcigpIGNvbnN0OworICAgIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiB0b1N0cmluZ1ZlY3RvcigpIGNvbnN0OwogCiAgICAgLy8gSW52b2tlIG1ldGhv
ZCBvZiB0aGUgZ2l2ZW4gbmFtZSBvbiBhbiBvYmplY3Qgd2l0aCB0aGUgc3VwcGxpZWQgYXJndW1l
bnRzLgogICAgIC8vIFRoZSBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG9iamVjdCBvbiB3
aGljaCB0aGUgbWV0aG9kIGlzIHRvIGJlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKaW5kZXggMmQ0
ZTJjNTYzYzg2ZGI1Y2MzMzMzN2Y3MjU4YTQzMWJmZTA5Y2FlMC4uYWI4NWFiODRiZGJmODRhYjkw
MWFmNzY0MjAyOTQyNDIwYTRiMGVmYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcApAQCAtNDUs
MTkgKzQ1LDE5IEBACiAKICNpbmNsdWRlICJLZXlDb2RlTWFwcGluZy5oIgogI2luY2x1ZGUgIk1v
Y2tTcGVsbENoZWNrLmgiCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIldlYkNv
bnRleHRNZW51RGF0YS5oIgogI2luY2x1ZGUgIldlYkRyYWdPcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJXZWJUZXN0RGVsZWdhdGUuaCIKICNpbmNsdWRlICJXZWJUb3VjaFBvaW50LmgiCiAjaW5jbHVk
ZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgPGRlcXVlPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJEcmFn
RGF0YS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJTdHJpbmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCi0jaWYgT1MoV0lORE9X
UykKKyNpZmRlZiBXSU4zMgogI2luY2x1ZGUgIndpbi9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oIgog
I2VuZGlmCiAKQEAgLTk3LDkgKzk3LDkgQEAgV2ViRHJhZ0RhdGEgY3VycmVudERyYWdEYXRhOwog
V2ViRHJhZ09wZXJhdGlvbiBjdXJyZW50RHJhZ0VmZmVjdDsKIFdlYkRyYWdPcGVyYXRpb25zTWFz
ayBjdXJyZW50RHJhZ0VmZmVjdHNBbGxvd2VkOwogYm9vbCByZXBsYXlpbmdTYXZlZEV2ZW50cyA9
IGZhbHNlOwotRGVxdWU8U2F2ZWRFdmVudD4gbW91c2VFdmVudFF1ZXVlOworZGVxdWU8U2F2ZWRF
dmVudD4gbW91c2VFdmVudFF1ZXVlOwogaW50IHRvdWNoTW9kaWZpZXJzOwotVmVjdG9yPFdlYlRv
dWNoUG9pbnQ+IHRvdWNoUG9pbnRzOwordmVjdG9yPFdlYlRvdWNoUG9pbnQ+IHRvdWNoUG9pbnRz
OwogCiAvLyBUaW1lIGFuZCBwbGFjZSBvZiB0aGUgbGFzdCBtb3VzZSB1cCBldmVudC4KIGRvdWJs
ZSBsYXN0Q2xpY2tUaW1lU2VjID0gMDsKQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIGFwcGx5S2V5
TW9kaWZpZXIoY29uc3Qgc3RyaW5nJiBtb2RpZmllck5hbWUsIFdlYklucHV0RXZlbnQqIGV2ZW50
KQogICAgIGJvb2wgaXNTeXN0ZW1LZXkgPSBmYWxzZTsKICAgICBjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzID0gbW9kaWZpZXJOYW1lLmNfc3RyKCk7CiAgICAgaWYgKCFzdHJjbXAoY2hhcmFjdGVycywg
ImN0cmxLZXkiKQotI2lmICFPUyhNQUNfT1NfWCkKKyNpZm5kZWYgX19BUFBMRV9fCiAgICAgICAg
IHx8ICFzdHJjbXAoY2hhcmFjdGVycywgImFkZFNlbGVjdGlvbktleSIpCiAjZW5kaWYKICAgICAg
ICAgKSB7CkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBhcHBseUtleU1vZGlmaWVyKGNvbnN0IHN0
cmluZyYgbW9kaWZpZXJOYW1lLCBXZWJJbnB1dEV2ZW50KiBldmVudCkKICAgICAgICAgZXZlbnQt
Pm1vZGlmaWVycyB8PSBXZWJJbnB1dEV2ZW50OjpTaGlmdEtleTsKICAgICBlbHNlIGlmICghc3Ry
Y21wKGNoYXJhY3RlcnMsICJhbHRLZXkiKSkgewogICAgICAgICBldmVudC0+bW9kaWZpZXJzIHw9
IFdlYklucHV0RXZlbnQ6OkFsdEtleTsKLSNpZiAhT1MoTUFDX09TX1gpCisjaWZuZGVmIF9fQVBQ
TEVfXwogICAgICAgICAvLyBPbiBXaW5kb3dzIGFsbCBrZXlzIHdpdGggQWx0IG1vZGlmaWVyIHdp
bGwgYmUgbWFya2VkIGFzIHN5c3RlbSBrZXkuCiAgICAgICAgIC8vIFdlIGtlZXAgdGhlIHNhbWUg
YmVoYXZpb3Igb24gTGludXggYW5kIGV2ZXJ5d2hlcmUgbm9uLU1hYywgc2VlOgogICAgICAgICAv
LyBXZWJLaXQvY2hyb21pdW0vc3JjL2d0ay9XZWJJbnB1dEV2ZW50RmFjdG9yeS5jcHAKQEAgLTE3
Miw3ICsxNzIsNyBAQCBib29sIGFwcGx5S2V5TW9kaWZpZXIoY29uc3Qgc3RyaW5nJiBtb2RpZmll
ck5hbWUsIFdlYklucHV0RXZlbnQqIGV2ZW50KQogICAgICAgICAvLyBrZXB0IGluIHN5bmMgd2l0
aCB0aGUgcmVsYXRlZCBjb2RlIGluIGFib3ZlIGZpbGUuCiAgICAgICAgIGlzU3lzdGVtS2V5ID0g
dHJ1ZTsKICNlbmRpZgotI2lmIE9TKE1BQ19PU19YKQorI2lmZGVmIF9fQVBQTEVfXwogICAgIH0g
ZWxzZSBpZiAoIXN0cmNtcChjaGFyYWN0ZXJzLCAibWV0YUtleSIpIHx8ICFzdHJjbXAoY2hhcmFj
dGVycywgImFkZFNlbGVjdGlvbktleSIpKSB7CiAgICAgICAgIGV2ZW50LT5tb2RpZmllcnMgfD0g
V2ViSW5wdXRFdmVudDo6TWV0YUtleTsKICAgICAgICAgLy8gT24gTWFjIG9ubHkgY29tbWFuZCBr
ZXkgcHJlc3NlcyBhcmUgbWFya2VkIGFzIHN5c3RlbSBrZXkuCkBAIC0xOTEsOCArMTkxLDggQEAg
Ym9vbCBhcHBseUtleU1vZGlmaWVycyhjb25zdCBDcHBWYXJpYW50KiBhcmd1bWVudCwgV2ViSW5w
dXRFdmVudCogZXZlbnQpCiB7CiAgICAgYm9vbCBpc1N5c3RlbUtleSA9IGZhbHNlOwogICAgIGlm
IChhcmd1bWVudC0+aXNPYmplY3QoKSkgewotICAgICAgICBWZWN0b3I8c3RyaW5nPiBtb2RpZmll
cnMgPSBhcmd1bWVudC0+dG9TdHJpbmdWZWN0b3IoKTsKLSAgICAgICAgZm9yIChWZWN0b3I8c3Ry
aW5nPjo6Y29uc3RfaXRlcmF0b3IgaSA9IG1vZGlmaWVycy5iZWdpbigpOyBpICE9IG1vZGlmaWVy
cy5lbmQoKTsgKytpKQorICAgICAgICB2ZWN0b3I8c3RyaW5nPiBtb2RpZmllcnMgPSBhcmd1bWVu
dC0+dG9TdHJpbmdWZWN0b3IoKTsKKyAgICAgICAgZm9yICh2ZWN0b3I8c3RyaW5nPjo6Y29uc3Rf
aXRlcmF0b3IgaSA9IG1vZGlmaWVycy5iZWdpbigpOyBpICE9IG1vZGlmaWVycy5lbmQoKTsgKytp
KQogICAgICAgICAgICAgaXNTeXN0ZW1LZXkgfD0gYXBwbHlLZXlNb2RpZmllcigqaSwgZXZlbnQp
OwogICAgIH0gZWxzZSBpZiAoYXJndW1lbnQtPmlzU3RyaW5nKCkpCiAgICAgICAgIGlzU3lzdGVt
S2V5ID0gYXBwbHlLZXlNb2RpZmllcihhcmd1bWVudC0+dG9TdHJpbmcoKSwgZXZlbnQpOwpAQCAt
MjA0LDcgKzIwNCw3IEBAIGJvb2wgYXBwbHlLZXlNb2RpZmllcnMoY29uc3QgQ3BwVmFyaWFudCog
YXJndW1lbnQsIFdlYklucHV0RXZlbnQqIGV2ZW50KQogLy8gb2YgdGhlIGVkaXQgY29tbWFuZCB3
aWxsIGJlIHN0b3JlZCBpbiB8Km5hbWV8LgogYm9vbCBnZXRFZGl0Q29tbWFuZChjb25zdCBXZWJL
ZXlib2FyZEV2ZW50JiBldmVudCwgc3RyaW5nKiBuYW1lKQogewotI2lmIE9TKE1BQ19PU19YKQor
I2lmZGVmIF9fQVBQTEVfXwogICAgIC8vIFdlIG9ubHkgY2FyZXMgYWJvdXQgTGVmdCxSaWdodCxV
cCxEb3duIGtleXMgd2l0aCBDb21tYW5kIG9yIENvbW1hbmQrU2hpZnQKICAgICAvLyBtb2RpZmll
cnMuIFRoZXNlIGtleSBldmVudHMgY29ycmVzcG9uZCB0byBzb21lIHNwZWNpYWwgbW92ZW1lbnQg
YW5kCiAgICAgLy8gc2VsZWN0aW9uIGVkaXRvciBjb21tYW5kcywgYW5kIHdhcyBzdXBwb3NlZCB0
byBiZSBoYW5kbGVkIGluCkBAIC0zMDcsNyArMzA3LDcgQEAgRXZlbnRTZW5kZXI6OkV2ZW50U2Vu
ZGVyKCkKICAgICAvLyBXaGVuIHNldCB0byB0cnVlICh0aGUgZGVmYXVsdCB2YWx1ZSksIHdlIGJh
dGNoIG1vdXNlIG1vdmUgYW5kIG1vdXNlIHVwCiAgICAgLy8gZXZlbnRzIHNvIHdlIGNhbiBzaW11
bGF0ZSBkcmFnICYgZHJvcC4KICAgICBiaW5kUHJvcGVydHkoImRyYWdNb2RlIiwgJmRyYWdNb2Rl
KTsKLSNpZiBPUyhXSU5ET1dTKQorI2lmZGVmIFdJTjMyCiAgICAgYmluZFByb3BlcnR5KCJXTV9L
RVlET1dOIiwgJndtS2V5RG93bik7CiAgICAgYmluZFByb3BlcnR5KCJXTV9LRVlVUCIsICZ3bUtl
eVVwKTsKICAgICBiaW5kUHJvcGVydHkoIldNX0NIQVIiLCAmd21DaGFyKTsKQEAgLTMyMiwxMyAr
MzIyLDEzIEBAIEV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcigpCiB2b2lkIEV2ZW50U2VuZGVyOjpy
ZXNldCgpCiB7CiAgICAgLy8gVGhlIHRlc3Qgc2hvdWxkIGhhdmUgZmluaXNoZWQgYSBkcmFnIGFu
ZCB0aGUgbW91c2UgYnV0dG9uIHN0YXRlLgotICAgIEFTU0VSVChjdXJyZW50RHJhZ0RhdGEuaXNO
dWxsKCkpOworICAgIFdFQktJVF9BU1NFUlQoY3VycmVudERyYWdEYXRhLmlzTnVsbCgpKTsKICAg
ICBjdXJyZW50RHJhZ0RhdGEucmVzZXQoKTsKICAgICBjdXJyZW50RHJhZ0VmZmVjdCA9IFdlYktp
dDo6V2ViRHJhZ09wZXJhdGlvbk5vbmU7CiAgICAgY3VycmVudERyYWdFZmZlY3RzQWxsb3dlZCA9
IFdlYktpdDo6V2ViRHJhZ09wZXJhdGlvbk5vbmU7CiAgICAgcHJlc3NlZEJ1dHRvbiA9IFdlYk1v
dXNlRXZlbnQ6OkJ1dHRvbk5vbmU7CiAgICAgZHJhZ01vZGUuc2V0KHRydWUpOwotI2lmIE9TKFdJ
TkRPV1MpCisjaWZkZWYgV0lOMzIKICAgICB3bUtleURvd24uc2V0KFdNX0tFWURPV04pOwogICAg
IHdtS2V5VXAuc2V0KFdNX0tFWVVQKTsKICAgICB3bUNoYXIuc2V0KFdNX0NIQVIpOwpAQCAtNDE4
LDcgKzQxOCw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6Om1vdXNlRG93bihjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0CiAgICAgd2VidmlldygpLT5sYXlv
dXQoKTsKIAogICAgIGludCBidXR0b25OdW1iZXIgPSBnZXRCdXR0b25OdW1iZXJGcm9tU2luZ2xl
QXJnKGFyZ3VtZW50cyk7Ci0gICAgQVNTRVJUKGJ1dHRvbk51bWJlciAhPSAtMSk7CisgICAgV0VC
S0lUX0FTU0VSVChidXR0b25OdW1iZXIgIT0gLTEpOwogCiAgICAgV2ViTW91c2VFdmVudDo6QnV0
dG9uIGJ1dHRvblR5cGUgPSBnZXRCdXR0b25UeXBlRnJvbUJ1dHRvbk51bWJlcihidXR0b25OdW1i
ZXIpOwogCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6bW91c2VVcChjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogICAgIHdl
YnZpZXcoKS0+bGF5b3V0KCk7CiAKICAgICBpbnQgYnV0dG9uTnVtYmVyID0gZ2V0QnV0dG9uTnVt
YmVyRnJvbVNpbmdsZUFyZyhhcmd1bWVudHMpOwotICAgIEFTU0VSVChidXR0b25OdW1iZXIgIT0g
LTEpOworICAgIFdFQktJVF9BU1NFUlQoYnV0dG9uTnVtYmVyICE9IC0xKTsKIAogICAgIFdlYk1v
dXNlRXZlbnQ6OkJ1dHRvbiBidXR0b25UeXBlID0gZ2V0QnV0dG9uVHlwZUZyb21CdXR0b25OdW1i
ZXIoYnV0dG9uTnVtYmVyKTsKIApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6
Om1vdXNlVXAoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJl
c3VsdCkKICAgICAgICAgU2F2ZWRFdmVudCBzYXZlZEV2ZW50OwogICAgICAgICBzYXZlZEV2ZW50
LnR5cGUgPSBTYXZlZEV2ZW50OjpNb3VzZVVwOwogICAgICAgICBzYXZlZEV2ZW50LmJ1dHRvblR5
cGUgPSBidXR0b25UeXBlOwotICAgICAgICBtb3VzZUV2ZW50UXVldWUuYXBwZW5kKHNhdmVkRXZl
bnQpOworICAgICAgICBtb3VzZUV2ZW50UXVldWUucHVzaF9iYWNrKHNhdmVkRXZlbnQpOwogICAg
ICAgICByZXBsYXlTYXZlZEV2ZW50cygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFdlYk1vdXNl
RXZlbnQgZXZlbnQ7CkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6bW91c2VN
b3ZlVG8oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3UK
ICAgICAgICAgU2F2ZWRFdmVudCBzYXZlZEV2ZW50OwogICAgICAgICBzYXZlZEV2ZW50LnR5cGUg
PSBTYXZlZEV2ZW50OjpNb3VzZU1vdmU7CiAgICAgICAgIHNhdmVkRXZlbnQucG9zID0gbW91c2VQ
b3M7Ci0gICAgICAgIG1vdXNlRXZlbnRRdWV1ZS5hcHBlbmQoc2F2ZWRFdmVudCk7CisgICAgICAg
IG1vdXNlRXZlbnRRdWV1ZS5wdXNoX2JhY2soc2F2ZWRFdmVudCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgV2ViTW91c2VFdmVudCBldmVudDsKICAgICAgICAgaW5pdE1vdXNlRXZlbnQoV2ViSW5w
dXRFdmVudDo6TW91c2VNb3ZlLCBwcmVzc2VkQnV0dG9uLCBtb3VzZVBvcywgJmV2ZW50LCBnZXRD
dXJyZW50RXZlbnRUaW1lU2VjKG1fZGVsZWdhdGUpKTsKQEAgLTU5OCw3ICs1OTgsNyBAQCB2b2lk
IEV2ZW50U2VuZGVyOjprZXlEb3duKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBD
cHBWYXJpYW50KiByZXN1bHQpCiAgICAgICAgIH0KICAgICAgICAgaWYgKCFjb2RlKSB7CiAgICAg
ICAgICAgICBXZWJTdHJpbmcgd2ViQ29kZVN0ciA9IFdlYlN0cmluZzo6ZnJvbVVURjgoY29kZVN0
ci5kYXRhKCksIGNvZGVTdHIuc2l6ZSgpKTsKLSAgICAgICAgICAgIEFTU0VSVCh3ZWJDb2RlU3Ry
Lmxlbmd0aCgpID09IDEpOworICAgICAgICAgICAgV0VCS0lUX0FTU0VSVCh3ZWJDb2RlU3RyLmxl
bmd0aCgpID09IDEpOwogICAgICAgICAgICAgdGV4dCA9IGNvZGUgPSB3ZWJDb2RlU3RyLmRhdGEo
KVswXTsKICAgICAgICAgICAgIG5lZWRzU2hpZnRLZXlNb2RpZmllciA9IG5lZWRzU2hpZnRNb2Rp
Zmllcihjb2RlKTsKICAgICAgICAgICAgIGlmICgoY29kZSAmIDB4RkYpID49ICdhJyAmJiAoY29k
ZSAmIDB4RkYpIDw9ICd6JykKQEAgLTYxNiw3ICs2MTYsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpr
ZXlEb3duKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1
bHQpCiAgICAgZXZlbnREb3duLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3duOwogICAg
IGV2ZW50RG93bi5tb2RpZmllcnMgPSAwOwogICAgIGV2ZW50RG93bi53aW5kb3dzS2V5Q29kZSA9
IGNvZGU7Ci0jaWYgT1MoTElOVVgpICYmIFVTRShHVEspCisjaWYgZGVmaW5lZChfX2xpbnV4X18p
ICYmIFVTRShHVEspCiAgICAgZXZlbnREb3duLm5hdGl2ZUtleUNvZGUgPSBOYXRpdmVLZXlDb2Rl
Rm9yV2luZG93c0tleUNvZGUoY29kZSk7CiAjZW5kaWYKIApAQCAtNjc4LDcgKzY3OCw3IEBAIHZv
aWQgRXZlbnRTZW5kZXI6OmRpc3BhdGNoTWVzc2FnZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW50cywgQ3BwVmFyaWFudCoKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKIAotI2lmIE9T
KFdJTkRPV1MpCisjaWZkZWYgV0lOMzIKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA9PSAzKSB7
CiAgICAgICAgIC8vIEdyYWIgdGhlIG1lc3NhZ2UgaWQgdG8gc2VlIGlmIHdlIG5lZWQgdG8gZGlz
cGF0Y2ggaXQuCiAgICAgICAgIGludCBtc2cgPSBhcmd1bWVudHNbMF0udG9JbnQzMigpOwpAQCAt
Njk0LDcgKzY5NCw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmRpc3BhdGNoTWVzc2FnZShjb25zdCBD
cHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAgICAgICAgdW5zaWduZWQg
bG9uZyBscGFyYW0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihhcmd1bWVudHNbMl0udG9E
b3VibGUoKSk7CiAgICAgICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVudChXZWJJbnB1dEV2
ZW50RmFjdG9yeTo6a2V5Ym9hcmRFdmVudCgwLCBtc2csIGFyZ3VtZW50c1sxXS50b0ludDMyKCks
IGxwYXJhbSkpOwogICAgIH0gZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiB9CiAKQEAgLTcxOCw3
ICs3MTgsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpsZWFwRm9yd2FyZChjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdQogICAgICAgICBTYXZlZEV2ZW50IHNh
dmVkRXZlbnQ7CiAgICAgICAgIHNhdmVkRXZlbnQudHlwZSA9IFNhdmVkRXZlbnQ6OkxlYXBGb3J3
YXJkOwogICAgICAgICBzYXZlZEV2ZW50Lm1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kczsKLSAg
ICAgICAgbW91c2VFdmVudFF1ZXVlLmFwcGVuZChzYXZlZEV2ZW50KTsKKyAgICAgICAgbW91c2VF
dmVudFF1ZXVlLnB1c2hfYmFjayhzYXZlZEV2ZW50KTsKICAgICB9IGVsc2UKICAgICAgICAgZG9M
ZWFwRm9yd2FyZChtaWxsaXNlY29uZHMpOwogfQpAQCAtNzc5LDggKzc3OSw5IEBAIHZvaWQgRXZl
bnRTZW5kZXI6OmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBDcHBWCiB2b2lkIEV2ZW50U2VuZGVyOjpyZXBsYXlTYXZlZEV2ZW50cygpCiB7
CiAgICAgcmVwbGF5aW5nU2F2ZWRFdmVudHMgPSB0cnVlOwotICAgIHdoaWxlICghbW91c2VFdmVu
dFF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBTYXZlZEV2ZW50IGUgPSBtb3VzZUV2ZW50UXVl
dWUudGFrZUZpcnN0KCk7CisgICAgd2hpbGUgKCFtb3VzZUV2ZW50UXVldWUuZW1wdHkoKSkgewor
ICAgICAgICBTYXZlZEV2ZW50IGUgPSBtb3VzZUV2ZW50UXVldWUuZnJvbnQoKTsKKyAgICAgICAg
bW91c2VFdmVudFF1ZXVlLnBvcF9mcm9udCgpOwogCiAgICAgICAgIHN3aXRjaCAoZS50eXBlKSB7
CiAgICAgICAgIGNhc2UgU2F2ZWRFdmVudDo6TW91c2VNb3ZlOiB7CkBAIC03OTksNyArODAwLDcg
QEAgdm9pZCBFdmVudFNlbmRlcjo6cmVwbGF5U2F2ZWRFdmVudHMoKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC04MTMsNyArODE0LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6cmVw
bGF5U2F2ZWRFdmVudHMoKQogLy8gICBhbHNvIG1ha2VzIHNlbnNlLiBUaGlzIGZ1bmN0aW9uIGlz
IGRvaW5nIHN1Y2ggZm9yIHNvbWUgZmxhZ3MuCiAvLyAtIFNvbWUgdGVzdCBldmVuIGNoZWNrcyBh
Y3R1YWwgc3RyaW5nIGNvbnRlbnQuIFNvIHByb3ZpZGluZyBpdCB3b3VsZCBiZSBhbHNvIGhlbHBm
dWwuCiAvLwotc3RhdGljIFZlY3RvcjxXZWJTdHJpbmc+IG1ha2VNZW51SXRlbVN0cmluZ3NGb3Io
V2ViQ29udGV4dE1lbnVEYXRhKiBjb250ZXh0TWVudSwgV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0
ZSkKK3N0YXRpYyB2ZWN0b3I8V2ViU3RyaW5nPiBtYWtlTWVudUl0ZW1TdHJpbmdzRm9yKFdlYkNv
bnRleHRNZW51RGF0YSogY29udGV4dE1lbnUsIFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCiB7
CiAgICAgLy8gVGhlc2UgY29uc3RhbnRzIGFyZSBiYXNlZCBvbiBTYWZhcmkncyBjb250ZXh0IG1l
bnUgYmVjYXVzZSB0ZXN0cyBhcmUgbWFkZSBmb3IgaXQuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IG5vbkVkaXRhYmxlTWVudVN0cmluZ3NbXSA9IHsgIkJhY2siLCAiUmVsb2FkIFBhZ2UiLCAiT3Bl
biBpbiBEYXNoYmFvcmQiLCAiPHNlcGFyYXRvcj4iLCAiVmlldyBTb3VyY2UiLCAiU2F2ZSBQYWdl
IEFzIiwgIlByaW50IFBhZ2UiLCAiSW5zcGVjdCBFbGVtZW50IiwgMCB9OwpAQCAtODIxLDIwICs4
MjIsMjAgQEAgc3RhdGljIFZlY3RvcjxXZWJTdHJpbmc+IG1ha2VNZW51SXRlbVN0cmluZ3NGb3Io
V2ViQ29udGV4dE1lbnVEYXRhKiBjb250ZXh0TWVudSwKIAogICAgIC8vIFRoaXMgaXMgcG9zc2li
bGUgYmVjYXVzZSBtb3VzZSBldmVudHMgYXJlIGNhbmNlbGxlYWJsZS4KICAgICBpZiAoIWNvbnRl
eHRNZW51KQotICAgICAgICByZXR1cm4gVmVjdG9yPFdlYlN0cmluZz4oKTsKKyAgICAgICAgcmV0
dXJuIHZlY3RvcjxXZWJTdHJpbmc+KCk7CiAKLSAgICBWZWN0b3I8V2ViU3RyaW5nPiBzdHJpbmdz
OworICAgIHZlY3RvcjxXZWJTdHJpbmc+IHN0cmluZ3M7CiAKICAgICBpZiAoY29udGV4dE1lbnUt
PmlzRWRpdGFibGUpIHsKICAgICAgICAgZm9yIChjb25zdCBjaGFyKiogaXRlbSA9IGVkaXRhYmxl
TWVudVN0cmluZ3M7ICppdGVtOyArK2l0ZW0pIAotICAgICAgICAgICAgc3RyaW5ncy5hcHBlbmQo
V2ViU3RyaW5nOjpmcm9tVVRGOCgqaXRlbSkpOworICAgICAgICAgICAgc3RyaW5ncy5wdXNoX2Jh
Y2soV2ViU3RyaW5nOjpmcm9tVVRGOCgqaXRlbSkpOwogICAgICAgICBXZWJWZWN0b3I8V2ViU3Ry
aW5nPiBzdWdnZXN0aW9uczsKICAgICAgICAgTW9ja1NwZWxsQ2hlY2s6OmZpbGxTdWdnZXN0aW9u
TGlzdChjb250ZXh0TWVudS0+bWlzc3BlbGxlZFdvcmQsICZzdWdnZXN0aW9ucyk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3VnZ2VzdGlvbnMuc2l6ZSgpOyArK2kpIAotICAgICAg
ICAgICAgc3RyaW5ncy5hcHBlbmQoc3VnZ2VzdGlvbnNbaV0pOworICAgICAgICAgICAgc3RyaW5n
cy5wdXNoX2JhY2soc3VnZ2VzdGlvbnNbaV0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvciAo
Y29uc3QgY2hhcioqIGl0ZW0gPSBub25FZGl0YWJsZU1lbnVTdHJpbmdzOyAqaXRlbTsgKytpdGVt
KSAKLSAgICAgICAgICAgIHN0cmluZ3MuYXBwZW5kKFdlYlN0cmluZzo6ZnJvbVVURjgoKml0ZW0p
KTsKKyAgICAgICAgICAgIHN0cmluZ3MucHVzaF9iYWNrKFdlYlN0cmluZzo6ZnJvbVVURjgoKml0
ZW0pKTsKICAgICB9CiAKICAgICByZXR1cm4gc3RyaW5nczsKQEAgLTg1OSw3ICs4NjAsNyBAQCB2
b2lkIEV2ZW50U2VuZGVyOjpjb250ZXh0Q2xpY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1
bWVudHMsIENwcFZhcmlhbnQqIHJlcwogICAgIGluaXRNb3VzZUV2ZW50KFdlYklucHV0RXZlbnQ6
Ok1vdXNlRG93biwgV2ViTW91c2VFdmVudDo6QnV0dG9uUmlnaHQsIGxhc3RNb3VzZVBvcywgJmV2
ZW50LCBnZXRDdXJyZW50RXZlbnRUaW1lU2VjKG1fZGVsZWdhdGUpKTsKICAgICB3ZWJ2aWV3KCkt
PmhhbmRsZUlucHV0RXZlbnQoZXZlbnQpOwogCi0jaWYgT1MoV0lORE9XUykKKyNpZmRlZiBXSU4z
MgogICAgIGluaXRNb3VzZUV2ZW50KFdlYklucHV0RXZlbnQ6Ok1vdXNlVXAsIFdlYk1vdXNlRXZl
bnQ6OkJ1dHRvblJpZ2h0LCBsYXN0TW91c2VQb3MsICZldmVudCwgZ2V0Q3VycmVudEV2ZW50VGlt
ZVNlYyhtX2RlbGVnYXRlKSk7CiAgICAgd2VidmlldygpLT5oYW5kbGVJbnB1dEV2ZW50KGV2ZW50
KTsKIApAQCAtOTE2LDcgKzkxNyw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnNjaGVkdWxlQXN5bmNo
cm9ub3VzS2V5RG93bihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywKIHZvaWQgRXZl
bnRTZW5kZXI6OmJlZ2luRHJhZ1dpdGhGaWxlcyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIGN1cnJlbnREcmFnRGF0YS5pbml0aWFs
aXplKCk7Ci0gICAgVmVjdG9yPHN0cmluZz4gZmlsZXMgPSBhcmd1bWVudHNbMF0udG9TdHJpbmdW
ZWN0b3IoKTsKKyAgICB2ZWN0b3I8c3RyaW5nPiBmaWxlcyA9IGFyZ3VtZW50c1swXS50b1N0cmlu
Z1ZlY3RvcigpOwogICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IGFic29sdXRlRmlsZW5hbWVzKGZp
bGVzLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlcy5zaXplKCk7ICsr
aSkgewogICAgICAgICBXZWJEcmFnRGF0YTo6SXRlbSBpdGVtOwpAQCAtOTU1LDcgKzk1Niw3IEBA
IHZvaWQgRXZlbnRTZW5kZXI6OmFkZFRvdWNoUG9pbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlCiAgICAgICAgICAgICBsb3dlc3RJZCsrOwogICAgIH0K
ICAgICB0b3VjaFBvaW50LmlkID0gbG93ZXN0SWQ7Ci0gICAgdG91Y2hQb2ludHMuYXBwZW5kKHRv
dWNoUG9pbnQpOworICAgIHRvdWNoUG9pbnRzLnB1c2hfYmFjayh0b3VjaFBvaW50KTsKIH0KIAog
dm9pZCBFdmVudFNlbmRlcjo6Y2xlYXJUb3VjaFBvaW50cyhjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50KiByZXN1bHQpCkBAIC05NjksNyArOTcwLDcgQEAgdm9pZCBFdmVudFNlbmRl
cjo6cmVsZWFzZVRvdWNoUG9pbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENw
cFZhcmlhbnQKICAgICByZXN1bHQtPnNldE51bGwoKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGlu
ZGV4ID0gYXJndW1lbnRzWzBdLnRvSW50MzIoKTsKLSAgICBBU1NFUlQoaW5kZXggPCB0b3VjaFBv
aW50cy5zaXplKCkpOworICAgIFdFQktJVF9BU1NFUlQoaW5kZXggPCB0b3VjaFBvaW50cy5zaXpl
KCkpOwogCiAgICAgV2ViVG91Y2hQb2ludCogdG91Y2hQb2ludCA9ICZ0b3VjaFBvaW50c1tpbmRl
eF07CiAgICAgdG91Y2hQb2ludC0+c3RhdGUgPSBXZWJUb3VjaFBvaW50OjpTdGF0ZVJlbGVhc2Vk
OwpAQCAtMTAwMSw3ICsxMDAyLDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6dXBkYXRlVG91Y2hQb2lu
dChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAgICByZXN1
bHQtPnNldE51bGwoKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGluZGV4ID0gYXJndW1lbnRzWzBd
LnRvSW50MzIoKTsKLSAgICBBU1NFUlQoaW5kZXggPCB0b3VjaFBvaW50cy5zaXplKCkpOworICAg
IFdFQktJVF9BU1NFUlQoaW5kZXggPCB0b3VjaFBvaW50cy5zaXplKCkpOwogCiAgICAgV2ViUG9p
bnQgcG9zaXRpb24oYXJndW1lbnRzWzFdLnRvSW50MzIoKSwgYXJndW1lbnRzWzJdLnRvSW50MzIo
KSk7CiAgICAgV2ViVG91Y2hQb2ludCogdG91Y2hQb2ludCA9ICZ0b3VjaFBvaW50c1tpbmRleF07
CkBAIC0xMDE1LDcgKzEwMTYsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpjYW5jZWxUb3VjaFBvaW50
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogICAgIHJlc3Vs
dC0+c2V0TnVsbCgpOwogCiAgICAgY29uc3QgdW5zaWduZWQgaW5kZXggPSBhcmd1bWVudHNbMF0u
dG9JbnQzMigpOwotICAgIEFTU0VSVChpbmRleCA8IHRvdWNoUG9pbnRzLnNpemUoKSk7CisgICAg
V0VCS0lUX0FTU0VSVChpbmRleCA8IHRvdWNoUG9pbnRzLnNpemUoKSk7CiAKICAgICBXZWJUb3Vj
aFBvaW50KiB0b3VjaFBvaW50ID0gJnRvdWNoUG9pbnRzW2luZGV4XTsKICAgICB0b3VjaFBvaW50
LT5zdGF0ZSA9IFdlYlRvdWNoUG9pbnQ6OlN0YXRlQ2FuY2VsbGVkOwpAQCAtMTAyMyw3ICsxMDI0
LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6Y2FuY2VsVG91Y2hQb2ludChjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKIAogdm9pZCBFdmVudFNlbmRlcjo6c2VuZEN1
cnJlbnRUb3VjaEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKIHsKLSAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFdlYlRvdWNoRXZlbnQ6OnRvdWNoZXNMZW5ndGhD
YXApID4gdG91Y2hQb2ludHMuc2l6ZSgpKTsKKyAgICBXRUJLSVRfQVNTRVJUKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihXZWJUb3VjaEV2ZW50Ojp0b3VjaGVzTGVuZ3RoQ2FwKSA+IHRvdWNoUG9pbnRz
LnNpemUoKSk7CiAgICAgd2VidmlldygpLT5sYXlvdXQoKTsKIAogICAgIFdlYlRvdWNoRXZlbnQg
dG91Y2hFdmVudDsKQEAgLTEwMzgsNyArMTAzOSw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnNlbmRD
dXJyZW50VG91Y2hFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUpCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNoUG9pbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IFdlYlRvdWNoUG9pbnQqIHRvdWNoUG9pbnQgPSAmdG91Y2hQb2ludHNbaV07CiAgICAgICAgIGlm
ICh0b3VjaFBvaW50LT5zdGF0ZSA9PSBXZWJUb3VjaFBvaW50OjpTdGF0ZVJlbGVhc2VkKSB7Ci0g
ICAgICAgICAgICB0b3VjaFBvaW50cy5yZW1vdmUoaSk7CisgICAgICAgICAgICB0b3VjaFBvaW50
cy5lcmFzZSh0b3VjaFBvaW50cy5iZWdpbigpICsgaSk7CiAgICAgICAgICAgICAtLWk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgdG91Y2hQb2ludC0+c3RhdGUgPSBXZWJUb3VjaFBvaW50
OjpTdGF0ZVN0YXRpb25hcnk7CkBAIC0xMjY1LDcgKzEyNjYsNyBAQCB2b2lkIEV2ZW50U2VuZGVy
OjpnZXN0dXJlRXZlbnQoV2ViSW5wdXRFdmVudDo6VHlwZSB0eXBlLCBjb25zdCBDcHBBcmd1bWVu
dExpc3QmCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CiAKICAgICBldmVudC5nbG9iYWxYID0gZXZlbnQueDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5n
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNv
ZGVNYXBwaW5nLmNwcAppbmRleCBjMzM5ZjJmMmJjZDI1YTg0MDZjMzQ2N2Y4ODRlOGZiYTUzNDY5
NzY1Li4yMTE1ODZlMzVlMGM2ZjdhMjg1ZGM5NmU2Njc2MTk4ZmUwMGM1OWQ4IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFw
cGluZy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvS2V5Q29kZU1hcHBpbmcuY3BwCkBAIC0zMSwxMyArMzEsMTEgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJLZXlDb2RlTWFwcGluZy5oIgogCi0jaW5jbHVkZSA8d3RmL1VudXNl
ZFBhcmFtLmg+Ci0KIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAogaW50IE5hdGl2ZUtleUNv
ZGVGb3JXaW5kb3dzS2V5Q29kZShpbnQga2V5c3ltKQogewotI2lmIE9TKExJTlVYKSAmJiBVU0Uo
R1RLKQorI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiBVU0UoR1RLKQogICAgIC8vIFNlZSAvdXNy
L3NoYXJlL1gxMS94a2Iva2V5Y29kZXMvKgogICAgIHN0YXRpYyBjb25zdCBpbnQgYXNjaWlUb0tl
eUNvZGVbXSA9IHsKICAgICAgICAgMCwKQEAgLTI0MCw4ICsyMzgsNyBAQCBpbnQgTmF0aXZlS2V5
Q29kZUZvcldpbmRvd3NLZXlDb2RlKGludCBrZXlzeW0pCiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGtleXN5bSk7Ci0gICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIGtleXN5bSAtIGtleXN5bTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNrLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFt
bWFyQ2hlY2suY3BwCmluZGV4IDdkNDllZDJmYWEzODhlYzY4ZGU2MDdlNWEwZTNjZTYxMDUzMWYy
N2IuLjYxZWVlMGM4MDUyNTBlY2U3NWQ2ODU3MGZiNzBhZjMzZmM2YWZmOWUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFtbWFy
Q2hlY2suY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL01vY2tHcmFtbWFyQ2hlY2suY3BwCkBAIC0zMSwyMCArMzEsMjIgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJNb2NrR3JhbW1hckNoZWNrLmgiCiAKKyNpbmNsdWRlICJQbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ1N0cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCiAjaW5j
bHVkZSAiV2ViVGV4dENoZWNraW5nUmVzdWx0LmgiCi0KLSNpbmNsdWRlIDx3dGYvQVNDSUlDVHlw
ZS5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCi1i
b29sIE1vY2tHcmFtbWFyQ2hlY2s6OmNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFdlYlN0cmlu
ZyYgdGV4dCwgVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4qIHJlc3VsdHMpCitib29sIE1v
Y2tHcmFtbWFyQ2hlY2s6OmNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFdlYlN0cmluZyYgdGV4
dCwgdmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4qIHJlc3VsdHMpCiB7Ci0gICAgQVNTRVJU
KHJlc3VsdHMpOwotICAgIFdURjo6U3RyaW5nIHN0cmluZ1RleHQodGV4dC5kYXRhKCksIHRleHQu
bGVuZ3RoKCkpOwotICAgIGlmIChzdHJpbmdUZXh0LmZpbmQoaXNBU0NJSUFscGhhKSA9PSBzdGF0
aWNfY2FzdDxzaXplX3Q+KC0xKSkKKyAgICBXRUJLSVRfQVNTRVJUKHJlc3VsdHMpOworICAgIHN0
cmluZzE2IHN0cmluZ1RleHQgPSB0ZXh0OworICAgIGlmIChmaW5kX2lmKHN0cmluZ1RleHQuYmVn
aW4oKSwgc3RyaW5nVGV4dC5lbmQoKSwgaXNBU0NJSUFscGhhKSA9PSBzdHJpbmdUZXh0LmVuZCgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZpbmQgbWF0Y2hpbmcgZ3JhbW1hdGlj
YWwgZXJyb3JzIGZyb20ga25vd24gb25lcy4gVGhpcyBmdW5jdGlvbiBoYXMgdG8KQEAgLTY5LDEw
ICs3MSwxMyBAQCBib29sIE1vY2tHcmFtbWFyQ2hlY2s6OmNoZWNrR3JhbW1hck9mU3RyaW5nKGNv
bnN0IFdlYlN0cmluZyYgdGV4dCwgVmVjdG9yPFdlYlRleAogICAgIH07CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBBUlJBWVNJWkVfVU5TQUZFKGdyYW1tYXJFcnJvcnMpOyArK2kpIHsKICAg
ICAgICAgaW50IG9mZnNldCA9IDA7Ci0gICAgICAgIHdoaWxlICgob2Zmc2V0ID0gc3RyaW5nVGV4
dC5maW5kKGdyYW1tYXJFcnJvcnNbaV0udGV4dCwgb2Zmc2V0KSkgIT0gLTEpIHsKLSAgICAgICAg
ICAgIHJlc3VsdHMtPmFwcGVuZChXZWJUZXh0Q2hlY2tpbmdSZXN1bHQoV2ViVGV4dENoZWNraW5n
VHlwZUdyYW1tYXIsIG9mZnNldCArIGdyYW1tYXJFcnJvcnNbaV0ubG9jYXRpb24sIGdyYW1tYXJF
cnJvcnNbaV0ubGVuZ3RoKSk7CisgICAgICAgIHN0cmluZzE2IGVycm9yKGdyYW1tYXJFcnJvcnNb
aV0udGV4dCwgZ3JhbW1hckVycm9yc1tpXS50ZXh0ICsgc3RybGVuKGdyYW1tYXJFcnJvcnNbaV0u
dGV4dCkpOworICAgICAgICB3aGlsZSAoKG9mZnNldCA9IHN0cmluZ1RleHQuZmluZChlcnJvciwg
b2Zmc2V0KSkgIT0gc3RyaW5nMTY6Om5wb3MpIHsKKyAgICAgICAgICAgIHJlc3VsdHMtPnB1c2hf
YmFjayhXZWJUZXh0Q2hlY2tpbmdSZXN1bHQoV2ViVGV4dENoZWNraW5nVHlwZUdyYW1tYXIsIG9m
ZnNldCArIGdyYW1tYXJFcnJvcnNbaV0ubG9jYXRpb24sIGdyYW1tYXJFcnJvcnNbaV0ubGVuZ3Ro
KSk7CiAgICAgICAgICAgICBvZmZzZXQgKz0gZ3JhbW1hckVycm9yc1tpXS5sZW5ndGg7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCit9CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNr
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3Jh
bW1hckNoZWNrLmgKaW5kZXggNjQyNzFiM2ZhM2MyYzAxYWMxMzZjOGUxMDMwNzE2MTkyNmQzZTk4
My4uYTE4M2RjY2IwNzRjNzkwYmZhY2FjM2Y3Nzk4NzVkOWRhODgxOTk1YyAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJD
aGVjay5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L01vY2tHcmFtbWFyQ2hlY2suaApAQCAtMzEsOCArMzEsNyBAQAogI2lmbmRlZiBNb2NrR3JhbW1h
ckNoZWNrX2gKICNkZWZpbmUgTW9ja0dyYW1tYXJDaGVja19oCiAKLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8dmVjdG9y
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDEsNiArNDAsOCBAQCBzdHJ1Y3QgV2ViVGV4
dENoZWNraW5nUmVzdWx0OwogCiB9CiAKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKwogLy8g
QSBtb2NrIGltcGxlbWVudGF0aW9uIG9mIGEgZ3JhbW1hci1jaGVja2VyIHVzZWQgZm9yIFdlYktp
dCB0ZXN0cy4gVGhpcyBjbGFzcwogLy8gb25seSBpbXBsZW1lbnRzIHRoZSBtaW5pbWFsIGZ1bmN0
aW9uYXJpdGllcyByZXF1aXJlZCBieSBXZWJLaXQgdGVzdHMsIGkuZS4KIC8vIHRoaXMgY2xhc3Mg
anVzdCBjb21wYXJlcyB0aGUgZ2l2ZW4gc3RyaW5nIHdpdGgga25vd24gZ3JhbW1hciBtaXN0YWtl
cyBpbgpAQCAtNDgsNyArNDksOSBAQCBzdHJ1Y3QgV2ViVGV4dENoZWNraW5nUmVzdWx0OwogLy8g
Zm9yIHdlYmtpdCB0ZXN0cywgdGhpcyBjbGFzcyBpcyBub3Qgc3VpdGFibGUgZm9yIGFueSBvdGhl
ciB1c2FnZXMuCiBjbGFzcyBNb2NrR3JhbW1hckNoZWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
Ym9vbCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIFZlY3Rv
cjxXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdD4qKTsKKyAgICBzdGF0aWMgYm9vbCBjaGVj
a0dyYW1tYXJPZlN0cmluZyhjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIHN0ZDo6dmVjdG9yPFdl
YktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0PiopOwogfTsKIAorfQorCiAjZW5kaWYgLy8gTW9j
a1NwZWxsQ2hlY2tfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suY3BwCmluZGV4IDgxYjMwODky
YjU4MjBhY2YzYzhiMmFkNzhmZTg0MTE2ZjkwZThjYmYuLmYyNzNjYjI3MmRjNjk1NzQyMzU4ODEw
NzVmYjYzNGI1MWI5M2NlOWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5jcHAKQEAgLTMx
LDEzICszMSwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1vY2tTcGVsbENo
ZWNrLmgiCiAKLSNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgotI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSAiVGVz
dENvbW1vbi5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1zdGF0aWMgdm9pZCBhcHBlbmQo
V2ViVmVjdG9yPFdlYlN0cmluZz4qIGRhdGEsIGNvbnN0IFdlYlN0cmluZyYgaXRlbSkKK25hbWVz
cGFjZSBXZWJUZXN0UnVubmVyIHsKKworbmFtZXNwYWNlIHsKKwordm9pZCBhcHBlbmQoV2ViVmVj
dG9yPFdlYlN0cmluZz4qIGRhdGEsIGNvbnN0IFdlYlN0cmluZyYgaXRlbSkKIHsKICAgICBXZWJW
ZWN0b3I8V2ViU3RyaW5nPiByZXN1bHQoZGF0YS0+c2l6ZSgpICsgMSk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBkYXRhLT5zaXplKCk7ICsraSkKQEAgLTQ2LDE3ICs1MCwxNyBAQCBzdGF0
aWMgdm9pZCBhcHBlbmQoV2ViVmVjdG9yPFdlYlN0cmluZz4qIGRhdGEsIGNvbnN0IFdlYlN0cmlu
ZyYgaXRlbSkKICAgICBkYXRhLT5zd2FwKHJlc3VsdCk7CiB9CiAKK30KKwogTW9ja1NwZWxsQ2hl
Y2s6Ok1vY2tTcGVsbENoZWNrKCkKICAgICA6IG1faW5pdGlhbGl6ZWQoZmFsc2UpIHsgfQogCiBN
b2NrU3BlbGxDaGVjazo6fk1vY2tTcGVsbENoZWNrKCkgeyB9CiAKLXN0YXRpYyBib29sIGlzTm90
QVNDSUlBbHBoYShVQ2hhciBjaCkgeyByZXR1cm4gIWlzQVNDSUlBbHBoYShjaCk7IH0KLQogYm9v
bCBNb2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dvcmQoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBp
bnQqIG1pc3NwZWxsZWRPZmZzZXQsIGludCogbWlzc3BlbGxlZExlbmd0aCkKIHsKLSAgICBBU1NF
UlQobWlzc3BlbGxlZE9mZnNldCk7Ci0gICAgQVNTRVJUKG1pc3NwZWxsZWRMZW5ndGgpOworICAg
IFdFQktJVF9BU1NFUlQobWlzc3BlbGxlZE9mZnNldCk7CisgICAgV0VCS0lUX0FTU0VSVChtaXNz
cGVsbGVkTGVuZ3RoKTsKIAogICAgIC8vIEluaXRpYWxpemUgdGhpcyBzcGVsbGNoZWNrZXIuCiAg
ICAgaW5pdGlhbGl6ZUlmTmVlZGVkKCk7CkBAIC02NSwxMiArNjksMTIgQEAgYm9vbCBNb2NrU3Bl
bGxDaGVjazo6c3BlbGxDaGVja1dvcmQoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBpbnQqIG1pc3Nw
ZWxsZWRPZmZzZXQKICAgICAqbWlzc3BlbGxlZE9mZnNldCA9IDA7CiAgICAgKm1pc3NwZWxsZWRM
ZW5ndGggPSAwOwogCi0gICAgLy8gQ29udmVydCB0byBhIFN0cmluZyBiZWNhdXNlIHdlIHN0b3Jl
IFN0cmluZyBpbnN0YW5jZXMgaW4KKyAgICAvLyBDb252ZXJ0IHRvIGEgc3RyaW5nMTYgYmVjYXVz
ZSB3ZSBzdG9yZSBzdHJpbmcxNiBpbnN0YW5jZXMgaW4KICAgICAvLyBtX21pc3NwZWxsZWRXb3Jk
cyBhbmQgV2ViU3RyaW5nIGhhcyBubyBmaW5kKCkuCi0gICAgU3RyaW5nIHN0cmluZ1RleHQodGV4
dC5kYXRhKCksIHRleHQubGVuZ3RoKCkpOworICAgIHN0cmluZzE2IHN0cmluZ1RleHQgPSB0ZXh0
OwogICAgIGludCBza2lwcGVkTGVuZ3RoID0gMDsKIAotICAgIHdoaWxlICghc3RyaW5nVGV4dC5p
c0VtcHR5KCkpIHsKKyAgICB3aGlsZSAoIXN0cmluZ1RleHQuZW1wdHkoKSkgewogICAgICAgICAv
LyBFeHRyYWN0IHRoZSBmaXJzdCBwb3NzaWJsZSBFbmdsaXNoIHdvcmQgZnJvbSB0aGUgZ2l2ZW4g
c3RyaW5nLgogICAgICAgICAvLyBUaGUgZ2l2ZW4gc3RyaW5nIG1heSBpbmNsdWRlIG5vbi1BU0NJ
SSBjaGFyYWN0ZXJzIG9yIG51bWJlcnMuIFNvLCB3ZQogICAgICAgICAvLyBzaG91bGQgZmlsdGVy
IG91dCBzdWNoIGNoYXJhY3RlcnMgYmVmb3JlIHN0YXJ0IGxvb2tpbmcgdXAgb3VyCkBAIC03OCwx
MiArODIsMTMgQEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dvcmQoY29uc3QgV2Vi
U3RyaW5nJiB0ZXh0LCBpbnQqIG1pc3NwZWxsZWRPZmZzZXQKICAgICAgICAgLy8gKFRoaXMgaXMg
YSBzaW1wbGUgdmVyc2lvbiBvZiBvdXIgU3BlbGxDaGVja1dvcmRJdGVyYXRvciBjbGFzcy4pCiAg
ICAgICAgIC8vIElmIHRoZSBnaXZlbiBzdHJpbmcgZG9lc24ndCBpbmNsdWRlIGFueSBBU0NJSSBj
aGFyYWN0ZXJzLCB3ZSBjYW4gdHJlYXQgdGhlCiAgICAgICAgIC8vIHN0cmluZyBhcyB2YWxpZCBv
bmUuCi0gICAgICAgIGludCB3b3JkT2Zmc2V0ID0gc3RyaW5nVGV4dC5maW5kKGlzQVNDSUlBbHBo
YSk7Ci0gICAgICAgIGlmICh3b3JkT2Zmc2V0ID09IC0xKQorICAgICAgICBzdHJpbmcxNjo6aXRl
cmF0b3IgZmlyc3RDaGFyID0gZmluZF9pZihzdHJpbmdUZXh0LmJlZ2luKCksIHN0cmluZ1RleHQu
ZW5kKCksIGlzQVNDSUlBbHBoYSk7CisgICAgICAgIGlmIChmaXJzdENoYXIgPT0gc3RyaW5nVGV4
dC5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpbnQgd29yZE9mZnNl
dCA9IGRpc3RhbmNlKHN0cmluZ1RleHQuYmVnaW4oKSwgZmlyc3RDaGFyKTsKICAgICAgICAgaW50
IG1heFdvcmRMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmluZ1RleHQubGVuZ3RoKCkpIC0g
d29yZE9mZnNldDsKICAgICAgICAgaW50IHdvcmRMZW5ndGg7Ci0gICAgICAgIFN0cmluZyB3b3Jk
OworICAgICAgICBzdHJpbmcxNiB3b3JkOwogCiAgICAgICAgIC8vIExvb2sgdXAgb3VyIG1pc3Nw
ZWxsZWQtd29yZCB0YWJsZSB0byBjaGVjayBpZiB0aGUgZXh0cmFjdGVkIHdvcmQgaXMgYQogICAg
ICAgICAvLyBrbm93biBtaXNzcGVsbGVkIHdvcmQsIGFuZCByZXR1cm4gdGhlIG9mZnNldCBhbmQg
dGhlIGxlbmd0aCBvZiB0aGUKQEAgLTkyLDcgKzk3LDcgQEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6
c3BlbGxDaGVja1dvcmQoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBpbnQqIG1pc3NwZWxsZWRPZmZz
ZXQKICAgICAgICAgLy8gbWlzc3BlbGxlZC13b3JkIHRhYmxlLikKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX21pc3NwZWxsZWRXb3Jkcy5zaXplKCk7ICsraSkgewogICAgICAgICAg
ICAgd29yZExlbmd0aCA9IHN0YXRpY19jYXN0PGludD4obV9taXNzcGVsbGVkV29yZHMuYXQoaSku
bGVuZ3RoKCkpID4gbWF4V29yZExlbmd0aCA/IG1heFdvcmRMZW5ndGggOiBzdGF0aWNfY2FzdDxp
bnQ+KG1fbWlzc3BlbGxlZFdvcmRzLmF0KGkpLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIHdvcmQg
PSBzdHJpbmdUZXh0LnN1YnN0cmluZyh3b3JkT2Zmc2V0LCB3b3JkTGVuZ3RoKTsKKyAgICAgICAg
ICAgIHdvcmQgPSBzdHJpbmdUZXh0LnN1YnN0cih3b3JkT2Zmc2V0LCB3b3JkTGVuZ3RoKTsKICAg
ICAgICAgICAgIGlmICh3b3JkID09IG1fbWlzc3BlbGxlZFdvcmRzLmF0KGkpICYmIChzdGF0aWNf
Y2FzdDxpbnQ+KHN0cmluZ1RleHQubGVuZ3RoKCkpID09IHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3Ro
IHx8IGlzTm90QVNDSUlBbHBoYShzdHJpbmdUZXh0W3dvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoXSkp
KSB7CiAgICAgICAgICAgICAgICAgKm1pc3NwZWxsZWRPZmZzZXQgPSB3b3JkT2Zmc2V0ICsgc2tp
cHBlZExlbmd0aDsKICAgICAgICAgICAgICAgICAqbWlzc3BlbGxlZExlbmd0aCA9IHdvcmRMZW5n
dGg7CkBAIC0xMDMsMTEgKzEwOCwxNCBAQCBib29sIE1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNr
V29yZChjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCogbWlzc3BlbGxlZE9mZnNldAogICAgICAg
ICBpZiAoKm1pc3NwZWxsZWRMZW5ndGggPiAwKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgaW50IHdvcmRFbmQgPSBzdHJpbmdUZXh0LmZpbmQoaXNOb3RBU0NJSUFscGhhLCB3b3JkT2Zm
c2V0KTsKLSAgICAgICAgd29yZExlbmd0aCA9IHdvcmRFbmQgPT0gLTEgPyBzdGF0aWNfY2FzdDxp
bnQ+KHN0cmluZ1RleHQubGVuZ3RoKCkpIC0gd29yZE9mZnNldCA6IHdvcmRFbmQgLSB3b3JkT2Zm
c2V0OworICAgICAgICBzdHJpbmcxNjo6aXRlcmF0b3IgbGFzdENoYXIgPSBmaW5kX2lmKHN0cmlu
Z1RleHQuYmVnaW4oKSArIHdvcmRPZmZzZXQsIHN0cmluZ1RleHQuZW5kKCksIGlzTm90QVNDSUlB
bHBoYSk7CisgICAgICAgIGlmIChsYXN0Q2hhciA9PSBzdHJpbmdUZXh0LmVuZCgpKQorICAgICAg
ICAgICAgd29yZExlbmd0aCA9IHN0YXRpY19jYXN0PGludD4oc3RyaW5nVGV4dC5sZW5ndGgoKSkg
LSB3b3JkT2Zmc2V0OworICAgICAgICBlbHNlCisgICAgICAgICAgICB3b3JkTGVuZ3RoID0gZGlz
dGFuY2UoZmlyc3RDaGFyLCBsYXN0Q2hhcik7CiAKLSAgICAgICAgQVNTRVJUKDAgPCB3b3JkT2Zm
c2V0ICsgd29yZExlbmd0aCk7Ci0gICAgICAgIHN0cmluZ1RleHQgPSBzdHJpbmdUZXh0LnN1YnN0
cmluZyh3b3JkT2Zmc2V0ICsgd29yZExlbmd0aCk7CisgICAgICAgIFdFQktJVF9BU1NFUlQoMCA8
IHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoKTsKKyAgICAgICAgc3RyaW5nVGV4dCA9IHN0cmluZ1Rl
eHQuc3Vic3RyKHdvcmRPZmZzZXQgKyB3b3JkTGVuZ3RoKTsKICAgICAgICAgc2tpcHBlZExlbmd0
aCArPSB3b3JkT2Zmc2V0ICsgd29yZExlbmd0aDsKICAgICB9CiAKQEAgLTE3MCw3ICsxNzgsNyBA
QCBib29sIE1vY2tTcGVsbENoZWNrOjppbml0aWFsaXplSWZOZWVkZWQoKQogCiAgICAgbV9taXNz
cGVsbGVkV29yZHMuY2xlYXIoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5c2l6
ZShtaXNzcGVsbGVkV29yZHMpOyArK2kpCi0gICAgICAgIG1fbWlzc3BlbGxlZFdvcmRzLmFwcGVu
ZChTdHJpbmc6OmZyb21VVEY4KG1pc3NwZWxsZWRXb3Jkc1tpXSkpOworICAgICAgICBtX21pc3Nw
ZWxsZWRXb3Jkcy5wdXNoX2JhY2soc3RyaW5nMTYobWlzc3BlbGxlZFdvcmRzW2ldLCBtaXNzcGVs
bGVkV29yZHNbaV0gKyBzdHJsZW4obWlzc3BlbGxlZFdvcmRzW2ldKSkpOwogCiAgICAgLy8gTWFy
ayBhcyBpbml0aWFsaXplZCB0byBwcmV2ZW50IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcgaW5pdGlh
bGl6ZWQgdHdpY2UKICAgICAvLyBvciBtb3JlLgpAQCAtMTgwLDMgKzE4OCw1IEBAIGJvb2wgTW9j
a1NwZWxsQ2hlY2s6OmluaXRpYWxpemVJZk5lZWRlZCgpCiAgICAgLy8gZnVuY3Rpb24gYWx3YXlz
IHJldHVybnMgZmFsc2UuCiAgICAgcmV0dXJuIGZhbHNlOwogfQorCit9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVj
ay5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1Nw
ZWxsQ2hlY2suaAppbmRleCBlZTM4ZjIyOTIyMjYzZTdmMzE2ODM4Y2RmODQzNjVlNDMwYTVmMWE2
Li41MzU5Yzg4OGFhZWRhODU1YjIyZTE5N2M1MWRlODg4MjA5MjkwNmIxIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVj
ay5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01v
Y2tTcGVsbENoZWNrLmgKQEAgLTMzLDggKzMzLDkgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViVmVjdG9yLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNwYWNlIFdlYlRl
c3RSdW5uZXIgewogCiAvLyBBIG1vY2sgaW1wbGVtZW50YXRpb24gb2YgYSBzcGVsbC1jaGVja2Vy
IHVzZWQgZm9yIFdlYktpdCB0ZXN0cy4KIC8vIFRoaXMgY2xhc3Mgb25seSBpbXBsZW1lbnRzIHRo
ZSBtaW5pbWFsIGZ1bmN0aW9uYXJpdGllcyByZXF1aXJlZCBieSBXZWJLaXQKQEAgLTcwLDEwICs3
MSwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgaW5pdGlhbGl6ZUlmTmVlZGVkKCk7CiAKICAgICAv
LyBBIHRhYmxlIHRoYXQgY29uc2lzdHMgb2YgbWlzc3BlbGxlZCB3b3Jkcy4KLSAgICBWZWN0b3I8
U3RyaW5nPiBtX21pc3NwZWxsZWRXb3JkczsKKyAgICBzdGQ6OnZlY3RvcjxzdHJpbmcxNj4gbV9t
aXNzcGVsbGVkV29yZHM7CiAKICAgICAvLyBBIGZsYWcgcmVwcmVzZW50aW5nIHdoZXRoZXIgb3Ig
bm90IHRoaXMgb2JqZWN0IGlzIGluaXRpYWxpemVkLgogICAgIGJvb2wgbV9pbml0aWFsaXplZDsK
IH07CiAKK30KKwogI2VuZGlmIC8vIE1vY2tTcGVsbENoZWNrX2gKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxsQ2hlY2tDbGllbnQu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvU3BlbGxD
aGVja0NsaWVudC5jcHAKaW5kZXggNmVmMGY1YjE5ZmFhYzdjMWI5M2Q2NDY3NzRiMWI4MjZlN2M1
ZmM4MC4uYjA1MTgzNTJkNDc3YmNiNmY2OWNjZjcyODA2ODU5MzI4ZWIwY2ZlNSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvU3BlbGxDaGVj
a0NsaWVudC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvU3BlbGxDaGVja0NsaWVudC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJX
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIApAQCAtODEsNyAr
ODIsNyBAQCB2b2lkIFNwZWxsQ2hlY2tDbGllbnQ6OnNwZWxsQ2hlY2soY29uc3QgV2ViU3RyaW5n
JiB0ZXh0LCBpbnQmIG1pc3NwZWxsZWRPZmZzZXQsCiAKIHZvaWQgU3BlbGxDaGVja0NsaWVudDo6
Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBXZWJUZXh0Q2hlY2tp
bmdUeXBlTWFzayBtYXNrLCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0Piogd2ViUmVz
dWx0cykKIHsKLSAgICBWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOworICAg
IHZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgaWYgKG1hc2sgJiBX
ZWJUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpIHsKICAgICAgICAgc2l6ZV90IG9mZnNldCA9IDA7
CiAgICAgICAgIHNpemVfdCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOwpAQCAtOTYsNyArOTcsNyBA
QCB2b2lkIFNwZWxsQ2hlY2tDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFdlYlN0
cmluZyYgdGV4dCwgV2ViVGV4dENoZWNraQogICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBXZWJU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CiAgICAgICAgICAgICByZXN1bHQubG9jYXRpb24gPSBv
ZmZzZXQgKyBtaXNzcGVsbGVkUG9zaXRpb247CiAgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0g
bWlzc3BlbGxlZExlbmd0aDsKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7Cisg
ICAgICAgICAgICByZXN1bHRzLnB1c2hfYmFjayhyZXN1bHQpOwogICAgICAgICAgICAgb2Zmc2V0
ICs9IG1pc3NwZWxsZWRQb3NpdGlvbiArIG1pc3NwZWxsZWRMZW5ndGg7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xMjAsMTkgKzEyMSwxOSBAQCB2b2lkIFNwZWxsQ2hlY2tDbGllbnQ6OnJlcXVlc3RD
aGVja2luZ09mVGV4dChjb25zdCBXZWJTdHJpbmcmIHRleHQsIFdlYlRleHRDaGVjawogCiB2b2lk
IFNwZWxsQ2hlY2tDbGllbnQ6OmZpbmlzaExhc3RUZXh0Q2hlY2soKQogewotICAgIFZlY3RvcjxX
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CisgICAgdmVjdG9yPFdlYlRleHRDaGVja2lu
Z1Jlc3VsdD4gcmVzdWx0czsKICAgICBpbnQgb2Zmc2V0ID0gMDsKLSAgICBTdHJpbmcgdGV4dCht
X2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJpbmcuZGF0YSgpLCBtX2xhc3RSZXF1ZXN0ZWRUZXh0
Q2hlY2tTdHJpbmcubGVuZ3RoKCkpOworICAgIHN0cmluZzE2IHRleHQgPSBtX2xhc3RSZXF1ZXN0
ZWRUZXh0Q2hlY2tTdHJpbmc7CiAgICAgd2hpbGUgKHRleHQubGVuZ3RoKCkpIHsKICAgICAgICAg
aW50IG1pc3NwZWxsZWRQb3NpdGlvbiA9IDA7CiAgICAgICAgIGludCBtaXNzcGVsbGVkTGVuZ3Ro
ID0gMDsKLSAgICAgICAgbV9zcGVsbGNoZWNrLnNwZWxsQ2hlY2tXb3JkKFdlYlN0cmluZyh0ZXh0
LmNoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSksICZtaXNzcGVsbGVkUG9zaXRpb24sICZtaXNz
cGVsbGVkTGVuZ3RoKTsKKyAgICAgICAgbV9zcGVsbGNoZWNrLnNwZWxsQ2hlY2tXb3JkKFdlYlN0
cmluZyh0ZXh0KSwgJm1pc3NwZWxsZWRQb3NpdGlvbiwgJm1pc3NwZWxsZWRMZW5ndGgpOwogICAg
ICAgICBpZiAoIW1pc3NwZWxsZWRMZW5ndGgpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
V2ViVmVjdG9yPFdlYlN0cmluZz4gc3VnZ2VzdGlvbnM7Ci0gICAgICAgIG1fc3BlbGxjaGVjay5m
aWxsU3VnZ2VzdGlvbkxpc3QoV2ViU3RyaW5nKHRleHQuY2hhcmFjdGVycygpICsgbWlzc3BlbGxl
ZFBvc2l0aW9uLCBtaXNzcGVsbGVkTGVuZ3RoKSwgJnN1Z2dlc3Rpb25zKTsKLSAgICAgICAgcmVz
dWx0cy5hcHBlbmQoV2ViVGV4dENoZWNraW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1R5cGVTcGVs
bGluZywgb2Zmc2V0ICsgbWlzc3BlbGxlZFBvc2l0aW9uLCBtaXNzcGVsbGVkTGVuZ3RoLCBzdWdn
ZXN0aW9ucy5pc0VtcHR5KCkgPyBXZWJTdHJpbmcoKSA6IHN1Z2dlc3Rpb25zWzBdKSk7Ci0gICAg
ICAgIHRleHQgPSB0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGVkUG9zaXRpb24gKyBtaXNzcGVsbGVk
TGVuZ3RoKTsKKyAgICAgICAgbV9zcGVsbGNoZWNrLmZpbGxTdWdnZXN0aW9uTGlzdChXZWJTdHJp
bmcodGV4dC5zdWJzdHIobWlzc3BlbGxlZFBvc2l0aW9uLCBtaXNzcGVsbGVkTGVuZ3RoKSksICZz
dWdnZXN0aW9ucyk7CisgICAgICAgIHJlc3VsdHMucHVzaF9iYWNrKFdlYlRleHRDaGVja2luZ1Jl
c3VsdChXZWJUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcsIG9mZnNldCArIG1pc3NwZWxsZWRQb3Np
dGlvbiwgbWlzc3BlbGxlZExlbmd0aCwgc3VnZ2VzdGlvbnMuaXNFbXB0eSgpID8gV2ViU3RyaW5n
KCkgOiBzdWdnZXN0aW9uc1swXSkpOworICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHIobWlzc3Bl
bGxlZFBvc2l0aW9uICsgbWlzc3BlbGxlZExlbmd0aCk7CiAgICAgICAgIG9mZnNldCArPSBtaXNz
cGVsbGVkUG9zaXRpb24gKyBtaXNzcGVsbGVkTGVuZ3RoOwogICAgIH0KICAgICBNb2NrR3JhbW1h
ckNoZWNrOjpjaGVja0dyYW1tYXJPZlN0cmluZyhtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJp
bmcsICZyZXN1bHRzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RDb21tb24uaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RDb21tb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWY3NmY4NGUyNzY0
ZTFjYjBiNGJhNDE3MDM5OWNjYjdkZWU1MmQxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdENvbW1vbi5oCkBAIC0wLDAg
KzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFRlc3RDb21tb25faAorI2RlZmluZSBUZXN0Q29tbW9uX2gKKworI2lu
Y2x1ZGUgPGJhc2UvY29tcGlsZXJfc3BlY2lmaWMuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29t
bW9uLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2lmIGRlZmluZWQoV0lOMzIpCisjZGVmaW5l
IHNucHJpbnRmKHN0ciwgc2l6ZSwgLi4uKSBfc25wcmludGZfcyhzdHIsIHNpemUsIHNpemUsIF9f
VkFfQVJHU19fKQorI2VuZGlmCisKK2lubGluZSBib29sIGlzQVNDSUlBbHBoYShjaGFyIGNoKSB7
IHJldHVybiAoY2ggfCAweDIwKSA+PSAnYScgJiYgKGNoIHwgMHgyMCkgPD0gJ3onOyB9CisKK2lu
bGluZSBib29sIGlzTm90QVNDSUlBbHBoYShjaGFyIGNoKSB7IHJldHVybiAhaXNBU0NJSUFscGhh
KGNoKTsgfQorCisjZW5kaWYgLy8gVGVzdENvbW1vbl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNl
cy5jcHAKaW5kZXggZTNkY2Y4MDIwNTE2YzVjMWJmZTE1YzMyYzZkMjc0MDFjZTViMTYwOC4uNDZk
NmFkMDY1YmEzMGEyYTYxZmNiZTFlZWU4OWM4NDUyZWZmNThiYiAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJ
bnRlcmZhY2VzLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIHVzaW5nIFdlYktpdDo6V2ViVmlldzsK
IG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAogVGVzdEludGVyZmFjZXM6OlRlc3RJbnRlcmZh
Y2VzKCkKLSAgICA6IG1fd2ViVmlldygwKQorICAgIDogbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cihuZXcgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKSkKKyAgICAsIG1fZXZlbnRTZW5kZXIobmV3
IEV2ZW50U2VuZGVyKCkpCisgICAgLCBtX2dhbWVwYWRDb250cm9sbGVyKG5ldyBHYW1lcGFkQ29u
dHJvbGxlcigpKQorICAgICwgbV90ZXh0SW5wdXRDb250cm9sbGVyKG5ldyBUZXh0SW5wdXRDb250
cm9sbGVyKCkpCisgICAgLCBtX3Rlc3RSdW5uZXIobmV3IFRlc3RSdW5uZXIoKSkKKyAgICAsIG1f
d2ViVmlldygwKQogewotICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgPSBhZG9wdFB0cihu
ZXcgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKSk7Ci0gICAgbV9ldmVudFNlbmRlciA9IGFkb3B0
UHRyKG5ldyBFdmVudFNlbmRlcigpKTsKLSAgICBtX2dhbWVwYWRDb250cm9sbGVyID0gYWRvcHRQ
dHIobmV3IEdhbWVwYWRDb250cm9sbGVyKCkpOwotICAgIG1fdGV4dElucHV0Q29udHJvbGxlciA9
IGFkb3B0UHRyKG5ldyBUZXh0SW5wdXRDb250cm9sbGVyKCkpOwotICAgIG1fdGVzdFJ1bm5lciA9
IGFkb3B0UHRyKG5ldyBUZXN0UnVubmVyKCkpOwogfQogCiBUZXN0SW50ZXJmYWNlczo6flRlc3RJ
bnRlcmZhY2VzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oCmluZGV4IGQ4MzRjNDBiMTYyNzQy
YTY0ODYxYWNkNGNiYzc4YjZlYmJlNzQ5MjkuLjgzYjM4ZGI2ODE3OWFkMzg1ZTFmMjUwMTAyNThl
YjUwYzlkZmQ0OTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaApAQCAtMzEsNyArMzEsNyBA
QAogI2lmbmRlZiBUZXN0SW50ZXJmYWNlc19oCiAjZGVmaW5lIFRlc3RJbnRlcmZhY2VzX2gKIAot
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7CkBAIC02NSwxMSArNjUsMTEgQEAgcHVibGljOgogCiAK
IHByaXZhdGU6Ci0gICAgT3duUHRyPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPiBtX2FjY2Vzc2li
aWxpdHlDb250cm9sbGVyOwotICAgIE93blB0cjxFdmVudFNlbmRlcj4gbV9ldmVudFNlbmRlcjsK
LSAgICBPd25QdHI8R2FtZXBhZENvbnRyb2xsZXI+IG1fZ2FtZXBhZENvbnRyb2xsZXI7Ci0gICAg
T3duUHRyPFRleHRJbnB1dENvbnRyb2xsZXI+IG1fdGV4dElucHV0Q29udHJvbGxlcjsKLSAgICBP
d25QdHI8VGVzdFJ1bm5lcj4gbV90ZXN0UnVubmVyOworICAgIHN0ZDo6YXV0b19wdHI8QWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI+IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7CisgICAgc3RkOjph
dXRvX3B0cjxFdmVudFNlbmRlcj4gbV9ldmVudFNlbmRlcjsKKyAgICBzdGQ6OmF1dG9fcHRyPEdh
bWVwYWRDb250cm9sbGVyPiBtX2dhbWVwYWRDb250cm9sbGVyOworICAgIHN0ZDo6YXV0b19wdHI8
VGV4dElucHV0Q29udHJvbGxlcj4gbV90ZXh0SW5wdXRDb250cm9sbGVyOworICAgIHN0ZDo6YXV0
b19wdHI8VGVzdFJ1bm5lcj4gbV90ZXN0UnVubmVyOwogICAgIFdlYktpdDo6V2ViVmlldyogbV93
ZWJWaWV3OwogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmNwcAppbmRleCBjY2Y2MzdmMzk2NDc5ZGZi
Y2U5YjE5ZWQyZTk1NDhmNzI1NjJmZmFhLi44NGNmOWQzZmJkNWYyNGNjYzYxYmMzNjMwZDUzYzcw
YzE2NjExOGExIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9UZXN0UGx1Z2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRlc3RQbHVnaW4uaCIKIAorI2luY2x1ZGUgIlRl
c3RDb21tb24uaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYklucHV0RXZl
bnQuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKQEAgLTM1LDEyICszNiw5IEBACiAjaW5jbHVkZSA8
cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+Ci0jaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9TdHJpbmdFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2Ug
V2ViVGVzdFJ1bm5lciB7CiAKQEAgLTk5LDcgKzk3LDcgQEAgY29uc3QgY2hhciogcG9pbnRTdGF0
ZShXZWJUb3VjaFBvaW50OjpTdGF0ZSBzdGF0ZSkKICAgICAgICAgcmV0dXJuICJVbmtub3duIjsK
ICAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEzNCwxMiArMTMyLDkgQEAgdm9p
ZCBwcmludEV2ZW50RGV0YWlscyhXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlLCBjb25zdCBXZWJJ
bnB1dEV2ZW50JiBldmVudCkKIAogV2ViUGx1Z2luQ29udGFpbmVyOjpUb3VjaEV2ZW50UmVxdWVz
dFR5cGUgcGFyc2VUb3VjaEV2ZW50UmVxdWVzdFR5cGUoY29uc3QgV2ViU3RyaW5nJiBzdHJpbmcp
CiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBXZWJTdHJpbmcsIGtQcmltaXRpdmVS
YXcsIChXZWJTdHJpbmc6OmZyb21VVEY4KCJyYXciKSkpOwotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgV2ViU3RyaW5nLCBrUHJpbWl0aXZlU3ludGhldGljLCAoV2ViU3RyaW5nOjpmcm9t
VVRGOCgic3ludGhldGljIikpKTsKLQotICAgIGlmIChzdHJpbmcgPT0ga1ByaW1pdGl2ZVJhdykK
KyAgICBpZiAoc3RyaW5nID09IFdlYlN0cmluZzo6ZnJvbVVURjgoInJhdyIpKQogICAgICAgICBy
ZXR1cm4gV2ViUGx1Z2luQ29udGFpbmVyOjpUb3VjaEV2ZW50UmVxdWVzdFR5cGVSYXc7Ci0gICAg
aWYgKHN0cmluZyA9PSBrUHJpbWl0aXZlU3ludGhldGljKQorICAgIGlmIChzdHJpbmcgPT0gV2Vi
U3RyaW5nOjpmcm9tVVRGOCgic3ludGhldGljIikpCiAgICAgICAgIHJldHVybiBXZWJQbHVnaW5D
b250YWluZXI6OlRvdWNoRXZlbnRSZXF1ZXN0VHlwZVN5bnRoZXNpemVkTW91c2U7CiAgICAgcmV0
dXJuIFdlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJlcXVlc3RUeXBlTm9uZTsKIH0KQEAg
LTE2OCw3ICsxNjMsNyBAQCBUZXN0UGx1Z2luOjpUZXN0UGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgV2ViUGx1Z2luUGFyYW1zJiBwYXJhbXMsIFdlYlRlc3REZQogICAgIHN0YXRpYyBjb25z
dCBXZWJTdHJpbmcga0F0dHJpYnV0ZUNhblByb2Nlc3NEcmFnID0gV2ViU3RyaW5nOjpmcm9tVVRG
OCgiY2FuLXByb2Nlc3MtZHJhZyIpOwogICAgIHN0YXRpYyBjb25zdCBXZWJTdHJpbmcga0F0dHJp
YnV0ZVByaW50VXNlckdlc3R1cmVTdGF0dXMgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJwcmludC11
c2VyLWdlc3R1cmUtc3RhdHVzIik7CiAKLSAgICBBU1NFUlQocGFyYW1zLmF0dHJpYnV0ZU5hbWVz
LnNpemUoKSA9PSBwYXJhbXMuYXR0cmlidXRlVmFsdWVzLnNpemUoKSk7CisgICAgV0VCS0lUX0FT
U0VSVChwYXJhbXMuYXR0cmlidXRlTmFtZXMuc2l6ZSgpID09IHBhcmFtcy5hdHRyaWJ1dGVWYWx1
ZXMuc2l6ZSgpKTsKICAgICBzaXplX3Qgc2l6ZSA9IHBhcmFtcy5hdHRyaWJ1dGVOYW1lcy5zaXpl
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgY29u
c3QgV2ViU3RyaW5nJiBhdHRyaWJ1dGVOYW1lID0gcGFyYW1zLmF0dHJpYnV0ZU5hbWVzW2ldOwpA
QCAtMjEyLDcgKzIwNyw3IEBAIGJvb2wgVGVzdFBsdWdpbjo6aW5pdGlhbGl6ZShXZWJQbHVnaW5D
b250YWluZXIqIGNvbnRhaW5lcikKICAgICBpZiAoIWluaXRTY2VuZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBtX2xheWVyID0gYWRvcHRQdHIoUGxhdGZvcm06OmN1cnJlbnQoKS0+
Y29tcG9zaXRvclN1cHBvcnQoKS0+Y3JlYXRlRXh0ZXJuYWxUZXh0dXJlTGF5ZXIodGhpcykpOwor
ICAgIG1fbGF5ZXIgPSBhdXRvX3B0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllcj4oUGxhdGZvcm06
OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKS0+Y3JlYXRlRXh0ZXJuYWxUZXh0dXJlTGF5
ZXIodGhpcykpOwogICAgIG1fY29udGFpbmVyID0gY29udGFpbmVyOwogICAgIG1fY29udGFpbmVy
LT5zZXRXZWJMYXllcihtX2xheWVyLT5sYXllcigpKTsKICAgICBpZiAobV9yZVJlcXVlc3RUb3Vj
aEV2ZW50cykgewpAQCAtMjI4LDcgKzIyMyw3IEBAIHZvaWQgVGVzdFBsdWdpbjo6ZGVzdHJveSgp
CiB7CiAgICAgaWYgKG1fY29udGFpbmVyKQogICAgICAgICBtX2NvbnRhaW5lci0+c2V0V2ViTGF5
ZXIoMCk7Ci0gICAgbV9sYXllci5jbGVhcigpOworICAgIG1fbGF5ZXIucmVzZXQoKTsKICAgICBk
ZXN0cm95U2NlbmUoKTsKIAogICAgIGRlbGV0ZSBtX2NvbnRleHQ7CkBAIC0yNzUsNyArMjcwLDcg
QEAgVGVzdFBsdWdpbjo6UHJpbWl0aXZlIFRlc3RQbHVnaW46OnBhcnNlUHJpbWl0aXZlKGNvbnN0
IFdlYlN0cmluZyYgc3RyaW5nKQogICAgIGVsc2UgaWYgKHN0cmluZyA9PSBrUHJpbWl0aXZlVHJp
YW5nbGUpCiAgICAgICAgIHByaW1pdGl2ZSA9IFByaW1pdGl2ZVRyaWFuZ2xlOwogICAgIGVsc2UK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gcHJpbWl0aXZlOwogfQogCkBAIC0yOTQsNyArMjg5LDcg
QEAgdm9pZCBUZXN0UGx1Z2luOjpwYXJzZUNvbG9yKGNvbnN0IFdlYlN0cmluZyYgc3RyaW5nLCB1
bnNpZ25lZCBjb2xvclszXSkKICAgICBlbHNlIGlmIChzdHJpbmcgPT0gImJsdWUiKQogICAgICAg
ICBjb2xvclsyXSA9IDI1NTsKICAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIGZsb2F0IFRlc3RQ
bHVnaW46OnBhcnNlT3BhY2l0eShjb25zdCBXZWJTdHJpbmcmIHN0cmluZykKQEAgLTM2MSwxNCAr
MzU2LDE0IEBAIHZvaWQgVGVzdFBsdWdpbjo6ZGVzdHJveVNjZW5lKCkKIAogYm9vbCBUZXN0UGx1
Z2luOjppbml0UHJvZ3JhbSgpCiB7Ci0gICAgY29uc3QgQ1N0cmluZyB2ZXJ0ZXhTb3VyY2UoCisg
ICAgY29uc3Qgc3RyaW5nIHZlcnRleFNvdXJjZSgKICAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IHBv
c2l0aW9uOyAgXG4iCiAgICAgICAgICJ2b2lkIG1haW4oKSB7ICAgICAgICAgICAgIFxuIgogICAg
ICAgICAiICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOyBcbiIKICAgICAgICAgIn0gICAgICAgICAg
ICAgICAgICAgICAgICAgXG4iCiAgICAgKTsKIAotICAgIGNvbnN0IENTdHJpbmcgZnJhZ21lbnRT
b3VyY2UoCisgICAgY29uc3Qgc3RyaW5nIGZyYWdtZW50U291cmNlKAogICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7IFxuIgogICAgICAgICAidW5pZm9ybSB2ZWM0IGNvbG9yOyAgICAg
IFxuIgogICAgICAgICAidm9pZCBtYWluKCkgeyAgICAgICAgICAgIFxuIgpAQCAtMzg3LDcgKzM4
Miw3IEBAIGJvb2wgVGVzdFBsdWdpbjo6aW5pdFByb2dyYW0oKQogCiBib29sIFRlc3RQbHVnaW46
OmluaXRQcmltaXRpdmUoKQogewotICAgIEFTU0VSVChtX3NjZW5lLnByaW1pdGl2ZSA9PSBQcmlt
aXRpdmVUcmlhbmdsZSk7CisgICAgV0VCS0lUX0FTU0VSVChtX3NjZW5lLnByaW1pdGl2ZSA9PSBQ
cmltaXRpdmVUcmlhbmdsZSk7CiAKICAgICBtX3NjZW5lLnZibyA9IG1fY29udGV4dC0+Y3JlYXRl
QnVmZmVyKCk7CiAgICAgaWYgKCFtX3NjZW5lLnZibykKQEAgLTQwNSw5ICs0MDAsOSBAQCBib29s
IFRlc3RQbHVnaW46OmluaXRQcmltaXRpdmUoKQogCiB2b2lkIFRlc3RQbHVnaW46OmRyYXdQcmlt
aXRpdmUoKQogewotICAgIEFTU0VSVChtX3NjZW5lLnByaW1pdGl2ZSA9PSBQcmltaXRpdmVUcmlh
bmdsZSk7Ci0gICAgQVNTRVJUKG1fc2NlbmUudmJvKTsKLSAgICBBU1NFUlQobV9zY2VuZS5wcm9n
cmFtKTsKKyAgICBXRUJLSVRfQVNTRVJUKG1fc2NlbmUucHJpbWl0aXZlID09IFByaW1pdGl2ZVRy
aWFuZ2xlKTsKKyAgICBXRUJLSVRfQVNTRVJUKG1fc2NlbmUudmJvKTsKKyAgICBXRUJLSVRfQVNT
RVJUKG1fc2NlbmUucHJvZ3JhbSk7CiAKICAgICBtX2NvbnRleHQtPnVzZVByb2dyYW0obV9zY2Vu
ZS5wcm9ncmFtKTsKIApAQCAtNDIzLDcgKzQxOCw3IEBAIHZvaWQgVGVzdFBsdWdpbjo6ZHJhd1By
aW1pdGl2ZSgpCiAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7
CiB9CiAKLXVuc2lnbmVkIFRlc3RQbHVnaW46OmxvYWRTaGFkZXIodW5zaWduZWQgdHlwZSwgY29u
c3QgQ1N0cmluZyYgc291cmNlKQordW5zaWduZWQgVGVzdFBsdWdpbjo6bG9hZFNoYWRlcih1bnNp
Z25lZCB0eXBlLCBjb25zdCBzdHJpbmcmIHNvdXJjZSkKIHsKICAgICB1bnNpZ25lZCBzaGFkZXIg
PSBtX2NvbnRleHQtPmNyZWF0ZVNoYWRlcih0eXBlKTsKICAgICBpZiAoc2hhZGVyKSB7CkBAIC00
NDAsNyArNDM1LDcgQEAgdW5zaWduZWQgVGVzdFBsdWdpbjo6bG9hZFNoYWRlcih1bnNpZ25lZCB0
eXBlLCBjb25zdCBDU3RyaW5nJiBzb3VyY2UpCiAgICAgcmV0dXJuIHNoYWRlcjsKIH0KIAotdW5z
aWduZWQgVGVzdFBsdWdpbjo6bG9hZFByb2dyYW0oY29uc3QgQ1N0cmluZyYgdmVydGV4U291cmNl
LCBjb25zdCBDU3RyaW5nJiBmcmFnbWVudFNvdXJjZSkKK3Vuc2lnbmVkIFRlc3RQbHVnaW46Omxv
YWRQcm9ncmFtKGNvbnN0IHN0cmluZyYgdmVydGV4U291cmNlLCBjb25zdCBzdHJpbmcmIGZyYWdt
ZW50U291cmNlKQogewogICAgIHVuc2lnbmVkIHZlcnRleFNoYWRlciA9IGxvYWRTaGFkZXIoR0xf
VkVSVEVYX1NIQURFUiwgdmVydGV4U291cmNlKTsKICAgICB1bnNpZ25lZCBmcmFnbWVudFNoYWRl
ciA9IGxvYWRTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmcmFnbWVudFNvdXJjZSk7CkBAIC01
MzMsNyArNTI4LDcgQEAgYm9vbCBUZXN0UGx1Z2luOjpoYW5kbGVEcmFnU3RhdHVzVXBkYXRlKFdl
YkRyYWdTdGF0dXMgZHJhZ1N0YXR1cywgY29uc3QgV2ViRHJhZ0QKICAgICAgICAgZHJhZ1N0YXR1
c05hbWUgPSAiRHJhZ0Ryb3AiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYkRyYWdTdGF0
dXNVbmtub3duOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3Nh
Z2Uoc3RkOjpzdHJpbmcoIlBsdWdpbiByZWNlaXZlZCBldmVudDogIikgKyBkcmFnU3RhdHVzTmFt
ZSArICJcbiIpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uaAppbmRleCAxZTEw
MGRhZTkxZmMwMmMwZDEwOTkyZDU3NmM4NDIwYjBhZDRlNDQ2Li41M2IyMmUxMWJjNjZiZDUxZmE1
MzMyMjNlMjhmM2U1M2RkMjBiODliIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5oCkBAIC0yOCw5ICsyOCwx
MCBAQAogCiAjaW5jbHVkZSAiV2ViUGx1Z2luLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luQ29udGFp
bmVyLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRl
eHR1cmVMYXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckNs
aWVudC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDxzdHJpbmc+CiAKIG5h
bWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIApAQCAtMTI0LDggKzEyNSw4IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpbml0UHJvZ3JhbSgpOwogICAgIGJvb2wgaW5pdFByaW1pdGl2ZSgpOwogICAgIHZv
aWQgZHJhd1ByaW1pdGl2ZSgpOwotICAgIHVuc2lnbmVkIGxvYWRTaGFkZXIodW5zaWduZWQgdHlw
ZSwgY29uc3QgV1RGOjpDU3RyaW5nJiBzb3VyY2UpOwotICAgIHVuc2lnbmVkIGxvYWRQcm9ncmFt
KGNvbnN0IFdURjo6Q1N0cmluZyYgdmVydGV4U291cmNlLCBjb25zdCBXVEY6OkNTdHJpbmcmIGZy
YWdtZW50U291cmNlKTsKKyAgICB1bnNpZ25lZCBsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUsIGNv
bnN0IHN0ZDo6c3RyaW5nJiBzb3VyY2UpOworICAgIHVuc2lnbmVkIGxvYWRQcm9ncmFtKGNvbnN0
IHN0ZDo6c3RyaW5nJiB2ZXJ0ZXhTb3VyY2UsIGNvbnN0IHN0ZDo6c3RyaW5nJiBmcmFnbWVudFNv
dXJjZSk7CiAKICAgICBXZWJLaXQ6OldlYkZyYW1lKiBtX2ZyYW1lOwogICAgIFdlYlRlc3REZWxl
Z2F0ZSogbV9kZWxlZ2F0ZTsKQEAgLTEzNiw3ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fY29sb3JUZXh0dXJlOwogICAgIHVuc2lnbmVkIG1fZnJhbWVidWZmZXI7CiAgICAgU2Nl
bmUgbV9zY2VuZTsKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcj4g
bV9sYXllcjsKKyAgICBzdGQ6OmF1dG9fcHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXI+IG1fbGF5ZXI7CiAKICAgICBXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVu
dFJlcXVlc3RUeXBlIG1fdG91Y2hFdmVudFJlcXVlc3Q7CiAgICAgLy8gUmVxdWVzdHMgdG91Y2gg
ZXZlbnRzIGZyb20gdGhlIFdlYlBsdWdpbkNvbnRhaW5lckltcGwgbXVsdGlwbGUgdGltZXMgdG8g
dGlja2xlIHdlYmtpdC5vcmcvYi8xMDgzODEKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKaW5kZXggODk5
MDEyYjMyYWMyYjE1YWU1YTA2MGRlN2MyZGVjMzU0ZDNjNTM4OC4uZGFhYzUyMTJiMjhiMzlhYjdm
NDQzNmE2YzAzYjYwYTk4MTExYzY4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKQEAgLTU1LDEy
ICs1NSwxMiBAQAogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJXb3JrZXJJbmZv
LmgiCiAjaW5jbHVkZSAidjgvaW5jbHVkZS92OC5oIgorI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8cHVibGljL1dlYkRhdGEuaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViUG9pbnQuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIE9TKExJTlVYKSB8fCBPUyhBTkRST0lEKQorI2lm
IGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKEFORFJPSUQpCiAjaW5jbHVkZSAibGludXgv
V2ViRm9udFJlbmRlcmluZy5oIgogI2VuZGlmCiAKQEAgLTgzLDIyICs4MywyMCBAQCBwdWJsaWM6
CiAKIGNsYXNzIEludm9rZUNhbGxiYWNrVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPFRlc3RS
dW5uZXI+IHsKIHB1YmxpYzoKLSAgICBJbnZva2VDYWxsYmFja1Rhc2soVGVzdFJ1bm5lciogb2Jq
ZWN0LCBQYXNzT3duQXJyYXlQdHI8Q3BwVmFyaWFudD4gY2FsbGJhY2tBcmd1bWVudHMsIHVpbnQz
Ml90IG51bWJlck9mQXJndW1lbnRzKQorICAgIEludm9rZUNhbGxiYWNrVGFzayhUZXN0UnVubmVy
KiBvYmplY3QsIGF1dG9fcHRyPENwcFZhcmlhbnQ+IGNhbGxiYWNrQXJndW1lbnRzKQogICAgICAg
ICA6IFdlYk1ldGhvZFRhc2s8VGVzdFJ1bm5lcj4ob2JqZWN0KQogICAgICAgICAsIG1fY2FsbGJh
Y2tBcmd1bWVudHMoY2FsbGJhY2tBcmd1bWVudHMpCi0gICAgICAgICwgbV9udW1iZXJPZkFyZ3Vt
ZW50cyhudW1iZXJPZkFyZ3VtZW50cykKICAgICB7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lk
IHJ1bklmVmFsaWQoKQogICAgIHsKICAgICAgICAgQ3BwVmFyaWFudCBpbnZva2VSZXN1bHQ7Ci0g
ICAgICAgIG1fY2FsbGJhY2tBcmd1bWVudHNbMF0uaW52b2tlRGVmYXVsdChtX2NhbGxiYWNrQXJn
dW1lbnRzLmdldCgpLCBtX251bWJlck9mQXJndW1lbnRzLCBpbnZva2VSZXN1bHQpOworICAgICAg
ICBtX2NhbGxiYWNrQXJndW1lbnRzLT5pbnZva2VEZWZhdWx0KG1fY2FsbGJhY2tBcmd1bWVudHMu
Z2V0KCksIDEsIGludm9rZVJlc3VsdCk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIE93bkFycmF5
UHRyPENwcFZhcmlhbnQ+IG1fY2FsbGJhY2tBcmd1bWVudHM7Ci0gICAgdWludDMyX3QgbV9udW1i
ZXJPZkFyZ3VtZW50czsKKyAgICBhdXRvX3B0cjxDcHBWYXJpYW50PiBtX2NhbGxiYWNrQXJndW1l
bnRzOwogfTsKIAogfQpAQCAtMTEzLDcgKzExMSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6V29ya1F1
ZXVlOjpwcm9jZXNzV29ya1Nvb24oKQogICAgIGlmIChtX2NvbnRyb2xsZXItPnRvcExvYWRpbmdG
cmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcXVldWUuaXNFbXB0eSgpKSB7
CisgICAgaWYgKCFtX3F1ZXVlLmVtcHR5KCkpIHsKICAgICAgICAgLy8gV2UgZGVsYXkgcHJvY2Vz
c2luZyBxdWV1ZWQgd29yayB0byBhdm9pZCByZWN1cnNpb24gcHJvYmxlbXMuCiAgICAgICAgIG1f
Y29udHJvbGxlci0+bV9kZWxlZ2F0ZS0+cG9zdFRhc2sobmV3IFdvcmtRdWV1ZVRhc2sodGhpcykp
OwogICAgIH0gZWxzZSBpZiAoIW1fY29udHJvbGxlci0+bV93YWl0VW50aWxEb25lKQpAQCAtMTIz
LDkgKzEyMSwxMCBAQCB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dvcmtTb29u
KCkKIHZvaWQgVGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpwcm9jZXNzV29yaygpCiB7CiAgICAgLy8g
UXVpdCBkb2luZyB3b3JrIG9uY2UgYSBsb2FkIGlzIGluIHByb2dyZXNzLgotICAgIHdoaWxlICgh
bV9xdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgYm9vbCBzdGFydGVkTG9hZCA9IG1fcXVldWUu
Zmlyc3QoKS0+cnVuKG1fY29udHJvbGxlci0+bV9kZWxlZ2F0ZSwgbV9jb250cm9sbGVyLT5tX3dl
YlZpZXcpOwotICAgICAgICBkZWxldGUgbV9xdWV1ZS50YWtlRmlyc3QoKTsKKyAgICB3aGlsZSAo
IW1fcXVldWUuZW1wdHkoKSkgeworICAgICAgICBib29sIHN0YXJ0ZWRMb2FkID0gbV9xdWV1ZS5m
cm9udCgpLT5ydW4obV9jb250cm9sbGVyLT5tX2RlbGVnYXRlLCBtX2NvbnRyb2xsZXItPm1fd2Vi
Vmlldyk7CisgICAgICAgIGRlbGV0ZSBtX3F1ZXVlLmZyb250KCk7CisgICAgICAgIG1fcXVldWUu
cG9wX2Zyb250KCk7CiAgICAgICAgIGlmIChzdGFydGVkTG9hZCkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0xMzcsOCArMTM2LDEwIEBAIHZvaWQgVGVzdFJ1bm5lcjo6V29ya1F1ZXVl
Ojpwcm9jZXNzV29yaygpCiB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cmVzZXQoKQogewog
ICAgIG1fZnJvemVuID0gZmFsc2U7Ci0gICAgd2hpbGUgKCFtX3F1ZXVlLmlzRW1wdHkoKSkKLSAg
ICAgICAgZGVsZXRlIG1fcXVldWUudGFrZUZpcnN0KCk7CisgICAgd2hpbGUgKCFtX3F1ZXVlLmVt
cHR5KCkpIHsKKyAgICAgICAgZGVsZXRlIG1fcXVldWUuZnJvbnQoKTsKKyAgICAgICAgbV9xdWV1
ZS5wb3BfZnJvbnQoKTsKKyAgICB9CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjph
ZGRXb3JrKFdvcmtJdGVtKiB3b3JrKQpAQCAtMTQ3LDcgKzE0OCw3IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6V29ya1F1ZXVlOjphZGRXb3JrKFdvcmtJdGVtKiB3b3JrKQogICAgICAgICBkZWxldGUgd29y
azsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3F1ZXVlLmFwcGVuZCh3b3JrKTsKKyAg
ICBtX3F1ZXVlLnB1c2hfYmFjayh3b3JrKTsKIH0KIAogCkBAIC0xNTYsOCArMTU3LDggQEAgVGVz
dFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAgICAgLCBtX3dvcmtRdWV1ZSh0aGlzKQogICAgICwgbV9k
ZWxlZ2F0ZSgwKQogICAgICwgbV93ZWJWaWV3KDApCi0gICAgLCBtX2ludGVudENsaWVudChhZG9w
dFB0cihuZXcgRW1wdHlXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQpKQotICAgICwgbV93ZWJQZXJt
aXNzaW9ucyhhZG9wdFB0cihuZXcgV2ViUGVybWlzc2lvbnMpKQorICAgICwgbV9pbnRlbnRDbGll
bnQobmV3IEVtcHR5V2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50KQorICAgICwgbV93ZWJQZXJtaXNz
aW9ucyhuZXcgV2ViUGVybWlzc2lvbnMpCiB7CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgbWFwIHRo
YXQgYXNzb2NpYXRlcyBtZXRob2RzIG9mIHRoaXMgY2xhc3Mgd2l0aCB0aGUgbmFtZXMKICAgICAv
LyB0aGV5IHdpbGwgdXNlIHdoZW4gY2FsbGVkIGJ5IEphdmFTY3JpcHQuIFRoZSBhY3R1YWwgYmlu
ZGluZyBvZiB0aG9zZQpAQCAtMjE1LDEzICsyMTYsMTEgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5l
cigpCiAgICAgYmluZE1ldGhvZCgic2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkIiwgJlRlc3RS
dW5uZXI6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0
U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCIsICZUZXN0UnVubmVyOjpzZXRTZWxlY3RU
cmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrRGV2aWNl
T3JpZW50YXRpb24iLCAmVGVzdFJ1bm5lcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKTsKLSNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIGJpbmRNZXRob2QoImRpZEFjcXVpcmVQb2ludGVy
TG9jayIsICZUZXN0UnVubmVyOjpkaWRBY3F1aXJlUG9pbnRlckxvY2spOwogICAgIGJpbmRNZXRo
b2QoImRpZExvc2VQb2ludGVyTG9jayIsICZUZXN0UnVubmVyOjpkaWRMb3NlUG9pbnRlckxvY2sp
OwogICAgIGJpbmRNZXRob2QoImRpZE5vdEFjcXVpcmVQb2ludGVyTG9jayIsICZUZXN0UnVubmVy
OjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2spOwogICAgIGJpbmRNZXRob2QoInNldFBvaW50ZXJM
b2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSIsICZUZXN0UnVubmVyOjpzZXRQb2ludGVyTG9j
a1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkpOwogICAgIGJpbmRNZXRob2QoInNldFBvaW50ZXJM
b2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5IiwgJlRlc3RSdW5uZXI6OnNldFBvaW50ZXJMb2NrV2ls
bEZhaWxTeW5jaHJvbm91c2x5KTsKLSNlbmRpZgogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBtb2Rp
ZnkgV2ViUHJlZmVyZW5jZXMuCiAgICAgYmluZE1ldGhvZCgic2V0VXNlclN0eWxlU2hlZXRFbmFi
bGVkIiwgJlRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCk7CkBAIC0yNzMsOCAr
MjcyLDggQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAgICAgYmluZE1ldGhvZCgic2V0V2ls
bFNlbmRSZXF1ZXN0UmV0dXJuc051bGwiLCAmVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0
UmV0dXJuc051bGwpOwogICAgIGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNO
dWxsT25SZWRpcmVjdCIsICZUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVs
bE9uUmVkaXJlY3QpOwogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIC8vIFRoZSBmb2xs
b3dpbmcgbWV0aG9kcyBpbnRlcmFjdCB3aXRoIHRoZSBXZWJUZXN0UHJveHkuCisjaWYgRU5BQkxF
X1dFQl9JTlRFTlRTCiAgICAgYmluZE1ldGhvZCgic2VuZFdlYkludGVudFJlc3BvbnNlIiwgJlRl
c3RSdW5uZXI6OnNlbmRXZWJJbnRlbnRSZXNwb25zZSk7CiAgICAgYmluZE1ldGhvZCgiZGVsaXZl
cldlYkludGVudCIsICZUZXN0UnVubmVyOjpkZWxpdmVyV2ViSW50ZW50KTsKICNlbmRpZgpAQCAt
Mjk0LDE5ICsyOTMsMTMgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAgICAgYmluZE1ldGhv
ZCgic2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uIiwgJlRlc3RSdW5uZXI6OnNldEdlb2xvY2F0aW9u
UGVybWlzc2lvbik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25V
bmF2YWlsYWJsZUVycm9yIiwgJlRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
VW5hdmFpbGFibGVFcnJvcik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb24iLCAmVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOwotI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQogICAgIGJpbmRNZXRob2QoImdyYW50V2ViTm90aWZpY2F0aW9u
UGVybWlzc2lvbiIsICZUZXN0UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24p
OwogICAgIGJpbmRNZXRob2QoInNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2siLCAm
VGVzdFJ1bm5lcjo6c2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGljayk7Ci0jZW5kaWYK
LSNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgIGJpbmRNZXRob2QoImFkZE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdCIsICZUZXN0UnVubmVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQpOwogICAg
IGJpbmRNZXRob2QoInNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0IiwgJlRlc3RSdW5uZXI6OnNl
dE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KTsKLSNlbmRpZgotI2lmIEVOQUJMRShTQ1JJUFRFRF9T
UEVFQ0gpCiAgICAgYmluZE1ldGhvZCgiYWRkTW9ja1NwZWVjaFJlY29nbml0aW9uUmVzdWx0Iiwg
JlRlc3RSdW5uZXI6OmFkZE1vY2tTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCk7CiAgICAgYmluZE1l
dGhvZCgic2V0TW9ja1NwZWVjaFJlY29nbml0aW9uRXJyb3IiLCAmVGVzdFJ1bm5lcjo6c2V0TW9j
a1NwZWVjaFJlY29nbml0aW9uRXJyb3IpOwogICAgIGJpbmRNZXRob2QoIndhc01vY2tTcGVlY2hS
ZWNvZ25pdGlvbkFib3J0ZWQiLCAmVGVzdFJ1bm5lcjo6d2FzTW9ja1NwZWVjaFJlY29nbml0aW9u
QWJvcnRlZCk7Ci0jZW5kaWYKICAgICBiaW5kTWV0aG9kKCJkaXNwbGF5IiwgJlRlc3RSdW5uZXI6
OmRpc3BsYXkpOwogICAgIGJpbmRNZXRob2QoImRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbiIsICZU
ZXN0UnVubmVyOjpkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24pOwogCkBAIC0zMjEsMTEgKzMxNCw5
IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUg
c3R1YnMuCiAgICAgYmluZE1ldGhvZCgiZHVtcERhdGFiYXNlQ2FsbGJhY2tzIiwgJlRlc3RSdW5u
ZXI6Om5vdEltcGxlbWVudGVkKTsKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBiaW5k
TWV0aG9kKCJkZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbiIsICZUZXN0UnVubmVyOjpub3RJ
bXBsZW1lbnRlZCk7CiAgICAgYmluZE1ldGhvZCgicmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVy
bWlzc2lvbnMiLCAmVGVzdFJ1bm5lcjo6bm90SW1wbGVtZW50ZWQpOwogICAgIGJpbmRNZXRob2Qo
InNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2siLCAmVGVzdFJ1bm5lcjo6bm90SW1wbGVtZW50
ZWQpOwotI2VuZGlmCiAgICAgYmluZE1ldGhvZCgic2V0SWNvbkRhdGFiYXNlRW5hYmxlZCIsICZU
ZXN0UnVubmVyOjpub3RJbXBsZW1lbnRlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0U2Nyb2xsYmFy
UG9saWN5IiwgJlRlc3RSdW5uZXI6Om5vdEltcGxlbWVudGVkKTsKICAgICBiaW5kTWV0aG9kKCJj
bGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzIiwgJlRlc3RSdW5uZXI6Om5vdEltcGxlbWVudGVkKTsK
QEAgLTM2Niw3ICszNTcsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBpZiAobV93
ZWJWaWV3KSB7CiAgICAgICAgIG1fd2ViVmlldy0+c2V0Wm9vbUxldmVsKGZhbHNlLCAwKTsKICAg
ICAgICAgbV93ZWJWaWV3LT5zZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHModHJ1ZSk7Ci0j
aWYgIU9TKERBUldJTikgJiYgIU9TKFdJTkRPV1MpIC8vIEFjdHVhbGx5LCBUT09MS0lUX0dUSwor
I2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoV0lOMzIpIC8vIEFjdHVhbGx5LCBU
T09MS0lUX0dUSwogICAgICAgICAvLyAoQ29uc3RhbnRzIGNvcGllZCBiZWNhdXNlIHdlIGNhbid0
IGRlcGVuZCBvbiB0aGUgaGVhZGVyIHRoYXQgZGVmaW5lZAogICAgICAgICAvLyB0aGVtIGZyb20g
dGhpcyBmaWxlLikKICAgICAgICAgbV93ZWJWaWV3LT5zZXRTZWxlY3Rpb25Db2xvcnMoMHhmZjFl
OTBmZiwgMHhmZjAwMDAwMCwgMHhmZmM4YzhjOCwgMHhmZjMyMzIzMik7CkBAIC0zODEsNyArMzcy
LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpyZXNldCgpCiAgICAgbV9wb2xpY3lEZWxlZ2F0ZVNob3Vs
ZE5vdGlmeURvbmUgPSBmYWxzZTsKIAogICAgIFdlYlNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdp
bkFjY2Vzc1doaXRlbGlzdHMoKTsKLSNpZiBPUyhMSU5VWCkgfHwgT1MoQU5EUk9JRCkKKyNpZiBk
ZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChBTkRST0lEKQogICAgIFdlYkZvbnRSZW5kZXJp
bmc6OnNldFN1YnBpeGVsUG9zaXRpb25pbmcoZmFsc2UpOwogI2VuZGlmCiAKQEAgLTQyMCw3ICs0
MTEsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlc2V0KCkKICAgICBtX3Nob3VsZEJsb2NrUmVkaXJl
Y3RzID0gZmFsc2U7CiAgICAgbV93aWxsU2VuZFJlcXVlc3RTaG91bGRSZXR1cm5OdWxsID0gZmFs
c2U7CiAgICAgbV9zbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSB0cnVlOwotI2lmIE9TKFdJTkRP
V1MpCisjaWZkZWYgV0lOMzIKICAgICBtX3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQg
PSB0cnVlOwogI2Vsc2UKICAgICBtX3NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgPSBm
YWxzZTsKQEAgLTYzNiw3ICs2MjcsNyBAQCBXZWJGcmFtZSogVGVzdFJ1bm5lcjo6dG9wTG9hZGlu
Z0ZyYW1lKCkgY29uc3QKIAogdm9pZCBUZXN0UnVubmVyOjpwb2xpY3lEZWxlZ2F0ZURvbmUoKQog
ewotICAgIEFTU0VSVChtX3dhaXRVbnRpbERvbmUpOworICAgIFdFQktJVF9BU1NFUlQobV93YWl0
VW50aWxEb25lKTsKICAgICBtX2RlbGVnYXRlLT50ZXN0RmluaXNoZWQoKTsKICAgICBtX3dhaXRV
bnRpbERvbmUgPSBmYWxzZTsKIH0KQEAgLTEzMzEsNyArMTMyMiw3IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6ZmluZFN0cmluZyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzdWx0CiAgICAgV2ViRmluZE9wdGlvbnMgZmluZE9wdGlvbnM7CiAgICAgYm9vbCB3cmFw
QXJvdW5kID0gZmFsc2U7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPj0gMikgewotICAgICAg
ICBWZWN0b3I8c3RkOjpzdHJpbmc+IG9wdGlvbnNBcnJheSA9IGFyZ3VtZW50c1sxXS50b1N0cmlu
Z1ZlY3RvcigpOworICAgICAgICB2ZWN0b3I8c3RyaW5nPiBvcHRpb25zQXJyYXkgPSBhcmd1bWVu
dHNbMV0udG9TdHJpbmdWZWN0b3IoKTsKICAgICAgICAgZmluZE9wdGlvbnMubWF0Y2hDYXNlID0g
dHJ1ZTsKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wdGlvbnNBcnJheS5zaXpl
KCk7ICsraSkgewpAQCAtMTQxMSw3ICsxNDAyLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZWxlY3Rp
b25Bc01hcmt1cChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoK
IAogdm9pZCBUZXN0UnVubmVyOjpzZXRUZXh0U3VicGl4ZWxQb3NpdGlvbmluZyhjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewotI2lmIE9TKExJ
TlVYKSB8fCBPUyhBTkRST0lEKQorI2lmIGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKEFO
RFJPSUQpCiAgICAgLy8gU2luY2UgRm9udENvbmZpZyBkb2Vzbid0IHByb3ZpZGUgYSB2YXJpYWJs
ZSB0byBjb250cm9sIHN1YnBpeGVsIHBvc2l0aW9uaW5nLCB3ZSdsbCBmYWxsIGJhY2sKICAgICAv
LyB0byBzZXR0aW5nIGl0IGdsb2JhbGx5IGZvciBhbGwgZm9udHMuCiAgICAgaWYgKGFyZ3VtZW50
cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkKQEAgLTE2ODAsNyArMTY3MSw3
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50CiAgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRT
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiIpCiAgICAgICAgIHByZWZzLT5zaG91bGRSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbiA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwogICAgIGVsc2Ug
aWYgKGtleSA9PSAiV2ViS2l0V2ViQXVkaW9FbmFibGVkIikKLSAgICAgICAgQVNTRVJUKGNwcFZh
cmlhbnRUb0Jvb2wodmFsdWUpKTsKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjcHBWYXJpYW50VG9C
b29sKHZhbHVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIHN0cmluZyBtZXNzYWdlKCJJbnZhbGlk
IG5hbWUgZm9yIHByZWZlcmVuY2U6ICIpOwogICAgICAgICBtZXNzYWdlLmFwcGVuZChrZXkpOwpA
QCAtMTcyNSw3ICsxNzE2LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRUb3VjaERyYWdEcm9wRW5h
YmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmEKICAgICByZXN1bHQt
PnNldE51bGwoKTsKIH0KIAotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpZiBFTkFCTEVfV0VC
X0lOVEVOVFMKIHZvaWQgVGVzdFJ1bm5lcjo6c2VuZFdlYkludGVudFJlc3BvbnNlKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgdjg6
OkhhbmRsZVNjb3BlIHNjb3BlOwpAQCAtMTgzMywxMCArMTgyNCwxMCBAQCB2b2lkIFRlc3RSdW5u
ZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaQogICAgIGZsb2F0IHZhbHVlID0gYXJndW1lbnRzWzBdLnZhbHVlLmRvdWJsZVZh
bHVlOwogICAgIG1fZGVsZWdhdGUtPnNldERldmljZVNjYWxlRmFjdG9yKHZhbHVlKTsKIAotICAg
IE93bkFycmF5UHRyPENwcFZhcmlhbnQ+IGNhbGxiYWNrQXJndW1lbnRzID0gYWRvcHRBcnJheVB0
cihuZXcgQ3BwVmFyaWFudFsxXSk7Ci0gICAgY2FsbGJhY2tBcmd1bWVudHNbMF0uc2V0KGFyZ3Vt
ZW50c1sxXSk7CisgICAgYXV0b19wdHI8Q3BwVmFyaWFudD4gY2FsbGJhY2tBcmd1bWVudHMobmV3
IENwcFZhcmlhbnQoKSk7CisgICAgY2FsbGJhY2tBcmd1bWVudHMtPnNldChhcmd1bWVudHNbMV0p
OwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIG1fZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBJ
bnZva2VDYWxsYmFja1Rhc2sodGhpcywgY2FsbGJhY2tBcmd1bWVudHMucmVsZWFzZSgpLCAxKSk7
CisgICAgbV9kZWxlZ2F0ZS0+cG9zdFRhc2sobmV3IEludm9rZUNhbGxiYWNrVGFzayh0aGlzLCBj
YWxsYmFja0FyZ3VtZW50cykpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFBPU0lYTG9jYWxl
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCkBA
IC0xODc3LDcgKzE4NjgsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBDcHBBcmd1bWVudExpcwogICAgIG1fZGVsZWdh
dGUtPnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihhcmd1bWVudHNb
MF0udG9TdHJpbmcoKSk7CiB9CiAKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIHZvaWQgVGVz
dFJ1bm5lcjo6Z3JhbnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgaWYgKGFyZ3VtZW50
cy5zaXplKCkgIT0gMSB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpIHsKQEAgLTE4OTYsOSAr
MTg4Niw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRpb25D
bGljayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtCiAgICAgfQogICAgIHJlc3VsdC0+c2V0
KG1fZGVsZWdhdGUtPnNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2soYXJndW1lbnRz
WzBdLnRvU3RyaW5nKCkpKTsKIH0KLSNlbmRpZgogCi0jaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkK
IHZvaWQgVGVzdFJ1bm5lcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5z
ZXROdWxsKCk7CkBAIC0xOTE2LDkgKzE5MDQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tT
cGVlY2hJbnB1dER1bXBSZWN0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcAog
CiAgICAgbV9kZWxlZ2F0ZS0+c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QoYXJndW1lbnRzWzBd
LnRvQm9vbGVhbigpKTsKIH0KLSNlbmRpZgogCi0jaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkK
IHZvaWQgVGVzdFJ1bm5lcjo6YWRkTW9ja1NwZWVjaFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVz
dWx0LT5zZXROdWxsKCk7CkBAIC0xOTQxLDcgKzE5MjcsNiBAQCB2b2lkIFRlc3RSdW5uZXI6Ondh
c01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaQogewogICAgIHJlc3VsdC0+c2V0KG1fZGVsZWdhdGUtPndhc01vY2tTcGVlY2hSZWNvZ25p
dGlvbkFib3J0ZWQoKSk7CiB9Ci0jZW5kaWYKIAogdm9pZCBUZXN0UnVubmVyOjpkaXNwbGF5KGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CkBA
IC0yMTIxLDcgKzIxMDYsNiBAQCB2b2lkIFRlc3RSdW5uZXI6Om5vdEltcGxlbWVudGVkKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKICAgICByZXN1bHQtPnNldE51
bGwoKTsKIH0KIAotI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiB2b2lkIFRlc3RSdW5uZXI6OmRp
ZEFjcXVpcmVQb2ludGVyTG9jayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCiB7CiAgICAgbV9kZWxlZ2F0ZS0+ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CkBAIC0y
MTUxLDYgKzIxMzUsNSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFBvaW50ZXJMb2NrV2lsbEZhaWxT
eW5jaHJvbm91c2x5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcAogICAgIG1fZGVsZWdhdGUt
PnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCk7CiAgICAgcmVzdWx0LT5zZXRO
dWxsKCk7CiB9Ci0jZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCmluZGV4IDA0MmQ1MzUwOTI5
NTFjMmMwMDgxN2IxN2QwYmJlMWVkMTVhY2E1ZjUuLjNmZTFjMWZlM2Q3NjVkZTRiZTk1NjNjZmE5
N2I5ZWExOWVhNjg4OTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgKQEAgLTM0LDE1ICszNCwxNyBAQAog
I2RlZmluZSBUZXN0UnVubmVyX2gKIAogI2luY2x1ZGUgIkNwcEJvdW5kQ2xhc3MuaCIKKyNpbmNs
dWRlICJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5j
bHVkZSAiV2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVGFzay5oIgog
I2luY2x1ZGUgIldlYlRlc3RSdW5uZXIuaCIKICNpbmNsdWRlICJXZWJUZXh0RGlyZWN0aW9uLmgi
CisjaW5jbHVkZSA8ZGVxdWU+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJVUkwuaD4KICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkFycmF5QnVmZmVyVmll
dzsKQEAgLTE0MSw3ICsxNDMsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGFkZFdvcmsoV29y
a0l0ZW0qKTsKIAogICAgICAgICB2b2lkIHNldEZyb3plbihib29sIGZyb3plbikgeyBtX2Zyb3pl
biA9IGZyb3plbjsgfQotICAgICAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBtX3F1ZXVlLmlz
RW1wdHkoKTsgfQorICAgICAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBtX3F1ZXVlLmVtcHR5
KCk7IH0KICAgICAgICAgV2ViVGFza0xpc3QqIHRhc2tMaXN0KCkgeyByZXR1cm4gJm1fdGFza0xp
c3Q7IH0KIAogICAgIHByaXZhdGU6CkBAIC0xNTMsNyArMTU1LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgfTsKIAogICAgICAgICBXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OwotICAgICAgICBEZXF1ZTxX
b3JrSXRlbSo+IG1fcXVldWU7CisgICAgICAgIHN0ZDo6ZGVxdWU8V29ya0l0ZW0qPiBtX3F1ZXVl
OwogICAgICAgICBib29sIG1fZnJvemVuOwogICAgICAgICBUZXN0UnVubmVyKiBtX2NvbnRyb2xs
ZXI7CiAgICAgfTsKQEAgLTI3NSwxMyArMjc3LDExIEBAIHByaXZhdGU6CiAgICAgLy8gRGV2aWNl
T3JpZW50YXRpb24gcmVsYXRlZCBmdW5jdGlvbnMKICAgICB2b2lkIHNldE1vY2tEZXZpY2VPcmll
bnRhdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQogICAgIHZvaWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGRpZE5vdEFjcXVpcmVQb2lu
dGVyTG9jayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBk
aWRMb3NlUG9pbnRlckxvY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwog
ICAgIHZvaWQgc2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0UG9pbnRlckxvY2tXaWxsUmVz
cG9uZEFzeW5jaHJvbm91c2x5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
LSNlbmRpZgogCiAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAgLy8gTWV0aG9kcyBtb2RpZnlp
bmcgV2ViUHJlZmVyZW5jZXMuCkBAIC00MjAsNyArNDIwLDcgQEAgcHJpdmF0ZToKICAgICAvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KICAgICAvLyBNZXRob2RzIGludGVyYWN0aW5nIHdpdGggdGhlIFdlYlRl
c3RQcm94eQogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2lmIEVOQUJMRV9XRUJfSU5URU5U
UwogICAgIC8vIEV4cGVjdHMgb25lIHN0cmluZyBhcmd1bWVudCBmb3Igc2VuZGluZyBzdWNjZXNz
ZnVsIHJlc3VsdCwgemVybwogICAgIC8vIGFyZ3VtZW50cyBmb3Igc2VuZGluZyBhIGZhaWx1cmUg
cmVzdWx0LgogICAgIHZvaWQgc2VuZFdlYkludGVudFJlc3BvbnNlKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKQEAgLTQ2OCwyMyArNDY4LDE3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxh
YmxlRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCi0jaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCiAgICAgLy8gR3JhbnRzIHBlcm1pc3Npb24gZm9yIGRlc2t0b3Ag
bm90aWZpY2F0aW9ucyB0byBhbiBvcmlnaW4KICAgICB2b2lkIGdyYW50V2ViTm90aWZpY2F0aW9u
UGVybWlzc2lvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgLy8g
U2ltdWxhdGVzIGEgY2xpY2sgb24gYSBkZXNrdG9wIG5vdGlmaWNhdGlvbi4KICAgICB2b2lkIHNp
bXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOwotI2VuZGlmCiAKICAgICAvLyBTcGVlY2ggaW5wdXQgcmVsYXRlZCBmdW5j
dGlvbnMuCi0jaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICB2b2lkIGFkZE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9p
ZCBzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQogICAgIHZvaWQg
YWRkTW9ja1NwZWVjaFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKICAgICB2b2lkIHNldE1vY2tTcGVlY2hSZWNvZ25pdGlvbkVycm9yKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHdhc01vY2tTcGVlY2hS
ZWNvZ25pdGlvbkFib3J0ZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwot
I2VuZGlmCiAKICAgICB2b2lkIGRpc3BsYXkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwogICAgIHZvaWQgZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKQEAgLTY4MiwxMCArNjc2LDEwIEBAIHByaXZhdGU6CiAg
ICAgV2ViS2l0OjpXZWJGcmFtZSogbV90b3BMb2FkaW5nRnJhbWU7CiAKICAgICAvLyBNb2NrIG9i
amVjdCBmb3IgdGVzdGluZyBkZWxpdmVyaW5nIHdlYiBpbnRlbnRzLgotICAgIE93blB0cjxXZWJL
aXQ6OldlYkRlbGl2ZXJlZEludGVudENsaWVudD4gbV9pbnRlbnRDbGllbnQ7CisgICAgc3RkOjph
dXRvX3B0cjxXZWJLaXQ6OldlYkRlbGl2ZXJlZEludGVudENsaWVudD4gbV9pbnRlbnRDbGllbnQ7
CiAKICAgICAvLyBXZWJQZXJtaXNzaW9uQ2xpZW50IG1vY2sgb2JqZWN0LgotICAgIE93blB0cjxX
ZWJQZXJtaXNzaW9ucz4gbV93ZWJQZXJtaXNzaW9uczsKKyAgICBzdGQ6OmF1dG9fcHRyPFdlYlBl
cm1pc3Npb25zPiBtX3dlYlBlcm1pc3Npb25zOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGV4dElucHV0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0
SW5wdXRDb250cm9sbGVyLmNwcAppbmRleCAzMjI1Y2I5MGM0MmE2ZWViYmJhYjU5NDcwNzJlMzJh
NGE3YTIwMjgwLi5mNWY5YjJhZTgwOTJhMzc4YzMyNjUyM2FkZjM3YTE4YWE5NDQwNTUyIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0
SW5wdXRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXh0SW5wdXRDb250cm9sbGVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHRJbnB1dENvbnRyb2xsZXIuaCIKIAor
I2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJXZWJCaW5kaW5ncy5oIgogI2luY2x1
ZGUgIldlYkNvbXBvc2l0aW9uVW5kZXJsaW5lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKQEAg
LTQwLDkgKzQxLDkgQEAKICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYlZlY3Rvci5oPgogI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx3dGYvU3Ry
aW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKQEAgLTE0Niw3ICsxNDcsNyBAQCB2
b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6Om1hcmtlZFJhbmdlKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqIHJlc3VsdAogICAgICAgICByZXR1cm47CiAKICAgICBXZWJSYW5nZSBy
YW5nZSA9IG1haW5GcmFtZS0+bWFya2VkUmFuZ2UoKTsKLSAgICBWZWN0b3I8aW50PiBpbnRBcnJh
eSgyKTsKKyAgICB2ZWN0b3I8aW50PiBpbnRBcnJheSgyKTsKICAgICBpbnRBcnJheVswXSA9IHJh
bmdlLnN0YXJ0T2Zmc2V0KCk7CiAgICAgaW50QXJyYXlbMV0gPSByYW5nZS5lbmRPZmZzZXQoKTsK
ICAgICByZXN1bHQtPnNldChXZWJCaW5kaW5nczo6bWFrZUludEFycmF5KGludEFycmF5KSk7CkBA
IC0xNjEsNyArMTYyLDcgQEAgdm9pZCBUZXh0SW5wdXRDb250cm9sbGVyOjpzZWxlY3RlZFJhbmdl
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3UKICAgICAgICAgcmV0dXJu
OwogCiAgICAgV2ViUmFuZ2UgcmFuZ2UgPSBtYWluRnJhbWUtPnNlbGVjdGlvblJhbmdlKCk7Ci0g
ICAgVmVjdG9yPGludD4gaW50QXJyYXkoMik7CisgICAgdmVjdG9yPGludD4gaW50QXJyYXkoMik7
CiAgICAgaW50QXJyYXlbMF0gPSByYW5nZS5zdGFydE9mZnNldCgpOwogICAgIGludEFycmF5WzFd
ID0gcmFuZ2UuZW5kT2Zmc2V0KCk7CiAgICAgcmVzdWx0LT5zZXQoV2ViQmluZGluZ3M6Om1ha2VJ
bnRBcnJheShpbnRBcnJheSkpOwpAQCAtMTgyLDcgKzE4Myw3IEBAIHZvaWQgVGV4dElucHV0Q29u
dHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1CiAgICAgaWYgKCFmcmFtZS0+Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoYXJndW1l
bnRzWzBdLnRvSW50MzIoKSwgYXJndW1lbnRzWzFdLnRvSW50MzIoKSwgcmVjdCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFZlY3RvcjxpbnQ+IGludEFycmF5KDQpOworICAgIHZlY3RvcjxpbnQ+
IGludEFycmF5KDQpOwogICAgIGludEFycmF5WzBdID0gcmVjdC54OwogICAgIGludEFycmF5WzFd
ID0gcmVjdC55OwogICAgIGludEFycmF5WzJdID0gcmVjdC53aWR0aDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlByZWZlcmVuY2Vz
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlBy
ZWZlcmVuY2VzLmNwcAppbmRleCA5OTMzZmE4Yzc2NjRlZjE4MGEwZjE3M2JhMjBhY2FmMGM3NDYw
NmUzLi4yMzkwOTM1MTg3NjE5MWRkMzdmYmRmZjAxNzJmNTkxNGRiZmZmYTBiIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJl
bmNlcy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJUZXN0
UnVubmVyIHsKIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6cmVzZXQoKQogewotI2lmIE9TKE1BQ19P
U19YKQorI2lmZGVmIF9fQVBQTEVfXwogICAgIGN1cnNpdmVGb250RmFtaWx5ID0gV2ViU3RyaW5n
Ojpmcm9tVVRGOCgiQXBwbGUgQ2hhbmNlcnkiKTsKICAgICBmYW50YXN5Rm9udEZhbWlseSA9IFdl
YlN0cmluZzo6ZnJvbVVURjgoIlBhcHlydXMiKTsKICAgICBXZWJTdHJpbmcgc2VyaWYgPSBXZWJT
dHJpbmc6OmZyb21VVEY4KCJUaW1lcyIpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgV2ViUHJl
ZmVyZW5jZXM6OnJlc2V0KCkKICAgICAvLyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsLCB0
byBhY2Nlc3MgaHR0cCBzZXJ2ZXIuCiAgICAgYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVS
THMgPSB0cnVlOwogCi0jaWYgT1MoREFSV0lOKQorI2lmZGVmIF9fQVBQTEVfXwogICAgIGVkaXRp
bmdCZWhhdmlvciA9IFdlYlNldHRpbmdzOjpFZGl0aW5nQmVoYXZpb3JNYWM7CiAjZWxzZQogICAg
IGVkaXRpbmdCZWhhdmlvciA9IFdlYlNldHRpbmdzOjpFZGl0aW5nQmVoYXZpb3JXaW47CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJU
YXNrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dl
YlRhc2suY3BwCmluZGV4IDk3NTMxYzgwZGUxNDU0OWVjMGZhMWMwNTFjYzVkMDgxMGYyYmQ0Zjgu
Ljc3OWY1M2U1OGFlODU0MjIyZWQ4NTZmM2YxNTIwYzE4NGVhYWJhMDIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2su
Y3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiV2ViVGFzay5oIgogCiAjaW5jbHVkZSAi
V2ViS2l0LmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4K
KwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCkBA
IC00OCwzNiArNTAsMzEgQEAgV2ViVGFzazo6fldlYlRhc2soKQogICAgICAgICBtX3Rhc2tMaXN0
LT51bnJlZ2lzdGVyVGFzayh0aGlzKTsKIH0KIAotY2xhc3MgV2ViVGFza0xpc3Q6OlByaXZhdGUg
OiBwdWJsaWMgVmVjdG9yPFdlYlRhc2sqPiB7Ci19OwotCiBXZWJUYXNrTGlzdDo6V2ViVGFza0xp
c3QoKQotICAgIDogbV9wcml2YXRlKG5ldyBQcml2YXRlKQogewogfQogCiBXZWJUYXNrTGlzdDo6
fldlYlRhc2tMaXN0KCkKIHsKICAgICByZXZva2VBbGwoKTsKLSAgICBkZWxldGUgbV9wcml2YXRl
OwogfQogCiB2b2lkIFdlYlRhc2tMaXN0OjpyZWdpc3RlclRhc2soV2ViVGFzayogdGFzaykKIHsK
LSAgICBtX3ByaXZhdGUtPmFwcGVuZCh0YXNrKTsKKyAgICBtX3Rhc2tzLnB1c2hfYmFjayh0YXNr
KTsKIH0KIAogdm9pZCBXZWJUYXNrTGlzdDo6dW5yZWdpc3RlclRhc2soV2ViVGFzayogdGFzaykK
IHsKLSAgICBzaXplX3QgaW5kZXggPSBtX3ByaXZhdGUtPmZpbmQodGFzayk7Ci0gICAgaWYgKGlu
ZGV4ICE9IG5vdEZvdW5kKQotICAgICAgICBtX3ByaXZhdGUtPnJlbW92ZShpbmRleCk7CisgICAg
dmVjdG9yPFdlYlRhc2sqPjo6aXRlcmF0b3IgaXRlciA9IGZpbmQobV90YXNrcy5iZWdpbigpLCBt
X3Rhc2tzLmVuZCgpLCB0YXNrKTsKKyAgICBpZiAoaXRlciAhPSBtX3Rhc2tzLmVuZCgpKQorICAg
ICAgICBtX3Rhc2tzLmVyYXNlKGl0ZXIpOwogfQogCiB2b2lkIFdlYlRhc2tMaXN0OjpyZXZva2VB
bGwoKQogewotICAgIHdoaWxlICghbV9wcml2YXRlLT5pc0VtcHR5KCkpCi0gICAgICAgICgqbV9w
cml2YXRlKVswXS0+Y2FuY2VsKCk7CisgICAgd2hpbGUgKCFtX3Rhc2tzLmVtcHR5KCkpCisgICAg
ICAgIG1fdGFza3NbMF0tPmNhbmNlbCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50
ZXJmYWNlcy5jcHAKaW5kZXggODkyNjNiZDdiZTAzOWY2NGNiZmZiOTE0MWFlN2IwNjg4NGExNzdk
Ny4uN2I1ODI4ZGY5Yjk5ZDY4ZDMzZWE0Njc3MzllZTIxMjNhNTM3NjU3MyAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVy
ZmFjZXMuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcApAQCAtMzksMTMgKzM5LDEyIEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIFdlYlRlc3RJbnRlcmZh
Y2VzOjpXZWJUZXN0SW50ZXJmYWNlcygpCisgICAgOiBtX2ludGVyZmFjZXMobmV3IFRlc3RJbnRl
cmZhY2VzKCkpCiB7Ci0gICAgbV9pbnRlcmZhY2VzID0gbmV3IFRlc3RJbnRlcmZhY2VzOwogfQog
CiBXZWJUZXN0SW50ZXJmYWNlczo6fldlYlRlc3RJbnRlcmZhY2VzKCkKIHsKLSAgICBkZWxldGUg
bV9pbnRlcmZhY2VzOwogfQogCiB2b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpzZXRXZWJWaWV3KFdl
YlZpZXcqIHdlYlZpZXcpCkBAIC04NSw3ICs4NCw3IEBAIFdlYlRlc3RSdW5uZXIqIFdlYlRlc3RJ
bnRlcmZhY2VzOjp0ZXN0UnVubmVyKCkKIAogVGVzdEludGVyZmFjZXMqIFdlYlRlc3RJbnRlcmZh
Y2VzOjp0ZXN0SW50ZXJmYWNlcygpCiB7Ci0gICAgcmV0dXJuIG1faW50ZXJmYWNlczsKKyAgICBy
ZXR1cm4gbV9pbnRlcmZhY2VzLmdldCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNw
cAppbmRleCA2NDcwZjBhNDExMjJmOWM5ZmMzNzFkYWNhYmE1MzkzOTM1YWQyNzU5Li41ZWEwZTg0
ZDg4OWNmZDBhNzY5YjkwOTc2ZjY5ZGU2ZWRlNDg4NmIzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94
eS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ckNocm9taXVtLmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIKICNpbmNsdWRlICJTcGVsbENo
ZWNrQ2xpZW50LmgiCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIlRlc3RJbnRl
cmZhY2VzLmgiCiAjaW5jbHVkZSAiVGVzdFBsdWdpbi5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXIu
aCIKQEAgLTU4LDcgKzU5LDYgQEAKICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMRXJyb3IuaD4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViVVJMUmVxdWVzdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxS
ZXNwb25zZS5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0yMTIsNyArMjEyLDcgQEAgc3Ry
aW5nIHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBzdHJpbmcmIHVybCkKIAogICAgIHNp
emVfdCBwb3MgPSB1cmwucmZpbmQoJy8nKTsKICAgICBpZiAocG9zID09IHN0cmluZzo6bnBvcykg
ewotI2lmIE9TKFdJTkRPV1MpCisjaWZkZWYgV0lOMzIKICAgICAgICAgcG9zID0gdXJsLnJmaW5k
KCdcXCcpOwogICAgICAgICBpZiAocG9zID09IHN0cmluZzo6bnBvcykKICAgICAgICAgICAgIHBv
cyA9IDA7CkBAIC0yNjcsNyArMjY3LDYgQEAgV2ViVGVzdFByb3h5QmFzZTo6V2ViVGVzdFByb3h5
QmFzZSgpCiAKIFdlYlRlc3RQcm94eUJhc2U6On5XZWJUZXN0UHJveHlCYXNlKCkKIHsKLSAgICBk
ZWxldGUgbV9zcGVsbGNoZWNrOwogfQogCiB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnNldEludGVy
ZmFjZXMoV2ViVGVzdEludGVyZmFjZXMqIGludGVyZmFjZXMpCkBAIC0yOTAsNyArMjg5LDcgQEAg
dm9pZCBXZWJUZXN0UHJveHlCYXNlOjpyZXNldCgpCiAKIFdlYlNwZWxsQ2hlY2tDbGllbnQqIFdl
YlRlc3RQcm94eUJhc2U6OnNwZWxsQ2hlY2tDbGllbnQoKSBjb25zdAogewotICAgIHJldHVybiBt
X3NwZWxsY2hlY2s7CisgICAgcmV0dXJuIG1fc3BlbGxjaGVjay5nZXQoKTsKIH0KIAogdm9pZCBX
ZWJUZXN0UHJveHlCYXNlOjpzZXRQYWludFJlY3QoY29uc3QgV2ViUmVjdCYgcmVjdCkKQEAgLTU1
NiwxNCArNTU1LDE0IEBAIHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6ZGlkRW5kRWRpdGluZygpCiAK
IHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6cmVnaXN0ZXJJbnRlbnRTZXJ2aWNlKFdlYkZyYW1lKiwg
Y29uc3QgV2ViSW50ZW50U2VydmljZUluZm8mIHNlcnZpY2UpCiB7Ci0jaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQorI2lmIEVOQUJMRV9XRUJfSU5URU5UUwogICAgIG1fZGVsZWdhdGUtPnByaW50TWVz
c2FnZShzdHJpbmcoIlJlZ2lzdGVyZWQgV2ViIEludGVudCBTZXJ2aWNlOiBhY3Rpb249IikgKyBz
ZXJ2aWNlLmFjdGlvbigpLnV0ZjgoKS5kYXRhKCkgKyAiIHR5cGU9IiArIHNlcnZpY2UudHlwZSgp
LnV0ZjgoKS5kYXRhKCkgKyAiIHRpdGxlPSIgKyBzZXJ2aWNlLnRpdGxlKCkudXRmOCgpLmRhdGEo
KSArICIgdXJsPSIgKyBzZXJ2aWNlLnVybCgpLnNwZWMoKS5kYXRhKCkgKyAiIGRpc3Bvc2l0aW9u
PSIgKyBzZXJ2aWNlLmRpc3Bvc2l0aW9uKCkudXRmOCgpLmRhdGEoKSArICJcbiIpOwogI2VuZGlm
CiB9CiAKIHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6ZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUqIHNv
dXJjZSwgY29uc3QgV2ViSW50ZW50UmVxdWVzdCYgcmVxdWVzdCkKIHsKLSNpZiBFTkFCTEUoV0VC
X0lOVEVOVFMpCisjaWYgRU5BQkxFX1dFQl9JTlRFTlRTCiAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRN
ZXNzYWdlKHN0cmluZygiUmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPSIpICsgcmVxdWVzdC5p
bnRlbnQoKS5hY3Rpb24oKS51dGY4KCkuZGF0YSgpICsgIiB0eXBlPSIgKyByZXF1ZXN0LmludGVu
dCgpLnR5cGUoKS51dGY4KCkuZGF0YSgpICsgIlxuIik7CiAgICAgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXkqIHBvcnRzID0gcmVxdWVzdC5pbnRlbnQoKS5tZXNzYWdlUG9ydENoYW5uZWxzUmVs
ZWFzZSgpOwogICAgIG1fZGVsZWdhdGUtPnNldEN1cnJlbnRXZWJJbnRlbnRSZXF1ZXN0KHJlcXVl
c3QpOwpAQCAtNzc4LDcgKzc3Nyw3IEBAIHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6ZGlkRGV0ZWN0
WFNTKFdlYkZyYW1lKiwgY29uc3QgV2ViVVJMJiwgYm9vbCkKIHZvaWQgV2ViVGVzdFByb3h5QmFz
ZTo6YXNzaWduSWRlbnRpZmllclRvUmVxdWVzdChXZWJGcmFtZSosIHVuc2lnbmVkIGlkZW50aWZp
ZXIsIGNvbnN0IFdlYktpdDo6V2ViVVJMUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAobV90
ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5lcigpLT5zaG91bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fcmVzb3VyY2VJZGVudGlmaWVyTWFwLmZpbmQoaWRl
bnRpZmllcikgPT0gbV9yZXNvdXJjZUlkZW50aWZpZXJNYXAuZW5kKCkpOworICAgICAgICBXRUJL
SVRfQVNTRVJUKG1fcmVzb3VyY2VJZGVudGlmaWVyTWFwLmZpbmQoaWRlbnRpZmllcikgPT0gbV9y
ZXNvdXJjZUlkZW50aWZpZXJNYXAuZW5kKCkpOwogICAgICAgICBtX3Jlc291cmNlSWRlbnRpZmll
ck1hcFtpZGVudGlmaWVyXSA9IGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlcXVl
c3QudXJsKCkuc3BlYygpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9jb25maWcuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyZmM2ZjQx
YzI2NjNlOGYxNWVjYmFlYzlhNDdlZmQ3OGZhOTM0OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9jb25maWcuaApAQCAtMCww
ICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBjb25maWdfaAorI2RlZmluZSBjb25maWdfaAorCisjZGVmaW5lIFVT
RShmZWF0dXJlKSAoZGVmaW5lZCBXVEZfVVNFXyMjZmVhdHVyZSAmJiBXVEZfVVNFXyMjZmVhdHVy
ZSkKKworI2VuZGlmIC8vIGNvbmZpZ19oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187246</attachid>
            <date>2013-02-07 23:35:50 -0800</date>
            <delta_ts>2013-02-07 23:39:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108466-20130208083224.patch</filename>
            <type>text/plain</type>
            <size>103181</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjM0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODc0NDY5NDE1ZWJhYjM0ZjBiNzVmNDY1OTQ0OTY1M2U1
MTIzMTdjNS4uNzMxMzMxNmY5OWNmNGI1ODE5MDAyY2E0NDVhYzk3YTllNDA2MzVmMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
MSBAQAorMjAxMy0wMi0wNiAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIHR1cm4gVGVzdFJ1bm5lciBsaWJyYXJ5IGludG8gYSBjb21w
b25lbnQgYnVpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwODQ2NgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAg
VG8gYWNoaWV2ZSB0aGlzLCB3ZSBuZWVkIHRvIGRyb3AgYWxsIGRlcGVuZGVuY2llcyBvbiBXVEYu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRl
clRyZWUuZ3lwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
UHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUYXNrLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdENvbW1vbi5oOiBDb3BpZWQgZnJvbSBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5o
LgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dl
YlRlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudExpc3Q6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRMaXN0OjpjcmVhdGVSb290KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hy
b21pdW0uaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRMaXN0KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENsYXNzLmNw
cDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6On5DcHBCb3VuZENsYXNz
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6Omludm9rZSk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpnZXRQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpzZXRQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpiaW5kQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZEdldHRlckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OkNwcEJvdW5kQ2xhc3M6OmJpbmRQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpnZXRBc0NwcFZhcmlhbnQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuaDoK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoQ3BwQm91bmRDbGFzcyk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpDcHBCb3VuZENsYXNzOjpiaW5kUHJvcGVydHkpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZEZhbGxiYWNrQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6Q3BwQm91bmRDbGFzczo6YmluZEZhbGxiYWNrTWV0aG9k
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBW
YXJpYW50LmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcFZhcmlhbnQ6OnRvU3RyaW5n
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNwcFZhcmlhbnQ6OnRvSW50MzIpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6Q3BwVmFyaWFudDo6dG9Eb3VibGUpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6Q3BwVmFyaWFudDo6dG9Cb29sZWFuKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OkNwcFZhcmlhbnQ6OnRvU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkNw
cFZhcmlhbnQ6Omludm9rZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpDcHBWYXJpYW50Ojpp
bnZva2VEZWZhdWx0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9DcHBWYXJpYW50Lmg6CisgICAgICAgIChDcHBWYXJpYW50KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHA6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2Vu
ZGVyOjpFdmVudFNlbmRlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
cmVzZXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6Om1vdXNlRG93bik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6bW91c2VVcCk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6bW91c2VNb3ZlVG8pOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6RXZlbnRTZW5kZXI6OmtleURvd24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6RXZlbnRTZW5kZXI6OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpFdmVudFNlbmRlcjo6bGVhcEZvcndhcmQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZl
bnRTZW5kZXI6OnJlcGxheVNhdmVkRXZlbnRzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Om1h
a2VNZW51SXRlbVN0cmluZ3NGb3IpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6RXZlbnRTZW5k
ZXI6OmNvbnRleHRDbGljayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
YmVnaW5EcmFnV2l0aEZpbGVzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVy
OjphZGRUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2VuZGVyOjpy
ZWxlYXNlVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
dXBkYXRlVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
Y2FuY2VsVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpFdmVudFNlbmRlcjo6
c2VuZEN1cnJlbnRUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OkV2ZW50U2Vu
ZGVyOjpnZXN0dXJlRXZlbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL0tleUNvZGVNYXBwaW5nLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
Ok5hdGl2ZUtleUNvZGVGb3JXaW5kb3dzS2V5Q29kZSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5jcHA6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpNb2NrR3JhbW1hckNoZWNrOjpjaGVja0dyYW1tYXJPZlN0cmluZyk6
CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNrLmg6CisgICAgICAgIChXZWJUZXN0
UnVubmVyKToKKyAgICAgICAgKE1vY2tHcmFtbWFyQ2hlY2spOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcDoKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6Ok1vY2tTcGVsbENoZWNrOjpzcGVsbENoZWNrV29yZCk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpNb2NrU3BlbGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmg6CisgICAgICAgIChNb2NrU3BlbGxD
aGVjayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
U3BlbGxDaGVja0NsaWVudC5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpTcGVsbENoZWNr
Q2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpT
cGVsbENoZWNrQ2xpZW50OjpmaW5pc2hMYXN0VGV4dENoZWNrKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0Q29tbW9uLmg6IENvcGllZCBmcm9t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJ
bnRlcmZhY2VzLmguCisgICAgICAgIChpc0FTQ0lJQWxwaGEpOgorICAgICAgICAoaXNOb3RBU0NJ
SUFscGhhKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0SW50ZXJm
YWNlczo6VGVzdEludGVyZmFjZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChUZXN0SW50ZXJmYWNl
cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFBsdWdpbi5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpUZXN0UGx1
Z2luKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmluaXRpYWxpemUpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6ZGVzdHJveSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpwYXJzZVByaW1pdGl2ZSk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RQbHVnaW46OmluaXRQcm9ncmFtKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RQbHVnaW46OmluaXRQcmltaXRpdmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBs
dWdpbjo6ZHJhd1ByaW1pdGl2ZSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2lu
Ojpsb2FkU2hhZGVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmxvYWRQ
cm9ncmFtKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmhhbmRsZURyYWdT
dGF0dXNVcGRhdGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RQbHVnaW4uaDoKKyAgICAgICAgKFRlc3RQbHVnaW4pOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpwcm9jZXNzV29ya1Nv
b24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6V29ya1F1ZXVlOjpwcm9j
ZXNzV29yayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpXb3JrUXVldWU6
OnJlc2V0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6
YWRkV29yayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpUZXN0UnVubmVy
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnBvbGljeURlbGVnYXRlRG9uZSk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldFRleHRTdWJwaXhlbFBvc2l0aW9uaW5nKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpkZWxpdmVyV2ViSW50ZW50KToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcik6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpzaW11bGF0ZUxlZ2FjeVdlYk5vdGlm
aWNhdGlvbkNsaWNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldE1v
Y2tTcGVlY2hJbnB1dER1bXBSZWN0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5u
ZXI6Ondhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6VGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6aXNF
bXB0eSk6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0SW5wdXRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRleHRJbnB1dENvbnRyb2xsZXI6Om1hcmtlZFJhbmdlKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXI6OlRleHRJbnB1dENvbnRyb2xsZXI6OnNlbGVjdGVkUmFuZ2UpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1dlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Oldl
YlByZWZlcmVuY2VzOjpyZXNldCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJU
YXNrTGlzdDo6fldlYlRhc2tMaXN0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRhc2tM
aXN0OjpyZWdpc3RlclRhc2spOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3Q6
OnVucmVnaXN0ZXJUYXNrKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0Ojpy
ZXZva2VBbGwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRl
c3RJbnRlcmZhY2VzOjpXZWJUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJUZXN0SW50ZXJmYWNlczo6fldlYlRlc3RJbnRlcmZhY2VzKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6On5XZWJUZXN0UHJveHlC
YXNlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94eUJhc2U6OnNwZWxsQ2hl
Y2tDbGllbnQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6cmVn
aXN0ZXJJbnRlbnRTZXJ2aWNlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQcm94
eUJhc2U6OmRpc3BhdGNoSW50ZW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RQ
cm94eUJhc2U6OmFzc2lnbklkZW50aWZpZXJUb1JlcXVlc3QpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL2NvbmZpZy5oOiBDb3BpZWQgZnJvbSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJm
YWNlcy5oLgorCiAyMDEzLTAyLTA3ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIGZvbGxvd3VwIHRvIHIxNDIyMzIuCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUu
Z3lwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJU
cmVlLmd5cAppbmRleCA1ZjM2N2RmNzg1YWNkMTE5Mzc0MmEwNDAzNTI3OTgzZjdkYzAyMDA2Li5k
N2VmN2FhOGM1ODExNjU2NjdlMzg4MmNlMmRiNTJiNTQ5MmQzNGVjIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJl
ZS5neXAKQEAgLTgzLDEwICs4Myw3IEBACiAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWwog
ICAgICAgICAgICAgICAgICdUZXN0UnVubmVyX3Jlc291cmNlcycsCiAgICAgICAgICAgICAgICAg
Jzwoc291cmNlX2RpcikvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXA6d2Via2l0JywKLSAgICAg
ICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cDp3ZWJr
aXRfd3RmX3N1cHBvcnQnLAogICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwOndlYmtpdF90ZXN0X3N1cHBvcnQnLAotICAgICAgICAgICAgICAg
ICc8KHNvdXJjZV9kaXIpL1dURi9XVEYuZ3lwL1dURi5neXA6d3RmJywKLSAgICAgICAgICAgICAg
ICAnPChjaHJvbWl1bV9zcmNfZGlyKS93ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5neXA6
d2Via2l0X3N1cHBvcnQnLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICdpbmNsdWRlX2Rp
cnMnOiBbCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpciknLApAQCAtMTA2LDYg
KzEwMyw0MCBAQAogICAgICAgICAgICAgICAgICc8QCh0ZXN0X3J1bm5lcl9maWxlcyknLAogICAg
ICAgICAgICAgXSwKICAgICAgICAgICAgICdjb25kaXRpb25zJzogWworICAgICAgICAgICAgICAg
IFsnaW5zaWRlX2Nocm9taXVtX2J1aWxkID09IDEnLCB7CisgICAgICAgICAgICAgICAgICAgICd0
eXBlJzogJzwoY29tcG9uZW50KScsCisgICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzog
WworICAgICAgICAgICAgICAgICAgICAgICAgWydjb21wb25lbnQ9PSJzaGFyZWRfbGlicmFyeSIn
LCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOiBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdXRUJURVNUUlVOTkVSX0RMTCcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdXRUJURVNUUlVOTkVSX0lNUExFTUVOVEFUSU9OPTEnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2RlcGVuZGVuY2llcyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoY2hy
b21pdW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5cDpiYXNlJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYnVpbGQvdGVtcF9neXAvZ29vZ2xldXJs
Lmd5cDpnb29nbGV1cmwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJv
bWl1bV9zcmNfZGlyKS92OC90b29scy9neXAvdjguZ3lwOnY4JywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RfZGVwZW5k
ZW50X3NldHRpbmdzJzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5l
cyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdXRUJURVNUUlVOTkVS
X0RMTCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwb3J0X2Rl
cGVuZGVudF9zZXR0aW5ncyc6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwo
Y2hyb21pdW1fc3JjX2RpcikvYnVpbGQvdGVtcF9neXAvZ29vZ2xldXJsLmd5cDpnb29nbGV1cmwn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS92
OC90b29scy9neXAvdjguZ3lwOnY4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzogeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnVkNMaW5rZXJUb29sJzogeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWydpbmNyZW1lbnRhbF9jaHJvbWVfZGxsPT0xJywgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVXNlTGlicmFyeURlcGVu
ZGVuY3lJbnB1dHMnOiAndHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ3Rvb2xraXRfdXNlc19ndGsg
PT0gMScsIHsKICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOiBbCiAgICAgICAgICAgICAg
ICAgICAgICAgICAnV1RGX1VTRV9HVEs9MScsCkBAIC0xOTUsNiArMjI2LDcgQEAKICAgICAgICAg
ICAgICAgICAnVGVzdFJ1bm5lcicsCiAgICAgICAgICAgICAgICAgJzwoc291cmNlX2RpcikvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXA6aW5zcGVjdG9yX3Jlc291cmNlcycsCiAgICAgICAgICAg
ICAgICAgJzwoc291cmNlX2RpcikvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXA6d2Via2l0JywK
KyAgICAgICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cDp3ZWJraXRfd3RmX3N1cHBvcnQnLAogICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dU
Ri9XVEYuZ3lwL1dURi5neXA6d3RmJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNf
ZGlyKS9iYXNlL2Jhc2UuZ3lwOnRlc3Rfc3VwcG9ydF9iYXNlJywKICAgICAgICAgICAgICAgICAn
PChjaHJvbWl1bV9zcmNfZGlyKS9idWlsZC90ZW1wX2d5cC9nb29nbGV1cmwuZ3lwOmdvb2dsZXVy
bCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBp
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCAwODhjOTg1
Nzc0NGM3ZmNkNDY2ZjJjZjFkODgxMTBjN2EzYjIwOGZlLi5hYWRiY2M5MzMxMmUwMjg0MmQ2NzI0
MGU5NmYzNzE4ZDEyZjdmMDdjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmd5cGkKQEAgLTU3LDYgKzU3LDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVy
L3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1
bm5lci9wdWJsaWMvV2ViUHJlZmVyZW5jZXMuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0Q29tbW9uLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmgnLApAQCAtODAsNiArODEsNyBAQAog
ICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmgnLAog
ICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxsQ2hlY2tDbGllbnQuY3Bw
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9TcGVsbENoZWNrQ2xpZW50
LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RDb21tb24uaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3Bw
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXh0SW5wdXRDb250cm9s
bGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViUHJlZmVyZW5jZXMuaAppbmRleCBiNDczODI2YjFh
NWI3MjViOTllOTJmMjRiMTU1ZTk3Nzc3MGZmNzdlLi5hMTM4YmZkNzAwY2M0Zjc3ZmY1MzhkMDNh
MWIyNjlkZDIwZWQ5NjAwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlByZWZlcmVuY2VzLmgKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3RyaW5n
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlVSTC5oIgogI2luY2x1
ZGUgIldlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJU
ZXN0Q29tbW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViVmlldzsKQEAgLTQx
LDcgKzQyLDcgQEAgY2xhc3MgV2ViVmlldzsKIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewog
Ci1zdHJ1Y3QgV2ViUHJlZmVyZW5jZXMgeworc3RydWN0IFdFQlRFU1RSVU5ORVJfRVhQT1JUIFdl
YlByZWZlcmVuY2VzIHsKICAgICBXZWJLaXQ6OldlYlN0cmluZyBzdGFuZGFyZEZvbnRGYW1pbHk7
CiAgICAgV2ViS2l0OjpXZWJTdHJpbmcgZml4ZWRGb250RmFtaWx5OwogICAgIFdlYktpdDo6V2Vi
U3RyaW5nIHNlcmlmRm9udEZhbWlseTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRhc2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRhc2suaAppbmRleCBlZjczZTE3N2Uw
NDEwZTZmZTZkYTYxOGMwZTFkNmViNzQ0NDczMGE0Li5jM2JjMDljYzFjZWVhYWY2MWU4NWNjNTM3
M2NjZTYxNzkyYjE0NDVjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oCkBAIC0zMSwxMyArMzEsMTYgQEAK
ICNpZm5kZWYgV2ViVGFza19oCiAjZGVmaW5lIFdlYlRhc2tfaAogCisjaW5jbHVkZSAiV2ViVGVz
dENvbW1vbi5oIgorI2luY2x1ZGUgPHZlY3Rvcj4KKwogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIg
ewogCiBjbGFzcyBXZWJUYXNrTGlzdDsKIAogLy8gV2ViVGFzayByZXByZXNlbnRzIGEgdGFzayB3
aGljaCBjYW4gcnVuIGJ5IFdlYlRlc3REZWxlZ2F0ZTo6cG9zdFRhc2soKSBvcgogLy8gV2ViVGVz
dERlbGVnYXRlOjpwb3N0RGVsYXllZFRhc2soKS4KLWNsYXNzIFdlYlRhc2sgeworY2xhc3MgV0VC
VEVTVFJVTk5FUl9FWFBPUlQgV2ViVGFzayB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViVGFz
ayhXZWJUYXNrTGlzdCopOwogICAgIHZpcnR1YWwgfldlYlRhc2soKTsKQEAgLTUxLDcgKzU0LDcg
QEAgcHJvdGVjdGVkOgogICAgIFdlYlRhc2tMaXN0KiBtX3Rhc2tMaXN0OwogfTsKIAotY2xhc3Mg
V2ViVGFza0xpc3QgeworY2xhc3MgV0VCVEVTVFJVTk5FUl9FWFBPUlQgV2ViVGFza0xpc3Qgewog
cHVibGljOgogICAgIFdlYlRhc2tMaXN0KCk7CiAgICAgfldlYlRhc2tMaXN0KCk7CkBAIC02MCw4
ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJldm9rZUFsbCgpOwogCiBwcml2YXRlOgotICAg
IGNsYXNzIFByaXZhdGU7Ci0gICAgUHJpdmF0ZSogbV9wcml2YXRlOworICAgIHN0ZDo6dmVjdG9y
PFdlYlRhc2sqPiBtX3Rhc2tzOwogfTsKIAogLy8gQSB0YXNrIGNvbnRhaW5pbmcgYW4gb2JqZWN0
IHBvaW50ZXIgb2YgY2xhc3MgVC4gRGVyaXZlZCBjbGFzc2VzIHNob3VsZApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdENv
bW1vbi5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGVzdENvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzNDQyYzZhOTNkYjFjZmJkNDYyN2FlMGY4Y2Jl
M2JkNmRiNjU3N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0Q29tbW9uLmgKQEAgLTAsMCArMSw2OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViVGVzdENvbW1vbl9oCisjZGVmaW5lIFdlYlRlc3RDb21tb25faAorCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8gRGVmYXVsdCBjb25maWd1cmF0aW9uCisKKyNpZiAhZGVmaW5l
ZChXRUJURVNUUlVOTkVSX0lNUExFTUVOVEFUSU9OKQorI2RlZmluZSBXRUJURVNUUlVOTkVSX0lN
UExFTUVOVEFUSU9OIDAKKyNlbmRpZgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRXhw
b3J0ZWQgc3ltYm9scyBuZWVkIHRvIGJlIGFubm90YXRlZCB3aXRoIFdFQlRFU1RSVU5ORVJfRVhQ
T1JUCisKKyNpZiBkZWZpbmVkKFdFQlRFU1RSVU5ORVJfRExMKQorCisjaWYgZGVmaW5lZChXSU4z
MikKKyNpZiBXRUJURVNUUlVOTkVSX0lNUExFTUVOVEFUSU9OCisjZGVmaW5lIFdFQlRFU1RSVU5O
RVJfRVhQT1JUIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorI2Vsc2UKKyNkZWZpbmUgV0VCVEVTVFJV
Tk5FUl9FWFBPUlQgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZW5kaWYKKworI2Vsc2UgLy8gZGVm
aW5lZChXSU4zMikKKworI2lmIFdFQlRFU1RSVU5ORVJfSU1QTEVNRU5UQVRJT04KKyNkZWZpbmUg
V0VCVEVTVFJVTk5FUl9FWFBPUlQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSkKKyNlbHNlCisjZGVmaW5lIFdFQlRFU1RSVU5ORVJfRVhQT1JUCisjZW5kaWYKKworI2VuZGlm
CisKKyNlbHNlIC8vIGRlZmluZWQoV0VCVEVTVFJVTk5FUl9ETEwpCisKKyNkZWZpbmUgV0VCVEVT
VFJVTk5FUl9FWFBPUlQKKworI2VuZGlmCisKKyNlbmRpZiAvLyBXZWJUZXN0Q29tbW9uX2gKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3RJbnRlcmZhY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oCmluZGV4IDJjY2Q2MWUyNWMxMGJhNDcy
MDg2MTUyMjA5NjM2NTZlOTg4NmVkYjkuLjczZDc5ZGMyY2RkZTBmMmViOTllNzkyNmIxZDhmYmYx
ZDFhZjI3Y2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaApAQCAtMzEs
NiArMzEsOSBAQAogI2lmbmRlZiBXZWJUZXN0SW50ZXJmYWNlc19oCiAjZGVmaW5lIFdlYlRlc3RJ
bnRlcmZhY2VzX2gKIAorI2luY2x1ZGUgIldlYlRlc3RDb21tb24uaCIKKyNpbmNsdWRlIDxtZW1v
cnk+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJWaWV3
OwpAQCAtNDIsNyArNDUsNyBAQCBjbGFzcyBUZXN0SW50ZXJmYWNlczsKIGNsYXNzIFdlYlRlc3RE
ZWxlZ2F0ZTsKIGNsYXNzIFdlYlRlc3RSdW5uZXI7CiAKLWNsYXNzIFdlYlRlc3RJbnRlcmZhY2Vz
IHsKK2NsYXNzIFdFQlRFU1RSVU5ORVJfRVhQT1JUIFdlYlRlc3RJbnRlcmZhY2VzIHsKIHB1Ymxp
YzoKICAgICBXZWJUZXN0SW50ZXJmYWNlcygpOwogICAgIH5XZWJUZXN0SW50ZXJmYWNlcygpOwpA
QCAtNjEsNyArNjQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBUZXN0SW50
ZXJmYWNlcyogbV9pbnRlcmZhY2VzOworICAgIHN0ZDo6YXV0b19wdHI8VGVzdEludGVyZmFjZXM+
IG1faW50ZXJmYWNlczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKaW5kZXgg
NDI5MDk2OWJkZDdhNjg2N2M2MDNlZmE4OTQ3NWMwNWQ3ZjQwZmM1Zi4uMTAwZDI4N2RiZTI2ZDc4
MjhiZGI0ZDU0NWExMmQxYjY1ZWJkMmRjZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5LmgK
QEAgLTQyLDcgKzQyLDkgQEAKICNpbmNsdWRlICJXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0
QWZmaW5pdHkuaCIKICNpbmNsdWRlICJXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHREaXJl
Y3Rpb24uaCIKKyNpbmNsdWRlICJXZWJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSA8bWFwPgorI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNzksNyArODEsNyBAQCBjbGFzcyBXZWJUZXN0RGVsZWdhdGU7CiBjbGFzcyBXZWJUZXN0SW50
ZXJmYWNlczsKIGNsYXNzIFdlYlRlc3RSdW5uZXI7CiAKLWNsYXNzIFdlYlRlc3RQcm94eUJhc2Ug
eworY2xhc3MgV0VCVEVTVFJVTk5FUl9FWFBPUlQgV2ViVGVzdFByb3h5QmFzZSB7CiBwdWJsaWM6
CiAgICAgdm9pZCBzZXRJbnRlcmZhY2VzKFdlYlRlc3RJbnRlcmZhY2VzKik7CiAgICAgdm9pZCBz
ZXREZWxlZ2F0ZShXZWJUZXN0RGVsZWdhdGUqKTsKQEAgLTE2NSw3ICsxNjcsNyBAQCBwcml2YXRl
OgogICAgIFRlc3RJbnRlcmZhY2VzKiBtX3Rlc3RJbnRlcmZhY2VzOwogICAgIFdlYlRlc3REZWxl
Z2F0ZSogbV9kZWxlZ2F0ZTsKIAotICAgIFNwZWxsQ2hlY2tDbGllbnQqIG1fc3BlbGxjaGVjazsK
KyAgICBzdGQ6OmF1dG9fcHRyPFNwZWxsQ2hlY2tDbGllbnQ+IG1fc3BlbGxjaGVjazsKIAogICAg
IFdlYktpdDo6V2ViUmVjdCBtX3BhaW50UmVjdDsKICAgICBzdGQ6Om1hcDx1bnNpZ25lZCwgc3Rk
OjpzdHJpbmc+IG1fcmVzb3VyY2VJZGVudGlmaWVyTWFwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dENocm9taXVtLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRDaHJvbWl1bS5jcHAKaW5kZXggMDYzZGRiYmFkZmJh
YjY2MzM4NTU5OWI4ODJjN2QwZTRjNTU4YTJkMi4uNmRjYzQwNjA2M2Y2OTIxNGI2NzYyMjM0MzE2
MTFlNjE3ZmRjNzJjOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudENocm9taXVtLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Q2hyb21pdW0uY3BwCkBAIC0zMSwxMyArMzEsMTIgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uaCIKIAorI2lu
Y2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Lmgi
CiAjaW5jbHVkZSA8cHVibGljL1dlYkNTdHJpbmcuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUG9p
bnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJT
dHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9TdHJp
bmdFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CkBAIC0zNjgsNyArMzY3LDcgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudChjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmoKICAgICAsIG1f
ZmFjdG9yeShmYWN0b3J5KQogewogCi0gICAgQVNTRVJUKGZhY3RvcnkpOworICAgIFdFQktJVF9B
U1NFUlQoZmFjdG9yeSk7CiAKICAgICAvLwogICAgIC8vIFByb3BlcnRpZXMKQEAgLTEwMjUsMTQg
KzEwMjQsMTQgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dExpc3Q6OmdldE9yQ3JlYXRlKGNvbnN0IFdlYkFjY2Vzc2kKICAgICB9CiAKICAgICBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KiBlbGVtZW50ID0gbmV3IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQob2Jq
ZWN0LCB0aGlzKTsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKKyAgICBtX2VsZW1l
bnRzLnB1c2hfYmFjayhlbGVtZW50KTsKICAgICByZXR1cm4gZWxlbWVudDsKIH0KIAogQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCogQWNjZXNzaWJpbGl0eVVJRWxlbWVudExpc3Q6OmNyZWF0ZVJvb3Qo
Y29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KQogewogICAgIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQqIGVsZW1lbnQgPSBuZXcgUm9vdEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQob2Jq
ZWN0LCB0aGlzKTsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKKyAgICBtX2VsZW1l
bnRzLnB1c2hfYmFjayhlbGVtZW50KTsKICAgICByZXR1cm4gZWxlbWVudDsKIH0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudENocm9taXVtLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uaAppbmRleCAz
OTZhYTcwODBhOTVjODg1MjFhNjkwMWRjMjYxOTk5MGExMjQ3MDFhLi5jNmNiMWEyMzU2ZGEwNzBi
MWEyZTE4NGZhNDBlZjI4ODlhYzc5MDkwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0u
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Q2hyb21pdW0uaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUg
IkNwcEJvdW5kQ2xhc3MuaCIKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAj
aW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YlRlc3RSdW5uZXIgewogCkBAIC0xNjgsNyArMTY3LDcgQEAgcHVibGljOgogICAgIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQqIGNyZWF0ZVJvb3QoY29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0Jik7CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudCo+IEVsZW1lbnRMaXN0OworICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudCo+IEVsZW1lbnRMaXN0OwogICAgIEVsZW1lbnRMaXN0IG1fZWxlbWVudHM7
CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9DcHBCb3VuZENsYXNzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuY3BwCmluZGV4IDAzNWFjZGVkNzhkNjhlODc1
NzBkYTAxNTVmZjY1MmQ2YTk1OWNjMGEuLjQ5ZTYxNDk3M2I3MTkyY2FkYzkxMmRkODZlZDdkODg3
Y2ZhYWQwZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuY3BwCkBAIC00MiwxMSArNDIsMTEg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDcHBCb3VuZENsYXNzLmgiCiAKKyNp
bmNsdWRlICJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViQmluZGluZ3MuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAt
NzcsNyArNzcsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBHZXR0ZXJQcm9wZXJ0eUNhbGxiYWNrIDog
cHVibGljIENwcEJvdW5kQ2xhc3M6OlByb3BlcnR5Q2FsbGJhY2sgewogcHVibGljOgotICAgIEdl
dHRlclByb3BlcnR5Q2FsbGJhY2soUGFzc093blB0cjxDcHBCb3VuZENsYXNzOjpHZXR0ZXJDYWxs
YmFjaz4gY2FsbGJhY2spCisgICAgR2V0dGVyUHJvcGVydHlDYWxsYmFjayhhdXRvX3B0cjxDcHBC
b3VuZENsYXNzOjpHZXR0ZXJDYWxsYmFjaz4gY2FsbGJhY2spCiAgICAgICAgIDogbV9jYWxsYmFj
ayhjYWxsYmFjaykKICAgICB7CiAgICAgfQpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIHNldFZhbHVlKGNvbnN0IENwcFZhcmlhbnQmIHZhbHVlKSB7IHJldHVybiBm
YWxzZTsgfQogCiBwcml2YXRlOgotICAgIE93blB0cjxDcHBCb3VuZENsYXNzOjpHZXR0ZXJDYWxs
YmFjaz4gbV9jYWxsYmFjazsKKyAgICBhdXRvX3B0cjxDcHBCb3VuZENsYXNzOjpHZXR0ZXJDYWxs
YmFjaz4gbV9jYWxsYmFjazsKIH07CiAKIH0KQEAgLTIwOSwxMCArMjA5LDEwIEBAIGJvb2wgQ3Bw
TlBPYmplY3Q6OnNldFByb3BlcnR5KE5QT2JqZWN0KiBucE9iaiwgTlBJZGVudGlmaWVyIGlkZW50
LCBjb25zdCBOUFZhcmlhCiBDcHBCb3VuZENsYXNzOjp+Q3BwQm91bmRDbGFzcygpCiB7CiAgICAg
Zm9yIChNZXRob2RMaXN0OjppdGVyYXRvciBpID0gbV9tZXRob2RzLmJlZ2luKCk7IGkgIT0gbV9t
ZXRob2RzLmVuZCgpOyArK2kpCi0gICAgICAgIGRlbGV0ZSBpLT52YWx1ZTsKKyAgICAgICAgZGVs
ZXRlIGktPnNlY29uZDsKIAogICAgIGZvciAoUHJvcGVydHlMaXN0OjppdGVyYXRvciBpID0gbV9w
cm9wZXJ0aWVzLmJlZ2luKCk7IGkgIT0gbV9wcm9wZXJ0aWVzLmVuZCgpOyArK2kpCi0gICAgICAg
IGRlbGV0ZSBpLT52YWx1ZTsKKyAgICAgICAgZGVsZXRlIGktPnNlY29uZDsKIAogICAgIC8vIFVu
cmVnaXN0ZXIgb3Vyc2VsdmVzIGlmIHdlIHdlcmUgYm91bmQgdG8gYSBmcmFtZS4KICAgICBpZiAo
bV9ib3VuZFRvRnJhbWUpCkBAIC0yNDMsNyArMjQzLDcgQEAgYm9vbCBDcHBCb3VuZENsYXNzOjpp
bnZva2UoTlBJZGVudGlmaWVyIGlkZW50LAogICAgICAgICB9CiAgICAgICAgIGNhbGxiYWNrID0g
bV9mYWxsYmFja0NhbGxiYWNrLmdldCgpOwogICAgIH0gZWxzZQotICAgICAgICBjYWxsYmFjayA9
ICgqbWV0aG9kKS52YWx1ZTsKKyAgICAgICAgY2FsbGJhY2sgPSAoKm1ldGhvZCkuc2Vjb25kOwog
CiAgICAgLy8gQnVpbGQgYSBDcHBBcmd1bWVudExpc3QgYXJndW1lbnQgdmVjdG9yIGZyb20gdGhl
IE5QVmFyaWFudHMgY29taW5nIGluLgogICAgIENwcEFyZ3VtZW50TGlzdCBjcHBBcmd1bWVudHMo
YXJndW1lbnRDb3VudCk7CkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCBDcHBCb3VuZENsYXNzOjpn
ZXRQcm9wZXJ0eShOUElkZW50aWZpZXIgaWRlbnQsIE5QVmFyaWFudCogcmVzdWx0KSBjb25zdAog
ICAgIH0KIAogICAgIENwcFZhcmlhbnQgY3BwVmFsdWU7Ci0gICAgaWYgKCFjYWxsYmFjay0+dmFs
dWUtPmdldFZhbHVlKCZjcHBWYWx1ZSkpCisgICAgaWYgKCFjYWxsYmFjay0+c2Vjb25kLT5nZXRW
YWx1ZSgmY3BwVmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY3BwVmFsdWUuY29w
eVRvTlBWYXJpYW50KHJlc3VsdCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0yODAsNyArMjgwLDcg
QEAgYm9vbCBDcHBCb3VuZENsYXNzOjpzZXRQcm9wZXJ0eShOUElkZW50aWZpZXIgaWRlbnQsIGNv
bnN0IE5QVmFyaWFudCogdmFsdWUpCiAKICAgICBDcHBWYXJpYW50IGNwcFZhbHVlOwogICAgIGNw
cFZhbHVlLnNldCgqdmFsdWUpOwotICAgIHJldHVybiAoKmNhbGxiYWNrKS52YWx1ZS0+c2V0VmFs
dWUoY3BwVmFsdWUpOworICAgIHJldHVybiAoKmNhbGxiYWNrKS5zZWNvbmQtPnNldFZhbHVlKGNw
cFZhbHVlKTsKIH0KIAogdm9pZCBDcHBCb3VuZENsYXNzOjpiaW5kQ2FsbGJhY2soY29uc3Qgc3Ry
aW5nJiBuYW1lLCBDYWxsYmFjayogY2FsbGJhY2spCkBAIC0yODgsMTkgKzI4OCwxOSBAQCB2b2lk
IENwcEJvdW5kQ2xhc3M6OmJpbmRDYWxsYmFjayhjb25zdCBzdHJpbmcmIG5hbWUsIENhbGxiYWNr
KiBjYWxsYmFjaykKICAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBXZWJCaW5kaW5nczo6Z2V0U3Ry
aW5nSWRlbnRpZmllcihuYW1lLmNfc3RyKCkpOwogICAgIE1ldGhvZExpc3Q6Oml0ZXJhdG9yIG9s
ZENhbGxiYWNrID0gbV9tZXRob2RzLmZpbmQoaWRlbnQpOwogICAgIGlmIChvbGRDYWxsYmFjayAh
PSBtX21ldGhvZHMuZW5kKCkpIHsKLSAgICAgICAgZGVsZXRlIG9sZENhbGxiYWNrLT52YWx1ZTsK
KyAgICAgICAgZGVsZXRlIG9sZENhbGxiYWNrLT5zZWNvbmQ7CiAgICAgICAgIGlmICghY2FsbGJh
Y2spIHsKLSAgICAgICAgICAgIG1fbWV0aG9kcy5yZW1vdmUob2xkQ2FsbGJhY2spOworICAgICAg
ICAgICAgbV9tZXRob2RzLmVyYXNlKG9sZENhbGxiYWNrKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIG1fbWV0aG9kcy5zZXQoaWRlbnQsIGNhbGxiYWNrKTsK
KyAgICBtX21ldGhvZHNbaWRlbnRdID0gY2FsbGJhY2s7CiB9CiAKLXZvaWQgQ3BwQm91bmRDbGFz
czo6YmluZEdldHRlckNhbGxiYWNrKGNvbnN0IHN0cmluZyYgbmFtZSwgUGFzc093blB0cjxHZXR0
ZXJDYWxsYmFjaz4gY2FsbGJhY2spCit2b2lkIENwcEJvdW5kQ2xhc3M6OmJpbmRHZXR0ZXJDYWxs
YmFjayhjb25zdCBzdHJpbmcmIG5hbWUsIGF1dG9fcHRyPEdldHRlckNhbGxiYWNrPiBjYWxsYmFj
aykKIHsKLSAgICBQcm9wZXJ0eUNhbGxiYWNrKiBwcm9wZXJ0eUNhbGxiYWNrID0gY2FsbGJhY2sg
PyBuZXcgR2V0dGVyUHJvcGVydHlDYWxsYmFjayhjYWxsYmFjaykgOiAwOworICAgIFByb3BlcnR5
Q2FsbGJhY2sqIHByb3BlcnR5Q2FsbGJhY2sgPSBjYWxsYmFjay5nZXQoKSA/IG5ldyBHZXR0ZXJQ
cm9wZXJ0eUNhbGxiYWNrKGNhbGxiYWNrKSA6IDA7CiAgICAgYmluZFByb3BlcnR5KG5hbWUsIHBy
b3BlcnR5Q2FsbGJhY2spOwogfQogCkBAIC0zMTUsMTQgKzMxNSwxNCBAQCB2b2lkIENwcEJvdW5k
Q2xhc3M6OmJpbmRQcm9wZXJ0eShjb25zdCBzdHJpbmcmIG5hbWUsIFByb3BlcnR5Q2FsbGJhY2sq
IGNhbGxiYWNrKQogICAgIE5QSWRlbnRpZmllciBpZGVudCA9IFdlYkJpbmRpbmdzOjpnZXRTdHJp
bmdJZGVudGlmaWVyKG5hbWUuY19zdHIoKSk7CiAgICAgUHJvcGVydHlMaXN0OjppdGVyYXRvciBv
bGRDYWxsYmFjayA9IG1fcHJvcGVydGllcy5maW5kKGlkZW50KTsKICAgICBpZiAob2xkQ2FsbGJh
Y2sgIT0gbV9wcm9wZXJ0aWVzLmVuZCgpKSB7Ci0gICAgICAgIGRlbGV0ZSBvbGRDYWxsYmFjay0+
dmFsdWU7CisgICAgICAgIGRlbGV0ZSBvbGRDYWxsYmFjay0+c2Vjb25kOwogICAgICAgICBpZiAo
IWNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBtX3Byb3BlcnRpZXMucmVtb3ZlKG9sZENhbGxiYWNr
KTsKKyAgICAgICAgICAgIG1fcHJvcGVydGllcy5lcmFzZShvbGRDYWxsYmFjayk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX3Byb3BlcnRpZXMuc2V0KGlk
ZW50LCBjYWxsYmFjayk7CisgICAgbV9wcm9wZXJ0aWVzW2lkZW50XSA9IGNhbGxiYWNrOwogfQog
CiBib29sIENwcEJvdW5kQ2xhc3M6OmlzTWV0aG9kUmVnaXN0ZXJlZChjb25zdCBzdHJpbmcmIG5h
bWUpIGNvbnN0CkBAIC0zNDQsNyArMzQ0LDcgQEAgQ3BwVmFyaWFudCogQ3BwQm91bmRDbGFzczo6
Z2V0QXNDcHBWYXJpYW50KCkKICAgICAgICAgbV9zZWxmVmFyaWFudC5zZXQobnBPYmopOwogICAg
ICAgICBXZWJCaW5kaW5nczo6cmVsZWFzZU9iamVjdChucE9iaik7IC8vIENwcFZhcmlhbnQgdGFr
ZXMgdGhlIHJlZmVyZW5jZS4KICAgICB9Ci0gICAgQVNTRVJUKG1fc2VsZlZhcmlhbnQuaXNPYmpl
Y3QoKSk7CisgICAgV0VCS0lUX0FTU0VSVChtX3NlbGZWYXJpYW50LmlzT2JqZWN0KCkpOwogICAg
IHJldHVybiAmbV9zZWxmVmFyaWFudDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvQ3BwQm91bmRDbGFzcy5oCmluZGV4
IDU0YWY2ZGRjZTFlNjgwMmZmMDBkNjhhYTcyYjVmMjAyOWU0NzUzYzYuLjk1MmE0MWM1MzQwZWZk
ZjAwYmM3NmI3ODJiNGQ0NmRhY2NmOGQxZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcEJvdW5kQ2xhc3MuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9DcHBCb3VuZENsYXNzLmgKQEAg
LTQ0LDExICs0NCw5IEBACiAjZGVmaW5lIENwcEJvdW5kQ2xhc3NfaAogCiAjaW5jbHVkZSAiQ3Bw
VmFyaWFudC5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRl
IDxtZW1vcnk+CisjaW5jbHVkZSA8dmVjdG9yPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IFdlYkZyYW1lOwpAQCAtNTcsMTIgKzU1LDExIEBAIGNsYXNzIFdlYlN0cmluZzsKIAogbmFtZXNw
YWNlIFdlYlRlc3RSdW5uZXIgewogCi10eXBlZGVmIFZlY3RvcjxDcHBWYXJpYW50PiBDcHBBcmd1
bWVudExpc3Q7Cit0eXBlZGVmIHN0ZDo6dmVjdG9yPENwcFZhcmlhbnQ+IENwcEFyZ3VtZW50TGlz
dDsKIAogLy8gQ3BwQm91bmRDbGFzcyBsZXRzIHlvdSBtYXAgSmF2YXNjcmlwdCBtZXRob2QgY2Fs
bHMgYW5kIHByb3BlcnR5IGFjY2Vzc2VzCiAvLyBkaXJlY3RseSB0byBDKysgbWV0aG9kIGNhbGxz
IGFuZCBDcHBWYXJpYW50KiB2YXJpYWJsZSBhY2Nlc3MuCiBjbGFzcyBDcHBCb3VuZENsYXNzIHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcHBCb3VuZENsYXNzKTsKIHB1YmxpYzoKICAgICBj
bGFzcyBQcm9wZXJ0eUNhbGxiYWNrIHsKICAgICBwdWJsaWM6CkBAIC0xNjQsNyArMTYxLDcgQEAg
cHJvdGVjdGVkOgogCiAgICAgLy8gQmluZCBKYXZhc2NyaXB0IHByb3BlcnR5IHxuYW1lfCB0byB0
aGUgQysrIGdldHRlciBjYWxsYmFjayB8Y2FsbGJhY2t8LgogICAgIC8vIFRoaXMgY2FuIGJlIHVz
ZWQgdG8gY3JlYXRlIHJlYWQtb25seSBwcm9wZXJ0aWVzLgotICAgIHZvaWQgYmluZEdldHRlckNh
bGxiYWNrKGNvbnN0IHN0ZDo6c3RyaW5nJiwgUGFzc093blB0cjxHZXR0ZXJDYWxsYmFjaz4pOwor
ICAgIHZvaWQgYmluZEdldHRlckNhbGxiYWNrKGNvbnN0IHN0ZDo6c3RyaW5nJiwgc3RkOjphdXRv
X3B0cjxHZXR0ZXJDYWxsYmFjaz4pOwogCiAgICAgLy8gQSB3cmFwcGVyIGZvciBCaW5kR2V0dGVy
Q2FsbGJhY2ssIHRvIHNpbXBsaWZ5IHRoZSBjb21tb24gY2FzZSBvZiBiaW5kaW5nIGEKICAgICAv
LyBwcm9wZXJ0eSBvbiB0aGUgY3VycmVudCBvYmplY3QuIFRob3VnaCBub3QgdmVyaWZpZWQgaGVy
ZSwgdGhlIG1ldGhvZCBwYXJhbWV0ZXIKQEAgLTE3Miw4ICsxNjksOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgVD4KICAgICB2b2lkIGJpbmRQcm9wZXJ0eShjb25zdCBzdGQ6OnN0
cmluZyYgbmFtZSwgdm9pZCAoVDo6Km1ldGhvZCkoQ3BwVmFyaWFudCopKQogICAgIHsKLSAgICAg
ICAgT3duUHRyPEdldHRlckNhbGxiYWNrPiBjYWxsYmFjayA9IGFkb3B0UHRyKG5ldyBNZW1iZXJH
ZXR0ZXJDYWxsYmFjazxUPihzdGF0aWNfY2FzdDxUKj4odGhpcyksIG1ldGhvZCkpOwotICAgICAg
ICBiaW5kR2V0dGVyQ2FsbGJhY2sobmFtZSwgY2FsbGJhY2sucmVsZWFzZSgpKTsKKyAgICAgICAg
c3RkOjphdXRvX3B0cjxHZXR0ZXJDYWxsYmFjaz4gY2FsbGJhY2sobmV3IE1lbWJlckdldHRlckNh
bGxiYWNrPFQ+KHN0YXRpY19jYXN0PFQqPih0aGlzKSwgbWV0aG9kKSk7CisgICAgICAgIGJpbmRH
ZXR0ZXJDYWxsYmFjayhuYW1lLCBjYWxsYmFjayk7CiAgICAgfQogCiAgICAgLy8gQmluZCB0aGUg
SmF2YXNjcmlwdCBwcm9wZXJ0eSBjYWxsZWQgfG5hbWV8IHRvIGEgQ3BwVmFyaWFudC4KQEAgLTE5
Myw3ICsxOTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gYXMgaXQgbWF5IGNhdXNlIHVuZXhwZWN0
ZWQgYmVoYXZpb3JzIChhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggYQogICAgIC8vIGZhbGxiYWNr
IGFsd2F5cyByZXR1cm5zIHRydWUgd2hlbiBjaGVja2VkIGZvciBhIG1ldGhvZCdzCiAgICAgLy8g
ZXhpc3RlbmNlKS4KLSAgICB2b2lkIGJpbmRGYWxsYmFja0NhbGxiYWNrKFBhc3NPd25QdHI8Q2Fs
bGJhY2s+IGZhbGxiYWNrQ2FsbGJhY2spCisgICAgdm9pZCBiaW5kRmFsbGJhY2tDYWxsYmFjayhz
dGQ6OmF1dG9fcHRyPENhbGxiYWNrPiBmYWxsYmFja0NhbGxiYWNrKQogICAgIHsKICAgICAgICAg
bV9mYWxsYmFja0NhbGxiYWNrID0gZmFsbGJhY2tDYWxsYmFjazsKICAgICB9CkBAIC0yMDUsMjUg
KzIwMiwyNCBAQCBwcm90ZWN0ZWQ6CiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KICAgICB2b2lkIGJp
bmRGYWxsYmFja01ldGhvZCh2b2lkIChUOjoqbWV0aG9kKShjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50KikpCiAgICAgewotICAgICAgICBpZiAobWV0aG9kKSB7Ci0gICAgICAgICAg
ICBPd25QdHI8Q2FsbGJhY2s+IGNhbGxiYWNrID0gYWRvcHRQdHIobmV3IE1lbWJlckNhbGxiYWNr
PFQ+KHN0YXRpY19jYXN0PFQqPih0aGlzKSwgbWV0aG9kKSk7Ci0gICAgICAgICAgICBiaW5kRmFs
bGJhY2tDYWxsYmFjayhjYWxsYmFjay5yZWxlYXNlKCkpOwotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIGJpbmRGYWxsYmFja0NhbGxiYWNrKG51bGxwdHIpOworICAgICAgICBpZiAobWV0aG9k
KQorICAgICAgICAgICAgYmluZEZhbGxiYWNrQ2FsbGJhY2soc3RkOjphdXRvX3B0cjxDYWxsYmFj
az4obmV3IE1lbWJlckNhbGxiYWNrPFQ+KHN0YXRpY19jYXN0PFQqPih0aGlzKSwgbWV0aG9kKSkp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBiaW5kRmFsbGJhY2tDYWxsYmFjayhzdGQ6OmF1
dG9fcHRyPENhbGxiYWNrPigpKTsKICAgICB9CiAKICAgICAvLyBTb21lIGZpZWxkcyBhcmUgcHJv
dGVjdGVkIGJlY2F1c2Ugc29tZSB0ZXN0cyBkZXBlbmQgb24gYWNjZXNzaW5nIHRoZW0sCiAgICAg
Ly8gYnV0IG90aGVyd2lzZSB0aGV5IHNob3VsZCBiZSBjb25zaWRlcmVkIHByaXZhdGUuCiAKLSAg
ICB0eXBlZGVmIEhhc2hNYXA8TlBJZGVudGlmaWVyLCBQcm9wZXJ0eUNhbGxiYWNrKj4gUHJvcGVy
dHlMaXN0OwotICAgIHR5cGVkZWYgSGFzaE1hcDxOUElkZW50aWZpZXIsIENhbGxiYWNrKj4gTWV0
aG9kTGlzdDsKKyAgICB0eXBlZGVmIHN0ZDo6bWFwPE5QSWRlbnRpZmllciwgUHJvcGVydHlDYWxs
YmFjayo+IFByb3BlcnR5TGlzdDsKKyAgICB0eXBlZGVmIHN0ZDo6bWFwPE5QSWRlbnRpZmllciwg
Q2FsbGJhY2sqPiBNZXRob2RMaXN0OwogICAgIC8vIFRoZXNlIG1hcHMgYXNzb2NpYXRlIG5hbWVz
IHdpdGggcHJvcGVydHkgYW5kIG1ldGhvZCBwb2ludGVycyB0byBiZQogICAgIC8vIGV4cG9zZWQg
dG8gSmF2YVNjcmlwdC4KICAgICBQcm9wZXJ0eUxpc3QgbV9wcm9wZXJ0aWVzOwogICAgIE1ldGhv
ZExpc3QgbV9tZXRob2RzOwogCiAgICAgLy8gVGhlIGNhbGxiYWNrIGdldHMgaW52b2tlZCB3aGVu
IGEgY2FsbCBpcyBtYWRlIHRvIGFuIG5vbmV4aXN0ZW50IG1ldGhvZC4KLSAgICBPd25QdHI8Q2Fs
bGJhY2s+IG1fZmFsbGJhY2tDYWxsYmFjazsKKyAgICBzdGQ6OmF1dG9fcHRyPENhbGxiYWNrPiBt
X2ZhbGxiYWNrQ2FsbGJhY2s7CiAKIHByaXZhdGU6CiAgICAgLy8gTlBPYmplY3QgY2FsbGJhY2tz
LgpAQCAtMjQyLDYgKzIzOCwxMCBAQCBwcml2YXRlOgogICAgIC8vIFRydWUgaWYgb3VyIG5wX29i
amVjdCBoYXMgYmVlbiBib3VuZCB0byBhIFdlYkZyYW1lLCBpbiB3aGljaCBjYXNlIGl0IG11c3QK
ICAgICAvLyBiZSB1bnJlZ2lzdGVyZWQgd2l0aCBWOCB3aGVuIHdlIGRlbGV0ZSBpdC4KICAgICBi
b29sIG1fYm91bmRUb0ZyYW1lOworCitwcml2YXRlOgorICAgIENwcEJvdW5kQ2xhc3MoQ3BwQm91
bmRDbGFzcyYpOworICAgIENwcEJvdW5kQ2xhc3MmIG9wZXJhdG9yPShjb25zdCBDcHBCb3VuZENs
YXNzJik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9DcHBWYXJpYW50LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuY3BwCmluZGV4IDRkMjg1NmU3NDJkOTdj
ZGQ5YTAwODVlMTlhMmRkMTgxMTJmOGY1ZmMuLmVmMmU5MmE2NWMwZWY0ZThjM2JkZjRlNWNkZDQ3
MTU1YmU3NzJjMzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL0NwcFZhcmlhbnQuY3BwCkBAIC0zMSwxMCArMzEsOSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNwcFZhcmlhbnQuaCIKIAorI2luY2x1ZGUg
IlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJXZWJCaW5kaW5ncy5oIgogI2luY2x1ZGUgPGxpbWl0
cz4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRy
YXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBA
IC0yMjAsNyArMjE5LDcgQEAgdm9pZCBDcHBWYXJpYW50OjpzZXQoTlBPYmplY3QqIG5ld1ZhbHVl
KQogCiBzdHJpbmcgQ3BwVmFyaWFudDo6dG9TdHJpbmcoKSBjb25zdAogewotICAgIEFTU0VSVChp
c1N0cmluZygpKTsKKyAgICBXRUJLSVRfQVNTRVJUKGlzU3RyaW5nKCkpOwogICAgIHJldHVybiBz
dHJpbmcodmFsdWUuc3RyaW5nVmFsdWUuVVRGOENoYXJhY3RlcnMsCiAgICAgICAgICAgICAgICAg
ICB2YWx1ZS5zdHJpbmdWYWx1ZS5VVEY4TGVuZ3RoKTsKIH0KQEAgLTIzMSw3ICsyMzAsNyBAQCBp
bnQzMl90IENwcFZhcmlhbnQ6OnRvSW50MzIoKSBjb25zdAogICAgICAgICByZXR1cm4gdmFsdWUu
aW50VmFsdWU7CiAgICAgaWYgKGlzRG91YmxlKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQzMl90Pih2YWx1ZS5kb3VibGVWYWx1ZSk7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwogfQogCkBA
IC0yNDEsMjEgKzI0MCwyMSBAQCBkb3VibGUgQ3BwVmFyaWFudDo6dG9Eb3VibGUoKSBjb25zdAog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZS5pbnRWYWx1ZSk7CiAgICAg
aWYgKGlzRG91YmxlKCkpCiAgICAgICAgIHJldHVybiB2YWx1ZS5kb3VibGVWYWx1ZTsKLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgQ3BwVmFyaWFudDo6dG9Cb29sZWFuKCkgY29uc3QKIHsK
LSAgICBBU1NFUlQoaXNCb29sKCkpOworICAgIFdFQktJVF9BU1NFUlQoaXNCb29sKCkpOwogICAg
IHJldHVybiB2YWx1ZS5ib29sVmFsdWU7CiB9CiAKLVZlY3RvcjxzdHJpbmc+IENwcFZhcmlhbnQ6
OnRvU3RyaW5nVmVjdG9yKCkgY29uc3QKK3ZlY3RvcjxzdHJpbmc+IENwcFZhcmlhbnQ6OnRvU3Ry
aW5nVmVjdG9yKCkgY29uc3QKIHsKIAotICAgIEFTU0VSVChpc09iamVjdCgpKTsKLSAgICBWZWN0
b3I8c3RyaW5nPiBzdHJpbmdWZWN0b3I7CisgICAgV0VCS0lUX0FTU0VSVChpc09iamVjdCgpKTsK
KyAgICB2ZWN0b3I8c3RyaW5nPiBzdHJpbmdWZWN0b3I7CiAgICAgTlBPYmplY3QqIG5wVmFsdWUg
PSB2YWx1ZS5vYmplY3RWYWx1ZTsKICAgICBOUElkZW50aWZpZXIgbGVuZ3RoSWQgPSBXZWJCaW5k
aW5nczo6Z2V0U3RyaW5nSWRlbnRpZmllcigibGVuZ3RoIik7CiAKQEAgLTI5MCw3ICsyODksNyBA
QCBWZWN0b3I8c3RyaW5nPiBDcHBWYXJpYW50Ojp0b1N0cmluZ1ZlY3RvcigpIGNvbnN0CiAgICAg
ICAgIGlmIChOUFZBUklBTlRfSVNfU1RSSU5HKGluZGV4VmFsdWUpKSB7CiAgICAgICAgICAgICBz
dHJpbmcgaXRlbShOUFZBUklBTlRfVE9fU1RSSU5HKGluZGV4VmFsdWUpLlVURjhDaGFyYWN0ZXJz
LAogICAgICAgICAgICAgICAgICAgICAgICAgTlBWQVJJQU5UX1RPX1NUUklORyhpbmRleFZhbHVl
KS5VVEY4TGVuZ3RoKTsKLSAgICAgICAgICAgIHN0cmluZ1ZlY3Rvci5hcHBlbmQoaXRlbSk7Cisg
ICAgICAgICAgICBzdHJpbmdWZWN0b3IucHVzaF9iYWNrKGl0ZW0pOwogICAgICAgICB9CiAgICAg
ICAgIFdlYkJpbmRpbmdzOjpyZWxlYXNlVmFyaWFudFZhbHVlKCZpbmRleFZhbHVlKTsKICAgICB9
CkBAIC0zMDAsNyArMjk5LDcgQEAgVmVjdG9yPHN0cmluZz4gQ3BwVmFyaWFudDo6dG9TdHJpbmdW
ZWN0b3IoKSBjb25zdAogYm9vbCBDcHBWYXJpYW50OjppbnZva2UoY29uc3Qgc3RyaW5nJiBtZXRo
b2QsIGNvbnN0IENwcFZhcmlhbnQqIGFyZ3VtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IGFyZ3VtZW50Q291bnQsIENwcFZhcmlhbnQmIHJlc3VsdCkgY29uc3QKIHsKLSAg
ICBBU1NFUlQoaXNPYmplY3QoKSk7CisgICAgV0VCS0lUX0FTU0VSVChpc09iamVjdCgpKTsKICAg
ICBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSA9IFdlYkJpbmRpbmdzOjpnZXRTdHJpbmdJZGVudGlm
aWVyKG1ldGhvZC5jX3N0cigpKTsKICAgICBOUE9iamVjdCogbnBPYmplY3QgPSB2YWx1ZS5vYmpl
Y3RWYWx1ZTsKICAgICBpZiAoIVdlYkJpbmRpbmdzOjpoYXNNZXRob2QoMCwgbnBPYmplY3QsIG1l
dGhvZE5hbWUpKQpAQCAtMzE0LDcgKzMxMyw3IEBAIGJvb2wgQ3BwVmFyaWFudDo6aW52b2tlKGNv
bnN0IHN0cmluZyYgbWV0aG9kLCBjb25zdCBDcHBWYXJpYW50KiBhcmd1bWVudHMsCiBib29sIENw
cFZhcmlhbnQ6Omludm9rZURlZmF1bHQoY29uc3QgQ3BwVmFyaWFudCogYXJndW1lbnRzLCB1aW50
MzJfdCBhcmd1bWVudENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENwcFZh
cmlhbnQmIHJlc3VsdCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNPYmplY3QoKSk7CisgICAgV0VC
S0lUX0FTU0VSVChpc09iamVjdCgpKTsKICAgICBOUE9iamVjdCogbnBPYmplY3QgPSB2YWx1ZS5v
YmplY3RWYWx1ZTsKICAgICBOUFZhcmlhbnQgcjsKICAgICBib29sIHN0YXR1cyA9IFdlYkJpbmRp
bmdzOjppbnZva2VEZWZhdWx0KDAsIG5wT2JqZWN0LCBhcmd1bWVudHMsIGFyZ3VtZW50Q291bnQs
ICZyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL0NwcFZhcmlhbnQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL0NwcFZhcmlhbnQuaAppbmRleCBlODJhNzBiNjY3NTI0ZjdiMjZjMmQzYzMwYmY1
YzFjMjIzZGZjZjc2Li5lOTI5NWEzYmU4OTViYTNlMGE5NzFiMGU5ZWE5ZDhkYWY4ZWNmYzI4IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9D
cHBWYXJpYW50LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvQ3BwVmFyaWFudC5oCkBAIC00NCw3ICs0NCw3IEBACiAKICNpbmNsdWRlICJXZWJCaW5k
aW5ncy5oIgogI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSA8dmVjdG9yPgogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKQEAgLTEyMCw3ICsx
MjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0b0Jvb2xlYW4oKSBjb25zdDsKICAgICAvLyBSZXR1
cm5zIGEgdmVjdG9yIG9mIHN0cmluZ3MgZm9yIHRoZSBzcGVjaWZpZWQgYXJndW1lbnQuIFRoaXMg
aXMgdXNlZnVsCiAgICAgLy8gZm9yIGNvbnZlcnRpbmcgYSBKYXZhU2NyaXB0IGFycmF5IG9mIHN0
cmluZ3MgaW50byBhIHZlY3RvciBvZiBzdHJpbmdzLgotICAgIFZlY3RvcjxzdGQ6OnN0cmluZz4g
dG9TdHJpbmdWZWN0b3IoKSBjb25zdDsKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdG9T
dHJpbmdWZWN0b3IoKSBjb25zdDsKIAogICAgIC8vIEludm9rZSBtZXRob2Qgb2YgdGhlIGdpdmVu
IG5hbWUgb24gYW4gb2JqZWN0IHdpdGggdGhlIHN1cHBsaWVkIGFyZ3VtZW50cy4KICAgICAvLyBU
aGUgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGhv
ZCBpcyB0byBiZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDJkNGUyYzU2M2M4NmRiNWNj
MzMzMzdmNzI1OGE0MzFiZmUwOWNhZTAuLmFiODVhYjg0YmRiZjg0YWI5MDFhZjc2NDIwMjk0MjQy
MGE0YjBlZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRlci5jcHAKQEAgLTQ1LDE5ICs0NSwxOSBAQAog
CiAjaW5jbHVkZSAiS2V5Q29kZU1hcHBpbmcuaCIKICNpbmNsdWRlICJNb2NrU3BlbGxDaGVjay5o
IgorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudURhdGEu
aCIKICNpbmNsdWRlICJXZWJEcmFnT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiV2ViVGVzdERlbGVn
YXRlLmgiCiAjaW5jbHVkZSAiV2ViVG91Y2hQb2ludC5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIK
KyNpbmNsdWRlIDxkZXF1ZT4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRHJhZ0RhdGEuaD4KICNpbmNs
dWRlIDxwdWJsaWMvV2ViUG9pbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYlZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgotI2lu
Y2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KIAotI2lmIE9TKFdJTkRPV1MpCisjaWZkZWYgV0lO
MzIKICNpbmNsdWRlICJ3aW4vV2ViSW5wdXRFdmVudEZhY3RvcnkuaCIKICNlbmRpZgogCkBAIC05
Nyw5ICs5Nyw5IEBAIFdlYkRyYWdEYXRhIGN1cnJlbnREcmFnRGF0YTsKIFdlYkRyYWdPcGVyYXRp
b24gY3VycmVudERyYWdFZmZlY3Q7CiBXZWJEcmFnT3BlcmF0aW9uc01hc2sgY3VycmVudERyYWdF
ZmZlY3RzQWxsb3dlZDsKIGJvb2wgcmVwbGF5aW5nU2F2ZWRFdmVudHMgPSBmYWxzZTsKLURlcXVl
PFNhdmVkRXZlbnQ+IG1vdXNlRXZlbnRRdWV1ZTsKK2RlcXVlPFNhdmVkRXZlbnQ+IG1vdXNlRXZl
bnRRdWV1ZTsKIGludCB0b3VjaE1vZGlmaWVyczsKLVZlY3RvcjxXZWJUb3VjaFBvaW50PiB0b3Vj
aFBvaW50czsKK3ZlY3RvcjxXZWJUb3VjaFBvaW50PiB0b3VjaFBvaW50czsKIAogLy8gVGltZSBh
bmQgcGxhY2Ugb2YgdGhlIGxhc3QgbW91c2UgdXAgZXZlbnQuCiBkb3VibGUgbGFzdENsaWNrVGlt
ZVNlYyA9IDA7CkBAIC0xNTUsNyArMTU1LDcgQEAgYm9vbCBhcHBseUtleU1vZGlmaWVyKGNvbnN0
IHN0cmluZyYgbW9kaWZpZXJOYW1lLCBXZWJJbnB1dEV2ZW50KiBldmVudCkKICAgICBib29sIGlz
U3lzdGVtS2V5ID0gZmFsc2U7CiAgICAgY29uc3QgY2hhciogY2hhcmFjdGVycyA9IG1vZGlmaWVy
TmFtZS5jX3N0cigpOwogICAgIGlmICghc3RyY21wKGNoYXJhY3RlcnMsICJjdHJsS2V5IikKLSNp
ZiAhT1MoTUFDX09TX1gpCisjaWZuZGVmIF9fQVBQTEVfXwogICAgICAgICB8fCAhc3RyY21wKGNo
YXJhY3RlcnMsICJhZGRTZWxlY3Rpb25LZXkiKQogI2VuZGlmCiAgICAgICAgICkgewpAQCAtMTY0
LDcgKzE2NCw3IEBAIGJvb2wgYXBwbHlLZXlNb2RpZmllcihjb25zdCBzdHJpbmcmIG1vZGlmaWVy
TmFtZSwgV2ViSW5wdXRFdmVudCogZXZlbnQpCiAgICAgICAgIGV2ZW50LT5tb2RpZmllcnMgfD0g
V2ViSW5wdXRFdmVudDo6U2hpZnRLZXk7CiAgICAgZWxzZSBpZiAoIXN0cmNtcChjaGFyYWN0ZXJz
LCAiYWx0S2V5IikpIHsKICAgICAgICAgZXZlbnQtPm1vZGlmaWVycyB8PSBXZWJJbnB1dEV2ZW50
OjpBbHRLZXk7Ci0jaWYgIU9TKE1BQ19PU19YKQorI2lmbmRlZiBfX0FQUExFX18KICAgICAgICAg
Ly8gT24gV2luZG93cyBhbGwga2V5cyB3aXRoIEFsdCBtb2RpZmllciB3aWxsIGJlIG1hcmtlZCBh
cyBzeXN0ZW0ga2V5LgogICAgICAgICAvLyBXZSBrZWVwIHRoZSBzYW1lIGJlaGF2aW9yIG9uIExp
bnV4IGFuZCBldmVyeXdoZXJlIG5vbi1NYWMsIHNlZToKICAgICAgICAgLy8gV2ViS2l0L2Nocm9t
aXVtL3NyYy9ndGsvV2ViSW5wdXRFdmVudEZhY3RvcnkuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAg
Ym9vbCBhcHBseUtleU1vZGlmaWVyKGNvbnN0IHN0cmluZyYgbW9kaWZpZXJOYW1lLCBXZWJJbnB1
dEV2ZW50KiBldmVudCkKICAgICAgICAgLy8ga2VwdCBpbiBzeW5jIHdpdGggdGhlIHJlbGF0ZWQg
Y29kZSBpbiBhYm92ZSBmaWxlLgogICAgICAgICBpc1N5c3RlbUtleSA9IHRydWU7CiAjZW5kaWYK
LSNpZiBPUyhNQUNfT1NfWCkKKyNpZmRlZiBfX0FQUExFX18KICAgICB9IGVsc2UgaWYgKCFzdHJj
bXAoY2hhcmFjdGVycywgIm1ldGFLZXkiKSB8fCAhc3RyY21wKGNoYXJhY3RlcnMsICJhZGRTZWxl
Y3Rpb25LZXkiKSkgewogICAgICAgICBldmVudC0+bW9kaWZpZXJzIHw9IFdlYklucHV0RXZlbnQ6
Ok1ldGFLZXk7CiAgICAgICAgIC8vIE9uIE1hYyBvbmx5IGNvbW1hbmQga2V5IHByZXNzZXMgYXJl
IG1hcmtlZCBhcyBzeXN0ZW0ga2V5LgpAQCAtMTkxLDggKzE5MSw4IEBAIGJvb2wgYXBwbHlLZXlN
b2RpZmllcnMoY29uc3QgQ3BwVmFyaWFudCogYXJndW1lbnQsIFdlYklucHV0RXZlbnQqIGV2ZW50
KQogewogICAgIGJvb2wgaXNTeXN0ZW1LZXkgPSBmYWxzZTsKICAgICBpZiAoYXJndW1lbnQtPmlz
T2JqZWN0KCkpIHsKLSAgICAgICAgVmVjdG9yPHN0cmluZz4gbW9kaWZpZXJzID0gYXJndW1lbnQt
PnRvU3RyaW5nVmVjdG9yKCk7Ci0gICAgICAgIGZvciAoVmVjdG9yPHN0cmluZz46OmNvbnN0X2l0
ZXJhdG9yIGkgPSBtb2RpZmllcnMuYmVnaW4oKTsgaSAhPSBtb2RpZmllcnMuZW5kKCk7ICsraSkK
KyAgICAgICAgdmVjdG9yPHN0cmluZz4gbW9kaWZpZXJzID0gYXJndW1lbnQtPnRvU3RyaW5nVmVj
dG9yKCk7CisgICAgICAgIGZvciAodmVjdG9yPHN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBt
b2RpZmllcnMuYmVnaW4oKTsgaSAhPSBtb2RpZmllcnMuZW5kKCk7ICsraSkKICAgICAgICAgICAg
IGlzU3lzdGVtS2V5IHw9IGFwcGx5S2V5TW9kaWZpZXIoKmksIGV2ZW50KTsKICAgICB9IGVsc2Ug
aWYgKGFyZ3VtZW50LT5pc1N0cmluZygpKQogICAgICAgICBpc1N5c3RlbUtleSA9IGFwcGx5S2V5
TW9kaWZpZXIoYXJndW1lbnQtPnRvU3RyaW5nKCksIGV2ZW50KTsKQEAgLTIwNCw3ICsyMDQsNyBA
QCBib29sIGFwcGx5S2V5TW9kaWZpZXJzKGNvbnN0IENwcFZhcmlhbnQqIGFyZ3VtZW50LCBXZWJJ
bnB1dEV2ZW50KiBldmVudCkKIC8vIG9mIHRoZSBlZGl0IGNvbW1hbmQgd2lsbCBiZSBzdG9yZWQg
aW4gfCpuYW1lfC4KIGJvb2wgZ2V0RWRpdENvbW1hbmQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYg
ZXZlbnQsIHN0cmluZyogbmFtZSkKIHsKLSNpZiBPUyhNQUNfT1NfWCkKKyNpZmRlZiBfX0FQUExF
X18KICAgICAvLyBXZSBvbmx5IGNhcmVzIGFib3V0IExlZnQsUmlnaHQsVXAsRG93biBrZXlzIHdp
dGggQ29tbWFuZCBvciBDb21tYW5kK1NoaWZ0CiAgICAgLy8gbW9kaWZpZXJzLiBUaGVzZSBrZXkg
ZXZlbnRzIGNvcnJlc3BvbmQgdG8gc29tZSBzcGVjaWFsIG1vdmVtZW50IGFuZAogICAgIC8vIHNl
bGVjdGlvbiBlZGl0b3IgY29tbWFuZHMsIGFuZCB3YXMgc3VwcG9zZWQgdG8gYmUgaGFuZGxlZCBp
bgpAQCAtMzA3LDcgKzMwNyw3IEBAIEV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcigpCiAgICAgLy8g
V2hlbiBzZXQgdG8gdHJ1ZSAodGhlIGRlZmF1bHQgdmFsdWUpLCB3ZSBiYXRjaCBtb3VzZSBtb3Zl
IGFuZCBtb3VzZSB1cAogICAgIC8vIGV2ZW50cyBzbyB3ZSBjYW4gc2ltdWxhdGUgZHJhZyAmIGRy
b3AuCiAgICAgYmluZFByb3BlcnR5KCJkcmFnTW9kZSIsICZkcmFnTW9kZSk7Ci0jaWYgT1MoV0lO
RE9XUykKKyNpZmRlZiBXSU4zMgogICAgIGJpbmRQcm9wZXJ0eSgiV01fS0VZRE9XTiIsICZ3bUtl
eURvd24pOwogICAgIGJpbmRQcm9wZXJ0eSgiV01fS0VZVVAiLCAmd21LZXlVcCk7CiAgICAgYmlu
ZFByb3BlcnR5KCJXTV9DSEFSIiwgJndtQ2hhcik7CkBAIC0zMjIsMTMgKzMyMiwxMyBAQCBFdmVu
dFNlbmRlcjo6RXZlbnRTZW5kZXIoKQogdm9pZCBFdmVudFNlbmRlcjo6cmVzZXQoKQogewogICAg
IC8vIFRoZSB0ZXN0IHNob3VsZCBoYXZlIGZpbmlzaGVkIGEgZHJhZyBhbmQgdGhlIG1vdXNlIGJ1
dHRvbiBzdGF0ZS4KLSAgICBBU1NFUlQoY3VycmVudERyYWdEYXRhLmlzTnVsbCgpKTsKKyAgICBX
RUJLSVRfQVNTRVJUKGN1cnJlbnREcmFnRGF0YS5pc051bGwoKSk7CiAgICAgY3VycmVudERyYWdE
YXRhLnJlc2V0KCk7CiAgICAgY3VycmVudERyYWdFZmZlY3QgPSBXZWJLaXQ6OldlYkRyYWdPcGVy
YXRpb25Ob25lOwogICAgIGN1cnJlbnREcmFnRWZmZWN0c0FsbG93ZWQgPSBXZWJLaXQ6OldlYkRy
YWdPcGVyYXRpb25Ob25lOwogICAgIHByZXNzZWRCdXR0b24gPSBXZWJNb3VzZUV2ZW50OjpCdXR0
b25Ob25lOwogICAgIGRyYWdNb2RlLnNldCh0cnVlKTsKLSNpZiBPUyhXSU5ET1dTKQorI2lmZGVm
IFdJTjMyCiAgICAgd21LZXlEb3duLnNldChXTV9LRVlET1dOKTsKICAgICB3bUtleVVwLnNldChX
TV9LRVlVUCk7CiAgICAgd21DaGFyLnNldChXTV9DSEFSKTsKQEAgLTQxOCw3ICs0MTgsNyBAQCB2
b2lkIEV2ZW50U2VuZGVyOjptb3VzZURvd24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqIHJlc3VsdAogICAgIHdlYnZpZXcoKS0+bGF5b3V0KCk7CiAKICAgICBp
bnQgYnV0dG9uTnVtYmVyID0gZ2V0QnV0dG9uTnVtYmVyRnJvbVNpbmdsZUFyZyhhcmd1bWVudHMp
OwotICAgIEFTU0VSVChidXR0b25OdW1iZXIgIT0gLTEpOworICAgIFdFQktJVF9BU1NFUlQoYnV0
dG9uTnVtYmVyICE9IC0xKTsKIAogICAgIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBidXR0b25UeXBl
ID0gZ2V0QnV0dG9uVHlwZUZyb21CdXR0b25OdW1iZXIoYnV0dG9uTnVtYmVyKTsKIApAQCAtNDQw
LDcgKzQ0MCw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6Om1vdXNlVXAoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKICAgICB3ZWJ2aWV3KCktPmxheW91
dCgpOwogCiAgICAgaW50IGJ1dHRvbk51bWJlciA9IGdldEJ1dHRvbk51bWJlckZyb21TaW5nbGVB
cmcoYXJndW1lbnRzKTsKLSAgICBBU1NFUlQoYnV0dG9uTnVtYmVyICE9IC0xKTsKKyAgICBXRUJL
SVRfQVNTRVJUKGJ1dHRvbk51bWJlciAhPSAtMSk7CiAKICAgICBXZWJNb3VzZUV2ZW50OjpCdXR0
b24gYnV0dG9uVHlwZSA9IGdldEJ1dHRvblR5cGVGcm9tQnV0dG9uTnVtYmVyKGJ1dHRvbk51bWJl
cik7CiAKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjptb3VzZVVwKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiAgICAgICAg
IFNhdmVkRXZlbnQgc2F2ZWRFdmVudDsKICAgICAgICAgc2F2ZWRFdmVudC50eXBlID0gU2F2ZWRF
dmVudDo6TW91c2VVcDsKICAgICAgICAgc2F2ZWRFdmVudC5idXR0b25UeXBlID0gYnV0dG9uVHlw
ZTsKLSAgICAgICAgbW91c2VFdmVudFF1ZXVlLmFwcGVuZChzYXZlZEV2ZW50KTsKKyAgICAgICAg
bW91c2VFdmVudFF1ZXVlLnB1c2hfYmFjayhzYXZlZEV2ZW50KTsKICAgICAgICAgcmVwbGF5U2F2
ZWRFdmVudHMoKTsKICAgICB9IGVsc2UgewogICAgICAgICBXZWJNb3VzZUV2ZW50IGV2ZW50OwpA
QCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6Om1vdXNlTW92ZVRvKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1CiAgICAgICAgIFNhdmVk
RXZlbnQgc2F2ZWRFdmVudDsKICAgICAgICAgc2F2ZWRFdmVudC50eXBlID0gU2F2ZWRFdmVudDo6
TW91c2VNb3ZlOwogICAgICAgICBzYXZlZEV2ZW50LnBvcyA9IG1vdXNlUG9zOwotICAgICAgICBt
b3VzZUV2ZW50UXVldWUuYXBwZW5kKHNhdmVkRXZlbnQpOworICAgICAgICBtb3VzZUV2ZW50UXVl
dWUucHVzaF9iYWNrKHNhdmVkRXZlbnQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFdlYk1vdXNl
RXZlbnQgZXZlbnQ7CiAgICAgICAgIGluaXRNb3VzZUV2ZW50KFdlYklucHV0RXZlbnQ6Ok1vdXNl
TW92ZSwgcHJlc3NlZEJ1dHRvbiwgbW91c2VQb3MsICZldmVudCwgZ2V0Q3VycmVudEV2ZW50VGlt
ZVNlYyhtX2RlbGVnYXRlKSk7CkBAIC01OTgsNyArNTk4LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6
a2V5RG93bihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVz
dWx0KQogICAgICAgICB9CiAgICAgICAgIGlmICghY29kZSkgewogICAgICAgICAgICAgV2ViU3Ry
aW5nIHdlYkNvZGVTdHIgPSBXZWJTdHJpbmc6OmZyb21VVEY4KGNvZGVTdHIuZGF0YSgpLCBjb2Rl
U3RyLnNpemUoKSk7Ci0gICAgICAgICAgICBBU1NFUlQod2ViQ29kZVN0ci5sZW5ndGgoKSA9PSAx
KTsKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQod2ViQ29kZVN0ci5sZW5ndGgoKSA9PSAxKTsK
ICAgICAgICAgICAgIHRleHQgPSBjb2RlID0gd2ViQ29kZVN0ci5kYXRhKClbMF07CiAgICAgICAg
ICAgICBuZWVkc1NoaWZ0S2V5TW9kaWZpZXIgPSBuZWVkc1NoaWZ0TW9kaWZpZXIoY29kZSk7CiAg
ICAgICAgICAgICBpZiAoKGNvZGUgJiAweEZGKSA+PSAnYScgJiYgKGNvZGUgJiAweEZGKSA8PSAn
eicpCkBAIC02MTYsNyArNjE2LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6a2V5RG93bihjb25zdCBD
cHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogICAgIGV2ZW50
RG93bi50eXBlID0gV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bjsKICAgICBldmVudERvd24ubW9k
aWZpZXJzID0gMDsKICAgICBldmVudERvd24ud2luZG93c0tleUNvZGUgPSBjb2RlOwotI2lmIE9T
KExJTlVYKSAmJiBVU0UoR1RLKQorI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiBVU0UoR1RLKQog
ICAgIGV2ZW50RG93bi5uYXRpdmVLZXlDb2RlID0gTmF0aXZlS2V5Q29kZUZvcldpbmRvd3NLZXlD
b2RlKGNvZGUpOwogI2VuZGlmCiAKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIEV2ZW50U2VuZGVy
OjpkaXNwYXRjaE1lc3NhZ2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZh
cmlhbnQqCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiAKLSNpZiBPUyhXSU5ET1dTKQorI2lm
ZGVmIFdJTjMyCiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPT0gMykgewogICAgICAgICAvLyBH
cmFiIHRoZSBtZXNzYWdlIGlkIHRvIHNlZSBpZiB3ZSBuZWVkIHRvIGRpc3BhdGNoIGl0LgogICAg
ICAgICBpbnQgbXNnID0gYXJndW1lbnRzWzBdLnRvSW50MzIoKTsKQEAgLTY5NCw3ICs2OTQsNyBA
QCB2b2lkIEV2ZW50U2VuZGVyOjpkaXNwYXRjaE1lc3NhZ2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbHBhcmFtID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oYXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOwogICAg
ICAgICB3ZWJ2aWV3KCktPmhhbmRsZUlucHV0RXZlbnQoV2ViSW5wdXRFdmVudEZhY3Rvcnk6Omtl
eWJvYXJkRXZlbnQoMCwgbXNnLCBhcmd1bWVudHNbMV0udG9JbnQzMigpLCBscGFyYW0pKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogfQogCkBAIC03MTgsNyArNzE4LDcgQEAgdm9p
ZCBFdmVudFNlbmRlcjo6bGVhcEZvcndhcmQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqIHJlc3UKICAgICAgICAgU2F2ZWRFdmVudCBzYXZlZEV2ZW50OwogICAg
ICAgICBzYXZlZEV2ZW50LnR5cGUgPSBTYXZlZEV2ZW50OjpMZWFwRm9yd2FyZDsKICAgICAgICAg
c2F2ZWRFdmVudC5taWxsaXNlY29uZHMgPSBtaWxsaXNlY29uZHM7Ci0gICAgICAgIG1vdXNlRXZl
bnRRdWV1ZS5hcHBlbmQoc2F2ZWRFdmVudCk7CisgICAgICAgIG1vdXNlRXZlbnRRdWV1ZS5wdXNo
X2JhY2soc2F2ZWRFdmVudCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGRvTGVhcEZvcndhcmQobWls
bGlzZWNvbmRzKTsKIH0KQEAgLTc3OSw4ICs3NzksOSBAQCB2b2lkIEV2ZW50U2VuZGVyOjpjb250
aW51b3VzTW91c2VTY3JvbGxCeShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3Bw
Vgogdm9pZCBFdmVudFNlbmRlcjo6cmVwbGF5U2F2ZWRFdmVudHMoKQogewogICAgIHJlcGxheWlu
Z1NhdmVkRXZlbnRzID0gdHJ1ZTsKLSAgICB3aGlsZSAoIW1vdXNlRXZlbnRRdWV1ZS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgU2F2ZWRFdmVudCBlID0gbW91c2VFdmVudFF1ZXVlLnRha2VGaXJzdCgp
OworICAgIHdoaWxlICghbW91c2VFdmVudFF1ZXVlLmVtcHR5KCkpIHsKKyAgICAgICAgU2F2ZWRF
dmVudCBlID0gbW91c2VFdmVudFF1ZXVlLmZyb250KCk7CisgICAgICAgIG1vdXNlRXZlbnRRdWV1
ZS5wb3BfZnJvbnQoKTsKIAogICAgICAgICBzd2l0Y2ggKGUudHlwZSkgewogICAgICAgICBjYXNl
IFNhdmVkRXZlbnQ6Ok1vdXNlTW92ZTogewpAQCAtNzk5LDcgKzgwMCw3IEBAIHZvaWQgRXZlbnRT
ZW5kZXI6OnJlcGxheVNhdmVkRXZlbnRzKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtODEzLDcgKzgxNCw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnJlcGxheVNhdmVkRXZlbnRz
KCkKIC8vICAgYWxzbyBtYWtlcyBzZW5zZS4gVGhpcyBmdW5jdGlvbiBpcyBkb2luZyBzdWNoIGZv
ciBzb21lIGZsYWdzLgogLy8gLSBTb21lIHRlc3QgZXZlbiBjaGVja3MgYWN0dWFsIHN0cmluZyBj
b250ZW50LiBTbyBwcm92aWRpbmcgaXQgd291bGQgYmUgYWxzbyBoZWxwZnVsLgogLy8KLXN0YXRp
YyBWZWN0b3I8V2ViU3RyaW5nPiBtYWtlTWVudUl0ZW1TdHJpbmdzRm9yKFdlYkNvbnRleHRNZW51
RGF0YSogY29udGV4dE1lbnUsIFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCitzdGF0aWMgdmVj
dG9yPFdlYlN0cmluZz4gbWFrZU1lbnVJdGVtU3RyaW5nc0ZvcihXZWJDb250ZXh0TWVudURhdGEq
IGNvbnRleHRNZW51LCBXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIC8vIFRoZXNl
IGNvbnN0YW50cyBhcmUgYmFzZWQgb24gU2FmYXJpJ3MgY29udGV4dCBtZW51IGJlY2F1c2UgdGVz
dHMgYXJlIG1hZGUgZm9yIGl0LgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBub25FZGl0YWJsZU1l
bnVTdHJpbmdzW10gPSB7ICJCYWNrIiwgIlJlbG9hZCBQYWdlIiwgIk9wZW4gaW4gRGFzaGJhb3Jk
IiwgIjxzZXBhcmF0b3I+IiwgIlZpZXcgU291cmNlIiwgIlNhdmUgUGFnZSBBcyIsICJQcmludCBQ
YWdlIiwgIkluc3BlY3QgRWxlbWVudCIsIDAgfTsKQEAgLTgyMSwyMCArODIyLDIwIEBAIHN0YXRp
YyBWZWN0b3I8V2ViU3RyaW5nPiBtYWtlTWVudUl0ZW1TdHJpbmdzRm9yKFdlYkNvbnRleHRNZW51
RGF0YSogY29udGV4dE1lbnUsCiAKICAgICAvLyBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgbW91
c2UgZXZlbnRzIGFyZSBjYW5jZWxsZWFibGUuCiAgICAgaWYgKCFjb250ZXh0TWVudSkKLSAgICAg
ICAgcmV0dXJuIFZlY3RvcjxXZWJTdHJpbmc+KCk7CisgICAgICAgIHJldHVybiB2ZWN0b3I8V2Vi
U3RyaW5nPigpOwogCi0gICAgVmVjdG9yPFdlYlN0cmluZz4gc3RyaW5nczsKKyAgICB2ZWN0b3I8
V2ViU3RyaW5nPiBzdHJpbmdzOwogCiAgICAgaWYgKGNvbnRleHRNZW51LT5pc0VkaXRhYmxlKSB7
CiAgICAgICAgIGZvciAoY29uc3QgY2hhcioqIGl0ZW0gPSBlZGl0YWJsZU1lbnVTdHJpbmdzOyAq
aXRlbTsgKytpdGVtKSAKLSAgICAgICAgICAgIHN0cmluZ3MuYXBwZW5kKFdlYlN0cmluZzo6ZnJv
bVVURjgoKml0ZW0pKTsKKyAgICAgICAgICAgIHN0cmluZ3MucHVzaF9iYWNrKFdlYlN0cmluZzo6
ZnJvbVVURjgoKml0ZW0pKTsKICAgICAgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gc3VnZ2VzdGlv
bnM7CiAgICAgICAgIE1vY2tTcGVsbENoZWNrOjpmaWxsU3VnZ2VzdGlvbkxpc3QoY29udGV4dE1l
bnUtPm1pc3NwZWxsZWRXb3JkLCAmc3VnZ2VzdGlvbnMpOwogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN1Z2dlc3Rpb25zLnNpemUoKTsgKytpKSAKLSAgICAgICAgICAgIHN0cmluZ3Mu
YXBwZW5kKHN1Z2dlc3Rpb25zW2ldKTsKKyAgICAgICAgICAgIHN0cmluZ3MucHVzaF9iYWNrKHN1
Z2dlc3Rpb25zW2ldKTsKICAgICB9IGVsc2UgewogICAgICAgICBmb3IgKGNvbnN0IGNoYXIqKiBp
dGVtID0gbm9uRWRpdGFibGVNZW51U3RyaW5nczsgKml0ZW07ICsraXRlbSkgCi0gICAgICAgICAg
ICBzdHJpbmdzLmFwcGVuZChXZWJTdHJpbmc6OmZyb21VVEY4KCppdGVtKSk7CisgICAgICAgICAg
ICBzdHJpbmdzLnB1c2hfYmFjayhXZWJTdHJpbmc6OmZyb21VVEY4KCppdGVtKSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIHN0cmluZ3M7CkBAIC04NTksNyArODYwLDcgQEAgdm9pZCBFdmVudFNlbmRl
cjo6Y29udGV4dENsaWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW50KiByZXMKICAgICBpbml0TW91c2VFdmVudChXZWJJbnB1dEV2ZW50OjpNb3VzZURvd24sIFdl
Yk1vdXNlRXZlbnQ6OkJ1dHRvblJpZ2h0LCBsYXN0TW91c2VQb3MsICZldmVudCwgZ2V0Q3VycmVu
dEV2ZW50VGltZVNlYyhtX2RlbGVnYXRlKSk7CiAgICAgd2VidmlldygpLT5oYW5kbGVJbnB1dEV2
ZW50KGV2ZW50KTsKIAotI2lmIE9TKFdJTkRPV1MpCisjaWZkZWYgV0lOMzIKICAgICBpbml0TW91
c2VFdmVudChXZWJJbnB1dEV2ZW50OjpNb3VzZVVwLCBXZWJNb3VzZUV2ZW50OjpCdXR0b25SaWdo
dCwgbGFzdE1vdXNlUG9zLCAmZXZlbnQsIGdldEN1cnJlbnRFdmVudFRpbWVTZWMobV9kZWxlZ2F0
ZSkpOwogICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVudChldmVudCk7CiAKQEAgLTkxNiw3
ICs5MTcsNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0tleURvd24o
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsCiB2b2lkIEV2ZW50U2VuZGVyOjpiZWdp
bkRyYWdXaXRoRmlsZXMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlh
bnQqIHJlc3VsdCkKIHsKICAgICBjdXJyZW50RHJhZ0RhdGEuaW5pdGlhbGl6ZSgpOwotICAgIFZl
Y3RvcjxzdHJpbmc+IGZpbGVzID0gYXJndW1lbnRzWzBdLnRvU3RyaW5nVmVjdG9yKCk7CisgICAg
dmVjdG9yPHN0cmluZz4gZmlsZXMgPSBhcmd1bWVudHNbMF0udG9TdHJpbmdWZWN0b3IoKTsKICAg
ICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBhYnNvbHV0ZUZpbGVuYW1lcyhmaWxlcy5zaXplKCkpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
V2ViRHJhZ0RhdGE6Okl0ZW0gaXRlbTsKQEAgLTk1NSw3ICs5NTYsNyBAQCB2b2lkIEV2ZW50U2Vu
ZGVyOjphZGRUb3VjaFBvaW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KiByZQogICAgICAgICAgICAgbG93ZXN0SWQrKzsKICAgICB9CiAgICAgdG91Y2hQb2lu
dC5pZCA9IGxvd2VzdElkOwotICAgIHRvdWNoUG9pbnRzLmFwcGVuZCh0b3VjaFBvaW50KTsKKyAg
ICB0b3VjaFBvaW50cy5wdXNoX2JhY2sodG91Y2hQb2ludCk7CiB9CiAKIHZvaWQgRXZlbnRTZW5k
ZXI6OmNsZWFyVG91Y2hQb2ludHMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCog
cmVzdWx0KQpAQCAtOTY5LDcgKzk3MCw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnJlbGVhc2VUb3Vj
aFBvaW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50CiAgICAg
cmVzdWx0LT5zZXROdWxsKCk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBpbmRleCA9IGFyZ3VtZW50
c1swXS50b0ludDMyKCk7Ci0gICAgQVNTRVJUKGluZGV4IDwgdG91Y2hQb2ludHMuc2l6ZSgpKTsK
KyAgICBXRUJLSVRfQVNTRVJUKGluZGV4IDwgdG91Y2hQb2ludHMuc2l6ZSgpKTsKIAogICAgIFdl
YlRvdWNoUG9pbnQqIHRvdWNoUG9pbnQgPSAmdG91Y2hQb2ludHNbaW5kZXhdOwogICAgIHRvdWNo
UG9pbnQtPnN0YXRlID0gV2ViVG91Y2hQb2ludDo6U3RhdGVSZWxlYXNlZDsKQEAgLTEwMDEsNyAr
MTAwMiw3IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnVwZGF0ZVRvdWNoUG9pbnQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7
CiAKICAgICBjb25zdCB1bnNpZ25lZCBpbmRleCA9IGFyZ3VtZW50c1swXS50b0ludDMyKCk7Ci0g
ICAgQVNTRVJUKGluZGV4IDwgdG91Y2hQb2ludHMuc2l6ZSgpKTsKKyAgICBXRUJLSVRfQVNTRVJU
KGluZGV4IDwgdG91Y2hQb2ludHMuc2l6ZSgpKTsKIAogICAgIFdlYlBvaW50IHBvc2l0aW9uKGFy
Z3VtZW50c1sxXS50b0ludDMyKCksIGFyZ3VtZW50c1syXS50b0ludDMyKCkpOwogICAgIFdlYlRv
dWNoUG9pbnQqIHRvdWNoUG9pbnQgPSAmdG91Y2hQb2ludHNbaW5kZXhdOwpAQCAtMTAxNSw3ICsx
MDE2LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6Y2FuY2VsVG91Y2hQb2ludChjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAgICByZXN1bHQtPnNldE51bGwoKTsK
IAogICAgIGNvbnN0IHVuc2lnbmVkIGluZGV4ID0gYXJndW1lbnRzWzBdLnRvSW50MzIoKTsKLSAg
ICBBU1NFUlQoaW5kZXggPCB0b3VjaFBvaW50cy5zaXplKCkpOworICAgIFdFQktJVF9BU1NFUlQo
aW5kZXggPCB0b3VjaFBvaW50cy5zaXplKCkpOwogCiAgICAgV2ViVG91Y2hQb2ludCogdG91Y2hQ
b2ludCA9ICZ0b3VjaFBvaW50c1tpbmRleF07CiAgICAgdG91Y2hQb2ludC0+c3RhdGUgPSBXZWJU
b3VjaFBvaW50OjpTdGF0ZUNhbmNlbGxlZDsKQEAgLTEwMjMsNyArMTAyNCw3IEBAIHZvaWQgRXZl
bnRTZW5kZXI6OmNhbmNlbFRvdWNoUG9pbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqCiAKIHZvaWQgRXZlbnRTZW5kZXI6OnNlbmRDdXJyZW50VG91Y2hFdmVu
dChjb25zdCBXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUpCiB7Ci0gICAgQVNTRVJUKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihXZWJUb3VjaEV2ZW50Ojp0b3VjaGVzTGVuZ3RoQ2FwKSA+IHRvdWNoUG9p
bnRzLnNpemUoKSk7CisgICAgV0VCS0lUX0FTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV2Vi
VG91Y2hFdmVudDo6dG91Y2hlc0xlbmd0aENhcCkgPiB0b3VjaFBvaW50cy5zaXplKCkpOwogICAg
IHdlYnZpZXcoKS0+bGF5b3V0KCk7CiAKICAgICBXZWJUb3VjaEV2ZW50IHRvdWNoRXZlbnQ7CkBA
IC0xMDM4LDcgKzEwMzksNyBAQCB2b2lkIEV2ZW50U2VuZGVyOjpzZW5kQ3VycmVudFRvdWNoRXZl
bnQoY29uc3QgV2ViSW5wdXRFdmVudDo6VHlwZSB0eXBlKQogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0b3VjaFBvaW50cy5zaXplKCk7ICsraSkgewogICAgICAgICBXZWJUb3VjaFBvaW50
KiB0b3VjaFBvaW50ID0gJnRvdWNoUG9pbnRzW2ldOwogICAgICAgICBpZiAodG91Y2hQb2ludC0+
c3RhdGUgPT0gV2ViVG91Y2hQb2ludDo6U3RhdGVSZWxlYXNlZCkgewotICAgICAgICAgICAgdG91
Y2hQb2ludHMucmVtb3ZlKGkpOworICAgICAgICAgICAgdG91Y2hQb2ludHMuZXJhc2UodG91Y2hQ
b2ludHMuYmVnaW4oKSArIGkpOwogICAgICAgICAgICAgLS1pOwogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIHRvdWNoUG9pbnQtPnN0YXRlID0gV2ViVG91Y2hQb2ludDo6U3RhdGVTdGF0aW9u
YXJ5OwpAQCAtMTI2NSw3ICsxMjY2LDcgQEAgdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZUV2ZW50
KFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSwgY29uc3QgQ3BwQXJndW1lbnRMaXN0JgogICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCiAg
ICAgZXZlbnQuZ2xvYmFsWCA9IGV2ZW50Lng7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFwcGluZy5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9LZXlDb2RlTWFwcGluZy5jcHAK
aW5kZXggYzMzOWYyZjJiY2QyNWE4NDA2YzM0NjdmODg0ZThmYmE1MzQ2OTc2NS4uMjExNTg2ZTM1
ZTBjNmY3YTI4NWRjOTZlNjY3NjE5OGZlMDBjNTlkOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvS2V5Q29kZU1hcHBpbmcuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0tleUNvZGVNYXBw
aW5nLmNwcApAQCAtMzEsMTMgKzMxLDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiS2V5Q29kZU1hcHBpbmcuaCIKIAotI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgotCiBu
YW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIGludCBOYXRpdmVLZXlDb2RlRm9yV2luZG93c0tl
eUNvZGUoaW50IGtleXN5bSkKIHsKLSNpZiBPUyhMSU5VWCkgJiYgVVNFKEdUSykKKyNpZiBkZWZp
bmVkKF9fbGludXhfXykgJiYgVVNFKEdUSykKICAgICAvLyBTZWUgL3Vzci9zaGFyZS9YMTEveGti
L2tleWNvZGVzLyoKICAgICBzdGF0aWMgY29uc3QgaW50IGFzY2lpVG9LZXlDb2RlW10gPSB7CiAg
ICAgICAgIDAsCkBAIC0yNDAsOCArMjM4LDcgQEAgaW50IE5hdGl2ZUtleUNvZGVGb3JXaW5kb3dz
S2V5Q29kZShpbnQga2V5c3ltKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAjZWxzZQotICAg
IFVOVVNFRF9QQVJBTShrZXlzeW0pOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBrZXlzeW0g
LSBrZXlzeW07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNrLmNwcApp
bmRleCA3ZDQ5ZWQyZmFhMzg4ZWM2OGRlNjA3ZTVhMGUzY2U2MTA1MzFmMjdiLi42MWVlZTBjODA1
MjUwZWNlNzVkNjg1NzBmYjcwYWYzM2ZjNmFmZjllIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNoZWNrLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1h
ckNoZWNrLmNwcApAQCAtMzEsMjAgKzMxLDIyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiTW9ja0dyYW1tYXJDaGVjay5oIgogCisjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkNTdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIldlYlRleHRD
aGVja2luZ1Jlc3VsdC5oIgotCi0jaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KLSNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVz
cGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAotYm9vbCBNb2NrR3JhbW1h
ckNoZWNrOjpjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBXZWJTdHJpbmcmIHRleHQsIFZlY3Rv
cjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+KiByZXN1bHRzKQorYm9vbCBNb2NrR3JhbW1hckNoZWNr
OjpjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBXZWJTdHJpbmcmIHRleHQsIHZlY3RvcjxXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHQ+KiByZXN1bHRzKQogewotICAgIEFTU0VSVChyZXN1bHRzKTsKLSAg
ICBXVEY6OlN0cmluZyBzdHJpbmdUZXh0KHRleHQuZGF0YSgpLCB0ZXh0Lmxlbmd0aCgpKTsKLSAg
ICBpZiAoc3RyaW5nVGV4dC5maW5kKGlzQVNDSUlBbHBoYSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90
PigtMSkpCisgICAgV0VCS0lUX0FTU0VSVChyZXN1bHRzKTsKKyAgICBzdHJpbmcxNiBzdHJpbmdU
ZXh0ID0gdGV4dDsKKyAgICBpZiAoZmluZF9pZihzdHJpbmdUZXh0LmJlZ2luKCksIHN0cmluZ1Rl
eHQuZW5kKCksIGlzQVNDSUlBbHBoYSkgPT0gc3RyaW5nVGV4dC5lbmQoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICAvLyBGaW5kIG1hdGNoaW5nIGdyYW1tYXRpY2FsIGVycm9ycyBmcm9t
IGtub3duIG9uZXMuIFRoaXMgZnVuY3Rpb24gaGFzIHRvCkBAIC02OSwxMCArNzEsMTMgQEAgYm9v
bCBNb2NrR3JhbW1hckNoZWNrOjpjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBXZWJTdHJpbmcm
IHRleHQsIFZlY3RvcjxXZWJUZXgKICAgICB9OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
QVJSQVlTSVpFX1VOU0FGRShncmFtbWFyRXJyb3JzKTsgKytpKSB7CiAgICAgICAgIGludCBvZmZz
ZXQgPSAwOwotICAgICAgICB3aGlsZSAoKG9mZnNldCA9IHN0cmluZ1RleHQuZmluZChncmFtbWFy
RXJyb3JzW2ldLnRleHQsIG9mZnNldCkpICE9IC0xKSB7Ci0gICAgICAgICAgICByZXN1bHRzLT5h
cHBlbmQoV2ViVGV4dENoZWNraW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1R5cGVHcmFtbWFyLCBv
ZmZzZXQgKyBncmFtbWFyRXJyb3JzW2ldLmxvY2F0aW9uLCBncmFtbWFyRXJyb3JzW2ldLmxlbmd0
aCkpOworICAgICAgICBzdHJpbmcxNiBlcnJvcihncmFtbWFyRXJyb3JzW2ldLnRleHQsIGdyYW1t
YXJFcnJvcnNbaV0udGV4dCArIHN0cmxlbihncmFtbWFyRXJyb3JzW2ldLnRleHQpKTsKKyAgICAg
ICAgd2hpbGUgKChvZmZzZXQgPSBzdHJpbmdUZXh0LmZpbmQoZXJyb3IsIG9mZnNldCkpICE9IHN0
cmluZzE2OjpucG9zKSB7CisgICAgICAgICAgICByZXN1bHRzLT5wdXNoX2JhY2soV2ViVGV4dENo
ZWNraW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1R5cGVHcmFtbWFyLCBvZmZzZXQgKyBncmFtbWFy
RXJyb3JzW2ldLmxvY2F0aW9uLCBncmFtbWFyRXJyb3JzW2ldLmxlbmd0aCkpOwogICAgICAgICAg
ICAgb2Zmc2V0ICs9IGdyYW1tYXJFcnJvcnNbaV0ubGVuZ3RoOwogICAgICAgICB9CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKIH0KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja0dyYW1tYXJDaGVjay5oCmlu
ZGV4IDY0MjcxYjNmYTNjMmMwMWFjMTM2YzhlMTAzMDcxNjE5MjZkM2U5ODMuLmExODNkY2NiMDc0
Yzc5MGJmYWNhYzNmNzc5ODc1ZDlkYTg4MTk5NWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tHcmFtbWFyQ2hlY2suaAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrR3JhbW1hckNo
ZWNrLmgKQEAgLTMxLDggKzMxLDcgQEAKICNpZm5kZWYgTW9ja0dyYW1tYXJDaGVja19oCiAjZGVm
aW5lIE1vY2tHcmFtbWFyQ2hlY2tfaAogCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKQEAgLTQxLDYgKzQwLDggQEAgc3RydWN0IFdlYlRleHRDaGVja2luZ1Jlc3Vs
dDsKIAogfQogCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKIC8vIEEgbW9jayBpbXBsZW1l
bnRhdGlvbiBvZiBhIGdyYW1tYXItY2hlY2tlciB1c2VkIGZvciBXZWJLaXQgdGVzdHMuIFRoaXMg
Y2xhc3MKIC8vIG9ubHkgaW1wbGVtZW50cyB0aGUgbWluaW1hbCBmdW5jdGlvbmFyaXRpZXMgcmVx
dWlyZWQgYnkgV2ViS2l0IHRlc3RzLCBpLmUuCiAvLyB0aGlzIGNsYXNzIGp1c3QgY29tcGFyZXMg
dGhlIGdpdmVuIHN0cmluZyB3aXRoIGtub3duIGdyYW1tYXIgbWlzdGFrZXMgaW4KQEAgLTQ4LDcg
KzQ5LDkgQEAgc3RydWN0IFdlYlRleHRDaGVja2luZ1Jlc3VsdDsKIC8vIGZvciB3ZWJraXQgdGVz
dHMsIHRoaXMgY2xhc3MgaXMgbm90IHN1aXRhYmxlIGZvciBhbnkgb3RoZXIgdXNhZ2VzLgogY2xh
c3MgTW9ja0dyYW1tYXJDaGVjayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wgY2hlY2tHcmFt
bWFyT2ZTdHJpbmcoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBWZWN0b3I8V2ViS2l0OjpXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHQ+Kik7CisgICAgc3RhdGljIGJvb2wgY2hlY2tHcmFtbWFyT2ZTdHJp
bmcoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBzdGQ6OnZlY3RvcjxXZWJLaXQ6OldlYlRleHRD
aGVja2luZ1Jlc3VsdD4qKTsKIH07CiAKK30KKwogI2VuZGlmIC8vIE1vY2tTcGVsbENoZWNrX2gK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L01vY2tTcGVsbENoZWNrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmNwcAppbmRleCA4MWIzMDg5MmI1ODIwYWNmM2M4YjJh
ZDc4ZmU4NDExNmY5MGU4Y2JmLi5mMjczY2IyNzJkYzY5NTc0MjM1ODgxMDc1ZmI2MzRiNTFiOTNj
ZTliIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9Nb2NrU3BlbGxDaGVjay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suY3BwCkBAIC0zMSwxMyArMzEsMTcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNb2NrU3BlbGxDaGVjay5oIgogCi0jaW5j
bHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKKyNp
bmNsdWRlIDxwdWJsaWMvV2ViQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotc3RhdGljIHZvaWQgYXBwZW5kKFdlYlZlY3RvcjxXZWJT
dHJpbmc+KiBkYXRhLCBjb25zdCBXZWJTdHJpbmcmIGl0ZW0pCituYW1lc3BhY2UgV2ViVGVzdFJ1
bm5lciB7CisKK25hbWVzcGFjZSB7CisKK3ZvaWQgYXBwZW5kKFdlYlZlY3RvcjxXZWJTdHJpbmc+
KiBkYXRhLCBjb25zdCBXZWJTdHJpbmcmIGl0ZW0pCiB7CiAgICAgV2ViVmVjdG9yPFdlYlN0cmlu
Zz4gcmVzdWx0KGRhdGEtPnNpemUoKSArIDEpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZGF0YS0+c2l6ZSgpOyArK2kpCkBAIC00NiwxNyArNTAsMTcgQEAgc3RhdGljIHZvaWQgYXBwZW5k
KFdlYlZlY3RvcjxXZWJTdHJpbmc+KiBkYXRhLCBjb25zdCBXZWJTdHJpbmcmIGl0ZW0pCiAgICAg
ZGF0YS0+c3dhcChyZXN1bHQpOwogfQogCit9CisKIE1vY2tTcGVsbENoZWNrOjpNb2NrU3BlbGxD
aGVjaygpCiAgICAgOiBtX2luaXRpYWxpemVkKGZhbHNlKSB7IH0KIAogTW9ja1NwZWxsQ2hlY2s6
On5Nb2NrU3BlbGxDaGVjaygpIHsgfQogCi1zdGF0aWMgYm9vbCBpc05vdEFTQ0lJQWxwaGEoVUNo
YXIgY2gpIHsgcmV0dXJuICFpc0FTQ0lJQWxwaGEoY2gpOyB9Ci0KIGJvb2wgTW9ja1NwZWxsQ2hl
Y2s6OnNwZWxsQ2hlY2tXb3JkKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50KiBtaXNzcGVsbGVk
T2Zmc2V0LCBpbnQqIG1pc3NwZWxsZWRMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKG1pc3NwZWxsZWRP
ZmZzZXQpOwotICAgIEFTU0VSVChtaXNzcGVsbGVkTGVuZ3RoKTsKKyAgICBXRUJLSVRfQVNTRVJU
KG1pc3NwZWxsZWRPZmZzZXQpOworICAgIFdFQktJVF9BU1NFUlQobWlzc3BlbGxlZExlbmd0aCk7
CiAKICAgICAvLyBJbml0aWFsaXplIHRoaXMgc3BlbGxjaGVja2VyLgogICAgIGluaXRpYWxpemVJ
Zk5lZWRlZCgpOwpAQCAtNjUsMTIgKzY5LDEyIEBAIGJvb2wgTW9ja1NwZWxsQ2hlY2s6OnNwZWxs
Q2hlY2tXb3JkKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50KiBtaXNzcGVsbGVkT2Zmc2V0CiAg
ICAgKm1pc3NwZWxsZWRPZmZzZXQgPSAwOwogICAgICptaXNzcGVsbGVkTGVuZ3RoID0gMDsKIAot
ICAgIC8vIENvbnZlcnQgdG8gYSBTdHJpbmcgYmVjYXVzZSB3ZSBzdG9yZSBTdHJpbmcgaW5zdGFu
Y2VzIGluCisgICAgLy8gQ29udmVydCB0byBhIHN0cmluZzE2IGJlY2F1c2Ugd2Ugc3RvcmUgc3Ry
aW5nMTYgaW5zdGFuY2VzIGluCiAgICAgLy8gbV9taXNzcGVsbGVkV29yZHMgYW5kIFdlYlN0cmlu
ZyBoYXMgbm8gZmluZCgpLgotICAgIFN0cmluZyBzdHJpbmdUZXh0KHRleHQuZGF0YSgpLCB0ZXh0
Lmxlbmd0aCgpKTsKKyAgICBzdHJpbmcxNiBzdHJpbmdUZXh0ID0gdGV4dDsKICAgICBpbnQgc2tp
cHBlZExlbmd0aCA9IDA7CiAKLSAgICB3aGlsZSAoIXN0cmluZ1RleHQuaXNFbXB0eSgpKSB7Cisg
ICAgd2hpbGUgKCFzdHJpbmdUZXh0LmVtcHR5KCkpIHsKICAgICAgICAgLy8gRXh0cmFjdCB0aGUg
Zmlyc3QgcG9zc2libGUgRW5nbGlzaCB3b3JkIGZyb20gdGhlIGdpdmVuIHN0cmluZy4KICAgICAg
ICAgLy8gVGhlIGdpdmVuIHN0cmluZyBtYXkgaW5jbHVkZSBub24tQVNDSUkgY2hhcmFjdGVycyBv
ciBudW1iZXJzLiBTbywgd2UKICAgICAgICAgLy8gc2hvdWxkIGZpbHRlciBvdXQgc3VjaCBjaGFy
YWN0ZXJzIGJlZm9yZSBzdGFydCBsb29raW5nIHVwIG91cgpAQCAtNzgsMTIgKzgyLDEzIEBAIGJv
b2wgTW9ja1NwZWxsQ2hlY2s6OnNwZWxsQ2hlY2tXb3JkKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwg
aW50KiBtaXNzcGVsbGVkT2Zmc2V0CiAgICAgICAgIC8vIChUaGlzIGlzIGEgc2ltcGxlIHZlcnNp
b24gb2Ygb3VyIFNwZWxsQ2hlY2tXb3JkSXRlcmF0b3IgY2xhc3MuKQogICAgICAgICAvLyBJZiB0
aGUgZ2l2ZW4gc3RyaW5nIGRvZXNuJ3QgaW5jbHVkZSBhbnkgQVNDSUkgY2hhcmFjdGVycywgd2Ug
Y2FuIHRyZWF0IHRoZQogICAgICAgICAvLyBzdHJpbmcgYXMgdmFsaWQgb25lLgotICAgICAgICBp
bnQgd29yZE9mZnNldCA9IHN0cmluZ1RleHQuZmluZChpc0FTQ0lJQWxwaGEpOwotICAgICAgICBp
ZiAod29yZE9mZnNldCA9PSAtMSkKKyAgICAgICAgc3RyaW5nMTY6Oml0ZXJhdG9yIGZpcnN0Q2hh
ciA9IGZpbmRfaWYoc3RyaW5nVGV4dC5iZWdpbigpLCBzdHJpbmdUZXh0LmVuZCgpLCBpc0FTQ0lJ
QWxwaGEpOworICAgICAgICBpZiAoZmlyc3RDaGFyID09IHN0cmluZ1RleHQuZW5kKCkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaW50IHdvcmRPZmZzZXQgPSBkaXN0YW5jZShz
dHJpbmdUZXh0LmJlZ2luKCksIGZpcnN0Q2hhcik7CiAgICAgICAgIGludCBtYXhXb3JkTGVuZ3Ro
ID0gc3RhdGljX2Nhc3Q8aW50PihzdHJpbmdUZXh0Lmxlbmd0aCgpKSAtIHdvcmRPZmZzZXQ7CiAg
ICAgICAgIGludCB3b3JkTGVuZ3RoOwotICAgICAgICBTdHJpbmcgd29yZDsKKyAgICAgICAgc3Ry
aW5nMTYgd29yZDsKIAogICAgICAgICAvLyBMb29rIHVwIG91ciBtaXNzcGVsbGVkLXdvcmQgdGFi
bGUgdG8gY2hlY2sgaWYgdGhlIGV4dHJhY3RlZCB3b3JkIGlzIGEKICAgICAgICAgLy8ga25vd24g
bWlzc3BlbGxlZCB3b3JkLCBhbmQgcmV0dXJuIHRoZSBvZmZzZXQgYW5kIHRoZSBsZW5ndGggb2Yg
dGhlCkBAIC05Miw3ICs5Nyw3IEBAIGJvb2wgTW9ja1NwZWxsQ2hlY2s6OnNwZWxsQ2hlY2tXb3Jk
KGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50KiBtaXNzcGVsbGVkT2Zmc2V0CiAgICAgICAgIC8v
IG1pc3NwZWxsZWQtd29yZCB0YWJsZS4pCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9taXNzcGVsbGVkV29yZHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIHdvcmRMZW5ndGgg
PSBzdGF0aWNfY2FzdDxpbnQ+KG1fbWlzc3BlbGxlZFdvcmRzLmF0KGkpLmxlbmd0aCgpKSA+IG1h
eFdvcmRMZW5ndGggPyBtYXhXb3JkTGVuZ3RoIDogc3RhdGljX2Nhc3Q8aW50PihtX21pc3NwZWxs
ZWRXb3Jkcy5hdChpKS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICB3b3JkID0gc3RyaW5nVGV4dC5z
dWJzdHJpbmcod29yZE9mZnNldCwgd29yZExlbmd0aCk7CisgICAgICAgICAgICB3b3JkID0gc3Ry
aW5nVGV4dC5zdWJzdHIod29yZE9mZnNldCwgd29yZExlbmd0aCk7CiAgICAgICAgICAgICBpZiAo
d29yZCA9PSBtX21pc3NwZWxsZWRXb3Jkcy5hdChpKSAmJiAoc3RhdGljX2Nhc3Q8aW50PihzdHJp
bmdUZXh0Lmxlbmd0aCgpKSA9PSB3b3JkT2Zmc2V0ICsgd29yZExlbmd0aCB8fCBpc05vdEFTQ0lJ
QWxwaGEoc3RyaW5nVGV4dFt3b3JkT2Zmc2V0ICsgd29yZExlbmd0aF0pKSkgewogICAgICAgICAg
ICAgICAgICptaXNzcGVsbGVkT2Zmc2V0ID0gd29yZE9mZnNldCArIHNraXBwZWRMZW5ndGg7CiAg
ICAgICAgICAgICAgICAgKm1pc3NwZWxsZWRMZW5ndGggPSB3b3JkTGVuZ3RoOwpAQCAtMTAzLDEx
ICsxMDgsMTQgQEAgYm9vbCBNb2NrU3BlbGxDaGVjazo6c3BlbGxDaGVja1dvcmQoY29uc3QgV2Vi
U3RyaW5nJiB0ZXh0LCBpbnQqIG1pc3NwZWxsZWRPZmZzZXQKICAgICAgICAgaWYgKCptaXNzcGVs
bGVkTGVuZ3RoID4gMCkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGludCB3b3JkRW5k
ID0gc3RyaW5nVGV4dC5maW5kKGlzTm90QVNDSUlBbHBoYSwgd29yZE9mZnNldCk7Ci0gICAgICAg
IHdvcmRMZW5ndGggPSB3b3JkRW5kID09IC0xID8gc3RhdGljX2Nhc3Q8aW50PihzdHJpbmdUZXh0
Lmxlbmd0aCgpKSAtIHdvcmRPZmZzZXQgOiB3b3JkRW5kIC0gd29yZE9mZnNldDsKKyAgICAgICAg
c3RyaW5nMTY6Oml0ZXJhdG9yIGxhc3RDaGFyID0gZmluZF9pZihzdHJpbmdUZXh0LmJlZ2luKCkg
KyB3b3JkT2Zmc2V0LCBzdHJpbmdUZXh0LmVuZCgpLCBpc05vdEFTQ0lJQWxwaGEpOworICAgICAg
ICBpZiAobGFzdENoYXIgPT0gc3RyaW5nVGV4dC5lbmQoKSkKKyAgICAgICAgICAgIHdvcmRMZW5n
dGggPSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmluZ1RleHQubGVuZ3RoKCkpIC0gd29yZE9mZnNldDsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgd29yZExlbmd0aCA9IGRpc3RhbmNlKGZpcnN0Q2hh
ciwgbGFzdENoYXIpOwogCi0gICAgICAgIEFTU0VSVCgwIDwgd29yZE9mZnNldCArIHdvcmRMZW5n
dGgpOwotICAgICAgICBzdHJpbmdUZXh0ID0gc3RyaW5nVGV4dC5zdWJzdHJpbmcod29yZE9mZnNl
dCArIHdvcmRMZW5ndGgpOworICAgICAgICBXRUJLSVRfQVNTRVJUKDAgPCB3b3JkT2Zmc2V0ICsg
d29yZExlbmd0aCk7CisgICAgICAgIHN0cmluZ1RleHQgPSBzdHJpbmdUZXh0LnN1YnN0cih3b3Jk
T2Zmc2V0ICsgd29yZExlbmd0aCk7CiAgICAgICAgIHNraXBwZWRMZW5ndGggKz0gd29yZE9mZnNl
dCArIHdvcmRMZW5ndGg7CiAgICAgfQogCkBAIC0xNzAsNyArMTc4LDcgQEAgYm9vbCBNb2NrU3Bl
bGxDaGVjazo6aW5pdGlhbGl6ZUlmTmVlZGVkKCkKIAogICAgIG1fbWlzc3BlbGxlZFdvcmRzLmNs
ZWFyKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUobWlzc3BlbGxlZFdv
cmRzKTsgKytpKQotICAgICAgICBtX21pc3NwZWxsZWRXb3Jkcy5hcHBlbmQoU3RyaW5nOjpmcm9t
VVRGOChtaXNzcGVsbGVkV29yZHNbaV0pKTsKKyAgICAgICAgbV9taXNzcGVsbGVkV29yZHMucHVz
aF9iYWNrKHN0cmluZzE2KG1pc3NwZWxsZWRXb3Jkc1tpXSwgbWlzc3BlbGxlZFdvcmRzW2ldICsg
c3RybGVuKG1pc3NwZWxsZWRXb3Jkc1tpXSkpKTsKIAogICAgIC8vIE1hcmsgYXMgaW5pdGlhbGl6
ZWQgdG8gcHJldmVudCB0aGlzIG9iamVjdCBmcm9tIGJlaW5nIGluaXRpYWxpemVkIHR3aWNlCiAg
ICAgLy8gb3IgbW9yZS4KQEAgLTE4MCwzICsxODgsNSBAQCBib29sIE1vY2tTcGVsbENoZWNrOjpp
bml0aWFsaXplSWZOZWVkZWQoKQogICAgIC8vIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGZhbHNl
LgogICAgIHJldHVybiBmYWxzZTsKIH0KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL01vY2tTcGVsbENoZWNrLmgKaW5k
ZXggZWUzOGYyMjkyMjI2M2U3ZjMxNjgzOGNkZjg0MzY1ZTQzMGE1ZjFhNi4uNTM1OWM4ODhhYWVk
YTg1NWIyMmUxOTdjNTFkZTg4ODIwOTI5MDZiMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvTW9ja1NwZWxsQ2hlY2suaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9Nb2NrU3BlbGxDaGVjay5o
CkBAIC0zMyw4ICszMyw5IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZlY3Rv
ci5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAog
Ly8gQSBtb2NrIGltcGxlbWVudGF0aW9uIG9mIGEgc3BlbGwtY2hlY2tlciB1c2VkIGZvciBXZWJL
aXQgdGVzdHMuCiAvLyBUaGlzIGNsYXNzIG9ubHkgaW1wbGVtZW50cyB0aGUgbWluaW1hbCBmdW5j
dGlvbmFyaXRpZXMgcmVxdWlyZWQgYnkgV2ViS2l0CkBAIC03MCwxMCArNzEsMTIgQEAgcHJpdmF0
ZToKICAgICBib29sIGluaXRpYWxpemVJZk5lZWRlZCgpOwogCiAgICAgLy8gQSB0YWJsZSB0aGF0
IGNvbnNpc3RzIG9mIG1pc3NwZWxsZWQgd29yZHMuCi0gICAgVmVjdG9yPFN0cmluZz4gbV9taXNz
cGVsbGVkV29yZHM7CisgICAgc3RkOjp2ZWN0b3I8c3RyaW5nMTY+IG1fbWlzc3BlbGxlZFdvcmRz
OwogCiAgICAgLy8gQSBmbGFnIHJlcHJlc2VudGluZyB3aGV0aGVyIG9yIG5vdCB0aGlzIG9iamVj
dCBpcyBpbml0aWFsaXplZC4KICAgICBib29sIG1faW5pdGlhbGl6ZWQ7CiB9OwogCit9CisKICNl
bmRpZiAvLyBNb2NrU3BlbGxDaGVja19oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9TcGVsbENoZWNrQ2xpZW50LmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxsQ2hlY2tDbGllbnQuY3Bw
CmluZGV4IDZlZjBmNWIxOWZhYWM3YzFiOTNkNjQ2Nzc0YjFiODI2ZTdjNWZjODAuLmIwNTE4MzUy
ZDQ3N2JjYjZmNjljY2Y3MjgwNjg1OTMyOGViMGNmZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxsQ2hlY2tDbGllbnQuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1NwZWxsQ2hl
Y2tDbGllbnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5n
UmVzdWx0LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKQEAgLTgxLDcgKzgyLDcgQEAgdm9pZCBT
cGVsbENoZWNrQ2xpZW50OjpzcGVsbENoZWNrKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50JiBt
aXNzcGVsbGVkT2Zmc2V0LAogCiB2b2lkIFNwZWxsQ2hlY2tDbGllbnQ6OmNoZWNrVGV4dE9mUGFy
YWdyYXBoKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgV2ViVGV4dENoZWNraW5nVHlwZU1hc2sgbWFz
aywgV2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4qIHdlYlJlc3VsdHMpCiB7Ci0gICAg
VmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKKyAgICB2ZWN0b3I8V2ViVGV4
dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwogICAgIGlmIChtYXNrICYgV2ViVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nKSB7CiAgICAgICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgICAgICBzaXpl
X3QgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKQEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBTcGVsbENo
ZWNrQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBXZWJTdHJpbmcmIHRleHQsIFdl
YlRleHRDaGVja2kKICAgICAgICAgICAgIHJlc3VsdC50eXBlID0gV2ViVGV4dENoZWNraW5nVHlw
ZVNwZWxsaW5nOwogICAgICAgICAgICAgcmVzdWx0LmxvY2F0aW9uID0gb2Zmc2V0ICsgbWlzc3Bl
bGxlZFBvc2l0aW9uOwogICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IG1pc3NwZWxsZWRMZW5n
dGg7Ci0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOworICAgICAgICAgICAgcmVz
dWx0cy5wdXNoX2JhY2socmVzdWx0KTsKICAgICAgICAgICAgIG9mZnNldCArPSBtaXNzcGVsbGVk
UG9zaXRpb24gKyBtaXNzcGVsbGVkTGVuZ3RoOwogICAgICAgICB9CiAgICAgfQpAQCAtMTIwLDE5
ICsxMjEsMTkgQEAgdm9pZCBTcGVsbENoZWNrQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlRleHQo
Y29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBXZWJUZXh0Q2hlY2sKIAogdm9pZCBTcGVsbENoZWNrQ2xp
ZW50OjpmaW5pc2hMYXN0VGV4dENoZWNrKCkKIHsKLSAgICBWZWN0b3I8V2ViVGV4dENoZWNraW5n
UmVzdWx0PiByZXN1bHRzOworICAgIHZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3Vs
dHM7CiAgICAgaW50IG9mZnNldCA9IDA7Ci0gICAgU3RyaW5nIHRleHQobV9sYXN0UmVxdWVzdGVk
VGV4dENoZWNrU3RyaW5nLmRhdGEoKSwgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nLmxl
bmd0aCgpKTsKKyAgICBzdHJpbmcxNiB0ZXh0ID0gbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3Ry
aW5nOwogICAgIHdoaWxlICh0ZXh0Lmxlbmd0aCgpKSB7CiAgICAgICAgIGludCBtaXNzcGVsbGVk
UG9zaXRpb24gPSAwOwogICAgICAgICBpbnQgbWlzc3BlbGxlZExlbmd0aCA9IDA7Ci0gICAgICAg
IG1fc3BlbGxjaGVjay5zcGVsbENoZWNrV29yZChXZWJTdHJpbmcodGV4dC5jaGFyYWN0ZXJzKCks
IHRleHQubGVuZ3RoKCkpLCAmbWlzc3BlbGxlZFBvc2l0aW9uLCAmbWlzc3BlbGxlZExlbmd0aCk7
CisgICAgICAgIG1fc3BlbGxjaGVjay5zcGVsbENoZWNrV29yZChXZWJTdHJpbmcodGV4dCksICZt
aXNzcGVsbGVkUG9zaXRpb24sICZtaXNzcGVsbGVkTGVuZ3RoKTsKICAgICAgICAgaWYgKCFtaXNz
cGVsbGVkTGVuZ3RoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIFdlYlZlY3RvcjxXZWJT
dHJpbmc+IHN1Z2dlc3Rpb25zOwotICAgICAgICBtX3NwZWxsY2hlY2suZmlsbFN1Z2dlc3Rpb25M
aXN0KFdlYlN0cmluZyh0ZXh0LmNoYXJhY3RlcnMoKSArIG1pc3NwZWxsZWRQb3NpdGlvbiwgbWlz
c3BlbGxlZExlbmd0aCksICZzdWdnZXN0aW9ucyk7Ci0gICAgICAgIHJlc3VsdHMuYXBwZW5kKFdl
YlRleHRDaGVja2luZ1Jlc3VsdChXZWJUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcsIG9mZnNldCAr
IG1pc3NwZWxsZWRQb3NpdGlvbiwgbWlzc3BlbGxlZExlbmd0aCwgc3VnZ2VzdGlvbnMuaXNFbXB0
eSgpID8gV2ViU3RyaW5nKCkgOiBzdWdnZXN0aW9uc1swXSkpOwotICAgICAgICB0ZXh0ID0gdGV4
dC5zdWJzdHJpbmcobWlzc3BlbGxlZFBvc2l0aW9uICsgbWlzc3BlbGxlZExlbmd0aCk7CisgICAg
ICAgIG1fc3BlbGxjaGVjay5maWxsU3VnZ2VzdGlvbkxpc3QoV2ViU3RyaW5nKHRleHQuc3Vic3Ry
KG1pc3NwZWxsZWRQb3NpdGlvbiwgbWlzc3BlbGxlZExlbmd0aCkpLCAmc3VnZ2VzdGlvbnMpOwor
ICAgICAgICByZXN1bHRzLnB1c2hfYmFjayhXZWJUZXh0Q2hlY2tpbmdSZXN1bHQoV2ViVGV4dENo
ZWNraW5nVHlwZVNwZWxsaW5nLCBvZmZzZXQgKyBtaXNzcGVsbGVkUG9zaXRpb24sIG1pc3NwZWxs
ZWRMZW5ndGgsIHN1Z2dlc3Rpb25zLmlzRW1wdHkoKSA/IFdlYlN0cmluZygpIDogc3VnZ2VzdGlv
bnNbMF0pKTsKKyAgICAgICAgdGV4dCA9IHRleHQuc3Vic3RyKG1pc3NwZWxsZWRQb3NpdGlvbiAr
IG1pc3NwZWxsZWRMZW5ndGgpOwogICAgICAgICBvZmZzZXQgKz0gbWlzc3BlbGxlZFBvc2l0aW9u
ICsgbWlzc3BlbGxlZExlbmd0aDsKICAgICB9CiAgICAgTW9ja0dyYW1tYXJDaGVjazo6Y2hlY2tH
cmFtbWFyT2ZTdHJpbmcobV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nLCAmcmVzdWx0cyk7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0Q29tbW9uLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0Q29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFmNzZmODRlMjc2NGUxY2IwYjRiYTQxNzAz
OTljY2I3ZGVlNTJkMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RDb21tb24uaApAQCAtMCwwICsxLDQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBUZXN0Q29tbW9uX2gKKyNkZWZpbmUgVGVzdENvbW1vbl9oCisKKyNpbmNsdWRlIDxiYXNlL2Nv
bXBpbGVyX3NwZWNpZmljLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbW1vbi5oPgorI2luY2x1
ZGUgPHN0ZGlvLmg+CisKKyNpZiBkZWZpbmVkKFdJTjMyKQorI2RlZmluZSBzbnByaW50ZihzdHIs
IHNpemUsIC4uLikgX3NucHJpbnRmX3Moc3RyLCBzaXplLCBzaXplLCBfX1ZBX0FSR1NfXykKKyNl
bmRpZgorCitpbmxpbmUgYm9vbCBpc0FTQ0lJQWxwaGEoY2hhciBjaCkgeyByZXR1cm4gKGNoIHwg
MHgyMCkgPj0gJ2EnICYmIChjaCB8IDB4MjApIDw9ICd6JzsgfQorCitpbmxpbmUgYm9vbCBpc05v
dEFTQ0lJQWxwaGEoY2hhciBjaCkgeyByZXR1cm4gIWlzQVNDSUlBbHBoYShjaCk7IH0KKworI2Vu
ZGlmIC8vIFRlc3RDb21tb25faApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwCmluZGV4IGUz
ZGNmODAyMDUxNmM1YzFiZmUxNWMzMmM2ZDI3NDAxY2U1YjE2MDguLjQ2ZDZhZDA2NWJhMzBhMmE2
MWZjYmUxZWVlODljODQ1MmVmZjU4YmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAK
QEAgLTQ1LDEzICs0NSwxMyBAQCB1c2luZyBXZWJLaXQ6OldlYlZpZXc7CiBuYW1lc3BhY2UgV2Vi
VGVzdFJ1bm5lciB7CiAKIFRlc3RJbnRlcmZhY2VzOjpUZXN0SW50ZXJmYWNlcygpCi0gICAgOiBt
X3dlYlZpZXcoMCkKKyAgICA6IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIobmV3IEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKCkpCisgICAgLCBtX2V2ZW50U2VuZGVyKG5ldyBFdmVudFNlbmRlcigp
KQorICAgICwgbV9nYW1lcGFkQ29udHJvbGxlcihuZXcgR2FtZXBhZENvbnRyb2xsZXIoKSkKKyAg
ICAsIG1fdGV4dElucHV0Q29udHJvbGxlcihuZXcgVGV4dElucHV0Q29udHJvbGxlcigpKQorICAg
ICwgbV90ZXN0UnVubmVyKG5ldyBUZXN0UnVubmVyKCkpCisgICAgLCBtX3dlYlZpZXcoMCkKIHsK
LSAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKCkpOwotICAgIG1fZXZlbnRTZW5kZXIgPSBhZG9wdFB0cihuZXcgRXZlbnRT
ZW5kZXIoKSk7Ci0gICAgbV9nYW1lcGFkQ29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBHYW1lcGFk
Q29udHJvbGxlcigpKTsKLSAgICBtX3RleHRJbnB1dENvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcg
VGV4dElucHV0Q29udHJvbGxlcigpKTsKLSAgICBtX3Rlc3RSdW5uZXIgPSBhZG9wdFB0cihuZXcg
VGVzdFJ1bm5lcigpKTsKIH0KIAogVGVzdEludGVyZmFjZXM6On5UZXN0SW50ZXJmYWNlcygpCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0SW50ZXJmYWNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdEludGVyZmFjZXMuaAppbmRleCBkODM0YzQwYjE2Mjc0MmE2NDg2MWFjZDRjYmM3
OGI2ZWJiZTc0OTI5Li44M2IzOGRiNjgxNzlhZDM4NWUxZjI1MDEwMjU4ZWI1MGM5ZGZkNDkxIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0SW50ZXJmYWNlcy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgVGVz
dEludGVyZmFjZXNfaAogI2RlZmluZSBUZXN0SW50ZXJmYWNlc19oCiAKLSNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IFdlYkZyYW1lOwpAQCAtNjUsMTEgKzY1LDExIEBAIHB1YmxpYzoKIAogCiBwcml2YXRlOgotICAg
IE93blB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjsKLSAgICBPd25QdHI8RXZlbnRTZW5kZXI+IG1fZXZlbnRTZW5kZXI7Ci0gICAgT3duUHRyPEdh
bWVwYWRDb250cm9sbGVyPiBtX2dhbWVwYWRDb250cm9sbGVyOwotICAgIE93blB0cjxUZXh0SW5w
dXRDb250cm9sbGVyPiBtX3RleHRJbnB1dENvbnRyb2xsZXI7Ci0gICAgT3duUHRyPFRlc3RSdW5u
ZXI+IG1fdGVzdFJ1bm5lcjsKKyAgICBzdGQ6OmF1dG9fcHRyPEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyPiBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOworICAgIHN0ZDo6YXV0b19wdHI8RXZlbnRT
ZW5kZXI+IG1fZXZlbnRTZW5kZXI7CisgICAgc3RkOjphdXRvX3B0cjxHYW1lcGFkQ29udHJvbGxl
cj4gbV9nYW1lcGFkQ29udHJvbGxlcjsKKyAgICBzdGQ6OmF1dG9fcHRyPFRleHRJbnB1dENvbnRy
b2xsZXI+IG1fdGV4dElucHV0Q29udHJvbGxlcjsKKyAgICBzdGQ6OmF1dG9fcHRyPFRlc3RSdW5u
ZXI+IG1fdGVzdFJ1bm5lcjsKICAgICBXZWJLaXQ6OldlYlZpZXcqIG1fd2ViVmlldzsKIH07CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RQbHVnaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdFBsdWdpbi5jcHAKaW5kZXggY2NmNjM3ZjM5NjQ3OWRmYmNlOWIxOWVkMmU5NTQ4
ZjcyNTYyZmZhYS4uODRjZjlkM2ZiZDVmMjRjY2M2MWJjMzYzMGQ1M2M3MGMxNjYxMThhMSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFBsdWdpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdFBsdWdpbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJUZXN0UGx1Z2luLmgiCiAKKyNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVk
ZSAiV2ViS2l0LmgiCkBAIC0zNSwxMiArMzYsOSBAQAogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9y
bS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIg
ewogCkBAIC05OSw3ICs5Nyw3IEBAIGNvbnN0IGNoYXIqIHBvaW50U3RhdGUoV2ViVG91Y2hQb2lu
dDo6U3RhdGUgc3RhdGUpCiAgICAgICAgIHJldHVybiAiVW5rbm93biI7CiAgICAgfQogCi0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiAwOwogfQogCkBAIC0xMzQsMTIgKzEzMiw5IEBAIHZvaWQgcHJpbnRFdmVudERl
dGFpbHMoV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSwgY29uc3QgV2ViSW5wdXRFdmVudCYgZXZl
bnQpCiAKIFdlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJlcXVlc3RUeXBlIHBhcnNlVG91
Y2hFdmVudFJlcXVlc3RUeXBlKGNvbnN0IFdlYlN0cmluZyYgc3RyaW5nKQogewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgV2ViU3RyaW5nLCBrUHJpbWl0aXZlUmF3LCAoV2ViU3RyaW5n
Ojpmcm9tVVRGOCgicmF3IikpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFdlYlN0
cmluZywga1ByaW1pdGl2ZVN5bnRoZXRpYywgKFdlYlN0cmluZzo6ZnJvbVVURjgoInN5bnRoZXRp
YyIpKSk7Ci0KLSAgICBpZiAoc3RyaW5nID09IGtQcmltaXRpdmVSYXcpCisgICAgaWYgKHN0cmlu
ZyA9PSBXZWJTdHJpbmc6OmZyb21VVEY4KCJyYXciKSkKICAgICAgICAgcmV0dXJuIFdlYlBsdWdp
bkNvbnRhaW5lcjo6VG91Y2hFdmVudFJlcXVlc3RUeXBlUmF3OwotICAgIGlmIChzdHJpbmcgPT0g
a1ByaW1pdGl2ZVN5bnRoZXRpYykKKyAgICBpZiAoc3RyaW5nID09IFdlYlN0cmluZzo6ZnJvbVVU
RjgoInN5bnRoZXRpYyIpKQogICAgICAgICByZXR1cm4gV2ViUGx1Z2luQ29udGFpbmVyOjpUb3Vj
aEV2ZW50UmVxdWVzdFR5cGVTeW50aGVzaXplZE1vdXNlOwogICAgIHJldHVybiBXZWJQbHVnaW5D
b250YWluZXI6OlRvdWNoRXZlbnRSZXF1ZXN0VHlwZU5vbmU7CiB9CkBAIC0xNjgsNyArMTYzLDcg
QEAgVGVzdFBsdWdpbjo6VGVzdFBsdWdpbihXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYlBsdWdp
blBhcmFtcyYgcGFyYW1zLCBXZWJUZXN0RGUKICAgICBzdGF0aWMgY29uc3QgV2ViU3RyaW5nIGtB
dHRyaWJ1dGVDYW5Qcm9jZXNzRHJhZyA9IFdlYlN0cmluZzo6ZnJvbVVURjgoImNhbi1wcm9jZXNz
LWRyYWciKTsKICAgICBzdGF0aWMgY29uc3QgV2ViU3RyaW5nIGtBdHRyaWJ1dGVQcmludFVzZXJH
ZXN0dXJlU3RhdHVzID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgicHJpbnQtdXNlci1nZXN0dXJlLXN0
YXR1cyIpOwogCi0gICAgQVNTRVJUKHBhcmFtcy5hdHRyaWJ1dGVOYW1lcy5zaXplKCkgPT0gcGFy
YW1zLmF0dHJpYnV0ZVZhbHVlcy5zaXplKCkpOworICAgIFdFQktJVF9BU1NFUlQocGFyYW1zLmF0
dHJpYnV0ZU5hbWVzLnNpemUoKSA9PSBwYXJhbXMuYXR0cmlidXRlVmFsdWVzLnNpemUoKSk7CiAg
ICAgc2l6ZV90IHNpemUgPSBwYXJhbXMuYXR0cmlidXRlTmFtZXMuc2l6ZSgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYg
YXR0cmlidXRlTmFtZSA9IHBhcmFtcy5hdHRyaWJ1dGVOYW1lc1tpXTsKQEAgLTIxMiw3ICsyMDcs
NyBAQCBib29sIFRlc3RQbHVnaW46OmluaXRpYWxpemUoV2ViUGx1Z2luQ29udGFpbmVyKiBjb250
YWluZXIpCiAgICAgaWYgKCFpbml0U2NlbmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgbV9sYXllciA9IGFkb3B0UHRyKFBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBw
b3J0KCktPmNyZWF0ZUV4dGVybmFsVGV4dHVyZUxheWVyKHRoaXMpKTsKKyAgICBtX2xheWVyID0g
YXV0b19wdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+KFBsYXRmb3JtOjpjdXJyZW50KCktPmNv
bXBvc2l0b3JTdXBwb3J0KCktPmNyZWF0ZUV4dGVybmFsVGV4dHVyZUxheWVyKHRoaXMpKTsKICAg
ICBtX2NvbnRhaW5lciA9IGNvbnRhaW5lcjsKICAgICBtX2NvbnRhaW5lci0+c2V0V2ViTGF5ZXIo
bV9sYXllci0+bGF5ZXIoKSk7CiAgICAgaWYgKG1fcmVSZXF1ZXN0VG91Y2hFdmVudHMpIHsKQEAg
LTIyOCw3ICsyMjMsNyBAQCB2b2lkIFRlc3RQbHVnaW46OmRlc3Ryb3koKQogewogICAgIGlmICht
X2NvbnRhaW5lcikKICAgICAgICAgbV9jb250YWluZXItPnNldFdlYkxheWVyKDApOwotICAgIG1f
bGF5ZXIuY2xlYXIoKTsKKyAgICBtX2xheWVyLnJlc2V0KCk7CiAgICAgZGVzdHJveVNjZW5lKCk7
CiAKICAgICBkZWxldGUgbV9jb250ZXh0OwpAQCAtMjc1LDcgKzI3MCw3IEBAIFRlc3RQbHVnaW46
OlByaW1pdGl2ZSBUZXN0UGx1Z2luOjpwYXJzZVByaW1pdGl2ZShjb25zdCBXZWJTdHJpbmcmIHN0
cmluZykKICAgICBlbHNlIGlmIChzdHJpbmcgPT0ga1ByaW1pdGl2ZVRyaWFuZ2xlKQogICAgICAg
ICBwcmltaXRpdmUgPSBQcmltaXRpdmVUcmlhbmdsZTsKICAgICBlbHNlCi0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIHByaW1pdGl2ZTsKIH0KIApAQCAtMjk0LDcgKzI4OSw3IEBAIHZvaWQgVGVzdFBs
dWdpbjo6cGFyc2VDb2xvcihjb25zdCBXZWJTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgY29sb3Jb
M10pCiAgICAgZWxzZSBpZiAoc3RyaW5nID09ICJibHVlIikKICAgICAgICAgY29sb3JbMl0gPSAy
NTU7CiAgICAgZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiBmbG9hdCBUZXN0UGx1Z2luOjpwYXJzZU9w
YWNpdHkoY29uc3QgV2ViU3RyaW5nJiBzdHJpbmcpCkBAIC0zNjEsMTQgKzM1NiwxNCBAQCB2b2lk
IFRlc3RQbHVnaW46OmRlc3Ryb3lTY2VuZSgpCiAKIGJvb2wgVGVzdFBsdWdpbjo6aW5pdFByb2dy
YW0oKQogewotICAgIGNvbnN0IENTdHJpbmcgdmVydGV4U291cmNlKAorICAgIGNvbnN0IHN0cmlu
ZyB2ZXJ0ZXhTb3VyY2UoCiAgICAgICAgICJhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsgIFxuIgog
ICAgICAgICAidm9pZCBtYWluKCkgeyAgICAgICAgICAgICBcbiIKICAgICAgICAgIiAgZ2xfUG9z
aXRpb24gPSBwb3NpdGlvbjsgXG4iCiAgICAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAg
IFxuIgogICAgICk7CiAKLSAgICBjb25zdCBDU3RyaW5nIGZyYWdtZW50U291cmNlKAorICAgIGNv
bnN0IHN0cmluZyBmcmFnbWVudFNvdXJjZSgKICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OyBcbiIKICAgICAgICAgInVuaWZvcm0gdmVjNCBjb2xvcjsgICAgICBcbiIKICAgICAgICAg
InZvaWQgbWFpbigpIHsgICAgICAgICAgICBcbiIKQEAgLTM4Nyw3ICszODIsNyBAQCBib29sIFRl
c3RQbHVnaW46OmluaXRQcm9ncmFtKCkKIAogYm9vbCBUZXN0UGx1Z2luOjppbml0UHJpbWl0aXZl
KCkKIHsKLSAgICBBU1NFUlQobV9zY2VuZS5wcmltaXRpdmUgPT0gUHJpbWl0aXZlVHJpYW5nbGUp
OworICAgIFdFQktJVF9BU1NFUlQobV9zY2VuZS5wcmltaXRpdmUgPT0gUHJpbWl0aXZlVHJpYW5n
bGUpOwogCiAgICAgbV9zY2VuZS52Ym8gPSBtX2NvbnRleHQtPmNyZWF0ZUJ1ZmZlcigpOwogICAg
IGlmICghbV9zY2VuZS52Ym8pCkBAIC00MDUsOSArNDAwLDkgQEAgYm9vbCBUZXN0UGx1Z2luOjpp
bml0UHJpbWl0aXZlKCkKIAogdm9pZCBUZXN0UGx1Z2luOjpkcmF3UHJpbWl0aXZlKCkKIHsKLSAg
ICBBU1NFUlQobV9zY2VuZS5wcmltaXRpdmUgPT0gUHJpbWl0aXZlVHJpYW5nbGUpOwotICAgIEFT
U0VSVChtX3NjZW5lLnZibyk7Ci0gICAgQVNTRVJUKG1fc2NlbmUucHJvZ3JhbSk7CisgICAgV0VC
S0lUX0FTU0VSVChtX3NjZW5lLnByaW1pdGl2ZSA9PSBQcmltaXRpdmVUcmlhbmdsZSk7CisgICAg
V0VCS0lUX0FTU0VSVChtX3NjZW5lLnZibyk7CisgICAgV0VCS0lUX0FTU0VSVChtX3NjZW5lLnBy
b2dyYW0pOwogCiAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1fc2NlbmUucHJvZ3JhbSk7CiAK
QEAgLTQyMyw3ICs0MTgsNyBAQCB2b2lkIFRlc3RQbHVnaW46OmRyYXdQcmltaXRpdmUoKQogICAg
IG1fY29udGV4dC0+ZHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOwogfQogCi11bnNpZ25l
ZCBUZXN0UGx1Z2luOjpsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUsIGNvbnN0IENTdHJpbmcmIHNv
dXJjZSkKK3Vuc2lnbmVkIFRlc3RQbHVnaW46OmxvYWRTaGFkZXIodW5zaWduZWQgdHlwZSwgY29u
c3Qgc3RyaW5nJiBzb3VyY2UpCiB7CiAgICAgdW5zaWduZWQgc2hhZGVyID0gbV9jb250ZXh0LT5j
cmVhdGVTaGFkZXIodHlwZSk7CiAgICAgaWYgKHNoYWRlcikgewpAQCAtNDQwLDcgKzQzNSw3IEBA
IHVuc2lnbmVkIFRlc3RQbHVnaW46OmxvYWRTaGFkZXIodW5zaWduZWQgdHlwZSwgY29uc3QgQ1N0
cmluZyYgc291cmNlKQogICAgIHJldHVybiBzaGFkZXI7CiB9CiAKLXVuc2lnbmVkIFRlc3RQbHVn
aW46OmxvYWRQcm9ncmFtKGNvbnN0IENTdHJpbmcmIHZlcnRleFNvdXJjZSwgY29uc3QgQ1N0cmlu
ZyYgZnJhZ21lbnRTb3VyY2UpCit1bnNpZ25lZCBUZXN0UGx1Z2luOjpsb2FkUHJvZ3JhbShjb25z
dCBzdHJpbmcmIHZlcnRleFNvdXJjZSwgY29uc3Qgc3RyaW5nJiBmcmFnbWVudFNvdXJjZSkKIHsK
ICAgICB1bnNpZ25lZCB2ZXJ0ZXhTaGFkZXIgPSBsb2FkU2hhZGVyKEdMX1ZFUlRFWF9TSEFERVIs
IHZlcnRleFNvdXJjZSk7CiAgICAgdW5zaWduZWQgZnJhZ21lbnRTaGFkZXIgPSBsb2FkU2hhZGVy
KEdMX0ZSQUdNRU5UX1NIQURFUiwgZnJhZ21lbnRTb3VyY2UpOwpAQCAtNTMzLDcgKzUyOCw3IEBA
IGJvb2wgVGVzdFBsdWdpbjo6aGFuZGxlRHJhZ1N0YXR1c1VwZGF0ZShXZWJEcmFnU3RhdHVzIGRy
YWdTdGF0dXMsIGNvbnN0IFdlYkRyYWdECiAgICAgICAgIGRyYWdTdGF0dXNOYW1lID0gIkRyYWdE
cm9wIjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJEcmFnU3RhdHVzVW5rbm93bjoKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0ZDo6c3RyaW5n
KCJQbHVnaW4gcmVjZWl2ZWQgZXZlbnQ6ICIpICsgZHJhZ1N0YXR1c05hbWUgKyAiXG4iKTsKICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmgKaW5kZXggMWUxMDBkYWU5MWZjMDJjMGQx
MDk5MmQ1NzZjODQyMGIwYWQ0ZTQ0Ni4uNTNiMjJlMTFiYzY2YmQ1MWZhNTMzMjIzZTI4ZjNlNTNk
ZDIwYjg5YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGVzdFBsdWdpbi5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uaApAQCAtMjgsOSArMjgsMTAgQEAKIAogI2luY2x1
ZGUgIldlYlBsdWdpbi5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lci5oIgorI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaD4K
ICNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQuaD4KLSNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8c3RyaW5nPgogCiBuYW1lc3BhY2UgV2ViVGVz
dFJ1bm5lciB7CiAKQEAgLTEyNCw4ICsxMjUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgaW5pdFBy
b2dyYW0oKTsKICAgICBib29sIGluaXRQcmltaXRpdmUoKTsKICAgICB2b2lkIGRyYXdQcmltaXRp
dmUoKTsKLSAgICB1bnNpZ25lZCBsb2FkU2hhZGVyKHVuc2lnbmVkIHR5cGUsIGNvbnN0IFdURjo6
Q1N0cmluZyYgc291cmNlKTsKLSAgICB1bnNpZ25lZCBsb2FkUHJvZ3JhbShjb25zdCBXVEY6OkNT
dHJpbmcmIHZlcnRleFNvdXJjZSwgY29uc3QgV1RGOjpDU3RyaW5nJiBmcmFnbWVudFNvdXJjZSk7
CisgICAgdW5zaWduZWQgbG9hZFNoYWRlcih1bnNpZ25lZCB0eXBlLCBjb25zdCBzdGQ6OnN0cmlu
ZyYgc291cmNlKTsKKyAgICB1bnNpZ25lZCBsb2FkUHJvZ3JhbShjb25zdCBzdGQ6OnN0cmluZyYg
dmVydGV4U291cmNlLCBjb25zdCBzdGQ6OnN0cmluZyYgZnJhZ21lbnRTb3VyY2UpOwogCiAgICAg
V2ViS2l0OjpXZWJGcmFtZSogbV9mcmFtZTsKICAgICBXZWJUZXN0RGVsZWdhdGUqIG1fZGVsZWdh
dGU7CkBAIC0xMzYsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2NvbG9yVGV4
dHVyZTsKICAgICB1bnNpZ25lZCBtX2ZyYW1lYnVmZmVyOwogICAgIFNjZW5lIG1fc2NlbmU7Ci0g
ICAgT3duUHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1fbGF5ZXI7CisgICAg
c3RkOjphdXRvX3B0cjxXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyPiBtX2xheWVyOwog
CiAgICAgV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXI6OlRvdWNoRXZlbnRSZXF1ZXN0VHlwZSBt
X3RvdWNoRXZlbnRSZXF1ZXN0OwogICAgIC8vIFJlcXVlc3RzIHRvdWNoIGV2ZW50cyBmcm9tIHRo
ZSBXZWJQbHVnaW5Db250YWluZXJJbXBsIG11bHRpcGxlIHRpbWVzIHRvIHRpY2tsZSB3ZWJraXQu
b3JnL2IvMTA4MzgxCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDFlYThkMDZmMDU4YzU4MDUz
OGZlZjk2ODAwMzAzNjg4ZjRjNDVjMmUuLjcxM2I3ZTkwNTQwOGQxM2NkNjdjYjAwNjA0NDkwMWVj
NTE5YTdiMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCkBAIC01NSwxMiArNTUsMTIgQEAKICNp
bmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViV29ya2VySW5mby5oIgogI2luY2x1ZGUg
InY4L2luY2x1ZGUvdjguaCIKKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJEYXRhLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlBvaW50Lmg+
Ci0jaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLSNpZiBPUyhMSU5VWCkgfHwgT1MoQU5EUk9JRCkKKyNpZiBkZWZpbmVkKF9fbGlu
dXhfXykgfHwgZGVmaW5lZChBTkRST0lEKQogI2luY2x1ZGUgImxpbnV4L1dlYkZvbnRSZW5kZXJp
bmcuaCIKICNlbmRpZgogCkBAIC04MywyMiArODMsMjAgQEAgcHVibGljOgogCiBjbGFzcyBJbnZv
a2VDYWxsYmFja1Rhc2sgOiBwdWJsaWMgV2ViTWV0aG9kVGFzazxUZXN0UnVubmVyPiB7CiBwdWJs
aWM6Ci0gICAgSW52b2tlQ2FsbGJhY2tUYXNrKFRlc3RSdW5uZXIqIG9iamVjdCwgUGFzc093bkFy
cmF5UHRyPENwcFZhcmlhbnQ+IGNhbGxiYWNrQXJndW1lbnRzLCB1aW50MzJfdCBudW1iZXJPZkFy
Z3VtZW50cykKKyAgICBJbnZva2VDYWxsYmFja1Rhc2soVGVzdFJ1bm5lciogb2JqZWN0LCBhdXRv
X3B0cjxDcHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cykKICAgICAgICAgOiBXZWJNZXRob2RU
YXNrPFRlc3RSdW5uZXI+KG9iamVjdCkKICAgICAgICAgLCBtX2NhbGxiYWNrQXJndW1lbnRzKGNh
bGxiYWNrQXJndW1lbnRzKQotICAgICAgICAsIG1fbnVtYmVyT2ZBcmd1bWVudHMobnVtYmVyT2ZB
cmd1bWVudHMpCiAgICAgewogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlkKCkK
ICAgICB7CiAgICAgICAgIENwcFZhcmlhbnQgaW52b2tlUmVzdWx0OwotICAgICAgICBtX2NhbGxi
YWNrQXJndW1lbnRzWzBdLmludm9rZURlZmF1bHQobV9jYWxsYmFja0FyZ3VtZW50cy5nZXQoKSwg
bV9udW1iZXJPZkFyZ3VtZW50cywgaW52b2tlUmVzdWx0KTsKKyAgICAgICAgbV9jYWxsYmFja0Fy
Z3VtZW50cy0+aW52b2tlRGVmYXVsdChtX2NhbGxiYWNrQXJndW1lbnRzLmdldCgpLCAxLCBpbnZv
a2VSZXN1bHQpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBPd25BcnJheVB0cjxDcHBWYXJpYW50
PiBtX2NhbGxiYWNrQXJndW1lbnRzOwotICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZBcmd1bWVudHM7
CisgICAgYXV0b19wdHI8Q3BwVmFyaWFudD4gbV9jYWxsYmFja0FyZ3VtZW50czsKIH07CiAKIH0K
QEAgLTExMyw3ICsxMTEsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dv
cmtTb29uKCkKICAgICBpZiAobV9jb250cm9sbGVyLT50b3BMb2FkaW5nRnJhbWUoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX3F1ZXVlLmlzRW1wdHkoKSkgeworICAgIGlmICghbV9x
dWV1ZS5lbXB0eSgpKSB7CiAgICAgICAgIC8vIFdlIGRlbGF5IHByb2Nlc3NpbmcgcXVldWVkIHdv
cmsgdG8gYXZvaWQgcmVjdXJzaW9uIHByb2JsZW1zLgogICAgICAgICBtX2NvbnRyb2xsZXItPm1f
ZGVsZWdhdGUtPnBvc3RUYXNrKG5ldyBXb3JrUXVldWVUYXNrKHRoaXMpKTsKICAgICB9IGVsc2Ug
aWYgKCFtX2NvbnRyb2xsZXItPm1fd2FpdFVudGlsRG9uZSkKQEAgLTEyMyw5ICsxMjEsMTAgQEAg
dm9pZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6OnByb2Nlc3NXb3JrU29vbigpCiB2b2lkIFRlc3RS
dW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dvcmsoKQogewogICAgIC8vIFF1aXQgZG9pbmcgd29y
ayBvbmNlIGEgbG9hZCBpcyBpbiBwcm9ncmVzcy4KLSAgICB3aGlsZSAoIW1fcXVldWUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGJvb2wgc3RhcnRlZExvYWQgPSBtX3F1ZXVlLmZpcnN0KCktPnJ1biht
X2NvbnRyb2xsZXItPm1fZGVsZWdhdGUsIG1fY29udHJvbGxlci0+bV93ZWJWaWV3KTsKLSAgICAg
ICAgZGVsZXRlIG1fcXVldWUudGFrZUZpcnN0KCk7CisgICAgd2hpbGUgKCFtX3F1ZXVlLmVtcHR5
KCkpIHsKKyAgICAgICAgYm9vbCBzdGFydGVkTG9hZCA9IG1fcXVldWUuZnJvbnQoKS0+cnVuKG1f
Y29udHJvbGxlci0+bV9kZWxlZ2F0ZSwgbV9jb250cm9sbGVyLT5tX3dlYlZpZXcpOworICAgICAg
ICBkZWxldGUgbV9xdWV1ZS5mcm9udCgpOworICAgICAgICBtX3F1ZXVlLnBvcF9mcm9udCgpOwog
ICAgICAgICBpZiAoc3RhcnRlZExvYWQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MTM3LDggKzEzNiwxMCBAQCB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6cHJvY2Vzc1dvcmso
KQogdm9pZCBUZXN0UnVubmVyOjpXb3JrUXVldWU6OnJlc2V0KCkKIHsKICAgICBtX2Zyb3plbiA9
IGZhbHNlOwotICAgIHdoaWxlICghbV9xdWV1ZS5pc0VtcHR5KCkpCi0gICAgICAgIGRlbGV0ZSBt
X3F1ZXVlLnRha2VGaXJzdCgpOworICAgIHdoaWxlICghbV9xdWV1ZS5lbXB0eSgpKSB7CisgICAg
ICAgIGRlbGV0ZSBtX3F1ZXVlLmZyb250KCk7CisgICAgICAgIG1fcXVldWUucG9wX2Zyb250KCk7
CisgICAgfQogfQogCiB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6YWRkV29yayhXb3JrSXRl
bSogd29yaykKQEAgLTE0Nyw3ICsxNDgsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OldvcmtRdWV1ZTo6
YWRkV29yayhXb3JrSXRlbSogd29yaykKICAgICAgICAgZGVsZXRlIHdvcms7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgbV9xdWV1ZS5hcHBlbmQod29yayk7CisgICAgbV9xdWV1ZS5wdXNo
X2JhY2sod29yayk7CiB9CiAKIApAQCAtMTU2LDggKzE1Nyw4IEBAIFRlc3RSdW5uZXI6OlRlc3RS
dW5uZXIoKQogICAgICwgbV93b3JrUXVldWUodGhpcykKICAgICAsIG1fZGVsZWdhdGUoMCkKICAg
ICAsIG1fd2ViVmlldygwKQotICAgICwgbV9pbnRlbnRDbGllbnQoYWRvcHRQdHIobmV3IEVtcHR5
V2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50KSkKLSAgICAsIG1fd2ViUGVybWlzc2lvbnMoYWRvcHRQ
dHIobmV3IFdlYlBlcm1pc3Npb25zKSkKKyAgICAsIG1faW50ZW50Q2xpZW50KG5ldyBFbXB0eVdl
YkRlbGl2ZXJlZEludGVudENsaWVudCkKKyAgICAsIG1fd2ViUGVybWlzc2lvbnMobmV3IFdlYlBl
cm1pc3Npb25zKQogewogICAgIC8vIEluaXRpYWxpemUgdGhlIG1hcCB0aGF0IGFzc29jaWF0ZXMg
bWV0aG9kcyBvZiB0aGlzIGNsYXNzIHdpdGggdGhlIG5hbWVzCiAgICAgLy8gdGhleSB3aWxsIHVz
ZSB3aGVuIGNhbGxlZCBieSBKYXZhU2NyaXB0LiBUaGUgYWN0dWFsIGJpbmRpbmcgb2YgdGhvc2UK
QEAgLTIxMywxMyArMjE0LDExIEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRN
ZXRob2QoInNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCIsICZUZXN0UnVubmVyOjpzZXRTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQpOwogICAgIGJpbmRNZXRob2QoInNldFNlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQiLCAmVGVzdFJ1bm5lcjo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0RldmljZU9yaWVudGF0aW9uIiwg
JlRlc3RSdW5uZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik7Ci0jaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKICAgICBiaW5kTWV0aG9kKCJkaWRBY3F1aXJlUG9pbnRlckxvY2siLCAmVGVzdFJ1
bm5lcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKTsKICAgICBiaW5kTWV0aG9kKCJkaWRMb3NlUG9p
bnRlckxvY2siLCAmVGVzdFJ1bm5lcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKTsKICAgICBiaW5kTWV0
aG9kKCJkaWROb3RBY3F1aXJlUG9pbnRlckxvY2siLCAmVGVzdFJ1bm5lcjo6ZGlkTm90QWNxdWly
ZVBvaW50ZXJMb2NrKTsKICAgICBiaW5kTWV0aG9kKCJzZXRQb2ludGVyTG9ja1dpbGxSZXNwb25k
QXN5bmNocm9ub3VzbHkiLCAmVGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFz
eW5jaHJvbm91c2x5KTsKICAgICBiaW5kTWV0aG9kKCJzZXRQb2ludGVyTG9ja1dpbGxGYWlsU3lu
Y2hyb25vdXNseSIsICZUZXN0UnVubmVyOjpzZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25v
dXNseSk7Ci0jZW5kaWYKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgbW9kaWZ5IFdlYlByZWZlcmVu
Y2VzLgogICAgIGJpbmRNZXRob2QoInNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCIsICZUZXN0UnVu
bmVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQpOwpAQCAtMjcxLDggKzI3MCw4IEBAIFRlc3RS
dW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVzdFJl
dHVybnNOdWxsIiwgJlRlc3RSdW5uZXI6OnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKTsK
ICAgICBiaW5kTWV0aG9kKCJzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3Qi
LCAmVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0KTsK
IAotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMg
aW50ZXJhY3Qgd2l0aCB0aGUgV2ViVGVzdFByb3h5LgorI2lmIEVOQUJMRV9XRUJfSU5URU5UUwog
ICAgIGJpbmRNZXRob2QoInNlbmRXZWJJbnRlbnRSZXNwb25zZSIsICZUZXN0UnVubmVyOjpzZW5k
V2ViSW50ZW50UmVzcG9uc2UpOwogICAgIGJpbmRNZXRob2QoImRlbGl2ZXJXZWJJbnRlbnQiLCAm
VGVzdFJ1bm5lcjo6ZGVsaXZlcldlYkludGVudCk7CiAjZW5kaWYKQEAgLTI5MiwxOSArMjkxLDEz
IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJpbmRNZXRob2QoInNldEdlb2xvY2F0
aW9uUGVybWlzc2lvbiIsICZUZXN0UnVubmVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24pOwog
ICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJv
ciIsICZUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJy
b3IpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uIiwgJlRlc3RS
dW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKTsKLSNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKICAgICBiaW5kTWV0aG9kKCJncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24iLCAm
VGVzdFJ1bm5lcjo6Z3JhbnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKTsKICAgICBiaW5kTWV0
aG9kKCJzaW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrIiwgJlRlc3RSdW5uZXI6OnNp
bXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2spOwotI2VuZGlmCi0jaWYgRU5BQkxFKElO
UFVUX1NQRUVDSCkKICAgICBiaW5kTWV0aG9kKCJhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQiLCAm
VGVzdFJ1bm5lcjo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KTsKICAgICBiaW5kTWV0aG9kKCJz
ZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdCIsICZUZXN0UnVubmVyOjpzZXRNb2NrU3BlZWNoSW5w
dXREdW1wUmVjdCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQogICAgIGJp
bmRNZXRob2QoImFkZE1vY2tTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCIsICZUZXN0UnVubmVyOjph
ZGRNb2NrU3BlZWNoUmVjb2duaXRpb25SZXN1bHQpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tT
cGVlY2hSZWNvZ25pdGlvbkVycm9yIiwgJlRlc3RSdW5uZXI6OnNldE1vY2tTcGVlY2hSZWNvZ25p
dGlvbkVycm9yKTsKICAgICBiaW5kTWV0aG9kKCJ3YXNNb2NrU3BlZWNoUmVjb2duaXRpb25BYm9y
dGVkIiwgJlRlc3RSdW5uZXI6Ondhc01vY2tTcGVlY2hSZWNvZ25pdGlvbkFib3J0ZWQpOwotI2Vu
ZGlmCiAgICAgYmluZE1ldGhvZCgiZGlzcGxheSIsICZUZXN0UnVubmVyOjpkaXNwbGF5KTsKICAg
ICBiaW5kTWV0aG9kKCJkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24iLCAmVGVzdFJ1bm5lcjo6ZGlz
cGxheUludmFsaWRhdGVkUmVnaW9uKTsKIApAQCAtMzE5LDExICszMTIsOSBAQCBUZXN0UnVubmVy
OjpUZXN0UnVubmVyKCkKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIHN0dWJzLgogICAgIGJp
bmRNZXRob2QoImR1bXBEYXRhYmFzZUNhbGxiYWNrcyIsICZUZXN0UnVubmVyOjpub3RJbXBsZW1l
bnRlZCk7Ci0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgYmluZE1ldGhvZCgiZGVueVdl
Yk5vdGlmaWNhdGlvblBlcm1pc3Npb24iLCAmVGVzdFJ1bm5lcjo6bm90SW1wbGVtZW50ZWQpOwog
ICAgIGJpbmRNZXRob2QoInJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zIiwgJlRl
c3RSdW5uZXI6Om5vdEltcGxlbWVudGVkKTsKICAgICBiaW5kTWV0aG9kKCJzaW11bGF0ZVdlYk5v
dGlmaWNhdGlvbkNsaWNrIiwgJlRlc3RSdW5uZXI6Om5vdEltcGxlbWVudGVkKTsKLSNlbmRpZgog
ICAgIGJpbmRNZXRob2QoInNldEljb25EYXRhYmFzZUVuYWJsZWQiLCAmVGVzdFJ1bm5lcjo6bm90
SW1wbGVtZW50ZWQpOwogICAgIGJpbmRNZXRob2QoInNldFNjcm9sbGJhclBvbGljeSIsICZUZXN0
UnVubmVyOjpub3RJbXBsZW1lbnRlZCk7CiAgICAgYmluZE1ldGhvZCgiY2xlYXJBbGxBcHBsaWNh
dGlvbkNhY2hlcyIsICZUZXN0UnVubmVyOjpub3RJbXBsZW1lbnRlZCk7CkBAIC0zNjQsNyArMzU1
LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpyZXNldCgpCiAgICAgaWYgKG1fd2ViVmlldykgewogICAg
ICAgICBtX3dlYlZpZXctPnNldFpvb21MZXZlbChmYWxzZSwgMCk7CiAgICAgICAgIG1fd2ViVmll
dy0+c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKHRydWUpOwotI2lmICFPUyhEQVJXSU4p
ICYmICFPUyhXSU5ET1dTKSAvLyBBY3R1YWxseSwgVE9PTEtJVF9HVEsKKyNpZiAhZGVmaW5lZChf
X0FQUExFX18pICYmICFkZWZpbmVkKFdJTjMyKSAvLyBBY3R1YWxseSwgVE9PTEtJVF9HVEsKICAg
ICAgICAgLy8gKENvbnN0YW50cyBjb3BpZWQgYmVjYXVzZSB3ZSBjYW4ndCBkZXBlbmQgb24gdGhl
IGhlYWRlciB0aGF0IGRlZmluZWQKICAgICAgICAgLy8gdGhlbSBmcm9tIHRoaXMgZmlsZS4pCiAg
ICAgICAgIG1fd2ViVmlldy0+c2V0U2VsZWN0aW9uQ29sb3JzKDB4ZmYxZTkwZmYsIDB4ZmYwMDAw
MDAsIDB4ZmZjOGM4YzgsIDB4ZmYzMjMyMzIpOwpAQCAtMzc5LDcgKzM3MCw3IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6cmVzZXQoKQogICAgIG1fcG9saWN5RGVsZWdhdGVTaG91bGROb3RpZnlEb25lID0g
ZmFsc2U7CiAKICAgICBXZWJTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RzKCk7Ci0jaWYgT1MoTElOVVgpIHx8IE9TKEFORFJPSUQpCisjaWYgZGVmaW5lZChfX2xpbnV4
X18pIHx8IGRlZmluZWQoQU5EUk9JRCkKICAgICBXZWJGb250UmVuZGVyaW5nOjpzZXRTdWJwaXhl
bFBvc2l0aW9uaW5nKGZhbHNlKTsKICNlbmRpZgogCkBAIC00MTgsNyArNDA5LDcgQEAgdm9pZCBU
ZXN0UnVubmVyOjpyZXNldCgpCiAgICAgbV9zaG91bGRCbG9ja1JlZGlyZWN0cyA9IGZhbHNlOwog
ICAgIG1fd2lsbFNlbmRSZXF1ZXN0U2hvdWxkUmV0dXJuTnVsbCA9IGZhbHNlOwogICAgIG1fc21h
cnRJbnNlcnREZWxldGVFbmFibGVkID0gdHJ1ZTsKLSNpZiBPUyhXSU5ET1dTKQorI2lmZGVmIFdJ
TjMyCiAgICAgbV9zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gdHJ1ZTsKICNlbHNl
CiAgICAgbV9zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gZmFsc2U7CkBAIC02MzQs
NyArNjI1LDcgQEAgV2ViRnJhbWUqIFRlc3RSdW5uZXI6OnRvcExvYWRpbmdGcmFtZSgpIGNvbnN0
CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cG9saWN5RGVsZWdhdGVEb25lKCkKIHsKLSAgICBBU1NFUlQo
bV93YWl0VW50aWxEb25lKTsKKyAgICBXRUJLSVRfQVNTRVJUKG1fd2FpdFVudGlsRG9uZSk7CiAg
ICAgbV9kZWxlZ2F0ZS0+dGVzdEZpbmlzaGVkKCk7CiAgICAgbV93YWl0VW50aWxEb25lID0gZmFs
c2U7CiB9CkBAIC0xMjc1LDcgKzEyNjYsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OmZpbmRTdHJpbmco
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdAogICAg
IFdlYkZpbmRPcHRpb25zIGZpbmRPcHRpb25zOwogICAgIGJvb2wgd3JhcEFyb3VuZCA9IGZhbHNl
OwogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID49IDIpIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6
c3RyaW5nPiBvcHRpb25zQXJyYXkgPSBhcmd1bWVudHNbMV0udG9TdHJpbmdWZWN0b3IoKTsKKyAg
ICAgICAgdmVjdG9yPHN0cmluZz4gb3B0aW9uc0FycmF5ID0gYXJndW1lbnRzWzFdLnRvU3RyaW5n
VmVjdG9yKCk7CiAgICAgICAgIGZpbmRPcHRpb25zLm1hdGNoQ2FzZSA9IHRydWU7CiAKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcHRpb25zQXJyYXkuc2l6ZSgpOyArK2kpIHsKQEAg
LTEzNTUsNyArMTM0Niw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2VsZWN0aW9uQXNNYXJrdXAoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqCiAKIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0VGV4dFN1YnBpeGVsUG9zaXRpb25pbmcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSNpZiBPUyhMSU5VWCkgfHwgT1MoQU5E
Uk9JRCkKKyNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChBTkRST0lEKQogICAgIC8v
IFNpbmNlIEZvbnRDb25maWcgZG9lc24ndCBwcm92aWRlIGEgdmFyaWFibGUgdG8gY29udHJvbCBz
dWJwaXhlbCBwb3NpdGlvbmluZywgd2UnbGwgZmFsbCBiYWNrCiAgICAgLy8gdG8gc2V0dGluZyBp
dCBnbG9iYWxseSBmb3IgYWxsIGZvbnRzLgogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAm
JiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCkBAIC0xNjI0LDcgKzE2MTUsNyBAQCB2b2lkIFRlc3RS
dW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudAogICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0U2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24iKQogICAgICAgICBwcmVmcy0+c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50
YXRpb24gPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKICAgICBlbHNlIGlmIChrZXkgPT0gIldl
YktpdFdlYkF1ZGlvRW5hYmxlZCIpCi0gICAgICAgIEFTU0VSVChjcHBWYXJpYW50VG9Cb29sKHZh
bHVlKSk7CisgICAgICAgIFdFQktJVF9BU1NFUlQoY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSkpOwog
ICAgIGVsc2UgewogICAgICAgICBzdHJpbmcgbWVzc2FnZSgiSW52YWxpZCBuYW1lIGZvciBwcmVm
ZXJlbmNlOiAiKTsKICAgICAgICAgbWVzc2FnZS5hcHBlbmQoa2V5KTsKQEAgLTE2NjksNyArMTY2
MCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9
CiAKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaWYgRU5BQkxFX1dFQl9JTlRFTlRTCiB2b2lk
IFRlc3RSdW5uZXI6OnNlbmRXZWJJbnRlbnRSZXNwb25zZShjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHY4OjpIYW5kbGVTY29wZSBz
Y29wZTsKQEAgLTE3NzcsMTAgKzE3NjgsMTAgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRCYWNraW5n
U2NhbGVGYWN0b3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmkKICAg
ICBmbG9hdCB2YWx1ZSA9IGFyZ3VtZW50c1swXS52YWx1ZS5kb3VibGVWYWx1ZTsKICAgICBtX2Rl
bGVnYXRlLT5zZXREZXZpY2VTY2FsZUZhY3Rvcih2YWx1ZSk7CiAKLSAgICBPd25BcnJheVB0cjxD
cHBWYXJpYW50PiBjYWxsYmFja0FyZ3VtZW50cyA9IGFkb3B0QXJyYXlQdHIobmV3IENwcFZhcmlh
bnRbMV0pOwotICAgIGNhbGxiYWNrQXJndW1lbnRzWzBdLnNldChhcmd1bWVudHNbMV0pOworICAg
IGF1dG9fcHRyPENwcFZhcmlhbnQ+IGNhbGxiYWNrQXJndW1lbnRzKG5ldyBDcHBWYXJpYW50KCkp
OworICAgIGNhbGxiYWNrQXJndW1lbnRzLT5zZXQoYXJndW1lbnRzWzFdKTsKICAgICByZXN1bHQt
PnNldE51bGwoKTsKLSAgICBtX2RlbGVnYXRlLT5wb3N0VGFzayhuZXcgSW52b2tlQ2FsbGJhY2tU
YXNrKHRoaXMsIGNhbGxiYWNrQXJndW1lbnRzLnJlbGVhc2UoKSwgMSkpOworICAgIG1fZGVsZWdh
dGUtPnBvc3RUYXNrKG5ldyBJbnZva2VDYWxsYmFja1Rhc2sodGhpcywgY2FsbGJhY2tBcmd1bWVu
dHMpKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRQT1NJWExvY2FsZShjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQpAQCAtMTgyMSw3ICsxODEy
LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxh
YmxlRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXMKICAgICBtX2RlbGVnYXRlLT5zZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoYXJndW1lbnRzWzBdLnRvU3RyaW5nKCkp
OwogfQogCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiB2b2lkIFRlc3RSdW5uZXI6OmdyYW50
V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDEg
fHwgIWFyZ3VtZW50c1swXS5pc1N0cmluZygpKSB7CkBAIC0xODQwLDkgKzE4MzAsNyBAQCB2b2lk
IFRlc3RSdW5uZXI6OnNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2soY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bQogICAgIH0KICAgICByZXN1bHQtPnNldChtX2RlbGVnYXRlLT5z
aW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNrKGFyZ3VtZW50c1swXS50b1N0cmluZygp
KSk7CiB9Ci0jZW5kaWYKIAotI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiB2b2lkIFRlc3RSdW5u
ZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpAQCAt
MTg2MCw5ICsxODQ4LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1w
UmVjdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3AKIAogICAgIG1fZGVsZWdh
dGUtPnNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKSk7
CiB9Ci0jZW5kaWYKIAotI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCiB2b2lkIFRlc3RSdW5u
ZXI6OmFkZE1vY2tTcGVlY2hSZWNvZ25pdGlvblJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgp
OwpAQCAtMTg4NSw3ICsxODcxLDYgQEAgdm9pZCBUZXN0UnVubmVyOjp3YXNNb2NrU3BlZWNoUmVj
b2duaXRpb25BYm9ydGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmkKIHsKICAgICBy
ZXN1bHQtPnNldChtX2RlbGVnYXRlLT53YXNNb2NrU3BlZWNoUmVjb2duaXRpb25BYm9ydGVkKCkp
OwogfQotI2VuZGlmCiAKIHZvaWQgVGVzdFJ1bm5lcjo6ZGlzcGxheShjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewpAQCAtMjA2NSw3ICsyMDUw
LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpub3RJbXBsZW1lbnRlZChjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLSNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogdm9pZCBUZXN0UnVubmVyOjpkaWRBY3F1aXJlUG9pbnRl
ckxvY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAg
IG1fZGVsZWdhdGUtPmRpZEFjcXVpcmVQb2ludGVyTG9jaygpOwpAQCAtMjA5NSw2ICsyMDc5LDUg
QEAgdm9pZCBUZXN0UnVubmVyOjpzZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseShj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHAKICAgICBtX2RlbGVnYXRlLT5zZXRQb2ludGVyTG9j
a1dpbGxGYWlsU3luY2hyb25vdXNseSgpOwogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQotI2Vu
ZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAppbmRleCAyMzA3M2UzODU1NDA2YTQwZWZmMmU5ZTM2
MmJmZGFhM2VlMjRiMmYxLi4xYzM0NzA4Y2MxMmViNWMxZTExNGVjNzkyM2VjMzJhNjI0MjEzOTI5
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGVzdFJ1bm5lci5oCkBAIC0zNCwxNSArMzQsMTcgQEAKICNkZWZpbmUgVGVzdFJ1
bm5lcl9oCiAKICNpbmNsdWRlICJDcHBCb3VuZENsYXNzLmgiCisjaW5jbHVkZSAiVGVzdENvbW1v
bi5oIgogI2luY2x1ZGUgIldlYkFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIldlYkRlbGl2
ZXJlZEludGVudENsaWVudC5oIgogI2luY2x1ZGUgIldlYlRhc2suaCIKICNpbmNsdWRlICJXZWJU
ZXN0UnVubmVyLmgiCiAjaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgorI2luY2x1ZGUgPGRl
cXVlPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CiAjaW5j
bHVkZSA8c2V0PgogI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBcnJheUJ1ZmZlclZpZXc7CkBAIC0xNDEsNyAr
MTQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBhZGRXb3JrKFdvcmtJdGVtKik7CiAKICAg
ICAgICAgdm9pZCBzZXRGcm96ZW4oYm9vbCBmcm96ZW4pIHsgbV9mcm96ZW4gPSBmcm96ZW47IH0K
LSAgICAgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9xdWV1ZS5pc0VtcHR5KCk7IH0KKyAg
ICAgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9xdWV1ZS5lbXB0eSgpOyB9CiAgICAgICAg
IFdlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKICAgICBw
cml2YXRlOgpAQCAtMTUzLDcgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH07CiAKICAgICAg
ICAgV2ViVGFza0xpc3QgbV90YXNrTGlzdDsKLSAgICAgICAgRGVxdWU8V29ya0l0ZW0qPiBtX3F1
ZXVlOworICAgICAgICBzdGQ6OmRlcXVlPFdvcmtJdGVtKj4gbV9xdWV1ZTsKICAgICAgICAgYm9v
bCBtX2Zyb3plbjsKICAgICAgICAgVGVzdFJ1bm5lciogbV9jb250cm9sbGVyOwogICAgIH07CkBA
IC0yNzMsMTMgKzI3NSwxMSBAQCBwcml2YXRlOgogICAgIC8vIERldmljZU9yaWVudGF0aW9uIHJl
bGF0ZWQgZnVuY3Rpb25zCiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCi0jaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykKICAgICB2b2lkIGRpZEFjcXVpcmVQb2ludGVyTG9jayhjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2soY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJM
b2NrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHNldFBv
aW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKICAgICB2b2lkIHNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25v
dXNseShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0jZW5kaWYKIAogICAg
IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwogICAgIC8vIE1ldGhvZHMgbW9kaWZ5aW5nIFdlYlByZWZlcmVu
Y2VzLgpAQCAtNDE4LDcgKzQxOCw3IEBAIHByaXZhdGU6CiAgICAgLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
CiAgICAgLy8gTWV0aG9kcyBpbnRlcmFjdGluZyB3aXRoIHRoZSBXZWJUZXN0UHJveHkKIAotI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKKyNpZiBFTkFCTEVfV0VCX0lOVEVOVFMKICAgICAvLyBFeHBl
Y3RzIG9uZSBzdHJpbmcgYXJndW1lbnQgZm9yIHNlbmRpbmcgc3VjY2Vzc2Z1bCByZXN1bHQsIHpl
cm8KICAgICAvLyBhcmd1bWVudHMgZm9yIHNlbmRpbmcgYSBmYWlsdXJlIHJlc3VsdC4KICAgICB2
b2lkIHNlbmRXZWJJbnRlbnRSZXNwb25zZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CkBAIC00NjYsMjMgKzQ2NiwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwog
ICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAotI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQogICAgIC8vIEdyYW50cyBwZXJtaXNzaW9uIGZvciBkZXNrdG9wIG5vdGlmaWNhdGlvbnMg
dG8gYW4gb3JpZ2luCiAgICAgdm9pZCBncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIC8vIFNpbXVsYXRlcyBhIGNs
aWNrIG9uIGEgZGVza3RvcCBub3RpZmljYXRpb24uCiAgICAgdm9pZCBzaW11bGF0ZUxlZ2FjeVdl
Yk5vdGlmaWNhdGlvbkNsaWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
LSNlbmRpZgogCiAgICAgLy8gU3BlZWNoIGlucHV0IHJlbGF0ZWQgZnVuY3Rpb25zLgotI2lmIEVO
QUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgdm9pZCBhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0TW9ja1NwZWVj
aElucHV0RHVtcFJlY3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotI2Vu
ZGlmCi0jaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKICAgICB2b2lkIGFkZE1vY2tTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAg
ICAgdm9pZCBzZXRNb2NrU3BlZWNoUmVjb2duaXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCB3YXNNb2NrU3BlZWNoUmVjb2duaXRpb25BYm9y
dGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLSNlbmRpZgogCiAgICAg
dm9pZCBkaXNwbGF5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2
b2lkIGRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7CkBAIC02NzgsMTAgKzY3MiwxMCBAQCBwcml2YXRlOgogICAgIFdlYktpdDo6V2Vi
RnJhbWUqIG1fdG9wTG9hZGluZ0ZyYW1lOwogCiAgICAgLy8gTW9jayBvYmplY3QgZm9yIHRlc3Rp
bmcgZGVsaXZlcmluZyB3ZWIgaW50ZW50cy4KLSAgICBPd25QdHI8V2ViS2l0OjpXZWJEZWxpdmVy
ZWRJbnRlbnRDbGllbnQ+IG1faW50ZW50Q2xpZW50OworICAgIHN0ZDo6YXV0b19wdHI8V2ViS2l0
OjpXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQ+IG1faW50ZW50Q2xpZW50OwogCiAgICAgLy8gV2Vi
UGVybWlzc2lvbkNsaWVudCBtb2NrIG9iamVjdC4KLSAgICBPd25QdHI8V2ViUGVybWlzc2lvbnM+
IG1fd2ViUGVybWlzc2lvbnM7CisgICAgc3RkOjphdXRvX3B0cjxXZWJQZXJtaXNzaW9ucz4gbV93
ZWJQZXJtaXNzaW9uczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGV4dElucHV0Q29udHJvbGxl
ci5jcHAKaW5kZXggMzIyNWNiOTBjNDJhNmVlYmJiYWI1OTQ3MDcyZTMyYTRhN2EyMDI4MC4uZjVm
OWIyYWU4MDkyYTM3OGMzMjY1MjNhZGYzN2ExOGFhOTQ0MDU1MiAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGV4dElucHV0Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
VGV4dElucHV0Q29udHJvbGxlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJUZXh0SW5wdXRDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJUZXN0
Q29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViQmluZGluZ3MuaCIKICNpbmNsdWRlICJXZWJDb21wb3Np
dGlvblVuZGVybGluZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC00MCw5ICs0MSw5IEBA
CiAjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJWZWN0
b3IuaD4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNw
YWNlIFdlYlRlc3RSdW5uZXIgewogCkBAIC0xNDYsNyArMTQ3LDcgQEAgdm9pZCBUZXh0SW5wdXRD
b250cm9sbGVyOjptYXJrZWRSYW5nZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
KiByZXN1bHQKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViUmFuZ2UgcmFuZ2UgPSBtYWluRnJh
bWUtPm1hcmtlZFJhbmdlKCk7Ci0gICAgVmVjdG9yPGludD4gaW50QXJyYXkoMik7CisgICAgdmVj
dG9yPGludD4gaW50QXJyYXkoMik7CiAgICAgaW50QXJyYXlbMF0gPSByYW5nZS5zdGFydE9mZnNl
dCgpOwogICAgIGludEFycmF5WzFdID0gcmFuZ2UuZW5kT2Zmc2V0KCk7CiAgICAgcmVzdWx0LT5z
ZXQoV2ViQmluZGluZ3M6Om1ha2VJbnRBcnJheShpbnRBcnJheSkpOwpAQCAtMTYxLDcgKzE2Miw3
IEBAIHZvaWQgVGV4dElucHV0Q29udHJvbGxlcjo6c2VsZWN0ZWRSYW5nZShjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1CiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYlJh
bmdlIHJhbmdlID0gbWFpbkZyYW1lLT5zZWxlY3Rpb25SYW5nZSgpOwotICAgIFZlY3RvcjxpbnQ+
IGludEFycmF5KDIpOworICAgIHZlY3RvcjxpbnQ+IGludEFycmF5KDIpOwogICAgIGludEFycmF5
WzBdID0gcmFuZ2Uuc3RhcnRPZmZzZXQoKTsKICAgICBpbnRBcnJheVsxXSA9IHJhbmdlLmVuZE9m
ZnNldCgpOwogICAgIHJlc3VsdC0+c2V0KFdlYkJpbmRpbmdzOjptYWtlSW50QXJyYXkoaW50QXJy
YXkpKTsKQEAgLTE4Miw3ICsxODMsNyBAQCB2b2lkIFRleHRJbnB1dENvbnRyb2xsZXI6OmZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndQogICAgIGlm
ICghZnJhbWUtPmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGFyZ3VtZW50c1swXS50b0ludDMy
KCksIGFyZ3VtZW50c1sxXS50b0ludDMyKCksIHJlY3QpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBWZWN0b3I8aW50PiBpbnRBcnJheSg0KTsKKyAgICB2ZWN0b3I8aW50PiBpbnRBcnJheSg0KTsK
ICAgICBpbnRBcnJheVswXSA9IHJlY3QueDsKICAgICBpbnRBcnJheVsxXSA9IHJlY3QueTsKICAg
ICBpbnRBcnJheVsyXSA9IHJlY3Qud2lkdGg7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5jcHAK
aW5kZXggOTkzM2ZhOGM3NjY0ZWYxODBhMGYxNzNiYTIwYWNhZjBjNzQ2MDZlMy4uMjM5MDkzNTE4
NzYxOTFkZDM3ZmJkZmYwMTcyZjU5MTRkYmZmZmEwYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlByZWZlcmVu
Y2VzLmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKIHZv
aWQgV2ViUHJlZmVyZW5jZXM6OnJlc2V0KCkKIHsKLSNpZiBPUyhNQUNfT1NfWCkKKyNpZmRlZiBf
X0FQUExFX18KICAgICBjdXJzaXZlRm9udEZhbWlseSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIkFw
cGxlIENoYW5jZXJ5Iik7CiAgICAgZmFudGFzeUZvbnRGYW1pbHkgPSBXZWJTdHJpbmc6OmZyb21V
VEY4KCJQYXB5cnVzIik7CiAgICAgV2ViU3RyaW5nIHNlcmlmID0gV2ViU3RyaW5nOjpmcm9tVVRG
OCgiVGltZXMiKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpyZXNl
dCgpCiAgICAgLy8gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbCwgdG8gYWNjZXNzIGh0dHAg
c2VydmVyLgogICAgIGFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzID0gdHJ1ZTsKIAot
I2lmIE9TKERBUldJTikKKyNpZmRlZiBfX0FQUExFX18KICAgICBlZGl0aW5nQmVoYXZpb3IgPSBX
ZWJTZXR0aW5nczo6RWRpdGluZ0JlaGF2aW9yTWFjOwogI2Vsc2UKICAgICBlZGl0aW5nQmVoYXZp
b3IgPSBXZWJTZXR0aW5nczo6RWRpdGluZ0JlaGF2aW9yV2luOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcAppbmRl
eCA5NzUzMWM4MGRlMTQ1NDllYzBmYTFjMDUxY2M1ZDA4MTBmMmJkNGY4Li43NzlmNTNlNThhZTg1
NDIyMmVkODU2ZjNmMTUyMGMxODRlYWFiYTAyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcApAQCAtMzIsNyAr
MzIsOSBAQAogI2luY2x1ZGUgIldlYlRhc2suaCIKIAogI2luY2x1ZGUgIldlYktpdC5oIgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKK3VzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIApAQCAtNDgsMzYgKzUwLDMx
IEBAIFdlYlRhc2s6On5XZWJUYXNrKCkKICAgICAgICAgbV90YXNrTGlzdC0+dW5yZWdpc3RlclRh
c2sodGhpcyk7CiB9CiAKLWNsYXNzIFdlYlRhc2tMaXN0OjpQcml2YXRlIDogcHVibGljIFZlY3Rv
cjxXZWJUYXNrKj4gewotfTsKLQogV2ViVGFza0xpc3Q6OldlYlRhc2tMaXN0KCkKLSAgICA6IG1f
cHJpdmF0ZShuZXcgUHJpdmF0ZSkKIHsKIH0KIAogV2ViVGFza0xpc3Q6On5XZWJUYXNrTGlzdCgp
CiB7CiAgICAgcmV2b2tlQWxsKCk7Ci0gICAgZGVsZXRlIG1fcHJpdmF0ZTsKIH0KIAogdm9pZCBX
ZWJUYXNrTGlzdDo6cmVnaXN0ZXJUYXNrKFdlYlRhc2sqIHRhc2spCiB7Ci0gICAgbV9wcml2YXRl
LT5hcHBlbmQodGFzayk7CisgICAgbV90YXNrcy5wdXNoX2JhY2sodGFzayk7CiB9CiAKIHZvaWQg
V2ViVGFza0xpc3Q6OnVucmVnaXN0ZXJUYXNrKFdlYlRhc2sqIHRhc2spCiB7Ci0gICAgc2l6ZV90
IGluZGV4ID0gbV9wcml2YXRlLT5maW5kKHRhc2spOwotICAgIGlmIChpbmRleCAhPSBub3RGb3Vu
ZCkKLSAgICAgICAgbV9wcml2YXRlLT5yZW1vdmUoaW5kZXgpOworICAgIHZlY3RvcjxXZWJUYXNr
Kj46Oml0ZXJhdG9yIGl0ZXIgPSBmaW5kKG1fdGFza3MuYmVnaW4oKSwgbV90YXNrcy5lbmQoKSwg
dGFzayk7CisgICAgaWYgKGl0ZXIgIT0gbV90YXNrcy5lbmQoKSkKKyAgICAgICAgbV90YXNrcy5l
cmFzZShpdGVyKTsKIH0KIAogdm9pZCBXZWJUYXNrTGlzdDo6cmV2b2tlQWxsKCkKIHsKLSAgICB3
aGlsZSAoIW1fcHJpdmF0ZS0+aXNFbXB0eSgpKQotICAgICAgICAoKm1fcHJpdmF0ZSlbMF0tPmNh
bmNlbCgpOworICAgIHdoaWxlICghbV90YXNrcy5lbXB0eSgpKQorICAgICAgICBtX3Rhc2tzWzBd
LT5jYW5jZWwoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCmlu
ZGV4IDg5MjYzYmQ3YmUwMzlmNjRjYmZmYjkxNDFhZTdiMDY4ODRhMTc3ZDcuLjdiNTgyOGRmOWI5
OWQ2OGQzM2VhNDY3NzM5ZWUyMTIzYTUzNzY1NzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50
ZXJmYWNlcy5jcHAKQEAgLTM5LDEzICszOSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
bmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCiBXZWJUZXN0SW50ZXJmYWNlczo6V2ViVGVzdElu
dGVyZmFjZXMoKQorICAgIDogbV9pbnRlcmZhY2VzKG5ldyBUZXN0SW50ZXJmYWNlcygpKQogewot
ICAgIG1faW50ZXJmYWNlcyA9IG5ldyBUZXN0SW50ZXJmYWNlczsKIH0KIAogV2ViVGVzdEludGVy
ZmFjZXM6On5XZWJUZXN0SW50ZXJmYWNlcygpCiB7Ci0gICAgZGVsZXRlIG1faW50ZXJmYWNlczsK
IH0KIAogdm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6c2V0V2ViVmlldyhXZWJWaWV3KiB3ZWJWaWV3
KQpAQCAtODUsNyArODQsNyBAQCBXZWJUZXN0UnVubmVyKiBXZWJUZXN0SW50ZXJmYWNlczo6dGVz
dFJ1bm5lcigpCiAKIFRlc3RJbnRlcmZhY2VzKiBXZWJUZXN0SW50ZXJmYWNlczo6dGVzdEludGVy
ZmFjZXMoKQogewotICAgIHJldHVybiBtX2ludGVyZmFjZXM7CisgICAgcmV0dXJuIG1faW50ZXJm
YWNlcy5nZXQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAKaW5kZXggNjQ3MGYw
YTQxMTIyZjljOWZjMzcxZGFjYWJhNTM5MzkzNWFkMjc1OS4uNWVhMGU4NGQ4ODljZmQwYTc2OWI5
MDk3NmY2OWRlNmVkZTQ4ODZiMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVkZSAiU3BlbGxDaGVja0NsaWVudC5oIgor
I2luY2x1ZGUgIlRlc3RDb21tb24uaCIKICNpbmNsdWRlICJUZXN0SW50ZXJmYWNlcy5oIgogI2lu
Y2x1ZGUgIlRlc3RQbHVnaW4uaCIKICNpbmNsdWRlICJUZXN0UnVubmVyLmgiCkBAIC01OCw3ICs1
OSw2IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTEVycm9yLmg+CiAjaW5jbHVkZSA8cHVibGlj
L1dlYlVSTFJlcXVlc3QuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMUmVzcG9uc2UuaD4KLSNp
bmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cmluZyB1cmxTdWl0YWJs
ZUZvclRlc3RSZXN1bHQoY29uc3Qgc3RyaW5nJiB1cmwpCiAKICAgICBzaXplX3QgcG9zID0gdXJs
LnJmaW5kKCcvJyk7CiAgICAgaWYgKHBvcyA9PSBzdHJpbmc6Om5wb3MpIHsKLSNpZiBPUyhXSU5E
T1dTKQorI2lmZGVmIFdJTjMyCiAgICAgICAgIHBvcyA9IHVybC5yZmluZCgnXFwnKTsKICAgICAg
ICAgaWYgKHBvcyA9PSBzdHJpbmc6Om5wb3MpCiAgICAgICAgICAgICBwb3MgPSAwOwpAQCAtMjY3
LDcgKzI2Nyw2IEBAIFdlYlRlc3RQcm94eUJhc2U6OldlYlRlc3RQcm94eUJhc2UoKQogCiBXZWJU
ZXN0UHJveHlCYXNlOjp+V2ViVGVzdFByb3h5QmFzZSgpCiB7Ci0gICAgZGVsZXRlIG1fc3BlbGxj
aGVjazsKIH0KIAogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpzZXRJbnRlcmZhY2VzKFdlYlRlc3RJ
bnRlcmZhY2VzKiBpbnRlcmZhY2VzKQpAQCAtMjkwLDcgKzI4OSw3IEBAIHZvaWQgV2ViVGVzdFBy
b3h5QmFzZTo6cmVzZXQoKQogCiBXZWJTcGVsbENoZWNrQ2xpZW50KiBXZWJUZXN0UHJveHlCYXNl
OjpzcGVsbENoZWNrQ2xpZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zcGVsbGNoZWNrOwor
ICAgIHJldHVybiBtX3NwZWxsY2hlY2suZ2V0KCk7CiB9CiAKIHZvaWQgV2ViVGVzdFByb3h5QmFz
ZTo6c2V0UGFpbnRSZWN0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCkBAIC01NTYsMTQgKzU1NSwxNCBA
QCB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpZEVuZEVkaXRpbmcoKQogCiB2b2lkIFdlYlRlc3RQ
cm94eUJhc2U6OnJlZ2lzdGVySW50ZW50U2VydmljZShXZWJGcmFtZSosIGNvbnN0IFdlYkludGVu
dFNlcnZpY2VJbmZvJiBzZXJ2aWNlKQogewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpZiBF
TkFCTEVfV0VCX0lOVEVOVFMKICAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uoc3RyaW5nKCJS
ZWdpc3RlcmVkIFdlYiBJbnRlbnQgU2VydmljZTogYWN0aW9uPSIpICsgc2VydmljZS5hY3Rpb24o
KS51dGY4KCkuZGF0YSgpICsgIiB0eXBlPSIgKyBzZXJ2aWNlLnR5cGUoKS51dGY4KCkuZGF0YSgp
ICsgIiB0aXRsZT0iICsgc2VydmljZS50aXRsZSgpLnV0ZjgoKS5kYXRhKCkgKyAiIHVybD0iICsg
c2VydmljZS51cmwoKS5zcGVjKCkuZGF0YSgpICsgIiBkaXNwb3NpdGlvbj0iICsgc2VydmljZS5k
aXNwb3NpdGlvbigpLnV0ZjgoKS5kYXRhKCkgKyAiXG4iKTsKICNlbmRpZgogfQogCiB2b2lkIFdl
YlRlc3RQcm94eUJhc2U6OmRpc3BhdGNoSW50ZW50KFdlYkZyYW1lKiBzb3VyY2UsIGNvbnN0IFdl
YkludGVudFJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2lm
IEVOQUJMRV9XRUJfSU5URU5UUwogICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZShzdHJpbmco
IlJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj0iKSArIHJlcXVlc3QuaW50ZW50KCkuYWN0aW9u
KCkudXRmOCgpLmRhdGEoKSArICIgdHlwZT0iICsgcmVxdWVzdC5pbnRlbnQoKS50eXBlKCkudXRm
OCgpLmRhdGEoKSArICJcbiIpOwogICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBwb3J0
cyA9IHJlcXVlc3QuaW50ZW50KCkubWVzc2FnZVBvcnRDaGFubmVsc1JlbGVhc2UoKTsKICAgICBt
X2RlbGVnYXRlLT5zZXRDdXJyZW50V2ViSW50ZW50UmVxdWVzdChyZXF1ZXN0KTsKQEAgLTc3OCw3
ICs3NzcsNyBAQCB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmRpZERldGVjdFhTUyhXZWJGcmFtZSos
IGNvbnN0IFdlYlVSTCYsIGJvb2wpCiB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OmFzc2lnbklkZW50
aWZpZXJUb1JlcXVlc3QoV2ViRnJhbWUqLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBXZWJL
aXQ6OldlYlVSTFJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKG1fdGVzdEludGVyZmFjZXMt
PnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7Ci0gICAg
ICAgIEFTU0VSVChtX3Jlc291cmNlSWRlbnRpZmllck1hcC5maW5kKGlkZW50aWZpZXIpID09IG1f
cmVzb3VyY2VJZGVudGlmaWVyTWFwLmVuZCgpKTsKKyAgICAgICAgV0VCS0lUX0FTU0VSVChtX3Jl
c291cmNlSWRlbnRpZmllck1hcC5maW5kKGlkZW50aWZpZXIpID09IG1fcmVzb3VyY2VJZGVudGlm
aWVyTWFwLmVuZCgpKTsKICAgICAgICAgbV9yZXNvdXJjZUlkZW50aWZpZXJNYXBbaWRlbnRpZmll
cl0gPSBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LnVybCgpLnNwZWMo
KSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvY29uZmlnLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMmZjNmY0MWMyNjYzZThmMTVlY2Jh
ZWM5YTQ3ZWZkNzhmYTkzNDk2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvY29uZmlnLmgKQEAgLTAsMCArMSwzNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgY29uZmlnX2gKKyNkZWZpbmUgY29uZmlnX2gKKworI2RlZmluZSBVU0UoZmVhdHVyZSkgKGRl
ZmluZWQgV1RGX1VTRV8jI2ZlYXR1cmUgJiYgV1RGX1VTRV8jI2ZlYXR1cmUpCisKKyNlbmRpZiAv
LyBjb25maWdfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>